Beruflich Dokumente
Kultur Dokumente
Introduction
Le nom algorithme vient dun mathmaticien arabe Abu Ja Far Mohammed Ibn
ms Al-Kha-Rizme (Bagdad, vers 780 850 ). Mais la notion dalgorithme est plus
ancienne. Dans lantiquit par exemple, lalgorithme dEuclide (300 avant J-C) permettait de
trouver les PGCD (Plus Grand Commun Diviseur) :
PGCD (42,63) = 21
42/21 = 2
63/21 = 3
La notion dalgorithme est indpendante de celle dordinateur.
Dfinition : Un algorithme est Une suite finie dinstructions qui dcrit un traitement
sur un nombre fini de donnes structures, et qui doit se terminer aprs un nombre fini
doprations pour donner un rsultat.
Larchitecture de lalgorithme doit tre rflchie, selon une dcomposition du
problme en sous problmes.
Pour comprendre :
Pour faire un gratin dendives au jambon (pour 4 personnes)
- 4 endives
- un plat en pyrex
- 4 tranches de jambon
- du gruyre
- ingrdients pour une bchamel
-
Certaines tapes devraient tre dtailles (*), mais pour quun algorithme soit lisible,
il ne faut pas tout crire dun coup ( par exemple : aller acheter du jambon cher lpicier, sil
est fermer aller au supermarch, etc. )
II.
Action DureDeVol
/* Demande lheure et la minute de dpart et lheure et la minute darrive
dun avion, puis crit la dure de vol. On suppose que le dpart et larrive ont
lieu le mme jour et quil ny a pas de dcalage horaire. */
Spcification
Que fait le
programme ?
lexique
hd, md, /*heure & minute de dpart */
ha, ma, /* heure & minute darrive */
ht, mt, /* heure et minute de la dure du trajet */
cd, ca: /* conversion en minutes des horaires de dpart & darrive */
entiers
dbut
lire (hd, md, ha, ma)
cd 60 x hd + md /* est le symbole daffectation */
ca 60 x ha + ma
mt ca cd /*mt contient la dure du voyage en minutes */
ht mt div 60 /* division entire ou euclidienne */
mt mt mod 60 /* donne le reste de la division entire */
crire (ht, mt)
Ralisation
Comment le
fait-il ?
fin
Les spcifications sont trs importantes pour les personnes susceptibles de reprendre le
programme, par exemple pour linclure dans un autre programme plus complexe.
Lcriture dun algorithme est assez libre. On nest pas oblig de tout crire, par
exemple en ce qui concerne les interactions utilisateur / machine. Dans le programme, il faut
crire ces instructions pour que lutilisateur comprenne.
III.
Les instructions
1. Laffectation
2. Lecture et criture
Pour que lordinateur communique avec lutilisateur :
- lecture : sur le clavier (ou dans un fichier, )
- criture : sur lcran ( ou fichiers, imprimante, )
lire ( <nom de variable > )
Range dans la variable la valeur que lutilisateur tape au clavier.
Exemple :
lire ( < var1 >, < var2 >, < var3 >, , < var n > )
Exemples :
Ecrire ( 3 )
Ecrire ( x ) /* si x est une variable */
Ecrire ( Bonjour )
Ecrire ( 3x 7 )
Ecrire ( Bonjour je mappelle , mon_nom, jai, mon_age, ans )
Squence dinstructions
lire ( x, y )
y y +2
crire ( x y )
ou
lire ( x, y ) ; y y+2 ; crire ( x y )
Bloc dinstructions
dbut
lire (x)
yy+2
crire ( x y )
fin
On peut remplacer dbut et fin par des accolades { }.
4. Instructions conditionnelles
Si < expression boolenne >
Alors < instruction ou bloc >
Sinon < instruction ou bloc >
Une expression boolenne est une expression dont la valeur est soit VRAI soit FAUX.
Exemple :
Si x mod 2 = 0
Alors crire ( nombre pair)
Sinon crire ( nombre impair)
Si lexpression est VRAIE, excute le alors puis passe linstruction suivante. Si elle
est FAUSSE, excute le sinon puis passe linstruction suivante.
Si < expression boolenne >
Alors < instruction ou bloc >
Si lexpression est VRAIE, excute le alors puis passe linstruction suivante, sinon
passe directement linstruction suivante.
Exemple :
Si x < 0
Alors x -x
Ecrire (x)
Si x < 0
Alors
yx+2
x-x
Ecrire (x)
Il faut crire :
Si x < 0
Alors {
yx+2
x-x}
Ecrire (x)
Mardi 14 septembre 2004
selon le cas
Si a = 0 alors
Sinon si a = 1 alors
Sinon si a = 2 alors
Sinon
Selon le cas permet de simplifier la syntaxe :
Selon le cas a
a=0:
a=1:
a=2:
Sinon
Syntaxe gnrale :
Selon le cas < nom de variable >
< expression boolenne sur la variable > : < instruction ou bloc >
< expression boolenne sur la variable > : < instruction ou bloc >
< expression boolenne sur la variable > : < instruction ou bloc >
5. Itrations
Exemple : /* sans itration */
Action TableDeMultiplication
Lexique
n : entier
Dbut
Lire (n)
Ecrire ( 1 x, n , = , n )
Ecrire ( 2 x, n , = , 2 x n )
Ecrire ( 3 x, n , = , 3 x n )
Ecrire ( 10 x, n , = , 10 x n )
Fin
Problme : Si on veut crire jusqu 1000 x n, le programme devient trs long.
On fait une itration ( ou boucle ) qui permet de faire une mme instruction en
changeant une variable chaque tour de boucle
La boucle pour
Il en existe deux :
1. Tant que < expression boolenne >
Faire < instruction ou bloc >
2. Faire < instruction ou bloc >
Tant que < expression boolenne >
La boucle 1. : (*) Regarde la valeur de lexpression
Si elle est VRAIE, excute linstruction ou le bloc et revient (*)
Sinon, passe linstruction suivante
La boucle 2. : (*) Excute linstruction ou le bloc, puis
Si lexpression a pour valeur VRAI, revient en (*)
Sinon passe linstruction suivante
Dans la version 2, linstruction (ou bloc) est excute au moins une fois, ce qui nest
pas le cas dans la version 1.
Exemples :
- Tables de multiplication :
lire (x)
i1
tant que i 10 faire
{
crire (i, *, x, =, i * x)
ii+1
}
- /* Nombre de fois quun nombre entier est divisible par 2*/
lire (x)
compteur 0
tant que n mod 2 = 0 faire
{
n n div 2
compteur compteur +1
}
crire (compteur)