De ce contează?
Dimineața faci mereu aceiași pași și în aceeași ordine: te trezești, te speli pe dinți, te îmbraci, iei micul dejun. Dacă le inversezi, rezultatul e greșit — nu poți lua micul dejun înainte să te îmbraci. Structura liniară în programare funcționează exact la fel: instrucțiunile se execută de sus în jos, una câte una, fiecare bazându-se pe ce a făcut cea anterioară.
Ce este structura liniară?
Structura liniară (sau secvențială) este cel mai simplu mod de organizare a instrucțiunilor: se execută una câte una, în ordinea în care sunt scrise.
Nu există salturi, repetări sau alegeri — doar o secvență directă de pași.
Pas 1
Pas 2
Pas 3
...Exemplu: calculul ariei unui dreptunghi
#include <iostream>
using namespace std;
int main() {
// Pasul 1: citeste datele
int latime, inaltime;
cin >> latime >> inaltime;
// Pasul 2: calculeaza
int arie = latime * inaltime;
int perimetru = 2 * (latime + inaltime);
// Pasul 3: afiseaza rezultatele
cout << "Arie: " << arie << endl;
cout << "Perimetru: " << perimetru << endl;
return 0;
}Fiecare linie se execută o singură dată, în ordine. Nu există decizie sau repetare.
Blocuri de cod { }
Acoladele grupează mai multe instrucțiuni ca un bloc:
{
int x = 5;
int y = x + 3;
cout << y;
}
// x si y nu mai exista dupa acolada de inchidereVariabilele declarate în interiorul unui bloc { } există doar în acel bloc — dispar când acolada de închidere e atinsă. Aceasta se numește domeniu de vizibilitate (scope). Dacă încerci să folosești x după blocul în care l-ai declarat, compilatorul dă eroare.
Ordinea instrucțiunilor contează
// CORECT: calculeaza inainte sa afiseze
int a = 5;
int b = a * 2; // b = 10
cout << b; // afiseaza 10
// GRESIT: afiseaza inainte sa calculeze
int c;
cout << c; // afiseaza valoare nedefinita!
c = 7;Schimbul de valori (swap)
Un exemplu clasic unde ordinea e critică:
int a = 5, b = 3;
// Schimb corect -- cu variabila auxiliara
int temp = a; // pas 1: salvezi a
a = b; // pas 2: a ia valoarea lui b
b = temp; // pas 3: b ia vechea valoare a lui a
// Acum a=3, b=5
cout << a << " " << b; // 3 5Dacă încerci a = b; b = a; fără temp, pierzi valoarea inițială a lui a la primul pas. Când execuți b = a, a are deja valoarea lui b — swapul nu a funcționat. Variabila auxiliară temp e esențială.
Greșeala 1: Uiți ; la sfârșitul unei instrucțiuni. int x = 5 fără ; e eroare de compilare. Fiecare instrucțiune se termină cu ;.
Greșeala 2: Confunzi declararea cu atribuirea ulterioară. int x = 5; declară și inițializează. x = 5; (fără int) atribuie unei variabile deja declarate. int x; int x = 5; e eroare — variabila declarată de două ori.
Greșeala 3: Scrii instrucțiunile în ordinea greșită față de dependențele dintre ele. Dacă b depinde de a, calculează a primul.