1BCPST3 Informatique - TP2: structures conditionnelles et itératives Lycée Thiers
Dans les structures suivantes, l’indentation (i.e. le décalage en début de ligne) est essentielle.
dd Les instructions se trouvant hierarchiquement au même niveau doivent être alignées.
L’ESSENTIEL
•Structure conditionnelle :
Pour effectuer un test simple on peut utiliser la structure suivante. Remarquez les deux points ":" à la fin des lignes où figurent ifetelseet remarquez qu’il n’y a pas de condition à énoncer après leelse.
if C:
Instruction 1 Instruction 2 ...
else :
Instruction 1’
Instruction 2’
...
Un exemple :
x=float(input(’x:’)) y=float(input(’y:’)) if x<y :
print(y) else :
print(x)
Pour effectuer un test composé dont les conditions s’excluent mutuellement on peut utiliser la structure suivante : if C1 :
Instruction I1 ...
elif C2 :
Instruction I2 ...
...
elif Cn :
Instruction In ...
else :
Instruction J ...
Un exemple :
a=float(input(’a:’)) b=float(input(’b:’)) c=float(input(’c:’)) d=b**2-4*a*c
if d>0 :
print(’deux solutions réelles’) elif d<0 :
print(’pas de solution réelle’) else :
print(’une solution réelle’)
–simplementconnexe.free.fr– –1–
1BCPST3 Informatique - TP2: structures conditionnelles et itératives Lycée Thiers
•Structure itérative finie :
Lorsque l’on connaît par avance le nombre de fois qu’une instruction doit être effectuée on utilisera la boucle suivante : si on cherche à répéternfois des instructionsI1,. . ., la syntaxe est
for i in range(1,n) : Instruction I1 Instruction I2 ...
Deux exemples :
for i in range(5): | n=int(input(’n:’)
print(’Lorsque i vaut’,i) | for i in range(1,n+1):
print(’2i^2+1 vaut:’,2*i**2+1) | if i%2==0 :
print(’Terminé. Voilà ce que vaut i:’,i) | print(i)
•Structure itérative conditionnelle :
On cherche à répéter une série d’instructionsI1,. . .tant qu’une certaine conditionCest vérifiée.
Attention : si les instructions sont mal construites, on peut ne jamais sortir de la boucle, et avoir une boucle infinie, problème informatique courant . . .
while C :
Instruction I1 ...
Un exemple :
r=float(input(’r:’)) n=float(input(’n:’)) while (r>=n):
r=r-n print(r)
–simplementconnexe.free.fr– –2–
1BCPST3 Informatique - TP2: structures conditionnelles et itératives Lycée Thiers
EXERCICES
Quelques règles d’or à appliquer lorsqu’on a fini de "déboguer" un programme, c’est-à-dire lorsqu’il ne renvoie plus de messages d’erreur : tester avec des valeurs pour lesquelles on sait ce qui va arriver, où l’on sait ce que le script doit produire (déterminer le résultat attendu avant l’exécution de l’algorithme) ; éviter les cas trop simples dans un premier temps, éviter de s’en tenir à des cas très particuliers où le résultat fourni serait correct par miracle ; en présence d’une disjonction de cas, tester tous les cas ; ne pas oublier à la fin de tester les cas particuliers, voire pathologiques.
Exercice 1 :
1. Écrire un programme qui demande à l’utilisateur de saisir deux nombres et qui affiche le plus grand des deux en utilisant une instruction conditionnelle.
2. Écrire un programme qui demande à l’utilisateur un réel et qui affiche la valeur absolue de ce nombre en utilisant une instruction conditionnelle.
Exercice 2 :
Écrire un script qui calcule la factorielle d’un entier fourni par l’utilisateur.
Exercice 3 :
Écrire un programme qui demande à l’utilisateur de saisir un entiern, et qui affiche le plus grand entierktel quek2≤n.
Exercice 4 :
Écrire un programme qui test si un réel donné par l’utilisateur est entier, affichepairsi cet entier est pair etimpairsi cet entier est impair, et affiche un message si ce nombre n’est pas entier. Il sera utile d’importer la fonctionfloor.
Exercice 5 :
Écrire un programme qui affiche tous les entiers de l’intervalle[310,477]qui sont divisibles par 3 et par 5. Votre programme indiquera également le nombre d’entiers affichés.
Exercice 6 :
Écrire un script qui calcule à l’aide d’une boucle len-ième terme de la suite(un)définie parun=
n
∑
k=1
k2. Exercice 7 :
Écrire un programme qui affiche la valeurxn, où la suite(xn)n∈Nest définie parx0=aetxn+1=√
xnsiaetn sont saisis par l’utilisateur. On pourra (mais ce n’est pas impératif) importer la fonctionsqrt.
Exercice 8 :
On admet pour l’instant que la suite définie paru0=2 etun+1=un 2 + 1
un
converge vers√
2. Écrire un programme qui affiche la valeur du premier terme de la suite qui se trouve dans l’intervalle]√
2−10−5,√
2+10−5[.
Exercice 9 :
Soit(un)n≥0et(vn)n≥0les suites définies paru0=0,un+1=5un−2
un+2 etvn=un−2 un−1.
Écrire un script permettant de calculer lesnpremiers termes de la suite(vn)quandnest saisi en entrée. Que peut-on conjecturer sur la suite(vn)?
Exercice 10 : suite de Fibonacci
Écrire un script qui calcule len-ième terme de la suite de Fibonacci, oùnest fourni par l’utilisateur (on essayera autant que pos- sible de minimiser la taille du script et l’utilisation mémoire en se servant judicieusement de la virgule permettant les affectations multiples) : cette suite est définie paru0=0,u1=1 et pour tout entiern,un+2=un+1+un.
Exercice 11 : suite de Syracuse
On considère la suite(un)n≥0définie paru0=aetun+1= (un
2 siunest pair 3un+1 sinon
oùaest un entier naturel.
1. Écrire un script qui calcule len-ième terme de la suite de Syracuse partant dea, oùnetasont fournis par l’utilisateur.
2. Écrire un script qui affiche le "temps de vol" de la suite partant dea(choisi par l’utilisateur) : le rang du premier terme de la suite égal à 1.
3. Compléter le script précédent pour qu’il affiche aussi "l’altitude" de la suite : la valeur la plus élevée atteinte avant d’ar- river à la valeur 1.
–simplementconnexe.free.fr– –3–