Pe scurt
O secvență de instrucțiuni este o înșiruire de pași executați în ordinea scrisă. Când pregătești un ceai, întâi pui apă, apoi o încălzești, apoi pui pliculețul. Dacă schimbi ordinea, nu obții același rezultat. La fel se întâmplă într-un algoritm.
Într-o secvență putem atribui valori unor variabile. Atribuirea „total primește 0” pregătește o variabilă. Apoi „total primește total + 3” citește valoarea veche, adună 3 și o înlocuiește. După încă o instrucțiune „total primește total + 4”, variabila are valoarea 7. Poți scrie urmărirea: la început 0; după primul pas 3; după al doilea 7.
Ordinea contează și când se citesc sau se afișează date. Dacă trebuie să aduni două numere, le citești înainte de calcul și afișezi suma după calcul. Pentru intrările 3 și 4, o secvență corectă este: citește cele două numere; calculează ; afișează 7. O afișare înaintea calculului nu poate arăta suma nouă.
Ca să verifici o secvență, desenează un mic tabel: pe fiecare rând scrii instrucțiunea, iar lângă ea valorile variabilelor după executare. Nu sări peste pașii care par ușori. O variabilă poate fi schimbată de mai multe ori, iar la pasul următor se folosește valoarea ei cea mai recentă. Această urmărire este utilă chiar înainte să scrii un program.
Exemplu rezolvat — portofelul Ioanei. Ioana are 10 lei. Cheltuiește 4 lei pe o înghețată, apoi primește 6 lei de la bunica. Câți lei are la sfârșit? Răspunsul se află executând instrucțiunile în ordinea dată:
- Pornești cu sold primește 10.
- Ioana cheltuiește 4 lei: sold primește sold − 4, adică .
- Ioana primește 6 lei: sold primește sold + 6, adică .
- Comunici valoarea finală: 12 lei.
Dacă ai inversa pașii 2 și 3, soldul ar trece prin alte valori (16, apoi 12) și ar ajunge tot la 12, dar nu orice secvență se poate rearanja așa. Dacă ar fi existat și o instrucțiune „cumpără jucăria de 14 lei”, ordinea ar fi hotărât dacă Ioana avea destui bani în acel moment.
În detaliu
Structura secvențială execută instrucțiunile una după alta, în ordinea scrierii, fără salturi și fără alegeri. Cele mai frecvente instrucțiuni dintr-o secvență sunt: declararea unei variabile, citirea (cin >> a;), atribuirea (s = a + b;) și scrierea (cout << s;). Atribuirea evaluează partea dreaptă folosind starea curentă a variabilelor, apoi modifică variabila din stânga; fiecare instrucțiune vede deci modificările făcute de cele dinaintea ei. O valoare care nu a fost încă atribuită nu poate fi folosită.
Exemplul 1 — totalul în două etape. Variabila total pornește de la 0 și primește pe rând 3 și 4.
#include <iostream>
using namespace std;
int main() {
int total = 0;
total = total + 3;
total = total + 4;
cout << total;
return 0;
}
Stările succesive sunt total = 0, total = 3, total = 7; ieșirea este 7.
Exemplul 2 — secunde în ore, minute și secunde. Se citește durata de secunde. Calculele depind unele de altele, deci ordinea contează: întâi orele, apoi restul de secunde, din el minutele, apoi secundele rămase.
- (câtul întreg).
- secunde rămase.
- minute.
- secunde.
#include <iostream>
using namespace std;
int main() {
int s = 3725;
int h = s / 3600;
int r = s % 3600;
int m = r / 60;
int sec = r % 60;
cout << h << ' ' << m << ' ' << sec;
return 0;
}
Programul afișează 1 2 5: 3725 secunde înseamnă o oră, două minute și cinci secunde. Dacă m ar fi fost calculat înainte de r, instrucțiunea ar fi folosit o variabilă fără valoare și rezultatul ar fi fost nedefinit.
Interschimbarea cu o variabilă ajutătoare. Pentru a schimba valorile lui a și b folosești aux = a; a = b; b = aux;. Cu a = 2 și b = 3 stările sunt: aux = 2, a = 3, b = 2. Dacă ordinea ar fi a = b; b = a;, ambele ar ajunge 3, pentru că a primește valoarea lui b înainte ca vechea ei valoare să fie salvată.
Exemplul 3 — ordinea contează. Secvența s = 5; t = 1; s = s - t; t = s + t; dă s = 4 și t = 5. Dacă cele două atribuiri finale ar fi scrise invers, t = s + t; s = s - t;, ar rezulta t = 6 și s = -1. Instrucțiunile sunt aceleași, dar valorile finale diferă, pentru că a doua atribuire folosește valoarea lui s modificată de prima. Pentru a verifica o secvență, completezi un tabel cu un rând pe instrucțiune și o coloană pe variabilă.
O secvență nu alege și nu repetă; pentru acestea se folosesc structurile alternativă și repetitivă, în care instrucțiunile de mai sus apar ca blocuri.
Exemplul 4 — cifrele unui număr de trei cifre. Pentru se calculează pe rând c1 = n / 100 (4), c2 = n / 10 % 10 (47 % 10 = 7) și c3 = n % 10 (2). Numărul cu cifrele inversate este c3 * 100 + c2 * 10 + c1, adică . Tabelul stărilor, după fiecare instrucțiune: c1 = 4; c1 = 4, c2 = 7; c1 = 4, c2 = 7, c3 = 2; inv = 274. Instrucțiunile pentru c1, c2 și c3 sunt independente una de alta, deci ordinea lor poate fi schimbată; calculul lui inv trebuie însă scris după ele, pentru că folosește valorile lor.
Exemplul 5 — media a două numere întregi. Pentru citirile și , instrucțiunea m = (a + b) / 2; cu m de tip int dă 7, pentru că suma 15 se împarte întreg la 2. Cu double m = (a + b) / 2.0; rezultatul este 7,5. Parantezele sunt necesare: a + b / 2 ar da , deoarece împărțirea se face înaintea adunării. Alegerea tipului și a parantezelor face parte din urmărirea secvenței, nu un detaliu de scriere. La fel, suma a două valori mari, de pildă 2 000 000 000 + 2 000 000 000, depășește domeniul tipului int, iar rezultatul nu mai este cel scris pe hârtie.
Pentru admitere
La pseudocod, urmărește instrucțiunile în ordinea efectivă. Atribuirea se scrie cu săgeată: . Fiecare instrucțiune folosește valorile existente în acel moment, nu cele inițiale. O interschimbare fără variabilă ajutătoare folosește trei atribuiri aritmetice și este un subiect clasic de examen: dacă și , instrucțiunile , , dau pe rând , , .
Exemplu în formatul examenului. Ce se afișează în urma executării secvenței de mai jos?
int a = 2, b = 3;
a = a + b;
b = a - b;
a = a - b;
cout << a << ' ' << b;
- a)
5 2 - b)
2 3 - c)
3 2 - d)
3 5
Răspunsul corect este c). După a = a + b avem , . După b = a - b avem , iar rămâne 5. După a = a - b avem . Se afișează 3 2: valorile s-au interschimbat. Varianta a) este starea de după a doua instrucțiune, iar varianta b) ar însemna că secvența nu a schimbat nimic. Interschimbarea aritmetică nu funcționează la tipurile al căror rezultat depășește domeniul, de pildă dacă nu încape în int; interschimbarea cu variabilă ajutătoare nu are această limită. Dacă instrucțiunile conțin și citiri, valorile citite se notează în tabel la momentul în care sunt citite, nu la început.
Al doilea exemplu: permutare circulară. Fie a = 1, b = 2, c = 3. După aux = a; a = b; b = c; c = aux; urmărirea dă aux = 1; a = 2; b = 3; c = 1. Se afișează 2 3 1. Dacă aux = a ar fi scris după a = b, în aux ar ajunge valoarea 2, iar valoarea inițială 1 s-ar pierde.
Alt exemplu: urmărire cu restul. Ce se afișează pentru secvența int x = 17, y = 5; x = x % y; y = y + x; x = y - x; cout << x << ' ' << y;? Pe rând: x = 17 % 5 = 2; y = 5 + 2 = 7; x = 7 - 2 = 5. Se afișează 5 7. A treia instrucțiune folosește noul y (7) și noul x (2), nu valorile inițiale.
Greșeli frecvente
- Greșit: atribuirea schimbă variabila din dreapta.Corect: partea dreaptă se evaluează, apoi se actualizează variabila din stânga.
- Greșit: toate instrucțiunile folosesc valorile inițiale ale variabilelor.Corect: fiecare instrucțiune vede modificările făcute anterior.
- Greșit: ieșirea poate fi calculată după afișare fără schimbarea rezultatului.Corect: afișarea arată starea din momentul executării ei.
Pentru părinți
Copilul exersează urmărirea ordinii.
- Scrieți pe cartonașe „pornește cu 0”, „adaugă 3”, „adaugă 4”, „spune totalul”.
- Puneți-le în ordine.
- Notați totalul după fiecare pas.
- Schimbați două cartonașe și discutați efectul.
Întrebați-l: „Ce valoare folosește un pas: cea de la început sau cea rămasă după pasul anterior?”
Testează-te pe această lecție
Lecția o citești aici, fără cont. Testele pe lecții și capitole sunt în cont, cu grile originale Didaxis și explicația fiecăreia: gratuit 10 grile pe zi, fără limită cu Premium, 49 de lei pe lună pentru fiecare copil.
Înainte și după
Surse și referințe
Redactare proprie, conform programei:
- OMEN 3393/2017, anexa 2, Informatică și TIC, p. 6; rocnee.eu
- OMEN 3393/2017, anexa 2, Informatică și TIC, pp. 11–12; isj.tm.edu.ro
- UNSTPB, Regulament admitere licență 2026, Anexa II-1.2 p. Anx II-14 și Anexa XI-3 p. Anx XI-6–7 (PDF p. 64, 120–121); admitere.pub.ro
- OMECTS 4800/2010, anexa 2, Informatică, p. 3 și 6; aplicabilitatea 2027: OMEC 5211/2026, art. 3 alin. (10); edu.ro
- OMECTS 4800/2010, anexa 2, Informatică, p. 3–4; edu.ro
- OMECTS 4800/2010, anexa 2, Informatică, p. 5–6; edu.ro
Documente consultate
- OMEN 3393/2017, anexa 2, Informatică și TIC, clasa a V-a, p. 6; UNSTPB, admitere 2026, anexa XI-3, p. Anx XI-6–7
- Programa școlară de informatică, clasa a IX-a (OMECI 5099/2009, anexa 5), CNCE; rocnee.eu
- Programa școlară de informatică, clasa a IX-a, matematică-informatică (OMEC 6930/2025, anexa 42); rocnee.eu
- Programa de bacalaureat la informatică, matematică-informatică (anexa 2 la OMECTS 4800/2010), Ministerul Educației, p. 3 și 6; edu.ro
- Subiectele și baremele Bacalaureatului 2026; subiecte2026.edu.ro
Desene: Redactare proprie (desen original), conform OMEN 3393/2017, anexa 2, Informatică și TIC V; isj.tm.edu.ro
