De ce contează?
Gândește-te la o rețetă de clătite: spargi ouăle, torni laptele, amesteci, prăjești. Pașii curg unul după altul, în ordine, fiecare pe rândul lui — nu poți prăji înainte să amesteci și nici nu sari peste „spargi ouăle". Un program cu structură liniară funcționează exact așa: calculatorul execută instrucțiunile pe rând, de sus în jos, fără să sară și fără să se întoarcă.
Ce este
Structura liniară (sau secvențială) este cea mai simplă formă de program: instrucțiunile se execută una după alta, în ordinea în care sunt scrise, de sus în jos. Nu există decizii (if) și nici repetări (for/while) — doar un șir drept de pași.
Aproape orice program respectă, la nivelul de bază, același tipar în trei timpi:
- Citește datele de intrare (
cin) - Calculează ce ai nevoie (atribuiri, expresii)
- Scrie rezultatul (
cout)
Cheia structurii liniare este că ordinea contează. Calculatorul nu „ghicește" ce vrei — execută strict pasul curent, apoi trece la următorul. Dacă afișezi un rezultat înainte să-l calculezi, vei afișa o valoare goală sau veche. Fiecare instrucțiune lucrează cu valorile lăsate de cele dinaintea ei.
Cum arată
Să urmărim un program scurt care interschimbă (face swap) între două variabile: vrem ca a să primească valoarea lui b și invers. Pornim de la a = 5 și b = 8.
Trucul corect folosește o a treia variabilă, temp, ca un pahar gol în care turnăm temporar conținutul, ca să nu pierdem o valoare când o suprascriem. Urmărim cele trei instrucțiuni una câte una.
5 | 8 | ? |
a | b | temp |
temp=? |
5 | 8 | 5 |
a | b | temp |
temp=a |
8 | 8 | 5 |
a | b | temp |
a=b |
8 | 5 | 5 |
a | b | temp |
b=temp |
Observă cum fiecare pas se bazează pe cel dinainte: la pasul 2 putem suprascrie a doar pentru că la pasul 1 i-am pus deja valoarea la adăpost în temp. Schimbă ordinea celor trei linii și swap-ul se strică — exact ca la rețetă, pașii curg într-o singură direcție.
Implementare C++
Programul citește două numere, le interschimbă cu ajutorul unei variabile temporare și le afișează. Fiecare linie din main se execută strict în ordine.
#include <iostream>
using namespace std;
int main() {
int a, b;
cin >> a >> b; // citim cele doua numere, ex: 5 8
// interschimbare cu o a treia variabila
int temp = a; // salvam vechea valoare a lui a
a = b; // a primeste valoarea lui b
b = temp; // b primeste vechea valoare a lui a
cout << a << " " << b << endl; // afiseaza: 8 5
return 0;
}Tiparul citește → calculează → scrie e vizibil clar: două linii de citire, trei de calcul, una de afișare. Mută orice linie din loc și rezultatul se schimbă sau dispare.
C++ are și o scurtătură pentru exact acest lucru — funcția swap, care face în spate aceiași trei pași:
#include <iostream>
using namespace std;
int main() {
int a, b;
cin >> a >> b; // ex: 5 8
swap(a, b); // interschimba a si b
cout << a << " " << b << endl; // afiseaza: 8 5
return 0;
}Greșeala clasică: încerci să interschimbi fără variabilă temporară, scriind direct a = b; urmat de b = a;. La prima linie a devine 8 — dar valoarea veche (5) e pierdută pentru totdeauna, fiindcă tocmai am suprascris-o. La a doua linie b = a îi dă lui b tot 8. Rezultatul: a=8, b=8, ambele egale, niciun swap. De aici și rostul lui temp: el ține valoarea la adăpost exact cât timp suprascriem. Reține: în structura liniară fiecare instrucțiune lucrează cu ce au lăsat cele dinaintea ei, așa că trebuie să vină după cele de care depinde.