Instrucțiunea for
Instrucțiunea
foreste o structură repetitivă cu test inițial, folosită mai ales atunci când cunoaștem dinainte numărul de repetări (numărul de pași).
Este echivalentul în C++ al structurii pentru din pseudocod și cea mai folosită buclă atunci când parcurgem, de exemplu, un interval de numere sau un vector.
Sintaxă
for (initializarea; conditia; pasul) {
// instructiuni
}
Cele trei expresii dintre paranteze, separate prin ;, au roluri bine definite:
initializareapregătește, de obicei, un indice (de exempluint i = 1) și se execută o singură dată, la început;conditiaeste testată înaintea fiecărei repetări; cât timp este adevărată, bucla continuă;pasulmodifică indicele după fiecare repetare (de exemplui++).
Efect
- se execută inițializarea (o singură dată);
- se evaluează condiția: dacă este falsă, bucla se încheie;
- dacă este adevărată, se execută instrucțiunile din buclă;
- se execută pasul și se revine la punctul 2.
Exemplu: număr cunoscut de pași
Enunț. Se citește un număr
n, urmat dennumere naturale. Să se afișeze câte dintre ele sunt palindrom (egale cu răsturnatul lor).
int n, c = 0, nr;
cin >> n;
for (int i = 1; i <= n; i++) {
cin >> nr;
int aux = nr, rasturnat = 0;
while (aux) {
rasturnat = rasturnat * 10 + aux % 10;
aux /= 10;
}
if (rasturnat == nr) c++;
}
cout << c;
Pentru intrarea 6 și numerele 66 584 1 7651 383 410 se afișează 3 (numerele 66, 1 și 383).
Pentru că am citit dinainte câte numere urmează, bucla for se execută exact de n ori. La fiecare pas citim un număr, îi construim răsturnatul cu un while și, dacă acesta este egal cu numărul inițial, creștem contorul c.
Exemplu: bucle imbricate
Enunț. Se citește un număr natural nenul
n. Să se afișeze o piramidă cu liniile1,1 2,1 2 3, …,1 2 ... n.
int n;
cin >> n;
for (int i = 1; i <= n; i++) {
for (int j = 1; j <= i; j++)
cout << j << ' ';
cout << '\n';
}
> 3
1
1 2
1 2 3
> 6
1
1 2
1 2 3
1 2 3 4
1 2 3 4 5
1 2 3 4 5 6
Bucla exterioară parcurge cele n linii, iar pentru fiecare linie i bucla interioară afișează numerele de la 1 la i. După fiecare linie trecem la un rând nou.