Énoncé
Ecrire un algorithme qui lit un nombre entier et nous informe s'il est positif, négatif ou bien nul.Cet exercice est parmi les premiers exercices que les enseignants donnent comme pratique à la structure conditionnelle Si...Sinon. Cela peut être déduit facilement parce que le programme (ou l'algorithme) va classifier le nombre; il va le mettre avec les nombres positifs, avec les nombres négatifs ou bien avec les nombres nuls. Pour pouvoir le classifier, il doit tester des conditions. Et lorsqu'on dit "test", on dit "conditionnel" (Si...Sinon).
Contrairement au problème de Pair/Impair, nus avons deux grandes différences :
- Il n'y a aucune confusion lors du choix de la définition pour les notions "nombre positif", "nombre négatif" et "nombre nul".
- Nous avons trois possibilités pas seulement deux, sachant qu'une structure "Si...Sinon" permet de choisir entre deux possibilités seulement.
Ainsi, il suffit de détailler ces deux points pour atteindre l'objectif de cet exercice sachant que l'étudiant à bien compris le cas le plus simple où nous avons deux possibilités seulement (Si...Sinon simple).
Premièrement les conditions à vérifier :
Pour qu'un nombre n soit dit "positif", il doit satisfaire la condition n > 0.
Pour qu'un nombre n soit dit "négatif", il doit satisfaire la condition n < 0.
Un nombre est nul s'il est ni positif, ni négatif.
Pour ce dernier point, il est préférable de définir l'une des conditions en fonction des autres, plus précisément, la négation des autres. Cela facilite l'utilisation de Si...Sinon qui exécute un bloc si la condition est vraie et l'autre bloc dans le cas contraire (si la négation de la condition est correcte).
Deuxièmement, la structure conditionnelle doit être définie. Si nous avons plus de deux cas alors il est certain que nous allons utiliser plusieurs Si...Sinon ou bien des Si...Sinon imbriqués (l'objectif pédagogique de cet exercice).
Un Si...Sinon imbriqué, c'est à dire un Si...Sinon à l'intérieur d'un autre Si...Sinon, permet de créer plus de deux branches que nous pouvons obtenir par un simple Si...Sinon. Cette structure est utilisée si nos condition ne présentent pas de chevauchement : il est impossible d'avoir deux conditions vérifiées au même temps. Dans le cas de notre exercice, ce principe est respecté parce qu'un nombre ne peut pas être, à titre d'exemple, positif et nul au même temps.
Regroupons tout cela dans le programme suivant :
En Pascal :
Program PositifNegatifNul; Var n : Integer; Begin WriteLn('Donnez le nombre à tester :'); ReadLn(n); If (n > 0) Then WriteLn('Positif') {Positif s'il est supérieur à 0} Else if (n < 0) Then WriteLn('Negatif') {Négatif s'il est inférieur à 0} Else WriteLn('Nul'); {Nul s'il est ni positif, ni négatif} End.
En Java :
import java.util.Scanner; public class Exemple { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); System.out.println("Donnez le nombre à tester :"); int n = scanner.nextInt(); if(n > 0) System.out.println("Positif"); // Positif s'il est supérieur à 0 else if (n < 0) System.out.println("Negatif"); // Négatif s'il est infénrieur à 0 else System.out.println("Nul"); // Nul s'il est ni positif, ni négatif } }
Une mauvaise écriture
Il est aussi possible d'écrire le programme autrement. Je peux voir les trois conditions comme des conditions indépendante et donner à chacune d'elle une structure Si...FSi simple. Cela donnera un programme te que le suivant :En Pascal :
Program PositifNegatifNul; Var n : Integer; Begin WriteLn('Donnez le nombre à tester :'); ReadLn(n); If (n > 0) Then WriteLn('Positif'); If (n < 0) Then WriteLn('Négatif'); If (n = 0) Then WriteLn('Nul'); End.
En Java :
import java.util.Scanner; public class Exemple { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); System.out.println("Donnez le nombre à tester :"); int n = scanner.nextInt(); if(n ... 0) System.out.println("Positif"); if(n ... 0) System.out.println("Négatif"); if(n == 0) System.out.println("Nul"); } }
Malgré que ce code fonctionne parfaitement, mais, il est considéré dans le contexte de cet exercice comme faux. N'oublions pas que l'objectif de cet exercice de pratiquer les Si...Sinon; chose qui n'est pas atteinte dans ce dernier code. En effet, quelque soit la valeur de n, le programme va le tester pour les trois cas. C'est à dire, si le nombre n est positif, le programme affiche le message "Positif", mais, il fera comme même les deux autres testes (négatif et nul).