Université Bordeaux 1, Licence Semestre 3 - Algorithmes et struct...



Documents pareils
TP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile

T. A. D. pile. Chapitre 7 (suite) Listes particulières. T. A. D. file. représentation chaînée de la file algorithmique. Files

Correction TD Algorithmique 5.3 Pile Liste 5.3 Pile

Centre CPGE TSI - Safi 2010/2011. Algorithmique et programmation :

C++ COURS N 2 : CLASSES, DONNÉES ET FONCTIONS MEMBRES Classes et objets en C++ Membres d'une classe Spécification d'une classe Codage du comportement

Génie Logiciel avec Ada. 4 février 2013

INITIATION A L ALGORITHMIQUE INF 102

Programmation Objet - Cours II

Ensimag 1ère année Algorithmique 1 Examen 2ième session 24 juin Algorithmique 1

Chapitre 5 : Flot maximal dans un graphe

Cours A7 : Temps Réel

Feuille TD n 1 Exercices d algorithmique éléments de correction

Cours de Programmation Impérative: Zones de mémoires et pointeurs

Polymorphisme, la classe Object, les package et la visibilité en Java... 1

1 Année LMD-STSM Algorithmique et Programmation. Série de TD 2

4. Les structures de données statiques

Recherche dans un tableau

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

Architecture des Systèmes d Information Architecture des Systèmes d Information

Pour signifier qu'une classe fille hérite d'une classe mère, on utilise le mot clé extends class fille extends mère

Généralités sur le Langage Java et éléments syntaxiques.

I. Introduction aux fonctions : les fonctions standards

CORRECTION EXERCICES ALGORITHME 1

Algorithmique et Programmation

Architecture des ordinateurs

Chapitre 2. Classes et objets

Programmation C++ (débutant)/instructions for, while et do...while

Rappels sur les suites - Algorithme

Exercices INF5171 : série #3 (Automne 2012)

Partie 7 : Gestion de la mémoire

Licence Sciences et Technologies Examen janvier 2010

Logiciel Libre Cours 3 Fondements: Génie Logiciel

Algorithmique et structures de données I

Baccalauréat ES/L Amérique du Sud 21 novembre 2013

Capacité de mémoire Tablettes

Structure fonctionnelle d un SGBD

Windows Server Chapitre 3 : Le service d annuaire Active Directory: Concepts de base

Bases de programmation. Cours 5. Structurer les données

Cours Programmation Système

Correction TD algorithmique

introduction Chapitre 5 Récursivité Exemples mathématiques Fonction factorielle ø est un arbre (vide) Images récursives

Complexité. Licence Informatique - Semestre 2 - Algorithmique et Programmation

Systemes d'exploitation des ordinateurs

Algorithmique, Structures de données et langage C

Architecture des ordinateurs TD1 - Portes logiques et premiers circuits

Licence Bio Informatique Année Premiers pas. Exercice 1 Hello World parce qu il faut bien commencer par quelque chose...

alg - Classes, instances, objets [oo] Exercices résolus

IBM SPSS Statistics Version 22. Instructions d'installation sous Windows (licence simultanée)

RMI. Remote Method Invocation: permet d'invoquer des méthodes d'objets distants.

Héritage presque multiple en Java (1/2)

Baccalauréat ES Pondichéry 7 avril 2014 Corrigé

TRIGONOMETRIE Algorithme : mesure principale

REALISATION d'un. ORDONNANCEUR à ECHEANCES

FICHE UE Licence/Master Sciences, Technologies, Santé Mention Informatique

Programmation assembleur : aperçu

Sommaire. Structure. Liste simplement chaînée ALGORITHME ET STRUCTURES DE DONNÉES II

Traduction des Langages : Le Compilateur Micro Java

CRÉER UNE BASE DE DONNÉES AVEC OPEN OFFICE BASE

Certificat Informatique et internet Niveau 1 TD D1. Domaine 1 : Travailler dans un environnement numérique évolutif. 1. Généralités : Filière

Quelques algorithmes simples dont l analyse n est pas si simple

OpenOffice.org Présentation - Débuter. Distribué par Le projet OpenOffice.org

CONDITIONS GENERALES D'UTILISATION DU LOGICIEL SYNCHRONISATION ET PARTAGEUBIKUBE / B CLOUD

Application 1- VBA : Test de comportements d'investissements

SUPPORT DE COURS. Dr. Omari Mohammed Maître de Conférences Classe A Université d Adrar Courriel : omarinmt@gmail.com

Probabilités. Rappel : trois exemples. Exemple 2 : On dispose d un dé truqué. On sait que : p(1) = p(2) =1/6 ; p(3) = 1/3 p(4) = p(5) =1/12

Projet gestion d'objets dupliqués

Publication Assistée par Ordinateur

Utiliser Glary Utilities

Exercices types Algorithmique et simulation numérique Oral Mathématiques et algorithmique Banque PT

PROJET ALGORITHMIQUE ET PROGRAMMATION II

l'ordinateur les bases

Guide de l'utilisateur de l'application mobile

1. Utilisation du logiciel Keepass

INFRASTRUCTURES & RESEAUX

Restauration d AdmiCash sur un nouveau PC ou système d exploitation

UEO11 COURS/TD 1. nombres entiers et réels codés en mémoire centrale. Caractères alphabétiques et caractères spéciaux.

Les indices à surplus constant

Tutoriel : logiciel de présentation Openoffice Impress

Chapitre 2 Créer son site et ses pages avec Google Site

IN SYSTEM. Préconisations techniques pour Sage 100 Windows, MAC/OS, et pour Sage 100 pour SQL Server V16. Objectif :

Statistique descriptive. Interrogation 2 : à rendre le Jeudi 18 novembre

CREATION D UNE EVALUATION AVEC JADE par Patrick RUER (

BTS 2 SIO Active directory- windows serveur 2012 Version 1.1 (12/12/2014)

Comment choisir un fournisseur de sauvegarde en ligne? Responsables de PME/PMI et équipes techniques

S LICENCE INFORMATIQUE Non Alt Alt SS1 S2 S3 S4 S5 S6 Parcours : IL (Ingénierie Logicielle) SRI (Systèmes et Réseaux Informatiques)

Définitions. Numéro à préciser. (Durée : )

GUIDE ILLUSTRÉ FORMULAIRE CAMPUSFRANCE

RÉALISATION DE GRAPHIQUES AVEC OPENOFFICE.ORG 2.3

Reaper : utilisations avancées

MASTER PROFESSIONNEL STAPS MANAGEMENT ET INGENIERIE DU SPORT OPTION GESTION DU SPORT ET DEVELOPPEMENT TERRITORIAL


Programmation Orientée Objet

LA MESSAGERIE (THUNDERBIRD en l'occurence)

Page 1 sur 5 TP3. Thèmes du TP : l la classe Object. l Vector<T> l tutorial Interfaces. l Stack<T>

Bureau Virtuel Lyon 2

Encapsulation. L'encapsulation consiste à rendre les membres d'un objet plus ou moins visibles pour les autres objets.

Programmation Orientée Objet Java

Dropbox, stocker et partager des fichiers

Concept de machine virtuelle

Gestion mémoire et Représentation intermédiaire

Transcription:

Université Bordeaux 1 table des matières Licence Semestre 3 - Algorithmes et structures de données 1 Dernière mise à jour effectuée le 23 Octobre 2013 Piles et Files Déitions Primitives de piles, exemples Primitives de files, exemples Implémentation des piles Implémentation des files 1. Déitions Les piles et les files sont des containeurs dans lesquels l' ne peut se faire qu'à un objet particulier. Déition 3.1. Dans une pile, l'objet supprimé est le dernier inséré (LIFO, Last-In, First-Out). Déition 3.2. Dans une file, l'élément supprimé est le plus ancien dans la file (FIFO, First-In, First-Out). On écrira pour déclarer des variables : type_pile=pile de objet; type_file=file de objet; 2. Primitives de pile Une pile est déi par les opérations suivantes : fonction valeur(val P:pile de objet):objet; fonction pilevide(val P:pile de objet):booléen; fonction créerpile(ref P:pile de objet):vide; fonction empiler(ref P:pile de objet; val x:objet):vide; fonction dépiler (ref P:pile de objet):vide; fonction detruirepile(ref P:pile de objet):vide; Construire une listesc inverse à partir d'une listesc 1 sur 7 05/11/13 10:12

fonction listeinverse(val L:listeSC de objet):listesc de objet; var P:pile de objet; var LR:liste de objet; creerliste(lr); creerpile(p); debutliste(l); tant que!liste(l) faire empiler(p,valeur(l)); suivant(l); tantque insererentete(lr,valeur(p)); insererapres(lr,valeur(p)); suivant(lr); tantque; detruirepile(p) retourner(lr); On peut peut-être se dispenser de pile! Oui si la liste est implémenté de manière statique car alors le passage par valeur fournit une copie du tableau. fonction listeinverse(val L:listeSC de objet):listesc de objet; var LR:liste de objet; creerliste(lr); debutliste(l); tant que!liste(l) faire insererentete(lr,valeur(l)); suivant(l); tantque; retourner(lr); Compter le nombre d'élément d'une pile d'entiers fonction comptepile(val P:pile de objet): entier; var compt:entier; var PS:pile de objet; var v:objet; compt=0; creerpile(ps); compt=compt+1; v=valeur(p); empiler(ps,v); tantque; tant que non(pilevide(ps)) faire v=valeur(ps); depiler(ps); empiler(p,v); tantque; detruirepile(ps); retourner(compt); Exercice Peut-on se dispenser de copier la pile? La réponse est ca dépend: En effet, le paramètre étant passé par valeur, il est inutile de copier la pile si l'implémentation est statique, dans les implémentations dynamiques : il faut le faire. 2 sur 7 05/11/13 10:12

fonction comptepile(val P:pile de objet): entier; /* implémentation statique */ var compt:entier; compt=0; compt=compt+1; tantque; retourner(compt); 3. Primitives de File Une file est déi par les opérations suivantes : fonction valeur(val F:file de objet):objet; fonction filevide(val F:file de objet):booléen; fonction créerfile(ref F:file de objet):vide; fonction enfiler(ref F:file de objet; val v:objet):vide; fonction detruirefile(ref F:file de objet):vide; Compter le nombre d'élément d'une file d'entiers non nuls fonction comptefile(ref F:file de entier): entier; var v,compt:entier; compt=0; enfiler(f,0); tant que valeur(f)!=0 faire compt=compt+1; v=valeur(f); enfiler(f,v); tantque; retourner(compt); inverser une file d'entiers non nuls fonction inverserfile(ref F:file de entier): file d'entier; var P:pile de entier; var FS:file d'entier; creerpile(p); creerfile(fs); enfiler(f,0); tant que valeur(f)!=0 faire v=valeur(f); enfiler(f,v); empiler(p,v); tantque v=valeur(p); enfiler(fs,v); tantque; detruirepile(p); 3 sur 7 05/11/13 10:12

retourner(fs); 4. Implémentations de pile Implémentation dans un tableau Chaque objet de la pile est un élémént du tableau. On doit de plus avoir un champs qui permet d'accéder au sommet de pile. On a donc pile d'objet=structure taille:entier; sommet:entier; pile:tableau[1..taille] d'objets; structure; fonction valeur(ref P:pile de objet):objet; retourner(p.pile[p.sommet]); fonction pilevide(ref P:pile de objet):booléen; retourner(p.sommet==0); fonction empiler(ref P:pile de objet; val x:objet):booleen; /* l'espace de stockage peut être saturé */ si P.sommet==P.taille alors retourner(faux) sinon P.sommet=P.sommet+1; P.pile[P.sommet]=x; retourner(vrai) si fonction dépiler(ref P:pile de objet):vide; P.sommet=P.sommet-1; fonction créerpile(ref P:pile de objet):pile de objet; P.sommet=0; Implémentation par une listesc Chaque objet de la pile est un objet de la listesc. pile d'objet=listesc de objet; fonction valeur(ref P:pile de objet):objet; 4 sur 7 05/11/13 10:12

Liste(P); retourner(valeur(p)); fonction pilevide(ref P:pile de objet):booléen; retourner(listevide(p)); fonction empiler(ref P:pile de objet; x:objet):vide; insérerentete(p,x) fonction dépiler(ref P:pile de objet):vide; supprimerentete(p); fonction créerpile(ref P:pile de objet):vide; créerliste(p); 5. Implémentations de file Implémentation dans un tableau Chaque objet de la file est un élément du tableau. On utilise le tableau de manière circulaire avec un pointeur donnant le premier et un autre donnant le dernier. file d'objet=structure taille:entier; premier:entier; dernier : entier; plein:booléen; file:tableau[0..taille-1] d'objets; structure; fonction valeur(ref F:file de objet):objet; retourner(f.file[f.premier]); fonction filevide(ref F:file de objet):booléen; retourner(f.premier==f.dernier & non(f.plein)); fonction enfiler(ref F:file de objet;val x:objet):booleen; si F.plein alors retourner(faux) sinon 5 sur 7 05/11/13 10:12

F.file[F.dernier]=x; F.dernier=(F.dernier+1) mod F.taille; F.plein=F.dernier==F.premier; retourner(vrai) si F.premier=(F.premier+1) mod F.taille; F.plein=Faux fonction créerfile(ref F:file de objet):file de objet; F.premier= 0; F.dernier= 0; F.plein=FAUX; Implémentation par une listedc Chaque objet de la file est un objet de la listedc car Il faut un au dernier. file d'objet=listedc de objet; fonction valeur(ref F:file de objet):objet; Liste(F); retourner(valeur(f)); fonction filevide(ref F:file de objet):booléen; retourner(listevide(f)); fonction enfiler(ref F:file de objet;val x:objet):vide; dernier(f); inséreraprès(f,x); supprimerentete(f); fonction créerfile(ref F:file de objet):vide; créerliste(f); Implémentation par une liste comportant un pointeur sur le dernier 6 sur 7 05/11/13 10:12

cellule=structure valeurelement:objet; pointeursuivant:^cellule; structure; curseur=^cellule; file d'objet=structure premier:curseur; dernier:curseur structure fonction valeur(ref F:file de objet):objet; retourner(f.premier^.valeurelement); fonction filevide(ref F:file de objet):booléen; retourner(f.premier==nil); fonction enfiler(ref F:file de objet; x:objet):vide; var c:curseur; new(c); c^.valeurelement=x; c^.pointeursuivant=nil; si F.premier==NIL alors F.premier=C si F.dernier^.pointeurSuivant=c; F.dernier=c; var c:curseur; c=f.premier; si F.premier=F.dernier alors F.dernier=NIL si F.premier=c^.pointeurSuivant; delete(c) fonction créerfile(ref F:file de objet):vide; F.premier=NIL; F.dernier=NIL; fonction detruirefile(ref F:file de objet):vide; tantque!filevide(f) faire defiler(f) tantque 7 sur 7 05/11/13 10:12