1. Ce este bucla "Repeta de N ori"?
Componentele buclei:
| Component | Descriere | Exemplu |
|---|---|---|
| Numar iteratii (N) | De cate ori se repeta bucla | repeta de 5 ori |
| Corp bucla | Instructiunile care se repeta | mergi 10 pasi + roteste 15 grade |
| Contor implicit | Numara automatt: 1, 2, 3... N | iteratia 1, iteratia 2, ..., iteratia 5 |
2. Diagrama de flux a buclei
Exemplu complet: Schema logica pentru desenarea unui triunghi echilateral
↓
[i = 1] ← dreptunghi (initializare)
↓
◆ i ≤ 3 ? ◆ ← ROMB (conditia contorului)
DA ↓ NU →→→ STOP
↓
[mergi 120 pasi] ← dreptunghi (actiune)
↓
[roteste 120°] ← dreptunghi (actiune)
↓
[i = i + 1] ← dreptunghi (incrementare)
↓
↑↑↑ revine la romb (re-verifica i ≤ 3?)
Trasare pas cu pas: i=1: 1≤3=DA → executa → i=2; i=2: 2≤3=DA → executa → i=3; i=3: 3≤3=DA → executa → i=4; i=4: 4≤3=NU → iese. Corpul buclei s-a executat de exact 3 ori. Conditia (rombul) este verificata INAINTE de executia corpului — aceasta se numeste structura conditionata anterior.
3. Contorul de iteratii
for (i = 1; i <= N; i++). In Scratch, este implicit (ascuns).
Cum functioneaza contorul:
- Initializare: Contorul incepe de la 1 (sau 0, depinde de limbaj)
- Verificare: Inainte de fiecare iteratie, se verifica: contor ≤ N?
- Executie: Daca DA, se executa corpul buclei
- Incrementare: Dupa executie, contorul creste cu 1 (contor++)
- Reluare: Se revine la pasul 2 (verificare)
- Iesire: Cand contor > N, bucla se opreste
🎯 Exemplu: Urmarirea contorului pentru N = 5
| Iteratie | Valoare contor | Conditie (contor ≤ 5) | Actiune |
|---|---|---|---|
| - | 0 (initial) | - | Initializare |
| 1 | 1 | ✓ ADEVARAT (1 ≤ 5) | Executa corpul buclei |
| 2 | 2 | ✓ ADEVARAT (2 ≤ 5) | Executa corpul buclei |
| 3 | 3 | ✓ ADEVARAT (3 ≤ 5) | Executa corpul buclei |
| 4 | 4 | ✓ ADEVARAT (4 ≤ 5) | Executa corpul buclei |
| 5 | 5 | ✓ ADEVARAT (5 ≤ 5) | Executa corpul buclei |
| - | 6 | ✗ FALS (6 > 5) | IESI din bucla! |
Observa: Corpul buclei se executa de exact 5 ori (pentru contor = 1, 2, 3, 4, 5). Cand contorul ajunge la 6, conditia devine falsa si bucla se opreste.
4. Bucla "repeat" in Scratch
Cum se foloseste in Scratch:
- Click pe categoria Control
- Trage blocul repeat (10) in zona de script
- Schimba numarul 10 cu cate iteratii vrei (ex: 4 pentru patrat)
- Trage blocuri Motion, Looks, Sound inauntrul buclei
- Apasa green flag si urmareste executia!
🎮 Exemplu complet: Animatie de dans
Ce face: Schimba costume-ul (aspect) pisicii de 6 ori, cu o pauza de 0.2 secunde intre fiecare schimbare. Rezultat: o animatie fluida de dans cu 6 cadre!
🎨 Exemplu: Deseneaza o spirala colorata
Ce face: Deseneaza o spirala cu 36 de segmente. La fiecare iteratie: se misca 10 pasi, se roteste 10 grade, schimba culoarea pixului si se deplaseaza putin in dreapta (x+1). Rezultat: o spirala curcubeu frumoasa!
5. Tabele de urmarire (Trace Tables)
Cum se creeaza o tabela de urmarire:
- Identifica toate variabilele din program (inclusiv contorul implicit)
- Creeaza cate o coloana pentru fiecare variabila
- Adauga o coloana pentru "Iteratie" sau "Pas"
- Adauga coloane pentru output (ce se afiseaza/deseneaza)
- Simuleaza executia manual, rand cu rand
suma, produs). Cand vei invata un limbaj text (Python, C), vei putea accesa si contorul — dar nu este nevoie la acest nivel.
📊 Exemplu: Tabela pentru adunarea repetata a lui 5 (fara contor vizibil)
suma = 0
PENTRU i DE LA 1 LA 5 EXECUTA
suma = suma + 5
SFARSIT_PENTRU
afiseaza suma
STOP
| Iteratia | Suma (inainte) | Operatie | Suma (dupa) |
|---|---|---|---|
| - | 0 | initializare | 0 |
| 1 | 0 | suma = 0 + 5 | 5 |
| 2 | 5 | suma = 5 + 5 | 10 |
| 3 | 10 | suma = 10 + 5 | 15 |
| 4 | 15 | suma = 15 + 5 | 20 |
| 5 | 20 | suma = 20 + 5 | 25 |
| - | 25 | afiseaza | Output: 25 |
Rezultat final: suma = 25 (corect: 5 adaugat de 5 ori = 5 x 5 = 25)
🎯 Exercitiu: Completeaza tabelul pentru inmultire
repeta de 4 ori:
produs = produs * 2
afiseaza produs
| Iteratia | Produs (inainte) | Operatie | Produs (dupa) |
|---|---|---|---|
| - | 1 | initializare | 1 |
| 1 | 1 | produs = 1 * 2 | 2 |
| 2 | 2 | produs = 2 * 2 | 4 |
| 3 | 4 | produs = 4 * 2 | 8 |
| 4 | 8 | produs = 8 * 2 | 16 |
| - | 16 | afiseaza | Output: 16 |
Rezultat: 2⁴ = 16 (produs inmultit cu 2 de 4 ori)
6. Aplicatii practice ale buclei
Cand folosim "repeta de N ori":
| Domeniu | Exemplu | Numar iteratii |
|---|---|---|
| Geometrie | Deseneaza patrat, hexagon, stea | Numar laturi (4, 6, 5) |
| Animatie | Schimba 10 costume-uri pentru dans | Numar cadre (10) |
| Sunet | Canta melodia "La multi ani" de 3 ori | Numar repetari (3) |
| Matematica | Calculeaza suma primelor 100 de numere | Interval numeric (100) |
| Jocuri | Creeaza 5 inamici la start | Numar obiecte (5) |
| Input | Citeste notele a 20 de elevi | Numar date (20) |
🎓 Aplicatie in viata reala: Generator de parole
Vrei sa generezi o parola de 8 caractere aleatorii.
caractere = "abcdefghijklmnopqrstuvwxyz0123456789"
repeta de 8 ori:
pozitie_aleatoare = numar_aleatoriu_intre(0, 35)
caracter = caractere[pozitie_aleatoare]
parola = parola + caracter
afiseaza parola
Rezultat posibil: "x7k2m9qw" (se schimba la fiecare rulare pentru ca sunt caractere aleatorii!)
7. Structura conditionata anterior (CAT TIMP)
CAT TIMP <conditie> EXECUTA
<instructiuni>
SFARSIT
Cele trei tipuri de structuri repetitive (conform OMEN 3393/2017):
| Tip | Pseudocod formal | Conditia verificata | Executii minime |
|---|---|---|---|
| Conditionata anterior | CAT TIMP c EXECUTA |
INAINTE de corp | 0 (daca c=fals) |
| Conditionata posterior | REPETA |
DUPA corp | 1 (intotdeauna) |
| Cu contor | PENTRU i DE LA v1 LA v2 EXECUTA |
INAINTE de corp (i≤v2) | 0 (daca v1>v2) |
Exemplu: Numarare pana la valoare necunoscuta (CAT TIMP)
START
n = 1
CAT TIMP n ≤ 10 EXECUTA
afiseaza n
n = n + 1
SFARSIT
STOP
Schema logica:
START ↓ [n=1] ↓ ◆n≤10? ↓DA [afiseaza n] ↓ [n=n+1] ↓ ↑inapoi la romb
NU → STOP
De ce se numeste "conditionata anterior"? Rombul (conditia) este plasat INAINTEA corpului in schema logica. Fluxul este: conditie → (daca DA) corp → revine la conditie. Daca la prima verificare conditia e falsa, corpul nu se executa niciodata.