Programare II - limbajul C

Previzualizare curs:

Cuprins curs:

Cap 1 INTRODUCERE ÎN LIMBAJUL C 4
1.1 Scurt istoric 4
1.2 Forma unui program C 8
1.3 Compilarea unui program C 9
Cap 2 Tipuri, operatori, expresii 11
2.1. Tipuri simple 11
2.2. Literali 12
2.3. Declararea unei variabile şi a unei constante 13
2.4. Operatori 14
2.4.1. Operatori aritmetici 15
2.4.2. Operatorii relaţionali (de comparaţie) 15
2.4.3. Operatori logici 16
2.4.4. Operatori la nivel de bit 16
2.4.5. Operatorul de asignare 17
2.4.6. Operatorul condiţional 17
2.4.7. Operatorul virgulă 18
2.4.8. Precedenţa operatorilor 18
Cap 3 FUNCTII 20
3.1. Definirea unei funcţii 20
3.2. Returnarea unui apel 21
3.3. Funcţii cu un număr variabil de parametri 21
3.4. Sfârşitul execuţiei unui program 21
3.5. Apelul şi transmiterea parametrilor 22
3.6. Funcţia principală main 23
Cap 4 FUNCŢII DE INTRARE IEŞIRE 25
4.1.Fluxuri şi fişiere 25
Semnificaţia 27
4.2. Funcţii de intrare/ieşire pentru caractere 28
4.3. Scrierea cu format 29
4.5. Citirea cu format 33
Cap 5 INSTRUCŢIUNI DE CONTROL 36
5.1. Instrucţiunea if 37
5.3. Instrucţiunea while 39
5.4. Instruc]iunea do ... while 40
5.5. Instrucţiunea for 40
5.6. Instrucţiunea break 42
5.7. Instrucţiunea continue 43
5.8. Instrucţiunea go to 43
5.9. Exerciţii 44
1. Calculul factorialului. 44
2. Conversie 44
3. Numărarea biţilor 1 într-un număr 44
4. Prezentare de date 44
5.10. Soluţii la exerciţii 44
1. Calculul factorialului 44
2. Conversie 45
3. Numărarea biţilor 1 într-un număr 46
4. Prezentare de date 46
Cap 6 TABLOURI ŞI POINTERI 48
6.1. Pointeri 48
6.2. Tablouri cu o dimensiune 49
6.2.1. Referenţierea unui element al tabloului 49
6.2.2. Iniţializarea unui tablou 49
6.3. Relaţia între pointeri şi tablouri 51
6.4. Operaţii aritmetice cu pointeri 51
6.5. Şiruri de caractere 52
6.6. Tablouri cu mai multe dimensiuni 52
6.7. Tablouri de pointeri 54
6.8. Pointeri şi alocarea memoriei 55
6.9. Operatorul “sizeof” 55
6.10. Pointeri către funcţii 56
6.11. Exerciţii 57
6.12. Soluţii 58
Cap 7 CONSTRUIREA DE NOI TIPURI 60
7.1. Redenumirea unui tip 60
7.2. Tipul structură 61
7.3. Accesul şi iniţializarea câmpurilor unei structuri 62
7.4. Structuri autoreferenţiate 62
7.5. Tipul enumerare 64
7.6. Uniuni 64
7.7. Exerciţii 66
7.8. Soluţii 66
Cap 8 GESTIUNEA MEMORIEI 71
8.1. Precizarea unui mecanism de memorare 71
8.2. Gestiunea automată a memoriei 72
8.3. Gestionarea “register” a memoriei 72
8.4. Gestionarea statică a memoriei 73
8.5. Variabile globale 73
8.6. Declararea variabilelor externe 73
8.7. Gestiunea dinamică a memoriei 74
8.8. Exerciţii 74
8.9. Soluţii 75
Cap 9 CONVERSIA DE TIP 78
9.1. Mecanisme de conversie 78
9.1.1 Conversia la asignare 79
9.1.2 Evaluarea expresiilor aritmetice 79
9.1.3. Evaluarea expresiilor logice 80
9.1.4 Conversii explicite 80
9.1.5 Conversie de pointeri. Pointerul universal 81
Cap 10 PREPROCESORUL 82
10.1 Directive preprocesor 82
10.1.1 Constante simbolice. Directiva #define 83
10.1.2 Includerea fişierelor 83
10.1.3 Compilare condiţionată 84
10.1.4 Directiva #error 84
10.2 Macroinstruţiuni 85
10.2.1 Macroinstrucţiuni predefinite 85
10.2.2 Macroinstrucţiuni tip funcţie 85
Cap 11 EXERCIŢII 87
BIBLIOGRAFIE 89
ANEXA 90
Biblioteca standard C 90
Codul ASCII 93

Extras din curs:

Cap 1 INTRODUCERE ÎN LIMBAJUL C

1.1 Scurt istoric

1.2 Forma unui program C

1.3 Compilarea unui program C

1.1 Scurt istoric

Strămoşii limbajului C sunt limbajele de programare CPL, BCPL, B şi Algol 68. CPL a fost dezvoltat la Universităţile Cambridge şi London în anii 1960-1963. BCPL a fost proiectat de Martin Richards în 1967 şi face parte din categoria “low-level languages”, sau “systems programming languages”. În anii ’60, la Bell Laboratories în USA, Ken Thomson a început proiectarea sistemului de operare Unix. Primul limbaj de nivel înalt implementat sub acest sistem de operare a fost limbajul B, un limbaj bazat pe BCPL care a fost proiectat de asemenea de către Ken Thompson în 1970. Asemănarea cu BCPL a fost mai degrabă semantică; sintaxa este total diferită. Proiectarea limbajului B a fost influienţată de limitele maşinii pe care a fost implementat: un PDP-7 cu capacitatea 4K ( cuvinte de 18 biţi).

Limbajele BCPL şi B sunt limbaje de nivel scăzut faţă de limbajul Pascal şi nici unul din ele nu este tipizat: toate datele sunt considerate cuvinte maşină încât, exemple simple de programe duc la complicaţii nebănuite. În una din implementările BCPL-ului, operanzii flotanţi din expresii trebuiau precedaţi de punct; restul operanzilor erau consideraţi întregi.

Problemele create în jurul limbajelor BCPL şi B au dus la dezvoltarea unui nou limbaj, bazat pe B, care la început s-a numit NB dar numele său a fost stabilit C. Numele “C”, considerat la început a proveni de la Cambridge, este oficial din “Combined” dar neoficial se consideră a fi iniţiala pronumelui lui Cristopher Strachey, cel care a condus echipa ce a proiectat CPL-ul. Limbajul a fost proiectat şi implementat de către Dennis Ritchie la Bell Laboratories în 1972. În mare parte ( construcţiile for şi switch, tratarea pointerilor etc.) limbajul a fost influienţat şi de Algol 68. Genealogia limbajului C este prezentată în Figura 1.1.

Ritchie a lucrat pe un calculator DEC PDP-11 sub sistemul de operare Unix. Din acest motiv varianta clasică a limbajului C a fost asociată sistemului de operare Unix - versiunea 5 şi multă vreme a constituit un standard (neoficial de altfel) al limbajului şKeR 78ţ.

Odată cu creştere popularităţii calculatoarelor personale, au apărut numeroase alte implementări ale limbajului C şi astfel a crescut şi popularitatea acestuia. Un fapt cu totul inedit a fost acela că, mare parte din implementările C -ului s-au dovedit de un mare grad de compatibilitate: un program scris pentru una din variante putea fi compilat cu succes folosind o altă variantă. Se înţelege că au existat şi neconcordanţe în multitudinea de “dialecte” ale limbajului. Pentru eliminarea acestora în 1983 a fost creată o comisie care să stabilească un standard al acestui limbaj. Standardul ANSI ( American National Standard Institute) a fost redactat abia în decembrie 1989 şi a fost pus la dispoziţia celor interesaţi la începutul lui 1990. Firma Borland a folosit acest standard în faza de proiect şi a realizat implementările Turbo C care se bucură de un succes remarcabil. De altfel, în prezent , toate compilatoarele C sunt compatibile cu standardul ANSI C; unele din acestea au adăugate o serie de facilităţi sau extensii proprii care nu împiedică compilarea unui program standard.

•FORTRAN I (1957)

•FORTRAN II (1958)

•ALGOL 60 (1960)

•CPL (1963)

•ALGOL 68 (1968)

•BCPL (1967)

•B (1970)

•C (1972)

•C++ (1984)

Figura 1.1.

Limbajul C este privit ca un limbaj de nivel mediu întrucât combină cele mai reuşite elemente ale limbajelor de nivel înalt ( Pas-cal, Fortran, Algol, Modula, Ada) cu gradul de control şi flexibilitatea oferite de către limbajul de asamblare. C permite manevrarea biţilor, a octeţilor şi a adreselor de memorie, adică a elementelor de bază în funcţionarea unui calculator. În ciuda acestui fapt , programele scrise în C au un grad mare de portabilitate: uşurinţa de a adapta programele scrise pentru o anumită categorie de calculatoare sau sisteme de operare la alte calculatoare sau sisteme de operare.

Limbajul C are structuri de control adecvate precum şi facilităţi de structurare a datelor care îl fac să fie folosit într-o diversitate de domenii. Are de asemenea o mulţime bogată de operatori care-i dau un înalt grad de expresivitate. Unul din motivele pentru care limbajul C este în acelaşi timp agreat de mare parte din programatori şi dezagreat de altă mare parte din programatori, este lipsa totală a verificării tipului (type checking). De exemplu, o variabilă de un tip scalar oarecare poate apare în aceeaşi expresie cu o variabilă de un alt tip scalar. Cei care agrează limbajul C îi apreciază flexibilitatea sa, cei care nu-l agrează îl consideră un limbaj lipsit de siguranţă.

Ceea ce este sigur, este că datorită faptului că face parte din sistemul de operare Unix, limbajul a căpătat o mare popularitate în lumea academică şi nu numai. Compilatoarele oferite împreună cu sistemul Unix sunt relativ ieftine (uneori chiar gratuite) şi pot fi folosite pe o diversitate de maşini.

O nouă versiune a limbajului C, numită C++, a apărut în 1984. Originea acestui limbaj şSTR 94ţ trebuie căutată în proiectul care a început în Aprilie 1979 la “Computing Research Center of Bell Laboratories” în Murray Hill, New Jersey, USA, proiect ce trebuia să realizeze distribuirea nucleului UNIX într-o reţea de computere conectate LAN. Pentru realizarea acestui proiect, Bjarne Stroustrup a realizat în Octombrie 1979 un preprocesor, numit Cpre, care a adăugat la limbajul C conceptul de clasă folosit pentru prima dată de limbajul Simula ( dezvoltat în anii 1962-1967 de norvegienii Kristen Nyagaard şi Ole-Johan Dahl). În martie 1980 preprocesorul îmbunătăţit era implementat pe 16 sisteme iar limbajul acceptat de acesta a fost numit “C cu Clase”. Motivele pentru care a fost ales limbajul C (în faţa altor limbaje ale vremii: Modula-2, Ada, Smalltalk, Mesa, Clu) pentru acest proiect sunt expuse chiar de creatorul noului limbaj:

Download gratuit

Documentul este oferit gratuit,
trebuie doar să te autentifici in contul tău.

Structură de fișiere:
  • Programare II - Limbajul C.doc
Alte informații:
Tipuri fișiere:
doc
Nota:
6.7/10 (3 voturi)
Nr fișiere:
1 fisier
Pagini (total):
94 pagini
Imagini extrase:
94 imagini
Nr cuvinte:
24 612 cuvinte
Nr caractere:
137 461 caractere
Marime:
161.04KB (arhivat)
Publicat de:
NNT 1 P.
Nivel studiu:
Facultate
Tip document:
Curs
Domeniu:
Limbaje de Programare
Predat:
la facultate
Materie:
Limbaje de Programare
Profesorului:
Grigoras
Sus!