Documente Academic
Documente Profesional
Documente Cultură
STRUCTURATE
1. Caracteristicile algoritmilor
2. Iterativitate şi recursivitate
3. Reprezentarea algoritmilor
4. Descrierea structurilor fundamentale
5. Structurarea algoritmilor
6. Erorile în algoritmi
7. Proiectarea algoritmilor
8. Verificarea corectitudinii algoritmilor
9. Analiza algoritmilor
3. Reprezentarea algoritmilor –
prin scheme logice
Blocul de început/sfârșit
START STOP
- pentru module:
- pentru subprograme:
Denumire subprogram REVENIRE
Blocul de intrare/ieșire
(citire/scriere date)
- pentru citire, care reprezintă transferul datelor din exteriorul sistemului de calcul în
memoria principală, cu sau fără conversie:
Citește
lista_de_variabile
lista_de_variabile
- pentru scriere, care reprezintă transferul datelor din memoria principală în
exteriorul sistemului de calcul, cu sau fără conversie:
Scrie
lista_de_date
lista_de_date
c 1 c2 … cn = 1
c1 c2 … cn
ci cj = 0, i j; i,j = 1,n
Pentru cazul n =2
NU DA
c
c c
Definiții:
• Schema logică - un graf orientat în care:
a) există un singur bloc START și un singur bloc STOP;
b) orice arc este etichetat cu una din următoarele informații: START sau STOP; o citire sau
o scriere; o atribuire; un predicat, în care caz extremitatea inițială a arcului este
extremitatea inițială a unui bloc de ramificație;
c) orice arc face parte din cel puțin un drum care începe cu blocul START și se termină cu
blocul STOP.
S1 S2
S2 S
• Teorema lui Jacopini: orice schemă logică este echivalentă cu o schemă logică
structurată
În practică se elaborează scheme logice structurate care folosesc mai multe configurații
(structuri) decât cele prezentate, numite structuri fundamentale.
Programarea structurată
-modalitatea de ordonare a activității mentale desfășurată în scopul obținerii de
programe (algoritmi) constituite din structuri fundamentale cu un grad de structurare
cât mai mare și în condițiile minimizării efortului de programare, dar obținerii unui
produs de cea mai bună calitate.
• Structurile fundamentale din programarea structurată:
1. Structura secvențială
2. Structura alternativă simplă
3. Structura pseudoalternativă
4. Structura alternativă multiplă
5. Structura repetitivă condiționată anterior
6. Structura repetitivă condiționată posterior
7. Structura repetitivă cu numărător
3. Reprezentarea algoritmilor - prin
pseudocod
• Cuvinte cheie
Exemple: WHILE-DO, IF-THEN-ELSE
• Instrucțiuni:
• Declarații
• Instrucțiuni executabile
• Comentarii
Exemplu: : /* text */
Instrucțiuni executabile – 1
• Citirea datelor de la tastatură: read listă-de-variabile
Exemple:
read n;
read a,b,c;
read n, (x(i), i=1,n);
read m,n, ((a(i,j), i=1,m), j=1,n)
• Instrucțiunile de ramificare:
• IF-THEN-ELSE
• IF-THEN
• CASE-OF
• Instrucțiunile repetitive:
• WHILE-DO
• DO-UNTIL
• DO-FOR
4. Descrierea structurilor fundamentale
din programarea structurată
Structura secvenţială (liniară)
s2 s1 s2 … sn
Nu Da IF-THEN-ELSE
c
s2 s1 c s1 s2
pseudocod analitic
if c then
s1
IF-THEN-ELSE(c,s1,s2)
else
s2
endif Structură PRIVILEGIATĂ !
Exemple
• Maximul dintre două numere, a și b
if a>b then
max=a
else
max=b
endif
Nu Da IF-THEN
c
s1 c s1
analitic
pseudocod
IF-THEN (c,s1)
if c then
s1
endif
Exemplu
• Dacă a>b atunci să se interschimbe cele două numere
if a>b then
{
aux=a;
a=b;
b=aux
}
endif
Transformarea în structură privilegiată
s.l.s.
analitic
Nu Da
c
IF-THEN (c,s1) =
IF-THEN-ELSE(c,s1, )
s1
pseudocod
case of i
i=v1: s1;
arbore
i=v2: s2;
CASE-OF i ...
i=vn: sn
else s
endcase
s1 s2 ... sn s
Transformarea în structură privilegiată
s.l.s pseudocod
if i=v1 then
NU DA
i=v1 S1
NU DA else
i=v2 s1 if i=v2 then
S2
s2
else
NU DA ....
i=vn if i=vn then
s sn Sn
else
S
endif
........
endif
endif
arbore
IF-THEN-ELSE
i=v1 S1 IF-THEN-ELSE
i=v2 S2 IF-THEN-ELSE
..........................................................
IF-THEN-ELSE
i=vn Sn S
analitic
case-of(i,s1,s2,…,sn,s) = if-then-else(i=v1, s1, if-then-else(i=v2, s2, … if-then-else(i=vn, sn, s))…)
Exemplu
10, x 5;
8, x 0;
Calculul funcției f(x), cu x Z și f ( x)
20, x 2;
2 x 2 , x Z \ 5,0,2;
case of x
x=-5: f = -10;
x=0: f = 8;
x=2: f = 20;
else: f = 2*x*x
endcase
Structurile repetitive
Structura repetitivă condiţionată anterior
s.l.s. arbore
Da WHILE-DO
c
Nu c s
s
analitic
pseudocod WHILE-DO(c,s)
while c do
s
endwhile Structură PRIVILEGIATĂ !
Structura repetitivă condiţionată posterior
s.l.s. arbore
s DO-UNTIL
s c
c Nu
Da
pseudocod analitic
do
s DO-UNTIL(s,c)
until c
Structura repetitivă cu numărător
s.l.s. arbore
DO-FOR(v,vi,vf,vr)
v=vi
Da s
vvf
s
Nu
do for v=vi,vf,vr
v=v+vr pseudocod s
enddo
Observație:
analitic DO-FOR(v,vi,vf,vr,s)
dacă vi≤vf, atunci vr0 (contorul crește)
Observație:
s.l.s.
v=vi