Zmienna to nazwane miejsce w pamięci komputera, w którym Twój program trzyma jakąś wartość — liczbę, tekst, listę, cokolwiek. Dajesz temu miejscu nazwę, żeby nie musieć pamiętać adresu w pamięci, i odtąd odwołujesz się do danych po ludzku: wiek, cena, email. Wartość możesz w trakcie działania programu odczytać albo nadpisać nową — stąd „zmienna”, bo jej zawartość może się zmieniać.
Do czego to służy
Zmienna jest najprostszym sposobem na przechowanie i nazwanie danych, z którymi program coś robi. Bez niej musiałbyś wszystko wpisywać na sztywno, a tak liczysz raz i używasz wielokrotnie. Pod spodem nazwa zmiennej to etykieta wskazująca na konkretny fragment pamięci; interpreter albo kompilator tłumaczy ją na adres.
Każda zmienna ma jakiś typ — liczba całkowita, zmiennoprzecinkowa, tekst (string), wartość logiczna (bool). W językach jak Python czy JavaScript typ jest dobierany dynamicznie w trakcie działania, w C++ czy Javie deklarujesz go z góry. Ma też zasięg (scope): zmienna lokalna żyje tylko wewnątrz funkcji, globalna jest widoczna wszędzie.
Przykład z praktyki
W Pythonie tworzysz zmienną przez zwykłe przypisanie, bez żadnej ceremonii:
licznik = 0— zakładasz zmienną i wkładasz do niej zerolicznik = licznik + 1— odczytujesz starą wartość i zapisujesz nowąprint(licznik)— wypisze1
W JavaScript masz let (wartość można zmieniać) i const (stała — przypisujesz raz). Reguła kciuka: używaj const, dopóki naprawdę nie musisz czegoś nadpisać.
Na co uważać
Najczęstszy zgrzyt początkujących to mylenie przypisania z porównaniem: = nadaje wartość, a == sprawdza równość. Drugi klasyk to użycie zmiennej, której nigdy nie zainicjalizowałeś — dostaniesz błąd albo, gorzej, undefined/null, które rozsypie się dopiero trzy ekrany dalej. Trzymaj się też czytelnych nazw: x i tmp2 mszczą się po tygodniu, gdy wracasz do własnego kodu.
I jeszcze jedno: nazwa zmiennej to nie sama wartość. Gdy przypiszesz jedną listę do drugiej zmiennej, w wielu językach obie wskazują na ten sam obiekt — zmiana przez jedną nazwę widać przez drugą.
Pojęcia powiązane: stała (constant), typ danych, zasięg zmiennej (scope), przypisanie, referencja, parametr funkcji, literał.