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