Sunteți pe pagina 1din 5

CLASA A IX-A

CURS: LIMBAJUL BORLAND C++

1.3 TIPURI DE DATE


Def: Prin dat se nelege orice entitate asupra creia calculatorul poate opera.
Ex: int x;
/*x - este o dat asupra creia se opereaz*/
Un tip de dat precizeaz mulimea valorilor pe care le poate lua o dat, operaiile care se pot
efectua asupra ei i lungimea de reprezentare intern.
CLASIFICARE: n limbajul C distingem dou categorii de date:
tipuri predefinite de date (standard sau fundamentale)
- aritmetice (ntregi i reale)
- void
tipuri derivate
- tipuri structurate
tablouri (iruri de caractere)
nregistrare
- pointer
- definite de utilizator (enumerare)
Pentru nceput ne vom ocupa de numai de tipurile simple de date(predefinite sau standard).
Acestea sunt prezentate n tabelul de mai jos:
CUVNT
LUNGIME
LUNGIME DE REPREZ. INTERN
REZERVAT
N BII
int
16
ntreg cu semn [-32768,32767]
short
16
long
32
ntreg cu semn [-231,231]
unsigned
16
ntreg fr semn [0,65535]
char
8
unsigned char [0,255] i char [-128,127]
float
32
real cu val absolut n intervalul [3.4*10-38, 3.4*1038]
double
64
real cu val absolut n intervalul [1.7*10-308, 1.7*10308]
long double
80
real cu val absolut n intervalul [3.4*10-4932, 3.4*104932]
unsigned - se refer la date fr semn i poate fi utilizat n combinaie cu celelalte tipuri de date
EX: unsigned int - ntreg fr semn
unsigned char - caracter fr semn
unsigned float - real fr semn etc.
signed - se poate folosi pentru a pune n eviden semnul
EX: signed int - ntreg cu semn, este la fel ca i cum a scrie numai int
Am vzut pentru aceste tipuri de date simple mulimea valorilor precum i lungimea de
reprezentare intern, mai rmne s studiem operaiile ce se pot executa cu aceste date, dar asta
vom discuta n cadrul unei lecii speciale.

-1-

1.4 CONSTANTE
O constant are un tip i o valoare. Valoarea acesteia nu poate fi modificat pe tot parcursul
programului.
n C exist urmtoarele tipuri de constante:
constante ntregi
constante reale
constante caracter
constante ir de caractere
constante simbolice
Vom discuta n cele ce urmeaz despre fiecare tip de constante.
1.4.1 CONSTANTE NTREGI
O constant ntreag poate fi un ir de cifre, care eventual este precedat de un semn.
Mod de reprezentare: 16 sau 32 bii prin complement fa de 2. n cazul n care, dorim ca o
constant s fie reprezentat pe 32 bii chiar dac ea se poate reprezenta
pe 16 bii, vom termina constanta respectiv cu l sau L, astfel constanta
va fi de tip long.
CLASIFICARE:
constante ntregi zecimale (scrise n baza 10)
constante ntregi octale (scrise n baza 8) - precedate de 0 nesemnificativ
constante ntregi hexazecimale (scrise n baza 16) - precedate de 0x sau 0X
EXEMPLE:
1)
34534L, -98, 23, 10, 1 - constante ntregi zecimale
a23, 23t435 - nu sunt constante ntregi
2)
0123, 01257 - constante ntregi octale
08965 - nu este constant ntreag octal deoarece 8 i 9 nu sunt cifre din baza 8
3)
0xa23B, 0XABC, 0xAaB23 - constante ntregi hexazecimale
0x09G - nu este constant ntreag hexazecimal deoarece G nu este liter din hexa
OBS: 1) Cifrele hexazecimale: 0 .. 9 i a .. f sau A .. F
2) Cifrele octale 0 .. 7
1.4.2 CONSTANTE REALE
O constant real este un numr real care se compune din:
semn +/- (ce poate lipsi)
parte ntreag ce poate fi vid (ex: .345 )
parte fracionar ce poate fi vid (ex: 123. )
un exponent (e sau E) care poate fi i vid (ex: 454e-2 )
!Atenie: Nu pot lipsi toate n acelai timp. Trebuie s existe ori partea ntreag, ori cea fracionar
OBS: Exponentul este format din litera e sau E urmat de un semn (opional) i de un ir de cifre
zecimale
Mod de reprezentare: 16 sau 32 bii
Constantele reale sunt de tip double (dubl precizie).
Dac se dorete ca ele s fie:
de tip float atunci vom termina constanta cu f sau F
de tip long double atunci terminm constanta cu l sau L
-2-

EXEMPLE: 343.23, -98.3, .89, -.45, 23., -5., 12E-3, -.56e+34. .99E10
Contraexemple: 565, e45 (lipsete partea ntreag sau fracionar), E+67, .
Tem:1) Dai 5 exemple de caractere grafice, 5 de caractere negrafice, 5 de identificatori, 5 de
cuvinte rezervate studiate pn acum.
2) Cte 2 exemple pentru toate tipurile de constante posibile din cele dou clase de
constante studiate
1.4.3 CONSTANTE CARACTER
O constant caracter reprezint un caracter i are ca valoare codul ASCII al caracterului
respectiv. innd cont de clasificarea setului de caractere studiat, vom avea urmtoarele tipuri de
constante caracter:
constante caracter grafice: de forma ' caracter ' ex: 'a', 'V' etc.
spaiu: '__'
constante caracter negrafice : de forma ' caracter negrafic '
' \n '- newline
' \t ' - TAB orizontal
' \v '- TAB vertical
' \b '- backspace
' \f ' - salt de pagin
' \r ' - deplasarea cursorului n prima coloan
' \' ' - apostrof
' \\ ' - pentru backshlash
' \0 ' - pentru caracterul NUL
EXEMPLE: Constant caracter grafic: 'A' - valoare 65, 'B' - valoare 66 etc
' ab ', ' a' ', ' m, ' 9 - nu sunt constante caracter
'!' - reprezint caracterul !
' " ' - reprezint caracterul "
Mod de reprezentare: n memorie vom avea codul Ascii al caracterului respectiv
1.4.4 CONSTANTE IR DE CARACTERE
O constant ir de caractere este format dintr-un ir de zero sau mai multe caractere
delimitate prim ghilimele.
OBS: 1) "..." nu fac parte din irul de caractere
Exemplu: "Aceasta este o lucrare n C++", irul va fi: Aceasta este o lucrare n C++
2) Dac dorim s folosim un caracter negrafic n irul de caractere atunci se va folosi
construcia cu \
Exemplu: "a\\b" - reprezint succesiunea de caractere a\b
"1\"2"- reprezint succesiunea de caractere 1"2
"1\n2"- reprezint succesiunea de caractere 1 <Enter>
3) " " reprezint irul vid
4) Un ir de caractere poate fi continuat de pe un rnd pe altul dac nainte de a apsa
tasta ENTER se tasteaz caracterul \, evident c, caracterele \ i ENTER nu vor face
parte din irul astfel obinut.
Contraexemple: Urmtoarele construcii nu sunt iruri de caractere:
'ab' - nu se folosete apostroful
" " " - pentru ca irul s conin caracterul " trebuie folosit construcia \
"a - lipsete ", adic "a"
-3-

"ab\" - lipsete ", adic " ab\" "


Mod de reprezentare: n memorie vom avea codurile Ascii ale caracterelor din ir terminate de
caracterul NUL pentru a marca sfritul de ir
Construcia
Reprezentarea n memorie
Tipul constantei
'A'
65
constant caracter
"A"
65 0
constant ir de caracter
1.4.5 CONSTANTE SIMBOLICE
<values.h>
O constant simbolic este o constant desemnat printr-un identificator.
OBS: 1) Folosirea acestor constante confer programului claritate
2) Ele nu pot fi modificate n timpul execuiei programului
CLASIFICARE: - predefinite (se va include fiierul <values.h>)
- definite de utilizator
Exemple: maxshort, maxint, maxlong, maxfloat, minfloat etc.

DEFINIREA CONSTANTELOR (utilizator)


const <identificator> = valoare ;
#define <identificator> succesiune_de_caractere
#undef <identificator>
Folosind aceste construcii se va substitui identificatorul cu succesiunea de caractere sau
valoarea peste tot n textul surs care urmeaz, exceptnd cazul n care apare ntr-un ir de
caractere sau ntr-un comentariu.
OBS: 1) Dac succesiunea de caractere nu ncape ntr-un singur rnd se aplic regula
cunoscut, adic nainte de a trece la rndul urmtor se pune caracterul \.
2) Identificatorul este o constant simbolic
3) Se recomand scriere identificatorului cu litere mari pentru a iei n eviden
4) Efectul directivei #define este pn la sfritul programului sau pn la scrierea
construciei #undef
5) Succesiunea de caractere poate s conin alte constante simbolice definite anterior.
Exemplu: Constante declarate prin const:
#include <stdio.h>
#include <stdio.h>
#include <conio.h>
#include <conio.h>
void main(void)
void main(void)
{
{
const valoare = 9;
const valoare = 9;
printf("%d", valoare);/*afieaz 9*/
valoare = valoare + 1; /*ERROR*/
getch();
getch();
}
}
Declaraii de constante ntregi: const a = 123, b = 0765, c = 0xAB12;
Declaraii de constante reale: const real = 1.23e-7, t = .67E6;
Declaraii de constante caracter:const c = 'A', cc = '\n';
Declaraii de constante ir de caractere: const ir1 = "abcdefg", ir2 = "a\tb";
-4-

Exemplu: Constante declarate prin #define:


#include <stdio.h>
#include <conio.h>
#define A 100
void main(void)
{
printf("%d", A);/*afieaz 100*/
getch();
}

#include <stdio.h>
#include <conio.h>
#define MAX 100.99
void main(void)
{
MAX = MAX + 1; /*ERROR*/
getch();
}

Un alt caz este:

..............
#define A 100
.............
#define A 45.78
............
#undef

/*A se nlocuiete cu 100 ncepnd din acest moment*/


/*ncepnd din acest moment A se va nlocui cu 45.78*/
/*definirea fcut pentru A nu mai este valabil*/

Un alt caz este i urmtorul:

#define A 123
#define B A+120
.............
x = 3*B
/* x = 3*123+120 */
.............
Un alt caz este i urmtorul:
#define A 123
#define B (A+120)
.............
x = 3*B
/* x = 3*(123+120) */
.............
#undef B
..............

-5-