Sunteți pe pagina 1din 6

Tipuri de date simple:- Ordinale Tipuri de date structur

 array (tablou)
 tipuri întregi  înregistrare (reco
 tipul logic (boolean)  obiect (object)
 tip caracter (char si tipul superior  multime (set)
string)  fisier (file)
- real

Întregi
Întregii sunt numere ca: -80, -12, 0, 1 si 907. Matematic, întregii se extind la infinit (în
ambele sensuri - pozitiv sau negativ), dar în programarea calculatoarelor exista
limite pentru reprezentarea întregilor impuse de hardware. În implementările uzuale
ale limbajului PASCAL, o valoare tipica a limitei superioare (pentru calculatoarele
mici) este 32767, dar calculatoarele puternice permit valori mult mai mari.

Indiferent de limita actuala, constanta maxit este predefinita sa conțină pentru


fiecare tip de calculator valoarea maxima a întregului ce poate fi reprezentat în
memoria calculatorului respectiv. Apoi, în funcție de modul de reprezentare (atât în
program cât si în calculator) cel mai mic întreg negativ permis este, de regula,
- maxint-1.
Remarca: Nu exista o constanta predefinita minint. Exista doar daca o definiți
dumneavoastră!
De exemplu, (Turbo) PASCAL 4.0, 5.0, 6.0 si (Borland) PASCAL 7.0 prevăd tipurile de
date longint care pot manipula întregi pâna la 2147483647. În legătura cu aceasta,
versiunile 4, 5, 6 si 7 ale limbajului PASCAL mai prevăd tipuri întregi (byte, shortint)
mai mici decât tipul de date integer (valoarea maxima 32767). In figurile 3.1 si 3.2 se
prezinta diagrama de sintaxa pentru numere întregi si o lista completa a tipurilor de
date pentru (Turbo) PASCAL, versiunile 4.0, 5.0 si 6.0 si (Borland) PASCAL 7.0.

Boolean
Variabilele de tip Boolean (Boolean vine de la numele matematicianului George Boole)
pot avea una din valorile predefinite: true (adevărat) si false (fals). Modul de reprezentare
în calculator este (de regula) 0 pentru false si 1 pentru true(false < true). Expresiile
booleene, precum z > y, intervin mult mai des în programele PASCAL decât variabilele
booleene declarate în cadrul acestor programe. Nu puține sunt cazurile când o valoare
logica, rezultata în urma evaluării unor expresii booleene urmează sa fie folosita pentru
diferite teste, ca în programul următor.
Reguli:
 false < true;
 Operatorii logici, specifici tipului boolean sunt: AND, OR, NOT, XOR (ultimul apare
în versiunile de (Borland) PASCAL);
 Pentru a compara doua valori numerice se utilizeaza operatorii de relatie: < (mai
mic); <= (mai mic sau egal); > (mai mare); >= (mai mare sau egal); <> (diferit de);
 Pentru a separa expresiile de relatie de operatorii logici se utilizează parantezele
(Exemplu: 5 £ a £ 8 se codifica (a >= 5) AND (a <= 8));
 Nu este indicat sa se testeze egalitatea valorilor reale;
 Pentru valori de tip boolean putem considera o serie de funcții
specifice: ord, odd, eof, eoln etc.;
 Procedura readln nu accepta o variabila booleana.

Char
Așa cum abilitatea de a manevra cifre este esențiala pentru ingineri, tehnicieni,
oameni de știința, tot așa abilitatea de a prelucra caractere, texte este esențiala
pentru umaniști, oameni de afaceri etc. O variabila (Borland) PASCAL căreia putem
sa-i atribuim un caracter (litera, cifra, caracter special etc.) trebuie sa fie declarata de
tip char, unde char este abrevierea de la caracter.

Remarca: Doua sau mai multe caractere pot fi combinate într-un sir... de caractere,
dar astfel de șiruri nu sunt tipuri de date simple, ele reprezintă tipuri de date
structurate, ale căror caracteristici le vom prezenta în continuare. Reprezentarea
unei constante de tip char se realizează încadrând caracterul respectiv între
apostrofuri. Folosim apostroful pentru a distinge un caracter, cum ar fi "c" de un
identificator c. În interiorul calculatorului, fiecare caracter trebuie sa fie codificat în
mod distinct. Forma uzuala de codificare este un număr binar de opt biți care ocupa
un byte (octet) de memorie.

 Mulțimea caracterelor ce pot fi procesate de un calculator se numește set de


caractere;
 Utilizarea a 8 biți permite reprezentarea în principiu a 28 sau 256 de coduri
diferite, neacordându-și coduri pentru toate caracterele;
 Limbajul (Borland) PASCAL folosește setul de caractere ASCII (extins).

De exemplu, un set de 8 biți numit EBCDIC (Extended Binary Coded Decimal


Interchange Code) este definit numai prin 163 de caractere. Foarte multe
calculatoare folosesc un cod de 7 biti numit ASCII (American Standard Code for
Information Interchange) în care toate cele 27 (128) de combinații de cod posibile au
o semnificație precisa.

String
Daca programele noastre au de a face cu texte sau documente de orice fel, atunci
prelucrarea la nivel de caracter se dovedește a fi incomoda si insuficienta.
(Borland) PASCAL prevede, pentru astfel de situații, un tip "superior" lui char, si
anume STRING (sau sir de caractere).
Șirul de caractere, după cum îi spune si numele, reunește mai multe caractere sub
"un nume comun". Putem înțelege șirul de caractere ca fiind un cuvânt, o propoziție
sau o fraza, adică orice formulare scrisa ce conține semne (litere, cifre, semne de
punctuație, semne speciale etc).
Deoarece tipul char, conform tabelei ASCII, poate conține si caractere deosebite, o
variabila string poate fi mai mult decât am exemplificat anterior.
Deși tipul STRING prezinta o structura interna comparabila cu cea a masivelor
(ARRAY), limbajul (Borland) PASCAL permite programatorului sa-l utilizeze, în multe
cazuri, ca pe un tip simplu (vezi Conversația 4 - operații de I/E).

Sa analizam puțin modul de declarare al variabilelor de tip sir de caractere; ca si în


cazul celorlalte declarații, vom scrie numele identificatorului, caracterul ':' si apoi
tipul necesar. În cazul nostru, vom utiliza cuvântul rezervat STRING, urmat (sau nu)
de un specificator de format.
Spre deosebire de integer, char, real, care sunt identificatori
predefiniți, STRING este cuvânt rezervat!

Real
Doua sunt limitele evidente ale întregilor utilizați în programarea calculatoarelor (în
PASCAL):

 foarte multe valori sunt fracționare, cum ar fi: 0,85 si 3,14159265;


 foarte multe valori sunt mai mici decât 1 si mai mari decât maxint.

Asemenea numere sunt scrise în mod obișnuit utilizând notația științifica. De


exemplu, un fizician exprima constanta lui Planck (foarte mica) sub forma 6,626176 x
10-27 erg/sec, iar un chimist exprima numărul lui Avogadro (foarte mare) sub forma
6,022045 x 1023 molecule/mol.

Datorita acestei limitări, PASCAL-ul prevede alt tip de date, tipul real. Utilizat în
PASCAL si în multe alte limbaje de programare, un număr real este numărul căruia îi
este permis sa aibă o parte fracționara, chiar daca aceasta fracție se întâmpla sa fie
zero. Numărul real 3.0 are o reprezentare interna (în memoria calculatorului) diferita
de cea a reprezentării întregului 3. Numerele reale sunt exprimate în virgula mobila
(floating point format). Aceasta nu reprezintă preocuparea dumneavoastră. De notat
ca, o data apelate procedurile read/write, au loc conversii zecimal-binar, si invers, a
numerelor reale.

TABLOURI UNIDIMENSIONALE
Structura de date este o colecție de date înzestrată cu informații structurale care permit
identificarea și selecția componentelor.
Componentele unei structuri de date pot fi identificate si selectate fie prin numele, fie prin
intermediul relațiilor structurale. Cea mai simpla relație structurala este poziția fiecărei
componente in cadrul structurii.
Asupra unei structuri de date se pot aplica mai multe tipuri de operații :vizualizarea
elementelor structurii sub diferite forme, actualizarea(adăugarea, modificarea sau
ștergerea unei componente), îmbogățirea structurală(prin adăugarea unor informații de
legătura) sortare(aranjarea componentelor într-o anumita ordine stabilita de un anumit
criteriu de ordonare.
Din punct de vedere al conținutului, structurile pot fi:
-omogene(toate componentele structurii sunt de același tip)
-neomogene(componentele structurii sunt de tipuri diferite)
in funcție de modul in care sunt memorate structurile de date se împart in doua mari
categorii:
-Structuri interne, sunt create in memoria interna RAM a sistemului, și au un caracter
temporar, datorită faptului ca memoria interna este volatila.
-Structuri externe, sunt depozitate pe un suport de memorie externa (hard-disk.floppy-
disk), având astfel un caracter permanent.
program ordonare alfabetica;
var x:array[1..20] of string;
i,j,n:integer;aux:string;
begin
write ('cati elevi sunt?=');
readln ;
for i:=1 to n do;
begin
write('nume elev x ',i,':');
readln(x[i]);
end;
for i:=1 to n-1 do
for j:=i+1 to n do
if x[i]<x[j] then
begin
aux:=x[i];x[i]:=x[j];x[j]:=aux;
end;
writeln ('ordinea alfabetica este:');
for i:= 1 to n do writeln(i,'',x[i]);
readln;
end.

Tablouri bidimensionale
Declarația are următoarea formă generală:
type TipTab=array[ tip_indice 1 , tip_indice 2] of tip_de_bază; var tablou:TipTab;

unde prin tip_indice 1 , tip indice 2 se înțelege tipul valorilor din care se alimentează
indicii (este obligatoriu un tip ordinal), iar tip_de_bază este tipul elementelor
tabloului.
Acest tip de bază poate fi orice: putem avea elemente de orice tip numeric, de
caractere sau șiruri de caractere, valori booleene, înregistrări (vezi tipul record),
tablouri de cele mai diverse tipuri etc.
tip_indice 1 , tip_indice 2 pot fi identificatori de tip predefinit sau definit de
utilizator și, de asemenea, pot fi expresii, cu mențiunea că în acestea pot interveni
doar constante și constante simbolice:

Exemplu
const n=5;
var Tip Tablou=array[1..2*n,1..n] of Byte;
Numere=array[Boolean,Byte] of Integer;

Dacă structura unui tablou este descrisă în secțiunea var, atunci el va avea un
tip anonim. Asociind tipului respectiv un identificator de tip într-o declarație type,
acesta va putea fi folosit în program, oriunde vrem să referim acest tip.

Exemplu
type TipTablou=array[1..10,1..5] of Byte;
var x,y:TipTablou;
a:array[1..10,1..5] of Byte;
b,c:array[1..10,1..5] of Byte;

În programul care conține aceste declarații, tablourile x și y vor fi considerate


de același tip (TipTablou), b și c, de asemenea vor avea un tip comun (anonim),
iar a va fi de tip anonim diferit de TipTablou, respectiv de tipul anonim al lui b și c.
Citirea tablourilor bidimensionale
În programe, de regulă, prima operație va fi citirea unui astfel de tablou. În limbajele
Pascal și C nu se poate citi o variabilă de tip tablou. Această operație se va realiza
element cu element.

Subalgoritm Citire(n,x):
citește m,n
{ tabloul x are m linii și n coloane }
pentru i=1,m execută:
pentru j=1,n execută:
citește x[i,j]
sfârșit pentru
sfârșit pentru
sfârșit subalgoritm

Afișarea tablourilor bidimensionale


Afișarea tablourilor se realizează asemănător. Dacă dorim să realizăm o
afișare linie după linie a tabloului x de tipul tablou, având m linii și n coloane, în
Pascal vom scrie procedura în felul următor:

procedure Afișare(m,n:Byte; x:tablou);

begin
for i:=1 to m do begin
for j:=1 to n do
Write(x[i,j],' ');
WriteLn
end

Record
Alaturi de ARRAY, (Borland) PASCAL accepta alte trei tipuri de date
structurate: RECORD, Set si File. Deși nu sunt unice în (Borland) PASCAL, RECORD-
urile sunt elemente neprețuite ale limbajului, deoarece ele facilitează prelucrarea
datelor structurate în fișiere, dar în plus ele ne permit sa cream ARRAY-uri de date
agregate de tipuri mixte - un instrument foarte puternic de organizare a datelor.
In cadrul acestei conversații, la capitolul Array multidimensional(exemplul
precedent) am folosit ARRAY-ul bidimensional scoală pentru a retine numărul de
fete din cele 7 grupe pe o linie si numărul de băieți pe alta linie.

Structura ARRAY-ului a fost potrivita întrucât toate datele de intrare sunt de același
tip: întreg. In continuare, dorim sa extindem facilitățile programului masiv incluzând
numele profesorului de informatica din cele 7 grupe. In acest caz, nu am putea
extinde structura originala pentru a forma un ARRAY 3*7 întrucât legile PASCAL-ului
cer, după cum va amintiți, ca ARRAY-urile sa fie omogene; nu putem combina un
nume (sir de caractere) cu componente întregi pentru a forma unARRAY. Totuși
(Borland) PASCAL-ul oferă o alternativa si anume tipul structurat
numit RECORD, care ne permite sa realizam asociații neomogene. Iată o declarație
corespunzătoare pentru descrierea unei grupe.

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