Curs C++ | Sectiunea 1 – Primul tau program
Incepem acest Curs C++ cu primul nostru program. Acesta este probabil si cel mai inutil program pe care il voi prezenta dar este tot ce avem nevoie pentru a discuta si intelege cateva aspecte esentiale. Ulterior, acesta va creste in complexitate, pe masura ce folosim noi cunostinte.
Mai intai ne definim ce am dori sa faca acesta. Vom pastra la minim asteptarile si dificultatea asa ca sa presupunem ca vrem doar sa afiseze un mesaj in consola cum ar fi “Hello! Acesta este primul tau program“.
Pasii pe care ar trebui sa ii parcurga programul nostru sunt urmatorii:
- Start
- Afisare mesaj pe ecran
- Stop
❗ Acest tip de descriere structurata a fiecarui pas poarta numele de algoritm. Acum putem sa aruncam o privire si pe codul nostru.
Directiva de preprocesare
Acum sa analizam putin ce am scris si sa luam pe rand fiecare linie.
💡 Aceasta linie ce incepe cu # ne anunta o directiva de preprocesare (preprocessor directive). Vom discuta si mai tarziu despre preprocesor dar pentru moment putem spune ca este o parte separata a compilatorului ce are rolul de a citi inainte (pre-read) programul si a face diferite modificari asupra lui. Faptul ca lucrurile se intampla inainte ne sugereaza ca aceasta operatiune va lua loc inaintea compilarii efective.
Modificarile introduse de preprocesor sunt complet controlate de directivele acestuia. In programul nostru intalnim directiva include. Cand preprocesorul intalneste aceasta directiva, aceasta este inlocuita de continutul fisierului ce este mentionat (in cazul nostru fisierul este iostream). De mentionat ar mai fi ca modificarile facute de preprocesor nu modifica niciodata continutul codului sursa. Orice alterari ale acestuia sunt facute pe o copie volatila a programului nostru ce va fi stearsa dupa ce compilarea este realizata.
❓ Toate ca toate dar totusi, de ce avem nevoie de un asa numit preprocesor pentru a include continutul altui fisier 🙄 ? Trebuie sa ne imaginam scrierea unui program ca fiind construirea unui set LEGO cu piese sau blocuri (ready-made blocks) predefinite. In programul nostru, un asa numit bloc de cod este cel care ne va ajuta sa afisam pe ecran mesajul nostru, si anume cout. Problema este ca al nostru compilator nu stie cine este acest zis cout asa ca trebuie sa il avertizam.
Deci, un set de informatii preliminare sunt incluse in asa numitele header files. Aceste fisiere contin informatii preliminare despre blocurile de cod predefinite ce il vor ajuta pe compilator sa inteleaga ce ne dorim sa facem cu anumite comenzi.
❓ Am mai putea sa ne punem urmatoarea intrebare, unde se afla acest fisier iostream, unde este localizat? Raspunsul la aceasta intrebare este destul de simplu: nu este problema noastra 😎 . Preprocesorul va stii unde sa gaseasca acest fisier pentru noi 🙂 .
Namespace
Pentru moment, am spus destule despre preprocesor asa ca putem continua cu urmatoarea linie.
💡 In C++, toate elementele din libraria standard sunt declarate in interiorului unui namespace numit std. Un namespace este un container abstract creat pentru a stoca blocuri de cod (logical grouping of unique entities).
O entitate sau bloc de cod definita intr-un namepsace este asociata doar cu acel namespace. Daca ne dorim sa folosim mai multe entitati din libararia standard, trebuie sa folosim instructiunea using namespace la inceputul fiecarui fisier.
Instructiunea trebuie sa specifice numele namespace-ului dorit a fi utilizat (in cazul nostru fiind std). Astfel, vom avea acces la facilitatile standard in intreg programul.
Functii & Functia Main
Inainte de a discuta despre urmatoarea linie, vom discuta putin despre functii, acestea fiind cele mai comune tipuri de blocuri cod.
💡 Cel mai simplu exemplu pentru a descrie o functie ar fi sa ne gandim la ea ca la o cutie in care putem sa punem ceva si sa scoatem altceva (precum palaria unui magician 🧙🏻). Lucrurile pe care le punem in cutie se numesc argumentele functiei (function arguments / parameters) iar lucrurile pe care le scoatem se numesc rezultatele functiei (function results). Nu te speria, vom vorbi pe larg despre functii ulterior 🙂 .
❗ Revenind la programul nostru, C++ trebuie sa aiba pe langa nenumaratele blocuri si functii diferite, o functie specifica, si anume functia main.
Orice functie in C++ are nevoie de urmatorul set de informatii:
- care este rezultatul functiei?
- care este numele functiei?
- cati parametrii are functia si care sunt numele lor?
Acum ca am specificat aceste 3 lucruri, sa aruncam o privire la programul nostru:
- rezultatul functiei este o valoarea intreaga (int)
- numele functiei este main
- functia nu are nevoie de niciun parametru (lucru definit prin cuvantul void)
Corpul Functiei
Acest set de informatii se mai poate numi si prototip (protoype) sau declarare. Interiorul functiei este numit si corpul functiei (function body) si incepe cu prima paranteza “{” si se termina cu ultima paranteza “}“. De retinut, corpul functiei poate fi gol, avand nimic intre paranteze, ca in exemplul de mai sus.
In ineriorul corpului functiei trebuie sa scriem programul nostru. Daca ne uitam, vom gasi un bloc cout (care este de fap un obiect, dar vom vorbi despre obiecte mai tarziu). Acesta trebuie sa primeasca “ceva” pentru a fi afisat pe ecran iar acel ceva este un textul nostru (string). Semnele << arata directia in care merge mesajul nostru si anume, catre output.
Return
Aproape am ajuns la final, mai avem ultima linie si aceasta este:
💡 Aceasta linie marcheaza finalul programului si incetarea executiei acestuia. Putem pune return oriunde in functie, rezultatul va fi acelasi, incetarea functiei in momentul in care se ajunge la linia respectiva. Acel 0 pe care il returnam este rezultatul functiei main si astfel ii spune sistemului de operare ca programul s-a executat cu succes.
In cazul in care am da spre exemplu un return 1, am transmite mai departe faptul ca programul nu s-a executat corespunzator, ceva s-a intamplat.
Si aici se termina explicatia primului nostru program, chiar daca sunt multe informatii, puteti reveni oricand la ele si cu timpul vor avea mai mult sens 🙂 . Pentru informatii suplimentare poti da oricand de mine folosind informatiile de aici.
➡ Sectiunea urmatoare:Sectiunea 2 – Valori intregi, variable intregi si comentarii

