L1 - De ce functii? (DRY, modularitate)
Fara functii, tot codul ar fi in main() - un bloc imens, greu de citit. Cu functii, fiecare operatie are un "loc" al ei. Daca vrei sa schimbi cum functioneaza adunarea, modifici doar functia aduna(), nu cauti prin sute de linii.
Avem 7 functii separate. Fiecare face un singur lucru. main() doar coordoneaza - nu calculeaza nimic direct.
L2 - Declararea functiilor
Fiecare functie are o semnatura clara: tip returnat, nume, parametri. In proiect avem 3 tipuri diferite:
| Functie | Tip returnat | Parametri | Ce face |
|---|---|---|---|
aduna(a, b) |
float | 2 x float | Returneaza suma |
afiseazaMeniu() |
void | niciunul | Doar afiseaza |
esteValidaImpartirea(b) |
bool | 1 x float | Returneaza true/false |
ridicaLaPutere(baza, n) |
float | float + int | Calculeaza baza^n |
L3 - Parametri (transmiterea datelor)
In proiect, toate functiile primesc date prin parametri prin valoare. Functia primeste o copie a valorii - originalul ramane neschimbat.
Am putea adauga o functie citesteNumere(float &a, float &b) care citeste ambele numere si le salveaza direct in variabilele din main() prin referinta. Asta ar elimina duplicarea codului de citire!
L4 - Return (rezultatul functiei)
Functiile de calcul folosesc return pentru a trimite rezultatul inapoi. Fara return, main() nu ar avea ce afisa!
void = functia face ceva (afiseaza, modifica) dar nu trimite un rezultat inapoi.
float/int/bool = functia calculeaza ceva si il trimite inapoi cu return.
L5 - Apelarea functiilor si ordinea declararii
In proiect, toate functiile sunt declarate inainte de main(). Aceasta este regula de baza: o functie trebuie declarata (sau cel putin anuntata cu un prototip) inainte de a fi apelata.
Daca pui o functie dupa main(), compilatorul va spune: "error: 'aduna' was not declared in this scope". Solutie: muta functia deasupra lui main() sau adauga un prototip.
do-while + switch = meniu interactiv
Combinatia do-while + switch este un pattern clasic pentru meniuri:
Chelnerul (meniul) vine la masa ta, iti arata optiunile, tu alegi, el aduce ce ai cerut, apoi intreaba din nou daca mai vrei ceva. Se repeta pana ceri nota (iesire).