La Pile La File. Piles et Files. Piles et Files

Documents pareils
Prénom : Matricule : Sigle et titre du cours Groupe Trimestre INF1101 Algorithmes et structures de données Tous H2004. Loc Jeudi 29/4/2004

Programme Compte bancaire (code)

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

Les arbres binaires de recherche

1. Structure d un programme C. 2. Commentaire: /*..texte */ On utilise aussi le commentaire du C++ qui est valable pour C: 3.

Les structures de données. Rajae El Ouazzani

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

Cours d initiation à la programmation en C++ Johann Cuenin

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

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

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

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

#include <stdio.h> #include <stdlib.h> struct cell { int clef; struct cell *suiv; };

Conventions d écriture et outils de mise au point

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

Algorithmique et Programmation, IMA

Travaux pratiques. Compression en codage de Huffman Organisation d un projet de programmation

Arbres binaires de recherche

Examen Médian - 1 heure 30

Cours de C++ François Laroussinie. 2 novembre Dept. d Informatique, ENS de Cachan

Travaux Dirigés n 1 : chaînes de caractères

Java Licence Professionnelle CISII,

Corrigé des exercices sur les références

Package Java.util Classe générique

Assurance Qualité. Cours de génie logiciel. Renaud Marlet. LaBRI / INRIA (d'après A.-M. Hugues) màj 23/04/2007

Brefs rappels sur la pile et le tas (Stack. / Heap) et les pointeurs

Algorithmique, Structures de données et langage C

OS Réseaux et Programmation Système - C5


Suivant les langages de programmation, modules plus avancés : modules imbriqués modules paramétrés par des modules (foncteurs)

Corrigés des premiers exercices sur les classes

Langage C. Patrick Corde. 22 juin Patrick Corde ( Patrick.Corde@idris.fr ) Langage C 22 juin / 289

Traduction des Langages : Le Compilateur Micro Java

Utilisation d objets : String et ArrayList

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

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

TD/TP PAC - Programmation n 3

Informatique III: Programmation en C++

Programmation avec des objets : Cours 7. Menu du jour

SUPPORT DE COURS. Langage C

RAPPELS SUR LES METHODES HERITEES DE LA CLASSE RACINE Object ET LEUR SPECIALISATION (i.e. REDEFINITION)

Cette application développée en C# va récupérer un certain nombre d informations en ligne fournies par la ville de Paris :

Processus! programme. DIMA, Systèmes Centralisés (Ph. Mauran) " Processus = suite d'actions = suite d'états obtenus = trace

Java Licence Professionnelle Cours 7 : Classes et méthodes abstraites

Objets et Programmation. origine des langages orientés-objet

Projet L1, S2, 2015: Simulation de fourmis, Soutenance la semaine du 4 mai.

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

Premiers Pas en Programmation Objet : les Classes et les Objets

03/04/2007. Tâche 1 Tâche 2 Tâche 3. Système Unix. Time sharing

as Architecture des Systèmes d Information

Introduction à la programmation concurrente

TD3: tableaux avancées, première classe et chaînes

Les algorithmes de base du graphisme

1/24. I passer d un problème exprimé en français à la réalisation d un. I expressions arithmétiques. I structures de contrôle (tests, boucles)

TD2/TME2 : Ordonnanceur et Threads (POSIX et fair)

Cours de Programmation 2

Théorie des Langages

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

Principes des langages de programmation INF 321. Eric Goubault

Généricité. en Java. (polymorphisme paramétrique) Philippe GENOUD UJF Janvier

Algorithmique I. Algorithmique I p.1/??

2. Comprendre les définitions de classes

Éléments d informatique Cours 3 La programmation structurée en langage C L instruction de contrôle if

30.avr.10 Présentation miniprojet. 9.mars.10 Cours 3 4.mai.10 Cours C mars.10 Cours 4 11.mai.10 Cours C++ 2

EPREUVE OPTIONNELLE d INFORMATIQUE CORRIGE

I. Introduction aux fonctions : les fonctions standards

STAGE IREM 0- Premiers pas en Python

Programmer en JAVA. par Tama

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

Projet d informatique M1BI : Compression et décompression de texte. 1 Généralités sur la compression/décompression de texte

Programmation Objet I

Compression de Données - Algorithme de Huffman Document de Conception

Chap III : Les tableaux

Cours d Algorithmique-Programmation 2 e partie (IAP2): programmation 24 octobre 2007impérative 1 / 44 et. structures de données simples

Exceptions. 1 Entrées/sorties. Objectif. Manipuler les exceptions ;

TD/TP PAC - Programmation n 3

Machines virtuelles fonctionnelles (suite) Compilation ML Java

Le prototype de la fonction main()

Chapitre 10. Les interfaces Comparable et Comparator 1

Grandes lignes ASTRÉE. Logiciels critiques. Outils de certification classiques. Inspection manuelle. Definition. Test

INTRODUCTION AUX SYSTEMES D EXPLOITATION. TD2 Exclusion mutuelle / Sémaphores

Claude Delannoy. 3 e édition C++

4. Groupement d objets

Recherche dans un tableau

Introduction à la programmation Travaux pratiques: séance d introduction INFO0201-1

Cours intensif Java. 1er cours: de C à Java. Enrica DUCHI LIAFA, Paris 7. Septembre Enrica.Duchi@liafa.jussieu.fr

TP3 : Manipulation et implantation de systèmes de fichiers 1

# let rec concat l1 l2 = match l1 with [] -> l2 x::l 1 -> x::(concat l 1 l2);; val concat : a list -> a list -> a list = <fun>

STS SE. FreeRTOS. Programmation réseau WIFI. Programmation réseau. Socket Tcp. FlyPort smart Wi-Fi module

Les processus légers : threads. Système L3, /31

1 de 46. Algorithmique. Trouver et Trier. Florent Hivert. Mél : Florent.Hivert@lri.fr Page personnelle : hivert

Cours de C. Petits secrets du C & programmation avancée. Sébastien Paumier

Resolution limit in community detection

Cours d Algorithmique et de Langage C v 3.0

Programmation en Java IUT GEII (MC-II1) 1

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

Langage Java. Classe de première SI

Seance 2: En respectant la méthode de programmation par contrat, implémentez les autres fonctions de jeu.

Une dérivation du paradigme de réécriture de multiensembles pour l'architecture de processeur graphique GPU

TD Objets distribués n 3 : Windows XP et Visual Studio.NET. Introduction à.net Remoting

Transcription:

1 La Pile 2 Le Type Abstrait File Réalisation en C

1-La Pile

Type Abstrait: pile d objets

Opérations - Créer une pile (vide) - Empiler un élément - Dépiler - Prendre le sommet de pile - Tester si la pile est vide

Spécification du Type Abstrait Type Pile utilise Elt Bool opérations creer: Pile sommet:pile Elt empile: Elt, Pile Pile depile: Pile Pile vide:pile Bool Préconditions: depile, sommet définies ssi la pile est non-vide

Spécification(suite): les axiomes et d autres... sommet(empile(e,p))=e depile(empile(e,p))=p vide(empile(e,p))=false

2-

Représentation classique Paire tableau d élémént + indice du sommet 1 Surdimentionner le tableau 2 Valeur de l indice pour la pile vide

Représentation classique Paire tableau d élémént + indice du sommet 1 Surdimentionner le tableau 2 Valeur de l indice pour la pile vide = paire (tableau, indice) à réaliser par

Représentation classique Paire tableau d élémént + indice du sommet 1 Surdimentionner le tableau 2 Valeur de l indice pour la pile vide = paire (tableau, indice) à réaliser par une Structure C

Le type C pile d élément typedef struct ELT un type défini. {ELT tab [MAX]; int ind;} PILE;

Le type C pile d élément typedef struct {ELT tab [MAX]; int ind;} PILE; ELT un type défini. cette représentation amène des restrictions supplémentaires pour la fonction

Le type C pile d élément typedef struct {ELT tab [MAX]; int ind;} PILE; ELT un type défini. empiler ne pas empiler si la pile est pleine!

Les Fonctions Pile: SD de travail réalisation non fonctionnelle plus appropriée. #define MAX 100 /*hauteur de pile*/... PILE creer();... PILE creer(){ /*creation d une pile vide*/ PILE l; l.ind=-1; return l; } int vide(pile * pp){ /* renvoie vrai si la pile pointee par pp est vide*/ return (pp->ind==-1); }

Les Fonctions (suite) void empile(int e, PILE * pp){ /*empile e sur la pile */ assert(pp->ind <MAX-1); /*pointee par pp */ int i=pp->ind+1; pp->tab[i]=e; pp->ind=i; } void depile(pile * pp){ /*depile le sommet de la pile */ assert(!vide(pp)); /*pointee par pp */ pp->ind=pp->ind-1; } int som(pile * pp){ /*retourne le sommet de */ assert(!vide(pp)); /*la pile pointee par pp */ return pp->tab[pp->ind]; }

Représentation avec liste chainées Peu utilisée: pas d interêt particulier pour l efficacité Seuls avantages, pas de limite sur le nombre d élément et moins de place mémoire. 1 Pile vide: pointeur NULL 2 Pile: pointeur sur la cellule de tête. Exercice: écrire toutes les fonctions précédentes avec cette représentation.

Le Type Abstrait File Réalisation en C 2-

Le Type Abstrait File Réalisation en C Le Type Abstrait File Principe: ajout à un bout et retrait à un autre Type File utilise Elt Bool opérations creer: File premier:file Elt dernier:file Elt ajout: Elt, File File supprime: File File vide:file Bool pleine:file Bool Précondition:premier, dernier, supprime définies si la file est non vide.

Le Type Abstrait File Réalisation en C Le Type Concret Représentation par tableau: 1 tableau d élément 2 indice du premier élément 3 indice du dernier élément File vide: indice du premier=indice du dernier=-1

Le Type Abstrait File Réalisation en C Cas possibles file premier <=dernier 0 i j MAX 1 premier dernier file file premier >=dernier 0 j dernier i premier MAX 1

Le Type Abstrait File Réalisation en C Principe de l Algorithme pour ajout FILE ajout(file file, Elt e) precondition: la file est non pleine postcondition: la file est non vide si vide(file) alors tab[1] e iprem 0 ider 0 sinonsi file.iprem<ider et file.ider==max-1 alors file.ider 0 file.tab[file.ider] e fsi sinonsi file.iprem<file.ider et file.ider<max-1 alors file.ider 0 file.tab[file.ider] e fsi sinonsi file.ider<file.iprem alors file.ider=file.ide+1; file.tab[file.ider] e fsi fsi retourner file fin Amelioration: factoriser affectation + 2 derniers cas

Le Type Abstrait File Réalisation en C Programme C Version fonctionnelle peu efficace (recopie de file) Version avec pointeurs (autre solution: définir FILE comme un pointeur sur la structure) void ajout (Elt e, FILE * pf){ assert (!pleine(* pf)); if (vide(* pf)) {pf->tab[0]=e; pf->iprem=1; pf->ider=1;} else if (pf->iprem <ider && file->ider==max-1) pf->ider=1; else pf->ider++; pf->tab[file->ider]=e; }

Le Type Abstrait File Réalisation en C int vide (FILE * pf) { /* retourne vrai ssi la file pointee par pf est vide */ return (pf->ider==-1) &&(pf->iprem==-1); } FILE * creer() { FILE * pf; pf=(file *)malloc(sizeof(file)); pf->ider=-1; pf->iprem=-1; return pf; }

Le Type Abstrait File Réalisation en C Le Type Concret Représentation par liste chainée: premier dernier