Sunteți pe pagina 1din 19

ALGORITMI

1. ALGORITM: DEFINIIE, REPREZENTARE, CLASIFICARE.

1.1 Definiie:
DEF . Prin algoritm vom nelege o metod de rezolvare a problemelor de un
anumit tip . Algoritmul este o succesiune finit de operaii cunoscute , care
se execut ntr-o ordine stabilit astfel nct plecnd de la un set de date (
numite datele problemei sau date de intrare = D.I. ) ce mdeplinesc
anumite condiii , s obinem ntr-un interval de timp finit un set de valori (
numite soluiile problemei sau date de ieire = D.E. ) .
Nu orice descriere pas cu pas a etapelor rezolvrii unei probleme
reprezint un algoritm . Pentru a fi algoritm , o metod de rezolvare a unei
probleme trebuie s aib trei proprieti :
generalitate ( universalitatea ) - un algoritm ofer o metod general de
rezolvare a unui anumit tip de probleme ;
finitudine orice algoritm se ncheie ntr-un timp dup un numr finit
de pai ;
unicitatea - pentru aceleai date de intrare se obin totdeauna aceleai
date de ieere.
Reprezentarea Algoritmilor
Una din cele mai rspndite metode de reprezentare a algoritmilor
este o metod de reprezentare grafic : metoda SCHEMELOR LOGICE .
Simbolurile grafice folosite sunt :
1. Blocurile terminale - pun n eviden nceputul respectiv sfritul unui
algoritm .

2. Bloc de intrare/ieire- pune n eviden D.I. , respectiv D.E. ale


algoritmului .

3. Bloc de calcul - pune n eviden operaiile aritmetice i transferul de


valori ntre diferite date ale algoritmului .
Bloc de procedur

4. Bloc de decizie pune n eviden puncte de ramificaie ale algoritmului


. n interiorul blocului se scrie o condiie i n funcie de ndeplinirea sau
nendeplinirea acesteia se va continua pe ramura cu da,, sau pe ramura
cu nu,,.

da C nu

1
5. Conector- arat punctele de intersecie dintre ramurile unui algoritm .
6. Sgeata indic un drum posibil de urmat n schema logic .

Exemplu : Algoritmul i schema logic pentru suma a dou numere i


aflarea minimului i maximului a dou numere .

D.I. a , b
START
D.E. S
START
Algoritm :
Pas0 : START SCRIE a,b
Pas1 : Se scriu a , b .
Pas2 : Calculm S : = a + b .
Pas3 : Afim rezultatul , S . S=a+b
Pas4 : STOP .
Afieaz
S

STOP

Obs. Alctuirea algoritmului precede n mod obligatoriu scrierea


programului de calcul.
1.2 Etapele alctuirii algoritmului de rezolvare a unei probleme
Pentru o alctuire corect ma algoritmului de rezolvare a unei probleme este
necesar s se parcurg urmtoarele etape:
- nelegerea textului problemei;
- precizarea mrimilor (datelor) care sunt cunoscute (date iniiale sau
date de intrare);
- precizarea mrimilor cerute,a cror valoare se calculeaz (date de
ieire);
- stabilirea relaiei(lor) de calcul pentru fiecare mrime cutat,eventual
i pentru mrimi intermediare(modelul matematic);
- alegerea identificatorului(numelui) pentru fiecare variabil care
intervine n modelul matematic;
- reprezentarea algoritmului (pseudocod i organigram);
- verificarea algoritmului prin parcurgerea tabelului de verificare i
compararea rezultatelor cu valorile obinute prin rezolvarea direct a problemei.

2
1.3 Reprezentarea algoritmilor
Modalitile de codificare a algoritmilor sunt diverse. Cele mai folosite
dintre acestea sunt:pseudocodul i schema logic.
a. Pseudocodul este o reprezentare semantic a operaiilor. Aceast
form este cea mai apropiat de programul de calcul.
b. Schema logic (organigrama) este reprezentarea algoritmului sub
forma unei succesiuni de simboluri grafice interconectate.Fiecare operaie este
indicat printr-un simbol grafic distinct.
Facem observaia c operaia de codificare a algoritmilor nu este nc
complet standardizat. De aceea n unele cri s-ar putea gsi alte variante dect
acelea folosite n cadrul acestui referat.

1.4 Clasificarea algoritmilor


Organizarea unui algoritm este determinat de: problema de rezolvat,
modelul matematic ales, limbajul de programare folosit pentru implementare.
Cea mai utilizat form de alctuire este aceea a evidenierii n cadrul
algoritmului numai a unor blocuri de operaii tip. Aceste se numesc structuri
fundamentale (tip)i sunt:
- structura secvenial;
- structura de decizie;
- structura repetitiv (cu cele trei variante: contorizare, test anterior,
test posterior ).
Algoritmii organizai numai sub forma structurilor tip interconectate se
numesc algoritmi structurai. Deoarece n toate limbajele de programare exist
instruciuni care codific direct structurile tip menionate mai sus, n prezent
pentru alctuirea programelor de calcul se folosesc numai algoritmi structurai.

2. CODIFICAREA ALGORITMILOR
2.1. Structura secvenial include operaiile de:
- citirea date de intrare;
- calculul valorii unei/unor expresii i atribuirea valorii unei/unor
variabile;
- afiarea rezultatelor;

3
n figura 1 se indic reprezentarea unui algoritm secvenial sub forma de
pseudocod (1.a) i schem logic (1.b)

Reprezentarea unui algoritm secvenial


Ex. 1.S-a depus la o banc suma de b lei pe termen de 6 luni. Cunoscnd
c dobnda anual oferit de banc este de 23%, s se determine suma aflat n
cont la sfritul termenului de depunere.
Etapele rezolvrii problemei
a) Definirea datelor de intrare/ieire
Date de intrare :
- suma iniial de bani b [n lei]
- dobnda anual db=23%
- termenul de depunere n=6 luni
Date de ieire:
- Suma final n cont bf [n mii lei]
b) Modelul matematic
23
- dobnda lunar dl %
12
dl dl
- suma n cont dup prima lun s1 b b b 1
100 100
- suma final dup n luni este obinut din relaia anterioar,
n
1 dl
considernd creterea lunar a valorii aflate n cont bf b1
1000 100
Tem S se demonstreze formula de calcul a lui bf.
c) Reprezentarea algoritmului:

4
Codificarea algoritmului sub form de program de calcul i execuia
programului vor fi prezentate n lucrarea de laborator nr. 4
Observaii
1. Se observ c n etapele a i b se aleg identificatorii mrimilor cu
care se opereaz n rezolvarea problemei(b,db,n).
2. Este de dorit ca aceste nume s fie scrise numai cu litere mici.
3. n etapele a, b se precizeaz care sunt mrimile cu care opereaz
programul:
- datele iniiale(b,db,n)
- datele finale(bf)
- datele intermediare, dac este necesar(dl,s1)
De asemenea se precizeaz care sunt mrimile :
- constante
- variabile
Constantele pot fi introduse direct prin valorile lor(12,100,etc)sau
printr-un identificator propriu(db=23).
Variabilele se definesc i se folosesc n alctuirea expresiilor de
calcul numai prin intermediul identificatorilor(b,n,dl).
4. Alegerea valorilor datelor iniiale i alctuirea expresiilor de
calcul implic i precizarea unitilor de msur.
5. Se observ c alctuirea algoritmului este condiionat n primul
rnd de posibilitatea alctuirii unor relaii de calcul pentru mrimile care
se determin (variabile intermediare sau de ieire)

Ex. 2.
Fie z1=a1+b1i, z2=a2+b2i dou numere complexe. Se cere s se calculeze
z=z1*z2.
Etapele rezolvrii problemei
a) Definirea datelor de intrare/ieire
Date de intrare :
- a1,b1,a2,b2

5
Date de ieire:
- Rezultatul operatiei matematice z=z1*z2
b) Modelul matematic
z1=a1+b1i, z2=a2+b2i
z=z1*z2=zre+zimi Forma general a unui numr complex. Prin nmulirea
a dou numere complexe se obine tot un numr
complex.
z=z1*z2=(a1+b1i)*(a2+b2i)=a1a2+a1b2i+a2b1i+b1b2i*i=a1a2+a1b2i+a2b1i-b1b2=
(a1a2- b1b2)+(a1b2 + a2b1)i
Identificm,
zre=a1a2- b1b2
zim= a1b2 + a2b1
c) Reprezentarea algoritmului:
Mai nti se aleg variabilele pentru fiecare data (de intrare, ieire sau auxiliar):
Date Identificatori de
variabile corespunztori
a1 a1
b1 b1
a2 a2
b2 b2
zre zre
zim zim

6
d) Tabel de verificare:

Instruciuni Pas
Citete a1,b1,a2,b2 a1=2 b1=1 a2=5,b2=-1
Afieaz a1,b1,a2,b2 2 1 5 -1
zre=a1a2-b1b2 zre=2*5-1*(-1)=11
zim=a1b2+ a2b1 zim=2*(-1)+5*1=-2+5=3
Afieaz zre+izim 11+i3
STOP STOP

Observaii

1. Se observ c n etapele a i b se aleg identificatorii mrimilor cu


care se opereaz n rezolvarea problemei(a1,b1,a2,b2,zre,zim...).
2. Este de dorit ca aceste nume s fie scrise numai cu litere mici. Se
observ c n reprezentarea algoritmului nu s-au folosit indici pentru
variabile(cu ar fi a1,b1,a2,b2,zre,zim). Motivul este c n programarea reala
n orice limbaj (C, Pascal, ADA, Prolog, etc), nu se pot folosi indici
pentru variabile. Ca atare este recomandat ca i n alctuirea
algoritmilor(scheme logice, pseudocod) s nu se foloseasc astfel de
notaii pentru a nu crea confuzii cnd se vor scrie programele, mai ales de
ctre nceptori.
3. n etapele a, b se precizeaz care sunt mrimile cu care opereaz
programul:
- datele iniiale(a1,b1,a2,b2)
- datele finale(zre,zim)
4. Se observ ca la afiarea rezultatului se scrie +i. Pentru
calculator i nu exist(nu se poate face radical dintr-un numr negativ).
Textul dintre ghilimele va fi afisat pe ecran exact asa cum a fost scris.
Presupunnd ca zre=4 si zim=2 pe ecran va aprea mesajul:
4+i2
5. Concluzie : variabilele care primesc valori nu se afiseaz ntre
ghilimele, pe cnd mesajele care se doresc a fi afiate pe ecran se scriu
ntre ghilimele.

7
2.2 Structura de decizie (se mai numete i structur alternativ sau
structur ramificat) introduce n algoritm operaia de ramificare, adic
evaluarea unei condiii (notat test n cele ce urmeaz), stabilirea valorii
adevrat sau fals a acesteia i adoptarea unei decizii privind modul n care se
continu calculele.
Definirea structurii instruciunii de decizie:
n fig.2 este prezentat reprezentarea unei structuri de decizie care se
bazeaz pe verificarea condiiei test ? n pseudocod (2.a), respectiv schem
logic(2.b)

1.a pseudocod 2.b schem logic


Fig. 2

Structura instruciunii de decizie:


Structura obligatorie a secvenei de decizie este:
- o condiie notat test ?
- dou subblocuri de instruciuni (notate aciune 1 , aciune 2) a cror
interpretare este decis de valoarea logic a condiiei DA/NU; (adevrat/fals;
true/false). Niciodat nu se pot interpreta i executa ambele subblocuri.
Condiia de test poate fi o expresie :
- relaional (x>4) ; (x<=-7) ;
- logic ((x>= -1) and (x<1)) ; ((x<-1) or (x>=1)) .
Expresiile logice includ :operatori relaionali (<,>,>=,<=,=,) i/sau
operatori logici : intersecia (produs logic, and, i) ; reuniunea (suma logic, or,
sau) respectiv negarea logic( not ).

Interpretarea instruciunii de decizie:


Interpretarea structurii ramificate presupune efectuarea urmtoarelor operaii :
- evaluarea condiiei de decizie (test?);
- executarea subblocului de instruciuni corespunztoare valorii logice
obinute n urma evalurii testului (aciune 1 sau aciune 2);
- continuarea algoritmului cu instruciunea imediat urmtoare structurii de
selecie, respectiv aciune 3.

8
Instruciunea de ramificare poate avea i urmtoarele variante de
alctuire:
- subblocurile de instruciuni pot conine i numai o singur instruciune;
- se neglijeaz subblocul de instruciuni corespunztor ramurii neselectate;
- exist posibilitatea ca secvena de decizie s fie alctuit dintr-un singur
subbloc de instruciuni (fig. 3 unde lipsete subblocul aciune 2).

3.a pseudocod 3.b schem logic


Fig. 3

Ex. 3.
S se rezolve ecuaia de gradul I (a*x + b = 0)n ipoteza considerrii
tuturor variantelor posibile ale datelor de intrare.
a) Definirea datelor de intrare/ieire
Date de intrare : a,b
Date de ieire: x
b) Modelul matematic.
Ecuaia de gradul I este ax+b=0.Sub aceast form rezolvarea ecuaiei nu
poate fi efectuat printr-un program de calcul. Algoritmul de calcul nu poate
include dect relaii de calcul pentru mrimile necunoscute. Deci se alctuiete
b
relaia: x .
a
b
daca a0 atunci x
a
dac a=0, atunci avem 2 cazuri:
dac b=0, ecuaia devine 0*x+0=0, ecuaia are o infinitate de soluii.
dac b0, ecuaia nu are soluii (este o imposibilitate).

9
c)Reprezentarea algoritmului

d)Tabel de verificare

operaii
citete a a=4
citete b b=2
a=0? 4=0?
DA NU Nu

b=0? -
DA NU
x=-b/a x=-2/4

afieaz x -0,5

afi. Ec. are o inf. sol


afi. Ec. nu are sol

Stop
Stop

2.3. Structura repetitiv:


Problemele rezolvate cu ajutorul SC necesit parcurgerea repetat a unor
grupuri de instruciuni de calcul i de decizie. Pentru o programare mai
convenabil n limbajele de programare s-au definit structurile repetitive.

10
n toate limbajele de programare sunt definite trei structuri tip pentru
secvena repetitiv(fig.4a,4b i 4c):
structura cu, contorizare;
structura cu test iniial (anterior);
structura cu test final (posterior).

Fig. 4 Structurile repetitive

Din fig.4 rezult c algoritmii celor trei tipuri de structuri repetitive au


urmtoarele elemente comune:
corpul ciclului sau blocul de instruciuni care se repet;
evaluarea variabilelor care definesc condiia de oprire;
testul de oprire (condiia).
De aceea, printr-o reaezare a algoritmului exist posibilitatea trecerii la o
alt form a structurii repetitive. n acelai timp se atrage atenia c, de la un
limbaj de programare la altul se pot ntlni unele diferene n ceea ce privete
sintaxa i execuia instruciunilor prin care sunt codificate structurile repetitive.

2.3.1. Structura repetitiv cu contorizare


Aceast structur este avantajoas pentru rezolvarea problemelor n care
se cunoate cu exactitate numrul de parcurgeri (pai) repetate ale instruciunilor
din corpul ciclului. Se pot defini structuri repetitive controlate de un singur
contor( bucl simpl) sau de dou sau mai multe contoare(cicluri
suprapuse).Structurile cu contorizare sunt folosite n special n problemele care
prelucreaz tablouri de date.

11
n figura 5 este reprezentat structura repetitiv cu contorizare simpl.

5a pseudocod 5b organigrama
Fig. 5
Structura repetitiv cu contorizare are urmtoarele elemente:
- o variabil contor i de preferin cu valori ntregi;
- un interval nchis ( [iiniial , ifinal]);
- condiia de test;
- subblocul aciune 1 care conine instruciunile care se repet;
- ipas reprezint pasul cu care se va modifica variabila i dup fiecare
ciclare.De regul ipas = 1 (incrementare / decrementare).n acest caz valoarea
ipas=1 nu este reprezentat exlicit n pseudocod(fig.5.a).
Interpretare:
- se iniializeaz variabila cu valoarea iiniial;
- se verific condiia de test i [iinitial , ifinal ] ;
- dac testul are valoarea DA(adevrat) se execut aciune 1;
- se modific valoarea variabilei i cu pasul ales;
- se revine automat al verificarea testului;
- pentru valoarea NU(fals) a testului se ncheie secvena repetitiv , iar
programul se continu cu instruciunea imediat urmtoare structurii
ciclice(aciune 2).
Obs.
- Instruciunea este cu test anterior;
- dac i nu aparine intervalului ales, instruciunile din corpul buclei
(aciune 1) nu se vor executa.
- instruciunile de iniializare, cretere i verificare a contorului sunt
incluse automat n program de ctre SC.Deci, dei sunt reprezentate n algoritm,
aceste instruciuni nu apar explicit n programul de calcul;
- introducerea de ctre programator a unor instruciuni de
modificare a contorului duce la o execuie eronat a testului, nesemnalizat
de ctre SC;
- acelai efect l are includerea n algoritm a condiiei de test printr-o
instruciune de decizie.

12
n
Ex. 4 Sa se determine valoarea expresiei S i 3
i 1
a) Date de intrare : n
b) Date de ieire: S
c) Model matematic:
n
S 1 2 3 ............. n i 3
3 3 3 3

i 1

d) Reprezentarea algoritmului :

pseudocod schema logic

Obs.
- Instruciunea s=0 este obligatorie. n absenta acesteia valoarea finala
obinut pentru suma s este eronat(s se explice aceasta ?) ;
- instruciunea s=s+i3 se interpreteaz astfel: suma (s) ce este calculat la
momentul actual se obine din suma (s) calculat la momentul anterior la care se
adaug i3 (i fiind valoarea curent a pasului).
Verificarea corectitudinii unui algoritm se face prin alegerea unui set de
valori pentru datele de intrare i alctuirea tabelului de verificare.

13
e) Tabel de verificare Tabelul 2
instruciune PAS 1 PAS 2 PAS 3 PAS 4
citete n n=3
afieaz n 3//ecou
s=0 s=0
i=1 i=1
Instruc. repetitiv

i<=n? 1<=3 ? 2<=3 ? 3<=3 ? 4<=3 ?

DA DA DA DA

s=s+i3 s=0+13=1 s=1+23=9 s=9+33=36


NU
i=i+1 i=1+1=2 i=2+1=3 i=3+1=4

afieaz s 36

n i
Ex. 5 Sa se calculeze valoarea sumei duble S i j 2
i 1 j 1

a) Date de intrare : n
b) Date de ieire: s
c) Model matematic:
n i
S i j 2
i 1 j 1

d) Reprezentarea algoritmului :

14
Obs.
- Instruciunea s=0 este obligatorie i permite reiniializarea variabilei care
memoreaz valoarea j2 pentru fiecare pas al contorului i .
e) Tabelul de verificare Tabelul 3
instruciune PAS 1 PAS 2 PAS 3 PAS 4 PAS 5 PAS 6
citete n n=2
afieaz n 3//ecou
S=0 S=0
i=1 i=1
i<=n? 1<=2 2<=2 3<2
Instruc. Repetitive

DA
j=1 j=1 j=1
j<=i? 1<=1 2<=1 1<=2 2<=2 3<=2
DA NU S=0+1*1 S=1+2*1 S=3+2*2
s=s+i*j

j=j+1 j=2 j=2 j=3


i=i+1 i=2 i=3
afieaz s 7

Obs. Algoritmul unei structuri duble cu contorizare este corect alctuit dac:
- sunt definite dou variabile contor;
- ciclul exterior(primul deschis) cuprinde n totalitate ciclul
interior.Altfel spus,primul ciclul deschis este ultimul nchis.
- contorul ciclului exterior(i) nu este modificat n ciclul interior.nvers,n
afar ciclului interior contorul acestuia(j) poate fi redefinit.
2.3.2. Structura repetitiv cu test anterior (iniial)
Exist algoritmi repetitivi pentru care utilizatorul nu poate aprecia
numrul de repetri(reluri)a secvenei ciclice . n aceste cazuri pentru controlul
interpretrii secvenei ciclice este necesar s se defineasc o variabil de control
i o expresia relaional. Dup modul n care este amplasat condiia de test se
definesc secvene ciclice cu test iniial respectiv final.
Comparativ cu structura cu contorizare ,n acest caz trebuiesc
respectate urmtoarele condiii:
- este necesar iniializarea explicit,prin program, a variabilelor care
alctuiesc condiia de test. n caz contrar se va interpreta coninutul locaiei de
memorie rezervate respectivei variabile ( v. i lucr. de lab. nr. 1), ceea ce va
compromite executarea respectivei secvene ciclice;
- pe parcursul ciclului trebuie s existe cel puin o instruciune prin care
se recalculeaz valorile acestor variabile.n caz contrar secvena repetitiv poate
deveni un ciclu infinit;
- exist posibilitatea ca instruciunile din corpul ciclului s nu fie
parcurse nici mcar o singur dat.
Algoritmii repetitivi cu test iniial sunt specifici problemelor de:

15
aritmetica numerelor(divizibilitate, transformri de baz, etc) sau de validare a
datelor de intrare.
n fig. 5 se reprezint pseudocodul i organigrama unei secvene repetitive
cu test anterior.

a) pseudocod b) organigram
Fig. 6

Sintaxa algoritmului .
Blocurile care alctuiesc secvena repetitiv au urmtoarele semnificaii:
- iniializarea valorii variabilelor care definesc condiia care verific
incheierea execuiei repetate (cond ?);
- cond ? - condiia care verific ncheierea execuiei repetate:expresie
relaional (x <=5) sau logic ((x >= -1) I (x<=1)) ;
- aciune 1 secvena de instruciuni care se repet;
- instruciunea prin care se modific valorile care definesc cond ?
Interpretarea secvenei repetitive cu test iniial:
- se efectueaz testul de la nceputul buclei;
- pentru cond=DA (adevrat) se execut instruciunile din corpul buclei;
- pentru cond=NU (fals ) se abandoneaz bucla i se trece la instruciunea
imediat urmtoare secvenei repetitive (aciune 2).
Ex. 6 Sa se tabeleze valorile funciei f ( x) x 2 9 pentru x [xi, xf] cu pasul
de modificare a variabilei independente xp.
a) Date de intrare : xi, xf, xp
b) Date de ieire: f (valoarea funciei determint pentru o anumit valoare x)
c) Model matematic:
f ( x) x 2 9
OBS. Fiecare valoare calculat este imediat tiprit.n acest mod locaia din
MO desemnat prin f este eliberat pentru nscrierea urmtoarei valori
calculate.
d) Reprezentarea algoritmului:

program tabelare;

16
citete xi, xf, xp;
afieaz xi, xf, xp;
f=0;
x= xi;
ct timp x< xf
t=x2-9;
dac (t>=0)
f= t ;
afieaz x , f;
sf. dac
x=x+xp;
sf. ct timp;
sf. program.

Obs. Variabila t permite verificarea domeniului de definiie. Pentru t<0


se afieaz mesajul indicat i respectiva valoare a lui x.
Acest caz se nscrie n problemele cu funcii pentru care conteaz domeniul de
definiie.
e)Tabelul de verificare a algoritmului
n continuare este prezentat un exemplu n care intervalul ales pentru
valorile lui x este [0, 7], iar pasul 2.
Tabelul 4
Operaii Pas 0 Pas 1 Pas 2 Pas 3 Pas 4
citete xi xi=0
citete xf xf=7
citete xp xp=2
f=0 f=0
x=xi x=0
ct timp 0<=7 2<=7 4<=7 6<=7 8<=7
x<=xf
struct. repetit.

t=x2-9 t=-9 t=-5 t=7 t=27


Dac (t>=0) -9>=0 -5>=0 7>=0 27>=0
NU f= t DA NU NU f= 7 f= 27
afi. f 2.64 5.19
x=x+xp x=2 x=4 x=6 x=8
Pas 0 1 2 3 STOP

2.3.3Structura repetitiv cu test posterior (final)


Structura repetitiv cu test posterior (final) se deosebete de varianta
anterioar numai prin aceea c instruciunile din corpul ciclului sunt executate
cel puin o dat. Acest tip de algoritm este folosit n special de algoritmi
specifici metodelor numerice( determinarea soluiei reale a unei ecuaii

17
transcendente, calculul valorii radicalului,determinarea valorii unei serii cu
numr infinit de termeni etc).
n figura 6 se reprezint instruciunea repetitiv cu test anterior n
pseudocod i organigram

7a Pseudocod 7b organigram
Fig. 7

Sintaxa algoritmului repetitiv cu test final


Algoritmul este corect alctuit dac:
- exist marcat nceputul secvenei care trebuie repetat prin cuvntul
execut (n limbajele de programare acest marcaj este reprezentat diferit:
cuvntul repeat sau do) ;
- exist marcat finalul secvenei de operaii (comenzi,instruciuni) care
se repet prin cuvntul ct timp i condiia ataat acestuia ( n limbajele de
programare ncheierea secvenei repetate este indict prin repeat sau while);
- printre instruciunile care se repet exist i o operaie prin care se
recalculeaz valorile variabilelor care definesc condiia de test .n acest mod se
elimin posibilitatea existenei unei executri fr sfrit a ciclului(bucl
infinit).
n fig.6 s-au reprezentat i blocurile de operaii:
- aciune 1 care precede secvena repetitiv;
- aciune 2 respectiv secvena care se interpreteaz repetat;
- aciune 3 adic instruciunile care se execut dup ncheierea
secvenei repetitive.
Interpretarea algoritmului
Spre deosebire de varianta anterioar,cnd testarea condiiei cond ? se
face la nceputul buclei, n cazul de fa instruciunile din corpul buclei (aciune
2) se execut cel puin o dat.
Executarea instruciunii se face astfel:
- se interpreteaz instruciunile din blocul aciune 2;
- se verific condiia de test. Dac aceasta are valoarea de adevrat se
reia aciune 2. n caz contrar se trece la interpretarea instruciunii imediat

18
urmtoare secvenei repetitive (aciune 3).

Ex. 7 S se calculeze media aritmetic a numerelor pozitive introduse de


la tastatur care au valori n intervalul [a,b]. Calculul se ncheie prin
introducerea unui numr negativ.
Obs. Se presupune c ntotdeauna primul numr introdus este pozitiv.n caz
contrar algoritmul nu mai asigur rezolvarea corect a problemei.
a) Date de intrare : a,b, x-variabila care memoreaz numerele introduse
b) Date de ieire: a media aritmetic
c) Model matematic:
Ma = S/n n = numrul de numere

19