Lycée Brizeux – 2015/2016 Informatique – PCSI TP N O 1 OU PETITS PROGRAMMES EN VRAC Consignes : — Ouvrez votre session. Dans votre dossier personnel, créez un dossier (par exemple "Informatique"). — Ouvrez ensuite l’environnement de développement « spyder ». La partie gauche de la fenêtre contient un éditeur de texte. Vous y écrirez vos programmes. Commencez par sauvegarder le fichier dans le dossier qui vient d’être crée (par exemple sous le nom "TP01_ex01.py"). À chaque exercice, vous enregistrerez un nouveau fichier. — Les programmes seront écrit en python 3. — Avant d’écrire un programme sur la machine, vous écrirez sur feuille l’algorithme correspondant (avec un schéma), puis la traduction en language python. — Les commentaires seront précédés d’un croisillon #. Il est important de commenter tous vos programmes et d’utiliser des noms de variables explicites. — Travail à rendre : à l’issue du TP, vous rendrez un (seul) fichier (.py) contenant vos programmes réalisés pendant le TP et les programmes supplémentaires qui vous seront demandés. Envoyez votre fichier via la plateforme Moodle (lien dans la page « cahier de texte » de la classe). 1 Instructions d’entrée et de sortie avec python L’instruction a=input('Entrer une donnée :') permet d’affecter dans la variable a la réponse de l’utilisateur à la phrase « Entrer une donnée ». Par défaut, python considèrera que la variable a entrée est une chaîne de caractères. Si vous souhaitez que l’utilisateur entre une valeur numérique, vous devrez donc la convertir. Exemples : a=int(input('Entrer un nombre : ')), si a est un nombre entier, a=float(input('Entrer un nombre : ')), si a est un flottant. L’instruction print('Du texte ou ',autre) permet d’afficher, lors de l’exécution d’un programme, des « blocs » de données de tout type : ici, la chaîne de caractère « Du texte ou » sera écrite, et suivie de la valeur de la variable autre. Pour éviter un retour à la ligne, on écrira print("colonne1 ",end="") Exercice 1 : Tester les fonctions input et print. Par exemple : a = input('entrez un nombre a : ') print('Le type de a est', type(a)) b = int(input('entrez un nombre b : ')) print('Le type de b est',type(b)) print('colonne1 ',end=' ') print('colonne2 ',end=' ') print('colonne3') 2 Instructions conditionnelles Si . . . alors . . . if condition : instruction(s) Si . . . alors. . ., sinon. . . if condition : instruction(s) else : autre(s) instruction(s) Si . . . alors. . ., sinon, si . . . if condition : instruction(s) elif autre condition : autre(s) instruction(s) else : encore d’autres instructions Attention : L’indentation est signifiante. Exercice 2 : Valeur absolue Écrire un programme qui, étant donné un nombre x, renvoie sa valeur absolue. 1/3 Lycée Brizeux – 2015/2016 Informatique – PCSI Exercice 3 : Équations du second degré 1. Écrire un programme pour résoudre de telles équations On peut calculer la racine carrée d’un nombre positif en le mettant à la puissance 0.5 2. Tester le programme sur les équations suivantes : 6 9 2 1 x 2 + x + 1 = 0, 3x 2 + 2x − 1 = 0, x 2 − x + = 0, et x 2 − x + = 0. 7 49 5 25 Exercice 4 : Années bissextiles Une année est dite bissextile si c’est un multiple de 4, sauf si c’est un multiple de 100. Toutefois, elle est considérée comme bissextile si c’est un multiple de 400. Écrire un programme pour déterminer si une année donnée est bissextile ou non. 3 Boucles du type for Si on a l’intention de répéter n fois un certain bloc d’instructions, la syntaxe dans Python est : for compteur in range(n,m,pas) : instruction(s) La variable compteur parcourt l’ensemble des entiers compris entre n et m − 1 suivant un pas donné. Si le pas est omis, alors pas=1. Si n est omis, alors n = 0. En particulier, range(m) donne la séquence 0, 1, 2, . . . , m − 1. Exercice 5 : Liste de carrés Faire afficher la liste de tous les carrés des entiers compris entre 5 et 15. Exercice 6 : Table de multiplication 1. Écrire un programme affichant la table de multiplication de 0 à 12 d’un entier N . 2. Modifier le programme pour qu’il signale ceux qui sont multiples de 3. Exercice 7 : Factorielle Écrire un programme qui, étant donné un entier positif n, renvoie n ! = 1 × 2 × 3 × · · · × n. 4 Boucles du type while Lorsqu’on veut qu’une (ou plusieurs) instruction(s) se répète(nt) tant qu’une condition est vérifiée, on écrit : while condition : instruction(s) ATTENTION ! La condition doit évoluer à chaque itération pour éviter que la boucle se répète indéfiniment. Exercice 8 : Écrire un programme qui demande à l’utilisateur d’entrer un entier A et qui affiche le premier nombre entier positif n tel que n! soit strictement plus grand que A. 1 Exercice 9 : On considère la suite (u n ) définie, pour tout entier naturel n, par u n = 3 . Celle-ci n +n +2 est décroissante et converge vers 0. Écrire un programme qui permette d’obtenir le premier rang n à partir duquel u n 6 0, 001. 2/3 Lycée Brizeux – 2015/2016 Informatique – PCSI 5 Pour aller plus loin Exercice 10 : L’échiquier de Sissa Une légende de l’Inde ancienne raconte que l’ancêtre du jeu d’échecs a été inventé par le brahmane Sissa vers 3000 ans avant notre ère, mais l’origine du jeu d’échecs est controversé. L’histoire raconte que le roi Belkib promit une récompense fabuleuse à qui lui proposerait une distraction qui le satisferait. Lorsque le brahmane Sissa lui présenta son jeu d’échecs, il lui demanda ce qu’il souhaitait comme cadeau en récompense. Sissa demanda qu’on lui fournisse simplement un peu de riz pour ses vieux jours, et plus précisément un nombre de grains de riz suffisant pour que l’on puisse en déposer un seul sur la première case du jeu qu’il venait d’inventer, deux sur la suivante, quatre sur la troisième, et ainsi de suite. Le roi accorda immédiatement cette récompense. . . 1. Écrire un programme pour afficher le nombre de grains à déposer sur chacune des 64 cases du jeu. On affichera le nombre de grains de riz sur chaque case. On calculera également la somme totale de grains de riz qu’il y a sur l’échiquier. 2. En considérant qu’un grain de riz a une masse moyenne de 0,04 g, déterminer la masse (en tonnes) de riz que cette somme représente. 3. La production mondiale de riz en 2013, estimée par la Food and Agriculture Organization des Nations Unies, est d’environ 740 millions de tonnes. En se basant sur cette donnée, déterminer la durée de production nécessaire (en années) pour remplir l’échiquier. Exercice 11 : Prêt immobilier L’algorithme pour simuler l’évolution d’un prêt immobilier est le suivant : Entrer 3 flottants credit, taux, annuite. L’entier annee reçoit la valeur 0. Si annuite ≤ taux × credit alors il est impossible de rembourser ce prêt. Sinon : Tant que credit > 0 faire : credit reçoit la valeur (1+taux)×credit - annuite. annee reçoit la valeur annee + 1. Fin Tant que Afficher annee. Fin Si 1. Programmer et tester cet algorithme. 2. Que représente la variable annee à la fin de l’algorithme ? 3. Que risque-t-il de se passer si le test initial est omis ? Exercice 12 : Nombres de Mersenne Pour n > 2 entier naturel fixé, on appelle n-ième nombre de Mersenne le nombre M n = 2n −1. Les premiers nombres de Mersenne sont donc 3, 7, 15, . . . 1. Écrire un programme calculant et affichant M n pour n donné. 2. En remarquant que M n+1 = 2M n + 1, écrire un programme affichant les nombres de Mersenne inférieurs à 100 000. 3. Parmi eux certains sont premiers. Écrire un programme affichant les nombres de Mersenne qui sont premiers et inférieurs à 100 000. Exercice 13 : Multiplication des lapins Leonardo Fibonacci est un mathématicien italien du XIIIe siècle qui a posé le problème suivant : « Un homme met un couple de lapins dans un lieu isolé de tous les côtés par un mur. Combien de couples obtient-on en un an si chaque couple engendre tous les mois un nouveau couple à compter du deuxième mois de son existence ? » Notant Un le nombre de couples de lapins au bout de n mois, on peut montrer que les termes de cette suite sont définis par : U0 = 1, U1 = 1 et Un+2 = Un+1 +Un . Écrire un programme pour afficher le 2015e terme de cette suite. On pourra utiliser judicieusement l’affectation multiple. 3/3