Tipuri de date , variabile , constante , etichete , expresii.
Un program in limbajul Pascal contine o descriere a actiunilor ce trebuie
sa fie executate de calculator si o descriere a datelor ce sint manevrate
de aceste actiuni. Actiunile sint descrise prin instructiuni, iar datele
prin declaratii sau definitii. Prin tip de date intelegem o multime de
valori. n7e14ez
Se disting trei categorii de tipuri de date:
- simple elementare;
- compuse structurate;
- de referinta pointer.
In general, tipurile de date sint definite explicit prin declaratii
type iar operatiile asociate prin declaratii function sau procedure sint
specifice programului in care apar. Exista insa tipuri de date elementare
de interes mai general, numite tipuri predefinite. Valorile unui tip de date
sint referite prin variabile sau constante. Anumite constante sint
predefinite.
type I = T;
unde I este un identificator numit numele tipului, iar T specificatia sa. Declaratia
variabilelor este precedata de cuvantul cheie var , a constantelor de
cuvant cheie const , iar a etichetelor, de cuvant cheie label .
Numele I poate fi folosit pentru referirea la tipul T in declaratiile
ulterioare de variabile sau pentru definirea altor tipuri. Exista tipuri de
date anonime, definite implicit prin declaratii de variabile de forma: var v _ 1 , ….. , v _ n : T ;
Ex: label 1, 10 ; type bin = 0 . . 1 ; var bit : bin ; cifra : 0 . . 9 ; const zero = 0 ; var i : integer ; etichetele 1 si 10 , tipul bin cu elementele 0 si 1, variabila bit de tipul
bin, variabila I de tipul predefinit integer precum si constanta zero avand
valoarea 0.
Tipuri de date simple si predefinite.
Tipurile simple sant de trei categorii: predefinite, enumerare si subdomeniu.
Tipurile simple se mai numesc si tipuri scalare.
Exista cinci tipuri de date predefinite: integer , real , boolean , char si
text.
Tipul integer -; este o multime de numere intregi cuprinse intre
cel mai mic si cel mai mare numar intreg ce se pot reprezenta pe un calculator
gazda al limbajului. Exemplu: elementul -15 al tipului integer poate fi reprezentat
prin literele -15 sau -17B.
Fie x reprezentarea in baza 2 a unui numar intreg . Reprezentarea
in cod complementar a lui x este:
Ax daca 0 < x < 0 111 111 111 111 111 rc (x) A
A2 - | x | daca x < 0 si 2 - | x | > 1 000 000 000 000 000
A x daca 0 < x < 2 -; 1 rc (x) A
A 2 + x daca 2 < x < 0
Cel mai mare numar reprezentabil in cod complementar este 2 -; 1
, adica 32767 (maxint); cel mai mic numar este -;2 , adica -;32768.
Tipul real este multimea de numere reale
Ax |x = + 0 , x x . . . x · b si x sint cifre in baza b si
l < e < l S
unde baza b a sistemului de enumeratie, limitele l si l ale exponentului e
si numarul n + 1.
Exemplu: b=2, -128<e < 127 iar n = 23.
Elementele tipului real se reprezinta in programe prin literale numerice
de formele i . f , i . fEs sau iEs , eventual precedate de semnul + sau - ,
unde i si f sint numere zecimale intregi fara semn reprezentand
partea intreaga si respectiv partea fractionara a literalului numeric.
Exemplu : -0,25 al tipului real poate apare in programe Pascal in
una din formele -0.25, -25E-2, -25.0E-2.
In programele Pascal elementele tipului real se presupun a fi scrise in
baza 10. Reprezentarea sau memorarea acestora in calculator se face in
virgula mobila pe 2 cuvinte 32 biti -; simpla precizie sau pe 4 cuvinte
64 biti -; dubla precizie. Pozitie binara 15 prima din stanga, in
notatia uzuala a primului cuvant este a semnului, in pozitiile 7
-; 14 ale primului cuvant se memoreaza caracteristica exponentului
marit cu 128, iar in rest se memoreaza mantisa partea fractionara fara
prima pozitie dupa virgula.
Caracteristica este: c= 128 + e = 2 + 1= 10000001
Primul cuvant al reprezentarii in calculator este 0 10000001 000000,
iar al doilea cuvant 0000000000000000 in baza 2. Reprezentarea octala
este 40200, respectiv 0. In mod analogic, -5.0 se va reprezenta prin numerele
octale 140640 si 0.
Cel mai mare numar real reprezentabil in simpla precizie este
0, 111111111111111111111111· 2 1 · 2 10 .
Cel mai mic numar real pozitiv reprezentabil este:
0,1 · 2 = 2 10 .
Numerele reale de forma 0,1 x …….. x i,part intervalul a½,
1) in 2 subintervale de lungime (1- ½) ·2 = 2 .
Tipul boolean -; contine doua elemente referite prin constantele predefinite
false si true . Operatiile predefinite ale aceluiasi tip and, or , not definesc
o structura de algebra booleana .
Tipul char -; este o multime finita si ordonata de caractere ce contine,
printre altele, litere, cifre, si caracterul spatiu.
Reprezentarea interna a unui element de acest tip se face pe 1 byte si are ca
valoare codul ASCHII al caracterului respectiv.
In implementarea Pascal q si r se calculeaza prin instructiunile urmatoare: q : = a div b; r : = a mod b; if (a < 0) and ( r < > 0) then begin r : = r + abs (y) ; if b < 0 then q : = q + 1 else q : = q -; 1 end
In limbajul standard, q si r se calculeaza prin: q : = a div b; r : = a mod b; if. (a < 0 ) and ( r < > 0 ) then if b > 0 then q : = q -; 1 else begin q : = q + 1 ; r : = r -; 2 * b end
EXEMPLU: begin
writeln ( ' 8 div 3 = ' , 8 div 3 );
writeln ( ' -8 div 3 = ' , -8 div 3 );
writeln (' 8 div -3 =' , 8 div (-3) );
writeln (' -8 div -3 =' , -8 div (-3) );
writeln (' 8 mod 3 =' , 8 mod 3 );
writeln (' -8 mod 3 =' , -8 mod 3 );
writeln (' 8 mod -;3)=', 8 mod (-3) );
writeln (' -8 mod -3 = ', -8 mod (-3) ); end.
Operatori rationali uzuali = , < > , < , <= , >, >= conduc
la rezultate de tip boolean. Operanzii pot fi de tip integer prin reprezentari
binare bit cu bit.
Ex: not 1 este -;2 , 6 or 3 este 7 , 6 and 3 este 2 .
Pentru tipurile integer , char si boolean exista functiile succ (succesor) si
pred (predecesor).
Pred (c) = chr (ord (c) -;1) si succ (c) = chr (ord (c) + 1).
Operatii si functii predefinite asociate.
Ex: var a : integer ; b : real ; c : char ; d : boolean ; begin c : = ' x ' ; a : = 1 ; b : = 1.5 ; a : = a + trunc ( -b) + round ( b) ; a : = a mod a div a + ord ( ' x ') ; b : = succ (a) + b / b - pred ( succ (a) ); c : = chr (ord (c) ); d : = ( b < = b ) and true ;
write ( a , b , c , d ) end.
Tipuri de date enumerare
Un tip enumerare este o multime ordonata de valori specificate prin identificatori.