Sunteți pe pagina 1din 16

.

Fundamentele programrii Curs 4


ef lucr.dr.ing. GENGE Bla Universitatea Petru Maior, Departamentul de Informatic Trgu Mure, Romnia bela.genge@ing.upm.ro

..

. ..

. ..

. . . . . . . . . . . . .. .. .. .. .. .. .. .. .. .. .. .. ..

. ..

. ..

. ..

. ..

ef lucr.dr.ing. GENGE Bla

Fundamentele programrii

. Algoritmi i scheme logice

Ciclul de via a unui program (sau a unui sistem n general) urmeaz n general urmtoarele faze:
Analiza problemei Proiectarea algoritmului (intrri, ieiri, secvena pailor) Implementarea algoritmului Vericarea corectitudinii implementrii Testare, mentenan

..

. ..

. ..

. . . . . . . . . . . . .. .. .. .. .. .. .. .. .. .. .. .. ..

. ..

. ..

. ..

. ..

ef lucr.dr.ing. GENGE Bla

Fundamentele programrii

. Descrierea algoritmilor

Algoritmii pot descrii prin intermediul:


Limbajului natural Pseudocodului Schemelor logice

..

. ..

. ..

. . . . . . . . . . . . .. .. .. .. .. .. .. .. .. .. .. .. ..

. ..

. ..

. ..

. ..

ef lucr.dr.ing. GENGE Bla

Fundamentele programrii

. Elementele unei scheme logice


Blocul de nceput/sfrit Blocul de instruciune, e.g., atribuire, incrementare Blocul de decizie, e.g., if Blocul de citire/scriere Elementul de legtur ntre blocuri

..

. ..

. ..

. . . . . . . . . . . . .. .. .. .. .. .. .. .. .. .. .. .. ..

. ..

. ..

. ..

. ..

ef lucr.dr.ing. GENGE Bla

Fundamentele programrii

. Exemplu - min/max dou numere


Se citesc dou numere de la tastatur. S se determine maximul dintre ele.

..

. ..

. ..

. . . . . . . . . . . . .. .. .. .. .. .. .. .. .. .. .. .. ..

. ..

. ..

. ..

. ..

ef lucr.dr.ing. GENGE Bla

Fundamentele programrii

. Exemplu - min/max dou numere


Se citesc dou numere de la tastatur. S se determine maximul dintre ele.

..

. ..

. ..

. . . . . . . . . . . . .. .. .. .. .. .. .. .. .. .. .. .. ..

. ..

. ..

. ..

. ..

ef lucr.dr.ing. GENGE Bla

Fundamentele programrii

. Cicluri
Cicluri cu test iniial Cicluri cu test nal Exemplu: aarea numerelor de la 1 la n (citit de la tastatur)

..

. ..

. ..

. . . . . . . . . . . . .. .. .. .. .. .. .. .. .. .. .. .. ..

. ..

. ..

. ..

. ..

ef lucr.dr.ing. GENGE Bla

Fundamentele programrii

. Cicluri
Cicluri cu test iniial Cicluri cu test nal Exemplu: aarea numerelor de la 1 la n (citit de la tastatur)

..

. ..

. ..

. . . . . . . . . . . . .. .. .. .. .. .. .. .. .. .. .. .. ..

. ..

. ..

. ..

. ..

ef lucr.dr.ing. GENGE Bla

Fundamentele programrii

. Exerciii

S se traseze schema logic i s se implementeze un program C care determin valoarea unei funcii f denit astfel: x>0 x, 2x, x<0 f(x) = 1, x=0

..

. ..

. ..

. . . . . . . . . . . . .. .. .. .. .. .. .. .. .. .. .. .. ..

. ..

. ..

. ..

. ..

ef lucr.dr.ing. GENGE Bla

Fundamentele programrii

. Exerciii

Ex. 1: S se traseze schema logic pentru un program ce determin toate numerele pare de la 1 la n (citit de la tastatur) Ex. 2: S se traseze schema logic pentru un program ce aeaz toate literele alfabetului (minuscule)

..

. ..

. ..

. . . . . . . . . . . . .. .. .. .. .. .. .. .. .. .. .. .. ..

. ..

. ..

. ..

. ..

ef lucr.dr.ing. GENGE Bla

Fundamentele programrii

. Exerciii

Ex. 1: S se traseze schema logic pentru un program ce determin toate numerele pare de la 1 la n (citit de la tastatur) Ex. 2: S se traseze schema logic pentru un program ce aeaz toate literele alfabetului (minuscule)

..

. ..

. ..

. . . . . . . . . . . . .. .. .. .. .. .. .. .. .. .. .. .. ..

. ..

. ..

. ..

. ..

ef lucr.dr.ing. GENGE Bla

Fundamentele programrii

. Instruciuni de decizie multipl


Reprezint o generalizare a instruciunii de decizie simpl Modul de execuie este urmtorul:
Se evalueaz expresia Se compar pe rnd val. expr cu val_1, ... Dac val. expr coincide cu una din valori, atunci se execut secv. Dac secv. e terminat cu break, atunci se trece la instr. urmtoare dup switch. Altfel, se execut secvena urmtoare. Dac val. expr. nu coincide cu nici o valoare se execut secv. default.

switch(expr) { case val_1: secventa_1; [break;] case val_2: secventa_2; [break;] ... case val_n: secventa_n; [break;] [default: secventa] }
ef lucr.dr.ing. GENGE Bla Fundamentele programrii

..

. ..

. ..

. . . . . . . . . . . . .. .. .. .. .. .. .. .. .. .. .. .. ..

. ..

. ..

. ..

. ..

. Exemplu
S se determine dac un caracter citit de la tastatur este o vocal (alfabetul Englezesc) . Exemplu de cod . scanf("%c", &c); switch(toupper(c)) { case 'A': case 'E': case 'I': case 'O': case 'U': printf("Caracterul este o vocal\n"); break; default: printf("Caracterul este o consoan\n"); } .
.. . .. . .. .

. . . . . . . . . . . . .. .. .. .. .. .. .. .. .. .. .. .. ..

. ..

. ..

. ..

. ..

ef lucr.dr.ing. GENGE Bla

Fundamentele programrii

. Exemple - care este corect (pentru aceeai problem)?


. Exemplu 1 . switch(toupper(c)){ case 'A': break; case 'E': break; case 'I': break; case 'O': break; case 'U': printf("Caracterul este o vocal\n"); break;} . . Exemplu 2 . switch(toupper(c)){ case 'A': printf("Caracterul case 'E': printf("Caracterul case 'I': printf("Caracterul case 'O': printf("Caracterul case 'U': printf("Caracterul .
ef lucr.dr.ing. GENGE Bla

este este este este este

o o o o o

vocal\n"); vocal\n"); vocal\n"); vocal\n"); vocal\n");


.. . .. . .. .

. . . . . . . . . . . . .. .. .. .. .. .. .. .. .. .. .. .. ..

break; break; break; break; break;}

. ..

. ..

. ..

. ..

Fundamentele programrii

. Exemple - este corect?

. Exemplu . switch(toupper(c)){ case 'A'==c&&'E'==c: case 'I'==c&&'O'==c: case 'U': printf("Caracterul este o vocal\n"); break;} .

..

. ..

. ..

. . . . . . . . . . . . .. .. .. .. .. .. .. .. .. .. .. .. ..

. ..

. ..

. ..

. ..

ef lucr.dr.ing. GENGE Bla

Fundamentele programrii

. Exerciiu

S se implementeze secvena de cod ce veric dac un caracter citit de la tastatur este:


Cifr Vocal Semn de punctuaie

ntr-o prim faz se va construi schema logic. Implementarea se va realiza att cu if ct i cu switch.

..

. ..

. ..

. . . . . . . . . . . . .. .. .. .. .. .. .. .. .. .. .. .. ..

. ..

. ..

. ..

. ..

ef lucr.dr.ing. GENGE Bla

Fundamentele programrii