TP 2 Structures alternatives 6
TP 2 Structures alternatives
Liens utiles pour les structures alternatives :
Tutoriel : https://docs.python.org/2/tutorial/controlflow.html#if-statements
Documentation : https://docs.python.org/2/reference/compound_stmts.html
Cr´eez un nouveau r´epertoire de travail Z:\Prog\TP2 pour les scripts de ce TP.
2.1 Types et transtypages
2.1.1 Type
Le contenu d’une variable n’est pas de la mˆeme nature lorsqu’il est saisi comme un nombre ou comme une
chaine de caract`eres. La fonction type(variable) retourne le type de la valeur contenue dans une variable. Dans
un interpr´eteur Python (onglet ”Console Python”), testez les instructions suivantes :
>>> a = 1
>>> type(a)
>>> a = " 1"
>>> type(a)
>>> a = 1.0
>>> type(a)
2.1.2 Transtypage
En Python, le typage des donn´ees est dynamique puisqu’une variable peut changer de type. La conversion de
type (transtypage) est r´ealis´ee par les fonctions :
Iint(variable) pour convertir une variable en int ;
Ifloat(variable) pour la convertir en flottant ;
Istr(variable) pour la convertir en chaine de caract`eres, ...
Aectez `a une variable ble r´esultat du transtypage de di´e r e n t e s v a l e u r s d e a; indiquez dans chaque cas la
valeur de bet d’´eventuelles erreurs.
a 1.0 "1" "1.0" "1A" "AB"
b=int(a)
b=float(a)
b=str(a)
Un typage fort implique que les conversions implicites de types sont interdites et que les erreurs de typage peuvent
ˆe t r e d ´e t e c t ´e e s . A ectez aux trois variables entier,flottant,chaine les trois valeurs 1,1.0,"1" respectivement.
Observez le r´esultat des op´erations entier+flottant ,flottant+chaine et entier+chaine. Quels messages d’erreur
apparaissent, et si oui, pourquoi ?
2.1.3 Saisie clavier et type
La lecture (ou saisie) au clavier de donn´ees fournies de mani`ere interactive par l’utilisateur est r´ealis´ee par :
la commande variable = input("message de saisie affichee dans la console")lorsque l’on souhaite
obtenir la saisie d’un nombre. Le type du nombre (int ou float) est d´ecid´e par Python en fonction de la
saisie ;
la commande variable = raw_input("message de saisie")lorsqu’on souhaite obtenir une chaine de ca-
ract`eres de type str 2.
Dans les deux cas, la saisie s’arrˆete d`es que l’on presse la touche entr´ee .
R´ep´etez la suite d’instructions suivantes (avec un interpr´eteur Python), en saisissant tour `a tour `a l’invite du
prompt les valeurs 123 puis 456.789 :
2. Une alternative pour saisir un nombre est d’utiliser raw_input() qui ne renvoie que la suite de caract`eres saisis sans
interpr´etation, le type ´etant ensuite d´ecid´e par le programmeur via un transtypage explicite.
TP 2 Structures alternatives 7
>>> var = input("Entrez une valeur :")
>>> print "valeur : ",var," - type : ",type(var)
Testez maintenant la suite d’instructions suivantes en saisissant tour `a tour `a l’invite du prompt les trois valeurs :
bonjour,123 puis 456.789 :
>>> var = raw_input("Entrez une valeur : ")
>>> print "valeur : ",var," - type : ",type(var)
Quelles di´erences apparaissent entre les deux suites d’instruction ? On veillera donc `a bien choisir la fonction de
saisie en fonction du type des donn´ees sur lesquelles le programme devra travailler.
2.2 Structures alternatives
Programme tri2.py :´
Ecrivez un script nomm´e tri2.py qui demande `a l’utilisateur deux nombres. Ces
nombres seront stock´es dans deux variables var1 et var2. Le programme classe les valeurs de telle sorte que var1
contienne la valeur la plus petite et var2 la plus grande. Pour finir, le programme ache les valeurs var1 et var2.
Indication : Dans ce cas simple, il faut permuter les valeurs contenues dans var1 et var2 si var1 est sup´erieure `a
var2 et ne rien faire sinon.
Programme convert.py :´
Ecrivez un script nomm´e convert.py qui demande `a l’utilisateur quelle
conversion il souhaite eectuer parmi les choix du menu suivant : choix 1) conversion de degr´e Celsius vers degr´e
Fahrenheit ; choix 2) conversion de degr´e Fahrenheit vers degr´e Celsius ; choix 3) conversion de degr´e Celsius vers
degr´e Kelvin.
En fonction du choix fait par l’utilisateur, le script demande `a l’utilisateur de saisir les donn´ees `a convertir et ache
sur la console le r´esultat de la conversion. Par exemple :
1Bienvenue dans le programme de conversion. Voici les conversions possibles :
2(1) degr´e Celsius vers degr´e Fahrenheit
3(2) degr´e Fahrenheit vers degr´e Celsius
4(3) degr´e Celsius vers degr´e Kelvin
5Entrez votre choix (entier 1, 2 ou 3) : 2
6Entrez les degr´es Fahrenheit : 50
7Voici les degr´es Celsius : 10 C
On rappelle que la relation entre la temp´erature en Fahrenheit TFet celle en Celsius TCest : TF=TC1,8 + 32.
Des informations sur le Kelvin sont disponibles sur http://fr.wikipedia.org/wiki/Kelvin.
Programme plusTard.py :´
Ecrivez un script nomm´e plusTard.py qui ache quelle sera l’heure dans x
minutes. Pour cela, le script r´ecup`ere l’heure courante dans les variables heure et minute par les instructions :
1import time
2heure = int(time.strftime("%H"))
3minute = int(time.strftime("%M "))
Le script demande ensuite la saisie-clavier d’un nombre de minutes puis ache l’heure qu’il sera. Par exemple :
1Il est 23:42
2Entrez les x minutes `a ajouter : 90
3Dans 90 mn, il sera 01:12
Indications : utilisez la division euclidienne et le modulo pour connaitre l’incr´ement sur les heures (base 24) et les
minutes (base 60). Pensez ´egalement au formatage %d pour l’achage du r´esultat.
Programme tri3.py :´
Ecrivez un script nomm´e tri3.py en reprenant l’exercice pr´ec´edent avec cette fois
trois variables var1,var2 et var3. Le probl`eme se r´esout ais´ement en 3 tests.
Indication : Si l’on classe var1 et var2, puis var2 et var3, on remarque que var3 contient alors le plus grand nombres
des trois...
TP 2 Structures alternatives 8
2.3 Le module Turtle
Python propose une grande diversit´e de modules qui ´etendent les fonctionnalit´es de base du langage. Citons le
module math qui fournit toute une biblioth`eque de constantes (par exemple pi efini dans ce module comme un
flottant de valeur 3.14159...) et de fonctions pour le calcul.
2.3.1 Import d’un module
Pour que Python charge un module il faut l’importer avec la commande import nom_module. Dans ce cas, les
constantes et les fonctions seront accessibles par la syntaxe nom_module.[nom_constante|nom_fonction] 3.
Dans un interpr´eteur Python, importez le module math. Remarquez que la documentation 4des entit´es du
module est disponible directement par une info-bulle, par exemple lors de la saisie de math.sin. Une aide plus compl`ete
`a propos du module math est accessible sur http://docs.python.org/library/math.html.
Calculez les expressions suivantes : |1|,p2,sin
2en utilisant les fonctions fabs,sin et sqrt.
2.3.2 Le module Turtle
Le module turtle propose nombre de m´ethodes pour r´ealiser des graphiques. Il s’inspire du langage logo,
tr`es populaire il y a quelques d´ecennies, et met `a disposition un espace graphique (la fenˆetre) et un pointeur
(repr´esenee par d´efaut par une fl`eche) qui re¸coit des ordres pour r´ealiser des dessins.
Dans l’interpr´eteur, testez les exemples d’instructions suivantes :
1import turtle # import du module turtle
2turtle.clear() #cr´eationdunefen^etrevide
3turtle.shape(turtle)#modificationdelaformedupointeur
4turtle.forward(50) #trac´edunelignedroitedelongueur50
5turtle.left(90) #rotation`agauchede90degr´es
6turtle.circle(100, 180) #trac´edundemi-cerclederayon100
7turtle.circle(-100, 180) #trac´edundemi-cerclederayon100
8#danslesenshoraire
9turtle.exitonclick() #laisselafen^etrevisiblejusqu`acequeloncliquedessus
Une aide tr`es utile sur le module est disponible sur https://docs.python.org/2/library/turtle.html#
turtle-methods.
Programme triangle.py :´
Ecrivez un script nomm´e triangle.py qui change l’allure du pointeur en
tortue et dessine un triangle de taille 200 dans une fenˆetre turtle.
Programme yin-yang.py :´
Ecrivez un script nomm´e yin-yang.py qui
r´ealise la figure du yin-yang.
Indications :
IR´efl´echissez `a la suite d’actions `a eectuer pour tracer les formes sans
remplissage (faites un dessin sur un papier !)
I´
Ecrivez une premi`ere version du script sans vous pr´eoccuper des couleurs
IPour d´eplacer la tortue sans laisser de trace, il faut la lever avec la m´ethode
up(),puislabaisseraveclam´ethodedown()
IPour colorer une zone du dessin, utilisez les m´ethodes color(),begin_fill
(),end_fill()
IPour que la tortue fasse un mouvement circulaire dans le sens horaire, il
sut d’indiquer un rayon n´egatif `a la m´ethode circle().
3. Cette commande d’import permet de segmenter l’espace des noms de variables, c’est `a dire de ne pas cr´eer de conflits entre
deux entit´es (fonctions par exemple) de mˆeme nom appartenant `a deux modules distincts.
4. L’aide en ligne est aussi accessible avec la commande help(math). Cette aide est pr´esent´ee comme une page de man unix.
On peut y faire une recherche par la commande /puis naviguer dans la page par n(next) ou p(previous). On quitte l’aide par q.
TP 2 Structures alternatives 9
2.4 Prolongations
Programme racine.py :´
Ecrivez un programme nomm´e racine.py qui demande `a l’utilisateur de saisir les
coecients r´eels a,bet cefinissant le polynˆome de degr´e 2 P(X)=aX2+bX +c. Le programme ache ensuite
les valeurs de Xqui annulent le polynˆome, en pevoyant les cas de figure suivants :
il n’y a pas de solution (si a=b=0et c est un r´eel quelconque non nul)
il n’existe qu’une solution r´eelle (par exemple si a=0)
il y a deux racines r´eelles (par exemple si a=1,b=1et c=0)
il y a une racine r´eelle double (par exemple si a=1,b=2et c=1)
il y a deux racines complexes (par exemple si a=b=c=1)
En Python, un nombre complexe comporte deux flottants (partie r´eelle et partie imaginaire) o`u la partie imaginaire
est dot´ee du suxe j. Attention, l’imaginaire pur js’´ecrit 1j (et non jtout court). Les deux parties d’un nombre
complexe zsont accessibles comme suit : z.real pour la partie r´eelle et z.imag pour la partie imaginaire.
Le calcul sur les nombres complexes est facilit´e par le module cmath. Une information compl`ete sur ce module est
disponible sur https://docs.python.org/2.7/library/cmath.html. Pour cet exercice, nous utiliserons cmath.
sqrt qui renvoie la racine complexe d’un nombre. Par exemple cmath.sqrt(-1) renvoie la valeur 1j (i.e. 1j)et
cmath.sqrt(1j) vaut 0.7071067811865476+0.7071067811865475j (i.e. p2/2+jp2/2).
Autre commodit´e : la fonction abs, int´egr´ee au langage, renvoie la valeur absolue d’un nombre. (par exemple abs(-1)
vaut 1)
2.4.1 L’op´erateur ternaire
L’expression valeur1 if condition_booleenne else valeur2 utilisant l’´ecriture ternaire de la structure if
/else permet d’all´eger l’´ecriture de structures alternatives simples. Avec cette ´ecriture, l’expression s’´evalue `a
la valeur valeur1 si la condition_booleenne est vraie ou `a la valeur valeur2 si la condition_booleenne est fausse.
Voici un exemple qui calcule la valeur absolue d’un nombre aet l’aecte `a b:
1b=aif a>=0 else -a
Cet exemple est ´equivalent `a :
1if a>= 0 :
2b=a
3else :
4b=-a
Programme maxTernaire.py :´
Ecrivez un script qui demande `a l’utilisateur de saisir deux nombres
et ache le maximum des deux (c’est `a dire le plus grand des deux) en utilisant l’´ecriture ternaire de la structure
if/else.
Programme achageNombre.py :´
Ecrivez un script qui demande un nombre `a l’utilisateur puis
l’ache avec 2 chires apr`es la virgule si c’est un flottant, l’ache naturellement si c’est un entier et n’ache rien
dans les autres cas.
Programme achagePolynome.py :´
Ecrivez un programme nomm´e affichagePolynome.py,quisaisit
les 4 coecients d´efinissant le polynˆome de degr´e 3 a3X3+a2X2+a1X+a0et ache, en s’aidant de l’op´erateur
ternaire, le polynˆome avec les conventions math´ematiques usuelles :
lorsque a3=1 ;a2=0 ;a1=2 et a0=3,lachage est X^3+2X+3
lorsque a3=a2=0 ;a1=2 et a0=3,lachage est 2X+3
lorsque a3=-1 ;a2=0 ;a1=-1 et a0=0 l’achage est - X^3 - X
lorsque a3=a2=a1=a0=0,lachage est 0.
On se limitera au cas des coecients entiers (les flottants ne sont pas pris en compte).
Programme divisionPolynomiale.py :On souhaite ´ecrire un programme qui r´ealise (lorsque cela est
possible) la division euclidienne polynomiale d’un polynˆome de degr´e 3 de la forme P(X)=a3X3+a2X2+a1X+a0
TP 2 Structures alternatives 10
(`a coecients entiers) par un polynˆome de la forme D(X)=Xro`u rest une racine du polynˆome puis ache le
r´esultat sous la forme Q(X)=b2X2+b1X+b0.
Quelques questions math´ematiques pr´eliminaires : `a quelle condition rest-elle une racine de P(X)? Calculez
`a la main les relations donnant les coecients b2,b1et b0en fonction des coecients a3,a2,a1,a0et de la
racine r.
Ecrire un programme qui demande `a l’utilisateur de saisir les coecients a3,a2,a1,a0du polynˆome P; puis
demande de saisir une valeur r. Le programme teste si rest une racine de Pet si oui, calcule les coecients b2,
b1et b0du polynˆome Q. Le programme ache finalement le polynˆome Qde la mˆeme fa¸con qu’`a l’exercice 16.
Indication : On pourra tester le programme avec le polynˆome X36X2+ 11X6dont les racines sont 1,
2et 3o`u avec le polynˆome X32X2X+2dont les racines sont 1,1et 2.
1 / 5 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !