Sunteți pe pagina 1din 4

Laborator 3 – suport teoretic

Tipuri de date utilizate în limbajul de programare C.


Toate valorile parametrilor unei probleme, adică datele cu care operează un
program, sunt reprezentate în MO sub formă codificată numeric. Datorită posibilităților
tehnice/fizice de memorare a cifrelor, singura variantă posibilă pentru reprezentarea
constantelor numerice este baza de numerație doi, respectiv a celor două cifre binare
{0,1}.

1. Tipuri de date predefinite


Limbajul de programare C/C++ recunoaște implicit numai trei tipuri de date, cu
variantele respective de reprezentare internă. Diferențierea între modalitățile de
reprezentare internă se face prin precizările făcute în cadrul “declarațiilor”, care sunt
instrucțiuni de organizare a MO. De reținut că declarațiile nu determină efectuarea unor
operații de calcul.
Obs. Indiferent de valorile numerice pe care utilizatorul dorește să le atribuie,
înscrierea unei constant în MO se efectuează numai în conformitate cu precizările din
declarații.
În Tabelul 1 sunt prezentate dimensiunile în octeți pentru diferitele tipuri de date
predefinite.
Tabelul 1

Nr. octeți Limita Limită


Tip variabilă C Utilizare
(bytes) inferioară superioară

char 1 -128 127 Caractere sau numere


unsigned char 1 0 255 Numere mici pozitive
short int 2 -32768 +32767 Numere întregi
unsigned short int 2 0 65536 Numere întregi pozitive
(long) int 4 -2^31 +2^31-1 Numere întregi mari

1
Numere întregi pozitive
unsigned (long) int 4 0 +2^32-1
mari
long long (int) 8 -2^64 +2^64-1 Numere întregi foarte mari
float 4 -3.2*10^38 3.2*10^38 Numere reale
double 8 -1.7*10^308 1.7*10^308 Numere reale mari
long double 12 Numere reale foarte mari
void 0 - - Nici un tip

Pentru alcătuirea corectă a locațiilor programatorul trebuie să introducă în program


declarații adecvate asupra variabilelor ale căror valori urmează să se înscrie/memoreze. Întrucât
o locație poate înscrie/memora o singură valoare, care ulterior poate fi modificată, variabilele
corespunzătoare pot fi denumite și variabile simple/elementare.
Obs. Alcătuirea corectă a declarațiilor impune:
- atribuirea unui identificator pentru fiecare variabilă a cărei valoare se va memora.
Identificatorii au o dublă semnificație abstractă și concretă. Semnificația abstractă este dată de
faptul că identificatorul reprezintă un element al programului, deci o entitate sintactică.
Semnificație concretă rezultă din aceea că identificatorul permite adresarea/identificarea unei
locații a MO în segmentul de MO atribuit programului de către compilator;
- alegerea anticipată a tipului elementar de dată care se va folosi și, corelat cu acesta,
estimarea domeniului de valori care se vor atribui unei variabile în timpul executării
programului.
Ex.1 Să se alcătuiască declarațiile necesare memorării următoarelor constante:
32 → (x, întreg fără semn) ; 24 → ( y, întreg cu semn); -35678→ ( z, întreg cu semn); ’A’ → (
m, caracter ASCII) ; ’y’ → ( n, caracter ASCII); -12.4→ (p, real); 0.0005→ (q, real).
Precizările adăugate se referă atât la identificatorul ales pentru variabila care se va inițializa
cu valoarea indicată cât și la tipul de reprezentare numerică care se folosi pentru valorile care
urmează să fie memorate în respectiva locație. Aceste două informații sunt necesare pentru:
- regăsirea în MO a locației atribuite respectivei variabile;
- asocierea octeților necesari constituirii acestei locații, în conformitate strictă cu
precizările din Tabelul 1.

2
Având informațiile necesare se pot alcătui declarațiile din program asupra
respectivelor variabile. Pentru Ex.1 Acestea sunt:
unsigned x;
int y;
long z; // sau long int z;
char m,n;
float p;
double q;
Obs. Caracterele // precizează sistemului că urmează ”un comentariu” care are numai
rol explicativ privind alcătuirea programului și este fără efect asupra execuției.

a) Constantele/numerele întregi (Z) care se codifică prin codul direct (n>=0) sau
codul complementar (n<0) al reprezentării în baza doi a modului numărului. Declarația
int specifică faptul că o mărime/variabilă va reține numai numere întregi.
Ex.2.
int a;
int x, a1 = 9, Ax;

b) constante/numere reale (R) care se memorează codificând în baza doi, codul


direct sau complementar, al unei reprezentări obținută de la forma exponențială
normalizată a numărului. Declarația float specifică faptul că o mărime/variabilă va reține
numai numere reale.
Ex.3.

float a, bc, x1a;


float v = 2.3;

c) constantele caracter adică alfabetul limbajului C/C++ (cifre, litere, semne


speciale: ‘A’; ’c’; ’9’; ’>’ș.a.) se reprezintă prin codul ASCII. Declarația char specifică
faptul că o mărime/variabilă va reține numai un cod ASCII respectiv un singur caracter.
Ex.4

3
char m, n= ’a’, p;
char c = ’Ax’;

Obs. Variabila n va memora numărul întreg 97, respectiv codul ASCII al literei ‘a’.
Variabila c va memora numai codul primei litere 65, respectiv codul ADCII al literei ‘A’.
d) Deși mai puțin utilizată, se menționează și posibilitatea reprezentării
numerelor naturale (N). Acestea sunt reprezentate ca numere întregi (de tip char sau int),
deosebirea constând în aceea că bitul de semn (msb) de la reprezentarea numerelor
întregi este folosit ca cifră a numărului. Acest lucru dublează domeniul numeric care
poate fi reprezentat. Declarația unsigned specifică faptul că o mărime/variabilă va reține
numai numere pozitive.
Obs. Folosirea valorilor din N trebuie făcută cu foarte multă atenție întrucât
atribuirea a unei valori negative determină memorarea unei valori eronate. SC nu
avertizează utilizatorul, printr-un mesaj de eroare, apariția acestei erori.
Toate celelalte reprezentări în MO a informațiilor se bazează pe aceste tipuri
fundamentale, recunoscute implicit de calculator.

S-ar putea să vă placă și