Vous êtes sur la page 1sur 86

Université de Moulay Ismail

Faculté des Sciences Meknès

Filière: SMIA
Département d‘Informatique

Cours: Algorithmique I

A. Oubelkacem
Cours d'algorithmique- SMIA2- 2020/2021 1
Introduction à l’informatique

Introduction à la programmation

Algorithmique: Outils de base

Structures d’un algorithme

Instructions conditionnelles et alternatives

Instructions répétitives (les boucles)

Les chaines de caractères

Les variables dimensionnés ( les tableaux)

Cours d'algorithmique- SMIA2- 2020/2021


Introduction à l’informatique

L’informatique ?

Computer Science
INFORMATIQUE ? en anglais

INFORMATION AUTOMATIQUE

Art d’entraîner automatiquement des actions


Science de l’information

Traitement automatique de l’information


ORDINATEUR
Machine automatique
Ordinateur
• Machine qui permet de traiter de l’information :
 d’acquérir et de conserver de l’information (acquisition,
stockage)
 d’effectuer des traitements (calcul),
 de restituer les informations stockées (restitution)
• Permet de lier «information»  «données» (0 ou 1)
• Différents types d’informations : valeurs numériques,
textes, images, sons, …: tout cela avec des 0 ou 1
Schéma de principe du traitement de l’information
Données à l’état brut

ENTREE
Données corrigées
TRAITEMENT Résultats
Par ordinateur

SORTIE
Domaines de l’informatique
Domaine du matériel (hardware)
• partie physique de l’ordinateur
• composants constituant un ordinateur (microprocesseur …)
• support du traitement de l’information (disque dur …)
Domaine du logiciel (software)
• instructions expliquant à l’ordinateur comment traiter un
problème.
• Cela nécessite de décrire des : algorithmes et
représentations informatiques de ces instructions pour
aboutir à un programme.
Introduction à la programmation

I.1 Généralités
Pour résoudre un problème donné en informatique,
l’utilisateur doit mettre au point un programme et le faire
exécuter par la machine
Un programme est une succession logique et ordonnée d’instructions.

La programmation est l’ensemble des taches qui permettent d’élaborer un


programme.
Pour écrire un programme il faut:
 Bien connaitre le problème;

 Savoir le découper logiquement en un ensemble d’opérations


élémentaires ( actions)

 Connaitre un langage compréhensible par la machine


Introduction à la programmation

La démarche a suivre dans la résolution d’un problème en informatique est


donc:

Analyse du pb Traduction
Problème Algorithme Programme

Recherche des De l’algorithme


outils de résolution dans un langage
et décomposition compréhensible
en étapes par la machine
élémentaires

Question: qu’est ce qu’un algorithme alors?


Introduction à la programmation

Exemples
Considérons la suite d'instructions suivante :
1. Faites chauffer de l'eau dans une casserole
2. Une fois que l'eau boue, placez les pâtes dans
l'eau
3. Attendez dix minutes
4. Versez le tout dans un écumoire
5. Vos pâtes sont prêtes.
Vous l'aurez deviné, il s'agit des grandes lignes de la recette
permettant de préparer des pâtes!! Il s'agit seulement d'une suite
d'instructions devant être exécutées a la lettre. Si vous ne les
suivez pas, vous prenez le risque que le résultat ne soit pas celui
que vous attendez!!!
Introduction à la programmation

Définition

On conclut de de la façon suivante : nous avons vu qu'il


existait des séquences d'instructions faites pour être exécutée
a la lettre et sans se poser de questions, c'est le principe de
l'algorithme.
Nous retiendrons donc qu’un algorithme est une
séquence d'instructions exécutée de façon logique mais
non intelligente.

 Logique parce que la personne (ou la machine) qui exécute les


instructions est capable de comprendre et exécuter sans erreur
chacune d'elles.
 Non intelligente parce que la personne qui exécute l'algorithme n'est
pas supposée apte a comprendre pourquoi la succession d‘étapes
décrite par l'algorithme donne bien un résultat correct.
Introduction à la programmation

I.2. Origine du mot « algorithme »?

Le mot Algorithme prend étymologiquement ses racines


dans le nom d’un célèbre mathématicien arabe,
Musulman, géographe, astronome, perse du IX ème
siècle appelé Mohammed Ibn Musa Al Khawarizmi.

Les algorithmes sont extrêmement puissants : en


concevant un algorithme, vous pouvez décomposer un
calcul compliqué en une succession d‘étapes
compréhensibles,
I.3 Définition d’un algorithme

 Un algorithme se compose d’un ensemble fini d’étapes,


chaque étape étant formée d’un ensemble fini d’opérations
dont chacune est définie d’une façon rigoureuse

 Un algorithme est un moyen de description des étapes à


suivre pour résoudre un problème. Il doit:
 Contenir un nombre fini d’actions exécutables par la
machine.
 Ne demander à l’utilisateur que des données connues
par celui-ci.
 Proposer des résultats intéressants pour l’utilisateur.
 Etre exécutable par une personne utilisant des moyens
manuels( stylo, papier,…).
I.3 Définition d’un algorithme

Etape 1 Etape n Opération 1


Opération 1
Algorithme: Opération 2
Opération 2
….
….
Opération L
Opération m

Un algorithme utilise un certain nombre d’objets pour


fonctionner.

Cet ensemble s’appelle: Environnement de l’algorithme.


Cet environnement est constitué:
 Des objets d’entrée (OE) qui représentent l’ensemble
de données que l’utilisateur doit introduire à l’algorithme
 Des objets de sortie (OS) qui représentent l’ensemble
des résultats produits par l’algorithme
I.3 Définition d’un algorithme
 Des objets constants (OC) qui représentent
l’ensemble des objets dont les valeurs ne change pas
au cours de toute l’exécution de l’algorithme
 Des objets intermédiaires (OI) qui représentent l’ensemble
des objets de traitements internes, ils ne sont ni entrés ni
sortis, mais ils sont soit:
- des compteurs,
- calculés à partir des objets d’entrée et des objets constants et serviront
pour produire les objets de sortie.
Objets Constants
(OC)
Objets Objets de
d’Entrées (OE) ALGORITHME Sortie (OS)
Objets
Intermédiaires (OI)
I.4 Qu’est ce qu’un bon algorithme
Un algorithme informatique se ramène donc toujours au
bout du compte à la combinaison de quatre petites
briques de base:
•L’affectation de variables
•La lecture/ écriture
•Les tests
•Les boucles
Dans un algorithme on peut avoir quelques unes,
quelques dizaines, et jusqu’à plusieurs centaines dans
certains programmes.
La taille d’un algorithme ne conditionne pas en soi sa
complexité: de longs algorithmes peuvent être
finalement assez simple, et de petits algorithme
peuvent être très compliqués.
Cours d'algorithmique- SMIA2- 2020/2021
I.4 Qu’est ce qu’un bon algorithme
On peut noter qu’un bon algorithme est un schéma de
résolution possédant les caractéristiques suivantes:
 Correct: s’il répond au problème posé.
 Précis: s’il fournit exactement les résultats attendus.
 Rapide: s’il utilise un temps d’exécution minimal
indépendamment de la vitesse de la machine.
 Efficace: s’il utilise le moins d’espace mémoire
possible.
 Clair et lisible: s’il ne présente pas de difficulté de
compréhension pour un autre programmeur désirant le
maintenir ou le développer.
 Résistant: s’il est capable de détecter les cas de
mauvaise utilisations.
I.4 Qu’est ce qu’un bon algorithme

Exemple de résistance d’un algorithme

Dans la résolution d’une équation de premier degré:


a.x+b=0

Pour laquelle: x=-b/a

Un algorithme de résolution de cette équation doit réagir si


on lui introduit une valeur a=0 ( mauvaise utilisation), en
refusant de calculer la solution et en affichant par
conséquent un message d’erreur, sinon la machine va se
bloquer car elle ne sait pas faire des divisions par zéro.
I. 5. Objectifs de l’algorithmique
L’objectif de l’algorithmique est de permettre une bonne
analyse du problème afin de proposer la meilleure
solution, celle-ci doit être correcte, rapide, précise et
moins couteuse en utilisant un ensemble de
techniques de programmation.
L’analyse d’un problème en informatique peut prendre
jusqu’à 90% du temps alloué à la résolution du
problème.
Cette analyse permet:

 De transformer le texte du problème en un ensemble d’étapes


élémentaires
 De revoir les outils élémentaires utilisés dans la solution pour essayer
d’optimiser, si possible, ce schéma avant de procéder à sa traduction
dans un langage de programmation
I. 5. 1 Structure simplifiée d’ l’algorithmique
Rappelons qu’:
 Un algorithme est un ensemble formé par un
environnement et des actions
 L’environnement d’un algorithme est l’ensemble formé
par tous les objets utilisés par celui-ci.
Pour utiliser un objet dans un algorithme, il faut le déclarer
à la machine afin que celle-ci puisse lui réserver la place
mémoire nécessaire pour le loger.
On distinguera trois parties dans un algorithme:
 Le titre, tout algorithme porte un titre. Choisissez un titre qui
permet de comprendre ce que fait l'algorithme.
 une partie déclaration de tous les objets utilisés par
l’algorithme ( CONST, VAR)
 une partie exécutable contenant toutes les actions permettant
d’agir sur ces objets délimitée par les mots DEBUT et FIN
I.5. 2 Présentation d’un algorithme

Un algorithme pourra se présenter par un langage


algorithmique (pseudo code) de la manière suivante:

Algorithme nom_algorithme;
(Déclaration)
Const
NOM_DE_CONST=valeur_de_const;
Var
nom_var: nom_type_var;
Début
(Corps de l’algorithme)
(Actions)
Fin
Remarque: si plusieurs objets variables sont de même type,
nous pouvons alors les regrouper tous ensembles séparés
par des virgules.
Exemple des variables et constantes:
CONST ANNEE_COURS=2018;
TAILLE_MIN=1.75;
REPONSE=‘’OUI’’;
VAR Nom, Prenom : chaine de caractère;
Age : entier;
Etat_civil : booléen;
Exemple: algorithme de calcul et affiche la somme, le produit
et la moyenne de trois nombres entiers a,b et c.
Exemple: algorithme de calcul du périmètre et de la surface
d’un cercle de rayon R.
I. 6. 2 Les organigrammes

Définition:
Un organigramme est une représentation schématique ou
graphique d’un algorithme mettant en valeur sa structure.

Un organigramme permet de mieux présenter les


différents modules de traitement et d’exploiter la
succession des opérations d’un travail
Liste des symboles les plus utilisé dans un ogranigramme

Séquence Instruction
Test et Opération Sortie Début ou fin
décision : calcul d’entrée ou disque
de sortie magnétique
I. 6. 2 Les organigrammes
Exemple:
Traduction schématique de l’algorithme de calcule du
périmètre d’un cercle de rayon R:
Début

Lecture
du rayon
R

P=2*3.14*R

Affichage
du
résultat P

Fin
2. Les outils de base de l’algorithmique

2.1 Notion d’objet


Un algorithme est constitué d’un:

 Ensemble fini d’objets appelé environnement,

 Ensemble fini d’actions permettant de traiter ces objets.

Un objet peut se présenter sous deux formes différentes:

 Objet constant

 Objet variable
Une variable est un emplacement dans la mémoire ou est stockée une
valeur. Une variable porte un nom, ce nom est laisse au choix du
concepteur de l'algorithme, il doit commencer par une lettre et ne pas
comporter d'espace.
Les outils de base de l’algorithmique

Pour définir parfaitement un objet (une variable) en vue de sa


manipulation par une machine, il faut spécifier les
caractéristiques suivantes:
 Son identificateur,
 Sa valeur,
 Son type.
2. 2. Identificateur d’un objet
C’est un nom symbolique que nous attribuons à l’objet
représenté par une suite de caractères. Il doit obéir aux
exigences suivantes:

 Il doit commencer obligatoirement par une lettre.


Les outils de base de l’algorithmique

 La suite des caractères peut être composés soit:

des lettres non accentuées( a,b,...z,A,B,…Z),


des chiffres ( 0,1,2,….9),
du caractère soulignement « _ ».

 Il ne doit contenir ni espace ni caractères spéciaux.


Exemple 1
temps, calcul_vectoriel, mois1, a54b2:
sont des identificateurs corrects.
1temps, calcul vectoriel, a54/b2:
sont des identificateurs non corrects.
Remarque: de préférence le nom (identificateur) est choisi
en rapport avec le rôle de l’objet.
Les outils de base de l’algorithmique

Exemple 2
Si dans un algorithme de gestion d’une entreprise, on veut
nommer un objet représentant le nombre d’employés, on
peut utiliser:

A: qui est une mauvaise appellation,


NE: qui est une appellation moyenne,
Nbre_employes: qui est une bonne appellation.
2. 3 Valeur d’un objet
C’est le contenu courant d’un objet. Ce contenu peut être:
 Constant: s’il ne peut pas être modifié par les
instructions de l’algorithme tout au long de son
exécution.
 Variable: dans le cas contraire.
Les outils de base de l’algorithmique

2.4 Type d’objet


A chaque variable utilisée dans le programme, il faut associer
un type qui permet de définir :
• l’ensemble des valeurs que peut prendre la variable
• l’ensemble des opérations qu’on peut appliquer sur la
variable.
La syntaxe de l’action de déclaration est la suivante :
Variable 1, Variable 2, … : Type

Les principaux types utilisés en algorithmique sont :


- le type entier
- le type réel
- le type caractère
- le type chaîne de caractères
- le type logique ou booléen.
Les outils de base de l’algorithmique

Le type Entier
Une variable est dite entière si elle prend ses valeurs dans Z
(ensemble des entiers relatifs) et qu’elle peut supporter les
opérations suivantes :

Exemples
17 div 5 = 3
17 mod 5 = 2
Remarque: L’ensemble de valeurs que peut prendre un entier varie
selon le langage de programmation utilisé.
Les outils de base de l’algorithmique

Le type réel ou décimal


Il existe plusieurs types de réels représentant chacun un
ensemble particulier de valeurs prises dans IR (ensemble des
nombres réels). Ici encore, cette distinction se justifie par le
mode de stockage des informations dans le langage de
programmation.
Il existe deux formes de représentation des réels :
 la forme usuelle avec le point comme symbole décimal.
Exemples :
-3.2467 2 12.7 +36.49
 la notation scientifique selon le format aEb, où :
a est la mantisse, qui s’écrit sous une forme usuelle
b est l’exposant représentant un entier relatif.
Exemple :
325 = 3.25E2 = 0.325E+3 = 3250E-1 = ...
Les outils de base de l’algorithmique

Les opérations définies sur les réels sont :

Le type caractère
Un caractère peut appartenir au domaine des chiffres de ”0” à ”9”,
des lettres (minuscules et majuscules) et des caractères spéciaux
(”*”, ”/”, ”{”, ”$”, ”#”, ”%” …). Un caractère sera toujours noté
entre des guillemets. Le caractère espace (blanc) sera noté ” ”.
Les opérateurs définis sur les données de type caractère sont :
Les outils de base de l’algorithmique

Les opérations définies sur les caractères sont :

Remarque: La comparaison entre les caractères se fait selon leur


codes ASCII.
Exemple
” ” < ”0” < ”1” < ”A” < ”B” < ”a” < ”b” < ”{”
34 48 49 65 66 97 98
Les outils de base de l’algorithmique
Les outils de base de l’algorithmique

Le type logique ou booléen


Une variable logique ne peut prendre que les valeurs ”Vrai” ou
”Faux”. Elle intervient dans l’évaluation d’une condition.
Les principales opérations définies sur les variables de type
logique sont :
la négation (NON), l’intersection (ET) et l’union (OU).
L’application de ces opérateurs se fait conformément à la table
de vérité suivante :
Les outils de base de l’algorithmique

Remarque : le domaine {vrai, faux} est équivalent au domaine


{0,1}

Les tables de vérité des opérateurs logiques peuvent s’écrire:


A B L=A ET B A B L=A OU B A L=NON A

0 0 0 0 0 0 0 1

0 1 0 0 1 1 1 0

1 0 0 1 0 1

1 1 1 1 1 1

L’op. ET peut être matérialisé L’op. OU peut être matérialisé L’op. NON peut être
physiquement par deux physiquement par deux matérialisé physiquement par
interrupteurs en série pour interrupteurs en // pour un interrupteur normalement
allumer une ampoule L allumer une ampoule L fermé au départ pour allumer
une ampoule L
Les outils de base de l’algorithmique

Type Chaîne de caractère : pour manipuler des chaînes


de caractères permettant de représenter des mots ou
des phrases.

Exemple : "bonjour, Monsieur" (une chaîne de caractère


est toujours notée entre guillemet

Remarque: En pseudo-code, une chaîne de caractères


est toujours notée entre guillemets " ", car, il
peut y avoir une 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 notée : "423"
2. 5 les expressions
Ce sont des combinaisons entre des variables et des
constantes à l’aide d’opérateurs. Elles expriment un calcul
(expressions arithmétiques) ou une relation (expressions
logiques).
1. Les expressions arithmétiques:
Exemple : x* 53.4 / (2 + pi)
L’ordre selon lequel se déroule chaque opération de calcul
est important.
Afin d’éviter les ambiguïtés dans l’écriture, on se sert des
parenthèses et des relations de priorité entre les opérateurs
arithmétiques :

Ordre de priorité des opérateurs arithmétiques


2. 5 les expressions
Remarque: En cas de conflit entre deux opérateurs de même
priorité, on commence par celui situé le plus à gauche.
2. Les expressions logiques:
Ce sont des combinaisons entre des variables et des
constantes à l’aide d’opérateurs relationnels (=, <, <=, >, >=,
#) et/ou des combinaisons entre des variables et des
constantes logiques à l’aide d’opérateurs logiques (NON , ET,
OU, …).
Ici encore, on utilise les parenthèses et l’ordre de priorité
entre les différents opérateurs pour résoudre les problèmes
de conflits.

opérateurs logiques
opérateurs relationnels
2. 6 Applications
1- Quel est l’ordre de priorité des différents opérateurs de
l’expression suivante :
((3 * a) – x ^ 2) – (((c – d) / (a / b)) / d)
2- Ecrire la formule suivante sous forme d’une expression
arithmétique :

Réponses:

2-
3. Instructions élémentaires en algorithmique

3. 1 Introduction

Les instructions élémentaires sont les instructions qui


figurent le plus souvent dans tous les algorithmes. Elles
sont au nombre de trois:

 L’affectation,

 Les instructions d’entrée de données,

 Les instructions de sortie de données.


3. Instructions élémentaires en algorithmique

3. 2 l’affectation
L’opération affectation permet d’assigner une valeur à un
objet. Elle est représenté en algorithmique par une flèche
orientée de droite vers la gauche: 

Syntaxe : Identificateur_objet  valeur

L’opération d’affectation présente certaines possibilités et


impose certaines conditions.
1.1 Possibilités
Le membre droite d’une affectation ( valeur) peut être soit:

 Une variable de même type que Identificateur_objet: V  A

 Une constante de même type que Identificateur_objet: V 4


3. Instructions élémentaires en algorithmique

 Une expression dont l’évaluation produit un


résultat final de même type que Identificateur_objet:
V  3*A+2*B-4

1.2 Conditions
Une affectation est exécutable si et seulement si:
 Le membre gauche de l’affectation( identificateur_objet) est
une variable déclarée.
Par conséquent les écritures suivantes n’ont pas de sens:
8 A ou A+B  C
 La partie droite de l’affectation représente une quantité
bien définie
Par conséquent la 2ème affectation dans l’exemple suivant
n’est pas exécutable:
A  0;
V  1/A;
3. Instructions élémentaires en algorithmique

 Les types de deux parties de l’affectation sont les mêmes.


Par conséquent la 2ème affectation dans l’exemple suivant
n’est pas exécutable:

Var A: entier;
C: caractère;
Début
A  6;
C  A;
fin
Exemples d’utilisation de l’affectation

 En mémoire si A=6 et B=4,


alors après affectation A  B; on aura
A=4 et B=4
3. Instructions élémentaires en algorithmique
Exemples d’utilisation de l’affectation

 A  3;
donc A=3.
B  A;
on aura donc B=3.
C  (A+B)*2;
on aura donc C=12.
 i  4;
donc i=4.
i  i+1;
on aura donc i=5;

Remarque: l’affectation détruit complètement et


définitivement le contenu précédent de la variable
affectée si elle en avait un.
3. Instructions élémentaires en algorithmique

3. 1 Instructions d’entrée/ sortie


Pour bien fonctionner, un algorithme doit en général
acquérir des données( entrées) sur un périphérique(
exemple de clavier) et fournir en conséquence des
résultats ( sorties) sur un autre périphérique( écran).
Pour réaliser ces taches fondamentales en
programmation, on a donc besoin de deux opérations
distinctes:

Lire(v): qui permet d’affecter à la variable (v) , la valeur


lue sur le périphérique d’entrée,
Ecrire(v1): qui permet de transformer la valeur ( v1) vers
le périphérique de sortie
3. Instructions élémentaires en algorithmique

Remarques
 L’identificateur (v) doit être une variable déclarée. Par
conséquent les écritures suivantes n’ont pas de sens:

Lire(8); !!
Lire(A+B); !!

 La valeur (v1) peut être soit:


Une variable déclarée: exemple: Ecrire(A);
Une constante: exemple : Ecrire(8);
Une expression : exemple: Ecrire( 3*B+4*D-2).

 Un algorithme doit être interactif. Pour faciliter l’utilisation


de l’algorithme en affiche des messages explicatifs qui
doivent être écrits entre apostrophes (” ”).
3. Instructions élémentaires en algorithmique

Exemple 1
Qu’obtient t-on à l’écran après l’exécution des instructions suivantes
:
x5
Ville  ”Meknes”
Ecrire(x)
Ecrire(x*x)
Ecrire(”Ville”)
Ecrire(”Ville = ”,Ville)

5
25
Ville
Ville = Meknes
3. Instructions élémentaires en algorithmique
Exemples 2
1. Quelles sont les valeurs successives prises par les
variables X et Y suite aux instructions suivantes:
X 1;
Y  -4; X 1 1 4 -9 -9 -9
X  X+ 3;
Y ---- -4 -4 -4 -7 -13
X Y-5;
Y X+2;
Y Y-6

2. Soit 2 variables quelconque( nombre ou caractère) x et y


ayant respectivement comme valeur a et b. Quelles sont
les affectations qui donneront à x la valeur b et à y la valeur
a? xy;
Analyse: la première idée est d’écrire : yx;
Mais ça ne marche pas, les deux variables se retrouvent
avec la même valeur b! Il faut mettre la valeur de x de coté
dans une autre variable auxiliaire pour ne pas la perdre.
3. Instructions élémentaires en algorithmique
algorithme
Algorithme permutation;
Var
x, y, z: entier;
Début
Ecrire(”Entrez deux valeurs pour x et y ”);
Lire(x,y);
z x
xy;
yz
Ecrire(”la valeur de x et y après permutation est:”,x,y);
Fin X 1; X=1 Y= Z=
Vérification! Y  -4; X=1 Y=-4 Z=

z  X; X=1 Y=-4 Z=1

X=-4 Y=-4 Z=1


X Y;
X=-4 Y=1 Z=1
3. Instructions élémentaires en algorithmique

Exemple 3 : Donner toutes les raisons pour lesquelles


l’algorithme suivant est incorrect :

Algoritme Incorrect Cet algorithme est incorrect pour


x, y : Entier; plusieurs raisons :
• ligne 1 : Le mot Algorithme s’écrit avec
z : Réel; un « h » au milieu
Début • ligne 2 : La déclaration des variables
z  x + 2; commence par le mot « Var »
y  z; • ligne 5 : La valeur de x est
x*2  3 + z; indéterminée
• Ligne 6 : incompatibilité de type (un
y 5y + 3; résultat réel affecté à une variable de
Fin type entier)
• Ligne 7 : Le membre gauche d’une
affectation doit être une variable
• Ligne 8 : Il faut écrire 5*y et non 5y.
3. Instructions élémentaires en algorithmique

Exemple 4 : Ecrire un algorithme qui permet de calculer la


somme de deux nombres réels A et B.
Solution

Algorithme somme;
Var
a, b, S: réels;
Début
Ecrire(”Entrez deux nombres”);
Lire(a,b);
S  a+ b;
,
Ecrire(”la somme de nombres a et b est:” S);
Fin
3. Instructions élémentaires en algorithmique

Remarque : la dernière instruction de l’algorithme précédent


peut être modifier comme suite:

Ecrire(”la somme de deux nombres”,a, ” et ,b, ” est : ”,S);


Exemple: si a=3 et b=8, l’instruction ci-dessus s’exécutera
ainsi:

La somme de deux nombres 3 et 8 est :11

Exemple 5: Ecrire un algorithme qui demande un nombre


entier à l'utilisateur, puis qui calcule et affiche le double de ce
nombre.
3. Instructions élémentaires en algorithmique
Algorithme doubleDevaleure;
Var
val, dval: entiers;
Début Mauvais
Exécution
12 24 val 12;
dvalval*2
Ecrire (val, dval);
Fin
Algorithme doubleDevaleure;
Var
val, dval: entiers;
Début
Exécution: Ecrire(”donner un entier: ”);
Donner un entier: 12 Lire(val);
Le double est 24 dvalval*2 Mieux
Le double de 12 est 24 Ecrire (”le double est ” , dval);
Ecrire(”le double de :”,val, ”est ”, dval);
Fin
Instructions
Conditionnelles
et Alternatives
4. Instructions conditionnelles et alternatives

4. 1. Notion de primitives de base structurées

Les algorithmes vus , jusqu’à présent, ont un


enchainement d’exécution des instructions séquentiel et
linéaire.

Dans de nombreuses applications, on exige une exécution


par morceau des sauts ou des répétitions d’un même bloc
d’instructions. C’est le rôle des primitives de base structurées

On distingue deux grandes familles d’instructions


composées:
4. Instructions conditionnelles et alternatives

4. 1. Notion de primitives de base structurées

 Les primitives de choix qui permet de choisir les


instructions à exécuter selon les valeurs courantes de
certaines variables; elle sont de deux types:

 Les instructions conditionnelles


 Les instructions alternatives.

 Les primitives d’itération qui sont utilisées lorsque l’on


souhaite exécuter plusieurs fois le même traitement.(
chapitre suivant)

Remarque: Les notions de choix et d’itération sont deux


notions fondamentales de l’algorithmique.
4. Instructions conditionnelles et alternatives

4. 1 Instructions conditionnelles

4. 1. 1 l’instruction Si …Alors…. Finsi


Syntaxe:
Si (condition) alors

Instruction( ou suite d’instructions);


Finsi
organigramme:
Oui
Condition

Instruction
Non
4. Instructions conditionnelles et alternatives

4. 1. 1 l’instruction Si …Alors…. Finsi


 Si la condition est vraie alors le <bloc d’instructions> est
exécuté.
 Si la condition est fausse alors le <bloc d’instructions>
n’est pas exécuté. On passe à l’instruction qui se trouve
après Finsi

Exemple:
(A=1) la condition A=1 est vérifiée si la valeur contenu dans A
est 1
(A=B) est vérifié si les valeurs contenu dans A et B sont les
mêmes
(B <> 5) est vérifié si B contient une valeur différent de 5
(1>5) est vérifié si 1>5, donc jamais cette condition est donc
fausse et ne dépend pas des valeurs des variables.
4. Instructions conditionnelles et alternatives

Exemple 1

La valeur absolue d’un nombre réel


|x|=x si x>0
|x|=-x si x<0
4. Instructions conditionnelles et alternatives

Organigramme Début

Lire(x)

Oui
x<0

Non x -x

Ecrire(x)

Fin
4. Instructions conditionnelles et alternatives

Algorithme :

Algorithme valeur_absolue1;
Var
x: réel;
Début
Lire(x);
Si (x<0) alors
x -x;
Finsi
Ecrire(‘’ la valeur absolue de x est ‘’, x);
Fin
On change le signe de x s’il est inférieur à zéro, sinon il
est affiché tel qu’il est.
4. Instructions conditionnelles et alternatives
Exemple 2
Ecrire un algorithme qui calcule le salaire d’un
employé à partir du nombre d’heures (nh) travaillées,
du taux horaire (th) et du nombre d’années de
service. Les employés ayant une ancienneté (anc)
de plus de 10 ans bénéficient
d’une allocation supplémentaire de 150 Dh.
Analyse du problème Les variables d’entrées:
1- Données du problème nh, th,anc
· nh : nombre d’heures travaillées Les variables de sorties:
· th : taux horaire (en Dirhams) salaire
· anc : ancienneté (en Année)
2- Résultat recherché
· salaire : salaire net de l’employé (en Dirhams)
3- Comment faire ?
Salaire nh * th
Si (anc > 10) Alors
Salaire salaire + 150
FinSi
4. Instructions conditionnelles et alternatives
Exemple 2
Forme 1 Forme2

Algorithme calcul_salaire; Algorithme calcul_salaire;


Var nh, th, anc, salaire : Réel; Const ALL=150;
Début Var nh, th, anc, salaire : Réel;
Ecrire(”NH travaillées : ”) ; Début
Lire(nh); Ecrire(”NH, Taux horaire, Anc : ”) ;
Ecrire(”Taux horaire : ”); Lire(nh,th,anc);
Lire(th); salaire  nh * th;
Ecrire(”Ancienneté : ”); Si (anc > 10) Alors
Lire(anc); Salaire  salaire + ALL;
salaire  nh * th; FinSi
Si (anc > 10) Alors Ecrire (”Salaire de l’employé = ”, salaire);
salaire  salaire + 150; Fin.
FinSi
Ecrire (”Salaire de l’employé = ”, salaire);
Fin.
4. Instructions conditionnelles et alternatives

4. 1. 2 l’instruction Si …Alors…. Sinon…Finsi


Syntaxe
Si (condition) alors
Instruction 1;
Sinon
Instruction 2;
Finsi

Oui Non
Condition

Instruction 2
Instruction 1
4. Instructions conditionnelles et alternatives
Instruction 1 est exécutée si la condition est vérifiée,
sinon c’est l’Instruction 2 qui sera exécutée.
Exemple 1

Algorithme saisi;
Var
a,b: entier;
Début
Ecrire(”donner deux nombres entiers a et b”);
Lire(a,b);
si (a=b) alors
Ecrire(”vous avez saisi deux fois la même valeur, à savoir”, a);
Sinon
Ecrire(”vous avez saisi deux valeurs différents”, a, ” et” , b,);
Finsi
Fin
4. Instructions conditionnelles et alternatives
Instruction 1 est exécutée si la condition est vérifiée,
sinon c’est l’Instruction 2 qui sera exécutée.
Exemple 2 : le plus grand et le plus petit nombre entre x et y

Première forme Algorithme exemple5;


Var
x,y: réel;
Début
Ecrire(”donner deux nombres x et y”);
Lire(x,y);
si (x>y) alors
Ecrire(”le plus grand est”, x);
Sinon
Ecrire(”le plus grand est”, y);
Finsi
Fin
4. Instructions conditionnelles et alternatives
Deuxième forme

Exemple 2bis: le plus grand et le plus petit nombre entre x et y.


Algorithme exemple5bis;
Var
x,y: réel;
z: booléen;
Début
Ecrire(”donner deux nombres x et y”);
Lire(x,y);
z x>y;
si (z) alors
Ecrire(”le plus grand est”, x);
Sinon
Ecrire(”le plus grand est”, y);
Finsi
Fin
4. Instructions conditionnelles et alternatives
Exemple 3 La valeur absolue de la différence de deux
nombres réels: |x-y|=x-y si x>y
algorithme |x-y|=y-x si x<y
With sinon
Algorithme valeur_absolue2; Without sinon

Var Algorithme valeur_absolue2;


x,y,z: réels; Var
Début x,y,z: réels;
Ecrire(‘’donner deux nombres‘’); Début
Lire(x,y); Ecrire(‘’donner deux nombres‘’);
Si (x>y) alors Lire(x,y);
z x-y; z x-y;
Sinon Si (z<0) alors
z y-x; z y-x;
Finsi Finsi
Ecrire(‘’ val abs2 est ‘’, z); Ecrire(‘’ val abs2 est ‘’, z);
Fin Fin
4. Instructions conditionnelles et alternatives
Conditions composées

Une condition composée est une condition formée de


plusieurs conditions simples reliées par des opérateurs
logiques: ET, OU, OU exclusif (XOR) et NON

EXEMPLES:
- Si x est compris entre 2 et 5:
si ((x>=2) ET (x<=5)) alors …..instructions…
- Si n est divisible par 3 ou par 2:
si((n MOD 3=0) OU(n MOD 2=0)) …..instructions…
- Si Deux valeurs et deux seulement sont identiques parmi
a,b et c:
si ((a=b) XOR (a=c) XOR (b=c)) …..instructions…
L’évaluation d’une condition composée se fait selon des règles
présentées généralement dans ce qu’on appelle table de vérité.
4. Instructions conditionnelles et alternatives
Exemple 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).

Algorithme signe_produit;
Var
n,m: réel;
Début
Ecrire(”donner deux nombres n et m”);
Lire(n,m);
Si ((n>0 ET m>0) OU (n<0 ET m<0)) Alors
Ecrire(” le produit de deux nombres est positif ”);
Sinon
Ecrire(” le produit de deux nombres est négatif ”);
Finsi
Fin
4. Instructions conditionnelles et alternatives
Exemple Ecrire un algorithme qui demande un nombre
4bis entier puis qui teste et affiche s’il est divisible
par 3 ou non.
Algorithme divisible_par3;
Var
n: entier;
Début
Ecrire(‘’entrez un entier‘’);
Lire(n);
Si (n MOD 3=0) alors
Ecrire(n, ‘’ est divisible par 3 ‘’);
Sinon
Ecrire(n, ‘’ n’est pas divisible par 3 ‘’);
Finsi
Fin
4. Instructions conditionnelles et alternatives

4. 1. 3 l’instruction Si …Alors…. Sinon Si…alors …Finsi

syntaxe Si (condition1) alors


Instruction 1;
Sinon Si (condition2) alors
Instruction 2;
Sinon
Instruction3;
Finsi
Finsi

Si la condition1 est vraie, alors le <bloc d’instructions1>


est exécuté. Si elle est fausse ( la condition1), alors on
teste la condition2, si elle est vraie, on exécute le <bloc
d’instructions2, sinon on exécute le <bloc d’instruction3>
4. Instructions conditionnelles et alternatives
Exemple 5a: algorithme qui permet d’afficher le signe d’un nombre saisie par
l’utilisateur( nombre positif, négatif ou nul)
Algorithme exemple5a; Algorithme exemple5aa;
Var Var
n: réel; n: réel;
Début Début
Ecrire(”entrez un nombre”); Ecrire(”entrez un nombre”);
Lire(n); Lire(n);
si (n<0) alors si (n<0) alors
Ecrire(n, ” est négatif”); Ecrire(n, ” est négatif”);
sinon finsi
si(n=0) alors si(n=0) alors
Ecrire(n, ” est nul ”); Ecrire(n, ” est nul ”);
sinon finsi
Ecrire(n, ”est positif”); si(n>0) alors
finsi Ecrire(n, ”est positif”);
finsi finsi
Fin Fin
Dans l’exemple5aa, on fait trois tests systématiquement alors que dans l’exemple5a,
si le nombre est négatif on ne fait qu’un seul test.
4. Instructions conditionnelles et alternatives
4. 1. 4 Imbrication de Si.
Dans de nombreuse applications, on peut avoir plusieurs cas d’exécution
selon différentes conditions. Il faut donc exprimer beaucoup de ‘’ Si ‘’ les uns
à la suite des autres pour englober tous les cas.
Si (a < 0) alors
Si (b < 0) alors
Ecrire( "a et b sont négatifs " );
sinon
Ecrire("a est négatif, b est positif ou b est nul ");
fin si
sinon
Si b < 0 alors
Ecrire( "b est négatif, a est positif ou a est nul");
sinon
Ecrire( "a positif ou a est nul, b positif ou b est nul " );
fin si
fin si
Rq: Si par exemple a et b sont tous deux positifs, alors aucun des deux tests ne sera
vraie, et c'est donc le sinon du sinon qui sera exécuté, a savoir Afficher " a positif
ou a est nul, b positif ou b est nul
4. Instructions conditionnelles et alternatives

4. 1. 4 Imbrication de Si.

Dans de nombreuse applications, on peut avoir


plusieurs cas d’exécution selon différentes conditions. Il
faut donc exprimer beaucoup de ‘’ Si ‘’ les uns à la suite
des autres pour englober tous les cas.
Exemple 1:
Ecrire un algorithme permettant de résoudre une équation du
premier degré ax+b=0.
Exemple 2:
Ecrire un algorithme permettant de résoudre une équation du
seconde degré ax 2+bx+c=0 dans R.

Solution:
4. Instructions conditionnelles et alternatives
Algorithme equationPremierDgr;
Var a,b, x: réels;
Début
Ecrire( ‘’Donner deux nombres a et b’’);
Lire (a,b);
Si (a=0) alors
Si (b=0) alors
Ecrire( ‘’Tous réel est solution de l’équation’’);
Sinon
Ecrire( ‘’ Impossible ’’);
Finsi
Sinon
x -b/a;
Ecrire (” La solution de l’équation est x=”, x);
Finsi
Fin
4. Instructions conditionnelles et alternatives
Algorithme equationSecondDgr;
Var a,b,c x,x1,x2,delta: réels;
Début
Ecrire( ‘’saisir les valeurs des nombres a,b et c’’);
Lire (a,b,c);
Si (a=0) ET(b=0)ET(c=0) alors
Ecrire( ‘’Tous réel est solution de l’équation’’);
Sinon Si (a=0)ET(b=0) alors
Ecrire( ‘’ Impossible ’’);
Sinon Si (a=0) alors
Ecrire (” résolution de l’équation de premier
degré bx+c=0”);
x  -c/b;
Ecrire (” x=”, x);
Sinon
delta  b*b-4*a*c;
4. Instructions conditionnelles et alternatives

si (delta<0) alors
Ecrire (” pas de solution dans R”);
Sinon si (delta=0) alors
Ecrire (” l’équation à une solution réel unique dans R”);
x  -b/(2*a);
Ecrire (” x=”, x);
Sinon
x1  (-b+racine(delta)/(2*a));
x2  ( -b-racine(delta)/(2*a));
Ecrire (” les deux solutions dans R sont”);
Ecrire (” x1=”, x1, ”et x2=”,x2);
finsi
finsi
finsi
Finsi
finsi
Fin
4. Instructions conditionnelles et alternatives

4. 2 Instructions alternative: la primitive Selon


Syntaxe selon <variable> faire
liste de valeur1: <séquence d’instruction1>;
liste de valeur2 :<séquence d’instruction2>;
liste de valeur3 : <séquence d’instruction3>;
…………..
liste de valeurN>: <séquence d’instructionN>;
Sinon :<instruction_par_defaut>;
Finselon

Organigramme variable Sinon


Valeur 1
Valeur 2 Valeur N
Instru par
Instru 1 Instru 2 Instru N
defaut
4. Instructions conditionnelles et alternatives

Remarques importantes

L’instruction qui sera exécutée est celle qui correspondra à


la valeur courante de la variable testée.

Lorsque cette exécution est achevée, on va ignorer toutes


les séquences instructions suivantes.

Deux valeurs différentes peuvent entrainer un même


traitement. Nous pouvons alors les regrouper séparées par
des virgules avant de décrire le traitement.
Si la variable n’est égale a aucune des valeurs testées, c’est
l’instruction par défaut qui est exécutée.

la variable de sélection doit être déclarée, et ne doit avoir


q’un type discret( entier ou caractère mais pas un réel).
4. Instructions conditionnelles et alternatives

4. 2 Instructions alternative: la primitive Selon

Exemple: Ecrire un algorithme qui permet de lire un


numéro compris entre 1 et 12 et d’afficher le nom du mois
correspondant. Si le numéro entré est en dehors de cet
intervalle, un message d’erreur doit être affiché.
4. Instructions conditionnelles et alternatives
4. 2 Instructions alternative: la primitive Selon
Exemple: Ecrire un algorithme qui permet de lire un numéro
compris entre 1 et 12 et d’afficher le nom du mois
correspondant. Si le numéro entré est en dehors de cet
intervalle, un message d’erreur doit être affiché.
Algorithme mois;
Variables n : Entier
Début
Ecrire(”Entrer le numéro du mois : ”);
Lire(n)
Selon n Faire
1 : Ecrire(”janvier”)
2 : Ecrire(”février”)

12 : Ecrire(”décembre”)
Sinon
Ecrire(”numéro de mois erroné... ”)
FinSelon
Fin.
4. Instructions conditionnelles et alternatives
4. 2 Instructions alternative: la primitive Selon
Remarque :L’exercice précédent peut être résolu en utilisant
plusieurs instructions « Si » imbriquées, mais l’algorithme sera
très lourd : Algorithme mois; (* version Si *)
Variables n : Entier
Début
Ecrire(”Entrer le numéro du mois : ”);
Lire(n)
Si (n=1) alors
Ecrire(”janvier”)
Sinon
Si(n=2) alors
Ecrire(”février”)
Sinon
Si(n=3) alors
Ecrire(”mars”)

Fin.
Exemple: Ecrire un algorithme qui permet de lire un numéro compris entre 1 et 7
et d’afficher le nom du jour correspondant.
4. 2. 2 En utilisant l’instruction Cas (selon)
Algorithme Affiche_jour;
Var
jour: entier;
Début
Ecrire(‘’ entrer le chiffre de jour’’);
Lire(jour);
selon (jour) Faire
1: Ecrire(‘’ Lundi’’);
2: Ecrire(‘’ Mardi’’);
3: Ecrire(‘’ Mercredi’’);
4: Ecrire(‘’ Jeudi’’);
5: Ecrire(‘’ Vendredi’’);
6: Ecrire(‘’ Samedi’’);
7: Ecrire(‘’ Dimanche’’);
Sinon \\ (Autre cas)
Ecrire(‘’n’est pas un jour de la semaine’’);
FinSelon
Fin
Exemple2 ( version 1)
Ecrivons un algorithme demandant a l'utilisateur le jour de la
semaine. Affichons ensuite le jour correspondant au lendemain.
Algorithme lendemain;
Var erreur: entier;
jour, lendemain: chaine de caracrtère;
Début
Ecrire(‘’ saisir un jour de la semaine’’);
Lire(jour);
Erreur0;
Selon jour faire
‘’ Lundi’’: lendemain ‘’ Mardi’’;
‘’ Mardi’’: lendemain ‘’ Mercredi’’;
‘’ Mercredi’’: lendemain ‘’ Jeudi’’;
‘’ Jeudi’’: lendemain ‘’ Vendredi’’;
‘’ Vendredi’’: lendemain ‘’ Samedi’’;
‘’ Samedi’’: lendemain ‘’ Dimanche’’;
‘’ dimanche’’: lendemain ‘’ lundi’’;
Sinon: Erreur1; \\ErreurVrai;
FinSelon
Si (erreur=1)
Ecrire ("erreur de saisie");
Sinon
Ecrire("Le lendemain du ", jour, " est ", lendemain, ".")
finsi
Fin
Version 2
On considère une variable booleen.
Algorithme lendemain;
Var erreur: booleen;
jour, lendemain: chaine de caracrtère;
Début
Ecrire(‘’ saisir un jour de la semaine’’);
Lire(jour);
Erreurfaux;
selon jour faire
‘’ Lundi’’: lendemain ‘’ Mardi’’;
‘’ Mardi’’: lendemain ‘’ Mercredi’’;
‘’ Mercredi’’: lendemain ‘’ Jeudi’’;
‘’ Jeudi’’: lendemain ‘’ Vendredi’’;
‘’ Vendredi’’: lendemain ‘’ Samedi’’;
‘’ Samedi’’: lendemain ‘’ Dimanche’’;
‘’ dimanche’’: lendemain ‘’ lundi’’;
sinon ErreurVrai;
FinSelon
Si (erreur)
Ecrire ("erreur de saisie");
Sinon
Ecrire("Le lendemain du ", jour, " est ", lendemain, "."
finsi
Fin
REMARQUES

Il y a une grande différence entre cet algorithme et celui


utilisant les imbrications de Si. Ce dernier semble plus
claire et lisible et il n’y a pas de risque d’erreurs
5. 3 Incrémentation et décrémentation

-Incrémentation: C’est l’augmentation de la valeur d’une


variable à chaque phase de l’exécution d’un programme
(algorithme).
-Décrémentation: C’est la diminution de la valeur d’une
variable à chaque phase de l’exécution d’un programme
(algorithme).

Syntaxe: x ←x+step où ‘’step’’ est le pas


d’incrémentation (ou de décrémentation).

Vous aimerez peut-être aussi