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

Structures de contrôle Pr ZEGOUR DJAMEL EDDINE Ecole Supérieure d’Informatique (ESI)

Présentations similaires


Présentation au sujet: "Structures de contrôle Pr ZEGOUR DJAMEL EDDINE Ecole Supérieure d’Informatique (ESI)"— Transcription de la présentation:

1 Structures de contrôle Pr ZEGOUR DJAMEL EDDINE Ecole Supérieure d’Informatique (ESI) www.zegour.uuuq.com email: d_zegour@esi.dzd_zegour@esi.dz

2 Structures de contrôle : Objectif Il s’agit de traduire les structures TANTQUE, POUR et SI-SINON en opération de bas niveau avec uniquement les branchements conditionnels et inconditionnels

3 Sémantique des structures de contrôle : Quadruplés Quadruplé relatif au branchement conditionnel ‘si exp aller à Et1 sinon aller à Et2 fsi’ B : pointeur dans TABOB vers le résultat de exp C : Et1 (pointeur dans table des quadruplés: TABQUAD) D : Et2 (pointeur dans TABQUAD) Quadruplé relatif au branchement inconditionnel ‘Aller à Et1’ B : Et1 (pointeur dans TABQUAD) C et D non utilisé (‘Br’, B, C, D ) (‘B’, B, C, D )

4 Structures de contrôle : Déclarations Sep dans {:, Un, Une, Des} Cste désigne une constante numérique entière Chaîne : chaîne de caractères Idf désigne un identificateur Opr dans {, >=, =, <> }; Opa dans { +, -, Ou } Opm dans { *, /, Et }; Sign dans {+, -}

5 Structures de contrôle : Déclarations  [ ~Soit|Soient~ ] Debut Fin [;]  ;{ [~Soit|Soient~] ;}*  [Sep ]  Idf {, Idf}*  Entier | Booleen | Chaine | Car

6 Structures de contrôle : Instructions  { ; }*  Idf := | Lire ( Idf {, Idf }* ) | Ecrire ( {, }* ) | Tantque [ : ] Fintantque | Si [:] [Sinon ] Fsi | Pour Idf:=, [, ][:] Finpour

7 Structures de contrôle : Expressions  [ Opr ]  [Sign] { Opa }*  {Opm }*  Idf | Cste | ( ) | Non | Vrai | Faux | Chaine

8 Sémantique de la boucle ‘Tantque’ : Fonctions sémantiques  Tantque [ : ] Fintantque F1F2 F3 Soit Ptquad le pointeur du dernier quadruplé généré. Sauvegarder Ptquad+1 dans Sauv. F1 Soit Temp le résultat de (emplacement dans TABOB). Si son type n’est pas booléen : Erreur. Générer le quadruplet (‘B’, Temp, Ptquad+2, X ). Sauvegarder son pointeur dans Sauv2 F2 Générer le quadruplet (‘Br’, Sauv,, ). Remplacer X par Ptquad + 1 dans le quadruplé Sauv2 F3

9 Sémantique de la boucle ‘Tantque’ : Exemple Soit i,s, n des entiers; debut lire(n); i :=1; s := 0; tq i <= n s := s+i;i := i +1; ftq; ecrire(s) fin ‘0’ ‘1’ TABCONS 0 1 En fin de compilation, programme source = table des quadruplés + TABOB + TABCONS + LONGZDD ‘L’‘E’0 ‘L’‘E’1 ‘L’‘E’2 ‘C’‘E’0 ‘C’‘E’1 ‘X’‘B’3 ‘X’‘E’4 ‘X’‘E’5 0 1 2 TABOB 6 LONGZDD 3 4 (Quadruplés pour le ‘Tantque’) … ‘<=’035 ‘B’5813 ‘+E’106 ‘:=‘16 ‘+E’047 ‘:=‘07 ‘Br’6 … 5 6 7 6 13 TABQUAD 8

10 Sémantique de la boucle ‘Pour’ : Fonctions sémantiques  Pour Idf:=, [, ][:] Finpour F1F2F3 Si Idf n’est pas déclaré : Erreur. Si le type de Idf n’est entier : Erreur. Soit Ptidf son pointeur dans TABOB F1 Soit Temp le résultat de (emplacement dans TABOB). Si son type n’est pas entier : Erreur. Générer le quadruplet (‘:=’, Ptidf, 0, Temp ). F2 Soit Temp2 le résultat de (emplacement dans TABOB). Si son type n’est pas entier : Erreur F3 F4 F6 F5

11 Sémantique de la boucle Pour : Fonctions sémantiques  Pour Idf:=, [, ][:] Finpour F1F2F3 Soit Temp3 le résultat de (emplacement dans TABOB). Si son type n’est pas entier : Erreur. F4 F6 F5

12 Sémantique de la boucle Pour : Fonctions sémantiques  Pour Idf:=, [, ][:] Finpour F1F2F3 Cas où le pas existe : créer constante ‘0’; soit Ptcons son pointeur dans TABOB. Générer un temporaire booléen; soit Tb son pointeur dans TABOB. Générer le quadruplé (‘ =‘, Ptidf1, temp2,, Tb). Génerer le quadruplé (Br, Ptquad+3,,). Générer le quadruplé (‘<=‘, Ptidf1, temp2,, Tb). Générer le quadruplé(‘B’,Tb, Ptquad + 2, X). Sauvegarder son pointeur dans Sauv2. F5 F4 F6 F5

13 Sémantique de la boucle Pour : Fonctions sémantiques  Pour Idf:=, [, ][:] Finpour F1F2F3 F4 F6 F5 Cas où le pas existe : Générer le quadruplé (‘+E‘, ptidf1, temp3, Ptidf). Générer le quadruplé(‘Br’, Sauv,,). Remplacer X par Ptquad + 1 dans le quadruplé Sauv2. F6

14 Sémantique de la boucle Pour : Exemple Soit i, s des entiers; debut s := 0; pour i := 1, 12, 3 s := s + i fpour; ecrire(s); fin ‘0’ ‘1’ ’12’ ‘3’ TABCONS 0 1 En fin de compilation, programme source = table des quadruplés + TABOB + TABCONS + LONGZDD ‘L’‘E’0 ‘L’‘E’1 ‘C’‘E’0 ‘C’‘E’1 ‘C’‘E’2 ‘C’‘E’3 ‘X’‘B’2 ‘X’‘B’3 ‘X’‘E’4 0 1 2 TABOB 5 LONGZDD 3 4 Quadruplés pour le ‘Pour’ … ‘:=’03 ‘<’526 ‘B’668 ‘>=‘047 ‘Br’8 ‘<=‘047 ‘B’71014 ‘+E’108 ‘:=‘18 ‘+E’050 ‘Br’3 … 5 6 7 2 3 13 3 8 4 5 6 7 8 9 10 11 12

15 Sémantique de la conditionnelle ‘Si-Sinon’ : Fonctions sémantiques  Si [:] [Sinon ] Fsi F1 F2F3 Soit Temp le résultat de (emplacement dans TABOB). Si son type n’est pas booléen : Erreur.Générer le quadruplé (‘B’, Temp, Ptquad+2, X). Sauvegarder son pointeur dans Sauv F1 Générer le quadruplé (‘Br’, Y,,). Sauvegarder son pointeur dans Sauv2. Remplacer X par Ptquad + 1 dans le quadruplé Sauv. F2 Cas ou la partie ‘sinon’ existe : Remplacer Y par Ptquad + 1 dans le quadruplé Sauv2. Cas ou la partie ‘sinon’ n’existe pas : Remplacer X par Ptquad + 1 dans le quadruplé Sauv. F3

16 Sémantique de la conditionnelle ‘Si-Alors- Sinon’ : Exemple Soit a un entier; debut lire(a); si a = 0 : ecrire('nul') sinon si a >0 ecrire('positif') sinon ecrire('négatif') fsi fin ‘0’ ‘nul’ ’positif’ ‘négatif’ TABCONS 0 1 En fin de compilation, programme source = table des quadruplés + TABOB + TABCONS + LONGZDD ‘L’‘E’0 ‘C’‘E’0 ‘X’‘B’1 ‘C’‘S’1 ‘X’‘B’2 ‘C’‘S’2 ‘C’ 3 0 1 2 TABOB 3 LONGZDD 3 4 Quadruplés pour le ‘Si’ … ‘=’012 ‘B’246 ‘Ecr’11 ‘Br‘11 ‘>’014 ‘B‘4810 ‘Ecr’21 ‘Br’11 ‘Ecr‘31 … 5 6 2 3 2 3 4 5 6 7 8 9 10 0 3 4 5 TABCOMP


Télécharger ppt "Structures de contrôle Pr ZEGOUR DJAMEL EDDINE Ecole Supérieure d’Informatique (ESI)"

Présentations similaires


Annonces Google