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.

Slides:



Advertisements
Présentations similaires
Prmt For imbriqués.
Advertisements

PL/SQL : Le Langage PL/SQL est une extension du SQL, qui offre
Au programme du jour …. Un peu plus de structures de données
La classe String Attention ce n’est pas un type de base. Il s'agit d'une classe défini dans l’API Java (Dans le package java.lang) String s="aaa"; // s.
OTB Analog module: Input configuration with TSX PREMIUM (TSXCPP110)
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 &
Liste générique dans Linux 2.6 Source : Understanding the Linux kernel Chap3 processes p.87.
Oracle: OO.
Introduction – Le bureau La visualisation des dossiers et des fichiers La gestion des dossiers et des fichiers Création dun nouveau dossier (méthode 1)
Les sous-programmes Chapitre n° 5: Objectifs : Activité:
Connexion base de données
Chapitre IV. Structures linéaires (piles, files, listes chaînées)
4.3. Fonctions mathématiques de base en Pascal Syntaxe Fonction
BlueJ_XI 1 Java, les objets : tout de suite ! Gestion des erreurs : les exceptions Notes de cours associées au chapitre 11 tutorial BlueJ
(Procedural Language / Structured Query Language)
Faculté I&C, Claude Petitpierre, André Maurer 1 Systèmes multi-processus C. Petitpierre
Cours 7 - Les pointeurs, l'allocation dynamique, les listes chaînées
Structures de données linéaires
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.
© 2007 P. Van Roy. All rights reserved. 1 FSAB1402: Informatique 2 La Concurrence Déclarative Peter Van Roy Département dIngénierie Informatique, UCL
Les structures de données arborescentes
Cours du 19 octobre. POO-L3 H. Fauconnier2 E) Constructeurs et héritage Le constructeurs ne sont pas des méthodes comme les autres: le redéfinition na.
La programmation objet Illustration de la POO en Pascal
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.
Master 1 SIGLIS java Lecteur Stéphane Tallard Chapitre 4 – Structures de contrôle.
Master 1 SIGLIS Java Lecteur Stéphane Tallard Chapitre 5 – Héritage, Interfaces et Listes génériques.
Algorithme et programmation
Structures de données IFT-2000 Abder Alikacem La librairie STL du C++ Département dinformatique et de génie logiciel Édition Septembre 2009.
Staf2x - Tecfa - UniGE 1 Traitement XML avec DOM PHP 5 – XML – DOM Dajana Kapusova – TECFA - UNIGE.
27/04/05SE Info2 - S. L'haire UNIGE1 Pointeurs sur tableaux ouverts POINTER TO ARRAY OF CHAR Structure de tableaux à taille variable On a des types tableaux.
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.
« Formation et NTIC : Un défi pour le 3 ème millénaire » Institut Régional d’Administration de Bastia Quelques enseignements de l’expérience Daniel.
IFT 6800 Atelier en Technologies d’information
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.
Piles Premier arrivé, dernier servi: LIFO (Last In, First Out) Liste à usage restreint: Enlève et insère un élément seulement à un bout de la liste. Notation:
Cours 11 Threads. Chapitre X threads threadPOO-L3 H. Fauconnier3 Threads threads: plusieurs activités qui coexistent et partagent des données exemples:
Introduction à Linda Béat Hirsbrunner References Nicholas Carriero, David Gelernter : "Linda in context", Communications of ACM, vol. 32 (n° 4, April 1989)

LANGAGE PASCAL Introduction rapide….
Le langage C Structures de données
27/02/2006L3 MIAGE - GLO ADA1 Les Paquetages Permettent d’encapsuler un groupe d’entités logiquement reliées. Comme toute unité de programme, le paquetage.
Implémentation Ada Gestion de la mémoire. Put 20 L'affectation de Comptes (σ-modèle) La sémantique intuitive des comptes ne laisse guère de place à l'affectation.
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,
Packages et Types De la Spécification Formelle A l'implémentation Ada.
1 Algorithmique et programmation en Itérations (boucles) Types numériques simples (suite)
Algorithmes de tri et de recherche
Créer des packages.
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
ETNA – 1ème année Guillaume Belmas –
Structures de données avancées : Arbres ‘Left Leaning Red-Black’
CSI 3525, Implémentation des sous-programmes, page 1 Implémentation des sous-programmes L’environnement dans les langages structurés en bloc La structure.
Variables et environnement utilisateur W. Barhoumi.
Cours LCS N°4 Présenté par Mr: LALLALI
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.
20/04/05SE Info2 - S. L'haire UNIGE1 TP 8: Solution 1 AgendaPtr = POINTER TO RECORD jour, heure: INTEGER; sujet: Chaine; precedent, suivant: AgendaPtr.
1 UMLV  FICHIERS Mémoire de masse découpée en blocs Fichier :liste chaînée de blocs, ou arbre de blocs (répertoires - fichiers)‏ Bloc d’éléments Bloc.
Algorithmique Algorithmique  Pascal
Introduction au langage PL/SQL
Les Instructions Itératives (Les Boucles)
Introduction au Langage Pascal
L ES I NSTRUCTIONS I TÉRATIVES (L ES B OUCLES ) Réalisé par : OUZEGGANE Redouane Département de Technologie Faculté de Technologie – Université A.Mira,
MINISTÈRE DE L’ENSEIGNEMENT SUPÉRIEUR ET DE LA RECHERCHE SCIENTIFIQUE
Les structures de base Listes chainées. Listes Les listes(similaire aux tableaux) sont des structures informatiques qui permettent de garder en mémoire.
Transcription de la présentation:

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 NEW(nouveau);nouveau.jour := j;nouveau.heure := h; nouveau.sujet := s;nouveau.suivant := NIL; crt:= nouveau; IF a = NIL THEN a := nouveau; ELSIF (a.jour > j) OR ((a.jour = j) & (a.heure > h)) THEN nouveau.suivant := a; a := nouveau;

23/03/05SE Info2 - S. L'haire UNIGE2 TP 7 suite ELSE (*insertion en ordre*) temp := a; 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; (*insertion au point d'insertion*) nouveau.suivant := temp.suivant; temp.suivant := nouveau; END; END Inserer;

23/03/05SE Info2 - S. L'haire UNIGE3 TP 7 suite PROCEDURE GetPrecedent(tete, crt : AgendaPtr; VAR p : AgendaPtr); BEGIN p := tete; IF p = crt THEN p := NIL; ELSE WHILE (p.suivant # NIL) & (p.suivant # crt) DO p := p.suivant; END; END GetPrecedent;

23/03/05SE Info2 - S. L'haire UNIGE4 TP 7 suite PROCEDURE DetruireCrt(VAR a, crt : AgendaPtr): BOOLEAN; VAR prec : AgendaPtr; BEGIN IF a # NIL THEN GetPrecedent(a, crt, prec); IF prec = NIL THEN a := a.suivant; crt := a; ELSE prec.suivant := crt.suivant; crt := prec; END; RETURN TRUE ELSE RETURN FALSE END; END DetruireCrt;

23/03/05SE Info2 - S. L'haire UNIGE5 Liste doublement chaînée ListeDoublePtr = POINTER TO ListeDouble; ListeDouble = RECORD cle : blabla prec, suivant : ListeDoublePtr; END;

23/03/05SE Info2 - S. L'haire UNIGE6 Enregistrement auxiliaire pour gérer liste tete queue courant MaListe = RECORD tete, queue courant: ListeDoublePtr; taille : INTEGER; END; taille

23/03/05SE Info2 - S. L'haire UNIGE7 Insertion La liste doit être initialisée  tous les pointeurs à NIL (créer procédure propre) Ne pas oublier qu'il y a des pointeurs dans les 2 sens Toujours penser à tete, queue et courant de l'enr. auxiliaire

23/03/05SE Info2 - S. L'haire UNIGE8 Insertion en tête NEW(el); el.cle:= … el.precedent:= NIL; el.suivant:= l.tete; IF l.taille = 0 THEN l.queue:= el ELSE l.tete.precedent:= el END; l.tete:= el; INC(l.taille); l.courant := …

23/03/05SE Info2 - S. L'haire UNIGE9 Insertion en queue NEW(el); el.cle:= i; el.precedent:= l.queue; el.suivant:= NIL; IF l.taille = 0 THEN l.tete:= el ELSE l.queue.suivant:= el END; l.queue:= el; INC( l.taille); l.courant :=…

23/03/05SE Info2 - S. L'haire UNIGE10 Insertion avant courant NEW(el); el.cle:= i; el.suivant:= NIL; el.precedent:= NIL; IF (l.taille = 0) OR (l.courant = l.tete) THEN InsererEnTete( l, i) ELSE el.suivant:= l.courant; el.precedent:= l.courant.precedent; l.courant.precedent.suivant := el; l.courant.precedent := el; INC( l.taille) END;

23/03/05SE Info2 - S. L'haire UNIGE11 Destruction PROCEDURE DetruireCourant(VAR l : ListeDouble):BOOLEAN; BEGIN IF l.courant # NIL THEN DEC(l.taille); IF l.taille = 0 THEN CreerListe(l); RETURN TRUE; ELSIF l.courant = l.tete THEN l.tete := l.courant.suivant;l.tete.precedent := NIL; ELSIF l.courant = l.queue THEN l.queue :=l.courant.precedent;l.queue.suivant := NIL; ELSE l.courant.precedent.suivant := l.courant.suivant; l.courant.suivant.precedent :=l.courant.precedent; END; l.courant := … RETURN TRUE; END; RETURN FALSE; END DetruireCourant;

23/03/05SE Info2 - S. L'haire UNIGE12 Parcours de liste 3 procédures: 1) Procédure pour placer le pointeur courant sur la tête PROCEDURE CourantSurTete(VAR l : ListeDouble): BOOLEAN; BEGIN IF l.taille # 0 THEN l.courant := l.tete; RETURN TRUE ELSE l.courant := NIL; RETURN FALSE END;

23/03/05SE Info2 - S. L'haire UNIGE13 Parcours (2) 2) Procédure pour sélectionner élément suivant PROCEDURE ElementSuivant(VAR l : ListeDouble): BOOLEAN; BEGIN IF l.courant.suivant # NIL THEN l.courant := l.courant.suivant; RETURN TRUE; ELSE RETURN FALSE; END ;

23/03/05SE Info2 - S. L'haire UNIGE14 Parcours (3) 3) Procédure de parcours IF CourantSurTete(l) THEN REPEAT l.courant.cle … UNTIL~ElementSuivant(l);

23/03/05SE Info2 - S. L'haire UNIGE15 Liste objet On transforme l'enregistrement MaListe en lui ajoutant un pointeur MaListe = POINTER TO RECORD tete, queue courant: ListeDoublePtr; taille : INTEGER; END;

23/03/05SE Info2 - S. L'haire UNIGE16 Initialisation de la liste Ajouter une méthode  Procédure précédée du nom de l'objet auquel elle est rattachée et suivie du mot-clé NEW PROCEDURE (l : MaListe)Initialise():BOOLEAN, NEW; BEGIN l.tete := NIL; l.queue := NIL; l.courant:= NIL; l.taille := 0; END Initialise; … NEW(liste); liste.Initialise();

23/03/05SE Info2 - S. L'haire UNIGE17 Méthode ListeVide Très utile dans beaucoup de cas PROCEDURE (l: MaListe)ListeVide(): BOOLEAN; BEGIN RETURN taille = 0; Ou variante RETURN tete = NIL; … IF l.ListeVide() THEN …

23/03/05SE Info2 - S. L'haire UNIGE18 Méthode Parcours PROCEDURE (l : Liste)Parcours(), NEW; VAR temp : Liste; BEGIN IF ~l.ListeVide() THEN temp := l.courant; IF l.CourantSurTete() THEN REPEAT l.courant … UNTIL ~l.AllerSuivant(); l.courant := temp; Attention: courant est parfois utilisé par plusieurs procédures  le sauver dans temp