quelques corrections
This commit is contained in:
parent
4972b310a2
commit
c99a859fd9
28
1-ComputationAndData/3correctionfinEnbab.txt
Normal file
28
1-ComputationAndData/3correctionfinEnbab.txt
Normal file
@ -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
|
||||
|
||||
|
143
1-ComputationAndData/5correctionExoMVAP.txt
Normal file
143
1-ComputationAndData/5correctionExoMVAP.txt
Normal file
@ -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
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user