Sunteți pe pagina 1din 3

Structuri repetitive în C/C++

Instrucțiunea repetitivă “while”

Structurile repetitive, numite și bucle, repetă o instrucțiune (sau un bloc de instrucțiuni) de un


anumit număr de ori sau cât timp este îndeplinită o anumită condiție.

Știm din pseudocod că există trei structuri repetitive:

- Structura repetitivă cu test inițial


- Structura repetitivă cu test final
- Structura repetitivă cu contor (cu număr cunoscut de pași)

Structura repetitivă cu test inițial (în pseudocod: ”cât timp … execută”) este
implementată în limbajul C++ prin instrucțiunea ”while”

Sintaxa instrucţiunii ”while” este:

while (expresie) instructiune;

Observație: instrucțiunea poate fi și un bloc de instrucțiuni, adică mai multe


instrucțiuni cuprinse între acolade;

Modul de execuţie
Pas 1: Se verifică expresia din paranteză
Dacă expresia numerică are o valoare diferită de zero (nenulă) sau
expresia relaţională este adevărată, se continuă cu pasul 2
Altfel se termină execuţia instrucţiunii
Pas 2: Se execută instrucţiunea sau blocul de instrucţiuni, apoi se revine la Pasul 1

De exemplu, să ne uităm puțin la o numărătoare inversă folosind bucla while:

1 // o numaratoare inversa cu while Efectul execuției acestui program este


2 #include <iostream> afișarea următoarei liste de numere:
3 using namespace std;
4 int main () 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, listare
5{ terminata!
6 int n = 10;
7 while (n>0) {
8 cout << n << ", ";
9 n=n-1;
10 }
11 cout << "listare terminata!\n";
12 }
13
Prima instrucțiune din main îi atribuie lui n valoarea 10. Acesta este primul număr din
numărătoarea inversă. Apoi începe instrucțiunea while: dacă această valoare îndeplinește
condiția n>0 (adică n este mai mare decât zero), atunci se execută blocul care urmează după
condiție și se va repeta atât timp cât condiția (n>0) își păstrează valoarea adevărată.

Întregul proces din programul anterior poate fi interpretat conform algoritmului următor:

1. n ia o valoare
2. Se testează condiția lui while (n>0). În acest moment avem două posibilități:

o conditie are valoarea ”adevărat”: se execută instrucțiunea (se merge la pasul 3)

o conditie are valoarea fals: se ignoră instrucțiunea și se continuă cu instrucțiunea de


după ”while” (la pasul 5)
3. Execută instrucțiune:
cout << n << ", ";
--n;
(afișează valoarea lui n și micșorează n cu 1)

4. Sfârșit bloc instrucțiuni din ”while”. Întoarcere automată la pas 2.


5. Continuă programul imediat după bloc:
afișează listare terminata! și programul se termină.

Să subliniem că folosirea unei instrucțiuni while presupune că există un punct în care instrucțiunea
să se termine, adică instrucțiunea sau blocul de instrucțiuni din ”while” trebuie să modifice valorile
verificate în condiție, astfel încât să devină falsă la un moment dat. Altfel, instrucțiunea while ar
continua la infinit.
În exemplul de mai sus, blocul de instrucțiuni repetat include instrucțiunea ”—n”, adică valoarea
variabilei (n) evaluate în condiție se micșorează cu unu - ceea ce va face ca, după un anumit
număr de iterații, condiția (n>0) să aibă valoarea fals. Mai exact, după 10 iterații, n devine 0, iar
condiția nu mai este adevărată și bucla se termină.
Aplicatia 1

Vom scrie un program C++ care să citească de la tastatură un număr natural n, să citească de la

tastatură n numere naturale și să calculeze suma celor n numere citite și să o afișeze.

#include <iostream> Efectul acestui program>


using namespace std; Dacă se citeşte pentru n valoare 3
int main () Apoi se citesc valorile 7, 13 şi 5
{
int n,i,x;
cout<<”n=”; cin>>n;
i=1; suma=0;
while (i<=n) // cat timp i<=n
{
cout<<”x=”; cin>>x;
suma=suma+x;
i=i+1;
} // se termină ”while”
cout << "suma="<<suma;
}

Aplicaţia 2 (de rezolvat)


Scrieţi un program C++ care să citească de la tastatură un număr natural n, să citească de la tastatură

n numere naturale și să calculeze suma numerelor pare dintre cele n numere citite și să o
afișeze.

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