Ceci est une ancienne révision du document !


Comment écrire en pseudocode?

Il n'y a pas de consensus sur la bonne façon de mettre en forme du pseudocode. Par conséquent, il existe de nombreuses extensions LaTeX pour composer des pseudocodes de façon lisible et jolie.

Le pseudocode diffère des listings de programmes réels en ce qu'il n'a pas de syntaxe et de sémantique strictes. De plus, comme le pseudocode est censé exprimer un algorithme de manière claire, il peut avoir besoin d'incorporer des notations mathématiques, des figures, des tableaux et d'autres éléments LaTeX qui n'apparaissent normalement pas dans les langages de programmation conventionnels. La mise en forme des programmes est décrite ailleurs.

Vous pourriez certainement créer votre propre environnement de composition de pseudocode en utilisant, par exemple, les environnements tabbing (décrits ici) ou list (décrits ici) — ce ne serait pas très difficile pour commencer, mais vous arriverez vite à un niveau de complexité rédhibitoire. Cela vaut donc la peine d'essayer les extensions suivantes, toutes conçues spécifiquement pour la mise en forme de pseudocodes.

Avec les extensions de “algorithms”

Le package algorithms (qui contient les extensions algorithm et algorithmic, toutes deux nécessaires pour une utilisation normale) a une interface simple et produit des résultats plutôt jolis. Il fournit des primitives pour les déclarations, qui peuvent contenir des commandes LaTeX arbitraires, des commentaires, et diverses structures itératives et conditionnelles. Ces primitives peuvent facilement être redéfinies pour produire une sortie différente. Cependant, il n'y a pas de support pour ajouter de nouvelles primitives. La mise en forme du pseudocode lui-même est effectuée par l'extension algorithmic ; l'extension algorithms utilise, elle, les fonctionnalités de l'extension float pour numéroter les algorithmes de manière séquentielle, permettre aux algorithmes de flotter comme des figures ou des tableaux, et produire « Liste des algorithmes » en début de document.

Avec les extensions de “algorithmicx”

Les extensions fournies par le package algorithmicx sont similaires à algorithmic, tant par leurs principes de base que par leur résultat final, mais elles permettent d'ajouter de nouveaux mots-clefs et de modifier la mise en forme. Il y a notamment l'extension algpseudocode qui est (presque) un remplacement direct d'algorithmic. Une autre extension du package, algpascal, utilise des mots-clefs de type Pascal, indente le code différemment de algpseudocode et formatte les arguments des commandes en mode mathématique plutôt qu'en mode texte. Il n'y a pas d'environnement flottant mais algorithmicx, comme algorithmic, est compatible avec algorithm

Apparemment, il y a des problèmes pour définir de nouvelles commandes, mais l'extension n'est plus activement maintenue.

Faites quelques tests avant de vous appuyer sur algorithmicx pour un gros projet.

Avec l'extension “alg”

L'extension alg offre, comme algorithms, un environnement d'algorithmes flottants avec toutes les subtilités qui en découlent. Cependant, alg peut légender ses flottants dans diverses langues, dont le français. En outre, alg, contrairement à l'extension algorithms, permet d'ajouter facilement de nouvelles structures.

Extensions développées pour des ouvrages: “newalg”, “clrscode[3e]” & “pseudocode”

The newalg package has a somewhat similar interface to algorithms, but its output is designed to mimic the rather pleasant typesetting used in the book “Introduction to Algorithms” by Corman, Leiserson, Rivest and Stein. Unfortunately, newalg does not support a floating environment or any customisation of the output.

Bona fide use of the style of “Introduction to Algorithms” may be achieved with Cormen's own clrscode3e: this is the package as used in the third edition of the book (while clrscode was used for the second edition).

Similarly, the style of “Combinatorial Algorithms: Generation, Enumeration and Search” is supported by the pseudocode package, written by the authors of the book. It has the common “Pascal-like” style, and has some interesting constructs for what one thinks of as Pascal blocks.

Avec l'extension “algorithm2e”

The algorithm2e package is of very long standing, and is widely used and recommended. It loads the float package to provide the option of floating algorithm descriptions, but you can always use the H option of float to have the algorithm appear “where you write it”.

Avec l'extension “program”

The usage of the program package is a little different from that of the other packages. It typesets programs in maths mode instead of text mode; and linebreaks are significant. program lacks a floating environment but does number algorithms like alg and algorithms. Customisation and extension are not supported. Documentation of the program package (such as it is) appears in a file program.msg in the distribution.

Aucune de ces solutions n'est parfaite. Pour choisir entre elles, demandez-vous:
  • quel style de sortie préférez-vous?
  • dans quelle mesure avez-vous besoin d'étendre ou de modifier l'ensemble des mots-clefs prédéfinis?
  • avez-vous besoin que les algorithmes flottent comme des figures ou des tableaux?

Sources:

4_domaines_specialises/informatique/ecrire_du_pseudocode.1634120176.txt.gz · Dernière modification : 2021/10/20 19:35 (modification externe)
CC Attribution-Share Alike 4.0 International
Driven by DokuWiki Recent changes RSS feed Valid CSS Valid XHTML 1.0