CPES Scientifique Informatique TP 4 Tests et boucles Résumé Ce TP aborde quelques structures de controle de base : les instructions à branchement conditionnel et les boucles while. 1 Tests à alternatives 1.1 Description Les test à alternatives permettent de faire dépendre les instructions à exécuter du résultat d’un test. Il y a plusieurs variantes. 1.1.1 Test simple La variante la plus simple sont les tests à une alternative. Leur syntaxe est la suivante : i f ( condition ) : # Instructions (1) # Instructions (2) ... # I n s t r u c t i o n s (n) Dans cette premiere variante les instructions (1), . . . , (n) sont exécutées si et seulement si l’expression « condition » s’évalue à True. Par exemple, si on définit la fonction suivante : def f ( x ) : res = 0 i f ( x >= 0 ) : res = 1 return r e s alors dans la console on a >>> f(0) 1 >>> f(-1) 0 1.1.2 Test avec deux alternatives On peut aussi donner deux alternatives : 1 i f ( condition ) : # Instructions # Instructions ... # Instructions else : # Instructions # Instructions ... # Instructions (T 1) (T 2) (T n ) (F 1) (F 2) (F m) Dans cette variante, les instructions (T 1), . . . , (T n) sont exécutées si et seulement si l’expression « condition » s’évalue à True, et les instructions (F 1), . . . , (F m) sont exécutées si et seulement si l’expression « condition » s’évalue à False, Par exemple, avec def t e s t _ i f _ e l s e ( x ) : i f x >= 0 : return True else : return F a l s e on a, dans la console : >>> test_if_else(0) True >>> test_if_else(-1) False Attention. Dans le test avec deux alternatives, l’expression condition n’est évaluée qu’une seule fois. 1.1.3 Tests imbriqués Enfin, Python offre un moyen simple d’imbriquer des tests : i f ( condition_1 ) : # I n s t r u c t i o n s a executer s i " condition_1 " e s t v r a i e e l i f ( condition_2 ) : # Instructions a executer si : # " c o n d i t i o n _ 1 " e s t f a u s s e ET " c o n d i t i o n _ 2 " e s t v r a i e Les tests imbriqués peuvent être combinés avec des tests à alternatives : i f ( condition_1 ) : # I n s t r u c t i o n s a executer s i " condition_1 " e s t v r a i e e l i f ( condition_2 ) : # Instructions a executer si : # " c o n d i t i o n _ 1 " e s t f a u s s e ET " c o n d i t i o n _ 2 " e s t v r a i e else : # Instructions a executer si : # " c o n d i t i o n _ 1 " e s t f a u s s e ET " c o n d i t i o n _ 2 " e s t f a u s s e Par exemple,avec 2 def t e s t _ i f _ e l i f ( x ) : if x > 0: return 1 e l i f x == 0 : return 0 else : return −1 on a, dans la console : >>> test_if_elif(5) 1 >>> test_if_elif(0) 0 >>> test_if_elif(-10) -1 1.2 Exercices Question 1.1 (Calcul du maximum de deux nombres). Écrire et tester une fonction Python prennant deux arguments et renvoyant le maximmum de ses arguments. Question 1.2 (Calcul du maximum de trois nombres). Même chose qu’à la question précédente, mais avec trois arguments. 2 Boucles « tant que » 2.1 Description Les « boucles tant-que » (ou boucles « while ») permettent de répéter l’exécution d’instructions tant qu’une certaine condition est satisfaite. La syntaxe est la suivante : while ( c o n d i t i o n ) : # Instructions a executer # t a n t que " c o n d i t i o n " e s t v r a i e Par exemple, avec def f ( n ) : i = n res = 0 while ( i != 0 ) : i = i − 1 res = res + 1 return r e s on a >>> f(0) 0 >>> f(1) 1 >>> f(2) 3 2 >>> f(3) 3 2.2 Exercices Question 2.1. On considère la fonction « f » ci-dessus. 1. Décrire l’exécution de « f » sur les entrées 0, 1, 2, 3 et 4. 2. Que calcule « f » ? Question 2.2. Considérons la fonction « g » ci-dessous : def g ( x ) : res = 0 while ( x > 0 ) res = res + x x = x − 1 return r e s 1. Décrire l’exécution de « g » sur les entrées 0, 1, 2, 3 et 4. 2. Que calcule « g » ? Question 2.3. Considérons la fonction « h » ci-dessous : def h ( n ) : res = 1 while ( n > 0 ) : res = res ∗ n n = n−1 1. Décrire l’exécution de « h » sur les entrées 0, 1, 2 et 3. 2. Que calcule « h » ? Question 2.4 (Somme des n premiers entiers pairs). Écrire et tester une fonction Python prennant en argument un entier « k » et renvoyant la sommes des k premiers entiers pairs. Question 2.5 (Somme des n premiers carrés). Écrire et tester une fonction Python prennant en argument un entier « n » et renvoyant la sommes des n premiers carrés. Question 2.6 (Division Euclidienne). 1. Écrire et tester une fonction Python calculant le reste de la division euclidienne. 2. Écrire et tester une fonction Python calculant le quotient de la division euclidienne. Question 2.7 (Partie entière). Écrire une fonction Python qui prend en agument un nombre à virgule flottante positif et qui renvoie sa partie entière. 4