Algorithmes Table des matières

publicité
Algorithmique
Algorithmes
Table des matières
I
Programme
I.1 Extrait du programme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
I.2 Extrait du document d’accompagnement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2
2
2
II Références sur l’ e-toile
2
III Tester la compréhension d’un algorithme
3
IV Algorithmes liés au programme de la classe de première
IV.1 Écriture en base b d’un entier donné en base 10 . . . . . . .
IV.2 Liste des diviseurs positifs d’un entier . . . . . . . . . . . .
IV.3 Diviseurs communs et pgcd . . . . . . . . . . . . . . . . . .
IV.4 Algorithme d’Euclide . . . . . . . . . . . . . . . . . . . . . .
IV.5 Factorisation d’un entier en facteurs premiers . . . . . . . .
IV.6 Travail sur le système décimal . . . . . . . . . . . . . . . . .
IV.7 Probabilités et simulations . . . . . . . . . . . . . . . . . . .
V Les
V.1
V.2
V.3
.
.
.
.
.
.
.
3
3
4
4
5
6
6
7
suites
Somme de termes d’indices consécutifs d’une suite arithmétique . . . . . . . . . . . . . . . . . . . . . .
Somme de termes d’indices consécutifs d’une suite géométrique . . . . . . . . . . . . . . . . . . . . . .
Limite d’une suite géométrique : quelques annales du bacc . . . . . . . . . . . . . . . . . . . . . . . . .
10
10
11
12
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
VI Récurrence
14
VIILa division euclidienne
VII.1Calcul d’un quotient de division . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
VII.2Calcul du reste . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
VII.3Algorithme de division euclidienne . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
15
15
15
16
VIII
Algorithme de multiplication
18
IX Les congruences
IX.1 Congruence de deux entiers relatifs selon
IX.2 Congruences . . . . . . . . . . . . . . . .
IX.3 Des critères de divisibilité en base 10 . .
IX.4 Clefs de contrôle . . . . . . . . . . . . .
X
un
. .
. .
. .
module
. . . . .
. . . . .
. . . . .
Écriture décimale d’un réel
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
18
18
19
19
23
24
XI Exponentielle
26
XIILogarithme
27
Académie de Lyon - Janvier 2007 - Nouveaux programmes de TL
page 1/28
Algorithmique
I
Programme
I.1
Extrait du programme
Les activités algorithmiques apportent un éclairage pratique par l’étude de problèmes liés à la réalisation effective des
opérations mathématiques.
Les objectifs du programme :
1. attirer l’attention des élèves sur la différence entre la résolution abstraite d’un problème et la succession des
opérations permettant de produire un objet mathématique qui en est solution (exacte ou approchée) ;
2. soulever la question de l’efficacité des algorithmes rencontrés, en termes de nombres d’opérations élémentaires
nécessaires.
L’algorithme est ici considéré comme un outil dont on s’attache à découvrir les propriétés, sans toutefois développer
une théorie, même très élémentaire de la complexité ou de la rapidité.
Les notions sont à travailler progressivement et à mobiliser dans toutes les parties du programme.
Les élèves seront entraînés :
1. à décrire certains algorithmes en langage naturel ;
2. à en réaliser quelques-uns parmi les plus simples, à l’aide d’un tableur ou d’une calculatrice ou d’un logiciel
adapté ;
3. à interpréter des algorithmes plus complexes (c’est à dire à identifier ce qu’ils produisent).
L’utilisation des fonctions logiques du tableur est l’occasion de compléter le travail dans le domaine de la logique.
I.2
Extrait du document d’accompagnement
Le développement fulgurant de l’informatique ces dernières décennies est lié à la réalisation de logiciels toujours plus
puissants et fondés sur la conception et la mise en oeuvre d’algorithmes. Parmi les plus utilisés « sans le savoir »,
on peut citer les algorithmes de compression de données et les algorithmes des moteurs de recherche. Dans un tel
contexte, il est essentiel que les élèves soient suffisamment familiarisés avec le type particulier de démarche que
nécessite l’algorithmique. L’enseignement des mathématiques constitue un point d’ancrage particulièrement favorable
pour cela. Le travail à réaliser prolonge l’apprentissage des élèves amorcé durant les années antérieures. Citons par
exemple la compréhension et la mise en oeuvre des algorithmes des opérations et en particulier de celui de la division
euclidienne dès l’enseignement primaire, d’algorithmes de recherche du PGCD étudiés en classe de troisième. Mais
dans le cadre de ce programme, construire un algorithme pour résoudre un problème, c’est non seulement trouver
une méthode de calcul d’une solution à ce problème, mais écrire cette méthode sous forme d’une suite d’instructions
élémentaires : affectations de variables (initialisation ou calcul), branchements (condition ou boucle itérée), affichages.
Il s’agit donc d’aller plus loin que dans les classes antérieures, afin de rendre les élèves capables de concevoir par
eux-mêmes quelques algorithmes simples et de comprendre ce que produisent certains algorithmes plus complexes.
Outre son intérêt culturel, cet apprentissage présente également un objectif pédagogique important, convergeant avec
l’objectif poursuivi par le travail à réaliser sur la logique. Il s’agit d’apprendre aux élèves à imaginer ou à suivre le
déroulement d’une suite d’instructions en fonction de conditions logiques. L’étude d’algorithmes doit être proposée
régulièrement, pour résoudre des problèmes simples, sans que l’algorithmique ne fasse l’objet d’un enseignement isolé.
Un enjeu important consiste à permettre aux élèves de faire la différence entre la résolution abstraite d’un problème
et la production d’une solution exacte ou approchée de ce problème.
II
Références sur l’ e-toile
– http ://eduscol.education.fr/D0015/LLPHPR01.htm : les programmes et les documents d’accompagnement.
– http ://ldif.education.gouv.fr/wws/info/eduscol.maths-l : Une liste de discussion nationale sur l’enseignement des
maths en L avec un espace de mutualisation de documents.
– http ://www.pise.info/algo/ : Un cours complet d’algorithmique
Académie de Lyon - Janvier 2007 - Nouveaux programmes de TL
page 2/28
Algorithmique
III
Tester la compréhension d’un algorithme
Des idées pour le travail des élèves sur la compréhension d’un algorithme :
1. Demander la sortie pour une valeur donnée de l’entrée.
2. Remplir sous forme d’un tableau les valeurs successives des variables (avec des valeurs particulières des entrées).
3. Des éléments de démonstration de validité de l’algorithme (cf exercice 47 ou 33 ).
4. Demander de compléter une instruction, le reste et le rôle du programme étant donnés (exemple : exercice 23).
5. Ajouter une instruction pour une modification mineure (exemple : exercices 4 , 45 )
6. Réexploiter les algorithmes de base dans diverses situations (cf les exercices utilisant les calculs de reste ou de
quotient).
7. Utiliser la connaissance du tableur en faisant traduire un programme calculatrice sur tableur, les petites adaptations d’une machine à l’autre obligent à une bonne analyse.
8. Toujours travailler sur des algorithmes en lien avec le reste du chapitre, pas d’algorithme “gratuit”.
IV
Algorithmes liés au programme de la classe de première
Du fait de l’importance du travail d’arithmétique en terminale, les algorithmes plus directement liés à la classe de
première peuvent être revus, réutilisés en terminale.
IV.1
Écriture en base b d’un entier donné en base 10
Entrée
Traitement
Sortie
Un entier naturel n et un entier b > 1
Affecter à A la valeur de n
Tant que A > 0
Afficher le reste de la division de A par b
Affecter à A la valeur du quotient de la division de A par b
les « chiffres » affichés au fur et à mesure du traitement
sont ceux de l’écriture de n en base b
Sur calculatrices :
Ti
Casio
Prompt N
“N” : ? → N
Prompt B
“B” : ? → B
N →A
N →A
While A > 0
While A > 0
int(A/B) → Q
Intg(A ÷ B) → Q
A−B∗Q→R A−B×Q→R
Q→A
Q→A
Disp R
R
Pause
End
WhileEnd
Sur tableur : Construire une feuille de calcul (seules les cases grisées sont à remplir) permettant d’effectuer un changement de base suivant le modèle suivant :
Académie de Lyon - Janvier 2007 - Nouveaux programmes de TL
page 3/28
Algorithmique
IV.2
Liste des diviseurs positifs d’un entier
Exercice 1 (algorithme de recherche des diviseurs d’un entier).
1. Compléter la partie traitement de l’algorithme suivant :
Entrée
a un entier naturel non nul
Traitement
Sortie
les diviseurs de l’entier a
2. Écrire le programme pour votre calculatrice.
Exercice 2 (amélioration de l’algorithme de recherche des diviseurs).
Pour améliorer l’algorithme de recherche des diviseurs d’un naturel non nul a, on se propose d’afficher les diviseurs
par couple (c’est à dire : lorsqu’on affiche le diviseur u, on affiche aussi le diviseur v tel que uv = a).
Entrée
un entier naturel a > 1
Traitement
Sortie
les couples (u; v) d’entiers naturels tels que uv = a et u 6 v
Proposer un tel algorithme puis l’écrire dans le langage de votre calculatrice.
IV.3
Diviseurs communs et pgcd
Exercice 3.
Compléter la partie traitement de l’algorithme suivant :
Entrée
a et b deux entiers naturels non nuls
Traitement
Sortie
les diviseurs communs à a et b
Exercice 4.
On considère l’algorithme suivant :
Entrée
a, b deux entiers naturels non nuls
Traitement Pour i prenant successivement
les valeurs entières de 1 et a
a a
b
b
si E
= et E
= alors afficher i
i
i
i
i
Sortie
Da ∩ Db , faite au fur et à mesure du traitement
1. La sortie est-elle la même avec l’entrée (a; b) = (1000; 12) et avec l’entrée (a; b) = (12; 1000) ?
2. Le temps de calcul est-il le même dans les deux cas ?
3. Proposer une modification du programme pour que la boucle s’arrête toujours lorsque le plus petit (min {a; b})
entier est atteint.
Exercice 5.
En utilisant l’algorithme de recherche des diviseurs communs aux deux entiers a et b, compléter la partie traitement
de l’algorithme suivant :
Entrée
a et b deux entiers naturels non nuls
Traitement
Sortie
pgcd (a; b)
Académie de Lyon - Janvier 2007 - Nouveaux programmes de TL
page 4/28
Algorithmique
IV.4
Algorithme d’Euclide
Entrée
Traitement
Sortie= pgcd(a; b)
Algorithme d’Euclide
a et b deux entiers (non nuls)
affecter à r le reste de la division euclidienne de a par b
Tant que r > 0
affecter à a la valeur de b
affecter à b la valeur de r
affecter à r le reste dans la division de a par b
la dernière valeur non nulle de r, c’est à dire la
dernière valeur affectée à b
Sur calculatrices :
Ti
Prompt A,B
Casio
“A” : ? → A
“B” : ? → B
A − int(A/B) ∗ B → R A − Intg(A ÷ B) × B → R
While R > 0
While R > 0
B→A
B→A
R→B
R→B
A − int(A/B) ∗ B → R A − Intg(A ÷ B) × B → R
End
WhileEnd
Disp B
B
Sur tableur : Construire une feuille de calcul (seules les cases grisées sont à remplir) permettant de calculer le PGCD
de deux entiers suivant le modèle suivant :
Exercice 6.
On applique l’algorithme d’Euclide à deux entiers a et b :
Étape dividende diviseur reste
1
a
b
r1
2
b
r1
r2
3
r1
r2
r3
4
r2
r3
0
1. En utilisant le lemme d’Euclide et le descriptif de l’algorithme, expliquer pourquoi les diviseurs communs à a et
b sont exactement les diviseurs de leur pgcd.
2. Écrire un programme pour votre calculatrice qui utilise la propriété précédente pour déterminer les diviseurs
communs à deux entiers a et b.
Académie de Lyon - Janvier 2007 - Nouveaux programmes de TL
page 5/28
Algorithmique
IV.5
Factorisation d’un entier en facteurs premiers
Entrée
Traitement
Décompose
un entier n > 1
affecter la valeur n à a
Pour d prenant les valeurs entières de 2 à E
n
Tant que d divise a
afficher la valeur de d
a
affecter à a la valeur de
d
Ti
Casio
Prompt N
“N” : ? → N
N →A
N →A
For(D,2,int(N/2))
For 2 → D To Intg(N ÷ 2)
While int(A/D) = A/D While Intg(A ÷ D) = A ÷ D
Disp D
D
Pause
A/D → A
A÷D →A
End
WhileEnd
End
Next
IV.6
2
Travail sur le système décimal
Exercice 7 (« programme » sans boucle pour une première prise en main de la calculatrice).
On considère un nombre de trois chiffres xyz. On le réécrit “à droite de lui-même” pour obtenir le nombre à six
chiffres : xyzxyz. On divise ce nombre par 7, puis le résultat par 11, puis le nouveau résultat par 13.
1. « On considère un nombre de trois chiffres xyz. On le réécrit “à droite de lui-même” pour obtenir le nombre à
six chiffres : xyzxyz. »
Réécrire cette phrase à l’aide d’une multiplication et d’une addition.
2. Ecrire un programme pour votre calculatrice qui demande un entier N de trois chiffres puis lui applique les
opérations décrites ci-dessus et affiche le résultat de la dernière division.
3. Sur tableur : Construire une feuille de calcul (seules la case grisée est à remplir) suivant le modèle suivant :
Académie de Lyon - Janvier 2007 - Nouveaux programmes de TL
page 6/28
Algorithmique
4. Expliquer les résultats observés.
Exercice 8 (carré d’un nombre de chiffre des unités 5).
1. On considère l’algorithme suivant :
Entrée
N un entier naturel
Initialisation donner à U la valeur N
Traitement
Tant que U > 10 :
Affecter à U la valeur U − 10
affecter à A la valeur (N − U )/10
affecter à C la valeur A × (A + 1) × 100 + 25
Sortie
Afficher la valeur de C
(a) Quelle est la sortie avec N = 27 pour entrée ?
(b) Quelle est la sortie avec N = 129 pour entrée ?
(c) Écrire le programme pour votre calculatrice.
(d) Sur tableur construire une feuille de calcul mettant en oeuvre l’algorithme précédent.
2. Soit N un entier dont le chiffre des unités vaut 5.
(a) Vérifier sur quelques exemples avec votre calculatrice que la sortie de l’algorithme appliqué à un tel entier
N est le carré du nombre N proposé.
(b) Justifier ce résultat.
(c) Calculer, sans machine, le carré de N1 = 45 et le carré de N2 = 75 à l’aide de l’algorithme proposé.
IV.7
Probabilités et simulations
Exercice 9.
Entrez dans votre calculatrice le programme suivant :
Ti
Casio
Entrer « à la main » 6 zéros
dans la liste 1 (menu LIST)
For(I,1,6)
Fill(0, List 1)
0 → L1 (I)
End
For(J,1,1000)
For 1 → J To 1000
randInt(1,6)→ S
Intg(6× Ran# +1)→ S
L1 (S) + 1 → L1 (S)
List 1[S]+1 →List 1[S]
End
Next
For(J,1,1000)
For 1 → J To 1000
L1 (S)/1000 → L1 (S)
List 1[S]÷1000 →List 1[S]
End
Next
Afficher la liste L1 (menu stat) Afficher la liste 1 (menu LIST)
après exécution du programme après exécution du programme
A quoi correspond la sortie de ce programme ?
Académie de Lyon - Janvier 2007 - Nouveaux programmes de TL
page 7/28
Algorithmique
Exercice 10.
Une expérience aléatoire consiste à lancer deux dés et à noter la somme des points obtenus. L’univers de cette expérience
aléatoire est donc
Ω = {2; 3; 4; 5; 6; 7; 8; 9; 10; 11; 12}
On veut obtenir par simulation un échantillon de cette expérience aléatoire.
1. On considère l’algorithme suivant :
Entrée
un entier N
Traitement Affecter la valeur 0 à A
Affecter la valeur 0 à B
Pour j prenant successivement les valeurs entières de 1 à N
lancer deux dés et affecter la somme à la mémoire S
Si S = 6 affecter à A la valeur A + 1
Si S = 7 affecter à B la valeur B + 1
A
Affecter à A la valeur
N
B
Affecter à B la valeur
N
Sortie
Afficher la valeur de A et la valeur de B
Avec une entrée de N = 50 (par exemple), comment s’interprète la sortie de cet algorithme ?
2. Écrire le programme précédent pour votre calculatrice.
3. Une calculatrice étant trop lente pour lancer un grand nombre de fois les deux dés, on peut programmer cela
sur un logiciel de calcul formel ou sur un tableur. On peut utiliser par exemple le logiciel de calcul formel Xcas
(logiciel gratuit téléchargeable sur internet).
Programme Xcas
LancerDeuxDes(n) :=
Nom du programme
n, paramètre, sera le nombre de lancers
{
ouverture du corps du programme
local f,j,s ;
déclaration des variables utilisées dans le programme
for (j :=2 ;j<=12 ;j++){f[j] :=0 ;} ;
mise à 0 de f2 , f3 , . . ., f12
for (j :=1 ;j<=n ;j++)
on lance n fois
{s :=rand(6)+1+rand(6)+1 ;
deux dés
f[s] :=f[s]+1 ;} ;
on incrémente le compteur de somme adéquat
for (j :=2 ;j<=12 ;j++){f[j] :=evalf(f[j]/n) ;} ; on remplace les effectifs par les fréquences
return f ;
le résultat du programme est la liste des fréquences de chaque somme
}
fermeture du corps du programme
4. Autre possibilité : utiliser un tableur. Utilisons par exemple le tableur de la suite Open Office (suite bureautique
complète gratuite et téléchargeable sur internet). On construira une feuille de calcul suivant le modèle ci-dessous :
∗ Pour jeter un dé :
=ALEA.ENTRE.BORNES(1 ;6)
Académie de Lyon - Janvier 2007 - Nouveaux programmes de TL
page 8/28
Algorithmique
∗ Pour jeter deux dés et calculer la somme, on inscrira donc dans la case A1 de la feuille de calcul :
=ALEA.ENTRE.BORNES(1 ;6)+ALEA.ENTRE.BORNES(1 ;6)
∗ Recopier cette formule dans les 4000 cases numérotées de A1 à D1000 .
∗ En colonne F, inscrire dans les 11 cases de F2 à F12 par exemple les entiers de 2 à 12.
∗ Pour compter, dans notre échantillon de 4000 lancers, le nombre de sommes égales à 2 par exemple, inscrire
dans la case G2 la formule :
=NB.SI($A$1 :$D$1000 ;F2)
∗ Recopier cette formule afin de compter l’effectif obtenu pour chacune des sommes.
∗ Afficher enfin en colonne H les fréquences obtenues (effectif /effectif total , c’est à dire ici effectif/4000 ).
Exercice 11.
On lance deux pièces équilibrées identiques. L’expérience a trois issues :
∗ les deux pièces montrent PILE
∗ les deux pièces montrent FACE
∗ une pièce montre FACE, l’autre montre PILE
ce que l’on pourra noter par : Ω = {P P, F F, P F }. On cherche à savoir si une modélisation par la loi équirépartie
Issues
FF PP FP
1
1
1 convient.
Probabilités
3
3
3
Pour cela, on simule le lancer de deux pièces sur un tableur suivant le modèle suivant :
1. Pour lancer une pièce, on utilisera :
=ALEA.ENTRE.BORNES(0 ;1) (qui tire 0 ou 1 de façon équiprobable)
en convenant que 0 est PILE et 1 est FACE.
2. Pour lancer deux pièces, on utilisera :
=ALEA.ENTRE.BORNES(0 ;1)+ALEA.ENTRE.BORNES(0 ;1)
Quels sont les résultats possibles d’une telle instruction ? Comment les interprètera-t-on ?
3. Remplir les 4000 cases de A1 à D1000 avec l’instruction précédente.
4. Comptabiliser les résultats 0, 1 et 2 obtenus avec l’instruction NB.SI(plage ;critère) .
5. La loi équirépartie sur Ω semble-t-elle adaptée ?
6. Peut-on donner une explication ?
7. Écrire un programme (en français puis dans le langage de votre calculatrice) qui permettent de lancer N fois les
deux pièces (N étant l’entrée du programme) et qui affiche la distribution de fréquences pour les issues PP, PF
et FF obtenue.
Exercice 12 (La course du lièvre et de la tortue).
On lance un dé. Si le 6 sort le lièvre gagne, sinon la tortue avance d’une case. La tortue gagne lorsqu’elle a avancé de
six cases.
1. Écrire la partie traitement du programme suivant et entrer le programme dans votre calculatrice :
Entrée
N ∈ N∗ (nombre de courses)
Traitement N courses du lièvre et de la tortue
Sortie
les fréquences de gain du lièvre, de la tortue
Académie de Lyon - Janvier 2007 - Nouveaux programmes de TL
page 9/28
Algorithmique
2. Dans une feuille de tableur, simuler 1000 courses (on utilisera ALEA.ENTRE.BORNES(1 ;6) et NB.SI(plage ;critère)).
Afficher les fréquences de parties gagnées pour chacun des protagonistes.
3. Combien de nombres différents peut-on écrire avec les six chiffres d’un dé ?
4. Combien de ces nombres ne contiennent pas de 6 ?
5. Donner alors la probabilité de gagner de chacun des protagonistes.
V
Les suites
Intérêt des algorithmes de sommation comme premiers algorithmes :
– Algorithme court, faisant intervenir des boucles.
– modification d’une ou deux instructions d’un exo à l’autre (modif du terme à ajouter, modif du début de boucle
notamment) qui oblige les élèves à « s’approprier » l’algorithme.
– Les suites arithmético-géométriques (exemple plus loin tiré d’annales du bacc) : on peut conjecturer la limite avant
de faire des calculs plus théoriques.
V.1
Somme de termes d’indices consécutifs d’une suite arithmétique
Exercice 13.
Soit u la suite définie pour tout entier n par un = 5 × n + 8.
On note pour m ∈ N : Sm = u0 + u1 + · · · + um .
1. Calculer « à la main » S3 .
2. Écrire la partie « traitement » du programme :
Entrée
un entier naturel m
Traitement
Sortie
la valeur de Sm
3. Traduire ce programme pour votre calculatrice.
4. Que donne le programme de votre calculatrice pour S100 ?
5. Quelle est la nature de la suite u ?
6. (a) Écrire la partie « traitement » du programme :
Entrée
La raison r d’une suite arithmétique u
et son premier terme u0
Traitement
Sortie
affichage des valeurs de ui + u100−i pour 0 6 i 6 100
(b) Traduire ce programme pour votre calculatrice.
(c) Que constate-t-on ? Justifier ces résultats.
7. En quoi la présentation ci-dessous permet-elle un calcul « à la main » de la somme S100 ?
⊕
S100
S100
2S100
= u0
= u100
=
+ u1
+ u99
+ u2
+ u98
+ . . . + u98
+ . . . + u2
+ u99
+ u1
+ u100
+ u0
8. Dans une feuille de tableur, on veut afficher :
Colonne A
0
1
2
3
..
.
Colonne B
u0
u1
u2
u3
..
.
Colonne C
S0
S1
S2
S3
..
.
Construire une telle feuille. Calculer une fois de plus S100 .
Académie de Lyon - Janvier 2007 - Nouveaux programmes de TL
page 10/28
Algorithmique
Exercice 14 (Somme des impairs et racine carrée).
1. Quelle différence y a-t-il dans les sorties des deux petits programmes suivants :
Entrée
Traitement et sortie
Programme 1
un entier n > 0
Pour j prenant successivement les valeurs entières de 1 à n :
afficher 2j − 1
Entrée
Traitement et sortie
Programme 2
un entier n > 0
Pour j prenant successivement les valeurs entières de 0 à n − 1 :
afficher 2j + 1
2. Calculer la somme Sn des n premiers entiers naturels impairs.
3. On considère l’algorithme suivant :
Entrée
un entier M > 0
Traitement Affecter la valeur 1 à C
Affecter la valeur 1 à I
affecter la valeur 1 à S
Tant que S 6 M
affecter la valeur I + 2 à I
affecter la valeur S + I à S
Affecter la valeur C + 1 à C
Sortie
Afficher la valeur de C − 1
(a) Quelle est la sortie avec l’entrée M = 25 ?
(b) Quelle est la sortie avec l’entrée M = 82 ?
(c) Quel est le lien entre la sortie de façon générale ?
4. Quelles sont les sorties de l’algorithme suivant :
Entrée
un entier M > 0
Traitement Affecter la valeur 1 à I
affecter la valeur 1 à S
Tant que S 6 M
affecter la valeur I + 2 à I
affecter la valeur S + I à S
I −1
Sortie
Afficher la valeur de
2
V.2
Somme de termes d’indices consécutifs d’une suite géométrique
Exercice 15.
Soit u la suite définie pour tout entier n par un = 2n . On cherche une méthode pour déterminer la valeur des sommes
n
X
Sn =
ui .
i=0
1. Ecrire un programme pour votre calculatrice qui calcule Sn . Donner la valeur affichée par la machine pour S15 .
2. Quelle est la nature de la suite u ?
3. (a) Écrire la partie « traitement » du programme :
Entrée
La raison q d’une suite géométrique u
et son premier terme u0
Traitement
Sortie
affichage des valeurs de ui + u15−i pour 0 6 i 6 15
(b) Traduire ce programme pour votre calculatrice.
(c) Que constate-t-on ?
Académie de Lyon - Janvier 2007 - Nouveaux programmes de TL
page 11/28
Algorithmique
(d) Expliquer pourquoi la méthode utilisée pour les sommes de termes d’indices consécutifs d’une suite arithmétique (c’est à dire : effectuer la somme ci-dessous terme à terme) ne fonctionne pas ici.
⊕
S15
S15
2S15
= u0
= u15
=
+ u1
+ u14
+ u2
+ u13
+ . . . + u13
+ . . . + u2
+ u14
+ u1
+ u15
+ u0
4. En quoi la présentation ci-dessous permet-elle un calcul « à la main » de la somme S15 ?
S15
2 × S15
−S15
= u0
= 2u0
=
+ u1
+ 2u1
+ u2
+ 2u2
+ . . . + u13
+ . . . + 2u13
+ u14
+ 2u14
+ u15
+ 2u15
Exercice 16 (d’après bacc, Polynésie, juin 2005).
Gaston hésite entre deux contrats d’embauche pour lesquels le salaire du premier mois est de 1600 euros.
Contrat no 1 : chaque mois à partir du deuxième mois le salaire mensuel augmente de 10 euros.
Contrat no 2 : chaque mois à partir du deuxième mois le salaire augmente de 0, 6 % par rapport au mois précédent.
Écrire un programme pour votre calculatrice qui détermine à partir de quel mois le salaire mensuel correspondant au
contrat no 2 devient supérieur à celui du contrat no 1.
Répondre à la question précédente à l’aide d’une feuille de calcul.
V.3
Limite d’une suite géométrique : quelques annales du bacc
Exercice 17 (Conjecture sur une limite, suite étudiée dans bacc, Antilles, septembre 2002).
On considère la suite (un ) définie par
u0 = 8 et pour tout entier naturel n : un+1 =
1
un − 5
2
1. Écrire la partie traitement de l’algorithme suivant :
Entrée
un entier naturel n
Traitement
Sortie
la valeur de un
2. Traduire ensuite l’algorithme pour votre calculatrice.
3. A l’aide de l’algorithme écrit à la question précédente, calculer un pour de grandes valeurs de n. Quelle conjecture
pouvez-vous faire sur lim un ?
n→+∞
Exercice 18 (d’après bacc novembre 2005, Nouvelle-Calédonie).
Un carré d’aire 1 m2 est divisé en 9 carrés égaux comme indiqué sur la figure ci-dessous :
On colorie le carré central (1er coloriage) :
Académie de Lyon - Janvier 2007 - Nouveaux programmes de TL
page 12/28
Algorithmique
Les huit carrés non coloriés sont à leur tour divisés en 9 carrés égaux et on colorie les huit carrés centraux obtenus (2e
coloriage) :
On poursuit avec la même méthode la division et le coloriage du carré.
Pour tout entier n supérieur ou égal à 1, on désigne par An l’aire en m2 de la surface totale coloriée après n coloriages.
1
On a ainsi : A1 = .
9
La surface grisée sur le figure ci-dessus a donc pour aire A2 .
On remarquera que chaque étape du coloriage consiste à colorier un neuvième de la surface non coloriée
jusque là.
1
1. Justifier que A2 = A1 + (1 − A1 ) puis calculer la valeur numérique exacte de A2 .
9
2. Expliquer pourquoi, pour tout entier n supérieur ou égal à 1,
8
1
An+1 = An + .
9
9
3. (a) Écrire la partie traitement de l’algorithme suivant :
Entrée
un entier naturel n
Traitement
Sortie
An
(b) Traduire ensuite l’algorithme pour votre calculatrice.
(c) A l’aide de ce programme, faire une conjecture sur la limite de An quand n tend vers l’infini.
4. Peut-on dans un carré de 1m2 enlever une infinité de points de telle façon que la surface restante soit encore de
1m2 ?
Exercice 19 (d’après bacc juin 2006, Polynésie).
Un globe-trotter a parié de parcourir 5 000 km à pied.
Il peut, frais et dispos, parcourir 50 km en une journée, mais chaque jour la fatigue s’accumule et sa performance
diminue de 1 % tous les jours.
On notera dn la distance parcourue durant le n-ième jour.
1. On note Ln le nombre total de kilomètres parcourus au bout de n jours (Ln = d1 + d2 + · · · + dn ).
(a) Écrire la partie traitement de l’algorithme suivant :
Entrée
un entier naturel n
Traitement
Sortie
la valeur de Ln
(b) Traduire ensuite l’algorithme pour votre calculatrice.
(c) A l’aide de l’algorithme, calculer Ln pour des valeurs de n de plus en plus grandes. Quelle conjecture pouvez
vous faire sur lim Ln ?
n→+∞
2. (a) Écrire la partie traitement de l’algorithme suivant :
Entrée
un nombre réel D (0 < D < 5000)
Traitement
Sortie
Le plus petit entier N tel que LN > D
(b) Traduire ensuite l’algorithme pour votre calculatrice.
(c) Donner, à l’aide de cet algorithme, le nombre minimal de jours N qui seraient nécessaires à notre globetrotter pour parcourir 4 999 km.
3. Calculer Ln en fonction de n.
Académie de Lyon - Janvier 2007 - Nouveaux programmes de TL
page 13/28
Algorithmique
4. A l’aide de la formule trouvée à la question 3, vérifier la valeur trouvée par l’algorithme de la question 2 pour le
nombre minimal N de jours nécessaires pour parcourir 4 999 km.
5. Déterminer la limite de Ln lorsque n tend vers +∞.
Le globe-trotter peut-il parcourir les 5000 km visés ?
6. Pourquoi la calculatrice affiche-t-elle 5000 pour le calcul de Ln avec des valeurs de n « grandes » ?
7. Répondre au questions précédentes en utilisant une feuille de calcul.
VI
Récurrence
Voir aussi l’exercice 47.
Exercice 20 (une intro possible de la récurrence ?).
1
On définit la suite u pour tout entier n ∈ N par u(n) = n (n + 1) (2n + 1).
6
On considère l’algorithme suivant :
Traitement donner à S la valeur initiale 0
Pour i prenant successivement les valeurs entières de 1 à 1000 :
affecter à S la valeur S + i2
Sortie
Afficher la valeur de S
1. Vérifier qu’après l’exécution des instructions de la boucle pour la valeur 1 de l’indice de boucle i, S contient la
valeur u(1).
2. Vérifier qu’après l’exécution des instructions de la boucle pour la valeur 2 de l’indice de boucle i, S contient la
valeur u(2).
3. On suppose qu’après l’exécution de la boucle pour la valeur j de i, S contient la valeur u(j). Vérifier qu’une
exécution de plus de la boucle donnera la valeur u(j + 1) à S.
4. En déduire la valeur de la somme 12 + 22 + 32 + · · · + 10002 .
5. Écrire le programme pour votre calculatrice et vérifier que la sortie est bien celle trouvée précédemment.
Exercice 21.
Dans cette version, le programme sert seulement à laisser le temps aux élèves de comprendre la formule à démontrer.
1. On considère l’algorithme suivant :
Entrée
m un entier naturel
Traitement donner à S la valeur initiale 0
Pour i prenant successivement les valeurs entières de 1 à m :
affecter à S la valeur S + i2
Sortie
Afficher la valeur de S
(a) Quelle est la sortie avec m = 3 pour entrée ?
(b) Quelle est la sortie avec m = 5 pour entrée ?
(c) De façon générale, quel lien y a t-il entre la sortie S et l’entrée m ?
(d) Écrire l’algorithme pour votre calculatrice.
2. Comparer, pour une même entrée, la sortie donnée par l’algorithme précédent avec la sortie obtenue par le
programme suivant :
Entrée
m un entier naturel
1
Traitement affecter à T la valeur m (m + 1) (2m + 1)
6
Sortie
Afficher la valeur de T
3. Quelle conjecture peut-on faire ? Preuve.
Académie de Lyon - Janvier 2007 - Nouveaux programmes de TL
page 14/28
Algorithmique
VII
VII.1
La division euclidienne
Calcul d’un quotient de division
Exercice 22 (algorithme de calcul de la partie entière d’un quotient).
a
Soient a un réel positif et b un réel strictement positif. Pour calculer la partie entière du quotient , on procède ainsi :
b
on aligne des règles de longueur b le long d’un segment de longueur a tant que la longueur de l’alignement de règles
ne “dépasse” pas le segment, on compte les règles au fur et à mesure qu’on les pose.
a
Le nombre final de règles obtenu est la partie entière de .
b
Écrire un algorithme correspondant à ce descriptif (partie traitement dans le tableau ci-dessous)
Entrée
a un réel positif, b un réel strictement positif
Traitement
a
Sortie
Afficher la valeur de E
b
Constuire une feuille de calcul suivant la modèle suivant :
Exercice 23.
a
Compléter l’algorithme suivant afin que la sortie soit la partie entière de :
b
Entrée
a ∈ [0; +∞[ et b ∈ ]0; +∞[
Traitement affecter la valeur 0 à q
Tant que q × b 6 a
affecter la valeur q + 1 à q
Sortie
Exercice 24 (de l’importance de la condition d’arrêt).
On considère les algorithmes suivants :
Entrée
Initialisation
Traitement
Sortie
Algorithme 1
a un réel positif, b un réel strictement positif
donner à q la valeur initiale 0
donner à m la valeur initiale b
Tant que m 6 a
affecter à q la valeur q + 1
affecter à m la valeur m + b
Afficher la valeur de q
Entrée
Initialisation
Traitement
Sortie
Algorithme 2
a un réel positif, b un réel strictement positif
donner à q la valeur initiale 0
donner à m la valeur initiale b
Tant que m < a
affecter à q la valeur q + 1
affecter à m la valeur m + b
Afficher la valeur de q
Dans quels cas les sorties de ces deux algorithmes sont-elles différentes ?
VII.2
Calcul du reste
Exercice 25 (algorithmes de calcul du reste).
1. A l’aide de l’algorithme écrit à l’exercice 22, écrire la partie traitement du programme suivant :
Entrée
Traitement
Sortie
un réel positif a et un réel strictement positif b
la longueur r non “couverte” par l’alignement de règles
lorsqu’on a placé le maximum de règles de longueur b
le long d’un segment de longueur a
Académie de Lyon - Janvier 2007 - Nouveaux programmes de TL
page 15/28
Algorithmique
2. Voici une autre façon de procèder pour déterminer r :
∗ On dispose d’un segment de longueur a.
∗ tant que le segment est de longueur supérieure ou égale à b, on coupe une longueur b de la partie de segment
restante.
∗ la longueur finale est r.
Écrire l’algorithme calculant r de cette façon.
VII.3
Algorithme de division euclidienne
Exercice 26.
1. A partir de chacun des algorithmes de l’exercice 25, proposer un algorithme de division euclidienne :
Entrée
Traitement
Sortie
un entier naturel a et un entier naturel non nul b
le quotient et le reste de la division euclidienne de a par b
2. Proposer également un programme pour votre calculatrice qui utilise le fait que la fonction partie entière est
déjà programmé dans votre calculatrice.
Exercice 27.
Dans l’algorithme ci-dessous qui donne en sortie le quotient et le reste de la division euclidienne de a par b , remplacer
les pointillés par une expression utilisant la variable m :
Entrée
a ∈ N , b ∈ N∗
Traitement donner à q la valeur initiale 0
donner à m la valeur initiale b
Tant que m 6 a
affecter à q la valeur q + 1
affecter à m la valeur m + b
Fin de la boucle tant que
affecter à r la valeur . . .
Sortie
Afficher la valeur de q et la valeur de r
Exercice 28.
On considère l’algorithme suivant :
Entrée
a un entier naturel
Traitement donner à q la valeur initiale 0
donner à m la valeur initiale 7
Tant que m 6 a
affecter à q la valeur q + 1
affecter à m la valeur m + 7
Fin de la boucle tant que
Sortie
Si a-7q=q alors afficher OUI
sinon afficher NON
1. Quelle est la sortie de cet algorithme avec l’entrée a = 24 ?
2. Quelle est la sortie de cet algorithme avec l’entrée a = 25 ?
3. De façon générale, quelles sont les entrées qui donneront la sortie OUI et les entrées qui donneront la sortie
NON ?
Exercice 29.
Déterminer les entiers naturels compris entre 400 et 500 dont le reste est 5 dans la division euclidienne par 23.
1. En laissant faire la recherche par la calculatrice (algorithme).
2. Sans machine.
Académie de Lyon - Janvier 2007 - Nouveaux programmes de TL
page 16/28
Algorithmique
Exercice 30.
1. Écrire la partie traitement de l’agorithme suivant :
Entrée
Traitement
Sortie
un entier naturel n > 1
les couples (u; v) d’entiers naturels tels que uv = n et u 6 v
(a) Donner la sortie pour l’entrée n = 63.
(b) Donner la sortie pour l’entrée n = 304.
2. (a) Dans la division euclidienne de deux entiers naturels, le dividende est 78 et le reste est 15. Donner les valeurs
possibles du diviseur et du quotient.
(b) Dans la division euclidienne de deux entiers naturels, le dividende est 319 et le reste est 15. Donner les
valeurs possibles du diviseur et du quotient.
(c) Écrire la partie traitement de l’agorithme suivant :
Entrée
un entier naturel a > 15
Traitement
Sortie
les couples (diviseur b, quotient q)
de la division de a par b, le reste devant être égal à 15
Exercice 31 (cf fichier exemples d’exercices IG).
1. On considère l’algorithme suivant :
Entrée
Traitement
Sortie
Algorithme 1
n un entier naturel
donner à u la valeur initiale n
Tant que u > 11
affecter à u la valeur u − 11
Fin de la boucle « Tant que »
Afficher la valeur de u
(a) Quelle est la sortie lorsque l’entrée est n = 35 ?
(b) Quelle est la sortie lorsque l’entrée est n = 44 ?
(c) De façon générale, décrire l’effet de cet algorithme (c’est à dire le lien entre la sortie et l’entrée).
(d) On donne un entier n en entrée de l’algorithme 1, la sortie obtenue est u. On donne alors l’entier n − u en
entrée de l’algorithme 1. Quelle sera la sortie ?
(e) Écrire cet algorithme pour votre calculatrice.
2. On considère l’algorithme suivant :
Algorithme 2
Entrée
a un chiffre, b un chiffre
Traitement affecter à u la valeur a + 10b
affecter à v la valeur b + 10a
affecter à m la valeur v + 100u
Sortie
Afficher la valeur de m
(a) Quelle est la sortie lorsque l’entrée est a = 1, b = 2 ?
(b) Quelle est la sortie lorsque l’entrée est a = 2, b = 1 ?
(c) m étant la sortie de l’algorithme 2 avec les chiffres a et b en entrée, donner les chiffres de l’écriture décimale
de m (en fonction de a et b).
(d) A partir de deux chiffres a et b, l’algorithme 2 donne un nombre m. On donne alors en entrée à l’algorithme
1 ce nombre m. Expliquer pourquoi l’exécution de cet algorithme 1 aura pour sortie 0.
(e) Écrire l’algorithme 2 pour votre calculatrice.
Académie de Lyon - Janvier 2007 - Nouveaux programmes de TL
page 17/28
Algorithmique
Exercice 32.
On considère l’algorithme suivant :
Entrée
Un entier naturel non nul n
Traitement
Affecter la valeur 0 à c
Pour i prenant successivement les valeurs entières de 1 à n :
Si le reste de la division de n par i est 0
alors affecter c + 1 à c
Sortie
afficher la valeur de c
1. Quelle est la sortie de l’algorithme avec l’entrée n = 6 ?
2. De façon générale, quel est le lien entre l’entrée et la sortie ?
VIII
Algorithme de multiplication
Exercice 33.
1. Soit a un entier naturel impair. On note q le quotient de la division de a par 2. Exprimer q en fonction de a,
avec la fonction E puis sans utiliser cette fonction.
2. On considère l’algorithme suivant :
Entrée
un entier naturel x et un entier naturel y
Traitement affecter x à a et y à b
affecter la valeur 0 à m
Tant que a > 0 :
Si a est impair affecter la valeur m + b à m
Affecter la valeur 2b à b
a
Affecter la valeur E
àa
2
Sortie
Afficher la valeur de m
(a) Quelle est la sortie de cet algorithme avec les entrées x = 7, y = 8 ?
(b) Compléter le tableau de déroulement de l’algorithme ci-dessous avec les entrées x = 5 et y = 3 :
Étapes a b m ab + m
1
5 3 0
..
.
(c) En entrée de boucle, ab + m est égal au produit xy (car à cette étape, a = x, b = y, m = 0). Expliquer
pourquoi après une exécution des instructions de la boucle, ab + m est encore égal à xy :
i. lorsque a est pair ;
ii. lorsque a est impair.
(d) Quel semble être le lien entre l’entrée et la sortie de façon générale ? Justifier.
(e) Écrire le programme pour votre calculatrice.
IX
IX.1
Les congruences
Congruence de deux entiers relatifs selon un module
Exercice 34.
Écrire la partie traitement de l’algorithme ci-dessous :
Entrée
un entier relatif a, un entier relatif b, un entier naturel non nul m
Traitement
Sortie
OUI lorsque a ≡ b mod m, NON dans les autres cas.
Académie de Lyon - Janvier 2007 - Nouveaux programmes de TL
page 18/28
Algorithmique
IX.2
Congruences
Exercice 35.
1. On considère l’algorithme suivant :
Entrée
Traitement
Sortie
un entier n
affecter à u la valeur n
Tant que u > 2 :
affecter à u la valeur u − 5
Fin du tant que
la sortie s est la dernière valeur de u
2. ou la feuille de calcul suivante :
3.
(a) Quelle est la sortie avec l’entrée n = 13 ?
(b) Quelle est la sortie avec l’entrée n = 10 ?
(c) Expliquer pourquoi les sorties sont toujours des éléments de l’ensemble S = {−2; −1; 0; 1; 2} et donner le
lien entre l’entrée et la sortie.
(d) Écrire le programme pour votre calculatrice.
4. L’entier 1 + 22007 + 32007 + 42007 est-il multiple de 5 ?
Exercice 36.
1. Montrer que tout entier naturel est congru modulo 7 à l’un des entiers de l’ensemble S = {−3; −2; −1; 0; 1; 2; 3}.
2. Écrire la partie traitement du programme suivant :
Entrée
un entier n
Traitement
Sortie
L’élément de l’ensemble S qui est
congru modulo 7 à l’entrée
IX.3
Des critères de divisibilité en base 10
Exercice 37.
1. Montrer qu’un entier naturel n est congru modulo 10 à son chiffre des unités.
2. Écrire la partie traitement du programme suivant :
Entrée
un entier naturel n
Traitement
Sortie
le chiffre des unités de n
3. Soit m ∈ N∗ . On suppose que pour tout entier naturel n, n est congru modulo m à son chiffre des unités. m
est-il nécessairement égal à 10 ?
Exercice 38.
1. On considère l’algorithme suivant :
Académie de Lyon - Janvier 2007 - Nouveaux programmes de TL
page 19/28
Algorithmique
Algorithme 1
un entier naturel n (écrit en base 10)
Calculer la somme S des chiffres de l’entier n
Calculer le reste r de la division de S par 3
Sortie
la valeur de r
On considère également l’algorithme suivant :
Algorithme 2
Entrée
un entier naturel n (écrit en base 10)
Traitement Affecter à u la valeur de n
Tant que u > 3
affecter à u la valeur u − 3
Fin de la boucle « tant que »
Sortie
la valeur de u
Entrée
Traitement
(a) Quelle est la sortie de l’algorithme 1 avec l’entrée n = 54 ?
(b) Quelle est la sortie de l’algorithme 2 avec l’entrée n = 54 ?
(c) Les deux algorithmes donneront-ils toujours la même sortie pour un même entier n en entrée ? Justifier.
2. Écrire la partie traitement du programme suivant :
Entrée
un entier naturel n
Traitement
Sortie
la somme des chiffres de n
Exercice 39.
Soit n un entier naturel. Soit a le nombre constitué des deux derniers chiffres de n (chiffre des dizaines et des unités).
1. Avec n = 1287, que vaut a ? Vérifier que n ≡ a mod 100.
2. Montrer que n est congru à a modulo 100 dans le cas général.
3. En déduire la partie traitement de l’algorithme suivant :
Entrée
n un entier naturel
Traitement
Sortie
Un entier de deux chiffres, ces deux chiffres étant les deux derniers chiffres de n
Exercice 40.
1. On considère l’algorithme suivant :
Algorithme 1
N un entier naturel
donner à R la valeur N
Tant que R > 4 :
Affecter à R la valeur R − 4
Sortie
afficher la valeur de R
Quel est le lien entre l’entrée et la sortie de cet algorithme ?
Entrée
Traitement
2. On considère l’algorithme suivant :
Algorithme 2
Entrée
N un entier naturel
Traitement donner à R la valeur N
Tant que R > 100 :
Affecter à R la valeur R − 100
Tant que R > 4 :
Affecter à R la valeur R − 4
Sortie
afficher la valeur de R
(a) Quelle est la sortie avec N = 584 pour entrée ?
(b) Quelle est la sortie avec N = 129 pour entrée ?
Académie de Lyon - Janvier 2007 - Nouveaux programmes de TL
page 20/28
Algorithmique
(c) Expliquer pourquoi la sortie de l’algorithme est égal au reste de la division de n par 4.
3. Avec l’entrée n = 405 :
(a) quel est le nombre de soustractions effectuées dans l’algorithme 1 pour obtenir le reste dans la division par
4?
(b) quel est le nombre de soustractions effectuées dans l’algorithme 2 pour obtenir le reste dans la division par
4?
4. (a) Si l’on admet que chaque soustraction demande le même temps de calcul à une machine, lequel des deux
algorithmes ci-dessus vaut-il mieux utiliser pour calculer les restes dans la division par 4 ?
(b) Quelles sont les entrées qui demanderont le même nombre de soustractions avec les deux algorithmes ?
(c) Ajouter des instructions aux programmes 1 et 2 qui donneront en fin de programme le nombre de soustractions qui ont été nécessaires pour le calcul du reste dans la division par 4.
5. Écrire l’algorithme 2 pour votre calculatrice.
6. Traiter la situation précédente à l’aide d’une feuille de calcul.
7. L’algorithme suivant détermine le reste de la division de N par 20 :
Algorithme 3
Entrée
N un entier naturel
Traitement donner à R la valeur N
Tant que R > 20 :
Affecter à R la valeur R − 20
Sortie
afficher la valeur de R
Peut-on accélérer cet algorithme avec un procédé analogue à ce qui a été fait pour le calcul du reste dans la
division par 4 ? Justifier.
8. Donner des entiers m tels que tout entier n ait même reste dans la division par m que le nombre constitué des
deux derniers chiffres de n.
Exercice 41.
1. On considère l’algorithme suivant :
Entrée
Traitement
Sortie
Algorithme 1
n un entier naturel
affecter à u la valeur n
Tant que u > 10 :
Affecter à u la valeur u − 10
Afficher la valeur de u
(a) Quelle est la sortie avec N = 527 pour entrée ?
(b) Quelle est la sortie avec N = 29 pour entrée ?
(c) Décrire de façon générale le lien entre la sortie et l’entrée.
(d) Écrire le programme pour votre calculatrice.
2. On considère l’algorithme suivant :
Sous programme 1 (algorithme 1)
Entrée
n un entier naturel
Traitement affecter à u la valeur n
Tant que u > 10 :
Affecter à u la valeur u − 10
Entrée
Traitement
Sortie
Algorithme 2
n un entier naturel
affecter à u la valeur de sortie du sous-programme 1
n−u
affecter à n la valeur
10
Afficher la valeur de n
Académie de Lyon - Janvier 2007 - Nouveaux programmes de TL
page 21/28
Algorithmique
(a) Quelle est la sortie avec N = 527 pour entrée ?
(b) Quelle est la sortie avec N = 29 pour entrée ?
(c) Décrire de façon générale le lien entre la sortie et l’entrée.
(d) Écrire le programme pour votre calculatrice.
3. On considère l’ algorithme suivant :
Sous-programme 2 (algorithme 2)
Entrée
n un entier naturel
Traitement affecter à u la valeur de sortie du sous-programme 1
n−u
affecter à n la valeur
10
Algorithme 3
Entrée
n un entier naturel
Traitement affecter à S la valeur 0
affecter à Z la valeur 1
Tant que n 6= 0
affecter à u la valeur de sortie du sous-programme 1
affecter à n la valeur de sortie du sous-programme 2
affecter à S la valeur S + Z × u
affecter à Z la valeur −1 × Z
Sortie
Afficher la valeur de S
(a) Quelle est la sortie avec N = 584 pour entrée ?
(b) Quelle est la sortie avec N = 5129 pour entrée ?
(c) Décrire de façon générale le lien entre la sortie et l’entrée.
(d) Écrire le programme pour votre calculatrice.
4. On considère l’ algorithme ci-dessous :
Sous-programme 3 (algorithme 3)
Entrée
n un entier naturel
Traitement affecter à S la valeur 0
affecter à Z la valeur 1
Tant que n 6= 0
affecter à u la valeur de sortie du sous-programme 1
affecter à n la valeur de sortie du sous-programme 2
affecter à S la valeur S + Z × u
affecter à Z la valeur −1 × Z
Entrée
Traitement
Sortie
Algorithme 4
n un entier naturel
affecter à S la valeur de sortie du sous-programme 3
affecter à r la valeur de S
Tant que r > 11
affecter à r la valeur r − 11
afficher la valeur de r
(a) Quelle est la sortie avec l’entrée n = 23 ?
(b) Quelle est la sortie avec l’entrée n = 22 ?
(c) Quelle est la sortie avec l’entrée n = 40 ?
5. Soit n = mcdu un entier de 4 chiffres (en base 10). Démontrer qu’avec n pour entrée la sortie de l’algorithme 4
est congru modulo 11 à n.
6. Comment modifier le programme 4 pour que la sortie de cet algorithme soit le reste de la division de l’entrée n
par 11 ?
Académie de Lyon - Janvier 2007 - Nouveaux programmes de TL
page 22/28
Algorithmique
IX.4
Clefs de contrôle
Exercice 42 (code barre).
Pour identifier un produit de consommation, on utilise le « code-barre ». Un code-barre est constitué de 13 chiffres :
∗ le premier chiffre (à gauche) indique le pays de codification (3 pour la France, 4 pour l’Allemagne, 0 pour les
États-Unis . . .),
∗ les cinq chiffres suivants identifient le fabricant,
∗ les six chiffres suivants donnent une référence pour le produit (code interne fournisseur),
∗ le dernier chiffre est la clef de contrôle.
Calcul de la clef de contrôle : Notons C1 C2 C3 C4 C5 C6 C7 C8 C9 C10 C11 C12 C un code-barre. C est la clef de contrôle. C
est calculé de façon à ce que l’on ait :
3 (C2 + C4 + C6 + C8 + C10 + C12 ) + (C1 + C3 + C5 + C7 + C9 + C11 ) + C ≡ 0
mod 10
1. On code un produit par C1 C2 C3 C4 C5 C6 C7 C8 C9 C10 C11 C12 C = 3 06832004010C. Déterminer la clef de contrôle
C.
2. Dans le code-barre suivant : 49?1850108962, quel est le chiffre manquant ?
3. Dans le code-barre suivant : 303526139?353, quel est le chiffre manquant ?
4. On considère l’algorithme suivant :
Entrée
un entier naturel n
Traitement affecter la valeur 0 à P
affecter la valeur de n à m
Tant que m 6= 0 :
affecter à u le chiffre des unités de m
m−u
remplacer m par
10
affecter à P la valeur P + u
affecter à u le chiffre des unités de m
m−u
remplacer m par
10
Sortie
afficher la valeur de P
(a) Quelle est la valeur de sortie avec l’entrée n = 1234 ?
(b) De façon générale, quel est le lien entre l’entrée et la sortie ?
(c) Écrire le programme pour votre calculatrice.
5. Sur le modèle précédent, écrire un algorithme (programme C) qui calcule la somme des chiffres de n qui sont
coefficients de 10i avec i impair.
6. Écrire un algorithme qui vérifie la validité d’un code-barre donné en entrée (c’est à dire qui vérifie que l’on a :
3 (C2 + C4 + C6 + C8 + C10 + C12 ) + (C1 + C3 + C5 + C7 + C9 + C11 ) + C ≡ 0 mod 10 ).
7. Écrire un programme qui à partir des douze chiffres d’identification calcule la clef de contrôle.
8. Construire une feuille de calcul selon le modèle suivant :
Académie de Lyon - Janvier 2007 - Nouveaux programmes de TL
page 23/28
Algorithmique
Exercice 43 (code isbn).
Tous les livres édités sont identifiés par un code isbn (international standard book number). Un code isbn est constitué
de dix chiffres. Les 9 premiers chiffres donnent des indications sur la langue, l’éditeur, le numéro d’ordre de l’ouvrage
chez l’éditeur. Le dixième chiffre est une clef de contrôle, ce dixième chiffre peut être l’un des 11 chiffres 0 ; 1 ; 2 ; 3 ;
4 ; 5 ; 6 ; 7 ; 8 ; 9 ; X.
Algorithme de calcul de la clef de contrôle :
Entrée
le numéro d’identification sans la clef (9 chiffres)
N = C1 C2 C3 C4 C5 C6 C7 C8 C9
(ce numéro est traité ici comme un nombre)
Traitement
affecter la valeur 0 à S
affecter la valeur 2 à C
Pour j prenant les valeurs de 1 à 9 :
affecter à U le chiffre des unités de N
affecter S + C × U à S
affecter la valeur C + 1 à C
affecter la valeur (N − U )/10
N
à
S
Affecter à r la valeur S − 11 × E
11
Sortie : la clef Si r = 0 afficher 0, si r = 1 afficher X
si 1 < r 6 10 afficher 11 − r.
1. Calculer la clef de contrôle du numéro d’identification : 2 86637 434.
2. Calculer la clef de contrôle du numéro d’identification : 2 10 002583.
X
Écriture décimale d’un réel
Exercice 44.
√
1. (a) On cherche à déterminer les premiers chiffres de l’écriture décimale du nombre réel 3.
i. Commencer à compléter le tableau suivant
et arrêter de le remplir dès que les calculs effectués per√
mettent de donner la partie entière de 3 :
i
i2
0
1
2
3
4
5
6
7
8
9
10
11
...
...
ii. Commencer à compléter le tableau suivant et
√ arrêter de le remplir dès que les calculs effectués permettent de donner le chiffre des dixièmes de 3 :
i
0
1+
i
10
1
2
3
4
5
6
7
8
9
2
iii. Commencer à compléter le tableau suivant et√arrêter de le remplir dès que les calculs effectués permettent de donner le chiffre des centièmes de 3 :
i
0
1,7 +
i
102
1
2
3
4
5
6
7
8
9
2
(b) Sur le modèle de la question précédente, vous chercherez à écrire la partie traitement de l’algorithme cidessous :
Algorithme 1
Entrée
Un réel A > 0 et un entier N > 0
Traitement
√
Sortie
La partie entière et les N premiers chiffres après la virgule de l’écriture décimale de A
Académie de Lyon - Janvier 2007 - Nouveaux programmes de TL
page 24/28
Algorithmique
(c) Écrire l’algorithme sur votre calculatrice.
2. (a) Soit a ∈ N∗ . On définit une suite u par

a

u0 =
2 un+1 = 1 un + a

2
un
Compléter la partie traitement du programme suivant :
Algorithme 2
Entrée
un entier a > 0, un entier n > 0
Traitement
Sortie
Le terme un de la suite ci-dessus
(b) Tester le programme avec quelques entrées. Faire une conjecture sur la nature de la sortie de l’algorithme.
Exercice 45.
On reprend les deux algorithmes de l’exercice précédent :
Ti
Casio
Prompt A
“A” : ? → A
Prompt N
“N” : ? → N
0→R
0→R
For(J,0,N )
For 0 → J To N
0→I
0→I
2
2
While R + I/10J 6 A While R + I ÷ 10J 6 A
I +1→I
I +1→I
End
WhileEnd
J
R + (I − 1)/10 → R
R + (I − 1) ÷ 10J → R
End
Next
Sortie
Disp R
R
Ti
Casio
Entrée
un entier a > 0, un entier n > 0
a
Prompt A,N
“A” : ? → A
Traitement Affecter à u la valeur
“N” : ? → N
2
A/2 → U
A÷2→U
Pour i prenant les valeurs entières de 1 à n :
1
a
For(I,1,N)
For 1 → I To N
affecter à u la valeur
u+
1/2 ∗ (U + A/U ) → U 1/2 × (U + A ÷ U ) → U
2
u
Fin de la boucle « pour »
End
Next
Sortie
afficher la valeur de u
Disp U
U
√
On admet que les deux algorithmes permettent d’avoir les premières décimales du nombre a (en calculant pour des
valeurs « suffisamment grandes » de n ).
On cherche alors à comparer l’efficacité des deux algorithmes. Pour cela, on fait l’hypothèse (simplificatrice) qu’une
addition, soustraction, division, comparaison, calcul d’exponentielle sont des « opérations élémentaires » demandant
le même temps de calcul à la machine.
Entrée
Traitement
un réel a > 0 et un entier N > 0
Affecter la valeur 0 à r
Pour j prenant les valeurs entières de 0 à N
Affecter la valeur 0 à i
2
i
6a:
Tant que r + j
10
i+1→i
Fin du « tant que »
i−1
àr
Affecter la valeur r +
10j
Fin de la boucle « Pour »
Afficher la valeur de r
1. Dans la boucle
2
i
Tant que r + j
6A:
10
i+1→i
Fin du « tant que »
combien compte-on d’ « opérations élémentaires » à chaque “passage” dans la boucle ?
2. Même question avec :
Académie de Lyon - Janvier 2007 - Nouveaux programmes de TL
page 25/28
Algorithmique
Pour j prenant les valeurs entières de 0 à N
Affecter la valeur 0 à i
2
i
Tant que r + j
6A:
10
i+1→i
Fin du « tant que »
i−1
àr
Affecter la valeur r +
10j
Fin de la boucle « Pour »
3. Même question avec :
Pour i prenant les valeurs entières de 1 à n :
1
a
affecter à u la valeur
u+
2
u
Fin de la boucle « pour »
√
4. On aimerait avoir 8 décimales du nombre 7.
Le simple décompte précédent d’opérations permet-il de savoir lequel des deux algorithmes donnera le plus
rapidement ces 8 décimales ?
√
5. Modifier les deux algorithmes pour qu’ils stoppent dès qu’ils ont obtenu pour a autant de décimales que la
calculatrice en connaît et qu’ils affichent alors le nombre d’opérations élémentaires effectuées.
Exercice 46 (écriture décimale d’un rationnel).
[sur ce sujet, lire le document d’accompagnement]
39 169
1. Écrire le nombre réel
comme une somme de produit de la forme ai × 10i où ai est un chiffre et i un entier
2 000
relatif.
2. On considère l’algorithme suivant :
Entrées
Un entier A > 0, un entier B > 0, un entier N > 0
Traitement Afficher le quotient de la division euclidienne de A par B
Affecter à R la valeur du reste de la division de A par B
Répéter N fois :
Affecter à A la valeur de 10 × R
Afficher le quotient de la division euclidienne de A par B
Affecter à R la valeur du reste de la division de A par B
Sortie
faite au fur et à mesure du traitement
(a) Quels sont les chiffres en sortie avec les entrées A = 2, B = 5, N = 4 ?
(b) Quels sont les chiffres en sortie avec les entrées A = 9, B = 7, N = 7 ?
(c) Quels liens peut-on conjecturer entre les entrées et les sorties ?
(d) Écrire l’algorithme sur calculatrice.
XI
Exponentielle
Exercice 47.
On considère l’algorithme ci-dessous :
Académie de Lyon - Janvier 2007 - Nouveaux programmes de TL
page 26/28
Algorithmique
Entrée
Traitement
Sortie
un entier naturel n, un réel strictement positif q
Affecter la valeur 5 à A
Affecter la valeur 6 à B
Affecter la valeur q 5 à Z
Affecter la valeur q 6 à W
Pour i prenant successivement les valeurs entières de 1 à n
1
Affecter la valeur (A + B) à X
2
√
Affecter la valeur ZW à Y
Affecter la valeur X à B
Affecter la valeur Y à W
Afficher X et Y
1. Quelle est la sortie de cet algorithme avec les entrées n = 1, q = 2 ?
2. Quelle est la sortie de cet algorithme avec les entrées n = 2, q = 2 ?
3. Quelle est la sortie de cet algorithme avec les entréeq n = 3, q = 2 ?
1
1
et Y pour valeur q 5+ 21
21 1
1
(b) On suppose qu’après l’exécution de la boucle pour la valeur j de i le couple (X, Y ) vaut 5 + j , q 5+ 2j . Vé2 1
1
rifier qu’après une exécution supplémentaire des instructions de la boucle, le couple (X, Y ) vaut 5 + j+1 , q 5+ 2j+1
2
5. Exprimer le couple (X,Y) obtenu en sortie en fonction de l’entrée n et en déduire que ce couple est le couple des
coordonnées d’un point de la courbe représentative de la fonction x 7−→ q x .
4. (a) Vérifier qu’après une exécution des instructions de la boucle, X a pour valeur 5 +
XII
Logarithme
Exercice 48.
1. On considère le programme suivant :
Entrée
Traitement
Sortie
Algorithme 1
Un entier naturel non nul n
Affecter la valeur 0 à i
Tant que 10i 6 n
affecter la valeur i + 1 à i
Afficher la valeur de i
(a) Quelle est la sortie de cet algorithme avec l’entrée n = 125 ?
(b) Quelle est la sortie de cet algorithme avec l’entrée n = 10 ?
(c) De façon générale, quel est le lien entre l’entrée et la sortie ?
2. Écrire le programme pour votre calculatrice.
3. Modifier le programme pour qu’il affiche le nombre de chiffres nécessaires pour l’écriture de l’entrée n en base b.
4. Montrer que le petit programme ci-dessous a les mêmes sorties que l’algorithme 1 :
un petit programme
Entrée
un entier naturel non nul n
Traitement Affecter à i la valeur E (log (n)) + 1
Sortie
Afficher la valeur de i
8
5. Donner le nombre de chiffres de n = 8(8 ) .
6. Écrire un programme donnant le chiffre de gauche dans l’écriture décimale d’un entier n.
7. Écrire un programme pour votre calculatrice qui prend en entrée un entier n > 0 et donne en sortie l’entier n0
obtenu en supprimant le chiffre le plus à gauche dans l’écriture décimale de n. (par exemple, l’entrée n = 512
donne la sortie n0 = 12).
Académie de Lyon - Janvier 2007 - Nouveaux programmes de TL
page 27/28
Algorithmique
8. Écrire pour votre calculatrice un programme comptant le nombre de chiffres successifs égaux dans le début (à
gauche) de l’écriture décimale d’un entier n > 0. Par exemple, avec l’entrée n = 55501, le programme renvoie 3,
avec l’entrée n = 2201222, le programme renvoie 2 . . .
Académie de Lyon - Janvier 2007 - Nouveaux programmes de TL
page 28/28
Téléchargement