M2 L1 Structura repetitivă cu test inițial

În limbajul de programare C++, structura repetitivă cu test inițial este implementată folosind instrucțiunea while (în limba română cât timp). Aceasta execută un bloc de cod în mod repetat atâta timp cât o anumită condiție este adevărată. Acest bloc de cod se scrie între acolade. Fiecare repetare a acestui bloc de cod se numește iterație. În limbajul consacrat al programatorilor numărul total de iterații ale algoritmului denumit de acum iterativ se numește buclă. Înainte de fiecare iterație, condiția este evaluată, iar dacă aceasta este falsă, bucla se oprește.

În concluzie, un algoritm iterativ scris într-un limbaj de programare execută un bloc de cod în mod repetat adică iterațiile dintr-o buclă cât timp este adevărată o condiție evaluată înainte de fiecare iterație. Atunci când condiția devine falsă bucla se oprește.

Sintaxa generală a buclei while:

while (condiție) {
    // instrucțiuni care se execută repetitiv
}

Iată un exemplu simplu de program C++ care folosește o buclă while pentru a calcula suma primelor n numere naturale:

#include <iostream>
using namespace std;

int main() {
    int n, sum = 0, i = 1;

    cout << "Introduceți un număr: ";
    cin >> n;

    while (i <= n) {
        sum += i;  // adaugă valoarea lui i la sum
        i++;       // incrementează i
    }

    cout << "Suma primelor " << n << " numere este: " << sum << endl;

    return 0;
}

Explicație

  1. Inițializareint i = 1; – Inițializăm variabila i cu 1.
  2. Condițiai <= n – Bucla se execută atâta timp cât i este mai mic sau egal cu n.
  3. Instrucțiunile buclei:
    • sum += i; – Adaugă valoarea lui i la sum.
    • i++; – Incrementează i pentru a evita o buclă infinită și a avansa spre condiția de oprire.

Când condiția i <= n devine falsă, bucla se oprește, iar programul afișează rezultatul.

https://www.youtube.com/embed/7_VgFvVYkak?feature=oembedvideo 1 suma primelor n numere naturale

Temă:

Să se modifice programul de mai sus astfel încât să dispară variabila i. Programul va afișa doar suma fără numărul n.

Iată câteva exemple de programe în C++ care utilizează structura repetitivă while (cu test inițial):

1. Program pentru numărarea cifrelor unui număr

Acest program folosește o buclă while pentru a număra câte cifre are un număr întreg.

#include <iostream>
using namespace std;

int main() {
    int num, count = 0;

    cout << "Introduceți un număr: ";
    cin >> num;

    if (num == 0) {
        count = 1;
    } else {
        while (num != 0) {
            num /= 10;  // Împărțim numărul la 10 pentru a elimina ultima cifră
            count++;
        }
    }

    cout << "Numărul are " << count << " cifre." << endl;

    return 0;
}

Explicație

Bucla while continuă să împartă numărul la 10 (eliminând ultima cifră) până când numărul devine 0. Fiecare iterație crește contorul count, care va reprezenta numărul total de cifre.

2. Program pentru găsirea cifrei maxime dintr-un număr

Acest program determină cea mai mare cifră dintr-un număr întreg folosind structura while.

#include <iostream>
using namespace std;

int main() {
    int num, maxDigit = 0;

    cout << "Introduceți un număr: ";
    cin >> num;

    while (num != 0) {
        int digit = num % 10;   // Extrage ultima cifră
        if (digit > maxDigit) { // Compară cifra cu cea mai mare găsită până acum
            maxDigit = digit;
        }
        num /= 10;  // Elimină ultima cifră
    }

    cout << "Cifra maximă este: " << maxDigit << endl;

    return 0;
}

Explicație

Bucla while extrage câte o cifră (ultima cifră a numărului) și o compară cu maxDigit. Dacă cifra este mai mare, actualizează valoarea lui maxDigit. Bucla continuă până când numărul devine 0.

Temă

Să se modifice programul de mai sus astfel încât să ne afișeze cifra minimă dintr-un număr.

3. Program pentru afișarea unui șir de numere Fibonacci

Acest program afișează primele n numere din seria Fibonacci folosind o buclă while.

#include <iostream>
using namespace std;

int main() {
    int n;
    cout << "Introduceți numărul de termeni Fibonacci de afișat: ";
    cin >> n;

    int a = 0, b = 1, count = 0;

    cout << "Primele " << n << " numere Fibonacci sunt: ";
    while (count < n) {
        cout << a << " ";
        int next = a + b;  // Calculează următorul termen
        a = b;             // Schimbă valorile pentru a și b
        b = next;
        count++;           // Incrementare contor
    }

    cout << endl;
    return 0;
}

Explicație

Folosind o buclă while, programul generează și afișează termenii din șirul Fibonacci. Valorile lui a și b sunt actualizate la fiecare iterație, iar count asigură că bucla se oprește după ce se afișează n termeni.

4. Program pentru calculul sumei cifrelor unui număr

Acest program calculează suma cifrelor unui număr întreg folosind o buclă while.

#include <iostream>
using namespace std;

int main() {
    int num, sum = 0;

    cout << "Introduceți un număr: ";
    cin >> num;

    while (num != 0) {
        int digit = num % 10;  // Extrage ultima cifră
        sum += digit;          // Adaugă cifra la sumă
        num /= 10;             // Elimină ultima cifră
    }

    cout << "Suma cifrelor este: " << sum << endl;

    return 0;
}

Explicație

Bucla while extrage fiecare cifră a numărului și o adună la variabila sum. Bucla continuă până când numărul devine 0, la final fiind afișată suma totală a cifrelor.

Temă

  1. Să se modifice programul de mai sus astfel încât să ne afișeze inversul unui număr.
  2. Să se modifice programul de mai sus astfel încât să ne afișeze dacă numărul citit este palindrom (este identic cu numărul citit de ex. 1234321 este identic cu inversul său.)

Exemplele vor continua în lecția viitoare.

[ays_quiz id=’2′]