Documente Academic
Documente Profesional
Documente Cultură
(Rfrence : www.technologuepro.com)
Chapitre 1 : INTRODUCTION A
L'ALGORITHME
lments de contenu :
Intrt de l'algorithmique
Informatiser une application, facturation de la consommation d'eau, par exemple, c'est faire
raliser par ordinateur, une tche qui tait ralise par l'Homme.
Pour faire excuter une tche par ordinateur, il faut tout d'abord, dtailler suffisamment les
tapes de rsolution du problme, pour qu'elle soit excutable par l'homme. Ensuite, transfrer
la rsolution en une suite d'tapes si lmentaire et simple excuter, pouvant tre code en
un programme dans un langage comprhensible par ordinateur.
Dfinitions
L'algorithme est le rsultat d'une dmarche logique de rsolution d'un problme pour la mise
en uvre pratique sur ordinateur et afin d'obtenir des rsultats concrets il faut passer par
l'intermdiaire d'un langage de propagation.
Un algorithme dcrit une succession d'oprations qui, si elles sont fidlement excutes,
produiront le rsultat dsir.
Un algorithme est une suite d'actions que devra effectuer un automate pour arriver en un
temps fini, un rsultat dtermin partir d'une situation donne. La suite d'oprations sera
compose d'actions lmentaires appeles instructions.
C'est la logique d'crire des algorithmes. Pour pouvoir crire des algorithmes, il faut connatre
la rsolution manuelle du problme, connatre les capacits de l'ordinateur en terme d'actions
lmentaires qu'il peut assurer et la logique d'excution des instructions.
DEBUT
{Suite d'instructions}
FIN
1-b) Rappel des notions de :
Constante,
Type,
Variable.
1-c) Exemple 1
ALGORITHME afficher
DEBUT
FIN
Exemple 2
On veut crire l'algorithme qui permet de saisir 3 notes d'un tudiant dans trois matires, tant
donns les coefficients respectifs 2, 3 et 1.
Rsolution
A partir de l'nonc du problme, nous recherchons la solution par une dmarche en 2 phases.
Pour notre problme, nous connaissons les coefficients et la formule de calcul (N i*Ci / Ci),
nous avons besoins des notes de chaque matire dans l'ordre, et enfin nous pouvons
communiquer le rsultat l'utilisateur.
ALGORITHME MOYENNE
CONST C1=2
C2=3
C3=1
VAR
N1, N2, N3 : REEL
MOY : REEL
DEBUT
{Calcul de la moyenne}
FIN
Remarque : Le texte entre les accolades est purement explicatif, il sert rendre l'algorithme
plus lisible.
Chapitre 2 : LES ACTIONS
ALGORITHMIQUES SIMPLES
Concepts de base
La saisie de donnes
L'affichage
L'affectation
L'valuation d'une expression arithmtique
La suite des points de suspensions "" veut dire que ce qui prcde peut se rpter
plusieurs fois.
Ce qui est entre accolades est un commentaire, pour la lisibilit des algorithmes.
Syntaxe
ECRIRE(paramtre1 [[,paramtre2]])
message expression
Variable
Rappel
Les variables sont des cases mmoire, supposes contenir un type de donnes, nommes par
le nom de variable.
Syntaxe
Remarques :
1. La saisie se fait uniquement dans des variables. Ce sont les cases (cellules) qui pourront
accueillir les donnes correspondantes.
Les fonctions
La fonction DIV permet de donner le rsultat de la division entire d'un nombre par un
autre. 7 DIV 2 = 3
La fonction MOD (se lit Modulo), permet de donner le reste de la division entire d'un
entier par un autre. 7 MOD 2 = 1
Ordre de priorit
Les oprateurs suivants sont ordonns du plus prioritaire au moins prioritaire dans l'valuation
d'une expression arithmtique.
1- Les parenthses
3- Les fonctions
Remarque
Si l'ordre entre les oprateurs dans une expression est le mme, on value l'expression de
gauche droite.
Exemples
3**2+4 = 9+4=13
1.5. 4. L'affectation
C'est l'action de charger une valeur dans une variable. Cette valeur peut elle-mme tre une
variable, le rsultat d'une expression arithmtique ou logique ou une constante.
Syntaxe
Remarque
L'affectation ne vide pas la variable mettrice ( notre droite) de sa valeur. Par contre, le
contenu de la variable rceptrice est cras Supposons qu'on ait deux rcipients A et B o A
contient un liquide color en jaune et B contient un liquide rouge.
Rsultat
Cette opration n'est possible que si on utilise un troisime rcipient qu'on appelle rcipient
auxiliaire.
Avec des variables relles, cette opration d'change de contenu se fait entre cases mmoires
qui reprsentent les conteneurs (rcipients).
Principe : pour viter de perdre l'une des 2 valeurs initiales (A et B), on utilise une 3 ime
variable pour prserver la valeur initiale de la premire variable modifie.
Remarques Importantes
Toute variable utilise dans un algorithme doit tre dclare au dbut de l'algorithme, une
fois et une seule.
L'affectation de valeur une variable peut tre effectue autant de fois que l'on veut au
cours d'un algorithme. La valeur de la variable sera alors modifie chaque affectation.
Lorsqu'une variable apparat en partie droite d'une action d'affectation, c'est que l'on
suppose qu'elle contient obligatoirement une valeur. Cette valeur devra lui avoir t affecte
auparavant (par initialisation ou saisie), sinon l'on dira que la valeur est indfinie, et le
rsultat de l'affectation ne sera pas dfini.
La variable rceptrice d'une affectation doit tre de mme type que de la valeur affecter ou
de type compatible. Le type est dit compatible s'il est inclus dans le type de la variable
rceptrice. Exemple : REEL ENTIER est possible mais pas l'inverse.
Exemple
Ecrire l'algorithme qui permet de calculer le discriminant D (delta) d'une quation du second
degr.
Chapitre 3 : Les structures Conditionnelles
1.1.Introduction
Souvent les problmes ncessitent l'tude de plusieurs situations qui ne peuvent pas tre
traites par les squences d'actions simples. Puisqu'on a plusieurs situations, et qu'avant
l'excution, on ne sait pas quel cas de figure on aura excuter, dans l'algorithme on doit
prvoir tous les cas possibles.
Ce sont les structures conditionnelles qui le permettent, en se basant sur ce qu'on appelle
prdicat ou condition.
En mathmatiques, c'est une expression contenant une ou plusieurs variables et qui est
susceptible de devenir une proposition vraie ou fausse selon les valeurs attribues ces
variables.
Exemple :
Considrons deux variables logiques A et B. Voyons quels sont les oprateurs logiques et
leurs ordres de priorits.
1. non :
2. et : ^
3. ou : v
1-c)
A Non A
Vrai Faux
Faux Vrai
A et B Vrai Faux
Vrai Vrai Faux
Faux Faux Faux
A ou B Vrai Faux
Vrai Vrai Vrai
Faux Vrai Faux
Thorme de DE MORGAN
(A ^ B) A v B
(A v B) A ^ B
SI <Condition> ALORS
<suite daction(s)-1>
[SINON
<suite dactions(s)-2>]
FINSI
Format Organigramme
La <condition> est un prdicat, qui peut tre vrai ou faux, selon les valeurs des paramtres la
constituant.
Si la condition est vrifie (sa valeur est vrai), c'est la <suite d'actions-1> qui sera
excute. Ensuite, le systme passe l'excution juste aprs le FINSI.
Dans le cas contraire, lorsque la condition n'est pas vrifie (valeur de la condition est
faux), c'est la <suite d'actions-2> qui s'excute, en cas o celle ci existe (facultative). Si elle
n'existe pas, le systme passe directement l'instruction qui suit le FINSI.
Les suites d'actions 1 et 2, peuvent tre des actions simples ou mme des structures
conditionnelles.
1-e) Exemple 1
ALGORITHME POS-NEG
VAR A : rel
DEBUT
LIRE(A)
SI (A < 0) ALORS
SINON
ECRIRE(A, " est positif ")
FINSI
FIN
Autrement :
ALGORITHME POS-NEG-1
VAR A : rel
B : logique
DEBUT
LIRE(A)
B (A < 0)
SI (B) ALORS
SINON
FINSI
FIN
Dans cet exemple, on a dtermin uniquement les cas de positivit ou de ngativit, et on n'a
pas dtermin le cas o A est nulle.
ALGORITHME POS-NEG-NUL
VAR A : rel
DEBUT
LIRE(A)
SI (A < 0) ALORS
SI (A > 0)ALORS
SINON {A = 0}
FINSI
FINSI
FIN
1-f) Exemples
Syntaxe
. ]
FINSELON
Le slecteur peut tre une variable de type scalaire ou une expression arithmtique ou
logique.
La structure SELON value le "slecteur", passe comparer celui ci respectivement avec les
valeurs dans les listes. En cas d'galit avec une valeur, les actions correspondantes, qui sont
devant cette valeur seront excutes.
Devant "Cas", il peut y avoir une seule valeur, une suite de valeurs spares par des virgules
et/ou un intervalle de valeurs.
Remarque
1. Le slecteur doit avoir le mme type que les valeurs devant les cas.
1-g) Exemple
1.1. Introduction
Dans les problmes quotidiens, on ne traite pas uniquement des squences d'actions, sous ou
sans conditions, mais il peut tre frquent d'tre oblig d'excuter un traitement (squence
d'actions), plusieurs fois. En effet, pour saisir les N notes d'un tudiant et calculer sa
moyenne, on est amen saisir N variables, puis faire la somme et ensuite diviser la somme
par N. Cette solution ncessite la rservation de l'espace par la dclaration des variables, et
une srie de squences d'criture/lecture. Ce problme est rsolu l'aide des structures
rptitives. Celles ci permettent de donner un ordre de rptition d'une action ou d'une
squence d'actions une ou plusieurs fois.
Syntaxe
<Traitement>
FINFAIRE
Remarque
2. La valeur du pas peut tre positive ou ngative et par consquent, il faut; au dpart de la
boucle; que Vi <= Vf ou Vi >= Vf selon la positivit ou la ngativit de cette valeur.
3. La valeur du pas est gale 1 par dfaut.
Excution du <Traitement>,
Retour l'tape 2.
Application
Ecrire l'algorithme qui permet de saisir les moyennes des N tudiants de la classe
Informatique et de calculer la moyenne gnrale de la classe.
Rsolution
Sans les boucles, on est oblig de dclarer N variables, et d'crire N actions LIRE.
LIRE(note)
S S + MOY
LIRE(MOY)
S S + MOY
..
LIRE(MOY)
S S + MOY
La boucle POUR donne l'ordre la machine d'itrer les deux actions N fois.
ALGORITHME MOYENNE
VAR i, N : entier
MOY, MC : rel
DEBUT
ECRIRE("Donner le nombre d'tudiants")
LIRE(N)
SI (N > 0) ALORS
S 0 {Initialisation de S}
LIRE(MOY)
FIN FAIRE
MC S / N
SINON
FINSI
FIN
Application 1
Ecrire l'algorithme qui permet d'afficher tous les nombres pairs qui existent entre 1 et 10.
1ire solution
ECRIRE(i)
FINFAIRE
2ime solution
POUR i de 2 10 Faire
SI (i mod 2 = 0) ALORS
ECRIRE(i)
FINSI
FINFAIRE
3ime solution
POUR i de 1 5 Faire
ECRIRE(2*i)
FINFAIRE
Application 2
Ecrire l'algorithme qui permet d'afficher tous les nombres impairs entre 50 et 100 dans l'ordre
dcroissant.
ECRIRE(i)
FIN FAIRE
La valeur finale peut tre 50 ou 51 car le test de sortie est i < Vf (49 < 50 ou 51)
Rpter
<Traitement>
Cet ordre d'itration permet de rpter le <Traitement> une ou plusieurs fois et de s'arrter sur
une condition. En effet, lorsque la condition est vrifie, la boucle s'arrte, si non elle r-
excute le <Traitement>.
Remarques
1. Dans cette boucle, le traitement est excut au moins une fois avant l'valuation de la
condition d'arrt.
2. Il doit y avoir une action dans le <Traitement> qui modifie la valeur de la condition.
Application
Ecrire un algorithme qui saisit un nombre pair et qui dtermine combien de fois il est divisible
par 2. Exemple 8 est divisible 3 fois par 2 (2*2*2).
ALGORITHME PAIR-NBDIV2
VAR N, N2 : entier
DEBUT
Rpter
LIRE(N)
N2 0
NB N
Rpter
NB NB div 2
N2 N2 +1
Jusqu' (NB MOD 2 <> 0) {On s'arrte lorsque NB n'est plus divisible par 2}
FIN
FAIRE
<Traitement>
FIN FAIRE
Cet ordre d'itration permet de rpter le <Traitement> zro ou plusieurs fois et de s'arrter
lorsque la condition d'excution n'est plus vrifie. En effet, lorsque la condition d'excution
est vrifie, le <Traitement> est excut, si non elle s'arrte.
Excution du <Traitement>
Retour l'tape 1.
Remarques
1. Dans cette boucle, le traitement peut ne pas tre excut aucune fois, c'est lorsque la
condition d'excution est faux ds le dpart.
2. Les paramtres de la condition doivent tre initialiss par lecture ou par affectation
avant la boucle.
3. Il doit y avoir une action dans le <Traitement> qui modifie la valeur de la condition.
Application
Ecrire un algorithme qui saisit un nombre pair et qui dtermine combien de fois il est divisible
par 2. Exemple 8 est divisible 3 fois par 2 (2*2*2).
ALGORITHME PAIR-NBDIV2
VAR N, N2 : entier
DEBUT
Rpter
ECRIRE("Donner un entier pair")
LIRE(N)
N2 0
NB N
FAIRE
NB NB div 2
N2 N2 +1
FIN
Remarque
Le Traitement d'une boucle peut contenir lui aussi une autre boucle. On l'appelle dans ce cas
des boucles imbriques.
Chapitre 5 : Traitement des Tableaux
Rappel
* Rponse
pour i de 1 30
faire
Lire (moyenne)
Fin faire
Pourquoi ? Parce qu'on ne garde pas les moyennes prcdentes et la variable moyenne
contient uniquement la dernire valeur.
Il est plus convenable, alors, de dfinir un espace mmoire qu'on appelle MOY qui sera
divis en 30 parties quitables, indices de 1 30.
MOY
Contenu 15 12 5 10 4 50 .
Indice 1 2 3 4 5 6 7 8 9 10 11 12 13
On dfinit un tableau de 30 cases une seule dimension qu'on appelle VECTEUR.
ALGORITHME MOYENNE
CONST Bi=1
Bs=30
i : entier
On indice le nom de variable. L'indice peut tre une constante, une variable ou une expression
arithmtique.
MOY[i]
ATTENTION
Avant d'utiliser un tableau, il faut dclarer sa taille pour que le systme rserve la place en
mmoire, ncessaire pour stocker tous les lments de ce tableau.
Remarque : Le nombre d'lments saisir ne doit pas dpasser la taille du tableau pour ne pas
dborder sa capacit.
On appelle dimension d'un vecteur le nombre d'lments qui constituent ce vecteur.
ALGORITHME Vecteur
CONST N = 30
VAR
Dbut
{ chargement du tableau }
Pour i de 1 N
Faire
Fin Faire
{ fin chargement }
SMOY 0
Pour i de 1 N
Faire
SMOY SMOY+MOY[i]
Fin Faire
SMOY SMOY / 30
Faire
Ecrire (" la diffrence de la moyenne du groupe et celle de l'tudiant ",i , " est= ", SMOY-
MOY[i])
Fin Faire
Fin
$ On peut crire les deux premires boucle en une seule. Simplifier alors cet algorithme.
Remarque
La taille d'un tableau est fixe et ne peut tre donc change dans un programme : il en rsulte
deux dfauts :
Application
Recherche squentielle
On peut chercher le nombre d'apparition d'un lment dans un vecteur, sa ou bien ses
positions. Pour cela, on doit parcourir tout le vecteur lment par lment et le comparer avec
la valeur de l'lment chercher.
Applications
Rponse 1
i1
Trouv vrai
Si V[i] = e Alors
Trouv Faux
Sinon
i i +1
Fin Si
Fin Faire
Sinon
Fin Si
Recherche dichotomique
Principe
3. Si elles ne sont pas gales, on s'intresse uniquement la partie contenant les lments
voulus et on dlaisse l'autre partie.
Application
On suppose qu'on dispose d'un vecteur V de N lments. On veut chercher la valeur Val.
ALGORITHME DICHOTHOMIE
...
Inf 1
Sup N
Trouv vrai
Faire
Mil (Inf+Sup)DIV 2
Trouv faux
Sinon
Inf Mil + 1
Sinon
Sup Mil -1
Fin Si
Fin Si
Fin Faire
Sinon
Fin Si
5 4 COLONNES
LIGNES 1 2 3 4 5
1 2 5 3 6
2 4 -5 -1 3
3 7 -6 -3 0
4 5 -2 2 2
5 8 4 10 -9
M[3,2] est -6
Chapitre 6 : Les algorithmes de tri
Dans ce chapitre on prsente quelques algorithmes utiles, qui permettent d'ordonner les
lments d'un tableau dans un ordre croissant ou dcroissant. L'ordre est par dfaut croissant.
Un vecteur est dit tri si V[i] <= V[i+1], quel que soit i [1..n-1]
Utiliser un vecteur VT (vecteur tri) comme vecteur rsultat. Celui ci contiendra les lments
du vecteur initial dans l'ordre croissant.
Le principe est de :
3- Le remplacer par le plus grand lment dans le vecteur initial (pour qu'il ne sera plus le
minimum)
4- Si le nombre d'lments dans le vecteur rsultat n'est pas identique celui dans le
vecteur initial Retourner l'tape 1
Sinon on s'arrte.
1-b) Exemple
V VT
Au dpart 10 15 -1 7
Phase 1 10 15 15 7 -1
Phase 2 10 15 15 15 -1 7
Phase 3 15 15 15 15 -1 7 10
Phase 4 15 15 15 15 -1 7 10 15
Schma de l'algorithme
ALGORITHME TRI_SELECTION
CONST Bi = 1
Bs = 10
N, i, j, indmin : entier
DEBUT
{Chargement du vecteur V}
{Recherche du maximum}
MAXV[1]
Pour i de 2 N
FAIRE
MAXV[i]
FINSI
FINFAIRE
{Recherche du minimum}
MIN V[1]
indmin 1
Pour j de 2 N faire
MINV[j]
Indmin j
Fin si
Fin Faire
VT[i] MIN
V[indmin] MAX
Fin Faire
VT[N] MAX
FIN
1 i N
On a donc :
I=1
(V[1] non trait, V[1]<= V[2], V[2..N] tri) donc V[1..N] tri
I>1
Pour augmenter le sous-vecteur V[i+1..n] d'un lment, il suffit de chercher le plus grand
lment contenu dans le sous-vecteur V[1..i] et de placer cet lment en position i.
Schma de l'algorithme
ALGORITHME SLECTION_PERMUTATION
CONST Bi = 1
Bs = 10
N, i, j : entier
DEBUT
{Chargement du vecteur V}
Pour i de N 2 Faire
indmax 1
Pour j de 2 i
FAIRE
indmax i
FIN SI
FIN FAIRE
Aux V[indmax]
V[indmax] V[i]
V[i] Aux
Fin Si
Fin Faire
1 i N
On a donc :
On a deux cas :
I=1
(V[1] non trait, V[1]<= V[2], V[2..N] tri) donc V[1..N] tri
I>1
Pour augmenter le sous-vecteur V[i+1..n] d'un lment, il suffit de chercher le plus grand
lment contenu dans le sous-vecteur V[1..i] et de placer cet lment en position i.
On parcourt le sous-vecteur V[1..i] de gauche droite et, chaque fois qu'il y a deux lments
conscutifs qui ne sont pas dans l'ordre, on les permute. Cette opration permet d'obtenir en
fin du iime parcours le plus grand lment plac en position i, et les lments aprs cette
position sont ordonns.
Schma de l'algorithme
ALGORITHME TRI_BULLE1
CONST N= 10
N, i, j : entier
AUX : rel
DEBUT
{Chargement du vecteur}
POUR j de 1 i FAIRE
SI V[j]>V[j+1] ALORS
AUX V[j]
V[j] V[j+1]
V[j+1] AUX
FIN SI
FIN FAIRE
FIN FAIRE
FIN
Application
2 2 -1 3 0 1
1 -1 2 5 13 15
Que remarquez-vous ?
ALGORITHME TRI_BULLE1
CONST N= 10
N, i, j : entier
AUX : rel
DEBUT
{Chargement du vecteur}
iN
atonpermut vrai
j1
atonpermut faux
DEBUT
AUXV[J+1]
V[J+1] V[J]
V[J] AUX
FIN SI
atonpermutvrai
FIN
jj+1
FIN
ii-1
FIN
FIN
POUR j de 1 i FAIRE
SI V[j]>V[j+1] ALORS
AUX V[j]
V[j] V[j+1]
V[j+1] AUX
FIN SI
FIN FAIRE
FIN FAIRE
FIN