Même si le pseudo-code semble plus proche du code qu'un algorithme, en pratique, le pseudo-code est moins formel et c'est une description de plus haut niveau. Par exemple, vous pouvez décrire un ordinateur jouant aux échecs comme un pseudo-code comme celui-ci:
- placer les pièces initiales à leur emplacement
- tableau d'affichage
- pendant que le jeu n'est pas terminé
- faire bouger et afficher le panneau
- invite l'utilisateur à se déplacer
- faire bouger les utilisateurs
Oui, c'est un pseudocode, il est utile comme bon point de départ mais passe sous silence de nombreux détails. Il ne tient pas compte des difficultés et des variations de mise en œuvre, mais le plus grand avantage est qu'il vous permet de conceptualiser l'ensemble de la situation sans avoir à résoudre tous les détails.
Vous pouvez le réviser, en ajoutant un niveau supplémentaire comme ceci:
- placer les pièces initiales à leur emplacement
- tableau d'affichage
- tandis que le conseil n'est pas échec et mat ou tirage
- faire une liste des actions légales des blancs
- choisir le meilleur selon certains critères
- faire ce mouvement et calculer le conseil résultant
- voir si échec ou mat a eu lieu
- panneau d'affichage
- faire une liste des actions légales des noirs
- invite l'utilisateur à se déplacer légalement pour entrée
- faire ce mouvement et calculer le conseil résultant
- voir si échec ou mat a eu lieu
- panneau d'affichage
Vous pouvez maintenant écrire un pseudocode pour chacune des étapes principales comme "faire une liste des mouvements légaux des noirs", comme ceci:
- pour chaque pièce noire
- pour le type de pièce dans un emplacement donné
- faire une liste des prochains emplacements possibles
Maintenant, vous pouvez voir que la puissance du pseudocode réside dans sa capacité à afficher la situation en une seule fois, puis à vous permettre d'adresser les détails pièce par pièce. La faiblesse est que toute étape n'est pas une étape simple et définitive.
Un algorithme reprend généralement l'une de ces étapes et détaille diverses structures de données dans un langage symbolique afin que vous puissiez atteindre efficacement l'objectif de l'étape.
Par exemple, get_legal_moves(board, color)
est digne d'une conception d'algorithme:
get_legal_moves(board, color):
for i,j in board_dimensions
if piece_at i,j is of color
if piece type is KNIGHT
add the following to the next moves list:
location i+1 j+2, i-1 j+2... etc
if piece type is rook
add locations:....
Vous pouvez voir que l'algorithme doit être très précis pour être utile.
Cela garantit plusieurs choses: que les objectifs soient atteints sans erreur, d'abord et avant tout. Les étapes sont très détaillées et exécutables de manière mécanisée et que les étapes sont suffisamment petites pour que vous puissiez les réorganiser pour augmenter l'efficacité (vitesse) avec laquelle vous terminez la tâche.