sujet - CPGE Brizeux

publicité
IPT
Lycée Brizeux PCSI 2015 - 2016
Devoir surveillé n°1
Durée 2h

Consignes :
• Ce devoir est composé de 3 exercices indépendants les uns des autres.
• La résolution de ce devoir sera rendue sous la forme d’un programme qui devra porter votre nom, et figurer dans le
dossier Restitution de devoirs.
• La présence raisonnablement importante de commentaires clairs dans les programmes sera prise en compte dans la
notation.
• Quelques indications utiles à la résolution des exercices sont portées en annexe.
Apprenons à compter à Python !
Les fonctions usuelles (exp, ln, fonctions trigonométriques, etc.) et les constantes classiques (π, e, etc.) ne sont pas
présentes dans Python par défaut. Pour les utiliser, il faut charger des bibliothèques.
Le but de ce devoir est de programmer certaines d’entre-elles (sans charger de bibliothèques bien sûr).
EXERCICE 1 : VALEUR ABSOLUE
1. Écrire une fonction valeur_absolue ayant pour paramètre un nombre réel x et renvoyant la valeur absolue du nombre x.
2. Tester cette fonction pour les nombres -3.5 , 7 , 0 , -5 .
EXERCICE 2 : CALCUL DU NOMBRE π
Nous proposons ici deux méthodes de calcul d’une valeur approchée du nombre π.
Première méthode : à l’aide d’une suite
On définit la suite (S n )n∈ℕ par :
s0 =4
S n+1 =S n +
4×(−1)n+1
, pour tout n≥0
2 n+3
On peut montrer que lim S n=π .
n →∞
1. Écrire une fonction approx_pi1, ayant pour paramètre un entier naturel n et renvoyant le terme Sn de la suite n.
2. Créer et afficher la liste L1 des 15 premiers termes de la suite.
3. On rappelle que π≈3,1416 , donc π=3,14+ε , avec 0<ε≤2.10−3 . Écrire un programme permettant de déterminer
−3
l’entier n pour lequel 0< S n −3.14≤2.10
pour la première fois.
Deuxième méthode : à l’aide d’une intégrale
1
Nous savons que :
dt
∫ 1+t 2 = π4
0
On se propose ici de calculer une valeur approchée de cette intégrale à l’aide de la méthode des rectangles.
4. Définir la fonction f ayant pour paramètre un réel t et renvoyant la valeur de
1
1+t 2
5. Écrire une fonction approx_pi2 ayant pour paramètre un entier n et renvoyant une approximation de π en utilisant la
méthode des rectangles, avec n rectangles.
6. Afficher le résultat pour 10 rectangles, 100 rectangles et 1000 rectangles.
1
EXERCICE 3 : CONVERSIONS BINAIRE-DECIMALE et DECIMALE-BINAIRE
Dans cet exercice, il s'agit d'écrire un programme permettent de convertir un nombre binaire en base 10 et inversement.
Les trois parties sont indépendantes.
Première partie : conversion de binaire en base 10
1. Afficher le reste et le quotient de la division euclidienne par 10 de : 17, 320 et 110001
2. Écrire une fonction chiffres ayant pour paramètre un nombre entier x positif et renvoyant la liste de ses chiffres.
Exemple : Liste_chiffres(32) renverra la liste:[3,2].
Tester la fonction sur les entiers 320 et 11001.
3. Écrire une fonction decimale, ayant pour paramètre un nombre entier positif x écrit en binaire et renvoyant sa valeur en
base 10.
Exemple : decimale(10) renverra 2.
4. Tester la fonction pour les nombres en binaire : 10, 101 et 11001.
Deuxième partie : conversion de la base 10 en binaire, méthode 1
Cette exercice utilise deux méthodes indépendantes permettant de convertir un nombre entier positif de la base 10 en base
2.
5. L’écriture binaire d’un nombre pair se termine par un 0, et celle d’un nombre impair par un 1. En s’inspirant de ce qui a
été fait pour écrire la fonction chiffres, écrire une fonction binaire1, ayant pour paramètre un entier positif x et renvoyant la
liste de ses chiffres en binaire.
Exemple : binaire1(2) doit renvoyer la liste [1,0].
6. Tester la fonction avec les nombres 2 et121 .
Troisième partie : conversion de la base 10 en binaire, méthode 2
7. Écrire une fonction exposant_max , ayant pour paramètre un entier positif x et renvoyant l’exposant n de la plus grande
puissance de 2 tel que 2 n≤ x .
Exemple : exposant_max(5) doit renvoyer 2 , car 2² = 4 < 5 , (mais pas 3 car 23 = 8 > 5).De même, exposant_max(16) doit
renvoyer 4. Tester la fonction avec les nombres 5 et 16.
8. Écrire une fonction liste_exp(x), ayant pour paramètre un entier positif x et renvoyant la liste des exposants de 2 figurant
dans l’écriture de x.
Exemple :
17=2 4 +20 , donc liste_exp(17) doit renvoyer la liste [4,0].
9. Tester la fonction avec les nombres 16 et 17.
10. En utilisant la fonction liste_exp(x), écrire une fonction binaire2 , ayant pour paramètre un entier positif x et renvoyant
la liste de ses chiffres en binaire.
Exemples : binaire2(2) doit renvoyer la liste [1,0] et binaire2(17) doit renvoyer la liste [1,0,0,0,1].
4. Tester avec les nombres 2, 17 et 121.
Annexe
A propos de la base 2:
La valeur d'un nombre écrit en base 2 est obtenue par somme de puissances de 2. Par exemple, le nombre dont la
représentation binaire est 100101 vaut 1×2 5 +0×24 +0×23 +1×22 +0×21 +1×2 0 =45.
Instructions sur la manipulation des listes en Python :
• concaténation de 2 listes : L = L + [3] « ajoute » 3 à la fin de la liste L, L = [3] + L ajoute 3 au début de liste L.
• len(L) permet d'accéder au nombre d’éléments de la liste L .
• L=[] permet de construire une liste vide.
La division euclidienne en Python :
• x //y permet d'obtenir le quotient de la division euclidienne de x par y
• x%y permet d'obtenir le reste de la division euclidienne de x par y.
2
Téléchargement