La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

Listes linéaires chaînées Pr ZEGOUR DJAMEL EDDINE Ecole Supérieure d’Informatique (ESI)

Présentations similaires


Présentation au sujet: "Listes linéaires chaînées Pr ZEGOUR DJAMEL EDDINE Ecole Supérieure d’Informatique (ESI)"— Transcription de la présentation:

1 Listes linéaires chaînées Pr ZEGOUR DJAMEL EDDINE Ecole Supérieure d’Informatique (ESI) www.zegour.uuuq.com email: d_zegour@esi.dzd_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 )

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  [ ~Soit|Soient~ ] Debut Fin [;] { ~ | ~ [;] }*  Action Idf [ ( ) ] [;] [ ~Soit|Soient~ ] Debut Fin  Fonction Idf ( ) : [ ~Soit|Soient~ ] Debut Fin  ;{ [~Soit|Soient~] ;}*  [Sep ~ |~Action|Fonction( )~ ~]  Idf {, Idf}*

8 Listes linéaires chaînées : Déclarations  Types | | | Machine_car | Machine_nombre | Tableau ( ) [De~ | Types~ ] |  [Structure ](Types {, Types }*)  [Structure ]( ~ Types | Vecteur(Cste) De Types ~ {, ~ Types | Vecteur(Cste) De Types ~ }*)  Cste {, Cste}* [Pointeur vers [Sep] ] Liste [ De ~Types | ~ |

9 Listes linéaires chaînées : Instructions  { ; }*  Idf := | Lire ( Idf {, Idf }* ) | Ecrire ( {, }* ) | Tantque [ : ] Fintantque | Si [:] [Sinon ] Fsi | Pour Idf:=, [, ][:] Finpour | Appel Idf [(Exp {, }*)] |

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

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

12 Sémantique des listes linéaires : Fonctions sémantiques  [Pointeur vers [Sep] ] Liste [ De ~Types | ~ Description Fx Fonctions sémantiques et Descriptions à trouver

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

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

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

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

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

18 Sémantique des listes linéaires : Exemple1 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 ‘L’120 121 122 ‘C’210 211 212 313 0 1 2 TABOB 3 LONGZDD 3 Quadruplés générés ‘Alloue’0 1 2 ‘Aff_v’03 04 05 ‘Aff_a’01 12 26 1 2 3 TABTYP LEW 0 ‘5’,’55’,’555’,’Nil’ TABCONS 0 1 2 3 4 5 6 4 5 6 7 8

19 Sémantique des listes linéaires : Exemple2 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 ‘L’120 121 ‘C’210 211 212 213 314 ‘X’412 ‘Y’213 124 0 1 2 TABOB 5 LONGZDD 3 Quadruplés générés ‘Creer’004 ‘Aff’10 ‘<>’167 ‘B’749 ‘Valeu’18 ‘Ecrir’11 ‘Suiva’19 ‘Aff’19 ‘Br’2 1 2 3 TABTYP LEWB 0 ‘3’,’6’,’43’,’32’,’Nil’ TABCONS 0 1 2 3 4 4 5 6 4 5 6 7 8 7 8 9 TABCOMP 2,3,4,5 8 1 0

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;


Télécharger ppt "Listes linéaires chaînées Pr ZEGOUR DJAMEL EDDINE Ecole Supérieure d’Informatique (ESI)"

Présentations similaires


Annonces Google