Invatare Atomica

Bucla Repeta - Repeta de N Ori

Progres lectie:
0%
🎯

Obiectivul lectiei

Scrii acelasi cod de 10 ori... Programul are 100 de linii pentru ceva simplu... Modifici o bucata si trebuie sa o schimbi in 10 locuri... Este imposibil de gestionat!

Dupa aceasta lectie vei putea:

  • Sa descrii structura repetitiva 'REPETA de N ori' in pseudocod
  • Sa identifici cand este nevoie de o bucla intr-un algoritm
  • Sa reprezentezi bucla 'REPETA' folosind schema logica
  • Sa scrii algoritmi care repeta o secventa de un numar cunoscut de ori
  • Sa transformi algoritmi cu pasi repetati in algoritmi cu bucle

Incearca singur!

🎮 Incearca tu!

Provocare: Deseneaza un patrat!

Inainte sa invatam teoria, sa vedem de ce avem nevoie de bucle. Incearca sa scrii pseudocod pentru a desena un patrat cu latura de 100 de pixeli.

  1. Deschide Scratch sau notepad pentru pseudocod
  2. Gandeste-te: ce actiuni trebuie sa repeti pentru un patrat?
  3. Un patrat are 4 laturi egale si 4 colturi de 90 de grade
  4. Scrie codul fara a folosi bucle (varianta lunga)
  5. Acum incearca sa il optimizezi - vezi unde se repeta codul
  6. Numara cate linii de cod ai scris
VARIANTA FARA BUCLA (12 linii):
START
  mergi 100 pasi inainte
  roteste-te 90 grade dreapta
  mergi 100 pasi inainte
  roteste-te 90 grade dreapta
  mergi 100 pasi inainte
  roteste-te 90 grade dreapta
  mergi 100 pasi inainte
  roteste-te 90 grade dreapta
STOP

VARIANTA CU BUCLA (5 linii):
START
  repeta de 4 ori:
    mergi 100 pasi inainte
    roteste-te 90 grade dreapta
STOP
Observa diferenta! Cu bucla ai redus codul de la 12 linii la 5 linii. Imaginează-ți daca voiai sa desenezi un hexagon (6 laturi) sau un cerc (360 de puncte)!
💡 Indiciu #1: Cum identific ce trebuie repetat?
Cauta actiuni identice sau foarte similare care apar una dupa alta. Pentru patrat: "mergi 100 + roteste 90" apare de 4 ori consecutiv. Acestea sunt actiunile pe care le pui intr-o bucla!
💡 Indiciu #2: Cum stiu de cate ori sa repet?
Numara de cate ori apare modelul! Patrat = 4 laturi → repeta de 4 ori. Triunghi = 3 laturi → repeta de 3 ori. Pentagon = 5 laturi → repeta de 5 ori. Numarul de repetari este egal cu numarul de laturi!
💡 Indiciu #3: Cum implementez in Scratch?
In Scratch: Control (orange) → "repeat (4)". Pune inauntru: Motion → "move (100) steps" si Motion → "turn right (90) degrees". Apasa green flag si urmareste!

🌟 Provocare Bonus (optional)

Incearca sa desenezi in Scratch:

  • Triunghi echilateral (3 laturi, 120 grade)
  • Hexagon regulat (6 laturi, 60 grade)
  • Stea cu 5 colturi (hint: roteste 144 grade!)

Foloseste formula: unghi rotatie = 360 / numar laturi

1

1. Continut

🔁
Ce este bucla "Repeta de N ori"?
Definitie: Bucla "repeta de N ori" (sau bucla cu numar fix de iteratii) este o structura de control care executa un bloc de instructiuni de un numar CUNOSCUT de ori. N este un numar intreg pozitiv care spune de cate ori se repeta executia.
Analogie din viata ta: Este ca un antrenament de fotbal! Antrenorul spune: "Faceti 10 genuflexiuni!" Tu stii exact ca trebuie sa faci 10, nu 9, nu 11. Numeri: 1, 2, 3... 10 si te opresti. La fel si calculatorul - executa codul de N ori si se opreste automat!

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
In cele mai multe limbaje de programare, contorul IMPLICIT incepe de la 1 si merge pana la N. In Scratch, nu vezi contorul dar el exista in fundal!
Daca pui N = 0, bucla NU se executa deloc! Daca pui un numar negativ, majoritatea limbajelor dau eroare sau il trateaza ca 0.
2

2. Continut

📊
Simbolul buclei in diagrama de flux
Reprezentare: In diagramele de flux, bucla "repeta de N ori" se reprezinta printr-un dreptunghi cu colturi rotunjite (ca pentru actiuni) dar cu o mentiune clara: "repeta N ori" sau "pentru i de la 1 la N".
START
initializeaza contor = 1
REPETA (N = 4)
mergi 100 pasi
roteste 90 grade
contor++
↻ repeta daca contor ≤ N
STOP
Sageata care revine inapoi (↻) indica faptul ca executia revine la inceputul buclei. Aceasta sageata are o conditie atasata: "contor ≤ N" (daca contorul e mai mic sau egal cu N, continua; altfel, iesi din bucla).

📋 Exemplu complet: Diagrama pentru desenarea unui triunghi

START
  ↓
[contor = 0]
  ↓
╔════════════════════════╗
║ BUCLA: repeta 3 ori ║
╠────────────────────────╣
║ [mergi 120 pasi] ║
║ ↓ ║
║ [roteste 120 grade] ║
║ ↓ ║
║ [contor = contor + 1] ║
║ ↓ ║
║ <contor < 3?> ║
║ DA ↶ (revine sus) ║
║ NU ↓ (continua) ║
╚════════════════════════╝
  ↓
STOP

Explicatie: Bucla se executa de 3 ori. La fiecare iteratie, se deseneaza o latura (mergi 120 pasi) si se roteste sprite-ul (120 grade). Dupa 3 iteratii, contor devine 3, conditia "contor < 3" devine falsa, si programul iese din bucla.

3

3. Continut

🔢
Contorul de iteratii (variabila de control)
Definitie: Contorul de iteratii este o variabila speciala care numara de cate ori s-a executat bucla. In multe limbaje (C, Java, Python), il vezi explicit: for (i = 1; i <= N; i++). In Scratch, este implicit (ascuns).

Cum functioneaza contorul:

  1. Initializare: Contorul incepe de la 1 (sau 0, depinde de limbaj)
  2. Verificare: Inainte de fiecare iteratie, se verifica: contor ≤ N?
  3. Executie: Daca DA, se executa corpul buclei
  4. Incrementare: Dupa executie, contorul creste cu 1 (contor++)
  5. Reluare: Se revine la pasul 2 (verificare)
  6. 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.

In Scratch, poti face contorul VIZIBIL creand o variabila numita "contor" si facand "set contor to 1" la inceput, apoi "change contor by 1" in bucla. Bifaza "show" pentru a vedea valoarea pe ecran in timp real!
Nu confunda "repeta N ori" cu "repeta PANA CAND contor = N"! Prima este o bucla cu numar fix (o sa invatam in lectia viitoare despre bucla cu conditie). Aici, N este cunoscut de la inceput!
4

4. Continut

🐱
Bucla "repeat" in Scratch
Implementare: In Scratch, blocul "repeat (N)" se gaseste in categoria Control (portocaliu). Blocurile pe care le pui inauntru se executa de N ori. Este una dintre cele mai folosite structuri in programarea Scratch!

Cum se foloseste in Scratch:

  1. Click pe categoria Control
  2. Trage blocul repeat (10) in zona de script
  3. Schimba numarul 10 cu cate iteratii vrei (ex: 4 pentru patrat)
  4. Trage blocuri Motion, Looks, Sound inauntrul buclei
  5. Apasa green flag si urmareste executia!

🎮 Exemplu complet: Animatie de dans

when [green flag ▼] clicked
repeat (6)
next costume
wait (0.2) seconds

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

when [green flag ▼] clicked
pen down
repeat (36)
move (10) steps
turn ↻ (10) degrees
change pen color by (10)
change x by (1)

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!

Pentru a vedea cat de rapid se executa bucla, adauga un bloc "wait (0.1) seconds" in interiorul ei. Astfel poti urmari fiecare iteratie ca in slow motion!
Atentie la buclele imbricate! "repeat (10)" care contine "repeat (10)" = 10 × 10 = 100 de executii! Asigura-te ca intelegi combinatia inainte de a porni programul.
5

5. Continut

📝
Tabele de urmarire (Trace Tables)
Definitie: O tabela de urmarire este un instrument pentru a verifica manual executia unui program. Creezi un tabel cu coloane pentru fiecare variabila si randuri pentru fiecare iteratie. Umpli tabelul pas cu pas pentru a urmari valorile.

Cum se creeaza o tabela de urmarire:

  1. Identifica toate variabilele din program (inclusiv contorul implicit)
  2. Creeaza cate o coloana pentru fiecare variabila
  3. Adauga o coloana pentru "Iteratie" sau "Pas"
  4. Adauga coloane pentru output (ce se afiseaza/deseneaza)
  5. Simuleaza executia manual, rand cu rand

📊 Exemplu: Tabela pentru suma numerelor de la 1 la 5

START
  suma = 0
  repeta de 5 ori (i de la 1 la 5):
    suma = suma + i
  afiseaza suma
STOP
Iteratie (i) Suma (inainte) Operatie Suma (dupa)
- 0 initializare 0
1 0 suma = 0 + 1 1
2 1 suma = 1 + 2 3
3 3 suma = 3 + 3 6
4 6 suma = 6 + 4 10
5 10 suma = 10 + 5 15
- 15 afiseaza Output: 15

Rezultat final: suma = 15 (care este corect: 1+2+3+4+5 = 15)

🎯 Exercitiu: Completeaza tabelul pentru inmultire

produs = 1
repeta de 4 ori (i de la 1 la 4):
  produs = produs * 2
afiseaza produs
Iteratie (i) 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)

Tabelele de urmarire sunt ESENTIALE pentru debugging! Daca programul tau nu face ce crezi ca ar trebui, scrie o tabela de urmarire pentru a vedea unde se pierde logica.
6

6. Continut

🚀
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)
Regula de aur: Foloseste "repeta de N ori" cand STII DINAINTE de cate ori trebuie sa repeti. Daca nu stii (ex: "repeta pana ajungi la perete"), foloseste alte tipuri de bucle (pe care le vei invata in lectia urmatoare)!

🎓 Aplicatie in viata reala: Generator de parole

Vrei sa generezi o parola de 8 caractere aleatorii.

parola = ""
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!)

Exercitii practice

Exercitiul 1 (Nivel minim) -

Exercitiu Teoretic
Analiza Algoritmului

Analizeaza urmatorul pseudocod si completeaza tabela de urmarire:

x = 10
y = 0
repeta de 5 ori (i de la 1 la 5):
    y = y + x
    x = x - 2
afiseaza x
afiseaza y

Sarcina: Creeaza o tabela cu coloanele: Iteratie (i), x (inainte), y (inainte), Operatii, x (dupa), y (dupa). Completeaza fiecare rand si gaseste valorile finale ale lui x si y.

Exercitiul 2 (Nivel standard) -

Exercitiu Scratch
Creeaza o animatie cu efect fade

In Scratch, creeaza un program care face sprite-ul sa devina transparent treptat (fade out effect).

Cerinte:

  • La start, sprite-ul este complet opac (ghost effect = 0)
  • Foloseste o bucla "repeat (10)"
  • La fiecare iteratie, creste ghost effect cu 10
  • Adauga o pauza de 0.2 secunde intre iteratii
  • La final, sprite-ul este complet transparent (ghost effect = 100)

Exercitiul 3 (Nivel performanta) -

Exercitiu Creativ
Proiect: Generator de labirint

Creeaza in Scratch un program care deseneaza un labirint simplu folosind bucle.

Idee:

  1. Activeaza "pen down" pentru a desena
  2. Foloseste bucle imbricate: "repeat (5)" in exterior, "repeat (4)" in interior
  3. Bucla interioara deseneaza un patrat mic
  4. Intre patrate, misca sprite-ul fara a desena (pen up → move → pen down)
  5. Rezultat: o grila de 5×4 patrate = cadrul unui labirint!

Exercitiul 4 (Nivel performanta) -

Exercitiu Matematic
Calculeaza factorial

Scrie un algoritm in pseudocod care calculeaza factorialul unui numar N (ex: 5! = 1×2×3×4×5 = 120).

Cerinte:

  • Input: N = 5
  • Foloseste o variabila "factorial" initializata cu 1
  • Foloseste bucla "repeta de N ori" cu contor i de la 1 la N
  • La fiecare iteratie: factorial = factorial × i
  • Output: factorial = 120

Ce ai invatat astazi

  • Conceptul:Bucla cu numar fix de iteratii - executa cod de N ori
  • Simbol:Dreptunghi cu mentiune "repeta N ori" in diagrama de flux
  • Contor:Variabila care numara iteratiile (1, 2, 3... N)
  • Scratch:Blocul "repeat (N)" din categoria Control (portocaliu)
  • Aplicatii:Desene geometrice, animatii, calcule matematice
  • Tabele:Instrumente de verificare a valorilor la fiecare pas
  • Avantaj:Cod mai scurt, mai curat si usor de intretinut

Urmatoarea lectie

Continua cu lectia urmatoare pentru a aprofunda cunostintele.

Continua →