Comment programmer le fait de faire des choix.
A ce stade, nous savons programmer une liste d'instruction, qui ... font toujours la même chose !
Voilà qui est bien limité.
Un vrai programme doit pouvoir exécuter des instructions différentes selon certaines conditions
et il existe une structure universelle
pour implémenter ce mécanisme.
Par exemple :
if(temperature < 15)
{
println("allumer chauffage");
} |
où la construction permet de n'allumer le chauffage qu'en cas de besoin. Tandis que :
if(temperature < 15)
{
println("allumer chauffage");
} //remarquez les BLOCS { } qui encadrent ce qu'on doit faire
else
{
println("ne rien faire");
} |
montre comment se traduit la construction
si la température est en dessous de 15 degrés alors allumer le chauffage sinon ne rien faire.
Définir des conditions à tester.
Pour définir le test à effectuer nous avons vu que nous pouvions comparer deux valeurs numériques,
voici une liste de tests possibles pour des nombres
a et
b et des chaînes de caratères
s et
c:
// Vrai si et seulement si le nombre a est strictement plus petit que le nombre b:
a < b ou b > a
// Vrai si et seulement si le nombre a est strictement plus petit ou égal au nombre b:
a <= b ou b>=a
// Vrai si et seulement si le nombre a est égal au nombre b:
a == b et a!=b, le contraire
// Vrai si et seulement si la chaîne s est égale à la chaîne c
equal(s, c) |
Nous pouvons ensuite
combiner ces conditions :
// Vrai si et seulement si une_condition ET autre_condition sont vraies :
une_condition && autre_condition
// Vrai si et seulement si une_condition OU autre_condition, ou les deux, sont vraies2 (Voir2 pour "trouver" la touche |):
une_condition || autre_condition
// Vrai si et seulement si une_condition n'est PAS vraie :
(!une_condition) |
ce qui nous permet de définir des expressions aussi complexes que nous avons besoin, par exemple :
// Vrai si et seulement si x est plus grand que a et plus petit que b donc dans l'intervale ]a, b[:
a < x && x < b
// Vrai si et seulement si la reponse égale oui en minuscule ou majuscule :
equal(reponse, "oui") || equal(reponse, "OUI")
// Vrai si et seulement si l'age est plus que 10 et le nom n'est pas Jean:
age > 10 && (! equal(nom, "Jean")) |
en utilisant des parenthèses pour ne pas mélanger les termes de ces expressions.
Ajouter des tests à un code.
Entrez le code suivant, exécutez le et observez le résultat.
void main() {
int a,b,c;
double x;
String texte,reponse;
println("Bonjour, entrez trois valeurs a,b,c");
a=readInt();
b=readInt();
c=readInt();
texte="L'équation "+a+"X+"+b+"="+c+" a comme solutions :";
if(a==0) //PREMIER SI
{
if (c-b==0) //SECOND SI, DANS LE PREMIER
{
reponse = "Toute valeur réelle est solution";
}
else //SINON DU SECOND SI
{
reponse="Aucune solution";
}
}
else //SINON du premier SI
{
x=(double)(c-b)/a;
reponse=" le nombre réel "+x+ "(valeur approchée)";
}
println(texte);
println(reponse);
}
//Fin du programme
|
puis tester ce code avec différentes valeurs de a,b et c.
Quel est le rôle de ce programme ?
Pourquoi y-a-t'il deux tests ?
Dans la ligne
x=(double)(c-b)/a, supprimez le (double) entre parenthèse. Que se passe-t-il ? A quoi sert ce (double) ?
A propos de l'égalité.
Notez que le signe
= veut dire "
affecter une valeur"
tandis que être égal s'écrit
== pour les nombres et
equal(s, c) pour les chaines de caractères : voici quelque chose d'un peu compliqué.
A propos de la touche |
Sur les claviers français des PC, il faut taper
Alt Gr + 6;
Alt Gr est la touche à droite de la barre espace qu'il faut enfoncer en même temps que la touche du chiffre 6.