Ce vei învăța astăzi?
După această lecție, vei stăpâni complet bucla PENTRU (for) și vei putea rezolva probleme simple cu aceasta.
Sintaxa Buclei PENTRU
Definiție: Bucla PENTRU (for) execută un bloc de instrucțiuni pentru un număr specific de ori, controlat de un contor care se modifică automat după fiecare iterație.
Analogie: Număratul până la 10
Gândește-te la bucla PENTRU ca la număratul până la 10:
Începe de la 1
Valoarea inițialăPână la 10
Valoarea finalăCrește cu 1
IncrementareStructura și Fluxul Buclei PENTRU
Reguli importante:
- Contorul ia automat valoarea următoare după fiecare iterație
- Pasul poate fi pozitiv (crescător) sau negativ (descrescător)
- Dacă pasul este omis, se consideră implicit 1
- Bucla se execută inclusiv pentru valoarea stop
(pentru pas pozitiv)
Bucla se repetă automat - contorul se incrementează singur după fiecare iterație până când depășește valoarea stop.
Exemple diverse cu PENTRU:
Exemplu 1: Numărătoare simplă
Exemplu 2: Numărătoare inversă
Exemplu 3: Numere pare
Exemplu 4: Suma numerelor
| Caracteristică | PENTRU (For) | CÂT TIMP (While) |
|---|---|---|
| Utilizare | Număr cunoscut de iterații | Număr necunoscut de iterații |
| Control | Automat (contor) | Manual (condiție) |
| Flexibilitate | Limitata - doar contoare | Mare - orice condiție |
| Sintaxă | Simplă și concisă | Mai complexă |
| Exemple | Parcurgere array, calcule | Validări, procesări |
Regulă practică: Folosește PENTRU când știi exact de câte ori trebuie să se repete bucla, și CÂT TIMP când nu știi numărul de iterații.
Parametrii Buclei PENTRU
START
Valoarea inițială a contorului
Prima valoare pe care o ia contorul
STOP
Valoarea finală a contorului
Ultima valoare inclusivă
PAS
Cu cât crește contorul
Poate fi pozitiv sau negativ
Exercițiu de completare - Suma numerelor pare:
Bancă de cuvinte:
Când să Folosești Bucla PENTRU
Situații Ideale pentru PENTRU
Test de înțelegere:
Câte iterații va executa următoarea buclă?
Exemplu Complex: Generare Triunghi Numeric
Ce face acest algoritm?
Variabile utilizate:
De ce PENTRU este ideal aici?
Știm exact de câte ori trebuie să se repete fiecare buclă. Bucla exterioară se execută de n ori, iar bucla interioară se execută de i ori pentru fiecare linie.
Execuție pas cu pas pentru n=3:
Linia 1 (i=1):
Linia 2 (i=2):
Linia 3 (i=3):
Rezultat final:
Capcane și Best Practices
Capcane comune cu PENTRU:
Best Practices pentru PENTRU:
PbInfo #2 - Suma n numere
Enunț:
Cerință: Se citește un număr natural n, apoi n numere întregi. Să se calculeze suma acestor n numere.
Date de intrare:
Programul citește de la tastatură numărul n, apoi n numere întregi, separate prin spații.
Date de ieșire:
Programul va afișa pe ecran suma celor n numere.
Exemplu:
Intrare:
5 10 20 30 40 50
Ieșire:
150
Explicație: 10+20+30+40+50 = 150
Cum gândim soluția cu FOR:
- Citim numărul n (câte numere vom citi)
- Pregătim o variabilă
suma ← 0 - Folosim for(i = 1; i <= n; i++) pentru a citi cele n numere
- La fiecare iterație: citește un număr x și adaugă-l la sumă:
suma = suma + x - Afișăm suma
Execuție cu FOR pentru n=3 și numerele 10, 20, 30:
De ce această problemă este bună pentru FOR?
Este perfectă pentru exersarea buclei FOR pentru că:
- Știm exact numărul de iterații (n)
- Contorul i crește de la 1 la n cu pasul 1
- Operația în buclă este simplă (citire și adunare)
- Este o problemă practică și utilă
Scrie soluția în C++ cu FOR:
Soluție corectă cu bucla FOR:
#include <iostream>
using namespace std;
int main() {
int n;
cin >> n;
int suma = 0;
for(int i = 1; i <= n; i++) {
int x;
cin >> x;
suma = suma + x; // sau suma += x;
}
cout << suma;
return 0;
}
Ce învățăm din această problemă:
- FOR perfect pentru citire repetată: Când trebuie să citești mai multe date, FOR este ideal
- Contor clar: i merge de la 1 la n, crește automat după fiecare iterație
- Variabilă auxiliară: Folosim x pentru a citi fiecare număr și apoi îl adunăm la sumă
- Acumulare: suma = suma + x este modelul clasic de acumulare în buclă
PbInfo #63 - Suma Gauss
Problemă clasică perfectă pentru FOR
Enunț:
Cerință: Se dă un număr natural n. Calculați suma S = 1 + 2 + 3 + ... + n.
Date de intrare:
Programul citește de la tastatură numărul n.
Date de ieșire:
Programul va afișa pe ecran suma S.
Exemplu:
Intrare:
100
Ieșire:
5050
Explicație: 1+2+3+...+100 = 5050 (formula lui Gauss: n*(n+1)/2)
Cum gândim soluția cu FOR:
- Citim numărul n
- Pregătim o variabilă
S ← 0 - Folosim for(i = 1; i <= n; i++)
- La fiecare pas:
S = S + i - Afișăm S
Execuție cu FOR pentru n=5:
De ce această problemă este bună?
Este perfectă pentru exersarea buclei FOR pentru că:
- Știm exact numărul de iterații (n)
- Contorul i crește de la 1 la n cu pasul 1
- Operația în buclă este simplă (adunare)
- Putem verifica ușor rezultatul cu formula Gauss
Scrie soluția în C++ cu FOR:
Soluție corectă cu bucla FOR:
#include <iostream>
using namespace std;
int main() {
int n;
cin >> n;
int S = 0;
for(int i = 1; i <= n; i++) {
S = S + i; // sau S += i;
}
cout << S;
return 0;
}
Varianta optimizată cu formula Gauss:
#include <iostream>
using namespace std;
int main() {
int n;
cin >> n;
// Formula lui Gauss
int S = n * (n + 1) / 2;
cout << S;
return 0;
}
Ce învățăm din această problemă:
- FOR perfect pentru sume: Când aduni elemente într-o sumă, FOR este ideal
- Contor clar: i merge de la 1 la n, crește automat după fiecare iterație
- Verificare ușoară: Poți verifica cu formula Gauss că bucla ta funcționează corect
- Performanță: Formula Gauss este O(1) vs FOR care este O(n) - bună ocazie să discuți eficiența
Exercițiul Practic: Probleme cu PENTRU
Sarcini de lucru
Completează următoarele sarcini pentru a-ți consolida cunoștințele despre bucla PENTRU
Sarcina 1: Analiză problemă PbInfo #2
Analizează problema "Suma n numere":
Pentru n=4 și numerele 5, 10, 15, 20, care va fi rezultatul corect?
Soluție pentru Sarcina 1:
Analiza pentru n=4, numere: 5, 10, 15, 20:
- Algoritmul cu FOR:
- Citim n=4
- suma = 0
- FOR i=1 până la 4:
- i=1: citește 5 → suma = 0 + 5 = 5
- i=2: citește 10 → suma = 5 + 10 = 15
- i=3: citește 15 → suma = 15 + 15 = 30
- i=4: citește 20 → suma = 30 + 20 = 50
- Rezultat corect:
50
Cum funcționează algoritmul cu FOR:
Sarcina 2: Scriere pseudocod pentru Suma Gauss
Cerință: Scrie pseudocodul pentru problema #63 (Suma Gauss) folosind DOAR bucla FOR, fără formula Gauss.
Soluție pentru Sarcina 2:
ALGORITMUL SumaGauss
VARIABILE
n, i, S: întreg
ÎNCEPUT
CITESTE n
S ← 0
PENTRU i ← 1, n EXECUTĂ
S ← S + i
SFÂRȘIT PENTRU
SCRIE S
SFÂRȘIT
Verificare pentru n=5: