of 26 /26
Programarea Calculatoarelor Curs 1 Vlad Posea [email protected]

Programarea calculatoarelor - Limbajul C

Embed Size (px)

DESCRIPTION

Programarea calculatoarelor, cursul 1

Text of Programarea calculatoarelor - Limbajul C

2. Obiective si continut curs Ciclul de dezvoltare a programului; Compilarea, legarea i execuia programelor C; Elemente fundamentale ale limbajului C: identificatori, cuvinte cheie, literali, comentarii, constante; Structura programelor C; Tipuri de date. Operatori. Expresii Instruciuni: expresie, compus, void, atribuirea, decizia (if), selecia (switch), cicluri (while, do while, for), continue, salturi disciplinate (break, return) i nedisciplinate (goto). Funcii: apel, definire, transfer prin valoare, vizibilitate Tablouri: declarare, tablouri uni si multidimensionale, sortare, cautare Pointeri: declarare si iniializare, adresare i derefereniere, aritmetica pointerilor, funcii care returneaz pointeri 3. Obiective i coninut curs iruri de caractere Alocarea dinamic a memoriei: Gestiunea memoriei libere (heap), malloc(), calloc(), realloc(), free(). Pointeri la pointeri. Tablouri de pointeri. Alocare dinamic pentru tablouri multidimensionale. Structuri: Declarare i initializare; Accesul la membrii; pointeri la structuri. Tablouri de structuri. Atribuirea structurilor. Structuri i funcii. Uniuni, Cmpuri de bii. Funcii: transfer prin referin, Pointeri la funcii. Fiiere: I/O, Fiiere text i fiiere binare. Funcii specifice lucrului cu fiiere Parametrii liniei de comand Realizarea de programe complexe: Crearea de librarii statice; Vizibilitatea variabilelor. Funcii cu numr variabil de parametri 4. Bibliografie The C Programming Language - Brian Kernighan and Dennis Ritchie (http://zanasi.chem.unisa.it/download/C.pdf) 5. Linkuri utile http://cs.curs.pub.ro site-ul de cursuri al facultii (forum, alte resurse, teme) http://ocw.cs.pub.ro/courses/programare laboratoare + regulament + alte info utile http://talentbuddy.co instrument util pentru a exersa probleme de programare 6. Exemplu talentbuddy 7. Notare Laborator 2p Parial 2p Teme de cas 2p Examen final 4p Bonus 0.5p pentru primii 10 din serie pe talentbuddy (nu se ia in calcul la conditiile de trecere) Condiii de trecere Laborator+parial+teme de cas>=3p Examen >=2p 8. De ce C?http://tiobe.com 9. Caracteristici C Dezvoltat intre 1969-1973 Programare imperativ Programul = secven de instruciuni executat de calculatorUtilizat pentru a dezvolta sisteme de operare i aplicaii embedded Influeneaz/st la baza majoritatea limbajelor moderne: Java, C#, Javascript, Objective-C, C++ 10. Etapele rezolvrii unei probleme Analiza i prelucrarea datelor de intrare A good programmer is someone who always looks both ways before crossing a one-way street. Identificm eventualele cazuri speciale ale datelor de intrare i le tratm separat Ex1: se cere s se citeasc numere ->ne asigurm c sau citit numere i nu alte caractere Ex2: se cere s se calculeze raportul a 2 numere -> ne asigurm c numitorul este diferit de 0Prelucrri necesare (algoritm de rezolvare) Prezentarea rezultatelor 11. Pseudocod Descriere informal a unui algoritm/program Exemplu: Program care afieaz maximul a 2 numere Se citesc 2 numere intregi a,b Dac a este mai mare sau egal cu b Altfel Afieaz a Afieaz bDup ce elaborm pseudocodul l scriem n limbajul de programare preferat (C) 12. Prezentarea rezultatelor Rezultatele trebuie s fie inteligibile pentru utilizatorAa nu Aa daDatele cerute de la utilizator trebuie s fie clare Eventualele mesaje de eroare trebuie s fie clare 13. Compilarea i execuia programelor C Editare fisier surs Compilare fiier surs Generarea unui fiier obiect gcc c nume_sursa.c => nume_sursa.ogcc nume_sursa.c o nume_executabil alteOptiuni => nume_executabil Link-editare se genereaz fiierul executabil pe baza unuia sau mai multe fiiere obiect 14. Structura unui program C /* comentarii */ //When I wrote this, only God and I understood what I was doing //Now, God only knows /* includere fisiere antet (biblioteci) */ #include /* definitii si declaraii globale*/ int maxim(int a, int b); int main() { /* definiii i declaraii locale */ /* secven instruciuni */ return 0; /* finalizarea execuiei + ntoarcere rezultat*/ } 15. Hello world /* includem biblioteca standard I/O */ #include /* functia main intoarce un rezultat intreg */ int main() { printf(Hello world!n); return 0; }{acelasi program in pascal} Program HelloWorld(output); begin writeln('Hello, world!'); end. 16. Sintaxa C elemente de baz Limbaj case-sensitive Printf(hello world) nu este acelai lucru cu printf(hello world)Cuvintele cheie se scriu cu litere mici Identificatorii pot conine litere, cifre, underscore (_), nu pot incepe cu cifr Comentarii: // comentariu pe o singura linie /* comentariu care se poate ntinde pe mai multe linii*/ 17. Variabile Def: un mod de a referi o locaie de memorie utilizat ntr-un limbaj de programare http://cplus.about.com/od/introductiontoprogr amming/g/variabledefn.htm Pentru a lucra cu mai multe date trebuie s le reinem n memoria calculatorului Variabilele sunt folosite pentru a regsi locul unde am scris datele n memorie Variabile simple: au o singur valoare la un moment dat 18. Variabile (2) Caracterizate de Nume identificatorul variabilei Tip tipul variabilei Valoare AdresaEx: int x=5; int= tipul variabilei x=numele variabilei 5=valoarea variabilei &x = adresa din memorie unde se afl stocat valoarea variabilei cu numele x. 19. Tipuri de date simple 20. Tipuri de date simple (2) C vs. Pascalnr bytes pentru fiecare tip de date operatorul sizeofC short int longPascalintegerfloat doublerealcharcharint /* C has no boolean type */boolean 21. Input/Output (I/O) /*discutate oarecum mai devreme intrucat sunt necesare la laborator*/ int printf ( const char * format, ... ); parametri: sir de caractere ce poate conine descriptori de format expresiidescriptor de format: %[flags][width][.precision][length]specifier http://www.cplusplus.com/reference/cstdio/printf/ 22. specifier d or i u oOutput Signed decimal integer Unsigned decimal integer Unsigned octalExample 392 7235 610xUnsigned hexadecimal integer7faI/O (2)X f e E g G c s pn%Unsigned hexadecimal integer (uppercase) Decimal floating point, lowercase Scientific notation (mantissa/exponent), lowercase Scientific notation (mantissa/exponent), uppercase Use the shortest representation: %e or %f Use the shortest representation: %E or %F Character String of characters Pointer address Nothing printed. The corresponding argument must be a pointer to a signed int. The number of characters written so far is stored in the pointed location. A % followed by another % character will write a single % to the stream.7FA 392.65 3.9265e+2 3.9265E+2 392.65 392.65 a sample b8000000% 23. exemple printfsecvente escape (caractere speciale) 24. scanf int scanf ( const char * format, ... ); http://www.cplusplus.com/reference/cstdio/sc anf/ similar cu printf se transmite ca parametru adresa variabilei citite intoarce ca rezultat numrul de valori citite cu succes citete ntr-un buffer stdin. 25. exemple scanf citirea a 2 numere intregi 26. exemple scanf (2) citirea a 2 numere intregi cu tratarea erorilor