Lec09 Files

Post on 25-Jul-2015

27 views 5 download

Transcript of Lec09 Files

Structures de donnéesLeçon n. 1 – Introduction et vue d’ensemble

Prof. A. EL FAKERENSIAS - UNIVERSITE MOHAMMED V SOUISSI

Leçon n° 9 – Structures de données linéaires : les files d’attente

STRUCTURES DE

DONNÉES

STRUCTURES DE

DONNÉES

Structures de donnéesLeçon n. 1 – Introduction et vue d’ensemble

Prof. A. EL FAKERENSIAS - UNIVERSITE MOHAMMED V SOUISSI

Leçon n° 9 – Structures de données linéaires : les files d’attente

STRUCTURES DE DONNÉES LINÉAIRES:

FILES D’ATTENTE

STRUCTURES DE DONNÉES LINÉAIRES:

FILES D’ATTENTE

Structures de donnéesLeçon n. 1 – Introduction et vue d’ensemble

Prof. A. EL FAKERENSIAS - UNIVERSITE MOHAMMED V SOUISSI

Leçon n° 9 – Structures de données linéaires : les files d’attente

Plan de la leçonPlan de la leçon

TDA files d'attente TDA files d'attente

Opérations sur une file Opérations sur une file

Les files circulaires Les files circulaires

Structures de donnéesLeçon n. 1 – Introduction et vue d’ensemble

Prof. A. EL FAKERENSIAS - UNIVERSITE MOHAMMED V SOUISSI

Leçon n° 9 – Structures de données linéaires : les files d’attente

TDA files d'attente

TDA files d'attente

Structures de donnéesLeçon n. 1 – Introduction et vue d’ensemble

Prof. A. EL FAKERENSIAS - UNIVERSITE MOHAMMED V SOUISSI

Leçon n° 9 – Structures de données linéaires : les files d’attente

TDA files d'attenteTDA files d'attente

PourquoiPourquoi

Mettre en attentedes informationspour exécution

Mettre en attentedes informationspour exécution

Structures de donnéesLeçon n. 1 – Introduction et vue d’ensemble

Prof. A. EL FAKERENSIAS - UNIVERSITE MOHAMMED V SOUISSI

Leçon n° 9 – Structures de données linéaires : les files d’attente

CommentComment

TDA files d'attenteTDA files d'attente

La première information à être récupérée est celle qui a été mise en attente en premier

La première information à être récupérée est celle qui a été mise en attente en premier

Stratégie FIFO: First In First OutStratégie FIFO: First In First Out

Structures de donnéesLeçon n. 1 – Introduction et vue d’ensemble

Prof. A. EL FAKERENSIAS - UNIVERSITE MOHAMMED V SOUISSI

Leçon n° 9 – Structures de données linéaires : les files d’attente

Domaine d'utilisation Domaine d'utilisation

TDA files d'attenteTDA files d'attente

Les problèmes qui suivent une stratégie FIFO peuvent être résolus en utilisant une

structure de données File

Les problèmes qui suivent une stratégie FIFO peuvent être résolus en utilisant une

structure de données File

Structures de donnéesLeçon n. 1 – Introduction et vue d’ensemble

Prof. A. EL FAKERENSIAS - UNIVERSITE MOHAMMED V SOUISSI

Leçon n° 9 – Structures de données linéaires : les files d’attente

TDA files d'attenteTDA files d'attente

Accès à un dispositif périphérique Accès à un dispositif périphérique Gestions des fichiers à imprimer Gestions des fichiers à imprimer

Gestion des processus/multitâche Gestion des processus/multitâche

Domaine d'utilisation Domaine d'utilisation

Structures de donnéesLeçon n. 1 – Introduction et vue d’ensemble

Prof. A. EL FAKERENSIAS - UNIVERSITE MOHAMMED V SOUISSI

Leçon n° 9 – Structures de données linéaires : les files d’attente

TDA files d'attenteTDA files d'attente

Ensemble d'éléments de même type

Insertion par une extrémité et suppression par une autre

Ensemble d'éléments de même type

Insertion par une extrémité et suppression par une autre

DéfinitionDéfinition

InsertionInsertion SuppressionSuppression

File File

Structures de donnéesLeçon n. 1 – Introduction et vue d’ensemble

Prof. A. EL FAKERENSIAS - UNIVERSITE MOHAMMED V SOUISSI

Leçon n° 9 – Structures de données linéaires : les files d’attente

Initialiser une file d’attente à vide Initialiser une file d’attente à vide Indiquer si la file d’attente est vide Indiquer si la file d’attente est vide

Opérations sur une fileOpérations sur une file

TDA files d'attenteTDA files d'attente

Ajouter un nouvel élément en queue de la file Ajouter un nouvel élément en queue de la file Récupérer l'élément en tête de la file Récupérer l'élément en tête de la file

Structures de donnéesLeçon n. 1 – Introduction et vue d’ensemble

Prof. A. EL FAKERENSIAS - UNIVERSITE MOHAMMED V SOUISSI

Leçon n° 9 – Structures de données linéaires : les files d’attente

Opérationssur une fileOpérationssur une file

Structures de donnéesLeçon n. 1 – Introduction et vue d’ensemble

Prof. A. EL FAKERENSIAS - UNIVERSITE MOHAMMED V SOUISSI

Leçon n° 9 – Structures de données linéaires : les files d’attente

Représentation séquentielleReprésentation séquentielle

#define Max 100#define element intstruct fileAttente { element t[100]; int nbC;} q;

#define Max 100#define element intstruct fileAttente { element t[100]; int nbC;} q;

Opérations sur une fileOpérations sur une file

00nbC-1nbC-1

tt

Structures de donnéesLeçon n. 1 – Introduction et vue d’ensemble

Prof. A. EL FAKERENSIAS - UNIVERSITE MOHAMMED V SOUISSI

Leçon n° 9 – Structures de données linéaires : les files d’attente

Opérations sur une fileOpérations sur une file

void raz() {q.nbC = 0;return;}

void raz() {q.nbC = 0;return;}

nbC==0nbC==0

tt

Initialiser une file d’attente à vide Initialiser une file d’attente à vide

Structures de donnéesLeçon n. 1 – Introduction et vue d’ensemble

Prof. A. EL FAKERENSIAS - UNIVERSITE MOHAMMED V SOUISSI

Leçon n° 9 – Structures de données linéaires : les files d’attente

Opérations sur une fileOpérations sur une file

int vide() {return ( q.nbC != 0);}

int vide() {return ( q.nbC != 0);}

Indiquer si la filed’attente est vide Indiquer si la file

d’attente est vide

Structures de donnéesLeçon n. 1 – Introduction et vue d’ensemble

Prof. A. EL FAKERENSIAS - UNIVERSITE MOHAMMED V SOUISSI

Leçon n° 9 – Structures de données linéaires : les files d’attente

Opérations sur une fileOpérations sur une file

Ajouter un élément en queueAjouter un élément en queue

00nbC-1nbC-1

tt

xx InsertionInsertion

Structures de donnéesLeçon n. 1 – Introduction et vue d’ensemble

Prof. A. EL FAKERENSIAS - UNIVERSITE MOHAMMED V SOUISSI

Leçon n° 9 – Structures de données linéaires : les files d’attente

00nbE-1nbE-1

vecvec

InsertionInsertionxx

Opérations sur une fileOpérations sur une file

Ajouter un élément en queueAjouter un élément en queue

00nbC-1nbC-1

tt

xxxx

Structures de donnéesLeçon n. 1 – Introduction et vue d’ensemble

Prof. A. EL FAKERENSIAS - UNIVERSITE MOHAMMED V SOUISSI

Leçon n° 9 – Structures de données linéaires : les files d’attente

00nbE-1nbE-1

vecvec

InsertionInsertionxx

Opérations sur une fileOpérations sur une file

Ajouter un élément en queueAjouter un élément en queue

00nbC-1nbC-1

tt

xxxx

Structures de donnéesLeçon n. 1 – Introduction et vue d’ensemble

Prof. A. EL FAKERENSIAS - UNIVERSITE MOHAMMED V SOUISSI

Leçon n° 9 – Structures de données linéaires : les files d’attente

Opérations sur une fileOpérations sur une file

00nbC-1nbC-1

tt

xx

Ajouter un élément en queueAjouter un élément en queue

Structures de donnéesLeçon n. 1 – Introduction et vue d’ensemble

Prof. A. EL FAKERENSIAS - UNIVERSITE MOHAMMED V SOUISSI

Leçon n° 9 – Structures de données linéaires : les files d’attente

boolean ajouter(int noCl) { if( q.nbC >= Max) return false; q.t[nbC] =noCl; q.nbC++; return true;}

boolean ajouter(int noCl) { if( q.nbC >= Max) return false; q.t[nbC] =noCl; q.nbC++; return true;}

Opérations sur une fileOpérations sur une file

Ajouter un élément en queueAjouter un élément en queue

Structures de donnéesLeçon n. 1 – Introduction et vue d’ensemble

Prof. A. EL FAKERENSIAS - UNIVERSITE MOHAMMED V SOUISSI

Leçon n° 9 – Structures de données linéaires : les files d’attente

Récupérer l'élément en têteRécupérer l'élément en tête

Opérations sur une fileOpérations sur une file

00nbC-1nbC-1 tt

xx

Structures de donnéesLeçon n. 1 – Introduction et vue d’ensemble

Prof. A. EL FAKERENSIAS - UNIVERSITE MOHAMMED V SOUISSI

Leçon n° 9 – Structures de données linéaires : les files d’attente

00nbE-1nbE-1 vecvec

xx

Opérations sur une fileOpérations sur une file

00nbC-1nbC-1 tt

xx

Récupérer l'élément en têteRécupérer l'élément en tête

Structures de donnéesLeçon n. 1 – Introduction et vue d’ensemble

Prof. A. EL FAKERENSIAS - UNIVERSITE MOHAMMED V SOUISSI

Leçon n° 9 – Structures de données linéaires : les files d’attente

00nbE-1nbE-1 vecvec

xx

Opérations sur une fileOpérations sur une file

00nbC-1nbC-1 tt

Récupérer l'élément en têteRécupérer l'élément en tête

Structures de donnéesLeçon n. 1 – Introduction et vue d’ensemble

Prof. A. EL FAKERENSIAS - UNIVERSITE MOHAMMED V SOUISSI

Leçon n° 9 – Structures de données linéaires : les files d’attente

void servir(void) { if( ! vide() ) { printf("Je sert le client %d\n",

q.t[0]); for(i=1; i<q.nbC; i++) q.t[i-1] = q.t[i]; q.nbC --;}}

void servir(void) { if( ! vide() ) { printf("Je sert le client %d\n",

q.t[0]); for(i=1; i<q.nbC; i++) q.t[i-1] = q.t[i]; q.nbC --;}}

Opérations sur une fileOpérations sur une file

Récupérer l'élément en têteRécupérer l'élément en tête

Servir un clientServir un client

Structures de donnéesLeçon n. 1 – Introduction et vue d’ensemble

Prof. A. EL FAKERENSIAS - UNIVERSITE MOHAMMED V SOUISSI

Leçon n° 9 – Structures de données linéaires : les files d’attente

AméliorationAmélioration

Opérations sur une fileOpérations sur une file

Prochain client à servir

Prochain client à servir

Prochain client à ajouter

Prochain client à ajouter

Ne rien déplacer Ne rien déplacer

finfin 00debutdebut

Structures de donnéesLeçon n. 1 – Introduction et vue d’ensemble

Prof. A. EL FAKERENSIAS - UNIVERSITE MOHAMMED V SOUISSI

Leçon n° 9 – Structures de données linéaires : les files d’attente

Servir un clientServir un client

void servir(void) { if( ! vide() ) { printf("Je sert le client %d\n", q.t[q.debut]); q.debut++; }

void servir(void) { if( ! vide() ) { printf("Je sert le client %d\n", q.t[q.debut]); q.debut++; }

Opérations sur une fileOpérations sur une file

Structures de donnéesLeçon n. 1 – Introduction et vue d’ensemble

Prof. A. EL FAKERENSIAS - UNIVERSITE MOHAMMED V SOUISSI

Leçon n° 9 – Structures de données linéaires : les files d’attente

ProblèmeProblème

On risque de dépasserla capacité alors qu’il reste

encore de la place

On risque de dépasserla capacité alors qu’il reste

encore de la place

Opérations sur une fileOpérations sur une file

Structures de donnéesLeçon n. 1 – Introduction et vue d’ensemble

Prof. A. EL FAKERENSIAS - UNIVERSITE MOHAMMED V SOUISSI

Leçon n° 9 – Structures de données linéaires : les files d’attente

Les files circulairesLes files circulaires

Structures de donnéesLeçon n. 1 – Introduction et vue d’ensemble

Prof. A. EL FAKERENSIAS - UNIVERSITE MOHAMMED V SOUISSI

Leçon n° 9 – Structures de données linéaires : les files d’attente

Les files circulairesLes files circulaires

EmplacemenEmplacement t

Libre pour le Libre pour le prochain prochain élémentélément

EmplacemenEmplacement t

Libre pour le Libre pour le prochain prochain élémentélément

inin

outout

vecvec

L’élémentL’élémentde têtede tête

L’élémentL’élémentde têtede tête

Structures de donnéesLeçon n. 1 – Introduction et vue d’ensemble

Prof. A. EL FAKERENSIAS - UNIVERSITE MOHAMMED V SOUISSI

Leçon n° 9 – Structures de données linéaires : les files d’attente

DéclarationDéclaration

#define Max 100#define element intstruct fileCirculaire { element t[Max]; int in, out; bool plein;} q;

#define Max 100#define element intstruct fileCirculaire { element t[Max]; int in, out; bool plein;} q;

Les files circulairesLes files circulaires

Structures de donnéesLeçon n. 1 – Introduction et vue d’ensemble

Prof. A. EL FAKERENSIAS - UNIVERSITE MOHAMMED V SOUISSI

Leçon n° 9 – Structures de données linéaires : les files d’attente

Initialiser une file à videInitialiser une file à vide

void raz() { q.in = 0; q.out = 0; q.plein = false; return;}

void raz() { q.in = 0; q.out = 0; q.plein = false; return;}

Les files circulairesLes files circulaires

q.tq.t in=out=0

Structures de donnéesLeçon n. 1 – Introduction et vue d’ensemble

Prof. A. EL FAKERENSIAS - UNIVERSITE MOHAMMED V SOUISSI

Leçon n° 9 – Structures de données linéaires : les files d’attente

boolean vide() { return ( (q. in == q.out ) && (q.plein == false) );}

boolean vide() { return ( (q. in == q.out ) && (q.plein == false) );}

Les files circulairesLes files circulaires

Indiquer si la file est videIndiquer si la file est vide

q.tq.tout=in=0

Structures de donnéesLeçon n. 1 – Introduction et vue d’ensemble

Prof. A. EL FAKERENSIAS - UNIVERSITE MOHAMMED V SOUISSI

Leçon n° 9 – Structures de données linéaires : les files d’attente

Ajouter un nouvel élémentAjouter un nouvel élément

boolean ajouter(int noCl) {boolean ajouter(int noCl) {

Les files circulairesLes files circulaires

if( q.plein) return false;q.t[q.in] = noCl;q.in=(q.in +1)% Max;q.plein=(q.in== q.out);return true;}

if( q.plein) return false;q.t[q.in] = noCl;q.in=(q.in +1)% Max;q.plein=(q.in== q.out);return true;}

outout

q.tq.t

inin

Structures de donnéesLeçon n. 1 – Introduction et vue d’ensemble

Prof. A. EL FAKERENSIAS - UNIVERSITE MOHAMMED V SOUISSI

Leçon n° 9 – Structures de données linéaires : les files d’attente

Récupérer l'élément en têteRécupérer l'élément en tête

void servir(void) { if( ! vide() ) { printf("Je sert %d\n",

q.t[q.out]);q.out=(q.out +1)%Max;q.plein = false; }

void servir(void) { if( ! vide() ) { printf("Je sert %d\n",

q.t[q.out]);q.out=(q.out +1)%Max;q.plein = false; }

Les files circulairesLes files circulaires

outout

q.tq.t

inin

Structures de donnéesLeçon n. 1 – Introduction et vue d’ensemble

Prof. A. EL FAKERENSIAS - UNIVERSITE MOHAMMED V SOUISSI

Leçon n° 9 – Structures de données linéaires : les files d’attente

Affichage des éléments de la fileAffichage des éléments de la file

void printFileCirculaire(void) { int i=q.out; do { printf("%d\t",q.t[i]); i=(i+1)%Max; }while(i != q.in ); return;}

void printFileCirculaire(void) { int i=q.out; do { printf("%d\t",q.t[i]); i=(i+1)%Max; }while(i != q.in ); return;}

Les files circulairesLes files circulaires

Structures de donnéesLeçon n. 1 – Introduction et vue d’ensemble

Prof. A. EL FAKERENSIAS - UNIVERSITE MOHAMMED V SOUISSI

Leçon n° 9 – Structures de données linéaires : les files d’attente

Décrire les opérations suivantes sur une file d’attente

Décrire les opérations suivantes sur une file d’attente

ExerciceExercice

Les files circulairesLes files circulaires

insere(0);insere(1);insere(2);insere(3); ote(); ote();insere(4);ote();ote();insere(5);insere(6);

insere(0);insere(1);insere(2);insere(3); ote(); ote();insere(4);ote();ote();insere(5);insere(6);

Structures de donnéesLeçon n. 1 – Introduction et vue d’ensemble

Prof. A. EL FAKERENSIAS - UNIVERSITE MOHAMMED V SOUISSI

Leçon n° 9 – Structures de données linéaires : les files d’attente

Les files circulairesLes files circulaires

inin

plein== falseplein== false

outout

insere(0);insere(1);insere(2);insere(3); ote(); ote();insere(4);ote();ote();insere(5);insere(6);

insere(0);insere(1);insere(2);insere(3); ote(); ote();insere(4);ote();ote();insere(5);insere(6);

Structures de donnéesLeçon n. 1 – Introduction et vue d’ensemble

Prof. A. EL FAKERENSIAS - UNIVERSITE MOHAMMED V SOUISSI

Leçon n° 9 – Structures de données linéaires : les files d’attente

Les files circulairesLes files circulaires

inin

plein== falseplein== false

outout

insere(0);insere(1);insere(2);insere(3); ote(); ote();insere(4);ote();ote();insere(5);insere(6);

insere(0);insere(1);insere(2);insere(3); ote(); ote();insere(4);ote();ote();insere(5);insere(6);

00

Structures de donnéesLeçon n. 1 – Introduction et vue d’ensemble

Prof. A. EL FAKERENSIAS - UNIVERSITE MOHAMMED V SOUISSI

Leçon n° 9 – Structures de données linéaires : les files d’attente

Les files circulairesLes files circulaires

inin

plein== falseplein== false

outout

insere(0);insere(1);insere(2);insere(3); ote(); ote();insere(4);ote();ote();insere(5);insere(6);

insere(0);insere(1);insere(2);insere(3); ote(); ote();insere(4);ote();ote();insere(5);insere(6);

00 11

Structures de donnéesLeçon n. 1 – Introduction et vue d’ensemble

Prof. A. EL FAKERENSIAS - UNIVERSITE MOHAMMED V SOUISSI

Leçon n° 9 – Structures de données linéaires : les files d’attente

Les files circulairesLes files circulaires

plein== falseplein== false

outout

insere(0);insere(1);insere(2);insere(3); ote(); ote();insere(4);ote();ote();insere(5);insere(6);

insere(0);insere(1);insere(2);insere(3); ote(); ote();insere(4);ote();ote();insere(5);insere(6);

00 11

inin

22 33

Structures de donnéesLeçon n. 1 – Introduction et vue d’ensemble

Prof. A. EL FAKERENSIAS - UNIVERSITE MOHAMMED V SOUISSI

Leçon n° 9 – Structures de données linéaires : les files d’attente

Les files circulairesLes files circulaires

plein== falseplein== false

insere(0);insere(1);insere(2);insere(3); ote(); ote();insere(4);ote();ote();insere(5);insere(6);

insere(0);insere(1);insere(2);insere(3); ote(); ote();insere(4);ote();ote();insere(5);insere(6);

00 11

inin

22 33

outout

Structures de donnéesLeçon n. 1 – Introduction et vue d’ensemble

Prof. A. EL FAKERENSIAS - UNIVERSITE MOHAMMED V SOUISSI

Leçon n° 9 – Structures de données linéaires : les files d’attente

Les files circulairesLes files circulaires

plein== falseplein== false

insere(0);insere(1);insere(2);insere(3); ote(); ote();insere(4);ote();ote();insere(5);insere(6);

insere(0);insere(1);insere(2);insere(3); ote(); ote();insere(4);ote();ote();insere(5);insere(6);

00 11 22 33

outoutinin

44

Structures de donnéesLeçon n. 1 – Introduction et vue d’ensemble

Prof. A. EL FAKERENSIAS - UNIVERSITE MOHAMMED V SOUISSI

Leçon n° 9 – Structures de données linéaires : les files d’attente

Les files circulairesLes files circulaires

plein== falseplein== false

insere(0);insere(1);insere(2);insere(3);ote(); ote();insere(4);ote();ote();insere(5);insere(6);

insere(0);insere(1);insere(2);insere(3);ote(); ote();insere(4);ote();ote();insere(5);insere(6);

00 11 22 33

inin

44

outout

Structures de donnéesLeçon n. 1 – Introduction et vue d’ensemble

Prof. A. EL FAKERENSIAS - UNIVERSITE MOHAMMED V SOUISSI

Leçon n° 9 – Structures de données linéaires : les files d’attente

Les files circulairesLes files circulaires

plein== falseplein== false

insere(0);insere(1);insere(2);insere(3); ote(); ote();insere(4);ote();ote();insere(5);insere(6);

insere(0);insere(1);insere(2);insere(3); ote(); ote();insere(4);ote();ote();insere(5);insere(6);

00 11 22 33 44

outout

55

inin

Structures de donnéesLeçon n. 1 – Introduction et vue d’ensemble

Prof. A. EL FAKERENSIAS - UNIVERSITE MOHAMMED V SOUISSI

Leçon n° 9 – Structures de données linéaires : les files d’attente

Les files circulairesLes files circulaires

plein== falseplein== false

insere(0);insere(1);insere(2);insere(3);ote(); ote();insere(4);ote();ote();insere(5);insere(6);

insere(0);insere(1);insere(2);insere(3);ote(); ote();insere(4);ote();ote();insere(5);insere(6);

11 22 33 44

outout

5566

inin

Structures de donnéesLeçon n. 1 – Introduction et vue d’ensemble

Prof. A. EL FAKERENSIAS - UNIVERSITE MOHAMMED V SOUISSI

Leçon n° 9 – Structures de données linéaires : les files d’attente

DiscussionDiscussion

PrioritéPriorité

Clients qui arrivent dans la filemais avec une priorité.On doit servir ... le 10

Clients qui arrivent dans la filemais avec une priorité.On doit servir ... le 10

Réorganiser les autres pourpréparer le client suivant

Réorganiser les autres pourpréparer le client suivant

Structures de donnéesLeçon n. 1 – Introduction et vue d’ensemble

Prof. A. EL FAKERENSIAS - UNIVERSITE MOHAMMED V SOUISSI

Leçon n° 9 – Structures de données linéaires : les files d’attente

DiscussionDiscussion

PrioritéPriorité

00

33 1010 11 66 88 99 22

Structures de donnéesLeçon n. 1 – Introduction et vue d’ensemble

Prof. A. EL FAKERENSIAS - UNIVERSITE MOHAMMED V SOUISSI

Leçon n° 9 – Structures de données linéaires : les files d’attente

DiscussionDiscussion

C’est comme celaque sont gérés

C’est comme celaque sont gérés

Les impressions en UnixLes impressions en Unix

L’ordonnanceur du systèmeL’ordonnanceur du système

Structures de donnéesLeçon n. 1 – Introduction et vue d’ensemble

Prof. A. EL FAKERENSIAS - UNIVERSITE MOHAMMED V SOUISSI

Leçon n° 9 – Structures de données linéaires : les files d’attente

STRUCTURES DE

DONNÉES

STRUCTURES DE

DONNÉES