Structuri de Date

Previzualizare curs:

Extras din curs:

Tipuri Abstracte de Date în C

Un Tip Abstract de Date (TAD) este o colecţie de obiecte de un anumit tip, împreună cu

operaţiile asociate acestor obiecte. Un TAD folosit într-un program, este implementat

printr-un modul.

Orice modul este de sine stătător şi are o interfaţă bine definită, care lămureşte modul în

care este folosit modulul.

De ce sunt necesare TAD? Limbajele de programare posedă un mecanism de creere a

unor noi tipuri de date. Implementările acestor tipuri de nivel înalt, dispersate în

program, cresc complexitatea şi influienţează negativ asupra clarităţii. Dacă operaţiile

asupra acestor tipuri de nivel înalt nu se folosesc în mod consistent, atunci pot apare erori

în program.

Un TAD constă din:

· o mulţime S de structuri numite stări sau valori.

· un set de operaţii care pot fi aplicate stărilor din S.

Fiecare obiect sau instanţă a TAD are o stare. Operaţiile se clasifică în:

· operaţii de modificare a stării TAD şi

· funcţii de access, care furnizează informaţii asupra unui obiect al TAD, fără să

modifice starea.

Un TAD este o entitate matematică abstractă, cu existenţă independentă. TAD sunt

implementate prin module. Există o distincţie între TAD matematic şi implementarea sa

într-un limbaj de programare. Un singur TAD poate avea mai multe implementări

diferite.

Exemplu:Considerăm o coadă de întregi.In acest caz S este mulţimea tuturor secvenţelor

finite de întregi, iar operaţiile asociate sunt: Enq,Deq,Front,Q_Size, şi Q_Empty.

Proceduri de manipulare

Enq Inserează un întreg ca ultimă poziţie în coadă

Deq Şterge primul element din coadă

Funcţii de acces

Front furnizează întregul din vârful cozii

Q_Size furnizează numărul de întregi din coadă

Q_Empty testează dacă lungimea cozii este 0 sau nu

Alte exemple de structuri matematice care pot reprezenta TAD : mulţimi, grafuri, arbori,

matrice, polinoame, etc.

Mulţimea S este un set de obiecte matematice discrete de un tip oarecare.

Un obiect sau instanţă a TAD este asociat cu o istorie, de stări, provenite din aplicarea

operaţiilor TAD.

Pentru starea Empty operaţiile, Front şi Deq nu sunt definite. Trebuiesc stabilite

precondiţii pentru fiecare operaţie, indicând exact când se pot aplica aceste operaţii.

Astfel o precondiţie atât pentru Front cât şi pentru Deq este: ‘not Empty’.

Pentru ca un TAD să fie util, trebuie să fie îndeplinite precondiţiile pentru fiecare

operaţie. TAD bine definite indică clar precondiţiile pentru fiecare operaţie. TAD

documentează şi postcondiţiile, -condiţii care devin adevărate după executarea unei

operaţii. De exemplu, după executarea operaţiei Enq apare postcondiţia ‘not Empty’.

Operaţiile TAD pot fi gândite ca funcţii în sens matematic. Precondiţiile şi postcondiţiile

definesc domeniul şi codomeniul funcţiei. TAD este complet specificat numai în

momentul în care toate operaţiile au fost definite, cu toate precondiţiile şi postcondiţiile

implicate.

Implementarea TAD

Un Modul este o parte a programului izolată de restul programului printr-o interfaţă bine

definită. Modulele asigură servicii (funcţii, tipuri de date, ..) Clienţilor.

Un client poate fi orice (program, persoană, alt modul) care foloseşte servicile modulului.

Spunem că servicile se exportă clientului, sau sunt importate din modul.

Conceptul de modul implementează ideea ascunderii informaţiei, clienţii nu au acces la

detaliile implementării modulului. Clientul are acces la serviciile exportate prin interfaţă.

În general, există un modul separat pentru fiecare TAD.

În C fiecare TAD constă dintr-o structură. Utilizatorul TAD (clientul) primeşte o

referinţă (un pointer) la această structură. Pentru fiecare operaţie a TAD se defineşte o

funcţie, care conţine ca argument pointerul la TAD. Clientul nu poate folosi acest pointer

pentru a accesa direct câmpurile structurii, asigurându-se în acest mod ascunderea

informaţiei.

struct coada

Coada fata data

Q spate next

lung struct nod

Implementarea trebuie să conţină:

· O funcţie care crează un nou obiect (constructor)

Modul Utilizator

Interfaţă

· O funcţie care eliberează memoria asociată cu obiectul TAD când acesta nu se

mai foloseşte (destructor).

In C, se separă:

· implementarea modulului TAD într-un fişier .c care conţine structura concretă şi

definiţiile funcţilor,

· interfaţa modulului, într-un fişier .h care conţine definiri de tipuri şi prototipurile

funcţiilor exportate.

Download gratuit

Documentul este oferit gratuit,
trebuie doar să te autentifici in contul tău.

Structură de fișiere:
  • sd_curs1.pdf
  • sd_curs2.pdf
  • sd_curs3.pdf
  • sd_curs4.pdf
  • sd_curs5.pdf
  • sd_curs6.pdf
  • sd_curs7.pdf
Alte informații:
Tipuri fișiere:
pdf
Nota:
8/10 (1 voturi)
Nr fișiere:
7 fisiere
Pagini (total):
96 pagini
Imagini extrase:
96 imagini
Nr cuvinte:
24 722 cuvinte
Nr caractere:
123 155 caractere
Marime:
1.13MB (arhivat)
Publicat de:
NNT 1 P.
Nivel studiu:
Facultate
Tip document:
Curs
Domeniu:
Limbaje de Programare
Predat:
la facultate
Materie:
Limbaje de Programare
Profesorului:
Popescu Alexandru
Sus!