Toate structurile repetitive se pot, în teorie, transforma în structura repetitivă cu test inițial. Când trecem de la algoritm la limbajul de programare C++ structura repetitivă cu test inițial se transformă în instrucțiunea while.
Vom realiza un program care citește de la tastatură trei numere întregi a,b,c și afișează pe ecran suma lor.
#include <iostream>
using namespace std;
int main()
{
int a,b,c,sum=0;
cin >> a >> b >> c;
sum = a + b + c;
cout << "Suma este " << sum << endl;
return 0;
}
Explicație linie cu linie:
#include <iostream>
Include biblioteca standard de intrare/ieșire, care este necesară pentru utilizarea funcțiilorcinșicout.using namespace std;
Acesta specifică utilizarea spațiului de numestd, astfel încât să nu fie nevoie să prefixăm funcții precumcinșicoutcustd::.int main()
Declară funcția principală a programului, care este punctul de pornire.int a, b, c, sum = 0;
Se declară patru variabile de tipint:a,b, șic: pentru a stoca cele trei numere introduse de utilizator.sum: pentru a stoca suma lor, inițializată cu valoarea 0.
cin >> a >> b >> c;
Utilizatorul introduce trei numere, care sunt citite și stocate în variabilelea,bșic.sum = a + b + c;
Se calculează suma celor trei numere și se stochează în variabilasum.cout << "Suma este " << sum << endl;
Programul afișează pe ecran șirul de caractere „Suma este” urmat de conținutul variabilei sum.
return 0;
Marchează sfârșitul funcțieimainși returnează valoarea 0, ceea ce indică faptul că programul s-a încheiat cu succes.
Dar dacă avem nevoie să citim de la tastatură foarte multe numere întregi ce facem? Cum modificăm programul de mai sus astfel încât să citească oricât de multe numere de la tastatură făcând suma lor?
Programul se va modifica folosind structura repetitivă cu test inițial în algoritm. Acest algoritm tradus în limbaj de programare va folosi în mod eficient o singură variabilă de tip int numită a și instrucțiunea while.
#include <iostream>
using namespace std;
int main()
{
int a,sum;
cin >> a;
while(a!=0){
sum += a;
cin >> a;
}
cout << "Suma " << sum << endl;
return 0;
}
Acest program C++ calculează suma numerelor întregi introduse de utilizator până când se introduce numărul 0. Iată o explicație detaliată a fiecărei părți:
1. Biblioteca inclusă
#include <iostream>
Se include biblioteca standard iostream pentru a putea folosi funcțiile de intrare/ieșire (cin și cout).
2. Spațiul de nume
using namespace std;
Permite utilizarea directă a funcțiilor din spațiul de nume std, cum ar fi cin și cout, fără a mai fi necesar să scriem std::.
3. Funcția principală
int main()
{
int a, sum = 0;
Variabila a este folosită pentru a stoca numărul introdus de utilizator.Variabila sum este inițializată cu 0 și este utilizată pentru a calcula suma numerelor.
4. Citirea primului număr
cin >> a;
Utilizatorul introduce un număr întreg care este stocat în variabila a.
5. Bucle while pentru calculul sumei
while(a != 0){
sum += a;
cin >> a;
}
- Buclele
whilecontinuă să ruleze atâta timp câtanu este egal cu0. - În interiorul buclei:
- Se adaugă valoarea lui
alasum(sum += a). - Se cere utilizatorului un alt număr (
cin >> a). Valoarea citită de la tastatură în aceeași variabilă a suprascrie valoarea deja existentă acolo.
- Se adaugă valoarea lui
Buclele se termină când utilizatorul introduce 0.
6. Afișarea rezultatului
cout << "Suma este " << sum << endl;
- Se afișează suma tuturor numerelor introduse de utilizator, exceptând
0.
7. Terminarea programului
return 0;
Programul se încheie, returnând 0 către sistemul de operare (indică executarea cu succes).
Exemplu de rulare:
Intrare utilizator:
5
3
-2
0
Execuție program:
sum = 0inițial.- Se citește
5,sum = sum + 5 = 5. - Se citește
3,sum = sum + 3 = 8. - Se citește
-2,sum = sum + (-2) = 6. - Se citește
0, iar bucla se oprește.
Ieșire:
Suma este 6
Ce face programul:
- Primește ca intrare o serie de numere întregi.
- Calculează suma lor.
- Se oprește când întâlnește
0ca intrare. Numărul0nu este inclus în sumă.
În video de mai jos se omite inițializarea variabilei sum cu valoarea zero. De ce funcționează programul cu acestă valoare omisă? Încă nu se știe.
