Intelegeinfo

  • ro
  • us
  • 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++

    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

  • Daca expresia (ex: 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:

    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.