Algorithmique impérative/Rédaction

Lorsqu'on rédige un algorithme, il faut toujours garder à l'esprit qu'il doit pouvoir être lu et compris par quelqu'un d'autre. Au fur et à mesure de la pratique, les rédacteurs ont dégagé quelques principes dont les plus simples sont expliqués ici. Il convient de respecter ces principes d'une façon rigoureuse.

Algorithmique impérative
PyQt
PyQt
Sommaire
Théorie de l'algorithmique impérative
  1. Qu'est ce qu'un algorithme impératif Fait à environ 50 %
  2. Les types, les opérateurs et les expressions Fait à environ 50 %
  3. Les constantes, les variables Fait à environ 50 %
  4. Les instructions, les blocs d'instructions Fait à environ 50 %
  5. L'assignation Fait à environ 50 %
  6. Les exécutions conditionnelles Fait à environ 50 %
  7. Les structures itératives Fait à environ 50 %
  8. Les tableaux Fait à environ 50 %
  9. Les procédures et les fonctions Ébauche
  10. Le type enregistrement Fait à environ 50 %
  11. L'algorithme au final : vue d'ensemble En cours
  12. Exercices En cours
Outils de travail
Problèmes posés, analysés, résolus et commentés
Annexes
Modifier ce modèle ce sommaire

Remarque pour les étudiants : il est parfaitement admis que le respect de ces règles de rédaction soit pris en compte dans la note finale. Quand vous écrivez une dissertation, il convient de respecter la grammaire et l'orthographe même si ce n'est pas ce qui doit être évalué, il en est de même ici.

Indenter son code modifier

L'indentation d'une ligne est l'espace qui la sépare de la marge gauche.

Problème modifier

Considérons l'algorithme (incomplet) suivant :

Début
  si condition1 alors
    instruction1
  sinon
    si condition2 alors
      instruction2
    sinon
      instruction3
    finsi
  finsi
Fin

Voici le même algorithme mais sans l'indentation :

Début
si condition1 alors
instruction1
sinon
si condition2 alors
instruction2
sinon
instruction3
finsi
finsi
Fin

Il est déjà moins évident de comprendre le fonctionnement de l'algorithme. Ce dernier est toutefois plus abordable que :

Début
si condition1 alors instruction1 sinon si condition2
alors
      instruction2 sinon instruction3
finsi finsi
Fin

et pourquoi pas...

 Début si condition1 alors instruction1 sinon si condition2 alors instruction2 sinon instruction3 finsi finsi Fin

Comment faire modifier

Pour bien indenter, considérez les blocs et mettez au même niveau le début du bloc et la fin du bloc. Par exemple, un fin devrait se trouver au même niveau que son début : on devrait l'apercevoir immédiatement étant donné que tout ce qu'il y a entre les deux devrait se trouver un niveau d'indentation plus loin.

début
  ...
  début
    ...
  fin
  ...
fin

Procédez ainsi avec

  • SI...FINSI
  • TANTQUE...FTQ
  • REPETER...JUSQU'A
  • POUR...FP

De même : placez les alors et les sinon au même niveau.

Vous pouvez transformer ces règles, l'important étant de les fixer et de s'y tenir. Il existe plusieurs façons d'indenter et chaque auteur a ses préférences.

Utiliser des identifiants pertinents modifier

Pour choisir un identifiant de variable ou de fonction, souvenez-vous qu'il doit remplir deux utilités principales

  • décrire son rôle (sans toutefois remplacer le commentaire en déclaration)
  • distinguer des autres (ne pas se retrouver avec deux fonctions calculer_nombre et calculer_nb, quotient et division...)

Évitez :

  • de répéter le type de la variable dans son identifiant (entier_n, chaine_départ)
  • les conventions utilisées en maths (n ou x ne suffisent pas pour décrire le rôle d'un entier/réel)

Pensez également aux conventions, notamment :

  • i (j, k...) comme variable de boucle
  • utiliser un préfixe pour signaler les variables entrées du programme qui seront données par l'utilisateur.

Commenter utile modifier

Il ne faut pas décrire ce que vous faites mais pourquoi vous le faites

POUR i de 1 à 24 FAIRE
  instruction
FINPOUR

Pour cet algorithme le commentaire :

  • (* il y a 24 heures dans une journée donc 24 instructions *) est pertinent. Plus particulièrement, le commentaire répond à la question "pourquoi 24 et pas 25 ?".
  • (* i va de 1 à 24 *) n'est pas pertinent. Il ne répond pas à la question "pourquoi 24 et pas 23 ?".

Servez-vous également des commentaires pour indiquer ce que vous supposez : les conditions dans lesquelles votre algorithme fonctionne.