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.
Î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:
- Citește lungimea
Lși lățimeal. - Calculează aria =
L * l. - Calculează perimetrul =
2 * (L + l). - 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;
}Capcane reale în structura liniară:
- Suprascriere prematură: la swap, dacă faci
x = y;înainte deint temp = x;, valoarea veche a luix(7) dispare — pierzi datele pentru pasul următor. - Citire după calcul: pui
cin >> L >> l;după liniaarie = L * l;→ calculezi cu gunoi. Citește datele înainte să le folosești. - Acumulator neinițializat: scrii
int arie;și apoiarie += ...într-o secvență fără să-l fi pus pe 0 — pornești de la o valoare nedefinită.
Complexitate
| Caz | Timp | Spațiu |
|---|---|---|
| oricare | O(1) | O(1) |
O secvență fixă de instrucțiuni rulează în timp constant: numărul de pași nu depinde de mărimea datelor.
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.