label Cursuri autorenew 2025-09-29, 16:58 history_edu angelina
Limbajul C a fost creat la inceputul anilor '70 de catre Brian W Kernigham si Dennis M Ritchie de la Bell Laboratories New Jersey, fiind initial destinat scrierii unei parti din sistemul de operare Unix. Lucrarea „The C Programming Language” a celor doi autori, aparuta in mai multe versiuni, a ramas cartea de referinta in domeniu, impunind un standard minimal pentru orice implementare.

Caracteristicile distinctive ale limbajului au fost clar definite de la inceput, ele pastrindu-se in toate dezvoltarile ulterioare:– portabilitate maxima;– structurare;– posibilitatea efectuarii operatiilor la nivelul masinii cu pastrarea caracteristicilor unui limbaj evoluat. Acest manual este structurat pe 12 capitole astfel incit elementele limbajului C sa fie prezentate intr-o maniera unitara. Primul capitol face o scurta introducere si prezinta patru programe C. Urmatoarele noua capitole descriu elementele limbajului C.



Capitolele unsprezece si doisprezece trec in revista functiile cele mai des utilizate definite in biblioteca standard, impreuna cu citeva programe demonstrative. Au fost selectate doar functiile definite de mai multe standarde (in primul rind ANSI C), pentru a garanta o portabilitate cit mai mare.Acest manual a fost conceput pentru a servi ca document care sa poata fi consultat de programatori in elaborarea proiectelor, si nu pentru a fi memorat. Manualul nu este o introducere in limbajul C; se presupune ca cititorul este familiarizat cu: concepte de baza referitoare la programare: variabile, instructiuni de atribuire, de control al executiei, apeluri de functii; reprezentarea informatiei in calculator a valorilor intregi, in virgula mobila, a codurilor ASCII; operatii de intrare / iesire.Deoarece avem convingerea ca cea mai buna explicatie este un program functional, majoritatea exemplelor din acest manual se regasesc in fisiere sursa C care pot fi rulate pe orice mediu de programare C si sub orice sistem de operare.

Cuprins1. Generalitati asupra limbajului C . . . . . . . . . . . . . . . . . . . 41.1. Introducere . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41.2. Primele programe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51.3. Meta-limbajul si setul de caractere . . . . . . . . . . . . . . . . . . . . 92. Unitatile lexicale ale limbajului C . . . . . . . . . . . . . . . . 102.1. Identificatori . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102.2. Cuvinte cheie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102.3. Constante . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112.4. Siruri . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142.5. Operatori . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152.6. Separatori . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153. Variabile . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 173.1. Clase de memorie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 173.2. Tipuri de variabile . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 203.3. Obiecte si valori-stinga . . . . . . . . . . . . . . . . . . . . . . . . . . . . 233.4. Conversii de tip . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 234. Operatori si expresii . . . . . . . . . . . . . . . . . . . . . . . . . . . 274.1. Expresii primare . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 274.2. Operatori unari . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 294.3. Operatori multiplicativi . . . . . . . . . . . . . . . . . . . . . . . . . . . 324.4. Operatori aditivi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 334.5. Operatori de deplasare . . . . . . . . . . . . . . . . . . . . . . . . . . . . 334.6. Operatori relationali . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 344.7. Operatori de egalitate . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 354.8. Operatorul SI pe biti . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 354.9. Operatorul SAU-exclusiv pe biti . . . . . . . . . . . . . . . . . . . . 354.10. Operatorul SAU-inclusiv pe biti . . . . . . . . . . . . . . . . . . . . 364.11. Operatorul SI-logic . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 364.12. Operatorul SAU-logic . . . . . . . . . . . . . . . . . . . . . . . . . . . . 374.13. Operatorul conditional . . . . . . . . . . . . . . . . . . . . . . . . . . . 374.14. Operatori de atribuire . . . . . . . . . . . . . . . . . . . . . . . . . . . . 384.15. Operatorul virgula . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 394.16. Precedenta si ordinea de evaluare . . . . . . . . . . . . . . . . . . . 405. Declaratii . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 425.1. Specificatori de clasa de memorie . . . . . . . . . . . . . . . . . . . 435.2. Specificatori de tip . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 445.3. Declaratori . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 455.4. Modificatorul const . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 475.5. Initializare . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 485.6. Nume-tip . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 496. Instructiuni . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 516.1. Instructiunea expresie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 516.2. Instructiunea compusa sau blocul . . . . . . . . . . . . . . . . . . . . 516.3. Instructiunea conditionala . . . . . . . . . . . . . . . . . . . . . . . . . . 526.4. Instructiunea while . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 546.5. Instructiunea do . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 546.6. Instructiunea for . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 556.7. Instructiunea switch . . . . . . . . . . . . . . . . . . . . . . . . . . . . 566.8. Instructiunea break . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 586.9. Instructiunea continue . . . . . . . . . . . . . . . . . . . . . . . . . . 586.10. Instructiunea return . . . . . . . . . . . . . . . . . . . . . . . . . . . 596.11. Instructiunea vida . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 597. Functiile si structura unui program . . . . . . . . . . . . . . . . 607.1. Definitia functiilor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 607.2. Apelul functiilor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 637.3. Revenirea din functii . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .637.4. Argumentele functiei si transmiterea parametrilor . . . . . . . 647.5. Functii cu numar variabil de parametri . . . . . . . . . . . . . . . . 657.6. Exemple de functii si programe . . . . . . . . . . . . . . . . . . . . . 668. Liniile de control ale compilatorului . . . . . . . . . . . . . . . 708.l. inlocuirea simbolurilor, substitutii macro . . . . . . . . . . . . . . 708.2. Includerea fisierelor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 728.3. Compilarea conditionata . . . . . . . . . . . . . . . . . . . . . . . . . . . 728.4. Utilizarea directivelor de compilare . . . . . . . . . . . . . . . . . . 739. Pointeri si masive . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 769.1. Pointeri si adrese . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 769.2 Pointeri si argumente de functii . . . . . . . . . . . . . . . . . . . . . . 779.3. Pointeri si masive . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 789.4. Aritmetica de adrese . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 809.5. Pointeri la caracter si functii . . . . . . . . . . . . . . . . . . . . . . . . 839.6. Masive multidimensionale . . . . . . . . . . . . . . . . . . . . . . . . . 869.7. Masive de pointeri si pointeri la pointeri . . . . . . . . . . . . . . 889.8. Initializarea masivelor si masivelor de pointeri . . . . . . . . . 939.9. Masive de pointeri si masive multidimensionale . . . . . . . . 969.10. Argumentele unei linii de comanda . . . . . . . . . . . . . . . . . 979.11. Pointeri la functii . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10210. Structuri si reuniuni . . . . . . . . . . . . . . . . . . . . . . . . . 10610.1. Elemente de baza . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10610.2. Structuri si functii . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10810.3. Masive de structuri . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11010.4. Pointeri la structuri . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11510.5. Structuri auto-referite . . . . . . . . . . . . . . . . . . . . . . . . . . . 11710.6. Cautare in tabele . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12310.7. Cimpuri . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12710.8. Reuniuni . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12910.9. Declaratii de structuri, reuniuni si cimpuri . . . . . . . . . . 13110.10. Typedef . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13311. Intrari / iesiri . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13611.1. Intrari si iesiri standard; fisiere . . . . . . . . . . . . . . . . . . . . 13611.2. Accesul la fisiere; deschidere si inchidere . . . . . . . . . . . 13811.3. Citire si scriere fara format . . . . . . . . . . . . . . . . . . . . . . . 14111.4. Citire cu format . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14311.5. Scriere cu format . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14711.6. Tratarea erorilor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15211.7. Operatii cu directoare . . . . . . . . . . . . . . . . . . . . . . . . . . . 15411.8. Programe demonstrative . . . . . . . . . . . . . . . . . . . . . . . . 15612. Alte rutine din biblioteca standard . . . . . . . . . . . . . . 16012.1. Alocarea dinamica a memoriei . . . . . . . . . . . . . . . . . . . . 16012.2. Sortare si cautare . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16112.3. Rutine de clasificare . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16212.4. Operatii cu blocuri de memorie . . . . . . . . . . . . . . . . . . . 16412.5. Operatii cu siruri de caractere . . . . . . . . . . . . . . . . . . . . 16612.6. Biblioteca matematica . . . . . . . . . . . . . . . . . . . . . . . . . . 17012.7. Programe demonstrative . . . . . . . . . . . . . . . . . . . . . . . . . 173Bibliografie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 178