Introduction à l`Algorithmique et la Programmation feuille de TD
Transcription
Introduction à l`Algorithmique et la Programmation feuille de TD
Introduction à l’Algorithmique et la Programmation feuille de TD Entrées/Sorties et Fonctions Rappels de Python Fonctions Les fonctions sont des sous-programmes, qui permettent d’effectuer une série d’opérations à plusieurs endroits d’un programme. Elles prennent en entrée des paramètres et retournent en sortie une valeur (ou une liste de valeurs). Les fonctions sont définies grâce au mot clé def. Exemple - définition : def minimum(a,b): if a >= b: res = b else: res = a return res Exemple - appel : a = 10 b = 20 min = minimum(a,b) print min Exercice - 1 Validité d’une date 1- On cherche à déterminer si une date quelconque est valide, en tenant compte du nombre de jours (30 ou 31) que comporte chaque mois de l’année. On ne tiendra pas compte des années bissextiles dans le programme. a- Ecrivez une fonction qui renvoie le nombre de jours d’un mois donné (en utilisant le type Mois) b- Ecrivez une fonction qui détermine si une date, exprimée par un jour et un mois est valide c- Ecrivez un programme principal qui demande la saisie d’une date et vérifie qu’elle est valide 2- Comment pourriez-vous modifier le programme afin qu’il tienne compte des années bissextiles ? 1 feuille de TD Entrées/Sorties et Fonctions IAP 2016-2017 Exercice - 2 Ensemble de factoriels Le programme suivant permet d’afficher à l’écran tous les nombres de 3 à n (saisi en début de programme) avec la valeur de leur factoriel : Declaration: n, nombre, fact, i : Entier debut lire(n) pour nombre ← 3 a n faire ecrire(nombre) fact ← 1 pour i ← 2 a nombre faire fact ← fact * i finpour ecrire(’ a pour factoriel :’) ecrire(fact) finpour fin 1- Proposez une écriture alternative de ce pseudo-code utilisant une fonction pour calculer un factoriel donné et un programme principal 2- Ecrivez ce programme complet en Python. Exercice - 3 Recherche de nombre Le programme suivant permet de demander à l’utilisateur de deviner une valeur située entre 1 et 100 (valeur aléatoire obtenue par une fonction random(100)). Un maximum de 10 tentatives est autorisé. A chaque tentative infructueuse, le programme indique si la valeur à trouver est supérieure ou inférieure à la valeur proposée : Declaration: nombre, prop, tentative : Entier debut nombre ← random(100) tentative ← 1 repeter ecrire(’Entrez votre proposition’) lire(prop) si prop > nombre alors ecrire(’Trop grand’) sinon si prop < nombre alors ecrire(’Trop petit’) sinon ecrire(’Bravo!’) finsi finsi tentative ← tentative + 1 jusqu’a ce que (prop = nombre) ou (tentative > 10) fin UPMC - Licence Biologie Mathématiques 2 feuille de TD Entrées/Sorties et Fonctions IAP 2016-2017 1- Proposez une écriture alternative de ce pseudo-code en utilisant : — une fonction qui demande et renvoie la valeur d’une proposition — une fonction qui compare la proposition et le nombre recherché, affiche le résultat et ne renvoie rien — un programme principal 2- Écrivez ce programme complet en Python Exercice - 4 Recherche de nombre inversé 1- Ecrivez le programme inverse du précédent, c’est-à-dire ayant pour but de deviner une valeur pensée par l’utilisateur. A chaque valeur proposée par le programme, l’utilisateur répond par le caractère ’-’, ’=’ ou ’+’ pour indiquer que sa valeur est respectivement inférieure, égale ou supérieure à la proposition. Le programme sera également structuré en sous-programmes de manière similaire au programme de l’exercice précédent. 2- Écrivez ce programme complet en Python Exercice - 5 Cycle cellulaire 1- En reprenant l’exemple de cours sur le cycle cellulaire : a- Ecrivez une fonction qui détermine et affiche le nombre de générations de cellules depuis un nombre d’heures donné et l’âge de la dernière génération. La fonction renverra cet âge. b- Modifiez en conséquence le programme principal. 2- Ecrivez ce programme complet en Python. UPMC - Licence Biologie Mathématiques 3