Manual de programare C

Manual de programare C++

Cuprins

1. Generalităţi asupra limbajului C . . . . . . . . . . . . . . . . . . . 4
1.1. Introducere . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.2. Primele programe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
1.3. Meta-limbajul şi setul de caractere . . . . . . . . . . . . . . . . . . . . 9

2. Unităţile lexicale ale limbajului C . . . . . . . . . . . . . . . . 10
2.1. Identificatori . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
2.2. Cuvinte cheie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
2.3. Constante . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
2.4. Şiruri . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
2.5. Operatori . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
2.6. Separatori . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15

3. Variabile . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
3.1. Clase de memorie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
3.2. Tipuri de variabile . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
3.3. Obiecte şi valori-stînga . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
3.4. Conversii de tip . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23

4. Operatori şi expresii . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
4.1. Expresii primare . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
4.2. Operatori unari . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
4.3. Operatori multiplicativi . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
4.4. Operatori aditivi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
4.5. Operatori de deplasare . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
4.6. Operatori relaţionali . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
4.7. Operatori de egalitate . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
4.8. Operatorul ŞI pe biţi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
4.9. Operatorul SAU-exclusiv pe biţi . . . . . . . . . . . . . . . . . . . . 35
4.10. Operatorul SAU-inclusiv pe biţi . . . . . . . . . . . . . . . . . . . . 36
4.11. Operatorul ŞI-logic . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
4.12. Operatorul SAU-logic . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
4.13. Operatorul condiţional . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
4.14. Operatori de atribuire . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
4.15. Operatorul virgulă . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
4.16. Precedenţa şi ordinea de evaluare . . . . . . . . . . . . . . . . . . . 40

5. Declaraţii . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
5.1. Specificatori de clasă de memorie . . . . . . . . . . . . . . . . . . . 43
5.2. Specificatori de tip . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
5.3. Declaratori . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
5.4. Modificatorul const . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
5.5. Iniţializare . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
5.6. Nume-tip . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49

6. Instrucţiuni . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
6.1. Instrucţiunea expresie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
6.2. Instrucţiunea compusă sau blocul . . . . . . . . . . . . . . . . . . . . 51
6.3. Instrucţiunea condiţională . . . . . . . . . . . . . . . . . . . . . . . . . . 52
6.4. Instrucţiunea while . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
6.5. Instrucţiunea do . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
6.6. Instrucţiunea for . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
6.7. Instrucţiunea switch . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
6.8. Instrucţiunea break . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58
6.9. Instrucţiunea continue . . . . . . . . . . . . . . . . . . . . . . . . . . 58
6.10. Instrucţiunea return . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
6.11. Instrucţiunea vidă . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59

7. Funcţiile şi structura unui program . . . . . . . . . . . . . . . . 60
7.1. Definiţia funcţiilor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
7.2. Apelul funcţiilor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
7.3. Revenirea din funcţii . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .63
7.4. Argumentele funcţiei şi transmiterea parametrilor . . . . . . . 64
7.5. Funcţii cu număr variabil de parametri . . . . . . . . . . . . . . . . 65
7.6. Exemple de funcţii şi programe . . . . . . . . . . . . . . . . . . . . . 66

8. Liniile de control ale compilatorului . . . . . . . . . . . . . . . 70
8.l. Înlocuirea simbolurilor, substituţii macro . . . . . . . . . . . . . . 70
8.2. Includerea fişierelor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72
8.3. Compilarea condiţionată . . . . . . . . . . . . . . . . . . . . . . . . . . . 72
8.4. Utilizarea directivelor de compilare . . . . . . . . . . . . . . . . . . 73

9. Pointeri şi masive . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76
9.1. Pointeri şi adrese . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76
9.2 Pointeri şi argumente de funcţii . . . . . . . . . . . . . . . . . . . . . . 77
9.3. Pointeri şi masive . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78
9.4. Aritmetica de adrese . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80
9.5. Pointeri la caracter şi funcţii . . . . . . . . . . . . . . . . . . . . . . . . 83
9.6. Masive multidimensionale . . . . . . . . . . . . . . . . . . . . . . . . . 86
9.7. Masive de pointeri şi pointeri la pointeri . . . . . . . . . . . . . . 88
9.8. Iniţializarea masivelor şi masivelor de pointeri . . . . . . . . . 93
9.9. Masive de pointeri şi masive multidimensionale . . . . . . . . 96
9.10. Argumentele unei linii de comandă . . . . . . . . . . . . . . . . . 97
9.11. Pointeri la funcţii . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102

10. Structuri şi reuniuni . . . . . . . . . . . . . . . . . . . . . . . . . 106
10.1. Elemente de bază . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106
10.2. Structuri şi funcţii . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108
10.3. Masive de structuri . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110
10.4. Pointeri la structuri . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115
10.5. Structuri auto-referite . . . . . . . . . . . . . . . . . . . . . . . . . . . 117
10.6. Căutare în tabele . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123
10.7. Cîmpuri . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127
10.8. Reuniuni . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129
10.9. Declaraţii de structuri, reuniuni şi cîmpuri . . . . . . . . . . 131
10.10. Typedef . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133

11. Intrări / ieşiri . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136
11.1. Intrări şi ieşiri standard; fişiere . . . . . . . . . . . . . . . . . . . . 136
11.2. Accesul la fişiere; deschidere şi închidere . . . . . . . . . . . 138
11.3. Citire şi scriere fără format . . . . . . . . . . . . . . . . . . . . . . . 141
11.4. Citire cu format . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143
11.5. Scriere cu format . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 147
11.6. Tratarea erorilor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152
11.7. Operaţii cu directoare . . . . . . . . . . . . . . . . . . . . . . . . . . . 154
11.8. Programe demonstrative . . . . . . . . . . . . . . . . . . . . . . . . 156

12. Alte rutine din biblioteca standard . . . . . . . . . . . . . . 160
12.1. Alocarea dinamică a memoriei . . . . . . . . . . . . . . . . . . . . 160
12.2. Sortare şi căutare . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161
12.3. Rutine de clasificare . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162
12.4. Operaţii cu blocuri de memorie . . . . . . . . . . . . . . . . . . . 164
12.5. Operaţii cu şiruri de caractere . . . . . . . . . . . . . . . . . . . . 166
12.6. Biblioteca matematică . . . . . . . . . . . . . . . . . . . . . . . . . . 170
12.7. Programe demonstrative . . . . . . . . . . . . . . . . . . . . . . . . . 173

Bibliografie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 178</p>

Manual de programare C++

Alte Lectii din informatica