INTRODUCTION |
Ce que l’on entreprend dans la vie de tous les jours dépend souvent de plusieurs conditions. Par exemple, la manière dont vous allez vous rendre à l’école dépend de la météo. Vous vous dites : « S’il pleut aujourd’hui, je prends les transports publics et dans le cas contraire, j’y vais en vélo ». De manière semblable, le flux d’instructions dans un programme peut également dépendre de certaines conditions. Les branchements conditionnels sont des structures de contrôle permettant à un programme de modifier son exécution sur la base de certaines conditions et sont essentiels à n’importe quel langage de programmation. Les instructions suivant le if` sont uniquement exécutées si la condition est vraie et, dans le cas contraire, ce sont les instructions du bloc else qui sont exécutées.
|
VALIDATION DE SAISIES |
from gturtle import * def square(sidelength): repeat 4: forward(sidelength) right(90) makeTurtle() s = inputInt("Enter the side length") if s < 300: square(s) else: print("The side length is too big") |
MEMENTO |
Les instructions du bloc if ne sont exécutées que si la condition est vraie et, dans le cas contraire, ce sont les instructions du bloc else qui sont exécutées. Le bloc else est facultatif. Remarquez le double point obligatoire après la condition du if et après le else. D’autre part, les instructions prenant part aux blocs if` et else doivent être indentées de manière cohérente. |
BRANCHEMENTS MULTIPLES |
À présent, on aimerait dessiner des carrés colorés. L’utilisateur peut spécifier la couleur via un nombre entier saisi dans la boîte de dialogue.On décide à l’aide d’une structure if de la couleur de remplissage à utiliser en fonction du nombre saisi. On teste d’abord si le nombre entré est 1 avec le bloc if.
from gturtle import * def square(): repeat 4: forward(100) right(90) makeTurtle() n = inputInt("Enter a number: 1:red 2:green 3:yellow") if n == 1: setFillColor("red") elif n == 2: setFillColor("green") elif n == 3: setFillColor("yellow") else: setFillColor("black") square() fill(10, 10)
|
MEMENTO |
Plusieurs conditions peuvent être évaluées de manière consécutive. Dans le cas où la condition du bloc if n’est pas vérifiée, l’interpréteur teste la condition du prochain bloc elif qui est une abréviation de else if. Si aucune des conditions elif n’est satisfaite, ce sont les instructions du bloc else qui sont exécutées. Une erreur de débutant courante dans l’écriture des conditions consiste à utiliser le signe = pour tester une égalité entre deux expressions au lieu du double égal ==. En effet, il faut se rappeler que le symbole = représente l’opérateur d’affectation à une variable et non l’opérateur de comparaison. |
CHOIX DE COULEUR, VARIABLES ALÉATOIRES |
Pour dessiner les différentes étoiles, on utilise la fonction star(), qui prend comme paramètres la taille de l’étoile ainsi qu’un paramètre fill qui peut être vrai (True) ou faux (False) et qui détermine si l’étoile doit être remplie de couleur ou non. from gturtle import * makeTurtle() def star(size, filled): if filled: startPath() repeat 9: forward(size) left(175) forward(size) left(225) if filled: fillPath() clear("black") repeat 5: color = askColor("Color selection", "yellow") if color == None: break setPenColor(color) setFillColor(color) setRandomPos(400, 400) back(100) star(100, True)
|
MEMENTO |
La fonction askColor() prend deux paramètres permettant de spécifier le texte affiche dans la barre de titre ainsi que la couleur initialement sélectionnée. Lorsque l’utilisateur clique sur le bouton OK, la fonction askColor retourne la couleur sélectionnée tandis qu’un clic sur le bouton Annuler force la fonction à retourner la valeur spéciale None. Il est donc possible d’utiliser une structure if pour tester si l’utilisateur a annulé le choix de la couleur et réagir en conséquence en sortant de la boucle repeat par le mot-clé break. Une variable ou un paramètre qui prend les valeurs True ou False est qualifié de booléen [plus... nom provient du mathématicien George Boole qui a jeté les bases de la logique booléenne constituant un des fondements théoriques de l’informatique]. Il n’est pas très élégant d’écrire if filled == True : puisque filled est une valeur booléenne. On peut simplement écrire if filled if filled: |
EXERCICES |
|