Î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
- Inițializare:
int i = 1;– Inițializăm variabilaicu 1. - Condiția:
i <= n– Bucla se execută atâta timp câtieste mai mic sau egal cun. - Instrucțiunile buclei:
sum += i;– Adaugă valoarea luiilasum.i++;– Incrementeazăipentru 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ă
- Să se modifice programul de mai sus astfel încât să ne afișeze inversul unui număr.
- 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′]
