Vous êtes sur la page 1sur 3

PCSI1 M.

Berthelot 2019/2020 TP d’Informatique no 2 mardi 1/10/2019

Objectif du TP
- Nous allons programmer des fonctions en Python.
- Vous devrez écrire les fonctions dans l’éditeur de texte. Attachez du soin à la présentation des différentes
parties. Pour cela, on favorisera l’écriture de commentaires précédé de #.
- L’exécution des fonctions sur des arguments donnés se fera dans la console.

1 Etude d’une fonction simple


La formule de Héron permet de calculer
p l’aire d’un triangle en fonction des longueurs des cotés de celui-ci.
AB+BC+CA
L’aire d’un triangle ABC est alors p(p − AB)(p − BC)(p − CA) avec p = 2
.
Ecrire dans l’éditeur de texte la fonction suivante :
def heron ( a , b , c ) :
””” Renvoie l ’ a i r e d ’ un t r i a n g l e dont l e s c o t é s \
ont pour l o n g u e u r s l e s v a l e u r s a , b e t c ”””
p = (a + b + c) / 2
a i r e = ( p ∗( p−a ) ∗ ( p−b ) ∗ ( p−c ) ) ∗ ∗ ( 1 / 2 )
return a i r e

Que rend la console suivant les commandes :


>>> heron ( 1 , 2 , 3 )
>>> heron ( 2 , 1 , 3 )
>>> heron ( 3 , 4 , 5 )
>>> help ( heron )
>>> type ( heron ( 1 , 2 , 3 ) )
>>> type ( heron )
>>> heron ( 0 , −1, 3 )

La structure générale d’une fonction est la suivante :


def f o n c t i o n ( argument1 , argument2 , . . . , argumentN ) :
””” D e s c r i p t i o n de l a f o n c t i o n ”””
I n s t r u c t i o n s de c a l c u l
( peut c o n t e n i r des a s s i g n a t i o n s , b o u c l e s ou c o n d i t i o n s )
return v a l e u r d e s o r t i e

De plus, on peut ajouter la commande assert en début de fonction qui vérifie alors des conditions d’exécution
de la fonction.
Dans la fonction heron ajouter la ligne suivante après la description de la fonction :
a s s e r t a >= 0 and b >= 0 and c >= 0 , ’ Les d i s t a n c e s d o i v e n t ê t r e p o s i t i v e s ’

Puis tester à nouveau la fonction dans la console. Que renvoie python pour les valeurs négatives ?
Exercice 1 : Pour heron(1,1,3) le programme renvoie à nouveau une valeur surprenante.

N.Provost TP d’Informatique no 2 (page 1) PCSI1 2019-2020


PCSI1 M.Berthelot 2019/2020 TP d’Informatique no 2 mardi 1/10/2019

Corriger le programme heron en ajoutant un nouveau assert afin de réaliser le calcul uniquement lorsque
les arguments sont cohérents.
Indication : Les cotés d’un triangle doivent vérifier l’inégalité triangulaire.
Consigne : Dans les exercices qui suivent, on soignera particulière la description de la fonction ainsi que
la vérification de la validité des paramètres.
Exercice 2 : Ecrire une fonction module qui prend en argument quatre flotants xA, yA, xB et yB et renvoie
la distance séparant les points du plan cartésien A(xA, yA) et B(xB, yB).

Remarque : Le principal intérêt d’une fonction est, qu’une fois compilée, elle peut être utiliser dans la
création de fonction composée plus complexe.
Consigne : On évitera les copier-coller pour préférer utiliser les fonctions précédentes.
Exercice 3 : Ecrire une fonction heron_cart qui prend en argument six flotants xA, yA, xB, yB, xC et
yC et revoie l’aire du triangle formé par les trois points A(xA, yA), B(xB, yB) et C(xC, yC).

2 Différences entre print et return


Ecrire dans l’éditeur de texte la variante suivante de la fonction :
def bad heron ( a , b , c ) :
””” Imprime l ’ a i r e d ’ un t r i a n g l e dont l e s c o t é s \
ont pour l o n g u e u r s l e s v a l e u r s a , b e t c ”””
p = (a + b + c) / 2
a i r e = ( p ∗( p−a ) ∗ ( p−b ) ∗ ( p−c ) ) ∗ ∗ ( 1 / 2 )
print ( a i r e )

Pour les deux fonctions ainsi compilées, comparer dans la console les valeurs de :
>>> heron ( 1 , 2 , 3 )
>>> bad heron ( 1 , 2 , 3 )
>>> type ( heron )
>>> type ( bad heron )
>>> heron ( 1 , 2 , 3)∗19
>>> bad heron ( 1 , 2 , 3)∗19
>>> type ( heron ( 1 , 2 , 3 ) )
>>> type ( bad heron ( 1 , 2 , 3 ) )

Expliquer le problème de la programmation de la fonction bad_heron.


Une telle fonction qui n’a pas de valeur de retour est appelée une Procédure.
Exercice 4 : On recherche à écrire une procédure interface_heron qui utilisera la fonction heron et dont
la description est la suivante :
- La procédure n’a pas d’argument.
- La procédure demande à l’utilisateur de rentrer tour à tour les deux coordonnées des trois points d’un
triangle du plan. On pourra pour cela utiliser la fonction input.
- La procédure imprimera une phrase précisant à l’utilisateur la valeur de l’aire du triangle ainsi formé.

N.Provost TP d’Informatique no 2 (page 2) PCSI1 2019-2020


PCSI1 M.Berthelot 2019/2020 TP d’Informatique no 2 mardi 1/10/2019

- Pour tester la procédure, on lancera donc la commande interface_heron() dans la console.

3 Applications à la conversion d’unité


3.1 Système métrique et système impérial
On rappelle les valeurs suivantes : 1 pouce = 25.4 mm, 1 pied = 12 pouces et 1 yard = 3 pieds.
Exercice 5 : Ecrire une fonction conversion_imp_en_metre qui prend en arguments trois entiers Y, F et
I et qui renvoie la distance de Y yards, F pieds et I pouces en mètres avec une précision de 1 mm. Pour
l’arrondi, on pourra consulter l’aide sur la fonction round.
Exercice 6 : Ecrire une procédure interface_conver sans argument qui :
- demande à l’utilisateur tour à tour un nombre de yards, pieds et pouces.
- imprime une phrase précisant la conversion en mètres.
Exercice 7 : Ecrire une fonction conversion_metre_en_imp qui prend en argument une valeur en mètre
et renvoie trois entiers : le nombre de yards, de pieds puis de pouces contenus dans la distance. Il faut rendre
l’écriture optimale c’est à dire avec un minimum de pieds et de pouces.
Exercice 8 : Ecrire une procédure sans argument interface_heron_anglais qui demande à l’utilisateur
(anglo-saxon) trois distances dans le système impérial et imprime une phrase donnant l’aire en m2 et en
inch2 du triangle ainsi formé.

3.2 Système temporel international


Exercice 9 : Ecrire une fonction conversion_en_seconde qui prend en argument 4 entiers J, H, M et S
représentant respectivement un nombre de jours, d’heures, de minutes et de secondes et renvoyant le nombre
en secondes correspondant.
Exercice 10 : Ecrire la fonction inverse conversion_en_inter qui prend en argument un entier repré-
sentant un nombre de seconde et renvoie le nombre de jours, heures, minutes et secondes.
Exercice 11 : Ecrire une fonction tps_de_parcours prenant en argument une distance (en m) et une
vitesse moyenne (en m.s−1 ), imprimant le temps de parcours sous la forme internationale et renvoyant l’entier
du temps en secondes.
Application numérique : la distance terre-lune est de l’ordre de 384000km, celle terre-mars est de l’ordre de
2, 2.108 km. La vitesse d’une fusée est 8750m.s−1 et celle de lumière est 300000km.s−1 .
Exercice 12 : Ecrire une fonction duree qui prend argument deux dates sous formes de triplets d’entiers
et renvoie le nombre de jours les séparant.
Exemple : duree((13,10,2015),(13,10,2016)) doit renvoyer 366.
Indication : Les années bissextiles sont multiples de 4 mais pas de 100 sauf celles multiples de 400.

N.Provost TP d’Informatique no 2 (page 3) PCSI1 2019-2020

Vous aimerez peut-être aussi