Table des matières
La machine peut comparer des valeurs :
et prendre des décisions.
En AlgoTouch, pour comparer deux valeurs :
Lors de la comparaison de variables et/ou de valeurs, 6 cas sont possibles :
x == y
x != y
x > y
x >= y
x < y
x <= y
x != y
x < y
x <= y
La comparaison des variables ou des valeurs permet de prendre des décisions. En fonction du résultat de la comparaison, une séquence d’actions ou une autre est à exécuter.
Par exemple, si l’âge est inférieur ou égal à 14 ans, le prix du billet est mis à 30 euros, dans le cas contraire, le prix du billet est mis à 50 euros.
Pour mettre en place une décision :
Si l’opération est conforme aux attentes :
Toutes ces étapes sont détaillées dans la suite de cette page.
Define PrixBillet
Do
if (age <= quatorze) {
prix = trente ;
}
else {
// age > quatorze
prix = cinquante ;
}
End
La première étape consiste à comparer la variable age à 14 :
Dans la console le code suivant s’inscrit:
if (age <= quatorze){
Dans la console le code est complété :
if (age <= quatorze){
prix = trente ;
}
else {
// TODO 11
// age > quatorze }
La séquence d’instructions étant maintenant connue, il est possible de l’enregistrer pour la rejouer ensuite :
L’enregistrement est alors terminé, le code s’est ajouté dans la partie droite de l’écran d’AlgoTouch :
if ( age <= quatorze) {
prix = trente;
} else {
// TODO 1
// age > quatorze }
} else { // TODO 1 // age > quatorze }
Cette étape consiste à vérifier que les actions enregistrées sont correctes, c’est-à-dire que le résultat est bien celui attendu.
Dans notre cas, comme age vaut 12, la valeur de prix doit valoir 30 à l’issue de l’exécution du programme.
L’exécution s’effectue en cliquant sur la roue dentelée.
Il est possible d’effectuer plusieurs fois le test.
Exécution du bloc |
Le cas age inférieur ou égal à 14 est enregistré et vérifié. Que doit faire notre programme quand age est supérieur à 14 ?
La seule manière de le définir est d’exécuter le programme avec age supérieur à 14, par exemple 20.
Le code enregistré devient :
if (age <= quatorze) {
prix = trente;
} else {
// age > quatorze
prix = cinquante; }
Remarquons que le commentaire “TODO” a disparu. C’est pour indiquer au programmeur que son code est complet.
Le code étant maintenant complet, il est possible de la rejouer avec d’autres valeurs.
Define Maximum Do Read "Read x" x ; Read "Read y" y ; if (x > y) { Write "Maximum" x ; } else { // x <= y Write "Maximum" y ; } // ... EndLe fichier AlgoTouch Solution est disponible sur ce lien
Pour finir nous allons étudier le cas ou aucune instructions n’est nécessaire dans la section “else”.
Par exemple, une note d’un élève supérieure à 20 est ramenée à 20 et conservée sinon.
Les étapes à effectuer :
Le code produit est :
if (note > vingt){ note = vingt; } else { // TODO 1 // note <= vingt }
if (note > vingt) { note = vingt; }
Define Zero Do Read "Read v" v ; if (v < 0) { v = 0 ; } // ... EndLe programme Algotouch contenant la solution est disponible sur ce lien.
Pour le moment, nous avons étudié des cas assez simples de décisions. Tous les cas ne le sont pas.
Imaginons la variable mois. Le contenu de mois n’est valide que si mois est compris entre 1 et 12.
Nous aurons donc à étudier les trois cas suivants :
Quand mois est correct ou incorrect un message est affiché.
if (mois >= 1){ if (mois <= douze){
Write "La valeur de mois est correcte" mois ; } else { // mois > douze Write "La valeur de mois est incorrecte" mois ; } } else { // mois < 1 Write "La valeur de mois est incorrecte" mois ; }
Le code produit est :
if (mois >= 1){ if (mois <= douze){
Write "La valeur de mois est correcte" mois;
} else {
// TODO
// mois > douze } } else { // TODO // mois < 1 }
Le code devient :
if (mois >= 1){ if (mois <= douze){
Write "La valeur de mois est correcte" mois
} else {
// TODO
// mois > douze } } else { // mois < 1 Write "La valeur de mois est incorrecte" mois }
Il reste à étudier le cas où le mois est trop grand supérieur à 12.
Le code devient :
if (mois >= 1){ if (mois <= douze){
Write "La valeur de mois est correcte" mois
} else {
// mois > douze Write "La valeur de mois est incorrecte" mois } } else { // mois < 1 Write "La valeur de mois est incorrecte" mois }
Define OrdreCroissant Do Read "Read var1" var1 ; Read "Read var2" var2 ; Read "Read var3" var3 ; if (var1 < var2) { if (var2 < var3) { croissant = 1 ; } else { // var2 >= var3 croissant = 0 ; } } else { // var1 >= var2 croissant = 0 ; } EndLe programme Algotouch contenant la solution est disponible sur ce lien.