Académique Documents
Professionnel Documents
Culture Documents
CHAPITRE 1 Algorithmique
et programmation Manuel p. 12-39
I. Introduction
Objectifs du chapitre
L'objectif de ce chapitre est de formaliser les notions élémentaires d'algorithmique (affectation, ins-
tructions conditionnelles, boucles, etc.) et de donner les éléments permettant leur mise en œuvre dans
le langage de programmation textuel Python.
Ainsi, nous avons fait le choix d'activités d'introduction sur poste dont l'objectif est double :
• réactiver les notions d'algorithmique vues au cycle 4 (le langage de programmation par blocs SCRATCH,
connu des élèves, étant proche du En langage naturel) ;
• apprendre simultanément à les « traduire » dans le langage Python.
Dans un deuxième temps, la notion - centrale en programmation - de fonction est introduite.
Le tout est accompagné d'exercices et TP d'algorithmique et de programmation permettant une appro-
priation progressive des différentes notions par l'élève.
De nombreuses activités mettant en jeu Algorithmique et programmation sont évidemment présentes.
Capacités
→→ Amener les élèves à comprendre et utiliser le langage naturel et notamment les concepts de
types, de conditions, de boucles et de fonctions.
→→ Amener les élèves à comprendre et écrire des programmes dans le langage Python
notamment en mobilisant les instructions if/else, for, while et def (pour les fonctions).
reponse 0 10 9 8 7 6
nombre_essais 0 1 2 3 4 5
Condition reponse ≠ nombre_ non véri-
vérifiée vérifiée vérifiée vérifiée vérifiée fiée
aleatoire
3. Pour s’assurer de rentrer dans la boucle puisque La valeur de U de la fonction est alors calculée
nombre_aleatoire ne peut pas être égal à 0. (ligne 2) puis renvoyée et affectée à la variable
On aurait pu choisir n’importe quel nombre qui tension dans le programme principal.
n’est pas un entier entre 1 et 10.
19.
p←1 26.
Tant que p ⩽ 1 000 000 fonction image(x)
Afficher p y←3×x2–7×x+4
p←p*5 Retourner y
Fin tant que
Questions – Flash b)
30.
31.
c)
32.
10
11
2e possibilité
x←Valeur saisie
Si x ⩽ 1 53. 55
Afficher 2×x+3
Fin si Écrire un algorithme avec une boucle
Si x > 1 et x < 2 bornée
Afficher 5×x 54. En langage naturel
Fin si
Pour i allant de 1 à 1 000
Si x ⩾ 2
Afficher "mathématiques"
Afficher 14-2×x
Fin pour
Fin si
En Python
50.
x←Valeur saisie
Si 5×x2+3×x-2 < 0
Afficher "Strictement négatif" 55. En langage naturel :
Fin si Pour x allant de 12 à 55
Si 5×x +3×x-2>0
2
Afficher 3x2-5
Afficher "Strictement positif" Fin pour
Fin si
En Python
Si 5×x2+3×x-2=0
Afficher "Nul"
Fin si
12
En Python:
60. Il va boucler à l’infini car a2+1 sera toujours 64. g retourne 8 (car y = 12 + 3 = 4 puis
strictement positif. z = 4 × 1 + 4 = 8).
Remarque : la dernière affectation y←z2 est inu-
Écrire un algorithme avec une boucle non tile.
bornée
61. En langage naturel Écrire une fonction simple
j←0 65. a)
Tant que j ⩽ 200 fonction f(x)
j←3×j+5 y←-25×x+12
Fin tant que Retourner y
Afficher j
En Python b)
fonction g(x)
y←8×x3+5×x2-4×x+1
Retourner y
66.
62. En considérant les différences, on constate
fonction h(x,y)
qu’elles sont égales à 1, 2, 3, 4 et 5.
z ←3×x×y-5×x+2×y
Retourner z
13
71. Au tableur !
En langage naturel :
fonction MIN(a,b)
Si a > b
m←b
Sinon
m←a 73. Hausse et évolution et quantité
Fin si 1. En langage naturel :
Retourner m fonction hausse5(quantite)
Retourner quantite×1,05
fonction MAX(a,b)
Si a > b En Python :
M←a
Sinon
M←b
2. En langage naturel :
Fin si
Retourner M fonction hausse40(quantite)
Retourner quantite×1,4
En Python :
En Python :
3. En langage naturel :
fonction evolution(quantite,taux)
Retourner quantite×(1+taux/100)
En Python :
4. Oui.
14
En Python:
2. On obtient les nombres impairs entre 1 et 199
c’est-à-dire entre 2 × 0 + 1 et 2 × 99 + 1 (ce qui est
normal car (i+1)2-i2=2i+1).
Exercices d’approfondissement p. 34
76. Voyage en train 81. À Monte-Carlo
1. a) 15 euros 1.
b) 30 euros
c) 15 euros
2. S’il est âgé de moins de 27 ans ou plus de 60 ans.
77. À compléter
Pour i allant de 8 à 20
1
Afficher
i
Fin pour
2.
78. À partir d'un certain rang
En langage naturel :
p←Entier entre 2 et 10 saisi
i←0
Tant que pi ⩽ 10 000
i←i+1
Fin tant que
Afficher i
4. De π.
15
83. En moyenne !
88. 1.
a←38
84. Pour ou Tant que? b←12
i←1 q←0
u←5 Tant que q×b ⩽ a
Tant que i ⩽ 5 q←q+1
u←2×u+3 Fin tant que
i←i+1 q←q-1
Fin tant que 2.
3.
89.
2. La suite finit par boucler sur 1, 2 et 4.
Remarque : le fait que cela finisse par arriver quel
que soit le nombre de départ est appelé « conjec-
ture de Syracuse » et est un problème non démon-
tré (en 2019).
16
17
60 Allèle A
Allèle B
40 Allèle O
20
Effectif
0 20 40 60 80 100 de l’allèle
18
Fréquence (en %)
à la génération n°100 de…
allèle A allèle B allèle O
Effectif de chaque
allèle à la génération n°0
50 97,6 0 2,4
1 000 34,2 30,8 35
10 000 32,3 31,5 36,1
5. L’idée forte est que lorsque les effectifs de 3. L’affichage n’est pas 6.3 comme attendu mais
départ sont faibles, le phénomène de fluctuation 6.300000000000001…
d’échantillonnage a beaucoup d’influence et peut
entraîner de grandes disparités entre des allèles TP 5. Pour calculer des aires et des volumes
pourtant équirépartis au départ.
• Durée estimée : 55 min
En revanche, pour de grands effectifs de départ,
les différents allèles restent globalement équiré- • Objectif : Écrire des fonctions « utiles ». C’est
partis. Tout ceci est à mettre en lien avec la notion aussi l’occasion de travailler en groupe en utili-
de dérive génétique qui est au programme de sant l’aspect modulaire de la programmation (voir
Seconde en SVT. exercice 80).
A. 1.
TP 4. Une petite étrangeté
• Durée estimée : 10 min
• Objectif : Constater que les tests d’égalité sur
les flottants sont problématiques.
1. 2.
3.
2.
3.
C. 1.
Exercices en autonomie p. 39
Comprendre l'affectation
90. b 91. c
20
En Python
Comprendre et écrire une boucle
95. d 96. c 97. b
En Python
En Python
21