Sunteți pe pagina 1din 9

Programarea calculatoarelor 16

3. Descrierea algoritmilor n pseudocod si cu


ajutorul schemelor logice

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



Structura repetitiva ( ciclica ), conditionata anterior

Pseudocod Schema logica

While < conditie >
Bloc
End while






Si




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.

Structura selectiva

Pseudocod Schema logica
case <expr>
c1:
bloc 1;
break;
c2:
bloc 2;
break;

cn:
bloc n;
break;
[default
bloc n+1]
end
Expr.1=c1
Expr.2=c2
Expr.n=cn
Bloc 1
Bloc 2
Bloc n
Bloc n+1
STOP
Da
Da
Da
Nu
Nu
Nu

Descrierea algoritmilor n pseudocod si cu ajutorul schemelor logice

19





Structura repetitiva (ciclica) conditionata posterior

Pseudocod Schema logica

Repeat
Bloc
until <cond>













n plus fata de structurile de control anterioare vom folosi:
Conditie
bloc
Nu
Da

Programarea calculatoarelor 20
Pseudocod
read <var>, ;
write <var>, ;

procedure <np>(<par1>, )
corp
endp

PROGRAM [<np>]
Corp
END


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

Programarea calculatoarelor 24