MPSI - Lyc´ee Chrestien de Troyes
Info 4
Introduction `a la programmation structur´ee
Introduction `a la programmation structur´ee
Nous avons construit nos premiers programmes sous la forme de fonctions qui pour des arguments donn´es, renvoyaient un ou plusieurs
esultats. Pour ´eviter les messages d’erreur, on continuera `a respecter la syntaxe du langage Python : saut de ligne, utilisation des
symboles : et ;, indentation... car c’est cette structure physique qui est interpr´et´ee par l’interface.
De plus, on pourra prendre l’habitude, pour plus de clart´e, de pr´esenter nos programmes, c’est `a dire :
qu’on n’h´esitera pas `a renseigner nos programmes `a l’aide des symboles ”””” ””””, dans la d´efinition de nos fonctions,
qu’on ajoutera ´eventuellement quelques commentaires utiles.
Par exemple, si on souhaite construire le programme equation qui pour tout nombre positif adonn´e, renvoie les solutions de l’´equation
x2=a:
import math
def equation(a):
"""ce programme permet de r´esoudre les ´equations de la forme x**2=a, o`u a est positif"""
x1=math.sqrt(a); x2=-x1 # on n’oubliera pas la seconde solution
return x1,x2
On peut alors constater que la commande help nous permet de nous renseigner sur le programme ainsi construit :
In : help(equation)
Help on function equation in module :
equation(a)
ce programme permet de r´esoudre les ´equations de la forme x**2=a, o`u a est positif
Si on pr´ef`ere plutˆot construire un programme interactif, on pourra d´efinir une fonction sans argument et les valeurs des param`etres
seront renseign´ees au cours de l’ex´ecution `a l’aide de la commande input. Dans ce cas, il convient de convertir la chaine de caract`ere
entr´ee par l’utilisateur, que ce soit en nombre entier `a l’aide de la commande int ou en nombre r´eel `a l’aide de la commande float :
import math
def equation():
"""ce programme permet de r´esoudre les ´equations de la forme x**2=a, o`u a est positif"""
print("on cherche `a r´esoudre l’´equation x**2=a")
a=float(input(’que vaut a ?’))
x1=math.sqrt(a); x2=-x1 # on n’oubliera pas la seconde solution
return x1,x2
Pour aller plus loin, on peut aussi utiliser des instructions structur´ees, parmi lesquelles on distingue :
1. les instructions conditionnelles
Il s’agit des structures conditionnelles qui permettent d’effectuer une s´erie d’instructions selon qu’une certaine condition soit
ealis´ee ou non. Dans le langage Python, on aura recours aux commandes if,elif,else, et la syntaxe d’un tel bloc
d’instructions sera toujours la mˆeme :
if condition 1 :
indentation Instruction 1
(...)
elif condition 2 :
indentation Instruction 1
(...)
elif condition 3 :
indentation Instruction 1
(...)
(...)
else:
indentation Instruction 1
(...)
Pour s´eparer les instructions, on pourra encore utiliser le symbole ; ou bien pour faciliter le debogage, on pourra pr´ef´erer un
saut de ligne.
De plus, on retiendra que l’instruction else n’est pas obligatoire et on veillera `a ce que les conditions ´enonc´ees soient bien des
conditions bool´eennes, c’est `a dire des tests logiques qui utilisent les op´erateurs usuels et ne renvoient que les valeurs True
ou False :
1
MPSI - Lyc´ee Chrestien de Troyes
Info 4
Introduction `a la programmation structur´ee
commande Python Interpr´etation
x == y xest ´egal `a y
x != y xest diff´erent de y
x>y xest strictement sup´erieur `a y
x<y xest strictement inf´erieur `a y
x >= y xest sup´erieur ou ´egal `a y
x <= y xest inf´erieur ou ´egal `a y
x in y xapparient `a y
x and y xet y(logique)
x or y xou y(logique)
not x non x(logique)
Par exemple, si on souhaite d´efinir la fonction vabsolue qui renvoie la valeur absolue d’un nombre r´eel, on entrera :
def vabsolue(x):
"""vabsolue renvoie la valeur absolue d’un r´eel. C’est aussi la fonction abs du module math."""
if x>=0:
return x
else:
return -x
2. les instructions r´ep´etitives
Il s’agit des structures it´eratives qui permettent d’effectuer une s´erie d’instructions un nombre de fois donn´e ou tant qu’une
condition est r´ealis´ee. Dans le langage Python, on pourra distinguer :
la boucle while (boucle ”tant que”) d´ependant d’une condition bool´eenne :
while condition :
indentation Instruction 1
(...)
Instruction p
la boucle for (boucle ”pour”) associ´ee `a une liste donn´ee, qu’elle soit constitu´ee d’entiers obtenus par la commande range,
ou constitu´ee de valeurs quelconques :
for k in range(1,n+1):
indentation Instruction 1
(...)
Instruction p
ou encore
for x in L:
indentation Instruction 1
(...)
Instruction p
Bien entendu, quand le nombre d’it´erations n’est pas d´etermin´e `a l’avance, on pr´ef`erera choisir la boucle while mais on veillera
`a ce qu’on puisse sortir de la boucle, c’est `a dire qu’`a un moment la condition ´enonc´ee ne devra plus ˆetre r´ealis´ee...
Il s’agit l`a d’une erreur tr`es courante et ainsi, si la condition d’arrˆet n’est jamais atteinte, et que votre programme tourne sur
lui-mˆeme, il vous faudra interrompre l’ex´ecution de celui-ci en fermant par exemple la console interactive.
Application 1 - Calcul des termes successifs d’une somme
On rappelle qu’on d´efinit la fonction ζsur ]1,+[ par :
ζ(x) =
+
X
k=1
1
kx= lim
n+
n
X
k=1
1
kx
Soit x]1,+[. On pose alors pour tout nN,Sn=
n
X
k=1
1
kx.
1. ecrire S1, S2et S3puis d´eterminer la relation de r´ecurrence permettant d’obtenir Sn+1 `a partir de Sn.
2. Dans le langage Python, construire la fonction zeta qui, pour tout couple (x, n) donn´e, renvoie la valeur de Sn. On pr´esentera
deux programmes semblables, l’un reposant sur une boucle for, l’autre reposant sur une boucle while.
3. Renseigner votre programme afin que celui-ci soit plus clair.
Application 2 - Calcul des termes successifs d’un produit
On d´efinit le produit Pnpour tout nN, n 2 par :
Pn=
n
Y
k=2
k21
k2
1. Dans le langage Python, construire la fonction produit qui, pour tout entier ndonn´e, renvoie la valeur du produit Pn. On pourra
ajouter un test sur l’argument donn´e afin de renvoyer un message `a l’utilisateur si n < 2.
2. Modifier votre programme afin que celui-ci soit interactif, c’est `a dire que l’utilisateur devra rentrer la valeur de nau cours du
programme.
3. Calculer P10, P20,...,P100. Quelle hypoth`ese pouvez-vous faire ?
4. emontrer alors le r´esultat annonc´e.
2
1 / 2 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 !