De ce contează?
Orice scrisoare oficială are aceeași schelă: antet, formula de adresare, conținut, semnătură. Nu poți pune semnătura înainte de antet. La fel, un program C++ are o structură fixă: câteva linii care se repetă în absolut orice program, în aceeași ordine.
Anatomia unui program
Iată cel mai scurt program util pe care îl vei scrie — citește două numere și le adună:
#include <iostream>
using namespace std;
int main() {
int a, b;
cin >> a >> b;
cout << a + b;
return 0;
}Fiecare linie are un rol bine definit:
#include <iostream>— aduce în program biblioteca pentru citire/afișare (input-output stream). Fără ea,cinșicoutnu există.using namespace std;— ne lasă să scriemcoutîn loc destd::cout.int main() { ... }— funcția principală. Execuția începe de la prima instrucțiune dinmainși merge în jos, linie cu linie.return 0;— anunță sistemul că totul a mers bine.
Programul nu pornește „de sus în jos" de la #include. Liniile de dinainte de main
sunt doar pregătiri pentru compilator. Execuția reală începe la prima instrucțiune
din main. Restul e decor necesar.
Pas cu pas: ce face compilatorul
Să urmărim exemplul cu a = 4 și b = 7 la intrare:
- Compilatorul citește
#includeșiusing→ pregătește instrumentele. - Ajunge la
main→ de aici începe execuția. int a, b;→ rezervă spațiu pentru două numere întregi.cin >> a >> b;→ citește4înași7înb.cout << a + b;→ calculează4 + 7și afișează11.return 0;→ gata, fără erori.
De ce contează ; și { }
Fiecare instrucțiune se termină cu ;. Acoladele { } grupează instrucțiunile
care aparțin lui main. Sunt ca punctul de la finalul unei propoziții: fără ele,
compilatorul nu știe unde se termină o idee și unde începe alta.
cout << a + b // GRESIT: lipseste ; -> eroare de compilareComplexitate
Structura în sine nu are „complexitate" — e doar schela. Timpul de execuție depinde
de ce instrucțiuni pui în main. Vom măsura asta în lecția-punte despre complexitate.
Capcane clasice la primul program:
- Uiți
;la finalul unei instrucțiuni → eroare de compilare cu mesaj derutant, adesea raportată pe linia următoare. - Scrii cod în afara lui
main→ instrucțiunile executabile trebuie să fie înăuntrul funcției, între{ }. - Uiți
#include <iostream>→coutșicinapar ca „nedeclarate". - Uiți
return 0;→ în C++ modern programul tot funcționează, dar e o practică bună să-l pui explicit la concursuri.
De reținut
- Orice program C++ are aceeași schelă:
#include,using namespace std;,int main(). - Execuția începe în
mainși curge de sus în jos, instrucțiune cu instrucțiune. - Fiecare instrucțiune se termină cu
;;{ }grupează ce ține demain.