ÉLEMENTS DE CORRECTION
ALG5 - FONCTIONS ET EXEMPLES D’APPLICATION
ALG5 - FONCTIONS ET EXEMPLES D’APPLICATION
Les corrections des exercices données ci-après ne sont que des indications pour aboutir à la solution, qui détaillent la plupart du temps un cheminement à suivre. D’autres solutions
sont possibles.. .
ÉLÉMENTS DE CORRECTION DE L’EXERCICE NO1
On n’oubliera pas d’écrire les spécifications de la fonction.
Code Python
1def compare_x_y(x,y):
2""" A partir de deux réels x et y renverra:
3* -1 si x<y
4* 0 si x=y
5* 1 sinon """
6if x<y:
7return -1
8else:
9if x>y:
10 return 1
11 else:
12 return 0
ÉLÉMENTS DE CORRECTION DE L’EXERCICE NO2
Lorsque l’on met en application l’algorithme des divisions successives, il est nécessaire de récupérer le valeurs des bits obtenus puis
de « retourner » leur affichage. On écrira donc une fonction qui « retourne » une chaîne de caractère.
Code Python
1def retourne_chaine(chaine):
2""" Retourne une chaîne de caractères """
3retourne=""
4for i in range(0,len(chaine)):
5retourne=retourne+chaine[len(chaine)-i-1]
6return retourne
7
8def decomposition_en_binaire(n):
9""" Renvoie la décomposition en binaire de l’entier
10 naturel n par la méthode des divisions successives """
11 N=n
12 i=0
13 S=""
14 while N!=0:
15 S=S+str(N%2)
16 N=N//2
17 return retourne_chaine(S)
ÉLÉMENTS DE CORRECTION DE L’EXERCICE NO3
(1). On classe les trois nombres par ordre croissant en étudiant les différents cas :
Code Python
1def ord_triplet(x,y,z):
2""" Renvoie par ordre croissant les trois nombres
3x,y,z saisis en paramètres """
4if x<=y:
5if y<=z:
6return x,y,z
7else:
8if x<=z:
9return x,z,y
10 else:
11 return z,x,y
12 else:
13 if x<=z:
14 return y,x,z
15 else:
16 if y<=z:
17 return y,z,x
18 else:
19 return z,y,x
(2). Les trois côtés a,bet cn’étant pas saisi nécessairement dans l’ordre, il faut les réordonner tout d’abord pour avoir la mesure
du plus grand côté de ce triangle.
Code Python
1def pythagore(a,b,c):
2""" vérifie que le triangle donc les trois côtés
3mesurent a, b et c est rectangle
4Renverra Vrai si c’est le cas, Faux sinon """
5
6print(type(ord_triplet(a,b,c)))
7cote=ord_triplet(a,b,c)
8if cote[2]**2==cote[1]**2+cote[0]**2:
9return True
10 else:
11 return False
ÉLÉMENTS DE CORRECTION DE L’EXERCICE NO4
Code Python
1def ligne_sapin(n,d):
2ligne=d+""
3for i in range(n):
4ligne=ligne+"^"
5return ligne
6
7def decalage(n):
8d=""
9for i in range(n):
10 d=d+" "
11 return d
12
13 def sapin(n):
14 nb_motif=1
15 decale=decalage(n+1)
16 for i in range(n):
17 print(ligne_sapin(nb_motif,decale))
18 nb_motif=nb_motif+2
19 decale=decalage(n-i)
20
21 sapin(12)
ÉLÉMENTS DE CORRECTION DE L’EXERCICE NO5
(1). Il suffit de faire calculer le reste de la division euclidienne de npar 10 :
Code Python
1def unite(n):
2""" Renvoie le chiffre des unités de l’entier n"""
3return n\%10
INFORMATIQUE - CPGE MPSI - 2016/17 1 ÉLÉMENTS DE CORRECTION CHAPITRE ALG5