lectie1.4

8
CLASA A IX-A CURS : LIMBAJUL BORLAND C++ 1.3 TIPURI DE DATE Def: Prin dată se înţelege orice entitate asupra căreia calculatorul poate opera. Ex: int x; /*x - este o dată asupra căreia se operează*/ Un tip de dată precizează mulţimea valorilor pe care le poate lua o dată, operaţiile 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: CUVÂNT REZERVAT LUNGIME ÎN BIŢI LUNGIME DE REPREZ. INTERNĂ int 16 întreg cu semn [-32768,32767] short 16 long 32 întreg cu semn [-2 31 ,2 31 ] unsigned 16 întreg fără 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*10 38 ] double 64 real cu val absolută în intervalul [1.7*10 -308 , 1.7*10 308 ] long double 80 real cu val absolută în intervalul [3.4*10 -4932 , 3.4*10 4932 ] - 1 -

Upload: matei-claudiu-balean

Post on 10-Nov-2015

1 views

Category:

Documents


0 download

DESCRIPTION

lectie4

TRANSCRIPT

CLASA A IX-A

CLASA A IX-A

CURS: LIMBAJUL BORLAND C++1.3 TIPURI DE DATEDef: 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 REZERVATLUNGIME N BIILUNGIME DE REPREZ. INTERN

int16ntreg cu semn [-32768,32767]

short16

long32ntreg cu semn [-231,231]

unsigned16ntreg fr semn [0,65535]

char8unsigned char [0,255] i char [-128,127]

float32real cu val absolut n intervalul [3.4*10-38, 3.4*1038]

double64real cu val absolut n intervalul [1.7*10-308, 1.7*10308]

long double80real 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.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 0XEXEMPLE: 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 83)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 fracionarOBS: Exponentul este format din litera e sau E urmat de un semn (opional) i de un ir de cifre zecimaleMod 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 LEXEMPLE: 343.23, -98.3, .89, -.45, 23., -5., 12E-3, -.56e+34. .99E10Contraexemple: 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 studiate1.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

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"

"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

ConstruciaReprezentarea n memorieTipul constantei

'A'65constant caracter

"A"65 0constant ir de caracter

1.4.5 CONSTANTE SIMBOLICE

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 )

- definite de utilizator

Exemple:maxshort, maxint, maxlong, maxfloat, minfloat etc.DEFINIREA CONSTANTELOR (utilizator)const = valoare ;#define succesiune_de_caractere

#undef

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

#include

void main(void)

{

const valoare = 9;

printf("%d", valoare);/*afieaz 9*/getch();

}#include

#include

void main(void)

{

const valoare = 9;

valoare = valoare + 1; /*ERROR*/

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";

Exemplu: Constante declarate prin #define:

#include

#include #define A 100void main(void)

{

printf("%d", A);/*afieaz 100*/getch();

}#include

#include #define MAX 100.99void main(void)

{

MAX = MAX + 1; /*ERROR*/

getch();

}

Un alt caz este:

..............

#define A 100

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

.............

#define A 45.78/*ncepnd din acest moment A se va nlocui cu 45.78*/

............

#undef

/*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 -