Vous êtes sur la page 1sur 27

Table des matières

Chapitre 0 : Introduction à l’algorithmique............................................... 1

1. Introduction .................................................................................................... 1

1.1.Définition ............................................................................................. 1
1.2.Structure d’un algorithme ................................................................. 1
1.3.Démarche méthodologique ................................................................ 2

2. Objets d’un algorithme ................................................................................. 3

2.1.Identificateur ....................................................................................... 3
2.2.Types prédéfinis .................................................................................. 4
2.3.Déclaration........................................................................................... 4
2.4.Expressions ........................................................................................ 5

3. Instructions d’un algorithme ...................................................................... 6

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.

Un algorithme sert dans la résolution d’un certain nombre de problèmes


tels que : chercher le plus grand commun diviseur de deux entiers, résoudre un
système linéaires, résoudre une équation différentielle, trouver le chemin
optimal dans une ville, chercher une stratégie pour attaquer un marché financier
etc. Il permet de décrire le processus résolution de façon précise et non
ambiguë ne laissant place ni à l’interprétation ni à l’intuition.

Un algorithme est considéré comme une suite finie et ordonnée d’actions


élémentaires, instructions, effectuées sur des données pour aboutir à des
résultats. En général, il y a plusieurs algorithmes (plusieurs solutions) qui
résolvent le même problème. Le meilleur algorithme (solution optimale) est celui
qui contient moins d’instructions.

Données Algorithme Résultats

Figure 1 : Schéma d’un algorithme

1.2. Structure d’un algorithme

Un algorithme est composé de deux parties :

• Partie déclaration : contient les objets (données et résultats) utilisés


pour résoudre le problème.

• Partie traitement : contient les instructions (actions) qui permettent de


résoudre le problème.

A.Zahi/DI/FSTF
2

La forme générale d’un algorithme se présente comme suit:

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

1.3. Démarche méthodologique

L’élaboration d’un algorithme se déroule selon les étapes suivantes :

• La phase d’analyse, consiste à :


Ž Identifier les paramètres qui décrivent le problème i.e., les
paramètres qui constituent les données (ce qu’on a) et les
paramètres qui constituent les résultats (ce qu’on cherche).

Ž Formuler le problème en termes, de formules, d’équations


mathématique etc., et proposer des méthodes de résolution en
termes de méthodes mathématique ou de règles de gestion.

• La phase de conception, consiste à :


Ž Représenter les paramètres du problème par des objets
algorithmiques tels que les variables, les constantes, les structures
de données etc.

Ž Exprimer les méthodes de résolution sous forme d’instructions


algorithmique tels que les opérateurs, le choix, les boucles, les
fonctions etc.

A.Zahi/DI/FSTF
3

Exemple : Calculer le pgcd de deux entiers

Analyse

• Entrées : a, b deux entiers


• Sorties : pgcd(a,b)
• Méthode : l’algorithme d’Euclide, pgcd(a,b)=pgcd(b,q)

Conception

• Variables : a,b, et pgcd : entiers


• Algorithme
r Å a mod b
tant que (r != 0) faire
a Åb
b Å a div b
r Å a mod b
fintantque

2. Objets d’un algorithme

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.

Un objet est caractérisé par :

• Un identificateur qui permet de désigner un objet dans l’algorithme.

• Un type qui permet de définir l’ensemble des valeurs susceptibles


d’être prises par un objet ainsi que les opérateurs qu’on peut lui
appliquer.

• Un état qui correspond à la valeur prise à un instant de l’exécution de


l’agorithme.

2.1. Identificateur

Un identificateur permet d’identifier un objet parmi les autres objets. C’est


une suite de caractères alphanumériques qui respecte les contraintes suivantes:

• Un identificateur ne doit contenir que les caractères alphabétiques, les


chiffres et le caractère souligné " _",

• Un identificateur doit toujours commencer par un caractère


alphabétique,

• Un identificateur ne doit pas contenir les caractères accentués et


spéciaux,

A.Zahi/DI/FSTF
4

• Un identificateur doit refléter l'objet auquel il est associé. Par


exemple pour représenter le salaire d'un employé, il vaut mieux
choisir l'identificateur salaire.

Exemples

Identificateur valide Identificateur non valide


Salaire1 1salaire
Etudiant étudiant
note_examen note d’examen

2.2. Types prédéfinis

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.

• Entier : c’est l’ensemble des entiers positifs, nuls ou négatifs. Les


opérateurs applicables sont :

Ž Opérations arithmétiques: +, -, * /, div : division entière et mod :


reste de la division entière.
Ž Opérations de comparaison: =, ≠, <, ≤, > et ≥.

• Booléen, un objet de ce type ne peut prendre que deux valeurs : VRAI ou


FAUX. Les opérations possibles sont :

Ž Opérateurs logiques : et, ou et non.


Ž Opérateurs de comparaison : = et ≠.

• Réel, ce type correspond à l’ensemble des réels. Les opérations qu’on


peut appliquer sont :

Ž Opérations arithmétiques : +, -, * et /.
Ž Opérations de comparaison : <, ≤, >, ≥, = et ≠.

• Caractère, regroupe le jeu de caractère d'une machine. Il est constitué par


les lettres (a, ..., z, A, ..., Z), les chiffres (0,1,...9) et les caractères spéciaux
affichables sur l'écran et imprimable sur papier. Les opérations possibles
sont principalement les comparaisons : <, ≤, >, ≥, = et ≠.

2.3. Déclaration

La déclaration d’un objet dans un algorithme consiste à lui attribuer un


identificateur et un type.

A.Zahi/DI/FSTF
5

Déclaration d’une constante


Syntaxe
Identificateur_de_constante = valeur
Exemples
PI=3.14
TVA = 0.2
G =9.8

Déclaration d’une variable


Syntaxe
Identificateur_de_variable : type

Exemples

i,n : entier
x,y : réel
exist : booléen
rep, c : carcatère

2.4. Expressions

Une expression est une combinaison de valeurs, de constantes, de variables


et d’opérateurs. Le type de l’expression est défini par celui des objets qui la
constituent. Selon le type de l’expression on peut distinguer trois catégories
d’expressions : expression arithmétique, expression logique et expression de
chaîne de caractère.

• Expressions arithmétique, ce sont des expressions formées par des


objets (valeurs, constantes et variables) entiers ou réels et des
opérateurs arithmétiques. Le résultat de l’expression est un nombre
entier ou réel.

Exemples
n + 10 * cste /q
(a+b)*(c-d)/2
a div b
2*3.14*R

• Expressions logiques : ce sont les expressions formées par des objets


(valeurs, constantes et variables) de type élémentaire et des opérateurs
logiques et de comparaison. Le résultat de l’expression est booléen.

Exemples

• ( i<= n et exist = vraie)


• ( x != 1 ou y =0)
• Formulation de la condition d’admission, des étudiants du Deug,
dans un établissement en fonction de la moyenne générale (m) et
de l’age d’un étudiant (age).

(m > 12 et age <=24) ou (m >16 et age <26)

A.Zahi/DI/FSTF
6

3. Instructions d’un algorithme


3.1. Affectation

C'est l'une des instructions les plus importantes en algorithmique. Elle


permet de ranger une valeur, une constante, le contenu d’une variable ou le
résultat d’une expression, dans une variable.

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

• A gauche du symbole d'affectation il y a toujours une variable, les


instructions suivantes sont invalides :
A+5 Å 3
15 Å C
PI Å 22/7

• La variable à gauche du symbole d'affectation et la valeur affectée


doivent être de même type, les instructions suivantes sont invalides :
A, B, C : entiers
A Å ‘T’
B Å " Bonjour"
C Å 12.5

• 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

1. Ecrire un algorithme qui permet d'échanger le contenu de deux


variables A, B.

2. Ecrire un algorithme qui permet de permuter les contenues de trois


variables A, B, C.

A.Zahi/DI/FSTF
7

3.2. Lecture /écriture

L'instruction de lecture lire permet d'alimenter le programme par des


données à partir de l'extérieur. Elle consiste à lire une valeur sur le clavier et
l’affecter ensuite à une variable.

Syntaxe

lire (var1, var2,..., varn)

Exemple

algorithm lecture
variables
X :entier
Rayon : réel
C : caractère
debut
lire(X)
lire (rayon)
lire(c)
Fin

L'instruction d'écriture écrire permet d’afficher sur un périphérique de


sortie, l’écran à priori, le résultat d’une expression. L’expression peut être
composée, une constante ou une variable.

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

1. Ecrire un algorithme qui permet de saisir : le prix hors taxe PHT, le


nombre d'articles NART, le taux TVA, de calculer le prix PTTC et
d’afficher :
PHT:
NBART :
TVA:
PTTC:

A.Zahi/DI/FSTF
8

2. La surface d’un triangle de côtés a , b et c est donnée par :


aire = S (S − a )(S − b )(S − c ) , avec S =
(a + b + c ) .
2

Ecrire un algorithme qui calcule l’aire. On suppose qu’on dispose


d’une fonction "racine2" qui calcule la racine carrée d’un nombre
réel.

3.3. Bloc d’instructions

Un bloc d’instructions est une suite d’instructions élémentaires délimitée


par les mots clés, Début et Fin, qui s’exécutent séquentiellement.

Exemple

Début
lire(x);
lire(y);
z ← x + y;
écrire(‘z=‘,z);
Fin

3.4. Choix

Une instruction de choix permet de choisir, suivant une condition, entre


deux ou plusieurs blocs d'instructions. Le choix peut se présenter sous plusieurs
formes: sans alternative, avec alternative, imbriquée ou multiple.

3.4.1. Choix sans alternative

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.

 La figure 2 montre le fonctionnement de l’instruction si sans sinon.

A.Zahi/DI/FSTF
9

Instr_avant_si

vraie
Condition Bloc_instrs

fausse

Instr_après_si

Figure 2 : Organigramme de l’instruction si sans sinon

Exemples

1. Calcul de la valeur absolue d'un nombre réel.

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

2. Calcul du maximum de deux entiers

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

1. Ecrire un algorithme qui permet de saisir l’entier n et le réel x et


d’afficher la valeur de l’expression : (− 1)n * x .

2. Ecrire un algorithme qui saisit deux entiers et de les afficher dans l’ordre
décroissant.

3. Ecrire un algorithme qui permet de saisir trois caractères et ne les


afficher que s’ils sont dans l’ordre alphabétique.

3.4.2. Choix avec alternative

Syntaxe

Instr_avant_si

si (condition) alors
Bloc_vraie
sinon
Bloc_fausse
finsi
Instr_après_si

 Condition est une expression logique si elle est vraie alors on


exécute les instructions Bloc_vraie, sinon on exécute les
instructions Bloc_fausse, le choix d’une alternative exclue l’autre.

 La figure 3 montre le fonctionnement de l’instruction si avec sinon.

Instr_avant_si

fausse vraie
Condition

Bloc_fausse
Bloc_vraie

Instr_après_si

Figure 3 : Organigramme de l’instruction si avec sinon

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

2. L’algorithme suivant saisit deux entiers, x et y , et décide si x est divisible


par y .

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

2. La fonction caractéristique de ’un intervalle I = [a , b] est définie par :


1, si x ∈ I
χ (x ) =  . Ecrire un algorithme qui saisit un réel x et qui affiche
0, sinon
la valeur de χ (x )

3. Ecrire un algorithme qui saisit deux points, A = (x1 , y1 ) et B = (x 2 , y 2 ) ,


calcul et affiche la déviation de la droite ( AB ) par rapport à l’axe (Ox ) .

A.Zahi/DI/FSTF
12

4. Ecrire un algorithme qui saisit trois réels x , a et b et affiche l’image de


x par la fonction, définie sur (− ∞ , b] , représentée par le graphe suivant :

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.

3.4.3. Choix imbriqué

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

 L’exécution de cette instruction se base sur le fait qu’un sinon


correspond au si le plus proche.

 Une représentation arborescente permet d’identifier tous les cas


possibles et aussi d’organiser les différents choix. Etant donnée un
problème dont le choix est représenté par l’arbre suivant :

A.Zahi/DI/FSTF
13

C1
F v

C5 C2
F v v
F
Bloc52 Bloc51 Bloc2 C3
v
F

Bloc3 C4
v

Bloc4

Figure 4 : Représentation graphique du choix imbriqué

La partie de l’algorithme correspondant se présente comme suit :

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

Max=a Max= c Max=b Max= c

Figure 5 :Représentation graphique du max(a,b,c)

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.

2. Ecrire un algorithme qui permet de saisir cinq réels x , a , b , c , d , et


d’afficher l’image de x par la fonction représentée par le graphe
suivant :

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

Ecrire un algorithme qui saisit la moyenne et affiche la mention


correspondante.

4. Ecrire un algorithme qui permet de saisir deux réels, x et y , et


d’afficher le nombre complexe associé sous la forme : z = x + iy . Etudier
tous les cas.

5. Ecrire un algorithme qui permet de saisir deux droites, ( AB ) et (CD ) ,


et d’afficher si elles sont perpendiculaires, parallèles ou colinéaires.

A.Zahi/DI/FSTF
15

3.4.4. Choix multiple

Si l’instruction si- sinon finsi permet de choisir seulement entre deux


alternatives, l'instruction selon, par contre, permet de choisir entre plusieurs.

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

 L'expression, expr, est évaluée, si sa valeur est identique à l'une des


valeurs val_1,...,val_n, alors le bloc d'instructions correspondant est
exécuté, sinon, c’est le bloc correspondant à la clause autrement qui
est exécuté.

 La figure 6 montre l’exécution de l’instruction selon.

Instr_avant_selon

Evaluation de l’expression

val_1 val_2 val_n autrement

Bloc_1 Bloc_2 Bloc_n Bloc_a

Instr_après_selon

Figure 6 : Organigramme de l’instruction selon

Exemple

Selon la couleur du feu de circulation, Rouge, Vert ou Jaune, un chauffeur


exécute les opérations, Arrêter, Avancer ou Ralentir, l’algorithme ci-dessous
permet de simuler le comportement du chauffeur. A chaque couleur on associe
un entier entre 0 et 2 et suivant la valeur saisie on exécute l'action appropriée.

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

1. Une exploitation agricole utilise un robot pour contrôler la température


de ses serres. Selon le temps qu’il fait, Pleut, chaud, froid, beau, le
robot exécute les opérations, Fermer la serre, Déclancher le
ventilateur, Déclancher le chauffage, Ouvrir la serre.

Ecrire un algorithme qui permet de simuler le fonctionnement d’un


robot.

2. Dans un magasin, le prix de vente d’un produit est calculé par la


formule: Prix_ttc = prix_ht + (tva * prix_ht). Cinq classes de tva sont
définies selon l’indice du produit.

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.

3. Un garagiste utilise un code pour chaque activité du garage. CODE=1


pour la vente des voitures neuves, CODE=2 pour la vente des voitures
d’occasion, CODE=3 pour la vente des pièces détachées et CODE=4
pour la réparation des voitures. La commission d’un employé est
calculée sur chaque activité de la manière suivante : sur une voiture
neuve, 2% du prix de vente mais avec un maximum de 5000DH, sur une
voiture d’occasion, 5% du prix de vente mais avec un minimum de
500DH,sur les pièces détachées 6% du prix total et enfin sur la
réparation d’une voiture 10% du prix de la main d’œuvre.

Ecrire un algorithme qui saisit le code de l’activité et le prix


correspondant et qui affiche la commission.

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 :

• Le bloc d'instructions à répéter (corps),

• 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é.

• Le nombre d'itérations, deux cas de figure sont distingués :

Ž Le nombre d'itérations est connu à l’avance,

Ž Le nombre d'itérations est inconnu à priori, dans ce cas l’arrêt


est déterminé par le corps de la boucle.

3.5.2. Boucle tant que

Syntaxe

Instr_avant

tant que (Condition)


faire

Bloc
fintantque

Instr_après

 Condition est une expression logique, le bloc d’instruction est


exécuté jusqu’à ce que la condition devienne fausse.

 La figure 7 montre l'exécution de la boucle tant que.

A.Zahi/DI/FSTF
18

Instr_avant_tantque

vraie
Condition Corps de la boucle

fausse

Instr_après_tantque

Figure 7 : organigramme de la boucle tant que

Comment réaliser une boucle tant que ?

Selon la connaissance du nombre d’itérations, trois cas se présentent pour


la réalisation d’une boucle tant que :

• Premier cas : le nombre d’itération est connu à l’avance. Dans ce cas nous
aurons besoin des éléments suivants :

Ž Un entier N qui représente le nombre d'itérations.

Ž Un entier C, appelé compteur, qui représente le numéro de l'itération en


cours.

Ž L’instruction, C Å Vin, qui permet l’initialisation du compteur avec


une valeur initiale Vin.

Ž L’instruction C Å C+1 qui permet l’incrémentation du compteur après


chaque itération. Cette instruction doit être insérée dans le corps de la
boucle.

Ž L’expression logique, (C<= N + Vin -1), qui représente la condition


d’arrêt de la boucle.

Ainsi, on obtient la partie de l’algorithme suivante:


C Å Vin
tant que (C <= N+Vin-1) faire
Bloc
C Å C+1
fintantque

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

2. Calcul du nombre d’entiers inférieurs à n qui sont divisibles par un


entier k donné.

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

• Deuxième cas : le nombre d’itérations n’est pas connu et l’arrêt de la boucle


est décidé par l’utilisateur de l’algorithme. Pour cela on utilise une question,
du type "voulez-vous continuez oui/non ?", qu’on affiche après chaque
itération. L'utilisateur saisit ensuite sa réponse qui permet à l’algorithme soit
de passer à l’itération suivante, soit de mettre fin à la boucle. Dans ce cas
nous aurons besoin des éléments suivants :

Ž Un caractère, Rep, qui permet de stocker la réponse de l'utilisateur

Ž L’instruction, Rep Å "O", qui permet d’initialiser la variable Rep

Ž L’instruction d’affichage, ecrire(" texte de la question O/N"), qui


affiche la question pour utilisateur.

Ž L’instruction de lecture, lire(Rep), qui saisit la réponse utilisateur.

A.Zahi/DI/FSTF
20

Ž L’expression logique, (Rep ≠ ‘N’), qui représente la condition d’arrêt.

Ainsi, on obtient la partie de l’algorithme suivante:


Rep Å "O"
tant que (Rep ≠ "N")
faire

Bloc
ecrire(" texte de la question O/N"),
lire(Rep)

fintantque

Exemple

Un client achète plusieurs produits où chaque produit est caractérisé par la


quantité achetée qa et son prix unitaire pu . Etablir l'algorithme qui calcul
et qui affiche le montant total à payer par un client. Le montant d'achat d'un
seul produit est donné par la formule mp = qa * pu .

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

• Troisième cas: le nombre d’itérations est inconnu et l’arrêt de la boucle est


décidé par l’algorithme lui-même. Dans ce cas la condition d’arrêt est
déterminée à partir de l’énoncé du problème et de la méthode de résolution
proposée.

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.

2. Ecrire un algorithme qui calcul n! , avec n donné.

3. Ecrire un algorithme qui calcul la somme de n entiers saisis au clavier.

4. Soit la suite définie par :


 x0 = 1

 1 a 
 xn = 2  xn −1 + x 
  n −1 

La suite (xn )n converge vers a , écrire un algorithme qui calcul une


valeur approchée de a.

5. Soit la suite définie par :


 F0 = 0, F1 = 1

 Fn + 2 = Fn +1 + Fn
• Ecrire un algorithme qui calcul le nème terme de la suite (Fn )n .
Fn +1
• La suite Dn = converge vers un nombre φ , appelé nombre
Fn
d’or, écrire un algorithme qui calcul une valeur approché de φ .

6. Dans un établissement, les candidats au concours d’entrée au 2ème cycle


sont sélectionnés sur la base de l’âge et de la moyenne générale du
DEUG. L’âge doit être inférieur à 24 ans et la moyenne supérieure à 12
et si l’âge est inférieur à 26 ans la moyenne doit être supérieure à 16.
Ecrire un algorithme qui calcul le nombre de candidats sélectionnés.

7. Ecrire un algorithme qui saisit un entier et qui affiche sa représentation


binaire.

3.5.3. Boucle répéter

Syntaxe
Intsr_avant

répéter

Bloc
Jusqu’à (Condition)

Instr_après

 Condition est une expression logique, le bloc d’instructions est


répété jusqu’à ce que condition devienne vraie.

 La figure 8 correspond à l'exécution de la boucle répéter.

A.Zahi/DI/FSTF
22

Instr_avant_repeter

Corps de la boucle

fausse
Condition

vraie

Instr_après_repeter

Figure 8 : Organigramme de la boucle répéter

Comment réaliser une boucle répéter ?

Selon la connaissance du nombre d’itérations, trois cas se présentent pour


la réalisation d’une boucle répéter:

• 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

• Deuxième cas : le nombre d’itérations n’est pas connu et l’arrêt de la boucle


est décidé par l’utilisateur de l’algorithme. Dans ce cas aussi nous utilisons
les mêmes éléments que ceux de la boucle tant que, seule la condition d’arrêt
diffère, elle devient (Rep = "N").

Ainsi, on obtient la partie de l’algorithme suivante:

Rep Å "O"
répépter

Bloc
ecrire(" texte de la question O/N"),
lire(Rep)

jusqu’à (Rep="N")

Exemple

Un client achète plusieurs produits où chaque produit est caractérisé par la


quantité achetée qa et son prix unitaire pu . Etablir l'algorithme qui permet
de calculer et afficher le montant total à payer par un client. Le montant
d'achat d'un seul produit est défini par mp = qa * pu .

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

• Troisième cas: le nombre d’itérations est inconnu et l’arrêt de la boucle est


décidé par l’algorithme lui-même. Dans ce cas également la condition
d’arrêt est déterminée à partir de l’énoncé du problème et de la méthode de
résolution proposée.

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.

3.5.4. Boucle pour

Syntaxe

Instr_avant

pour i allant de vi à vf
faire

Bloc
finpour

ou de façon générale

pour i allant de vi à vf incrément/décrément pas


faire
Bloc
finpour

Instr_après

 vi, vf : valeur initial et valeur finale du compteur de la boucle.

 Pas la valeur avec la quelle on incrémente ou on décrémente le


compteur de la boucle à chaque itération.

 Dans cette dernière forme, le nombre d'itérations doit être connu au


préalable, le compteur de la boucle est incrémenté / décrémenté
automatiquement de la valeur pas.

 La figure 9 correspond à l'exécution de la boucle Pour.

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

Figure 9 : Organigramme de la boucle pour

Exemples

1. Affichage des nombres pairs inférieurs à n


algorithme pair
variables :
n,i :entiers
début
ecrire("saisir n")
lire (n)
pour i allant de 2 à n incrément pas = 2
faire
ecrire (i)
finpour
fin
n
2. Calculer la somme des n premiers entiers : ∑i i =1
algorithme somme
variables :
n,s,i :entier
début
Ecrire ("Saisir n")
lire (n)
s ← 0
pour I allant de 1 à n
faire
s ← s+i
finpour
écrire ("Somme=', s)
fin

A.Zahi/DI/FSTF
26

Exercices

1. Ecrire un algorithme qui permet de calculer n! , n est saisi au clavier.

2. Ecrire un algorithme qui permet de calculer x n , n et x sont saisis au


clavier.

3. Ecrire un algorithme qui permet d’afficher les entiers inférieurs n qui


sont divisibles par un entier k saisi au clavier. Donner les formes.

4. Ecrire un algorithme qui permet d’afficher les diviseurs d’un entier n


saisi au clavier.

5. On suppose qu’on ne dispose pas de l’opérateur *, écrire un algorithme


qui permet de calculer le produit deux entiers.

6. Un triplet ( p , q , r ) d’entiers naturels est dit pythagoricien si et seulement


si p 2 + q 2 = r 2 . Ecrire un algorithme qui permet d’afficher tous les
triplets pythagoriciens ( p , q , r ) , avec, p et q < n , n saisi au clavier.

7. Ecrire un algorithme qui permet de calculer la valeur de la fonction


i =n
x
f n (x ) = ∑ i! , x et n saisis au clavier.
i =1

A.Zahi/DI/FSTF

Vous aimerez peut-être aussi