Documente Academic
Documente Profesional
Documente Cultură
=
44 41
ij
22 21
14 13 12 11
....
... ...
...
a a
a
a a
a a a a
a
Prelucrrile cu tablouri (sume, produse, transpuneri, etc.) se efectueaz asupra fiecrui element n
parte; de exemplu, sumarea matricelor a i b const a sumarea perechilor de elemente cu acelai indice
(linie i coloan).
Operaii asupra datelor de tip tablou
Fiindc datele de tip tablou sunt structuri ale altor tipuri de date, operaiile posibile asupra elementelor
din tablou sunt cele permise pentru tipul de date respectiv. Astfel, pentru datele de tip ntreg sunt
. y 0 1
x z
0 0 0
1 0 1
I (AND)
z = x . y
v y 0 1
x z
0 0 1
1 1 1
SAU (OR)
z = x v y
( x 0 1
z
0 1
NU (NOT)
z = ( x
permise operaii specificate la. De fapt, operaiile permise se aplic respectnd restriciile impuse de
operaii cu tablouri, spre exemplu:
- sumarea tablourilor sumarea elementelor de acelai indice pentru linie i coloan;
- nmulirea tablourilor obinerea unui tablou produs corespunztor operaiei produs vizate:
scalar (linii cu coloane) sau vectorial (coloane cu linii), cu reguli din algebr.
Parcurgerea element cu element a tabloului se face i pentru operaiile banale:
- introducerea datelor n tablou ataarea ctre fiecare element a unei valori din tipul indicat,
cu informaii preluate de la tastatur sau dintr-un fiier;
- afiarea datelor din tablou nscrierea valorilor fiecrui element pe ecran sau ntr-un fiier pe
disc.
Tipul de date ir de caractere
Simbolurile de scriere (caracterele) sunt utile mai ales pentru a se construi cu ele cuvinte, propoziii i
fraze, necesare comunicrii inter-umane sau denumirii obiectelor (n interiorul sau exteriorul
sistemului de calcul). n acest scop se altur caractere n iruri ordonate, poziia fiecrui caracter
respectnd regulile de scriere n limba respectiv. Fiecare astfel de ir va fi memorat ntr-o variabil
(locaie de memorie) rezervat anterior spre a primi numrul de caractere specificat, adic variabila
va lua valoare. Cel mai adesea, prelucrrile efectuate asupra irurilor de caractere utilizeaz poziia
caracterelor (de exemplu pentru anagramarea unui nume); rezult c pentru reprezentare unui ir este
util o structur similar tabloului.
Reprezentarea datelor de tip ir de caractere
Fie un tablou unidimensional (vector) ce are drept elemente piese de tip caracter, n cuvinte - vezi
Figura 7 cu variabila Nume care ia valoarea Vasile apoi Ion. Cuvintele pot fi unele mai lungi,
altele mai scurte, deci pe lng vectorul de caractere mai este necesar o informaie care s indice
lungimea curent a irului (sau poziia ultimului caracter n din vector). n diverse limbaje de
programare aceast informaie specific:
- lungimea irului limbajul Pascal (n prima poziie din vector)
- finalul irului limbajul C (caracterul NULL dup ultimul caracter din ir).
Fr aceast informaie este posibil ca la ncrcarea succesiv a unui ir lung (Vasile) apoi a unuia
mai scurt (Ion) n acelai vector, s apar (de exemplu la afiare) irul scurt completat cu restul
literelor, din poziiile neacoperite, ale irului precedent (vezi Figura 7). Dac finalul de ir este marcat
cu un simbol special (de exemplu NULL) dispozitivul de afiare nu ia n seam ce apare dup acesta i
va afia doar caracterele pn la el.
Figura 7 Dou valori pentru variabila ir de caractere Nume.
Lungimea maxim a unei variabile ir de caractere este, n general, 256, rezult deci c nu se pot
nscrie texte ci doar pri scurte n general cuvinte, nu propoziii.
Operaii asupra datelor de tip ir de caractere
Cu toate c reprezentarea irurilor se bazeaz pe tipul de date tablou, operaiile posibile sunt specifice
irurilor de caractere i sunt implementate prin funcii n biblioteci asociate limbajului de programare.
ntre acestea, cele mai uzuale sunt cele de concatenare a irurilor (adugare a unui ir dup un altul),
Nume : V a s i l e
0 1 2 3 4 5 | 7
finalul irului
de caractere
Nume : I o n i l e
0 1 2 | 4 5 6 7
finalul irului
de caractere
precum i cele de nlocuire a unui subir (parte a unui ir) cu un alt subir, n scopul prelucrrii
textelor.
Tipul de date articol
Cele mai rspndite programe utilizate n domeniul economic (i nu numai) sunt aplicaiile de
gestiune. Acestea folosesc tabele care grupeaz datele referitoare la obiecte din lumea real (cum
sunt produsele dintr-un depozit, candidai la un examen, etc.), iar gestiunea const n evidena i
prelucrarea datelor referitoare la acele obiecte. Un tabel se refer la o categorie de obiecte anume n
care, la rndul lor, o linie se refer la un obiect anume iar o coloan (o rubric) se refer la o anume
proprietate sau atribut al acelui obiect. De exemplu, o linie din tabel se refer la un candidat anume iar
coloanele conin datele asupra sa (nume, prenume, media, etc.). O linie din tabel se numete uzual
articol (sau nregistrare n englez record) iar o celul ce conine date (pe o coloan cu numele n
capul de tabel) se numete cmp (n englez field). Cmpurile pot conine date de tip ir de caractere
(nume, prenume pentru un candidat), date de tip numeric (media), sau date de tip logic (a absolvit sau
nu examenul).
Reprezentarea datelor de tip articol
Un articol este o structur cu piese de date de tipuri diferite, fiecare pies referit prin nume. Prin
intermediul articolelor se pot manipula datele din tabele, n memoria intern a calculatorului i la
transferul cu discul - memoria extern. Accesul al fiecare pies de date (cmp) din articol se face prin
numele rubricii (al cmpului).
Ca reprezentare a structurii de tip articol se poate imagina un tabel cu doar dou linii: capul de tabel i
o linie cu date referitoare la un singur obiect - cel prelucrat la un moment dat.
Figura 8 Dat de tip articol, pe un exemplu.
Se face observaia c tipul articol nu exist ca tip de date n limbajul Java, fiindc conceptul de clas
reprezint o structur de date extensie a articolului, cu deosebirea c la definirea clasei se indic att
piesele de date diferite ce intr n structur ct i operaiile (metodele) prin care se poate manipula
structura.
Pentru prelucrarea pieselor de date din articol, acestea se vor referi prin numele asociat articolului i
numele asociat cmpului, respectnd sintaxa:
nume_articol.nume_cmp
n cazul exemplului din Figura 8, referirea cmpului Prenume n variabila candidat1 se face prin
construcia:
candidat1.Prenume
care poate fi folosit pentru atribuirea de valori cmpului Prenume sau poate fi folosit n expresii (ca
operand) pentru prelucrri necesare unei aplicaii vizate.
Operaii asupra datelor de tip articol
Nr_Legitimatie Nume Prenume Media Absolvit
325 Popescu Ion 8,5 Da
Articol
Cmp Nume cmp Valoare
Similar tipului de date tablou, tipul articol este o structur ce conine alte tipuri de date, astfel c
operaiile posibile asupra valorilor cmpurilor sunt cele permise pentru tipul de date din cmpul
respectiv. n exemplul din Figura 8, pentru datele de tip ir de caractere din cmpurile Nume i
Prenume sunt permise operaii specificate la .
Tipuri abstracte de date Clase de obiecte
Dup cum s-a constatat, la fiecare tip de date prezentate anterior, fiecare tip de date are specific un
nume, o semnificaie, un domeniu de valori i operaii posibile asupra acestor valori. n abordarea
obiectual, se definesc clase de obiecte, ca tipuri abstracte de date ce nglobeaz structura de variabile
i operaiile asupra lor. Iniial, clasa este descris privind datele (proprietile) i metodele
(prelucrrile) caracteristice obiectelor pe care le reprezint.
Fie un exemplu n care se declar n limbajul Java dou variabile ir de caracter (s1, s2 i s3) ce fac
parte din clasa String (ca tip special de tablou), iar apoi se execut concatenarea primelor dou (v.
operaii pe iruri):
String s1, s2, s3;
s3=s1+s2;
irurile s1 i s2 intr direct n expresie cu operatorul + ntre variabile, ca i cum ar fi un tip de date
simple i nu s-ar supune restriciilor privind operaiile asupra tablourilor. Operatorul + nu face sumarea
obinuit ci concatenarea (adugarea) irurilor s2 dup s1; rezultatul concatenrii este ncrcat apoi
n variabila s3. Operatorul + este un operator definit special pentru clasa de obiecte String ir de
caractere, iar atunci cnd apare ntre dou variabile de acest tip tie cum s opereze (adaug irurile,
nu face sumare ca la numere ntregi).
Avantajul pe care programatorul l are la folosirea claselor de obiecte este acela c poate declara orice
structur de date corespunztoare unei categorii de obiecte din lumea real (o clas de obiecte),
definete operatori specifici clasei iar apoi folosete obiecte din aceast clas n expresii, ca i cum ar
fi piese simple de date. Mai mult, chiar faza de proiectare a programului, se simplific fiindc nu vor
trebui dect imaginate obiectele i prelucrrile necesare cu acestea, n scopul obinerii unui rezultat
dorit. Spre exemplu, dac se definete o clas paralelogram cu dou operaii posibile modificarea
dimensiunii a dou laturi paralele i modificarea unui unghi de col, se pot face prelucrri complexe
cum sunt: transformarea paralelogramului n dreptunghi sau transformarea dreptunghiului n ptrat,
folosind operatori i simboluri definite specific n cadrul clasei. Valorile obinute dup prelucrri, n
acest exemplu, vor fi dreptunghi respectiv ptrat.
Curs 4
Structuri dinamice de date
Imaginai-v o secie de asamblare automobile: muncitori specializai (n montarea uilor, a motorului,
a farurilor, etc.) prezint fiecare un loc de munc ordonat, cu seturi de unelte la ndemn - truse de
urubelnie, panouri de scule. Banda de montaj, cu seria de automobile, trece pe la fiecare loc de
munc i muncitorii fac, fiecare la rndul su, prelucrrile specifice. Fiecare trus sau panou de unelte
este o structur static (nu se modific n timp dac nu se rtcesc uneltele ), iar automobilul de pe
band este o structur dinamic (la care se adaug succesiv componentele necesare). Fr ordinea la
locul de munc nu se poate lucra eficient, iar asamblarea ordonat a automobilului este scopul
prelucrrilor din secie. Orice prelucrare se face cu organizarea prealabil a materialelor i uneltelor de
lucru, deci nu este de mirare c i n prelucrarea datelor organizarea este esenial.
ntre tipurile de date structurate prezentate la tabloul este similar trusei de urubelnie iar articolul -
panoului de scule (explicai dumneavoastr asemnarea), aa cum s-a amintit acestea fiind structuri
statice de date. Automobilul este o structur n evoluie, i poate fi asemnat cu una din structurile deja
prezentate la (lista linear sau lista nelinear - arborele), acestea fiind structuri dinamice de date.
n concluzie, structurile de date sunt organizri ale datelor n scopul realizrii eficiente a unor categorii
generale de prelucrri, implementate prin tipul articol (iar operaiile asupra lor prin programe separate)
sau, mai eficient, implementate prin obiecte ce conin pe datele din structuri i metodele ca posibile
asupra lor, aa cum se prezint n continuare.
Liste lineare
n mod intuitiv lista poate fi privit ca o mulime finit i ordonat de elemente oarecare. Un vector
poate fi privit ca o list care prezint ns dou mari dezavantaje: numr elementelor trebuie cunoscut
de la nceput (datorit naturii statice a vectorilor) i faptul c introducerea unui nou element ntre altele
existente necesit re-aranjarea elementelor care urmeaz celui nou (datorit naturii compacte a
vectorilor).
List simplu nlnuit
Pentru cazul cnd pointer-ul P
i
indic nodul urmtor, lista se numete simplu nlnuit i apare ca n
Figura 9; ultimul nod conine n cmpul P
i
o valoare ce indic sfritul listei - valoare numit nil (n
Pascal) sau NULL (n C, C++ sau Java), valoare care indic spre nimic.
Figura 9 List linear simplu nlnuit.
Indicatorul P
0
este de fapt variabila pointer prin care se face acces la list, dar nu face parte din list.
E
1
este primul iar E
n
este ultimul element al listei, n fiind lungimea listei, elementele fiind ordonate
dup poziia lor n list; Dac n = 0, atunci se spune c lista este vid.
Operaii asupra listelor
Modificrile de valoare E
i
ale unui nod au loc prin operaii asupra tipurilor de date ce stocate n
cmpurile acestuia, dar operaiile asupra listelor privesc modificarea structurii acestora, adic a
organizrii nodurilor prin legturile dintre ele. Caracterul dinamic al structurii de tip list se vdete n
modul cum operaiile afecteaz dimensiunea listei, fr a modifica poziia fizic a nodurilor (n
memoria de lucru) ci, eventual, valorile indicatorilor din fiecare nod.
P
0
E
1
P
1
E
2
P
2
E
n
NULL
- Inserarea unui nou element E
x
n list este reprezentat n Figura 10 a); dup cum se observ,
dup ntreruperea legturii dintre nodurile E
i
, i E
j
, se actualizeaz doar valorile indicatorilor
P
i
si P
x
.
- La tergerea unui element (E
i+1
), se actualizeaz valoarea pointer-rului nodului precedent (E
i
)
pentru a indica elementul urmtor (E
i+2
), iar elementul ters (E
i+1
) este eliminat din memorie
(elibereaz locaia ocupat pn la acest moment) - Figura 10 b).
Din aceste dou exemple se constat caracterul flexibil i dinamic al listelor, cu observaia c aceste
caracteristici rezult din utilizarea tipului indicator (pointer)
Figura 10 Operaii de inserare i de tergere a unui nod n lista linear simplu nlnuit.
Alte operaii pot fi:
- parcurgerea listei n scopul cutrii unui nod (de indice sau valoare cunoscut), al primului sau
ultimului element (capul sau coada listei);
- determinarea elementului succesor sau predecesor pentru un nod dat;
- iniializarea listei adic tergerea tuturor elementelor din list (vidarea listei).
Operaiile de tergere ale unui nod sau a ntregii liste face totodat eliberarea zonei de memorie
ocupat, spre a fi utilizat pentru alte variabile dinamice.
Tipuri de liste
Dac pointer-ul ultimului nod E
n
al listei indic primul element E
1
, atunci lista se numete list
circular, fiindc parcurgerea liste se poate face pn la capt i apoi din nou de la nceput.
Parcurgerea listei se face prin saltul ntre indicatori (P
0
, P
1
, ..., P
i
, ...) iar vizitarea nodului i se face
prin prelucrarea (sau pur i simplu consultarea) valorii E
i
.
Fiindc lista simplu nlnuit nu poate fi parcurs dect de la cap (P
0
) la coad (P
n
) iar pentru
revenirea ctre cap trebuie reluat parcurgerea de la cap, se folosete adesea lista dublu nlnuit;
acestea prezint dou cmpuri indicator: unul spre dreapta (spre coad) altul spre stnga (spre cap).
Parcurgerea listei se poate face uor n ambele sensuri prin salturi att spre dreapta ct i spre stnga.
Cozi numite i liste FIFO (First In First Out primul intrat primul ieit) sunt liste la care
intereseaz n special cele dou capete i modurile cum se adaug noi elemente sau se elimin
elementele - pentru aceste tipuri de liste introducerea / eliminarea de elemente se face doar prin capete.
Stive numite i liste LIFO (Last In First Out ultimul intrat primul ieit) care seamn cu un
pachet de cri de joc: adugarea de noi elemente se face prin captul de sus (vrful stivei) iar
eliminarea la fel. Acest tip de list este util pentru cazurile cnd prelucrrile parcurg datele ntr-un sens
iar apoi le parcurg n sens invers de exemplu la crearea unui palindrom cum este radar citit la fel i
invers.
E
i
P
i
E
j
P
j
E
n
NULL
E
x
P
x
E
i
P
i
E
i+1
P
i+1
E
i+2
P
i+2
a)
b)
Liste nelineare (arbori)
Pentru aceast categorie de liste nodurile au legturi cu numr variabil i nu doar ntre vecini (cu indici
succesivi) vezi Figura 11. Relaiile ntre noduri nu privesc ordinea ci ierarhia: un nod are relaii de
predecesor (printe de exemplu E
2
) cu noduri succesor (noduri subordonate, fii exemplu E
4
i
E
5
). Nodurile care nu au fii sunt noduri finale i au valorile indicatorilor nule (NULL).
Figura 11 Arbore binar.
Funcie de numrul maxim de fii ale unui nod (oarecare), arborele poate fi categorisit ca arbore binar
maxim dou noduri fii, arbore ternar maxim trei noduri fii, etc.
Reprezentarea arborilor binari
Cele mai utilizate categorii sunt cele binare mai simple i cu proprieti dar i cu semnificaii
intuitive (de exemplu clasificarea n categorii complementare de un fel i de altul); exist algoritmi
de transformare a unui arbore oarecare ntr-un arbore binar.
Reprezentarea unui arbore se poate face i folosind un tablou de muchii (cu dou coloane, indicnd pe
fiecare linie noduri adiacente) ns folosirea indicatorilor) permite o reprezentare ce ocup un spaiu
minim n memoria de lucru i, evident, ne-limitarea dimensiunii arborelui.
Operaii cu arbori
Fiind liste, arborii prezint categorii de operaii similare celor de la, prin care se afecteaz structura de
noduri i legturi sau se acceseaz valorile elementelor. Specific listelor nelineare sunt ramificaiile
prin care se pot separa subarbori, care pentru arborii binari vor fi denumii subarbore stng i
subarbore drept. Deci prelucrarea elementelor n arbore necesit dou aciuni de avans n arbore
avans stnga i avans dreapta, precum i o aciune de acces i prelucrare a valorii nodului curent
vizitare. Operaii posibile sunt:
- Parcurgerea arborelui const n vizitarea succesiv a nodurilor acestuia. Privind modul de
succesiune al vizitrii nodurilor, exist trei modaliti uzuale de parcurgere - dup modul n
care se pot combina aciunile de avans i vizitare:
a) Preordine: 1 vizitare, 2 avans stnga, 3 avans dreapta;
b) Inordine: 1 avans stnga, 2 vizitare, 3 avans dreapta;
c) Postordine: 1 avans stnga, 2 avans dreapta, 3 vizitare.
Aceste modaliti de parcurgere se pot aplica i recursiv .
P
1
P
1
E
1
P
2
P
2
E
2
P
3
P
3
E
3
NULL
NULL
E
4
NULL
NULL
E
5
NULL
P
6
E
6
NULL
NULL
E
7
NULL
NULL
E
8
Nivel I
Nivel II
Nivel III
Nivel IV
- Inserarea i tergerea unui nod din arbore similar celor de la liste liniare.
- Determinarea nlimii arborelui.
- Determinarea succesorului sau predecesorului unui nod n arbore.
- Extragerea unui subarbore.
Operaiile de parcurgere ale arborelui din Figura 11 sunt ilustrate n Figura 12 prin succesiunea de
noduri obinute n fiecare caz.
Figura 12 Parcurgerea arborelui binar n preordine, indordine i postordine.
Dup cum s-a artat i la Error! Reference source not found., structurarea arborescent este foarte
eficient n prelucrarea datelor, cum sunt cutarea n volume mari de date, calculul expresiilor
respectnd precedena operatorilor (forma polonez), clasificarea obiectelor.
1
2 3
4 5 6 7
8
Preordine: 1-2-3-4-5-6-7-8
Inordine: 4-2-5-1-8-6-3-7
Postordine: 4-5-2-8-6-7-3-1
Rezumat
Bit-ul reprezint unitatea elementar de informaie, corespunznd unei situaii fizice n care un
comutator este deschis sau nchis, situaii reprezentate de oameni, n afara calculatorului prin cifrele 0
i 1, deci, cifrele sistemului de numeraie binar.
Octet (sau Byte) este un grup de opt bii reprezentnd, tradiional, o celul de memorie.
I dentificatorul este numele ataat unei piese sau colecii de date, dar i a unei prelucrri anume, n
general aflate n memoria de lucru.
Variabila este o locaie de memorie referit printr-un identificator i poate conine diverse valori ale
unei date de tip specificat.
Constanta este o locaie de memorie referit printr-un identificator i poate conine doar o singur
valoare a unei date de tip specificat.
Literal este o valoare concret pentru un tip de date, indicat prin simboluri specifice tipului respectiv.
Varietatea informaiilor utilizate de om pare foarte mare, ns ele pot fi clasificate n
categorii generice care apoi s primeasc reprezentri generale ca tipuri de date. Se poate face o
analiz sumar din care rezult cteva categorii de asemenea informaii simple:
a) numere singulare utilizate a desemna sume de bani, distane, zile din luna calendaristic, cu
care se pot face calcule matematice. Se deosebesc dou categorii de numere numere ntregi i
numere reale (cu zecimale).
b) simboluri grafice - litere, cifre, semne de punctuaie, spaii libere, utilizate n texte. Aceste
simboluri sunt elemente ale unui set finit de simboluri de scriere (alfabetul, cifrele de la 0 la 9,
semnele de punctuaie); ele sunt denumite generic caractere alfanumerice.
c) Informaii de tip Adevrat sau Fals pentru a desemna o situaie sau un eveniment funcie de
care se ia o decizie (de exemplu, dac un eveniment a avut loc se execut o anumit aciune,
altfel alt aciune), denumite informaii logice.
Datele numerice se reprezint prin conversie n baza 2, utilizndu-se diferite formate.
Tipul de date caracter se reprezint tot prin cifre binare prin convenii de codificare corespunztoare
unor tabele de cod, dou dintre acestea fiind: ASCII, UNICODE.
Tipurile de date structurate se mai numesc i tipuri compuse de date. Datele structurate de tip tablou
sunt cele mai uzuale i sunt reprezentate de matrici, indiferent de dimensiunile acestora, componentele
matricilor fiind date de acelai tip. Datele de tip articol se refer la posibilitatea de descriere a
obiectelor din lumea real, un articol reprezentnd o structur de date de diferite tipuri, fiecare pies
din structur fiind referit prin nume.
Tipurile de date abstracte sunt specifice abordrii obiectuale, nglobnd structura de variabile ce
caracterizeaz obiectul i operaiile asupra lor.
Cu aceste tipuri de date se pot efectua operaii specifice.
Structurile de date sunt organizri ale datelor n scopul realizrii eficiente a unor categorii generale de
prelucrri, implementate prin tipul articol (iar operaiile asupra lor prin programe separate) sau, mai
eficient, implementate prin obiecte ce conin pe datele din structuri i metodele.
Concluzii
Datele corespunztoare informaiilor vehiculate de om se mpart n mai multe categorii, se
reprezint cu ajutorul cifrelor binare 0 i 1, n diferite formate i pot fi operate n moduri
corespunztoare.
Recomandri bibliografice
Ariton V., Reele de calculatoare, Editura Evrika Galati, 1999.
Bott E., Leonhard W., Microsoft Office XP, Teora, 2002.
Brookshear J. G., Introducere n Informatic, Ed. Teora, 1998.
Burdescu D. D., Algoritmi i structuri de date, Ed. Mirton, 1992
Cowart R., Knittel B., Microsoft Windows Professional, Teora, 2002
Davis C. et al. (Eds)., Entity-Relationship approach to Software Engineering, North Holland,
1983.
Jacobson I., Ericsson M. and Jacobson A., The Object Advantage: business process
engineering with object technology, Addison-Wesley, 2001.
Scholtz-Reiter B., et al., Business Process Modelling, Heidelberg, Springer, 1996.
Wilson D. A., Managing Information, Butterworth-Heinemann, 1998.
Zorkoczy P., Heap N., Information Technology an introduction, Pitman Publishing, 1995.