Computing">
Introduction à l'Algorithme et Structures
Introduction à l'Algorithme et Structures
1ère Année
Semestres 1
ALGORITHME
Pr. M. EL HAMZAOUI
& F. BENSALAH
// Université Chouaib Doukkali – EL Jadida // // ENCG-J // //Algorithme//
I- Définitions d’Algorithme………………………………………………………………. 06
II- Structure générale d’un Algorithme ……………………………………………...…... 06
III. Déclaration des objets ………………………………………………………………... 08
III.1. Constantes ……..……………………………………………………………... 08
III.2. Variables ……..…………………………………………………………..……. 08
a. Type Entier ………………………………………………………………….. 09
b. Type Réel …………………………………………………………..……….. 09
c. Type Chaîne de caractères ………………………………………………...… 09
d. Type Caractère ……………………………………………………………… 10
e. Type Booléen ………………...……………………………………………… 10
III.3. Tableaux ……….……………………………………………………………... 10
III.4. Procédures et fonctions ……….……………………………………………… 11
IV. Manipulation des objets ……….……………………………………………………... 12
IV.1. Instructions de dialogue Homme-Machine ………..………………………….. 12
IV.2. Instruction d’affectation …………..…………………………………………... 15
IV.3. Instructions à structure alternative …………………………………………….. 16
a. Conditions …………..……………………………….….…………………... 16
b. Opérateurs ……………..………………………….….……………………... 16
b.1. Opérateurs arithmétiques …………….………….…………………….. 16
b.2. Opérateurs de comparaison …….……………………………………… 16
b.3. Opérateurs logiques …………………..…..…………………………… 17
c. Instruction Si ………………...……………………………………………... 17
d. Instruction Suivant Cas ………..…………………………………………... 19
IV.4. Instructions à structure répétitive ………………………………………………. 20
a. Instruction Tant que ………………………………...……………………….. 21
b. Instruction Faire jusqu’à …………………………..….……………………... 23
c. Instruction Pour ………...……………………………………………………. 24
I- Définition ……………………………………………………………………………… 26
II- Tableau à une dimension …………………………………………………………….. 26
II.1. Problème simple ………………………………………………………………… 26
II.2. Opérations sur les tableaux ..…………………………………………………… 27
a- Somme des éléments de deux tableaux ………………………………………… 27
b- Maximum, minimum et la moyenne des éléments d’un tableau ……………….. 28
c- Fusion de deux tableaux ……………………………………………………….. 29
d- Tri d’un tableau …………………...……………………………………………. 30
d.1. Tri par échange ………….…………………………………………………. 31
d.2. Tri par insertion ……….…………………………………………………... 32
e- Recherche Dichotomique ……………………………………………………….. 33
III- Tableau à deux dimensions…………………………………………………………… 34
III.1. Lecture et l’affichage d’une matrice …………………………………………….. 34
III.2. Opérations sur les matrices ……………………………………………………… 35
a- Somme de deux matrices ………………..……………………………………… 35
b- Produit de deux matrices ……..………………………………………………… 36
Avant propos
" Un algorithme est une suite finie de règles à appliquer dans un ordre déterminé à un nombre fini de
données pour arriver, en un nombre fini d'étapes, à un certain résultat, et cela indépendamment des
données. "
@ Référence : [Link]
Chapitre 1 :
NOTIONS ET DEFINITIONS UTILES
Chapitre 2 :
CONCEPTION D’UN ALGORITHME
Chapitre 1 :
NOTIONS ET DEFINITIONS UTILES
I- Notion d’information :
- Définition :
Une information est tout renseignement (ou toute donnée) permettant d’augmenter notre niveau de
connaissance sur un sujet bien déterminé. Cet aspect n’est pas mesurable, par conséquent on est obligé
de chercher à définir son aspect quantitatif :
- Exemple :
Un étudiant de l’ENCG-J est identifié, par exemple, par les propriétés suivantes dont chacune
possède une et une seule valeur :
Nom Moutale
Prénom Othmane
Etudiant CNE …………………..
Niveau Première année – S1
Adresse …………………..
Age 17
etc. ..
- Remarque: les propriétés associées à un sujet dépendent de l’application pour laquelle elles sont
destinées. Par conséquent leur nombre est fini.
Les informations utilisées par les programmeurs sont réparties en plusieurs classes. Dans ce cours,
nous nous intéresserons seulement aux trois classes suivantes :
1°- Donnée :
§ Définition : On appelle donnée toute information obtenue sans calcul.
§ Exemple :
- La quantité achetée et le prix unitaire d’un produit.
- Le nom et le prénom d’un étudiant.
- La date d’embauche d’un employer.
2°- Sortie :
§ Définition : On appelle sortie toute information obtenue à partir de l’application d’une règle
sur des données.
§ Exemple :
- Le montant à payer est une sortie :
3°- Instruction :
§ Définition : On appelle instruction toute information qu’on doit appliquer sur les données
pour avoir les sorties.
Comme nous l’avons vu dans la partie architecture des ordinateurs de l’élément de module
informatique de base, un ordinateur est composé d’un certain nombre de composantes matérielles et
logicielles. Dans cette section, nous présentons quelques concepts qui apparaissent intéressants et
indispensables pour un programmeur.
1°- Ordinateur :
§ Définition : Un ordinateur est une machine électronique qui permet de réaliser les traitements de
l’information à base des algorithmes. C’est à dire qu’il est capable d’exécuter les
instructions de l’algorithme. Par conséquent, il doit être constitué d’un certain nombre
d’unités (unités d’entrée, unités de sortie, unité de traitement etc…..) afin d’assurer cette
exécution.
§ Définition : On appelle unité de traitement ou unité centrale de traitement (UCT) toute unité qui
permet d’exécuter le code des instructions d’un algorithme d’une manière automatique
et à partir des données introduites permet d’avoir les sorties.
§ Définition : On appelle unité (organe ou périphérique) d’entrée toute unité capable d’assurer la
circulation des informations de l’extérieur (utilisateur) vers l’intérieur de l’unité
centrale.
§ Définition : On appelle unité (organe ou périphérique) de sortie toute unité qui permet de
transmettre à l’extérieur de l’unité centrale les résultats d’un algorithme.
§ Définition : On appelle langage de programmation tout ensemble fini de mots réservés qui
permettent de traduire les instructions de l’algorithme afin de l’exécuter par
l’ordinateur.
§ Exemple : Turbo Pascal, Cobol, Fortran, C, Delphi, Visuel Basic (VB), C++, Java etc.
§ Définition : On appelle mémoire centrale (ou RAM) tout dispositif matériel capable de stocker à
l’intérieur de l’unité centrale des informations d’une manière spontanée (mémoire
volatile).
N.B : Toute information absente de la mémoire centrale (RAM) est ignorée par le microprocesseur,
étant donné que la RAM ne peut pas conserver les données d’une manière prolongée. Ces
dernières peuvent être stockées, d’une manière permanente, sous forme de fichiers sur une
unité de stockage convenable (mémoires de masse).
§ Définition : Le langage Assembleur est un langage qui utilise des instructions sous forme
symbolique (ADD, MOVE, etc.). L’assembleur est lié au microprocesseur, puisque
c’est le seul langage que le microprocesseur comprend.
8°-Langage évolué :
§ Définition : Un langage évolué est un langage de programmation qui permet de traduire les
instructions d’un algorithme à l’aide d’un ensemble de mots réservés et de règles.
Pour obtenir un nouvel ensemble d’instructions non exécutables directement par
l’ordinateur on parle de programme source.
Etant donné qu’un programme source n’est pas exécutable directement, on a besoin de le traduire à
son tour en langage binaire (langage machine). Pour cela on a besoin d’un compilateur.
a- Définition :
On appelle compilateur tout programme spécial qui permet d’avoir un programme exécutable à partir
d’un programme source. Le programme ainsi obtenu est appelé programme Objet.
Pour informatiser un problème et le rendre également exploitable à travers une machine, ce dernier
doit parcourir différentes étapes importantes. Chaque étape est caractérisée par ses propres règles de
traitement, sa logique et sa position précise :
Chapitre 2 :
CONCEPTION D’UN ALGORITHME
I- Définitions d’Algorithme :
Le concept d’algorithme a plusieurs définitions qui gravitent toutes autour d’une même idée. Nous
présentons ci-après deux de ces définitions :
- Définition 1 :
C’est un pseudo-langage qui a été conçu pour résoudre les problèmes et applications sans aucune
contrainte due aux langages de programmation et aux spécificités de la machine. Ce pseudo-langage
sera ensuite traduit et codé dans le langage de programmation désiré.
- Définition 2 :
Un algorithme est une procédure de calcul qui est non ambiguë, déterministe, finie (durée d’exécution
finie) et exprimée en termes d’instructions élémentaires exécutables. Il permet également d’avoir les
sorties une fois qu’il est appliqué sur les données.
Avant de commencer la structure générale d’un algorithme, il nous parait très important d’essayer de
comprendre premièrement, à travers un exemple simple, le concept d’algorithme.
- Problème :
Supposons que notre problème consiste à informatiser la solution mathématique d’une équation du 1er
degré de la forme ax+b=0 (a et b sont deux valeurs quelconques). Si nous demandons à n personnes de
nous proposer chacune une équation du 1er degrè à résoudre, nous pourrons obtenir ainsi n paires (a,b)
différentes. Notre objectif est de donner pour chaque paire (a,b) la solution correspondante.
- Solution :
Pour ne pas reprendre chaque fois la même procédure de calcul pour déterminer la solution x de
l’équation ax+b=0, il suffit de trouver un moyen qui reçoit chaque paire (a,b) et la manipule, en
suivant des règles bien déterminées, pour retourner la solution attendue :
En somme, cette procédure représente l’utilité ainsi que le principe d’un algorithme qui est l’analyse et
le traitement des solutions des problèmes, tout en respectant un certain nombre de règles et de
conventions d’analyses bien précises, afin de les informatiser et les rendre automatique sur
l’ordinateur.
En général, un algorithme est constitué de trois parties dont les deux dernières sont très importantes :
1ère partie : Cette partie concerne la présentation de l’objectif de l’algorithme en utilisant le minimum
de mots possible (le plus petit résumé possible de l’objectif de l’algorithme).
ème
2 partie : Cette partie sert à définir les différents objets à manipuler par l’algorithme.
3ème partie : Cette dernière partie est consacrée à la manipulation des objets définis au niveau de la
deuxième partie pour pouvoir dégager les résultats attendus de l’algorithme.
Si on revient sur notre exemple, la première partie sera consacrée à la présentation du titre de
l’algorithme (par exemple, Equation du premier degré). La deuxième partie sera, quant à elle, réservée
à la déclaration des objets dont nous aurons besoin pour résoudre le problème (a, b et x). Le rôle de
cette déclaration est la spécification de la nature de ces objets (entiers, réels, chaînes etc.). La troisième
et dernière partie aura pour but l’application des instructions nécessaires sur les objets (a,b) pour
obtenir les résultats constituant l’objectif de notre algorithme.
En général, un algorithme a la structure suivante :
Notes importantes :
Avant de passer à la section suivante de notre cours, il parait important à ce stade de discuter
brièvement la «Relation programmeur-ordinateur» et L’ «Ecriture d’un algorithme».
i- Relation programmeur-ordinateur : cette relation peut être résumée de la manière suivante:
Lors de la conception d’un algorithme, le programmeur doit considérer l’ordinateur une machine de
Von Neumann (Périphériques d’Entrée/Sortie, Mémoires et un processeur reliés par des bus) et
s’intéresser surtout aux mémoires (RAM, disque dur, etc.) et au microprocesseur car les mémoires lui
permettent le stockage des données (objets) dans de l’unité centrale tandis que le microprocesseur lui
assure la manipulation de ces données pour avoir les résultats attendus de son algorithme
(Programme). En résumé, les mémoires ont une relation directe avec la partie déclaration de
l’algorithme et le microprocesseur a une relation avec la partie manipulation.
Cette note confirme ce qu’on a cité dans la section «avant propos» de ce cours :
« A travers l’algorithme, l’homme (le programmeur) explique à l’ordinateur toute la procédure de
l’informatisation des problèmes proposés par les utilisateurs. »
Le programmeur informe donc la machine, au niveau de la partie déclaration de son algorithme, de la
quantité d’espace mémoire dont il aura besoin pour résoudre le problème qu'il désire informatiser. Il
explique par la suite (instruction par instruction) au microprocesseur, au niveau de la partie
manipulation de l’algorithme, la façon dont il doit manipuler les espaces mémoires réservés (objets
stockés au niveau des mémoires) pour retourner les résultats attendus de l’algorithme en question.
ii- Ecriture d’un algorithme : Vu le fait que l’algorithme est un travail manuel effectué par le
programmeur sans aucune contrainte due ni aux langages de programmation et ni aux spécificités de la
machine, il n’y a donc aucune écriture normalisée/standardisée pour les algorithmes.
Lors de la saisie de leurs algorithmes, les programmeurs adoptent par conséquent, sous forme de
conventions, des syntaxes, des règles, etc. où la logique et la validité des analyses et des raisonnements
suivis sont trop exigées. Nous signalons aussi que souvent les programmeurs orientent principalement
les syntaxes et les règles de saisie de leurs algorithmes vers le langage de programmation qu'ils
souhaitent utiliser ensuite pour traduire ces algorithmes.
Dans notre cas, nous orientons, le long de ce cours, nos syntaxes et règles de saisie vers le langage de
programmation Turbo Pascal que nous emploierons pour la traduction de nos algorithmes sur
l’ordinateur.
III- Déclaration des objets :
- Définition :
Un objet est toute partie identifiable de l’information au cours d’un traitement et est caractérisé par un
nom, un type et une valeur.
L’ensemble des objets manipulés par un algorithme est appelé environnement de cet algorithme.
- Remarques :
III.1. Constante :
- Définition :
Une constante est une référence à une valeur invariante le long de l’algorithme (lors de l’exécution du
programme).
- Syntaxe :
Constant id_Constante = valeur
Le terme id_Constante est l’identifiant de la constante c'est-à-dire c’est le nom que l’on utilise pour
désigner la constante au sein de l’algorithme.
Exemple :
Constante Pi = 3.14
Constante TVA = 0.2
III.2. Variables :
- Définition :
Une variable est une référence (adresse mémoire) où vont être stockées des valeurs variables qui sont
en général de même type. Les différentes valeurs d’une référence appartiennent obligatoirement au
type de données auquel appartient la référence.
- Remarques :
1°- La déclaration des variables est très importante car elle permet de référencer les différentes
variables nécessaires au programme.
2°- L’affectation d’un type à une variable est nécessaire pour contrôler les valeurs et les différentes
opérations possibles sur cette variable ainsi que l’espace nécessaire en mémoire.
3°- L’identifiant (ou nom) d’une variable est une suite de caractères qui permet de l’identifier d’une
manière unique dans un algorithme. Dans la pratique on doit choisir des noms distincts composés
au maximum de 8 caractères, et qui commencent par un caractère alphanumérique.
- Types de variables : Il existe différents types de variables. Pour ce cours, nous utilisons le type
Entier, le type Réel, le type Chaîne de caractères, le type caractère et le type
Booléen.
b. Type Réel : L’ensemble des nombres réels, c’est à dire de nombres décimaux sans
limitation.
Exemple : si nous avons besoin dans un algorithme d’une variable de type réel que l’on
nomme par exemple d, la déclaration sera de la façon suivante :
Variable d : Réel
c. Type Chaîne de caractères : C’est une suite de caractères, c’est à dire des combinaisons de
caractères (lettres, chiffres, symboles..).
Exemple : S’il est nécessaire dans un algorithme d’utiliser une variable de type chaîne de
caractères pour y stocker par exemple la catégorie d’un client d’un service que l’on la nomme
cat, la déclaration sera de la façon suivante :
d. Type Caractère : C’est une variable qui ne contient qu’un seul caractère (lettres, chiffres,
symboles..). On le considère également un cas particulier de chaînes de
caractères (c’est une chaîne de caractère de taille 1).
Exemple : S’il est nécessaire dans un algorithme d’utiliser une variable de type caractère pour
mémoriser la réponse confirmative de l’utilisateur (Oui ou Non [O/N] ?), la déclaration devra
similaire à la déclaration suivante :
e. Type Booléen : Il s’agit des objets qui ne peuvent prendre que deux valeurs vrai ou faux.
Pour déclarer une variable de type Booléen, la syntaxe est comme suit :
Exemple : Pour déclarer, par exemple, dans un algorithme une variable de type booléen pour
prendre des décisions sur l’évolution de notre calcul qu’on nomme décision, la déclaration de
cette variable devrait être de la façon suivante :
III.3. Tableaux :
Définition :
Un tableau est une variable composée qui permet de représenter un ensemble de valeurs ayant des
propriétés communes et appartenant toutes au même type. Ces variables sont identifiées par un même
nom mais un numéro de repère (indice) pour chacun. Un tableau peut être d’une ou plusieurs
dimensions.
Exemples :
Tab-Salaire[17]=3000.50
Remarque : Lettres[i,j] désigne l’élément existant sur l’intersection de la (i)ème ligne et de la (j)ème
colonne . Si, par exemple, le caractère ‘c’ se trouve sur l’intersection de la (2)ème ligne et la (4)ème
colonne, on pourra écrire:
Lettres[2,4]= ‘c’.
Ce sont des sous-programmes auxquels on peut faire référence à l’intérieur d’un programme. Elles
sont conçues pour éviter les répétitions et pour découper des programmes jugés trop longs ce qui
facilite la lisibilité du programme principal. Elles sont caractérisées par des paramètres d’entrée et des
paramètres de sortie.
Remarque : La différence entre une procédure et une fonction, c’est que la deuxième retourne une
seule valeur tandis que la première peut retourner plusieurs valeurs ou aucune.
NB : Les tableaux, les procédures et les fonctions ne font pas l’objet de ce cours. Les aperçus
présentés sur ces derniers sont donnés seulement à titre indicatif.
Définition 1 :
On appelle instruction toute commande élémentaire que l’on doit appliquer sur des objets pour avoir
les sorties.
Définition 2 :
Une action est un événement qui change l’état d’un objet d’un état initial donné à un état final désiré.
Une action a une durée d’exécution finie et un effet privé et bien défini. Chaque action porte sur des
objets sur lesquels elle s’exécute :
La partie manipulation des objets qui existe directement après la partie déclaration doit commencer par
le mot DEBUT et se terminer par le mot FIN :
DEBUT
Instruction 1
Instruction 2
… Action
…
Instruction n
FIN
La partie manipulation a pour objectif d’utiliser les différents objets déclarés dans la partie déclaration
et leur appliquer des opérations afin de retourner le(s) résultat(s) attendu(s) par le programmeur. Pour
ce fait, il y a différentes instructions, dites actions, à savoir :
a. Affichage des informations : Pour faire comprendre qu’il faut afficher des informations à
l’écran, on utilise l’instruction écrire qui obéit à la syntaxe suivante :
Exemple :
- Pour afficher sur l’écran le message Bonjour tout le monde, il suffit d’écrire :
Ecrire(‘‘Bonjour tout le monde’’)
Le système affiche bêtement tout ce qui est entre les quottes sans aucun traitement.
i- Dialogue (ou conversation question/réponse) : Cette instruction est un moyen pour assurer la
première partie de toute conversation Homme-machine dans le sens machine à Homme. cette
instruction permet, plus exactement, à la machine de poser ses questions à l’homme en lui
donnant la main pour introduire une réponse (valeur, confirmation, etc..) sinon la
communication Homme-Machine reste bloquée et ne débutera jamais.
Par exemple, Pour permettre à l’utilisateur de saisir les valeurs de a et b qu’il a choisies, nous
écrivons :
Ecrire(‘‘Saisissez la valeur de a : ’’)
Ecrire(‘‘Saisissez la valeur de b : ’’)
Le système affiche, sur l’écran, tout ce qui est entre les quottes sans aucun traitement
particulier.
On peut aussi regrouper les deux messages en un seul :
ii- Affichage pur : Dans ce cas, l’instruction écrire est utilisée pour afficher un résultat ou un
message qui n’a pas besoin d’une réponse de la part de l’utilisateur.
Par exemple, si la variable r de type réel est utilisée pour stocker le résultat d’un calcul, pour
l’affichage de ce résultat nous pourrons écrire:
Ecrire(r)
Si par exemple le résultat trouvé est 15.2 et puisque tout ce qui est entre les quottes ne subit
aucun traitement spécial de la part du système, le résultat de cette instruction sera plus
exactement :
Le résultat trouvé est : 15.2
Ici, le système a seulement traité r qui existe à l’extérieur des quottes et l’a remplacé par sa
valeur.
b. Saisie des informations : Pour indiquer dans un algorithme que telle donnée doit être
saisie, on utilise l’instruction lire qui obéit à la syntaxe suivante :
Lire(id_variable)
Lire(id_variable1, id_variable2,…)
Exemple : Dans notre exemple toujours, pour indiquer à l’algorithme de lire la valeur de a
saisie par l’utilisateur, on écrit juste après le message demandant la valeur de a :
Lire(a)
Il s’agit de l’opération permettant le stockage d’une valeur à un endroit spécifique (variable). Pour
affecter une valeur à une variable, on écrit :
id_variable Ñ Valeur
Variable A : Entier
Variable X,Y,Z : réel
Variable C1 : Car
Variable S1,S2 : Chaîne de caractères
Variable B,C : Booléen
A Ñ 5 è (A = 5)
A Ñ A-1 è (A = 5 – 1 = 4)
X Ñ 2.5 è (X = 2.5)
Y Ñ X+1 è (Y = 2.5 +1 = 3.5)
Résultats
Z Ñ Z*X è (Z = 3.5 * 2.5 = 8.75)
de
C1 Ñ ‘M’ è (C1 = ‘M’) l’affectation
S1 Ñ ‘Num’ è (S1= ‘Num’)
S2 Ñ ‘12’ + ‘3’ è (S2 = ‘123’)
S1 Ñ S1 + ‘ ’+S2 è (S1 = ‘Num 123’)
B Ñ 1 <> 2 è (B = Vrai)
C Ñ B ET (2 <3) è (C = Vrai ET Vrai = Vrai)
Exercice 1 :
Ecrire un algorithme qui calcule la surface d’un cercle de rayon quelconque :
Surface = p * Rayon2
Solution :
- Discussion :
Pour résoudre ce problème, premièrement nous aurons besoin de la valeur du rayon comme
donnée car sa valeur dépend de l’utilisateur ce qui exige la déclaration d’une variable où on
stockera la valeur du rayon qui est de type réel. Deuxièmement, nous aurons besoin d’une
- Algorithme proposé:
Partie Déclaration :
Constante Pi=3.14
Variable Rayon : Réel
Variable Surface : Réel
Partie Manipulation :
DEBUT
Ecrire(‘‘Saisissez la valeur du rayon : ’’)
Lire(Rayon)
Surface ß Rayon * Rayon * Pi
Ecrire(‘‘La Surface = ’’, Surface)
FIN
Exercice 2 :
Ecrire un algorithme qui calcule la moyenne générale d’un étudiant sachant que celle-ci se calcule de
la manière suivante :
Moyenne = [2 x Note(Physique) + 3 x Note(Maths) + 2 x Note(Français)] / 7
Solution :
- Discussion :
Entrée :
- Note de Physique : NP Sortie :
- Note de Maths : NM Manipulation Moyenne Générale : MG
- Note de Français : NF
- Algorithme proposé :
Titre : Calcul d’une moyenne générale
Partie Déclaration :
Variable NP,NM,NF,MG : Réel
Partie Manipulation :
DEBUT
Ecrire(‘‘Saisissez la note de physique : ’’)
Lire(NP)
Ecrire(‘‘Saisissez la note de Mathématiques : ’’)
Lire(NM)
Ecrire(‘‘Saisissez la note de Français : ’’)
Lire(NF)
MG ß (2 * NP + 3 * NM + 2*NF) / 7
Ecrire(‘‘ La moyenne générale est : MG = ’’, MG)
FIN
Avant d’avancer dans ce paragraphe, nous devons présenter deux notions essentielles dans chaque
algorithme qui sont : Les conditions et les opérateurs.
a. Condition :
On appelle condition simple toute expression de la forme suivante qui retourne une valeur booléenne :
NB : Les opérandes de la condition simple peuvent être des valeurs booléennes ou des variables booléennes
dans le cas d'un opérateur logique et des valeurs numériques, des variables entières ou réelles ou des
expressions de calcul dans le cas d'un opérateur de comparaison, etc.. Lorsqu'il s'agit des conditions
composées, ces opérandes peuvent être des conditions simples, et/ou des conditions composées, etc...
b. Opérateurs :
b.1. Opérateurs arithmétiques :
Opérateur Signification
+ Addition
- Soustraction
* Multiplication
div Division entière
/ Division réelle
% Modulo : le reste de la division de 2 valeurs
Exemple :
Opérateur Signification
= Egal
< Inférieur
> Supérieur
<= Inférieur ou égal
>= Supérieur ou égal
<> différent
Exemple :
Expression Résultat
Var1 = Var2 La variable 1 égale à la variable 2
X <> Y La variable X différente de la variable Y
T< M La variable T est inférieure à la variable M
Opérateur Signification
ET Et logique
OU Ou logique
NOT Négation logique
XOR Ou Exclusif
Exemple :
Expression Résultat
(4<7) ET (9>0) Vrai
(1<0) OU (1<>1) Faux
NOT(13.4 < 15) Faux
Note : Seuls les opérateurs logiques et les opérateurs de comparaison sont utilisés comme opérateur de
base pour exprimer une condition.
c. Instruction Si :
Pour exprimer le fait que des instructions vont être exécutées dans un cas alors que d’autres
instructions peuvent être exécutées dans l’autre cas, on utilise une structure alternative. Dans le cas où
il n’y a pas de l’alternance, mais seulement la condition, la structure est dite conditionnelle.
Syntaxe :
Si condition alors
Actions 1
[ Sinon
Actions 2] Option Facultative
Finsi
Explication :
La condition va s’évaluer si le résultat est Vrai (condition remplie) les Actions 1 s’exécuteront si le
résultat est Faux (condition non remplie) les Actions 2 s’exécuteront.
Exercice :
Pour compléter l’algorithme précédent qui calcule la moyenne générale d’un étudiant sachant que
celle-ci se calcule de la manière suivante :
Afficher ‘Admis’ si un étudiant a une moyenne générale >=10 et Afficher ‘Ajourné’ dans le cas contraire
(Moyenne générale < 10).
Solution :
- Algorithme proposé:
Partie Déclaration :
Variable NP,NM,NF,MG : Réel
Partie Manipulation :
DEBUT
Ecrire(‘‘Saisissez la note de physique : ’’)
Lire(NP)
Ecrire(‘‘Saisissez la note de Mathématiques : ’’)
Lire(NM)
Ecrire(‘‘Saisissez la note de Français : ’’)
Lire(NF)
MG ß (2 * NP + 3 * NM + 2 * NF) / 7
Si (MG >= 10) alors
Ecrire(‘‘Admis’’)
Sinon
Ecrire(‘‘Ajourné’’)
Finsi
Ecrire(‘‘La moyenne générale est : MG = ’’, MG)
FIN
Exercice 2 :
Ecrire un algorithme qui donne le nombre de jours maximal d’un mois d’une année donnée.
Solution :
- Explication :
Remarque : Lors de cet exercice, comme vous pourrez le constater la variable R n’est pas une donnée
initiale (donnée d’entrée), on en a eu seulement besoin lors de la manipulation. Ce type de variables
s’appelle : Variable Intermédiaire.
-Algorithme :
Si (M = 2) alors
R ß A%4
Si (R = 0) alors
JMax ß 29
Ecrire(‘‘Le nombre de jours maximal est : ’’, JMax)
Sinon
JMax ß 28
Ecrire(‘‘Le nombre de jours maximal est : ’’, JMax)
Finsi
Sinon
Si (M=1 ou M=3 ou M=5 ou M=7 ou M=8 ou M=10 ou M= 12) alors
JMax ß 31
Ecrire(‘‘Le nombre de jours maximal est : ’’, JMax)
Sinon
Si (M=4 ou M=6 ou M=9 ou M= 11) alors
JMax ß 30
Ecrire(‘‘Le nombre de jours maximal est : ’’, JMax)
Sinon
Ecrire(‘‘Attention : Mois Incorrect ’’)
Finsi
Finsi
Finsi
FIN
L’instruction Suivant cas constitue une structure alternative à la forme en bloc [Si … Alors
…Sinon…] et permet de formuler de manière plus simple le choix du groupe d’instructions.
Syntaxe :
Suivant Cas id_variable Faire
Cas Valeur 1
Actions 1
Cas Valeur 2, Valeur3, Valeur 4
Actions 2
Cas Valeur 5 à Valeur 7
Actions 3
..
..
Sinon Cas
Actions N
Fin Suivant
Exercice :
Reprenez le même exercice du paragraphe précédent en utilisant l’instruction Suivant Cas.
Solution :
- Algorithme proposé:
Partie Déclaration :
Variable M,A,R,JMax : Entier
Partie Manipulation :
DEBUT
Ecrire(‘‘Donner le Mois (Numérique) : ’’)
Lire(M)
Ecrire(‘‘Donner L’année : ’’)
Lire(A)
Problème :
Solution :
DEBUT
Ecrire(‘‘ENCG-J-2008/2009’’)
FIN
Pour l’afficher 250 fois nous devons ajouter à cet algorithme 249 fois l’instruction :
Ecrire(‘‘ENCG-J-2008/2009’’)
Ce qui donne :
DEBUT
Ecrire( ‘‘ENCG-J-2008/2009’’) 1
Ecrire( ‘‘ENCG-J-2008/2009’’) 2
.
.
Ecrire( ‘‘ENCG-J-2008/2009’’) 300
FIN
Pour ce type de problèmes, toutes les instructions qu’on vient de voir ne répondent pas bien. Il faut
penser à d’autres instructions qui permettent de répéter facilement une grande séquence d’instructions.
Ce type d’instructions on l’appelle : Instructions à structure répétitive.
a. Instruction Tant que :
On utilise cette instruction pour exécuter des actions tant qu’une condition est réalisée.
Syntaxe :
Fonctionnement :
On commence par l’évaluation de la condition; si la condition est vraie, on exécute les actions et on
répète l’évaluation de la condition. Si elle est fausse, on sort de la boucle.
Exercice 1:
Ecrire un algorithme permettant d’afficher 250 fois le message : ‘‘ENCG-J-2008/2009’’.
Solution :
Partie Déclaration :
Variable i : Entier
Partie Manipulation :
DEBUT
i ß 0
Tant que (i < 250) Faire
Ecrire(‘‘ENCGJ-2008/2009’’)
i ß i+1
Fin tant que
FIN
Explications :
- Dans cet exercice on a recours à une variable intermédiaire i qui va nous servir pour gérer l’accès à la
boucle ou exactement la gestion du nombre de fois d’accès à la boucle. Toute variable de ce genre on
l’appelle : Compteur.
- La condition de l’accès à la boucle est que le compteur soit inférieur strictement à 300.
- Le compteur est initialisé à la valeur zéro. Ce qui facilite l’accès à la boucle pour la première
tentative d’accès. Une fois qu’on accède à la boucle, le message s’affiche grâce à l’instruction Ecrire.
Puis on applique sur le compteur l’instruction d’affectation :
i Ñ i+1
Cette instruction n’est pas une instruction d’affectation normale, on l’appelle Incrémentation. Son rôle
est de stocker dans la variable i son ancienne valeur (existant à la droite de la flèche) et on y ajoute 1.
Il existe aussi l’instruction de décrémentation qui consiste à enlever chaque fois qu’elle s‘exécute une
valeur fixe de la variable à décrémenter. Généralement cette valeur vaut 1 :
i Ñ i-1
- Lors du premier accès à la boucle i vaut zéro, juste après l’affichage du message ‘Master GL’ i prend
son ancien valeur (0) et lui ajoute 1 pour devenir 1, dans la seconde entrée i égale à 1 mais à la sortie il
deviendra 2 etc. jusqu'à la 300ème entrée à la boucle où i=299 à l’entrée et 300 à la sortie, ce qui ne
réalise pas la condition au prochain essai d’accès à la boucle et comme ça la condition de l’accès à la
boucle est fausse et la boucle est quittée .
Exercice 2 :
On veut calculer le factoriel d’un entier quelconque : N !
Etablir l’algorithme permettant ce calcul.
Solution :
Titre : Factoriel
Partie Déclaration :
Variable N,F, i : Entier
Partie Manipulation :
DEBUT
Ecrire(‘‘Saisir une valeur entière positive :’’)
Lire(N)
F ß 1
Si (N = 0) alors
Ecrire(‘‘Le factoriel = ’’, F)
Sinon
i ß 0
Tant que (i < N) Faire
i ßi+1
F ßF* i
Fin tant que
Ecrire(‘‘Le Factoriel est = ’’, F)
Fin Si
FIN
Fonctionnement :
On exécute les actions puis on évalue la condition. Si la condition est fausse, on réexécute les actions
sinon, on sort de la boucle.
Remarque :
La différence entre les deux instructions Tant que et faire jusqu’à réside dans le fait que l’instruction
faire jusqu’à sera toujours exécutée au moins une fois.
Exercice 1 :
Ecrire un algorithme, qui, pour N donné, permet la saisie et l’affichage de l’identité de N étudiants :
nom, prénom, âge et filière.
Solution :
Titre : Identités
Partie Déclaration :
Variable N, i,j,Age : Entier
Variable Nom, Prenom, Filiere : Chaîne de caractères
Partie Manipulation :
DEBUT
Ecrire(‘‘Donner le nombre d’étudiants : ’’)
Lire(N)
i ß 0
Faire
i ß i + 1
Ecrire(‘‘Donner le nom et le prénom : ’’)
Lire(Nom,Prenom)
Ecrire(‘‘Donner l’âge et la filière : ’’)
Lire(Age,Filiere)
jusqu’à (i >= N)
Faire
j ß j + 1
Ecrire(‘‘Nom = ’’, Nom,‘‘ et Prénom = ’’, Nom)
Ecrire(‘‘Age = ’’, Age,‘‘ et Filière = ’’, Filiere)
jusqu’à (j >= N)
FIN
Exercice 2 :
Ecrire un algorithme qui affiche les multiples de 5 inférieurs à 201.
Solution :
Partie Déclaration :
Variable i : Entier
Partie Manipulation :
DEBUT
i ß 0
Faire
Ecrire(i, ‘‘ est un multiple de 5 ’’)
i ß i + 5
jusqu’à (i > 201)
FIN
c. Instruction Pour :
La spécification de cette instruction c’est qu’elle limite le nombre de fois où doit se répéter la
condition
Syntaxe :
Pour id_variable ç valeur1 à valeur2 [Pas valeur pas] faire
Actions
Fin Pour
Fonctionnement :
On initialise le compteur (id_variable) par la valeur ‘valeur1’ puis on teste la condition. Si la condition
est vraie (id_variable Ñ valeur2), on exécute le bloc d’instruction et on incrémente le compteur par
pas de 1 puis on évalue la condition. Si elle est fausse on sort de la boucle.
Exercice :
Ecrire un algorithme permettant d’afficher les nombres impairs compris entre 15 et 193.
Solution :
Titre : nombres impairs compris entre 15 et 193
Partie Déclaration :
Variable i : Entier
Partie Manipulation :
DEBUT
Si (i % 2 <> 0) alors
Ecrire(i)
Fin Si
Fin Pour
FIN
PARTIE 3
1° - Ecrire un algorithme qui affiche une seule fois le message : ‘ENCG-J 2017/2018’
2° - Ecrire un algorithme qui affiche trois fois le message : ‘ENCG-J 2017/2018’
3° - Ecrire un algorithme qui lit une valeur réelle saisie par l’utilisateur.
4° - Ecrire un algorithme qui lit une valeur entière et une autre réelle saisies par l’utilisateur.
5° - Ecrire un algorithme qui permet de lire une valeur entière, une valeur réelle, une chaîne de
caractères et un caractère saisis par un utilisateur. Cet algorithme doit afficher également toutes
ces valeurs.
II- Affectation :
Exercice 1 : Donner le résultat de chacune des instructions suivantes ainsi que les types des variables
qu’elle utilise.
Instruction 1 : a ß 4
Instruction 2 : b ß 2.5
Instruction 3 : c ß 2*b + 1
Instruction 4 : c ß c + 10
Instruction 5 : e ß ‘‘b’’
Instruction 6 : f ß ‘‘Mes’’
Instruction 7 : f ß f + ‘‘sage’’
Instruction 8 : g ß f + ‘‘ ’’ + ‘‘crypté’’
Instruction 9 : h ß ‘‘Vrai’’
Instruction 10 : i ß ‘‘123’+ ‘‘4’’
Instruction 11 : j ß Faux
Instruction 12 : k ß 2=7
Instruction 13 : y ß (7<>-1) ET (56 >= 100)
Instruction 14 : m ß Not(y) OU (k XOR (2<4))
Instruction 15 : n ß Not(Vrai ET m)
Exercice 4 : Sachant le prix unitaire (PU) d’un produit, écrire un algorithme qui calcule le montant à
payer pour une quantité quelconque commandée de ce produit.
Exercice 3 : Ecrire un algorithme qui calcule le montant de la facture d’électricité pour les clients
d’une entreprise fournisseuse d’électricité :
- Les clients appartiennent à l’une des deux catégories suivantes : Particulier et Société.
- La consommation est divisée par tranche, chaque tranche ayant un prix :
NB : Les valeurs de cette liste ne sont pas les valeurs exactes utilisées par les entreprises fournisseuses d’électricité.
Exercice 4 : Un chef d’entreprise verse une participation aux frais de repas à ses employés limitée à
50%. La participation aux frais de repas est calculée de la manière suivante :
- Si le salaire de l’employé est (< 4000 DHs) un bonus de 15% lui est donné.
- Si (400 DHs< Le salaire < 6000 DHs) un bonus de 10% lui est donné.
- Une participation de 10% est donnée aux employés qui ont plus de 5 ans d’expérience.
- Une participation de 10% est donnée aux employés qui sont mariés en plus de 5% pour chaque
enfant.
Calculer le pourcentage de la participation de l’employé au frais de repas.
Exercice 5 : Ecrire un algorithme qui saisit une date sous la forme (Jour/Mois/Date).
Exercice 2 :
a- Ecrire un algorithme permettant d’afficher les nombres impaires inférieurs strictement à 171.
b- Ecrire un algorithme qui permet d’afficher les multiples de 3 compris entre 21 et 90.
Exercice 3 : Ecrire un algorithme qui saisit deux valeurs numériques et affiche leur somme. Le
programme doit s’arrêter dès que l’utilisateur répond à la question ‘‘ Voulez vous continuer’’.
Exercice 4 : Ecrire un algorithme qui saisit deux variables numériques et une opération de la forme :
+ , - , * , / ou %, puis affiche le résultat de l’opération appliquée aux valeurs numériques.
NB : L’algorithme doit s’arrêter dès que l’utilisateur saisit une opération incorrecte ou répond à la
question ‘‘Voulez-vous arrêter le programme’’.
Exercice 5 : Quel est le résultat attendu de la boucle «Tant que» dans l’algorithme Sois Prudent1.
Est-il le même que dans l’algorithme Sois Prudent2.
Titre : Bouclage
Var y : Entier
Début
yß1
Tant que (sqr(y)<30) faire
y ß y +2
Ecrire(‘‘x = ’’,x)
Fin Tant que
Fin
NB : sqr(x)=x*x
Exercice 7 : Ecrire un algorithme qui calcule le cube d’une valeur numérique saisie au clavier et qui
est comprise entre 0 et une valeur N. Toute valeur saisie en dehors de cette intervalle est considérée
invalide.
L’algorithme doit s’arrêter soit :
- Suite à une saisie de 3 valeurs invalides qui se suivent.
- Suite à une réponse négative à la question ‘‘Voulez vous faire un autre calcul’’
Titre : Test
Déclaration :
Var i,N : Entier
Manipulation :
Début
Instruction 1
Instruction 2
Tant que (i<=N) faire
i ß (i*10) +10
Fin Tant que
Ecrire (‘‘i = ’’, i , ‘‘ et N = ’’, N)
Fin
1°- Remplir le tableau suivant en simulant les exécutions de l’algorithme «Test» (la trace)
correspondant à chacun des cas mentionnés sur le tableau :
Nombre de fois d’accès à
Cas Instructions Résultat de l’algorithme
la boucle Tant que
instruction 1 : N ß 90
Cas 1 instruction 2 : i ß 0
instruction 1 : N ß 9000
Cas 2 instruction 2 : i ß 2
Exercice 9 : Durant un mois N patients sont admis dans une clinique. Chaque patient est hospitalisé
pendant un certain nombre de jours. Il paie 500 DHs par jour d’hospitalisation, de plus s’il est
accompagné pendant la nuit il paiera un supplément de 25%.
Ecrire un algorithme qui calcule la somme encaissée par la clinique à la fin du mois.
Exercice 10 : Ecrire un algorithme Epargne qui permet de calculer le montant de votre épargne à la
banque après cinq ans, si vous déposez un montant initial et sachant que le taux d’intérêt annuel est de
8.25%. L’algorithme permettra également d’afficher au fur et à mesure des calculs, l’épargne
constituée année par année.
- Ecrire l’algorithme Epargne1 permettant de calculer le nombre d’années nécessaire pour doubler son
épargne sachant que le taux d’intérêt annuel est 8.25%.
V- Tableaux :
Exercice 1 : Ecrire un algorithme qui affiche la liste des entiers impairs compris entre 1 et
une valeur N. ce programme doit afficher également le nombre de ces entiers.
Exercice 2 : Ecrire un algorithme qui saisit une série de valeurs réelles et calculer leur
somme, la fin de la saisie est indiquée par la saisie d’une valeur négative.
Exercice 3 : Ecrire un algorithme qui permet d’afficher les nombres premiers d’un tableau
d’entiers de taille maximale 100.
Exercice 5 : Ecrire un algorithme permettant de calculer la division d’une matrice par une
autre :
Aij / Bij si Bij ¹ 0
Dij =
0 sinon
Exercice 6 : Ecrire un algorithme qui permet de translater les éléments d’une matrice de
caractères par deux positions chacun.
Exercice 1 : Ecrire une procédure qui accepte comme argument un entier N puis affiche ce
dernier s’il s’agit d’un nombre premier. En faisant appel à cette procédure, afficher tous les
nombres premiers compris entre 1 et un entier N.
Exercice 2 : Ecrire l’algorithme qui détermine la date du jour suivant pour une date donnée.
Exercice 4 : Refaire l’exercice 9 (calcul de la somme encaissée par une clinique à la fin du mois) de
la partie IV (Instructions à structure répétitive) en utilisant cette fois-ci des fonctions et des procédures
de votre choix