10. condition if



La construction if permet d'avoir des instructions qui ne sont exécutées que si une (ou plusieurs) condition est remplie.

if (condition){
    instructions
}
condition est une expression qui retourne un booléen.

exemple :
if (temperature > 25){
    term.ecrireString("il fait trop chaud pour travailler");
}
si la temperature est plus petit ou égal à 30, le programme ne fait rien.

On peut aussi proposer une alternative :
if (temperature > 30){
    term.ecrireString("il fait trop chaud pour travailler");
}
else {
    term.ecrireString("la température est adéquate pour travailler");
}
Dans ce cas, le programme écrira l'une ou l'autre phrase en fonction de la valeur de temperature.

On peut aussi avoir plusieurs alternatives :
if (temperature > 30){
    term.ecrireString("il fait trop chaud pour travailler");
}
else if (temperature < 15){
    term.ecrireString("il fait trop froid pour travailler");
}
else {
    term.ecrireString("la température est adéquate pour travailler");
}
(il est possible d'avoir autant de else if que l'on souhaite, mais il y a au maximum un else)

On peut avoir des conditions combinées :
if (temperature > 30 || temperature < 15){
    term.ecrireString("on ne peut pas travailler");
}

|| signifie OU (&& signifie ET; != négation)



Exemple
Dans l'exemple de la leçon 9, l'utilisateur pouvait décider de l'allure de la spirale librement. Il pouvait par conséquent entrer des paramètres qui ne sont pas appropriés (par exemple, une spirale à un seul côté). L'exemple ci-dessous donne un exemple de l'utilisation de la condition if, pour permettre de corriger des erreurs de l'utilisateur.

class Tortue extends SuperTortue{

    void spirale(int nbCotes, int nbTours, int increment, int longInit){

        int dist = longInit;

        for (int j=0; j<nbTours; j++){
            for (int i=0; i<nbCotes; i++){
                avance(dist);
                tourneDroite(360/nbCotes);
                dist += increment;
            }
        }
    }
}
 

public class MonProg10a{

    public static void main(String[] args){

        Terminal term = new Terminal();

        term.ecrireString("********************************");
        term.ecrireString("Spirales");
        term.ecrireString();
        term.ecrireString("Combien de cotes ? (2 < nb cotes)");
        int nbCotes = term.lireInt();

        if (nbCotes < 3){
            nbCotes = 3;
            term.ecrireString("Une spirale doit avoir au moins trois cotes");
            term.ecrireString("la tortue dessinera donc une spirale a trois cotes");
        }

        term.ecrireString("Combien de tours ? (1 < nb tours)");
        int nbTours = term.lireInt();

        if (nbTours < 1){
            nbTours = 1;
            term.ecrireString("une spirale doit avoir au minimum un tour");
            term.ecrireString("la tortue dessinera donc une spirale a un tour");
        }

        term.ecrireString("Longueur initiale du cote ? (0 <=  longueur)");
        int longueurInit = term.lireInt();

        if (longueurInit < 0){
            longueurInit = 0;
            term.ecrireString("la longueur initiale du trait ne doit pas etre negative");
            term.ecrireString("la tortue utilisera une longueur initiale de 0");
        }

        term.ecrireString("Increment ?");
        int incr = term.lireInt();

        Tortue rosalie = new Tortue();

        rosalie.spirale(nbCotes, nbTours, longueurInit, incr);
    }
}
MonProg10a.java


Exercice

Remarque

Au lieu de corriger "brusquement" les erreurs de l'utilisateur, on peut lui donner la possibilité d'entrer une autre valeur pour un paramètre.
Exemple :

term.ecrireString("Combien de cotes ? (2 < nb cotes)");
int nbCotes = term.lireInt();

while (nbCotes < 3){
    term.ecrireString("minimum 3, veuillez entrer un autre nombre svp");
    nbCotes = term.lireInt();
}

MonProg10c.java (même programme que MonProg10a, mais avec des while au lieu des if)
MonProg10d.java (même programme que MonProg10b, mais avec des while au lieu des if)



8/1/2001
CLMJ