Sari la conținut

Capitolul 1 · Lecția 1.2 din 2

Echivalarea structurilor repetitive

Transformarea pentru ↔ cât timp ↔ repetă...până când: subiectul clasic de rescriere.

Capitolul 1: Algoritmi și pseudocodConținut verificat

Pe scurt pentru BAC · 4 idei

  • Orice buclă are inițializare, condiție, corp și actualizare, iar echivalările doar le rearanjează.
  • La trecerea de la pentru la cât timp, inițializarea iese înaintea buclei, iar actualizarea intră la finalul corpului.
  • repetă execută corpul măcar o dată, pe când cât timp poate să nu-l execute deloc, de aceea echivalarea se protejează cu dacă c atunci.
  • La transformare condiția se neagă: cât timp x < 10 devine până când x ≥ 10.
Pe această pagină6 secțiuni

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

  1. Uitarea negării condiției: bucla rulează invers.
  2. repetă fără protecție execută corpul și când nu trebuie.
  3. La pentru descrescător (pas -1), actualizarea devine i ← i - 1: pasul se copiază fidel.

Exemplul, în 4 limbaje

Alege limbajul în care dai examenul. Poți edita codul și îl poți rula direct aici. Programa oficiala de BAC (proba E.d) cere Pascal sau C/C++, la alegere. Python apare in manualele noi si e pus aici pentru inteles, nu ca limbaj de examen.

#include <iostream>
using namespace std;

int main() {
    int s = 0;
    for (int i = 1; i <= 5; i++) s += i;
    cout << s << " ";

    s = 0;
    int i = 1;
    while (i <= 5) { s += i; i++; }
    cout << s << " ";

    s = 0;
    i = 1;
    do { s += i; i++; } while (i <= 5);
    cout << s;
    return 0;
}

Bifează când ai terminat, ca s-o vezi citită pe toate dispozitivele.

Testează-te pe capitolul 1

Lecția în clipuri

Clipuri scurte, cu voce și subtitrări.

Folosim cookie-uri esențiale, fără de care site-ul nu merge, și cookie-uri de analiză anonimizate, ca să vedem ce pagini ajută. Detalii în politica de confidențialitate