Syllabus ALGO1
Syllabus ALGO1
Cours d’Algorithmqiue dispensé en BAC1 IG/ I.S.P-Kalemie par Léon BYAMUNGU TCH. Assistant2
Année Académique 2023-2024.
Tél. +243 816 908 922 ; +243 979 467 252 .E-mail : leonbyams@[Link] 1
Objectifs spécifiques
☞ Permettre à l’étudiant d’obtenir de la machine un travail
effectué à notre place,
☞ Expliquer à la «machine» comment elle doit s'y prendre,
☞ Savoir expliciter son raisonnement,
☞ Savoir formaliser son raisonnement
☞ Concevoir (et écrire) des algorithmes: séquence d’instructions
qui décrit comment résoudre un problème particulier.
Cours d’Algorithmqiue dispensé en BAC1 IG/ I.S.P-Kalemie par Léon BYAMUNGU TCH. Assistant2
Année Académique 2023-2024.
Tél. +243 816 908 922 ; +243 979 467 252 .E-mail : leonbyams@[Link] 2
INTRODUCTION GENERALE
1. Définition.
Un algorithme, est une séquence d’opérations visant à la résolution
d’un problème en un temps fini, qui une fois exécuté correctement.
Si l’algorithme est correct, le résultat est le résultat voulu,
Si l’algorithme est faux, le résultat est, disons, aléatoire.
L’Algorithme c’est un mot dérivé du nom du mathématicien
Al_Khwarizmi qui a vécu au XIII ème siècle, était membre d’une académie des
sciences à Bagdad. Un savant arabe natif de la ville persane appelée «
Khawarezm ». Ce savant développa par ailleurs l'Algèbre, terme provenant
de l'arabe « Al-Jabr », qui signifie compensation, sous-entendu « la
compensation par la recherche de la variable inconnue X afin d'équilibrer
les résultats des calculs ».
Un algorithme prend des données en entrée, exprime un traitement
particulier et fournit des données en sortie.
Cours d’Algorithmqiue dispensé en BAC1 IG/ I.S.P-Kalemie par Léon BYAMUNGU TCH. Assistant2
Année Académique 2023-2024.
Tél. +243 816 908 922 ; +243 979 467 252 .E-mail : leonbyams@[Link] 3
ne conditionne pas en soi sa complexité : de longs algorithmes peuvent être
finalement assez simples, et de petits très compliqués).
2. Algorithmique et programmation
a) Définition :
Le Programme est une série d’instructions pouvant s’exécuter en
séquence, ou en parallèle (parallélisme matériel) qui réalise (implémente)
un algorithme.
Apprendre l’algorithmique, c’est apprendre à manier la structure logique
d’un programme informatique. Cette dimension est présente quelle que soit
le langage de programmation ; mais lorsqu’on programme dans un langage
(en C, en Visual Basic, etc.) on doit en plus se colleter les problèmes de
syntaxe, ou de types d’instructions, propres à ce langage. Apprendre
l’algorithmique de manière séparée, c’est donc sérier (arranger) les
difficultés pour mieux les vaincre.
b) Définition des concepts
☞ Programme : une suite d’instructions permettant de réaliser une
ou plusieurs tâche(s), de résoudre un problème, de manipuler des
données. Le programme est l’expression d’un algorithme dans n
langage donné pour une machine donnée.
☞ Logiciel : désigne l’ensemble de tous les programmes. Mais un
logiciel est aussi un programme.
Cours d’Algorithmqiue dispensé en BAC1 IG/ I.S.P-Kalemie par Léon BYAMUNGU TCH. Assistant2
Année Académique 2023-2024.
Tél. +243 816 908 922 ; +243 979 467 252 .E-mail : leonbyams@[Link] 4
C’est pourquoi on utilise généralement une série de conventions appelée «
pseudo-code », qui ressemble à un langage de programmation authentique
dont on aurait évacué la plupart des problèmes de syntaxe. Ce pseudo-code
est susceptible de varier légèrement d’un livre (ou d’un enseignant) à un
autre. C’est bien normal : le pseudo-code, encore une fois, est purement
conventionnel ; aucune machine n’est censée le reconnaître.
Cours d’Algorithmqiue dispensé en BAC1 IG/ I.S.P-Kalemie par Léon BYAMUNGU TCH. Assistant2
Année Académique 2023-2024.
Tél. +243 816 908 922 ; +243 979 467 252 .E-mail : leonbyams@[Link] 5
CHAP. I. LES VARIABLES
1. Définition
Une variable est un nom donné à une valeur. Le nom de variable
représente une et une seule valeur qui peut évoluer au cours du temps.
Dans un programme informatique, on va avoir en permanence besoin de
stocker provisoirement des valeurs. Il peut s’agir de données issues du
disque dur, fournies par l’utilisateur (frappées au clavier). Il peut aussi
s’agir de résultats obtenus par le programme, intermédiaires ou définitifs.
Ces données peuvent être de plusieurs types: elles peuvent être des
nombres, du texte, etc. Dès que l’on a besoin de stocker une
information au cours d’un programme, on utilise une variable.
Cours d’Algorithmqiue dispensé en BAC1 IG/ I.S.P-Kalemie par Léon BYAMUNGU TCH. Assistant2
Année Académique 2023-2024.
Tél. +243 816 908 922 ; +243 979 467 252 .E-mail : leonbyams@[Link] 6
* Déclaration en C : float tension, puissance ;
Cours d’Algorithmqiue dispensé en BAC1 IG/ I.S.P-Kalemie par Léon BYAMUNGU TCH. Assistant2
Année Académique 2023-2024.
Tél. +243 816 908 922 ; +243 979 467 252 .E-mail : leonbyams@[Link] 7
ralentissements notables à l’exécution, voire un plantage pur et simple de
l’ordinateur. Alors, autant prendre dès le début de bonnes habitudes
d’hygiène.
En algorithmique, on ne se tracassera pas trop avec les sous-types de
variables numériques.
On se contentera donc de préciser qu'il s'agit d'un nombre, en gardant en
tête que dans un vrai langage, il faudra être plus précis.
En pseudo-code, une déclaration de variables aura ainsi cette tête :
Variable g en Numérique
ou encore
Variables PrixHT, TauxTVA, PrixTTC en Numérique
Les variables peuvent contenir bien d’autres informations que des nombres.
Sans cela, on serait un peu embêté dès que l’on devrait stocker un nom de
famille.
On dispose donc également du type alphanumérique (également appelé
type caractère, type chaîne ou en anglais, le type string.
Dans une variable de ce type, on stocke des caractères, qu’il s’agisse de
lettres, de signes de ponctuation, d’espaces, ou même de chiffres. Le
nombre maximal de caractères pouvant être stockés dans une seule
variable string dépend du langage utilisé.
Un groupe de caractères, qu’il soit ou non stocké dans une variable est
appelé chaîne de caractères.
Cours d’Algorithmqiue dispensé en BAC1 IG/ I.S.P-Kalemie par Léon BYAMUNGU TCH. Assistant2
Année Académique 2023-2024.
Tél. +243 816 908 922 ; +243 979 467 252 .E-mail : leonbyams@[Link] 8
En pseudo-code, une chaîne de caractères est toujours notée entre
guillemets pour éviter deux sources principales de possibles confusions :
la confusion entre des nombres et des suites de chiffres. Par exemple,
423 peut représenter le nombre 423 (quatre cent vingt-trois), ou la
suite de caractères 4, 2, et 3. Et ce n’est pas du tout la même chose !
Avec le premier, on peut faire des calculs, avec le second, point du
tout. Dès lors, les guillemets permettent d’éviter toute
ambiguïté : s’il n’y en a pas, 423 est quatre cent vingt-trois. S’il y en a,
"423" représente la suite des chiffres 4, 2, 3.
L'autre confusion, plus grave et plus fréquente ; consiste à se
mélanger le nom d'une variable et son contenu.
Cours d’Algorithmqiue dispensé en BAC1 IG/ I.S.P-Kalemie par Léon BYAMUNGU TCH. Assistant2
Année Académique 2023-2024.
Tél. +243 816 908 922 ; +243 979 467 252 .E-mail : leonbyams@[Link] 9
Alors, maintenant, c'est certain, en algorithmique, il y a une question
de style : c'est exactement comme dans le langage courant, il y a plusieurs
manières de s'exprimer pour dire sur le fond la même chose.
3. L’instruction d’affectation
Cette seule chose qu’on puisse faire avec une variable, c’est l’affecter,
c’est-à-dire lui attribuer une valeur à une variable. L'instruction
d'affectation se note avec le signe ←
Ainsi :
Notation algorithmique : Sifa ←24 ou i← i+1 Attribue la valeur 24 à
la variable Sifa.
Notation en langage C : Sifa =3 ; ou i=i+1
Ceci, soit dit en passant, que Sifa soit une variable de type
numérique. Si Sifa a été défini dans un autre type, il faut bien comprendre
que cette instruction provoquera une erreur.
On peut en revanche sans aucun problème attribuer à une variable la
valeur d’une autre variable, telle quelle ou modifiée. Par exemple :
Frem ← Sifa Signifie que la valeur de Frem est maintenant celle de Sifa.
Notez bien que cette instruction n’a en rien modifié la valeur de Sifa :
une instruction d’affectation ne modifie que ce qui est situé à gauche de la
flèche.
Cours d’Algorithmqiue dispensé en BAC1 IG/ I.S.P-Kalemie par Léon BYAMUNGU TCH. Assistant2
Année Académique 2023-2024.
Tél. +243 816 908 922 ; +243 979 467 252 .E-mail : leonbyams@[Link] 10
Frem ← Sifa+ 4 Si Sifa contenait 12, Frem vaut maintenant 16. De même
que précédemment, Sifa vaut toujours 12.
Frem ← Frem + 1 Si Frem valait 6, il vaut maintenant 7. La valeur de Frem
est modifiée, puisque Frem est la variable située à gauche de la flèche.
Pour revenir à présent sur le rôle des guillemets dans les chaînes de
caractères et sur la confusion numéro 2 signalée plus haut, comparons
maintenant deux algorithmes suivants :
Exemple n°1
Exemple n°2
Début Début
Riri ← "Loulou"
Riri ← "Loulou" Fifi ← Riri
Fifi ← "Riri" Fin
Fin
La seule différence entre les deux algorithmes consiste dans la
présence ou dans l’absence des guillemets lors de la seconde affectation. Et
l'on voit que cela change tout !
Dans l'exemple n°1, ce que l'on affecte à la variable Fifi, c'est la suite de
caractères R – i – r - i. Et à la fin de l’algorithme, le contenu de la variable
Fifi est donc « Riri ».
Dans l'exemple n°2, en revanche, Riri étant dépourvu de guillemets, n'est
pas considéré comme une suite de caractères, mais comme un nom de
variable. Le sens de la ligne devient donc : « affecte à la variable Fifi le
contenu de la variable Riri ». A la fin de l’algorithme n°2, la valeur de la
variable Fifi est donc « Loulou ». Ici, l’oubli des guillemets conduit certes à
un résultat différent.
C’est un cas très fréquent, que généralement, lorsqu’on oublie les
guillemets lors d’une affectation de chaîne, ce qui se trouve à droite du
signe d’affectation ne correspond à aucune variable précédemment
déclarée et affectée. Dans ce cas, l’oubli des guillemets se solde
immédiatement par une erreur d’exécution.
Ceci est une simple illustration. Mais elle résume l’ensemble des problèmes
qui surviennent lorsqu’on oublie la règle des guillemets aux chaînes de
caractères.
Cours d’Algorithmqiue dispensé en BAC1 IG/ I.S.P-Kalemie par Léon BYAMUNGU TCH. Assistant2
Année Académique 2023-2024.
Tél. +243 816 908 922 ; +243 979 467 252 .E-mail : leonbyams@[Link] 11
3.2. Ordre des instructions.
Il est clair que dans le premier cas la valeur finale de A est 12, dans
l’autre elle est 34 .
Il est tout aussi clair que ceci ne doit pas nous étonner. Lorsqu’on indique le
chemin à quelqu’un, dire « prenez tout droit sur 1km, puis à droite »
n’envoie pas les gens au même endroit que si l’on dit « prenez à droite puis
tout droit pendant 1 km ».
Enfin, il est également clair que si l’on met de côté leur vertu pédagogique,
les deux algorithmes ci-dessus sont parfaitement idiots ; à tout le moins ils
contiennent une incohérence. Il n’y a aucun intérêt à affecter une variable
pour l’affecter différemment juste après. En l’occurrence, on aurait tout
aussi bien atteint le même résultat en écrivant simplement :
Exemple 1 Exemple 2
Variable A Numérique Variable A Numérique
Début Début
A ← 12 A ← 34
Fin Fin
Cours d’Algorithmqiue dispensé en BAC1 IG/ I.S.P-Kalemie par Léon BYAMUNGU TCH. Assistant2
Année Académique 2023-2024.
Tél. +243 816 908 922 ; +243 979 467 252 .E-mail : leonbyams@[Link] 12
Début
A←1
B←A+3
A←3
Fin
Exercice 2. Quelles seront les valeurs des variables A, B et C après
exécution des instructions suivantes ?
Variables A, B, C Entier
Début
A←5
B←3
C←A+B
A←2
C←B–A
Fin
Exercice 3. Quelles seront les valeurs des variables A et B après exécution
des instructions suivantes ?
Variables A, B Entier
Début
A←5
B←A+4
A←A+1
B←A–4
Fin
Exercice 4. Quelles seront les valeurs des variables A, B et C après
exécution des instructions suivantes ?
Variables A, B, C Entier
Début
A←3
B ← 10
C←A+B
B←A+B
Cours d’Algorithmqiue dispensé en BAC1 IG/ I.S.P-Kalemie par Léon BYAMUNGU TCH. Assistant2
Année Académique 2023-2024.
Tél. +243 816 908 922 ; +243 979 467 252 .E-mail : leonbyams@[Link] 13
A←C
Fin
4. Expressions et opérateurs.
a) Opérateurs numériques :
Les quatre opérations arithmétiques sont.
+ : addition
- : soustraction
* : multiplication
/ : division
Mentionnons également le ^ qui signifie « puissance ». 45 au carré
s’écrira donc 45 ^ 2.
Cours d’Algorithmqiue dispensé en BAC1 IG/ I.S.P-Kalemie par Léon BYAMUNGU TCH. Assistant2
Année Académique 2023-2024.
Tél. +243 816 908 922 ; +243 979 467 252 .E-mail : leonbyams@[Link] 14
Enfin, on a le droit d’utiliser les parenthèses, avec les mêmes règles qu’en
mathématiques. La multiplication et la division ont « naturellement »
priorité sur l’addition et la soustraction. Les parenthèses ne sont ainsi utiles
que pour modifier cette priorité naturelle.
Cela signifie qu’en informatique, 12 * 3 + 5 et (12 * 3) + 5 valent
strictement la même chose, à savoir 41. Pourquoi dès lors se fatiguer à
mettre des parenthèses inutiles ?
En revanche, 12 * (3 + 5) vaut 12 * 8 soit 96. Rien de difficile là-dedans,
que du normal.
b) Opérateur alphanumérique : &
Cet opérateur permet de concaténer, deux chaînes de caractères. Par
exemple :
Variables A, B, C Caractère
Début
A ← "Gloubi"
B ← "Boulga"
C←A&B
Fin
La valeur de C à la fin de l’algorithme est "GloubiBoulga"
Fin
[Link]. LECTURE ET ECRITURE
Variable A Numérique
Début
A ← 12^2
Fin
D’une part, ce programme nous donne le carré de 12. Mais si l’on
veut le carré d’un autre nombre que 12, il faut réécrire le programme.
D’autre part, le résultat est nécessairement calculé par la machine.
Mais elle le garde soigneusement pour elle, et l’utilisateur qui fait exécuter
ce programme, lui, ne saura jamais quel est le carré de 12.
C’est pourquoi, il existe des instructions pour permettre à la machine de
dialoguer avec l’utilisateur.
Cours d’Algorithmqiue dispensé en BAC1 IG/ I.S.P-Kalemie par Léon BYAMUNGU TCH. Assistant2
Année Académique 2023-2024.
Tél. +243 816 908 922 ; +243 979 467 252 .E-mail : leonbyams@[Link] 16
Dans un sens, ces instructions permettent à l’utilisateur de rentrer
des valeurs au clavier pour qu’elles soient utilisées par le programme.
Cette opération est la lecture.
Dans l’autre sens, d’autres instructions permettent au programme de
communiquer des valeurs à l’utilisateur en les affichant à l’écran. Cette
opération est l’écriture.
N.B : Quand l’utilisateur doit écrire au clavier, on appelle ça la lecture, et
quand il doit lire sur l’écran on appelle ça l’écriture.
Comme un algorithme, est une suite d’instructions qui programme la
machine, pas l’utilisateur ! Donc quand on dit à la machine de lire une
valeur, cela implique que l’utilisateur va devoir écrire cette valeur. Et quand
on demande à la machine d’écrire une valeur, c’est pour que l’utilisateur
puisse la lire.
Ainsi Lecture et écriture sont donc des termes qui comme toujours en
programmation, doivent être compris du point de vue de la machine qui
sera chargée de les exécuter. Et là, tout devient parfaitement logique.
Cours d’Algorithmqiue dispensé en BAC1 IG/ I.S.P-Kalemie par Léon BYAMUNGU TCH. Assistant2
Année Académique 2023-2024.
Tél. +243 816 908 922 ; +243 979 467 252 .E-mail : leonbyams@[Link] 17
Ecrire "Entrez votre nom : "
Lire NomFamille
Lecture et Ecriture sont des instructions algorithmiques qui ne présentent
pas de difficultés particulières, une fois qu’on a bien assimilé ce problème
du sens du dialogue (homme → machine, ou machine ← homme).
1. Définition.
Cours d’Algorithmqiue dispensé en BAC1 IG/ I.S.P-Kalemie par Léon BYAMUNGU TCH. Assistant2
Année Académique 2023-2024.
Tél. +243 816 908 922 ; +243 979 467 252 .E-mail : leonbyams@[Link] 19
Une condition est une comparaison
Elle est composée de trois éléments :
☞ une valeur
☞ un opérateur de comparaison
☞ une autre valeur
Les valeurs peuvent être a priori de n’importe quel type
(numériques, caractères…). Mais si l’on veut que la comparaison ait un
sens, il faut que les deux valeurs de la comparaison soient du même type !
2. Conditions composées.
Cours d’Algorithmqiue dispensé en BAC1 IG/ I.S.P-Kalemie par Léon BYAMUNGU TCH. Assistant2
Année Académique 2023-2024.
Tél. +243 816 908 922 ; +243 979 467 252 .E-mail : leonbyams@[Link] 20
En fait cette phrase cache deux conditions. Car elle revient à dire que
« Toto est supérieur à 5 et Toto est inférieur à 8 ». Il y a donc bien là deux
conditions, reliées par ce qu’on appelle un opérateur logique, le ET.
Cours d’Algorithmqiue dispensé en BAC1 IG/ I.S.P-Kalemie par Léon BYAMUNGU TCH. Assistant2
Année Académique 2023-2024.
Tél. +243 816 908 922 ; +243 979 467 252 .E-mail : leonbyams@[Link] 21
3. Tests imbriqués.
Graphiquement, on peut très facilement représenter un SI comme une
bifurcation de chemin de fer (ou une bifurcation de train électrique). Un SI
ouvre donc deux voies, correspondant à deux traitements différents. Mais il
y a des tas de situations où deux voies ne suffisent pas. Par exemple, un
programme devant donner l’état de l’eau selon sa température doit pouvoir
choisir entre trois réponses possibles (solide, liquide ou gazeuse).
Une première solution serait la suivante :
Variable Temp en Entier
Début
Ecrire "Entrez la température de l’eau :"
Lire Temp
Si Temp =< 0 Alors
Ecrire "C’est de la glace"
FinSi
Si Temp > 0 Et Temp < 100 Alors
Ecrire "C’est du liquide"
Finsi
Si Temp > 100 Alors
Ecrire "C’est de la vapeur"
Finsi
Fin
Vous constaterez que c’est un peu fatigant. Les conditions se
ressemblent plus ou moins, et surtout on oblige la machine à examiner trois
tests successifs alors que tous portent sur une même chose, la température
de l'eau (la valeur de la variable Temp). Il serait ainsi bien plus rationnel
d’imbriquer les tests de cette manière :
Cours d’Algorithmqiue dispensé en BAC1 IG/ I.S.P-Kalemie par Léon BYAMUNGU TCH. Assistant2
Année Académique 2023-2024.
Tél. +243 816 908 922 ; +243 979 467 252 .E-mail : leonbyams@[Link] 23
On peut dire que les boucles constituent la seule vraie structure
logique caractéristique de la programmation. Si vous avez utilisé un tableur
comme Excel, vous avez sans doute pu manier des choses équivalentes aux
variables (les cellules, les formules) et aux tests (la fonction SI…). Mais les
boucles, ça n'a aucun équivalent. Cela n'existe que dans les langages de
programmation proprement dits.
Cours d’Algorithmqiue dispensé en BAC1 IG/ I.S.P-Kalemie par Léon BYAMUNGU TCH. Assistant2
Année Académique 2023-2024.
Tél. +243 816 908 922 ; +243 979 467 252 .E-mail : leonbyams@[Link] 24
faudrait rajouter un SI. Et ainsi de suite, on peut rajouter des centaines de
SI, et écrire un algorithme aussi lourd.
La solution consistant à aligner des SI… en désordre est donc un danger. La
seule sortie est donc de lancer une structure de boucle, qui se présente
ainsi :
TantQue booléen
…
Instructions
…
FinTantQue
Le principe est simple : le programme arrive sur la ligne du TantQue. Il
examine alors la valeur du booléen (qui peut être une variable booléenne
ou, plus fréquemment, une condition). Si cette valeur est VRAI, le
programme exécute les instructions qui suivent, jusqu’à ce qu’il rencontre
la ligne FinTantQue. Il retourne ensuite sur la ligne du TantQue, procède au
même examen, et ainsi de suite. Le manège enchanté ne s’arrête que
lorsque le booléen prend la valeur FAUX.
Illustration avec notre problème de contrôle de saisie. Une première
approximation de la solution consiste à écrire :
Variable Rep en Caractère
Début
Ecrire "Voulez vous un café ? (O/N)"
TantQue Rep <> "O" et Rep <> "N"
Lire Rep
FinTantQue
Fin
Là, on a le squelette de l’algorithme correct. Mais de même qu’un
squelette ne suffit pas pour avoir un être vivant viable, il va nous falloir
ajouter quelques muscles et organes sur cet algorithme pour qu’il
fonctionne correctement.
Son principal défaut est de provoquer une erreur à chaque exécution. En
effet, l’expression booléenne qui figure après le TantQue interroge la
valeur de la variable Rep. Malheureusement, cette variable, si elle a été
Cours d’Algorithmqiue dispensé en BAC1 IG/ I.S.P-Kalemie par Léon BYAMUNGU TCH. Assistant2
Année Académique 2023-2024.
Tél. +243 816 908 922 ; +243 979 467 252 .E-mail : leonbyams@[Link] 25
déclarée, n’a pas été affectée avant l’entrée dans la boucle. On teste donc
une variable qui n’a pas de valeur, ce qui provoque une erreur et l’arrêt
immédiat de l’exécution. Pour éviter ceci, on n’a pas le choix : il faut que la
variable Rep ait déjà été affectée avant qu’on en arrive au premier tour de
boucle. Pour cela, on peut faire une première lecture de Rep avant la
boucle. Dans ce cas, celle-ci ne servira qu’en cas de mauvaise saisie lors de
cette première lecture. L’algorithme devient alors :
Variable Rep en Caractère
Début
Ecrire "Voulez vous un café ? (O/N)"
Lire Rep
TantQue Rep <> "O" et Rep <> "N"
Lire Rep
FinTantQue
Fin
Une autre possibilité, fréquemment employée, consiste à ne pas lire,
mais à affecter arbitrairement la variable avant la boucle. Arbitrairement ?
Pas tout à fait, puisque cette affectation doit avoir pour résultat de
provoquer l’entrée obligatoire dans la boucle. L’affectation doit donc faire
en sorte que le booléen soit mis à VRAI pour déclencher le premier tour de
la boucle. Dans notre exemple, on peut donc affecter Rep avec n’importe
quelle valeur, hormis « O » et « N » : car dans ce cas, l’exécution sauterait
la boucle, et Rep ne serait pas du tout lue au clavier. Cela donnera par
exemple :
Variable Rep en Caractère
Début
Rep ← "X"
Ecrire "Voulez-vous un café ? (O/N)"
TantQue Rep <> "O" et Rep <> "N"
Lire Rep
FinTantQue
Fin
Cours d’Algorithmqiue dispensé en BAC1 IG/ I.S.P-Kalemie par Léon BYAMUNGU TCH. Assistant2
Année Académique 2023-2024.
Tél. +243 816 908 922 ; +243 979 467 252 .E-mail : leonbyams@[Link] 26
Cette manière de procéder est à connaître, car elle est employée très
fréquemment.
Il faut remarquer que les deux solutions (lecture initiale de Rep en
dehors de la boucle ou affectation de Rep) rendent toutes deux l’algorithme
satisfaisant, mais présentent une différence assez importante dans leur
structure logique.
En effet, si l’on choisit d’effectuer une lecture préalable de Rep, la boucle
ultérieure sera exécutée uniquement dans l’hypothèse d’une mauvaise
saisie initiale. Si l’utilisateur saisit une valeur correcte à la première
demande de Rep, l’algorithme passera sur la boucle sans entrer dedans.
En revanche, avec la deuxième solution (celle d’une affectation
préalable de Rep), l’entrée de la boucle est forcée, et l’exécution de celle-ci,
au moins une fois, est rendue obligatoire à chaque exécution du
programme. Du point de vue de l’utilisateur, cette différence est tout à fait
mineure ; et à la limite, il ne la remarquera même pas. Mais du point de vue
du programmeur, il importe de bien comprendre que les cheminements des
instructions ne seront pas les mêmes dans un cas et dans l’autre.
Pour terminer, remarquons que nous pourrions finir nos solutions en
ajoutant des affichages de libellés qui font encore un peu défaut. Ainsi, si
l’on est un programmeur zélé, la première solution (celle qui inclut deux
lectures de Rep, une en dehors de la boucle, l’autre à l’intérieur) pourrait
devenir :
Variable Rep en Caractère
Début
Ecrire "Voulez vous un café ? (O/N)"
Lire Rep
TantQue Rep <> "O" et Rep <> "N"
Ecrire "Vous devez répondre par O ou N. Recommencez"
Lire Rep
FinTantQue
Ecrire "Saisie acceptée"
Fin
Quant à la deuxième solution, elle pourra devenir :
Variable Rep en Caractère
Début
Cours d’Algorithmqiue dispensé en BAC1 IG/ I.S.P-Kalemie par Léon BYAMUNGU TCH. Assistant2
Année Académique 2023-2024.
Tél. +243 816 908 922 ; +243 979 467 252 .E-mail : leonbyams@[Link] 27
Rep ← "X"
Ecrire "Voulez vous un café ? (O/N)"
TantQue Rep <> "O" et Rep <> "N"
Lire Rep
Si Rep <> "O" et Rep <> "N" Alors
Ecrire "Saisie Erronée, Recommencez"
FinSi
FinTantQue
Fin
Cours d’Algorithmqiue dispensé en BAC1 IG/ I.S.P-Kalemie par Léon BYAMUNGU TCH. Assistant2
Année Académique 2023-2024.
Tél. +243 816 908 922 ; +243 979 467 252 .E-mail : leonbyams@[Link] 28
boucle uniquement avec un « TantQue ». Le seul intérêt du « Pour » est
d’épargner un peu de fatigue au programmeur, en lui évitant de gérer lui-
même la progression de la variable qui lui sert de compteur (on parle
d’incrémentation, encore un mot qui fera forte impression sur votre
entourage).
Dit d’une autre manière, la structure « Pour … Suivant » est un cas
particulier de TantQue : celui où le programmeur peut dénombrer à l’avance
le nombre de tours de boucles nécessaires.
Il faut noter que dans une structure « Pour … Suivant », la progression du
compteur est laissée à votre libre disposition. Dans la plupart des cas, on a
besoin d’une variable qui augmente de 1 à chaque tour de boucle. On ne
précise alors rien à l’instruction « Pour » ; celle-ci, par défaut, comprend
qu’il va falloir procéder à cette incrémentation de 1 à chaque passage, en
commençant par la première valeur et en terminant par la deuxième.
Exercices
1. Ecrire un algorithme qui demande à l’utilisateur un nombre compris
entre 1 et 3 jusqu’à ce que la réponse convienne.
2. Ecrire un algorithme qui demande un nombre compris entre 10 et 20,
jusqu’à ce que la réponse convienne. En cas de réponse supérieure à
20, on fera apparaître un message : « Plus petit ! », et inversement, «
Plus grand ! » si le nombre est inférieur à 10.
Cours d’Algorithmqiue dispensé en BAC1 IG/ I.S.P-Kalemie par Léon BYAMUNGU TCH. Assistant2
Année Académique 2023-2024.
Tél. +243 816 908 922 ; +243 979 467 252 .E-mail : leonbyams@[Link] 29
3. Ecrire un algorithme qui demande un nombre de départ, et qui
ensuite affiche les dix nombres suivants. Par exemple, si l'utilisateur
entre le nombre 17, le programme affichera les nombres de 18 à 27.
4. Ecrire un algorithme qui demande un nombre de départ, et qui
ensuite écrit la table de multiplication de ce nombre, présentée comme
suit (cas où l'utilisateur entre le nombre 7) :
Table de 7 : 7x1=7
7 x 2 = 14
7 x 3 = 21
…
7 x 10 = 70
Je vous avais annoncé qu’il y a avait quatre structures logiques dans
la programmation et on les a toutes passées en revue.
Mais il vous reste tout de même quelques petites choses à apprendre…
LES TABLEAUX
1. Utilité des tableaux
Imaginons que dans un programme, nous ayons besoin
simultanément de 12 valeurs (par exemple, des notes pour calculer une
moyenne). Evidemment, la seule solution dont nous disposons à l’heure
actuelle consiste à déclarer douze variables, appelées par exemple Notea,
Noteb, Notec, etc. Bien sûr, on peut opter pour une notation un peu
simplifiée, par exemple N1, N2, N3, etc. Mais cela ne change pas
fondamentalement notre problème, car arrivé au calcul, et après une
succession de douze instructions « Lire » distinctes, cela donnera
obligatoirement une atrocité (férocité) du genre :
Moy ← (N1+N2+N3+N4+N5+N6+N7+N8+N9+N10+N11+N12)/12
Pour un peu que nous soyons dans un programme de gestion avec
quelques centaines ou quelques milliers de valeurs à traiter, alors là c’est le
suicide direct.
Si en plus on est dans une situation où l’on ne peut pas savoir d’avance
combien il y aura de valeurs à traiter, là on est carrément cuits.
C’est pourquoi la programmation nous permet de rassembler toutes
ces variables en une seule, au sein de laquelle chaque valeur sera désignée
Cours d’Algorithmqiue dispensé en BAC1 IG/ I.S.P-Kalemie par Léon BYAMUNGU TCH. Assistant2
Année Académique 2023-2024.
Tél. +243 816 908 922 ; +243 979 467 252 .E-mail : leonbyams@[Link] 30
par un numéro. En bon français, cela donnerait donc quelque chose du
genre « la note numéro 1 », « la note numéro 2 », « la note numéro 8 ».
C’est largement plus pratique.
N.B. : Un ensemble de valeurs portant le même nom de variable et
repérées par un nombre, s’appelle un tableau, ou encore une variable
indicée.
Le nombre qui sert à repérer chaque valeur dans un tableau, s’appelle
l’indice. Chaque fois que l’on doit désigner un élément du tableau, on fait
figurer le nom du tableau, suivi de l’indice de l’élément, entre parenthèses.
Cours d’Algorithmqiue dispensé en BAC1 IG/ I.S.P-Kalemie par Léon BYAMUNGU TCH. Assistant2
Année Académique 2023-2024.
Tél. +243 816 908 922 ; +243 979 467 252 .E-mail : leonbyams@[Link] 31
ça déroute, mais vous verrez, avec le temps, on se fait à tout, même
au pire.
Par exemple, pour effectuer notre calcul de moyenne, cela donnera par
exemple :
Tableau Note(11) en Numérique
Variables Moy, Som en Numérique
Début
Pour i ← 0 à 11
Ecrire "Entrez la note n°",
i Lire Note(i)
i Suivant
Som ← 0
Pour i ← 0 à 11
Som ← Som + Note(i)
i Suivant
Moy ← Som / 12
Fin
Cours d’Algorithmqiue dispensé en BAC1 IG/ I.S.P-Kalemie par Léon BYAMUNGU TCH. Assistant2
Année Académique 2023-2024.
Tél. +243 816 908 922 ; +243 979 467 252 .E-mail : leonbyams@[Link] 32
NB : On a fait deux boucles successives pour plus de lisibilité, mais on
aurait tout aussi bien pu n’en écrire qu’une seule dans laquelle on aurait
tout fait d’un seul coup.
Remarque générale : l’indice qui sert à désigner les éléments d’un
tableau peut être exprimé directement comme un nombre en clair, mais il
peut être aussi une variable, ou une expression calculée.
Dans un tableau, la valeur d’un indice doit toujours :
être égale au moins à 0 (dans quelques rares langages, le premier
élément d’un tableau porte l’indice 1). Mais comme je l'ai déjà écrit
plus haut, nous avons choisi ici de commencer la numérotation des
indices à zéro, comme c’est le cas en langage C et en Visual Basic.
Donc attention, Truc(6) est le septième élément du tableau Truc !
être un nombre entier Quel que soit le langage, l’élément
Truc(3,1416) n’existe jamais.
être inférieure ou égale au nombre d’éléments du tableau (moins 1, si
l’on commence la numérotation à zéro). Si le tableau Truc a été
déclaré comme ayant 25 éléments, la présence dans une ligne, sous
une forme ou sous une autre, de Truc(32) déclenchera
automatiquement une erreur.
A retenir : Si l’on est dans un langage où les indices commencent à zéro, il
faut en tenir compte à la déclaration :
Tableau Note(13) en Numérique
...créera un tableau de 14 éléments, le plus petit indice étant 0 et le plus
grand 13.
LE GAG DE LA JOURNEE Il consiste à confondre, dans sa tête et / ou dans
un algorithme, l’indice d’un élément d’un tableau avec le contenu de cet
élément.
3. Tableaux dynamiques
Il arrive fréquemment que l’on ne connaisse pas à l’avance le nombre
d’éléments que devra comporter un tableau. Bien sûr, une solution
consisterait à déclarer un tableau gigantesque (10 000 éléments) pour être
sûr que « ça rentre ». Mais d’une part, on n’en sera jamais parfaitement
Cours d’Algorithmqiue dispensé en BAC1 IG/ I.S.P-Kalemie par Léon BYAMUNGU TCH. Assistant2
Année Académique 2023-2024.
Tél. +243 816 908 922 ; +243 979 467 252 .E-mail : leonbyams@[Link] 33
sûr, d’autre part, en raison de l’immensité de la place mémoire réservée –
et la plupart du temps non utilisée, c’est un chaos préjudiciable à la
rapidité, voire à la viabilité, de notre algorithme.
Aussi, pour relever à ce genre de situation, a-t-on la possibilité de déclarer
le tableau sans préciser au départ son nombre d’éléments. Ce n’est que
dans un second temps, au cours du programme, que l’on va fixer ce
nombre via une instruction de redimensionnement : Redim.
Notez que tant qu’on n’a pas précisé le nombre d’éléments d’un tableau,
d’une manière ou d’une autre, ce tableau est inutilisable.
Exemple : on veut faire saisir des notes pour un calcul de moyenne, mais
on ne sait pas combien il y aura de notes à saisir. Le début de l’algorithme
sera quelque chose du genre :
Tableau Notes () en Numérique
Variable nb en Numérique
Début
Ecrire "Combien y a-t-il de notes à saisir ?"
Lire nb
Redim Notes(nb-1)
…
Cette technique n’a rien de sorcier, mais elle fait partie de l’arsenal de base
de la programmation en gestion.
Exercices
1. Ecrire un algorithme qui déclare et remplisse un tableau de 7 valeurs
numériques en les mettant toutes à zéro.
Cours d’Algorithmqiue dispensé en BAC1 IG/ I.S.P-Kalemie par Léon BYAMUNGU TCH. Assistant2
Année Académique 2023-2024.
Tél. +243 816 908 922 ; +243 979 467 252 .E-mail : leonbyams@[Link] 34
4. Que produit l’algorithme suivant ?
Tableau Nb(5) en Entier
Variable i en Entier
Début
Pour i ← 0 à 5
Nb(i) ← i * i
i suivant
Pour i ← 0 à 5
Ecrire Nb(i)
i suivant
Fin
Peut-on simplifier cet algorithme avec le même résultat ?
Cours d’Algorithmqiue dispensé en BAC1 IG/ I.S.P-Kalemie par Léon BYAMUNGU TCH. Assistant2
Année Académique 2023-2024.
Tél. +243 816 908 922 ; +243 979 467 252 .E-mail : leonbyams@[Link] 35
Cela veut dire : réserve-moi un espace de mémoire pour 7 x 7 entiers,
et quand j’aurai besoin de l’une de ces valeurs, je les repèrerai par deux
indices (comme à la bataille navale, ou Excel, la seule différence étant que
pour les coordonnées, on n’utilise pas de lettres, juste des chiffres).
Pour notre problème de dames, les choses vont sérieusement
s’éclaircir. La case qui contient le pion est dorénavant Cases (i, j). Et les
quatre cases disponibles sont Cases (i-1, j-1), Cases (i-1, j+1), Cases (i+1, j-
1) et Cases(i+1, j+1).
5. Tableaux à n dimensions
Si vous avez compris le principe des tableaux à deux dimensions, sur
le fond, il n’y a aucun problème à passer au maniement de tableaux à trois,
quatre, pourquoi pas neuf dimensions. C’est exactement la même chose. Si
je déclare un tableau Titi (2, 4, 3, 3), il s’agit d’un espace mémoire
contenant 3 x 5 x 4 x 4 = 240 valeurs. Chaque valeur y est repérée par
quatre coordonnées.
Exercices
1. Écrivez un algorithme remplissant un tableau de 6 sur 13, avec des zéros.
2. Quel résultat produira cet algorithme ?
Tableau X(1, 2) en Entier
Variables i, j, val en Entier
Début
Val ← 1
Pour i ← 0 à 1
Pour j ← 0 à 2
X(i, j) ← Val
Val ← Val + 1
j Suivant
i Suivant
Cours d’Algorithmqiue dispensé en BAC1 IG/ I.S.P-Kalemie par Léon BYAMUNGU TCH. Assistant2
Année Académique 2023-2024.
Tél. +243 816 908 922 ; +243 979 467 252 .E-mail : leonbyams@[Link] 36
Pour i ← 0 à 1
Pour j ← 0 à 2
Ecrire X(i, j)
j Suivant
i Suivant
Fin
Cours d’Algorithmqiue dispensé en BAC1 IG/ I.S.P-Kalemie par Léon BYAMUNGU TCH. Assistant2
Année Académique 2023-2024.
Tél. +243 816 908 922 ; +243 979 467 252 .E-mail : leonbyams@[Link] 37