Uploaded by 7h3 Cr42y 80M83

algoboxbook1

advertisement
Algorithmique en classe
de première avec AlgoBox
Version 1.3 - Août 2017
Cette œuvre est mise à disposition selon les termes de la Licence Creative Commons
Attribution - Pas d’utilisation Commerciale - Partage à l’identique 3.0 non transposé.
© 2017 Pascal Brachet
Vous êtes libre de reproduire, distribuer, communiquer et adapter l’œuvre selon les
conditions suivantes :
— Vous n’avez pas le droit d’utiliser cette œuvre à des fins commerciales.
— Si vous modifiez, transformez ou adaptez cette œuvre, vous n’avez le droit de
distribuer votre création que sous une licence identique ou similaire à celle-ci.
Cette brochure a été réalisée avec le système de composition LATEX et l’éditeur TEXMAKER .
http://www.xm1math.net/doculatex/index.html
–i–
SOMMAIRE
Sommaire
Avant-propos
iv
I
1
Activités « élèves »
1 Pourcentages
2
2 Second degré
4
3 Fonctions
6
4 Statistiques/Probabilités
11
5 Suites numériques
16
6 Géométrie
23
7 Trigonométrie
26
II
28
Annexes
A Structures algorithmiques de base avec AlgoBox
A.1 Variables et affectations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
A.2 Instructions conditionnelles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
A.3 Boucles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
29
30
32
34
B Mémento sur l’utilisation d’AlgoBox
B.1 Équivalence entre « pseudo-codes » . . . . . . . . . . . . . . . . . . . . . . .
B.1.1 Entrée des données . . . . . . . . . . . . . . . . . . . . . . . . . . . .
B.1.2 Affichage des données . . . . . . . . . . . . . . . . . . . . . . . . . .
B.1.3 Affecter une valeur à une variable . . . . . . . . . . . . . . . . . . . .
B.1.4 Structure SI ALORS . . . . . . . . . . . . . . . . . . . . . . . . . . . .
B.1.5 Boucle POUR... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
B.1.6 Structure TANT QUE... . . . . . . . . . . . . . . . . . . . . . . . . . .
B.2 Les problèmes de syntaxe . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
B.2.1 Les erreurs de syntaxe les plus courantes . . . . . . . . . . . . . . . .
B.2.2 Syntaxe des opérations mathématiques . . . . . . . . . . . . . . . . .
B.2.3 Syntaxe pour les conditions . . . . . . . . . . . . . . . . . . . . . . .
B.2.4 Syntaxe pour les fonctions statistiques et les opérations sur les listes
B.2.5 Fonctions concernant les probabilités . . . . . . . . . . . . . . . . . .
B.2.6 Fonctions concernant les chaines de caractères . . . . . . . . . . . .
B.3 Fonctionnement d’AlgoBox . . . . . . . . . . . . . . . . . . . . . . . . . . . .
B.3.1 Les deux règles fondamentales . . . . . . . . . . . . . . . . . . . . .
B.3.2 Les variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
B.3.3 Les listes de nombres . . . . . . . . . . . . . . . . . . . . . . . . . . .
38
38
38
38
38
39
39
39
40
40
40
40
41
41
41
41
41
42
42
– ii –
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
SOMMAIRE
B.3.4 Boucle POUR...DE...A . . . . . . . . . . . . . . . . . . . . . . . . . .
B.3.5 Structure TANT QUE . . . . . . . . . . . . . . . . . . . . . . . . . . .
B.3.6 Utilisation de l’onglet « Utiliser une fonction numérique » . . . . .
B.3.7 Utilisation de l’onglet « Dessiner dans un repère » . . . . . . . . . .
B.3.8 Utilisation d’une « Fonction locale » . . . . . . . . . . . . . . . . . .
B.3.9 Récupération facile d’un code AlgoBox dans un traitement de texte
B.4 Quelques techniques classiques . . . . . . . . . . . . . . . . . . . . . . . . .
B.4.1 Diviseur ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
B.4.2 Entier pair ou impair ? . . . . . . . . . . . . . . . . . . . . . . . . . .
B.4.3 Entier pseudo-aléatoire compris entre 1 et N . . . . . . . . . . . . .
B.4.4 « Balayage » d’un intervalle . . . . . . . . . . . . . . . . . . . . . . .
B.4.5 Suites numériques . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
B.4.6 Échanger le contenu de deux variables . . . . . . . . . . . . . . . . .
B.4.7 Afficher un message contenant du texte et des nombres . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
42
42
43
43
44
45
45
45
45
45
45
46
47
47
C Algorithmes supplémentaires
C.1 Second degré . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
C.2 Paramètres d’une série statistique . . . . . . . . . . . . . . . . . . . . . . . . . . .
C.3 Tabulation loi binomiale - Intervalle de fluctuation à 95% . . . . . . . . . . . . .
48
48
49
50
– iii –
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Avant-propos
Rappel des instructions officielles concernant l’algorithmique dans
les programmes de mathématiques :
1. Instructions élémentaires (affectation, calcul, entrée, sortie).
Les élèves, dans le cadre d’une résolution de problèmes, doivent être capables :
— d’écrire une formule permettant un calcul ;
— d’écrire un programme calculant et donnant la valeur d’une fonction ;
— ainsi que les instructions d’entrées et sorties nécessaires au traitement.
2. Boucle et itérateur, instruction conditionnelle.
Les élèves, dans le cadre d’une résolution de problèmes, doivent être capables de :
— programmer un calcul itératif, le nombre d’itérations étant donné ;
— programmer une instruction conditionnelle, un calcul itératif, avec une fin de boucle conditionnelle.
3. Dans le cadre de cette activité algorithmique, les élèves sont entraînés à :
— décrire certains algorithmes en langage naturel ou dans un langage symbolique ;
— en réaliser quelques-uns à l’aide d’un tableur ou d’un programme sur calculatrice ou avec
un logiciel adapté ;
— interpréter des algorithmes plus complexes.
Contenu de cette brochure :
— Des activités « élèves » strictement conformes aux programmes en vigueur.
— Des annexes comportant :
— Des activités d’apprentissage des techniques de base en algorithmique avec Algobox ;
— Un mémento sur les fonctions d’AlgoBox ;
— Des algorithmes supplémentaires en rapport avec le contenu mathématique des programmes de première.
À propos des activités « élèves » :
Les fiches « professeurs » et « élèves » sont sur des pages différentes afin de faciliter les photocopies.
Les activités sont présentées ici sous forme d’énoncés « à trou ». Il est bien sur possible de les
adapter selon sa convenance.
Adaptations possibles :
— donner l’algorithme complet et demander de décrire ce qu’il fait ;
— demander la réalisation complète de l’algorithme à partir de zéro.
Les fichiers AlgoBox des algorithmes de la partie « Activités élèves » et de l’annexe C sont
disponibles en ligne à l’adresse suivante : http://www.xm1math.net/algobox/algobook.html
Première partie
Activités « élèves »
–1–
1. POURCENTAGES
1
Pourcentages
Fiche professeur 1A
— Fiche élève correspondante : page 3
— Fichier AlgoBox associé (algorithme complet) : algo_1A.alg
— Contexte (1ES/1STMG) : Application directe du cours sur les hausses en pourcentage
Fiche professeur 1B
— Fiche élève correspondante : page 3
— Fichier AlgoBox associé (algorithme complet) : algo_1B.alg
— Contexte (1ES/1STMG) : Recherche du nombre de hausses nécessaires pour doubler la
valeur d’une grandeur (algorithmique « utile » - résolution mathématique directe impossible en première) - Utilisation d’une boucle TANT_QUE
–2–
1. POURCENTAGES
Fiche élève 1A
Compléter la ligne 8 pour que l’algorithme AlgoBox ci-dessous soit correct :
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
VARIABLES
prixHT EST_DU_TYPE NOMBRE
prixTTC EST_DU_TYPE NOMBRE
TVA EST_DU_TYPE NOMBRE
DEBUT_ALGORITHME
LIRE prixHT
LIRE TVA
prixTTC PREND_LA_VALEUR prixHT*(..............)
AFFICHER "Le prix TTC est égal à "
AFFICHER prixTTC
11: FIN_ALGORITHME
Fiche élève 1B
Le PIB d’un pays émergent est de 700 milliards d’euros en 2010. Selon un modèle de prévision,
il devrait augmenter de 10% par an dans les années futures.
On cherche à créer un algorithme AlgoBox qui permette de déterminer en quelle année le PIB
aura doublé par rapport à 2010.
Compléter les lignes 7 et 9 ci-dessous pour que l’algorithme proposé réponde à la question.
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
VARIABLES
annee EST_DU_TYPE NOMBRE
PIB EST_DU_TYPE NOMBRE
DEBUT_ALGORITHME
PIB PREND_LA_VALEUR 700
annee PREND_LA_VALEUR 2010
TANT_QUE (PIB............) FAIRE
DEBUT_TANT_QUE
PIB PREND_LA_VALEUR PIB*...........
annee PREND_LA_VALEUR annee+1
FIN_TANT_QUE
AFFICHER "Le PIB aura doublé en "
AFFICHER annee
FIN_ALGORITHME
–3–
2. SECOND DEGRÉ
2
Second degré
Fiche professeur 2A
— Fiche élève correspondante : page 5
— Fichier AlgoBox associé (algorithme complet) : algo_2A.alg
— Contexte (1S/1ES/1STL/1STMG) : Recherche et codage des conditions pour que les valeurs d’un trinôme soient toujours strictement positives.
–4–
2. SECOND DEGRÉ
Fiche élève 2A
On considère la fonction f définie sur R par f (x) = ax2 + bx + c avec a , 0.
Compléter la ligne 11 pour que l’algorithme AlgoBox ci-dessous soit correct :
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
VARIABLES
a EST_DU_TYPE NOMBRE
b EST_DU_TYPE NOMBRE
c EST_DU_TYPE NOMBRE
delta EST_DU_TYPE NOMBRE
DEBUT_ALGORITHME
LIRE a
LIRE b
LIRE c
delta PREND_LA_VALEUR b*b-4*a*c
SI (.......................) ALORS
DEBUT_SI
AFFICHER "f(x) est toujours strictement positif"
FIN_SI
SINON
DEBUT_SINON
AFFICHER "f(x) n’est pas toujours strictement positif"
FIN_SINON
FIN_ALGORITHME
–5–
3. FONCTIONS
3
Fonctions
Fiche professeur 3A
—
—
—
—
Fiche élève correspondante : page 7
Fichier AlgoBox associé (algorithme complet) : algo_3A.alg
Contexte (1S/1ES/1STL/1STMG) : Création d’un tableau de valeurs avec un TANT_QUE
Prolongement possible : Faire tracer les points correspondants dans un repère (il suffit
d’utiliser l’onglet Dessiner dans un repère et d’ajouter l’instruction TRACER_POINT (x,y)
après AFFICHER y).
Attention : pour tracer une courbe en joignant les points par un segment, il faut un
algorithme plus complet (il faut les coordonnées des deux points à joindre - un exemple
est fourni avec AlgoBox : menu "Fichier" -> "Ouvrir un exemple")
Fiche professeur 3B
— Fiche élève correspondante : page 8
— Fichier AlgoBox associé (algorithme complet) : algo_3B.alg
√
— Contexte (1S) : Recherche d’une valeur approchée de l’équation x2 x = 2 par dichotomie
sur [0 ; 2] .
— Prolongements possibles :
— Remplacer la boucle POUR numero_etape ALLANT_DE 1 A 4 par un TANT_QUE portant sur la précision souhaitée.
— Étudier un autre cas où la fonction est strictement décroissante
— Établir un algorithme qui fonctionne dans tous les cas (fonction strictement croissante ou strictement décroissante)
Fiche professeur 3C
— Fiche élève correspondante : page 10
— Fichier AlgoBox associé (algorithme complet) : algo_3C.alg
— Contexte (1S) : Recherche par « balayage » du premier point d’une courbe dont le coefficient directeur de la tangente dépasse une certaine valeur .
— Prolongement possible : Introduire une variable correspondante au pas et adapter l’algorithme en conséquence.
–6–
3. FONCTIONS
Fiche élève 3A
√
Soit f la fonction définie sur [0 ; +∞[ par f (x) = x + x.
On cherche à créer un algorithme qui permette de compléter automatiquement le tableau de
valeurs suivant :
x
0
0,5
1
1,5
2
2,5
3
3,5
4
4,5
5
y = f (x)
Pour cela, on utilise le principe suivant : pour chaque valeur de x, on calcule la valeur correspondante de y et on augmente la valeur de x de 0,5 tant que la fin du tableau n’est pas
atteinte.
Compléter les lignes 6, 8 et 13 pour que l’algorithme AlgoBox ci-dessous réponde au problème :
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
VARIABLES
x EST_DU_TYPE NOMBRE
y EST_DU_TYPE NOMBRE
DEBUT_ALGORITHME
x PREND_LA_VALEUR 0
TANT_QUE (x.....) FAIRE
DEBUT_TANT_QUE
y PREND_LA_VALEUR ............
AFFICHER "Si x vaut "
AFFICHER x
AFFICHER " alors y vaut "
AFFICHER y
x PREND_LA_VALEUR ............
FIN_TANT_QUE
FIN_ALGORITHME
–7–
3. FONCTIONS
Fiche élève 3B
√
On considère la fonction f définie sur [0 ; 2] par f (x) = x2 x dont la courbe est donnée cidessous :
p
y = x2 x
On cherche à déterminer une valeur approchée du réel x0 tel que
f (x0 ) = 2.
On admet que f est strictement croissante sur [0 ; 2] et que sa courbe
ne contient pas de « trous » .√
Comme f (0) = 0 et f (2) = 4 2 > 2, on sait que x0 ∈ [0 ; 2].
b
5
4
3
2
b
1
~
|
0
O
x0
~
{
2
Pour déterminer une valeur approchée de x0 , on utilise la méthode dite de la « dichotomie »
dont le principe consiste à couper l’intervalle en deux et à regarder de quel côté se situe la
solution par rapport au milieu de l’intervalle.
1. Étant donné un intervalle [a; b] de milieu m et contenant x0 (avec a > 0 et b 6 2).
• Si f (m) < 2, dans quel intervalle se situe x0 ?
b
2
b
f (m)
b
b
m x0
a
b
• Si f (m) > 2, dans quel intervalle se situe x0 ?
b
f (m)
b
2
b
b
a
x0 m
b
2. Compléter le tableau suivant :
Étape
Intervalle de départ [a; b]
milieu m
f (m) < 2 ?
1
2
3
4
a=0
a=
a=
a=
m=1
m=
m=
m=
OUI
;b=2
;b=
;b=
;b=
–8–
Nouvel intervalle [a; b]
a=
a=
a=
a=
;b=
;b=
;b=
;b=
3. FONCTIONS
3. On cherche à automatiser les calculs grâce à un algorithme. Compléter les lignes 14 et 18
pour que l’algorithme AlgoBox ci-dessous réponde au problème.
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
VARIABLES
a EST_DU_TYPE NOMBRE
b EST_DU_TYPE NOMBRE
m EST_DU_TYPE NOMBRE
numero_etape EST_DU_TYPE NOMBRE
DEBUT_ALGORITHME
a PREND_LA_VALEUR 0
b PREND_LA_VALEUR 2
POUR numero_etape ALLANT_DE 1 A 4
DEBUT_POUR
m PREND_LA_VALEUR (a+b)/2
SI (m*m*sqrt(m)<2) ALORS
DEBUT_SI
...... PREND_LA_VALEUR m
FIN_SI
SINON
DEBUT_SINON
...... PREND_LA_VALEUR m
FIN_SINON
AFFICHER a
AFFICHER " <x0< "
AFFICHER b
FIN_POUR
FIN_ALGORITHME
–9–
3. FONCTIONS
Fiche élève 3C
√
Soit f la fonction définie sur [0 ; 3] par f (x) = 10x2 x et Cf sa courbe représentative dans un
repère.
√
1. Dériver f et montrer que pour x ∈ ]0 ; 3], on a f 0 (x) = 25x x.
2. Calculer le coefficient directeur de la tangente à Cf au point d’abscisse 1.
3. Calculer le coefficient directeur de la tangente à Cf au point d’abscisse 2.
4. On cherche à déterminer à l’aide d’un algorithme une valeur approchée à 0,01 près du
premier nombre a tel que le coefficient directeur de la tangente au point d’abscisse a soit
supérieur ou égal à 50.
On sait d’après les premières questions que a est compris entre 1 et 2. On part donc de a = 1
et on augmente a de 0,01 tant que le coefficient directeur ne dépasse pas 50.
Compléter les lignes 5 et 7 pour que l’algorithme AlgoBox ci-dessous réponde au problème.
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
VARIABLES
a EST_DU_TYPE NOMBRE
DEBUT_ALGORITHME
a PREND_LA_VALEUR 1
TANT_QUE (.....................) FAIRE
DEBUT_TANT_QUE
a PREND_LA_VALEUR ..............
FIN_TANT_QUE
AFFICHER a
FIN_ALGORITHME
– 10 –
4. STATISTIQUES/PROBABILITÉS
4
Statistiques/Probabilités
Fiche professeur 4A
— Fiche élève correspondante : page 12
— Fichier AlgoBox associé (algorithme complet) : algo_4A.alg
— Contexte (1S/1ES) : Simulation de 100 000 lancers de deux dés - Calcul du gain moyen
associé - Espérance d’une variable aléatoire
— Prolongement possible : Au lieu d’une simulation de 100 000 lancers, on peut effectuer
des centaines de simulation de 1 000 lancers.
Fiche professeur 4B
— Fiche élève correspondante : page 13
— Fichier AlgoBox associé (algorithme complet) : algo_4B.alg
— Contexte (1S/1ES/1STL/1STMG) : Simulation d’un QCM - Calcul de la moyenne des
notes obtenues
— Prolongement possible : Effectuer le calcul de la moyenne des notes au sein de l’algorithme.
Fiche professeur 4C
— Fiche élève correspondante : page 14
— Fichier AlgoBox associé (algorithme complet) : algo_4C.alg
— Contexte (1S/1ES/1STL/1STMG) : Simulation de naissances - Loi binomiale
Fiche professeur 4D
— Fiche élève correspondante : page 15
— Fichier AlgoBox associé (algorithme complet) : algo_4D.alg
— Contexte (1S/1ES/1STL/1STMG) : Fluctuation loi binomiale - Détermination avec un
algorithme des entiers a et b.
— Prolongement possible : Détermination de l’intervalle de fluctuation en divisant a et b par
la taille de l’échantillon.
– 11 –
4. STATISTIQUES/PROBABILITÉS
Fiche élève 4A
Un jeu consiste à lancer deux dés, un rouge et un noir. Pour pouvoir jouer il faut payer 1 euro.
On gagne 3 euros si la somme des points est supérieure ou égale à 9, 1 euro si la somme des
points est inférieure ou égale à 4 et rien dans les autres cas.
On cherche à savoir combien peut-on espérer gagner en moyenne si on joue un grand nombre
de fois à ce jeu. Pour cela, on appelle « gain effectif », la différence entre la somme gagnée et la
somme misée
Partie A : simulation à l’aide d’un algorithme
On cherche à établir un algorithme simulant 100 000 participations à ce jeu et donnant le gain
effectif moyen obtenu.
1. Compléter les lignes 13 et 17 dans l’algorithme AlgoBox ci-dessous pour qu’il réponde au
problème :
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
VARIABLES
numero_tirage EST_DU_TYPE NOMBRE
gain_moyen EST_DU_TYPE NOMBRE
resultat EST_DU_TYPE NOMBRE
somme_gains_effectifs EST_DU_TYPE NOMBRE
DEBUT_ALGORITHME
somme_gains_effectifs PREND_LA_VALEUR 0
POUR numero_tirage ALLANT_DE 1 A 100000
DEBUT_POUR
resultat PREND_LA_VALEUR ALGOBOX_ALEA_ENT(1,6)+ALGOBOX_ALEA_ENT(1,6)
SI (resultat>=9) ALORS
DEBUT_SI
somme_gains_effectifs PREND_LA_VALEUR somme_gains_effectifs+..........
FIN_SI
SI (resultat>=5 ET resultat<=8) ALORS
DEBUT_SI
somme_gains_effectifs PREND_LA_VALEUR ................................
FIN_SI
FIN_POUR
gain_moyen PREND_LA_VALEUR somme_gains_effectifs/100000
AFFICHER gain_moyen
FIN_ALGORITHME
2. Pourquoi l’algorithme ne traite-t-il pas le cas où resultat est inférieur ou égal à 4 ?
3. Que peut-on conjecturer sur la valeur du gain effectif moyen en procédant à plusieurs simulations grâce à cet algorithme ?
Partie B : analyse théorique
1. Compléter le tableau suivant en indiquant dans chaque case la somme des points obtenus :
dé rouge/dé noir
1
2
3
4
5
6
1
2
3
4
5
6
2. On note X la variable aléatoire qui donne le gain effectif obtenu par un joueur. À l’aide du
tableau ci-dessus, déterminer la loi de probabilité associée à X et calculer son espérance.
– 12 –
4. STATISTIQUES/PROBABILITÉS
Fiche élève 4B
Un QCM comporte cinq questions et, pour chaque question, trois réponses sont proposées
dont une seule est exacte. Une bonne réponse rapporte un point, une mauvaise réponse 0.
Question 1 :
Réponse 1
Réponse 2
Réponse 3
Question 2 :
Réponse 1
Réponse 2
Réponse 3
Question 3 :
Réponse 1
Réponse 2
Réponse 3
Question 4 :
Réponse 1
Réponse 2
Réponse 3
Question 5 :
Réponse 1
Réponse 2
Réponse 3
1. Quelles sont les notes minimale et maximale que l’on peut obtenir à ce QCM ?
2. On décide de simuler 1000 fois le fait de répondre au hasard à ce QCM à l’aide de l’algorithme AlgoBox ci-dessous (pour la simulation, on considère que la bonne réponse à chaque
question est la première) :
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:
31:
32:
VARIABLES
note EST_DU_TYPE NOMBRE
question EST_DU_TYPE NOMBRE
simulation EST_DU_TYPE NOMBRE
effectif EST_DU_TYPE LISTE
reponse_au_hasard EST_DU_TYPE NOMBRE
DEBUT_ALGORITHME
POUR note ALLANT_DE ... A ...
DEBUT_POUR
effectif[note] PREND_LA_VALEUR 0
FIN_POUR
POUR simulation ALLANT_DE 1 A 1000
DEBUT_POUR
note PREND_LA_VALEUR 0
POUR question ALLANT_DE 1 A 5
DEBUT_POUR
reponse_au_hasard PREND_LA_VALEUR ALGOBOX_ALEA_ENT(1,3)
SI (reponse_au_hasard==1) ALORS
DEBUT_SI
note PREND_LA_VALEUR note+1
FIN_SI
FIN_POUR
effectif[note] PREND_LA_VALEUR effectif[note]+1
FIN_POUR
POUR note ALLANT_DE ... A ...
DEBUT_POUR
AFFICHER "On a obtenu "
AFFICHER effectif[note]
AFFICHER " fois la note "
AFFICHER note
FIN_POUR
FIN_ALGORITHME
a) Compléter les lignes 8 et 25 de l’algorithme.
b) Obtient-on toujours les mêmes résultats en exécutant l’algorithme ?
3. Une exécution de l’algorithme a donné les résultats suivants :
***Algorithme lancé***
On a obtenu 126 fois la note 0
On a obtenu 324 fois la note 1
On a obtenu 343 fois la note 2
On a obtenu 166 fois la note 3
On a obtenu 37 fois la note 4
On a obtenu 4 fois la note 5
***Algorithme terminé***
a) Quelle est la moyenne des notes obtenues lors de cette simulation ?
b) Le calcul de l’écart-type donne σ ≈ 1,036. Parmi les 1000 notes obtenues lors de cette
simulation, quelle est la proportion de celles comprises dans l’intervalle [x̄ − σ ; x̄ + σ ] ?
– 13 –
4. STATISTIQUES/PROBABILITÉS
Fiche élève 4C
On s’intéresse au nombre d’enfants d’une famille. On suppose qu’il n’y a pas de naissances
multiples et qu’il y a équiprobabilité pour la naissance d’un garçon ou d’une fille.
Partie A
On suppose que la famille a eu 4 enfants et on note X le nombre de filles.
1. Justifier que X suit une loi binomiale dont on donnera les paramètres.
2. Calculer la probabilité que la famille ait eu au moins une fille.
Partie B
On cherche à déterminer le nombre minimum d’enfants que la famille devrait avoir pour que
la probabilité d’avoir au moins une fille soit supérieure à 0.999 .
1. On note n le nombre d’enfants. Déterminer, en fonction de n, la probabilité d’avoir au moins
une fille.
2. Montrer que répondre au problème posé revient à déterminer le premier entier n tel que
0.5n 6 0.001.
3. Compléter la ligne pour que l’algorithme AlgoBox ci-dessous permette de déterminer cet
entier. (rappel : pow(0.5,n) permet de calculer 0.5n )
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
VARIABLES
n EST_DU_TYPE NOMBRE
DEBUT_ALGORITHME
n PREND_LA_VALEUR 1
TANT_QUE (pow(0.5,n)...........) FAIRE
DEBUT_TANT_QUE
n PREND_LA_VALEUR n+1
FIN_TANT_QUE
AFFICHER n
FIN_ALGORITHME
– 14 –
4. STATISTIQUES/PROBABILITÉS
Fiche élève 4D
On prélève un échantillon dans une population au sein de laquelle on suppose que la proportion d’un certain caractère est p.
Le prélèvement de l’échantillon étant assimilé à un tirage avec remise, le nombre X d’individus
de l’échantillon ayant le caractère en question suit alors la loi binomiale de paramètres n et p,
où n est égal à la taille de l’échantillon.
Conformément au programme, on note :
— a, le plus petit entier tel que p(X 6 a) > 0,025 ;
— b, le plus petit entier tel que p(X 6 b) > 0,975 ;
On cherche à déterminer les valeurs de a et b à l’aide de l’algorithme AlgoBox ci-dessous qui
utilise :
— la commande ALGOBOX_LOI_BINOMIALE(taille_echantillon,p,k) permettant de calculer p(X = k) ;
— une variable somme qui, au fur et à mesure que k est augmenté de 1, contient p(X 6 k).
Compléter la ligne 21 de l’algorithme afin que celui-ci permette de déterminer la valeur de b.
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:
VARIABLES
taille_echantillon EST_DU_TYPE NOMBRE
p EST_DU_TYPE NOMBRE
somme EST_DU_TYPE NOMBRE
k EST_DU_TYPE NOMBRE
a EST_DU_TYPE NOMBRE
b EST_DU_TYPE NOMBRE
DEBUT_ALGORITHME
LIRE taille_echantillon
LIRE p
k PREND_LA_VALEUR 0
somme PREND_LA_VALEUR ALGOBOX_LOI_BINOMIALE(taille_echantillon,p,k)
TANT_QUE (somme<=0.025) FAIRE
DEBUT_TANT_QUE
k PREND_LA_VALEUR k+1
somme PREND_LA_VALEUR somme+ALGOBOX_LOI_BINOMIALE(taille_echantillon,p,k)
FIN_TANT_QUE
a PREND_LA_VALEUR k
AFFICHER "a : "
AFFICHER a
TANT_QUE (somme........) FAIRE
DEBUT_TANT_QUE
k PREND_LA_VALEUR k+1
somme PREND_LA_VALEUR somme+ALGOBOX_LOI_BINOMIALE(taille_echantillon,p,k)
FIN_TANT_QUE
b PREND_LA_VALEUR k
AFFICHER "b : "
AFFICHER b
FIN_ALGORITHME
– 15 –
5. SUITES NUMÉRIQUES
5
Suites numériques
Remarque préalable :
Les algorithmes proposés dans les sujets du baccalauréat ne semblant pas faire appel aux structures de données du type liste, le choix a été fait aussi de ne pas les utiliser dans ce chapitre.
Il est néanmoins possible d’adapter les algorithmes proposés ici en utilisant des listes
AlgoBox dont la syntaxe est très proche du formalisme utilisé en mathématiques pour les
suites numériques.
Fiche professeur 5A
—
—
—
—
Fiche élève correspondante : page 18
Fichier AlgoBox associé (algorithme complet) : algo_5A.alg
Contexte (1S/1ES/1STL/1STMG) : Calcul du terme de rang n d’une suite explicite.
Prolongement possible : Faire afficher tous les termes jusqu’au rang n à l’aide d’une boucle.
Fiche professeur 5B
— Fiche élève correspondante : page 18
— Fichier AlgoBox associé (algorithme complet) : algo_5B.alg
— Contexte (1S/1ES/1STL/1STMG) : Reconnaitre une suite explicite à partir d’un algorithme.
Fiche professeur 5C
—
—
—
—
Fiche élève correspondante : page 18
Fichier AlgoBox associé (algorithme complet) : algo_5C.alg
Contexte (1S/1ES) : Calcul du terme de rang n d’une suite récurrente.
Prolongement possible : Faire afficher tous les termes jusqu’au rang n.
Fiche professeur 5D
— Fiche élève correspondante : page 19
— Fichier AlgoBox associé (algorithme complet) : algo_5D.alg
— Contexte (1S/1ES/1STL/1STMG) : Reconnaitre une suite récurrente à partir d’un algorithme.
– 16 –
5. SUITES NUMÉRIQUES
Fiche professeur 5E
— Fiche élève correspondante : page 19
— Fichier AlgoBox associé (algorithme complet) : algo_5E.alg
— Contexte (1S/1ES/1STMG) : Détermination du premier rang n tel que Un > 20 à l’aide
d’une boucle TANT_QUE.
Fiche professeur 5F
— Fiche élève correspondante : page 20
— Fichier AlgoBox associé (algorithme complet) : algo_5F.alg
— Contexte (1S/1ES/1STMG) : Détermination du premier rang n tel que Un 6 50 à l’aide
d’une boucle TANT_QUE.
Fiche professeur 5G
— Fiche élève correspondante : page 21
— Fichier AlgoBox associé (algorithme complet) : algo_5G.alg
— Contexte (1S/1ES/1STMG) : Utilisation d’un algorithme pour comparer l’évolution des
termes d’une suite arithmétique avec ceux d’une suite géométrique.
— Prolongement possible : Modifier l’algorithme afin de déterminer directement à l’aide d’un
TANT_QUE l’année à partir de laquelle la proposition 2 devient la meilleure.
Fiche professeur 5H
— Fiche élève correspondante : page 22
— Fichier AlgoBox associé (algorithme complet) : algo_5H.alg
— Contexte (1S/1ES/1STL/1STMG) : Analyser le fonctionnement d’un algorithme - comprendre comment modéliser de façon algorithmique le calcul d’une somme.
– 17 –
5. SUITES NUMÉRIQUES
Fiche élève 5A
Soit (Un ) la suite définie par Un =
2n
.
n+3
1. Calculer U0 , U3 et Un+1 .
2. Compléter la ligne 6 de l’algorithme AlgoBox ci-dessous pour qu’il permette de calculer Un
après avoir entré n.
1:
2:
3:
4:
5:
6:
7:
8:
VARIABLES
n EST_DU_TYPE NOMBRE
U EST_DU_TYPE NOMBRE
DEBUT_ALGORITHME
LIRE n
U PREND_LA_VALEUR ................
AFFICHER U
FIN_ALGORITHME
Fiche élève 5B
L’algorithme ci-dessous permet de calculer le terme de rang n d’une suite (Un ) définie de façon
explicite.
1:
2:
3:
4:
5:
6:
7:
VARIABLES
n EST_DU_TYPE NOMBRE
U EST_DU_TYPE NOMBRE
DEBUT_ALGORITHME
LIRE n
U PREND_LA_VALEUR n/(n+1)
AFFICHER U
8: FIN_ALGORITHME
1. Déterminer Un en fonction de n.
2. Calculer U9 et Un+1 .
Fiche élève 5C
Soit (Un ) la suite définie par Un+1 = 5 − 3Un et U0 = 1 .
1. Calculer U0 , U1 et U2 .
2. Compléter la ligne 10 de l’algorithme AlgoBox ci-dessous pour qu’il permette de calculer
Un après avoir entré n.
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
VARIABLES
n EST_DU_TYPE NOMBRE
U EST_DU_TYPE NOMBRE
i EST_DU_TYPE NOMBRE
DEBUT_ALGORITHME
U PREND_LA_VALEUR 1
LIRE n
POUR i ALLANT_DE 1 A n
DEBUT_POUR
U PREND_LA_VALEUR ...............
FIN_POUR
AFFICHER U
FIN_ALGORITHME
– 18 –
5. SUITES NUMÉRIQUES
Fiche élève 5D
L’algorithme ci-dessous permet de calculer le terme de rang n d’une suite (Un ) définie de façon
récurrente. (U0 étant le premier terme de la suite)
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
VARIABLES
n EST_DU_TYPE NOMBRE
U EST_DU_TYPE NOMBRE
i EST_DU_TYPE NOMBRE
DEBUT_ALGORITHME
U PREND_LA_VALEUR 2
LIRE n
POUR i ALLANT_DE 1 A n
DEBUT_POUR
U PREND_LA_VALEUR 4*U-3
FIN_POUR
AFFICHER U
FIN_ALGORITHME
1. Déduire de l’algorithme la valeur de U0 et l’expression de Un+1 en fonction de Un .
2. Calculer U1 et U2 .
Fiche élève 5E
Un produit coûte actuellement 10 euros. Il est prévu que son prix augmente de 8 % par an.
On pose U0 = 10 et on note Un le prix prévu du produit au bout de n années.
1. Comment passe-t-on du prix d’une année au prix de l’année suivante ?
2. La suite (Un ) est-elle arithmétique ou géométrique ?
3. On cherche à déterminer au bout de combien d’années le prix du produit aura doublé à
l’aide de l’algorithme ci-dessous :
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
VARIABLES
n EST_DU_TYPE NOMBRE
U EST_DU_TYPE NOMBRE
DEBUT_ALGORITHME
n PREND_LA_VALEUR 0
U PREND_LA_VALEUR 10
TANT_QUE (U.........) FAIRE
DEBUT_TANT_QUE
U PREND_LA_VALEUR U*1.08
n PREND_LA_VALEUR n+1
FIN_TANT_QUE
AFFICHER n
FIN_ALGORITHME
Compléter la ligne 7 pour que l’algorithme réponde à la question.
– 19 –
5. SUITES NUMÉRIQUES
Fiche élève 5F
La valeur d’une action est actuellement de 100 euros. Il est prévu que cette valeur baisse
de 10 % par mois.
On pose U0 = 100 et on note Un la valeur de l’action au bout de n mois. On cherche à déterminer au bout de combien de mois le cours de l’action aura diminué de moitié à l’aide de
l’algorithme ci-dessous :
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
VARIABLES
n EST_DU_TYPE NOMBRE
U EST_DU_TYPE NOMBRE
DEBUT_ALGORITHME
n PREND_LA_VALEUR 0
U PREND_LA_VALEUR 100
TANT_QUE (U.............) FAIRE
DEBUT_TANT_QUE
U PREND_LA_VALEUR U*...........
n PREND_LA_VALEUR n+1
FIN_TANT_QUE
AFFICHER n
FIN_ALGORITHME
Compléter les lignes 7 et 9 pour que l’algorithme réponde à la question.
– 20 –
5. SUITES NUMÉRIQUES
Fiche élève 5G
Un salarié a reçu deux propositions de salaire.
1. Proposition 1 : La première année, un salaire annuel de 20000 euros puis chaque année une
augmentation fixe de 450 euros.
On pose U0 = 20000, U1 le salaire au bout d’un an, ..., Un le salaire au bout de n années.
a) Calculer U1 et U2 .
b) Préciser si (Un ) est arithmétique ou géométrique et exprimer Un en fonction de n.
2. Proposition 2 : La première année, un salaire annuel de 19900 euros puis chaque année une
augmentation de 2%.
On pose V0 = 19900, V1 le salaire au bout d’un an, ..., Vn le salaire au bout de n années.
a) Calculer V1 et V2 .
b) Préciser si (Vn ) est arithmétique ou géométrique et exprimer Vn en fonction de n.
3. Au début la proposition 1 semble meilleure que la proposition 2 pour le salarié. Afin de
déterminer si cela reste le cas dans la durée, on cherche à construire un algorithme qui
précise la proposition donnant le meilleur salaire annuel pour les 20 prochaines années.
Compléter les lignes 10, 11 et 15 ci-dessous pour que l’algorithme AlgoBox proposé réponde
à la question.
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
VARIABLES
n EST_DU_TYPE NOMBRE
U EST_DU_TYPE NOMBRE
V EST_DU_TYPE NOMBRE
DEBUT_ALGORITHME
U PREND_LA_VALEUR 20000
V PREND_LA_VALEUR 19900
POUR n ALLANT_DE 1 A 20
DEBUT_POUR
U PREND_LA_VALEUR U+..........
V PREND_LA_VALEUR V*..........
AFFICHER "Au bout de la "
AFFICHER n
AFFICHER " ième année, "
SI (..........) ALORS
DEBUT_SI
AFFICHER "la proposition 1 est la meilleure"
FIN_SI
SINON
DEBUT_SINON
AFFICHER "la proposition 2 est la meilleure"
FIN_SINON
FIN_POUR
FIN_ALGORITHME
– 21 –
5. SUITES NUMÉRIQUES
Fiche élève 5H
On considère l’algorithme AlgoBox ci-dessous :
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
VARIABLES
somme EST_DU_TYPE NOMBRE
n EST_DU_TYPE NOMBRE
DEBUT_ALGORITHME
somme PREND_LA_VALEUR 0
POUR n ALLANT_DE 1 A 100
DEBUT_POUR
somme PREND_LA_VALEUR somme+sqrt(n)
FIN_POUR
AFFICHER somme
11: FIN_ALGORITHME
1. Compléter les phrases ci-dessous :
— Quand n vaut 1 et que la ligne 8 est exécutée, la variable somme a pour nouvelle valeur
— Quand n vaut 2 et que la ligne 8 est exécutée, la variable somme a pour nouvelle valeur
— Quand n vaut 3 et que la ligne 8 est exécutée, la variable somme a pour nouvelle valeur
2. Que permet de calculer cet algorithme ?
– 22 –
6. GÉOMÉTRIE
6
Géométrie
Fiche professeur 6A
— Fiche élève correspondante : page 24
— Fichier AlgoBox associé (algorithme complet) : algo_6A.alg
— Contexte (1S/1STL) : Algorithme de « balayage » de la distance entre un point fixe et un
point variable sur un segment de droite. Le but, d’un point de vue algorithmique, est
d’habituer les élèves aux algorithmes de « balayage » (qui figurent déjà au programme
à propos des fonctions) et de s’intéresser aussi à leur fiabilité. D’un point de vue mathématique, l’activité propose une initiation à la notion de distance d’un point à une
droite.
— Prolongement possible : Modifier l’algorithme pour qu’il détermine la valeur minimale de
toutes les distances calculées. On peut alors créer un algorithme classique de recherche
d’un minimum.
Fiche professeur 6B
—
—
—
—
Fiche élève correspondante : page 25
Fichier AlgoBox associé (algorithme complet) : algo_6B.alg
Contexte (1S) : Détermination des points à coordonnées entières sur un segment.
Prolongement possible : Proposer un deuxième algorithme basé sur un double balayage
en x et en y et comparer le coût en opérations des deux algorithmes.
– 23 –
6. GÉOMÉTRIE
Fiche élève 6A
Dans un repère orthonormé, on considère la droite D d’équation y = −2x + 5 et pour tout réel
m compris entre 0 et 2.5, on note M le point de la droite D d’abscisse m.
D : y = 2x + 5
b
M
m
2m + 5
~
j
O
~i
m
√
Un élève prétend que la distance OM ne peut jamais être inférieure à 5 et on cherche à vérifier cette affirmation.
Partie A : approche expérimentale
On cherche à établir un algorithme qui vérifie expérimentalement l’affirmation de l’élève. Pour
cela, on utilise la méthode dite du « balayage » :
Pour chaque valeur de m (en partant de 0) on calcule la distance OM correspondante et on
augmente la valeur de m de 0.01 tant que m n’a pas atteint 2.5.
√
1. Montrer que, pour tout m, la distance OM est égale à 5m2 − 20m + 25.
2. Compléter les lignes 6, 8 et 13 pour que l’algorithme AlgoBox ci-dessous
√ permette de détecter s’il existe un point M pour lequel la distance OM est inférieure à 5.
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
VARIABLES
m EST_DU_TYPE NOMBRE
distance EST_DU_TYPE NOMBRE
DEBUT_ALGORITHME
m PREND_LA_VALEUR 0
TANT_QUE (m<=.........) FAIRE
DEBUT_TANT_QUE
distance PREND_LA_VALEUR ...........................
SI (distance<sqrt(5)) ALORS
DEBUT_SI
AFFICHER "il y a un point pour lequel OM est inférieur à sqrt(5)"
FIN_SI
m PREND_LA_VALEUR ..............
FIN_TANT_QUE
FIN_ALGORITHME
3. Peut-on être sur que cet√algorithme puisse dire de façon totalement fiable s’il n’existe aucun
point M tel que OM < 5 ?
Partie B : approche algébrique
√ p
1. Montrer que pour tout m compris entre 0 et 2.5, on a OM = 5 × (m − 2)2 + 1.
2. En déduire la valeur minimale que peut prendre la distance OM. Pour quelle valeur de m
obtient-on cette distance minimale ?
Partie C : approche géométrique
On note H le point de la droite D d’abscisse 2.
1. Montrer que H est le projeté orthogonal de O sur la droite D.
2. Calculer la distance OH. Que constate-t-on ?
– 24 –
6. GÉOMÉTRIE
Fiche élève 6B
Durant une année un individu a acheté n DVD valant 15 euros pièce et p livres valant 22 euros
pièce pour un montant total de 362 euros. On cherche à déterminer les valeurs possibles de n
et p.
Première analyse du problème :
1. Quelle relation lie n et p ?
2. Justifier que n est nécessairement inférieur à 25.
Approche graphique :
1. Dans le plan muni d’un repère, on considère les points d’abscisse n et d’ordonnée p pouvant
répondre au problème. Justifier que ces points sont situés sur une droite D dont on donnera
une équation.
2. La droite D est représentée ci-dessous :
15
10
5
~
O
~ı
5
10
15
20
25
D’après le graphique, il semble que que l’on puisse avoir n = 5 et p = 13.
Est-ce réellement le cas ?
Approche algorithmique :
Pour déterminer, de façon plus rigoureuse, les valeurs possibles de n et p, on cherche à utiliser un algorithme basé sur le principe suivant : Pour toutes les abscisses entières x possibles sur
la droite D, on calcule l’ordonnée y du point de la droite d’abscisse x et, si y est un entier, on affiche x.
Compléter les lignes 5, 7 et 8 de l’algorithme AlgoBox ci-contre pour qu’il réponde au problème. (Note technique : pour déterminer si un nombre est un entier, on peut utiliser la fonction
partie entière dont la syntaxe est floor() dans AlgoBox.)
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
VARIABLES
x EST_DU_TYPE NOMBRE
y EST_DU_TYPE NOMBRE
DEBUT_ALGORITHME
POUR x ALLANT_DE ... A ....
DEBUT_POUR
y PREND_LA_VALEUR ............................
SI (..................) ALORS
DEBUT_SI
AFFICHER x
FIN_SI
FIN_POUR
FIN_ALGORITHME
– 25 –
7. TRIGONOMÉTRIE
7
Trigonométrie
Fiche professeur 7A
— Fiche élève correspondante : page 27
— Fichier AlgoBox associé (algorithme complet) : algo_7A.alg
— Contexte (1S/1STL) : Détermination de la mesure principale d’une mesure de la forme
nπ
avec n > 0 et d > 0 - Utilisation d’un TANT QUE.
d
— Prolongement possible : Déterminer le même genre d’algorithme avec n < 0 et d > 0 ou
concevoir un algorithme qui fonctionne dans tous les cas. On peut aussi créer un algorithme qui permette de trouver le résultat directement sans boucle (plus difficile).
– 26 –
7. TRIGONOMÉTRIE
Fiche élève 7A
On cherche à déterminer la mesure principale d’un angle dont une mesure est de la forme
nπ
d
(avec n > 0 et d > 0) en enlevant 2π tant que cela est nécessaire.
(
)π
nπ
− 2π =
.
1. Compléter le calcul suivant :
d
d
2. Compléter les lignes 14 et 16 pour que l’algorithme AlgoBox ci-dessous réponde à la question.
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
VARIABLES
n EST_DU_TYPE NOMBRE
d EST_DU_TYPE NOMBRE
DEBUT_ALGORITHME
LIRE n
LIRE d
SI (n>0 ET d>0 ) ALORS
DEBUT_SI
AFFICHER "mesure principale de "
AFFICHER n
AFFICHER "*pi/"
AFFICHER d
AFFICHER " : "
TANT_QUE (............) FAIRE
DEBUT_TANT_QUE
n PREND_LA_VALEUR ......................
FIN_TANT_QUE
AFFICHER n
AFFICHER "*pi/"
AFFICHER d
FIN_SI
FIN_ALGORITHME
– 27 –
Deuxième partie
Annexes
– 28 –
ANNEXE A. STRUCTURES ALGORITHMIQUES DE BASE AVEC ALGOBOX
A
Structures algorithmiques de base
avec AlgoBox
Les activités proposées dans cette annexe permettent de s’initier aux structures algorithmiques
de base prévues au programme quelque soit la filière (aucun pré-requis mathématique spécifique n’est nécessaire).
– 29 –
ANNEXE A. STRUCTURES ALGORITHMIQUES DE BASE AVEC ALGOBOX
A.1
Variables et affectations
Les variables en algorithmique
— Les variables algorithmiques peuvent servir à stocker des données de différents types,
mais nous nous contenterons ici d’utiliser des variables du type NOMBRE.
— La valeur d’une variable peut changer au fil des instructions de l’algorithme.
— Les opérations sur les variables s’effectuent ligne après ligne et les unes après les
autres.
— Quand l’ordinateur exécute une ligne du type mavariable PREND_LA_VALEUR un
calcul, il effectue d’abord le calcul et stocke ensuite le résultat dans mavariable.
I Activité n°1
On considère l’algorithme suivant :
1:
2:
3:
4:
5:
6:
7:
8:
9:
VARIABLES
x EST_DU_TYPE NOMBRE
y EST_DU_TYPE NOMBRE
z EST_DU_TYPE NOMBRE
DEBUT_ALGORITHME
x PREND_LA_VALEUR 2
y PREND_LA_VALEUR 3
z PREND_LA_VALEUR x+y
FIN_ALGORITHME
Après exécution de l’algorithme :
— La variable x contient la valeur :
— La variable y contient la valeur :
— La variable z contient la valeur :
I Activité n°2
On considère l’algorithme suivant :
1: VARIABLES
2: x EST_DU_TYPE NOMBRE
3: DEBUT_ALGORITHME
4:
x PREND_LA_VALEUR 2
5:
x PREND_LA_VALEUR x+1
6: FIN_ALGORITHME
Après exécution de l’algorithme :
— La variable x contient la valeur :
I Activité n°3
Ajoutons la ligne « x PREND_LA_VALEUR 4*x » à la fin du code précédent. Ce qui donne :
1:
2:
3:
4:
5:
6:
7:
VARIABLES
x EST_DU_TYPE NOMBRE
DEBUT_ALGORITHME
x PREND_LA_VALEUR 2
x PREND_LA_VALEUR x+1
x PREND_LA_VALEUR 4*x
FIN_ALGORITHME
Après exécution de l’algorithme :
— La variable x contient la valeur :
– 30 –
ANNEXE A. STRUCTURES ALGORITHMIQUES DE BASE AVEC ALGOBOX
I Activité n°4
On considère l’algorithme suivant :
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
VARIABLES
A EST_DU_TYPE NOMBRE
B EST_DU_TYPE NOMBRE
C EST_DU_TYPE NOMBRE
DEBUT_ALGORITHME
A PREND_LA_VALEUR
B PREND_LA_VALEUR
C PREND_LA_VALEUR
B PREND_LA_VALEUR
A PREND_LA_VALEUR
5
3
A+B
B+A
C
11: FIN_ALGORITHME
Après exécution de l’algorithme :
— La variable A contient la valeur :
— La variable B contient la valeur :
— La variable C contient la valeur :
I Activité n°5
On considère l’algorithme suivant :
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
VARIABLES
x EST_DU_TYPE NOMBRE
y EST_DU_TYPE NOMBRE
z EST_DU_TYPE NOMBRE
DEBUT_ALGORITHME
LIRE x
y PREND_LA_VALEUR x-2
z PREND_LA_VALEUR -3*y-4
AFFICHER z
FIN_ALGORITHME
On cherche maintenant à obtenir un algorithme équivalent sans utiliser la variable y. Compléter la ligne 6 dans l’algorithme ci-dessous pour qu’il réponde au problème.
1:
2:
3:
4:
5:
6:
7:
8:
VARIABLES
x EST_DU_TYPE NOMBRE
z EST_DU_TYPE NOMBRE
DEBUT_ALGORITHME
LIRE x
z PREND_LA_VALEUR ....................
AFFICHER z
FIN_ALGORITHME
– 31 –
ANNEXE A. STRUCTURES ALGORITHMIQUES DE BASE AVEC ALGOBOX
A.2
Instructions conditionnelles
SI...ALORS...SINON
Comme nous l’avons vu ci-dessus, un algorithme permet d’exécuter une liste d’instructions
les unes à la suite des autres. Mais on peut aussi "dire" à un algorithme de n’exécuter des
instructions que si une certaine condition est remplie. Cela se fait grâce à la commande
SI...ALORS :
SI...ALORS
DEBUT_SI
...
FIN_SI
Il est aussi possible d’indiquer en plus à l’algorithme de traiter le cas où la condition n’est
pas vérifiée. On obtient alors la structure suivante :
SI...ALORS
DEBUT_SI
...
FIN_SI
SINON
DEBUT_SINON
...
FIN_SINON
I Activité n°6
On cherche à créer un algorithme qui demande un nombre à l’utilisateur et qui affiche la racine
carrée de ce nombre s’il est positif. Compléter la ligne 6 dans l’algorithme ci-dessous pour qu’il
réponde au problème.
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
VARIABLES
x EST_DU_TYPE NOMBRE
racine EST_DU_TYPE NOMBRE
DEBUT_ALGORITHME
LIRE x
SI (.........) ALORS
DEBUT_SI
racine PREND_LA_VALEUR sqrt(x)
AFFICHER racine
FIN_SI
FIN_ALGORITHME
I Activité n°7
On cherche à créer un algorithme qui demande à l’utilisateur d’entrer deux nombres (stockés
dans les variables x et y) et qui affiche le plus grand des deux. Compléter les ligne 9 et 13 dans
l’algorithme ci-dessous pour qu’il réponde au problème.
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
VARIABLES
x EST_DU_TYPE NOMBRE
y EST_DU_TYPE NOMBRE
DEBUT_ALGORITHME
LIRE x
LIRE y
SI (x>y) ALORS
DEBUT_SI
AFFICHER .......
FIN_SI
SINON
DEBUT_SINON
AFFICHER ......
FIN_SINON
FIN_ALGORITHME
– 32 –
ANNEXE A. STRUCTURES ALGORITHMIQUES DE BASE AVEC ALGOBOX
I Activité n°8
On considère l’algorithme suivant :
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
VARIABLES
A EST_DU_TYPE NOMBRE
B EST_DU_TYPE NOMBRE
DEBUT_ALGORITHME
A PREND_LA_VALEUR 1
B PREND_LA_VALEUR 3
SI (A>0) ALORS
DEBUT_SI
A PREND_LA_VALEUR A+1
FIN_SI
SI (B>4) ALORS
DEBUT_SI
B PREND_LA_VALEUR B-1
FIN_SI
15: FIN_ALGORITHME
Après exécution de l’algorithme :
— La variable A contient la valeur :
— La variable B contient la valeur :
I Activité n°9
On cherche à concevoir un algorithme correspondant au problème suivant :
— on demande à l’utilisateur d’entrer un nombre (qui sera représenté par la variable x)
— si le nombre entré est différent de 1, l’algorithme doit stocker dans une variable y la
valeur de 1/(x-1) et afficher la valeur de y (note : la condition x différent de 1 s’exprime
avec le code x!=1). On ne demande pas de traiter le cas contraire.
Compléter l’algorithme ci-dessous pour qu’il réponde au problème.
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
VARIABLES
x EST_DU_TYPE NOMBRE
y EST_DU_TYPE NOMBRE
DEBUT_ALGORITHME
LIRE ......
SI (........) ALORS
DEBUT_SI
....... PREND_LA_VALEUR .......
AFFICHER .......
FIN_SI
11: FIN_ALGORITHME
– 33 –
ANNEXE A. STRUCTURES ALGORITHMIQUES DE BASE AVEC ALGOBOX
A.3
Boucles
Boucles POUR...DE...A
— Les boucles permettent de répéter des instructions autant de fois que l’on souhaite.
— Lorsqu’on connait par avance le nombre de fois que l’on veut répéter les instructions,
on utilise une boucle du type POUR...DE...A dont la structure est la suivante :
POUR...ALLANT_DE...A...
DEBUT_POUR
...
FIN_POUR
— Exemple : l’algorithme ci-dessous permet d’afficher la racine carrée de tous les entiers
de 1 jusqu’à 50.
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
VARIABLES
n EST_DU_TYPE NOMBRE
racine EST_DU_TYPE NOMBRE
DEBUT_ALGORITHME
POUR n ALLANT_DE 1 A 50
DEBUT_POUR
racine PREND_LA_VALEUR sqrt(n)
AFFICHER racine
FIN_POUR
FIN_ALGORITHME
La variable n est appelée « compteur de la boucle ».
— Remarques :
— La variable servant de compteur pour la boucle doit être du type NOMBRE et doit être déclarée préalablement
(comme toutes les variables).
— Dans AlgoBox, cette variable est automatiquement augmentée de 1 à chaque fois.
— On peut utiliser la valeur du compteur pour faire des calculs à l’intérieur de la boucle, mais les instructions
comprises entre DEBUT_POUR et FIN_POUR ne doivent en aucun cas modifier la valeur de la variable qui sert de
compteur.
I Activité n°10
On cherche à concevoir un algorithme qui affiche, grâce à une boucle POUR...DE...A, les résultats des calculs suivants : 8*1 ; 8*2 ; 8*3 ; 8*4 ; ... jusqu’à 8*10 .
La variable n sert de compteur à la boucle et la variable produit sert à stocker et afficher
les résultats. Compléter les lignes 5 et 7 dans l’algorithme ci-dessous pour qu’il réponde au
problème :
1:
2:
3:
4:
5:
6:
7:
8:
9:
VARIABLES
n EST_DU_TYPE NOMBRE
produit EST_DU_TYPE NOMBRE
DEBUT_ALGORITHME
POUR n ALLANT_DE .... A .....
DEBUT_POUR
produit PREND_LA_VALEUR .......
AFFICHER produit
FIN_POUR
10: FIN_ALGORITHME
I Activité n°11
On considère l’algorithme suivant :
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
VARIABLES
n EST_DU_TYPE NOMBRE
somme EST_DU_TYPE NOMBRE
DEBUT_ALGORITHME
somme PREND_LA_VALEUR 0
POUR n ALLANT_DE 1 A 100
DEBUT_POUR
somme PREND_LA_VALEUR somme+n
FIN_POUR
AFFICHER somme
FIN_ALGORITHME
– 34 –
ANNEXE A. STRUCTURES ALGORITHMIQUES DE BASE AVEC ALGOBOX
Compléter les phrases suivantes :
— Après exécution de la ligne 5, La variable somme contient la valeur :
— Lorsque le compteur n de la boucle vaut 1 et après exécution du calcul ligne 8, la variable
somme vaut :
— Lorsque le compteur n de la boucle vaut 2 et après exécution du calcul ligne 8, la variable
somme vaut :
— Lorsque le compteur n de la boucle vaut 3 et après exécution du calcul ligne 8, la variable
somme vaut :
Que permet de calculer cet algorithme ?
I Activité n°12
Compléter les lignes 6 et 8 de l’algorithme ci-dessous pour qu’il permette de calculer la somme
52 + 62 + 72 + · · · + 242 + 252 .
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
VARIABLES
n EST_DU_TYPE NOMBRE
somme EST_DU_TYPE NOMBRE
DEBUT_ALGORITHME
somme PREND_LA_VALEUR 0
POUR n ALLANT_DE .... A ......
DEBUT_POUR
somme PREND_LA_VALEUR somme+......
FIN_POUR
AFFICHER somme
FIN_ALGORITHME
– 35 –
ANNEXE A. STRUCTURES ALGORITHMIQUES DE BASE AVEC ALGOBOX
Boucles TANT QUE...
— Il n’est pas toujours possible de connaitre par avance le nombre de répétitions nécessaires à un calcul. Dans ce cas là, il est possible d’avoir recours à la structure TANT
QUE... qui se présente de la façon suivante :
TANT_QUE...FAIRE
DEBUT_TANT_QUE
...
FIN_TANT_QUE
Cette structure de boucle permet de répéter une série d’instructions (comprises entre
DEBUT_TANT_QUE et FIN_TANT_QUE) tant qu’une certaine condition est vérifiée.
— Exemple : Comment savoir ce qu’il reste si on enlève 25 autant de fois que l’on peut au
nombre 583 ? Pour cela on utilise une variable n, qui contient 583 au début, à laquelle
on enlève 25 tant que c’est possible, c’est à dire tant que n est supérieur ou égal à 25.
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
VARIABLES
n EST_DU_TYPE NOMBRE
DEBUT_ALGORITHME
n PREND_LA_VALEUR 583
TANT_QUE (n>=25) FAIRE
DEBUT_TANT_QUE
n PREND_LA_VALEUR n-25
FIN_TANT_QUE
AFFICHER n
FIN_ALGORITHME
— Remarques :
— Si la condition du TANT QUE... est fausse dès le début, les instructions entre DEBUT_TANT_QUE et FIN_TANT_QUE
ne sont jamais exécutées (la structure TANT QUE ne sert alors strictement à rien).
— Il est indispensable de s’assurer que la condition du TANT QUE... finisse par être vérifiée (le code entre
DEBUT_TANT_QUE et FIN_TANT_QUE doit rendre vraie la condition tôt ou tard), sans quoi l’algorithme ne pourra
pas fonctionner.
I Activité n°13
Un individu a emprunté à un ami une somme de 2500 euros (prêt sans intérêts). Pour rembourser son ami, il prévoit de lui remettre 110 euros par mois. Mais comme cela ne correspond
pas à un nombre pile de mois, il se demande quel sera le montant à rembourser le dernier
mois.
Compléter la ligne 5 dans l’algorithme ci-dessous pour qu’il réponde au problème :
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
VARIABLES
montant EST_DU_TYPE NOMBRE
DEBUT_ALGORITHME
montant PREND_LA_VALEUR 2500
TANT_QUE (............) FAIRE
DEBUT_TANT_QUE
montant PREND_LA_VALEUR montant-110
FIN_TANT_QUE
AFFICHER montant
FIN_ALGORITHME
I Activité n°14
On cherche à connaître le plus petit entier N tel que 2N soit supérieur ou égal à 10000. Pour
résoudre ce problème de façon algorithmique :
— On utilise une variable N à laquelle on donne au début la valeur 1.
— On augmente de 1 la valeur de N tant que 2N n’est pas supérieur ou égal à 10000.
Une structure TANT QUE est particulièrement adaptée à ce genre de problème car on ne sait
pas a priori combien de calculs seront nécessaires.
Compléter les lignes 5 et 7 de l’algorithme ci-dessous pour qu’il réponde au problème :
(remarque : pow(2,N) est le code AlgoBox pour calculer 2N )
– 36 –
ANNEXE A. STRUCTURES ALGORITHMIQUES DE BASE AVEC ALGOBOX
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
VARIABLES
N EST_DU_TYPE NOMBRE
DEBUT_ALGORITHME
N PREND_LA_VALEUR 1
TANT_QUE (pow(2,N).......) FAIRE
DEBUT_TANT_QUE
N PREND_LA_VALEUR .......
FIN_TANT_QUE
AFFICHER N
FIN_ALGORITHME
I Activité n°15
On considère le problème suivant :
— On lance une balle d’une hauteur initiale de 300 cm.
— On suppose qu’à chaque rebond, la balle perd 10% de sa hauteur (la hauteur est donc
multipliée par 0.9 à chaque rebond).
— On cherche à savoir le nombre de rebonds nécessaire pour que la hauteur de la balle soit
inférieure ou égale à 10 cm.
Compléter les lignes 7 et 10 de l’algorithme ci-dessous pour qu’il réponde au problème.
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
VARIABLES
nombre_rebonds EST_DU_TYPE NOMBRE
hauteur EST_DU_TYPE NOMBRE
DEBUT_ALGORITHME
nombre_rebonds PREND_LA_VALEUR 0
hauteur PREND_LA_VALEUR 300
TANT_QUE (hauteur......) FAIRE
DEBUT_TANT_QUE
nombre_rebonds PREND_LA_VALEUR nombre_rebonds+1
hauteur PREND_LA_VALEUR ...........
FIN_TANT_QUE
AFFICHER nombre_rebonds
13: FIN_ALGORITHME
– 37 –
ANNEXE B. MÉMENTO SUR L’UTILISATION D’ALGOBOX
B
Mémento sur l’utilisation d’AlgoBox
B.1
Équivalence entre « pseudo-codes »
Résumé des différences entre le pseudo-code utilisé par AlgoBox et celui que l’on peut rencontrer dans les manuels.
B.1.1
Entrée des données
Pseudo-code AlgoBox
LIRE...
B.1.2
Saisir...
Entrer...
Affichage des données
Pseudo-code AlgoBox
AFFICHER...
B.1.3
Variantes
Variantes
Écrire...
Affecter une valeur à une variable
Pseudo-code AlgoBox
A PREND_LA_VALEUR 3
Variantes
Affecter 3 à A
A:=3
A←3
– 38 –
ANNEXE B. MÉMENTO SUR L’UTILISATION D’ALGOBOX
B.1.4
Structure SI ALORS
Pseudo-code AlgoBox
SI...ALORS
DEBUT_SI
...
FIN_SI
Variantes
Si...alors
...
FinSi
Si...
Alors...
FinSi
Pseudo-code AlgoBox
SI...ALORS
DEBUT_SI
...
FIN_SI
SINON
DEBUT_SINON
...
FIN_SINON
B.1.5
Variantes
Si...alors
...
sinon
...
FinSi
Si...
Alors...
Sinon...
FinSi
Boucle POUR...
Pseudo-code AlgoBox
POUR...ALLANT_DE...A...
DEBUT_POUR
...
FIN_POUR
Variantes
Pour...de...jusqu’à...
...
FinPour
Pour...variant de...à...
...
FinPour
B.1.6
Structure TANT QUE...
Pseudo-code AlgoBox
TANT_QUE...FAIRE
DEBUT_TANT_QUE
...
FIN_TANT_QUE
Variantes
Tant que...
...
FinTantQue
– 39 –
ANNEXE B. MÉMENTO SUR L’UTILISATION D’ALGOBOX
B.2
B.2.1
Les problèmes de syntaxe
Les erreurs de syntaxe les plus courantes
— Erreur classique n°1 : utiliser la virgule au lieu du point comme séparateur décimal
— Erreur classique n°2 : utiliser la syntaxe "SI x=y" au lieu de "SI x==y" pour vérifier une
égalité dans une condition
— Erreur classique n°3 : utiliser la syntaxe xˆy au lieu de pow(x,y) pour les puissances.
B.2.2
B.2.3
Syntaxe des opérations mathématiques
Opération mathématique
√
x
syntaxe AlgoBox
xy
pow(x,y)
cos(x) (x en radians)
cos(x)
sqrt(x)
sin(x) (x en radians)
sin(x)
tan(x) (x en radians)
tan(x)
ex
exp(x)
ln x
log(x)
|x|
abs(x)
Partie entière de x
floor(x)
Nombre pseudo-aléatoire compris entre 0 et 1
random()
Reste de la division euclidienne de n par p
n%p
π
Math.PI
arccos(x)
acos(x)
arcsin(x)
asin(x)
arctan(x)
atan(x)
Valeur approchée de x à 10−n près
ALGOBOX_ARRONDIR(x,n)
Syntaxe pour les conditions
Condition logique
syntaxe AlgoBox
x=y
x==y
x,y
x!=y
x<y
x<y
x6y
x<=y
x>y
x>y
x>y
x>=y
condition1 ou condition2
condition1 OU condition2
condition1 et condition2
condition1 ET condition2
Remarque : il est possible d’inclure des opérations mathématiques dans les conditions.
(exemple : pow(2,n)<100 )
– 40 –
ANNEXE B. MÉMENTO SUR L’UTILISATION D’ALGOBOX
B.2.4
B.2.5
B.2.6
Syntaxe pour les fonctions statistiques et les opérations sur les listes
Somme des termes d’une liste
ALGOBOX_SOMME(nom_liste,rang_premier_terme,rang_dernier_terme)
Moyenne
ALGOBOX_MOYENNE(nom_liste,rang_premier_terme,rang_dernier_terme)
Variance
ALGOBOX_VARIANCE(nom_liste,rang_premier_terme,rang_dernier_terme)
Écart-type
ALGOBOX_ECART_TYPE(nom_liste,rang_premier_terme,rang_dernier_terme)
Médiane
ALGOBOX_MEDIANE(nom_liste,rang_premier_terme,rang_dernier_terme)
Q1 (version calculatrice)
ALGOBOX_QUARTILE1(nom_liste,rang_premier_terme,rang_dernier_terme)
Q3 (version calculatrice)
ALGOBOX_QUARTILE3(nom_liste,rang_premier_terme,rang_dernier_terme)
Q1 (version « officielle »)
ALGOBOX_QUARTILE1_BIS(nom_liste,rang_premier_terme,rang_dernier_terme)
Q3 (version « officielle »)
ALGOBOX_QUARTILE3_BIS(nom_liste,rang_premier_terme,rang_dernier_terme)
Minimum d’une liste
ALGOBOX_MINIMUM(nom_liste,rang_premier_terme,rang_dernier_terme)
Maximum d’une liste
ALGOBOX_MAXIMUM(nom_liste,rang_premier_terme,rang_dernier_terme)
Rang du minimum
ALGOBOX_POS_MINIMUM(nom_liste,rang_premier_terme,rang_dernier_terme)
Rang du maximum
ALGOBOX_POS_MAXIMUM(nom_liste,rang_premier_terme,rang_dernier_terme)
Fonctions concernant les probabilités
entier pseudo-aléatoire entre p et n
n
p (n 6 100)
ALGOBOX_COEFF_BINOMIAL(n,p)
p(X = k) pour la loi binomiale (n 6 100)
ALGOBOX_LOI_BINOMIALE(n,p,k)
p(X < x) pour la loi normale centrée réduite
ALGOBOX_LOI_NORMALE_CR(x)
ALGOBOX_ALEA_ENT(p,n)
p(X < x) pour la loi normale
ALGOBOX_LOI_NORMALE(esp,ecart,x)
x tel p(X < x) = p pour la loi normale centrée réduite
ALGOBOX_INVERSE_LOI_NORMALE_CR(p)
x tel p(X < x) = p pour la loi normale
ALGOBOX_INVERSE_LOI_NORMALE(esp,ecart,p)
n! (n 6 69)
ALGOBOX_FACTORIELLE(n)
Fonctions concernant les chaines de caractères
Remarque : le contenu d’une chaîne doit être encadré par des guillemets.
(exemple : machaine prend la valeur "bonjour" )
concaténation de deux chaines A et B
A+B
sous-chaine de n caractères à partir de la position p
machaine.substr(p,n)
transformation d’un nombre n en chaine
n.toString()
transformation d’une chaine en entier
parseInt(machaine)
transformation d’une chaine en réel
parseFloat(machaine)
longueur d’une chaine
machaine.length
code ASCII du caractère situé à la position p
machaine.charCodeAt(p)
chaine de code ASCII p
String.fromCharCode(p)
B.3
Fonctionnement d’AlgoBox
B.3.1
Les deux règles fondamentales
1. Toute variable doit d’abord être déclarée avant de pouvoir être utilisée. La première chose
à faire avant de concevoir un algorithme est d’ailleurs de lister toutes les variables qui
seront nécessaires.
2. Une nouvelle instruction ne peut s’insérer que sur une ligne vierge.
– 41 –
ANNEXE B. MÉMENTO SUR L’UTILISATION D’ALGOBOX
B.3.2
Les variables
Attention
Le nom des variables ne doit pas contenir d’espaces (que l’on peut remplacer par le caractère _), ni d’accents, ni de caractères spéciaux. On ne peut pas non plus utiliser certains
termes réservés : par exemple, une variable ne peut pas être appelée NOMBRE. Il est par
contre conseillé d’utiliser des noms de variables explicites (mêmes longs) pour rendre les
algorithmes plus clairs.
B.3.3
Les listes de nombres
Il est possible d’entrer directement les termes d’une liste. Pour cela, il suffit d’utiliser l’instruction LIRE maliste[1] (1 représentant le premier rang des termes de la liste que l’on veut
entrer). Lors de l’exécution de l’algorithme, il suffira alors d’entrer toutes les valeurs souhaitées
(dans l’ordre) en les séparant par : .
B.3.4
Boucle POUR...DE...A
— On n’utilise ce genre de boucles que si on connaît à l’avance le nombre de répétitions à
effectuer.
— La variable servant de compteur pour la boucle doit être du type NOMBRE et doit être
déclarée préalablement (comme toutes les variables).
— Dans AlgoBox, cette variable est automatiquement augmentée de 1 à chaque fois.
Attention
— On peut utiliser la valeur du compteur pour faire des calculs à l’intérieur de la boucle,
mais les instructions comprises entre DEBUT_POUR et FIN_POUR ne doivent en aucun cas
modifier la valeur de la variable qui sert de compteur.
— Le nombre d’itérations sur AlgoBox est limité à 500 000. En cas de dépassement, l’algorithme s’arrête et le message « ***Algorithme interrompu suite à une erreur*** » est
affiché.
— Si les instructions à répéter comportent l’affichage d’une variable ou un tracé graphique, il faut limiter le nombre d’itérations à moins d’un millier (ou guère plus) :
sans quoi, l’exécution du programme risque de prendre beaucoup trop de temps. Par
contre, s’il n’y que des calculs à répéter on peut pousser le nombre d’itérations plus
loin.
B.3.5
Structure TANT QUE
— Cette structure sert à répéter des instructions que l’on connaisse ou non par avance le
nombre d’itérations à effectuer.
— Si la condition du TANT QUE... est fausse dès le début, les instructions entre DEBUT_TANT_QUE
et FIN_TANT_QUE ne sont jamais exécutées (la structure TANT QUE ne sert alors strictement à rien).
– 42 –
ANNEXE B. MÉMENTO SUR L’UTILISATION D’ALGOBOX
Attention
— Il est indispensable de s’assurer que la condition du TANT QUE... finisse par être
vérifiée (le code entre DEBUT_TANT_QUE et FIN_TANT_QUE doit rendre vraie la condition
tôt ou tard), sans quoi l’algorithme va se lancer dans une « boucle infinie ».
— Afin d’éviter les boucles infinies, le nombre d’itérations est là aussi limité à 500 000.
En cas de dépassement, l’algorithme s’arrête et le message « ***Algorithme interrompu
suite à une erreur*** » est affiché.
— Si les instructions à répéter comportent l’affichage d’une variable ou un tracé graphique, il faut limiter le nombre d’itérations à moins d’un millier (ou guère plus) :
sans quoi, l’exécution du programme risque de prendre beaucoup trop de temps. Par
contre, s’il n’y que des calculs à répéter on peut pousser le nombre d’itérations plus
loin.
B.3.6
Utilisation de l’onglet « Utiliser une fonction numérique »
En activant l’option "Utiliser une fonction" dans l’onglet "Utiliser une fonction numérique", on
peut utiliser l’image de n’importe quel nombre (ou variable de type nombre) par la fonction
notée F1 dans le code de l’algorithme. Il suffit pour cela d’entrer l’expression de F1(x) en fonction de x dans le champ prévu pour cela. Pour utiliser l’image d’un nombre nb par la fonction
F1 dans l’algorithme, il suffit d’utiliser le code : F1(nb) (cela peut se faire dans une affectation
ou dans une expression conditionnelle). Cette option est particulièrement utile quand un algorithme nécessite le calcul de plusieurs images par une même fonction.
Un exemple classique est celui de la dichotomie :
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:
B.3.7
VARIABLES
precision EST_DU_TYPE NOMBRE
a EST_DU_TYPE NOMBRE
b EST_DU_TYPE NOMBRE
m EST_DU_TYPE NOMBRE
DEBUT_ALGORITHME
a PREND_LA_VALEUR ...
b PREND_LA_VALEUR ...
LIRE precision
TANT_QUE (b-a>precision) FAIRE
DEBUT_TANT_QUE
m PREND_LA_VALEUR (a+b)/2
SI (F1(m)*F1(b)>0) ALORS
DEBUT_SI
b PREND_LA_VALEUR m
FIN_SI
SINON
DEBUT_SINON
a PREND_LA_VALEUR m
FIN_SINON
AFFICHER a
AFFICHER " < solution < "
AFFICHER b
FIN_TANT_QUE
FIN_ALGORITHME
Utilisation de l’onglet « Dessiner dans un repère »
En activant l’option "Utiliser un repère" dans l’onglet "Dessiner dans un repère", un repère graphique est automatiquement ajouté dans la fenêtre de test de l’algorithme. Il est alors possible
d’inclure dans le code de l’algorithme des instructions pour tracer des points et des segments
dans ce repère en utilisant les boutons "Ajouter TRACER POINT" et "Ajouter TRACER SEGMENT".
Attention
La « fenêtre » du repère est définie lors de la première utilisation des instructions TRACER_POINT et TRACER_SEGMENT. Si la fenêtre doit dépendre de la valeur de certaines variables, il faut s’assurer que celles-ci sont bien définies avant le premier tracé.
– 43 –
ANNEXE B. MÉMENTO SUR L’UTILISATION D’ALGOBOX
Exemple : représentation graphique d’une fluctuation d’échantillonnage (100 simulations de
1000 lancers d’une pièce)
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:
VARIABLES
simulation EST_DU_TYPE NOMBRE
lancer EST_DU_TYPE NOMBRE
nb_de_piles EST_DU_TYPE NOMBRE
frequence EST_DU_TYPE LISTE
moy EST_DU_TYPE NOMBRE
ecart_type EST_DU_TYPE NOMBRE
DEBUT_ALGORITHME
POUR simulation ALLANT_DE 1 A 100
DEBUT_POUR
nb_de_piles PREND_LA_VALEUR 0
POUR lancer ALLANT_DE 1 A 1000
DEBUT_POUR
SI (random()<0.5) ALORS
DEBUT_SI
nb_de_piles PREND_LA_VALEUR nb_de_piles+1
FIN_SI
FIN_POUR
frequence[simulation] PREND_LA_VALEUR nb_de_piles/1000
TRACER_POINT (simulation,frequence[simulation])
FIN_POUR
moy PREND_LA_VALEUR ALGOBOX_MOYENNE(frequence,1,100)
TRACER_SEGMENT (1,moy)->(100,moy)
ecart_type PREND_LA_VALEUR ALGOBOX_ECART_TYPE(frequence,1,100)
TRACER_SEGMENT (1,moy+2*ecart_type)->(100,moy+2*ecart_type)
TRACER_SEGMENT (1,moy-2*ecart_type)->(100,moy-2*ecart_type)
FIN_ALGORITHME
Xmin: 1 ; Xmax: 100 ; Ymin: 0.4 ; Ymax: 0.6 ; GradX: 10 ; GradY: 0.01
B.3.8
Utilisation d’une « Fonction locale »
Il est possible avec AlgoBox de définir et utiliser des fonctions locales que l’on peut appeler
dans l’algorithme ensuite. Pour créer une nouvelle fonction locale, il suffit de se placer sur
FONCTIONS_UTILISEES, de cliquer sur « Nouvelle ligne » puis sur « Déclarer nouvelle fonction » dans l’onglet « Fonctions locales ». Pour déclarer une éventuelle variable locale nécessaire à une fonction, il faut se placer sur la ligne « VARIABLES_FONCTION » correspondant à
la fonction et cliquer sur « Déclarer variable locale ». Le bouton « Ajouter RENVOYER valeur »
permet lui de définir ce que renverra la fonction. Quand au bouton « Appeler Fonction », il
sert à appeler une fonction qui ne renvoie pas de valeur.
Exemple avec le calcul du pgcd de deux entiers (méthode récursive) :
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
FONCTIONS_UTILISEES
FONCTION pgcd(p,q)
VARIABLES_FONCTION
DEBUT_FONCTION
SI (p==0) ALORS
DEBUT_SI
RENVOYER q
FIN_SI
SI (q==0) ALORS
DEBUT_SI
RENVOYER p
FIN_SI
SI (q<=p) ALORS
DEBUT_SI
RENVOYER pgcd(p-q,q)
FIN_SI
RENVOYER pgcd(p,q-p)
FIN_FONCTION
VARIABLES
m EST_DU_TYPE NOMBRE
n EST_DU_TYPE NOMBRE
result EST_DU_TYPE NOMBRE
DEBUT_ALGORITHME
LIRE m
– 44 –
ANNEXE B. MÉMENTO SUR L’UTILISATION D’ALGOBOX
25:
LIRE n
result PREND_LA_VALEUR pgcd(m,n)
26:
27:
AFFICHER result
28: FIN_ALGORITHME
B.3.9
Récupération facile d’un code AlgoBox dans un traitement de texte
Pour copier un code AlgoBox facilement sans passer par les commandes d’exportation du menu
Fichier, il suffit de :
— lancer la fenêtre de test de l’algorithme ;
— sélectionner le code à copier dans la page web de test (la partie supérieure de la fenêtre) ;
— faire « glisser » le code sélectionné vers son traitement de texte.
B.4
B.4.1
Quelques techniques classiques
Diviseur ?
— Condition pour vérifier si un entier P est un diviseur d’un entier N : N%P==0
B.4.2
Entier pair ou impair ?
— Condition pour vérifier si un entier N est pair : N%2==0
— Condition pour vérifier si un entier N est impair : N%2!=0 (autre condition possible :
N%2==1)
B.4.3
Entier pseudo-aléatoire compris entre 1 et N
— Pour obtenir un entier pseudo-aléatoire compris entre 1 et N :
... PREND_LA_VALEUR ALGOBOX_ALEA_ENT(1,N) ou ... PREND_LA_VALEUR floor(N*random()+1)
— Exemple pour la face d’un dé : ... PREND_LA_VALEUR ALGOBOX_ALEA_ENT(1,6)
B.4.4
« Balayage » d’un intervalle
Deux méthodes peuvent être utilisées pour « balayer » un intervalle [a ; b] (a et b faisant partie
du traitement).
Première méthode en entrant le nombre de subdivisions et en utilisant une boucle POUR... :
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
VARIABLES
i EST_DU_TYPE NOMBRE
nbsubdivisions EST_DU_TYPE NOMBRE
pas EST_DU_TYPE NOMBRE
x EST_DU_TYPE NOMBRE
a EST_DU_TYPE NOMBRE
b EST_DU_TYPE NOMBRE
DEBUT_ALGORITHME
LIRE a
LIRE b
LIRE nbsubdivisions
pas PREND_LA_VALEUR (b-a)/nbsubdivisions
POUR i ALLANT_DE 0 A nbsubdivisions
DEBUT_POUR
x PREND_LA_VALEUR a+i*pas
traitement....
FIN_POUR
FIN_ALGORITHME
– 45 –
ANNEXE B. MÉMENTO SUR L’UTILISATION D’ALGOBOX
Deuxième méthode en entrant directement le pas et en utilisant une structure TANT QUE... :
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
B.4.5
VARIABLES
pas EST_DU_TYPE NOMBRE
x EST_DU_TYPE NOMBRE
a EST_DU_TYPE NOMBRE
b EST_DU_TYPE NOMBRE
DEBUT_ALGORITHME
LIRE a
LIRE b
LIRE pas
x PREND_LA_VALEUR a
TANT_QUE (x<=b) FAIRE
DEBUT_TANT_QUE
traitement....
x PREND_LA_VALEUR x+pas
FIN_TANT_QUE
FIN_ALGORITHME
Suites numériques
D’un strict point de vue programmation, l’utilisation d’une liste pour manipuler les termes
d’une suite dans un algorithme n’est guère optimal. Par contre, d’un point de vue pédagogique,
la correspondance étroite entre terme d’une suite et terme d’une liste AlgoBox peut permettre
de conforter la compréhension par les élèves du formalisme sur les suites numériques.
Pour modéliser une suite (Un ) à l’aide d’un algorithme AlgoBox, on peut utiliser une variable
de type LISTE notée U.
Ainsi :
—
—
—
—
—
le terme U0 de la suite sera représenté par U[0] dans l’algorithme ;
le terme U1 de la suite sera représenté par U[1] dans l’algorithme ;
etc...
le terme Un de la suite sera représenté par U[n] dans l’algorithme ;
le terme Un+1 de la suite sera représenté par U[n+1] dans l’algorithme ;
Exemple avec une suite « récurrente » :
Sans utiliser de liste :
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
VARIABLES
n EST_DU_TYPE NOMBRE
U EST_DU_TYPE NOMBRE
i EST_DU_TYPE NOMBRE
DEBUT_ALGORITHME
LIRE n
U PREND_LA_VALEUR 1
POUR i ALLANT_DE 0 A n-1
DEBUT_POUR
U PREND_LA_VALEUR 1+2*U
FIN_POUR
AFFICHER U
13: FIN_ALGORITHME
En utilisant une liste AlgoBox :
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
VARIABLES
n EST_DU_TYPE NOMBRE
U EST_DU_TYPE LISTE
i EST_DU_TYPE NOMBRE
DEBUT_ALGORITHME
LIRE n
U[0] PREND_LA_VALEUR 1
POUR i ALLANT_DE 0 A n-1
DEBUT_POUR
U[i+1] PREND_LA_VALEUR 1+2*U[i]
FIN_POUR
AFFICHER U[n]
FIN_ALGORITHME
– 46 –
ANNEXE B. MÉMENTO SUR L’UTILISATION D’ALGOBOX
B.4.6
Échanger le contenu de deux variables
Pour échanger le contenu de deux variables A et B, il suffit d’utiliser une troisième variable
temp :
temp PREND_LA_VALEUR A
A PREND_LA_VALEUR B
B PREND_LA_VALEUR temp
Exemple : tri d’une liste de valeurs par échange du minimum
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:
B.4.7
VARIABLES
listenombre EST_DU_TYPE LISTE
temp EST_DU_TYPE NOMBRE
i EST_DU_TYPE NOMBRE
min EST_DU_TYPE NOMBRE
nbtermes EST_DU_TYPE NOMBRE
DEBUT_ALGORITHME
LIRE nbtermes
//Entrer les "nbtermes" valeurs sous la forme valeur1:valeur2:etc...
LIRE listenombre[1]
POUR i ALLANT_DE 1 A nbtermes-1
DEBUT_POUR
min PREND_LA_VALEUR ALGOBOX_POS_MINIMUM(listenombre,i+1,nbtermes)
SI (listenombre[i]>listenombre[min]) ALORS
DEBUT_SI
temp PREND_LA_VALEUR listenombre[min]
listenombre[min] PREND_LA_VALEUR listenombre[i]
listenombre[i] PREND_LA_VALEUR temp
FIN_SI
FIN_POUR
POUR i ALLANT_DE 1 A nbtermes
DEBUT_POUR
AFFICHER listenombre[i]
AFFICHER " "
FIN_POUR
FIN_ALGORITHME
Afficher un message contenant du texte et des nombres
Il suffit pour cela d’utiliser une variable du type CHAINE.
Exemple :
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
VARIABLES
a EST_DU_TYPE NOMBRE
b EST_DU_TYPE NOMBRE
message EST_DU_TYPE CHAINE
somme EST_DU_TYPE NOMBRE
DEBUT_ALGORITHME
LIRE a
LIRE b
somme PREND_LA_VALEUR a+b
message PREND_LA_VALEUR a.toString()+" + "+b.toString()+" est égal à "+somme.toString()
AFFICHER message
FIN_ALGORITHME
Résultat :
***Algorithme lancé***
Entrer a : 4
Entrer b : 7
4 + 7 est égal à 11
***Algorithme terminé***
– 47 –
ANNEXE C. ALGORITHMES SUPPLÉMENTAIRES
C
Algorithmes supplémentaires
C.1
Second degré
Solutions de l’équation du second degré ax2 + bx + c = 0.
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:
31:
32:
33:
34:
35:
36:
37:
38:
39:
VARIABLES
a EST_DU_TYPE NOMBRE
b EST_DU_TYPE NOMBRE
c EST_DU_TYPE NOMBRE
delta EST_DU_TYPE NOMBRE
x1 EST_DU_TYPE NOMBRE
x2 EST_DU_TYPE NOMBRE
DEBUT_ALGORITHME
LIRE a
LIRE b
LIRE c
SI (a!=0) ALORS
DEBUT_SI
delta PREND_LA_VALEUR b*b-4*a*c
SI (delta<0) ALORS
DEBUT_SI
AFFICHER "Pas de racines réelles"
FIN_SI
SI (delta==0) ALORS
DEBUT_SI
x1 PREND_LA_VALEUR -b/(2*a)
AFFICHER "Une racine double : "
AFFICHER x1
FIN_SI
SI (delta>0) ALORS
DEBUT_SI
x1 PREND_LA_VALEUR (-b-sqrt(delta))/(2*a)
x2 PREND_LA_VALEUR (-b+sqrt(delta))/(2*a)
AFFICHER "Première racine : "
AFFICHER x1
AFFICHER "Deuxième racine : "
AFFICHER x2
FIN_SI
FIN_SI
SINON
DEBUT_SINON
AFFICHER "Pas du second degré"
FIN_SINON
FIN_ALGORITHME
– 48 –
ANNEXE C. ALGORITHMES SUPPLÉMENTAIRES
C.2
Paramètres d’une série statistique
Calcul des paramètres statistiques sur série (valeurs,effectifs).
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:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
VARIABLES
valeurs EST_DU_TYPE LISTE
effectifs EST_DU_TYPE LISTE
nb_valeurs EST_DU_TYPE NOMBRE
i EST_DU_TYPE NOMBRE
liste_complete EST_DU_TYPE LISTE
j EST_DU_TYPE NOMBRE
k EST_DU_TYPE NOMBRE
moyenne EST_DU_TYPE NOMBRE
ecart_type EST_DU_TYPE NOMBRE
mediane EST_DU_TYPE NOMBRE
premier_quartile EST_DU_TYPE NOMBRE
troisieme_quartile EST_DU_TYPE NOMBRE
DEBUT_ALGORITHME
LIRE nb_valeurs
LIRE valeurs[1]
LIRE effectifs[1]
k PREND_LA_VALEUR 1
POUR i ALLANT_DE 1 A nb_valeurs
DEBUT_POUR
POUR j ALLANT_DE 1 A effectifs[i]
DEBUT_POUR
liste_complete[k] PREND_LA_VALEUR valeurs[i]
k PREND_LA_VALEUR k+1
FIN_POUR
FIN_POUR
moyenne PREND_LA_VALEUR ALGOBOX_MOYENNE(liste_complete,1,k-1)
AFFICHER "Moyenne : "
AFFICHER moyenne
ecart_type PREND_LA_VALEUR ALGOBOX_ECART_TYPE(liste_complete,1,k-1)
AFFICHER "Ecart-type : "
AFFICHER ecart_type
mediane PREND_LA_VALEUR ALGOBOX_MEDIANE(liste_complete,1,k-1)
AFFICHER "Médiane : "
AFFICHER mediane
premier_quartile PREND_LA_VALEUR ALGOBOX_QUARTILE1_BIS(liste_complete,1,k-1)
AFFICHER "Q1 : "
AFFICHER premier_quartile
troisieme_quartile PREND_LA_VALEUR ALGOBOX_QUARTILE3_BIS(liste_complete,1,k-1)
AFFICHER "Q3 : "
AFFICHER troisieme_quartile
FIN_ALGORITHME
– 49 –
ANNEXE C. ALGORITHMES SUPPLÉMENTAIRES
C.3
Tabulation loi binomiale - Intervalle de fluctuation à 95%
Tabulation loi binomiale et intervalle de fluctuation à 95% d’une proportion p.
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:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
VARIABLES
taille_echantillon EST_DU_TYPE NOMBRE
p EST_DU_TYPE NOMBRE
somme EST_DU_TYPE NOMBRE
k EST_DU_TYPE NOMBRE
a EST_DU_TYPE NOMBRE
b EST_DU_TYPE NOMBRE
fluct_min EST_DU_TYPE NOMBRE
fluct_max EST_DU_TYPE NOMBRE
prob EST_DU_TYPE NOMBRE
max_prob EST_DU_TYPE NOMBRE
DEBUT_ALGORITHME
LIRE taille_echantillon
SI (taille_echantillon<1 OU taille_echantillon>100) ALORS
DEBUT_SI
AFFICHER "Calcul non autorisé"
FIN_SI
SINON
DEBUT_SINON
LIRE p
a PREND_LA_VALEUR -1
b PREND_LA_VALEUR -1
max_prob PREND_LA_VALEUR 0
POUR k ALLANT_DE 0 A taille_echantillon
DEBUT_POUR
prob PREND_LA_VALEUR ALGOBOX_LOI_BINOMIALE(taille_echantillon,p,k)
SI (prob>max_prob) ALORS
DEBUT_SI
max_prob PREND_LA_VALEUR prob
FIN_SI
FIN_POUR
AFFICHER "taille échantillon : "
AFFICHER taille_echantillon
AFFICHER "proportion p : "
AFFICHER p
AFFICHER "k -> p(X<=k) :"
POUR k ALLANT_DE 0 A taille_echantillon
DEBUT_POUR
prob PREND_LA_VALEUR ALGOBOX_LOI_BINOMIALE(taille_echantillon,p,k)
somme PREND_LA_VALEUR somme+prob
AFFICHER k
AFFICHER " -> "
AFFICHER somme
SI (somme<=0.025) ALORS
DEBUT_SI
TRACER_SEGMENT (k,0)->(k,prob)
FIN_SI
SI (somme>0.025 ET somme<0.975) ALORS
DEBUT_SI
TRACER_SEGMENT (k,0)->(k,prob)
SI (a==-1) ALORS
DEBUT_SI
a PREND_LA_VALEUR k
FIN_SI
FIN_SI
SI (somme>=0.975) ALORS
DEBUT_SI
SI (b==-1) ALORS
DEBUT_SI
b PREND_LA_VALEUR k
TRACER_SEGMENT (k,0)->(k,prob)
FIN_SI
SINON
DEBUT_SINON
TRACER_SEGMENT (k,0)->(k,prob)
FIN_SINON
FIN_SI
FIN_POUR
fluct_min PREND_LA_VALEUR a/taille_echantillon
– 50 –
ANNEXE C. ALGORITHMES SUPPLÉMENTAIRES
70:
AFFICHER "a : "
AFFICHER a
71:
72:
AFFICHER "b : "
73:
fluct_max PREND_LA_VALEUR b/taille_echantillon
AFFICHER b
74:
75:
AFFICHER "intervalle de fluctuation : [ "
76:
AFFICHER fluct_min
77:
AFFICHER " ; "
78:
AFFICHER fluct_max
AFFICHER " ] "
79:
FIN_SINON
80:
81: FIN_ALGORITHME
Notes :
— max_prob sert à définir la fenêtre graphique :
— Les « bâtons » situés entre a et b sont dessinés en bleu (lignes 50 et 61), les autres sont
tracés en rouge (lignes 46 et 65).
– 51 –
Download