InfoMpsiprint_TD2

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