Livre_silo 30 août 2013 16:32 Page 140
¨
©
¨
©
¨
©
¨
©
C o p y r i g h t E y r o l l e s
140
Informatique pour tous
Exercice 5.18 Qu’affiche le programme suivant ? Pourquoi ?
def g(x):
global a
a = 10
return 2 * x
def f(x):
v = 1
return g(x) + v
a = 3
print(f(6)+a)
Proposer une adaptation de ce programme dans laquelle le résultat affiché ne dépend pas de l’ordre
d’évaluation.
Exercice 5.19 Qu’affiche le programme suivant ? Pourquoi ?
def g(x):
global v
v = 1000
return 2 * x
def f(x):
v = 1
return g(x) + v
a = 3
print(f(6)+a)
Proposer une adaptation de ce programme dans laquelle le résultat affiché ne dépend pas de l’ordre
d’évaluation.
Exercice 5.20 Soit f la fonction suivante :
def f(x):
while (True):
x = x + 1
if (x == 1000):
return 2 * x
Que renvoie l’appel f(500) ?
Exercice 5.21 ** Écrire une fonction qui calcule le PGCD des deux entiers naturels passés en arguments
en suivant l’algorithme d’Euclide, à l’aide d’une boucle while. Démontrer la correction et la terminaison
de cette fonction.
Exercice 5.22 On écrit un programme qui gère automatiquement le score au tennis.
1 Écrire une condition booléenne qui permet de décider si un joueur a gagné un jeu.
2 Définir une fonction qui compte les points au cours d’un jeu. En entrée, on demande répétitivement
quel joueur, 1 ou 2, gagne le point ; au fur et à mesure, on calcule et on affiche le score. Le programme
s’arrête dès qu’un joueur gagne le jeu, après avoir affiché le nom du vainqueur.
3 Pour faciliter les tests, écrire une seconde version de cette fonction avec pour seule entrée une chaîne
de caractères qui contient les numéros successifs des joueurs marquant les points ; la fonction lit cette
chaîne caractère par caractère pour compter les points. Ainsi, l’entrée 211222 sera comprise comme : le
joueur 2 gagne un point, puis le joueur 1 en gagne deux, puis le joueur 2 en gagne trois et le joueur 2
gagne donc le jeu.
¨
©
¨
©
¨
©
¨
©
C o p y r i g h t E y r o l l e s
140
Informatique pour tous
Exercice 5.18 Qu’affiche le programme suivant ? Pourquoi ?
def g(x):
global a
a = 10
return 2 * x
def f(x):
v = 1
return g(x) + v
a = 3
print(f(6)+a)
Proposer une adaptation de ce programme dans laquelle le résultat affiché ne dépend pas de l’ordre
d’évaluation.
Exercice 5.19 Qu’affiche le programme suivant ? Pourquoi ?
def g(x):
global v
v = 1000
return 2 * x
def f(x):
v = 1
return g(x) + v
a = 3
print(f(6)+a)
Proposer une adaptation de ce programme dans laquelle le résultat affiché ne dépend pas de l’ordre
d’évaluation.
Exercice 5.20 Soit f la fonction suivante :
def f(x):
while (True):
x = x + 1
if (x == 1000):
return 2 * x
Que renvoie l’appel f(500) ?
Exercice 5.21 ** Écrire une fonction qui calcule le PGCD des deux entiers naturels passés en arguments
en suivant l’algorithme d’Euclide, à l’aide d’une boucle while. Démontrer la correction et la terminaison
de cette fonction.
Exercice 5.22 On écrit un programme qui gère automatiquement le score au tennis.
1 Écrire une condition booléenne qui permet de décider si un joueur a gagné un jeu.
2 Définir une fonction qui compte les points au cours d’un jeu. En entrée, on demande répétitivement
quel joueur, 1 ou 2, gagne le point ; au fur et à mesure, on calcule et on affiche le score. Le programme
s’arrête dès qu’un joueur gagne le jeu, après avoir affiché le nom du vainqueur.
3 Pour faciliter les tests, écrire une seconde version de cette fonction avec pour seule entrée une chaîne
de caractères qui contient les numéros successifs des joueurs marquant les points ; la fonction lit cette
chaîne caractère par caractère pour compter les points. Ainsi, l’entrée 211222 sera comprise comme : le
joueur 2 gagne un point, puis le joueur 1 en gagne deux, puis le joueur 2 en gagne trois et le joueur 2
gagne donc le jeu.
