Documente Academic
Documente Profesional
Documente Cultură
A. Moussa
amoussa@in2p3.fr
Anne universitaire
2014-2015
Algorithmique
1 Introduction lAlgorithmique
1.1 Introduction . . . . . . . . . . . . . . . . .
1.2 Variables et constantes . . . . . . . . . . .
1.2.1 Variables . . . . . . . . . . . . . .
1.2.2 Constantes . . . . . . . . . . . . .
1.2.3 Type de variables . . . . . . . . . .
1.3 Instructions . . . . . . . . . . . . . . . . .
1.3.1 Instructions de lecture et dcriture
1.3.2 Affectation . . . . . . . . . . . . .
1.4 Structure dun algorithme . . . . . . . . .
2 Les structures de contrle
2.1 Instructions conditionnelles . . .
2.2 Instructions de rptition . . . .
2.2.1 La boucle tant_que . . .
2.2.2 La boucle pour . . . . . .
2.2.3 La boucle faire tant_que
2.3 Exercices . . . . . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
3
3
3
3
4
4
6
6
6
6
.
.
.
.
.
.
7
7
8
8
9
10
10
Premire partie
Algorithmique
Chapitre 1
Introduction lAlgorithmique
1.1
Introduction
Lcriture dun programme dans un langage de programmation nest que ltape finale dun dveloppement
qui se droule en trois phases : Lanalyse, lalgorithme et la programmation.
Analyse : Le but de tout dveloppement est de fournir une solution informatique un problme donn.
Ltape danalyse tend cerner compltement le sujet et apporter des solutions aux problmes dvoils par
ltude. Lanalyse conditionne le dveloppement futur, car ce sont les solutions proposes cette tape qui
seront programmes, ainsi une mauvaise analyse produira un logiciel mdiocre ou qui ne rpondra pas aux
attentes initiales quelque soit la qualit de lalgorithme ou de la programmation.
Algorithme : Le rle de lalgorithme est avant tout dorganiser et de structurer lensemble des solutions
apportes par lanalyse pour aboutir la solution globale. Il doit surtout prsenter la logique aboutissant
au rsultat final et tre dissoci de lesprit technique des langages de programmation. Il est gnralement
prsent par un langage simplifi (pseudo-langage). Historiquement, plusieurs types de notations ont reprsent des algorithmes. Il y a eu notamment une reprsentation graphique, avec des carrs, des losanges,
etc. quon appelait des organigrammes. Aujourdhui, cette reprsentation est quasiment abandonne, elle est
remplace par une srie de conventions appele pseudocode , qui ressemble un langage de programmation authentique dont on aurait vacu la plupart des problmes de syntaxe. Ce pseudo-code nest pas un
langage normalis (donc il est susceptible de varier lgrement dun livre un autre). Cest bien normal : le
pseudo-code, encore une fois, est purement conventionnel, aucune machine nest cense le reconnatre. Bien
que ce langage soit librement choisi par le dveloppeur, il respecte certaines rgles et conventions usuelles
qui seront dcrite dans ce cours.
Implmentation (programmation) : Une fois lalgorithme est dcrit, il faut le traduire en un programme source. Cest--dire crire dans un fichier texte la traduction de lalgorithme en un langage de
programmation. Le choix du langage dimplmentation se fait en fonction du domaine dapplication et aux
contraintes lies lalgorithme. En effet les langages de programmation sont fait pour rpondre des besoins spcifiques, par exemple : Java est conu pour le dveloppement web, C et C++ excellent dans les
applications systme et rseau, et Fortran ddi au calcul scientifique.
1.2
1.2.1
Variables et constantes
Variables
Un programme informatique a besoin en permanence de stocker provisoirement des valeurs. Il peut sagir
de donnes issues du disque dur, entres par lutilisateur au clavier, des trames rseau, un fichier. . .etc.
Ces donnes peuvent tre de nimporte quels types (entier, rel, textes . . .). Pour stocker ces donnes on
utilise des variables.
3
Exemple
On considre par exemple lnonc suivant : crire lalgorithme qui demande lutilisateur de saisir deux
valeurs entires et affiche le rsultat de leur somme.
On remarque que le programme aura besoin de deux valeurs que lutilisateur doit fournir. Ces deux valeurs,
vont donner naissance donc deux variables. Si on suppose que nous aurons besoin de la somme calcule par
le programme pour dautres traitements (par exemple, tester si la somme est suprieure 10 puis afficher
"valid" si oui, et "non valid" dans le cas contraire), nous aurons alors la possibilit dutiliser une troisime
variable pour stocker le rsultat de la somme.
Une variable est caractrise par un nom (tiqute), un type (entier, caractre, rel. . .), une valeur et une
adresse. La valeur de la variable peut tre modifie au cours de lexcution de lalgorithme.
Pour pouvoir utiliser les variables il faut les dclarer en dbut de lalgorithme, cela aura pour consquence
de rserver un espace dans la mmoire.
Syntaxe
Dclarations :
Variables Var1, Var2,Var3...,VarN : TypeVariable ;
Exemple
Dclarations :
compteur : Entier;
1.2.2
Constantes
Une constante est une variable dont la valeur reste inchange durant le droulement dun algorithme, le
type dune constante dcoule de sa valeur.
Syntaxe
Constantes NomConstante = Valeur ;
Exemple
Constantes Pi = 3.141559;
1.2.3
Type de variables
Nous allons examiner les types de base appels aussi types primitifs, dfinis et utilisables dans le langage
algorithmique : les entiers, les rels, les caractres, les chanes et les boolens.
ENSAH-A. MOUSSA
1.3
Instructions
Les instructions sont les actions excutables par le processeur de la machine programmable.
1.3.1
1.3.2
Affectation
En algorithmique, on appel lopration qui consiste donner une valeur une variable affectation et il
est reprsent par une flche. Ainsi lopration suivante a 3 donne la valeur 3 la variable a.
La variable a doit tre de type Entier (par ce que 3 est un entier). Si a a t dfini dans un autre
type, cette instruction provoquera une erreur.
1.4
Programme Nom_Programme
Dclarations
Constantes const1 = valeur1 ; const2 = valeur2 ;... ; constN = valeurN;
Variables NomVar1, NomVar2, NomVar3 ..., NomVarN : TypeVariable ;
Dbut
Instruction1;
Instruction2;
...
InstructionN;
Fin
Les lignes entre Dbut et Fin reprsente le corps de lalgorithme.
ENSAH-A. MOUSSA
Chapitre 2
Instructions conditionnelles
Un algorithme est constitu dune suite dinstructions qui sexcutent les unes aprs les autres de la
premire la dernire. Linstruction conditionnelle nous autorise dsormais concevoir un algorithme qui
nexcutera pas certains blocs dinstructions.
Syntaxe
Si (Condition) alors
{
instruction11 ;
instruction12 ;
...
instruction1N ;
}
Sinon
{
instruction21 ;
instruction22 ;
...
instruction2N ;
}
Les instructions entre accolades forment un bloc dinstructions.
Exemple
Lalgorithme suivant permet de rsoudre lquation ax + b = 0.
Programme Prog_Equation
Dclarations
Variables a,b : Rel ;
Dbut
Ecrire ("Entrer a :") ;
Lire(a) ;
Ecrire ("Entrer b :") ;
Lire(b) ;
Si(a=0) alors
{
si(b=0)
7
Remarque
Dans le cas o le bloc dinstructions est constitu dune seule instruction on peut omettre les accolades :
Si (Condition) alors
instruction1 ;
Sinon
instruction2 ;
2.2
Instructions de rptition
Les instructions de rptition, appeles boucles, permet dexcuter plusieurs fois conscutives un mme
bloc dinstructions. La rptition seffectue tant que la valeur de lexpression boolenne est gale Vrai.
2.2.1
La boucle tant_que
Syntaxe
tant_que (Condition) faire
{
instruction1 ;
instruction2 ;
...
instructionN ;
}
ENSAH-A. MOUSSA
2.2.2
La boucle pour
Cette boucle est frquemment utilise en programmation pour ritrer une excution un nombre de fois
connu lavance, elle est trs utilise avec les tableaux puisque on connait le nombre dlments quils
contiennent.
Syntaxe
pour compteur n jusqu m faire
{
instruction1 ;
instruction2 ;
...
instructionN ;
}
Exemple
Lalgorithme suivant permet de calculer le factoriel dun entier (N ! = 1 2 3 . . . N ) :
Programme Prog_Factoriel
Dclarations
Variables produit, i ,n : Entier ;
Dbut
Ecrire ("Entrer un entier positif :") ;
Lire(n) ;
produit 1 ;
pour i 2 jusqu n faire
{
produit produit * i ;
}
Ecrire ("Le factoriel de ", n , " est : ", produit ) ;
Fin
ENSAH-A. MOUSSA
2.2.3
La boucle faire tant_que effectue lvaluation de la condition boolenne aprs avoir effectu la premire
itration de la boucle.
Syntaxe
faire
{
instruction1 ;
instruction2 ;
...
instructionN ;
} tant_que (Condition)
Exemple
Programme FaireTantQue
Dclarations
variables N : Entier ;
Dbut
faire
{
crire ("Entrer un entier entre 1 et 10 : ") ;
Lire(N)
} tant_que(N < 1 OU N > 10);
crire(N);
Fin
2.3
Exercices
1. crire un algorithme qui demande lge dun enfant lutilisateur. Ensuite, il linforme de sa catgorie :
"Poussin" de 6 7 ans
"Pupille" de 8 9 ans
"Minime" de 10 11 ans
"Cadet" aprs 12 ans
2. crire un algorithme qui affiche lcran les entiers de 1 10 en utilisant les boucles tant_que, pour
et faire tant_que.
3. crire un algorithme qui lit un entier au clavier et ensuite affiche la table de multiplication de ce
nombre. Par exemple si lutilisateur entre lentier 5 :
Table de 5 :
5 x 1 = 5
5 x 2 = 10
5 x 3 = 15
...
5 x 10 = 50
ENSAH-A. MOUSSA
10