Informatiile acestui spatiu sunt gratuite. Observatii si sugestii pot fi trimise pe adresa de contact sau pe forum.

     Variabile in C++

Pentru realizarea algoritmului si a programului care sa rezolve o anumita problema utilizam anumite variabile avand un anume tip, in functie de necesitati. O variabila este reprezentata printr-un caracter sau o insiruire ce caractere alfanumerice si reprezinta continutul unei locatii de memorie. Variabilele isi pot modifica valoarea pe parcursul programului in functie de necesitati.

Atentie: O variabila nu poate fi utilizata in cadrul unui program fara a fi declarata. In cazul in care o variabila nu este declarata, vom primi un mesaj de eroare in momentul compilarii si lansarii in executie a programului.

Observatie: In denumirea variabilelor trebuie tinut cont daca literele folosite sunt litere mari sau mici. Astfel, o variabila a este diferita de o variabila A.

Exemple de variabile:

  • int a, A; a, respectiv A reprezinta cate o variabila de timp intreg
  • char c; c reprezinta o variabila de tip caracter
  • float f; f reprezinta o variabila de tip real
  • double d; d reprezinta o variabila de tip double
  • int a[10]; a reprezinta o un vector de 10 numere intregi;
  • int a[10][10]; a reprezinta o matrice de 10 linii si 10 coloane avand in componenta numere intregi
  • etc...

Constantele sunt reprezentate tot printr-un caracter sau o insiruire de caractere alfanumerice, insa, spre deosebire de variabilele normale, acestea nu-si vor modifica valoarea pe parcursul intregului program. Constantele pot avea de asemenea valori intregi, reale, caracter, etc.

Exemple de constante:

  • const int raza=10;
  • const float pi=3.14;
  • cont char litera='l';

     Tipuri de date in C++

Tipurile de date pot fi:

     Tipuri de date predefinite

In tabelul de mai jos sunt reprezentate valorile pe care le pot lua variabilelele si constantele, in functie de principalele tipuri ale acestora:

Tip Descriere/Dimensiune Interval
unsigned char tipul caracter / 8 biti 0...255
char tipul caracter / 8 biti -128...127
unsigned int/unsigned short int numere intregi, fara semn / 16 biti 0...65535
short/short int/signed short int numere intregi, cu semn / 16 biti -32768...32767
long/long int/signed long int numere intregi, cu semn / 32 biti -2147483648...2147483647
<0...4294967295
float numere reale / 32 biti 3.4E +/- 38
double numere reale / 64 biti 1.7E +/- 308

     Tipuri de date definite de utilizatori: tipul inregistrare

Exista anumite cazuri in care utilizatorii au nevoie de tipuri de date mai complexe, sau structuri de date, care nu sunt acoperite strict de tipurile de date clasice. In aceste situatii, utilizatorii isi pot crea singuri structurile de date in functie de necesitati.

Structurile de date vor avea un nume si va fi format din mai multe componente numite campuri, fiecare dintre acestea fiind reprezentate de cate o variabila de tip clasic (intreg/real/etc.). Ulterior se pot declara variabie de acest tip (definit de utilizator).

Forma generala

struct <nume_structura>
{
tip_de date 1 variabila 1;
tip_de date 2 variabila 2;
..............................
tip_de date n variabila n;
} variabila tip referinta


Exemplu

struct elev
{
int nr_matricol;
char nume[20], prenume[20];
float media;
} e[20];

Variabilele care se doresc a avea tipul definit de utilizator pot fi declarate fie la momentul construirii tipului de date, fie alaturi de declaratiile celorlalte variabile, cum se va putea observa in exemplul de mai jos.

Problema: Sa se calculeze media aritmetica generala a unei clase de n elevi. Se vor introduce de la tastatura:
  • numarul elevilor din clasa
  • numele fiecarui elev
  • prenumele fiecarui elev
  • media obtinuta de fiecare elev
Solutie:

#include <iostream>
using namespace std;
struct elev
{
int nr_matricol;
char nume[20], prenume[20];
float media;
};
int main()
{
int n,i;
elev e[20];
float s=0, med_gen;
cout<<"Introduceti numarul elevilor din clasa: n=";cin>>n;
cout<<"Introduceti datele elevilor:"<<endl;
for (i=1;i<=n;i++)
{
cout<<"Numele elevului "<<i<<" este: ";
cin>>e[i].nume;
cout<<"Prenumele elevului "<<i<<" este: ";
cin>>e[i].prenume;
cout<<"Media elevului "<<i<<" este: ";
cin>>e[i].media;
s=s+e[i].media;
}
med_gen=s/n;
cout<<"Media generala a clasei este: "<<med_gen;
}