Pratiquer l’algorithmique Qu’est-ce qu’un algorithme ? THÈME 1

publicité
Pratiquer
l’algorithmique
THÈME 1
Qu’est-ce qu’un algorithme ?
Activité
2. b)
2 – Tracé d’au moins deux hauteurs issues des sommets
du triangle.
– Tracé du point H, intersection des hauteurs tracées.
3 Traitement : le tracé des hauteurs.
1 1. Les points O et A.
2. Un carré de centre O et dont un sommet est A.
2 Éléments donnés : l’expression de f (x) et la valeur a.
Question posée : « Donnez l’équation de la tangente à la
courbe représentant f au point d’abscisse a.
3 Entrées : les coefficients A, B et C du trinôme.
Traitements : le calcul du discriminant DELTA.
Sorties : les valeurs a et b.
4 1.On peut déduire le sens de variation de la fonction
f sur l’intervalle I.
5 Les entrées de ces deux algorithmes ne sont pas
identiques. On ne peut donc pas dire que ces algorithmes
sont équivalents.
6 • Créez dans l’ordre : le triangle ABC, deux
bissectrices intérieures à ce triangle, le point d’intersection D
des deux bissectrices, la perpendiculaire à l’un des côtés
passant par le point D, le point d’intersection E entre cette
perpendiculaire et le côté utilisé, le cercle de centre D
passant par E.
• Utilisez la commande « Créer un nouvel outil ».
• Choisissez le cercle inscrit dans l’onglet « objets finaux »,
les points A, B et C dans l’onglet « objets initiaux ».
© Nathan 2012 – Transmath Term. S
Exercices
f ’ est positive pour x  −1 et pour x  2. Donc la fonction
f est strictement croissante sur ]–  ; −1] et [2 ; + [ et strictement décroissante sur [−1 ; 2].
Enseignement spécifique ● Pratiquer l'algorithmique
1
Variables et affectation
THÈME 2
b) Oui. Voir la question 2.
Activité
2. Avec AlgoBox :
1 On obtient f (4).
2 5
3 –
EXE
÷ 2 –
EXE
Exercices
7 5 ×
5 +
4 ×
4 A
A
EXE
8 a)4 b) 4
+
2 B
A
EXE
EXE
EXE
–
2 B
×
2 –
5 ÷ A
EXE
+
5 EXE
EXE
A
9 A – 2 ; B – 3 ; C – 1 .
10 1. a) On peut envisager jusqu’à cinq variables :
le premier nombre A, le carré B de ce premier nombre,
le second nombre C, le carré D de ce second nombre, la
somme E de B et D.
THÈME 3
11 1.p, n, t, PHT et PTTC.
2. PHT PREND_LA_VALEUR n*p
PTTC PREND_LA_VALEUR PHT*(1+t/100)
3. a) p, n, t.
b) p PREND_LA_VALEUR n*p
p PREND_LA_VALEUR p*(1+t/100)
c) L’économie du nombre de variables dégrade la lisibilité
de l’algorithme.
L’instruction conditionnelle
Activité
13 1. Il suffit d’ajouter une variable p et la ligne de
traitement « p prend la valeur b-m*a ».
2. Avec AlgoBox :
1
2
3
4
5
6
7
8
9
Exercices
© Nathan 2012 – Transmath Term. S
12 T.I.
10
11
12
13
14
15
16
17
Casio
18
19
20
21
22
2
Enseignement spécifique ● Pratiquer l'algorithmique
VARIABLES
a EST_DU_TYPE NOMBRE
b EST_DU_TYPE NOMBRE
c EST_DU_TYPE NOMBRE
d EST_DU_TYPE NOMBRE
m EST_DU_TYPE NOMBRE
p EST_DU_TYPE NOMBRE
DEBUT_ALGORITHME
AFFICHER «Saisissez les coordonnées
du point A.»
LIRE a
LIRE b
AFFICHER «Saisissez les coordonnées
du point B.»
LIRE c
LIRE d
// On calcule les paramètres de la
droite
m PREND_LA_VALEUR (d-b)/(c-a)
AFFICHER «Le coefficient directeur
de (AB) est »
AFFICHER m
p PREND_LA_VALEUR b-m*a
AFFICHER «L’ordonnée à l’origine
de (AB) est »
AFFICHER p
FIN_ALGORITHME
3. Avec AlgoBox :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
22
23
24
25
26
27
28
29
VARIABLES
a EST_DU_TYPE NOMBRE
b EST_DU_TYPE NOMBRE
c EST_DU_TYPE NOMBRE
d EST_DU_TYPE NOMBRE
m EST_DU_TYPE NOMBRE
p EST_DU_TYPE NOMBRE
DEBUT_ALGORITHME
AFFICHER «
Saisissez les coordonnées
du point A.»
LIRE a
LIRE b
AFFICHER «
Saisissez les coordonnées
du point B.»
LIRE c
LIRE d
SI (a==c) ALORS
DEBUT_SI
AFFICHER «
(AB) est parallèle à (Oy)
et a pour équation x = »
AFFICHER a
FIN_SI
SINON
DEBUT_SINON
m PREND_LA_VALEUR (d-b)/(c-a)
AFFICHER «
Le coefficient directeur
de (AB) est »
AFFICHER m
p PREND_LA_VALEUR b-m*a
AFFICHER «
L’ordonnée à l’origine
de (AB) est »
AFFICHER p
FIN_SINON
FIN_ALGORITHME
message PREND_LA_VALEUR «v= 0 u.»
FIN_SI
SINON
DEBUT_SINON
SI (c==0) ALORS
DEBUT_SI
k PREND_LA_VALEUR b/d
message PREND_LA_VALEUR
«u = «+k+» v.»
FIN_SI
SINON
DEBUT_SINON
k PREND_LA_VALEUR a/c
message PREND_LA_VALEUR
«u = «+k+» v.»
FIN_SINON
FIN_SINON
SI (a*d-b*c==0) ALORS
DEBUT_SI
AFFICHER «u et v sont colinéaires.»
AFFICHER message
FIN_SI
SI (a*c+b*d==0) ALORS
DEBUT_SI
AFFICHER «u et v sont orthogonaux.»
FIN_SI
FIN_ALGORITHME
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
15 T.I.
14 a)Cet algorithme teste la colinéarité ou l’orthogonalité de deux vecteurs définis par leurs coordonnées.
Ligne 15 : « … colinéaires. »
Ligne 19 : « … orthogonaux. »
b) et c) Le programme AlgoBox final peut être :
10
11
12
13
14
15
16
17
18
19
20
21
VARIABLES
a EST_DU_TYPE NOMBRE
b EST_DU_TYPE NOMBRE
c EST_DU_TYPE NOMBRE
d EST_DU_TYPE NOMBRE
k EST_DU_TYPE NOMBRE
message EST_DU_TYPE CHAINE
DEBUT_ALGORITHME
AFFICHER «
Entrez les coordonnées du
vecteur u.»
LIRE a
LIRE b
AFFICHER «
Entrez les coordonnées du
vecteur v.»
LIRE c
LIRE d
SI (a==0 et b==0) ALORS
DEBUT_SI
AFFICHER «u est nul.»
FIN_SI
SI (c==0 et d==0) ALORS
DEBUT_SI
AFFICHER «v est nul.»
Casio
© Nathan 2012 – Transmath Term. S
1
2
3
4
5
6
7
8
9
16 1.
Entrées
Sorties
A
B
C
A
B
H
4
8
7
4
7
8
8
7
4
4
7
8
8
4
7
7
4
8
4
7
8
4
7
8
Enseignement spécifique ● Pratiquer l'algorithmique
3
2. Cet algorithme affecte à la variable H la plus grande des
valeurs A, B, C initialement saisies.
Avec AlgoBox :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
VARIABLES
a EST_DU_TYPE NOMBRE
b EST_DU_TYPE NOMBRE
c EST_DU_TYPE NOMBRE
h EST_DU_TYPE NOMBRE
DEBUT_ALGORITHME
LIRE a
LIRE b
LIRE c
h PREND_LA_VALEUR c
SI (a<b) ALORS
DEBUT_SI
SI (b>c) ALORS
DEBUT_SI
h PREND_LA_VALEUR b
b PREND_LA_VALEUR c
THÈME 4
4 Le dixième carré a un côté inférieur à 0,5.
Exercices
17 1. et 2.
T.I.
Casio
© Nathan 2012 – Transmath Term. S
34
35
FIN_SI
FIN_SI
SINON
DEBUT_SINON
SI (a>c) ALORS
DEBUT_SI
h PREND_LA_VALEUR a
a PREND_LA_VALEUR c
FIN_SI
FIN_SINON
SI (h*h==a*a+b*b) ALORS
DEBUT_SI
AFFICHER «Le triangle est rectangle.»
FIN_SI
SINON
DEBUT_SINON
AFFICHER «Le triangle n’est pas
rectangle.»
FIN_SINON
FIN_ALGORITHME
La boucle conditionnelle
Activité
Remarque. Dans le langage de programmation CASIO, les
instructions d’une boucle « Do-LpWhile » sont exécutées
une première fois, puis tant que la condition est vérifiée.
18 1.Au début du jeu, le lièvre et la tortue sont derrière
la ligne de départ. Un dé est lancé. Si le résultat de ce
4
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
Enseignement spécifique ● Pratiquer l'algorithmique
lancer est 6, alors le lièvre arrive directement sur la case
« Arrivée » et remporte la manche. Sinon, la tortue avance
d’un nombre de cases égal au résultat du lancer. Si la tortue
arrive sur la case « Arrivée », alors elle remporte la manche.
On relance le dé jusqu’à ce que l’un des protagonistes
remporte la manche.
2. Avec AlgoBox :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
VARIABLES
T EST_DU_TYPE NOMBRE
L EST_DU_TYPE NOMBRE
D EST_DU_TYPE NOMBRE
GL EST_DU_TYPE NOMBRE
GT EST_DU_TYPE NOMBRE
i EST_DU_TYPE NOMBRE
DEBUT_ALGORITHME
i PREND_LA_VALEUR 0
GT PREND_LA_VALEUR 0
GL PREND_LA_VALEUR 0
TANT_QUE (i<1000) FAIRE
DEBUT_TANT_QUE
i PREND_LA_VALEUR i+1
D PREND_LA_VALEUR 0
T PREND_LA_VALEUR 0
L PREND_LA_VALEUR 0
TANT_QUE (T<7 ET L!=7) FAIRE
DEBUT_TANT_QUE
SI (D==6) ALORS
DEBUT_SI
L PREND_LA_VALEUR 7
GL PREND_LA_VALEUR GL+1
FIN_SI
SINON
DEBUT_SINON
T PREND_LA_VALEUR T+D
FIN_SINON
SI (T>=7) ALORS
DEBUT_SI
34
35
36
37
38
39
40
GT PREND_LA_VALEUR GT+1
FIN_SI
D P
REND_LA_VALEUR ALGOBOX_ALEA_
ENT(1,6)
FIN_TANT_QUE
FIN_TANT_QUE
AFFICHER « Nombre de parties gagnées
par le lièvre : »
AFFICHER GL
AFFICHER « Nombre de parties gagnées
par la tortue : »
AFFICHER GT
FIN_ALGORITHME
3.
1
2
3
4
5
6
7
8
9
VARIABLES
T EST_DU_TYPE NOMBRE
L EST_DU_TYPE NOMBRE
D EST_DU_TYPE NOMBRE
GL EST_DU_TYPE NOMBRE
GT EST_DU_TYPE NOMBRE
gagnant EST_DU_TYPE CHAINE
DEBUT_ALGORITHME
/
/La tortue et le lièvre sont derrière
la ligne de départ.
10
T PREND_LA_VALEUR 0
11
D PREND_LA_VALEUR 0
12
TANT_QUE (T<7 ET L!=7) FAIRE
13
DEBUT_TANT_QUE
14
/
/On lance un dé tant qu’il n’y a
pas de vainqueur.
15
D PREND_LA_VALEUR ALGOBOX_ALEA ENT(1,6)
16
AFFICHER D
17
/
/Si le dé indique 6 alors le
lièvre arrive directement sur la
case arrivée et gagne la partie.
18
SI (D==6) ALORS
19
DEBUT_SI
20
L PREND_LA_VALEUR 7
21
gagnant PREND_LA_VALEUR «le lièvre.»
22
FIN_SI
23
SINON
24
DEBUT_SINON
25
//Sinon la tortue avance du
nombre de cases indiquées par le
dé.
26
T PREND_LA_VALEUR T+D
27
FIN_SINON
28
SI (T>=7) ALORS
29
DEBUT_SI
30
//Si la tortue franchit la ligne
d’arrivée alors elle gagne la
partie.
31
gagnant PREND_LA_VALEUR «la tortue.»
32
FIN_SI
33
FIN_TANT_QUE
34
AFFICHER «Le gagnant est : »
35
AFFICHER gagnant
36 FIN_ALGORITHME
4. La tortue semble avantagée. En modifiant le programme,
on peut conjecturer que pour 10 ou 11 cases, le jeu est plus
équitable.
19 1.Avec AlgoBox :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
VARIABLES
u EST_DU_TYPE NOMBRE
v EST_DU_TYPE NOMBRE
a EST_DU_TYPE NOMBRE
b EST_DU_TYPE NOMBRE
p EST_DU_TYPE NOMBRE
DEBUT_ALGORITHME
u PREND_LA_VALEUR 2
v PREND_LA_VALEUR 1
LIRE p
TANT_QUE (u-v>p) FAIRE
DEBUT_TANT_QUE
a PREND_LA_VALEUR (u+v)/2
b PREND_LA_VALEUR 4/(u+v)
u PREND_LA_VALEUR a
v PREND_LA_VALEUR b
FIN_TANT_QUE
AFFICHER v
AFFICHER u
FIN_ALGORITHME
2. On modifie les lignes suivantes :
8
14
u PREND_LA_VALEUR 5
b PREND_LA_VALEUR 10/(u+v)
20 1. Selon les habitudes de programmation, les répon­ses
peuvent être variées.
Voici un algorithme utilisant les opérateurs de base :
Variables
a, b et c sont de type numérique
Entrée
Lire a et b
Tant que a>0
R prend la valeur a
a prend la valeur a-b
Fin de boucle
Sortie
Afficher R
2. La structure « jusqu’à » n’existe pas pour tous les langages
de programmation. On utilise alors une structure « tant que »
en s’assurant que les instructions de la boucle seront exécutées au moins une fois. Exemple avec AlgoBox :
3. PGCD(660 ; 1 050) = 30 et PGCD(4 410 ; 2 100) = 210.
Enseignement spécifique ● Pratiquer l'algorithmique
5
© Nathan 2012 – Transmath Term. S
31
32
33
THÈME 5
La boucle incrémentale
Activité
1 a) Ligne 6 : u prend la valeur 5
3. On peut envisager plusieurs solutions avec une structure
conditionnelle. On peut aussi changer la formule de calcul
de la note pour prendre en compte une pénalité P (P  0) :
Ligne 10 : Tant que i < p
Ligne 11 : u prend la valeur 0.9u.
b)T.I.
Casio
23 1. a) Hormis 1, le plus petit diviseur de N peut
2.T.I.
être 2. Dans ce cas, N est le plus grand des diviseurs de
2
N, hormis N lui-même.
b) On peut tester si le reste de la division euclidienne de N
par I est nul (voir la question 1. de l’exercice 20 ).
Casio
c) Avec AlgoBox :
Exercices
21 1. T.I.
© Nathan 2012 – Transmath Term. S
Casio
2. Non car il serait nécessaire de connaitre par avance le
nombre d’itérations de la boucle.
22 1.Répondre aléatoirement à chaque question
revient à attribuer à chaque réponse la note aléatoire 0
ou 1. La fonction ALGOBOX_ALEA_ENT(0,1) retourne
aléatoirement 0 ou 1. On simule ici par une boucle une
réponse aléatoire aux dix questions successives.
2. Il s’agit d’un problème d’initialisation de la variable Note.
La ligne 14 doit être déplacée entre les lignes 9 et 10.
6
Enseignement spécifique ● Pratiquer l'algorithmique
2. a) Avec AlgoBox :
Commentaire. On convient que dans le cas N = 1 (un seul
diviseur), le joueur marque aussi 1 point.
L’algorithme proposé permet le calcul du score à l’issue
des 100 parties.
Une autre approche est possible en faisant afficher le gain
algébrique moyen :
score
.
gain moyen =
nombre de parties
c) En modifiant l’algorithme pour simuler un grand nombre
de parties et en effectuant plusieurs simulations, on peut
conjecturer une valeur de p proche de 10.
Commentaire. On note G la variable aléatoire qui indique
le gain algébrique lors d’une partie.
Dire que le jeu est équitable signifie que E(G) = 0.
L’utilisation du programme de la question 2. a) permet de
dénombrer le nombre de diviseurs des entiers de 1 à 100 :
1
2
21
4
31
2
41
2
51
4
61
2
71
2
81
5
91
4
1
11
2
6
22
4
32
4
42
8
52
6
62
4
72
12
82
4
92
6
2
12
2
2
23
2
33
4
43
2
53
2
63
6
73
2
83
2
93
4
3
13
3
4
24
8
34
4
44
6
54
8
64
7
74
4
84
12
94
4
4
14
2
4
25
3
35
4
45
6
55
4
65
4
75
6
85
4
95
4
5
15
4
5
26
4
36
9
46
4
56
8
66
8
76
6
86
4
96
12
6
16
2
2
27
4
37
2
47
2
57
4
67
2
77
4
87
4
97
2
7
17
4
6
28
6
38
4
48
10
58
4
68
6
78
8
88
8
98
6
8
18
3
2
29
2
39
4
49
3
59
2
69
4
79
2
89
2
99
6
9
19
4
6
30
8
40
8
50
6
60
12
70
8
80
10
90
12
100
9
10
20
Ainsi entre 1 et 100, il existe :
• 20 nombres entiers ayant au moins 7 diviseurs,
• 25 nombres premiers,
• 55 nombres entiers ayant entre 3 et 6 diviseurs ou bien
égal à 1.
Loi de G:
k
P(G = k)
−10
0,25
1
0,55
p
0,2
D’où E(G) = 0,2p – 1,95.
Ainsi, E(G) = 0 ⇔ 0,2p – 1,95 = 0 ⇔ p = 9,75.
La conjecture sur la valeur entière de p qui rende ce jeu le
plus équitable possible est en accord avec ce résultat.
© Nathan 2012 – Transmath Term. S
b) Avec AlgoBox :
Enseignement spécifique ● Pratiquer l'algorithmique
7
Téléchargement