20/04/05SE Info2 - S. L'haire UNIGE1 TP 8: Solution 1 AgendaPtr = POINTER TO RECORD jour, heure: INTEGER; sujet: Chaine; precedent, suivant: AgendaPtr.

Slides:



Advertisements
Présentations similaires
PL/SQL : Le Langage PL/SQL est une extension du SQL, qui offre
Advertisements

Algorithmes et structures de données 7ème cours
Portée des variables VBA & Excel
Cours n°2M2. IST-IE (S. Sidhom) UE 303 Promo. M2 IST-IE 2005/06 Conception dun système d'information multimédia Architecture trois-tiers : PHP/MySQL &
Programmer en JAVA par Tama
Les sous-programmes Chapitre n° 5: Objectifs : Activité:
18/10/2004 P. Van Roy, InfoT4, S5 1 Informatique T4 Solutions au Test du 18 octobre Peter Van Roy Département dIngénierie Informatique, UCL
Cours 7 - Les pointeurs, l'allocation dynamique, les listes chaînées
Structures de données linéaires
Les liste.
IPA – Catherine Faron Zucke et Anne Marie Deryr. suite ordonnée d'éléments de taille variable ArrayList liste; liste = new ArrayList (); Ne peuvent contenir.
La structure conditionnelle simple
Les méthodes en java Une méthode est un regroupement d’instructions ayant pour but de faire un traitement bien précis. Une méthode pour être utilisée.
Les structures de contrôle conditionnelles
Leçon 6 : Structures de données dynamiques IUP 2 Génie Informatique Méthode et Outils pour la Programmation Françoise Greffier.
POO-L3 H. Fauconnier1 Tableau et héritage Y[] yA=new Y[3]; X[] xA=yA; //ok xA[0]=new Y(); xA[1]=new X(); //non xA[1]=new Z(); //non Object XX[]int[] YZY[]Z[]
TP : Fichiers et Tableaux Séance N°2 Avril Application de Gestion de stock Partie 1 : les fichiers 1 Création dun fichier de 20 articles.
TP Fichiers et Tableaux Avril Un fichier Permet le stockage de données sur des supports de mémoire externes (donc les données ne seront pas perdues.
TP Enregistrements Avril Un enregistrement permet de regrouper des éléments ayant des types différents au sein dune même structure de données (chose.
Chapitre VII Généricité. POO-L3 H. Fauconnier2 Chapitre VII 1. Principes généraux 2. Types génériques imbriqués 3. Méthodes génériques 4. Types paramètres.
Module 4 : Parcours dans un graphe
Interfaces : comment classifier ?
Informatique 2 Structure de données en programmation orientée objet
Révision des notions OO et Java Semaine 1 Jian-Yun Nie.
18/05/05SE Info2 - S. L'haire UNIGE1 Lecture cha î ne caract è res Un document HTML est compos é de balises Une balise est compos é e de caract è res entre.
Présentation Structures de Données et TDA
IFT 6800 Atelier en Technologies d’information
1 IFT 6800 Atelier en Technologies dinformation Le langage de programmation Java chapitre 3 : Classes et Objects.
Ift 2251 Introduction au Génie Logiciel
LIFI-Java 2004 Séance du Jeudi 9 sept. Cours 1. La notion de langage Décrire une tâche à effectuer –programme Écrire à un haut niveau –facile pour lutilisateur.
Chapitre 9 Les sous-programmes.
Partie II Sémantique.
Cours du 22 novembre généricité. Chapitre VII Généricité.
COURS DE PROGRAMMATION ORIENTEE OBJET :
Initiation aux bases de données et à la programmation événementielle

Programmation Orienté Objet en C++ Ricard julien.
Animateur : Med HAIJOUBI
LANGAGE PASCAL Introduction rapide….
Le langage C Structures de données
23/03/05SE Info2 - S. L'haire UNIGE1 TP 7 PROCEDURE Inserer(VAR a, crt : AgendaPtr; j, h : INTEGER; IN s : Chaine); VAR nouveau, temp : AgendaPtr; BEGIN.
Rappel sur les variables statiques Ce qui a été vu? variables de type simple (entier, réels, caractère, etc.)variables de type simple (entier, réels,
La Boucle Repeat Cours LCS N°1 Présenté par Mr: LALLALI.
O-notation 1. Introduction 2. O-notation 3. Opérations 3.1 Somme 3.2 Produit 4. Règles générales 5. Exemple 6.Analyse des algorithmes récursifs 6.1 Dilatation.
Packages et Types De la Spécification Formelle A l'implémentation Ada.
Informatique de gestion – IO MER L3 – Pierre SOURNAC Informatique de Gestion part III – the macro rises L3 – IO MER
Cours 9 Exceptions (fin) Généricité. POO-L3 H. Fauconnier2 Chaînage d'exceptions  Une exception peut être causée par une autre.  il peut être utile.
Cours No8 La programmation à l’aide d’objets. Contenu 1. Terminologie objet 2. Classe vs Objet 3. Création d’une classe 4. Déclaration d’une variable.
1 Algorithmique et programmation en Itérations (boucles) Types numériques simples (suite)
Algorithmique et programmation en
Algorithmes de tri et de recherche
Créer des packages.
Méthodes de tri.
MIGO ET COMPLEXITE1 ARBRES EQUILIBRES Définition : On dit qu’un arbre binaire est H équilibré si en tout nœud de l’arbre, les hauteurs des sous-arbres.
Concepts intermédiaires de VHDL
Master 1 SIGLIS Java Lecteur Stéphane Tallard Les erreurs communes en Java.
420-B63 Programmation Web Avancée Auteur : Frédéric Thériault 1.
Strings et Tableaux en Java
Structures de données avancées : Arbres ‘Left Leaning Red-Black’
Cours LCS N°4 Présenté par Mr: LALLALI
Tutorat en bio-informatique Le 15 novembre Exercices 1 et 2 (MAT1400) - solutions Chapitre 12.2, Analyse - concepts et contextes vol. 2 19) Calculez.
6ième Classe (Mercredi, 17 novembre) CSI2572
Liste Une liste est une séquence d’éléments. Concept important: Chaque élément possède une position dans la liste. Notation: De quelles opérations a-t-on.
11/05/05SE Info2 - S. L'haire UNIGE1 TP 9 structure EmployeEltPtr* = POINTER TO ABSTRACT RECORD (LhaireInfo2Lists.DblListEltPtr) nom*, prenom* : Chaine;
Informatique de Gestion part II – the dark macro
CPI/BTS 2 Algorithmique & Programmation La récursivité Algo – Prog CPI/BTS2 – M. Dravet – 14/09/2003 Dernière modification: 14/09/2003.
Initiation aux bases de données et à la programmation événementielle
Algorithmique Algorithmique  Pascal
CSI2510 Structures des Données et Algorithmes
MINISTÈRE DE L’ENSEIGNEMENT SUPÉRIEUR ET DE LA RECHERCHE SCIENTIFIQUE
Transcription de la présentation:

20/04/05SE Info2 - S. L'haire UNIGE1 TP 8: Solution 1 AgendaPtr = POINTER TO RECORD jour, heure: INTEGER; sujet: Chaine; precedent, suivant: AgendaPtr END; Liste = POINTER TO RECORD tete, queue, courant: AgendaPtr; (l: Liste) CourantSurTete (): BOOLEAN, NEW; (l: Liste) DetruireCourant (): BOOLEAN, NEW; (lis: Liste) EstVide (): BOOLEAN, NEW; (lis: Liste) Initialiser, NEW; (l: Liste) Inserer (j, h: INTEGER; IN s: Chaine), NEW; (l: Liste) ModifierCourant (j, h: INTEGER; IN s: Chaine): BOOLEAN, NEW END;

20/04/05SE Info2 - S. L'haire UNIGE2 TP 8: solution 1 (suite) Insertion: 1) IF l.EstVide() THEN insertion 1er élt. 2) ELSIF (l.tete.jour > j) OR ((l.tete.jour = j) & (l.tete.heure > h)) THEN insertion en tête 3) ELSIF (j > l.queue.jour) OR ((l.queue.jour = j) & (h > l.queue.heure)) THEN Insertion queue 4) ELSE temp := l.tete; WHILE (temp.suivant # NIL) & ((nouveau.jour > temp.suivant.jour) OR ((nouveau.jour = temp.suivant.jour) & (nouveau.heure > temp.suivant.heure))) DO temp := temp.suivant; END; nouveau.precedent := temp; nouveau.suivant := temp.suivant; temp.suivant.precedent := nouveau; temp.suivant := nouveau;END; l.courant := nouveau;

20/04/05SE Info2 - S. L'haire UNIGE3 TP8 Solution 2 AgendaEltPtr = POINTER TO RECORD (DblListEltPtr(ListEltPtr)) suivant: ListEltPtr; precedent: DblListEltPtr; jour, heure: INTEGER; sujet: Chaine; (el: AgendaEltPtr) EcrireLog END; AgendaPtr = POINTER TO RECORD (DblListPtr(ListPtr)) tete, queue, crt: ListEltPtr; (lis: ListPtr) AllerSuivant (): BOOLEAN, NEW; (l: ListPtr) CrtSurTete (): BOOLEAN, NEW; (l: ListPtr) Ecrire, NEW; (lis: ListPtr) EstVide (): BOOLEAN, NEW; (lis: ListPtr) Initialiser, NEW; (lis: DblListPtr) AllerPrecedent (): BOOLEAN; (l: DblListPtr) DetruireCourant (): BOOLEAN; (l: AgendaPtr) Inserer (j, h: INTEGER; IN s: Chaine), NEW; (l: AgendaPtr) ModifierCourant (j, h: INTEGER; IN s: Chaine): BOOLEAN, NEW END;

20/04/05SE Info2 - S. L'haire UNIGE4 TP8 2e solution: écriture PROCEDURE (el : ListEltPtr)EcrireLog*(), NEW, EXTENSIBLE; BEGIN HALT(33); END EcrireLog; PROCEDURE (el : AgendaEltPtr)EcrireLog*(); BEGIN IO.WriteString("Jour: ") ; ….. END EcrireLog; PROCEDURE (l:ListPtr)Ecrire*(), NEW; VAR temp : ListEltPtr; BEGIN IF (~l.EstVide()) THEN temp:= l.crt; IF l.CrtSurTete() THEN REPEAT l.crt.EcrireLog(); UNTIL ~l.AllerSuivant(); END; l.crt := temp; END; END Ecrire;

20/04/05SE Info2 - S. L'haire UNIGE5 TP8 fin Insertion: comme dans l'autre solution Voir aussi la conception objet: 2 méthodes pour détruire ou pour reculer

20/04/05SE Info2 - S. L'haire UNIGE6 ABSTRACT ListEltPtr* = POINTER TO ABSTRACT RECORD suivant* : ListEltPtr END; DblListEltPtr* = POINTER TO ABSTRACT RECORD (ListEltPtr) precedent* : DblListEltPtr;END; Définit une classe abstraite  qui n'est pas destinée à être utilisée en tant que telle Un type abstract peut être étendu

20/04/05SE Info2 - S. L'haire UNIGE7 ABSTRACT (2) Une classe définie en ABSTRACT peut contenir des méthodes normales… PROCEDURE (lis : ListPtr)Initialiser*(), NEW; BEGIN lis.tete := NIL;lis.queue := NIL;… … mais aussi des méthodes abstraites qui doivent être instanciées par la classe qui étend une classe abstraite PROCEDURE (el : ListEltPtr)EcrireEltLog*, NEW,ABSTRACT;

20/04/05SE Info2 - S. L'haire UNIGE8 Instruction ASSERT Permet de s'assurer que des données sont bien instanciées, ou des conditions remplies sinon déclenche un TRAP ASSERT(t # NIL); ASSERT(l.taille > 0); Etc.

20/04/05SE Info2 - S. L'haire UNIGE9 Insertion générique PROCEDURE (l : ListPtr)InsererTete*(new : ListEltPtr): BOOLEAN, NEW,EXTENSIBLE ; BEGIN ASSERT(new # NIL); new.suivant := NIL; IF l.EstVide() THEN l.queue:=new; ELSE new.suivant := l.tete; END; l.tete := new;l.crt := new; INC(l.taille);RETURN TRUE; END InsererTete; Les listes sont abstraites ListEltPtr* = POINTER TO ABSTRACT RECORD suivant* : ListEltPtr END; DblListEltPtr* = POINTER TO ABSTRACT RECORD (ListEltPtr) precedent* : DblListEltPtr;END; On déclare insertion au niveau liste et liste double, quel que soit le contenu Le nouvel élément sera créé ailleurs (v. transpas suivants)

20/04/05SE Info2 - S. L'haire UNIGE10 Insérer (suite) PROCEDURE (l : DblListPtr)InsererTete*(new : ListEltPtr): BOOLEAN; BEGIN ASSERT(new # NIL); WITH new: DblListEltPtr DO new.suivant := NIL; new.precedent := NIL; IF l.EstVide() THEN l.queue:=new; ELSE l.tete(DblListEltPtr).precedent := new; new.suivant := l.tete; END; l.tete := new; l.crt := new; INC(l.taille); RETURN TRUE; END; END InsererTete;

20/04/05SE Info2 - S. L'haire UNIGE11 Insérer (fin) PROCEDURE (el : AgendaEltPtr)Init*(j, h : INTEGER; IN sujet : Chaine),NEW; BEGIN el.suivant := NIL; el.precedent := NIL; el.sujet := sujet$; … END Init*; …. VAR newElt : AgendaEltPtr; agenda : AgendaPtr; BEGIN … NEW(newElt); newElt.Init(6,4, "nouvel elt"); agenda.InsererTete(newElt);

20/04/05SE Info2 - S. L'haire UNIGE12 TP9 Une société informatique gère ses employés Trois types Administratif Développement Commerciaux Utilisez les méthodes vues aujourd'hui Faites une librairie pour vos listes et importez-la dans votre programme principal