Un tip de dat este o mulime de valori mpreuna cu o mulime de
operaii de baz definite pentru aceste valori. Exemplu: int este un tip de dat ce folosete valorile {-32768,...,-1,0,1,...,32767} i operaiile +,-,*,/,% (i altele) Un tip de date este considerat ca o mulime de valori simbolice, construite i transformate prin operatori specifici tipului, operatori descrii exclusiv prin efectele pe care le au asupra valorilor prelucrate. Un tip de dat se numete tip de dat abstract (ADT-Abstract Data Type) dac programatorii ce folosesc acel tip nu au acces la detaliile implementrii valorilor si operaiilor. Un astfel de tip este etichetat ca tip de date abstracte (TDA), pentru c specificarea si analiza lui sunt independente n raport cu orice implementare particular. Evident, TDA-urile au aplicabilitate n fazele primare ale proiectarii programelor, ncurajnd si ajutnd activitatea de proiectare n spiritul paradigmei obiectuale. Ca tehnologie de proiectare, TDA-urile contribuie la implementarea unor module de program reutilizabile i, totodat, maresc considerabil independena unui program n raport cu reprezentarea i implementarea particular a datelor prelucrate. Tipul de date abstract este o entitate manipulat doar prin operaiile ce definesc acel tip.
Avantajele utilizrii tipurilor de date abstracte sunt:
1.Programele devin independente de modul de reprezentare a datelor. 2.Modul de reprezentare poate fi modificat, fr nsa a afecta restul programului (de exemplu, o mulime poate fi implementat printr-un tablou sau printr-o list ordonat, dar partea de program ce folosete operatorii tipului abstract ramne neschimbat).
3.Se previne violarea accidentala a datelor.
4.Utilizatorul tipului abstract este forat s manipuleze datele doar prin intermediul operatorilor ce compun tipul abstract, astfel reducndu-se riscul unei distrugeri a datelor. Exemplu: Tipurile predefinite (cum ar fi int) sunt tipuri de date abstracte. Tipurile definite de programator, cum ar fi struct si class nu sunt implicit tipuri abstracte de date. Dac nu sunt definite i folosite cu atenie, tipurile definite de programator pot fi folosite n mod neintuitiv pentru a face un program greu de neles i de modificat. Modul cel mai bun de a evita aceste probleme este s fim siguri c toate tipurile de date declarate de programator sunt tipuri abstracte de date. Pentru a defini o clas care s fie un tip abstract de date, trebuie s separam specificrile modului de folosire a tipului de ctre programator de detaliile modului de implementare a tipului. Separarea trebuie sa fie complet astfel ncat la o schimbare n implementarea clasei, orice program care folosete clasa abstract de date s nu necesite schimbri suplimentare. Un mod de a asigura aceast separare este: 1.Facem toate variabilele membru ale clasei membri private. 2.Facem toate operatiile de baza de care programatorul are nevoie functii membru public ale clasei (specificand modul de folosire a fiecarei functii membru specifice). 3.Facem orice functie help a clasei membru private. Interfaa unui ADT (definit ca o clasa n C++) const n funciile membru publice mpreuna cu comentariile care specific modul de folosire a acestor funcii membru publice. Implementarea unui ADT consta n membrii privai ai clasei i definiiile funciilor membre publice i private. Deci clasa poate fi mprit n interfa i implementare.
n C tipurile abstracte sunt realizate folosind fiiere. Acest mod are
desigur propriile sale limitri. Menionm doar dou din ele: 1. nu se pot defini tablouri de tipuri abstracte 2. nu se pot transmite parametri avnd ca tip un tip abstract.
Tipuri de date logice
Acest tip de valori, chiar dac se refer la tipurile standarte, pentru muli poate fi puin cunoscut. n legtur cu aceasta , ne vom uita puin la unele elmente ale logicii matematice, din care a provenit acest tip de valori. Logica matematic este una din ramurile comune ale logicii-tiina despre formele i legile gndirii, ce s-a dezvoltat din cauza cerinelor matemati cii. Temelia logicii matematice o alctuiete algebra logic, deoarece aici se folosete acela limbaj care este caracteristic pentru matematica general. Prin enun subnelegem orice propoziie n privina creia putem spune c este adevrat sau fals, de exemplu: 3>2,5-numr par, Oslo-capitala Cubei .a. S remarcm c propoziia de tipul cifra 0.000001 este mic nu este un enun n sensul de mai sus, deoarece sensul de numr mic Este extrem de relativ, aa c este greu de afirmat este adevrat sau fals propoziia expus mai sus. Deci adevrul fiecrei propoziii este determinat de dou valori: adevr (dac enunul este adevrat) sau fals(dac enunul este fals). Aceste dou enunuri se numesc echivalente, dac valoarea lor de adevr este mereu aceiai. De exemplu : 5-numr par, Oslo-capitala Cubei snt echivalente, deoarece snt ambele false. Adevrul enunului astzi este miercuri depinde de ziua n care a fost fcut, iar enunul x<0 depinde de valoarea lui x. n legtur cu aceasta apare noiunea de variabil logic sau boolean, care poate primi una din dou valori logice: adevr sau fals. n particular, fiecui enun i se poate pune o variabil logic. S remarcm c de studierea logicii din poziii formale pentru prima dat s-a ocupat la jumtatea secolului trecut matematecianul englez Jeorge Bool, n cinstea lui determinarea enunurilor este numit algebra boolean, dar valorile logice booleene. De aici a provenit cuvntul boolean ca sinonim a cuvntului logic- cuvnt n multe limbi algoritmice. Adevrul unui enun poate depinde de adevrul altor enunuri, iar caracterul acestei depinderi poate fi deosebit. De exemplu, adevrul enunului x*y0, depinde de adevrul enunului x0 i y0 . Caracterul depinderii este aici aa : primul enun va fi adevrat n cazul cnd alte dou
enunuri vor fi adevrate simultan. Iar enunul x*y0 va fi adevrat dac
mcar unul din enunuri x0 i y0 vor fi adevrate, dup cum observm caracterul depinderii aici este altul. n algebra obinuit pentru a arta depinderile reciproce ntre mrimi, se folosesc unele operaii simple de legtur ca: *, -, +, \. Cu ajutorul acestor operaii simple se poate prin metoda superpoziiei s formm depinderi mai complicate. Analogic n logica matematic la formarea enunurilor i mai complicate se ntrebuineaz unele legturi logice simple, crora le corespund operaii logice definite asupra adevrului enunurilor. n acest caz ne putem limita la 3 legturi, prin care se poate exprima orice alte legturi logice(negarea, conjuncia, disjuncia).