Sunteți pe pagina 1din 13

Structurile repetitive

Execută o instrucțiune de un anumit număr de ori, sau cât timp o


condiție este adevărată.

Structurile repetitive pot fi:


1. cu număr cunoscut de pași (iterații) – se cunoaște de la început de câte ori se va
executa instrucțiunea
2. cu număr necunoscut de pași (iterații). Instrucțiunea se execută cât timp o condiție
este adevărată. La fiecare pas se va evalua condiția, iar dacă aceasta este adevărată se
va executa instrucțiunea.

Structurile repetitive cu număr necunoscut de pași pot fi:


a) cu test inițial: mai întâi se evaluează condiția; dacă este adevărată se execută
instrucțiunea și procesul se reia.
b) cu test final: mai întâi se execută instrucțiunea, apoi se evaluează condiția; Dacă este
adevărată, procesul se reia.
// cu număr cunoscut de pași (iterații)
#include <iostream>
using namespace std;
int main()
{ int i,n;
cin>>n;
for(i=1;i<=n;i++)
{ cout<<"**************** ";
cout<<endl;
} return 0;
}

// cu număr necunoscut de pași // cu număr necunoscut de pași


(iterații) cu test inițial. (iterații) cu test final.
#include <iostream> #include <iostream>
using namespace std; using namespace std;
int main() int main()
{ int i,n; { int i,n;
cin>>n; cin>>n;
i=1; i=1;
while(i<=n ) do {
{ cout<<"**************** "; cout<<"**************** ";
i++; i++;
cout<<endl; cout<<endl;
} return 0; } while(i<=n ) ;
} return 0;}
// cu număr cunoscut de pași (iterații)
#include <iostream> n i CP CA
using namespace std; 5 1 1<=5?A _5
int main()
{ int i,n; 2 2<=5?A ****************
cin>>n; ****************
for(i=1;i<=n;i++)
{ cout<<"**************** ";
3 3<=5?A ****************
cout<<endl; 4 4<=5?A ****************
} return 0;
} 5 5<=5?A ****************
6 6<=5?F

// cu număr necunoscut de pași


(iterații) cu test inițial.
#include <iostream>
using namespace std;
int main() n i CP CA
{ int i,n; 3 1 1<=3?A _3
cin>>n;
i=1; 2 2<=3?A ****************
while(i<=n ) 3 3<=3?A _****************
{ cout<<"**************** "; _****************
i++;
cout<<endl; 4 4<=3?F
} return 0;
}
STRUCTURA REPETITIVA CU NUMAR CUNOSCUT DE PASI FOR

Ex: (pentru toate valorile de la 1 pana la n) executa ACTIUNI(de citire, atribuire, calculare, afisare, etc)

DEF for( i=1 ; i<=n ; i++) instructiune; // contor=valoare_ initiala ; contor=valoarefinala ; incrementare)

Sau: (pentru toate valorile de la n pana la 1) executa ACTIUNI (de citire, atribuire, calculare, afisare, etc

for( i=n ; i>=1 ; i- -) instructiune; // contor=valoare_ initiala ; contor=valoarefinala ; decrementare)

Forma Functionare Exemplu


for(initializare; expresie; instr) Pas 1; se executa initializarea n=5;
instructiune; Pas 2: se evalueaza expresia → daca este adevarata for(i=1;i<=n;i++)
• se executa instructiune cout<<i<<“ ”;
• se executa i++
• se reia de la pasul 2 Afiseaza:
12345
#include <iostream>using
namespace std;int main(){ int #include <iostream>using
n,i; cout<<"n=";cin>>n; namespace std;int main(){
for(i=1;i<=n;i++) cout<<i<<" int n,i; cout<<"n=";cin>>n;
" ; return 0;} for(i=n;i>=-n;i--) cout<<i<<"
" ; return 0;}
n i ce prelucreaza ce afiseaza

5 n=5

1 1<=5 ?A 1

2 2<=5?A 2

3 3<=5?A 3

4 4<=5?A 4

5 5<=5?A 5

6 6<=5?F
#include <iostream>
#include <iostream>using
using namespace std;
namespace std;int main(){
int main()
int i,n; cin>>n; i=0; do {
{ int i,n;
cout<<i<<" "; i++; //
cin>>n;
i=i+1; }while(i<=n); return
i=0;
0;}
while(i<=n)
{ cout<<i<<" ";
i++; // i=i+1;
} return 0;
}
C++…slide 6

#include <iostream> #include <iostream>


using namespace std; using namespace std;
int main() int main()
{ int n,i; { int n,i;
cout<<"n=";cin>>n; cout<<"n=";cin>>n;
i=n; i=n;
while(i>=-n) do
{cout<<i<<" " ; {cout<<i<<" " ;
i--; i--; //i=i-1;
} }while(i>=-n);
return 0; return 0;
} }
Se citeste un numar natural n. Sa se calculeze suma primelor n numere naturale
n i s

n i s=0 CP CA
p1 DI : int n
DM : int i 3 1 1 1<=3?A n=3
DE: int s=0; s=0+1=1
0+1=1
p2 citeste n //afiseaza ‘’n=‘’; memoreaza n;
2 2<=3?A 1+2=
i=1;
3 s=1+2=3 3
p3 cat timp (i<=n)
afiseaza s, ”+”, i , ‘’=‘’ 3 3<=3?A 3+3=
s=s+i; 6 s=3+3=6 6
afiseaza s 4 4<=3?F
i=i+1;
p4 afiseaza “suma = ”, s; Suma=6
Acelasi exemplu rezolvat cu structura cu test final. Următorul program citește valoarea variabilei n și calculează
suma primelor n numere naturale.
n i s

p1 DI : int n
#include <iostream>using namespace DM : int I
std;int main (){int n,s,i;cout << "n=" DE: int s
;cin >> p2 citeste n
n;s=0;i=1;do{s=s+i;i=i+1;}while(i<= s=0;
n);cout <<"Suma="<<s<< endl;return i=1;
0;} p3 repeta s=s+i
i=i+1;
cat timp i<=n
p4 afiseaza “suma = ”, s;
Rezolvati:
1.Sa se determine suma primelor 10 numere naturale

2 (Sa se determine suma primelor n numere pare)

3 sa se calculeze media aritmetica a n numere n=6 1+2+3+4+5+6=suma

4 Dandu-se a si b, sa se determine suma, produsul si media lor aritmetica

i
n S
P1 analiza problemei #include <iostream>using
P2 DI: n int namespace std;int
DM: i int; main(){ int n,i,s;
DE: s=0; int cout<<"n=";cin>>n; s=0;
P3 CITIRE DI n for(i=1;i<=n;i++) {s=s+i; // Caz particular (analiza problemei)
P4 pentru i=1,n cout<<" suma lui n=3
s=s+i; "<<i<<"="<<s<<endl; } s=0 +1
p5 afisaza s return 0;} +2
+3=6
2 (Sa se determine suma primelor n numere pare)
#include <iostream>
P1 analiza problemei using namespace std;
P2 DI: n int int main(){ int n,i,s;
DM: i int; cout<<"n=";cin>>n; s=0;
DE: s=0; int for(i=1;i<=n;i++)
P3 CITIRE DI n if(i%2==0) {s=s+i;
P4 pentru i=1,n cout<<" suma lui
daca(i%2==0) "<<i<<"="<<s<<endl; }
s=s+i; return 0;}
p5 afisaza s

a=b // atribuire daca(a==b ) // testare


a=5 a=5
b=7 b=7
a=b → a=7 a=b → 5=7?F
3 . Sa se calculeze media aritmetica a n numere n=15 1+2+3+4+5+6….+15=suma/n