C este un limbaj de programare standardizat, compilat, de nivel mediu. Este implementat pe majoritatea platformelor de calcul existente azi, și este cel mai popular limbaj de programare pentru scrierea de software de sistem. Este apreciat pentru eficiența codului obiect pe care îl poate genera, și pentru portabilitatea sa. A fost dezvoltat la începutul anilor 1970 de Ken Thompson și Dennis Ritchie, care aveau nevoie de un limbaj simplu și portabil pentru scrierea nucleului sistemului de operare UNIX. Sintaxa limbajului C a stat la baza multor limbaje create ulterior și încă populare azi: C++, Java, JavaScript, C#. C este un limbaj de programare relativ minimalist ce operează în strânsă legătură cu hardware-ul, fiind cel mai apropiat de limbajul de asamblare față de majoritatea celorlalte limbaje de programare. Cuprins 1 Scurtă introducere în C
2 Un exemplu de program C ("Hello World!")
3 Tipuri de date
4 Alocarea memoriei
5 Sintaxa
6 Istoric
6.1 Începuturile limbajului de programare C 6.2 K&R C 6.3 ANSI C și ISO C 6.4 C99 7 Diferențe între C,
C++ și Pascal 7.1 Comparație cu limbajul Pascal 7.2 C și C++ 7.3 Exemplu 8 Vezi și 9 Bibliografie 10 Legături externe Scurtă introducere în C
C este prezentat uneori ca "asamblor portabil", făcându-se astfel diferențele principale față de limbajele de asamblare: codul unui program C poate fi compilat și rulat pe aproape orice tip de mașină (calculator), asemănător altor limbaje de programare, în timp ce limbajele de asamblare sunt specifice unui anumit model de mașină. Limbajul C aparține clasei limbajelor de nivel scăzut sau de nivel mediu, aceasta indicând strânsa legătură între interoperabilitate și echipamentul hardware. C a fost creat având drept scop important de a face ca programele mari să poată fi scrise mai ușor și cu mai puține erori în paradigma programării procedurale, dar fără a pune un obstacole în scrierea compilatorului de C, care este încărcat de caracteristicile complexe ale limbajului. C are urmatoarele caracteristici importante: Este un limbaj de bază simplu, cu importante funcționalități cum ar fi funcțiile matematice sau cele de manipulare ale fișierelor Este focalizat pe paradigma programării procedurale, care facilitează programarea într-un mod structurat Utilizează un set simplu de tipuri de date ce împiedică multe operații neintenționate Folosește un limbaj preprocesor, preprocesorul C, pentru sarcini cum ar fi definirea de macrouri și includerea mai multor fișiere sursă Permite accesarea la nivel scăzut a memoriei calculatorului prin utilizarea pointerilor Permite folosirea parametrilor, care sunt comunicați funcțiilor prin valoare și nu prin referință Pointeri la funcții, ce permit forme rudimentare de închidere (engleză closure) și polimorfism Declararea variabilelor Structuri de date sau tipuri de date agregate, definite de utilizator prin (struct), ce permit ca date înrudite să fie combinate și manipulate ca un întreg[necesită citare] Printre caracteristicile ce lipsesc în C, dar care pot fi găsite în alte limbaje de programare se enumeră: Un sistem automat de colectare a reziduurilor (de memorie) (engleză Garbage collection) Clasele și obiectele (programarea orientată pe obiecte) Un sistem avansat de tipuri de date Programarea generică Supraîncărcarea Metaprogramarea Suport nativ pentru programarea multifir (engleză multithreaded) și funcțiile de rețea Procesarea listelor Deși lista minusurilor limbajului C este destul de lungă, aceasta nu reprezintă un dezavantaj suficient de mare pentru inhiba utilizarea limbajului C în practică, deoarece permite ca noi compilatoare să poată fi scrise pe noi tipuri de platforme și pentru că permite programatorului să țină bine sub control programul pe care îl scrie. Acesta este unul din motivele care face ca un cod scris în C să fie mult mai eficient decât dacă ar fi scris în alte limbaje de programare. Numai un cod scris cu foarte mare grijă într-un limbaj de asamblare poate fi mai performant, deoarece are control integral asupra mașinii, dar performanța avansată a compilatoarelor, combinată cu complexitatea noilor tipuri de procesoare, a făcut ca limbajul C să fie preferat și să fie acceptat din ce în ce mai mult de programatori. Una din consecințele acceptării și eficienței C-ului este aceea că multe compilatoare, biblioteci și interpretoare ale limbajelor de nivel înalt sunt adesea implementate în C. [modificare] Un exemplu de program C ("Hello World!")
Următorul exemplu de program a apărut în prima ediție a cărții lui Brian Kernighan și Dennis Ritchie și a devenit un exemplu standard de program introductiv în marea majoritate a cărților de programare, indiferent de limbajul de programare. Programul afișează „Hello, World!" la ieșirea standard, care este, de obicei, un terminal sau monitor. Poate să fie, totuși, și un fișier sau alt dispozitiv hardware, depinzând de maparea ieșirii standard în momentul execuției programului. #include main() { printf("Hello, World!\n"); }
Programul prezentat mai sus va fi compilat corect de marea majoritate a compilatoarelor moderne. Totuși, va produce unele mesaje de avertizare dacă va fi compilat de un compilator ce respectă standardul ANSI C. Mai mult, codul nu va fi compilat, returnând mesaje de eroare, dacă se respectă standardele C99, deoarece variabila de întors, de tip int, nu va putea fi dedusă dacă nu a fost specificată în codul sursă. Aceste mesaje pot fi eliminate, aducând câteva schimbări minore programului original: #include int main(void) { printf("Hello, World!\n"); return 0; }
Urmează o discuție linie cu linie a programului prezentat mai sus: #include
Prima linie a programului reprezintă o directivă preprocesor, #include. Aceasta face ca preprocesorul — primul utilitar ce examinează codul sursă când acesta este compilat — să substituiască linia respectivă cu conținutul unui fișier sau al entității la care se face referire. În acest caz, fișierul header ("antet") stdio.h — care conține definițiile funcțiilor de manipulare a intrării și ieșirii standard — va înlocui acea linie. Parantezele unghiulare ce cuprind stdio.h indică prezența acelui fișier în una din locațiile date preprocesorului prin calea de căutare (engleză search path) a fișierelor header (aceste fișiere se află în directorul "include" al platformei, respectiv compilatorului folosit). int main(void)
Următoarea linie definește funcția numită main. Funcția main are un loc bine stabilit în programele C. Când un program C este executat, aceasta este prima funcție executată (punctul de intrare în program). Prezența acesteia este obligatorie pentru ca un program să poată fi executat. Porțiunea de cod int indică faptul că valoare întoarsă — valoare pe care funcția main o va întoarce procesului apelant — este un întreg. (void) indică faptul că funcția main nu primește nici un argument la apelare. {
Paranteza acoladă deschisă indică începutul codului pentru funcția main. printf("Hello World\n");
Aceasta linie apelează — caută și execută codul — funcția printf, care a fost definită în fișierul header stdio.h. În cadrul acestui apel, funcției printf îi este pasat (transmis) un singur argument, șirul de caractere "Hello, World!\n". Secvența \n este denumită secvență escape (cu semnificație specială), care se traduce prin caracterul EOL (end-of-line, sfârșitul liniei), pentru a muta cursorul pe linia următoare. Valoarea de întoarcere a funcției printf este un întreg int, dar nu este folosită în acest caz (este "ignorată"). return 0;
Această instrucțiune termină execuția codului funcției main și face ca aceasta să întoarcă valoarea 0 procesului apelant, în cazul acesta sistemului de operare. }
Paranteza acoladă închisă indică terminarea codului funcției main. Compatibilitatea totală cu alte compilatoare ce respectă standardul C99 poate fi insă atinsă prin următorul cod: #include #include int main(void) { printf("Hello world!\n"); return EXIT_SUCCESS; }
Constanta EXIT_SUCCESS este definită în headerul stdlib.h, de aceea a fost necesară includerea sa. Pe majoritatea platformelor această constantă are valoarea zero. [modificare] Tipuri de date
C are un sistem de tipuri de date similar cu cel al descendenților ALGOL, cum ar fi Pascal, dar totuși cu anumite diferențe. Cuprinde tipuri de date cum ar fi întregi de diferite dimensiuni, cu sau fără semn, numere în virgulă mobilă, enumerări (enum), structuri de date (struct) și uniuni (union). C utilizează foarte mult pointerii, un tip de referință foarte simplu, care păstrează adresa locației din memorie. Adresa poate fi manipulată cu ajutorul atribuirilor și a aritmeticii pointerilor. În momentul rulării unui program, un pointer reprezintă o adresă de memorie. În momentul compilării, un pointer este un tip de dată complex, ce reprezintă atât adresa de memorie cât și tipul de dată. Acest lucru permite expresiilor ce utilizează pointeri să fie evaluate după tipul de dată. Pointerii au mai multe utilizări în C. De exemplu, șirurile de caractere (engleză text string) sunt adesea reprezentate printr-un pointer la un vector de caractere. Alocarea dinamică a memoriei este realizată tot cu ajutorul pointerilor. Un pointer null are o valoare rezervată, indicând faptul că face referire la o locație nevalidă. Acest lucru este folositor în cazuri speciale cum ar fi pointerul next (următorul) în nodul final al unei liste înlănțuite. Dereferențierea unui pointer null poate cauza un comportament imprevizibil al aplicației. De asemenea, există și pointeri de tip void, fapt ce indică referirea la un obiect de tip necunoscut. Acești pointeri sunt foarte folositori în programarea generică. Deoarece dimensiunea și tipul obiectelor la care acest tip de pointeri face referire sunt necunoscute, aceștia nu pot fi dereferențiați, dar pot fi convertiți la alt tip de pointeri. În C, anterior standardului C99, tablourile (vectorii) sunt de dimensiune fixă, statică, cunoscută la momentul compilării; în practică, acest lucru nu reprezintă o piedică, având în vedere că se pot aloca blocuri de memorie în momentul rulării, tratându-le ca pe tablouri utilizând librăria standard. Spre deosebire de multe alte limbaje de programare, C reprezintă tablourile ca și pe pointeri: o adresă și un tip de dată. Prin urmare, valorile index pot depăși dimensiunea actuală a unui tablou. De asemenea, C oferă posibilitatea de lucru cu tablouri multidimensionale. Din punct de vedere semantic, tablourile multidimensionale sunt tablouri de tablouri, dar, din punct de vedere fizic, acestea sunt stocate ca un singur tablou unidimensional cu un offset calculat. C este adesea folosit în programarea de nivel scăzut, unde poate fi necesar ca un întreg să fie tratat ca o adresă de memorie, un număr în virgulă mobilă ca un întreg sau un tip de pointer ca un alt tip de pointer. Pentru astfel de cazuri C oferă operatorul de casting, care forțează explicit conversia unei valori dintr-un tip de dată în alt tip de dată.
~Termeni & Conditii~
Forum:
Un comportament agresiv pe forum va duce la warning/disable ! Nu deschideţi topic pentru a face o cerere. Dimensiunile maxime ale unei imagini sunt 800x600. Fără multi-post, folosiţi butonul Edit. Aveţi grijă ca întrebările dvs să fie postate în topicul corespunzător. Comportamentul neadecvat va duce la închiderea contului dvs şi a celui care v-a invitat! Nu vă bateti joc de topicurile altor membri(i.e. SPAM). Nu cereţi ca un topic sa fie închis/mutat, totul depinde de moderatori. Fără topicuri de vânzări/cumpărări/schimburi/căutări de personal etc.Nu suntem la mica publicitate. Nu se permit PM-uri agresive sau conținând injurii. Nu se permit PM-uri cu continut comercial sau orice fel de invitatie nesolicitata Sunt interzise discriminările religioase, etnice, rasiale, sexuale etc. în posturile din forum, comentarii cât şi în profilele utilizatorilor. Este interzisă propaganda simbolurilor care prin caracterul lor promovează ideologii fasciste, naziste, rasiste ori xenofobe.
Comentarii:
Comentariile ce conţin cuvinte necenzurate sau insulte la adresa unui alt user, nu sunt admise. Nu veţi primi un warning pt asta, contul dvs va fi închis fără drept de apel! Limba permisă în comentarii: Româna, Engleza. Comentariile de prisos vor fi şterse iar dvs atenţionat. Asiguraţi-vă că nu comentaţi doar de dragul folosirii tastaturii ( aici se includ si commenturile de gen "primul,primul la download,al doilea,al treispelea" etc ; nu intereseaza pe nimeni) . . Dacă nu vă place descrierea torentului, puteti căuta si eventual puteti posta o descriere mai bună. Fără spoilere! - Nu divulgaţi acea informaţie (în special la filme), care ar slăbi interesul celorlalţi să mai privească acel material. (ex. dacă aţi văzut ceva mai demult un film nou uploadat, abţineţi-vă să-l începeţi a povesti în comentarii; lăsaţi-i şi pe altii să-i descopere singuri sfârşitul) Orice cerere sau comentariu făcut referitor la subtitrări va fi răsplatit(ă) dupa caz cu avertizare sau dezactivarea contului.