Retour

defproc.tex

Télécharger le fichier
Pour définir une prodédure, il suffit d'associer un littéral à un
exécutable. Par exemple, la définition d'un point par le code |/A {1
2} def| définit une procédure nommée $A$, procédure dont l'action est
de déposer les nombres $1$ et $2$ sur la pile d'opérandes.
 
Une procédure peut être tout simplement constituée d'une liste de
commandes. Par exemple, la définition de la commande
|tracerepere| est 
$$
\vbox {\hsize = 80mm 
\begintt
/tracerepere {
   traceaxes
   unites
   axesarrow
   ticks
   subticks
} def
\endtt
}
$$
 
Dans une procédure, on peut utiliser des variables, qui resteront
locales pour peu que l'on prenne la peine d'utiliser un
dictionnaire. Par exemple, la procédure |addc| (addition de deux
nombres complexes) est définie comme suit~:
$$
\vbox {\hsize = 80mm 
\begintt
%% syntaxe : a b a' b' addc --> z + z'
/addc {
4 dict begin
   /b' exch def
   /a' exch def
   /b exch def
   /a exch def
   a a' add
   b b' add
end
} def
\endtt
}
$$
 
On commence par ouvrir un dictionnaire pour les 4~variables $a$, $b$,
$a'$ et $b'$, on récupère les données sur la pile pour les affecter à
ces variables, puis on effectue les calculs et on dépose les résultats
sur la pile. Pour finir, on jette le dictionnaire (par |end|), ce qui
a pour effet de nettoyer la mémoire de ces quatres variables. Si une
de ces variables était définie avant l'ouverture du dictionnaire, elle
retrouve son existence et sa valeur à la fermeture dusdit
dictionnaire.
 
Pour des procédures plus élaborées, l'interpréteur postscript fournit
toutes les structures de controle classiques, dont voici un bref
résumé, extrait du manuel de référence postscript~:
 
\syntaxe
\longref 
   {$any$}
   {exec}
   {$-$}
   {exécute un objet arbitraire}
 
\longref 
   {$bool$ $proc$}
   {if}
   {$-$}
   {exécute $proc$ si $bool$ est $true$}
 
\longref 
   {$bool$ $proc_1$ $proc_2$}
   {ifelse}
   {$-$}
   {exécute $proc_1$ si $bool$ est $true$, $proc_2$ si $bool$ est
   $false$}
 
\longref 
   {$int$ $proc$}
   {repeat}
   {$-$}
   {exécute $proc$ $int$ fois}
 
\longref 
   {$proc$}
   {loop}
   {$-$}
   {exécute $proc$ un nombre indéfini de fois}
 
\endsyntaxe
 
Voir les annexes pour un listing complet des opérateurs postscript
disponibles.