Professional Documents
Culture Documents
Algorithmique
Hajji Zaher Mohammed
Mai 2012
Avant Propos
Certains voient, tort, dans l'ordinateur une machine pensante et intelligente, capable de rsoudre bien des problmes. 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 excuter.
Problme
2*x + 3 = 0 0*x + 0 = 0
10*x - 1= 0 0*x + 3 = 0
??
a*x + b = 0
??
nonc non prcis : Problme informel Spcification nonc prcis : Problme formel Analyse
Algorithme
Programmation Langage de programmation : Pascal,.. Compilation Excutable du programme Excution Rsultat
Algorithme
Un algorithme est une suite finie de rgles appliquer dans un ordre dtermin un nombre fini de donnes pour arriver, en un nombre fini d'tapes, un certain rsultat, et cela indpendamment des donnes
Algorithme
Dfinition :
Cest un pseudo-langage qui est conu pour rsoudre les problmes et applications sans aucune contrainte due aux langages de programmation et aux spcificits de la machine. Ce pseudo-langage sera ensuite traduit et cod dans le langage de programmation dsir.
Langage Assembleur
Dfinition :
Le langage Assembleur est un langage qui utilise des instructions sous forme symbolique (ADD, MOVE).
Lassembleur est li au microprocesseur, puisque cest le seul langage que le microprocesseur comprend.
Langage de programmation
Dfinition : On appelle langage de programmation tout ensemble fini de mots rservs qui permettent de traduire les instructions de lalgorithme afin de lexcuter par lordinateur.
Exemple :
Turbo Pascal, Cobol, Fortran, C, Delphi, Visual Basic (VB), C++, Java etc...
Programme source
Dfinition : Le programme source est le premier rsultat de la traduction dun algorithme en un langage volu :
Compilateur
Dfinition : On appelle compilateur tout programme spcial qui permet davoir un programme excutable partir dun programme source:
programme Objet
Titre du Problme
Dclaration des Constantes
Dbut
Manipulation FIN Actions
Dmarche suivre pour rsoudre un problme donn: Identifier les donnes du dpart (entres) et celle(s) quil faut obtenir (sorties); Structurer les donnes (variables ou constantes, type...); Rflchir pour dterminer les action ncessaires lobtention des rsultats ; Prsenter les rsultats.
Objet
Dfinition : Un objet est toute partie identifiable de linformation au cours dun traitement. Il est caractris par son nom, son type et sa valeur. Lensemble des objets manipuls par un algorithme est appel: environnement de cet algorithme. Remarque : Les objets manipuls par un ordinateur sont :
Les constantes
Dfinition : Les Constantes dsignent des rfrences des valeurs invariantes dans le programme Syntaxe de la dclaration :
Constante
Exemple :
Nom_Constante = Valeur
Constante
Pi = 3.14
Les variables
Dfinition :
Ce sont des rfrences (adresses mmoires) o vont tre stockes des valeurs variables. Les diffrentes valeurs dune rfrence vont appartenir au type de donnes auquel appartient la rfrence. Remarques :
1- Le nom dune variable suite de caractres qui permet didentifier
la variable dune manire unique dans un algorithme. 2- Il existe diffrents types de variables.
Type Entier
Dfinition : Cest lensemble des nombres entiers positifs ou ngatifs. Syntaxe de la dclaration : Variable variable1,variable2, : Entier
Exemple :
Variable
a et b sont, par exemple, a,b : Entier les coefficients de lquation : ax + b = 0
Type Rel
Dfinition : Cest lensemble des nombres rels, cest dire les nombres dcimaux sans limitation. Syntaxe de la dclaration : Variable Exemple : Variable x,y : Rel variable1,variable2, : Rel
Dfinition :
Cest une suite de caractres, cest dire des combinaisons de caractres (lettres, chiffres, symboles..).
Syntaxe de la dclaration :
Variable
Exemple :
variable1,variable2, : Caractre
Variable
Type Boolen
Dfinition : Il sagit des objets qui ne peuvent prendre que deux valeurs vrai ou faux.
Syntaxe de la dclaration :
Variable variable1,variable2, : Boolen
Exemple :
Variable Dcision : Boolen
Instruction et Action
Dfinition : On appelle instruction toute commande lmentaire que lon doit appliquer sur des objets pour avoir des sorties bien dfinies. Dfinition : Une action est un vnement qui change ltat dun objet dun tat initial donn un tat final dsir. Une action a une dure dexcution finie et un effet propre et bien dfini. Chaque action porte sur des objets sur lesquels elle sexcute : L'Action est une seule instruction ou un groupe dinstructions
La partie manipulation doit commencer par le mot DEBUT et se termine par le mot FIN :
DEBUT
Instruction 1 Instruction 2 . Action
.
Instruction n
FIN
La partie manipulation utilise les diffrents objets dclars dans la partie dclaration et leur applique des oprations afin de retourner le(s) rsultat(s) attendu(s) par le programmeur. Pour ce fait, il y a diffrentes actions, dites instructions, savoir :
Instructions daffectation ;
Instructions structure alternative ; Instructions structure rptitive. Etc
Laffichage des informations: Pour faire comprendre quil faut afficher des informations lcran, on utilise linstruction crire qui obit la syntaxe suivante : crire (Variable ou Message ) Exemples :
crire ( Saisissez la valeur de a )
Instruction Homme-Machine
Instruction daffectation
Dfinition: Cest le stockage dune valeur un endroit spcifique(variable). Pour affecter une valeur une variable, on crit : Variable
Exemple :
Variable valeur 1 + valeur 2
Valeur
Variable
Variable
valeur 1 * valeur 2
valeur + Variable1
Les variables sont des rfrences (adresses mmoires) o vont tre stockes des valeurs qui peuvent changer au cours de lexcution du programme. Les mmoires sont repres par des numros (pour lordinateur) ou des noms (pour le programmeur, qui a intrt choisir des noms significatifs).
Chaque fois quon procde une nouvelle affectation, lancien contenu de la mmoire est perdu et un nouveau contenu est plac dans la mmoire. Les constantes correspondent des zones mmoires dont le contenu ne peut pas varier. A octet n 52
01000001
Exercice
Quels rsultats produit lalgorithme suivant ? Les types de variables sont-ils corrects
Titre : Calcul Variable
Dclaration Manipulation
Dbut
A 30 B A * 2 crire('B=' , B) C
B
D
Fin
E (A > 40) Ou (C < B) crire('les valeurs obtenues sont : A = ' , A , 'B = ' ,B , ' C = ', C , ' D = ', D, ' E = ', E)
(B + A)/4
C / 5
Amine
Instruction
Aprs linstruction A 30 Aprs linstruction BA*2 Aprs linstruction C (B + A)/4 Aprs linstruction B C/5 Aprs linstruction D Amine' Aprs linstruction E (A > 40 ) Ou (C< B)
A
30 30
60
22.5
30
30 30 30
60
4.5 22.5
Exercice
nonc:
crire lalgorithme permettant le calcul de la surface dun cercle connaissant son rayon :
Entre :
La valeur du rayon
Manipulation
Solution
Titre : Surface dun cercle Dclaration : Constante Pi=3.14 Variable Rayon : Entier Variable Surface : Rel
Manipulation : DEBUT crire ( 'Saisir la valeur du rayon' ) Lire(Rayon) Surface Rayon * Rayon * Pi crire (' La Surface du cercle est : ', Surface) FIN
Exercice
Exemple :
crire lalgorithme qui permet de dterminer le salaire mensuel dun commercial sachant que ce salaire comporte un montant fixe de 4000 DHS et une commission qui reprsente 10% du chiffre
- Analyse du problme Recenser les donnes dont on dispose, celles quon cherche produire
Algorithme
Titre : Commission Dclaration : Constante M = 4000 Variable CA : Entier * Donne dentre* Com : Rel * Donne intermdiaire* Sal : Rel * Donne 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, ' en DHS ' ) FIN
Problme
crire un algorithme qui calcule la moyenne gnrale dun tudiant sachant que celle-ci se calcule de la manire suivante :
Moyenne = [ 3 * Note(Biologie) + 2* Note(Gologie) + Note(LCI)] / 6
Indication :
Entres: NB,NG,NLCI Algorithme
Sortie:
MG
Les conditions :
Variable 1
Oprateur Variable 2
+
*
Addition
Soustraction Multiplication Division Modulo : le reste de la division de 2 valeurs entires Division entire
/
% ou mod div
Oprateur
Signification
gal Infrieur Suprieur Infrieur ou gal
iii) Les oprateurs logiques de relation : On peut combiner des conditions laide des oprateurs logiques :
Oprateur
Et
Ou Non Ou = Xor
Signification
Et logique
Ou logique Ngation logique Ou exclusif
VRAI
VRAI FAUX FAUX
VRAI
FAUX VRAI FAUX
VRAI
FAUX FAUX FAUX
VRAI
VRAI VRAI FAUX
FAUX
FAUX VRAI VRAI
Exemple :
Expression
(4 <7) ET (9>0)
Rsultat Vrai
(1 < 0) OU (1<>1)
Non(13.4 < 15)
Faux
Faux
Priorit de *, / div et % par rapport + et 5 + 9 * 3 = 32 et non 42 5*9+3 = 48 et non 60 Pour les oprateurs de mme priorit, associativit partir de la gauche 15 / 5 * 3 = 9 et non 1 5 2 + 4 = 7 et non 1 On peut utiliser des parenthses pour changer lordre des oprations : 15 / (5 * 3) = 1 (5 + 9 ) * 3 = 42
Variables de type entier *, / , % , div , + et Variables de type Rel *, / , + et Variables de type caractre ou chane de caractres + , CONCAT , Suc, Pred Variables de type Boolen Les oprateurs logiques de relation : et, ou, non
Linstruction Si : Pour exprimer le fait que des instructions vont tre excutes dans un cas alors que dautres instructions peuvent tre excutes dans lautre cas, on utilise une structure alternative. Syntaxe : Si condition alors
Actions 1 [ Sinon Actions 2] Option Facultative
Finsi
Exemples :
Titre : Test 1 Variable x : entier Dbut crire ('Saisir un entier x ')
Titre : Test 2 Variable x : entier Dbut crire ('Saisir un entier x ') Lire (x)
Lire (x)
Si (x > 0) alors crire('x est un nombre positif ') Finsi
Si (x > 0) alors
crire (' x est un nombre positif ') Sinon crire (' x est un nombre ngatif ou nul') Finsi Fin
Fin
Exercice :
crire lalgorithme qui permet de calculer le maximum de deux entiers quelconques.
Exercice :
Algorithme
Suite de lalgorithme
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
Exercice :
Compliquons un peu lnonc: La commission est calcule de la manire suivante : Commission = 15% du CA quand CA > 100000 Commission = 10% du CA quand 30000 < CA < = 100000 Dans le cas contraire pas de commission
Algorithme
Suite de lalgorithme
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
Exercice :
crire lalgorithme qui permet de dterminer le nombre de jours dun mois dune anne donne
.Reste de lAlgorithme 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 FIN
Exercice :
Un club de sport dsire automatiser sa gestion. Les tarifs annuels dinscription sont dfinis ainsi :
Solution en classe
Problme : crire un algorithme permettant dafficher 300 fois le message : bonjour tout le monde.
Solution Classique :
DEBUT crire (' Bonjour tout le monde ') crire (' Bonjour tout le monde ') . . crire (' Bonjour tout le monde ') FIN 1 2 300
Syntaxe :
<initialisation>
Tant que Condition Faire
Action
Smantique : Si condition = T Tant que Valeur(T)=Vrai le bloc d'instructions R sera excut. 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 connat pas lavance le nombre d'itrations.
Exercice : Afficher tous les multiples de 9 infrieurs 485 Titre : Multiples de 9 Variable M, i : Entier *i: variable intermdiaire: 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 * incrmentation du compteur * M i * 9 Fin tant que FIN
Titre : Boucle1 Variable i , y : Entier Dbut i y0 Tant Que (i<7) faire i i+1 y y+i crire (' y = ' , y) Fin Tant que Fin
Titre : Boucle2 Variable n : Entier Dbut n 15 Tant Que (n<>0) faire crire (n) n n-2 Fin Tant que Fin
Linstruction Faire jusqu : On utilise cette instruction pour excuter des actions jusqu' ce que une condition soit remplie. Syntaxe :
<Initialisation> Faire <bloc de traitement> <bloc de progression > Jusqu Condition Action
Smantique : Si valeur(T)= Faux la boucle est nouveau excute. 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 dinstructions sera excut au moins une fois. La boucle nest pas INCONDITIONNELLE. On ne connat pas lavance le nombre ditrations.
Exemple
Titre : Boucle2 Variable i , y : Entier Dbut i y0 faire i i+1 y y+i crire (' y = ' , y) Jusqu (i <7) Fin
Valeurs de y ?
Exemple
Titre : Boucle3 Variable i , y : Entier Dbut i y0 faire i i+1 y y+i crire (' y = ' , y) Jusqu (i = 7) Fin
SN = 1 + 2 + 3 + + N
Linstruction Pour : La spcification de cette instruction cest quelle limite le nombre de fois o doit se rpter le bloc Action Syntaxe :
<Initialisation> Pour variable valeur1 valeur2 faire <Bloc de traitement> Fin Pour
La boucle est Inconditionnelle On connat priori le nombre d'itrations
Action
Exercice :
En classe
Solution :
Titre : alphabet
Variable lettre: Caractre * parcourir les lettres de l'alphabet* Dbut
Fin
Boucle Pour
Sinon Si itration excute au moins une fois Alors Boucle Faire jusqu Sinon
Si T alors Faire R Jusqu non(T) FinSi R Tant Que non(T) faire R Fin Tant Que
Et
terme dune suite numrique 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 dfinir le rang N et le terme correspondant de la suite tels que UN > 1000
1) Le nombre ditrations est connu : Boucle Pour Variable Variable N, i : Entier a, b, S : Rel
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 srie est : ', S ) FIN
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 srie est : ', S) crire (' Le rang est : ', N ) FIN
Exercice :