M5 L1 Info Tipuri de variabile

În C++, o variabilă este un spațiu de memorie care stochează o valoare ce poate fi utilizată și modificată în program. Fiecare variabilă are un nume (identificator), un tip de date și o valoare.

Sintaxa de bază:

tip_de_date nume_variabila = valoare_initiala;

Exemple:

int varsta = 25;           // o variabilă întreagă
float inaltime = 1.75;     // o variabilă cu virgulă mobilă
char litera = 'A';         // o variabilă caracter
bool esteStudent = true;   // o variabilă booleană

Explicații:

  • int, float, char, bool sunt tipuri de date.
  • varsta, inaltime, etc. sunt numele variabilelor.
  • Valorile (25, 1.75, 'A', true) pot fi modificate pe parcursul programului.

Caracteristici:

  • O variabilă trebuie să fie declarată înainte de a fi utilizată.
  • Numele variabilei trebuie să înceapă cu o literă sau un underscore (_), nu cu o cifră.
  • Tipul determină ce fel de date poate conține și cât spațiu ocupă în memorie.

Un exemplu simplu de program C++ care folosește variabile:

#include <iostream>
using namespace std;

int main() {
    // Declararea variabilelor
    int varsta = 20;
    float inaltime = 1.75;
    char initiala = 'M';
    bool esteStudent = true;

    // Afișarea valorilor
    cout << "Varsta: " << varsta << endl;
    cout << "Inaltime: " << inaltime << " metri" << endl;
    cout << "Initiala: " << initiala << endl;
    cout << "Este student: " << (esteStudent ? "Da" : "Nu") << endl;

    return 0;
}

Ce face programul:

  • Declară 4 variabile de tipuri diferite.
  • Le inițializează cu valori.
  • Afișează valorile folosind cout.

Rezultatul la rulare:

Varsta: 20
Inaltime: 1.75 metri
Initiala: M
Este student: Da

Iată o variantă a programului în care utilizatorul introduce valorile variabilelor de la tastatură:

#include <iostream>
using namespace std;

int main() {
    // Declararea variabilelor
    int varsta;
    float inaltime;
    char initiala;
    bool esteStudent;

    // Introducerea valorilor de la tastatură
    cout << "Introdu varsta: ";
    cin >> varsta;

    cout << "Introdu inaltimea (in metri): ";
    cin >> inaltime;

    cout << "Introdu initiala numelui tau: ";
    cin >> initiala;

    cout << "Esti student? (1 pentru Da, 0 pentru Nu): ";
    cin >> esteStudent;

    // Afișarea valorilor introduse
    cout << "\n--- Informatii introduse ---" << endl;
    cout << "Varsta: " << varsta << endl;
    cout << "Inaltime: " << inaltime << " metri" << endl;
    cout << "Initiala: " << initiala << endl;
    cout << "Este student: " << (esteStudent ? "Da" : "Nu") << endl;

    return 0;
}

O variantă îmbunătățită a programului, cu validare pentru ca vârsta și înălțimea să nu fie negative și pentru ca răspunsul la „Ești student?” să fie doar 0 sau 1:

#include <iostream>
using namespace std;

int main() {
    int varsta;
    float inaltime;
    char initiala;
    bool esteStudent;

    // Citire cu validare pentru varsta
    do {
        cout << "Introdu varsta (numar pozitiv): ";
        cin >> varsta;
        if (varsta < 0) {
            cout << "Varsta nu poate fi negativa!\n";
        }
    } while (varsta < 0);

    // Citire cu validare pentru inaltime
    do {
        cout << "Introdu inaltimea (in metri, valoare pozitiva): ";
        cin >> inaltime;
        if (inaltime <= 0) {
            cout << "Inaltimea trebuie sa fie mai mare decat 0!\n";
        }
    } while (inaltime <= 0);

    // Citire initiala
    cout << "Introdu initiala numelui tau: ";
    cin >> initiala;

    // Citire cu validare pentru esteStudent (doar 0 sau 1)
    int raspunsStudent;
    do {
        cout << "Esti student? (1 pentru Da, 0 pentru Nu): ";
        cin >> raspunsStudent;
        if (raspunsStudent != 0 && raspunsStudent != 1) {
            cout << "Te rog sa introduci doar 1 (Da) sau 0 (Nu).\n";
        }
    } while (raspunsStudent != 0 && raspunsStudent != 1);
    esteStudent = static_cast<bool>(raspunsStudent);

    // Afișare rezultate
    cout << "\n--- Informatii introduse ---" << endl;
    cout << "Varsta: " << varsta << endl;
    cout << "Inaltime: " << inaltime << " metri" << endl;
    cout << "Initiala: " << initiala << endl;
    cout << "Este student: " << (esteStudent ? "Da" : "Nu") << endl;

    return 0;
}

O variantă îmbunătățită a programului, cu validare pentru ca vârsta și înălțimea să nu fie negative și pentru ca răspunsul la „Ești student?” să fie doar 0 sau 1 și cu salvarea datelor în fișierul date_utilizatori.txt:

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

int main() {
    int numarPersoane;

    cout << "Cate persoane doresti sa introduci? ";
    cin >> numarPersoane;

    // Deschidem fisierul pentru scriere
    ofstream fisier("date_utilizatori.txt");

    if (!fisier) {
        cerr << "Eroare la deschiderea fisierului!" << endl;
        return 1;
    }

    for (int i = 1; i <= numarPersoane; i++) {
        cout << "\n--- Introdu datele pentru persoana #" << i << " ---" << endl;

        int varsta;
        do {
            cout << "Varsta (pozitiva): ";
            cin >> varsta;
            if (varsta < 0)
                cout << "Eroare: varsta trebuie sa fie pozitiva!" << endl;
        } while (varsta < 0);

        float inaltime;
        do {
            cout << "Inaltime (in metri, > 0): ";
            cin >> inaltime;
            if (inaltime <= 0)
                cout << "Eroare: inaltimea trebuie sa fie > decat 0!" << endl;
        } while (inaltime <= 0);

        char initiala;
        cout << "Initiala numelui: ";
        cin >> initiala;

        int raspunsStudent;
        bool esteStudent;
        do {
            cout << "Esti student? (1 = Da, 0 = Nu): ";
            cin >> raspunsStudent;
            if (raspunsStudent != 0 && raspunsStudent != 1)
                cout << "Eroare: introdu doar 1 sau 0!" << endl;
        } while (raspunsStudent != 0 && raspunsStudent != 1);
        esteStudent = (raspunsStudent == 1);

        // Scriere in fisier
        fisier << "Persoana #" << i << endl;
        fisier << "Varsta: " << varsta << endl;
        fisier << "Inaltime: " << inaltime << " metri" << endl;
        fisier << "Initiala: " << initiala << endl;
        fisier << "Este student: " << (esteStudent ? "Da" : "Nu") << endl;
        fisier << "-------------------------" << endl;
    }

    fisier.close();
    cout << "\nDatele au fost salvate in 'date_utilizatori.txt'.\n";

    return 0;
}

Temă:

Să se studieze programele de mai sus astfel încât să puteți răspunde pentru orice linie de program la întrebarea despre ce efect are.