You are on page 1of 8

Support de Cours Algos & structures de donnes Mr BERREHOUMA N.

Chapitre 3
Types Abstraits de Donnes

1. Abstraction des donnes


le langage de programmation met la disposition du programmeur un certain nombre de
types de base (types prdfinies) permettant de manipuler directement les informations
(valeurs) de nature trs simple( entier, rel, boolen, caractre).
La notion du type est dfinie comme un ensemble des valeurs munies doprations.
Mais le programmeur doit galement pouvoir manipuler des informations plus complexes (
les nombres rationnels, les nombres complexes, les polynmes).
Donc, il doit se doter des types plus complexes permettant de prendre en compte la
complexit de ces informations.
Lobjectif est de transposer ce qui a t fait sur les types de base des types plus
complexe. Cest dire dcrire formellement ou bien spcifier un type (sort en anglais) en
saffranchissant des considrations dimplmentation (reprsentation)

Exemple : Le type chane de caractres


On dispose dun certain nombre doprations quon peut faire sur des chanes de
caractres :

1. Ecrire une constante exemple : Bonjour .


2. Accder au nme caractre dune chane.
Exemple : nme (bonjour,4)=j.
3. Lopration de concatnation qui renvoi une chane
Exemple : concat (bonjour,monsieur)=bonjour monsieur.
4. Comparer deux chanes.

Ces oprations nous permettent de manipuler des chanes de caractres dans un algorithme
tout en ignorant la manire dont les chanes sont reprsentes sur la machine (mme chose
pour les entiers, les rels).
Donc, il faut pour chaque nouveau type de disposer un nombre suffisant doprations
manipulant des informations de ce type.

2. Dfinition
Labstraction des donnes est une mthode consiste sparer :
Dune part, la faon dutiliser les informations dun nouveau type : cest ce que lon
appellera spcifier un type.
De lautre part, les moyens permettant lutilisation de ce type : ce que lon appellera
raliser un type.

http://berrehouma.olympe-network.com
1
Support de Cours Algos & structures de donnes Mr BERREHOUMA N.

Exemple dfinition doprations dun type date :


Le type date est muni par les oprations suivantes dont on donne les types des paramtres
et du rsultat :

diffrence : date, date entier /*nombre des jours sparant les deux dates*/
jour_de_la_semaine : date chane de caractre
en_jour : date entier /* la date est exprime en jour partir du 1/1/2000 */
ajouter_jour : date, entier date
anne : date entier
mois : date entier
jour : date entier
dfinir_une_date : entier, entier, entier date /* crer une date partir de 3 entiers*/

On a dfini les oprations sur le type date (on connat quelles oprations, on peut effectuer
sur ce type de donnes). Ces dfinitions ne sont pas suffisantes pour dfinir prcisment
leffet de ces oprations. Une manire pour dcrire ces effets consiste crire des
quations qui mettent en rapport ces oprations.

Exemple

diffrence (d1,d2) =[en_jour(d2)]-[en_jour(d2)]


anne [definir_une_date(j,m,a)]= a

3. Spcification dun type


Spcifier un type consiste lui donner :
1. un nom
2. dcrire lensemble des valeurs quil doit reprsenter
3. dfinir un nombre suffisant doprations permettant dutiliser ce type comme un
type de base.

Un type abstrait de donnes est donc caractris par


1. son nom
2. les sortes quil manipule
3. les oprations sur les donnes
4. les proprits sur les oprations
Sortes : ce sont des noms servant reprsenter des ensembles des valeurs avec lesquelles,
on va dfinir des oprations.
Exemple naturel, rel, boolen
N.P on ne donne que leurs noms

Signature : la signature dfinie pour chaque opration son nom et son profil ( les sortes des
paramtres et la sorte du rsultat).

http://berrehouma.olympe-network.com
2
Support de Cours Algos & structures de donnes Mr BERREHOUMA N.

Exemple dans la sorte naturel la signature (le profil) de lopration addition est le suivant :

+ : naturel, naturel naturel

plus (+) est une opration qui a deux paramtres de sorte naturelle , et qui produit un
rsultat de sorte naturelle.
Pair : naturel boolen
Zro : naturel

zro est une opration constante qui na pas des paramtres et retourne un naturel qui sera
toujours le mme.

La forme gnrale dune opration n aire est


Opration : sorte1,sorte2,sorten sorten+1
Remarques
i. Lorsque on donne la signature dune opration, il faut indiquer la place de ses arguments
par des tirets

_ + _ : entier, entier entier

ii. parmi les oprations certaines sont appeles gnratrices.

4. Choix des oprations


Dans la spcification dun TAD on sintresse seulement par les oprations primitives,
c'est--dire des oprations qui manipulent directement la structure de donnes. Dans
lexemple des nombres rationnels, les oprations daddition, soustraction, multiplication et
division sont des oprations primitives. Par contre, une opration qui calcule la moyenne
des deux rationnels nest pas primitive, car elle peut tre faite par laddition de deux
nombres puis la multiplication par .
Parmi les primitives, on distingue gnralement :

Opration dite interne : si elle rend un rsultat dune sorte dfinie. Toutes valeur
dune sorte dfinie est le rsultat dune opration interne.
Elle sert construire les valeurs de sorte
Exemple lopration successeur permet de construire tous les entiers partir de
la constante 0. succ(0)=1, succ(1) =2, succ(succ(0))=2
Opration dite observateur :si elle au moin un argument dune sorte dfinie, et
elle rend un rsultat dune sorte prdfinie.
Elle sert vrifier les valeurs dune sorte
Exemple lopration qui permet de vrifier si un nombre naturel est pair ou non.

A partir des oprations primitives, on peut par la suite enrichir le nouveau TAD par ajout
doprations non primitives.
Les oprations qui nont pas des arguments sappellent des oprations constantes.

http://berrehouma.olympe-network.com
3
Support de Cours Algos & structures de donnes Mr BERREHOUMA N.

5. Une rgle mthodologique

Quand on crit une signature dun TAD, on donne les oprations internes et les
observateurs sur la sorte dfinie. On najoute pas des oprations sur les sortes prdfinies.

Exemples

i. Signature du TAD rationnel

Sorte
rationnel
Utilise
entier,boolen
Oprations
r : entier,entier rationnel
num : rationnel entier
den : rationnel entier
equivalent : rationnel, rarionnel boolen
inverse : rationnel rationnel

Oprations internes : r, inverse ;


Oprations observateurs : num, den, equivalent.

ii. Signature dun TAD vecteur

Sorte
vecteur
Utilise
lment, entier,boolen
Oprations
vecteur : entier,entier vecteur
changer_ime : vecteur,lment,entier vecteur
ime : vecteur,entier lment
borne_inf :vecteur entier
borne_max : vecteur entier
init : vecteur, entier boolen

6. Les Axiomes
Le problme est de donner une signification ou une smantique au nom de la signature, aux
sortes et aux oprations.
Pour dfinir un TAD, on nonce les proprits des oprations sous forme daxiomes.
Dfinition dune terme : cest une expression construite laide des oprations, des
variables et qui respecte la signature.

http://berrehouma.olympe-network.com
4
Support de Cours Algos & structures de donnes Mr BERREHOUMA N.

Exemple
Zro
Pair(zro)
Y+x+zro

Les axiomes dcrivent les proprits des oprations sous forme dquivalence entre termes

Exemple
x+y = y+x (= signifie quivalent) (+) est une opration commutative
x+zro =zro

On peut remplacer ce qui gauche par ce qui droite et en vis versa.


Lapplication des axiomes des termes et des sous terme permet dobtenir dautre
expressions quivalentes

Exemple zro + x= x + zro

En gnrale, on trouve une valeur dune expression en la rduisant laide des axiomes
une expression quivalente qui ne contient que des constantes et des oprations
gnratrices.

Remarque on peut remplacer les quations par dautre quation contenant des conditions

b=vrai t1=t2
t1 = si b alors t2 sinon t3
b=faux t1=t3

7. Le choix des axiomes

Rgle1 : il faut crire les axiomes qui dfinissent le rsultat de la composition des
observateur avec toutes les oprations interne.

Rgle2 : dans le cas o certaines opration internes restent indfinies, il faut crire les
axiomes qui dfinissent les rsultats de ces oprations internes avec dautre oprations
internes.

Exemple revenons lexemple des rationnels

num(r(x,y) )= x
den(r(x,y)) = y
equivalent(r(x,x), r(1,1)) = vrai
r(a,b) = mul (mul(a, inverse(b)), r(1,1))
inverse(r(a,b)) = r(b,a)

http://berrehouma.olympe-network.com
5
Support de Cours Algos & structures de donnes Mr BERREHOUMA N.

8. Prconditions
Ce sont des proprits qui doivent tre vrifies pour que lexcution de lopration soit
possible.
Les proprits sont destines restreindre lutilisation des oprations des oprandes
vrifiant certains prdicats.
Remarque si une opration na pas des prconditions, c'est--dire que le domaine de cette
opration est dfini sur tout le produit cartsien des sortes dargument
Syntaxe opration (arguments) est dfinie ssi condition

9. Structure gnrale dune signature dun TAD

Sorte
nom de la sorte dfinie
Utilise
noms des sortes prdfinies
Oprations
signatures des oprations
Prconditions
Prconditions ventuelles pour certaines oprations
Axiomes

Exemple TAD tableau

Sorte
tableau
Utilise
Entier,lment, boolen
Oprations
tab : entier, entier tableau
changer_ime : tableau, lment, entier tableau
ime : tableau,entier lment
borne_inf : tableau entier
borne_sub : tableau entier
init : tableau, entier boolen
Prconditions
ime(T,i) est dfinie ssi borne_inf(t) i borne_sub(T)
Axiomes
borne_inf(T) i borne_sub(T) ime(changer_ ime(T,i,e),i)= e
borne_inf(T) i borne_sub(T) et borne_inf(t) j borne_sub(T) et ij
ime (ime(changer_ ime(T,i,e),j),j)= ime(T,j)
Init (tab (i,j),k) = faux
borne_inf(T) i borne_sub(T) init(changer_ ime(T,i,e),i)= vrai
borne_inf(T) i borne_sub(T) et ij init(changer_ ime(T,i,e),j)= init(T,j)
borne_inf(tab(i,j))= i
borne_sub(tab(i,j))= j
borne_inf(changer_ ime(T,i,e))= borne_inf(T)
avec T: tableau, e: lment , I :entier

http://berrehouma.olympe-network.com
6
Support de Cours Algos & structures de donnes Mr BERREHOUMA N.

10. Implmentation des TAD

A partir dune spcification de TAD, on peut crer des types concrets. On choisie un
langage de programmation, ses propres types concrets dobjets et les oprations sur les
valeurs de ces types nous permettent dimplmenter une spcification de TAD.
La ralisation dun type abstrait consiste donc :

1. choisir une structure interne des donnes construite partir des types de base du
langage (prdfinis) et/ou des types dj dfinis (tableaux ,pointeur,enregistrement
..) ceci veut dire quon doit fixer une reprsentation des objet du TAD spcifi par
ceux du langage de programmation.
2. analyser et programmer chaque opration du TAD. La programmation et raliser en
tenant compte de la structure choisie.

Pour lanalyse et la programmation deux points de vues peuvent tre adopter

Statique (fonctionnel stricte)

Les oprations du TAD sont ralises sans modification doprandes, on a alors des
vritables fonctions mathmatiques

Exemple
Ajouter un lment un tableau, le nouveau tableau porte un nom diffrent et lancien
tableau est entirement prserv

Remarque
Trs coteux, car on doit souvent dupliquer des objets ou parties dobjets.

Dynamique (procdural)
Les oprations du TAD sont ralises avec modification des oprandes pour une question
defficacit

Exemple
Quand on ajoute un lment un tableau, le nouveau tableau remplace lancien, il est
dsign par le mme identificateur, c'est--dire quil occupe le mme emplacement
mmoire donc lancien tableau est perdu.
Cette solution est efficace en temps et en espace mmoire.

Remarques
a. On peut mlanger les deux points de vues, en crant pour certaines oprations une
version statique et une version dynamique.
b. Une reprsentation est correcte si elle vrifie la spcification algbrique : on doit
trouver que chaque axiome est respecte par les opration quand elles sont utilises
dans les cas prvus par les prconditions.
c. Plusieurs implmentations satisfaisant la spcification algbrique peuvent tre
ralises.

http://berrehouma.olympe-network.com
7
Support de Cours Algos & structures de donnes Mr BERREHOUMA N.

11. Dmonstration des proprits


En logique mathmatique, une spcification algbrique peut tre considre comme une
thorie du calcul des prdicats, on appliquant les rgles des dduction de la logique partir
des axiomes, on peut dmontrer des proprits, c'est--dire des thormes de cette thorie.

Consistance dune spcification algbrique


Cest une proprit importante pour une thorie logique.

Dfinition
Une thorie logique quationnelle du premier ordre est dite consistante si elle ne contient
pas de contradiction, c'est--dire elle ne contient pas des thorme vrai = faux .
En spcification algbrique, on a un point de vue incrmentale un peu diffrent :
On suppose quon construit une spcification SPEC1 en utilisant un un SPEC0, on exige
alors en plus de la simple consistance logique.
Dfinition
Une spcification SPEC1 qui utilise une SPEC0 est consistante relativement SPEC0,si
on ne peut pas dmontrer dans SPEC0 un thorme nouveau
Exemple
Si on trouve pour une spcification un tableau T et un indice i tel quon puisse dmontrer
que ime(T,i)=0 et ime(T,I)=1, alors cette spcification nest pas consistante par raport au
TAD tableau

http://berrehouma.olympe-network.com
8

You might also like