Bun, hai să vorbim despre lucrul fără de care niciun program nu ar putea funcționa: DATELE. Nu e doar despre numere (cuvânt rece) și texte. E despre cum păstrăm informația în memorie, cum o citim de la utilizator și cum o prezentăm înapoi. E un proces atât de fundamental încât dacă ar fi să-l elimini, programarea ar fi ca un telefon fără microfon și difuzor – ai partea de procesare, dar nu poți comunica cu lumea. Dar aici intervine și partea tehnică: tipurile diferite de date și cum le gestionăm corect.
1. Variabilele – “Cutiile cu Etichete” din Memorie
Gândește-te la ele ca la cutii de depozitare etichetate din memoria calculatorului: fiecare cutie poate stoca un anumit tip de obiect, are o etichetă (nume) și o locație fixă. Să le vedem caracteristicile.
Ce este o Variabilă?
O variabilă este o locație de memorie cu un nume, care poate stoca valori ce se pot modifica în timpul execuției programului.
Analogie cu cutiile din depozit:
- Numele variabilei = Eticheta pe cutie (“BECURI”, “SURUBE M4”, “MANERE”)
- Tipul variabilei = Ce fel de obiecte poți pune în cutie (doar becuri, doar șuruburi, etc.)
- Valoarea variabilei = Ce conține cutia acum (3 becuri, 50 de șuruburi, 2 mânere)
- Adresa din memorie = Numărul raftului din depozit (locul fizic)
2. Tipurile Fundamentale de Variabile (Cei “Fab Four” ai Datelor)
Acestea sunt tipurile de bază pe care le întâlnești în aproape toate limbajele, inclusiv C++ și Pascal.
1. ÎNTREG (INTEGER) – Numerele fără virgulă
- Ce stochează: Numere întregi: -3, 0, 15, 1000
- Când îl folosești: Contoare, vârste, număr de elemente, ani
- Limitări: Nu poate stoca fracții! 5/2 = 2 (se pierde restul!)
- Analogie: Cutie pentru ouă. Poți pune 3 ouă, dar nu “3 și jumătate ouă”.
În C++:
int varsta = 25;
int numarOua = 12;
int temperatura = -5; // Da, și negative!
În Pascal:
var
varsta: integer;
numarOua: integer;
temperatura: integer;
begin
varsta := 25;
numarOua := 12;
temperatura := -5;
2. REAL (FLOAT/DOUBLE) – Numerele cu virgulă
- Ce stochează: Numere cu parte zecimală: 3.14, -2.5, 0.75
- Când îl folosești: Preturi, medii, temperaturi precise, calcule științifice
- Precauții: Calculele cu numere reale pot avea erori mici de rotunjire
- Analogie: Cântar de bucătărie. Poți cântări 250.5g de făină.
În C++:
float pret = 19.99;
double pi = 3.14159265359; // double = mai precis decât float
În Pascal:
var
pret: real;
pi: real;
begin
pret := 19.99;
pi := 3.14159265359;
3. CARACTER (CHAR) – Un singur simbol
- Ce stochează: Un singur caracter: ‘A’, ‘7’, ‘$’, ‘ ‘
- Când îl folosești: Inițiale, răspunsuri da/nu (Y/N), coduri de o literă
- Detaliu tehnic: De fapt stochează un cod numeric (ASCII/Unicode)
- Analogie: Un singur pește într-un acvariu mic.
În C++:
char initiala = 'M';
char raspuns = 'D'; // D pentru DA
char simbol = '#';
În Pascal:
var
initiala: char;
raspuns: char;
begin
initiala := 'M';
raspuns := 'D';
4. TEXT (STRING) – Șirul de caractere
- Ce stochează: Siruri de caractere: “Salut”, “Ana are mere”, “Str. Libertății 15”
- Când îl folosești: Nume, adrese, mesaje, parole
- Importanță: Folosește ghilimele! “A” e string, ‘A’ e char.
- Analogie: Un acvariu mare cu mai mulți pești înșirați.
În C++:
#include <string> // Trebuie inclus!
using namespace std;
string nume = "Maria";
string adresa = "Bulevardul Unirii 22";
În Pascal:
var
nume: string;
adresa: string;
begin
nume := 'Maria'; // În Pascal, folosim apostroafe
adresa := 'Bulevardul Unirii 22';
3. BOOLEAN (BOOL) – Valoarea de Adevăr
- Ce stochează: Doar două valori: ADEVĂRAT (true) sau FALS (false)
- Când îl folosești: Condiții, stări (estePornit, esteGasit, arePermisiune)
- Analogie: Un întrerupător: fie e pornit (true), fie e oprit (false).
În C++:
bool estePornit = true;
bool esteGasit = false;
bool arePermisiune = (varsta >= 18); // Va fi true sau false
În Pascal:
var
estePornit: boolean;
esteGasit: boolean;
begin
estePornit := true;
esteGasit := false;
arePermisiune := (varsta >= 18);
4. Citirea Datelor – Cum Ascultă Programul
Acum că avem cutiile (variabilele), trebuie să învățăm cum să le umplem cu date de la utilizator.
Regula de Aur a Citirii:
Mereu anunță utilizatorul ce vrei de la el! Nu-l lăsa să ghicească.
În C++ – cu cin (citește-in):
#include <iostream>
using namespace std;
int main() {
int varsta;
string nume;
double inaltime;
// Mai întâi întrebăm (afișăm un mesaj)
cout << "Care este numele tau? ";
cin >> nume; // Citește până la primul spațiu
cout << "Buna, " << nume << "! Cati ani ai? ";
cin >> varsta;
cout << "Si cat de inalt esti (in metri)? ";
cin >> inaltime;
cout << "Multumim! Ai " << varsta << " ani si "
<< inaltime << "m inaltime." << endl;
// CITIREA CU GETLINE pentru fraze întregi:
string propozitie;
cout << "Spune-mi ceva interesant: ";
cin.ignore(); // Ignoră Enter-ul rămas din citirea anterioară
getline(cin, propozitie); // Citește toată linia cu spații
cout << "Ai spus: " << propozitie << endl;
return 0;
}
În Pascal – cu readln (citește-linia):
program CitireDate;
var
varsta: integer;
nume: string;
inaltime: real;
propozitie: string;
begin
// Întrebăm și citim
write('Care este numele tau? ');
readln(nume);
write('Buna, ', nume, '! Cati ani ai? ');
readln(varsta);
write('Si cat de inalt esti (in metri)? ');
readln(inaltime);
writeln('Multumim! Ai ', varsta, ' ani si ',
inaltime:0:2, 'm inaltime.'); // :0:2 = formatare cu 2 zecimale
// Citirea unei propoziții întregi e mai simplă în Pascal
writeln('Spune-mi ceva interesant: ');
readln(propozitie);
writeln('Ai spus: ', propozitie);
end.
Probleme comune la citire și soluții:
- Problema:
cin >>se oprește la spațiu
Soluție: Foloseștegetline(cin, variabila)pentru text cu spații - Problema: Amestec de
cin >>șigetline()
Soluție: Punecin.ignore()între ele - Problema: Utilizatorul introduce text în loc de număr
Soluție: (Avansat) Verifică starea fluxului sau folosește citire ca text și conversie
5. Scrierea Datelor – Cum Vorbește Programul
Dacă citirea e microfonul, scrierea e difuzorul programului.
Regula de Aur a Scrierii:
Fii clar și informat! Formatează-ți mesajele frumos.
În C++ – cu cout (scrie-out):
#include <iostream>
#include <iomanip> // Pentru manipularea afișării
using namespace std;
int main() {
string produs = "Laptop";
double pret = 2499.99;
int garantie = 24;
// Afișare simplă
cout << "Produs: " << produs << endl;
cout << "Pret: " << pret << " lei" << endl;
// Formatare cu 2 zecimale fixe
cout << fixed << setprecision(2);
cout << "Pret formatat: " << pret << " lei" << endl;
// Afișare pe coloane
cout << setw(15) << left << "Produs:"
<< setw(10) << right << produs << endl;
cout << setw(15) << left << "Pret:"
<< setw(10) << right << pret << " lei" << endl;
cout << setw(15) << left << "Garantie:"
<< setw(10) << right << garantie << " luni" << endl;
return 0;
}
În Pascal – cu writeln/write (scrie-linia/scrie):
program ScriereDate;
var
produs: string;
pret: real;
garantie: integer;
begin
produs := 'Laptop';
pret := 2499.99;
garantie := 24;
// Afișare simplă
writeln('Produs: ', produs);
writeln('Pret: ', pret:0:2, ' lei'); // :0:2 = 2 zecimale
// Afișare formatată pe coloane
writeln('Produs:':15, produs:10);
writeln('Pret:':15, pret:10:2, ' lei');
writeln('Garantie:':15, garantie:10, ' luni');
// write vs writeln
write('Acesta ramane pe '); // Fără linie nouă
write('aceeasi linie. ');
writeln('Acesta trece la linie noua.'); // Cu linie nouă
writeln('Acesta e pe linie separata.');
end.
Trucuri utile pentru afișare:
endlîn C++ sauwritelnîn Pascal = trece la linie nouă\nîn C++ în interiorul textului = aceeași trecere la linie nouă
cout << "Linia 1\nLinia 2\n";
- Tabulare:
\tîn C++ pentru aliniere
cout << "Nume:\tAna\tPrenume\tMaria";
6. Conversii între Tipuri – “Transformările Magice”
Uneori trebuie să convertim dintr-un tip în altul. Atenție la pierderi!
În C++:
// Conversie implicită (automată)
int numarIntreg = 10;
double numarReal = numarIntreg; // OK: 10 → 10.0
// Conversie explicită (forțată)
double pi = 3.14;
int piIntreg = (int)pi; // 3.14 → 3 (PIERDERE DE PRECIZIE!)
// Conversie text ↔ număr
#include <string>
string text = "123";
int numar = stoi(text); // string to int: "123" → 123
int altNumar = 456;
string altText = to_string(altNumar); // int to string: 456 → "456"
În Pascal:
// Conversie implicită
var
numarIntreg: integer;
numarReal: real;
begin
numarIntreg := 10;
numarReal := numarIntreg; // 10 → 10.0
// Conversie explicită
numarReal := 3.14;
numarIntreg := trunc(numarReal); // 3.14 → 3 (taie zecimale)
// SAU: numarIntreg := round(numarReal); // rotunjeste: 3.14 → 3, 3.6 → 4
// Conversie text ↔ număr
str(numarIntreg, altText); // număr → text
val(altText, numarIntreg, codEroare); // text → număr
În concluzie, să-ți spun ceva practic:
Variabilele sunt memoria programului tău, citirea este auzul lui, iar scrierea este vocea lui. Fără aceste trei elemente, un program ar fi ca un creier izolat într-un borcan – ar putea procesa, dar nu ar putea comunica cu lumea.
Dar comunicarea cu un calculator poate fi, paradoxal, o sursă de erori dacă nu e abordată cu precizie, validare și gândire anticipativă.
Așa că ai grijă la tipurile tale de date. Alege-le cu înțelepciune. Validează-ți intrările. Formatează-ți ieșirile. Pentru că puterea de a procesa informația este goală fără abilitatea de a o primi și de a o prezenta corect. Și această putere vine cu o responsabilitate: să fii clar și precis.
Gestionarea corectă a datelor este o parte integrală a programării de calitate. Ai grijă de ea cu aceeași seriozitate.
Leave a Reply