1. Continut
De ce sunt importante buclele?
- ⚡ Eficienta: Scrii COD SCURT in loc de cod lung si repetitiv
- 🎨 Creativitate: Desenezi figuri complexe si creezi animatii fluide
- 🧹 Organizare: Codul tau e mai usor de citit si modificat
- ♾️ Continuitate: Poti crea actiuni care ruleaza la nesfarsit (jocuri, animatii)
2. Reprezentarea structurii repetitive: Schema logica si Pseudocod
A. Simbolurile schemei logice (standard)
| Simbol | Forma | Semnificatie |
|---|---|---|
| Oval / Elipsa | (forma ovala) | START sau STOP — inceputul si sfarsitul algoritmului |
| Dreptunghi | (forma dreptunghiulara) | Actiune / Instructiune (ex: muta_inainte, roteste) |
| Romb / Diamant | (forma de romb) | Decizie / Conditie — doua iesiri: DA si NU |
| Sageata | → ↑ ← | Flux de executie — ordinea in care se parcurg pasii |
Cele 3 tipuri de structuri repetitive in schema logica
Conditia se verifica INAINTE de executia corpului. Daca e falsa de la inceput, corpul nu se executa deloc. Corespunde in Scratch lui repeat until (cu conditia inversata).
START | v [Conditie?]--NU--> STOP | DA | [Actiune(i)] | <-----(revenire la Conditie)
Corpul buclei se executa CEL PUTIN O DATA, apoi se verifica conditia de continuare. Conditia se afla la sfarsit.
START | [Actiune(i)] | v [Conditie?]--DA--> (revenire la Actiune) | NU | STOP
Un contor (variabila i) numara repetitiile. Se stie exact de cate ori se executa corpul (N ori).
START | i <- 1 | v [i <= N ?]--NU--> STOP | DA | [Actiune(i)] | i <- i + 1 | <-----(revenire la conditie)
B. Pseudocod — reguli de notare si indentare
Reguli conform programei (OMEN 3393/2017):
- ▶ Cuvintele cheie se scriu cu litere mici: pentru, cat_timp, executa, sfarsit_pentru, sfarsit_cat_timp
- ▶ Corpul buclei se indenteaza (decalat la dreapta cu 2-4 spatii sau un TAB) fata de cuvintele-cheie
- ▶ Numele variabilelor: litere mici, fara spatii, fara diacritice (ex: contor, lungime, numar_pasi)
- ▶ Atribuirea se noteaza cu ← sau := (ex: i ← 1, lungime := 100)
- ▶ Fiecare structura are un cuvant de inchidere: sfarsit_pentru, sfarsit_cat_timp
Exemplu complet: desenare patrat — pseudocod si corespondent Scratch
Pseudocod (bucla cu contor):
// Desenare patrat - 4 laturi de 100
pentru i de la 1 la 4 executa
muta_inainte(100)
roteste_dreapta(90)
sfarsit_pentruIn Scratch (repeat 4):
Observatie: i este contorul — variabila care numara repetitiile (1, 2, 3, 4). Indentarea din pseudocod arata clar ca muta_inainte si roteste_dreapta se afla inauntrul buclei. In Scratch, acelasi lucru e vizibil prin incadrarea fizica a blocurilor in blocul portocaliu repeat.
2. Continut
Cand folosesti bucla "forever"?
- 🎮 Jocuri: Verificarea continua a coliziunilor si controalelor
- 🎬 Animatii: Miscari repetitive (plimbare, plutire, rotire)
- 🔊 Reactii: Ascultare continua pentru input de la utilizator
- 📊 Actualizari: Update constant al scorului, vietilor, cronometrului
📋 Exemplu: Sprite care se misca si ricoseaza
Explicatie: Sprite-ul se misca cu 10 pasi inainte PENTRU TOTDEAUNA. Cand atinge marginea, ricoseaza. Aceasta bucla ruleaza LA INFINIT pana cand apesi STOP. Perfect pentru un joc de tip "bouncing ball"!
3. Continut
Cand folosesti bucla "repeat N"?
- 📐 Figuri geometrice: Patrat (4), triunghi (3), hexagon (6)
- 🔊 Sunete repetate: Reda sunet de 5 ori
- 🎨 Clonare: Creeaza 10 clone ale unui sprite
- ✨ Efecte vizuale: Flash de 3 ori (show/hide alternativ)
📋 Exemplu: Desenare hexagon (6 laturi)
Explicatie: Hexagonul are 6 laturi egale si 6 colturi de 60 de grade (360/6 = 60). Bucla "repeat 6" executa "move + turn" de 6 ori, desenand cele 6 laturi. Dupa ce termina, programul se opreste.
4. Continut
Diferenta fata de "forever" si "repeat N":
| Bucla | Se opreste? | Cand? |
|---|---|---|
| forever | NU (infinit) | Doar la STOP manual |
| repeat N | DA | Dupa N repetitii |
| repeat until | DA | Cand conditia devine DA |
📋 Exemplu: Sprite care merge pana atinge marginea
Explicatie: Sprite-ul merge cu 5 pasi inainte PANA CAND atinge marginea. Nu stim cate repetitii vor fi (depinde de pozitia initiala), dar stim ca se va opri automat cand atinge marginea. Dupa oprire, spune un mesaj.
5. Continut
Cum functioneaza buclele imbricate?
1. Bucla exterioara incepe prima iteratie
2. Bucla interioara ruleaza COMPLET (toate iteratiile ei)
3. Bucla exterioara trece la a doua iteratie
4. Bucla interioara ruleaza DIN NOU complet
5. Process se repeta pana bucla exterioara termina
📋 Exemplu: Grila de stampile 3×3
Explicatie: Bucla exterioara (repeat 3) parcurge cele 3 randuri. Pentru FIECARE rand, bucla interioara (repeat 3) face 3 stampile si muta sprite-ul la dreapta cu 80 pasi. Dupa fiecare rand, sprite-ul revine la coloana 1 si coboara cu 80 pasi. Rezultat: 3 randuri × 3 coloane = grila 3×3 cu 9 stampile! Blocul stamp (din extensia Pen) lasa o copie vizuala a sprite-ului la pozitia curenta.
6. Continut
Cazuri frecvente de combinare:
Verifica MEREU o conditie. Folosit in jocuri pentru detectarea coliziunilor, tastatură, mouse.
Exemplu: forever { if <touching enemy> then { game over } }
Repeta de N ori, dar executa ceva DOAR daca conditia e adevarata in acea iteratie.
Exemplu: repeat 10 { if <numar par> then { stamp } } → Stampileaza doar la iteratii pare
Cauta ceva anume, verificand conditii suplimentare pe parcurs.
Exemplu: repeat until <touching edge> { if <touching coin> then { collect } move }
📋 Exemplu: Joc simplu de evitare
Explicatie: Bucla "forever" misca sprite-ul continuu. In FIECARE iteratie, verifica 3 conditii: (1) Atinge marginea? → se intoarce. (2) Atinge moneda? → mareste scorul. (3) Atinge inamicul? → game over. Logica complexa creata prin combinatie!
7. Continut
Tipuri de bucle infinite:
| Tip | Exemplu | Status |
|---|---|---|
| INTENTIONATA (OK) | forever { move, check collision } | ✅ Buna |
| ACCIDENTALA (BUG) | repeat until <1=2> { } | ❌ Rea |
| CONTROLATA | repeat 10 { say "Hi" } | ✅ Buna |