Vous êtes sur la page 1sur 86

Cours:

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

??

Je veux informatiser ce problme et le rendre exploitable


travers mon ordinateur. Quest ce que je dois faire ?

Informatisation dun problme

nonc non prcis : Problme informel Spcification nonc prcis : Problme formel Analyse

Algorithme
Programmation Langage de programmation : Pascal,.. Compilation Excutable du programme Excution Rsultat

Algorithme

Dfinition : Encyclopdie Universalis

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 :

Un nouvel ensemble dinstructions non excutables directement par la machine

Compilateur

Dfinition : On appelle compilateur tout programme spcial qui permet davoir un programme excutable partir dun programme source:

Le programme ainsi obtenu est appel

programme Objet

Structure gnrale dun algorithme

Titre du Problme
Dclaration des Constantes

Dclaration des Objets

Dclaration des Variables

Dclaration des Tableaux


Dclaration des Procdures et Fonctions

Dbut
Manipulation FIN Actions

Structure gnrale dun algorithme

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.

Dclaration des Objets

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 et Les Variables

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

Type Chane de caractres

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

Nom, Catgorie : Caractre

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

Autres objets dclarer

Objets : Type Tableau


Un tableau permet de reprsenter un ensemble de

valeurs ayant des proprits communes et appartenant toutes


au mme type. Ces variables sont identifies par un mme nom mais un numro de repre(indice) pour chacun.

Autres objets dclarer

Les Fonctions et Les Procdures


Ce sont des sous-programmes auxquels on peut faire rfrence lintrieur dun programme . Ils sont conus pour viter les rptitions et pour dcouper des programmes jugs trop longs; ce qui facilite la lisibilit du programme principal.

Manipulation des Objets

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 Structure de la partie manipulation

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

Les instructions dun Algorithme

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 de dialogue Homme-Machine ;

Instructions daffectation ;
Instructions structure alternative ; Instructions structure rptitive. Etc

Instructions de dialogue Homme-Machine

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 )

crire ( Saisissez la valeur de b )


crire ( Saisissez les valeurs de a et b ) crire (Le rsultat trouv est :, r ) crire (r)

Instruction Homme-Machine

La Saisie des informations:


Pour indiquer dans un algorithme que telle donne doit tre lue par le systme, on utilise linstruction lire qui obit la syntaxe suivante : Lire(Variable) Exemple :
crire ( Saisissez la valeur de a ) Lire(a)

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

Remarques sur les constantes et les variables

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: Entier C,B : Rel D : caractre E : Boolen

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

tats de la mmoire lors de lexcution du programme

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

4.5 22.5 Amine

4.5 22.5 Amine Faux

Exercice

nonc:
crire lalgorithme permettant le calcul de la surface dun cercle connaissant son rayon :

Surface = * Rayon2 Sortie :


La Surface calcule

Entre :
La valeur du rayon

Manipulation

Solution

Titre : Surface dun cercle Dclaration : Constante Pi=3.14 Variable Rayon : Entier Variable Surface : Rel

* Donne dentre* * Donne de sortie*

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

daffaire ralis par mois.

Ce quil faut faire

- Analyse du problme Recenser les donnes dont on dispose, celles quon cherche produire

Choisir les actions utiliser pour rsoudre le problme


- Prsentation de lalgorithme * Dclarer toutes les donnes utilises (variables, constantes, types) * Organiser les actions * Prsenter les rsultats

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

Instructions structure alternative (1)

Les conditions :

On appelle condition simple toute expression de la forme :

Variable 1

Oprateur Variable 2

Instructions structure alternative (2)


i) Les oprateurs Arithmtiques : Oprateur Signification

+
*

Addition
Soustraction Multiplication Division Modulo : le reste de la division de 2 valeurs entires Division entire

/
% ou mod div

Instructions structure alternative (3)

ii) Les oprateurs de Comparaison :


Pour exprimer les conditions, on utilise les oprateurs conditionnels suivants :

Oprateur

Signification
gal Infrieur Suprieur Infrieur ou gal

= < > <= >= <>

Suprieur ou gal diffrent

Instructions structure alternative (4)

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

Instructions structure alternative (5)


Les " tables de vrit "
A B A et B A ou B Non A

VRAI
VRAI FAUX FAUX

VRAI
FAUX VRAI FAUX

VRAI
FAUX FAUX FAUX

VRAI
VRAI VRAI FAUX

FAUX
FAUX VRAI VRAI

Instructions structure alternative (6)

Exemple :

Expression
(4 <7) ET (9>0)

Rsultat Vrai

(1 < 0) OU (1<>1)
Non(13.4 < 15)

Faux
Faux

Instructions structure alternative (7)


Priorits des oprateurs

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

Instructions structure alternative (8)


Oprateurs et variables:

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

Instructions structure alternative (9)

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

Instructions structure alternative (10)

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

Instructions structure alternative (12)

Exercice :
crire lalgorithme qui permet de calculer le maximum de deux entiers quelconques.

Instructions structure alternative (13)


Solution :
Titre : Maximum Variable a ,b, max : entier Dbut crire ('Saisir deux entiers a et b ') Lire(a, b) Si (a > b) alors max a Sinon max b Finsi crire ('le maximum de ' , a , ' et de ' , b, ' est : ' , max) Fin

Instructions structure alternative (14)

Exercice :

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 5% du chiffre daffaire ralis par mois si ce chiffre est < 30000 et de 10 % dans le cas contraire .

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

Instructions structure alternative (15)

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

crire lalgorithme qui permet de dterminer le salaire


mensuel.

Algorithme

Suite de lalgorithme

Dterminer la suite de lalgorithme comme exercice

Instructions structure alternative (16)

Linstruction Suivant Cas :


Linstruction Suivant cas constitue une structure alternative la forme en bloc [Si Alors Sinon] et permet de formuler de manire plus simple le choix du groupe dinstructions.

Instructions structure alternative (17)

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

Instructions structure alternative (18)

Exercice :

crire lalgorithme qui permet de dterminer le nombre de jours dun mois dune anne donne

Instructions structure alternative (19)

.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

Instructions structure alternative (20)

Exercice :
Un club de sport dsire automatiser sa gestion. Les tarifs annuels dinscription sont dfinis ainsi :

De 0 3 ans ne sont pas autoriss sinscrire


De 3 6 ans : gratuit De 6 12 ans: 1000 DHS De 12 26 ans : 1500 DHS Plus de 26 ans : 2000 DHS

Instructions structure alternative (21)


.Reste de lAlgorithme

Solution en classe

Instructions structure rptitive (1)

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

Instructions structure rptitive (2)


Boucle Tant que Faire Linstruction Tant que : On utilise cette instruction pour excuter des actions tant quune condition est ralise.

Syntaxe :

<initialisation>
Tant que Condition Faire

<bloc de traitement> <bloc de contrle>


Fin tant que

Action

Instructions structure rptitive (2)


Boucle Tant que Faire

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.

Instructions structure rptitive (3)


Boucle Tant que Faire

Solution de lexercice prcdent : Variable i : Entier


DEBUT i 0 * Initialisation * Tant que (i < 300) Faire crire (' Bonjour tout le monde ') i i+1 Fin tant que FIN

Instructions structure rptitive (4)


Boucle Tant que Faire

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

Instructions structure rptitive (5)


Boucle Tant que Faire
Exemple 1: Dans cet algorithme combien de fois la boucle est- elle excute ?

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

i = variable intermdiaire = compteur i i+1 = incrmentation du compteur

Instructions structure rptitive (6)


Boucle Tant que Faire
Exemple 2: Dans cet algorithme combien de fois la boucle est- elle excute ?

Titre : Boucle2 Variable n : Entier Dbut n 15 Tant Que (n<>0) faire crire (n) n n-2 Fin Tant que Fin

Instructions structure rptitive (7)


Boucle Faire jusqu

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

Instructions structure rptitive (8)


Boucle Faire jusqu

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.

Instructions structure rptitive (9)


Boucle Faire jusqu

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 ?

Instructions structure rptitive (10)


Boucle Faire jusqu

Exemple
Titre : Boucle3 Variable i , y : Entier Dbut i y0 faire i i+1 y y+i crire (' y = ' , y) Jusqu (i = 7) Fin

Donner les valeurs de y

Instructions structure rptitive (11)


Boucle Faire jusqu Exercice :

crire un algorithme permettant de calculer, pour un entier N> 0, la somme :

SN = 1 + 2 + 3 + + N

Instructions structure rptitive (12)


Boucle Faire jusqu Solution :

exercice corriger en classe

Instructions structure rptitive (13)


Boucle Faire jusqu Exercice :

crire un algorithme permettant de calculer la somme :

Sn = 1 + 1/2 + 1/3 + + 1/n

Instructions structure rptitive (14)


Boucle Pour

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

Instructions structure rptitive (15)


Boucle Pour

Exercice :

crire un algorithme permettant le calcul du factoriel dun entier N > 0 donn : N !

Instructions structure rptitive (16)


Solution :

En classe

Instructions structure rptitive (17)


Boucle Pour Exercice :

crire lalgorithme permettant de calculer la moyenne des notes de N tudiants

Instructions structure rptitive (18)


Solution : Titre : Moyenne Variable N, i : Entier note, S, Moy : Rel DEBUT crire (' Saisir le nombre dtudiants: ') Lire (N) S 0 * initialisation de la boucle* i 0 Pour i 1 N faire crire (' Saisir la note de lEtudiant ' , i , ' : ') Lire (note) S S + note Fin Pour Moy S/N crire (' La moyenne est : ', Moy) FIN

Instructions structure rptitive (19)


Boucle Pour Exercice
crire un algorithme permettant dafficher les lettres de lalphabet.

Solution :

Titre : alphabet
Variable lettre: Caractre * parcourir les lettres de l'alphabet* Dbut

Pour lettre ' a ' lettre = ' z ' Faire


crire(lettre) FinPour

Fin

Instructions structure rptitive (20)


Quelle rptition ou Boucle choisir ? Si nombre d'itrations connu Alors

Boucle Pour
Sinon Si itration excute au moins une fois Alors Boucle Faire jusqu Sinon

Boucle Tant que faire

Instructions structure rptitive (21)


Boucles Tant que faire et Faire jusqu
Remarques: Soient T une condition et R laction. Alors il y a quivalence entre les boucles Tant que faire et Faire jusqu. La syntaxe est la suivante:

Tant Que T faire R Fin Tant Que Faire R jusqu T

Si T alors Faire R Jusqu non(T) FinSi R Tant Que non(T) faire R Fin Tant Que

Et

Instructions structure rptitive (22)


Boucle Pour Exercice :

1- crire un algorithme permettant de dterminer le Nme

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

Instructions structure rptitive (23)


Solution :

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

Instructions structure rptitive (24)


Solution :

2) Le nombre ditrations inconnu : Boucle Faire jusqu


Variable Variable N : Entier a, b, S : Rel

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

Instructions structure rptitive (25)


Boucle Pour

Exercice :

crire un algorithme permettant de calculer la somme :

Sn(x) = 1/x + 2/x2 + 3 /x3 + + n /xn