lec 06_piles

57
Structures de données Leçon n. 1 – Introduction et vue d’ensemble Prof. A. EL FAKER ENSIAS - UNIVERSITE MOHAMMED V SOUISSI Leçon n° 6 – Structures de données linéaires : les piles STRUCTURES DE DONNÉES

Upload: lopir120

Post on 25-Jul-2015

58 views

Category:

Documents


5 download

TRANSCRIPT

Page 1: Lec 06_Piles

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

Prof. A. EL FAKERENSIAS - UNIVERSITE MOHAMMED V SOUISSI

Leçon n° 6 – Structures de données linéaires : les piles

STRUCTURES DE

DONNÉES

STRUCTURES DE

DONNÉES

Page 2: Lec 06_Piles

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

Prof. A. EL FAKERENSIAS - UNIVERSITE MOHAMMED V SOUISSI

Leçon n° 6 – Structures de données linéaires : les piles

STRUCTURES DE DONNÉES LINÉAIRES:

LES PILES

STRUCTURES DE DONNÉES LINÉAIRES:

LES PILES

Page 3: Lec 06_Piles

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

Prof. A. EL FAKERENSIAS - UNIVERSITE MOHAMMED V SOUISSI

Leçon n° 6 – Structures de données linéaires : les piles

Plan de la leçonPlan de la leçon

Programmation structurée Programmation structurée

Le concept de pile Le concept de pile

Exemples de piles

Exemples de piles

Implantation des piles Implantation des piles

Page 4: Lec 06_Piles

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

Prof. A. EL FAKERENSIAS - UNIVERSITE MOHAMMED V SOUISSI

Leçon n° 6 – Structures de données linéaires : les piles

Programmation structurée

Programmation structurée

Page 5: Lec 06_Piles

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

Prof. A. EL FAKERENSIAS - UNIVERSITE MOHAMMED V SOUISSI

Leçon n° 6 – Structures de données linéaires : les piles

Programmation structuréeProgrammation structurée

Besoin de structurer l'informationBesoin de structurer l'information

Retenir la relation logique qui existe entre les donnéesRetenir la relation logique

qui existe entre les données

Traitement identique concernant une famille de problèmes

Traitement identique concernant une famille de problèmes

Page 6: Lec 06_Piles

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

Prof. A. EL FAKERENSIAS - UNIVERSITE MOHAMMED V SOUISSI

Leçon n° 6 – Structures de données linéaires : les piles

ExempleExemple

SDs permettant de mettre en attente des informations pour les récupérer plus tard

SDs permettant de mettre en attente des informations pour les récupérer plus tard

Besoin de structurer l'informationBesoin de structurer l'information

Programmation structuréeProgrammation structurée

Page 7: Lec 06_Piles

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

Prof. A. EL FAKERENSIAS - UNIVERSITE MOHAMMED V SOUISSI

Leçon n° 6 – Structures de données linéaires : les piles

Le concept de pileLe concept de pile

Page 8: Lec 06_Piles

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

Prof. A. EL FAKERENSIAS - UNIVERSITE MOHAMMED V SOUISSI

Leçon n° 6 – Structures de données linéaires : les piles

Le concept de pileLe concept de pile

Une pile c’est quoi ?Une pile c’est quoi ?

SD caractérisée par un comportement particulier

en ce qui concerne l'insertion et l'extraction des éléments

SD caractérisée par un comportement particulier

en ce qui concerne l'insertion et l'extraction des éléments

Page 9: Lec 06_Piles

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

Prof. A. EL FAKERENSIAS - UNIVERSITE MOHAMMED V SOUISSI

Leçon n° 6 – Structures de données linéaires : les piles

DéfinitionDéfinition

Un ensemble d'élémentsde même type

Un ensemble d'élémentsde même type

Seul l'élément au sommet est visible

Seul l'élément au sommet est visible

Le concept de pileLe concept de pile

Page 10: Lec 06_Piles

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

Prof. A. EL FAKERENSIAS - UNIVERSITE MOHAMMED V SOUISSI

Leçon n° 6 – Structures de données linéaires : les piles

DéfinitionDéfinition

EmpilementEmpilement

DépilementDépilement

Pile Pile

SommetSommet

Le concept de pileLe concept de pile

Page 11: Lec 06_Piles

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

Prof. A. EL FAKERENSIAS - UNIVERSITE MOHAMMED V SOUISSI

Leçon n° 6 – Structures de données linéaires : les piles

Le concept de pileLe concept de pile

#define Max 100enum boolean {false,true}typedef struct Elem {…} element;struct pile { element vec [Max]; int sommet;} p;

#define Max 100enum boolean {false,true}typedef struct Elem {…} element;struct pile { element vec [Max]; int sommet;} p;

Mise en oeuvreMise en oeuvre

Page 12: Lec 06_Piles

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

Prof. A. EL FAKERENSIAS - UNIVERSITE MOHAMMED V SOUISSI

Leçon n° 6 – Structures de données linéaires : les piles

Initialiser une pile à vide Initialiser une pile à vide

raz()raz()

PilePile

Sommet Sommet

Le concept de pileLe concept de pile

Page 13: Lec 06_Piles

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

Prof. A. EL FAKERENSIAS - UNIVERSITE MOHAMMED V SOUISSI

Leçon n° 6 – Structures de données linéaires : les piles

Initialiser une pile à vide Initialiser une pile à vide

raz()raz()

PilePile

Sommet Sommet

Le concept de pileLe concept de pile

Page 14: Lec 06_Piles

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

Prof. A. EL FAKERENSIAS - UNIVERSITE MOHAMMED V SOUISSI

Leçon n° 6 – Structures de données linéaires : les piles

void raz() { p.sommet = -1; return ;}

void raz() { p.sommet = -1; return ;}

Le concept de pileLe concept de pile

Initialiser une pile à vide Initialiser une pile à vide

Page 15: Lec 06_Piles

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

Prof. A. EL FAKERENSIAS - UNIVERSITE MOHAMMED V SOUISSI

Leçon n° 6 – Structures de données linéaires : les piles

Indiquer si une pile est vide Indiquer si une pile est vide

empty()empty()

PilePile

Sommet Sommet falsefalse

Le concept de pileLe concept de pile

Page 16: Lec 06_Piles

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

Prof. A. EL FAKERENSIAS - UNIVERSITE MOHAMMED V SOUISSI

Leçon n° 6 – Structures de données linéaires : les piles

empty()empty()

PilePile

Sommet Sommet truetrue

Indiquer si une pile est vide Indiquer si une pile est vide

Le concept de pileLe concept de pile

Page 17: Lec 06_Piles

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

Prof. A. EL FAKERENSIAS - UNIVERSITE MOHAMMED V SOUISSI

Leçon n° 6 – Structures de données linéaires : les piles

boolean empty(){ return ( if (p.sommet == -1) return true; else return false;}

boolean empty(){ return ( if (p.sommet == -1) return true; else return false;}

Le concept de pileLe concept de pile

Indiquer si une pile est vide Indiquer si une pile est vide

Page 18: Lec 06_Piles

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

Prof. A. EL FAKERENSIAS - UNIVERSITE MOHAMMED V SOUISSI

Leçon n° 6 – Structures de données linéaires : les piles

Récupérer l'élément au sommet Récupérer l'élément au sommet

pop(x)pop(x)

PilePile

SommetSommet

Le concept de pileLe concept de pile

Page 19: Lec 06_Piles

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

Prof. A. EL FAKERENSIAS - UNIVERSITE MOHAMMED V SOUISSI

Leçon n° 6 – Structures de données linéaires : les piles

PilePile

SommetSommet

Récupérer l'élément au sommet Récupérer l'élément au sommet

PilePile

SommetSommet

pop(x)pop(x)

Le concept de pileLe concept de pile

Page 20: Lec 06_Piles

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

Prof. A. EL FAKERENSIAS - UNIVERSITE MOHAMMED V SOUISSI

Leçon n° 6 – Structures de données linéaires : les piles

element pop() { if( empty() == true ) { perror("Pile vide"); exit(1); } else { res = p.vec[p.sommet ]; p.sommet--; } return(res);}

element pop() { if( empty() == true ) { perror("Pile vide"); exit(1); } else { res = p.vec[p.sommet ]; p.sommet--; } return(res);}

Le concept de pileLe concept de pile

Récupérer l'élément au sommet Récupérer l'élément au sommet

Page 21: Lec 06_Piles

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

Prof. A. EL FAKERENSIAS - UNIVERSITE MOHAMMED V SOUISSI

Leçon n° 6 – Structures de données linéaires : les piles

Ajouter un nouvel élément x Ajouter un nouvel élément x

push(x)push(x)

PilePile

SommetSommetxx

Le concept de pileLe concept de pile

Page 22: Lec 06_Piles

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

Prof. A. EL FAKERENSIAS - UNIVERSITE MOHAMMED V SOUISSI

Leçon n° 6 – Structures de données linéaires : les piles

push(x)push(x)

PilePile

SommetSommetxx

xx

Ajouter un nouvel élément x Ajouter un nouvel élément x

Le concept de pileLe concept de pile

Page 23: Lec 06_Piles

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

Prof. A. EL FAKERENSIAS - UNIVERSITE MOHAMMED V SOUISSI

Leçon n° 6 – Structures de données linéaires : les piles

void push(element x) { if(p.sommet == Max-1) { perror("Pile pleine"); exit(2);} else { p.sommet++; p.vec[p.sommet ] = x; } return;}

void push(element x) { if(p.sommet == Max-1) { perror("Pile pleine"); exit(2);} else { p.sommet++; p.vec[p.sommet ] = x; } return;}

Le concept de pileLe concept de pile

Ajouter un nouvel élément x Ajouter un nouvel élément x

Page 24: Lec 06_Piles

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

Prof. A. EL FAKERENSIAS - UNIVERSITE MOHAMMED V SOUISSI

Leçon n° 6 – Structures de données linéaires : les piles

Exemples d’utilisationExemples

d’utilisation

Page 25: Lec 06_Piles

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

Prof. A. EL FAKERENSIAS - UNIVERSITE MOHAMMED V SOUISSI

Leçon n° 6 – Structures de données linéaires : les piles

Les problèmes qui suivent une stratégie LIFO : Last In First OutLes problèmes qui suivent une

stratégie LIFO : Last In First Out

Exemples d’utilisationExemples d’utilisation

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

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

DomainesDomaines

Page 26: Lec 06_Piles

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

Prof. A. EL FAKERENSIAS - UNIVERSITE MOHAMMED V SOUISSI

Leçon n° 6 – Structures de données linéaires : les piles

Domaine d'utilisationDomaine d'utilisation

Compilation Compilation

Évaluation d'expressions arithmétiques, logiques, … Évaluation d'expressions arithmétiques, logiques, …

Exemples d’utilisationExemples d’utilisation

Page 27: Lec 06_Piles

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

Prof. A. EL FAKERENSIAS - UNIVERSITE MOHAMMED V SOUISSI

Leçon n° 6 – Structures de données linéaires : les piles

Exécution d'une fonction Exécution d'une fonction

Objets créés à chaque appelObjets créés à chaque appel

Variables localesariables locales Variables localesariables locales

Arguments passés par valeursrguments passés par valeurs Arguments passés par valeursrguments passés par valeurs

Page 28: Lec 06_Piles

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

Prof. A. EL FAKERENSIAS - UNIVERSITE MOHAMMED V SOUISSI

Leçon n° 6 – Structures de données linéaires : les piles

Exécution d'une fonction Exécution d'une fonction

Objets créés à chaque appelObjets créés à chaque appel

float echanger(float a, b){ float x = a; a=b; b=x; return x;}

float echanger(float a, b){ float x = a; a=b; b=x; return x;}

Page 29: Lec 06_Piles

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

Prof. A. EL FAKERENSIAS - UNIVERSITE MOHAMMED V SOUISSI

Leçon n° 6 – Structures de données linéaires : les piles

Exécution d'une fonction Exécution d'une fonction

Objets créés à chaque appelObjets créés à chaque appel

int y =echanger(2.5,5.7);int y =echanger(2.5,5.7);

? yyaa2.5

5.7 bb? xx

Page 30: Lec 06_Piles

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

Prof. A. EL FAKERENSIAS - UNIVERSITE MOHAMMED V SOUISSI

Leçon n° 6 – Structures de données linéaires : les piles

Exécution d'une fonction Exécution d'une fonction

Objets détruits à chaque retourObjets détruits à chaque retour

Les derniers, en vue de retrouverles données à l'état où elles

étaient avant l'appel

Les derniers, en vue de retrouverles données à l'état où elles

étaient avant l'appel

? yyaa5.7

2.5 bb2.5 xx

2.5 yy

Page 31: Lec 06_Piles

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

Prof. A. EL FAKERENSIAS - UNIVERSITE MOHAMMED V SOUISSI

Leçon n° 6 – Structures de données linéaires : les piles

Mini éditeur de texte

Mini éditeur de texte

Effacement de caractèresà l'aide du caractère '#‘

Destruction d'une ligne

à l'aide du caractère '@'

Effacement de caractèresà l'aide du caractère '#‘

Destruction d'une ligne

à l'aide du caractère '@'

Page 32: Lec 06_Piles

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

Prof. A. EL FAKERENSIAS - UNIVERSITE MOHAMMED V SOUISSI

Leçon n° 6 – Structures de données linéaires : les piles

EditeurEditeur

copy fich1 fich2copy fich1 fich2

mkd@copie##y fich1 fich2mkd@copie##y fich1 fich2

TapéTapé

InterprétéInterprété

Mini éditeur de texte

Mini éditeur de texte

Page 33: Lec 06_Piles

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

Prof. A. EL FAKERENSIAS - UNIVERSITE MOHAMMED V SOUISSI

Leçon n° 6 – Structures de données linéaires : les piles

#include "pile.h"void editeur() { char c; raz(); while( (c=getchar()) != ’\n’) { switch ( c ) { case '#' : pop(); break; case '@' : raz(); break; default : push(c); } } afficher()}

#include "pile.h"void editeur() { char c; raz(); while( (c=getchar()) != ’\n’) { switch ( c ) { case '#' : pop(); break; case '@' : raz(); break; default : push(c); } } afficher()}

Pile à définir iciPile à définir ici

Caractère ordinaireCaractère ordinaire

En ordre inverseEn ordre inverse

Page 34: Lec 06_Piles

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

Prof. A. EL FAKERENSIAS - UNIVERSITE MOHAMMED V SOUISSI

Leçon n° 6 – Structures de données linéaires : les piles

Exercice 1Exercice 1

Page 35: Lec 06_Piles

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

Prof. A. EL FAKERENSIAS - UNIVERSITE MOHAMMED V SOUISSI

Leçon n° 6 – Structures de données linéaires : les piles

Expressions avec parenthèsesExpressions avec parenthèses

ExerciceExercice

ProblèmeProblème

S'assurer que les parenthèses ((et)), les crochets ([et]) et les accolades ({et}) sont correctement imbriqués

S'assurer que les parenthèses ((et)), les crochets ([et]) et les accolades ({et}) sont correctement imbriqués

Page 36: Lec 06_Piles

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

Prof. A. EL FAKERENSIAS - UNIVERSITE MOHAMMED V SOUISSI

Leçon n° 6 – Structures de données linéaires : les piles

Expressions avec parenthèsesExpressions avec parenthèses

ExerciceExercice

ProblèmeProblème

{x+(y-[a+b])*c-[(d+e)]}{x+(y-[a+b])*c-[(d+e)]}

Page 37: Lec 06_Piles

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

Prof. A. EL FAKERENSIAS - UNIVERSITE MOHAMMED V SOUISSI

Leçon n° 6 – Structures de données linéaires : les piles

Expressions avec parenthèsesExpressions avec parenthèses

ExerciceExercice

Il y a autant de délimiteurs ouvrants que fermants Il y a autant de délimiteurs ouvrants que fermants

Chaque délimiteur fermant, d'un type donné, est précédé par un symbole du même type qui l'ouvre

Chaque délimiteur fermant, d'un type donné, est précédé par un symbole du même type qui l'ouvre

Page 38: Lec 06_Piles

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

Prof. A. EL FAKERENSIAS - UNIVERSITE MOHAMMED V SOUISSI

Leçon n° 6 – Structures de données linéaires : les piles

QuestionQuestion

Pour quelle raison la résolutionde ce problème fait-elle appelà l'utilisation d'une SD pile?

Pour quelle raison la résolutionde ce problème fait-elle appelà l'utilisation d'une SD pile?

ExerciceExercice

{x+(y-[a+b])*c-[(d+e)]}{x+(y-[a+b])*c-[(d+e)]}

Page 39: Lec 06_Piles

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

Prof. A. EL FAKERENSIAS - UNIVERSITE MOHAMMED V SOUISSI

Leçon n° 6 – Structures de données linéaires : les piles

Stratégie LIFO Stratégie LIFO

Le dernier délimiteur ouvert est le premier à fermer

Le dernier délimiteur ouvert est le premier à fermer

ExerciceExercice

{x+(y-[a+b])*c-[(d+e)]}{x+(y-[a+b])*c-[(d+e)]}

Page 40: Lec 06_Piles

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

Prof. A. EL FAKERENSIAS - UNIVERSITE MOHAMMED V SOUISSI

Leçon n° 6 – Structures de données linéaires : les piles

QuestionQuestion

Etat de la pile après la lecture de la chaîne :Etat de la pile après la lecture de la chaîne :

ExerciceExercice

{x+(y-[a+b])*c-[(d+e)]}{x+(y-[a+b])*c-[(d+e)]}

Page 41: Lec 06_Piles

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

Prof. A. EL FAKERENSIAS - UNIVERSITE MOHAMMED V SOUISSI

Leçon n° 6 – Structures de données linéaires : les piles

ExerciceExercice

Etat de la pileEtat de la pile

{PilePile

([

{x+(y-[a+b])*c-[(d+e)]}{x+(y-[a+b])*c-[(d+e)]}

Page 42: Lec 06_Piles

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

Prof. A. EL FAKERENSIAS - UNIVERSITE MOHAMMED V SOUISSI

Leçon n° 6 – Structures de données linéaires : les piles

{([

ExerciceExercice

Etat de la pileEtat de la pile

{[(

{

{x+(y-[a+b])*c-[(d+e)]}{x+(y-[a+b])*c-[(d+e)]}

Page 43: Lec 06_Piles

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

Prof. A. EL FAKERENSIAS - UNIVERSITE MOHAMMED V SOUISSI

Leçon n° 6 – Structures de données linéaires : les piles

ExerciceExercice

Etat de la pileEtat de la pile

{[(

{[(

{[

{x+(y-[a+b])*c-[(d+e)]}{x+(y-[a+b])*c-[(d+e)]}

Page 44: Lec 06_Piles

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

Prof. A. EL FAKERENSIAS - UNIVERSITE MOHAMMED V SOUISSI

Leçon n° 6 – Structures de données linéaires : les piles

{[

{

ExerciceExercice

Etat de la pileEtat de la pile

{x+(y-[a+b])*c-[(d+e)]}{x+(y-[a+b])*c-[(d+e)]}

Page 45: Lec 06_Piles

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

Prof. A. EL FAKERENSIAS - UNIVERSITE MOHAMMED V SOUISSI

Leçon n° 6 – Structures de données linéaires : les piles

ExerciceExercice

EcrireEcrire

Un programme qui examinela validité d'une expression

mathématique donnée

Un programme qui examinela validité d'une expression

mathématique donnée

Page 46: Lec 06_Piles

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

Prof. A. EL FAKERENSIAS - UNIVERSITE MOHAMMED V SOUISSI

Leçon n° 6 – Structures de données linéaires : les piles

switch(c){ case '(','[','{':

correct := push(c); break; case ')',']','}': {

o= pop(); switch(o){

case '(': if(c!=')') correct=false; break; … }

switch(c){ case '(','[','{':

correct := push(c); break; case ')',']','}': {

o= pop(); switch(o){

case '(': if(c!=')') correct=false; break; … }

// délimiteur ouvrant, on l'empile// délimiteur ouvrant, on l'empile

// délimiteur fermant, on dépile// délimiteur fermant, on dépile

// Ouvrant et fermant sont de même type

// Ouvrant et fermant sont de même type

Page 47: Lec 06_Piles

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

Prof. A. EL FAKERENSIAS - UNIVERSITE MOHAMMED V SOUISSI

Leçon n° 6 – Structures de données linéaires : les piles

if ( empty() && correct ) { printf("\n Votre expression est valide\n");}else{ printf("\n Votre expression n'est pas valide\n");}

if ( empty() && correct ) { printf("\n Votre expression est valide\n");}else{ printf("\n Votre expression n'est pas valide\n");}

Page 48: Lec 06_Piles

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

Prof. A. EL FAKERENSIAS - UNIVERSITE MOHAMMED V SOUISSI

Leçon n° 6 – Structures de données linéaires : les piles

Exercice 2Exercice 2

Page 49: Lec 06_Piles

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

Prof. A. EL FAKERENSIAS - UNIVERSITE MOHAMMED V SOUISSI

Leçon n° 6 – Structures de données linéaires : les piles

Imbrication des bouclesImbrication des boucles

Imbrication des boucles dans unlangage

Imbrication des boucles dans unlangage

DO 1Instructions DO 2 Instructions END 2 DO 3 Instructions END END 1

DO 1Instructions DO 2 Instructions END 2 DO 3 Instructions END END 1

Sans labelSans label

Page 50: Lec 06_Piles

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

Prof. A. EL FAKERENSIAS - UNIVERSITE MOHAMMED V SOUISSI

Leçon n° 6 – Structures de données linéaires : les piles

Le programme est constituédes expressions

Le programme est constituédes expressions

DO Label END Label

DO Label END Label

Label identificateur

valide ou blanc

Label identificateur

valide ou blanc

Imbrication des bouclesImbrication des boucles

Page 51: Lec 06_Piles

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

Prof. A. EL FAKERENSIAS - UNIVERSITE MOHAMMED V SOUISSI

Leçon n° 6 – Structures de données linéaires : les piles

Imbrication des bouclesImbrication des boucles

AlgorithmeAlgorithme

DO 1Instructions DO 2 Instructions END 2 DO 3 Instructions END END 1

DO 1Instructions DO 2 Instructions END 2 DO 3 Instructions END END 1

lire chaque expression, l'afficher à l'écran avec un message :

lire chaque expression, l'afficher à l'écran avec un message :

BOUCLE 1 OUVERTE BOUCLE 2 OUVERTE

BOUCLE 1 OUVERTE BOUCLE 2 OUVERTE

Page 52: Lec 06_Piles

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

Prof. A. EL FAKERENSIAS - UNIVERSITE MOHAMMED V SOUISSI

Leçon n° 6 – Structures de données linéaires : les piles

AlgorithmeAlgorithme

Tant que (il y a une ligne à lire) faire lire (ligne); afficher (ligne); instr:= le premier mot de la ligne; label:= le deuxième mot de la ligne; Si instr = 'DO' Alors Afficher un message approprié;

Tant que (il y a une ligne à lire) faire lire (ligne); afficher (ligne); instr:= le premier mot de la ligne; label:= le deuxième mot de la ligne; Si instr = 'DO' Alors Afficher un message approprié;

Stocke label quelque part !

Stocke label quelque part !

Imbrication des bouclesImbrication des boucles

Page 53: Lec 06_Piles

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

Prof. A. EL FAKERENSIAS - UNIVERSITE MOHAMMED V SOUISSI

Leçon n° 6 – Structures de données linéaires : les piles

Sinon Si instr='END' Alors Si label= '' Alors Afficher un message fermant la dernière boucle ouverte Sinon Afficher un message fermant toutes les boucles en remontant jusqu'à la boucle label Finsi Sinon Afficher un message d'erreur Finsi FinsiRefaire

Sinon Si instr='END' Alors Si label= '' Alors Afficher un message fermant la dernière boucle ouverte Sinon Afficher un message fermant toutes les boucles en remontant jusqu'à la boucle label Finsi Sinon Afficher un message d'erreur Finsi FinsiRefaire

Page 54: Lec 06_Piles

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

Prof. A. EL FAKERENSIAS - UNIVERSITE MOHAMMED V SOUISSI

Leçon n° 6 – Structures de données linéaires : les piles

Stocke label quelque part !

Stocke label quelque part !

Beaucoup d'imprécisionsBeaucoup d'imprécisions

Comment le retrouveret l'extraire?

Comment le retrouveret l'extraire?

Où? Où?

Imbrication des bouclesImbrication des boucles

Page 55: Lec 06_Piles

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

Prof. A. EL FAKERENSIAS - UNIVERSITE MOHAMMED V SOUISSI

Leçon n° 6 – Structures de données linéaires : les piles

D'après l'analysefaite précédemment

D'après l'analysefaite précédemment

La dernière boucle ouverteest la première à fermer,montre qu'il est natureld'utiliser une SD PILE

La dernière boucle ouverteest la première à fermer,montre qu'il est natureld'utiliser une SD PILE

Imbrication des bouclesImbrication des boucles

Page 56: Lec 06_Piles

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

Prof. A. EL FAKERENSIAS - UNIVERSITE MOHAMMED V SOUISSI

Leçon n° 6 – Structures de données linéaires : les piles

Stocke label quelque part !

Stocke label quelque part !

DoncDonc

push(PILE,label)push(PILE,label)

Imbrication des bouclesImbrication des boucles

Page 57: Lec 06_Piles

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

Prof. A. EL FAKERENSIAS - UNIVERSITE MOHAMMED V SOUISSI

Leçon n° 6 – Structures de données linéaires : les piles

STRUCTURES DE

DONNÉES

STRUCTURES DE

DONNÉES