html5-img
1 / 20

Listes linéaires chaînées

Listes linéaires chaînées. Pr ZEGOUR DJAMEL EDDINE Ecole Supérieure d’Informatique (ESI) http://zegour.esi.dz/ email: d_zegour@esi.dz. Listes linéaires chaînées : Objectif. On définit une machine abstraite sur les listes permettant l’initiation aux structures dynamiques de données

berk-bird
Download Presentation

Listes linéaires chaînées

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Listes linéaires chaînées Pr ZEGOUR DJAMEL EDDINE Ecole Supérieure d’Informatique (ESI) http://zegour.esi.dz/ email: d_zegour@esi.dz

  2. Listes linéaires chaînées : Objectif • On définit une machine abstraite sur les listes permettant l’initiation aux structures dynamiques de données • Cette machine abstraite offre les opérations de base sur les listes : ALLOUER , LIBERER , VALEUR, SUIVANT, AFF_ADR, AFF_VAL • Sémantique des listes linéaires chaînées : Il s’agit de les transformer en des formes internes qui permettent de faciliter leur interprétation ou génération de code.

  3. Sémantique des listes linéaires : Quadruplés • Allocation / Libération : ALLOUER(P); LIBERER(P) A, B non utilisés C : pointeur dans TABOB vers le résultat A, B non utilisés C : pointeur dans TABOB vers le maillon (‘Allouer’,A ,B, C ) (‘Allouer’,A ,B, C )

  4. Sémantique des listes linéaires : Quadruplés • Accès VALEUR(Exp); SUIVANT(Exp) A : pointeur dans TABOB vers le maillon B non utilisés C : pointeur dans TABOB vers le résultat A : pointeur dans TABOB vers le maillon B non utilisés C : pointeur dans TABOB vers le résultat (‘Valeur’,A ,B, C ) (‘Suivant’,A ,B, C )

  5. Sémantique des listes linéaires : Quadruplés • Mise à jour : AFF_ADR(Exp1, Exp2) ; AFF_VAL(Exp1, Exp2) A : pointeur dans TABOB vers le résultat de f1 B non utilisés C : pointeur dans TABOB vers le résultat de f2 A : pointeur dans TABOB vers le résultat de f1 B non utilisés C : pointeur dans TABOB vers le résultat de f2 (‘Aff_val’,A ,B, C ) (‘Aff_adr’,A ,B, C )

  6. Listes linéaires chaînées : Déclarations Types dans {Entier, Booleen, Car, Chaine} Sep dans {:, Un, Une, Des} Cste constante numérique entière Chaîne  chaîne de caractères Idf identificateur Opr dans { <, <=, >, >=, =, <> } Opa dans { +, -, Ou } Opm dans { *, /, Et } Sign dans {+, -} Tableau est synonyme de Vecteur Init_tableau est synonyme de Init_vecteur

  7. Listes linéaires chaînées : Déclarations <Algo Z>  [ ~Soit|Soient~ <Ps> ] Debut <Lis> Fin [;] { ~<Act> | <Fonct>~ [;] }* <Act> ActionIdf [ ( <Li> ) ] [;] [ ~Soit|Soient~ <Ps> ] Debut <Lis> Fin <Fonct> FonctionIdf( <Li> ): <Typ> [ ~Soit|Soient~ <Ps> ] Debut <Lis> Fin <Ps>  <S>;{ [~Soit|Soient~] <S>;}* <S>  <Li>[Sep ~<Typ>|~Action|Fonction(<Typ>)~ ~] <Li>  Idf {,Idf}*

  8. Listes linéaires chaînées : Déclarations <Typ>  Types | <Structsimple> | <Structcomplexe> | Machine_car | Machine_nombre | Tableau(<Lc>) [De~<Structsimple> | Types~ ] | <Structsimple>  [Structure ](Types {, Types }*) <Structcomplexe> [Structure ]( ~ Types | Vecteur(Cste)De Types ~ {, ~ Types | Vecteur(Cste) De Types ~ }*)  <Lc>  Cste {, Cste}* [Pointeurvers [Sep] ] Liste [ De ~Types | <Structsimple>~ |

  9. Listes linéaires chaînées : Instructions < Lis >  < Inst > { ; < Inst > }* <Inst>  Idf:= <Exp> | Lire(Idf {, Idf }* ) | Ecrire(<Exp> {,<Exp>}* ) | Tantque <Exp> [ : ] <Lis> Fintantque | Si <Exp> [:] <Lis> [Sinon <Lis>] Fsi | PourIdf:= <Exp>,<Exp> [, <Exp>][:] <Lis> Finpour | AppelIdf [(Exp {,<Exp>}*)] |

  10. Listes linéaires chaînées : Instructions <Inst>  ~ |Init_vecteur|Init_struct|Creer_mnombre~ (Idf,[[ ~<Exp>|[[<Exp> {, <Exp>}*]] ~ {, ~<Exp>|[[<Exp> {, <Exp>}*]]~}* ]] ) | Aff_element( <Exp> [[ <Exp> {, <Exp> }* ] ,<Exp> ) | Aff_struct(Idf, Cste, <Exp>) | Creer_mcar(Idf,[[ Chaine ]]) | ~Lirecar|Lirenombre~ (Idf, Idf) ~Liberer| Allouer~ ( <Exp> ) | ~ Aff_adr|Aff_val~ ( <Exp> , <Exp> ) | Creer_liste

  11. Listes linéaires chaînées : Expressions <Exp>  <Exps>[ Opr <Exps>] <Exps>  [Sign] <Terme> { Opa <Terme> }* <Terme>  <Facteur>{Opm <Facteur>}* <Facteur> Idf [(Exp {,<Exp>}*)] | Cste | ( <Exp>) | <Fonct> | | Non <Facteur> | Vrai | Faux | | Chaine  <Fonct>  Element( <Fonct> [[ <Exp> {, <Exp> }* ]]) | Struct( Idf, Cste) ~Nbrcar|NbrNombre~ (Idf) Nil ~Valeur|Suivant~ ( <Fonct> ) |

  12. Sémantique des listes linéaires : Fonctions sémantiques <Typ> [Pointeurvers [Sep] ] Liste [ De ~Types | <Structsimple>~ Fonctions sémantiques et Descriptions à trouver Fx Description <Typ>

  13. Sémantique des listes linéaires : Fonctions sémantiques <Inst> ~Liberer| Allouer~ ( <Exp> ) Fonctions sémantiques et Descriptions à trouver Fx Description <Inst>

  14. Sémantique des listes linéaires : Fonctions sémantiques <Inst> ~ Aff_adr|Aff_val~ ( <Exp> , <Exp> ) Fonctions sémantiques et Descriptions à trouver Fx Description <Inst>

  15. Sémantique des listes linéaires : Fonctions sémantiques <Inst> ~ Creer_liste(Idf,[[ ~<Exp>|[[<Exp> {, <Exp>}*]] ~ {, ~<Exp>|[[<Exp> {, <Exp>}*]]~}* ]] ) Fonctions sémantiques et Descriptions à trouver Fx Description <Inst>

  16. Sémantique des listes linéaires : Fonctions sémantiques <Facteur> Nil Fonctions sémantiques et Descriptions à trouver Fx Description <Facteur>

  17. Sémantique des listes linéaires : Fonctions sémantiques <Fonction> ~Valeur|Suivant~ ( <Fonct> ) | Fonctions sémantiques et Descriptions à trouver Fx Description <Fonction>

  18. Sémantique des listes linéaires : Exemple1 0 0 soit L1, L2, L3 des listes; debut Allouer(L1); Allouer(L2); Allouer(L3); Aff_val(L1,5); Aff_val(L2,55); Aff_val(L3,555); Aff_adr(L1,L2);Aff_adr(L2,L3); Aff_adr(L3,Nil) fin 1 1 2 2 3 3 4 4 5 5 6 6 7 8 TABOB LONGZDD 3 TABTYP LEW Quadruplés générés TABCONS ‘5’,’55’,’555’,’Nil’ 0 1 2 3

  19. Sémantique des listes linéaires : Exemple2 0 0 Soit L une liste ; P un pointeur vers une liste; debut creer_liste(L, [3,6,43,32] ); P := L; Tq P <> Nil ecrire( Valeur(P)); P := Suivant (P) Ftq fin 1 1 2 2 3 3 4 4 5 5 6 6 7 7 8 8 LONGZDD 5 Quadruplés générés 9 TABTYP LEWB TABOB TABCOMP 0 2,3,4,5 TABCONS ‘3’,’6’,’43’,’32’,’Nil’ 8 1 0 1 2 3 4

  20. Listes linéaires chaînées : Interprétation Implémentation des listes linéaires chaînées  (Description PASCAL) Typeliste = ^Elementliste; Elementliste = RECORD Element : POINTER; Suivant : Typeliste END;

More Related