Invatare Atomica

Variabile si tipuri de date

Progres lectie:
0%
🎯

Obiectivul lectiei

Vei invata cum sa stochezi informatii in programe, ce tipuri de date exista in Python si C++, si cum sa converesti corect intre ele.

Dupa aceasta lectie vei putea:

  • Sa explici ce este o variabila si de ce are nevoie de un tip de date
  • Sa enumeri tipurile de date principale: int, float/double, str/string, bool
  • Sa declari si sa initializezi variabile corect in Python si C++
  • Sa converesti intre tipuri (int, float, str) si sa intelegi impartirea intreaga vs reala
  • Sa identifici diferentele dintre Python (tipare dinamica) si C++ (tipare statica)

Incearca singur!

🎯 INCEARCA

Provocare:

In matematica, folosim litere pentru a reprezenta numere necunoscute (ex: x = 5). In programare facem la fel, dar fiecare valoare are si un tip. Gandeste-te ce fel de informatie ai stoca in:

  • o variabila numita varsta
  • o variabila numita nume
  • o variabila numita esteMajor
  • o variabila numita medie
💡 Vezi raspunsul

varsta → un numar intreg, deci int (ex: 15)

nume → un text/sir de caractere, deci str/string (ex: "Maria")

esteMajor → adevarat sau fals, deci bool (ex: False)

medie → un numar cu zecimale, deci float/double (ex: 9.75)

1

1. Ce este o variabila?

O variabila este un nume dat unei zone de memorie in care programul stocheaza o valoare. Are trei lucruri: un nume, o valoare si un tip de date (care spune ce fel de valoare poate tine).
Analogie sigura:

Gandeste-te la o variabila ca la o cutie etichetata: eticheta este numele (varsta), continutul este valoarea (15), iar forma cutiei este tipul (intreg). Poti schimba continutul, dar eticheta ramane la fel.

2

2. Tipuri de date principale

Cele mai folosite tipuri de date, cu numele lor in Python si C++:

TipPythonC++Exemplu
Numar intregintint42, -7, 0
Numar real (zecimal)floatfloat / double3.14, -2.5
Text (sir de caractere)strstring"Hello"
Logic (adevarat/fals)boolboolTrue / False (Py), true / false (C++)

In Python, functia type() iti spune tipul unei valori:

# Tipul se deduce automat din valoare
varsta = 15
medie = 9.75
nume = "Maria"
esteMajor = False

print(type(varsta))
print(type(medie))
print(type(nume))
print(type(esteMajor))
Output real (rulat cu python):
<class 'int'>
<class 'float'>
<class 'str'>
<class 'bool'>
3

3. Declarare si initializare in Python

In Python nu scrii tipul: el este dedus automat din valoarea pe care o atribui (tipare dinamica). A declara = a aduce variabila in existenta; a initializa = a-i da prima valoare.

# Declarare + initializare intr-o singura linie
varsta = 15
nume = "Maria"
medie = 9.75
esteMajor = False

# Afisare
print(varsta)
print(nume)
print(type(esteMajor))
Output real (rulat cu python):
15
Maria
<class 'bool'>
⚠ Atentie

Numele unei variabile NU poate incepe cu o cifra si nu poate contine spatii. Foloseste nume sugestive: medieElev, nu m. Python face diferenta intre litere mari si mici: nota si Nota sunt doua variabile diferite.

4

4. Conversii intre tipuri si impartirea

Uneori ai o valoare de un tip dar ai nevoie de altul. Conversia (type casting) se face cu int(), float(), str(). Important: input() intoarce mereu text!

# Conversii
text = "42"
numar = int(text)         # string -> int
print(numar + 8)

nota = float("9.50")      # string -> float
print(nota)

# Impartirea: reala (/) vs intreaga (//) vs rest (%)
x = 7
y = 2
print(x / y)               # impartire reala
print(x // y)              # cat intreg
print(x % y)               # rest
print(int(3.99))          # trunchiere catre 0
print(str(2026) + "!")    # int -> string pentru concatenare
Output real (rulat cu python):
50
9.5
3.5
3
1
3
2026!
⚠ Capcana frecventa

int(3.99) da 3, nu 4 — conversia la intreg trunchiaza (taie zecimalele), nu rotunjeste. Pentru rotunjire foloseste round().

5

5. Acelasi lucru in C++ EXCLUSIV INTENSIV

⚡ Sectiune doar pentru intensiv informatica

C++ se preda doar la profilul intensiv, ca al doilea limbaj. In C++ tipul trebuie declarat explicit (tipare statica) si fiecare instructiune se termina cu ;.

#include <iostream>
#include <string>
using namespace std;

int main() {
    int varsta = 15;
    string nume = "Maria";
    double medie = 9.75;
    bool esteMajor = false;

    cout << varsta << endl;
    cout << nume << endl;
    cout << medie << endl;
    cout << esteMajor << endl;   // bool se afiseaza 0 sau 1
    return 0;
}
Output real (compilat g++ -std=c++17, apoi rulat):
15
Maria
9.75
0

Doua diferente importante pe care le vezi in output:

  • In C++, bool false se afiseaza ca 0 (in Python ar fi False).
  • In C++, impartirea a doi int da tot un int (catul intreg), spre deosebire de / din Python.
#include <iostream>
using namespace std;
int main() {
    int x = 7, y = 2;
    cout << x / y << endl;          // int / int -> cat intreg
    cout << x % y << endl;          // rest
    cout << (double)x / y << endl;  // cast la double -> impartire reala
    cout << sizeof(int) << " " << sizeof(double) << " " << sizeof(char) << endl;
    return 0;
}
Output real (compilat g++ -std=c++17, apoi rulat):
3
1
3.5
4 8 1

sizeof arata cati octeti (bytes) ocupa fiecare tip in memorie: int = 4, double = 8, char = 1. In Python interpretorul gestioneaza memoria automat.

Exercitii practice

Exercitiul 1 (Nivel minim) - Alege tipul corect

Ce tip de date (int, float, str, bool) ai folosi pentru fiecare?

  • numarul de pagini ale unei carti
  • pretul unui produs (ex: 12.99 lei)
  • numele unui oras
  • daca un elev a trecut clasa (da/nu)

Raspuns asteptat: int, float, str, bool.

Exercitiul 2 (Nivel standard) - Conversie si impartire

Scrie un program Python care porneste de la total = 17 bomboane si copii = 5, apoi afiseaza cate bomboane primeste fiecare copil (impartire intreaga) si cate raman (rest).

Solutie posibila:

# Distribuire bomboane
total = 17
copii = 5
print("Fiecare primeste:", total // copii)
print("Raman:", total % copii)
Output real (rulat cu python):
Fiecare primeste: 3
Raman: 2

Exercitiul 3 (Nivel performanta) - Fisa elev in ambele limbaje

Declara variabile pentru o fisa de elev: nume, clasa, medie, estePromovat, apoi afiseaza-le pe o singura linie. Compara cum apare valoarea booleana in Python vs C++.

Solutie Python:

nume = "Andrei Pop"
clasa = "9A"
medie = 8.75
estePromovat = True
print(f"Elev: {nume}, Clasa: {clasa}, Media: {medie}, Promovat: {estePromovat}")
Output real (rulat cu python):
Elev: Andrei Pop, Clasa: 9A, Media: 8.75, Promovat: True

Solutie C++ EXCLUSIV INTENSIV:

#include <iostream>
#include <string>
using namespace std;
int main() {
    string nume = "Andrei Pop";
    string clasa = "9A";
    double medie = 8.75;
    bool estePromovat = true;
    cout << "Elev: " << nume << ", Clasa: " << clasa
         << ", Media: " << medie << ", Promovat: " << estePromovat << endl;
    return 0;
}
Output real (compilat g++ -std=c++17, apoi rulat):
Elev: Andrei Pop, Clasa: 9A, Media: 8.75, Promovat: 1

Observa diferenta: in Python apare True, in C++ apare 1. Acelasi concept (logic), afisat diferit.

Ce ai invatat astazi

  • Ce este o variabila: nume + valoare + tip de date
  • Tipurile principale: int, float/double, str/string, bool
  • Cum se declara si initializeaza variabile in Python (automat) si C++ (explicit)
  • Conversii intre tipuri si diferenta dintre impartirea reala (/), intreaga (//) si rest (%)
  • Diferentele Python (tipare dinamica) vs C++ (tipare statica, ; obligatoriu, bool ca 0/1)

Urmatoarea lectie

Continua cu Expresii aritmetice si logice — vei combina variabilele de azi cu operatori si vei invata precedenta acestora.

Continua →