Erreurs communes #
Rédiger du pseudocode n’a rien de sorcier, mais plusieurs étudiants font des erreurs. Voici quelques erreurs communes.
Certains étudiants rédigent du pseudocode qui a l’air formel et correct, mais qui est en fait ambigu et inutilisable. Prenons cet exemple:
SI j'ai mal aux dos ALORS je prend des aspirines OU SI j'ai faim ALORS je mange. Bien sûr, je n’ai utilisé que des expressions logiques. Des SI, des ALORS des OU. Mais qu’est-ce que ça signifie ? Par exemple, est-ce que je peux à la fois manger et prendre des aspirines dans ce scénario ? La réponse est subjective. Votre pseudocode doit être exécutable sans interprétation. Un pseudocode n’est pas un texte à interprétation subjective. Vous ne pouvez pas faire semblant d’écrire du pseudocode en utilisant simplement les termes qu’on trouve fréquemment au sein des pseudocodes. Ce n’est pas une question de syntaxe. On peut parfaitement écrire du pseudocode sans jamais utiliser SI, TANT QUE, etc. Plusieurs étudiants obsèdent sur la syntaxe, croyant à tort que si on leur donne les bons termes, la bonne grammaire, ils trouveront comment comprendre ce qu’est un pseudocode. Or, c’est justement le contraire de la leçon ici: nous voulons que vous compreniez que la syntaxe exacte est secondaire dans la pensée algorithmique. On peut être imprécis et incohérent en utilisant une syntaxe formelle, et on peut être précis et cohérent en utilisant du français usuel. Ce n’est pas parce que vous utilisez des expressions qui vous semblent précises que vous l’êtes. Vous devez avoir une idée précise en tête et vous devez l’exprimer avec précision.Au sein d’une boucle (par ex., TANT QUE), les étudiants peuvent mettre par erreur une condition qui termine toujours le programme. Dans un tel cas, la boucle ne peut pas s’exécuter et elle est de facto brisée. Voici un exemple. Les instructions « retourner minimum » et « retourner tableau[iterateur] » terminent le pseudocode. Assurez-vous de bien comprendre que ce pseudocode ne va consulter que la première valeur du tableau. Si vous avez une condition ou les deux branches (SI et SINON) retournent une valeur et terminent donc l’algorithme, votre algorithme ne procèdera pas plus loin.
Variable iterateur (entier)
Variable minimum = tableau[0]
iterateur = 0
TANT QUE iterateur < 100 FAIRE
SI tableau[iterateur] < minimum ALORS
retourner tableau[iterateur];
SINON
retourner minimum
FIN SI
iterateur = iterateur + 1;
FIN TANT QUE
- Certains étudiants construisent des boucles qui ne se terminent jamais. Dans une boucle TANT QUE, il faut s’assurer que la condition ne soit plus satisfaite pour ne pas avoir une boucle infinie. Consultez cet exemple. Si vous testez votre pseudocode, vous saurez éviter de telles erreurs.
iterateur = 0
TANT QUE iterateur < 100 FAIRE
SI iterateur < 10 ALORS
ajouter un à itérateur
FIN SI
FIN TANT QUE
- Les étudiants vont aussi fréquemment utiliser des variables et des constructions qui ne sont pas définies et dont le sens doit être deviné. Voici un exemple. Vous constaterez à la lecture de ce pseudocode qu’il y a plusieurs conventions syntaxiques qui ne sont pas définies. Il y a plusieurs variables, mais il est difficile de connaître leur type et leurs relations. Assurez-vous donc de bien expliquer chaque variable et de bien définir votre syntaxe. Dans ce dernier exemple, que représente iterateur, iterateur[tableau], tableau[iterateur], etc.? Vous devez être précis. Souvent, nous avons un nombre limité de « types » pour les variables: nombres, entiers, chaînes de caractères. On utilise le plus souvent la convention t[i] pour désigner l’élément à l’index i du tableau t. Dans un tel cas, t doit être un tableau, i doit être une valeur entière. Vous être libre de concevoir vos propres conventions, mais vous devez être explicite et précis. Si votre pseudocode doit retourner une valeur, il faut que le pseudocode le spécifie explicitement.
Entier iterateur[tableau] = 0;
TANT QUE iterateur[i] < 100 FAIRE
SI tableau[iterateur] < minimum ALORS
retourner iterateur[tableau];
FIN SI
iterateur = iterateur[tableau] + 1;
FIN POUR TOUT
Si vous avez bien défini le type de vos variables, et toutes vos conventions syntaxiques, il vous reste maintenant à vous assurer que les valeurs de vos variables sont toujours spécifiées. Si vous dites que x est un nombre et que vous posez ensuite l’inéquation x > 1, nous ne pouvons en connaître la valeur que si x a reçu une valeur. Assurez-vous donc de donner une valeur initiale à toutes vos variables. En tout temps, dans votre pseudocode, le lecteur doit pouvoir déterminer la valeur d’une variable donnée.
Parfois les étudiants manquent tout simplement de rigueur. Pour vérifiez si votre pseudocode est rigoureux, appliquez-le sur un exemple concret comme si vous étiez un robot. Par exemple, si quelqu’un écrit le pseudocode suivant « je prend chacune des valeurs du tableau, et je l’additionne à la valeur suivante dans le tableau »… vous pourriez alors prendre un tableau à titre d’exemple, comme [1,2,3] et tester l’instruction. Qu’est-ce que ça donnerait ? Je prend les valeurs une à une et je l’additionne à la valeur suivante dans le tableau. Je prend donc 1 et sa valeur suivante (1 + 2), ensuite 2 et sa valeur suivante (2 + 3), et ensuite 3 et sa valeur suivante… ? Je me rend compte que l’expression « la valeur suivante » n’est pas bien définie. Voici un autre exemple. Quelqu’un pourrait avoir comme pseudocode « j’initialise la variable comme ayant comme valeur le premier élément du tableau ». Testons ce pseudocode sur le tableau vide (de taille zéro). Nous constatons qu’il n’y a pas de premier élément ! Donc si le tableau vide n’est pas exclu, nous avons un problème de rigueur. Voici un truc: testez toujours votre pseudocode avec plusieurs exemples concrets. Prenez le temps d’appliquer les instructions de votre pseudocode ligne par ligne, comme si vous étiez un robot. Pensez comme un ordinateur!
Nous vous invitons maintenant à passez aux premiers exercices du cours!