Tipuri de date

Prin tip de date se înţelege mulţimea valorilor pe care le poate lua data, împreună cu operaţiile care se pot efectua cu aceste valori.
Tipurile de date se clasifică astfel:

  • simple
  • structurate
  • de referință

Tipuri de date simple

Tipurile de date simple pot fi:
     1. ordinale( integer, boolean,char,string
       enumerare, subdomeniu)
     2. reale
Tipurile de date ordinale sunt tipuri a căror mulţime de valori este finită şi ordonată .Orice tip ordinal are o valoare minimă şi una maximă şi orice valoare de tip ordinal are un predecesor (cu excepţia valorii minime),
respectiv un succesor (cu excepţia valorii maxime).Tipurile de date reale sunt tipuri  ce au ca valori submulţimi al numerelor raţionale.

1.Integer

Tipul de date INTEGER se utilizează pentru prezentarea numerelor întregi cu semn.
Exemplu:
VAR   A: integer
          B: integer

Mulțime de valori admisibile a acestui tip de date se afla pe intervalul :

2.Boolean

Noțiunea de boolean provine de la numele învațatului George Boole care în anul 1854 a descris în cartea sa pentru prima oara o învestigare ale legilor gîndirii logice.Aceste legi astazi le descoperim sub numele de algebra booleană.Acest tip de date include valorile de adevar(true) și valorile false(false).Astfel acest tip de date este unul dintre cele ami simple tipuri de date,avand doar 2 valori posibile(adevarat si fals).

Declararea tipului de date boolean:

   Var x:boolean;
Operatiile predifinite ale tipului de date boolean sunt:

  • Not-negația
  • And-conjuncția
  • Or-disjuncția

3.Char

Tipul CHAR reprezintă o mulțime finită și ordonată de caractere din setul ASCII.Fiecare caracter are o anumită reprezentare internă -valoarea caracterului și o anumită poziție. Din punct de vedere extern o valoare de tip char se reprezintă prin caracterul respectiv inclus între apostrofuri. Poziția sau
numărul de ordine al unui caracter se obține cu
funcția ORD. Funcția inversă este CHR.
De exemplu:
ORD('A') := 65;
CHR(65) := 'A';

Funcțiile standard PRED și SUCC se definesc astfel:
PRED(c) := CHR(ORD(c)-1);
SUCC(c) := CHR(ORD(c)+1);


Cei 6 operatori relaționali se pot se pot aplica pentru a compara operanzi de tip char obt inîndu-se rezultate booleene.

4.Enumerare

Pascal pune la dispoziţie programatorului mai multe mecanisme prin care el să-şi construiască noi tipuri. Cel mai simplu dintre acestea este enumerarea. Enumerarea construieşte un nou tip cu un număr finit de elemente descriind între paranteze reprezentarea canonică a fiecărui element.

Exemplu : (rosu, verde, albastru, galben, mov, negru, alb) este descrierea unui nou tip care are 7 elemente cu reprezentările rosu, verde, etc.
Putem da acestui tip un nume folosind directiva type din Pascal.

type culoare = (rosu, verde, albastru, galben, mov, negru, alb);
culoare = { r
osu, verde, albastru, galben, mov, negru, alb }

5.Subdomeniu

Există o operaţie prin care dintr-un tip scalar putem extrage o submulţime formată din elemente consecutive. Ea devine un nou tip care se va numi un subdomeniu(``subrange'' în engleză) al celui iniţial. Pentru că pe tipurile scalare există o ordine, submulţimea se indică prin capetele ei.
Exemplu: 1 .. 10 este un tip subdomeniu al integer, avînd 100 de elemente.
Iată un tip subdomeniu al tipului culoare definit mai sus, căruia îi dăm şi un nume:

       type CulPrimara = rosu .. albastru;

      Tipul numit CulPrimara are 3 elemente:
      CulPrimara = {rosu, verde, albastru }.

6.Tipul de date real

Datele de tip real iau valori reale aparţinînd domeniului de valori corespunzător tipului respectiv. Spre deosebire de operaţiile cu valori întregi, care reproduc exact rezultatele din aritmetica întregilor, operaţiile cu date de tip real produc rezultate aproximative, datorate erorilor de rotunjire generate de numărul finit de cifre semnificative folosite în reprezentarea valorilor reale.

Tipul real — constituie o clasă separată în care nu se poate pune în evidenţă o poziţie a unui element în mulţime, nici succesorul sau predecesorul unui element. Este format dintr-o submulţime a numerelor reale precizată de cea mai mică şi cea mai mare valoare reprezentată în notaţie în virgulă mobilă. Variabilele reale sunt caracterizate de: domeniul de valori, precizie, precum și de reprezentare. Operatorii care pot fi utilizați în conexiune cu tipul real sunt: +; -; *; / și reprezintă operatiile de adunare, scădere, înmulțire și împărțire.Într-o expresie reala pot exista valori întregi.Pentru datele de tip numeric (real) pot fi considerate o serie de functii specifice: trunc, round, abs, sqr, sqrt etc.;

Tipuri de date structurate

  • Set

Tipul mulțime se poate utiliza în aplicațiile care folosesc noțiunea de mulțime din matematică. Acest tip se declară astfel :
   Set Of  tipul_elementelor.
Elementele pot fi numere naturale mai mici decât 256, caractere sau elemente ale unui tip enumerare, iar cardinalul mulțimilor poate fi maxim 256.

 Exemplu :
Type Multime_Nr  =  Set Of  0..255; { sau Multime_nr = Byte }
Multime_Car = Set Of  Char;
Operatorii utilizati pentru date de acest tip sunt :
a) pentru operații cu mulțimi :
- reuniunea  se notează cu + ( vom scrie  A + B )  ,
- intersectia   ,
- diferenta   (  \  ) se notează cu  −  ( A \ B vom scrie  A − B )  ;
b) relaționali :
- = pentru egalitatea a doua multimi ( = ), If A=B Then ...
- pentru neegalitate ( ≠ ),
- = pentru incluziunea nestricta “include” , Repeat ... Until A=B ;
- = pentru incluziunea nestricta “inclus in”  , Inclus :=  A=B ;
- In pentru apartenență.

  • Fisier(File)

Fişierul este o colecţie organizată de informaţii (date, rezultate, programe sursă, programe direct executabile etc.), dispuse pe unul sau mai multe suporturi externe.

Componentele unui fişier se numesc înregistrări (articole) şi pot avea dimensiune fixă sau variabilă. Numărul de componente dintr-un fişier este variabil, fiind limitat doar de capacitatea de memorare a suportului utilizat.

Sfîrşitul unui fişier este uneori marcat printr-o componentă specială .
Fişierul, în contextul limbajului Pascal, este o structură de date omogenă, formată din componente de acelaşi tip, exceptînd tipul fişier.
Înregistrarea este constituită dintr-o mulţime de valori ale unor caracteristici asociate unui obiect, proces etc., din domeniul aplicaţiei.
Componentele înregistrării asociate diverselor caracteristici sunt denumite cîmpuri de date.
Limbajul Pascall permite utilizarea fişierelor cu înregistrări de lungime fixă (stabilită la momentul prelucrării) şi variabilă .

Variabilelor fişier (utilizate în programe, atunci cînd lucram cu fişiere) li se asociază, de obicei, fişiere fizice, aflate pe suport extern şi gestionate de către sistemul de operare. În conţinuare, vom nota cu f variabila fişier utilizată la un moment dat.

Din punct de vedere al limbajului Pascal şi al conţinutului lor, fişierele se împart în două mari categorii:

  •     fişiere text, în care toate datele sunt sub formă de caractere ASCII. Practic, fişierele text conţin caractere organizate în linii de lungime variabilă, liniile consecutive fiind separate printr-un marcaj de sfîrşit de linie (end   of line) .
  •     fişiere binare, în care toate datele sunt memorate în formă identică cu cea din memoria principală. Practic, fişierele binare sunt fişiere cu componente de tipuri definite de programator.

      Fişierele binare se împart, la rîndul lor, în două clase:

  • fişiere cu tip (în care înregistrările au structura şi lungimea fixe, precizate la momentul fiecărei prelucrări);
  • fişiere fără tip (în care înregistrările sunt blocuri binare de lungime fixă, precizată ca parametru în procedura de deschidere a fişierului;

Diagrama de sintaxa:

Exemplu de program:

Program p1;
var s:string;
i,p:integer;
begin
writeln('introd. stringul');
p:=0;
for i:=1 to lenght (s)do
if((s[i]=m)and(s[i+1]='a'))then inc(p);
writeln ('caracter=',p);
readln;
end.

  • Tipul Tablou(Array)

Structura  tablou  constă într-o succesiune (șir) de elemente (aflate într-o anumită ordine) având toate același tip (tipul_elementelor).  Elementele pot fi identificate prin indici, aceștia fiind dintr-un subdomeniu al unui tip ordinal sau chiar un tip ordinal. 

Aceasta înseamnă că în definirea unui tablou va trebui să precizăm atât  domeniul_indicilor (tipul de indexare) cît și tipul_elementelor  componente. 

Sintaxa specificării în limbajul Pascal a unei structuri  tablou este :
      tablou ::= Array  ‘[‘ domeniul_indicilor ‘]’  Of  tipul_elementelor;