Structures de contrôle

publicité
Informatique et Sciences du Numérique 2012
Structures de contrôle
Le traitement conditionnel:
Introduction:
Les instructions conditionnelles permettent d'exécuter une ou plusieurs actions en fonction
d'une condition.
L'instruction SI ...• ALORS:
SI il fait beau ALORS
je sors.
# fin si
est une instruction conditionnelle.
SI il fait beau ALORS
#début
je vais chercher mon ami
nous sortons
#fin;
# fin si
Dans le deuxième exemple, on voit que si la CONDITION est satisfaite plusieurs ACTIONS
sont groupées entre #début ... #fin qui ne sont que des commentaires.
Forme générale de l'instruction:
si CONDITION alors
#début
ACTIONS
#
fin;
# fin
si
Représentation schématique :
On voit qu'une conditionnelle permet de changer la séquence d'instructions exécutées.
Informatique et Sciences du Numérique 2012
Codage Python :
if CONDITION:
ACTIONS
Remarquer que ALORS est remplacé par les : qui suivent la condition.
Que ACTIONS qui représente un groupe d'instructions est décalé à droite par rapport à if.
C'est l'indentation. L'indentation permet de grouper les instructions.
Etude d'un exemple:
Soit x une variable numérique, on veut réaliser un programme qui affiche l'inverse de x.
Algorithme :
Un algorithme est la succession des étapes à suivre en vue d'obtenir un résultat.
Langage naturel :
-Iire x
- si x=0 alors
#debut
afficher 'calcul impossible' # la division par 0 est impossible
interrompre le programme
#fin
#fin si
- afficher (1/x)
Codage (peut être) Python :
#demande une valeur numérique et affiche son inverse
x=float(input('x? :'))
#input permet d'ouvrir une invitation à entrer un nombre
#input retourne une chaîne de caractères tapés au clavier:
#par exemple :'3.14'; float change cette chaîne en un nombre
#décimal ou "à virgule flottante" (float) le nombre 3.14
if x==0:
# noter la condition avec le == et les : après le 0.
print('Calcul impossible')
exit()
# fin si
print('Inverse de x',1/x)
Noter les nombreux commentaires. Noter l'indentation pour le bloc d'instructions (print,exit)
sous le if.
Taper ce programme Python et l'exécuter plusieurs fois avec des nombres entiers,
décimaux et la valeur 0 (zéro).
Pour cette valeur 0, l'interpréteur Python affiche :
Informatique et Sciences du Numérique 2012
Ce message indique que l'instruction exit() n'est pas satisfaisante même si le programme
peut être fermé par Ok.
L'interpréteur Python attend d'autres instructions ; il y a d'autres lignes sous le exit() qui ne
seront jamais exécutées.
Donc exit(). (exit exit())
Comment faire?
L'instruction SI .... ALORS .... SINON ..... :
SI il fait beau ALORS
#début
je vais chercher mon ami; (Actions 1)
nous sortons;
#fin
SINON
#debut
je réunis des amis (Actions 2)
nous travaillons à la maison
#fin
# fin si
Cette fois ci, dans les deux branches, il y a des actions (différentes) à exécuter.
Correction du codage de l'algorithme "inverse"
Langage naturel :
-Iire x
- si x=0 alors
#debut
afficher 'calcul impossible' # la division par x est impossible
#fin
sinon
#debut
afficher('Inverse de x :',1/x)
#fin
#fin si
Informatique et Sciences du Numérique 2012
Codage Python :
#demande une valeur numérique et affiche son inverse
x=float(input('x? :'))
#input permet d'ouvrir une invitation à entrer un nombre
#input retourne une chaîne de caractères tapés au clavier:
#par exemple :'3.14'; float change cette chaîne en un nombre
#décimal ou "à virgule flottante" (float) le nombre 3.14
if x==0:
# noter la condition avec le == et les : après le 0
print('Calcul impossible')
else:
# noter les : après le else
print('Inverse de x :',1/x)
# fin si
Taper ce programme Python et l'exécuter plusieurs fois avec des nombres entiers,
décimaux et la valeur 0 (zéro).

Observer qu'il se termine normalement. Soit par une branche, soit par l'autre, on arrive à
la fin du programme : il n'y a alors plus d'instruction à exécuter.
Instructions conditionnelles imbriquées:
Soit a,b,c trois variables contenant trois nombres entiers différents, on recherche le plus petit
des trois.
Algorithme:
si a > b alors
si b >c alors
écrire 'c est le plus petit';
sinon
écrire 'b est le plus petit';
sinon
si a > c alors
écrire 'c est le plus petit';
sinon
écrire 'a est le plus petit'
 Combien d'instructions 'si... sinon' imbriquées dans cet algorithme?
 Y-a-t-il un,deux ou trois niveaux d'identation?
Réaliser le codage Python de ce programme. Sauvegarder sous le nom pluspetit.py
Le signe du produit de deux nombres : Soit deux entiers relatifs x,y, écrire le programme
qui donne le signe de x*y sans calculer le produit. Sauvegarder sous le nom 'produit.py'
Téléchargement