Structura liniară

Bază~10 min11 pași

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 inchidere
Observația-cheie

Variabilele 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 5
Indiciu

Dacă î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șeli frecvente

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.

Întrebarea 1 / 3

Într-o structură liniară, instrucțiunile se execută: