Ordinea n care se face nlantuirea pasilor unui algoritm defineste asa numita structura de control a algoritmului. Cea mai simpla structura de control este structura secventiala. O astfel de structura de control se compune din pasi care se nlantuie unul dupa altul, n ordinea n care apar n algoritm. Aceasta structura o vom numi bloc. Structura secventiala
Pseudocod Schema logica
Begin Pas 1; Pas 2; . Pas n;
End
Daca n = 1 nu se pune begin end . De obicei la descrierea unui proces de calcul este nevoie sa se utilizeze si alte tipuri de structuri. Astfel , C . Bohn si G.Jacopini au aratat ca pentru exprimarea proceselor de calcul sunt suficiente trei structuri de control si anume: - structura secventiala; - structura alternativa ; - structura repetitiva (ciclica), conditionata anterior. Structura alternativa Pseudocod Schema logica
< conditie > then Bloc 1; Pas 1 Pas 2 Pas n
Cond 1 Cond 2 Bloc n Bloc 2 Bloc 1 Stop Da Nu Nu Da
Descrierea algoritmilor n pseudocod si cu ajutorul schemelor logice
17 [ else if < conditie 2 > then bloc 2; ..] [ else bloc n; ] endif
For < expresie 1 >;<expresie 2> ; <expresie 3>; Bloc End for
Conditie bloc Stop Nu Da
Expr. Exp 2 Expr. Stop Da Nu
Programarea calculatoarelor 18
Acest rezultat s-a aflat la baza ideii care a condus n anii '70 la conceptul de programare structurata. Acest concept a fost dezvoltat de E. W. Dijkstra n lucrarile sale, iar ulterior si de alti specialisti, ca de exemplu N. Wirth si C. A. R. Noare. El reprezinta un stil de programare care se impune si n prezent. Un efect imediat al programarii structurate este ridicarea productivitatii n programare si cresterea fiabilitatii programelor. Prin algoritm structural ntelegem un algoritm care are o structura de control realizata cu ajutorul celor trei structuri amintite mai sus. Ulterior s-au admis nca doua structuri, si anume: - stuctura selectiva - structura repetitiva (ciclica) conditionata posterior. Introducerea acestor structuri permite o flexibilitate mai mare n programare. n acest fel, programarea structurata reprezinta un stil de programare care contribuie la realizarea de programe care au o structura clara si care pot fi usor depanate si ntretinute.
n plus mai introducem instructiuni nestructurate: Stop goto <etich>
De asemenea vom folosi operatorii: = atribuire (var=val;) +, -, *, /, mod, b p
>, <, ==, !=, , and, or, not
Exemplul 3 Se cere: Sa se descrie un algoritm care citeste un ntreg n, calculeaza si afiseaza n! Rezolvare: START [<np>] corp STOP
<np>(<par 1>, corp <var>, <var>, STOP
Descrierea algoritmilor n pseudocod si cu ajutorul schemelor logice
21 Avem n!=1, daca n=0 si n!=1*2*3**(n-1)*n, daca n>0, n170. Acest calcul implica un proces ciclic.
n pseudocod: PROGRAM factorial write "Introduceti valoarea lui n:" read n; if n<0 or n>170 then write "Nu apartine intervalului [0, 170] else f=1.0; i=2; while in f=f*i; i=i+1; endw write "n=", n, "f=", f; endif END Cu scheme logice:
START factorial Introduce ti valoarea lui n n n<0 or n>170 f=1.0 i=2 i
n f= f*i i=i+1 n=; n f=; f Stop STOP Nu apar tin intervalului [0,170] Da Nu Programarea calculatoarelor 22
Exemplul 2 Sa se descrie un algoritm care citeste valoarea lui x, calculeaza si afiseaza valoarea functiei f, definita prin f(x) = 4x 3 +3x 2 -2x+1, pt. x<0 f(x) = 100, pt. x=0 f(x) = 2x 2 +8x-1, pt. x>0. Rezolvare: n pseudocod: PROGRAM write "x="; read x; if x<0 then f=4x 3 +3x 2 -2x+1; elseif x==0 then f=100; else f=2x 2 +8x-1; elseif write "f=", f; END Cu scheme logice:
START X= X X<0 X==0 f=100 f=;f STOP f=2X + 8X - 1 f=4X + 3X- 2X+1 Da Da Nu Nu
Descrierea algoritmilor n pseudocod si cu ajutorul schemelor logice
23
Exemplul 1: Sa se descrie un algoritm care citeste valorile variabilelor a, b, c, d, x si afiseaza valoarea expresiei: d bx ax c bx ax E + + + + = 3 2 , daca numitorul este diferit de zero, si zero n caz contrar: Rezolvare: n pseudocod: PROGRAM read a, b, c, d, x; if ax 3 +bx+d != 0 then E=(ax 2 +bx+c)/(ax 3 +bx+d); else E=0; endif END
Cu scheme logice:
START a,b,c,d,x ax+bx+d=0 E=0 ax + bx + c E= a x + bx + d 0E=;E0 STOP Da Nu