Algorithme en classe de première STG
2.4 La logique algorithmique (7 heures)
Cette partie du programme vise à sensibiliser les élèves à la logique du
traitement de l’information. On la met en œuvre à travers l’analyse de parties de
traitements jugées significatives, qu’elles soient programmées dans une feuille
de calcul d’un tableur, dans un formulaire lié à une base de données ou dans un
script associé à une page Internet.
Thèmes Sens et portée de l’étude Notions et contenus à construire
2.4 La L’expression algorithmique Représentation des données
logique permet de dégager les principes Type, variable, constante
algorithmiq de construction d’un traitement Représentation et exécution des
ue (7 programmé quel que soit traitements
heures) l’environnement logiciel de sa Algorithme, programme
mise en œuvre Séquence, alternative, répétitive
Fonction
1) GÉNÉRALITÉS
L'algorithme est une étape structurante de résolution de problème. Vous
devrez amener les élèves à lire, interpréter, réaliser une trace grâce à un jeu
d'essai contenant des valeurs test, modifier l'algorithme que vous allez leur
proposer.
Le principe de base de l'algorithme figure dans le diaporama que vous
pouvez trouver sur le site également.
Un algorithme, comme un programme, sera reconnu par son nom (qui peut
être différent de celui du programme bien évidemment).
Il faudra déclarer les constantes (valeurs permanentes), s’il y a lieu (ce ne
sera pas toujours vrai) et obligatoirement les variables (caractères, chaîne de
caractères, entier, réel, date, booleen).
Un algorithme commence toujours par un début et se termine donc
nécessairement par une fin.
Vous aurez donc la structure suivante :
Nom
Constante
Variable
Début
Obtention des informations à
traiter
Traitement proprement dit
Résultat du traitement
Fin
Les instructions à connaître sont les suivantes :
afficher affiche à l'écran les termes entre guillemets
saisir donne la valeur saisie à la variable concernée
imprimer envoie l'information à l'imprimante
lire les informations existent dans un fichier préexistant
ouvrir ouvre le fichier sur lequel les données existent
fermer ferme le fichier correspondant.
permet affecter une valeur à une variable. L’affectation se
différencie de l’instruction = qui correspond au résultat d’un traitement.
2) STRUCTURES ALTERNATIVES
Les structures qui permettent le traitement sont multiples. Je vous
conseille fortement dans un premier temps de vous appuyez sur le tableur pour
amener les élèves à la finalité recherchée.
En effet, lorsque vous mettez en place une formule alternative Si Alors
Sinon vous faites de l’algorithme sauf qu’il se présentera sous une autre forme.
Si (condition ; alors action 1 ; sinon action 2)
Ou encore si (condition 1 ; alors action 1 ; si (condition 2 ; alors action 1 ;
sinon action 2))
La structure algorithmique est la suivante
Pour la condition alternative et la condition alternative
imbriquée.
Si condition Si condition 1
Alors action 1 Alors Action 1
Sinon action 2 Sinon si condition 2
Fin si Alors Action 2
Sinon action 3
Fin si
Fin si
Je vous conseille d’incrémenter (décaler vos instructions) votre algorithme
afin de vous retrouver plus facilement dans votre algorithme.
Prenons un premier exemple simple.
Il faut créer un algorithme qui permette de déterminer à partir de la saisie
d’un montant HT un taux de remise qui sera afficher.
La règle de gestion est la suivante :
De 0 à 2 500 euros aucune remise n’est accordée
A partir de 2 500 euros, le taux de remise accordé est de 2 %
Algo 1
Variable
mht : réel
tx : réel
Début
afficher « saisir le montant ht »
saisir mht
si mht < 2 500
alors tx 0%
sinon tx 2%
finsi
afficher « pour un montant de », mht, « le taux de remise est » , tx
Fin
L’exemple se complique et doit intégrer les règles de gestion suivantes :
De 0 à 1 500 euros aucune remise n’est accordée
De 1 500 à 2 500 euros, le taux de remise accordé est de 2 %
De 2 500 à 3 500 euros, le taux de remise accordé est de 3 %
De 3 500 à 5 000 euros, le taux de remise accordé est de 5 %
A partir de 5 000 euros, le taux de remise accordé est de 7 %
Algo 2
Variable
mht : réel
tx : réel
Début
Afficher « saisir le montant ht »
Saisir mht
si mht < 1 500
alors tx 0 %
sinon si mht < 2 500
alors tx 2 %
sinon si mht < 3 500
alors tx 3 %
sinon si mht < 5 000
alors tx 5 %
sinon tx 7 %
finsi
finsi
finsi
finsi
afficher « pour un montant de », mht, « le taux de remise est » , tx
Fin
Remarque :
Il est évident qu’il n’est pas nécessaire d’apporter une telle complexité
tout de suite.
Il est encore possible d’améliorer cet algorithme. Nous pouvons faire saisir
le nom du client
Algo 3
Variable
mht : réel
tx : réel
nomcli : chaîne de caractères
Début
afficher « saisir le nom du client »
saisir nomcli
saisir « saisir le montant ht », mht
si mht < 2 500
alors tx 0%
sinon tx 2%
finsi
afficher «monsieur », nomcli, « pour un montant de », mht, « le taux de
remise est » , tx
Fin
Remarque :
J’ai transformé afficher - saisir en une seule instruction saisir « saisir le
montant ht », mht ce qui revient au même, puisque c’est le message entre
guillemets qui apparaît à l’écran.
Nous pouvons faire calculer le net commercial
Algo 4
Variable
mht : réel nomcli : chaîne de caractères
tx : réel netco : réel
Début
afficher « saisir le nom du client »
saisir nomcli
saisir « saisir le montant ht », mht
si mht < 2 500
alors tx 0%
sinon tx 2%
finsi
afficher « pour un montant de », mht, « le taux de remise est » , tx
netco mht * tx
afficher « monsieur, madame », nomcli, « le net commercial s’élève à »,
netco
Fin
Nous pouvons faire calculer le net commercial et limiter la valeur du net
commercial à 500 euros, par exemple
Algo 5
Variable
mht : réel nomcli : chaîne de caractères
tx : réel netco : réel
Début
afficher « saisir le nom du client »
saisir nomcli
saisir « saisir le montant ht », mht
si mht < 2 500
alors tx 0%
sinon tx 2%
finsi
afficher « pour un montant de », mht, « le taux de remise est » , tx
netco mht * tx
si netco > 500
alors netco 500
finsi
afficher « monsieur, madame », nomcli, « le net commercial s’élève à »,
netco
Fin
Remarque :
A la différence des formules tableur, l’algorithme n’a pas toujours besoin
du sinon.
Si dans notre exemple, on le met en place, il faudra alors écrire
Sinon net netco
Le montant ht n’est autre qu’une quantité multiplié par le prix du produit.
Algo 6
Variable
nomcli : chaîne de caractères
nompro : chaine de caractères
quant : réel
prix : réel
mht : réel
tx : réel
netco : réel
Début
afficher « saisir le nom du client »
saisir nomcli
saisir « quel est le nom du produit », nompro
saisir « quelle quantité avez vous acheté », quant
saisir « quel est le prix du produit », prix
mht quant * prix
si mht < 2 500
alors tx 0%
sinon tx 2%
finsi
afficher « pour un montant de », mht, « le taux de remise est » , tx
netco mht * tx
afficher « monsieur, madame », nomcli, « le net commercial s’élève à »,
netco
Fin
3) STRUCTURES RÉPÉTIVES OU ITÉRATIVES
Un client n’achète pas qu’un seul produit, il faudra donc mettre en place
une structure répétive ou itérative. Une itération est une boucle sur un
traitement.
La condition itérative répéter ……..jusqu’à, répète une itération
jusqu’à ce qu’une condition soit remplie
Répéter
Traitement
Condition d’arrêt
Jusqu’à condition vraie
La condition itérative tantque ……..fintantque, répète une itération
jusqu’à ce qu’une condition soit remplie
Tant que condition vraie
Traitement
Condition d’arrêt
Fin tant que
Remarque :
Dans la structure tant que la condition doit être placée une première fois
avant la boucle afin que la structure répétitive soit validée.
La condition itérative pour …. Finpour, répète un certain nombre de
fois une instruction ou un traitement.
Pour compteur = début à fin
Traitement
Fin pour
Remarque :
La structure pour finpour s’utilise lorsque l’on connaît le nombre exact
d’itération.
Un client n’achète pas qu’un seul produit, il faudra donc aussi penser à
cumuler les mht par produit afin de déterminer le taux de remise applicable et le
net commercial
Avec la structure itérative Répéter ………………….. Jusqu’à
Algo 7
Variable
nomcli : chaîne de caractères
nompro : chaine de caractères
quant : réel
prix : réel
mht : réel
tx : réel
netco : réel
mhtt : réel
Début
Mhtt 0
afficher « saisir le nom du client »
saisir nomcli
répéter
saisir « quel est le nom du produit (rien pour arrêt) », nompro
saisir « quelle quantité avez vous acheté », quant
saisir « quel est le prix du produit », prix
mht quant * prix
mhtt mhtt + mht
jusqu’à nompro = « rien »
si mhtt < 2 500
alors tx 0%
sinon tx 2%
finsi
afficher « pour un montant de », mhtt, « le taux de remise est » , tx
netco mhtt * tx
afficher « monsieur, madame », nomcli, « le net commercial s’élève à »,
netco
Fin
Remarque :
J’utilise une nouvelle variable afin d’obtenir le total des montants hors taxe
par produit.
Le cumul s’effectue en additionnant la valeur que l’on vient de calculer à
ce que l’on avait auparavant.
Et enfin, il ne faut pas oublier d’initialiser la variable qui sert au cumul
avant la boucle afin de s’assurer d’obtenir le bon résultat.
Je n’ai pas introduit de nouvelle valeur pour réaliser la condition d’arrêt,
mais toute autre solution peut existée. En voici une autre.
Algo 8
Variable
nomcli : chaîne de caractères
nompro : chaine de caractères
quant : réel
prix : réel
mht : réel
tx : réel
netco : réel
mhtt : réel
rep : booléen ou caractère ou chaîne de caractère (vous verrez ce que
vous utiliserez)
Début
Mhtt 0
afficher « saisir le nom du client »
saisir nomcli
répéter
saisir « quel est le nom du produit », nompro
saisir « quelle quantité avez vous acheté », quant
saisir « quel est le prix du produit », prix
mht quant * prix
mhtt mhtt + mht
saisir « y a t il un autre produit (saisir oui / non) ? », rep
jusqu’à rep= « non »
si mhtt < 2 500
alors tx 0%
sinon tx 2%
finsi
afficher « pour un montant de », mhtt, « le taux de remise est » , tx
netco mhtt* tx
afficher « monsieur, madame », nomcli, « le net commercial s’élève à »,
netco
Fin
Remarque
Lorsque la variable rep est à non, on sort de la boucle de traitement.
Avec la structure itérative Tant que ………….. Fin de tant que
Algo 9
Variable
nomcli : chaîne de caractères
nompro : chaine de caractères
quant : réel
prix : réel
mht : réel
tx : réel
netco : réel
mhtt : réel
rep : chaîne de caractère
Début
Mhtt 0
afficher « saisir le nom du client »
saisir nomcli
rep « oui »
tant que rep = « oui » faire
saisir « quel est le nom du produit », nompro
saisir « quelle quantité avez vous acheté », quant
saisir « quel est le prix du produit », prix
mht quant * prix
mhtt mhtt + mht
saisir « y a t il un autre produit (saisir oui / non) ? », rep
fin tant que
si mhtt < 2 500
alors tx 0%
sinon tx 2%
finsi
afficher « pour un montant de », mhtt, « le taux de remise est » , tx
netco mhtt * tx
afficher « monsieur, madame », nomcli, « le net commercial s’élève à »,
netco
Fin
Remarque
Il faut prendre la précaution d’affecter une valeur à la condition d’arrêt
pour que l’algorithme puisse fonctionner.
rep « oui »
Avec la structure itérative Pour ………….. Fin de pour
Algo 10
Variable
nomcli : chaîne de caractères
nompro : chaine de caractères
quant : réel
prix : réel
mht : réel
tx : réel
netco : réel
mhtt : réel
nbprod : entier
Début
Mhtt 0
afficher « saisir le nom du client »
saisir nomcli
saisir « combien y a t il de produits ? », nbprod
pour i = 1 à nbprod
saisir « quel est le nom du produit », nompro
saisir « quelle quantité avez vous acheté », quant
saisir « quel est le prix du produit », prix
mht quant * prix
mhtt mhtt + mht
finpour
si mhtt < 2 500
alors tx 0%
sinon tx 2%
finsi
afficher « pour un montant de », mhtt, « le taux de remise est » , tx
netco mhtt * tx
afficher « monsieur, madame », nomcli, « le net commercial s’élève à »,
netco
Fin
Remarque
Pour connaître le nombre d’itération, il faut en faire saisir la valeur avant la
mise en place de la boucle.
4) UNE TRACE
Prenons un exemple complet afin de faire dérouler l’algorithme, avec la
structure répéter
Madame Georgette, professeur en classe de première STG au lycée Duras,
propose que chaque élève ait en sa possession une clé usb comme moyen de
sauvegarde. Elle passe une commande groupée avec une autre collègue du
lycée. La commande représente 63 clés USB2 à 29,99 euros. Certains élèves
profitent de cette commande pour acheter à un tarif préférentiel du matériel
informatique.
12 élèves souhaiteraient acquérir une souris et un clavier optique sans fil 19,99
euros, et 9 autres achètent une webcam à 15,99 euros. La commande se voit
accordée une réduction commerciale de 2% si le montant net est supérieur à
2000,00 euros.
Nom des 1er passage 2ième passage 3ième passage
variables
Mhtt 0
Nomcli Lycée duras
Rep Oui
Nomprod Clé usb Souris clavier webcam
Quant 63 12 9
Prix 29,99 19,99 15,99
Mht 1889,37 239,88 143,91
Mhtt 1889,37 2129,25 2273,16
Rep oui Oui Non
Tx 2%
Netco 2 227,70
On pourrait encore modifier l’algorithme afin d’y inclure des frais de
transport de 25,00 euros, si le net commercial est inférieur à 2000,00 euros.
On déclarerait une nouvelle variable fraist . On peut la déclarer en constante.
Constante
FraisT = 25,00
Variable
Les mêmes
Début
Mhtt 0
Saisir « saisir le nom du client », nomcli
répéter
même traitement
jusqu’à rep= « non »
si mhtt < 2 000
alors tx 0%
sinon tx 2%
finsi
netco mhtt * tx
si netco < 2000,00
alors netco netco + fraisT
finsi
afficher « monsieur, madame », nomcli, « le net commercial après frais de
transport s’élève à », netco
Fin