Algorithmique et Programmation 2 LMI 1 – Semestre 2 Cours 2 – La

Algorithmique et Programmation 2
LMI 1 – Semestre 2
Cours 2 – La s´
equence et l’alternative
2 janvier 2009
1 Les structures de contrˆ
ole
En Scheme, le programmation se fait par composition de fonctions, et mˆ
eme les structures de choix
comme le if sont exprim´
ees sous la forme de fonctions, dont l’un ou l’autre des arguments est ´
evalu´
e.
En programmation imp´
erative, on utilise essentiellement la s´
equence : les instructions sont ex´
ecut´
ees
les unes `
a la suite des autres. S’y ajoutent d’autres ´
el´
ements qui vont permettre
le branchement conditionnel, le choix entre des instructions `
a effectuer
la r´
ep´
etition d’instructions
2 L’alternative
L’instruction conditionnelle en Python est le if. Il s’utilise ainsi :
>>> mois = 1
>>> annee = 2008
>>> if (mois < 2):
print ’Bonne annee’, annee
Bonne annee 2008
>>>
La premi`
ere partie du if, qui est entre parenth`
eses, est la condition : si elle est v´
erifi´
ee, alors la
s´
equence d’instructions qui se trouve apr`
es le :sera ex´
ecut´
ee.
En Python, le :annonce le d´
ebut d’un bloc d’instructions : il s’agit d’une suite d’instructions qui
seront execut´
ees ensemble, ou pas du tout. Un bloc d’instructions se distingue syntaxiquement ´
egalement
par le fait qu’il est indent´
e, i.e. d´
ecal´
e vers la droite par rapport au reste du code. Lorsqu’on termine un
bloc d’instructions, on supprime une indentation (on revient d’une tabulation vers la gauche).
Ces limites de blocs d’instructions sont analogues aux parenth`
eses ouvrantes et fermantes en Scheme
qui d´
elimitent les appels de fonctions. En Scheme, pour la lisibilit´
e, il ´
etait demand´
e d’indenter le code
(mise `
a la verticale des ( et des ) de mˆ
eme niveau).
En Python, il est obligatoire d’avoir du code bien indent´
e et lisible pour programmer : l’indentation
est un ´
el´
ement syntaxique du langage. Mais, pas de panique ! Il suffit d’utiliser un ´
editeur intelligent pour
que l’indentation du code soit g´
er´
ee facilement.
2.1 L’alternative : syntaxe g´
en´
erale
if (condition1):
bloc-d’instructions-alors-1
elif (condition2):
bloc-d’instructions-alors-2
...
1
LMI1 – Semestre 2 Cours 2 – La s´
equence et l’alternative PRG2 – 08/09
else:
bloc-d’instructions-sinon
Les parties elif et else sont facultatives. On ne peut ´
ecrire qu’une seule partie else pour un if,
et toujours en derni`
ere position. On peut ´
ecrire autant de parties elif que l’on veut.
Les parties elif, contraction de else if, signifient sinon si.
L’instruction if est ex´
ecut´
ee ainsi :
si condition1 est vraie, alors bloc-d’instructions-alors-1 est ex´
ecut´
e, puis on sort
du if
si condition1 est fausse, alors, si condition2 est vraie, bloc-d’instructions-alors-2
est ex´
ecut´
e, puis on sort du if
– mˆ
eme chose pour toutes les parties elif suivantes (elles ne seront ex´
ecut´
ees que si aucune des
conditions pr´
ec´
edentes n’a ´
et´
e v´
erifi´
ee, et si leur propre condition est vraie) ;
enfin, si aucune condition n’a ´
et´
e v´
erifi´
ee, c’est bloc-d’instructions-sinon qui sera
ex´
ecut´
e.
2.2 Exemples
2.2.1 Conversion Fahrenheit - Celsius
On ´
ecrit le mˆ
eme programme que la semaine derni`
ere, mais l’utilisateur nous indique en plus en
quelle unit´
e il donne la temp´
erature : ’F’ pour Fahrenheit, et ’C’ pour Celsius. On fait la conversion en
cons´
equence.
# -*- coding: utf-8 -*-
# programme de conversion Celsius <-> Fahrenheit
# obtenir l’unit´
e utilis´
ee
print "Programme de conversion Celsius <-> Fahrenheit"
print "Les unit´
es possibles sont : ’F’ pour Fahrenheit ou ’C’ pour Celsius"
unite = input(’Quelle unit´
e allez-vous utiliser ? ’)
# obtenir une temp´
erature
temperature = input(’Donnez une temp´
erature exprim´
ee en degr´
es ’+unite+’: ’)
if (unite == ’F’ or unite == ’f’):
# convertir en degr´
es Celsius
celsius = (5*(temperature - 32))/9
print ’Cela fait’, celsius,’C’
elif (unite == ’C’ or unite == ’c’):
# convertir en degr´
es Fahrenheit
fahrenheit = ((9*temperature)/5)+32
# afficher le r´
esultat
print ’Cela fait’, fahrenheit, ’F’
else:
print unite, "est une unit´
e inconnue"
Ici, il faut faire attention car la saisie d’une chaˆ
ıne de caract`
eres avec input requiert les quotes (il
faut saisir ’c’ au clavier pour l’unit´
e et pas seulement c).
2.2.2 Ann´
ee bissextile
´
Ecrire un programme qui demande une ann´
ee, et affiche un message indiquant si elle est bissextile
ou non.
Rappel : une ann´
ee est bissextile si c’est un multiple de 4 mais pas de 100, ou alors un multiple de
400
2
LMI1 – Semestre 2 Cours 2 – La s´
equence et l’alternative PRG2 – 08/09
# -*- coding: utf-8 -*-
# programme bissextile
# r´
ecup´
erer une ann´
ee
annee = input(’Donnez-moi une ann´
ee : ’)
# maintenant on teste si elle est bissextile ou pas
if ((annee % 4 ==0) and ((annee % 100 !=0) or (annee % 400 == 0))):
print annee, ’est une ann´
ee bissextile’
else:
print annee, "n’est pas une ann´
ee bissextile"
qu’on aurait pu ´
egalement ´
ecrire :
# -*- coding: utf-8 -*-
# programme bissextile
# r´
ecup´
erer une ann´
ee
annee = input(’Donnez-moi une ann´
ee : ’)
# on commence
print annee,
# maintenant on teste si elle est bissextile ou pas
if ((annee % 4 ==0) and ((annee % 100 !=0) or (annee % 400 == 0))):
print ’ est’,
else:
print " n’est pas",
# et dans tous les cas
print ’ une ann´
ee bissextile’
Dans le deuxi`
eme exemple, on remarque les diff´
erents cas d’ex´
ecution, les morceaux de code qui
sont toujours ex´
ecut´
es, etc . . .
On remarque aussi la virgule en fin d’instruction du print qui ´
evite le retour `
a la ligne dans l’affichage
(d´
emo).
2.2.3 Devis d´
em´
enagement
Une petite entreprise de d´
em´
enagement propose d’effectuer des devis rapides. Les r`
egles sont les
suivantes :
il y a un forfait de base pour les d´
eplacements :
– d´
em´
enagement dans un rayon de moins de 10km : 300 euros
– d´
em´
enagement dans un rayon de moins de 400km : 600 euros
– au-del`
a, un forfait de 1000 euros est appliqu´
e ;
plus un forfait kilom´
etrique :
gratuit pour les d´
em´
enagements de moins de 10km
3 euros par kilom`
etre sinon
il y a un barˆ
eme sur le volume :
c’est 15 euros par m`
etre cube pour les d´
em´
enagement de moins de 15m3
28 euros par m`
etre cube pour les d´
em´
enagements de moins de 30m3
40 euros par m`
etre cube pour les d´
em´
enagements de moins de 50m3
50 euros par m`
etre cube pour les d´
em´
enagements au-del`
a de 50m3
´
Ecrire le programme qui calcule un devis.
3
LMI1 – Semestre 2 Cours 2 – La s´
equence et l’alternative PRG2 – 08/09
# -*- coding: utf-8 -*-
# devis d´
em´
enagement
print ’Devis rapide avec les d´
em´
enageurs express!’
# on demande la distance
distance = input("Quelle est la distance (en km) entre le d´
epart et l’arriv´
ee ? ")
# on demande le volume
volume = input("Quel est le volume pr´
evu ? ")
# calcul du forfait distance
if distance <= 10 :
forfaitDistance = 300
elif distance <= 400 :
forfaitDistance = 600
else :
forfaitDistance = 1000
# calcul du forfait kilom´
etrique
if distance > 10 :
km = 3*distance
else :
km = 0
# calcul du forfait volum´
etrique
if volume <= 15 :
forfaitVolume = 15*volume
elif volume <= 30 :
forfaitVolume = 28*volume
elif volume <= 50 :
forfaitVolume = 40*volume
else :
forfaitVolume = 50*volume
# calcul devis, et affichage r´
esultat
print ’le devis pr´
evisionnel est de’,
print forfaitDistance+km+forfaitVolume,’euros’
2.3 Quelques r`
egles de syntaxe suppl´
ementaires
les parenth`
eses autour des conditions ne sont pas obligatoires lorsqu’il s’agit d’expressions simples
(pas de and, de or, ...)
– le :n’est pas forc´
ement coll´
e`
a l’expression qui le pr´
ec`
ede
il faut faire attention `
a l’indentation : si vous n’utilisez pas un ´
editeur qui indente automatique-
ment vos programmes Python, vous pouvez choisir d’indenter un morceau de code, soit avec des
espaces, soit avec des tabulations. Le principe est que deux instructions font partie d’un mˆ
eme
bloc d’instruction s’ils ont la mˆ
eme indentation. Attention toutefois `
a ne pas m´
elanger espaces et
tabulations : on peut obtenir visuellement le mˆ
eme r´
esultat, sans pour autant que les indentations
soient les mˆ
emes.
2.4 Les if imbriqu´
es
Aucun des exemples ne comportaient de structures conditionnelles imbriqu´
ees. . .Mais cela ne pose
pas plus de souci qu’en Scheme !
4
LMI1 – Semestre 2 Cours 2 – La s´
equence et l’alternative PRG2 – 08/09
2.4.1 Le retour des d´
em´
enageurs express
Seconde version
# -*- coding: utf-8 -*-
# devis d´
em´
enagement
print ’Devis rapide avec les d´
em´
enageurs express!’
# on demande la distance
distance = input("Quelle est la distance (en km) entre le d´
epart et l’arriv´
ee ? ")
# on demande le volume
volume = input("Quel est le volume pr´
evu ? ")
# calcul du forfait distance
# et du forfait kilom´
etrique
if distance <= 10 :
forfait_distance = 300
km = 0
else :
km = 3*distance
if distance <= 400 :
forfait_distance = 600
else :
forfait_distance = 1000
# calcul du forfait volum´
etrique
if volume <= 15 :
forfait_volume = 15*volume
elif volume <= 30 :
forfait_volume = 28*volume
elif volume <= 50 :
forfait_volume = 40*volume
else :
forfait_volume = 50*volume
# calcul devis, et affichage r´
esultat
print ’le devis pr´
evisionnel est de’,
print forfait_distance+km+forfait_volume,’euros’
3 Un premier pas vers la d´
efinition de fonctions
Python fait partie de la famille des langages proc´
eduraux : comme Pascal, comme C, comme ADA :-
), en Python, on ´
ecrit des sous-programmes qui s’appellent proc´
edures, ou ... fonctions (eh oui, comme
en Scheme !).
Utiliser des fonctions permet :
de d´
ecomposer un probl`
eme en sous-probl`
emes
de tester et de valider, fonction par fonction, un pogramme
de r´
eutiliser du code
La syntaxe g´
en´
erale d’une fonction en Python est :
def maFonction(param1,param2,...):
instruction1
instruction2
...
5
1 / 7 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 !