T.P. 1
Décodage
I - Lecture de code
Exercice 1. (Variables,-)Pour chacune des question suivantes, déterminer les contenus des variables après interprétation de la suite d'instructions.
1.
a1 = 1 i = 1 a i = 3 i = 3 a i = 6 2.
a = 2 b = 4 c = a b = a c = b − a
3.
a = 4 b = 2 c = b b = a 4.
a = 4 b = 2 c = b b = a a = c
5.
x = 5
y = 2 * x + 3 x = 100
6.
a = 3 b = 4 x = a a = b b = x
Exercice 2. (Affectation parallèle,-)Déterminer les contenus des variables après interprétation de la suite d'instructions.
1.Aectation classique.
x = 19 x = x + 2 y = x * 2
2. Aectation très pythonique.
x = 19
x , y = x + 2 , x * 2
Exercice 3. (Échange des contenus de deux variables,♥)On suppose que les variables x et y ont pour valeurs respectives les entiers 3 et 4.
1.Déterminer les contenus des variables après interprétation de la suite d'instructions.
x = x + y y = x − y x = x − y
2.Proposer une méthode qui échange le contenu de deux variables en utilisant une variable auxiliaire.
Exercice 4. (Fonctions,-)Déterminer les contenus des variables après interprétation de la suite d'instruc- tions.
1.
# x : i n t x = 5
def f c t 1 ( y ) :
""" number −> number """
return 3 * y + 25 x = f c t 1 ( x )
2.
# x : i n t x = 5
def f c t 1 ( x ) :
""" number −> number """
return 3 * x + 25 x = f c t 1 ( x )
x = f c t 1 ( x )
Stanislas A. Camanes
T.P. 1 MPSI 1
Exercice 5. (Fonctions,-)Déterminer les contenus des variables après interprétation de la suite d'instruc- tions.
1.
# x : i n t x = 3
def f c t 1 ( y ) :
""" number −> number """
# x : number x = 3 * y + 2 return x x = 5 def f c t 2 ( y ) :
""" number −> number """
return (2 * f c t 1 ( y ) + 2 * y ) x = f c t 1 ( x ) + 2 * f c t 2 ( x ) − 3
2.
# x : i n t x = 3
def f c t 1 ( y ) :
""" number −> number """
# x : number x = 3 * y + 2 return x x = 5
def f c t 2 ( y ) :
""" number −> number """
return (2 * f c t 1 ( y ) + 2 * y ) x = f c t 1 ( x ) + 2 * f c t 2 ( x ) − 3
Exercice 6. (Variables locales & globales)Déterminer, après interprétation des suites des instructions sui- vantes, la valeur renvoyée par l'appel f(10) ainsi que le contenu de la variable Ni (pour i= 1,2,3).
Parmi les fonctions suivantes, lesquelles permettent de retourner la multiplication par3? 1.
# N1 : i n t N1 = 3 def f ( x ) :
""" number −> number
"""
# N1 : i n t N1 = 4
return (N1 * x )
2.
# N2 : i n t N2 = 3
def f (N2) :
""" number −> number
"""
return (N2 * N2)
3.
def f ( x ) :
""" number −> number
"""
# N3 : i n t N3 = 3
return (N3 *x )
Exercice 7. (Alternatives,-)Pour chacune des fonctions f suivantes, déterminer la valeur de f(4).
1.
def f ( x ) :
""" i n t −> i n t """
# a : i n t a = 0
i f x % 2 == 0 : a = 0
e l i f x % 4 == 0 : a = 1
else : a = 3 return a
2.
def f ( x ) :
""" i n t −> i n t """
# a : i n t a = 0
i f x % 2 == 0 : a = 0 i f x % 4 == 0 :
a = 1 return a
3.
def f ( x ) :
""" i n t −> i n t """
i f x % 2 == 0 : return 0 i f x % 4 == 0 :
return 1
Exercice 8. (Boucle conditionnelle)Déterminer les contenus des variables après interprétation de la suite d'instructions.
# a , b , i : i n t a , b , i = 1 , 1 , 0 while i <= 1 0 :
i = 2 * i a = a + b b = 2 * a + i b = 3 * b
Stanislas A. Camanes
T.P. 1 MPSI 1
Exercice 9. (Listes,-)Déterminer les contenus des variables après interprétation de la suite d'instruc- tions.
# L : l i s t [ i n t ] L = [ ]
# n : i n t n = 3
for i in range ( 3 ) : i f i != 0 :
L . append ( i ) n = n + 1
for i in range (1 , 5 , 2 * (n−4)) : for j in range (0 , n ) :
i f j < i : L . append ( i ) L . append ( j )
Exercice 10. (Fonctions mystères)Déterminer la signature et les résultats retournés par chacune des fonc- tions suivantes.
1.
def mystere1 ( n ) : a = n // 3600 c = n % 3600 b = c // 60 c = c % 60 return ( a , b , c )
2.
def mystere2 ( n ) : u = 1
for x in range (1 , n ) : u = u * x
return u
3.
def mystere3 ( n ) : m = 0
while (m+1)**2 < n : m = m + 1
return m
4.
def mystere4 ( l i s t e ) : M = [ l i s t e [ 0 ] ]
n = len ( l i s t e )
for i in range ( 1 , n ) : M. append ( 0 )
M. append ( l i s t e [ i ] ) return M
II - Erreurs de code
Exercice 11. (Variables,-)Expliquer pourquoi les instructions suivantes renvoient des messages d'erreur.
1.
a = 4 b = 2 2 = a b = 3
2.
b = 2 b = a
3.
i = 3 b = 2 a i = 3 * i c = 2 * a3 + b
Stanislas A. Camanes
T.P. 1 MPSI 1
Exercice 12. (Fonctions, -) Expliquer pourquoi les programmes suivants ne renvoient pas une valeur approchée du volume.
1.
def vol ( l , r ) :
# volume : f l o a t volume = 3 . * l ^2
# a i r e : f l o a t a i r e = volume * r return a i r e
2.
def vol ( r , l ) :
return ( pi * r **2 * l )
3.
def vol ( r , l ) :
# a i r e : f l o a t a i r e = 3 . * r **2
# volume : f l o a t volume = a i r e * l return volume
4.
def vol ( r , l ) :
return ( volume = 3 * r **2 * l )
Exercice 13. (Listes)Expliquer pourquoi les instructions suivantes renvoient des messages d'erreur.
1.
L = [ 1 , 2 , 3 ] M = L
M[ 0 ] = 0 A = 10 / L [ 0 ]
2.
L = l i s t ( range ( 1 0 ) ) u , i = 0 , 0
while i <= len (L) : u = u + L [ i ]
i = i + 1
Exercice 14. (Alternatives)Expliquer pourquoi les instructions suivantes renvoient des messages d'erreur.
1.
def f ( x ) :
""" i n t −> i n t """
# a : i n t a = 0
i f x % 2 == 0 : a = 0
else x % 4 == 0 : a = 1
return a f ( 3 )
2.
def f ( x ) :
""" i n t −> i n t """
# a : i n t a = 0
i f x % 2 = 0 : a = 0 else :
a = 1 return a f ( 3 )
Stanislas A. Camanes