Académique Documents
Professionnel Documents
Culture Documents
1. Introduction .................................................................................................... 1
1.1.Définition ............................................................................................. 1
1.2.Structure d’un algorithme ................................................................. 1
1.3.Démarche méthodologique ................................................................ 2
2.1.Identificateur ....................................................................................... 3
2.2.Types prédéfinis .................................................................................. 4
2.3.Déclaration........................................................................................... 4
2.4.Expressions ........................................................................................ 5
3.1.Affectation ......................................................................................... 6
3.2.Lecture /écriture ............................................................................... 7
3.3.Bloc d’instructions ............................................................................ 8
3.4.Choix .................................................................................................. 8
3.4.1. Choix sans alternative __________________________ 9
3.4.2. Choix avec alternative __________________________ 10
3.4.3. Choix imbriqué________________________________ 12
3.4.4. Choix multiple_________________________________ 15
3.5.Répétition ........................................................................................... 17
3.5.1. Présentation des boucles ________________________ 17
3.5.2. Boucle tant que ________________________________ 17
3.5.3. Boucle répéter_________________________________ 21
3.5.4. Boucle pour___________________________________ 24
1
Chapitre 0 : Introduction à
l’algorithmique
1. Introduction
1.1. Définition
Un algorithme est une notion qui remonte à très loin, Il prend ses racines
dans le mot "Algorisme" introduit par le mathématicien Persse AlKhawarsimi
dans son livre " hisabo aljabri wa almoqabala". Ce n‘est donc pas une notion
propre à l’informatique.
A.Zahi/DI/FSTF
2
algorithme nom_algorithme
constantes
Déclaration des constantes
types
Déclaration des nouveaux types
Partie déclaration
variables
Déclaration des variables
début
Instructions
fin Partie traitement
Exemple
algorithme surface
constantes
PI = 3.14
rayon = 12.5
variables :
air : réel
début
air ← rayon*rayon*PI
ecrire(air)
fin
A.Zahi/DI/FSTF
3
Analyse
Conception
Deux types d’objets sont utilisés pour représenter les paramètres d’un
problème dans un algorithme: les constantes et les variables. Une variable est un
objet qui peut changer de valeur au cours de l’exécution de l’algorithme, tandis
qu’une constante ne change jamais de valeur.
2.1. Identificateur
A.Zahi/DI/FSTF
4
Exemples
Les types prédéfinis peuvent être utilisés sans qu’ils fassent l’objet d’une
déclaration. Ces types sont : les entiers, les booléens, les réels et les caractères.
Opérations arithmétiques : +, -, * et /.
Opérations de comparaison : <, ≤, >, ≥, = et ≠.
2.3. Déclaration
A.Zahi/DI/FSTF
5
Exemples
i,n : entier
x,y : réel
exist : booléen
rep, c : carcatère
2.4. Expressions
Exemples
n + 10 * cste /q
(a+b)*(c-d)/2
a div b
2*3.14*R
Exemples
A.Zahi/DI/FSTF
6
Syntaxe
Nom_variable Å expression
Exemples
A Å 5
A Å B
A Å B+5
y ← ((n+10)*q)/t
cond_admis ← (m >= 10 et Nb_mod_val >; avec
7)
Nb_mod_val : le nombre de module validé et m la moyenne générale.
Remarques
• On peut par contre affecter une expression entière à une variable réelle.
A : entier
B, C : réels
A Å 12
B Å A div 2
C= 15
Exercices
A.Zahi/DI/FSTF
7
Syntaxe
Exemple
algorithm lecture
variables
X :entier
Rayon : réel
C : caractère
debut
lire(X)
lire (rayon)
lire(c)
Fin
Syntaxe
ecrire(exp1, ..., expn)
Exemples
algorithme ecriture
variables:
X :entier
Y :réel
Debut
Ecrire (" saisir la valeur de X")
Lire (X)
Y Å 2*X+1/X
Ecrire(" Valeur de Y = ", Y)
Fin
Exercices
A.Zahi/DI/FSTF
8
Exemple
Début
lire(x);
lire(y);
z ← x + y;
écrire(‘z=‘,z);
Fin
3.4. Choix
Syntaxe
Instr_avant_si
si (condition) alors
Bloc_instrs
finsi
Instr_après_si
Condition est une expression logique, si elle est vraie alors on exécute
les instructions Bloc_instrs, sinon on passe aux instructions suivantes.
A.Zahi/DI/FSTF
9
Instr_avant_si
vraie
Condition Bloc_instrs
fausse
Instr_après_si
Exemples
Algorithme absolue
variables:
X, Val_X :réel
Debut
Ecrire("saisir la valeur de X :")
Lire (X)
Val_XÅ -X
si (X > 0) alors
Val_X Å X
finsi
Ecrire("valeur absolue de", X,"=", Val-X)
Fin
Algorithme maximum
variables:
x, y, Max :entier
debut
Ecrire("saisir la valeur de X et Y :")
lire(X,Y)
Max Å x
si (x < y) alors
Max Å y
finsi
Ecrire ("Max (", X ",", Y, ")=", Max)
Fin
A.Zahi/DI/FSTF
10
Exercices
2. Ecrire un algorithme qui saisit deux entiers et de les afficher dans l’ordre
décroissant.
Syntaxe
Instr_avant_si
si (condition) alors
Bloc_vraie
sinon
Bloc_fausse
finsi
Instr_après_si
Instr_avant_si
fausse vraie
Condition
Bloc_fausse
Bloc_vraie
Instr_après_si
A.Zahi/DI/FSTF
11
Exemples
1. Une droite est définie par deux points, A = (x1 , y1 ) et B = (x 2 , y 2 ) ,
l’algorithme ci-dessous saisit les points, A , B et P = (x , y ) , et décide si le
point P appartient à la droite ( AB ) .
Algorithme disible
variables:
x, y, xa, ya, xb, yb :réels
debut
Ecrire ("Saisir le point A")
lire(xa, ya)
Ecrire ("Saisir le point B")
lire(xb,yb)
Ecrire ("Saisir le point P")
lire(x,y)
si ((ya-y)*(xb-x) = (xa-x)*(yb-y) ) alors
ecrire("P appartient à la droite")
sinon
ecrire("P n’appartient pas à la droite")
finsi
Fin
Algorithme divisible
variables:
x, y :entier
debut
Ecrire("Saisir x et y")
lire(x,y)
si (x mod y == 0 ) alors
ecrire( x, "est divisible par", y)
sinon
ecrire( x, "n’est divisible par", y)
finsi
Fin
Exercices
1. Ecrire un algorithme qui saisit deux entiers, a et b , et qui affiche
l’expression b = a * q + r avec p et r le résultat de la division entière de
b par a . Il faut prendre en considération la cas où b est divisible par a .
Exemples
15 = 7* 2 + 1
10 = 5*2
A.Zahi/DI/FSTF
12
a b
5. Trois nombres positifs peuvent représenter les cotés d’un triangle dans
la mesure où chacun d’entre eux est inférieur à la somme des deux
autres. Ecrire un algorithme qui saisit les trois nombres et affiche si on
peut construire un triangle avec.
Dans l’un des blocs d’une instruction de choix on peut avoir une
instruction qui contient une autre instruction de choix et ainsi de suite. On dit
dans ce cas que le choix est imbriqué.
Syntaxe
Instr_avant
si (condition_1) alors
si (condition_11) alors
.
.
sinon
.
finsi
sinon si (condition_2)
.
.
Sinon
.
.
finsi
finsi
Instr_après
A.Zahi/DI/FSTF
13
C1
F v
C5 C2
F v v
F
Bloc52 Bloc51 Bloc2 C3
v
F
Bloc3 C4
v
Bloc4
si (c1) alors
si (c2) alors
si (c3) alors
Bloc3
sinon
si (c4) alors
bloc4
finsi
finsi
sinon
bloc2
finsi
sinon
si ( c5) alors
bloc51
sinon
bloc52
finsi
finsi
Exemple
Calcul du maximum de trois nombres entiers a, b et c à saisir. La solution peut
être représenté par l’arbre suivant :
a>b
V F
a>c b>c
V F V F
A.Zahi/DI/FSTF
14
algorithme maximum3
variables :
a,b,c,max : entier
debut
Ecrire (" Saisir a, b et c :")
lire(a,b,c)
si (a > b) alors
si (a > c) alors
max ← a
sinon
max ← c
finsi
sinon
si (b > c) alors
max ← b
sinon
max ← c
finsi
finsi
ecrire(max)
fin
Exercices
1. Soient a, b et c trois réels, écrire un algorithme qui permet de résoudre
dans IR l’équation: a X2 + b X + c = 0. Etudier tous les cas.
a b c d
3. La mention de réussite est attribuée en fonction de la moyenne de
l’étudiant selon le tableau suivant :
Moyenne Mention
18 ≤ m Très Bien
14 ≤ m <18 Bien
12 ≤ m <14 Assez Bien
10 ≤ m <12 Passable
A.Zahi/DI/FSTF
15
Syntaxe
Instr_avant_selon
selon (expr)
val_1 : Bloc_1
val_2 : Bloc_2
...
val_n :Bloc_n
autrement : Bloc_a
finselon
Instr_après_selon
Instr_avant_selon
Evaluation de l’expression
Instr_après_selon
Exemple
A.Zahi/DI/FSTF
16
Algorithme Feu
variables:
Couleur: entier
debut
Ecrire (" Quel est la couleur du feu")
Lire (Couleur)
Selon (Couleur)
0 : Ecrire (" Arrêter ")
1 : Ecrire (" Avancer ")
2 : Ecrire (" Ralentir ")
autrement : Ecrire (" Feu en panne")
finselon
Fin
Exercices
Indice tva
1 0
2 0.05
3 0.1
4 0.15
5 0.2
Ecrire un algorithme qui saisit le prix hors taxe prix_ht et l’indice d’un
produit indice, calcule et affiche le prix_tcc équivalent.
A.Zahi/DI/FSTF
17
3.5. Répétition
3.5.1. Présentation des boucles
Une boucle est une instruction qui permet de décrire une répétition dans un
algorithme. Elle consiste à répéter l’exécution d’un bloc d’instructions, appelés
corps de la boucle, un certain nombre de fois, une exécution du bloc s’appelle
itération. Il existe trois formes de boucles : tant que, répéter et pour, chacune est
caractérisée par les éléments suivants :
• Une condition d’arrêt, c'est une expression logique qui permet l'arrêt de
la boucle, une fois le nombre d'itérations est achevé.
Syntaxe
Instr_avant
Bloc
fintantque
Instr_après
A.Zahi/DI/FSTF
18
Instr_avant_tantque
vraie
Condition Corps de la boucle
fausse
Instr_après_tantque
• Premier cas : le nombre d’itération est connu à l’avance. Dans ce cas nous
aurons besoin des éléments suivants :
A.Zahi/DI/FSTF
19
Exemples
n
1. Calculer la somme des n premiers entiers : ∑i
i =1
algorithme somme
variables :
n,s,i :entier
début
Ecrire ("Saisir n")
lire (n)
i ← 1
s ← 0
tantque(i≤n) faire
s ← s+i
i ← i+1
fintantque
écrire ("Somme=", s)
fin
algorithme combien
variables :
nb,n,k,i :entier
début
Ecrire ("Saisir n")
lire (n)
Ecrire ("Saisir k")
lire(k)
i ← 1
nb ← 0
tantque(i≤n) faire
si (i mod k = 0)
nb ← nb + 1
finsi
i ← i+1
fintantque
écrire ("le nombre est :", nb)
fin
A.Zahi/DI/FSTF
20
Bloc
ecrire(" texte de la question O/N"),
lire(Rep)
fintantque
Exemple
Algorithme client
Variables
Rep : caractère
MT, mp, pu : réel
Debut
MTÅ 0
Rep Å '0'
Tant que ( Rep='O') faire
Lire(qa,pu)
Mp Å qa*pu
MT Å MT+mp
Ecrire("Un autre produit O/N")
Lire (Rep)
Fintant que
Fin
Exemple
Saisir une phrase caractère par caractère, la fin de la phrase est identifiée par
le caractère ‘.’
algorithme saisir_phrase
variables :
c :caractère
début
lire (c)
tantque(c ≠ ‘.’) faire
lire (c)
fintantque
fin
A.Zahi/DI/FSTF
21
Exercices
1. Ecrire un algorithme qui calcul x n , avec x et n sont donnés.
Syntaxe
Intsr_avant
répéter
Bloc
Jusqu’à (Condition)
Instr_après
A.Zahi/DI/FSTF
22
Instr_avant_repeter
Corps de la boucle
fausse
Condition
vraie
Instr_après_repeter
• Premier cas : le nombre d’itérations est connu à l’avance. Dans ce cas nous
utilisons les mêmes éléments que ceux de la boucle tant que, seule la
condition d’arrêt est diffère, elle devient (C > N + Vin -1). Ainsi, on
obtient la partie de l’algorithme suivante:
C Å Vin
répéter
Bloc
C Å C+1
Jusqu’à (C > N+Vin-1)
Exemples
n
1. Calcul de la somme des n premiers entiers : ∑i
i =1
algorithme somme
variables :
n,s,i :entier
début
Ecrire ("Saisir n")
lire (n)
i ← 1
s ← 0
répéter
s ← s+i
i ← i+1
Jusqu’à( i>n)
écrire ("Somme = ", s)
fin
A.Zahi/DI/FSTF
23
2. Calcul du nombre d’entiers < à n qui sont divisibles par un entier k saisi.
algorithme combien
variables :
nb,n,k,i :entier
début
Ecrire ("Saisir n et k ")
lire (n, k)
i ← 1
nb ← 0
repéter
si (i mod k = 0)
nb ← nb + 1
finsi
i ← i+1
jusqu’à (i>n)
écrire ("le nombre est :", nb)
fin
Rep Å "O"
répépter
Bloc
ecrire(" texte de la question O/N"),
lire(Rep)
jusqu’à (Rep="N")
Exemple
Algorithme client
Variables
Rep : caractère
MT, mp, pu : réel
Debut
MTÅ 0
Rep Å '0'
répéter
Lire(qa,pu)
Mp Å qa*pu
MT Å MT+mp
Ecrire("Un autre produit a/N")
Lire (Rep)
Jusqu’à(Rep=’n’)
Fin
A.Zahi/DI/FSTF
24
Exemple
Saisir une phrase caractère par caractère, la fin de la phrase est identifiée par
le caractère ‘.’
algorithme saisir_phrase
variables :
c :caractère
début
lire (c)
répeter
lire (c)
jusqu’( c=’.’)
fin
Exercices
Refaire les exercices de la page 23 en utilisant la boucle répéter.
Syntaxe
Instr_avant
pour i allant de vi à vf
faire
Bloc
finpour
ou de façon générale
Instr_après
A.Zahi/DI/FSTF
25
Instr_avant_pour
I Å val_initiale
incrément
vraie
I <= val_finale Corps de la boucle
fausse
Instr_après_pour
Exemples
A.Zahi/DI/FSTF
26
Exercices
A.Zahi/DI/FSTF