1.1. Istoric, concepţie , evoluţie
Limbajul C a fost finalizat în 1972 de Dennis M. Ritchie şi Brian W. Kernighan de la firma americană Bell Laboratories. Prima versiune a limbajului se numeşte BCPL apoi următoarele poartă numele de A, B şi C. Cei doi autori au dezvoltat aceste prime versiuni în jurul sistemului de operare UNIX. La vremea respectivă din aproximativ 13000 linii sursă ale UNIX-ului doar 200 de linii sursă nu erau scrise în limbajul C. De acest fapt se leagă detractorii limbajului care spun că limbajul C nu este un limbaj deosebit ci doar un fel de limbaj “oficial” al sistemului de operare UNIX.
În anul 1978 apare manualul The C Programming Language care este de fapt şi prima standardizare a limbajului. Cei doi autori intră astfel în istorie...
După anul 1980 odată cu dezvoltarea hardware apar şi primele PC-uri iar acestea implică şi produse software adecvate. Principalele firme producătoare de sofware - MICROSOFT şi BORLAND - au dezvoltat unelte adecvate pentru programarea şi utilizarea limbajului C. Deocamdată firma BORLAND deţine supremaţia prin versiunile mediului BORLAND C. Cele mai folosite sunt versiunile 2.0, 3.1, 4.0. În ultimii doi ani au apărut aşa numitele medii “visuale”: VISUAL C versiunile 4.5 şi 5.0, C++ BUILDER care sunt de fapt extensii ale mediului BORLAND C adaptate programării orientate obiect şi interfeţei grafice WINDOWS 95. Mediile de programare BORLAND C pot compila 3 tipuri de programe sursă C:
-
fişiere cu extensia .C (fişiere cu programe standard C);
-
fişiere cu extensia .CP (fişiere cu programe C+, un C extins);
-
fişiere cu extensia .CPP (fişiere cu programe C++).
Menţionăm că limbajul C++ a fost elaborat de Bjarne Stroustrup de la AT&T. El este un superset al limbajului C şi permite principalele concepte ale programării prin abstractizarea datelor şi programării orientate spre obiecte.
Limbajul C este un limbaj hibrid având facilităţi caracteristice limbajelor de asamblare cât şi facilităţi ale limbajelor de înalt nivel.
Câteva dintre principalele caracteristici ale limbajului C sunt:
-
portabilitate: chiar dacă acest concept nu-i definit foarte riguros spunem că
că un program este portabil dacă el poate fi transferat uşor de la
un tip de calculator la altul; limbajul C este un astfel de limbaj;
b) flexibilitate: compilatorul face un număr mai redus de controale (face multe
conversii implicite);
c) programare structurată: limbajul are principalele structuri ale programării structurate:
structura secvenţială, structura iterativă şi structura de selecţie;
d) compactizare: unele instrucţiuni sunt scrise foarte compact; de exemplu i:=i+1
se poate scrie mai scurt ca i++;
e) lucrul pe biţi şi calcule cu adrese.
1.2. Conceptul de funcţie
Un program C se compune din una sau mai multe funcţii. Funcţia este o unitate lexicală de program compilabilă independent. Una dintre funcţii este funcţie principală, numele ei este predefinit şi anume main. Execuţia programului începe cu prima instrucţiune din funcţia principală. Dăm în continuare 2 exemple de structuri de program (fişiere sursă):
-
directive de preprocesare 2) directive de preprocesare
declaraţii de date globale declaraţii de date globale
declaraţie prototip funcţia f1 implementare funcţia f1
. . . . . .
declaraţie prototip funcţia fn implementare funcţia fn
void main(void) void main(void)
{ declaraţii { declaraţii
instrucţiuni instrucţiuni
} }
implementare funcţia f1
. . .
implementare funcţia fn
Funcţia principală main este obligatorie pentru orice program celelalte elemente fiind optionale. Pentru ca o anumită funcţie să poată fi apelată e necesar ca ea să aibă declarat prototipul dacă implementarea (definiţia) ei se află după funcţia main (exemplul 1). Dacă funcţia principală se află la sfârşitul fişierului atunci nu mai e necesar prototipul funcţiei apelate ci doar implementarea ei (exemplul 2). Comparând structura unui program C cu structura unui program PASCAL se observă nivelul de imbricare diferit. În PASCAL apare o imbricare a procedurilor şi funcţiilor pe când în C nu există o astfel de imbricare.
PASCAL C
...
1.2.1. Definiţia unei funcţii
Definiţia unei funcţii în limbajul C se compune din antet şi corp. O funcţie poate fi apelată dacă este precedată de definiţia sau de prototipul ei. Aceste lucruri care sunt valabile în limbajul C se regăsesc şi în limbajul C++.
1.2.2. Antet şi prototip
Antetul simplificat al unei funcţii în C are formatul:
tip nume_funcţie (lista_parametrilor_formali)
unde: tip - reprezintă tipul valorii returnate de funcţie sau dacă funcţia nu returnează nici
o valoare se pune cuvântul cheie void;
nume_funcţie - reprezintă un identificator clasic format dintr-un mixaj de litere
şi cifre, primul caracter fiind obligatoriu literă;
printre litere se numără şi liniuţa de subliniere(‘_’);
lista_parametrilor_formali – nume de variabile sau expresii separate prin virgule.
Exemple:
1) double radical (double x) // calculeaza radacina patrata din x si returneaza valoarea gasita
2) double radical_n (double x, int n) // calculeaza radacina de ordinul n din x
Prototipul unei funcţii este asemănător antetului dar la sfârşit se pune caracterul “;”
1.2.3. Corpul unei funcţii
Corpul unei funcţii C se compune din declaraţii de variabile locale şi instrucţiuni scrise între acolade conform figurii următoare:
{ declaraţii
instrucţiuni
}
Şi pentru că autorii limbajului C consideră că un limbaj de programare se învaţă mai repede scriind şi executând programe cât mai timpuriu vom da un mic exemplu de funcţie.
int modul (int i) // determina valoarea absoluta a intregului i si returneaza aceasta valoare
{ if (i < 0) return – i;
if (i = = 0) return 0;
else return i;
}
sau scris şi altfel
int modul (int I) // determina valoarea absoluta a intregului i si returneaza aceasta valoare
{ if(i)
if (i > 0) return i;
else return – i;
else return 0;
}
Dostları ilə paylaş: |