sujet

publicité
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
Téléchargement