Correction algorithme spécialité BAC S 2014 Liban (mai 2014)
Posted: 30 May 2014, 01:07
Entraînons-nous ce soir à l'algorithmique avec l'exercice de spécialité tombé au Liban pour le BAC S 2014:
Question 4-b :
On nous demande donc dans un premier temps de compléter l'algorithme.
Pour cela, commençons par l'analyser et le comprendre.
L'algorithme recherche la valeur maximale d'une suite que l'on suppose croissante puis décroissante.
Dans ce cas particulier, il suffit de rechercher quand est-ce que la suite commence à décroître.
L'algorithme s'articule autour d'une boucle 'tant que' de condition de poursuite b<b'.
Il s'arrête donc forcément sur la vérification de la condition contraire: b≥b'.
Comme cela correspond à un début de décroissance, on en déduit que b et b' sont donc dans cet ordre deux termes consécutifs de la suite.
La valeur à retourner en résultat étant le maximum, il s'agira donc de b.
k qui est initialisé à 0 et incrémenté de 1 dans la boucle est donc l'indice du terme de la suite correspondant à la valeur b, cette dernière étant initialisée à b0=0.
Restent encore x et y, initialisés respectivement à 0,95 et 0,8, et multipliées dans la boucle respectivement par 0,95 et 0,8 ils valent donc à tout moment 0,95k et 0,9k.
Ils permettent de mettre en oeuvre la formule générale donnée à la question 4-a pour l'affectation de b'.
D'où l'algorithme ainsi complété:
Dans un second temps, il nous faut donc compléter une sorte de trace de l'algorithme, résumant l'état des variables dans la boucle à partir de la 7ème itération.
Avec apparemment 9 itérations prévues et pas moins de 5 affectations à chaque fois, la réalisation manuelle de la trace serait fastidieuse...
Le mieux semble ici de demander directement les résultats à la calculatrice.
De plus, cela va nous permettre de valider notre algorithme en confrontant l'affichage avec les données déjà préremplies dans le tableau.
Usuellement, l'état des variables demandé lors d'une itération de boucle est soit celui en début de boucle, soit celui en fin de boucle.
On remarque ici que le tableau précise que c'est l'état après le passage dans la boucle qui nous intéresse.
Nous allons donc traduire cet algorithme en un programme pour nos calculatrices graphiques, en rajoutant en dernière instruction de la boucle un affichage de l'état des variables.
Aucune de nos calculatrices n'acceptant une variable nommée b', nous la renommerons c.
Précisons aussi concernant le résultat du test b<b', que certaines calculatrices répondront 1/0 à la place de Vrai/Faux.
Sur TI-76/82/83/84, vu la longueur des résultats nous utiliserons un affichage avec pause permettant à l'utilisateur de faire défiler le temps de recopier.
De plus, nous demanderons avantageusement un arrondi à 4 décimales conformément aux résultats préremplis dans le tableau.
Nous procédons de façon similaire sur TI-Nspire, à la différence qu'il n'est plus besoin de marquer une pause, l'ensemble de l'écran pouvant être défilé en fin de programme:
Idem sur HP-39gII/Prime:
Sur Casio par contre, je ne connais pas de moyen simple d'arrondir.
Voici ci-contre une proposition pour Casio Classpad/fx-CP:
Enfin, de même sur Casio Graph/Prizm/fx-CG:
Les affichages obtenus permettent à la fois de valider notre algorithme en étant conformes aux données préremplies du tableau, et de le compléter facilement par simple recopie:
Téléchargement : BAC S 2014 - Annales des sujets inédits 2013-2014
Question 4-b :
On nous demande donc dans un premier temps de compléter l'algorithme.
Pour cela, commençons par l'analyser et le comprendre.
L'algorithme recherche la valeur maximale d'une suite que l'on suppose croissante puis décroissante.
Dans ce cas particulier, il suffit de rechercher quand est-ce que la suite commence à décroître.
L'algorithme s'articule autour d'une boucle 'tant que' de condition de poursuite b<b'.
Il s'arrête donc forcément sur la vérification de la condition contraire: b≥b'.
Comme cela correspond à un début de décroissance, on en déduit que b et b' sont donc dans cet ordre deux termes consécutifs de la suite.
La valeur à retourner en résultat étant le maximum, il s'agira donc de b.
k qui est initialisé à 0 et incrémenté de 1 dans la boucle est donc l'indice du terme de la suite correspondant à la valeur b, cette dernière étant initialisée à b0=0.
Restent encore x et y, initialisés respectivement à 0,95 et 0,8, et multipliées dans la boucle respectivement par 0,95 et 0,8 ils valent donc à tout moment 0,95k et 0,9k.
Ils permettent de mettre en oeuvre la formule générale donnée à la question 4-a pour l'affectation de b'.
D'où l'algorithme ainsi complété:
- Code: Select all
Variables:
b, b', x, y sont des réels
k est un entier naturel
Initialisation:
Affecter à b la valeur 0
Affecter à b' la valeur 0,05
Affecter à k la valeur 0
Affecter à x la valeur 0,95
Affecter à y la valeur 0,8
Traitement:
Tant que b<b' faire
Affecter à k la valeur k+1
Affecter à b la valeur b'
Affecter à x la valeur 0,95x
Affecter à y la valeur 0,80y
Affecter à b' la valeur 1/3(x-y)
Fin Tant que
Sortie:
Afficher b
Dans un second temps, il nous faut donc compléter une sorte de trace de l'algorithme, résumant l'état des variables dans la boucle à partir de la 7ème itération.
Avec apparemment 9 itérations prévues et pas moins de 5 affectations à chaque fois, la réalisation manuelle de la trace serait fastidieuse...
Le mieux semble ici de demander directement les résultats à la calculatrice.
De plus, cela va nous permettre de valider notre algorithme en confrontant l'affichage avec les données déjà préremplies dans le tableau.
Usuellement, l'état des variables demandé lors d'une itération de boucle est soit celui en début de boucle, soit celui en fin de boucle.
On remarque ici que le tableau précise que c'est l'état après le passage dans la boucle qui nous intéresse.
Nous allons donc traduire cet algorithme en un programme pour nos calculatrices graphiques, en rajoutant en dernière instruction de la boucle un affichage de l'état des variables.
Aucune de nos calculatrices n'acceptant une variable nommée b', nous la renommerons c.
Précisons aussi concernant le résultat du test b<b', que certaines calculatrices répondront 1/0 à la place de Vrai/Faux.
Sur TI-76/82/83/84, vu la longueur des résultats nous utiliserons un affichage avec pause permettant à l'utilisateur de faire défiler le temps de recopier.
De plus, nous demanderons avantageusement un arrondi à 4 décimales conformément aux résultats préremplis dans le tableau.
Nous procédons de façon similaire sur TI-Nspire, à la différence qu'il n'est plus besoin de marquer une pause, l'ensemble de l'écran pouvant être défilé en fin de programme:
Idem sur HP-39gII/Prime:
Sur Casio par contre, je ne connais pas de moyen simple d'arrondir.
Voici ci-contre une proposition pour Casio Classpad/fx-CP:
Enfin, de même sur Casio Graph/Prizm/fx-CG:
Les affichages obtenus permettent à la fois de valider notre algorithme en étant conformes aux données préremplies du tableau, et de le compléter facilement par simple recopie:
k | b | x | y | b' | Test: b<b' | |
Après la 7è passage dans la boucle Tant que | 7 | 0,1628 | 0,6634 | 0,1678 | 0,1652 | VRAI |
Après la 8è passage dans la boucle Tant que | 8 | 0,1652 | 0,6302 | 0,1342 | 0,1653 | VRAI |
Après la 9è passage dans la boucle Tant que | 9 | 0,1653 | 0,5987 | 0,1074 | 0,1638 | FAUX |
Téléchargement : BAC S 2014 - Annales des sujets inédits 2013-2014