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'