1.GENERALITES
Algorithme Processus défini par une succession finie, ordonnée dans le temps, d’opérations
appliquées à un nombre fini de données conduisant en un nombre fini d’étapes à un
résultat défini quelles que soient les valeurs des données dans leurs domaines de
définition.
Larousse : (arabe al-khârezmi, surnom d'un mathématicien arabe)
Math. et Inform. Suite finie d'opérations élémentaires constituant un schéma de calcul ou de résolution d'un problème.
Algorigramme Représentation graphique conventionnelle d’un algorithme.
Exemple :
Encore sous_tension?
INITIALISATIONS
Lire_Capteurs
BOUCLE de TRAVAIL
Calculer_Corrections
RESTAURATIONS
Emettre_Commandes
FIN
Fin_Boucle_de_travail
PROVISEUR
etc...
7ALGO1.DOC 1/9
Algorithmique express jpc/IUFMPL Nantes
Swap
Swap, c’est :
Début
LDA(LSB)
LDA (LSB) LDB (MSB)
STD (MSB)
Fin
LDB (MSB)
STD (MSB)
FIN
L’exemple montre la récursivité des descriptions algorithmiques qui peuvent ainsi être plus ou moins raffinées
selon les besoins de l’étude par autant de [sous-][...] sous-algorithmes que nécéssaire.
7ALGO1.DOC 2/9
Algorithmique express jpc/IUFMPL Nantes
• 3 structures indispensables
l’alternative Si [condition_booléenne]
alors [action_oui]
sinon [action_non]
fsi
Répéter
[action_boucle]
jusqu’à [condition_booléenne]
• Enfin 1 structure fautive et nuisible mais intuitivement inévitable doit être étudiée pour être
méthodiquement éliminée.
Boucle GOTO ( maudite...) Label [nom_label]
...
...
Si [condition_booléenne]
alors Goto [nom_label]
sinon [rien_continuer]
fsi
Ceci termine l’exposé du langage de description, ne reste plus qu’à en acquérir la maîtrise par des exemples.
7ALGO1.DOC 3/9
Algorithmique express jpc/IUFMPL Nantes
2. L’ALTERNATIVE
Si [condition_booléenne]
alors [action_oui]
sinon [action_non]
fsi
L’alternative n’est jamais liée à une boucle, c’est toujours une dérivation provisoire
de l’algorithme avec convergence immédiate
La branche « sinon » peut être sous-entendue si elle est vide, elle n’en existe pas moins.
Exemples partiels :
Exemples partiels :
Tq_1 Tq_2 Tq_3
... ... ...
Tant que quotient >1 Tant que Leçon_pas_sue Tant que Sous_tension
quotient←quotient / 2 Apprendre Mesurer
refaire ftq Calculer
... ... Emettre
refaire
...
7ALGO1.DOC 4/9
Algorithmique express jpc/IUFMPL Nantes
Répéter
[action_boucle]
jusqu’à [condition_booléenne]
Exemples partiels :
La puissance des 3 structures fondamentales de contrôle est énorme. Elles suffisent à décrire tous les
fonctionnements d’automates déterministes... ainsi que les savoir faire humains procéduraux. Les
structures de confort qui les complètent n’ont pour unique utilité qu’un allègement des notations.
La proximité manifeste du langage de description avec le Pascal et le C ne doit pas conduire à une
interprétation erronée qui limiterait la pertinence de l’algorithmique à la préparation de programmes
destinés à être codés à travers ces environnements : c’est parce qu’ils ont été créés à partir de la théorie
des algorithmes que ces langages y sont bien adaptés et non l’inverse.
La maîtrise des 3 structures fondamentales figure explicitement aux référentiels de BEP et de Bac.
L’algorigramme est la forme achevée, visuellement parlante de l’analyse temporelle, mais c’est rarement
l’outil d’analyse pertinent : ce n’est que lorsqu’il a été mis au point en langage de description que
l’algorithme mérite d’être traduit graphiquement au bénéfice du lecteur, bien sûr, mais d’abord pour
valider le travail de l’auteur.
Un bon algorithme ne doit pas dépasser quelques lignes : il faut hiérarchiser en utilisant autant de
niveaux que nécessaire. Cela vaut aussi pour les algorigrammes qui ne devraient pas encombrer plus
d’un demi A4 chacun.
7ALGO1.DOC 5/9
Algorithmique express jpc/IUFMPL Nantes
5. ELIMINATION DES GOTO
...
A
label XX
A B
Si sortie
label XX alors GOTO YY
fsi
C
B GOTO XX
label YY
D
...
Sortie?
La situation semble désespérée, surtout
qu’il s’agit souvent d’un algorithme de
constatation déduit de la
documentation.
label YY ...
A
B
D Tant que Non (sortie)
C
B
Refaire
D
...
7ALGO1.DOC 6/9
Algorithmique express jpc/IUFMPL Nantes
Corrigé des exercices sur le Si : Topologie du Si
Si_1 Si_2
Calculer_moyenne
défectueux ?
Déclarer_Satisfaisant Déclarer_Insuffisant
On vérifie visuellement qu’il s’agit bien d’un emploi correct du si : le test crée une dérivation ( l’alternative)
provisoire par deux chemins (un coté alors, un coté sinon) suivie d’un confluent immédiat. Dans Si_2, la
branche sinon est vide, ce qui est permis.
C’est précisément en cela que les algorithmes Si_3 et Si_4 sont des contre-exemples qui font du “si” un usage
interdit : ce qu’ils cachent sous une apparente alternative, c’est un contrôle de boucle qui ne pourrait être
légitimement formulé qu’à l’aide d’une des deux tournures légitimes (répéter...ou... tantque )
Si_3 Si_4
réussi ? Pas_fini ?
fin
Cela interdit donc les synonymes plus ou moins avoués de nos mots clés : “continuer”, “reprendre”,
“arrêter”, “passer à”, “stop”, “sauter en”, “selon”, “en fonction de”, “exécuter”, “attendre”, “choisir”,
“recommencer”, “soit que...soit que”, “quand”, “dès que”, “après que”, “vérifier”, “au cas où”, etc...
sont donc très dangereux et comme tels, à surveiller.
7ALGO1.DOC 7/9
Algorithmique express jpc/IUFMPL Nantes
Corrigé des exercices sur le Tant que :
Les trois algorigrammes ont la même topologie . les algorigrammes sont identiques, corrigeons-en deux :
Tq_1 Tq_3 L’important est de noter que le test est en tête de
boucle et qu’il n’est jamais formulé avec la
conjonction “si”. Noter de plus que le test porte
sous_tension ?
sur la condition d’entrée ou maintien en boucle.
q >1 ?
Il est donc toujours possible que la boucle ne soit
q←q/2 mesurer pas exécutée, il suffit de penser au cas où quand
on en arrive au test, les conditions soient telles
qu’il échoue :
calculer
Quand q vaut 1 ou 0 avant l’entrée Tq_1
Quand la leçon est déjà sue pour Tq_2
émettre Quand l’alimentation est coupée pour Tq_3
calcul
n←n-1 ←Vc+εε
Vc←
émission
n=0 ? Vc>VT ?
n=0 ?
Il n’y a que 2 différences avec la boucle Tant que, c’est que l’action est toujours exécutée au moins une fois
puisque le test est G en sortie de boucle, et que le test porte non plus sur le maintien en boucle mais sur la
sortie.
Les deux structures se ressemblant fortement, il en résulte que l’algorithmique laisse très peu de liberté pour
décrire les boucles et le débutant s’y sent un peu à l’étroit, d’où la tentation “d’innover”... à laquelle il faut
résister. L’exigence de placer le test en tête ou en queue de boucle, jamais au milieu, correspond à un principe
simple :
Une boucle algorithmique est toujours exécutée un nombre entier de fois.
7ALGO1.DOC 8/9
Algorithmique express jpc/IUFMPL Nantes
Corrigé de l’exercice sur le GOTO :
C test
test
B
test
7ALGO1.DOC 9/9