Upload
abdel-daa
View
2
Download
0
Embed Size (px)
DESCRIPTION
yd
Citation preview
TD2 : Premiers programmes en python
MPSI1 - Lycee Thiers
2013/2014
Exercice 1Exercice 2Exercice 3Exercice 4Exercice 5Exercice 6
Exercice 1Exercice 1 : EnonceExercice 1 : Corrige
Exercice 2Exercice 2 : EnonceExercice 2 : Corrige
Exercice 3Exercice 3 : EnonceExercice 3 : Corrige
Exercice 4Exercice 4 : EnonceExercice 4 : Corrige
Exercice 5Exercice 5 : EnonceExercice 5 : Corrige
Exercice 6Exercice 6 : EnonceExercice 6 : Corrige
MPSI1 - Lycee Thiers TD2 : Premiers programmes en python
Exercice 1Exercice 2Exercice 3Exercice 4Exercice 5Exercice 6
Exercice 1 : EnonceExercice 1 : Corrige
Exercice 1 : Enonce
Ecrire une fonction abs() prenant en parame`tre un nombre et qui retourne sa valeur absolue, sansutiliser le module math.
MPSI1 - Lycee Thiers TD2 : Premiers programmes en python
Exercice 1Exercice 2Exercice 3Exercice 4Exercice 5Exercice 6
Exercice 1 : EnonceExercice 1 : Corrige
Exercice 1 : Corrige
Solution :
Lexecution donne :
lexecution de abs(x) avec x de type ni int ni float produira une erreur...
MPSI1 - Lycee Thiers TD2 : Premiers programmes en python
Exercice 1Exercice 2Exercice 3Exercice 4Exercice 5Exercice 6
Exercice 2 : EnonceExercice 2 : Corrige
Exercice 2 : Enonce
Ecrire une fonction fact() prenant en parame`tre un nombre entier positif et qui retourne safactorielle (sans utiliser le module math).
On rappelle que : n N, n! = nk=2 k (remarquer que 0! = 1! = 1).
MPSI1 - Lycee Thiers TD2 : Premiers programmes en python
Exercice 1Exercice 2Exercice 3Exercice 4Exercice 5Exercice 6
Exercice 2 : EnonceExercice 2 : Corrige
Exercice 2 : Corrige
Reponse :
fact(x) avec x negatif ou de type non int produira un resultat absurde...
MPSI1 - Lycee Thiers TD2 : Premiers programmes en python
Exercice 1Exercice 2Exercice 3Exercice 4Exercice 5Exercice 6
Exercice 3 : EnonceExercice 3 : Corrige
Exercice 3 : Enonce
Ecrire une fonction E() prenant en parame`tre un nombre et qui retourne sa partie entie`re (sansutiliser le module math).
(la partie entie`re dun reel x , notee x, est le plus grand entier inferieur ou egal a` x).
MPSI1 - Lycee Thiers TD2 : Premiers programmes en python
Exercice 1Exercice 2Exercice 3Exercice 4Exercice 5Exercice 6
Exercice 3 : EnonceExercice 3 : Corrige
Exercice 3 : Corrige
Reponse :
MPSI1 - Lycee Thiers TD2 : Premiers programmes en python
Exercice 1Exercice 2Exercice 3Exercice 4Exercice 5Exercice 6
Exercice 4 : EnonceExercice 4 : Corrige
Exercice 4 : Enonce
Ameliorer le programme permettant de donner lecriture dun nombre en base 16, pour que leschiffres soient 0-9, A, B, C, D, E, F et que lecriture debute par le prefixe 0x.
MPSI1 - Lycee Thiers TD2 : Premiers programmes en python
Exercice 1Exercice 2Exercice 3Exercice 4Exercice 5Exercice 6
Exercice 4 : EnonceExercice 4 : Corrige
Exercice 4 : Corrige
Reponse :
MPSI1 - Lycee Thiers TD2 : Premiers programmes en python
Exercice 1Exercice 2Exercice 3Exercice 4Exercice 5Exercice 6
Exercice 4 : EnonceExercice 4 : Corrige
Exercice 4 : Corrige
Algorithme un peu plus rapide :
MPSI1 - Lycee Thiers TD2 : Premiers programmes en python
Exercice 1Exercice 2Exercice 3Exercice 4Exercice 5Exercice 6
Exercice 5 : EnonceExercice 5 : Corrige
Exercice 5 : Enonce
Ecrire un programme qui calcule le PGCD de deux nombres a` laide de lalgorithme dEuclide, quelon commencera par justifier :
a, b N, a > b
pgcd(b, r) = pgcd(a, b)Calcul du reste r dea b b rla division euclidienne
de a par b
r = 0 ?
pgcd = b
Oui
Non
MPSI1 - Lycee Thiers TD2 : Premiers programmes en python
Exercice 1Exercice 2Exercice 3Exercice 4Exercice 5Exercice 6
Exercice 5 : EnonceExercice 5 : Corrige
Exercice 5 : Corrige
Preuve. Tout dabord lorsque r = 0, a est un multiple de b et donc pgcd(a,b) = b. Lorsque r > 0.Puisque q N, a = qb + r , tout diviseur de b et de r est aussi diviseur de a (ainsi que de b). Dememe r = a qb et donc tout diviseur de a et de b est aussi diviseur de r (ainsi que de b). Ainsia,b et b, r ont memes diviseurs communs ; en particulier : pgcd(a,b) = pgcd(b, r).Lalgorithme se termine : la valeur de b est un entier naturel qui diminue strictement a` chaqueiteration de la boucle tandis que le reste r est un entier naturel strictement inferieur a` b, ainsi il yaura au plus b passages dans la boucle avant que le crite`re darret r = 0 ne soit satisfait. Dapre`sce qui prece`de la valeur retournee est pgcd(a,b).
Si au depart a < b la division euclidienne de a par b aura pour reste a (et quotient 0) et apre`s lapremie`re iteration de la boucle while les valeurs de a et b auront ete echangees, il est donc inutilede traiter separement le cas a
Exercice 1Exercice 2Exercice 3Exercice 4Exercice 5Exercice 6
Exercice 6 : EnonceExercice 6 : Corrige
Exercice 6 : Enonce
Ecrire un programme pour larithmetique qui affiche le menu suivant et effectue les actionscorrespondantes :
MENU :1 - Calculer le pgcd de 2 entiers2 - Calculer le ppcm de 2 entiers3 - Determiner si un nombre est premier4 - Donner la decomposition en facteurs premiers dun nombreq - Quitter
Indication : linstruction break permet la sortie dune boucle.
MPSI1 - Lycee Thiers TD2 : Premiers programmes en python
Exercice 1Exercice 2Exercice 3Exercice 4Exercice 5Exercice 6
Exercice 6 : EnonceExercice 6 : Corrige
Exercice 6 : Corrige
Lecriture du menu sobtient par :
Une chane de caracte`re placee entre 3 guillemets . permet le saut a` la ligne.
Le choix 1 appelle la fonction pgcd() deja` ecrite (elle doit figurer avant le programme).
MPSI1 - Lycee Thiers TD2 : Premiers programmes en python
Exercice 1Exercice 2Exercice 3Exercice 4Exercice 5Exercice 6
Exercice 6 : EnonceExercice 6 : Corrige
Exercice 6 : Corrige
Le choix 2 :
appelle la fonction ppcm() :
a` faire figurer avant le programme.
Elle utilise a.b = pgcd(a,b).ppcm(a,b) .
MPSI1 - Lycee Thiers TD2 : Premiers programmes en python
Exercice 1Exercice 2Exercice 3Exercice 4Exercice 5Exercice 6
Exercice 6 : EnonceExercice 6 : Corrige
Exercice 6 : Corrige
Les deux derniers choix appellent des fonctions premier() et Pdecomp(), quil reste a` ecrire :
La fonction premier() prend en argument un entier et retourne un booleen selon si largument estun nombre premier ou pas.
La fonction Pdecomp() prend en argument un entier et retourne une chane de caracte`re donnantla decomposition en nombres premiers de largument.
MPSI1 - Lycee Thiers TD2 : Premiers programmes en python
Exercice 1Exercice 2Exercice 3Exercice 4Exercice 5Exercice 6
Exercice 6 : EnonceExercice 6 : Corrige
Exercice 6 : Corrige
La fonction premier() doit figurer avant le programme :
Elle utilise la fonction sqrt() du module math.py, quil sagit dimporter auparavant.
MPSI1 - Lycee Thiers TD2 : Premiers programmes en python
Exercice 1Exercice 2Exercice 3Exercice 4Exercice 5Exercice 6
Exercice 6 : EnonceExercice 6 : Corrige
Exercice 6 : Corrige
La fonction Pdecomp() doit figurer avant le programme :
MPSI1 - Lycee Thiers TD2 : Premiers programmes en python
Exercice 1Exercice 2Exercice 3Exercice 4Exercice 5Exercice 6
Exercice 6 : EnonceExercice 6 : Corrige
Exercice 6 : Corrige
Exemple :
On peut encore pour ameliorer le programme, gerer des exceptions lorsque lutilisateur ne saisit pasun entier positif pour lui renvoyer une message derreur. Cest assez facile : le plus gros du travailest fait. Nous verrons ca plus tard.
MPSI1 - Lycee Thiers TD2 : Premiers programmes en python
Exercice 1Exercice 1 : EnoncExercice 1 : Corrig
Exercice 2Exercice 2 : EnoncExercice 2 : Corrig
Exercice 3Exercice 3 : EnoncExercice 3 : Corrig
Exercice 4Exercice 4 : EnoncExercice 4 : Corrig
Exercice 5Exercice 5 : EnoncExercice 5 : Corrig
Exercice 6Exercice 6 : EnoncExercice 6 : Corrig