Variabile

Bază~12 min10 pași

De ce contează?

Imaginează-ți un sertar cu etichetă pe care scrii cu creionul. Eticheta (numele) rămâne fixă, dar conținutul îl poți șterge și rescrie oricând. O variabilă e exact asta: un sertar cu nume, în care ții o valoare pe care o poți schimba pe parcurs.

Ce este o variabilă

O variabilă este un loc în memorie cu un nume și un tip, în care păstrezi o valoare. Trei operații apar mereu:

  1. Declarare — anunți tipul și numele: int varsta;
  2. Inițializare — îi dai prima valoare: int varsta = 14;
  3. Atribuire — îi schimbi valoarea mai târziu: varsta = 15;
Observația-cheie

Declararea rezervă sertarul, dar nu îl golește. Dacă citești valoarea înainte să atribui ceva, primești ce „gunoi" era deja acolo. De aceea inițializarea contează.

Algoritm pas cu pas: ce se întâmplă în memorie

Urmărim secvența:

int a = 3;   // sertarul a tine 3
int b = a;   // se COPIAZA valoarea: b tine 3
a = 10;      // a devine 10; b ramane 3
Pasab
int a = 3;3
int b = a;33
a = 10;103

Cheia: b = a copiază valoarea, nu leagă cele două sertare. Sunt independente.

Schimbul a două variabile

O operație care apare des — interschimbarea valorilor. Cu o variabilă temporară:

#include <iostream>
using namespace std;

int main() {
    int x = 7, y = 2;
    int temp = x;   // salvam pe x ca sa nu il pierdem
    x = y;          // x devine 2
    y = temp;       // y devine 7
    cout << x << " " << y << "\n";   // 2 7
    return 0;
}
Observația-cheie

Fără temp, dacă faci direct x = y; y = x;, pierzi valoarea veche a lui x: după primul rând x și y sunt amândouă 2. Variabila temporară salvează valoarea înainte să o suprascrii. (În C++ ai și funcția swap(x, y) care face exact asta.)

Reguli pentru nume

  • Încep cu literă sau _, conțin litere, cifre și _. Fără spații, fără diacritice.
  • Sunt case-sensitive: suma și Suma sunt două variabile diferite.
  • Alege nume clare și scurte: suma, nrElemente, st, dr. Numele bun e jumătate din documentație.

Complexitate

Declararea și atribuirea sunt operații O(1) — cost constant, indiferent de valoare. Nu te costă nimic în plus să folosești variabile bine numite.

Greșeli frecvente

Greșeli frecvente cu variabile:

  • Folosire fără inițializare: int s; for(...) s += a[i];s pornește de la gunoi, nu de la 0. Scrie int s = 0;.
  • Redeclarare în buclă: pui int maxim = a[0]; în interiorul buclei → se resetează la fiecare pas și pierzi maximul găsit. Declar-o înainte de buclă.
  • Confuzie de domeniu (scope): o variabilă declarată în { } nu există în afara acelor acolade.
  • Suprascriere prematură: la swap fără temp, suprascrii valoarea înainte s-o salvezi.

De reținut

  • O variabilă = sertar cu nume și tip; declar-o, inițializeaz-o, apoi o poți reatribui.
  • b = a copiază valoarea — sertarele rămân independente.
  • Variabilele neinițializate conțin gunoi; inițializează mereu înainte de citire.

Întrebarea 1 / 3

Ce afișează codul: `int x; cout << x;` (fără să atribui nimic lui x)?