Cele trei structuri, aceeași logică
Orice buclă are: INIȚIALIZARE, CONDIȚIE, CORP, ACTUALIZARE. Echivalările le rearanjează.
pentru → cât timp
pentru i ← 1, n execută i ← 1
scrie i cât timp i ≤ n execută
scrie i
i ← i + 1
Inițializarea iese ÎNAINTE, actualizarea intră la FINALUL corpului.
cât timp → repetă...până când (capcana clasică)
repetă execută corpul MĂCAR O DATĂ; cât timp poate să nu-l execute deloc. Echivalarea corectă cere protecție:
cât timp c execută dacă c atunci
corp repetă
corp
până când NOT c
Fără dacă, la condiție inițial falsă cele două programe diferă: EXACT ce testează subiectul.
Inversarea condiției
cât timp rulează CÂT TIMP condiția e adevărată; până când se oprește CÂND devine adevărată. La transformare, condiția se NEAGĂ: cât timp x < 10 ↔ până când x ≥ 10.
Exemplu complet de rescriere (cerință tip)
i ← 10 i ← 10
cât timp i > 0 execută repetă
scrie i scrie i
i ← i - 2 i ← i - 2
până când i ≤ 0
Ambele afișează 10 8 6 4 2 ✓ (condiția inițială e adevărată, protecția nu era necesară aici, dar menționeaz-o!).
Reține
Trei mutări la echivalare: inițializarea înainte, actualizarea în corp, condiția NEGATĂ la trecerea cât timp ↔ până când. Plus protecția cu dacă pentru cazul "zero execuții".
Greșeli frecvente
- Uitarea negării condiției: bucla rulează invers.
- repetă fără protecție execută corpul și când nu trebuie.
- La pentru descrescător (pas -1), actualizarea devine i ← i - 1: pasul se copiază fidel.


