Pseudo-code

La définition générale d'un algorithme ne spécifie rien sur les instructions à utiliser, juste qu'elles doivent être décrites en un nombre fini de mots. Un pseudo-code est une proposition d'instructions possibles pour décrire un algorithme, compréhensibles par un humain.

Ce n'est cependant pas une langue car il n'y a pas de place pour l'ambiguïté ni l'invention : tout doit y être rigoureusement défini, et chaque étape élémentaire doit être réalisable en un temps fini par un humain :

Rappelez-vous les trois premières règles de la définition d'un algorithme qui sont faciles à respecter.

Ce n'est pas non plus un langage informatique dont le but est d'être compris par un ordinateur.

Il est communément admis que tout algorithme peut être écrit en pseudo-code :

Thèse de Church-Turing

Tout programme (et donc algorithme) peut s'écrire sous la forme d'un pseudo-code (et réciproquement).

Notez que cette affirmation n'est pas démontrée mais que toutes les tentatives (et il y en a eu) pour infirmer cette affirmation ont été des échecs.

La thèse de Church-Turing a été initialement formulée pour les Machines de Turing mais, nous le verrons pseudo-code et machines de Turing sont deux notions équivalentes.

Définition

Un pseudo-code est une succession de lignes qui seront exécutées en séquence les unes à la suite des autres. Chaque ligne est composée d'une instruction qu'il faut réaliser avant de passer à la ligne suivante.

Les langages de programmation classiques comme python, java ou encore rust se transcrivent aisément en pseudo-code et réciproquement et peuvent donc être considérés comme équivalent :

Éléments de pseudo-code

Briques de base

Commençons par décrire la grammaire de base du pseudo-code :

Format

TBD algo et types https://docs.python.org/3/library/typing.html

Le pseudo-code d'un programme va contenir, en plus de ses instructions, un nom, des entrées et souvent une sortie (son but). Par exemple :

algorithme recherche(t: [entier], 
                     x: entier     # entier recherché dans t
                    )  booléen:  # Vrai si x est dans t

    pour chaque e de t:
        si e == x:
            rendre Vrai
    rendre Faux

    x  3
def recherche(t, x):
    for e in t:
        if e == x:
            return True
    return False
Nom : recherche
Entrées :
    t : un tableau d'entiers
    x : un entier
Programme :
    pour chaque élément e de t:
        si e == x:
            Retour vrai
    Retour faux
Nom : recherche
Entrées :
    t : un tableau d'entiers
    x : un entier
Programme :
    pour chaque élément e de t:
        si e == x:
            Retour vrai
    Retour faux

ou de manière équivalente, en un mélange de python et de français :

def recherche(t, x):
    pour chaque élément e de t:
        si e == x:
            return vrai
    return faux

Ou encore, complètement en python :

def recherche(t, x):
    for e in t:
        if e == x:
            return True
    return False

Fonctions

Écrire du bon pseudo-code