From c99a859fd9144b3490556730bdd517f083acd9a2 Mon Sep 17 00:00:00 2001 From: Florent Madelaine Date: Mon, 4 Nov 2024 12:47:05 +0100 Subject: [PATCH] quelques corrections --- 1-ComputationAndData/3correctionfinEnbab.txt | 28 ++++ 1-ComputationAndData/5correctionExoMVAP.txt | 143 +++++++++++++++++++ 2 files changed, 171 insertions(+) create mode 100644 1-ComputationAndData/3correctionfinEnbab.txt create mode 100644 1-ComputationAndData/5correctionExoMVAP.txt diff --git a/1-ComputationAndData/3correctionfinEnbab.txt b/1-ComputationAndData/3correctionfinEnbab.txt new file mode 100644 index 0000000..9dbfeaa --- /dev/null +++ b/1-ComputationAndData/3correctionfinEnbab.txt @@ -0,0 +1,28 @@ + | a | b | spécial? +=================================== +epsilon | a | b | initial +a | aa | ab | +b | ba | bb | +aa | aaa | aab | +ab | aba | abb | +ba | baa | bab | +bb | bba | bbb | +aaa | aaa | aab | +aab | aba | abb | +aba | baa | bab | +abb | bba | bbb | +baa | aaa | aab | +bab | aba | abb | acceptant +bba | baa | bab | +bbb | bba | bbb | + +Version optimisée avec moins d'états. + + | a | b | spécial? +=================================== +epsilon | epsilon | b | initial +b | ba | b | +ba | epsilon | bab | +bab | ba | b | acceptant + + diff --git a/1-ComputationAndData/5correctionExoMVAP.txt b/1-ComputationAndData/5correctionExoMVAP.txt new file mode 100644 index 0000000..5c4d5b4 --- /dev/null +++ b/1-ComputationAndData/5correctionExoMVAP.txt @@ -0,0 +1,143 @@ + +Code en pseudo python à traduire en MVàP +j = 1 +i = 0 +i = j +while i < 10: + i += 1 +print(i) + + +Pour le début (affectation des variables) +j = 1 +i = 0 +i = j + +PUSHI 1 # j adresse 0 +PUSHI 0 # i adresse 1 +PUSHG 0 # récupère j +STOREG 1 # affecte à i + +Pour la structure de la boucle While, il suffit de recopier l'exemple du cours. + +LABEL 0 +# le test qui va laisser une valeur 0 ou 1 en haut de la pile +JUMPF 1 # saut conditionnel vers le label 1 si le test est Faux sinon continue +# quelque chose +JUMP 0 +LABEL 1 +#La suite + +Il faut qu'on traduise les 3 morceaux de code : +test, +corps de la boucle, +la suite. + +Le test. +i < 10 + +PUSHG 1 # valeur de i +PUSHI 10 +INF + +Le corps de la boucle. +i += 1 # même chose que i = i+1 + +PUSHG adresse de i +PUSHI 1 +ADD +STOREG adresse de i + +Comme i habite à l'adresse 1 ça donne ce code. + +PUSHG 1 +PUSHI 1 +ADD +STOREG 1 + +la suite. +print(i) + +en pratique on récupère i, on utilise WRITE, on fait POP pour nettoyer la pile. + +PUSHG 1 # adresse de i vaut 1 +WRITE +POP + +Solution complète. + + +PUSHI 1 # j adresse 0 +PUSHI 0 # i adresse 1 +PUSHG 0 # récupère j +STOREG 1 # affecte à i + +LABEL 0 +# test +PUSHG 1 +PUSHI 10 +INF +JUMPF 1 +#corps boucle +PUSHG 1 +PUSHI 1 +ADD +STOREG 1 +JUMP 0 +LABEL 1 +#La suite +PUSHG 1 +WRITE +POP +# Effacer les variables +POP +POP +HALT + + + +### Autre exercice donné au tableau + +Expression avec deux variables x et y qu'on demande à l'utilisateur + +PUSHI 0 # x adresse 0 +PUSHI 0 # y adresse 1 +# demande user val x +# READ +PUSHI 10 +STOREG 0 +# demande user val y +# READ +PUSHI 3 +STOREG 1 +# calcul de +# (x+3)*y+4*x +# Parenthesage egal arbre de syntaxe comme au tableau +# de base en haut et de gauche à droite on écrit le code MVàP +# x+3 +PUSHG 0 +PUSHI 3 +ADD +PUSHG 1 +MUL +PUSHI 4 +PUSHG 0 +MUL +ADD +WRITE +POP +# effacer var x et y +POP +POP +HALT + + + + + + + + + + +