Instrucțiunea for

Instrucțiunea for este 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.

Schema logică a instrucțiunii for
Schema logică a instrucțiunii for

Sintaxă

for (initializarea; conditia; pasul) {
    // instructiuni
}

Cele trei expresii dintre paranteze, separate prin ;, au roluri bine definite:

  • initializarea pregătește, de obicei, un indice (de exemplu int i = 1) și se execută o singură dată, la început;
  • conditia este testată înaintea fiecărei repetări; cât timp este adevărată, bucla continuă;
  • pasul modifică indicele după fiecare repetare (de exemplu i++).

Efect

  1. se execută inițializarea (o singură dată);
  2. se evaluează condiția: dacă este falsă, bucla se încheie;
  3. dacă este adevărată, se execută instrucțiunile din buclă;
  4. se execută pasul și se revine la punctul 2.

Publicitate

Exemplu: număr cunoscut de pași

Enunț. Se citește un număr n, urmat de n numere 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 liniile 1, 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.