Vous êtes sur la page 1sur 16

Cours dInformatique

IV- LALGORITHME
Historique
C'est un mathmaticien perse du 8me sicle, Al-Khawarizmi, qui a donn son nom
la notion d'algorithme. Son besoin tait de traduire un livre de mathmatiques venu
d'Inde pour que les rsultats et les mthodes exposs dans ce livre se rpandent dans
le monde arabe puis en Europe. Les rsultats devaient donc tre comprhensibles par
tout autre mathmaticien et les mthodes applicables, sans ambigut.
Par ailleurs, le titre de ce livre devait tre repris pour dsigner une branche des
mathmatiques, l'algbre.


Si l'origine du mot algorithme est trs ancienne, la notion mme d'algorithme l'est
plus encore : on la sait prsente chez les babyloniens, 1800 ans avant JC.

1.

Mr T.MESSAOUDI

Cours dInformatique

Introduction - Dfinitions
1.1. Quest-ce quun algorithme ?

Lalgorithmique est un ensemble de mthodes mettre en uvre pour rsoudre


thoriquement un problme donn.
Un algorithme est une suite dinstructions qui, une fois excute correctement,
conduit un rsultat donn.
Si lalgorithme est juste, le rsultat est le rsultat voulu et le problme est rsolu. Si
lalgorithme est faux, le rsultat est alatoire.
Un algorithme rdig correctement doit respecter les proprits suivantes :
il est constitu dun ensemble fini dinstructions ;
il doit toujours produire le rsultat en un nombre fini dtapes ;
lexcution dun algorithme ne requiert pas lintelligence de lhumain (sauf celle qui
est ncessaire comprendre les instructions).
Un algorithme nest pas unique. Lorsquun problme est traitable, il existe un
ensemble de solutions possibles plus ou moins optimales. Il existe aussi des problmes
qui ne sont pas solubles par un algorithme : Donner la valeur prcise de PI, Quels
seront les numros gagnants du prochain tirage du Loto ?... Enfin, il a t montr que
certains problmes mathmatiques ntaient fondamentalement pas traitables par le
biais dun algorithme et donc insolubles par des ordinateurs : Trouver un nombre parfait
impair, Trouver tous les nombres premiers jumeaux...

PRESENTATION
Considrons les tapes qui interviennent dans la rsolution problme quelconque :
1. concevoir une procdure qui une fois applique amnera une solution du
problme ;
Mr T.MESSAOUDI

Cours dInformatique

2. rsoudre effectivement le problme en appliquant cette mthode.


Le rsultat du premier point sera nomm un algorithme. Quant au deuxime point,
c'est--dire la mise en pratique de l'algorithme, nous l'appellerons un processus.
Ces notions sont trs rpandues dans la vie courante. Un algorithme peut par
exemple y prendre la forme :

d'une recette de cuisine,


d'un mode d'emploi,
d'une notice de montage,
d'une partition musicale,
d'un texte de loi,
d'un itinraire routier.

Dans le cas particulier de l'informatique, une tape supplmentaire vient se glisser


entre la conception de l'algorithme et sa ralisation travers un processus : l'algorithme
doit tre rendu comprhensible par la machine que nous allons utiliser pour rsoudre
effectivement le problme. Le rsultat de la traduction de l'algorithme dans un langage
connu de la machine est appel un programme.

1.2. A quoi sert un algorithme ?


Sa lecture et lexcution de ses instructions permet de rsoudre un problme donn
et den trouver la solution.
Deux types de problmes peuvent tre rsolus par un algorithme :
des problmes dcidables : la rponse la question pose se fait par oui ou par
non ;
des problmes calculables : la solution peut tre calcule en un nombre fini
dtapes. Il existe alors une solution pour chaque valeur dentres.
Certains problmes rentrent dans la catgorie des problmes numriques, qui
peuvent alors tre rsolus laide dun ordinateur et dun programme associ.
1.3. Comment aboutir un bon programme ?
La rsolution de problmes numriques par le biais dun ordinateur impose quelques
contraintes :
un ordinateur excute le travail quon lui a fourni (pas celui quon pense lui avoir
fourni) ;
un ordinateur ne connat pas les notions dambigut ;
un ordinateur nest pas dou dintelligence et ne peut donc pas interprter une
information. Il peut, par contre, il peut effectuer trs rapidement des oprations
arithmtiques et logiques sans jamais faire derreur.
Mais avant de se lancer dans lcriture dun programme, il est indispensable de fixer
ses ides laide dun algorithme, crit sur papier, en utilisant une mthode de
rsolution. Il restera alors la charge du programmeur de traduire cette suite
Mr T.MESSAOUDI

Cours dInformatique

dinstructions en un programme fonctionnel, ncessitant alors des connaissances en


programmation.
On obtient enfin un bon programme lorsque celui-ci fonctionne sans erreur et en
utilisant un minimum de ressources.
Il doit tre test et valid avec le plus grand nombre de donnes possibles.
Il doit tre protg contre toute mauvaise utilisation par lutilisateur.
1.4. Un exemple dalgorithme : la mthode dEuclide
Un des algorithmes les plus clbres est celui dEuclide, permettant de trouver le plus
grand dnominateur commun (PGCD) de deux nombres

Algorithme NomAlgorithme
Dbut
... actions
Fin
La premire ligne, appele profil donne essentiellement le nom de l'algorithme. On
trouve ensuite un dlimiteur de dbut puis les diffrentes actions composant
l'algorithme et enfin un dlimiteur de fin.

Mr T.MESSAOUDI

Cours dInformatique

Ainsi, l'algorithme suivant est valide :


Algorithme Bonjour
Dbut
crire('Hello world !!!')
ALaLigne
Fin
Variables et types
Une variable est constitue d'un nom et d'un contenu, ce contenu tant d'un certain
type. Les types diffrents : boolen, caractre, chane de caractres, nombre entier,
nombre rel, etc.
Pour la clart de l'algorithme, il peut tre intressant de dclarer les variables
utilises et leur type au tout dbut. Quand l'algorithme sera traduit en programme cette
dclaration aura d'autres avantages : rservation de l'espace mmoire correspondant
au type, possibilit de vrifier le programme du point de vue de la cohrence des types,
etc.
Affectation souvent symbolise par une flche vers la gauche ().
Expressions, valuation, etc.

Mr T.MESSAOUDI

Cours dInformatique

Nouveau patron d'un algorithme


Nous allons maintenant prciser les variables utilises par l'algorithme et leurs types,
en distinguant les paramtres externes et les variables internes l'algorithme. Ainsi, le
patron d'un algorithme devient
Algorithme NomAlgorithme (paramtres...)
Variable ...
Dbut
... actions
Fin

Mr T.MESSAOUDI

Cours dInformatique

Instructions conditionnelles et itratives


Le Si Alors Sinon va permettre de conditionner l'excution de certaines instructions.
Le rle des boucles est d'itrer un bloc d'instructions, soit un nombre prcis de fois,
soit relativement une condition.
Si Alors Sinon
Algorithme QueFaire
Dbut
Si malade
Alors
absentet
Sinon
AllerAutravail
Fin si
Fin
Boucle Fois
Fois 3 faire
Avancer
Fin Fois
Boucle Tant que et Rpter
Algorithme JusquAuMur
Dbut
Tant que Non(DevantMur) faire
Avancer
Fin tant que
Fin
Algorithme JusquAuMurVersionRpter
Dbut
Rpter
Avancer
jusqu' DevantMur
Fin
Boucle Pour
Algorithme CompteJusqueCent
Dbut
Pour i 1 100 faire
crire(i)
ALaLigne
Fin Pour
Fin
Mr T.MESSAOUDI

Cours dInformatique

Lorsque l'on sait exactement combien de fois on doit itrer un traitement, c'est
l'utilisation de cette boucle qui doit tre privilgie.
Exemple,
Algorithme DessineEtoiles (n : entier)
Variable i : entier
Dbut
Pour i 1 n faire
crire('*')
Fin pour
Fin
Comparaisons des boucles pour un problme simple
On reprend l'exemple prcdent de la boucle pour
Algorithme CompteJusqueCentVersionPour
Variable i : entier
Dbut
Pour i 1 100 faire
crire(i)
ALaLigne
Fin Pour
Fin
Et on crit des algorithmes qui produisent la mme sortie (les nombres de 1 100)
mais en utilisant les diffrentes boucles.
D'abord, avec la boucle tant que (il faut initialiser i avant la boucle, et l'augmenter de
1 chaque passage) :
Algorithme CompteJusqueCentVersionTQ
Variable i : entier
Dbut
i1
Tant que (i 100) faire
crire(i)
ALaLigne
i i+1
Fin tant que
Fin
De mme avec la boucle rpter (noter que la condition d'arrt est ici la ngation de
la condition du tant que):
Algorithme CompteJusqueCentVersionRepeter
Variable i : entier
Dbut
i1
Rpter
crire(i)
Mr T.MESSAOUDI

Cours dInformatique

ALaLigne
i i+1
Jusqu' (i > 100)
Fin
Enfin, en utilisant la rcursivit, on obtient :
Algorithme CompteJusqueCentRecursif (n : entier)
Dbut
Si (n 100)
Alors
crire(n)
ALaLigne
CompteJusqueCentRecursif(n+1)
Fin si
Fin
Pour obtenir une solution (qui fonctionne et sans perte de temps) au problme pos,
il faut employer une mthodologie de rsolution.
2.1. Etapes de rsolution
Deux phases de rsolution sont gnralement ncessaires :
La phase de rsolution (sur papier) o lon choisit lalgorithme le mieux adapt au
problme. Cette phase est subdivise en 5 tapes :
1. Comprhension du problme
2. Ebauche de solution
3. Liste des variables ncessaires, choix types et noms
4. Solution dtaille descriptive (algorithme)
5. Essais pas pas sur papier avec des donnes de test
La phase de mise en uvre (ou implantation) o lon choisit le langage dcriture.
Cette phase peut tre dcoupe en 3 tapes :
1. Traduction en langage de programmation
2. Ecriture du programme et correction syntaxique
3. Essais avec les mmes donnes de test
2.2. Reprsentation dun algorithme
La notion dalgorithme est utilise couramment dans la vie Ce sont une suite
dinstructions qui sont :
connues la fois par celui qui crit et celui qui excute lalgorithme. Elles sont donc
comprhensibles et non ambigus ;
elles contiennent linformation ncessaire suffisante
excutes squentiellement ;
adaptes au niveau de comprhension du destinataire.

Mr T.MESSAOUDI

Cours dInformatique

10

Il existe diffrents moyens de reprsenter un algorithme :


un texte descriptif en langage courant ;
des idogrammes ;
un ordinogramme (voir la mthode dEuclide) ;
des schmas ou photographies.
Afin de respecter les notions dcrites prcdemment, il est raisonnable :
dcrire une instruction par ligne ;
de respecter un dcalage progressif droite, appel aussi indentation.
2.3. Notions dalgorithmes numriques
Les algorithmes numriques sont ceux qui peuvent tre rsolus par des ordinateurs.
Les informations dentre sont des valeurs numriques. Les actions effectues sont des
oprations numriques ou logiques sur ces valeurs.
Deux paramtres interviennent dans la capacit dun ordinateur rsoudre rapidement
un problme donn :
la vitesse de calcul, directement lie la frquence de lhorloge de lordinateur ;
la quantit de mmoire.
Ces algorithmes travaillent sur des donnes, qui peuvent tre numriques, logiques ou
alphanumriques. Ces donnes ont une reprsentation en mmoire (encore appele
type : entier, flottant, caractre).
Diffrentes oprations peuvent tre effectues sur ces donnes. Le rsultat est stock
dans des variables (ayant un identificateur et un type). On parle alors daffectation.
La combinaison doprations et de donnes sappelle une expression.
Enfin, il existe des oprations dEntre/Sortie, permettant de communiquer avec le
systme.
2.4. Variables et donnes
Les variables sont les lments dun programme ayant la proprit de contenir des
valeurs susceptibles dvoluer au cours de lexcution. Les variables sont dfinies par :
un identifieur (nom de la variable) ;
un type de contenu.
Exemple : Dclaration de variables
Entier Date, A dfinie 2 entiers
Rel x,y dfinie 2 nombres rels
Caractre lettre dfinie un caractre
Les donnes dun programme sont les valeurs initiales des variables ainsi que les
constantes du programme. Les constantes ne peuvent pas tre modifies par le
programme au cours de son excution.
2.4.1 Identificateur de variables

Mr T.MESSAOUDI

Cours dInformatique

11

Les noms des variables doivent respecter certaines rgles de construction (diffrentes
selon le langage de programmation utilis). Les rgles portent gnralement sur les
points suivants :
nombre de caractres minimal et maximal autoris ;
majuscule/minuscule (respect de la casse) ;
prsence de chiffres autorise ainsi que leur position ;
mots interdits (rservs par le compilateur) ;
caractres interdits (espace par exemple) ;
...
2.4.2 Affectation de variables
Le changement du contenu peut seffectuer par une affectation simple. Selon le langage
utilis, plusieurs symboles peuvent tre utiliss : = , := , <- , etc. La variable ou le
rsultat de lexpression droite de ce symbole est affecte celle de gauche. Cette
rgle daffectation de droite gauche est respecte dans tous les langages de
programmation.
Exemple :
Affectation de variables
A = -3
B=A
C = "Bonjour"
D=A+B
2.4.3 Les tableaux
Ce sont des regroupements indexs de variables dun mme type. Gnralement pour
un tableau de X variables,
Lindex va de 0 X-1.
Exemple : Tableau de variables
Entier TAB[10]
TAB[0] = 1
TAB[2] = TAB[0]
3. Elments dun algorithme
On peut classer les instructions que lon peut effectuer dans un algorithme selon 4
classes :
les affectations et les oprations arithmtiques et logiques associes ;
les oprations dEntre/Sortie ;
les tests logiques, qui, associs des structures de contrle, permettent de changer
lordre des instructions ;
les boucles itratives sur des blocs dinstructions.
3.1. Les expressions logiques
Les expressions logiques (ou boolennes) sont des expressions qui sont soit
VRAIES soit FAUSSES linstant o lon procde leur valuation.
Mr T.MESSAOUDI

Cours dInformatique

12

Les variables logiques peuvent tre combines entre elles par des oprateurs
logiques pour former des fonctions logiques.
Les fonctions logiques peuvent galement tre le rsultat de tests sur des
valeurs numriques. Ces tests sont raliss par des oprateurs relationnels : Suprieur
(>), Infrieur (<), Suprieur ou gal (>=), Infrieur ou gal (<=), Egal), Diffrent ( !=).
Le test donne alors une valeur VRAIE si la relation est valide. Ces diffrentes
expressions logiques sont utilises comme condition logique (C.L.) dans les structures
de contrle.
Exemple : Conditions logiques
(4 > 3) est VRAIE
(2 != 3) est VRAIE
(5 > 9) est FAUSSE
3.2. Structures de contrle
Les structures de contrle permettent de changer lordre dexcution des instructions.
Deux catgories existent :
Lenchanement conditionnel, autorisant lexcution dun bloc dinstructions et la
structure de boucle permettant la rptition de lexcution dun bloc dinstructions.
3.2.1 Enchanement conditionnel
Il existe deux types de structures permettant le contrle de lexcution dun bloc
dinstructions : le branchement conditionnel et le choix multiple.
Branchement conditionnel La syntaxe est la suivante :
SI (condition logique - C.L.)
ALORS instruction_1
[ SINON instruction_2 ]
FIN SI
La branche SINON peut tre omise...

Mr T.MESSAOUDI

Cours dInformatique

13

Exemple
Chercher la plus grande de deux variables

Exemple :
Recherche du maximum de trois nombres

Choix multiple CHOIX (expression) PARMI (liste valeurs) liste instructions


Lexpression est un valeur numrique. Cette valeur numrique peut videmment tre le
rsultat dune opration.

Mr T.MESSAOUDI

Cours dInformatique

14

3.2.2 Structures itratives


Ces structures permettent lexcution dun bloc dinstructions de manire rpte. Elles
sont excutes :
soit un nombre dtermin de fois
soit avec un arrt sur lvolution dune condition logique.
TANT QUE (condition vraie) FAIRE instructions Dans cette structure, lvaluation de la
condition logique permet dentrer ou non dans la boucle dinstructions et de lexcuter
tant que la condition nest pas satisfaite.
Si la condition est FAUSSE ds le dpart, il ny a pas dexcution du bloc dinstructions.

FAIRE instruction JUSQUA (condition vraie) Dans cette structure, lvaluation de la


condition logique permet dexcuter nouveau le bloc dinstructions. Les itrations
sarrtent lorsque la condition devient VRAIE.
Si la condition est FAUSSE ds le dpart, le bloc dinstructions est effectu une fois.

Mr T.MESSAOUDI

Cours dInformatique

15

POUR indice VARIANT DE debut A fin PAR PAS DE increment FAIRE instructions
Cette structure de boucle permet lexcution dun bloc dinstructions un nombre de fois
connu lavance. Elle ncessite une variable de contrle (indice) dont le contenu prend
une nouvelle valeur (incrmentation) chaque tour de boucle.

Exemple : Remplissage dun tableau


Exercice
On considre le jeu suivant :
On lance un nombre N de fois un d ; si le rsultat est 6 on gagne sinon on perd.

On veut connatre le nombre de parties gagnes aprs N lancers de d.


Ecrire un programme qui simule ce jeu.
Analyse de la situation :
Lalgorithme :
Mr T.MESSAOUDI

Cours dInformatique

Variables :
N, nombre choisi par lutilisateur
G, le nombre de lancers gagnants
K, rsultat du lancer (compris entre 1 et 6)
Initialisation :
G=0
Saisir N
Pour I variant de 1 N
K prend une valeur alatoire comprise entre 1 et 6
Si K = 6 alors
G = G+1
Sortie
Affiche G
Exercice
La conversion de dcimal en binaire
Problmatique : conversion dcimale en binaire
Rsolution : divisions successives par 2
Donnes N : nombre entier dcimal convertir 2 : diviseur
Variables Q : le Quotient
R : le Reste
Algorithme structure rptitive

Algorithme structure itrative

Mr T.MESSAOUDI

16