Blog ENI : Toute la veille numérique !
-25€ dès 75€ sur les livres en ligne, vidéos... avec le code FUSEE25. J'en profite !
Accès illimité 24h/24 à tous nos livres & vidéos ! 
Découvrez la Bibliothèque Numérique ENI. Cliquez ici
  1. Livres et vidéos
  2. Algorithmique
  3. Les conditionnelles
Extrait - Algorithmique Des bases à la programmation orientée objet en Java (avec exercices et corrigés) (2e édition)
Extraits du livre
Algorithmique Des bases à la programmation orientée objet en Java (avec exercices et corrigés) (2e édition) Revenir à la page d'achat du livre

Les conditionnelles

Présentation

Jusqu’à présent, les algorithmes présentés sont complètement linéaires, c’est-à-dire que les instructions sont toutes exécutées dans l’ordre. Les structures de contrôle permettent, suivant les cas, de ne pas exécuter les mêmes instructions. Pour reprendre l’exemple de l’algorithme de calcul du prix TTC, il serait possible de demander à l’utilisateur si le produit a le droit à un taux de TVA réduit et, seulement si la réponse est "oui", de demander à l’utilisateur le taux de TVA à appliquer.

La structure de contrôle Si (forme simple)

La première possibilité pour n’effectuer des instructions que dans certaines situations est d’utiliser la structure de contrôle Si. Voici la syntaxe à utiliser pour ce test :

Si conditionBooléenne Alors 
 SuiteDInstructions  
FSi 

Après le Si, il faut indiquer la condition qui doit être remplie pour exécuter la suite d’instructions comprise entre les mots-clés Alors et FSi. Le mot-clé FSi correspond à "Fin du Si". La condition doit être de type booléen : elle doit avoir pour valeur soit vrai soit faux. Si la condition a pour valeur vrai, alors l’ensemble de la suite des instructions sont exécutées, sinon elles sont sautées et l’exécution continue avec les instructions situées après le FSi.

Exemple :

Algo Tva2  
# calcule le prix TTC d'un article  
Variable prixHT : réel  
Variable tvaReduite : texte  
Variable tva : réel <- 20/100  
Début 
   écrire("Prix HT de l'article ?") 
   prixHT <- saisir() 
   écrire("Ce produit bénéficie-t-il d'un taux de TVA réduit ?") 
   tvaReduite <- saisir()  
   Si tvaReduite...

La structure de contrôle Si (forme double)

La structure de contrôle Si peut se présenter dans une forme double. Dans ce cas-là, en plus des éléments présents dans sa version simple, s’ajoute après le mot-clé Sinon la suite d’instructions à effectuer lorsque la condition est fausse.Voici donc la syntaxe :

Si conditionBooléenne Alors 
 suiteDInstructions  
Sinon 
 autreSuiteDInstructions  
FSi 

Si la condition est vraie, alors la suite d’instructions comprises entre Alors et Sinon est exécutée et l’exécution se poursuit après le FSi. Si par contre la condition est fausse, la première suite d’instructions est sautée et les instructions qui sont exécutées sont celles comprises entre Sinon et FSi, puis l’exécution se poursuit après le FSi.

Exemple :

Algo Age  
Variable age : entier  
Début 
 age <- saisir("Quel est votre âge ? ")  
 Si age ≥ 18 Alors 
   écrire("Vous êtes majeur !")  
 Sinon 
   écrire("Vous êtes mineur !")  
 FSi  
Fin 

Dans cet exemple, suivant la valeur saisie par l’utilisateur, le message "Vous êtes majeur !"...

L’imbrication des structures de contrôle

Les structures de contrôle peuvent être imbriquées les unes dans les autres. C’est-à-dire que parmi la suite d’instructions contenues entre Alors et Sinon ou celles contenues entre Sinon et FSi, il est possible de positionner une autre structure de contrôle.

Exemple :

Algo Age2  
Variable age : entier  
Début 
 age <- saisir("Quel est votre âge ? ")  
 Si age < 0 Alors 
   écrire("Ce n'est pas possible !")  
 Sinon  
   Si age ≥ 18 Alors 
     écrire("Vous êtes majeur !")  
   Sinon 
 ...

La structure de contrôle Selon

La structure de contrôle Selon permet également de n’effectuer que certaines instructions de manière conditionnelle. Selon permet d’effectuer les instructions souhaitées en fonction de la valeur d’une variable. Voici la syntaxe de cette structure de contrôle :

Selon nomDeLaVariable  
    cas premièreListeDeValeurs : premièreSuiteDInstructions  
    cas deuxièmeListeDeValeurs : deuxièmeSuiteDInstructions  
    cas troisièmeListeDeValeurs : troisièmeSuiteDInstructions  
... 
    autre : autreSuiteDInstructions 
FSelon 

Si la valeur de la variable fait partie de la première liste de valeurs, alors c’est la première suite d’instructions qui est exécutée, puis l’exécution reprend après FSelon. Si ce n’est pas le cas, la valeur de la variable est recherchée dans la deuxième liste de valeurs. Si elle est présente, alors la deuxième suite d’instructions est exécutée, puis l’exécution reprend après FSelon. Cela est réalisé jusqu’à trouver le cas contenant dans sa liste la valeur de la variable.

Le cas autre est facultatif. Si celui-ci est présent et si la valeur de la variable n’a été trouvée dans aucun cas, ce sont les instructions situées après autre qui sont exécutées.

Exemple :

Algo TriSelectif 
Variable dechet : texte 
Début 
 dechet <- saisir("Que souhaitez-vous jeter ?")  
 Selon dechet  
   cas "papier"; "carton"; "boîte de conserve" : 
     écrire("à recycler")  
   cas "végétaux"; "épluchures" :  
     ...

L’opérateur ternaire ? :

En algorithmique comme en Java, il existe un opérateur permettant de tester une condition et, en fonction de celle-ci, de procurer soit une valeur soit une autre.

Contrairement à Si et Selon, qui sont des structures de contrôle, ? : est un opérateur (comme les opérateurs vus dans le chapitre précédent : +, , et …). Comme ces opérateurs, il calcule et procure une valeur.

Cet opérateur est qualifié de ternaire, car il est composé de trois opérandes. Tous les opérateurs vus précédemment sont binaires, car ils utilisent deux opérandes (par exemple : a+b, a et b étant les deux opérandes), sauf l’opérateur non qui est unaire, c’est-à-dire qu’il n’utilise qu’un seul opérande (par exemple : non a, a étant l’unique opérande).

La syntaxe de cet opérateur est la suivante :

condition?valeurSiConditionVraie:valeurSiConditionFausse 

Si la condition est vraie, alors le résultat de cette opération est la valeur indiquée entre les symboles ? et : sinon c’est la valeur indiquée après le symbole :.

Exemple :

Algo Voyage  
Variable nbPersonnes : entier  
Variable assurance : booléen  
Début  
 nbPersonnes <- saisir(  ...

Exercices

1. La météo

Écrire un algorithme qui affiche « risque de verglas » si la température saisie est inférieure à 2°C.

2. La météo version 2

Modifier l’algorithme précédent pour afficher un message en fonction de la température :

Température

Message

t < 2

Risque de verglas

2 ≤ t < 15

C’est pas chaud

15 ≤ t < 30

Bonne température

t ≥ 30

Trop chaud

3. Le nom du mois

Écrire le nom du mois en toutes lettres en fonction de son numéro (saisi par l’utilisateur).

4. Le temps de cuisson

Sachant que :

  • Pour cuire 500 grammes de bœuf, il faut :

  • 10 minutes si on veut une cuisson bleu

  • 17 minutes si on veut une cuisson à point

  • 25 minutes si on veut une cuisson bien cuit

  • Pour cuire 400 grammes d’agneau, il faut :

  • 15 minutes si on veut une cuisson bleu

  • 25 minutes si on veut une cuisson à point

  • 40 minutes si on veut une cuisson bien cuit

  • Le temps de cuisson est proportionnel au poids.

En fonction des informations saisies par l’utilisateur (type de la viande, mode de cuisson et poids de la viande), afficher le temps de cuisson d’une viande en secondes.

5. Le bulletin de paie

Afficher le bulletin de paie simplifié d’un salarié à partir des informations saisies. Le salaire brut dépend du nombre d’heures travaillées et de son taux horaire :

  • Les heures en deçà de 169 h sont payées en appliquant son taux horaire.

  • Les heures comprises entre 169 h et 180 h sont payées en appliquant une majoration de 50 % de leur taux horaire.

  • Les heures au-delà de 180h sont payées avec une majoration de 60 %.

La prime familiale est calculée de la manière suivante :

  • 1 enfant : 20 €

  • 2 enfants : 50 €

  • Au-delà de 2 enfants : 70 € + 20 € par enfant supplémentaire

Voici un exemple d’affichages et de saisies possibles lors d’une exécution de l’algorithme (les valeurs saisies par l’utilisateur sont inscrites en gras italique) :

Nom de la personne...

Solutions des exercices

1. La météo

Algo RisqueVerglas  
# Saisit la température et affiche une info  
Variable temperature : réel  
Constante LIMITE_VERGLAS : réel <- 2  
Début 
   temperature <- saisir("Entrez la température : ")  
   Si temperature < LIMITE_VERGLAS Alors 
          écrire("Risque de verglas")  
   FSi  
Fin 

2. La météo version 2

Algo RisqueVerglasV2  
# Saisit la température et affiche une info  
Variable temperature : réel  
Constante LIMITE_VERGLAS : réel <- 2  
Constante LIMITE_FROID : réel <- 15  
Constante LIMITE_BIEN : réel <- 30  
Début 
   temperature <- saisir("Entrez la température : ")  
   Si temperature < LIMITE_VERGLAS Alors 
          écrire("Risque de verglas")  
   Sinon  
          Si temperature < LIMITE_FROID Alors 
                 écrire("Ce n'est pas chaud")  
          Sinon  
                 Si temperature < LIMITE_BIEN Alors 
                        écrire("Bonne température")  
                 Sinon  
                        écrire("Trop chaud !")  
           ...