Sunteți pe pagina 1din 38

STRUCTURA REPETITIVĂ

1
Prin această structură se execută repetat o
acţiune sau o secvenţă de acţiuni, atât timp
cât conditia precizată este adevărată.

2
Dacă, intr-un algoritm, se repetă o secvenţă
de operaţii, atunci se utilizează
 structuri repetitive cu număr cunoscut de
paşi (cu contor) sau
 structuri repetitive cu număr necunoscut
de paşi (cu condiţie).

3
STRUCTURA REPETITIVĂ CU
NUMAR CUNOSCUŢI DE PAŞI

4
Instrucţiunea repetitivă cu un număr cunoscut de paşi
Pentru contor=expresie_1, expresie_2 execută
     Instrucţiune
            Efect :
Pas 1 : se evaluează expresia;
Pas 2 : se atribuie variabilei contor valoarea expresiei expresie_1;
Pas 3 : se evaluează expresie_2;
Pas 4 : dacă valoarea variabilei contor este mai mare decât
valoarea expresiei expresie_2, atunci se iese din instrucţiunea
repetitivă. Dacă valoarea variabilei contor este mai mică sau egală
cu valoarea expresie expresie_2, atunci se execută instrucţiune şi
apoi se incrementează (se măreşte cu 1) valoarea variabilei contor,
după care revine la Pas 3.

5
STRUCTURA REPETITIVĂ CU
NUMĂR NECUNOSCUŢI DE
PAŞI

6
   1. Instrucţiunea repetitivă condiţională anterior
Cât-timp expresie execută
          Instrucţiune
    
            Efect:
Pas 1 : se evaluează expresia ;
Pas 2 : dacă valoarea expresiei este fals, se iese din
instrucţiunea Cât-timp;
            dacă valoarea expresiei este adevărat, se
execută instrucţiunea, apoi se revine la Pas 1.

7
Instrucţiunea repetitivă condiţională anterior
Testează condiţia de terminare a
ciclului înainte de executarea
corpului ciclului.

8
  2. Instrucţiunea repetitivă condiţională posterior
Execută
     Instrucţiune
Cât-timp expresie;
            Efect:
Pas 1 : se execută instrucţiune;
Pas 2 : se evaluează expresie ;
Pas 3 : dacă valoarea expresiei este fals se iese din
instrucţiunea repetitivă;
            dacă valoarea expresiei este adevărat, se revine
la Pas 1;

9
Instrucţiunea repetitivă condiţională posterior
Testează condiţia de terminare a
ciclului după executarea corpului
ciclului

10
Concluzii:
Orice structură repetitivă
condiţionată anterior poate fi
transformată într-o structură
repetitivă condiţionată posterior.
Reciproca este şi ea adevărată.

11
STRUCTURA DE TIP FOR

12
Competente specifice:
 Analizarea enunţului unei probleme: identificarea datelor
de intrare şi a datelor de ieşire (cu specificarea tipului
datelor şi a relaţiilor existente între date) şi stabilirea
paşilor de rezolvare a problemei.

 Reprezentarea algoritmilor în pseudocod.

 Respectarea principiilor programării structurate în


procesul de elaborare a algoritmilor.

13
Instructiunile repetitive se folosesc atunci
cand se doreste efectuarea unei comenzi de mai
multe ori.

Instructiunea for() (denumita si bucla for())


poate fi considerata cea mai des folosita
instructiune repetitiva.

14
Structura de tip FOR
Fie i o variabila de tip integer numita variabila de
ciclare,
a si b doua valori intregi (sau doua variabile de tip
integer) numite valoare initiala si valoare finala, si S o
structura. Atunci:
FOR i:=a,b DO S

este o structura de tip FOR

15
Principiul de executie
P1: Variabila de ciclare i ia valoarea
initiala a;

P2: Daca i este mai mic sau egal cu b,


se executa S, se aduna 1 la i si se reia P2.
Altfel executia este incheiata.

16
Simularea structurii FOR cu ajutorul
structurii WHILE

i:=a;
While i<=b do
S
i:=i+1;

17
Observatie:

Se utilizeaza FOR daca:

 Secventa se repeta;
 Se cunoaste, inaintea intrarii in
secventa, de cate ori trebuie sa fie
executata secventa;

18
Aplicatia 1
Sa se tipareasca primele 5 numere naturale.
Integer i;
For i:=1,5 write i;
Endfor;

Dar daca s-ar fi cerut tiparirea numerelor naturale cuprinse intre 4 si 20?
Integer i;
for i:=4,20 write i;
Endfor;

19
Aplicatia 2
Se considera urmatorul algoritm descris in pseudocod. Ce se va afisa in urma
executarii instructiunilor?

integer i,j;

for i:=1, 2 do
for j:=1 , 3 do write (i,j)

20
Exemplificare
i:=1 j:=1 se tipareste (1 1)

j:=2 se tipareste (1,2)

j:=3 se tipareste (1,3)

i:=2 j:=1 se tipareste (2 1)

j:=2 se tipareste (2 2)

j:=3 se tipareste (2, 3)

21
Aplicatia 3
 Ce se va afisa pe ecran in urma executarii urmatoarei secvente
de instructiuni, stiind ca pentru variabila x au fost citite valorile
23, 25, 345, 892 si 3456?
for i:=1 to 5 do
read x
If i mod 2 =0 then write(x mod 10)
else write (x div 10 mod 10)

22
Aplicatia 4:
Se citeste n (numar natural). Se cere sa
se efectueze suma primelor n numere
naturale. Exemplu: n=3 s=1+2+3=10

Program C++

23
Tema acasa
1) Se citesc n numere naturale. Sa se scrie un algoritm care tipareste:
a) Maximul dintre cele n numere citite
b) Produsul numerelor impare din cele n numere citite
c) Suma numerelor pare din cele n numere citite
d) Suma dintre ultima cifra ale fiecaruia dintre numerele citite.

Ex: Date de intrare: n=5


12 3 46 4 7
Date de iesire:
a) 46
b) 3*7=21
c) 12+46+4=62
d)2+3+6+4+7=22

24
Aceasta are urmatoarea forma generala:
var i:int
for (i=nr_start; i<nr_end; i++) {
    cod care va fi executat
}

Sau :

for (var i:int=nr_start; i<nr_end; i++) {


    cod care va fi executat

25
-"i" este o variabila de initializare a buclei "for()", folosita ca un contoar
pentru numarul de repetari. Poate fi utilizata si alta litera sau cuvant, ca la
orice variabila.
Se poate folosi si direct "var i = nr_start;", dar este indicat sa se specifice si
tipul.
- "nr_start" este un numar initial de la care incep repetarile executiei
codului dintre acolade.
- Conditia "i<nr_end" verifica si asigura ca numarul de repetari sa se
incadreaza intr-o anumita valoare, stabilita la "nr_end".
Cat timp rezultatul acestei conditii este TRUE se executa inca o
data codul dintre acolade.
- "i++" incrementeaza cu o unitate valoarea la care a ajuns "i", apoi aceasta
valoare este verificata din nou de "i<nr_end", pana cand rezultatul este
FALSE. Atunci se opreste executia buclei.
- In loc de "i<nr_end" se poate folosi si alta conditie relationala, de exemplu
"i<=nr_end"
Iata un exemplu simplu de utilizare a instructiunii "for":

26
Limbajul C/C++

27
Dacă, intr-un algoritm, se repetă o
secvenţă de operaţii, atunci se utilizează
structuri repetitive cu număr cunoscut
de paşi (cu contor) sau cu număr
necunoscut de paşi (cu condiţie).

28
Structura repetitivă cu contor (cu număr cunoscut de paşi)
este codificată prin instrucţiunea for
for(e1;e2;e3) S;
unde e1,e2,e3 sunt expresii de forma:
e1 initializare variabila contor
contor=valoare_initiala
e2 conditia de continuare
contor<=valoare_finala for crescator
contor>=valoare_finala for descrescator
e3 modificare contor
contor++ for crescator
contor -- for descrescator
Dacă secvenţa (S) conţine mai multe instrucţiuni,atunci
acestea sunt cuprinse intre acolade{}.

29
Exemplu:
Se afişează pe ecran primele n numere naturale astfel: pe
prima linie, in ordine crescătoare, iar pe următoarea linie, in
ordine descrescătoare. Numărul n se citeşte de la tastatura.
#include<iostream.h>
void main()
{ int i,n;
cout<< n=;cin>.n;
for(I=1;i<=n;i++) cout<<i<< . ;
cout<<endl;
for(i=n;i>=1;i--) cout<<i<< . ;
}

30
Structuri repetitive cu conditie

In cazul in care o secvenţă de


operaţii se repetă cat timp/pana
cand este indeplinită o condiţie,
atunci se folosesc structuri
repetitive, cu test iniţial sau cu test
final.

31
1.Structuri repetitive cu test iniţial
Structura repetitiva cu test iniţial este
codificată prin instrucţiunea while.
Evaluarea condiţiei precede secvenţa de
operaţii; secvenţa
se repeta cat
timp condiţia
este indeplinită

32
Structuri repetitive cu test iniţial
Sintaxa:
while(cond_logică)
S;

Secvenţa (S) se executa numai in cazul in care condiţia logică


este adevarată. (expresia generează o valoare nenulă).
Dacă secvenţa conţine mai multe instrucţiuni, atunci acestea sunt
cuprinse intre acolade.

33
Exemplu:
Se afişează, pe ecran, suma cifrelor unui număr natural nenul x.
Numărul x se citeşte de la tastatură. 
 
#include<iostream.h>
void main()
{ unsigned int x,s=0;
cout<< x=;cin>>x;
while(x!=0)
{ s=s+x%10;x=x/10;
}
cout<< Suma cifrelor =<<s<<endl;
}

34
2.Structuri repetitive cu test final
Structura repetitivă cu test final este codificată, in
limbajul Pascal, prin instrucţiunea repeat_until, iar
in limbajul C/C++, prin instrucţiunea do_while.
Evaluarea condiţiei se face după execuţia secvenţei
de operaţii şi determină repetarea secvenţei sau
ieşirea din structură.

35
Structuri repetitive cu test final
Sintaxa:
Do
{ S;
} while(cond_logica);
 
Secvenţa (S) se execută cat timp condiţia logică este adevarată
(expresia generează o valoare nenulă).
Secvenţa se execută cel puţin o dată, chiar dacă condiţia logică
nu este indeplinită.

36
Exemplu:
Se afişează, pe ecran, cifra minimă a unui număr natural nenul a.Numărul
a se citeşte de la tastatură. 
#include<iostream.h>
void main()
{unsigned int a,min=9,c;
cout<< a=;cin>>a;
do
{c=a%10;
if(c<min) min=c;
a=a/10;
}while(a!=0);
cout<< Cifra minima=<<min<<endl;
}

37
Observaţii:
Instructiunea for permite o scriere mult
mai compactă decât celelalte două
instrucţiuni de ciclare, fiind foarte des
utilizată în scrierea programelor;

38

S-ar putea să vă placă și