exemples MVAP calcul avec a et b

This commit is contained in:
2025-10-13 10:35:58 +02:00
parent 52fbbfdce6
commit 057b45f079
2 changed files with 109 additions and 0 deletions

View File

@@ -0,0 +1,61 @@
#
# Calcul de l'expression E = [(a+b)*(a-b)]+[(b+1)*(b-1)]
# On commence par gérer les variables a et b et demander
# des valeurs à l'utilisateur (avec READ) pour les affecter (avec STOREG).
# Ensuite on utilise la valeur des variables dans le calcul (avec PUSHG)
# L'ordre dans lequel on écrit le code MVàP pour calculer l'expression E
# dépent de l'arbre syntaxique de cette expression.
# Dans le code ci-dessous les commentaires indiquent cet ordre
#
# +(1)
# *(2) *(3)
# +(4) -(5) +(6) -(7)
# Var a Var b Var a Var b Var b Cons 1 Var b Cons 1
#
# Les feuilles sont de type Variable ou constantes.
# Les noeuds internes sont des opérations.
# On navigue dans l'arbre vers le bas, d'abord à gauche, puis on remonte,
# on va explorer le fils droit, puis on remonte et on écrit le code du
# noeud interne.
#
# gestion des variables a et b
PUSHI 0 # a (habite à l'adresse 0)
PUSHI 0 # b (habite à l'adresse 1)
# demander à l'utilisateur les valeurs de a et b
READ
STOREG 0
READ
STOREG 1
# gestion du calcul de l'expression.
PUSHG 0 # met la valeur de a sur la pile (adresse 0)
PUSHG 1 # idem pour b (adresse 1)
ADD # +(4) de mon dessin de l'arbre
PUSHG 0 # met la valeur de a sur la pile
PUSHG 1 # idem pour b
SUB # -(5) de mon dessin de l'arbre
MUL # *(2) de mon dessin de l'arbre
PUSHG 1 # met la valeur de b sur la pile
PUSHI 1 # la constante 1
ADD # +(6) de mon dessin de l'arbre
PUSHG 1 # met la valeur de b sur la pile
PUSHI 1 # la constante 1
SUB # -(7) de mon dessin de l'arbre
MUL # *(3) de mon dessin de l'arbre
ADD # Ajout des deux sous-arbres [(a+b)*(a-b)] et [(b+1)*(b-1)]
# +(1) de mon dessin de l'arbre
WRITE # écrire le résultat de (a+b)*(a-b)
POP # effacer le résultat du calcul
### suppression des variables
POP
POP
HALT

View File

@@ -0,0 +1,48 @@
# Calcul de l'expression E = [(a+b)*(a-b)]+[(b+1)*(b-1)]
#
# On simplifie d'abord l'expression.
#
# The dreaded 'identités remarquables'...
# (a+b)*(a-b) = a^2 - b^2
# (b-1)*(b+1) = b^2 - 1^2 = b^2 - 1
# En caculant on obtient au final pour E l'expression simplifiée suivante
# a^2 - 1
#
#
# Arbre syntaxique de l'expression simplifiée.
#
# -(1)
# *(2) Cons 1 (5)
# Var a(3) Var a (4)
# gestion des variables a et b
PUSHI 0 # a (habite à l'adresse 0)
# PUSHI 0 # b est inutile maintenant
# demander à l'utilisateur les valeurs de a et pas de b qui ne sert à rien
READ
STOREG 0
# READ
# STOREG 1
# gestion du calcul de l'expression.
PUSHG 0 # (3)
PUSHG 0 # (4)
MUL # (2)
PUSHI 1 # (5)
SUB # (1)
# écrire le résultat et enlever le résultat de la pile
WRITE
POP
### suppression des variables
POP
HALT