Vreau sa fac functii care imi dau raspunsuri!
Obiectivul lectiei
Stii sa faci functii care fac ceva (afiseaza, modifica). Dar cum faci o functie carecalculeazaceva si iti da rezultatul inapoi?
Dupa aceasta lectie vei putea:
- Sa explici ce face return
- Sa explici sintaxa: return valoare;
- Sa aplici 3 moduri de a folosi rezultatul
- Sa aplici functii care fac vs. functii care produc
- Sa aplici tipul din declaratie = tipul din return
Incearca singur!
Testeaza inainte sa inveti!
Nu trebuie sa intelegi totul acum. Doar copiaza, ruleaza si observa ce se intampla.
patrat nu afiseaza nimic ea insasi. Ea doar returneaza un numar. Cine afiseaza? main()! Acolo decidem ce facem cu rezultatul.
patrat(6) in suma. Modifica linia int suma = a + b + c; ca sa includa si patrat(6). Ce rezultat obtii?
cout << patrat(10); Merge si fara variabila? Ce afiseaza?
int cub(int n) care returneaza n * n * n. Apeleaz-o cu cub(3) si afiseaza rezultatul.
Poti folosi patrat(6) direct in expresie, fara sa-l salvezi intr-o variabila:
int suma = a + b + c + patrat(6);
Sau poti crea o variabila noua: int d = patrat(6); si apoi int suma = a + b + c + d;
Da! Poti folosi rezultatul functiei direct in cout:
cout << patrat(10); va afisa 100.
Nu e obligatoriu sa salvezi rezultatul intr-o variabila. Il poti folosi direct!
Scrie functia exact ca patrat, dar cu n * n * n:
int cub(int n) { return n * n * n; }
Apoi in main: cout << cub(3); va afisa 27.
Ce face return?
Instructiunea return face doua lucruri simultan:
1. Trimite o valoare inapoi catre codul care a apelat functia (ca un raspuns).
2. Opreste functia imediat - orice cod de dupa return nu se mai executa.
Imagineza-ti un bucatar (functia) caruia ii dai ingredientele (parametrii: numarul de intrare). El le prelucreaza dupa reteta (calculul din corpul functiei) si iti aduce inapoi rezultatul (return) — de exemplu, un patrat sau o medie. Fara return, ar fi ca si cum bucatarul gateste... si nu aduce niciodata farfuria la masa!
Schema: tu (apelant) → dai ingrediente (parametri) → bucatar (functia) prelucreaza → return aduce rezultatul inapoi → tu folosesti rezultatul.
Sintaxa: return valoare;
Cand o functie ajunge la return, se opreste si trimite valoarea inapoi. Tipul valorii trebuie sa se potriveasca cu tipul de return al functiei.
Orice cod scris dupa return nu se mai executa. E ca un "exit" din functie.
3 moduri de a folosi rezultatul
Cand o functie returneaza o valoare, o putem folosi in mai multe feluri:
Functii care FAC vs. Functii care PRODUC
In C++ exista doua categorii mari de functii:
Nu returneaza nimic. Doar executa ceva (afiseaza, modifica).
Returneaza un rezultat pe care il putem folosi.
void = "Sterge masa!" - chelnerul face actiunea dar nu iti aduce nimic inapoi.
int = "Adu-mi nota de plata!" - chelnerul face ceva si iti aduce un rezultat (nota).
Tipul din declaratie = tipul din return
Daca functia spune ca returneaza int, atunci return trebuie sa trimita un int. La fel pentru float, bool, string, etc.
| Tipul functiei | return trebuie sa fie | Exemplu |
|---|---|---|
| int | un numar intreg | return 42; |
| float | un numar cu zecimale | return 3.14; |
| bool | true sau false | return true; |
| char | un caracter | return 'A'; |
| void | nimic (fara return) | return; (optional) |
return in if/else - pentru cazuri diferite
O functie poate avea mai multe instructiuni return, dar numai una se executa (prima la care ajunge). Acest lucru e util cand ai cazuri diferite:
| Pas | Ce se intampla | Rezultat |
|---|---|---|
| 1 | Se apeleaza maxim(7, 3) - a=7, b=3 | - |
| 2 | Se verifica: a > b? 7 > 3? | DA |
| 3 | Se executa return a; | return 7 |
| 4 | Functia se opreste. else NU se mai executa | - |
bool = true sau false
Functiile de tip bool sunt extrem de utile. Ele raspund la o intrebare cu true (da) sau false (nu). Le poti folosi direct in if!
Calculator de note cu functii
Un program care foloseste mai multe functii cu return: calculeaza media, verifica daca nota e de trecere, si gaseste nota maxima.
Exercitii practice
Exercitiul 1 (Nivel minim) - Analiza functiilor cu return
Raspunde la urmatoarele intrebari despre return:
- Avem functia
int triplu(int n) { return n * 3; }. Ce valoare are variabilaxdupa executia linieiint x = triplu(4) + triplu(2);? Explica pas cu pas. - Care este diferenta dintre
cout << n * 3;sireturn n * 3;in interiorul unei functii de tipint? Cand folosesti fiecare? - De ce e gresit sa scrii
patrat(5);pe o linie separata fara sa salvezi rezultatul? Ce se intampla cu valoarea calculata?
Raspunde numerotat: 1. ... 2. ... 3. ...
Exercitiul 2 (Nivel standard) - Programeaza cu functii return
Cerinta: Scrie un program C++ care contine 3 functii:
int minim(int a, int b)- returneaza minimul dintre doua numerebool esteDivizibil(int a, int b)- returneaza true dacaase imparte exact labfloat celsius_la_fahrenheit(float c)- conversia e: F = C * 9/5 + 32
In main(), demonstreaza fiecare functie cu cel putin 2 apeluri diferite.
Exemplu output:
Minimul dintre 7 si 3 este: 3
12 se imparte la 4? Da
25 grade C = 77 grade F
Indicii:
- Pentru
minim, foloseste if/else cu doua return-uri - Pentru
esteDivizibil, foloseste operatorul%(restul impartirii):return a % b == 0; - Pentru conversie, atentie la formula:
return c * 9.0 / 5 + 32;(9.0 nu 9, ca sa obtii zecimale)
Exercitiul 3 (Nivel performanta) - Explicatie scrisa
Cerinta: Explica in cuvintele tale diferenta dintre o functie void si una care returneaza o valoare. Foloseste o analogie proprie (alta decat cele din lectie).
Indicii:
- Descrie o situatie din viata reala unde "faci ceva" fara a da un rezultat inapoi (void)
- Descrie o situatie unde "faci ceva" SI dai un raspuns (return)
- Explica de ce este important sa folosesti valoarea returnata (sa nu o pierzi)
Cuvinte cheie de folosit: return, void, valoare returnata, apelant, tip de date, bool, true, false
Ce ai invatat astazi
- Ai invatat ce face return
- Acum stii sintaxa: return valoare;
- Ai descoperit 3 moduri de a folosi rezultatul
- Ai explorat functii care fac vs. functii care produc
- Ai inteles tipul din declaratie = tipul din return
- Ai invatat return in if/else - pentru cazuri diferite
- Acum stii bool = true sau false
- Ai descoperit calculator de note cu functii