Structuri repetitive
Vizualizari 123
Postat vineri, 4 iulie 2025
Definiție
Structurile repetitive sunt instrucțiuni care permit executarea repetată a unui bloc de cod atât timp cât o condiție este adevărată sau pentru un număr determinat de pași.
Tipuri de structuri repetitive în C++
while
– testul se face înainte de executarea blocului de coddo...while
– testul se face după prima executare a bloculuifor
– structură cu număr determinat de pași
Structura while
Execută blocul de instrucțiuni cât timp condiția este adevărată.
int i = 0; while (i < 5) { cout << i << " "; i++; }
In acest caz, conditia se v-a executa de 5 ori, (i=0,1,2,3,4)
Observatii
i<5
) nu isi modifica valoarea pe parcusul buclei, precum si daca folosesti o valoare constanta (ex: true
sau 5
), se v-a produce o bucla infinita.Structura do...while
Este asemanatoare cu structura while
, dar execută cel puțin o dată blocul de instrucțiuni, iar apoi verifică condiția.
int i = 0; do { cout << i << " "; i++; } while (i < 5);
Structura for
Se folosește atunci când numărul de pași este cunoscut de la început.
for (int i = 0; i < 5; i++) { cout << i << " "; }Executia structurii for se face astfel:
- Initializarea (poti declara variabile locale - valabile doar in aceasta bucla for, care dupa ce aceasta se executa, nu vor mai fi acesibile, sau variabile din afara buclei, declarate global sau in functie) - ex:
int i = 0;
- Verificarea conditiei - ex:
i < 5
- Executarea continutul buclei for - ex:
cout << i << " ";
- Incrementarea (poate fi orice operatie sau functie, spre exemplu i=i+5) - ex
i++
- Revenirea la instructiunea de verificare a conditiei, daca este adevarata, se v-a continua executia, altfel se iese din bluca for.
- Iesirea din structura
for
Instruction de control
Daca vrem sa iesim fortat dintr-o structura repetitiva, putem folosi instructiunea break
.
Daca vrem sa sarim peste ciclul curent al buclei si sa revenim direct la instructiunea de verificare a conditiei (1), folosim continue. Aceasta este un fel de "skip" in structurile de control, practic sare peste codul pe care trebuia sa fie executat, si trece la urmatorul ciclu.
Exemplu: Suma primelor n
numere naturale
int n, suma = 0; cin >> n; for (int i = 1; i <= n; i++) { suma += i; } cout << "Suma este: " << suma;
Exemplu: Afișarea cifrelor unui număr
int n; cin >> n; while (n > 0) { int cifra = n % 10; cout << cifra << " "; n = n / 10; }
Exemplu: Citirea până la 0 și afișarea valorilor pozitive
int x; do { cin >> x; if (x > 0) cout << x << " "; } while (x != 0);
Complexitatea timpului
Complexitatea timpului măsoară câte operații efectuează un algoritm în funcție de dimensiunea datelor de intrare (n). În cazul structurilor repetitive, complexitatea depinde de numărul de iterații efectuate de buclă.
Exemplu 1 – buclă care parcurge un vector de dimensiune n
:
for (int i = 0; i < n; i++) { // O operație constantă }
Complexitate: O(n)
Exemplu 2 – buclă imbricată (două for-uri):
for (int i = 0; i < n; i++) { for (int j = 0; j < n; j++) { // O operație constantă } }
Complexitate: O(n²)
Analiza complexității este importantă pentru a estima eficiența unui algoritm, mai ales pentru date mari.