Sunteți pe pagina 1din 10

SISTEME DE OPERARE I LIMBAJE DE PROGRAMARE Limbajul C

6.Introducere in C. Principiile limbajului C Limbajul C este un limbaj de programare foarte cutat i iubit de programatori. Odat ce o persoan nva s programeze n C, rareori se ntmpl s prefere s programeze n alt limbaj. C combin subtilitatea i elegana cu puterea i flexibilitatea. Este un limbaj structurat, cu largi posibiliti, creat de un programator pentru programatori. El nu este un produs inventat artificial, ci o consecin a aspiraiei programatorilor spre un limbaj mai bun. C a fost inventat i implementat de Dennis Ritchie pe DEC PDP-11, folosind sistemul de operare UNIX i este rezultatul unui proces de dezvoltare care a nceput cu un vechi limbaj numit BCPL, creat de Martin Richards. BCPL a influenat limbajul numit B, care a fost inventat de Ken Thompson i a condus la apariia limbajului C, n anii 1970. Limbajul C a fost descris n lucrarea The C Programming Language de Brian Kernighan i Dennis Ritchie n 1978. Datorit popularitii sale, n 1983 a fost organizat un comitet care s creeze standardul ANSI pentru limbajul C. La aceast dat, standardul ANSI C este complet, toate compilatoarele C s-au conformat deja cu standardul, iar versiunea C pe care dumneavoastr o nvai acum este bazat pe acest standard. C este adeseori considerat ca limbaj de nivel mediu. naintea apariiei limbajului C, existau practic dou tipuri de limbaje de programare a computerelor: limbaje de asamblare i limbaje de nivel nalt. Limbajele de asamblare conin reprezentrile simbolice ale instruciunilor main executate de computer. In limbajele de asamblare, programatorul lucreaz simbolic cu instruciunile pe care computerul le execut. Limbajele de asamblare nu conin structuri de control. Limbajele de nivel nalt conin variate structuri de, control i comenzi de intrare/ieire, care fac programarea uoar i rapid. Elementele care compun limbajele de nivel nalt nu au legtur direct cu modul n care computerul execut programul. Aceast separaie face deseori ca programele scrise n limbaje de nivel nalt s fie mai puin eficiente dect cele scrise n limbaje de asamblare. Deoarece se consider c programarea n limbajele de asamblare este o sarcin anevoioas, a existat necesitatea apariiei unui limbaj care s poat fi utilizat mai uor i care s ofere n acelai timp aceeai eficien ca i limbajele de asamblare. Acesta este motivul pentru care C a fost iniial proiectat. El combin cu succes structurarea din limbajele do nivel nalt cu puterea i eficiena din limbajele de asamblare. Iniial, C a fost folosit pentru a crea software de sistem (programe care ajut computerul: sisteme de operare, compilatoare, editoare). Pe msur ce C a ctigat n popularitate el a nceput s fie folosit la programarea cu scop general. Astzi limbajul C este folosit de programatori pentru orice sarcin de programare deoarece este limbajul care a supravieuit testului timpului i a dovedit c este multilateral i puternic.
pagina 1/10 Autor: dr.ing. ec Cezar NECULESCU

SISTEME DE OPERARE I LIMBAJE DE PROGRAMARE Limbajul C

Elementele individuale ale limbajului C nu sunt de sine stttoare, ci n conjuncie unul cu celalalt. De aceea este necesar s nelegem cteva aspecte cheie ale limbajului C, naintea examinrii n detaliu a fiecrui element. 6.1. Componentele unui program C Toate programele C au anumite componente i trsturi comune. Ele conin una sau mai multe funcii, fiecare din ele avnd una sau mai multe instruciuni n C, o funcie este o subrutin care poate fi apelat de alte pri ale programului. O instruciune specific o aciune ce trebuie executat de program. Cu alte cuvinte, instruciunile sunt pri ale programului care execut anumite operaii i sunt coninute n funcii. Toate instruciunile C se termina cu ';'. C nu recunoate sfritul liniei ca terminator. Aceasta nseamn c nu exist constrngeri n ceea ce privete poziia unei instruciuni n linie. De asemenea, se pot plasa dou sau mai multe instruciuni pe o linie. Cea mai simpl form a unei funcii C este urmtoarea: Function_name () { secvena instruciunilor } unde: function_name este numele funciei secvena instruciunilor poate conine una sau mai multe instruciuni (tehnic, o funcie poate s nu conin nici o instruciune, dar acesta este un caz degenerativ). Function_ name poate fi compus din: - literele mari ale alfabetului - literele mici ale alfabetului - cifrele 0-9 - underscore C este case-sensitive, ceee ce nseamn c recunoate diferentele dintre literele mari i literele mici. Astfel, Func i func sunt nume diferite. Dei un program C poate conine mai multe funcii, singurele funcie care trebuie neaprat s existe este funcia main(). Funcia main() este funcia cu care ncepe execuie programului. Adic, atunci cnd programul este lansat, el execut instruciunile din funcia main() ncepnd cu prima instruciune ce urmeaz dup paranteza acolad deschis. Execuia programului se termin cnd este ntlnit paranteza acolad nchis (aceste paranteze acolade nu exist n versiunea compilat a programului, dar este bine s ne gndim la ele n acest mod). O alt component important a tuturor programelor C o constituie biblioteca de funcii C, funcii pe care programul dumneavoastr le poate utiliza. Biblioteca de funcii C conine funcii care execut operaii de
pagina 2/10 Autor: dr.ing. ec Cezar NECULESCU

SISTEME DE OPERARE I LIMBAJE DE PROGRAMARE Limbajul C

intrare/ieire cu discul, manipularea irurilor, matematice i altele. Avantajul meninerii acestor funcii ntr-o bibliotec const n mrirea flexibilitii. Vom vedea ulterior c orice program C va folosi funcii din biblioteca de funcii C. Una din cele mai folosite funcii din biblioteca de funcii C este printf(). Ea este principala funcie de ieire a limbajului C i cea mai simpl form a sa este: printf(ir de afiat); printf() afieaz pe ecran caracterele care sunt cuprinse ntre ghilimele. (Ghilimelele nu sunt afiate pe ecran). n C, unul sau mai multe caractere incluse ntre ghilimele constituie un ir. irul cuprins ntre parantezele funciei printf() se numete argument pentru printf( ). n general, informaia transmis unei funcii se numete argument. Pentru a apela o funcie, trebuie specificat numele ei, urmat de o pereche de paranteze rotunde care conin lista de argumente ce trebuie transferate funciei. Dac o funcie nu are nici un argument, atunci perechea de paranteze va fi goal. Dac exist mai multe argumente, acestea trebuie separate prin virgule. O alt component comun celor mai multe programe C sunt fiierele header. In C, informaiile despre funciile din biblioteca standard se gsesc n diferite fiiere furnizate mpreun cu compilatorul. Aceste fiiere se recunosc uor, deoarece toate au extensia H. Compilatorul C folosete informaiile din aceste fiiere pentru a manipula funciile din bibliotec. Aceste fiiere pot fi adugate programului folosind directiva preprocesor #include. Directivele preprocesor nu sunt pri ale limbajului C, ci mai curnd instruciuni date de dumneavoastr compilatorului. Directiva #include instruiete preprocesorul s citeasc un alt fiier i s l includ n program. Cel mai cerut fiier header se numete STDIO.H. Directiva urmtoare include acest fiier. #include "stdio.h" Numele fiierului poate fi scris cu litere mari sau litere mici, dar folosirea literelor mici constituie metoda tradiional. STDIO.H conine, printre altele, informaii cu privire la funcia printf(). De notat c directiva #include nu se termin cu ; deoarece #include nu este cuvnt cheie al limbajului C. n schimb #include este o instruciune ctre compilatorul C. Cu cteva excepii, C ignor spaiile. Aceasta nseamn c nu conteaz n ce coloan apare o instruciune, o parantez acolad sau numele unei funcii. Poziionarea instruciunilor, funciilor i parantezelor este o decizie stilistic i nu una de programare. Unul din cele mai simple programe ce pot fi scrise in C este artat mai
pagina 3/10 Autor: dr.ing. ec Cezar NECULESCU

SISTEME DE OPERARE I LIMBAJE DE PROGRAMARE Limbajul C

jos: #include stdio.h main() { printf("Acesta este un scurt program C"); } Dup compilare i execuie, acest program afieaz pe display mesajul: Acesta este un scurt program C. Dei conine numai cinci linii, el ilustreaz acele aspecte comune tuturor programelor C. S l examinm linie cu linie. Prime linie a programului este: #include stdio.h Ea face ca fiierul STDIO.H s fie citit de compilatorul C i s fie inclus in program. Acest fiier conine informaii n ceea ce privete printf(). A doua linie, main() definete nceputul funciei main(). Dup cum am afirmat anterior, toate programale C trebuie s conin o funcie main, funcie cu care ncepe execuia programului. Dup main() urmeaz o parantez acolad deschis, care marcheaz nceputul declaraiilor i instruciunilor ce formeaz funcia. Urmtoarea linie din program este: printf(Acesta este un program C); Ea este o instruciune C care apeleaz funcia printf() din biblioteca standard, pentru a afia pe ecran irul de caractere cuprins ntre ghilimele. Programul se termin la ntlnirea parantezelor acolade nchise. Iat un alt program simplu: #include stdio.h main() { printf(Acesta este ); printf(un alt ); printf (program C); } Acest program afieaz pe ecran: Acesta este un alt program C.
pagina 4/10 Autor: dr.ing. ec Cezar NECULESCU

SISTEME DE OPERARE I LIMBAJE DE PROGRAMARE Limbajul C

Punctul cheie el acestui program este c instruciunile sunt executate secvenial, ncepnd cu paranteza acolad deschis i terminnd cu paranteza acolad nchis. 6.2. Crearea i compilarea unul program

Modul n care se creeaz i se compileaz un program este determinat n cea mai mare msur de compilatorul care se folosete i de sistemul de operare sub care se lucreaz. Pentru un IBM PC (sau alte calculatoare compatibile) exist la dispoziie cteva compilatoare excelente, cum ar fi Turbo C sau Quick C, care conin medii de programare integrate. Dac folosii un astfel de mediu, putei edita, compila i executa programul direct n acest mediu. Aceasta este o opiune excelent pentru nceptori - trebuie doar urmate instruciunile primite mpreun cu compilatorul. Dac folosii un compilator command-line, cum ar fi compilatorul UNIX C atunci trebuie s parcurgei urmtoarele etape pentru a crea i compila programul: 1. Creai programul folosind un editor. 2. Compilai programul. 3. Executai programul. Metoda exact de parcurgere a acestor pai este explicat n manualul compilatorului. Numele programului trebuie s conin extensia C. Aceast extensie v ajut s recunoatei acele fiiere care conin programe C. De asemenea, unele compilatoare presupun automat c, dac un fiier conine un program C, atunci va folosi extensia C. Fiierul care conine programul C se numete fiier surs fiierul care conine forma compilat a programului se numete fiier object, iar fiierul care conine forma executabil a acestuia se numete fiier executabil. Dac n programul surs este ceva incorect, compilatorul transmite un mesaj de eroare de sintax n momentul n care ncearc s compileze programul. Acest lucru se repet pentru fiecare incorectitudine gsit. Cele mai multe compilatoare C ncearc s dea sens programului supus compilrii, indiferent de ceea ce este scris n program. Din acest motiv, eroarea semnalat nu reflect totdeauna cauza real a erorii. De exemplu, dac n mod accidental uitm s deschidem paranteza acolad a funciei main() din programele precedente, unele compilatoare vor semnala instruciunea printf() ca fiind un identificator incorect. Aadar, cnd primim un mesaj de eroare de sintax, pentru a gsi cauze, fii pregtii s analizai atent cel puin cteva linii de program situate deasupra liniei care a fost semnalat ca eronat. Multe compilatoare C afieaz nu numai erorile, dar i unele avertismente. Limbajul C a fost proiectat s fie foarte ngduitor i s compileze orice program care este corect din punct de vedere sintactic. Totui, unele chestiuni, chiar dei sunt corecte sintactic, sunt suspecte. Cnd
pagina 5/10 Autor: dr.ing. ec Cezar NECULESCU

SISTEME DE OPERARE I LIMBAJE DE PROGRAMARE Limbajul C

compilatorul ntlnete astfel de situaii, el afieaz un avertisment. Dumneavoastr, ca programator, trebuie s decidei dac avertismentul este justificat sau nu. Unele compilatoare v permit s activai anumite opiuni care s afieze informaii despre programul care se compileaz. Uneori aceste informaii sunt afiate sub form de mesele de avertizare chiar dac nu este vorba de o avertizare propriu-zis. Dac utillzai Turbo C, putei crea i compila programul dumneavoastr folosind mediul integrat. Dac utilizai o interfa command-line (presupunnd c numele programului este TEST.C), aceasta v va permite s compilai programul dup ce ai folosit un editor de texte pentru crearea lui, tastnd: TCC TEST.C Dac folosii Microsoft C, urmtoarea comand v va permite s compilai programul, dup ce ai folosit un editor de texte pentru crearea lui (se presupune ca numele programului este TEST C): CL TEST.C Dac folosii Turbo C + + sau Quick C , putei edita, compila i rula programul n mediul respectiv. 6.3. Declararea variabilelor i asignarea valorilor

O variabil este o locaie de memorie creia i s-a atribuit un nume i care poate conine diferite valori. Numai cele mai banale programe C nu conin variabile. n C, toate variabilele trebuie declarate nainte de utilizarea lor, n scopul de a pregti compilatorul C n ceea ce privete tipul variabilei ce va fi utilizat. Limbajul C suport cinci tipuri de date, prezentate in Tabelul 8.1 mpreun cu cuvintele cheie care le reprezint. Tabelul 8.1 Tip caracter ntreg virgul flotant Dubl precizie Void Semnificaie dat caracter numr ntreg cu semn numr cu zecimale numr cu zecimale reprezentat in dubl precizie fr valoare Cuvnt cheie char int float double void

O variabil de tip char are n general lungimea de 8 bii i conine n mod normal un singur caracter. Deoarece C este foarte flexibil, o variabil de tip char poate fi utilizat de asemenea ca ,,ntreg mic", dac se dorete. O variabil de tip int poate conine numere ntregi cu semn (numere fr parte
pagina 6/10 Autor: dr.ing. ec Cezar NECULESCU

SISTEME DE OPERARE I LIMBAJE DE PROGRAMARE Limbajul C

fracionar) din domeniul de valori -32.768 la 32.767 (la unele computere plaja poate fi mai mare). Variabilele de tip float i double conin numere n virgul flotant, deci care pot avea componente fracionare. Diferena ntre float i double const n faptul c double ofer o precizie de dou ori mai mare (numr de cifre semnificative) dect float. Variabilele de tip float i double pot conine numere foarte mari. Pentru a declare o variabil se folosete aceast form general: type var_name; unde: type este tipul de dat C var_name - este numele variabilei. De exemplu, n continuare se declar variabila counter ca fiind de tipul int. int counter; In C, declararea unei variabile trebuie s se termine cu ;. Variabilele se pot declara n dou locuri din program: in interiorul funciilor sau n exteriorul lor. Variabilele declarate n exteriorul funciilor se numesc variabile globale i ele pot fi accesate de orice funcie din program. Variabilele globale exist tot timpul n care se execut programul. Variabilele declarate in interiorul funciilor se numesc variabile locala. O variabil local este cunoscut i poate fi accesat numai de funcia n interiorul creia a fost declarat. Exist practica de a declara toate variabilele locale utilizate de o funcie dup paranteza acolad deschis, adic la nceputul funciei. Exist dou aspecte importante de reinut: variabilele locale dintr-o funcie nu au nici o legtur cu variabilele locale din oricare alt funcie. Adic dac o variabil numit count este declarat ntr-o funcie, o alt variabil numit count poate fi declarat ntr-o alt funcie, cele dou variabile fiind complet separate i neavnd nimic n comun una cu cealalt. variabilele locale sunt create cnd funcia respectiv este apelat, i ele sunt distruse cnd funcia cedeaz controlul programului apelant. De asemenea, variabilele locale nu i menin valorile ntre dou apeluri ale funciei. Se pot declara mai multe variabile de acelai tip ntr-o declaraie, folosind virgule. De exemplu, declaraia urmtoare fixeaz variabilele x, y i z ca fiind de tipul float. float x,y,z; Ca i numele funciilor, numele de variabile n C pot conine literele alfabetului, cifrele de la 0 la 9 i underscore. Dup cum s-a artat deja, C este casesensitive, adic literele mari i literele mici sunt tratate ca litere diferite, deci COUNT i count sunt dou nume de variabile complet diferite. Pentru a asigna o valoare unei variabile, punei numele ei n stnga semnului egal i apoi
pagina 7/10 Autor: dr.ing. ec Cezar NECULESCU

SISTEME DE OPERARE I LIMBAJE DE PROGRAMARE Limbajul C

punei valoarea pe care vrei s o dai variabilei n dreapta semnului egal. In C, operaia de asignare este o instruciune, deci ea trebuie terminat prin ;. Forma general a unei instruciuni de asignare este: Var_ name = valoare; De exemplu, pentru a asigna unei variabile de tip ntreg denumit num valoarea 100, trebuie scris: num=100; Dup cum exist diferite tipuri de variabile, exist i diferite tipuri de constante. O constant este o valoare fix utilizat n program. Constantele sunt folosite deseori pentru a iniializa variabilele, la nceputul execuiei programului. O constant tip caracter poate fi specificat plasnd caracterul ntre apostrofuri. De exemplu, pentru a specifica litera A ca o constant tip caracter, trebuie scris 'A'. Constantele n virgul mobil trebuie s includ punctul zecimal. De exemplu, pentru a specifica numrul 100,1 trebuie scris 100.1 . Dac o constant float nu are cifre n dreapta punctului zecimal, atunci n aceste poziii trebuie folosit 0. De exemplu, pentru a instrui compilatorul c 100 este un numr float, se scrie 100.0. Putei folosi funcia printf() pentru a afia valori de tip char, int, float sau double. Pentru a realiza aceasta, trebuie s nvm mai multe despre printf() S privim mai nti la un exemplu: printf("Afim numrul %d",99); Aceast instruciune afieaz pe display: Afim numrul 99 Dup cum se vede, aceast apelare a funciei printf() conine nu unul, ci dou argumente. Primul este un ir ntre ghilimele, iar al doilea este constanta 99. S notm c argumentele sunt separate unul de cellalt prin virgul. Primul argument poate conine caractere normale sau specificatori de format care ncep cu %. Caracterele normale sunt afiate pe ecran n ordinea n care sunt ntlnite n ir (citind de la stnga la dreapta). Specificatorul de format informeaz printf() c o alt categorie de date va fi afiat. In acest caz, %d nseamn c trebuie afiat un ntreg n format zecimal. Valoarea care trebuie afiat se afl n al doilea argument, i este afiat pe ecran n locul n care specificatorul de format este ntlnit n ir. Pentru a nelege relaia dintre caracterul normal i specificatorul de format, s examinm instruciunea: printf(Afim %d din nou",99);
pagina 8/10 Autor: dr.ing. ec Cezar NECULESCU

SISTEME DE OPERARE I LIMBAJE DE PROGRAMARE Limbajul C

Acum funcia printf() afieaz: Afiam 99 din nou. Dup cum se vede, valoarea asociat cu specificatorul de format este afiat n locul n care este ntlnit n sir specificatorul de format. Dac se dorete afiarea unei valori tip char, specificatorul de format este %c. Pentru a specifica o valoare float, se folosete %f. Specificatorul de format %f se folosete att pentru valori de tip float, ct i double. Vom vedea ulterior c funcia printf() are mult mai multe posibiliti. S notm c valorile care pot fi afiate folosind specificatori de format nu trebuie s fie neaprat constante. n acelai mod se afieaz i variabilele. Programul de mai jos ilustreaz cele trei concepte noi introduse n aceast seciune. Primul declar o variabil denumit num, al doilea asigneaz acestei variabile valoarea 100, iar a treilea utilizeaz funcia printf() pentru a afia pe ecran valoarea este 100. S examinm atent acest program: #include "stdio.h" main() { int num; num = 100; printf(valoarea este %d,num); } Declaraia: int num; stabilete c num este o variabil de tip ntreg. Pentru a afia valoarea lui num, programul folosete instruciunea: printf("valoarea este %d",num); Acest program creeaz variabile de tip char, float i double, asigneaz fiecreia cte o valoare i afieaz aceste valori pe ecran. #include "stdio.h main() { char ch; float f; double d; ch =x; f = 100.123;
pagina 9/10 Autor: dr.ing. ec Cezar NECULESCU

SISTEME DE OPERARE I LIMBAJE DE PROGRAMARE Limbajul C

d = 123.009; printf(ch = %c , ch); printf(f = %f , f); printf(d = %f , d); }

pagina 10/10

Autor: dr.ing. ec Cezar NECULESCU

S-ar putea să vă placă și

  • Capitolul 8
    Capitolul 8
    Document12 pagini
    Capitolul 8
    jijibecali23
    Încă nu există evaluări
  • Capitolul 3
    Capitolul 3
    Document8 pagini
    Capitolul 3
    jijibecali23
    Încă nu există evaluări
  • Capitolul 2 - Planificarea Activitatii de Marketing
    Capitolul 2 - Planificarea Activitatii de Marketing
    Document19 pagini
    Capitolul 2 - Planificarea Activitatii de Marketing
    Nwfcffss Stdsfgvrvf
    Încă nu există evaluări
  • Capitolul 5
    Capitolul 5
    Document22 pagini
    Capitolul 5
    jijibecali23
    Încă nu există evaluări
  • Capitolul 4
    Capitolul 4
    Document7 pagini
    Capitolul 4
    jijibecali23
    Încă nu există evaluări
  • The Louvre
    The Louvre
    Document2 pagini
    The Louvre
    jijibecali23
    Încă nu există evaluări
  • Europa
    Europa
    Document3 pagini
    Europa
    jijibecali23
    Încă nu există evaluări
  • Cap 2
    Cap 2
    Document14 pagini
    Cap 2
    jijibecali23
    Încă nu există evaluări
  • Cursul 6
    Cursul 6
    Document10 pagini
    Cursul 6
    jijibecali23
    Încă nu există evaluări
  • Cursul 7
    Cursul 7
    Document11 pagini
    Cursul 7
    jijibecali23
    Încă nu există evaluări
  • Cursul 3
    Cursul 3
    Document17 pagini
    Cursul 3
    jijibecali23
    Încă nu există evaluări
  • Cap 5
    Cap 5
    Document17 pagini
    Cap 5
    jijibecali23
    Încă nu există evaluări
  • Cap 1
    Cap 1
    Document15 pagini
    Cap 1
    jijibecali23
    Încă nu există evaluări
  • Cap 7
    Cap 7
    Document11 pagini
    Cap 7
    jijibecali23
    Încă nu există evaluări
  • Cap 5
    Cap 5
    Document17 pagini
    Cap 5
    jijibecali23
    Încă nu există evaluări
  • Bursa 1
    Bursa 1
    Document15 pagini
    Bursa 1
    Daniel Iordache
    Încă nu există evaluări
  • Cursul 3
    Cursul 3
    Document17 pagini
    Cursul 3
    jijibecali23
    Încă nu există evaluări
  • Cap 1
    Cap 1
    Document15 pagini
    Cap 1
    jijibecali23
    Încă nu există evaluări
  • Cap 4
    Cap 4
    Document14 pagini
    Cap 4
    jijibecali23
    Încă nu există evaluări
  • Cap 2
    Cap 2
    Document14 pagini
    Cap 2
    jijibecali23
    Încă nu există evaluări
  • Hot.257 - 2011-Norme Legea Pensiilor 2011
    Hot.257 - 2011-Norme Legea Pensiilor 2011
    Document51 pagini
    Hot.257 - 2011-Norme Legea Pensiilor 2011
    Ionescu Cosmin
    Încă nu există evaluări
  • Legea 263 Din 2010 Privind Sistemul Unitar de Pensii Publice
    Legea 263 Din 2010 Privind Sistemul Unitar de Pensii Publice
    Document51 pagini
    Legea 263 Din 2010 Privind Sistemul Unitar de Pensii Publice
    SindicatulPajura
    Încă nu există evaluări
  • Legea 263 Din 2010 Privind Sistemul Unitar de Pensii Publice
    Legea 263 Din 2010 Privind Sistemul Unitar de Pensii Publice
    Document51 pagini
    Legea 263 Din 2010 Privind Sistemul Unitar de Pensii Publice
    SindicatulPajura
    Încă nu există evaluări
  • Legea 263 Din 2010 Privind Sistemul Unitar de Pensii Publice
    Legea 263 Din 2010 Privind Sistemul Unitar de Pensii Publice
    Document51 pagini
    Legea 263 Din 2010 Privind Sistemul Unitar de Pensii Publice
    SindicatulPajura
    Încă nu există evaluări