Vous êtes sur la page 1sur 137

Algorithmique &

Programmation

1
Plan du cour

Partie 1 : Algorithme
Introduction
Les variables
Les operateurs
Les instructions d’écriture et le lecture
Les structures Alternatives
Les structures répétitives
Les tableaux
Le type structure
Les fonctions et Procédures
Les algorithme de Tri
Parti 2 : Langace C
Présentation du langage C
Implémentations

2
Avant Propos

Certains voient, à tort, dans l'ordinateur


une machine pensante et intelligente, capable de
résoudre bien des problèmes. En fait, celui-ci ne
serait capable de rien si quelqu'un (le
programmeur en l'occurrence) ne lui avait
fourni la liste des actions à exécuter.

3
Rappel sur le fonctionnement de l’Ordinateur

Mémoire Processeur

Bus

Unités ...
d’entrée-
Imprimante Écran
sortie
Disque
La mémoire contient des instructions et des données 4
Problème

2*x + 3 = 0 10*x - 1= 0

0*x + 0 = 0 0*x + 3 = 0

?? a*x + b = 0 ??
Je veux informatiser ce problème et le rendre exploitable
à travers mon ordinateur. Qu’est ce que je dois faire ?
5
Informatisation d’un problème

Énoncé non précis : Problème informel


Spécification
Énoncé précis : Problème formel
Analyse
Algorithme
Programmation
Langage de programmation : Python,..
Compilation
Exécutable du programme
Exécution
Résultat

6
Algorithme

Définition : Encyclopédie Universalis

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

7
Algorithme

Définition :

C’est un pseudo-langage qui est 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é.

8
Langage Assembleur

Définition :

Le langage Assembleur est un langage qui utilise des


instructions sous forme symbolique (ADD, MOVE).
L’assembleur est lié au microprocesseur, puisque
c’est le seul langage que le microprocesseur comprend.

9
Langage de programmation

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, Visual Basic


(VB), C++, Java etc...

10
Programme source

Définition :

Le programme source est le premier résultat de la


traduction d’un algorithme en un langage évolué :

Un nouvel ensemble d’instructions non exécutables


directement par la machine

11
Compilateur

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

12
Structure générale d’un algorithme

Titre du Problème
 Déclaration des Constantes
Déclaration  Déclaration des Variables
des Objets  Déclaration des Tableaux
 Déclaration des Procédures et Fonctions

Début
Manipulation Actions
FIN
13
Structure générale d’un algorithme

Démarche à suivre pour résoudre un problème donné:

Identifier les données du départ (entrées) et celle(s) qu’il


faut obtenir (sorties);
Structurer les données (variables ou constantes, type...);
Réfléchir pour déterminer les action nécessaires à
l’obtention des résultats ;
Présenter les résultats.

14
Déclaration des Objets

15
Objet

Définition :
Un objet est toute partie identifiable de l’information
au cours d’un traitement.
Il est caractérisé par son nom, son type et sa valeur.
L’ensemble des objets manipulés par un algorithme
est appelé:
environnement de cet algorithme.
Remarque :
Les objets manipulés par un ordinateur sont :
Les Constantes et Les Variables 16
Les constantes

Définition :

Les Constantes désignent des références à des


valeurs invariantes dans le programme

Syntaxe de la déclaration :

Constante Nom_Constante = Valeur

Exemple :
Constante Pi = 3.14
17
Les variables

Définition :
Ce sont des références (adresses mémoires) où vont
être stockées des valeurs variables. Les différentes valeurs
d’une référence vont appartenir au type de données auquel
appartient la référence.
Remarques :
1°- Le nom d’une variable  suite de caractères qui permet d’identifier

la variable d’une manière unique dans un algorithme.


2°- Il existe différents types de variables.
18
Remarques sur les constantes et les
variables

 Les variables sont des références (adresses mémoires) où vont être stockées
des valeurs qui peuvent changer au cours de l’exécution du programme. Les
mémoires sont repérées par des numéros (pour l’ordinateur) ou des noms
(pour le programmeur, qui a intérêt à choisir des noms significatifs).
 Le type de variable limite les valeurs ainsi que les opérations qui peuvent
être représentés.
 Chaque fois qu’on procède à une nouvelle affectation, l’ancien contenu de
la mémoire est perdu et un nouveau contenu est placé dans la mémoire.
 Les constantes correspondent à des zones mémoires dont le contenu ne
peut pas varier.

19
Type Entier

Définition :
C’est l’ensemble des nombres entiers positifs ou négatifs.
Généralement ils occupent 2 octets, ce qui limite les valeurs de -32768 à +32768.
Cependant cela dépend des machines, des compilateurs, et des langages.

Syntaxe de la déclaration :

Variable variable1,variable2,… : Entier

Exemple :
a et b sont, par exemple,
Variable a,b : Entier les coefficients de
l’équation : ax + b = 0
20
Type Réel

Définition :

C’est l’ensemble des nombres réels, c’est à dire les


nombres décimaux sans limitation.
Généralement un nombre réel est codé sur 4 octets -3,40x10^38 à -1,40x10^-45 pour les valeurs négatives
1,40x10^-45 à 3,40x10^38 pour les valeurs positives

Syntaxe de la déclaration :
Variable variable1,variable2,… : Réel

Exemple :

Variable x,y : Réel


21
Type Caractère

Définition :
Il est constitué des caractères alphabétiques et numériques .
Une variable de ce type ne peut contenir qu'un seul et unique caractère écrit
entre apostrophe.
Généralement un caractère est codé sur 1 octets

Syntaxe de la déclaration :
Variable variable1,variable2,…:
Exemple : Caractere

Variable A,B : Caractere


22
Type Chaîne de caractères

Définition :
C’est une suite de caractères, c’est à dire des
combinaisons de caractères (lettres, chiffres, symboles..).
Syntaxe de la déclaration :

Variable variable1,variable2,… : CHAINE

Exemple :

Variable Nom, Catégorie : CHAINE


23
Type Chaîne de caractères

Remarque :
Une chaîne de caractères est notée toujours soit entre guillemets,
soit entre des apostrophes. Cette notation permet d’éviter les
confusions suivantes :
• Confondre un chiffre et une suite 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.
• La confusion qui consiste à ne pas pouvoir faire la distinction
entre le nom d'une variable et son contenu.
Pour les valeurs des variables de type chaîne, il faut respecter la
casse. Par exemple, la chaîne ″Salut″ est différente de la chaîne
″salut″
24
Type Booléen

Définition :

Il s’agit des objets qui ne peuvent prendre que deux


valeurs vrai ou faux.
Syntaxe de la déclaration :

Variable variable1,variable2,… : Booléen

Exemple :

Variable Décision : Booléen


25
Autres objets à déclarer

Objets : Type Tableau

Un tableau 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.

26
Autres objets à déclarer

Les Fonctions et Les Procédures

Ce sont des sous-programmes auxquels on peut faire


référence à l’intérieur d’un programme . Ils sont conçus pour
éviter les répétitions et pour découper des programmes jugés
trop longs; ce qui facilite la lisibilité du programme principal.

27
Operateurs et expressions
i) Les opérateurs Arithmétiques :

Opérateur Signification

+ Addition

- Soustraction

* Multiplication

/ Division

% ou mod Modulo : le reste de la division de 2


valeurs entières
div Division entière 28
Operateurs et expressions

ii) Les opérateurs de Comparaison :


Pour exprimer les conditions, on utilise les opérateurs conditionnels suivants :

Opérateur Signification
= Égal
< Inférieur
> Supérieur
<= Inférieur ou égal
>= Supérieur ou égal
<> différent
29
Operateurs et expressions

iii) Les opérateurs logiques de relation :


On peut combiner des conditions à l’aide des opérateurs
logiques :
Opérateur Signification
Et Et logique

Ou Ou logique

Non Négation logique

Ou = Xor Ou exclusif
30
Operateurs et expressions

Les " tables de vérité "

A B A et B A ou B Non A

VRAI VRAI VRAI VRAI FAUX

VRAI FAUX FAUX VRAI FAUX

FAUX VRAI FAUX VRAI VRAI

FAUX FAUX FAUX FAUX VRAI

31
Operateurs et expressions

Exemple :

Expression Résultat
(4 <7) ET (9>0) Vrai
(1 < 0) OU (1<>1) Faux
Non(13.4 < 15) Faux

32
Operateurs et expressions

Priorités des opérateurs

Priorité de *, / div et % par rapport à + et -


5 + 9 * 3 = 32 et non 42
5*9+3 = 48 et non 60
Pour les opérateurs de même priorité, associativité à
partir de la gauche
15 / 5 * 3 = 9 et non 1
5 – 2 + 4 = 7 et non –1
On peut utiliser des parenthèses pour changer l’ordre
des opérations :
15 / (5 * 3) = 1
(5 + 9 ) * 3 = 42 33
Operateurs et expressions

Opérateurs et variables:

Variables de type entier


*, / , % , div , + et -

Variables de type Réel


*, / , + et -

Variables de type caractère ou chaîne de caractères


CONCAT(&) , Suc, Pred

 Variables de type Booléen


Les opérateurs logiques de relation : et, ou, non 34
Manipulation des Objets

35
Instruction et Action

Définition :
On appelle instruction toute commande élémentaire que
l’on doit appliquer sur des objets pour avoir des sorties bien
définies.
Définition :
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 propre et bien défini. Chaque
action porte sur des objets sur lesquels elle s’exécute :

L'Action est une seule instruction ou un groupe d’instructions 36


La Structure de la partie manipulation

La partie manipulation ou traitement d’un


algorithme doit commencer par le mot DEBUT et se termine
par le mot FIN :
DEBUT
Instruction 1
Instruction 2
Action
…….
…….
Instruction n

FIN 37
Les instructions d’un Algorithme

La partie manipulation utilise les différents objets


déclarés dans la partie déclaration et leur applique des
opérations afin de retourner le(s) résultat(s) attendu(s) par le
programmeur. Pour ce fait, il y a différentes actions, dites
instructions, à savoir :

Instructions de dialogue Homme-Machine ;


Instructions d’affectation ;
Instructions à structure alternative ;
Instructions à structure répétitive.
38
Etc…
Instruction d’affectation

Définition:
C’est le stockage d’une valeur à un endroit
spécifique(variable). Pour affecter une valeur à une variable,
on écrit :

Variable Valeur

Exemple :
Variable valeur 1 + valeur 2
Variable valeur 1 * valeur 2
Variable valeur + Variable1
39
Instructions de dialogue Homme-Machine

L’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 :

Écrire (Variable ou ‘ Message’ )

Exemples : Écrire (‘ Saisissez la valeur de a ’)


Écrire (‘ Saisissez la valeur de b ’)
Écrire (‘ Saisissez les valeurs de a et b ’)
Écrire (‘Le résultat trouvé est :’, r )
40
Écrire (r)
Instruction Homme-Machine

La Saisie des informations:

Pour indiquer dans un algorithme que telle donnée


doit être lue par le système, on utilise l’instruction lire qui
obéit à la syntaxe suivante :

Lire(Variable)

Exemple :
Écrire (‘ Saisissez la valeur de a ’)
Lire(a)
41
Exercice

Quels résultats produit l’algorithme suivant ? Les types de


variables sont-ils corrects
Titre : Calcul
Déclaration

Variable A: Entier
C,B : Réel
D : caractère
E : Booléen
Début
A ← 30
B ← A * 2
Écrire('B=' , B)
Manipulation

C ← (B + A)/4
B ← C / 5
D ← ‘Amine’
E ←(A > 40) Ou (C < B)
Écrire('les valeurs obtenues sont : A = ' , A ,
'B = ' ,B , ' C = ', C , ' D = ', D, ' E = ', E) 42
Fin
États de la mémoire lors de l’exécution
du programme

Instruction A B C D E
Après l’instruction
A ← 30
30 — — — —
Après l’instruction
B←A*2
30 60 — — —
Après l’instruction
C ← (B + A)/4
30 60 22.5 — —
Après l’instruction
B← C/5
30 4.5 22.5 — —
Après l’instruction
D ← ‘Amine'
30 4.5 22.5 Amine —
Après l’instruction
E ← (A >40) Ou (C<B)
30 4.5 22.5 Amine Faux
43
Exercice

Énoncé:

Écrire l’algorithme permettant le calcul de la surface


d’un cercle connaissant son rayon :
Surface =  * Rayon2

Entrée : Manipulation Sortie :


La valeur du rayon La Surface calculée

44
Solution

Titre : Surface d’un cercle


Déclaration :
Constante Pi=3.14
Variable Rayon : Entier * Donnée d’entrée*
Variable Surface : Réel * Donnée de sortie*

Manipulation :
DEBUT
Écrire ( 'Saisir la valeur du rayon' )
Lire(Rayon)
Surface  Rayon * Rayon * Pi
Écrire (' La Surface du cercle est : ', Surface)
45
FIN
Excercice

Quelles seront les valeurs des variables A et B après exécution des


instructions suivantes ?
Variables A, B : Entier
Début
A←5
B←2
A←B
B←A
Fin

Questions : les deux dernières instructions permettent-elles d’échanger


les deux valeurs de B et A ? Si l’on inverse les deux dernières
instructions, cela change-t-il quelque chose ?

46
Solution

Après exécution de l’instruction La valeur des variables est :


A←5A=5B=?
B←2A=5B=2
A←BA=2B=2
B←AA=2B=2

Les deux dernières instructions ne permettent donc pas d’échanger les


deux valeurs de B et A, puisque l’une des deux valeurs (celle de A) est ici
écrasée. Si l’on inverse les deux dernières instructions, cela ne changera
rien du tout, hormis le fait que cette fois c’est la valeur de B qui sera
écrasée.

47
Excercice

. Ecrire un algorithme permettant d’échanger les valeurs de deux


variables A et B, et ce quel que soit leur contenu préalable.

48
Solution

L’algorithme est :
Début
C←A
A←B
B←C
Fin
On est obligé de passer par une variable dite temporaire (la variable C).

49
Excercice

. Que produit l’algorithme suivant ?


Variables A, B, C : Caractères
Début
A ← “423“
B ← “12”
C←A+B
Fin

50
Solution

Il ne peut produire qu’une erreur d’exécution, puisqu’on ne peut pas


additionner des caractères.
Une solution peut etre comme :

C←A&B

51
Exercice

Exemple :
Écrire l’algorithme qui permet de déterminer le
salaire mensuel d’un commercial sachant que ce
salaire comporte un montant fixe de 4000 DHS et
une commission qui représente 10% du chiffre
d’affaire réalisé par mois.

52
Ce qu’il faut faire

- Analyse du problème
• Recenser les données dont on dispose, celles qu’on cherche
à produire

• Choisir les actions à utiliser pour résoudre le problème


- Présentation de l’algorithme

* Déclarer toutes les données utilisées (variables, constantes, types)

* Organiser les actions


53
* Présenter les résultats
Algorithme

Titre : Commission
Déclaration :
Constante M = 4000
Variable CA : Entier * Donnée d’entrée*
Com : Réel * Donnée intermédiaire*
Sal : Réel * Donnée de sortie*
Manipulation :
DEBUT
Écrire ('Donner le CA mensuel en DHS')
Lire(CA)
Com  CA * 10/100
Sal  Com + M
Écrire ('Le salaire mensuel est de : ', Sal, ' DHS ' )
54
FIN
Instructions à structure alternative

Les conditions :
On appelle condition simple toute expression de la forme :
Variable 1 Opérateur de comp. Variable
2
Exp : A > B

On appelle condition complexe toute expression de la forme :


Condition 1 Opérateur logique condition 2
Exp :(A!=B) ET (B <=C)

55
Instructions à structure alternative

L’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.
Syntaxe :
Si condition alors
Actions 1
Sinon N’est pas obligatoire si pas d’action 2

Actions 2
Finsi 56
Instructions à structure alternative

Exemple : Ecrire un algorithme qui donne la valeure


absolue d’un nombre entier saisi au clavier
Algorithme ValeurAbs
Variable x : réel
Début
Ecrire(" Entrez un réel : " )
Lire (x) ;
Si x < 0 alors
Ecrire ("la valeur absolue de ", x, "est:",-x)
Sinon
Ecrire ("la valeur absolue de ", x, "est:", x)
Finsi
Fin

57
Instructions à structure alternative

Comparer les deux solutions de l’Algorithme qui donne


Exemple: l’état de l’eau selon sa température.
Solution 1 Solution 2
Variable Temp : Entier Variable Temp : Entier
Début Début
Ecrire “Entrez la température de l’eau :” Ecrire “Entrez la température de l’eau :”
Lire Temp Lire Temp
Si Temp =< 0 Alors Si Temp =< 0 Alors
Ecrire “Etat de glace“ Ecrire “Etat de glace“
Sinon Finsi
Si Temp < 100 Alors Si Temp > 0 Et Temp < 100 Alors
Ecrire “Etat liquide” Ecrire “Etat liquide”
Sinon Finsi
Ecrire “Etat vapeur” Si Temp > 100 Alors
Finsi Ecrire “Etat vapeur”
FinSi Finsi
Fin Fin 58
Remarque
La première solution est plus simple à écrire et plus lisible. Elle est également
plus performante à l’exécution. En effet, les conditions se ressemblent plus ou
moins, et surtout on oblige la machine à examiner trois tests successifs alors
que tous portent sur la même chose, la valeur de la variable Temp.
Mais aussi, et surtout, nous avons fait des économies sur le temps d’exécution
de l’ordinateur. Si la température est inférieure à zéro, celui-ci écrit « C’est de
la glace » et passe directement à la fin, sans être ralenti par l’examen des
autres possibilités.

59
Instructions à structure alternative

Exercice :

Écrire l’algorithme qui permet de calculer le


maximum de deux entiers quelconques.

60
Instructions à structure alternative

Solution :

Titre : Maximum
Variable a ,b, max : entier
Début
Écrire ('Saisir deux entiers a et b ')
Lire(a, b)
Si (a > b) alors
max  a
Sinon
max  b
Finsi
Écrire ('le maximum de ' , a , ' et de ' , b, ' est : ' , max)
61
Fin
Instructions à structure alternative

Exercice :

Écrire l’algorithme qui permet de déterminer le


salaire mensuel d’un commercial sachant que ce
salaire comporte un montant fixe de 4000 DHS et
une commission qui représente 5% du chiffre
d’affaire réalisé par mois si ce chiffre est < 30000
et de 10 % dans le cas contraire .
62
Algorithme

… Suite de l’algorithme

Si (CA < 30000) alors


Com  CA * 0.05
Sinon
Com  CA * 0.1
Finsi
Sal  Com + M
Écrire ('Le salaire mensuel est de : ', Sal , 'DHS')
FIN

63
Instructions à structure alternative

Exercice :

Compliquons un peu l’énoncé:


La commission est calculée de la manière suivante :
Commission = 15% du CA quand CA > 100000

Commission = 10% du CA quand 30000 < CA < = 100000


Dans le cas contraire pas de commission


Écrire l’algorithme qui permet de déterminer le salaire


mensuel.

64
Algorithme

… Suite de l’algorithme
Si (CA > 100000) alors
Com  CA * 0.15
Sinon
Si (CA > 30000) alors
Com  CA * 0.1
Sinon
Com  0
Finsi
Finsi
Sal  Com + M
Écrire ('Le salaire mensuel est de : ', Sal , 'DHS')
FIN 65
Instructions à structure alternative

L’instruction Suivant Cas :

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.

66
Instructions à structure alternative

Syntaxe : Suivant Cas 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
67
Instructions à structure alternative

Exercice :

Écrire l’algorithme qui permet de déterminer


le nombre de jours d’un mois d’une année donnée

68
Instructions à structure alternative

….Reste de l’Algorithme
Suivant Cas M Faire
Cas 2
Action 1
Cas 1, 3, 5, 7, 8, 10 , 12
Action 2
Cas 4, 6, 9, 11
Action 3
Sinon Cas
Écrire ( 'Attention : Mois Incorrect ')
Fin Suivant
69
FIN
Instructions à structure alternative

Exercice :

Un club de sport désire automatiser sa gestion. Les


tarifs annuels d’inscription sont définis ainsi :
De 0 à 3 ans ne sont pas autorisés à s’inscrire
De 3 à 6 ans : gratuit
De 6 à 12 ans: 1000 DHS
De 12 à 26 ans : 1500 DHS
Plus de 26 ans : 2000 DHS
70
Instructions à structure alternative

….Reste de l’Algorithme
Suivant Cas age Faire
Cas 1, 2
Écrire ('Vous n’êtes pas autorisé à vous inscrire ')
Cas 3..5
Tarif  0
Cas 6..11
Tarif  1000
Cas 12..25
Tarif  1500
Sinon Cas
Tarif  2000
Fin Suivant
Écrire (' le montant à payer en DHS est : ' , Tarif )
FIN 71
Instructions à structure répétitive (1)

Problème :
Écrire un algorithme permettant d’afficher 300 fois le message :
‘‘ bonjour tout le monde’’.

Solution Classique :

DEBUT
Écrire (' Bonjour tout le monde ') 1
Écrire (' Bonjour tout le monde ') 2
.
.
Écrire (' Bonjour tout le monde ') 300
FIN 72
Instructions à structure répétitive (2)
Boucle « Tant que Faire »

L’instruction Tant que :


On utilise cette instruction pour exécuter des actions
tant qu’une condition est réalisée.

Syntaxe :

<initialisation>
Tant que Condition Faire

<bloc de traitement>
<bloc de contrôle> Action

Fin tant que


73
Instructions à structure répétitive (2)
Boucle « Tant que Faire »

Sémantique : Si condition = T
 Tant que Valeur(T)=Vrai le bloc d'instructions sera

exécuté.
 Si valeur(T)=Faux on passe à l'instruction suivante.

 Avec TANT QUE le test est fait à PRIORI.

 Il se peut que l'on ne rentre jamais dans la

boucle.
 La boucle n'est pas INCONDITIONNELLE. On

ne connaît pas à l’avance le nombre d'itérations.

74
Instructions à structure répétitive (3)
Boucle « Tant que Faire »

Solution de l’exercice précédent :


Variable i : Entier
DEBUT
i  0 * Initialisation *
Tant que (i < 300) Faire
Écrire (' Bonjour tout le monde ')
i  i+1
Fin tant que
FIN
75
Instructions à structure répétitive (4)
Boucle « Tant que Faire »

Exercice : Afficher tous les multiples de 9 inférieurs à 485


Titre : Multiples de 9
Variable i, M : Entier *i: variable intermédiaire: compteur*
DEBUT
i  0 * initialisation de la boucle*
M  0
Tant que (M < 485) Faire
Écrire (M , ' est un multiple de 9 ' )
i  i+1 * incrémentation du compteur *
M  i * 9
Fin tant que
FIN 76
Instructions à structure répétitive (5)
Boucle « Tant que Faire »

Exemple 1: Dans cet algorithme combien de fois la boucle est- elle exécutée ?
Titre : Boucle1
Variable i , y : Entier
Début
i  i = variable intermédiaire
y0 = compteur
Tant Que (i<7) faire i i+1 = incrémentation
du compteur
i i+1
y  y+i
Écrire (' y = ' , y)
Fin Tant que
77
Fin
Instructions à structure répétitive (6)
Boucle « Tant que Faire »

Exemple 2: Dans cet algorithme combien de fois la boucle est- elle exécutée ?

Titre : Boucle2
Variable n : Entier
Début
n 15
Tant Que (n<>0) faire
Écrire (n)
n n-2
Fin Tant que
Fin
78
Instructions à structure répétitive (7)
Boucle « Faire jusqu’à »

L’instruction Faire jusqu’à :


On utilise cette instruction pour exécuter des actions
jusqu'à ce que une condition soit remplie.

Syntaxe :

<Initialisation>
Faire
<bloc de traitement>
<bloc de progression > Action

Jusqu’à Condition 79
Instructions à structure répétitive (8)
Boucle « Faire jusqu’à »

Sémantique :
Si valeur(T)= Faux la boucle est à nouveau exécutée.

 Si Valeur(T)=Vrai, on passe à l'instruction suivante.

Avec Faire jusqu’à le test est fait à POSTERIORI.


•Il y aura un passage dans la boucle. Le bloc
d’instructions sera exécuté au moins une fois.
•La boucle n’est pas INCONDITIONNELLE. On ne
connaît pas à l’avance le nombre d’itérations.

80
Instructions à structure répétitive (9)
Boucle « Faire jusqu’à »

Exemple
Titre : Boucle2
Variable i , y : Entier
Début
i 
y0 Valeurs de y ?
faire
i i+1
y  y+i
Écrire (' y = ' , y)
Jusqu’à (i <7)
81
Fin
Instructions à structure répétitive (10)
Boucle « Faire jusqu’à »

Exemple
Titre : Boucle3
Variable i , y : Entier
Début
i 
y0 Donner les valeurs de y
faire
i i+1
y  y+i
Écrire (' y = ' , y)
Jusqu’à (i = 7)
82
Fin
Instructions à structure répétitive (11)
Boucle « Faire jusqu’à »

Exercice :

Écrire un algorithme permettant de calculer, pour un


entier N> 0, la somme :
SN = 1 + 2 + 3 + …… + N

83
Instructions à structure répétitive (12)
Boucle « Faire jusqu’à »

Solution :
Variable N,S, i : Entier
DEBUT
Écrire (' Saisir une valeur entière positive :')
Lire (N)
S  0 * initialisation de la boucle*
i  0
Faire
i  i + 1
S  S + i
jusqu’à (i > =N)
Écrire (' La somme : S = ', S)
FIN 84
Instructions à structure répétitive (13)
Boucle « Faire jusqu’à »

Exercice :

Écrire un algorithme permettant de calculer la somme :


Sn = 1 + 1/2 + 1/3 + …… + 1/n

85
Instructions à structure répétitive (14)
Boucle « Pour »

L’instruction Pour :
La spécification de cette instruction c’est qu’elle
limite le nombre de fois où doit se répéter le bloc Action

Syntaxe : La boucle est


Inconditionnelle
<Initialisation> On connaît à priori le
nombre d'itérations
Pour variable  valeur1 à valeur2 faire

<Bloc de traitement> Action

Fin Pour 86
Instructions à structure répétitive (15)
Boucle « Pour »

Exercice :

Écrire un algorithme permettant le calcul du factoriel


d’un entier N > 0 donné : N !

87
Instructions à structure répétitive (16)

Solution :

Titre : Factoriel
Variable N : Entier
i : Entier * i variable intermédiaire
F : Entier i = compteur *
DEBUT
Écrire (' Saisir une valeur entière N > 0: ')
Lire (N )
F 1 * initialisation de la boucle*
i0
Pour i  1 à N Faire
F  F*i
Fin Pour
Écrire (' Le factoriel de ', N , ' est : ' , F) 88
FIN
Instructions à structure répétitive (17)
Boucle « Pour »

Exercice :

Écrire l’algorithme permettant de calculer la


moyenne des notes de N étudiants

89
Instructions à structure répétitive (18)

Solution :

Titre : Moyenne
Variable N, i : Entier
note, S, Moy : Réel
DEBUT
Écrire (' Saisir le nombre d’étudiants: ')
Lire (N)
S  0 * initialisation de la boucle*
i  0
Pour i  1 à N faire
Écrire (' Saisir la note de l’Etudiant ' , i , ' : ')
Lire (note)
S  S + note
Fin Pour
Moy  S/N
Écrire (' La moyenne est : ', Moy) 90
FIN
Instructions à structure répétitive (19)
Boucle « Pour »

Exercice
Écrire un algorithme permettant d’afficher les lettres de l’alphabet.
Solution :
Titre : alphabet
Variable lettre: Caractère
* parcourir les lettres de l'alphabet*
Début
Pour lettre  ' a ' à lettre = ' z ' Faire
Écrire(lettre)
FinPour
91
Fin
Instructions à structure répétitive (20)
Quelle répétition ou Boucle choisir ?

Si nombre d'itérations connu Alors


Boucle Pour
Sinon
Si itération exécutée au moins une fois
Alors
Boucle Faire jusqu’à
Sinon
Boucle Tant que faire
92
Instructions à structure répétitive (22)
Boucle « Pour »

Exercice :
1- Écrire un algorithme permettant de déterminer le N ème
terme d’une suite numérique connaissant son premier
terme et ses coefficients a et b et tels que:
Un = a * Un-1 + b  1  n N

2- Écrire un algorithme permettant de définir le


rang N et le terme correspondant de la suite tels que
UN > 1000
93
Instructions à structure répétitive (23)
Solution :

1) Le nombre d’itérations est connu : Boucle Pour

Variable N, i : Entier
Variable a, b, S : Réel
DEBUT
Écrire (' Saisir la valeur de N: ')
Lire (N)
Écrire ('Saisir la valeur du premier terme et les coefs a et b:')
Lire (S , a, b )
Pour i  1 à N faire
S  a * S + b
Fin Pour
Écrire ( ' La somme de la série est : ', S )
FIN 94
Instructions à structure répétitive (24)
Solution :

2) Le nombre d’itérations inconnu : Boucle Faire jusqu’à

Variable N : Entier
Variable a, b, S : Réel
DEBUT
Écrire ('Saisir la valeur du premier terme et les coefs a et b:')
Lire (S , a, b)
N  0
Faire
S  a * S + b
N  N + 1
Jusqu’à S > 1000
Écrire (' La somme de la série est : ', S)
Écrire (' Le rang est : ', N ) 95
FIN
Instructions à structure répétitive (25)
Boucle « Pour »

Exercice :

Écrire un algorithme permettant de calculer la somme :


Sn(x) = 1/x + 2/x2 + 3 /x3 + …… + n /xn

96
La première partie du cours
est terminée

97
Type Tableau

Définition :

Un tableau 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.

Remarque :
1°- Un tableau peut être d’une ou plusieurs dimensions.
2°- La syntaxe de la déclaration d’un tableau change selon
98
la dimension de ce dernier
Déclaration d’un Tableau (1)

Syntaxe de la déclaration :

Tableau à une dimension :

Tab Nom-Tableau[nombre de valeurs supportées] : Type

Tableau à plusieurs dimensions :

Tab Nom-Tableau[nombre de valeurs supportées en dimension1,

nombre de valeurs supportées en dimension 2,


,… ] : Type 99
Déclaration d’un Tableau (2)

Exemples :
Tableau à une dimension :
- Un tableau pour enregistrer les salaires de 30 employés :
Tab Salaires[30] : Réel
Salaires[16] = 4000.50
Tableau à plusieurs dimensions :
- Une matrice d’entiers de 5 lignes et 7 colonnes :
Tab Matrice-Test[5,7 ] : Entier
100
Matrice-Test[2,3] = 13
Tableau

Exercice 1 :
Quel résultat fournira l’exécution de ce programme :
Variable i : Entier
Tableau C (6) : Entier
DEBUT
POUR i = 1 A 6
Lire C (i)
FIN POUR
POUR i = 1 A 6
C (i) ← C (i) * C (i)
FIN POUR
POUR i = 1 A 6
Ecrire C (i)
FIN POUR
FIN
101
Tableau

Solution Exercice 1.
L’exécution du programme nous affichera successivement à l’écran :
4
25
9
100
16
4

Excercice 2 Soit T un tableau de N réels. Ecrire le programme qui permet de


calculer le nombre des occurrences d’un nombre X (c'est-à-dire combien de
fois ce nombre X figure dans le tableau T).

102
Tableau

Solution Exercices 2
Le programme est :
Variables X ,i,Compt : Réels
Variable Compt :ENTIER
Tableau T (N) : Réel
DEBUT
Lire X
POUR i=1 JUSQU'A i=N
SI T (i) =X ALORS
Compt← compt+1
FIN SI
FIN POUR
Ecrire « Le nombre d’occurrences de cet éléments du tableau est : » ,
compt
FIN

103
Tableau

Excercice 3. Soit T un tableau à deux dimensions de vingt lignes et


cinquante colonnes.
a. Ecrire un algorithme qui permet de calculer la somme de tous les éléments
du tableau.
b. Ecrire l’algorithme qui permet de compter le nombre des éléments
strictement positifs.
c. Ecrire l’algorithme permettant d’obtenir la somme des éléments positifs
(spos) et la somme des éléments négatifs (sneg) de ce tableau.
d. Ecrire l’algorithme qui détermine la plus grande valeur des éléments du
tableau.
e. Ecrire l’algorithme qui détermine simultanément l’élément le plus grand du
tableau ainsi que sa position.

104
Tableau

Solution Exercice 3.
Tableau T (20 , 50) : Réel
Variables i , j : Entiers
Variable som : Réel
DEBUT
som ← 0
POUR i = 1 A 20
POUR j = 1 A 50
som ← som + T (i , j)
FIN POUR
FIN POUR
Ecrire « La somme de tous les éléments du tableau est : » , som
b. L’algorithme qui compte le nombre des éléments strictement positifs est :
Tableau T (20 , 50) : Réel
Variables i , j : Entiers
Variable npos : Réel
DEBUT
npos ← 0
POUR i = 1 A 20
POUR j = 1 A 50
SI T (i , j) > 0 ALORS
npos ← npos + 1
FIN SI
FIN POUR
FIN POUR
Ecrire « Le nombre des éléments strictement positifs du tableau est : » , npos 105
Tableau

c. L’algorithme permettant d’obtenir la somme des éléments positifs (spos) et la somme des éléments
négatifs (sneg) de ce tableau est :
Tableau T (20 , 50) : Réel
Variables i , j : Entiers
Variable spos , sneg : Réel
DEBUT
spos ← 0
sneg ← 0
POUR i = 1 A 20
POUR j = 1 A 50
SI T (i , j) > 0 ALORS
spos ← spos + T (i , j)
SINON
sneg ← sneg + T (i , j)
FIN SI
FIN POUR
FIN POUR
Ecrire « La somme des éléments positifs du tableau est : » , spos
Ecrire « La somme des éléments négatifs du tableau est : » , sneg
d. L’algorithme qui détermine la plus grande valeur des éléments du tableau est :
Tableau T (20 , 50) : Réel
Variables i , j : Entiers
Variable max : Réel
DEBUT
max ← T (1 , 1)
POUR i = 1 A 20
106
Tableau

POUR j = 1 A 50
SI T (i , j) > max ALORS
max ← T (i , j)
FIN SI
FIN POUR
FIN POUR
Ecrire « Le plus grand élément du tableau est : » , max
e. L’algorithme qui détermine simultanément l’élément le plus grand du tableau ainsi que sa position
est :
Tableau T (20 , 50) : Réel
Variables i , j , imax , jmax : Entiers
Variable max : Réel
DEBUT
max ← T (1 , 1)
POUR i = 1 A 20
POUR j = 1 A 50
SI T (i , j) > max ALORS
max ← T (i , j)
imax ← i
jmax ← j
FIN SI
FIN POUR
FIN POUR
Ecrire « Le plus grand élément du tableau est : » , max
Ecrire « La position du plus grand élément est : » , imax, jmax
107
Les Structures

Définition :
Les structures, contrairement aux tableaux, servent à
rassembler au sein d’une seule entité un ensemble fini
d’éléments de type éventuellement différents. C’est le deuxième
type complexe disponible en algorithmique.

Remarques :
Il n’existe pas par défaut de type structure c'est-à-dire qu’on ne
peut pas déclarer une variable de type structure .

108
Déclaration d’une structure

Syntaxe de la déclaration :
TYPE NomDuType = STRUCTURE
attribut1 : Type
attribut2 : Type
...
attributn : Type
FIN STRUCTURE
Le type d’un attribut peut être :
- Un type simple ou complexe (un tableau ou un type basé sur une
structure) 109
Déclaration d’une structure

Exemples :
-un type Date basé sur une structure qui a trois

attributs (on dit aussi champ) : jour, mois et année.

TYPE Date = STRUCTURE


jour : Entier
mois : Entier
annee : Entier
FIN STRUCTURE

110
Déclaration d’une structure

Exemples :
Variable Date_naissance : Date est une variable de type Date.
Il est possible de déclarer un tableau d’éléments de ce type Date :

Tableau Dates(20) : Date


Dates(1) représente la première date.

Pour accéder aux attributs d’une variable dont le type est basé sur une
structure on suffixe le nom de la variable d’un point « . » suivi du nom de
l’attribut.
Par exemple, dans notre cas pour affecter le mois « Janvier" à la
première date, on utilisera le code suivant :
Dates(1).mois = « Janvier »

111
Déclaration d’une structure

Exercice1
1. Définissez la structure « Stagiaire » constituée des champs suivants :
Champ Type
Nom Chaîne
Prénom Chaîne
Datenais Structure
Le champ « Datenais » est aussi une structure dont les champs sont :
Champ Type
Jour Entier
Mois Entier
Année Entier
Ecrivez ensuite l’algorithme qui permet de lire et après afficher le nom,
prénom et date de naissance
d’un stagiaire.

112
Déclaration d’une structure

1. L’algorithme est :
TYPE Date = STRUCTURE
Jour : Entier
Mois : Entier
Annee : Entier
FIN STRUCTURE
TYPE Stagiaire = STRUCTURE
Nom : chaîne
Prenom : chaîne
Datenais : Date
FIN STRUCTURE
Variable stag : Stagiaire
DEBUT
Ecrire « Entrez les information du stagiaire »
Ecrire « Entrez le nom »
Lire stag.Nom
Ecrire « Entrez le prénom »
Lire stag.Prenom
Ecrire « Entrez le jour de naissance »
Lire stag.Date.Jour
Ecrire « Entrez le mois de naissance »
Lire stag.Date.Mois
Ecrire « Entrez l’année de naissance »
Lire stag.Date.Annee
Ecrire « Le nom du stagiaire est : » , stag.Nom
Ecrire « Son prénom est : » , stag.Prenom
113
Ecrire «Sa date de naissance est :», stag.Date.Jour , «/», stag.Date.Mois, «/», stag.Date.Annee
Les Fonctions et Les Procédures

Définition :
Ce sont des sous-programmes auxquels on peut faire
référence à l’intérieur d’un programme . Ils sont conçus pour
éviter les répétitions et pour découper des programmes jugés
trop longs ce qui facilite la lisibilité du programme principal.

Remarques :
1°- Les Fonctions et les Procédures sont caractérisées par des
paramètres d’entrée et des paramètres de sortie.
2°-La fonction retourne une seule valeur tandis que La
114
procédure peut retourner plusieurs valeurs ou aucune.
Les Fonctions

Syntaxe de la déclaration :
FONCTION nom_fonction (Argument1 : Type , ….) : Type
Déclarations
DEBUT
Instructions de la fonction
nom_fonction ← Valeur envoyée
FIN
1: Un argument (appelé paramètre formel) d’un sous- programme est une variable locale
particulière qui est associée à une variable ou constante du programme appelant.
2: A tout endroit du programme appelant on peut faire appel à la fonction en utilisant simplement
son nom suivi des arguments entre parenthèses. Les parenthèses sont toujours présentes même
lorsqu’il n’y a pas de paramètre. Les arguments spécifiés lors de l’appel de la fonction doivent être en
même nombre que dans la déclaration de la fonction et des types prévus. Dans le programme 115
appelant ces arguments sont appelés paramètres effectifs
Les Fonctions

Exempl e:
FONCTION Calcul (x : Réel , y : Réel , z : Réel) : Réel
Variable a : Entier
DEBUT
a←3
Calcul ← (x + y + z) * a
FIN
Variables i , j , k , b : Réels
DEBUT
Lire i
Lire j
Lire k
b ← Calcul (i , j , k) + 2
Ecrire b
FIN
116
Les Fonctions

Exercice 1. Définir la fonction « Inverse » qui renvoie l’inverse d’une valeur


qu’on lui passe comme paramètre.

Solution :
La définition de la fonction « Inverse » est :
FONCTION Inverse (x : Réel) : Réel
DEBUT
SI x ≠ 0 ALORS
Inevrse ← 1 /x
FIN SI
FIN

117
Les variables locales et globales

La portée d’une variable est l’ensemble des sous- programmes où


cette variable est connue c'est-à-dire que les instructions de ces sous-
programmes peuvent utiliser cette variable.
Une variable définie au niveau du programme principal (programme
appelant) est appelée variable globale. Sa portée est totale : tout
sous-programme du programme principal peut utiliser cette variable.
Cependant, une variable définie au sein d’un sous-programme est
appelée variable locale. La portée d’une variable locale est uniquement
le sous-programme qui la déclare.
Remarque :
Lorsque le nom d’une variable locale est identique à une variable globale, la
variable globale est
localement masquée. Dans ce sous-programme la variable globale devient
inaccessible. 118
Les passages de paramètres

Passage par valeur : la valeur du paramètre effectif ne change pas même si


lors de l’appel du sous-programme la valeur du paramètre formel correspondant
change. On peut dire que dans ce cas le paramètre effectif et le paramètre formel
ont font deux variables différents qui ont seulement la même valeur.
C’est la type de passage par défaut.

Passage par adresse : la valeur de ce paramètre effectif change si lors de l’appel


du sous-programme la valeur du paramètre formel correspondant change.
On peut dire que dans ce cas le paramètre effectif et le paramètre formel ont font
deux variables qui ont le même adresse (par conséquent valeur). Pour préciser
qu’il s’agit d’un passage par adresse, il faut soulignés les paramètres concernés
lors de la définition du sous-programme.

119
Les passages de paramètres

Exempl e:
Programme 1
Fonction Calcul (a : Réel) : Réel
DEBUT
Calcul ← a * 2
a←a–1 Résultat :
FIN
Variable x : Réel
6
DEBUT 3
x←3
Ecrire Calcul (x)
Ecrire x
FIN
Programme 2
Fonction Calcul (a : Réel) : Réel
DEBUT
Calcul ← a * 2
a←a–1 Résultat :
FIN
Variable x : Réel 6
DEBUT 2
x←3
Ecrire Calcul (x)
Ecrire x 120
FIN
Les procédures

Les procédures sont des sous- programmes qui ne retournent aucun


résultat. Elles admettent comme les fonctions des paramètres. On
déclare une procédure de la façon suivante :

PROCEDURE nom_procedure (Argument1 : Type , ….)


Déclarations
DEBUT
Instructions de la procédure
FIN
Et on appelle une procédure comme une fonction, en indiquant son nom
suivi des paramètres entre parenthèses

121
Les procédures

Exercice 1 : On dispose d’une phrase dont les mots sont séparer par des
point virgules. Ecrivez une procédure
qui permet de remplacer les points virgules par des espaces. On suppose
qu’on dispose des fonctions
suivantes :
- Longueur : permet de calculer la longueur d’une chaîne de caractères.
Utilisation : Longueur (chaîne)
- Extraire : permet d’extraire une partie (ou la totalité) d’une chaîne.
Utilisation : Extraire (chaîne , position_debut, longueur)
Paramètre : chaîne de laquelle on fait l’extraction
position_debut la position à partir de laquelle va commencer l’extraction
longueur désigne la longueur de la chaîne qui va être extraite.

122
Les procédures

Solution : Le programme de cette procédure est :


PROCEDURE Changer (chaine : Chaîne)
Variables i , l : Entier
Variables caract , schaine : Chaîne
DEBUT
l ← Longueur (chaine)
schaine = « « »
POUR i = 1 A l
caract ← Extraire (chaine , i , 1)
SI caract = « ; » ALORS
caract = « »
FIN SI
schaine ← schaine & caract
FIN POUR
chaine ← schaine
FIN
Variable chaine : Chaîne
Variable i : Entier
DEBUT
chaine ← « bonjour;tout;le;monde »
changer (chaine)
Ecrire chaine
FIN

123
Les algorithmes de Tri

Trier les éléments d’un tableau revient à ordonner tous ces


léments selon un ordre croissant ou décroissant.
Soit T un tableau de N éléments muni d’une relation d’ordre ≤.
Trier ce tableau c’est construire un algorithme qui devra satisfaire
à la spécification suivante : i dans [1 , N-1]; T (i) ≤ T (i+1)

124
Tri par bulle

Ce tri permet de faire remonter petit à petit un élément trop grand vers la fin du
tableau en comparant les éléments deux à deux.
Si un élément d’indice i est supérieur à un élément d’indice i+1 on les échange
et on continue avec le suivant. Lorsqu’on atteint le fin du tableau on repart du
début. On s’arrête lorsque tous les éléments du tableau sont bien placés c'est-à-
dire qu’on n’aura aucun changement d’éléments à effectuer.

125
Tri par bulle

Algorithme Bulle
Tableau T(N) : Entiers
Variables j , nc : Entiers
DEBUT
REPETER
nc ← 0
POUR j = 1 A (N-1)
SI T(j) > T(j+1) ALORS
nc ← nc +1
z ← T(j)
T(j) ← T(j+1)
T(j+1) ← z
FIN SI
FIN POUR
JUSUQU’A nc = 0
FIN
126
Tri par selection

Soit T un tableau de N éléments. On cherche le plus petit élément du


tableau et on le place à la première position. Après, on cherche le plus petit
dans les (N-1) qui reste et on le place en deuxième position et ainsi de
suite.

127
Tri par selection

Algorithme selection :
Variable i,j : entiers
POUR i ALLANT DE 1 A 9
FAIRE
Petit <- TAB (i)
POUR j ALLANT DE i A 10
FAIRE
Si (TAB (j) < petit) ALORS petit <- TAB (j) ; position <- j; FinSI
FinPour
POUR j ALLANT DE position A i+1 PAS –1
FAIRE
TAB(j) <- TAB (j-1) ;
FinPour
TAB (i) <- petit ;
FinPour
128
Tri par permutation

POUR i ALLANT DE 1 A 9
FAIRE
SI (TAB (i+1) < TAB (i))
ALORS
Abouger <- TAB (i+1)
j <- 1 ;
TanQue ((j < i) ET (TAB (j) < TAB (i+1)))
Faire j <- j+1
FTQ
POUR k ALLANT DE i+1 A j+1 PAS –1
Faire
TAB (k) <- TAB (k-1)
FinPour
TAB (j) <- abouger
FSI
Fin Pour
129
Tri par insertion

POUR i ALLANT DE 1 a n
Tmp <-t[i]
j<- i
Tant que (j>0 et t[j-1]>TMP) faire
T[j]<-t[j-1]
J<-j-1
Fin tant que
T[j]<-tmp
Fin pour

130
Recherche Dichotomique

Soit T un tableau de N éléments ordonnés et x un élément de même type que


les éléments de T. Il s'agit d'examiner la présence de x dans T. Comme le
tableau est ordonné, il satisfait la spécification suivante :
 i dans [1 , N-1]; T (i) ≤ T (i+1)
Au lieu de faire une recherche linéaire, on décompose le tableau en deux sous-
tableaux T1 et T2 et trois cas peuvent se produire :
- x est trouvé la recherche est terminé.
- la recherche continue dans T1.
- la recherche continue dans T2.

131
Exemple
Soit le tableau suivant T :
12345 6 7 8
3 7 8 8 11 15 20 24
Vous constatez que le tableau T est déjà ordonné. On va voir comment
s'applique la méthode de recherche binaire pour rechercher si x = 20 existe
dans le tableau T.
On divise l'intervalle des indices [1,8] en deux intervalles [1,4] et [5,8]. On
obtient deux tableaux T1 et T2.
1234 5 6 7 8
3788 11 15 20 24
x ∉ T1 x dansT2

132
Recherche Dichotomique

Soit T un tableau de N éléments ordonnés et x un élément de même type que


les éléments de T. Il s'agit d'examiner la présence de x dans T. Comme le
tableau est ordonné, il satisfait la spécification suivante :
 i dans [1 , N-1]; T (i) ≤ T (i+1)
Au lieu de faire une recherche linéaire, on décompose le tableau en deux sous-
tableaux T1 et T2 et trois cas peuvent se produire :
- x est trouvé la recherche est terminé.
- la recherche continue dans T1.
- la recherche continue dans T2.

133
Recherche Dichotomique

La recherche va continuer dans le tableau T2 puisque x (20) est plus


supérieur que le plus grand élément de T1. Donc l'intervalle de recherche
devient [5,8] et on va le diviser à son tour en deux intervalles [5,6] et [7,8].
5 6 7 8
11 15 20 24
x ∉ T1 x dansT2
De même, la recherche va continuer dans T2. L'intervalle de recherche
devient [7,8]. On le divise en deux intervalles [7,7] et [8,8].
Finalement, x est trouvé.
7 8
20 24
x dans T1 x ∉T2

134
Recherche Dichotomique

Soit T un tableau de N éléments ordonnés et x un élément de même type que


les éléments de T. Il s'agit d'examiner la présence de x dans T. Comme le
tableau est ordonné, il satisfait la spécification suivante :
 i dans [1 , N-1]; T (i) ≤ T (i+1)
Au lieu de faire une recherche linéaire, on décompose le tableau en deux sous-
tableaux T1 et T2 et trois cas peuvent se produire :
- x est trouvé la recherche est terminé.
- la recherche continue dans T1.
- la recherche continue dans T2.

135
Recherche Dichotomique

Tableau T(N) : Entier


Variables inf , sup , milieu , x : Entier
Variable Trouve : Booléen
DEBUT
Trouve ← Faux
inf = 1
sup ← N
TANT QUE inf ≤ sup ET Trouve = Faux
milieu ← (inf + sup) Div 2 ‘ Div est la division entière
SI T(milieu) = x ALORS
Trouve ← Vrai
SINON
SI T(milieu) < x alors
inf ← milieu + 1
SINON
sup ← milieu –1
FIN SI
FIN SI
FIN TANT QUE
SI Trouve = Vrai ALORS
Ecrire « L’élément » , x , « existe dans T »
SINON
Ecrire « L’élément » , x , « n’existe pas dans T »
FIN SI
FIN
136
Recherche Dichotomique

Algorithme dichotomique
bool trouve=false;
int inf=0,x;
int sup=n-1, milieu;
printf("donner la valeure a rechercher");
scanf("%d",&x);
while(inf<=sup && trouve==false)
{
milieu=(inf+sup)/2;
if(t[milieu]==x)
trouve=true;
else
if(t[milieu]>x)
sup=milieu-1;
else
inf=milieu+1;
}
if(trouve=true)
printf("la valeure %d existe dans T.\n",x);
else
prontf("la valeure %d n'existe pas dans T.\n",x);
return 0

137

Vous aimerez peut-être aussi