Académique Documents
Professionnel Documents
Culture Documents
Introduction Générale
&
Concepts de Base
1
Plan
◼ TDA
◼ TD
◼ SD
◼ Pointeurs et références
2
Démarche de résolution d’un
problème
Prob.
Traduction en
Formalisation
Compréhension Mise en œuvre langage
du problème
du problème de l’algorithme de
= spécification
programmation
3
Rappel
4
Types de Données Abstraits
◼ Chaque TDA est caractérisé par:
◼ un nom
◼ Exemple:
◼ entier : +, -, / , …
◼ liste : Vider une liste, Insérer un élément dans la liste, …
5
Exemple 1
6
Exemples 2
◼ La description fonctionnelle pour TDA Ensemble = {}
◼ estVide : {} → Booléen
◼ appartient : Elément x {} → Booléen
◼ ajouter : Elément x {} → {}
◼ enlever : Elément x {} → {}
◼ union : {} x {} → {}
7
Exemples 3
◼ La description axiomatique pour TDA ℕ
Axiomes de PEANO
◼ n N ; n’ / succ(n) = n’
◼ n, n’ N ; n n’ succ(n) succ(n’)
◼ n N / succ(n) = 0
◼ nN;n+0=n
◼ n, n’ N ; n + succ(n’) = succ(n+n’)
◼ nN;nx0=0
◼ n, n’ N ; n x succ(n’) = n + nxn’
8
Types de Données
9
Création d’un type de données
Utilisateur
Interface abstraite
Niveau logique
10
Implémentation d’un TDA
11
Déclaration d'un TAD en C
// fichier pile.h: déclaration du Type Abstrait de Données PILE
// Modèle de la structure de données :
typedef struct {
int size;
int* base;
int* top; } PILE;
// fichier pile.c
#include "pile.h"
void init_pile(PILE* p_pile, int siz) { /* code de l'implémentation*/}
13
Définition des opérations permises
d'un TAD en C (plus précisément)
// fichier pile.c
#include "pile.h"
void init_pile(PILE* p_pile, int siz)
{ p_pile->size = siz;
p_pile->top = p_pile->base = malloc(siz * sizeof(int)); }
14
Utilisation d’un TDA
◼ Se fait exclusivement par l’intermédiaire des
opérations qui leur sont associées et
indépendamment de son implémentation
◼ En-têtes des fonctions et procédures du TDA :
interface entre l’utilisateur et le TDA
◼ Manipulation du TDA sans connaître son
implémentation
◼ Utilisation indépendante vis-à-vis de tout
changement d’implantation
15
Utilisation d’un TDA en C
// Un programme d'essai
#include <stdio.h>
#include "pile.h"
main()
{
int i = 0;
PILE pile;
init_pile(&pile, 10);
push(&pile, 20);
pop(&pile, &i))
pile.size += 5;
del_pile(&pile);}
16
Structures de Données
TD simples TD composés
TD individuels TD collectifs = SD
17
Structures de Données
18
Solution : SD dynamiques
19
Pointeurs
◼ Pointeur : cellule dont la valeur réfère à une
autre cellule
21
Pointeurs
22
Rôle des pointeurs
◼ Supposons qu'on a 1000 étudiants et un traitement donné à faire
(calcul moyenne, tri etc.):
23