Livre_silo 30 août 2013 16:32 Page 93
¨
©
¨
©
¨
©
¨
©
C o p y r i g h t E y r o l l e s
93
4 – Instructions : langage minimal de l’algorithmique
5 Chacun des cas construits peut être lui-même écrit à l’aide d’une instruction conditionnelle, ce qui permet de structurer l’écriture du programme.
6 Ne pas oublier de revenir au même niveau d’indentation que l’instruction if pour
la première instruction qui suit l’instruction conditionnelle.
Exercice 4.8 Écrire un programme qui détermine si un automobiliste est en excès de vitesse, connaissant
sa vitesse et le type de voie sur lequel il circule (donné sous forme d’une chaîne de caractères).
Les cas à distinguer pour le type de voie sont par exemple 'agglomération', 'route' et 'autoroute' ; il
serait bien entendu possible d’en prévoir d’autres. Grâce au mot-clé else, il n’est pas nécessaire de citer
explicitement le dernier cas, mais on peut mettre un commentaire pour expliciter à quoi il correspond.
Ensuite, dans chacun des cas, il faut distinguer si l’automobiliste dépasse la vitesse limite autorisée ou
non. On peut donc écrire le programme suivant.
if voie == 'agglomération':
if vitesse > 50:
exces = True
else:
exces = False
elif voie == 'route':
if vitesse > 90:
exces = True
else:
exces = False
else: # voie == 'autoroute'
if vitesse > 130:
exces = True
else:
exces = False
On remarque cependant que l’instruction conditionnelle interne est toujours de la même forme et on aura
donc ici plutôt intérêt à utiliser une variable pour ne pas avoir à la répéter.
if voie == 'agglomération':
limite = 50
elif voie == 'route':
limite = 90
else: # voie == 'autoroute'
limite = 130
if vitesse > limite:
exces = True
else:
exces = False
La seconde instruction conditionnelle n’est ici plus imbriquée dans la première, elle doit donc être placée
au même niveau d’indentation.
Enfin, on peut remarquer que, puisqu’on ne cherche qu’à mettre une valeur booléenne dans
la variable exces, la dernière instruction conditionnelle pourrait être remplacée par l’affectation
exces = vitesse > limite.
Précédent

- 106/402

Suivant