La finalul episodului anterior am ales limbajul — Python pentru AI și date, JavaScript pentru web. Acum intrăm în concret: indiferent de limbaj, există patru concepte pe care le vei folosi în fiecare program pe care îl scrii vreodată. Nu sunt specifice Python, nu sunt specifice JavaScript — sunt universale. Există în toate cele 700+ limbaje de programare cunoscute, cu sintaxe diferite, cu aceeași logică.
Variabilele — cutii cu etichete în memoria calculatorului
Imaginează-ți un dulap uriaș cu miliarde de sertare. Fiecare sertar are o etichetă lipită pe el (numele variabilei) și conține ceva înăuntru (valoarea). Calculatorul folosește această organizare pentru a ține minte informații pe durata execuției unui program.
În Python, creezi o variabilă scriind numele ei, semnul = și valoarea:
# int — număr întreg
varsta = 25
numar_utilizatori = 1_400_000
# float — număr zecimal
pret = 19.99
rata_dobanda = 3.14
# str — text (string)
nume = "Andrei"
oras = "București"
# bool — adevărat sau fals
este_abonat = True
emailul_verificat = FalseValorile se pot schimba oricând — de aceea se numesc „variabile":
scor = 0
print(scor) # 0
scor = scor + 10
print(scor) # 10
scor = scor + 5
print(scor) # 15Un detaliu important: în Python, True și False se scriu cu literă mare obligatoriu. Este una din cele mai frecvente greșeli ale începătorilor — true cu minusculă produce eroare.
Și poate cea mai importantă lecție despre variabile: numele contează enorm. Python folosește convenția snake_case — cuvinte separate cu _. Variabila x nu îți spune nimic. varsta_utilizator îți spune totul, fără niciun comentariu adăugat. Codul este citit de oameni de zece ori mai des decât este scris.
Condițiile — semafoarele codului
Orice program trebuie să ia decizii. Dacă utilizatorul are abonament activ, afișează conținutul premium. Dacă nu, redirecționează spre pagina de plată. Dacă temperatura e sub zero, trimite avertisment. Această logică de decizie se implementează prin condiții.
Condițiile funcționează exact ca un semafor: if este verde (mergi), elif este galben (verifică altceva), else este roșu (calea implicită):
nota = 8.5
if nota >= 9:
print("Excelent!")
elif nota >= 7:
print("Bine!")
elif nota >= 5:
print("Suficient")
else:
print("Nesatisfăcător")
# Rezultat: Bine!Programul verifică condițiile în ordine, de sus în jos. Când găsește una adevărată, execută blocul corespunzător și sare peste restul. Poți înlănțui oricâte elif-uri ai nevoie.
Buclele — nu mai scrie același lucru de 1.000 de ori
Imaginează-ți că ai o listă cu 1.000 de produse și trebuie să afișezi prețul fiecăruia. Fără bucle, ar trebui să scrii 1.000 de linii de cod identice. Cu o buclă, scrii trei linii și calculatorul repetă operația de câte ori e nevoie.
Există două tipuri de bucle, cu utilizări diferite:
For loop — când știi dinainte câte iterații vrei (ca lista de cumpărături: știi câte produse ai):
fructe = ["măr", "banană", "portocală"]
for fruct in fructe:
print(f"Am cumpărat: {fruct}")
# Am cumpărat: măr
# Am cumpărat: banană
# Am cumpărat: portocalăWhile loop — când nu știi câte iterații vor fi (ca rutina de snooze: nu știi câte apăsări va dura până te trezești):
baterie = 100
while baterie > 20:
print(f"Baterie: {baterie}%")
baterie = baterie - 15
print("Conectează încărcătorul!")Regula practică: dacă iterezi peste o listă sau un număr fix de pași, alegi for. Dacă repeți cât o condiție rămâne adevărată și nu știi dinainte câte runde vor fi, alegi while. For loops sunt și ușor mai rapide în Python — limbajul le optimizează intern.
Funcțiile — mașina de cafea a programatorului
O mașină de cafea primește cafea și apă (intrări), execută un proces intern pe care nu trebuie să îl înțelegi, și produce espresso (ieșire). Funcțiile dintr-un program funcționează exact la fel: primesc date (parametri), execută o serie de instrucțiuni, și returnează un rezultat.
Cel mai important principiu din programare legat de funcții este DRY — Don't Repeat Yourself (Nu te repeta). Formulat de Andy Hunt și Dave Thomas în cartea The Pragmatic Programmer: dacă scrii același cod de trei ori, acela ar trebui să fie o funcție. Beneficiul: dacă trebuie să modifici ceva, o modifici într-un singur loc, nu în treizeci.
# Funcție simplă — fără parametri
def saluta():
print("Bună ziua!")
saluta() # Bună ziua!
saluta() # Bună ziua! — același cod, apelat din nou
# Funcție cu parametru
def saluta_persoana(nume):
print(f"Bună ziua, {nume}!")
saluta_persoana("Maria") # Bună ziua, Maria!
saluta_persoana("Ion") # Bună ziua, Ion!
# Funcție cu return — returnează un rezultat
def calculeaza_suprafata(latime, lungime):
return latime * lungime
camera = calculeaza_suprafata(4, 5)
print(f"Suprafața: {camera} mp") # 20 mpDiferența dintre print și return este crucială: print afișează pe ecran și uită — valoarea nu mai poate fi folosită. return trimite valoarea înapoi la cel care a apelat funcția, valoare care poate fi stocată într-o variabilă și reutilizată mai departe.
Cum lucrează împreună — un program real în 15 linii
Cele patru concepte nu există separat — în orice program real le vei găsi combinate. Iată un exemplu care folosește toate patru simultan: un calculator de reduceri pentru un magazin online.
# FUNCȚIE — definită o singură dată, folosită de ori câte ori
def aplica_reducere(pret, procent):
return pret * (1 - procent / 100)
# VARIABILĂ — o listă de produse
produse = [
{"nume": "Laptop", "pret": 3500},
{"nume": "Mouse", "pret": 150},
{"nume": "Tastatură", "pret": 280},
]
# BUCLĂ — procesăm fiecare produs
for produs in produse:
# CONDIȚIE — reducere doar la produse scumpe
if produs["pret"] > 1000:
pret_nou = aplica_reducere(produs["pret"], 15)
print(f"{produs['nume']}: {produs['pret']} lei → {pret_nou:.0f} lei (−15%)")
else:
print(f"{produs['nume']}: {produs['pret']} lei (fără reducere)")Outputul acestui program:
Laptop: 3500 lei → 2975 lei (−15%)
Mouse: 150 lei (fără reducere)
Tastatură: 280 lei (fără reducere)Câteva observații utile: funcția aplica_reducere este definită o singură dată și ar putea fi apelată de o mie de ori cu prețuri și procente diferite. Bucla for ar funcționa identic pentru 3 produse sau pentru 3 milioane. Condiția if poate fi schimbată ușor — dacă mâine politica de reduceri se modifică, modifici o singură linie.
De ce aceste concepte sunt cu adevărat universale
Nu am ales să explicăm aceste patru concepte din întâmplare — ele sunt literalmente fundația oricărui program de calculator, în orice limbaj. Variabilele există în Python, JavaScript, Java, Go, Rust, C++, PHP, Swift și în fiecare alt limbaj mainstream. Buclele există în toate. Condițiile există în toate. Funcțiile există în toate. Sintaxa diferă, logica este identică.
Aceasta înseamnă că dacă înțelegi acum cum funcționează un for loop în Python, vei recunoaște imediat echivalentul lui în JavaScript sau Go — chiar dacă nu ai scris niciodată o linie în acele limbaje. Cunoașterea se transferă.
Bazele programării — variabile, condiții, bucle, funcții — se pot asimila în aproximativ o lună de studiu regulat. Consistența bate volumul: două ore zilnic sunt mai eficiente decât zece ore de weekend. Odată internalizate, aceste concepte nu se uită — sunt reflexe, nu informații memorate.
În episodul următor al seriei construim pe această fundație: frontend și backend — cum se structurează o aplicație web reală de la A la Z.
Fii primul care comentează acest articol!