Structuri de control – secvențială și alternativă
Elevii învață să descrie și să implementeze algoritmi cu structuri liniare și de decizie.
Evaluarea Națională
Structura secvențială (liniară)
Structura secvențială este cea mai simplă structură de control: instrucțiunile se execută una după alta, în ordinea scrierii, fiecare exact o dată, fără sărituri și fără repetări. Este drumul drept al unui algoritm: citire → calcul → afișare.
Exemplu în pseudocod — media a două note:
- citește n1, n2
- m ← (n1 + n2) / 2
- scrie m
Trei instrucțiuni, executate în ordine, fiecare o singură dată. În schema logică, structura secvențială arată ca o coloană de blocuri legate prin săgeți, de sus în jos, fără niciun romb.
De ce contează ordinea? Pentru că schimbarea ei strică rezultatul: dacă am scrie m înainte de a-l calcula, am afișa o valoare neinițializată; dacă am calcula media înainte de citirea notelor, am folosi valori care nu există încă. Întrebările de test dau adesea aceleași instrucțiuni amestecate și cer ordinea corectă — criteriul este mereu același: o variabilă trebuie să primească valoare înainte de a fi folosită.
Atenție și la paranteze în expresii: media este (n1 + n2) / 2, cu paranteze. Scrierea n1 + n2 / 2 calculează întâi împărțirea (regula ordinii operațiilor!) și dă alt rezultat — capcană aritmetică frecventă în subiecte.
Structura alternativă simplă: dacă – atunci – altfel
Structura alternativă (de decizie) permite algoritmului să aleagă între două drumuri, în funcție de o condiție — o propoziție care poate fi doar adevărată sau falsă. În pseudocod:
- dacă condiție atunci instrucțiuni1 altfel instrucțiuni2
Execuția: se evaluează condiția; dacă e adevărată, se execută doar ramura atunci; dacă e falsă, doar ramura altfel. Niciodată ambele — acesta este punctul verificat obsesiv la teste.
Exemplu — cel mai mare dintre două numere:
- citește a, b
- dacă a > b atunci scrie a
- altfel scrie b
Ramura altfel este opțională: forma „dacă–atunci” simplă face ceva doar când condiția e adevărată, iar când e falsă nu face nimic și merge mai departe (de exemplu: dacă nota < 5 atunci scrie „corigent”).
În schema logică, decizia se desenează în romb, din care ies două săgeți etichetate da și nu; cele două ramuri se reunesc apoi într-un singur drum.
Condițiile folosesc operatorii de comparare: < (mai mic), > (mai mare), <= (mai mic sau egal), >= (mai mare sau egal), = (egal) și ≠ (diferit). Capcană de citire: „a >= 10” este adevărată și pentru a = 10 — elevii pierd puncte tratând „mai mare sau egal” ca pe un simplu „mai mare”.
Condiții compuse: ȘI, SAU, NU
Deseori decizia depinde de mai multe condiții simultan. Condițiile simple se leagă cu operatorii logici:
- ȘI (și logic) – condiția compusă este adevărată doar dacă AMBELE condiții sunt adevărate: „x > 0 ȘI x < 10” este adevărată doar pentru numerele dintre 1 și 9 (strict între 0 și 10);
- SAU (sau logic) – condiția compusă este adevărată dacă cel puțin una dintre condiții este adevărată: „x < 0 SAU x > 100” este adevărată pentru -5 și pentru 200, dar falsă pentru 50;
- NU (negația) – inversează valoarea de adevăr: NU(x > 5) este totuna cu x <= 5.
Greșeala cu cele mai multe victime: negarea condițiilor. Negația lui „x > 5” este „x <= 5”, NU „x < 5” — cazul de egalitate trebuie să ajungă exact pe una dintre ramuri. La fel, contrariul lui „a = b” este „a ≠ b”.
A doua capcană clasică: intervalele. „x este între 3 și 7” se scrie x >= 3 ȘI x <= 7 — cu ȘI, pentru că ambele margini trebuie respectate simultan. Scrierea cu SAU (x >= 3 SAU x <= 7) este adevărată pentru orice număr, deci condiția nu mai filtrează nimic. Regulă practică: interval = ȘI; „în afara intervalului” = SAU.
Exemplu integrat: un elev promovează dacă „media >= 5 ȘI nota_purtare >= 6”. Cu media 9 dar purtare 4, condiția ȘI este falsă — nu promovează, oricât de tentant ar părea SAU-ul.
Structura alternativă multiplă și decizii imbricate
Când alegerea se face din mai mult de două variante, folosim structura alternativă multiplă sau decizii imbricate (un dacă în interiorul altui dacă).
Exemplul standard — semnul unui număr (trei variante: negativ, zero, pozitiv):
- citește x
- dacă x < 0 atunci scrie „negativ”
- altfel dacă x = 0 atunci scrie „zero”
- altfel scrie „pozitiv”
Execuția testează condițiile în ordine: prima condiție adevărată își execută ramura, iar restul se ignoră. Dacă x = -3, se afișează „negativ” și algoritmul nu mai verifică nimic altceva.
Alt exemplu frecvent: calificativele. Dacă media >= 9 → „foarte bine”; altfel dacă media >= 7 → „bine”; altfel dacă media >= 5 → „suficient”; altfel → „insuficient”. Observă subtilitatea care se punctează: pe ramura „bine” nu mai e nevoie de condiția „media < 9”, pentru că acolo se ajunge doar dacă prima condiție a fost falsă — altfel-ul o garantează deja.
La deciziile imbricate, fiecare altfel se leagă de cel mai apropiat dacă fără altfel — la urmărirea execuției pe hârtie, alinierea (indentarea) rândurilor arată împerecherea corectă.
Greșeala tipică în construcțiile în trepte: ordinea condițiilor. Dacă începi cu „media >= 5 → suficient”, un elev cu media 10 primește tot „suficient”, pentru că prima condiție adevărată câștigă. La praguri, condițiile se așază de la cel mai restrictiv la cel mai puțin restrictiv (sau invers, coborând), niciodată amestecat.
Urmărirea execuției și aplicații rezolvate
La evaluare, cel mai des se dă un algoritm cu decizii și se cere ce afișează pentru anumite date de intrare. Metoda sigură: tabelul de urmărire — execuți pas cu pas și notezi valoarea fiecărei variabile și valoarea de adevăr a fiecărei condiții.
Exemplu rezolvat:
- citește a, b (se citesc 4 și 9)
- dacă a > b atunci m ← a altfel m ← b
- dacă m ≠ a atunci scrie „al doilea” altfel scrie „primul”
Urmărire: a = 4, b = 9. Prima decizie: 4 > 9 este fals, deci m ← b, adică m = 9. A doua decizie: m ≠ a înseamnă 9 ≠ 4, adevărat, deci se afișează „al doilea”.
Alte aplicații care trebuie stăpânite la această clasă:
- paritatea: un număr n este par dacă restul împărțirii la 2 este 0 (n împărțit la 2 dă rest 0); altfel este impar;
- maximul a trei numere: se compară primele două, iar câștigătorul se compară cu al treilea — două decizii înlănțuite;
- divizibilitatea: n este divizibil cu k dacă restul împărțirii lui n la k este 0.
Sfaturi verificate de punctaj: citește condiția exact (>= nu este >); execută doar ramura corespunzătoare valorii de adevăr; nu executa niciodată ambele ramuri; și nu te opri din urmărire la prima decizie — subiectele înlănțuie de obicei două-trei decizii tocmai ca să vadă dacă duci execuția până la capăt.
De reținut
- structură secvențială
- structură în care instrucțiunile se execută una după alta, în ordinea scrierii, fiecare exact o dată
- structură alternativă
- structură de decizie care alege între două ramuri de instrucțiuni în funcție de valoarea de adevăr a unei condiții
- condiție
- propoziție care poate fi doar adevărată sau falsă, construită de regulă cu operatori de comparare
- ramura atunci
- instrucțiunile executate exclusiv când condiția deciziei este adevărată
- ramura altfel
- instrucțiunile executate exclusiv când condiția deciziei este falsă; această ramură poate lipsi
- operatorul ȘI
- operator logic pentru care condiția compusă este adevărată doar dacă ambele condiții componente sunt adevărate
- operatorul SAU
- operator logic pentru care condiția compusă este adevărată dacă cel puțin una dintre condițiile componente este adevărată
- negație (NU)
- operator logic care inversează valoarea de adevăr; negația lui x > 5 este x <= 5
- structură alternativă multiplă
- înlănțuire de decizii (altfel dacă) prin care se alege una dintre mai mult de două variante; prima condiție adevărată își execută ramura
- număr par
- număr al cărui rest la împărțirea cu 2 este 0
Greșeli frecvente
Greșit: Executarea ambelor ramuri ale unei decizii la urmărirea algoritmului
Corect: Se execută exclusiv ramura corespunzătoare valorii de adevăr a condiției: atunci pentru adevărat, altfel pentru fals — niciodată ambele
Greșit: Negarea condiției x > 5 prin x < 5
Corect: Negația lui x > 5 este x <= 5; cazul de egalitate trebuie să ajungă pe exact una dintre ramuri
Greșit: Scrierea intervalului „între 3 și 7” cu SAU: x >= 3 SAU x <= 7
Corect: Apartenența la interval cere ambele margini simultan, deci ȘI: x >= 3 ȘI x <= 7; varianta cu SAU este adevărată pentru orice număr
Greșit: Tratarea condiției a >= 10 ca falsă pentru a = 10
Corect: Operatorul >= înseamnă mai mare SAU egal, deci pentru a = 10 condiția este adevărată
Greșit: Așezarea pragurilor în ordine greșită în alternativa multiplă
Corect: Prima condiție adevărată câștigă; pragurile se ordonează de la cel mai restrictiv spre cel mai puțin restrictiv, altfel media 10 poate primi calificativul „suficient”
Test — 6 întrebări ca la examen
1. Într-o structură secvențială, instrucțiunile se execută:
- doar dacă o condiție este adevărată
- în ordinea scrierii, fiecare exact o dată
- în orice ordine, rezultatul e același
- repetat, până la îndeplinirea unei condiții
Vezi răspunsul
în ordinea scrierii, fiecare exact o dată. Secvențial înseamnă liniar: pas după pas, de sus în jos, fără sărituri și repetări. Varianta cu ordinea indiferentă e capcana — schimbarea ordinii poate folosi variabile înainte ca ele să primească valoare.
2. Se execută: citește a, b (se citesc 7 și 2); dacă a < b atunci scrie a altfel scrie b. Ce se afișează?
- 7
- 2
- 7 și apoi 2
- nimic
Vezi răspunsul
2. Condiția 7 < 2 este falsă, deci se execută ramura altfel: se afișează b, adică 2. Varianta „7 și apoi 2” pică în greșeala clasică de a executa ambele ramuri ale deciziei.
3. Care condiție este adevărată exact pentru numerele din intervalul de la 10 la 20, inclusiv capetele?
- x >= 10 SAU x <= 20
- x > 10 ȘI x < 20
- x >= 10 ȘI x <= 20
- x >= 20 ȘI x <= 10
Vezi răspunsul
x >= 10 ȘI x <= 20. Apartenența la interval cere ambele margini simultan, cu >= și <= pentru includerea capetelor. Prima variantă, cu SAU, e adevărată pentru orice număr; a doua exclude capetele 10 și 20; a patra nu e îndeplinită de niciun număr.
4. Negația condiției „nota >= 5” este:
- nota <= 5
- nota < 5
- nota > 5
- nota = 5
Vezi răspunsul
nota < 5. Contrariul lui „mai mare sau egal cu 5” este „strict mai mic decât 5”. Varianta nota <= 5 e capcana: pentru nota = 5, atât condiția inițială cât și această „negație” ar fi adevărate simultan, ceea ce e imposibil pentru o negație corectă.
5. Un număr n este par dacă:
- n se împarte la 2 cu restul 1
- restul împărțirii lui n la 2 este 0
- n este mai mare decât 2
- ultima cifră a lui n este impară
Vezi răspunsul
restul împărțirii lui n la 2 este 0. Paritatea se verifică prin restul împărțirii la 2: rest 0 înseamnă par. Restul 1 — distractorul simetric — caracterizează numerele impare, iar mărimea numărului nu are nicio legătură cu paritatea.
6. Se execută: citește x (se citește 8); dacă x > 10 atunci y ← x - 10 altfel dacă x > 5 atunci y ← x + 10 altfel y ← 0; scrie y. Ce valoare se afișează?
- 0
- 18
- 8
- 10
Vezi răspunsul
18. Prima condiție, 8 > 10, este falsă; se trece la a doua, 8 > 5, adevărată, deci y ← 8 + 10 = 18. Varianta 0 e capcana celor care sar direct la ultimul altfel fără să verifice condiția intermediară — în alternativa multiplă, prima condiție adevărată câștigă.
Deschide varianta interactivă — cu AI care îți explică