You are on page 1of 15

ALGORITHMIQUE ET PROGRAMMATION

I- INTRODUCTION
Le langage utilis par lordinateur pour traiter les informations est le langage binaire (constitu par
une suite de 0 et 1) directement comprhensible par la machine. Ce langage est appel : langage
machine.
Il est trs difficile lutilisateur de programmer en langage machine! cest pour"uoi des langages dis
#olus ont t crs (pascal! C! C$$! %asic! &a#a! '(thon)).
*n compilateur ou interprteur est ncessaire pour traduire un programme crit en un langage
#olu en langage machine.
II- DEFINITIONS
1- Langage
*n langage est un ensemble de mots cls (instructions ou fonction) et des rgles de s(nta+e "ui
permettent dcrire un programme e+cutable par lordinateur.
2-Programme
*n programme est une succession ordonne dinstructions dont la formulation et la s(nta+e
rpandent un langage dtermin et permet dobtenir de lordinateur le+cution dune t,che
prcise.
3- Algorithme
*n algorithme est une suite finie d-actions appli"uer dans un ordre dtermin sur des donnes
afin d-obtenir un rsultat en un temps fini.
Exemple
L-algorithme sui#ant dcrit l-usage d-un appareil tlphoni"ue pices de monnaie pour effectuer
une communication:
Dbut
.crocher l-appareil/
Insrer les pices ncessaires/
Composer le numro dsir/
Linterlocuteur dcroche lappareil
'arler/
0accrocher/
Fin
Remarque :
1n a une reprsentation de la rsolution du problme sous la forme dun algorithme. 2ais certains
cas nont pas t pr#us (numro occup)! do3 insuffisance de la solution.
Il est ncessaire de dtailler de dtailler les ordres lmentaires connus par la machine et pr#oir
toutes les #entualits. La machine ne peut pas inter#enir dans les cas non pr#us.
Reprsentation dun algorithme
*n algorithme peut 4tre reprsent de deu+ fa5ons :
a- Le pseudo-code:
Le pseudo6code est une reprsentation te+tuelle a#ec une srie de con#entions ressemblant
un langage de programmation (sans les problmes de s(nta+e)
plus prati"ue pour crire un algorithme
reprsentation largement utilise
CPGE-AGADIR -1- M.GUEROIHI
b- Organigramme :
*n organigramme est la reprsentation graphi"ue d-un algorithme.
.ans un organigramme les instructions sont reprsentes par des s(mboles graphi"ues normaliss "ui sont:
Smbo!e Instruction
DE"UT et FIN
LIRE et ECRIRE
TR#ITE$ENT ou C#LCUL
DECISION ou TEST
Re%oie
III- #L&ORIT'$I(UE :
Etapes de ralisation dun programme
La ralisation de programmes passe par lcriture dalgorithmes! .o3 lintr4t de l#!gorit)mi*ue
L-algorithmi"ue consiste conce#oir et mettre au point des algorithmes dcri#ant les solutions
d-un certain t(pe de problmes.
Exemple:
'roblme:
7 la #ente d-une marchandise! calculer le $ontant Net pa(er par le client en appli"uant un tau+
de T,# de -./ sur la marchandise connaissant son pri+ unitaire et la *uantit %endue.
- Analyse:
7nal(ser le problme et dgager les composantes sui#antes:
Les donnes fournir (entres)
Les rsultats produire (sorties)
Le traitement "ui permet de transformer les donnes en rsultats.
.onnes:
o 'ri+ : de t(pe rel/
o 8uantit de t(pe entier/
o 9au+ 9:7 ( 9;9:7): de t(pe rel.
0sultats:
o <et (<et pa(er): de t(pe rel/
9raitement:
o 9otal;=9>'ri+ ? 8uantit
o 2;9:7> 9otal;=9?@0A100
CPGE-AGADIR -2- M.GUEROIHI
o <et>9otal;=9$2;9:7
- Algorithme:
0seudo-Code Organigramme
#!gorit)me Ca!cu!/
,ariab!e 0ri+1 Tota!2'T : Re!
$2T%a1 Net : Re!
(uantit : Entier
Dbut
Bcrire (C.onner le pri+ : C)
Lire ('ri+)/
Bcrire (C.onner la "uantit : C)
Lire(8uantit)/
9otal;=9 3 'ri+ ? 8uantit/
2;9#a 3 9otal;=9 ? 0.@/
<et 3 9otal;=9 $ 2;9#a
Ecrire (C<et pa(er :C! <et)/
Fin
- Codage:
('rogramme DLangage '(thon6)
- nterprtation et ex!ution : se font sur machine
CPGE-AGADIR -3- M.GUEROIHI
Dbut
Fin
"Donner le prix"
Tota!2'T 3 0ri+ 4 (uantit5
$2T%a 3 Tota!2'T 4 .6-5
Net 3 Tota!2'T 7 $2T%a
"Net payer :", Net
Prix
"Donner la quantit"
Quantit
prix=input("Donner le prix: ")
prix=float(prix) #conversion de la chaine en un nombre rel
quantite=input("Donner la quantit: " )
quantite=int(quantite) #conversion de la chaine en un nombre entier
Total_HT = prix * quantite
M_Tva = Total_HT * 0.2
Net = Total_HT M_Tva
print ("Net ! pa"er :" # Net)
I,- Composants d8un a!gorit)me:
*n algorithme est compos d-un certains nombre d8instructions "ui manipulent des donnes:
1- "onnes d#un algorithme:
*ne donne est caractrise par E attributs:
a- Identi9icateur : <om s(mboli"ue reprsentant la donne.
E+ : Notein9o : pour dsigner la note dinformati"ue
Coe9in9o : pour dsigner le coefficient dinformati"ue
Remar*ue :
Le choi+ des identificateurs est soumis "uel"ues rgles "ui #arient selon le langage! mais en
gnral:
*n nom doit commencer par une lettre alphabti"ue
e+emp!e %a!ide: #: e+emp!e in%a!ide: :#
doit 4tre constitu uni"uement de lettres! de chiffres et du soulignement ; (B#iter les
caractres de ponctuation et les espaces)
%a!ides: S$I-..;1 S$I2-..; in%a!ides: S$I -..;1 S$I--..;1 S$I5-..;
doit 4tre diffrent des mots rser#s du langage
(par e+emple en pascal: integer1 rea!1 e!se1 case1 i91 9or1 e+it! ))
La longueur du nom doit 4tre infrieure la taille ma+imale spcifie par le langage utilis
b- ,a!eur: la #aleur de la donne
E+: la #aleur de Coe9in9o est -
La #aleur de Notein9o d-un l#e "uelcon"ue est :<6-=
c- Tpe: l-ensemble de #aleur "ue peut prendre une donne
Les t(pes les plus utiliss sont :
entier pour manipuler des entiers!
re! pour manipuler des nombres rels!
boo!en pour manipuler des #aleurs boolennes vrai ou faux!
caract>re pour manipuler des caractres alphabti"ues et numri"ues!
c)a?ne pour manipuler des chaFnes de caractres permettant de reprsenter des
mots ou des phrases.
E+: la donne Notein9o est de t(pe Re!
La donne Coe9in9o est de t(pe Entier.
*ne donne peut 4tre une %ariab!e ou une constante.
a6 ,ariab!e.: Bst une donne dont la #aleur peut 4tre change au cours du traitement.
B+: Notein9o est une #ariable car cha"ue e+cution elle peut prendre une #aleur.
b6 Constante: .onne dont la #aleur ne change pas
B+: Tau+2T,# "ui garde touGours la #aleur 0.@
CPGE-AGADIR -4- M.GUEROIHI
<oteinfo
1H.@I
0el
Donnes
Valeur
Identificateur
Type
2- Les instru!tions:
a- d$inition
Les actions lmentaires "ui composent un algorithme sont appeles Instructions! car elles
reprsentent des ordres e+cuter dans l-algorithme.
b- Instruction d8entre : Lire
L-instruction Lire permet d-introduire une donne
B+: Lire (<oteinfo)
c- Instruction de Sortie: Ecrire
L-instruction Ecrire permet de restituer (sortir) une donne
B+: Ecrire (2o()
c- #99ectation: 3
*ne affectation est l-opration "ui permet de ranger la #aleur d-une e+pression dans une
#ariable.
.ans un algorithme l-affectation est s(mbolise par: 3
E+emp!es:
JK@0 : La #aleur @0 est affecte la #ariable J
LKnbr1$nbr@ : La somme (nbr1$nbr@) est affecte la #ariable L
JK( : La #aleur de la #ariable M est affecte la #ariable J
Remar*ues :
6 L-identificateur est touGours gauche du s(mbole de l-affectation
6 Li une #ariable contenait une #aleur! elle ne conser#era "ue la dernire #aleur "u-on lui affecte.
E+emp!e
<1K @0
<@K E0
<1K <@
8uelle est la #aleur de <1N ........................................................................
E+ercice :
Bcrire un algorithme permettant de saisir @ nombres puis permute leurs #aleurs.
CPGE-AGADIR -5- M.GUEROIHI
6 *ne E+pression est une combinaison d8oprandes et d8oprateurs.
B+: @$I6@0A@ est une e+pression dont @!I!@0 et @ reprsentent des oprandes et $!6 et A
reprsentent des oprateurs.
Les oprateurs arithmti"ues utiliss dans les algorithmes sont:
oprateurs arithmti"ues :
Oprateur Fonction E+emp!e Langage 0t)on
7 7ddition J$M $
- Loustraction J6M 6
4 2ultiplication J?M ?
@ .i#ision JAM A : di#ision / AAdi#ision entire
OAH1.I / OAAH1
A 'uissance @PE ?? : e+emple @??EQ
$od 0este di#ision 1R mod I (>@) S : 1RSI@
+or 1u e+clusif bit bit I +or O E P : IPO E
des oprateurs re!ationne!s Bde comparaisonC:
Oprateur signi9ication Langage 0t)on
D
Bgal >>
EF ou
.iffrent T>
E
Ltrictement infrieur
E
F Ltrictement suprieur F
ED
Infrieur ou gal
ED
FD Luprieur ou gal FD
des oprateurs !ogi*ues:
Oprateur signi9ication Langage 0t)on
NON <on logi"ue not
OU 1u inclusif
or
ET Bt logi"ue and
Ordre de priorit des oprateurs
'our les oprateurs arithmti"ues! l-ordre de priorit est le sui#ant (du plus prioritaire au
moins prioritaire) :
P : (l#ation la puissance)
? ! A (multiplication! di#ision)
mod (modulo)
$ ! 6 (addition! soustraction)
e+emp!e: - 7 G 4 ; %aut -G
Bn cas de besoin (ou de doute)! on utilise les parenthses pour indi"uer les oprations
effectuer en priorit e+emp!e: B- 7 GC 4 ; %aut G=
CPGE-AGADIR -6- M.GUEROIHI
STRUCTURES DE CONTROLE
Introduction
*n algorithme dcrit une suite d-instructions dont l-e+cution ne se fait pas touGours dans l-ordre de
leur criture. Il peut ( a#oir dans certains cas des sauts de blocs d-instructions. Ces sauts sont
contrUls par une structure appele structure de contrUle.
*n algorithme peut a#oir trois structures:
Structure s*uentie!!e
Structure conditionne!!e ou a!ternati%e
Structure rptiti%e
I- Structure s*uentie!!e
a- "$inition
1n dit "u-un algorithme a une structure s"uentielle lors"ue les instructions s-e+cutent d-une
manire linaire une aprs une du dbut Gus"u- la fin.
%- exemple
Loit l-algorithme sui#ant:
#!gorit)me mo(enne/
,ariab!es <91! <9@! <9E! 21M : 0el/
Dbut
LI0B (<91)/
LI0B (<9@)/
LI0B (<9E)/
21MK (<91$ <9@$ <9E)AE/
BC0I0B (21M)/
Fin
Cet algorithme a une structure s"uentielle! les instructions s-e+cutent d-une manire linaire
(l-une aprs l-autre).
II- Structure conditionne!!e ou a!ternati%e
a- "$inition
.ans un algorithme a(ant une structure alternati#e les instructions s-e+cutent selon la ralisation
d-une condition ou non.
La condition est une e+pression logi"ue de t(pe H Re!ation I
Re!ation est l-un des oprateurs de comparaison Lui#ants:
Oprateur signi9ication Langage 0t)on
D Bgal >>
EF ou
.iffrent T>
E Ltrictement infrieur E
F
Ltrictement suprieur
F
ED Infrieur ou gal ED
FD
Luprieur ou gal
FD
La condition peut 4tre:
o Condition simp!e: B+emples: aV@000/ 2o(V10/
o Condition Compose: B+emples: (2o(W1E) ET (2o( V> 1O)
CPGE-AGADIR -7- M.GUEROIHI
%- &tru!tures alternati'es:
:- Instruction SiJJ66#!orsJJ66SinonJJ66Finsi
Blle e+prime le choi+ entre deu+ s"uences d-actions en fonction de la #aleur de la condition:
Snta+e:
7lgorithme Langage '(thon
$i %on&ition 'lor(
$quen)e*
$inon
$quen)e2
+in(i
if %on&ition :
$quen)e*
el(e:
$quen)e2
o La condition (e+pression boolenne) est tout dabord calcule
o Li le rsultat de la condition donne %raie la s*uence: seule sera e+cute.
o Li le rsultat donne Xau+ la s*uence- seule sera e+cute.
o s*uence: et s*uence- peu#ent 4tre une instruction ou un bloc dinstructions
E+emp!e:
#!gorit)me ,a!eur#bs 5
,ariab!e + : re! 5
Dbut
EcrireBK EntreL un re! : K C 5
Lire B+C 5
Si + E . a!ors
Ecrire BK!a %a!eur abso!ue de K1 +1 Kest:K1-+C 5
Sinon
Ecrire BK!a %a!eur abso!ue de K1 +1 Kest:K1 +C 5
Finsi
Fin
Organigramme:
CPGE-AGADIR -8- M.GUEROIHI
<on 1ui
H - H
Dbut
Fin
H
HE .
Remar*ue
La partie Sinon n-est pas obligatoire! "uand elle n-e+iste pas et "ue la condition est fausse!
aucun traitement n-est ralis
1n utilisera dans ce cas la forme simplifie sui#ante:
Si condition a!ors
S*uence:
Finsi
E+emp!e BSiJ#!orsC
#!gorit)me ,a!eur#bs 5
,ariab!e +1 : re! 5
Dbut
Ecrire BK EntreL un re! : KC 5
Lire B+C 5
3 + 5
Si + E . a!ors
3 -+ 5
Finsi
Ecrire BK!a %a!eur abso!ue de K1 +1 Kest:K1C
Fin
Exercice
Bcrire un algorithme "ui permet de rsoudre l"uation du premier degr de t(pe #H D " (%VW0)
CPGE-AGADIR -9- M.GUEROIHI
-- Condition compose6
*ne condition compose est une condition forme de plusieurs conditions simples relies
par des oprateurs logi"ues: B9! 1*! 1* e+clusif (J10) et <1<
B+emples :
+ compris entre @ et O : (x > 2) ET (x < 6)
n di#isible par E ou par @ : (n mod 3=0) OU (n mod 2=0)
deu+ #aleurs et deu+ seulement sont identi"ues parmi a! b et c :
(a=b) XOR (a=c) XOR (b=c)
L-#aluation d-une condition compose se fait selon des rgles prsentes gnralement
dans ce "u-on appelle tab!es de %rit
C: C- C: ET C- C: C- C: OU C- C: C- C: HOR C-
: : : : : : : : X
: X X : X # : X :
X : X X : # X : :
X X X X X X X X X
C: NON C:
: X
X :
G- Structures a!ternati%es imbri*ues Bcomp!e+eC
Les tests peu#ent a#oir un degr "uelcon"ue d-imbrications
B+emple1 :
7lgorithme Langage '(thon
Si condition1 a!ors
Si condition@ a!ors
instructions7
Sinon
instructions%
Finsi
Sinon
Si conditionE a!ors
instructionsC
Finsi
Finsi
if %on&ition* :
if )on&ition2 :
in(tru)tion('
el(e:
in(tru)tion(,
el(e:
if )on&ition- :
in(tru)tion(%
CPGE-AGADIR -10- M.GUEROIHI
B+emple@ :
7lgorithme Langage '(thon
if %on&ition* alor(
in(tru)tion *
in(tru)tion 2
in(tru)tion -
in(tru)tion n
LinoLi %on&ition2 alor(
.lo)_in(tru)tion(
$inon
autre_.lo)_in(tru)tion(
+in(i
if %on&ition*:
in(tru)tion *
in(tru)tion 2
in(tru)tion -
in(tru)tion n
elif %on&ition2:
.lo)_in(tru)tion(
el(e :
autre_.lo)_in(tru)tion(
E+ercices dMapp!ication :
,oir TD:
CPGE-AGADIR -11- M.GUEROIHI
III- Structure rptiti%e ou itrati%e Bbouc!esC
a- "$inition
La structure rptiti#e permet de rpter une action ou une s"uence dactions tant "uune
condition est %raie.
*ne structure rptiti#e est aussi appele bouc!e.
%- exemple
Tant *ue (la porte est ferme)
Lonner /
!- Reprsentation
16 la boucle tant(ue J9aire
#!gorit)me Organigramme Langage 0t)on
Tant *ue (Condition) faire
Instruction(s)/
Fin Tant*ue
Yhile condition :
instruction(s)/
Exemple
Bcrire un algorithme "ui demande lutilisateur une note comprise entre 0 et @0 Gus"u ce "ue la rponse
con#ienne.
7lgorithme 'rogramme '(thon
Algorithme controleSaisie ;
Variable note : rel ;
Dbut
Ecrire ("Donner la note :") ;
Lire(note) ;
Tantque ((note<0) ou (note>20)) faire
Ecrire("Erreur de saisie") ;
Ecrire ("Donner la note :") ;
Lire(note) ;
Fin TantQue
Fin
Remar(ues :
Ztant donn "ue la condition est #alue a#ant la mise en [u#re des instructions! ce "ui est
une scurit! il est possible "ue celles6ci ne soient Gamais e+cutes.
Li une structure 9ant8ue dans la"uelle la condition ne de#ient Gamais fausse. Le programme
tourne dans une boucle infinie et nen sort plus.
B+emple de boucle infinie.
i 1 /
tant8ue(iV>10) faire
Bcrire(C C'\B 7gadir C) /
Xin 9ant8ue

CPGE-AGADIR -12- M.GUEROIHI
Condition
InstructionBsC
non
oui
Boucle infinie, le message CPGE
Aa!ir saffiche linfinie, car la
variale i !ui est teste dans la
condition nest "amais incrmente#
note=input("Donner la note:")
note=float(note)
/0ile note10 or note220:
print("3rreure &e (ai(ie:")
note=input("Donner la note:")
note=float(note)
So!ution :
i 1 /
tant8ue(iV>10) faire
Bcrire(C C'\B 7gadir C) /
i i$1
Xin 9ant8ue
LMalgorithme ci-dessus afche le message "CPGE Agadir" 10 fois
Notion de compteur :
Initia!isation dMun compteur :
i :i /
B+emple i 1/ (1 est la #aleur initiale du compteur i)
Incrmentation dun compteur
i i$incrment /
B+emple : i i$1 (7Gouter la #aleur 1 la #aleur prcdente de i)
.crmentation dun compteur
i i6incrment /
B+emple : i i61 (retrancher 1 de la #aleur prcdente de i)
E+ercises:
CPGE-AGADIR -13- M.GUEROIHI
i=*
/0ile i1=*0:
print ("%453 '6a&ir")
i=i*
Exer!i!e 1 :
Bcrire un algorithme "ui affiche la liste :
Nombre Carre
1 1
@ H
E ]
H 1O
O EO
R H]
Q OH
] ]1
10 100
Exer!i!e 2 :
Bcrire un algorithme "ui calcule pour un nombre
entier < (<W>0) saisi au cla#ier! la somme :
L>1$@$E$H$I$O$)..$<
@6 la boucle 0our )) Fin0our
Cette instruction permet la rptition d-un traitement un nombre dtermin de fois. Le nombre de
fois est contrUl par un compteur allant de la #aleur initiale (#i) la #aleur finale (#f). La progression
se fait dans lordre croissant ou dcroissant.
La structure 0our est utilise imprati#ement lors"uon connaFt priori le nombre de rptitions
effectuer.
#!gorit)me
0OUR Compteur :i # :f $0#S DE Incrment^ F#IRE
Instruction(s)/
Fin0our
Organigramme
CPGE-AGADIR -14- M.GUEROIHI
Langage 0t)on
for #ariable in liste;#aleurs :
Instruction(s)/
B+emple
7lgorithme Langage '(thon
i : entier
'our i1 7 I faire
Bcrire (C%onGourC)
Xin pour
for i in range(1!O):
print(C%onGourC) /
0emar"ue :
Linstruction range fournit une liste de #aleurs.
B+emples :
range(O) reprsente la liste des #aleurs : 0!1! @! E! H! I
range (1!O) reprsente la liste des #aleurs : 1! @! E! H! I
range (1! O!1) reprsente la liste des #aleurs : 1! @! E! H! I
range (1!O! @) reprsente la liste des #aleurs : 1!E!I
B+ercices :
,oir TD-
CPGE-AGADIR -15- M.GUEROIHI
i E %9
Instructions
Fau+
,rai
i 3 ,i
i 3 i 7 pas