Vous êtes sur la page 1sur 63

INTRODUCTION A L’ALGORITHME

Chapitre 1: Les variables


Semestre I
Niveau 1 Année:
Licence Info I
DUT Info IG
DUT Info Maintenance
Sommaire
1. Qu’est ce qu’un algorithme ?

1.1. A quoi servent les variables ?

1.2. Déclaration des variables

1.2.1 Les types de base

1.3. L'instruction d'affectation

1.3.1 Syntaxe, signification et ordre des instructions

1.4. Expressions et opérateurs


07/11/2018 2
1. Qu’est ce qu’un algorithme ?
Origine et Définition

Un algorithme
Le mot est une
algorithme vientsuite
du nom d’instructions
finied’un que l’on applique à un nombre
grand mathématicien
fini de données
Person: Muhammad dans Ibn Mūsāprécis
un ordre pour arrivergénéralement
al-Khuwārizmī, à un résultat.
simplifié en Al-Khwarizmi, né dans les années 780,
originaire de Khiva
L’algorithmique est ladans la région
science du Khwarezm
qui étudie qui lui a
les algorithmes.
donné son nom, dans l'actuel Ouzbékistan, mort vers 850 à
Elle s’intéresse à l’art de construire des algorithmes ainsi qu’a caractériser
Bagdad.
leur validité, leur robustesse, leur réutilisabilité, leur complexité ou leur
Il est également le père l’algèbre.
efficacité.

07/11/2018 3
1. Qu’est ce qu’un algorithme ?
Exemples
a) Dans la vie de tout les jours b) Une recette de cuisine
1- Le réveil sonne
2- Je me lève c) Un programme de calcul
3- J’enlève mon pyjama 1- Choisir un nombre
4- Je me douche 2- Lui ajouter 5
5- Je m’habille 3- Multiplier la somme obtenue par
6- Je prépare le café le nombre choisi
7- Je déjeune 4- Ajouter 4 à ce produit
8- Je prend mes affaires 5- Ecrire le résultat
9- J’ouvre la porte
10- Je sors
11- Je referme la porte
07/11/2018 4
1. Qu’est ce qu’un algorithme ?
Exemples
d) Trouver son chemin
Extrait d’un dialogue entre un touriste égaré et un autochtone.
– Pourriez-vous m’indiquer le chemin de la gare, s’il vous plait ?
– Oui bien sûr : vous allez tout droit jusqu’au prochain carrefour, vous prenez à gauche au carrefour et
ensuite la troisième à droite, et vous verrez la gare juste en face de vous.
– Merci.

Dans ce dialogue, la réponse de l’autochtone est la description d’une suite ordonnée d’instructions
(allez tout droit, prenez à gauche, prenez la troisième à droite) qui manipulent des
données (carrefour, rues) pour réaliser la tâche désirée (aller à la gare). Ici encore, chacun a
déjà été confronté à ce genre de situation et donc, consciemment ou non, a déjà construit un
algorithme dans sa tête (ie. définir la suite d’instructions pour réaliser une tâche). Mais quand
on définit un algorithme, celui-ci ne doit contenir que des instructions compréhensibles par celui

07/11/2018 qui devra l’exécuter. 5


1. Qu’est ce qu’un algorithme ?
Propriétés
 Validité d’un algorithme
La validité d’un algorithme est son aptitude à réaliser exactement la tâche pour laquelle il a été conçu.
Si l’on reprend l’exemple d) de l’algorithme de recherche du chemin de la gare, l’étude de sa validité consiste à
s’assurer qu’on arrive effectivement à la gare en exécutant scrupuleusement les instructions dans l’ordre annoncé.

 Robustesse d’un algorithme


La robustesse d’un algorithme est son aptitude à se protéger de conditions anormales d’utilisation.
Dans l’exemple d), la question de la robustesse de l’algorithme se pose par exemple si le chemin proposé a été
pensé pour un piéton, alors que le « touriste égaré » est en voiture et que la « troisième à droite » est en sens interdit.

 Réutilisabilité d’un algorithme


La réutilisabilité d’un algorithme est son aptitude à être réutilisé pour résoudre des tâches équivalentes à celle pour
laquelle il a été conçu.
L’algorithme de recherche du chemin de la gare est-il réutilisable tel quel pour se rendre à la mairie ? A priori non,
sauf si la mairie est juste à côté de la gare.
07/11/2018 6
1. Qu’est ce qu’un algorithme ?
Propriétés
 Complexité d’un algorithme
La complexité d’un algorithme est le nombre d’instructions élémentaires à exécuter pour réaliser la tâche pour
laquelle il a été conçu.
Si le « touriste égaré » est un piéton, la complexité de l’algorithme de recherche de chemin peut se compter en
nombre de pas pour arriver à la gare.

 Efficacité d’un algorithme


L’efficacité d’un algorithme est son aptitude à utiliser de manière optimale les ressources du matériel qui l’exécute.

N’existerait-il pas un raccourci piétonnier pour arriver plus vite à la gare ?

07/11/2018 7
1.1. A quoi servent les variable?
Illustration
Un ordinateur ou une calculatrice qui exécute un algorithme doit stocker les
données entrées par l’utilisateur et les résultats de ses calculs dans un endroit
de sa mémoire. C’est ce que l’on appellera une Variable.

Une variable est un espace (case, boite) dans la mémoire de l’ordinateur


destiné à stocker provisoirement de l’information.

Elle associe un nom à une valeur qui peut éventuellement varier au cours
du temps.
Valeur 2 Valeur 3 Valeur 5

07/11/2018 Variable a Variable b Variable s 8


1.2. Déclaration des variable?
La première chose à faire avant de pouvoir utiliser une variable est de créer la boîte et de lui
coller une étiquette. Ceci se fait tout au début de l’algorithme, avant même les instructions
proprement dites. C’est ce qu’on appelle la déclaration des variables.

Déclaration une variable reviens à :


1- Réserver un espace en mémoire (Type de la donnée ou créer la boîte )

2- Attribuer un nom (Identificateur ou étiquette)


Le nom de la variable obéit à des règles suivantes:
• Il comporter des lettres (a…z, A…Z) et des chiffres (0..9),
• Il doit toujours commence par une lettre,
• Il ne doit pas contenir d’espace, des caractères accentués, des signes de ponctuation et des caractères
spéciaux ( $, €, &, @, #, +,*, -, ?) etc.
• Seule le caractère _ est accepté.
• La casse est significative: les caractères majuscules et minuscules sont distingués.

07/11/2018 9
1.2. Déclaration des variable?
• Par convention, on écrira l’essentiel des noms de variable en caractères minuscules (y compris la première
lettre). On n’utilisera les majuscules qu’à l’intérieur même du nom pour en augmenter éventuellement la
lisibilité.
NOTE:
1. Une constante est une variable dont la valeur associée ne varie pas au cours du programme. Nous
pourrons l’écrire entièrement en majuscule, par exemple PI= 3.14.

NOTE:
2. Pour déclarer une variable on utilise le mot clé Variable ou Var.
Exemple: Désigner les noms de variables corrects

a mille +a m@rque Note_final nom m@rque


2b miLLe b ball note_final fête _prix_HT
note no5te note1 prix total note_Final Modèl Modèl

07/11/2018 10
1.2.1 Les types de base
Il existe plusieurs type de variables, mais nous considérons cinq types de base :

Type Description Mot clé Exemple


Entier Permet de représenter des nombres entier 25, -318, 0, 15786
entiers signés ou pas signés.
Réel Permet de représenter des nombres en réel 45,78 ; -3,4 ;
virgule flottante.
59, 4*10 e -6
Caractère Permet de représenter des caractères. car ‘a’, ‘b’, ‘*’,’@’,’!’
Chaîne de caractère Permet de représenter des séquences chaîne ‟informatique”,
de caractères consécutifs.
‟elle marche vite”

Booléen Ce type est utilisé pour représenter la


véracité d’une expression. Il ne peut booléen
prendre que deux valeurs possible: ou
VRAI ou FAUX.
bool
VRAI, FAUX

07/11/2018 11
1.3. L’instruction d’affectation
1.3.1 Syntaxe, signification et ordre
L’affectation est l’opération qui consiste à attribuer une valeur à une variable.
L’instruction d’affectation est notée := ou 
Valeur 25
Variable := Valeur ou Variable  Valeur

Exemple : a 25
b:= -318
PI := 3,14 Variable a
N  59, 4*10 e -6
ville  ‘m’
module  ‟informatique”
phrase  ‟elle marche vite”
existe := VRAI

Important: une variable ne peut contenir qu'une seule valeur a la fois.


07/11/2018 12
1.3. L’instruction d’affectation
1.3.1 Syntaxe, signification et ordre
On peut sans aucun problème attribuer à une variable la valeur d’une autre variable, à condition qu’ils soient de
même type.
Exemple: chiffre 318
 Ordre des instructions:
note  chiffre
moyenne  note * 5 Il va de soi que l’ordre dans lequel les
instructions sont écrites va jouer un rôle essentiel
 Rôle des doubles cotes dans les chaînes: dans le résultat final.
Comparons maintenant deux exemples suivants: Considérons les deux algorithmes suivants :

Exemple n°1 Exemple n°2 Exemple n°1 Exemple n°2

riri  "Loulou" riri ← "Loulou" prix 450 prix← 50


fifi  "riri" fifi ← riri prix 50 prix← 450

07/11/2018 13
Exercices d’application
Énoncé des Exercices

Exercice 1.1
Quelles seront les valeurs des variables A et B après exécution des instructions suivantes ?
Variables A, B en Entier
Début
A←1
B←A+3
A←3
Fin

07/11/2018 14
Exercices d’application
Énoncé des Exercices

Exercice 1.2
Quelles seront les valeurs des variables A, B et C après exécution des instructions suivantes ?
Variables A, B, C en Entier
Début
A←5
B←3
C←A+B
A←2
C←B–A
Fin

07/11/2018 15
Exercices d’application
Énoncé des Exercices

Exercice 1.3
Quelles seront les valeurs des variables A et B après exécution des instructions suivantes ?
Variables A, B en Entier
Début
A←5
B←A+4
A←A+1
B←A–4
Fin

07/11/2018 16
Exercices d’application
Énoncé des Exercices

Exercice 1.4
Quelles seront les valeurs des variables A, B et C après exécution des instructions suivantes ?
Variables A, B, C en Entier
Début
A←3
B ← 10
C←A+B
B←A+B
A←C
Fin

07/11/2018 17
Exercices d’application
Énoncé des Exercices

Exercice 1.5
Quelles seront les valeurs des variables A et B après exécution des instructions suivantes ?
Variables A, B en Entier
Début
A←5
B←2
A←B
B←A
Fin
Moralité : les deux dernières instructions permettent-elles d’échanger les deux valeurs de B et A ?
Si l’on inverse les deux dernières instructions, cela change-t-il quelque chose ?

07/11/2018 18
Exercices d’application
Énoncé des Exercices

Exercice 1.6
Plus difficile, mais c’est un classique absolu, qu’il faut absolument maîtriser : écrire un algorithme permettant
d’échanger les valeurs de deux variables A et B, et ce quel que soit leur contenu préalable.

Exercice 1.7
Une variante du précédent : on dispose de trois variables A, B et C. Ecrivez un algorithme transférant à B la
valeur de A, à C la valeur de B et à A la valeur de C (toujours quels que soient les contenus préalables de ces
variables).

07/11/2018 19
1.4. Expressions et opérateurs
Les expressions
Si on fait le point, on s’aperçoit que dans une instruction d’affectation, on trouve :

• à gauche de la flèche, un nom de variable, et uniquement cela. En ce monde rempli de doutes qu’est celui
de l’algorithmique, c’est une des rares règles d’or qui marche à tous les coups : si on voit à gauche d’une
flèche d’affectation autre chose qu’un nom de variable, on peut être certain à 100% qu’il s’agit d’une
erreur.
• à droite de la flèche, ce qu’on appelle une expression. Voilà encore un mot qui est trompeur ; en effet, ce
mot existe dans le langage courant, où il revêt bien des significations. Mais en informatique, le terme
d’expression ne désigne qu’une seule chose, et qui plus est une chose très précise :
Une expression est un ensemble de valeurs, reliées par des opérateurs, et équivalent à une seule valeur

Exemple: a  b² + c²
chiffre 364+2*3
note  chiffre *0,75 / 100
moyenne  note * 5 - chiffre
L’expression située à droite de la flèche doit être du même type que la
07/11/2018 variable située à gauche. 20
1.4. Expressions et opérateurs
Les opérateurs
Un opérateur est un signe qui relie deux valeurs, pour produire un résultat.

Les opérateurs possibles dépendent du type des valeurs qui sont en jeu.

1- Opérateurs sur les entiers et les réels

La multiplication et la division sont prioritaire sur l’addition et la soustraction.

07/11/2018 21
1.4. Expressions et opérateurs
Les opérateurs
Un opérateur est un signe qui relie deux valeurs, pour produire un résultat.

Les opérateurs possibles dépendent du type des valeurs qui sont en jeu.

2- Opérateurs sur les entiers et les booléens

07/11/2018 22
1.4. Expressions et opérateurs
Les opérateurs
Un opérateur est un signe qui relie deux valeurs, pour produire un résultat.

Les opérateurs possibles dépendent du type des valeurs qui sont en jeu.

2- Opérateurs sur les caractères et les chaîne de caractères

&

07/11/2018 23
1.4. Expressions et opérateurs
Les opérateurs

Exercice 1.8 Exercice 1.9


Que produit l’algorithme suivant ? Que produit l’algorithme suivant ?
Variables A, B, C en Caractères Variables A, B, C en Caractères
Début Début
A ← "423" A ← "423"
B ← "12" B ← "12"
C←A+B C←A&B
Fin Fin

07/11/2018 24
INTRODUCTION A L’ALGORITHME

Chapitre 2: Les opérations


d’Entré/Sortie
Semestre I
Niveau 1 Année:
Licence Info I
DUT Info IG
DUT Info Maintenance
Sommaire

2. De quoi parle-t-on ?

2.1. Les instructions de lecture et écriture

2.2. Construction d’un algorithme simple

2.3. Langage naturel et langage algorithmique

07/11/2018 26
2. De quoi parle-t-on ?
Dans n’importe quel programme (Algorithme), des échanges d’information ont lieu entre l’utilisateur et la
machine. Ces échanges d’informations sont appelés opération d’entrée/sortie.

De nombreux algorithmes ont pour but de communiquer avec un utilisateur, cela se fait dans les deux sens, les
sorties sont des envois de messages a l'utilisateur, les entrées sont des informations fournies par l'utilisateur.

2.1. Les instructions de lecture et écriture


 Opération d’Entré :
Cette opération est encore appelée Lecture ou Saisie, elle consiste à entrer les données dans la machine, elle
s’effectue généralement par la saisie au clavier.

Syntaxe: Lire (NomVariable) ; Saisie (NomVariable)

La saisie interrompt le programme jusqu'a ce que l'utilisateur ait saisi une valeur au clavier. Une fois
cela fait, la valeur saisie est placée dans la variable NomVariable. Il est possible de saisir plusieurs
variables a la suite.
07/11/2018 27
2.1. Les instructions de lecture et écriture
Valeur
Exemple: Lire (A)
Lire (age)
Place les valeurs saisies par l'utilisateur dans les variables A, age.

 Opération de Sortie: age


Cette opération est encore appelée Ecriture ou Affichage, elle consiste à afficher des message et les résultats
des traitements de données à l’écran.

Syntaxe: Ecrire (NomVariable) ; Affiche (NomVariable)

Exemple 1: Ecrire (A) Affiche les valeurs des variables A, age à l’écran.
Ecrire (age)

Exemple 2: Ecrire ‟Bonjour le Monde”


Ecrire ‟Vous avez”, age
Lorsque l'on combine messages et variables dans les instruction d'affichage, on les sépare par des
virgules. Notez bien que ce qui est délimite par les doubles cotes est ache tel quel, alors tout ce qui
07/11/2018 n'est pas délimite par les doubles cotes est considère comme des variables. 28
2.2. Construction d’un algorithme simple
Construire un algorithme consiste par convention:
 à lui donner un nom,
 identifier les constantes: les nommer et les initialiser,
 identifier les variables: les nommer et indiquer leur types,
 écrire le corps de l’algorithme encadré par les mots clé
« Début » et « Fin ».

Le corps de l’algorithme contiendra les opérations de lecture et d’écriture des


variables qui le nécessitent. L’usage veut que l’on indente toute séquence
d’instructions en décalant le début de chaque ligne pour faciliter la compréhension
de l’algorithme.

07/11/2018 29
2.2. Construction d’un algorithme simple
Structure d’un algorithme simple Exemple: calcul de l’aire d’un cercle
Algorithme Nom-de-l’algorithme
Algorithme Calcul_AireCercle
Constantes: Constantes:
PI = 3,14
Variables : En entrer Variables :
En sortie rayon : réel
DEBUT surface : réel
DEBUT
Liste des instructions Ecrire (‘‘Entrez la valeur du rayon:’’)
Lire (rayon)
surface  PI * (rayon*rayon)
Ecrire (surface)
FIN FIN
Fin de l’algorithme Fin de l’algorithme

07/11/2018 30
2.3. Langage naturel et langage algorithmique
Exemple :
Créer un algorithme qui calcule et affiche l’aire d’un rectangle après que l’utilisateur a entré les
dimensions du rectangle.
Algorithme Calcul_Aire_rectangle
Langage naturel: Variables :
longueur, largeur : entier
aire : entier
Entrer la longueur L
DEBUT
Entrer la largeur l Ecrire « Entrer la longueur »
Aire = L*l Lire (longueur)
Afficher l’Aire Ecrire « Entrer la largueur »
Lire (largeur)
aire  longueur * largeur
Ecrire (aire)

FIN
Fin de l’algorithme
07/11/2018 31
Exercices d’application
Énoncé des Exercices
Exercice 2.1
Ecrire un programme qui demande un nombre à l’utilisateur, puis qui calcule et affiche le carré de ce nombre.

Exercice 2.2
Ecrire un programme qui lit le prix HT d’un article, le nombre d’articles et le taux de TVA, et qui fournit le
prix total TTC correspondant. Faire en sorte que des libellés apparaissent clairement.

Exercice 2.3
Ecrire un algorithme permettant de saisir trois nombres, d’en effectuer la somme, le produit et la moyenne,
puis les afficher.

Exercice 2.4
Ecrire un algorithme permettant de saisir deux nombres, de les permuter, puis les afficher.

Exercice 2.5
Ecrire un algorithme utilisant des variables de type chaîne de caractères, et affichant quatre variantes
possibles de la célèbre « belle marquise, vos beaux yeux me font mourir d’amour ». On ne se soucie pas de la
ponctuation, ni des majuscules.

07/11/2018 32
INTRODUCTION A L’ALGORITHME

Chapitre 3: Les structures de


contrôle (les tests)
Semestre I
Niveau 1 Année:
Licence Info I
DUT Info IG
DUT Info Maintenance
Sommaire

3.1. De quoi s'agit-il ?


3.2. Structure d'un test
3.3. Tests imbriqués
3.4. De l'aiguillage à la gare de tri
3.5. Variables booléennes
3.6. Structure conditionnelle multiple (le choix)

07/11/2018 34
3.1. De quoi s'agit-il ?
Reprenons le cas de notre « algorithme du touriste égaré ». Normalement, l’algorithme ressemble à quelque
chose comme : « Allez tout droit jusqu’au prochain carrefour, puis prenez à droite et ensuite la deuxième à
gauche, et vous y êtes ».

Mais en cas de doute légitime de votre part, cela pourrait devenir : « Allez tout droit jusqu’au prochain
carrefour et là regardez à droite. Si la rue est autorisée à la circulation, alors prenez la et ensuite c’est la
deuxième à gauche. Mais si en revanche elle est en sens interdit, alors continuez jusqu’à la prochaine à
droite, prenez celle-là, et ensuite la première à droite ».

Comparez ces 2 algorithmes et dite lequel est meilleur .

Le deuxième algorithme est meilleur au premier du fait qu’il prévoit, en fonction d’une situation pouvant se
présenter de deux façons différentes, deux façons différentes d’agir. Cela suppose que l’interlocuteur (le touriste)
sache analyser la condition que nous avons fixée à son comportement (« la rue est-elle en sens interdit ? ») pour
effectuer la série d’actions correspondante.

07/11/2018 35
3.2. Structure d’un test
Encore appelée structure conditionnelle, un test permet d’exécuter une séquence d’instructions si une
condition est vérifiée.

Syntaxe d’une structure de test simple

Si (condition) Alors
<Séquence d’instructions>
FinSi

La structure simple d’un test est relativement claire, arrivé à la première ligne (Si… Alors) la machine
examine la valeur de la condition. Si la cette valeur est VRAI, elle exécute la séquence d’instructions.

Cette séquence d’instructions peut être très brève comme très longue, cela n’a aucune importance. En
revanche, dans le cas où la condition est FAUX, l'ordinateur saute directement aux instructions situées après
le FinSi.

07/11/2018 36
3.2. Structure d’un test
Qu'est-ce qu'une condition ?

Une condition s’exprime sous forme d’une expression logique (Booléenne). Elle peut être:
• simple (condition simple): VRAI , FAUX
• ou combinée (plusieurs conditions composées) avec des opérateurs logiques ET, OU, NON, et des
opérateurs de comparaison.

Syntaxe d’une structure de test composée


Si (condition) Alors Si la condition est vérifiée alors la
<Séquence d’instructions 1> <Séquence d’instruction 1> s’exécute.
Dans le cas contraire, c’est la <Séquence
Sinon
d’instruction 2> qui va s’exécuter.
<Séquence d’instructions 2>
FinSi

07/11/2018 37
Exercices d’application
Énoncé des Exercices

Exercice 3.1
Ecrire un algorithme qui permet d’afficher la valeur absolue d’un nombre saisi au clavier par un utilisateur.

Exercice 3.2
Ecrire un algorithme qui demande un nombre à l’utilisateur, et l’informe ensuite si ce nombre est positif ou
négatif (on laisse de côté le cas où le nombre vaut zéro).

Exercice 3.3
Ecrire un algorithme permettant de comparer deux nombres réels.

Exercice 3.4
Ecrire un algorithme qui demande deux nombres à l’utilisateur et l’informe ensuite si leur produit est négatif ou
positif (on laisse de côté le cas où le produit est nul). Attention toutefois : on ne doit pas calculer le produit
des deux nombres.

07/11/2018 38
3.3. Tests imbriqués
Graphiquement, on peut très facilement représenter un SI comme un aiguillage de chemin de fer. 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).
Algorithme Etat_Eau
Variable temp : Entier
Début
Ecrire "Entrez la température de l’eau :"
Lire (temp) Note: Vous constaterez que c’est un peu laborieux. Les
Si temp =< 0 Alors conditions se ressemblent plus ou moins, et surtout on
Ecrire "C’est de la glace" oblige la machine à examiner trois tests successifs alors
FinSi que tous portent sur une même chose, la température de
Si (temp > 0 ET temp < 100) Alors l'eau (la valeur de la variable Temp).
Ecrire "C’est du liquide"
Finsi
Si temp > 100 Alors
Ecrire "C’est de la vapeur"
Finsi
Fin
07/11/2018 FinAlgorithme 39
3.3. Tests imbriqués
Il serait ainsi bien plus rationnel d’imbriquer les tests de cette manière :

Algorithme Etat_Eau Nous avons fait des économies : au lieu de devoir


Variable temp : Entier taper trois conditions, dont une composée, nous
Début n’avons plus que deux conditions simples. Mais
Ecrire "Entrez la température de l’eau :" aussi, et surtout, nous avons fait des économies sur
Lire (temp)
le temps d’exécution de l’ordinateur. Si la
Si temp =< 0 Alors
Ecrire "C’est de la glace"
température est inférieure à zéro, celui-ci écrit
Sinon Si (temp > 0 ET temp < 100) Alors dorénavant « C’est de la glace » et passe
Ecrire "C’est du liquide" directement à la fin, sans être ralenti par l’examen
Sinon d’autres possibilités (qui sont forcément fausses).
Ecrire "C’est de la vapeur"
FinSi Cette deuxième version n’est donc pas seulement
FinSi plus simple à écrire et plus lisible, elle est
Fin également plus performante à l’exécution.
FinAlgorithme
Les structures de tests imbriqués sont donc un
outil indispensable à la simplification et à
l’optimisation des algorithmes.
07/11/2018 40
Exercices d’application
Énoncé des Exercices

Exercice 3.5
Ecrire un algorithme qui permet de déterminer le plus grand de trois nombres saisis au clavier.

Exercice 3.6
Ecrire un algorithme qui demande deux nombres à l’utilisateur et l’informe ensuite si le produit est négatif ou
positif (on inclut cette fois le traitement du cas où le produit peut être nul). Attention toutefois, on ne doit
pas calculer le produit !

Exercice 3.7
Ecrire un algorithme qui demande l’âge d’un enfant à l’utilisateur. Ensuite, il l’informe de sa catégorie :
• "Poussin" de 6 à 7 ans
• "Pupille" de 8 à 9 ans
• "Minime" de 10 à 11 ans
• "Cadet" après 12 ans

Peut-on concevoir plusieurs algorithmes équivalents menant à ce résultat ?

07/11/2018 41
3.3. De l'aiguillage à la gare de tri
En effet, dans un programme, une structure SI peut être facilement comparée à un aiguillage de train. La
voie principale se sépare en deux, le train devant rouler ou sur l’une, ou sur l’autre, et les deux voies se
rejoignant tôt ou tard pour ne plus en former qu’une seule, lors du FinSi. On peut schématiser cela ainsi :

Si

FinSi

07/11/2018 42
3.3. De l'aiguillage à la gare de tri
Mais dans certains cas, ce ne sont pas deux voies qu’il nous faut, mais trois, ou même plus. Dans le cas de
l’état de l’eau, il nous faut trois voies pour notre « train », puisque l’eau peut être solide, liquide ou gazeuse.
Alors, nous n’avons pas eu le choix : pour deux voies, il nous fallait un aiguillage, pour trois voies il nous en
faut deux, imbriqués l’un dans l’autre.
Cette structure (telle que nous l’avons programmée à précédemment) devrait être schématisée comme suit :
Si

Vrai Condition Faux


1

Séquence 1 Vrai Condition Faux


2

Séquence 2 Séquence 3

FinSi
07/11/2018 FinSi 43
3.3. De l'aiguillage à la gare de tri
Ainsi, il est possible (mais non obligatoire), que l’algorithme initial :

Algorithme Etat_Eau Algorithme Etat_Eau


Variable temp : Entier Variable temp : Entier
Début Début
Ecrire "Entrez la température de l’eau :" Ecrire "Entrez la température de l’eau :"
Lire (temp) Lire (temp)
Si temp =< 0 Alors Si temp =< 0 Alors
Ecrire "C’est de la glace" Ecrire "C’est de la glace"
Sinon Si temp < 100 Alors SinonSi temp < 100 Alors
Ecrire "C’est du liquide" Ecrire "C’est du liquide"
Sinon Sinon
Ecrire "C’est de la vapeur" Ecrire "C’est de la vapeur"
FinSi FinSi
FinSi Fin
Fin FinAlgorithme
FinAlgorithme
Dans le cas de tests imbriqués, le Sinon et le Si peuvent
être fusionnés en un SinonSi. On considère alors qu’il
s’agit d’un seul bloc de test, conclu par un seul FinSi
07/11/2018 44
3.5. Variables booléennes
Jusqu’ici, pour écrire nos des tests, nous avons utilisé uniquement des conditions. Mais vous vous
rappelez qu’il existe un type de variables (les booléennes) susceptibles de stocker les valeurs VRAI ou
FAUX. En fait, on peut donc entrer des conditions dans ces variables, et tester ensuite la valeur de ces
variables.
Reprenons l’exemple de l’eau. On pourrait le réécrire ainsi :
Algorithme Etat_Eau
Variable temp : Entier
A, B: Booléen
Début
Ecrire "Entrez la température de l’eau :"
Lire (temp)
A temp =< 0
B temp < 100
Si A alors
Ecrire "C’est de la glace"
SinonSi B alors
Ecrire "C’est du liquide"
Sinon
Ecrire "C’est de la vapeur"
FinSi
Fin
FinAlgorithme
07/11/2018 45
3.6. Structure conditionnelle multiple (le choix)
Lorsque que l'on souhaite conditionner l'exécution de plusieurs ensembles d'instructions par la valeur que
prend une variable, plutôt que de faire des imbrications de Si a outrance, on préférera la structure
conditionnelle multiple. Elle se présente sous la forme suivante :

Suivant <valeur ou expression> faire


Valeur 1: <Séquence d’instructions 1>
Valeur 2: <Séquence d’instructions 2>
…………..
Valeur n: <Séquence d’instructions n>
Sinon <Séquence par défaut>
FinSuivant
Dans cette structure, on peut comparer un objet (variable ou expression) à toute une série de valeurs, et
d’exécuter , en fonction de la valeurs effective de l’objet, différentes séquence d’instructions. Une
séquence par défaut peut être prévu dans le cas où l’objet n’est égale à aucune des valeurs énumérées.

07/11/2018 46
3.6. Structure conditionnelle multiple (le choix)

Exercice 3.8
Ecrire un algorithme qui permettant à partir d’un menu affiché à l’écran, d’effectuer la somme ou le produit
ou la moyenne de trois nombres entré au clavier. Nous appelons « menu », l’association d’un numéro séquentiel
aux différent choix proposé par un programme.

07/11/2018 47
INTRODUCTION A L’ALGORITHME

Chapitre 4: Les structures


itératives (les boucles)
Semestre I
Niveau 1 Année:
Licence Info I
DUT Info IG
DUT Info Maintenance
Sommaire

4.1. De quoi s'agit-il ?


4.2. La boucle tant que… faire
4.3. La boucle répéter… jusqu’à
4.4. La boucle pour…faire
4.5. Les boucles imbriquées

07/11/2018 49
4.1. De quoi s’agit-il ?
contexte
Prenons le cas d’une saisie au clavier (une lecture), où par exemple, le programme pose une question à
laquelle l’utilisateur doit répondre par O (Oui) ou N (Non). Mais tôt ou tard, l’utilisateur, facétieux ou
maladroit, risque de taper autre chose que la réponse attendue. Dès lors, le programme peut planter soit par
une erreur d’exécution (parce que le type de réponse ne correspond pas au type de la variable attendu) soit
par une erreur fonctionnelle (il se déroule normalement jusqu’au bout, mais en produisant des résultats
fantaisistes).

Alors, dans tout programme un tant soit peu sérieux, on met en place ce qu’on appelle un contrôle de
saisie, afin de vérifier que les données entrées au clavier correspondent bien à celles attendues par
l’algorithme.

07/11/2018 50
4.1. De quoi s’agit-il ?
A vue de nez, on pourrait essayer avec un Si. Voyons voir ce que ça donne :

Algorithme Demande
Variable rep: Car C’est impeccable. Du moins tant que l’utilisateur a le bon
Début goût de ne se tromper qu’une seule fois, et d’entrer une
Ecrire « Voulez vous un café ? (O/N):" valeur correcte à la deuxième demande. Si l’on veut
Lire (rep) également bétonner en cas de deuxième erreur, il faudrait
Si (rep < > "O " OU rep < > "N ") alors rajouter un Si. Et ainsi de suite, on peut rajouter des
Ecrire "Saisie erronée. Recommencez" centaines de Si, et écrire un algorithme aussi lourd
Lire (rep) qu’une blague des Grosses Têtes, on n’en sortira pas, il y
FinSi aura toujours moyen qu’un acharné flanque le programme
Fin
par terre.
FinAlgorithme

La solution consistant à aligner des Si … en pagaille est donc une impasse.

La seule issue possible est donc d’utiliser une structure de boucle.

07/11/2018 51
4.1. De quoi s’agit-il ?
Définition
Une boucle permet d'exécuter plusieurs fois de suite une même séquence d'instructions. Cette
ensemble d'instructions s'appelle le corps de la boucle. Chaque exécution du corps d'une boucle
s'appelle une itération, ou encore un passage dans la boucle. Il existe trois types de boucle :
 tant que … faire
 répéter ... jusqu’à
 pour … faire
Chacune de ces boucles a ses avantages et ses inconvénients. Nous les passerons en revue ultérieurement.

07/11/2018 52
4.2. La boucle tant que … faire
Syntaxe:

tant que < condition> faire


<Séquence d’instructions>
fin tant que

Le principe est simple : le programme arrive sur la ligne du tant que. Il examine alors la valeur de la
condition (qui, je le rappelle, peut être une variable booléenne ou une expression). Si cette valeur est
VRAI, le programme exécute les instructions qui suivent, jusqu’à ce qu’il rencontre la ligne fin tant que. Il
retourne ensuite sur la ligne du tant que, procède au même examen, et ainsi de suite. Le manège enchanté
ne s’arrête que lorsque la condition n’est plus vérifier (le booléen prend la valeur FAUX).

07/11/2018 53
4.2. La boucle tant que … faire
Illustration avec notre problème de contrôle de saisie. Une première approximation de la solution
consiste à écrire :

Algorithme Demande Amélioration


Variable rep: Car Algorithme Demande
Début Variable rep: Car
Ecrire " Voulez vous un café ? (O/N):" Début
Lire (rep) Ecrire " Voulez vous un café ? (O/N):"
Tant que (rep < > "O " OU rep < > "N ") faire Lire (rep)
Lire (rep) Tant que (rep < > "O " OU rep < > "N ") faire
Fin Tant que Ecrire "Vous devez répondre par O ou N. Recommencez"
Fin Lire (rep)
FinAlgorithme Fin Tant que
Ecrire "Saisie acceptée"
Fin
FinAlgorithme

NOTE : Une boucle tant que … faire n’est exécuter que si la condition est vérifier dès le départ.

07/11/2018 54
4.2. La boucle tant que … faire

Exercice 4.1
Ecrire un algorithme qui demande à l’utilisateur un nombre compris entre 1 et 3 jusqu’à ce que la réponse
convienne.

Exercice 4.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.

Exercice 4.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.

07/11/2018 55
4.3. La boucle répéter … jusqu’à
Syntaxe:
répéter
<Séquence d’instructions>
jusqu’à < condition>

Le fonctionnement est analogue a celui de la boucle tant que a quelques détails près :
• la condition est évaluée après chaque passage dans la boucle.
• on exécute le corps de la boucle jusqu'a ce que la condition soit vérifiée, donc tant que la condition est
fausse.

NOTE : Une boucle répéter ... jusqu'a s’exécutée donc au moins une fois avant de tester la condition .

07/11/2018 56
4.3. La boucle répéter … jusqu’à
Reprenons l'exemple précédent avec une boucle répéter ... jusqu'a :

Algorithme Demande Amélioration


Variable:
rep: Car
Algorithme Demande
Début
Variable:
Ecrire « Voulez vous un café ? (O/N):"
rep: Car
répéter
Début
Lire (rep)
Ecrire « Voulez vous un café ? (O/N):"
Ecrire "Vous devez répondre par O ou N. Recommencez"
répéter
jusqu’à (rep < > "O " OU rep < > "N ")
Lire (rep)
Ecrire "Saisie acceptée"
Ecrire "Vous devez répondre par O ou N.
Fin
Recommencez"
FinAlgorithme
jusqu’à (rep < > "O " ET rep < > "N ")
Ecrire "Saisie acceptée"
Fin
FinAlgorithme

07/11/2018 57
4.4. La boucle pour … faire
Syntaxe:
Pour < compteur> : = < valeur initiale> à < valeur finale> pas de < incrément> faire
<Séquence d’instructions>
fin pour

Cette structure permet de répéter une séquence un nombre connu de fois.


Le compteur est une variable de type entier. La valeur initiale et la valeur finale sont des constantes ou
des variables de type entier. L’incrément (pas) est la valeur d’augmentation progressive du compteur. La
valeur par défaut du pas est de 1 (dans le cas où on ne le précise pas).

Si la valeur initiale est égale à la valeur finale, la séquence d’instruction définie est exécutée une seule fois.

Par contre, la séquence d’instruction n’est pas exécutée dans deux cas:

• Si la valeur initiale est strictement supérieure à la valeur finale alors que l’incrément est positive, ou bien
• Si la valeur initiale est strictement inférieure à la valeur finale alors que l’incrément est négative.

07/11/2018 58
4.4. La boucle pour … faire
La structure pour … faire est une simplification de la structure suivante:

compteur  valeur initiale


tant que compteur < = valeur finale faire
<Séquence d’instructions>
compteur  compteur + incrément
fin tant que

07/11/2018 59
4.5. Les boucles imbriquées
Les boucles peuvent être imbriquées les unes dans les autres. Une boucle « tant que …faire » peut contenir une
autre boucle « tant que … faire », ou une boucle « répéter… jusqu’à », ou une autre boucle « pour … faire », et
vice versa.
De plus une boucle peut contenir une autre boucle qui elle-même peut contenir une autre boucle et ainsi de suite.

NOTE : Une boucle peut contenir un test et vice versa.

Exemple:
Algorithme Tables_Multiplication
Ecrire un algorithme permettant d’effectuer et d’afficher Variable :
toutes les tables de multiplication par 1 jusqu’à 12. i , j: entier
Début
Ecrire « Voulez vous un café ? (O/N):"
pour ( i := 1 à 12 ) faire
pour ( j := 1 à 12 ) faire
Ecrire j, "*", i , "=" , j * i
fin pour
fin pour
Fin
Fin Algorithme
07/11/2018 60
Exercices d’application
Énoncé des Exercices
Exercice 5.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

Exercice 5.5
Ecrire un algorithme qui demande un nombre de départ, et qui calcule la somme des entiers jusqu’à ce
nombre. Par exemple, si l’on entre 5, le programme doit calculer :
1 + 2 + 3 + 4 + 5 = 15
NB : on souhaite afficher uniquement le résultat, pas la décomposition du calcul.

07/11/2018 61
Exercices d’application
Énoncé des Exercices
Exercice 5.6
Ecrire un algorithme qui permet de calculer le factoriel d’un nombre entier n strictement positif sachant
que: n ! = 1 x 2 x 3 x ..… x n , et que
0 ! = 1 par convention
NB : le factoriel de 5, notée 5 !, vaut 1 x 2 x 3 x 4 x 5 = 120
le factoriel d’un nombre négatif n’existe pas, il est donc nécessaire que votre algorithme vérifie si le
nombre donné n’est pas négatif.

Exercice 5.7
Ecrire un algorithme qui demande successivement 20 nombres à l’utilisateur, et qui lui dise ensuite quel était
le plus grand parmi ces 20 nombres :
Entrez le nombre numéro 1 : 12
Entrez le nombre numéro 2 : 14
etc.
Entrez le nombre numéro 20 : 6
Le plus grand de ces nombres est : 14
Modifiez ensuite l’algorithme pour que le programme affiche de surcroît en quelle position avait été saisie ce
nombre :
C’était le nombre numéro 2
07/11/2018 62
Exercices d’application
Énoncé des Exercices
Exercice 5.8
Réécrire l’algorithme précédent, mais cette fois-ci on ne connaît pas d’avance combien l’utilisateur
souhaite saisir de nombres. La saisie des nombres s’arrête lorsque l’utilisateur entre un zéro.

Exercice 5.9
Ecrire l’algorithme qui permet de saisir une série de nombres entiers positifs puis qui propose
indéfiniment (en boucle) à l’utilisateur, par l’intermédiaire d’une sorte de menu à choix multiple,
d’afficher la valeur minimal, la valeur maximale, la somme ou la moyenne des nombres entrés, ou encore
de quitter le programme.

07/11/2018 63

Vous aimerez peut-être aussi