Sunteți pe pagina 1din 4

Primii pai n nvarea limbajului C

Un rol important n nvarea programrii l au, desigur, crile i profesorii. Dar fr mult voin, interes, munc i exersare nu reueti s atingi acest scop. Doar scriind singur programele, depistnd erorile sintactice i mai ales logice (mult mai greu de depistat, deoarece nu sunt gsite la compilare), putem s avansm n acest domeniu interesant. Limbajul de programare cu care ncepem este alegerea fiecruia. Cel mai frecvent se ncepe de la limbajul Pascal sau C. n continuare vom scrie primele programe n C. Vom ncepe cu programul clasic care afieaz un text pe ecran.
/* 1,2 */ #include<conio.h> #include<stdio.h> /* /* /* /* /* /* 3 4 5 6 7 8 */ void main() */ { */ clrscr(); */ printf(Acesta este primul program scris de mine); */ getch(); */ }

Observm c la nceputul fiecrui rnd am scris un numr cuprins ntre simbolurile /* i */. Textul cuprins ntre aceste perechi de simboluri este un comentariu, adic un text ce nu este verificat de compilator, fiind destinat programatorului pentru a face anumite nsemnri, comentarii n codul programului. Vom vedea ce rol are fiecare din liniile scrise n acest mic program. Liniile 1 i 2 reprezint directive de preprocesare include, fiind primele analizate imediat nainte de compilarea programului. Nu pot fi scrise comentarii n aceste linii, de aceea comentariul l-am scris mai sus, Aceste linii au ca efect includerea n textul programului a coninutului unui alt fiier nainte de compilarea programului. Aceste fiiere se numesc fiiere-header sau biblioteci i conin diferite funcii, constante, tipuri de date pe care le poate folosi programatorul n programul su. n cazul de fa am inclus fiierul conio.h pentru a putea utiliza funciile clrscr() i getch(), iar fiierul stdio.h pentru a utiliza funcia printf(). Linia 3 reprezint antetul funciei main. n C funciile sunt eseniale. nsui programul principal este o funcie ce nu poate s lipseasc din program i care are denumirea main. La scrierea antetului funciei trebuie s scriem tipul returnat de funcie, denumirea funciei i n paranteze rotunde lista de parametri. n cazul cnd funcia nu returneaza nici o valoare, tipul indicat va fi void. De asemenea dac funcia nu are parametri, ntre paranteze va fi scris void sau nu va fi scris nimic (parantezele sunt obligatorii, totui). Pe linia 4 este scris o acolad deschis, ce desemneaz nceputul corpului funciei, n care putem declara variabile locale i putem scrie codul executat la apelarea funciei. Acolada deschis este echivalentul cuvntului-cheie begin din Pascal. Pe linia 5 este apelat funcia clrscr, care nu are nici un parametru. Observm c i n cazul apelului unei funcii parantezele rotunde sunt obligatorii. Funcia clrscr() are ca efect tergerea textului scris pe ecran, dac acesta e prezent, i poziionarea cursorului n colul stnga-sus al ecranului. Acest lucru l facem deoarece pe ecran poate rmne ceva scris de la o execuie anterioar a unui program. Pe linia 6 este apelul funciei printf ce are ca efect afiarea pe ecran a unui text. Textul afiat l transmitem ca parametru funciei, scriindu-l ntre parantezele de dup numele funciei. Un ir de caractere este ncadrat n C ntre ghilimele. Pe linia 7 este apelat funcia getch(), ce are ca efect ateptarea apsrii unei taste. Acest lucru se face pentru a reui s vizualizm rezultatul afiat pe ecran nainte de a se sfri execuia programului.

A mai rmas acolada nchis de pe linia 8. Da, ai ghicit, aceasta desemneaz sfritul corpului funciei i este echivalentul cuvntului-cheie end din Pascal. Dac ne-am descurcat cu acest prim program, s trecem mai departe. Vom nva s declarm variabile, s le citim valorile de la tastatur, s le atribuim valori i s le afim pe ecran. De asemenea, vom declara constante simbolice cu ajutorul directivei de preprocesare define. Programul n care facem aceste lucruri este urmtorul:
#include<conio.h> #include<stdio.h> #define PI 3.14 #define MESAJ "salut" int a,b,suma; float r; void main() { clrscr(); printf("%s\n",MESAJ); printf("Introduceti 2 numere intregi: "); scanf("%d%d",&a,&b); suma=a+b; printf("Numerele introduse: %d si %d. Suma lor este %d\n",a,b,suma); printf("Introduceti un numar real: "); scanf("%f",&r); printf("Numarul real introdus este %g\n",r); printf("Valoarea lui PI: %g",PI); getch(); }

Directiva define are ca efect faptul c nainte de compilare peste tot n program unde apare numele respective (PI i MESAJ), se nlocuiete cu ceea ce urmeaz dup ele (3.14, respectiv salut). Scrierea cu majuscule nu este obligatorie, ns este o convenie de a scrie astfel numele constantelor. La declararea variabilelor observm c se scrie mai nti numele tipului, apoi numele variabilelor separate prin virgul. Funcia scanf, definit n fiierul stdio.h este utilizat pentru a citi de la tastatur valori pentru variabile. Observm n primul parametru al funciilor printf i scanf prezena unor secvene de genul %d, %f .a. Acestea se folosesc pentru a indica tipul variabilelor citite i a variabilelor i expresiilor afiate. Principalele formate sunt: %d pentru numere ntregi (tipul int), %f i %lf pentru numere reale (tipul float, respectiv double), %c pentru caracter (tipul char), %s pentru iruri de caractere (tipul char *). Pentru afiarea numerelor reale am ales formatul %g, deoarece acesta alege automat cea mai bun form de afiare a numrului. Secvena \n nu este afiat la ecran, ci are ca efect trecerea n rnd nou a cursorului. La scanf se trec ca argumente nu variabilele, ci adresele lor, care pot fi obinute cu ajutorul operatorului & plasat n faa numelui variabilei. n urmtorul program sunt cteva exemple de utilizare a principalelor instruciuni din C (if, switch, for, while i do-while). Observm c exemplele sunt scrise n funcii aparte, fapt care sporete lizibilitatea programului.
#include<conio.h> #include<stdio.h> // Instructiunea if void f_if() { int x; printf("Introduceti un numar intreg: ");

scanf("%d",&x); if(x>0) // Daca x>0 printf("numarul este pozitiv\n"); // atunci afiseaza asta else // in caz contrar printf("numarul nu este pozitiv\n"); // afiseaza asta } // Instructiunea switch void f_switch() { int n; printf("Introduceti numarul de ordine al zilei din saptamana: "); scanf("%d",&n); switch(n) { case 1: printf("Luni"); break; // daca n=1 case 2: printf("Marti"); break; // daca n=2 case 3: printf("Miercuri"); break; // daca n=3 case 4: printf("Joi"); break; // daca n=4 case 5: printf("Vineri"); break; // daca n=5 case 6: printf("Sambata"); break; // daca n=6 case 7: printf("Duminica"); break; // daca n=7 // daca n nu are nici una din valorile de mai sus default: printf("Numar incorect"); } } // Instructiunea for void f_for() { int i; // i ia valoare 1. Cat timp i<=10 se executa: instr. printf, apoi i++ for(i=1;i<=10;i++) printf("%d ",i); } // Instructiunea while void f_while() { int i=1,s=0; // initializare la declarare // Cat timp i<=10 executa instructiunile din interiorul acoladelor while(i<=10) { s+=i; i++; } printf("Suma numerelor de la 1 la 10: %d",s); } // Instructiunea do-while void f_dowhile() { int n; // Executa instructiunile din interiorul acoladelor do { printf("Introduceti un numar pozitiv: "); scanf("%d",&n); } while(n<=0); // atat timp, cat n<=0 } void main() { clrscr(); printf("Exemplul 1. Instructiunea if\n"); printf(" Determina daca numarul introdus este pozitiv\n"); f_if(); printf("\n\nExemplul 2. Instructiunea switch\n"); printf(" Determina denumirea zilei cu nr. dat din saptamana\n"); f_switch(); printf("\n\nExemplul 3. Instructiunea for\n");

printf(" Afiseaza numerele de la 1 la 10\n"); f_for(); printf("\n\nExemplul 4. Instructiunea while\n"); printf(" Calcularea sumei numerelor de la 1 la 10\n"); f_while(); printf("\n\nExemplul 5. Instructiunea do-while\n"); printf(" Citirea repetata a unui nr. atat timp cat nu este pozitiv\n"); f_dowhile(); } getch();

Dac ai reuit s nelegi ceea ce este expus n acest articol, deja e un pas important. Nu trebuie n nici un caz s te opreti la asta, nici s te dezndjduieti dac ceva nu se primete, ci s continui s afli lucruri noi, s te dezvoli n acest domeniu vast. ntotdeauna e greu la nceput, dar cu efort i strduin poi depi orice obstacol. Succes! Lazari Mihai

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

  • Primii Pasi in Invatarea Limbajului C
    Primii Pasi in Invatarea Limbajului C
    Document4 pagini
    Primii Pasi in Invatarea Limbajului C
    Lazari Mihai
    Încă nu există evaluări
  • Img 1162
    Img 1162
    Document1 pagină
    Img 1162
    Lazari Mihai
    Încă nu există evaluări
  • Img 1163
    Img 1163
    Document1 pagină
    Img 1163
    Lazari Mihai
    Încă nu există evaluări
  • Suc
    Suc
    Document1 pagină
    Suc
    Lazari Mihai
    Încă nu există evaluări
  • Suc
    Suc
    Document1 pagină
    Suc
    Lazari Mihai
    Încă nu există evaluări
  • Suc
    Suc
    Document1 pagină
    Suc
    Lazari Mihai
    Încă nu există evaluări
  • Limbi Straine 1
    Limbi Straine 1
    Document6 pagini
    Limbi Straine 1
    Lazari Mihai
    Încă nu există evaluări
  • Exemp
    Exemp
    Document1 pagină
    Exemp
    Lazari Mihai
    Încă nu există evaluări
  • Integral Cap 9
    Integral Cap 9
    Document15 pagini
    Integral Cap 9
    Lazari Mihai
    Încă nu există evaluări
  • Instr DOSBox
    Instr DOSBox
    Document1 pagină
    Instr DOSBox
    Lazari Mihai
    Încă nu există evaluări
  • Etica
    Etica
    Document56 pagini
    Etica
    Dorobantu George-Daniel
    33% (3)
  • Educatie
    Educatie
    Document4 pagini
    Educatie
    Lazari Mihai
    Încă nu există evaluări