Lire ou compléter un algorithme

Un algorithme est la décomposition d'une action en instructions élémentaires.
Les calculs nécessaires à la résolution d'un problème, les consignes pour un tracé géométrique, les étapes pour trier des données constituent des algorithmes.
L'énoncé en français doit être traduit en langage machine pour effectuer un traitement sur calculatrice ou ordinateur.
1. Quelles sont les instructions d'un algorithme élémentaire ?
• Un algorithme comporte quatre étapes :
  • indication des variables : une variable sert à stocker une valeur numérique ou un mot. Il faut déclarer les données de l'énoncé et désigner les variables qui permettront de stocker les résultats intermédiaires lors du traitement des instructions ;
  • début : on affecte les données dans des variables, on initialise le stockage des valeurs intermédiaires et les compteurs numériques ;
  • traitement : on note l'ensemble des instructions de calcul ou de tri, les boucles de répétition et les tests à effectuer ;
  • sortie : lorsque toutes les opérations sont exécutées il faut communiquer les résultats, c'est-à-dire les écrire.
2. Comment insérer une condition ?
• Deux traitements sont proposés, suivant que la condition est vérifiée ou non.
La structure de l'algorithme est alors de la forme :
  • indication des variables ;
  • entrée des données ;
  • traitement.
Si condition, alors traitement 1.
Sinon traitement 2.
FinSi
Sortie des résultats : l'instruction FinSi indique la fin du traitement conditionnel.
3. Comment insérer une boucle ?
• Il y a trois structures possibles :
  • avec un compteur : pour I variant de I0 jusqu'à N, faire traitement. FinPour
  • avec une condition : tant que condition, faire traitement. FinTantque
  • avec répétition jusqu'à condition : répète traitement jusqu'à condition. FinRepète
Les instructions FinPour, FinTantque et FinRepète terminent la boucle.
4. Comment résoudre un système de deux équations du premier degré ?
• Le système \left\{ \begin{array}{l} \mathrm{A}x + \mathrm{B}y = \mathrm{C} \\ \mathrm{D}x + \mathrm{E}y = \mathrm{F} \\ \end{array} \right. peut avoir un couple solution, aucune solution ou une infinité de solutions.
Lorsque les coefficients A, B, D et E ne sont pas proportionnels, les deux droites représentatives sont sécantes. Il y a un seul couple solution, composé des coordonnées du point d'intersection.
Dans le cas contraire, si les nombres A, C, D et F sont proportionnels, on obtient deux équations d'une même droite, il y a une infinité de solutions. Sinon les deux droites sont strictement parallèles et il n'y a aucune solution.
Algorithme
Variables
A, B, C, D, E, F,
X, Y les valeurs du couple solution éventuel.
Entrée
?  → A ; ?  → B ; ?  → C
?  → D ; ?  → E ; ?  → F
Traitement
Si A × E \neq B × D
Alors
\frac {\mathrm{CE - BF}}{\mathrm{AE - BD}} \rightarrow \mathrm{X}
\frac {\mathrm{AF - CD}}{\mathrm{AE - BD}} \rightarrow \mathrm{Y}
Écrire « X =  »
Afficher X
Écrire « Y =  »
Afficher Y
Sinon
Si A × F \neq C × D
Alors écrire « PAS DE SOL »
Sinon
Écrire « INFINITE DE SOL »
Alors écrire « PAS DE SOL »
FinSi
Sortie
Écrire « FIN »
Traduction de la calculatrice :
Texas instrument
Casio
Input A : Input B : Input C
? → A : ? → B : ? → C
Input D : Input E : Input F
? → D : ? → E : ? → F
If A × E \not= B × D
A × E − B × D → P
Then
A × F − C × D → Q
(C × E − B × F) ÷ (A × E − B × D) → X
If P \not= 0
(A × F − C × D) ÷ (A × E − B × D) → Y
Then ''X =''
Disp ''X =''  : Disp X
(C × E − B × F) ÷ P → X \bigtriangleup
Disp ''Y ='' : Disp Y
''Y =''
Sinon
(A × F − C × D) ÷ P → Y \bigtriangleup
If A × E \not= C × D
Else If Q \not = 0
Then
Then ''PAS DE SOL''
Disp ''PAS DE SOL''
Else ''INFINITÉ DE SOL''
Sinon
IfEnd
Disp ''INFINITÉ DE SOL''
IfEnd
End
''FIN''
End
Stop
Disp ''FIN''


5. Comment déterminer l'extremum d'une fonction ?
• Recherche du minimum
Sur l'intervalle [A ; B], on cherche les coordonnées du point le plus bas de la courbe représentative d'une fonction f.
Pour cela, on balaye l'intervalle avec un pas de 10-N et on calcule à chaque fois l'image obtenue.
On la compare à la plus petite image obtenue précédemment. Si elle est encore plus petite, elle prend sa place dans la variable.
Algorithme
Variables
X (borne inférieure de l'intervalle)
B (borne supérieure de l'intervalle)
N (exposant de la précision)
f la fonction à étudier
Entrée
? → A
? → B
? → N
f (A) → M
Traitement
Tant que X < B faire X + 10\wedge−N → X
Si f < M
Alors f (X) → M
Fin Si
Fin Tant que
Sortie
Afficher M
Traduction de la calculatrice :
Texas Instrument
Casio
Input A
? → A
Input B
? → B
Input N
? → N
Y1 (A)→ M
A → X
A → X
Y1 → M
While X < B
While X < B
X + 10\wedge(−N) → X
X + 10\wedge(−N) → X
If Y1(X) < M
If Y1 < M
Then
Then Y1 → M
Y1 (X) → M
IfEnd
End
WhileEnd
End
\bigtriangleup
Dips M
Stop

Recherche du maximum
Il faut remplacer l'instruction If Y1 < M par If Y1 > M.
6. Comment démarrer avec le langage Python ?
Types de variables :
Quelques types de variables abordés au lycée avec le language Python:
int : nombre entier ; float : nombre flottant ; str : chaîne de caractères ; bool : booléen
Pour déterminer le type d'une variable on peut taper la commande type dans le Shell.
type(3) va renvoyer int ; type(1/3) va renvoyer float
type(« ASP ») va renvoyer str (sans les guillemets ASP est alors le nom d'une variable mais si elle n'a pas de valeur affectée alors type(ASP) va renvoyer un message d'erreur
type(True) va renvoyer bool
Fonctions :
Une des fonctionnalités du langage Python est la possibilité de créer des fonctions. L'avantage est que une fois crée on peut réutiliser une fonction dans le même programme ou bien ultérieurement en utilisant un copier-coller. L'objectif de la création de fonctions est de gagner du temps et de pouvoir les utiliser directement dans le Shell.
Pour définir une fonction on utilise les commandes def et return.
Voici par exemple la fonction carré :
def carré(x) :
   return x*x
Lire ou compléter un algorithme - illustration 1
Bien sûr, pour des fonctions de base le gain de temps est très faible.
Le module random
Les modules contiennent des fonctions que l'on est amené à réutiliser souvent (on les appelle aussi bibliothèques ou libraries).
Le module random de Python donne accès aux nombres aléatoires
Pour pouvoir utiliser les fonctions du module random il faut en introduction du programme écrire :
from random import* (Le symbole * permet d'importer toutes les fonctions du module random).
On peut par exemple simuler la génération d'un entier compris entre 1 et 6 (utile pour simuler le lancer d'un dé cubique) en tapant :
random.randint(1,6)
Algorithme : Déterminer une valeur approchée du maximum de la fonction carré sur l'intervalle [0;4] par balayage.
À retenir
• Ne pas oublier de stocker les résultats intermédiaires et les compteurs dans des variables.
Ces variables doivent être initialisées.
• L'instruction FinSi permet de repérer la fin d'une condition. Les instructions Fin tant, FinPour et FinRepeat permettent de repérer les fins de boucles.
Lorsqu'une condition est imbriquée dans une boucle, un décalage des instructions de la condition vers la droite permet de mieux lire l'algorithme.
• Les algorithmes donnant le minimum ou le maximum d'une fonction définie sur un intervalle, le nombre de solution(s) d'un système d'équations du premier degré est à transposer et conserver sur la calculatrice.
Exercice n°1
Dans un repère, les coordonnées des sommets A, B et C du parallélogramme ABCD sont données. Quel traitement faut-il effectuer pour connaître les coordonnées du sommet D ?
Algorithme
Variables
X et Y les coordonnées du point A
Z et T les coordonnées du point B
U et V les coordonnées du point C
M et N les coordonnées du point D
Entrée
? → X : ? → Y
? → Z : ? → T
? → U : ? → V
Traitement

Sortie
Écrire M et N
Cochez la bonne réponse.
\begin{array}{| ccc| } \mathrm{Z} - \mathrm{X} + \mathrm{U}\rightarrow \mathrm{M} \\ \mathrm{T} - \mathrm{Y} + \mathrm{V}\rightarrow \mathrm{N} \\ \end{array}
\begin{array}{| ccc| } \mathrm{X} + \mathrm{Z} + \mathrm{U}\rightarrow \mathrm{M} \\ \mathrm{Y} + \mathrm{T} + \mathrm{V}\rightarrow \mathrm{N} \\ \end{array}
\begin{array}{| ccc| } \mathrm{X} - \mathrm{Z} + \mathrm{U}\rightarrow \mathrm{M} \\ \mathrm{Y} - \mathrm{T} + \mathrm{V}\rightarrow \mathrm{N} \\ \end{array}
• Comme ABCD est un parallélogramme, alors \overrightarrow{\mathrm{AB}} = \overrightarrow{\mathrm{DC}}. D'où :
\left\{ \begin{array}{l} x_{\mathrm{B}} - x_{\mathrm{A}} = x_{\mathrm{C}} - x_{\mathrm{D}} \\ y_{\mathrm{B}} - y_{\mathrm{A}} = y_{\mathrm{C}} - y_{\mathrm{D}} \\ \end{array} \right. soit \left\{ \begin{array}{l} x_{\mathrm{D}} = x_{\mathrm{A}} - x_{\mathrm{B}} + x_{\mathrm{C}} \\ y_{\mathrm{D}} = y_{\mathrm{A}} - y_{\mathrm{B}} + y_{\mathrm{C}} \\ \end{array} \right. ou \begin{array}{| ccc| } \mathrm{X} - \mathrm{Z} + \mathrm{U}\rightarrow \mathrm{M} \\ \mathrm{Y} - \mathrm{T} + \mathrm{V}\rightarrow \mathrm{N} \\ \end{array}
Exercice n°2
Quel traitement permute les valeurs des variables A et B ?
Cochez la bonne réponse.
\begin{array}{| ccc| } \mathrm{A} \rightarrow \mathrm{B} \\ \mathrm{B} \rightarrow \mathrm{A} \\ \end{array}
\begin{array}{| ccc| } \mathrm{B} \rightarrow \mathrm{C} \\ \mathrm{A} \rightarrow \mathrm{B} \\ \mathrm{C} \rightarrow \mathrm{A} \\ \end{array}
\begin{array}{| ccc| } \mathrm{A} \rightarrow \mathrm{C} \\ \mathrm{C} \rightarrow \mathrm{B} \\ \mathrm{B} \rightarrow \mathrm{A} \\ \end{array}
1er ligne : la variable intermédiaire C stocke la valeur de B.
2e ligne : A prend la place de B.
3e ligne : B prend la place de A.
Exercice n°3
Quelle est la valeur de chaque variable à la fin de l'algorithme ?
Algorithme
Variables
A, B et C
Entrée
a → A
b → B
c → C
Traitement
A + B → A (1)
B + C → B (2)
A + C → C (3)
B − C → A (4)
A + C → B (5)
A − B + C → C (6)
Sortie
Écrire A
Écrire B
Écrire C
Cochez la bonne réponse.
On obtient b en A, c en B et a en C.
On obtient 0 en A, a + c en B et -b en C.
On obtient -a en A, b + c en B et 0 en C.
• On peut écrire pas à pas les étapes de l'algorithme.
Instructions
A
B
C
Entrée
a
b
c
1
a + b


2

b + c

3


a + b + c
4
a


5

b + c

6


0

Exercice n°4
Les frais de livraison d'une marchandise sont fonction de son prix X en euros.
Pour la tranche comprise entre 0 et 500 €, ils représentent 5 % du prix X. Pour la tranche se situant au-delà de 500 €, ils ne représentent que 3 % de la valeur au delà de 500 €.
On appelle Y le prix à payer en euros.
Quelles lignes faut-il écrire pour le traitement ?
Cochez la bonne réponse.
\begin{array}{| ccc| } {\mathrm{Si}}\,0 \le {\mathrm{X}} \le 500 \\ {\mathrm{Alors}}\,{\mathrm{X}} \times 1,05 \rightarrow {\mathrm{Y}} \\ {\mathrm{Sinon}} \\ {\mathrm{X}} \times 1,03 \rightarrow {\mathrm{Y}} \\ \end{array}
\begin{array}{| ccc| } {\mathrm{Si}}\,0 \le {\mathrm{X}} \le 500 \\ {\mathrm{Alors}}\,{\mathrm{X}} \times 1,05 \rightarrow {\mathrm{Y}} \\ {\mathrm{Sinon}} \\ 525 + {\mathrm{X}} \times 1,03 \rightarrow {\mathrm{Y}} \\ \end{array}
\begin{array}{| ccc| } {\mathrm{Si}}\,0 \le {\mathrm{X}} \le 500 \\ {\mathrm{Alors}}\,{\mathrm{X}} \times 1,05 \rightarrow {\mathrm{Y}} \\ {\mathrm{Sinon}} \\ 10 + {\mathrm{X}} \times 1,03 \rightarrow {\mathrm{Y}} \\ \end{array}
• Si X est inférieur ou égal à 500 €, le prix est majoré de 5 %, soit :
Y = X × (1 + \frac {5}{100}) = X × 1,05.
Si X est supérieur à 500 €, les premiers 500 € sont taxés 5 % et le reste à 3 %. Soit :
Y = 500 × (1 + \frac {5}{100}) +(X − 500) × 1,03
Y = 525 + 1,03X − 515
Y = 10 + 1,03X.
Exercice n°5
On plie une très grande feuille de 0,1 mm d'épaisseur autant de fois que nécessaire.
Quel nombre de pliages permet d'obtenir une hauteur de 1 m ?
Algorithme
Variables
X (hauteur de la feuille)
N (nombre de pliages)
H (hauteur cible)
Entrée
? → X
? → N
? → H
Traitement
Tant que X < H
2X → X
N + 1  → N
Fin tant que
Sortie

Afficher N
On obtient
Cochez la bonne réponse.
N = 13
N = 14
N = 15
• On affecte à X la valeur 0,1, à N la valeur 0 et à H la valeur 10 000 (1 m = 1000 mm = 10 000 dixièmes de mm).
Après traitement, on lit N = 14.
Vérification par le calcul :
0,1 × 213 = 819,2
0,1 × 214 = 1638,4
Exercice n°6
Le 1er janvier, une grand-mère ouvre un compte à son petit-fils en déposant une somme de S euros. Elle promet de compléter, le premier jour de chaque année suivante, avec une somme de D euros. Le taux d'intérêt est de T % par an, sur l'ensemble des sommes déposées.
On construit un algorithme pour connaître la somme disponible le 2 janvier, au bout de N années.
Après l'initialisation à 0 du compteur K du nombre d'années, quel est le traitement correct ?
Cochez la bonne réponse.
\begin{array}{| ccc| } {\mathrm{R\acute{e}p\grave{e}te\,jusqu'\,\grave{a}\,K = N}} \\ {\mathrm{S}} \times (1 + \mathrm{T} \div 100) + \mathrm{D} \rightarrow {\mathrm{S}} \\ {\mathrm{K}} + 1 \rightarrow {\mathrm{K}} \\ {\mathrm{Fin\,R\acute{e}p\grave{e}te}} \\ \end{array}
\begin{array}{| ccc| } {\mathrm{R\acute{e}p\grave{e}te\,jusqu'\grave{a}\,K = N}} \\ {\mathrm{S}} \times \mathrm{T} \div 100 + \mathrm{D} \rightarrow {\mathrm{S}} \\ {\mathrm{K}} \rightarrow {\mathrm{K}} + 1 \\ {\mathrm{Fin\,Rep\grave{e}te}} \\ \end{array}
\begin{array}{| ccc| } {\mathrm{R\acute{e}p\grave{e}te\,jusqu'\grave{a}\,K = N}} \\ ({\mathrm{S}}+ \mathrm{D}) \times \mathrm{T} \div 100 + \mathrm{D} \rightarrow {\mathrm{S}} \\ \mathrm{K} \rightarrow \mathrm{K} + 1 \\ \mathrm{Fin\,Rep\grave{e}te} \\ \end{array}
• Par exemple, si la somme initiale est de 3 000 €, le versement annuel de 500 € et le taux de 1,25 %, la somme disponible au 2 janvier de la seconde année sera de :
3000 × (1 + \frac {1,25}{100}) + 500 = 3537,5
Par ailleurs, le compteur K doit augmenter d'une unité chaque année. Donc on affecte à la variable K la valeur K + 1.
Au bout de 10 ans, on vérifie que le petit-fils dispose d'une somme de 8 687,65 €.
Exercice n°7
Résoudre le système \left\{ \begin{array}{l} x + 2y = 3 \\ 4x + 5y = 6 \\ \end{array} \right.
Cochez la bonne réponse.
Il n'y a pas de solution.
Tous les couples de nombres réels x et y, tels que x + 2y = 3, sont solutions.
S = {(−1 ; 2)}
• On affecte à A la valeur 1, à B la valeur 2, à C la valeur 3, à D la valeur 4, à E la valeur 5 et à F la valeur 6. Après traitement, on lit X = −1 et Y = 2.
Exercice n°8
Soit la fonction f, définie sur l'intervalle [0 ; 5], par f(x) = x2 − 4x + 13.
Son minimum M est obtenu pour une valeur x0 de cet intervalle.
Quelle est la valeur de M pour x0 défini à 10−1 près ?
Cochez la bonne réponse.
M = 9
M = 10
M = 13
• On affecte 0 à A, 5 à B et 1 à N.
On note la fonction Y = X2 − 4X + 13.
Après traitement, on lit M = 9
Vérification par le calcul :
(x − 2)2 + 9 = x2 − 4x + 4 + 9 = x2 − 4x + 13.
Le minimum de la fonction est donc 9. On l'atteint pour x = 2.