Structura liniară

Bază~11 min10 pași

De ce contează?

O rețetă simplă de limonadă: stoarce lămâile, adaugă apă, adaugă zahăr, amestecă. Faci fiecare pas o singură dată, în ordine. Nu repeți niciun pas, nu sari niciunul. Aceasta este o structură liniară — cel mai simplu mod de a organiza un algoritm.

Ce este structura liniară

O structură liniară (sau secvențială) execută instrucțiunile o singură dată, în ordinea scrierii, de sus în jos. Nu există ramificații (if) și nici repetări (for/while). E baza pe care se construiesc toate celelalte structuri.

Observația-cheie

Într-o structură pur liniară, numărul de pași e fix, indiferent de datele de intrare. Dacă ai 5 instrucțiuni, se execută exact 5 — nici mai mult, nici mai puțin.

Algoritm pas cu pas: aria și perimetrul unui dreptunghi

Pași, în ordine:

  1. Citește lungimea L și lățimea l.
  2. Calculează aria = L * l.
  3. Calculează perimetrul = 2 * (L + l).
  4. Afișează rezultatele.
#include <iostream>
using namespace std;

int main() {
    int L, l;
    cin >> L >> l;

    int arie = L * l;
    int perimetru = 2 * (L + l);

    cout << "Aria: " << arie << "\n";
    cout << "Perimetrul: " << perimetru << "\n";
    return 0;
}

Pentru L = 5, l = 3: aria 15, perimetrul 16. Fiecare linie rulează o dată, în ordine.

Când ordinea e critică: schimbul a două valori

Pașii unei structuri liniare par interschimbabili, dar nu sunt. Schimbul lui x cu y:

#include <iostream>
using namespace std;

int main() {
    int x = 7, y = 2;

    int temp = x;   // pas 1: salvam valoarea veche a lui x
    x = y;          // pas 2: x devine 2
    y = temp;       // pas 3: y ia valoarea salvata, 7

    cout << x << " " << y << "\n";   // 2 7
    return 0;
}
Greșeli frecvente

Capcane reale în structura liniară:

  • Suprascriere prematură: la swap, dacă faci x = y; înainte de int temp = x;, valoarea veche a lui x (7) dispare — pierzi datele pentru pasul următor.
  • Citire după calcul: pui cin >> L >> l; după linia arie = L * l; → calculezi cu gunoi. Citește datele înainte să le folosești.
  • Acumulator neinițializat: scrii int arie; și apoi arie += ... într-o secvență fără să-l fi pus pe 0 — pornești de la o valoare nedefinită.

Complexitate

CazTimpSpațiu
oricareO(1)O(1)

O secvență fixă de instrucțiuni rulează în timp constant: numărul de pași nu depinde de mărimea datelor.

Observația-cheie

De îndată ce introduci o buclă peste n elemente, ieși din timpul constant și intri în O(n). Structura liniară e singura care garantează O(1) — vezi lecția-punte despre complexitate.

De reținut

  • Structura liniară = instrucțiuni executate o dată, în ordine, de sus în jos.
  • Ordinea pașilor poate fi critică (vezi schimbul cu variabilă temporară).
  • O secvență fixă rulează în O(1) — cost independent de date.

Întrebarea 1 / 3

Ce caracterizează o structură liniară (secvențială)?