Sunteți pe pagina 1din 2

Primii pai n nvarea limbajului C

Un rol important n nvarea programrii l au, desigur, crile i profesorii. Dar fr mul
res, munc i exersare nu reueti s atingi acest scop. Doar scriind singur programele, d
epistnd 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 l
imbajul Pascal sau C.
n continuare vom scrie primele programe n C. Vom ncepe cu programul clasic care afie
az un text pe ecran.
[C] /* 1,2 */ #include #include
/* 3 */ void main() /* 4 */ { /* 5 */ clrscr(); /* 6 */ printf(Acesta este primul progr
am scris de mine); /* 7 */ getch(); /* 8 */ } [/C]
Observm c la nceputul fiecrui rnd am scris un numr cuprins ntre simbolurile /* i */.
tul cuprins ntre aceste perechi de simboluri este un comentariu, adic un text ce n
u este verificat de compilator, fiind destinat programatorului pentru a face anu
mite nsemnri, comentarii n codul programului. Vom vedea ce rol are fiecare din lini
ile 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 li
nii, de aceea comentariul l-am scris mai sus. Aceste linii au ca efect includere
a n textul programului a coninutului unui alt fiier nainte de compilarea programului
. Aceste fiiere se numesc fiiere-header sau biblioteci i conin diferite funcii, const
ante, 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(), i
ar fiierul stdio.h pentru a utiliza funcia printf().
Linia 3 reprezint antetul funciei main. n C funciile sunt eseniale. nsui programul pri
cipal 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 fu
nciei 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 obligatori
i, 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. A
colada 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 caz
ul apelului unei funcii parantezele rotunde sunt obligatorii. Funcia clrscr() are
ca efect tergerea textului scris pe ecran, dac acesta e prezent, i poziionarea curso
rului 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. A
cest 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 corpu
lui 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 var
abile, s le citim valorile de la tastatur, s le atribuim valori i s le afim pe ecran.
e asemenea, vom declara constante simbolice cu ajutorul directivei de preprocesa
re define. Programul n care facem aceste lucruri este urmtorul:
[C] #include #include #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 int
use: %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\

r);
printf(Valoarea lui PI: %g,PI);
getch(); } [/C]
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 ma
i nti numele tipului, apoi numele variabilelor separate prin virgul. Funcia scanf, d
efinit n fiierul stdio.h este utilizat pentru a citi de la tastatur valori pentru var
iabile. 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 nt
regi (tipul int), %f i %lf pentru numere reale (tipul float, respectiv double), %
c pentru caracter (tipul char), %s pentru iruri de caractere (tipul char *). Pent
ru 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 v
ariabilei.
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.
[C] #include #include
// Instructiunea if void f_if() { int x; printf(Introduceti un numar intreg: ); scanf(%d,
; 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 a
l zilei din saptamana: ); scanf(%d,&n); switch(n) { case 1: printf(Luni); break; // daca
1 case 2: printf(Marti); break; // daca n=2 case 3: printf(Miercuri); break; // daca n=3
ase 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 // da
ca 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 execut
a: instr. printf, apoi i++ for(i=1;i<=10;i++) printf("%d ",i); } // Instructiune
a 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 { p
rintf("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(" Citir
ea repetata a unui nr. atat timp cat nu este pozitiv\n"); f_dowhile(); getch();
} [/C] Dac ai reuit s nelegi ceea ce este expus n acest articol, deja e un pas importa
nt. Nu trebuie n nici un caz s te opreti la asta, nici s te dezndjduieti dac ceva nu
primete, ci s continui s afli lucruri noi, s te dezvoli n acest domeniu vast. ntotdeau
a e greu la nceput, dar cu efort i strduin poi depi orice obstacol. Succes!

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