Techniques :
• DO ... UNTIL .. , END (boucle non définie). La clause DO
contient les étapes à répéter; la clause UNTIL contient le test qui
détermine si les deux clauses doivent être répétées (si faux) ou si le
programme doit être terminé (si vrai).
• Programmes comme arguments. Bien que les programmes soient
généralement nommés et exécutés ensuite en appelant leurs noms,
il speuvent aussi être placés dans la pile et utilisés comme argu-
ments d'autres programmes.
• Evaluation des variables locales. L'argument du programme
à
exé-
cuter de façon répétitive est stocké dans une variable locale. Le
stockage d'un objet dans une variable locale est une technique pra-
tique lorsque vous ne connaissez pas le nombre de copies dont vous
aurez besoin.
MULTI illustre une des différences entre les variables locales et
globales : si une variable globale contient un nom ou un pro-
gramme, le contenu de la variable est évalué lorsque le nom est
évalué. Par contre, s'il s'agit d'une variable locale, le contenu est
simplement rappelé dans tous les cas. Par conséquent, MULTI
utilise le nom local pour placer l'argument programme dans la pile
et exécute ensuite une commande EVAL explicite pour évaluer le
programme.
Programme
Commentaires
Commence le programme.
Crée une variable locale p contenant l'argument
programme .
. : : : :
Commence le programme de définition.
DO
Commence la clause DO.
DU P
Effectue une copie de l'objet.
P E',..'Al
Exécute le programme avec l'objet pour donner une
nouvelle version de ce dernier. (La commande EVAL
est nécessaire pour exécuter le programme car les
variables locales renvoient simplement leurs contenus
dans la pile sans évaluation.)
U
t·~
TIL
Commence la clause UNTIL.
DUP
ROT
:3At'1E
Effectue une copie de la nouvelle version de l'objet.
Place l'ancienne version au niveau 1.
Teste si l'ancienne version et la nouvelle sont
identiques.
254
28 : Exemples de programme