Cet article est une réponse à l’appel à contributions n° 1
Il existe des paquets LaTeX pour écrire en « pseudocode » mais ils sont en anglais. En voici un traduit en français, avec quelques exemples
Pour rajouter à LaTeX des extensions, on installe un « paquet », alias « feuille de style », possédant l’extension « sty ». Celui-ci s’appelle « algorithmique.sty » et il est à placer dans un dossier où se trouvent déjà beaucoup de fichiers ayant cette extension.
Le fichier zip téléchargeable en bas de page contient les fichiers suivants :
- le paquet algorithmique.sty qui est l’extension LaTeX proprement dite. Il est distribué selon les termes de la LaTeX Public Project License dont le texte est lisible ici.
- un fichier d’exemple utilisant ce paquet, au format LaTeX bien sûr, et contenant le mode d’emploi du paquet.
- la version compilée du fichier précédent, au format pdf, comprenant la liste des instructions du paquet algorithmique, et dont quelques extraits et compléments figurent ci-dessous.
utilisation
Pour utiliser le paquet « algorithmique », il faut dire à LaTeX qu’on utilise le paquet « algorithmique » (si, si !), ce qui s’écrit dans le préambule
\usepackage{algorithmique}
Ensuite, pour écrire un algorithme (dans le document, entre « begin(document) » et « end(document »), par exemple dans le sujet de contrôle...), on place un
\begin{pseudocode}
avant d’écrire l’algorithme, puis, dès qu’on a fini, et qu’on veut à nouveau taper du texte « normal »,
\end{pseudocode}
Cependant, au début, il faut entrer une option (entre crochet) et le nom de l’algorithme ainsi que ses variables. L’option est égale à une des valeurs suivantes :
- shadowbox
- doublebox
- ovalbox
- Ovalbox
- framebox
- plain
- ruled
et si on ne veut pas que l’algorithme soit numéroté et nommé, on met « display » comme option.
affectation
L’affectation est représentée par le mot-clé « PREND » précédé d’un « backslash » (puisque c’est un mot-clé et que c’est ainsi que les mots-clés sont notés en LaTeX). Exemple, avec un programme de calcul :
\begin{pseudocode}[ovalbox]{mystère}{a,b,c}
a \PREND a+b\\
c \PREND a+\sqrt{b}\\
b \PREND a-b
\end{pseudocode}\\
L’effet produit est le suivant :
Bien entendu, on peut initialiser les variables par des choses comme
a \PREND 2
Il est également possible d’insérer des commentaires (comme « quelles sont les valeurs finales de a, b et c ? » ou « que calcule cet algorithme ? ») par
\COMMENT{Ceci n'est pas un commentaire (Magritte)}
On peut aussi préciser le type des variables avec des choses comme
\ENT n,p\\
Les types sont codés par
type | codage |
booléen | BOOL |
entier | ENT |
réel | REEL |
texte | CHAINE |
fonctions et tests
Du point de vue de l’algorithmique, une fonction est une procédure admettant une (ou plusieurs) valeur en entrée (l’antécédent) et retournant une valeur (l’image).
Par exemple, la fonction « valeur absolue » peut s’écrire algorithmiquement par
\begin{pseudocode}[ovalbox]{valeur absolue}{x}
\REEL y\\
\SI x \geqslant 0 \\
y \PREND x
\SINON\\
y \PREND -x\\
\RETOURNE{y}
\end{pseudocode}\\
La compilation donne ceci :
Cet exemple montre aussi comment on écrit des tests (avec les formules écrites en LaTeX).
boucles
Boucles à nombre prédéfini d’exécutions
Le calcul de la moyenne de 100 nombres pseudo-aléatoires (tous compris entre 0 et 1 peut s’écrire (en admettant qu’on a déjà une instruction « alea() » qui donne les nombres aléatoires) :
\begin{pseudocode}[shadowbox]{Moyenne}{ }
\COMMENT{Calcul de la moyenne de 100 nombres aléatoires}\\
\ENT i\\
\REEL r,s\\
s \PREND 0\\
\POUR i \PREND 1 \JUSQUE 100 \FAIRE \\
\DEBUT
r \PREND alea()\\
s \PREND s+r\\
\FIN \\
s \PREND \dfrac{s}{100}\\
\RETURN{s}
\end{pseudocode}
La compilation produit ceci (on remarque le cadre ombré obtenu avec « shadowbox ») :
On peut imbriquer des boucles à l’intérieur d’autres boucles, au risque toutefois de quitter le programme de Seconde...
Boucles à condition de sortie
Voici le neuvième exercice du Rallye Mathématique 2010 de la Réunion (à comparer avec l’original, lui aussi tapé en LaTeX, en terme de mise en page) :
\begin{pseudocode}[shadowbox]{Exercice 9}{ }
\COMMENT{Algorithme, que fais-tu?}\\
\ENTRER A\\
\ENTRER B\\
\TANTQUE A \neq B \\
\DEBUT
\SI A>B \\
A \PREND A-B
\SINON \\
B \PREND B-A\\
\FIN \\
\AFF{A}
\end{pseudocode}\\
Une fois compilé, on obtient ceci (à comparer donc avec l’original) :
Pour voir d’autres instructions (hors programme), consulter le pdf ci-joint.
Dans le même numéro
par Fabrice Huin
par Sébastien Hache
par Clément BERT-ERBOUL
par Christian Buso
par Gilles Damamme