Sunteți pe pagina 1din 3

Instructiuni repetitive

Exista trei instructiuni (structuri) repetitive folosite in toate limbajele:

• instructiunea repetitiva cu test initial CAT TIMP (WHILE) - se foloseste cand numarul de
repetitii este nedefinit
• instructiunea repetitiva cu test final REPETA-PANA CAND (DO WHILE) - se foloseste
cand numarul de repetitii este nedefinit)
• instructiunea repetitiva cu un numar cunoscut de pasi PENTRU (FOR) - se foloseste
cand numarul de repetitii este cunoscut – un numar fix de ori.

Instructiunea WHILE
Sintaxa:
while (expL)
instructiune;

Efect:
• Se evalueaza expresia logica
• Daca valoarea expresiei logice este 1 (adevarata) se executa instructiunea si se revine la
pasul 1
• daca valoarea expresiei logice este zero (falsa) se continua cu instructiunea de dupa
punct-virgula

Observatii:
• in esenta, cat timp valoarea expresiei logice este adevarata, se executa instructiunea
• daca valoarea expresiei logice este falsa de la inceput atunci instructiunea nu se mai
executa
• daca WHILE trebuie sa repete mai mult de o instructiune, acestea se vor incadra intre
acolade;
• instructiunea WHILE se mai numeste “repetitiva cu test initial” sau “conditionata
anterior”, pentru ca intai verifica valoarea conditiei si apoi executa secventa ce trebuie
repetata
Probleme exemplu.
1. Fie A si B doua valori naturale. Sa se simuleza impartirea cu rest a lui A la B (prin scaderi
repetate) si sa se determine catul si restul impartirii.

#include <iostream.h>
void main()
{
int A, B, C=0;
cin>>A>>B;
while(A>=B)
{
A=A-B;
C++;
}
cout<<"catul este :"<<C<<endl;
cout<<"restul este : "<<A;
}

Explicatii
Cand impartim pe A la B cautam “de cate ori se cuprinde” B in A, altfel spus cate scaderi ale lui
B din a se pot face.

2. Un tip e problema ce necesita folosirea instructiunii WHILE este prelucrarea unui sir de
valori ce se incheie cu zero.

Ideea :
Se citeste fiecare valoare si daca este nenula se prelucreaza;
Acest pas se repeta pana citim valoarea zero. (Ex: 23, -4, 5, 12, 79, 0).

Codul corespunzator este:

cin>>x;
While (x!=0)
{
//prelucrez valoarea X citita;
..............................
//citesc urmatoarea valoare din sir
cin>>x;
}
Probleme propuse:

Folosind instructiunea while si stiind ca se citesc numere intregi pana la aparitia lui 0 rezolvati
urmatoarele cerinte:
1. Determinati numarul de valori din sir.
De exemplu daca numerele citite sunt: 23, -4, 5, 12, 79, 0, se va afisa valoarea 5.

2. Determinati valoarea maxima/minima.


De exemplu daca numerele citite sunt: 23, -4, 5, 12, 79, 0, se va afisa valoarea 79 pentru
maxim si -4 pentru minim.

3. Determinati de cate ori apare numarul K (citit de la tastatura) in sir.


De exemplu daca numerele citite sunt: 23, -4, 5, -4, 79, 81, -4, 0, iar pentru k se va citi
valoarea -4, se va afisa 3.

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