Pseudocode - Pseudocode

En informatique , le pseudocode est une description en langage clair des étapes d'un algorithme ou d'un autre système. Le pseudocode utilise souvent les conventions structurelles d'un langage de programmation normal , mais est destiné à la lecture humaine plutôt qu'à la lecture machine. Il omet généralement des détails essentiels à la compréhension de l'algorithme par la machine, tels que les déclarations de variables et le code spécifique au langage. Le langage de programmation est complété par des détails de description en langage naturel , le cas échéant, ou par une notation mathématique compacte . Le but de l'utilisation du pseudocode est qu'il est plus facile à comprendre pour les gens que le code de langage de programmation conventionnel, et qu'il s'agit d'une description efficace et indépendante de l'environnement des principes clés d'un algorithme. Il est couramment utilisé dans les manuels et les publications scientifiques pour documenter les algorithmes et dans la planification de logiciels et d'autres algorithmes.

Il n'existe pas de norme générale pour la syntaxe du pseudocode , car un programme en pseudocode n'est pas un programme exécutable, cependant certaines normes limitées existent (comme pour l'évaluation académique). Le pseudocode ressemble à des programmes squelettes , qui peuvent être compilés sans erreur. Les organigrammes , les drakon-charts et les graphiques UML ( Unified Modeling Language ) peuvent être considérés comme une alternative graphique au pseudocode, mais nécessitent plus d'espace sur le papier. Des langages tels que HAGGIS comblent le fossé entre le pseudocode et le code écrit dans les langages de programmation.

Application

Les manuels et publications scientifiques liés à l' informatique et au calcul numérique utilisent souvent du pseudocode dans la description des algorithmes, afin que tous les programmeurs puissent les comprendre, même s'ils ne connaissent pas tous les mêmes langages de programmation. Les manuels sont généralement accompagnés d'une introduction expliquant les conventions particulières utilisées. Le niveau de détail du pseudocode peut dans certains cas approcher celui des langages généralistes formalisés.

Un programmeur qui doit implémenter un algorithme spécifique, en particulier un algorithme inconnu, commencera souvent par une description de pseudocode, puis "traduira" cette description dans le langage de programmation cible et la modifiera pour interagir correctement avec le reste du programme. Les programmeurs peuvent également démarrer un projet en esquissant le code en pseudocode sur papier avant de l'écrire dans son langage réel, comme une approche de structuration descendante , avec un processus d'étapes à suivre comme un raffinement.

Syntaxe

Le pseudocode n'obéit généralement pas aux règles de syntaxe d'un langage particulier ; il n'y a pas de formulaire standard systématique. Certains auteurs empruntent le style et la syntaxe aux structures de contrôle de certains langages de programmation conventionnels, bien que cela soit déconseillé. Certaines sources de syntaxe incluent Fortran , Pascal , BASIC , C , C++ , Java , Lisp et ALGOL . Les déclarations de variables sont généralement omises. Les appels de fonction et les blocs de code, tels que le code contenu dans une boucle, sont souvent remplacés par une phrase en langage naturel d'une ligne.

Selon l'auteur, le pseudocode peut donc varier considérablement dans le style, d'une imitation presque exacte d'un vrai langage de programmation à un extrême, à une description approchant la prose formatée à l'autre.

Voici un exemple de pseudocode (pour le jeu mathématique fizz buzz ):

Pseudo-code de style Fortran :

program fizzbuzz
  Do i = 1 to 100 
    set print_number to true
    If i is divisible by 3
      print "Fizz"
      set print_number to false
    If i is divisible by 5
      print "Buzz" 
      set print_number to false
    If print_number, print i
    print a newline
  end do

Pseudo-code de style Pascal :

procedure fizzbuzz
  For i := 1 to 100 do
    set print_number to true;
    If i is divisible by 3 then
      print "Fizz";
      set print_number to false;
    If i is divisible by 5 then
      print "Buzz";
      set print_number to false;
    If print_number, print i;
    print a newline;
  end

Pseudo-code de style C :

void function fizzbuzz {
  for (i = 1; i <= 100; i++) {
    set print_number to true;
    If i is divisible by 3 {
      print "Fizz";
      set print_number to false; }
    If i is divisible by 5 {
      print "Buzz";
      set print_number to false; }
    If print_number, print i;
    print a newline;
  }
}

Pseudo-code de style Basic structuré :

Sub fizzbuzz()
  For i = 1 to 100
    print_number = True
    If i is divisible by 3 Then
      Print "Fizz"
      print_number = False
    End If
    If i is divisible by 5 Then
      Print "Buzz"
      print_number = False
    End If
    If print_number = True Then print i
    Print a newline
  Next i
End Sub

Pseudo-code de style mathématique

Dans le calcul numérique , le pseudocode consiste souvent en une notation mathématique , généralement issue de la théorie des ensembles et des matrices , mélangée aux structures de contrôle d'un langage de programmation conventionnel, et peut-être aussi à des descriptions en langage naturel . Il s'agit d'une notation compacte et souvent informelle qui peut être comprise par un large éventail de personnes formées en mathématiques et qui est fréquemment utilisée comme moyen de décrire des algorithmes mathématiques . Par exemple, l'opérateur somme ( notation sigma majuscule ) ou l'opérateur produit ( notation pi majuscule ) peut représenter une boucle for et une structure de sélection dans une expression :

Return 

Normalement, la composition non ASCII est utilisée pour les équations mathématiques, par exemple au moyen de langages de balisage, tels que TeX ou MathML , ou d' éditeurs de formules propriétaires .

Le pseudocode de style mathématique est parfois appelé code pidgin , par exemple pidgin ALGOL (l'origine du concept), pidgin Fortran , pidgin BASIC , pidgin Pascal , pidgin C et pidgin Lisp .

Symboles mathématiques courants

Type d'opération symbole Exemple
Mission ou := c ← 2πr, c := 2πr
Comparaison =, , <, >, ,
Arithmétique +, −, ×, /, mod
Sol/plafond , , , ⌉ a ← ⌊b⌋ + ⌈c
Logique et , ou
Sommes, produits Π h ← ΣaA 1/a

Exemple

Voici un exemple plus long de pseudocode de style mathématique, pour l' algorithme de Ford-Fulkerson :

algorithm ford-fulkerson is
    input: Graph G with flow capacity c, 
           source node s, 
           sink node t
    output: Flow f such that f is maximal from s to t

    (Note that f(u,v) is the flow from node u to node v, and c(u,v) is the flow capacity from node u to node v)

    for each edge (u, v) in GE do
        f(u, v) ← 0
        f(v, u) ← 0

    while there exists a path p from s to t in the residual network Gf do
        let cf be the flow capacity of the residual network Gf
        cf(p) ← min{cf(u, v) | (u, v) in p}
        for each edge (u, v) in p do
            f(u, v)f(u, v) + cf(p)
            f(v, u) ← −f(u, v)

    return f

Compilation machine de langages de style pseudocode

Grammaire du langage naturel dans les langages de programmation

Diverses tentatives pour introduire des éléments de grammaire du langage naturel dans la programmation informatique ont produit des langages de programmation tels que HyperTalk , Lingo , AppleScript , SQL , Inform et, dans une certaine mesure, Python . Dans ces langues, les parenthèses et autres caractères spéciaux sont remplacés par des prépositions, ce qui donne un code assez bavard. Ces langages sont généralement typés dynamiquement , ce qui signifie que les déclarations de variables et autres codes passe-partout peuvent être omis. De telles langues peuvent permettre à une personne ne connaissant pas la langue de comprendre plus facilement le code et peut-être aussi d'apprendre la langue. Cependant, la similitude avec le langage naturel est généralement plus cosmétique qu'authentique. Les règles de syntaxe peuvent être tout aussi strictes et formelles que dans la programmation conventionnelle, et ne facilitent pas nécessairement le développement des programmes.

Langages de programmation mathématiques

Une alternative à l'utilisation de pseudocode mathématique (impliquant une notation de théorie des ensembles ou des opérations matricielles) pour la documentation des algorithmes consiste à utiliser un langage de programmation mathématique formel qui est un mélange de notation mathématique non ASCII et de structures de contrôle de programme. Ensuite, le code peut être analysé et interprété par une machine.

Plusieurs langages de spécification formels incluent la notation de la théorie des ensembles utilisant des caractères spéciaux. Les exemples sont :

Certains langages de programmation de tableaux incluent des expressions vectorisées et des opérations matricielles sous forme de formules non ASCII, mélangées à des structures de contrôle conventionnelles. Les exemples sont :

Voir également

Les références

Lectures complémentaires

Liens externes