Care este diferența dintre „cât timp” și „repetă … până când”?
„Cât timp” testează condiția înainte și poate să nu execute corpul deloc. „Repetă … până când” testează după, deci execută corpul cel puțin o dată, și se oprește când condiția devine adevărată.
Ambele repetă un bloc de instrucțiuni. Diferă unde se testează condiția și ce înseamnă ea.
cât timp condiție execută testează înainte de fiecare execuție. Dacă la început condiția e falsă, corpul nu se execută deloc. Bucla continuă cât timp condiția este adevărată.
repetă … până când condiție testează după ce a executat corpul. Deci corpul se execută cel puțin o dată, chiar dacă condiția era adevărată de la început. Bucla se oprește când condiția devine adevărată, adică merge mai departe cât timp e falsă, invers față de cât timp.
De aici vine capcana de la Subiectul I: pentru n = 0, cât timp n > 0 nu face nimic, iar repetă … până când n ≤ 0 face o trecere. A doua capcană apare la traducerea în C++: do … while (condiție) continuă cât timp condiția e adevărată, deci condiția de la până când trebuie negată.
Lecția while și do-while le pune față în față.
Lecția care merge mai departe: while și do-while