Mathématice, intégration des Tice dans l'enseignement des mathématiques  
Sommaire > N°21 - Septembre 2010 > Un paquet LaTeX pour l’algorithmique

Un paquet LaTeX pour l’algorithmique
Moteur de recherche
Mis en ligne le 2 août 2010, par Alain Busser

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.

Alternative

Guillaume Connan, dans son livre sur l’algorithmique utilise un autre paquet LaTeX pour écrire ses algorithmes en pseudocode : Il s’agit de algorithm2e. Au premier regard, on voit les différences suivantes entre ce paquet et celui présenté ici :

  1. Alors que le présent paquet a été traduit de l’Anglais, algorithm2e possède un mode français, qu’on invoque par \usepackage[french]$\{algorithm2e\}$
  2. Le paquet algorithm2e peut s’utiliser en mode "flottant", ce qui permet de placer des algorithmes n’importe où dans la page, par exemple à droite du texte ;
  3. Les boucles sont représentées par des crochets dans algorithm2e (et non des accolades comme ici) et le mot "sinon" apparaît sur le trait qu’il interrompt, ce qui selon moi est plus lisible (opinion personnelle ceci dit).

Par contre les deux paquets sont actuellement "maintenus".

Pourquoi pas alors essayer les deux pour se faire une opinion ?


Documents associés à l'article
  le paquet tout zippé   |   (Zip - 61.6 ko)
Réagir à cet article
Vous souhaitez compléter cet article pour un numéro futur, réagir à son contenu, demander des précisions à l'auteur ou au comité de rédaction...
À lire aussi ici
MathémaTICE est un projet
en collaboration avec
Suivre la vie du site Flux RSS 2.0  |  Espace de rédaction  |  Nous contacter  |  Site réalisé avec: SPIP  |  N° ISSN 2109-9197