Blog ENI : Toute la veille numérique !
🐠 -25€ dès 75€ 
+ 7 jours d'accès à la Bibliothèque Numérique ENI. Cliquez ici
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. L'alternative
Extrait - Algorithmique Raisonner pour concevoir (3e édition)
Extraits du livre
Algorithmique Raisonner pour concevoir (3e édition) Revenir à la page d'achat du livre

L'alternative

Introduction

Ce chapitre présente l’une des constructions fondamentales de l’algorithmique : « la structure de choix » ou encore « l’alternative ». Comme son nom l’indique, elle permet de procéder au choix d’un traitement, parmi plusieurs possibles, selon des conditions établies en fonction du contexte et des données à traiter.

La deuxième section présente l’alternative, à l’aide d’un exemple trivial décliné en plusieurs versions. Le but est d’exposer l’utilisation de la nouvelle construction en précisant le vocabulaire. La troisième section présente des exercices résolus et la dernière des exercices d’application.

Définition de l’alternative

Cette section ne propose pas de définition formelle de l’alternative. Elle ne fait que la présenter, à l’aide d’un exemple dont les différentes versions permettent de préciser quelques points de méthode.

Exemple : ordonner deux variables

On considère deux données a et b d’un type T quelconque, mais comparables. Autrement dit, les données de type T sont mutuellement comparables. Il existe donc une relation d’ordre total, notée ≤, sur les données de type T.

Cela signifie que, étant donnés deux éléments a et b de type T, il est toujours possible de les comparer, par exemple pour désigner celui qui est inférieur ou égal à l’autre. Les données a et b peuvent être des nombres, comme des entiers par exemple, mais pas seulement. Ils peuvent aussi être des caractères ou des chaînes de caractères, comme des phrases du langage courant par exemple, puisque l’ordre alphabétique, entre autres, permet de les comparer. Pour indiquer que le type T est quelconque, mais que les données de type T sont toutes comparables mutuellement, on notera, par convention :

a, b : Timages/flechedroite.pngCOMPARABLE 

On indique ainsi que le type Tdérive du type COMPARABLE, ou que toute donnée de type T est aussi de type COMPARABLE. Une autre façon de noter la même idée est de préciser que a et b appartiennent au type (T, ≤) :

a, b : (T, ≤) 

On veut écrire un algorithme qui classe a et b en ordre croissant.

Il s’agit d’écrire la définition d’une suite d’instructions qui laissent a et b tels que ab. On peut donc déjà donner la spécification de l’algorithme avec ce que nous avons appris au chapitre « Programmes directs ». L’algorithme ci-dessous donne cette spécification.

Algorithme 1 : Spécification du classement de deux données comparables

Algorithme classer 
    # Classe `a' et `b' en ordre croissant. 
Entrée 
    a, b : Timages/flechedroite.pngCOMPARABLE  
 postcondition 
    a ≤ b 
fin classer 

Dans la réalisation de cet algorithme, seule l’opération de classement des deux nombres...

Exercices résolus

Exercice résolu 1 : Tri de trois comparables

On donne trois données de type T qui dérive de COMPARABLE.

Écrire l’algorithme qui classe ces trois données en ordre croissant.

Solution

Les spécifications sont simples et ressemblent à celles du tri de deux éléments.

Algorithme 10 : Tri de trois comparables : Spécification

Algorithme classer3 
    # Classe `a', `b' et `c' en ordre croissant. 
 
Entrée  
    a, b, c : Timages/flechedroite.PNGCOMPARABLE 
 postcondition  
    a ≤ b ≤ c 
fin classer3 

La réalisation est cependant moins évidente que celle du classement de deux éléments. Commençons par remettre en ordre a et b :

si  
    a > b 
alors 
    # a > b ; `c' est à placer 
    échanger(a, b) # a < b ; `c' à placer  
    Placer `c' par rapport à `a' et `b' 
sinon ...

Exercices

Vous trouverez des propositions de solutions pour les exercices 1, 2, 3 et 8 dans les éléments en téléchargement disponibles depuis la page Informations générales.

Exercice 1 : Successeur d’un JOUR de la semaine

Le type JOUR définit par énumération un jour de la semaine. Dans l’exercice qui détermine le jour du 1er Mai d’une année donnée, on a aussi spécifié une fonction successeur pour un jour de la semaine. Il reste à donner une définition de cette fonction.

Donner une définition complète de la fonction successeur pour un jour de la semaine. 

Nous ne disposons pas encore des outils permettant de donner une définition « élégante » de cette fonction. Ce sera fait plus tard.

Exercice 2 : Nombres, somme et produit

On donne deux nombres quelconques.

Classer ces deux nombres par rapport à leur somme et leur produit.

Ainsi, par exemple, étant donnés a = -15 et b = 6, on obtient a x b < a < a + b < b dont les valeurs sont, dans l’ordre : -90, -15, -9 et 6.

Exercice 3 : Remise

Un commerçant accorde une remise de 5 % pour tout achat d’un montant compris entre 100 et 500 € et 8 % au-delà.

Écrire l’algorithme de calcul du montant de la remise sur un achat donné.

Exercice 4 : Encore une moyenne

Un professeur souhaite écrire un programme qui calcule la moyenne des quatre notes obtenues par ses élèves...

Résumé

Ce chapitre a présenté l’alternative. C’est une construction algorithmique qui permet de choisir un traitement parmi plusieurs, selon les valeurs d’un ensemble de prédicats. Ces valeurs sont obtenues à partir de l’état du système logiciel. Les traitements qui en résultent induisent le plus souvent un changement de cet état. L’alternative se note de différentes façons qui ne sont contraintes que par l’exigence de lisibilité et de correction des algorithmes obtenus.

Les instructions opérationnelles d’un algorithme, comme celles d’un programme informatique d’ailleurs, ne disent rien sur les états intermédiaires du système obtenu à la suite de l’exécution de ces instructions. Expliciter ces états est de première importance pour assurer la correction de l’algorithme. Cependant, l’alternative est une exception dans la mesure où le choix qu’elle prépare résulte de la valeur de prédicats qui, eux, expriment une propriété de l’état dans lequel se trouve le système logiciel.