Vous êtes sur la page 1sur 5

2022-2023 TP n° 2 (1 heure) Informatique

Fonctions et boucles
I Écriture de fonctions élémentaires
1 x+y
Q1 Définir les fonctions inverse : x 7−→ et moyenne : (x, y) 7−→ .
x 2
Par exemple, si x vaut à 2, alors moyenne(x,inverse(x)) renvoie 1.25.
Q2 (a) Écrire les fonctions volume(r:float) -> float et aire(r:float) -> float qui
renvoient respectivement le volume d’une boule et l’aire d’une sphère de rayon r.
(b) Écrire un script qui affiche "Le volume de la boule est... et son aire est..." en utilisant
les fonctions précédemment écrites. Par exemple, si r vaut 2, alors volume(r) affiche
Le volume de la boule est 33.5103216... et son aire est 50.2654824....

II Utilisation de fonctions auxiliaires


Q3 Écrire une fonction mini2(a:float, b:float) -> float qui renvoie le plus petit des
nombres a et b.
Q4 Écrire une fonction mini3(a:float, b:float, c:float) -> float qui renvoie le plus
petit des nombres a, b et c (on utilisera la fonction précédente).
Q5 Écrire une fonction mini4(a:float, b:float, c:float, d:float) -> float qui ren-
voie le plus petit des nombres a, b, c et d (on utilisera les fonctions précédentes).

III Écriture de fonctions contenant des boucles


Q6 Un peu de factorielle.
1. Écrire une fonction factorielle(n:int) -> int qui renvoie n! = n(n − 1)... × 2 × 1 avec
la convention 0! = 1. Documenter la fonction en indiquant la précondition n ≥ 0.
n
1
2. Écrire une fonction mystere(n:int) -> float qui renvoie la somme
X
.
k=0 k!
À partir de plusieurs valeurs de n, conjecturer la valeur vers laquelle converge cette série.
Q7 Écrire une fonction chaine_repetee(n:int, s:str) -> str qui renvoie la chaîne de
caractères s répétée n fois. Par exemple entier chaine_repetee(3, 'ab') doit renvoyer
’ababab’.
Quels résultats attend-on pour n=0 ? pour n=1 ? pour s=” ?
Documenter la fonction en conséquence.
n
1
Q8 Écrire une fonction petit_gamma(n:int) -> float qui calcule la différence
X
− ln(n).
k=1 k
N’oubliez pas de documenter une précondition sur n.
Cette différence converge vers une constante appelée la constante d’Euler et notée γ.
La convergence est cependant lente : donner une valeur approchée de γ avec n=108 .
Q9 Une banque propose de rémunérer l’épargne à 3% par an les années paires et 1.5% par an les
années impaires. Écrire une fonction capital(annee:int, placement:float) -> float
qui renvoie le montant récupéré en ayant déposé placement euros le premier janvier 2021
jusqu’au 31 décembre de annee.
Q10 Soit la suite (un )n∈N définie par son premier terme u0 ∈ R∗+ et pour tout entier naturel n
1
par la relation : un+1 = un − 1+u 2 . On admet que (un )n∈N diverge vers −∞. Cette suite
n
admet donc un nombre fini de valeurs strictement positives.

Lycée Michelet - CPGE 1re année 1


2022-2023 TP n° 2 (1 heure) Informatique

Écrire une fonction DernierPositif qui prend en entrée un réel u0 et renvoie le rang n du
dernier terme strictement positif de cette suite.

IV Exercices complémentaires
Q11 Écrire une fonction distance(A:tuple, B:tuple) -> float d’argument deux couples de
nombres et qui renvoie la distance du point A au point B.
Quelle est la distance du point (1, 2) au point (3, 5) ?
Q12 Une somme intéressante
(a) Déclarer une fonction sommation qui prend en entrée une fonction g ainsi qu’un entier
n−1
X
n, puis qui renvoie la valeur de g(k).
k=0
(b) Calculer, à l’aide la fonction sommation, la valeur de la somme des 3 premiers nombres
impairs, puis des 100 premiers nombres impairs. Pouvait-on anticiper ce résultat ?
n−1
4(−1)k
(c) Calculer, à l’aide la fonction sommation, la valeur de un =
X
pour n = 100,
k=0 2k + 1
puis n = 10 000 et n = 1 000 000. Qu’est-ce que ces valeurs nous incitent à conjecturer ?

Lycée Michelet - CPGE 1re année 2


2022-2023 TP n° 2 (1 heure) Informatique

Corrigé
Q1
2 def inverse ( x : float ) -> float :
3 return 1/ x
4
5 def moyenne ( x : float , y : float ) -> float :
6 return ( x + y ) /2
7
8 x = 2
9 print ( moyenne (x , inverse ( x ) ) )

Q2 (a)
12 from math import pi
13
14 def volume ( r : float ) -> float :
15 return (4/3) * pi * r **3
16
17 def aire ( r : float ) -> float :
18 return 4* pi * r **2

(b)
21 r = 2
22 print ( " Le volume de la boule est {} et son aire est {} " . format (
volume ( r ) , aire ( r ) ) )

Q3
25 def mini2 ( a : float , b : float ) -> float :
26 if a <= b :
27 return a
28 else :
29 return b

Q4
32 def mini3 ( a : float , b : float , c : float ) -> float :
33 return mini2 (a , mini2 (b , c ) )

Q5
36 def mini4 ( a : float , b : float , c : float , d : float ) -> float :
37 return mini2 ( mini2 (a , b ) , mini2 (c , d ) )

Q6
40 def factorielle ( n ) :
41 f = 1
42 for i in range (2 , n +1) :
43 f = f * i
44 return f
45
46 def mystere ( n ) :
47 somme = 0
48 for k in range ( n +1) :
49 somme = somme + 1/ factorielle ( k )
50 return somme
51
52 print ( mystere (20) )
53 # La s é rie semble converger rapidement vers le nombre e .

Lycée Michelet - CPGE 1re année 3


2022-2023 TP n° 2 (1 heure) Informatique

Q7
56 def chaine_repetee ( n : int , s : str ) -> str :
57 ''' renvoie la chaine s repetee n fois . On suppose n >=0.
58 Si n =0 , renvoie la chaine vide . Si s = ' ' , renvoie '' quelle que soit
la valeur de n '''
59 c = ''
60 for i in range ( n ) :
61 c = c + s
62 return c

Q8
65 from math import log
66

67 def petit_gamma ( n : int ) -> float :


68 ''' renvoie la diff é rence entre la somme harmonique et ln ( n ) . On
suppose n un entier naturel non nul . '''
69 somme = 0
70 for k in range (1 , n +1) :
71 somme = somme + 1/ k
72 return somme - log ( n )
73
74 print ( " Une valeur approch é e de gamma est " , petit_gamma ( int (1 e8 ) ) )

Q9
77 def capital ( annee : int , placement : float ) -> float :
78 ''' on suppose ann é e >= 2021 et placement positif '''
79 annee0 = 2021
80 for i in range ( annee - annee0 +1) :
81 if annee %2 == 0:
82 placement = placement * 1.03
83 else :
84 placement = placement * 1.015
85 return placement

Q10
88 def DernierPositif ( u0 : float ) -> int :
89 if u0 <= 0:
90 return - float ( ' inf ') # l ' infini n é gatif
91 else :
92 u = u0
93 n = 0
94 while u >= 0:
95 u = u - 1/(1 + u **2)
96 n = n + 1
97 return n - 1
98
99 print ( " La plus petite valeur de n tel que un soit strictement positif
est " , DernierPositif (4) )
100 # On obtient 26 pour n =4.

Q11
103 def distance ( A : tuple , B : tuple ) -> float :
104 xA , yA = A
105 xB , yB = B
106 return (( xB - xA ) **2+( yB - yA ) **2) **0.5
107
108 A = (0 ,0)
109 B = (1 ,1)
110 print ( distance (A , B ) )
111 # On obtient sqrt (2) .

Lycée Michelet - CPGE 1re année 4


2022-2023 TP n° 2 (1 heure) Informatique

Q12
114 # questions a et b
115 def g ( k : int ) -> float :
116 return 2* k +1
117

118 def sommation ( g : callable , n : int ) -> float :


119 somme = 0
120 for k in range ( n ) :
121 somme = somme + g ( k )
122 return somme
123

124 print ( sommation (g ,3) ) # somme des trois premiers impairs


125 print ( sommation (g ,100) ) # somme des cents premiers impairs
126
127 # question c
128 def h ( k : int ) -> float :
129 return 4*( -1) ** k /(2* k +1)
130
131 print ( sommation (h ,100) )
132 print ( sommation (h ,10000) )
133 print ( sommation (h ,1000000) )
134 # La s é rie donn é e semble converger vers le nombre pi .

Lycée Michelet - CPGE 1re année 5

Vous aimerez peut-être aussi