Informatique / Algorithme et
Structure de Données
DR. YAHAYA COULIBALY
Faculté du Géni et des Sciences, Université de Ségou
1
Instructions lecture et écriture
2
Opérations lecture et écriture
Il existe des instructions pour permettre à la machine de
dialoguer avec l’utilisateur
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.
Remarque essentielle
Comme discuté précédemment, 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.
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
non de l'utilisateur qui se servira du programme. Et là, tout
devient parfaitement logique.
Opérations lecture et écriture
Suposons que, afin de permettre á l’utilisateur d’entrer la
(nouvelle) valeur de PrixHT, on mettra :
Lire PrixHT
Dès que le programme rencontre une instruction Lire,
l’exécution s’interrompt, attendant la frappe d’une valeur au
clavier.
L'interruption peut durer quelques secondes, quelques
minutes ou plusieurs heures : la seule chose qui fera exécuter
la suite des instructions, c'est que la touche Entrée (Enter) ait
été enfoncée.
Opérations lecture et écriture
Aussitôt que la touche Entrée (Enter) ait été
enfoncée, il se passe deux choses.
1. Tout ce qui a été frappé avant la touche Entrée (une
suite de lettres, de chiffres, ou un mélange des deux)
est rentré dans la variable qui suit l'instruction Lire
(ici, PrixHT)
2. Et ensuite, immédiatement, la machine exécute
l'instruction suivante.
Opérations lecture et écriture
Lire est donc une autre manière d'affecter une valeur à
une variable.
Avec l'instruction d'affectation, c'est le programmeur
qui choisit à l'avance quelle doit être cette valeur. Avec
l'instruction Lire, il laisse ce choix à l'utilisateur.
Dans le sens inverse, pour écrire quelque chose à
l’écran, c’est aussi simple que :
Ecrire Tata
Les bonnes manières du
programmeur
Avant de Lire une variable, il est très fortement conseillé
d’écrire des libellés à l’écran, afin de prévenir
l’utilisateur de ce qu’il doit frapper (sinon, le pauvre
utilisateur passe son temps à se demander ce que
l’ordinateur attend de lui… et c’est très désagréable !) :
Ecrire "Entrez votre nom : "
Lire NomFamille
Opérations lecture et écriture
Il est bien á noter que 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).
3. Les structures de
Structures de contrôle
Les structures de contrôle
Le traitement de données est parfois conditionné et se réalise
de manière spécifique. On parle alors de structures de
contrôle.
Ces structures algorithmiques peuvent être organisées suivant
quatre familles principales :
1. Structures linéaires d’opérations ;
2. Structures alternatives ou de choix : en fonction d'une
condition, l’algorithme exécute des opérations différentes ;
3. Structures de choix multiple ;
4. Structures itératives (ou répétitives).
Définitions
Une structure linéaire (ou structure séquentielle) se
caractérise par une suite de traitements à exécuter
successivement, dans l’ordre énoncé.
Une condition est une expression logique booléenne,
prenant la valeur « vrai » ou « faux » (c’est-à-dire « oui » ou
« non »).
Une structure alternative (ou structure conditionnelle)
n’offre que deux issues possibles à la poursuite de
l’algorithme, qui s’excluent mutuellement.
Définitions
Selon qu’une condition est vraie ou fausse, on effectue
un traitement ou un autre.
On parle de traitements conditionnels. Une structure
alternative est donc une structure de test.
Définitions
Une structure de choix permet, en fonction de
plusieurs conditions de type booléen, d’exécuter des
traitements différents selon les valeurs que peut
prendre une même variable.
Une structure répétitive (ou structure itérative)
répète l’exécution d’un traitement, dans un ordre
précis, un nombre déterminé ou indéterminé de fois.
Une structure itérative est aussi appelée une boucle.
Structures linéaires
Les structures linéaires se caractérisent par une suite de
traitements à exécuter dans l’ordre où ils sont énoncés :
Début
instruction1;
instruction2;
.............
Fin
Structures alternatives
La résolution de certains problèmes nécessite parfois la
mise en place d’un test pour effectuer une tâche :
si le test est positif, on effectue un certain traitement ;
sinon (dans le cas contraire), c’est-à-dire si le test est
négatif, on effectue un autre traitement.
En algorithmique, on traduit cette structure alternative
à l’aide d’instructions conditionnelles.
1. Structure alternative complète
(Test Simple)
Une condition est testée pour déterminer si l’action ou le
groupe d’actions suivant doit être exécuté.
Syntaxe :
Si condition Alors
traitement 1 ;
(Instructions à effectuer si la condition est vraie)
Sinon
traitement 2 ;
(Instructions à effectuer si la condition est fausse)
FinSi
1. Structure alternative complète
(Test Simple)
Remarque : Si condition Alors
condition retourne Vrai ou Faux.
Il existe des conditions simples et des conditions
complexes :
1. une condition simple peut correspondre à un test
d’égalité (par exemple : A = B) ou d’inégalité (par
exemple : A ≤ B) ;
2. une condition complexe est une combinaison logique
de conditions simples (par exemple : (A ≤ B) et (B ≤
C), (A = B) ou (A ≤ C)).
2. Structure alternative réduite (Test
Simple)
Syntaxe
Si condition Alors
traitement 1 ;
(Instructions à effectuer si la condition est vraie)
FinSi
Remarque :
La condition s’achève sans qu’on ait eu à effectuer de
traitement 2 lorsque la condition n’a pas été vérifiée ;
l’algorithme passe alors à l’instruction suivante.
3. Structures alternatives
imbriquées
Plusieurs structures alternatives peuvent être
imbriquées, si bien que dans un traitement peut
(peuvent) figurer une ou plusieurs structure(s)
alternative(s).
Pour une meilleure lisibilité de l’algorithme, on utilise
l’indentation, qui consiste à écrire les instructions sur
des lignes différentes en procédant à des décalages.
3. Structures alternatives
imbriquées
Plus d’illustration 1
Principalement, un SI ouvre deux voies, correspondant
à deux traitements différents.
Cependant, il y a beaucoup de situations où deux voies
ne suffisent pas.
Exemple 1
Considérons un programme devant donner l’état de
l’eau selon sa température; on doit pouvoir choisir entre
trois réponses possibles (solide, liquide ou gazeuse).
Une première solution serait la
suivante
1. Variable Temp en Entier
2. Début
3. Ecrire "Entrez la température de l’eau :"
4. Lire Temp
5. Si Temp =< 0 Alors
6. Ecrire "C’est de la glace"
7. FinSi
8. Si Temp > 0 Et Temp < 100 Alors
9. Ecrire "C’est du liquide"
10.Finsi
11. Si Temp > 100 Alors
12. Ecrire "C’est de la vapeur"
13. Finsi
14, Fin
Remarque
Nous constatons que l’algo ci-dessus est un peu
laborieux. Les conditions se ressemblent plus ou moins,
et 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 :
Deuxième solution
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"
SinonSi Temp < 100 Alors
Ecrire "C’est du liquide"
Sinon
Ecrire "C’est de la vapeur"
Finsi
Finsi
Fin
Remarque
La deuxième version n’est pas seulement
plus simple à écrire et plus lisible, elle est
également plus performante à l’exécution.
Les structures de tests imbriqués sont donc
un outil indispensable à la simplification et à
l’optimisation des algorithmes.
3eme Solution
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"
SinonSi Temp < 100 Alors
Ecrire "C’est du liquide"
Sinon
Ecrire "C’est de la vapeur"
Finsi
Fin
A NOTER
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
Le SinonSi permet en quelque sorte de créer (en
réalité, de simuler) des aiguillages à plus de deux
branches. On peut ainsi enchaîner les SinonSi les
uns derrière les autres pour simuler un aiguillage à
autant de branches que l’on souhaite.
Variables Booléennes
Jusqu’ici, pour écrire nos tests, nous avons utilisé
uniquement des conditions.
Cependant, vous savez qu’il existe un type de variables
booléen. Ce type est susceptible de stocker les valeurs
VRAI ou FAUX.
Nous pouvons entrer des conditions dans ces variables,
et tester ensuite la valeur de ces variables.
Solution 4
Variable Temp en Entier
Variables A, B en 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
TD 1
Ecrire un algorithme qui demande deux nombres à
l’utilisateur et l’informe ensuite si leur produit est
négatif ou positif. Attention toutefois : on ne
doit pas calculer le produit des deux nombres.
Solution TD 1
Variables m, n en Entier
Début
Ecrire "Entrez deux nombres : "
Lire m, n
Si (m > 0 ET n > 0) OU (m < 0 ET n < 0) Alors
Ecrire "Leur produit est positif"
Sinon
Ecrire "Leur produit est négatif"
Finsi
Fin
TD 2
Ecrire un algorithme qui demande un nombre à
l’utilisateur, et l’informe ensuite si ce nombre est positif
ou négatif (on inclut le traitement du cas où le nombre
vaut zéro).
Solution TD 2
Variable n en Entier
Début
Ecrire "Entrez un nombre : "
Lire n
Si n < 0 Alors
Ecrire "Ce nombre est négatif"
SinonSi n = 0 Alors
Ecrire "Ce nombre est nul"
Sinon
Ecrire "Ce nombre est positif"
Finsi
Fin
Ex 2
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
Structure de choix multiples
Lorsque l’imbrication des alternatives devient
importante, l’utilisation de la structure à choix multiples
devient nécessaire.
Une donnée est comparée successivement à des valeurs
constantes.
Structure de choix multiples
La structure SELONQUE permet d'effectuer tel ou tel
traitement en fonction de la valeur des conditions 1
ou 2 ou ..n ..
Syntaxe
SELON QUE (sélecteur) FAIRE
<condition 1> : <action 1>
<condition 2> : <action 2> ...
<condition n> : <action n>
SINON : <action_sinon>
FIN SELONQUE
Structure de choix multiples
Le sélecteur peut être une variable de type scalaire ou
une expression arithmétique ou logique.
La structure SELON évalue le "sélecteur", et passe à
comparer celui ci respectivement avec les valeurs dans
les conditions.
En cas d'égalité avec une valeur, les actions
correspondantes, qui sont devant cette valeur seront
exécutées.
Structure de choix multiples
Explication :
Si la condition 1 est vraie, alors on exécute l'action
correspondante et on quitte la structure selon-que
Si la condition 1 est fausse, on évalue la condition 2...et
ainsi de suite.
Si aucune condition n'est vraie on effectue l'action
sinon ( au cas où l'action sinon n'existe pas alors aucune
action n'est exécutée !).
Structure de choix multiples
Remarque
1. Devant "Condition", il peut y avoir une seule valeur,
une suite de valeurs séparées par des virgules et/ou
un intervalle de valeurs.
2. Le sélecteur doit avoir le même type que les valeurs
devant les conditions.
3. Le type de ces valeurs ne doit être, ni réel ni chaîne de
caractères.
Structure de choix multiples
Il est bien de noter, qu’en programmation, cette structure peut
exister mais avec une forme ou un fonctionnement
éventuellement différent. Si elle n'existe pas, il faut se souvenir
que, en fait, SELONQUE est un raccourci d'écriture pour des SI
imbriqués.
Structure de choix multiples
Exemple 1
Debut
Ecrire ('donnez votre chiffre entre 0 et 2 : ') ;
Lire (n) ;
SELONQUE n FAIRE
0 : Ecrire (' Zéro') ;
1 : Ecrire ('Un') ;
2 : Ecrire ('Deux') ;
Sinon
Ecrire ('erreur de saisie) ;
FINSELONQUE
Fin.
Exemple 2
Debut
Ecrire ('donnez la note : ') ;
Lire (Note) ;
SELONQUE
Note ≥ 16 : ECRIRE (‘'TB'')
Note ≥ 14 : ECRIRE (‘'B'')
Note ≥ 12 : ECRIRE (‘'AB'')
Note ≥ 10 : ECRIRE (‘'Passable'')
SINON : ECRIRE (‘'ajourné'')
FINSELONQUE
Fin