# data[].attributes.body
1. Subprograme standard
Sunt deja făcute, gata de folosit — ca niște jucării cumpărate din magazin 🧸.
Nu trebuie să le construim noi, doar le chemăm să ne ajute.
Exemplu: sqrt(16) calculează rădăcina pătrată a lui 16.

2. Subprograme făcute de utilizator
Astea sunt create chiar de noi 👩‍💻, când avem nevoie de ceva special.
De exemplu, putem face o funcție care adună două numere sau care scrie un mesaj frumos pe ecran.

3. Subprograme apelate ca instrucțiuni
Sunt funcții care nu dau un rezultat, ci doar fac ceva.
De exemplu, pot curăța ecranul sau muta un text într-un loc nou.
Ele sunt ca un ajutor care face o treabă, dar nu ne aduce un răspuns.

4. Subprograme apelate ca operanzi
Acestea ne dau un rezultat — adică fac o treabă și ne spun răspunsul.
De exemplu: x = pow(3,2); – funcția calculează 3 la puterea 2 și dă înapoi 9.

# data[].attributes.body
1. Nu mai scrii același cod de multe ori

2. Codul tău e mai curat și mai ușor de înțeles

3. Poți împărți probleme mari în probleme mici și ușor de rezolvat

# data[].attributes.body
Un subprogram în C++ este o secvență de instrucțiuni grupate sub un nume propriu, care îndeplinește o anumită funcție și poate fi apelată oricând în cadrul programului principal sau din alte subprograme.

În C++, subprogramele se numesc funcții. Ele pot primi parametri (date de intrare) și pot returna o valoare programului care le-a apelat.

# data[].attributes.body
https://www.onlinegdb.com/edit/Gv07iVMls

# data[].attributes.body
Cum să înveți programarea în 60 minute

# data[].attributes.attachment_link.title
C++ Tutorial for Beginners - Learn C++ in 1 Hour

# data[].attributes.body
Ai un program mare, ca un robot care face mai multe lucruri — calculează, desenează, scrie pe ecran.

Fiecare lucru mic pe care îl face robotul poate fi pus într-o „cutiuță specială” — asta este un subprogram.

# data[].attributes.headline
👩‍💻 În C++, există două tipuri principale de subprograme:

# data[].attributes.subject
👩‍💻 În C++, există două tipuri principale de subprograme:

# data[].attributes.body
1. Funcții – fac o acțiune și pot întoarce un rezultat.
👉 De exemplu, o funcție care calculează suma a două numere.

2. Proceduri – fac o acțiune, dar nu întorc un rezultat (în C++ sunt tot funcții, dar cu tipul void)

# data[].attributes.headline
Un subprogram din C++ poate fi comparat cu o păpușă Matrioșka 

# data[].attributes.subject
Un subprogram din C++ poate fi comparat cu o păpușă Matrioșka 

# data[].attributes.body
Programul principal (main) este păpușa mare, ea conține toate celelalte.

Subprogramele (funcțiile) sunt păpușile mai mici din interior, fiecare are un rol special, face o parte din munca întregului program.

Când programul mare are nevoie de ceva, deschide păpușa mare, găsește păpușa potrivită (funcția), o folosește, apoi o pune înapoi.

# data[].attributes.body
https://wordwall.net/resource/101918613/clasificarea-subprogramelor

# data[].attributes.headline
În limbajul C/C++ se utilizează declaraţii şi definiţii de funcţii.

# data[].attributes.subject
În limbajul C/C++ se utilizează declaraţii şi definiţii de funcţii.

# data[].attributes.body
Declaraţia conţine antetul funcţiei şi informează compilatorul asupra tipului, numelui funcţiei şi a listei parametrilor formali (în care se poate indica tipul parametrilor formali şi numele acestora).

Declaraţiile de funcţii se numesc prototipuri, şi sunt constituite din antetul funcţiei.

# data[].attributes.headline
1. Subprograme care returnează o valoare (funcții)

# data[].attributes.subject
1. Subprograme care returnează o valoare (funcții)

# data[].attributes.body
Acestea primesc ceva, fac o treabă și îți dau ceva înapoi.

Au un tip de date: int, double, char etc.

Folosim când vrem să calculăm ceva și să folosim rezultatul.

# data[].attributes.headline
2. Subprograme care nu returnează valoare (proceduri sau funcții void)

# data[].attributes.subject
2. Subprograme care nu returnează valoare (proceduri sau funcții void)

# data[].attributes.body
Acestea fac doar o acțiune, nu dau nimic înapoi.

În C++ se scriu cu void.

Folosim când vrem doar să afișăm ceva sau să facem o treabă.

# data[].attributes.wish_content.attachment_props.question
Care este tipul de subprogram care nu returnează niciun rezultat?

# data[].attributes.headline
Domeniul de vizibilitate spune unde într-un program poți folosi o variabilă sau un subprogram.

# data[].attributes.subject
Domeniul de vizibilitate spune unde într-un program poți folosi o variabilă sau un subprogram.

# data[].attributes.body
Practic, te ajută să știi în ce locuri din cod poți accesa ceva.

# data[].attributes.body
O variabilă este locală dacă este declarată în interiorul unei funcții sau a unui bloc { }.

Aceasta există doar în acel bloc și dispare când blocul se termină.

# data[].attributes.body
O variabilă este globală dacă este declarată în afara tuturor funcțiilor.

Aceasta poate fi folosită în orice funcție din program.

# data[].attributes.body
Variabilele declarate în interiorul unui bloc de cod { } (de exemplu într-un if, for) există doar în acel bloc.

# data[].attributes.body
https://wordwall.net/resource/101920300/untitled2

# data[].attributes.body
Recursia este atunci când o funcție se apelează pe ea însăși pentru a rezolva o problemă.

Gândește-te la ea ca la o oglindă infinită: problema mare se împarte în probleme mai mici până ajungi la cazul de bază, care se poate rezolva direct.

# data[].attributes.body
O funcție recursivă are două părți importante:

Cazul de bază – situația simplă care se poate rezolva fără recursie (stop)

Cazul recursiv – apelul funcției pe ea însăși pentru a rezolva o problemă mai mică

# data[].attributes.headline
Un exemplu de recursie este șirul lui Fibonacci

# data[].attributes.subject
Un exemplu de recursie este șirul lui Fibonacci

# data[].attributes.body
Șirul lui Fibonacci este o succesiune de numere unde:

# data[].attributes.body
https://create.kahoot.it/details/af954559-6d58-4eeb-81e7-d87c9ef6a9a1