Sunteți pe pagina 1din 36

REPUBLQUE TUNSENNE

M M N N S ST TE ER RE E D DE E L L' 'E EN NS SE E G GN NE EM ME EN NT T S SU UP PE ER R E EU UR ET DE
LA RECHERCHE SCENTFQUES ET TECHNOLOGQUES





U UN NI IV VE ER RS SI IT TE E D DE E J JE EN ND DO OU UB BA A
F FA AC CU UL LT TE E D DE ES S S SC CI IE EN NC CE ES S J JU UR RI ID DI IQ QU UE ES S, , E EC CO ON NO OM MI IQ QU UE ES S E ET T D DE E G GE ES ST TI IO ON N D DE E J JE EN ND DO OU UB BA A




Fascicule de Travaux Dirigs
Algorithmique et structures de
donnes I

Adress aux tudiants de 1
re
anne Licence Fondamentale en
Informatique Applique la Gestion






Equipe pdagogique :

Riadh IMED FEREH Riadh BOUSLIMI
Matre de confrences en Informatique TechnoIogue en Informatique







Anne Universitaire : 20062007
2/36
PRFACE

Ce fascicule des travaux dirigs dalgorithi!ue et structures de donnes est " lintention
des tudiants de la #rei$re anne en %icence en &nforati!ue A##li!ue " la 'estion de la
(acult des )ciences *uridi!ues+ ,conoi!ue et de 'estion de *endou-a.
%e fascicule co#orte 6 /0 avec leurs corrections !ui sont r#arties coe suit :
/01 : %es actions lentaires si#les
/02 : %es structures conditionnelles
/03 : %es structures itratives
/02 : %es chaines de caract$res
/03 : %es sous#rograes
/06 : %es ta-leaux
%o-4ectif #rinci#al est de faire a##rendre aux tudiants " rsoudre un #ro-l$e. 5ous avons
introduit dans le /01 toutes les structures de donnes !ui vont 6tre les o-4ets de ani#ulation de
toutes les dfinitions de contr7le !ui suivront.
8uant aux structures de contr7le+ nous les avons dvelo##es s#arent dans deux travaux
dirigs 9/02 et /03:. 5ous coencerons #ar des exercices sur les structures si#les+ #uis les
structures conditionnelles et enfin les structures itratives.
Ces trois travaux dirigs nous #erettrons de ani#uler les chaines de caract$res !ui seront notre
/02. 5ous traiterons dans ce /0 les #rograes gnraleent #oss afin !ue ltudiant sera
ca#a-le de rsoudre des #ro-l$es !ui leurs resse-les.
Ces outils nous #erettront #ar la suite da-order les fonctions et les #rocdures. ;n effet+ les
sous#rograes sont la -ase de la #rograation #our si#lifier lcriture dun #rograe et
lui rendre #lus lisi-le.
5ous terinons " la fin #ar le /03 !ui sera consacr #our les ta-leaux et les traiteents avances
et on verra dans ce dernier les algorithes de recherche et les algorithes de tri.
Avant dassister " la sance de /0+ cha!ue tudiant doit #r#arer srieuseent le /0 se
ra##ortant " la ani#ulation !uil va effectuer et ce " laide du cours.
;nfin+ nous es#rons !ue le #rsent ouvrage aura le rite d6tre un -on su##ort #dagogi!ue
#our lenseignant et un docuent #erettant une concrtisation ex#rientale #our ltudiant.



Les auteurs
Riadh IMED Fareh
Riadh BOUSLIMI
3/36
F FI IC CH HE E M MA AT TI I R RE E


Objectifs gnraux
&l s<agit d<une srie de travaux dirigs d<algorithi!ue et structures de donnes &.
&ls ont #our -ut de :
A##rendre " concevoir des algorithes efficaces ind#endaent des
langages ou environneents dexcution. tudier les t=#es de donnes et
leurs utilisations courantes+ " laide dalgorithes ada#ts et o#tiiss.
Ac!urir des >ases algorithi!ues 9affectation+ entres sorties+ structures
conditionnelles+ structures itratives et -oucles:+ notion de#laceent
oire 9/a-leaux:+ #rocdures+ fonctions+ #assage des #ara$tres+
recherche+ tris.





Pr-requis
Architecture des ordinateurs



Public-cible
Ces travaux dirigs sont destins essentielleent aux tudiants de la #rei$re anne
licence fondaentale en inforati!ue a##li!ue " la 'estion+ seestre1


Volume horaire
Ce cours de ce odule est #rsent+ de ani$re he-doadaire+ coe suit:
1h30n de cours
1h30n de /ravaux dirigs #our cha!ue grou#e
)oit en total : 22h


Moyens pdagogiques
/a-leau
)alle de /0
?ol=co#ies des /ravaux dirigs




Evaluation
Coefficient : 1.3
5ote du contr7le continu : 30@
5ote d<exaen : 70@








2/36


T Ta ab bl le e d de es s m ma at ti i r re es s

TD n 1(Les actions lmentaires simples) ............................................................................. 5
Correction du TD 1 .................................................................................................................. 7
TD n 2(Les structuress conditionnelles) ............................................................................... 9
Correction du TD 2 ................................................................................................................ 10
TD n 3(Les structures itratives) ......................................................................................... 12
Correction du TD 3 ................................................................................................................ 14
TD n 4(Les chanes de caractres) ....................................................................................... 19
Correction du TD 4 ................................................................................................................ 20
TD n 5(Procdures et fonctions) .......................................................................................... 23
Correction du TD 5 ................................................................................................................ 24
TD n 6(Les Tableaux) ........................................................................................................... 27
Correction du TD 6 ................................................................................................................ 28
Bibliographie ........................................................................................................................... 36








3/36

TD n 1
(Les actions lmentaires simples)
Objectifs
Connaitre le vocabulaire de base de programmation (constante, variable, expression,...)
Comprendre la demarche de programmation
Comprendre les actions algorithmiques simples
Connaitre la structure generale dun algorithme
Exercice 1
1. 8uel est lordre de #riorit des diffrents o#rateurs de lex#ression suivante :
993 A a: B x C 2: B 999c B d: / 9a / -:: / d:
2. ;valuer lex#ression suivante :
3 D 2 A 6 B 2 D 9E D 2 C3: / 92 B 2 D 3 A 2:
3. ;crire la forule suivante sous fore dune ex#ression arithti!ue :
: x
ac xv


2
2 : 3 9
2

Exercice 2
)achant !ue a F 2+ - F 3+ c F 1 et d F 0+ valuer les ex#ressions logi!ues suivantes :
1. 9a G -: ET 9c HF d:
2. NON 9a G -: OU 9 c I - :
3. NON 9a I - C 2: OU 9a A c G d::
Exercice 3
0onner toutes les raisons #our les!uelles l<algorithe suivant est incorrect :
Algoritme &ncorrect
x+= : ;ntier
J : Kel
Dbut
J x D 2
= J
x A 2 3 D J
= 3= D 3
Fin.

Facult des Sciences 1uridiques,
Economiques et de Gestion de 1endouba
Anne Universitaire : 2006/2007 - Semestre 1
Module : Algorithmique et structures de donnes I
Classe : 1
re
LFIAG
Enseignants: Riadh IMED FEREH & Riadh BOUSLIMI
6/36
Exercice 4
;crire un algorithe !ui lit deux entiers au clavier et !ui affiche ensuite leur soe et leur
#roduit.
Exercice 5
;crire un algorithe !ui calcule et affiche la rsistance d<un co#osant lectroni!ue en
utilisant la loi d<Lh :
U : /ension en M
U R x I avec K : Ksistance en
& : &ntensit en A

7/36
Correction du TD 1



Exercice 1
1. 993 A a: B x C 2: B 999c B d: / 9a / -:: / d:
1 3 2 8 4 6 5 7

2. 3 D 2 A 6 B 2 D 9 E D 2 C 3: / 9 2 2 D 3 A 2: F 13
3. 99 3 B x A =: C 2 B 2 A a A c: / 92 A x B J:

Exercice 2
1. (aux
2. Mrai
3. (aux
NB : le rsultat d<une ex#ression logi!ue est tou4ours Mrai ou (aux.


Exercice 3
1
2
3
4
5
6
7
8
9
10
Algoritme &ncorrect
x+= : ;ntier
J : Kel
Dbut
J x D 2
= J
x A 2 3 D J
= 3= D 3
Fin.

Cet algorithe est incorrect #our #lusieurs raisons:
%igne 1 : le ot Algorithe s<crit avec un NhN au ilieu.
%igne 2 : la dclaration des varia-les coence #ar le ot NMarN.
%igne 3 : la valeur de x est indterine.
%igne 6 : inco#ati-ilit de t=#e 9un rel affect " une varia-le de t=#e entier:.
%igne 7 : le e-re gauche d<une affectation doit 6tre une varia-le.
%igne E : il faut crire 3 A= et non 3=.
E/36
Exercice 4 : calcul de la soe et du #roduit de deux entiers
Algorithme )oO?rod
Var
a + - + s + # : ;ntier
Dbut
;crire9N;ntrer la valeur de aFN:+ %ire9a:
;crire9N;ntrer la valeur de -FN:+ %ire9-:
s a D -
# a A -
;crire9N)oeFN+s:
;crire9N?roduitFN+#:
Fin.

Exercice 5 : calcul de la rsistance d<un co#osant lectri!ue
Algorithme Ksistance
Var
U+ & + K : Kel
Dbut
;crire9N;ntrer la tensionFN:+ %ire9U:
;crire9N;ntrer l<intensitFN:+ %ire9&:
K U / & (* on suppose toufours I = 0 *)
;crire9NKsistance FN+K+N LhsN:
Fin.



P/36

TD n 2
(Les structures conditionnelles)
Objectif
Construire des algorithmes comportant des traitements conditionnels.

Exercice 1
;crire un algorithe !ui calcule et affiche la valeur a-solue d<un entier !uelcon!ue lu
au clavier.
Exercice 2
;crire un algorithe !ui calcule et affiche si la valeur d<un entier !uelcon!ue lu au
clavier est #aire ou i#aire.
Exercice 3
;crire un algorithe #erettant de rsoudre dans K une !uation du second degr de
la fore ax
2
+bx+c0.
Exercice 4
;crire un algorithe #erettant de siuler une calculatrice " 2 o#rations9D+ + A+ et /:.
Utiliser la structures NselonN #our le choix de l<o#ration " affecter.
Exercice 5
;crire un algorithe !ui lit un caract$re au clavier #uis affiche s<il s<agit d<une lettre
inuscule+ d<une lettre a4uscule+ d<un chiffre ou d<un caract$re s#cial.
Exercice 6
Une anne -issextile 9contient 366 4ours: si elle est ulti#le de 2+ sauf les annes de
d-ut de si$cle 9!ui se terinent #ar 00: !ui ne sont -issextiles !ue si elles sont
divisi-les #ar 200.
;xe#les
1PE0 et 1PP6 sont -issextiles car elles sont divisi-les #ar 2
2000 est une anne -issextile car elle est divisi-le #ar 200
2100 et 3000 ne sont #as -issextiles car elles ne sont #as divisi-les #ar 200.
;crire un algorithe !ui #eret de dteriner si un entier #ositif donn corres#ond "
une anne -issextile ou non.

Facult des Sciences 1uridiques,
Economiques et de Gestion de 1endouba
Anne Universitaire : 2006/2007 - Semestre 1
Module : Algorithmique et structures de donnes I
Classe : 1
re
LFIAG
Enseignants: Riadh IMED FEREH & Riadh BOUSLIMI
10/36
Correction du TD 2
Exercice 1
Algorithme MalOA-s
Var
x+ va : ;ntier
Dbut
;crire9N;ntrer un entierFN:+ %ire9x:
Si 9 x HF 0 : Alors
va x
Sinon
va x
FinSi
;crire9NQN+x+NQFN+va:
Fin.
Exercice 2
Algorithme #airOi#air
Var
x : ;ntier
Dbut
;crire9N;ntrer un entierFN:+ %ire9x:
Si 9 x Rod 2 F 0 : Alors
;crire9Nc<est un entier #airN:
Sinon
;crire9Nc<est un entier i#airN:
FinSi
Fin.

Exercice 3
Algorithme e!ua2d
Var
a+-+c+delta : Kel
Dbut
;crire9N;ntrer la valeur de a9non nulle:FN:+ %ire9a:
;crire9N;ntrer la valeur de -FN:+ %ire9-:
;crire9N;ntrer la valeur de cFN:+ %ire9c:
delta -C2 B 2AaAc
Si 9 deltaG0 : Alors
;crire9N#as de solution dans KN:
Sinon Si 9 deltaF0 : Alors
;crire9Nx1 F x2 F N+-/92Aa::
Sinon
;crire9Nx1 F N+9-racine9delta::/92Aa::
;crire9Nx2 F N+9-Dracine9delta::/92Aa::
FinSi
Fin.
Remarque : 0ans cet algorithe+ on su##ose !ue l<utilisateur va tou4ours entrer une valeur de
a non nulle. )inon ce n<est #as une !uation du second degr.
11/36
Exercice 4
Algorithme calculatrice
Var
val1+val2 : Kel
o#ration: caract$re
Dbut
;crire9N?rei$re o#randeFN:+ %ire9val1:
;crire9NL#rationFN:+ %ire9o#ration:
;crire9N0euxi$e o#randeFN:+ %ire9val2:
Selon o#ration Faire
NDN : ;crire9NKsultat FN+ val1 D val2:
NN : ;crire9NKsultat FN+ val1 val2:
NAN : ;crire9NKsultat FN+ val1 A val2:
N/N : Si 9 val2 I 0: Alors
;crire9NKsultat FN+ val1 / val2:
Sinon
;crire9N0ivision #ar JroSN:
FinSi
Sinon
;crire9No#rateur erronTN:
FinSi
Fin.

Exercice 5
Algorithme 5atureOCaract$re
Var
c: caract$re
Dbut
;crire9N;ntrer un caract$reFN:+ %ire9c:
Selon c Faire
NaN..NJN : ;crire9NC<est une lettre inisculeN:
NAN..NUN : ;crire9NC<est une lettre a4usculeN:
N0N..NPN : ;crire9NC<est un chiffreN:
Sinon
;crire9Nc<est un caract$re s#cialN:
FinSi
Fin.
Exercice 6
Algorithme >issextile
Var
n : ;ntier
Dbut
;crire9N;ntrer l<anneFN:+ %ire9n:
Si 9 n Rod 200 F 0: LU 99 n Rod 100 I 0: ;/ 9n Rod 2: F 0::G0 : Alors
;crire9NAnne -issextileN:
Sinon
;crire9NAnne non -issextileN:
FinSi
Fin.
12/36

TD n 3
(Les structures itratives)
Objectif
Construire des algorithmes comportant des traitements iteratifs.
Exercice 1
;crire un algorithe !ui lit un entier #ositif n #uis affiche tous ses diviseurs.

Exercice 2
;crire un algorithe avec trois versions !ui lit un entier #ositif n #uis calcule et
affiche son factoriel selon la forule .
Pour.Faire
Tant que . Faire
Repeter . Jusqua.
Exercice 3
;crire un algorithe #erettant de :
%ire un no-re fini de notes co#rises entre 0 et 20.
Afficher la eilleure note+ la auvaise note et la o=enne de toutes les notes.
Exercice 4
Calculer a
-
avec a rel et - entier #ar ulti#lication successives.

Exercice 5
;crire un algorithe !ui lit un entier #ositif et vrifie si ce no-re est #reier ou non.
Remarque : un no-re #reier n<est divisi-le !ue #ar 1 ou #ar lui6e.

Exercice 6
;crire un algorithe !ui lit deux entiers #ositifs A et > #uis calcule et affiche leur
?'C0 en utilisant la thode suivante:
)i A F >V ?'C09A+>: F A
)i AH>V ?'C09A+>: F ?'C09A>+>:
)i AG>V ?'C09A+>: F ?'C09A+>A:
Exemple: ?'C091E+23: F ?'C091E+27: F 9?'C091E+P: F ?'C09P+P: F P

Facult des Sciences 1uridiques,
Economiques et de Gestion de 1endouba
Anne Universitaire : 2006/2007 - Semestre 1
Module : Algorithmique et structures de donnes I
Classe : 1
re
LFIAG
Enseignants: Riadh IMED FEREH & Riadh BOUSLIMI
13/36
Exercice 7
;crire un algorithe !ui calcule le ??CR 9?lus ?etit Coun Rulti#le: de 2 entiers
#ositifs A et > en utilisant la thode suivante :
?eruter+ si ncessaire+ les donnes de faWon " ranger dans A le #lus grand des
2 entiersV
Chercher le #lus #etit ulti#le de A !ui est aussi uti#le de >.
Exemple: ??CR96+E: F ??CR9E+6: F 22.

Exercice 8
;crire un algorithe !ui calcule et affiche les 10 #reiers teres de la suite de
(i-onacci.
%a suite de (i-onacci est dfinie #ar :
(
0
F 1
(
1
F 1
(
n
F (
n 2
D (
n 1
#our n H 1.
Exercice 9
;crire un algorithe !ui calcule la soe haroni!ue s F
=
n
i
i
1
1
V n est un entier
#ositif lu " #artir du clavier
Exemple: ?our n F 3+ s F 1 D 1/2 D 1/3 F 1.E3

Exercice 10
?ari tous les entiers su#rieurs " 1+ seuls 2 #euvent 6tre re#rsents #ar la soe des
cu-es de leurs chiffres.
A titre d<exe#le+ 133 F 1
3
D 3
3
D 3
3
est un no-re cu-i!ue.
;crire un algorithe #erettant de dteriner les 3 autres.
Note : les 2 no-res sont co#ris entre 130 et 210.

Exercice 11
Un no-re #arfait est un no-re #rsentant la #articularit d<6tre gal " la soe de
tous ses diviseurs+ exce#t lui6e.
%e #reier no-re #arfait est 6 F 3 D 2 D 1.
;crire un algorithe !ui affiche tous les no-res #arfais infrieurs " 1000.
12/36
Correction du TD 3

Exercice 1
Algorithme 0iviseurs
Var
n+i : ;ntier
Dbut
;crire9N;ntrer un entier #ositifFN:+ %ire9n:
Pour i de 1 n Faire
Si 9 n Rod i F 0 : Alors (* Si le reste de la valeur de n est egale a 0 *)
;crie9i:
Fin Si
Fin Pour
Fin.
Exercice 2
Version Pour. Faire
Algorithme (acto
Var
n+i+f : ;ntier
Dbut
;crire9N;ntrer un entier #ositifFN:+ %ire9n:
f 1 (* initialisation de la factorielle a 1 puisque 1'1 *)
Pour i de 2 n Faire
f f A i (* Pour chaque parcours on multiplie lancienne valeur de f par i*)
Fin Pour
;crire9n+NSFN+f:
Fin.

Version 1ant que. Faire
Algorithme (acto
Var
n+i+f : ;ntier
Dbut
;crire9N;ntrer un entier #ositifFN:+ %ire9n:
f 1 (* initialisation de la factorielle a 1 puisque 1'1 *)
i 2 (* initialisation du compteur i *)
Tant que9iXn: Faire
f f A i (* Pour chaque parcours on multiplie lancienne valeur de f par i*)
i i D 1 (* incrementation du compteur i *)
Fin Pour
;crire9n+NSFN+f:
Fin.
13/36
Version Rpter. 1usqu'
Algorithme (acto
Var
n+i+f : ;ntier
Dbut
;crire9N;ntrer un entier #ositifFN:+ %ire9n:
f 1 (* initialisation de la factorielle a 1 puisque 1'1 *)
i 2 (* initialisation du compteur i *)
Rpter
f f A i (* Pour chaque parcours on multiplie lancienne valeur de f par i*)
i i D 1 (* incrementation du compteur i *)
1usqu' (iFn)
;crire9n+NSFN+f:
Fin.

Exercice 3
Algorithme 5otes
Var
n+ i: ;ntier
note+ in+ ax+ s : Kel
Dbut
;crire9N;ntrer le no-re de notesFN:
%ire9a: ( On suppose que n est toujours suprieur zro )
s 0
in 0
ax 0
Pour i de 1 n Faire
;crire9N;ntrer une noteFN:+ %ire9note:
s s D note (* additionner la nouvelle note *)
Si 9 note G in : Alors
in note (* memorisation de la nouvelle valeur minimale *)
(in )i
Si 9 note H in : Alors
ax note (* memorisation de la nouvelle valeur maximale *)
(in )i
Fin Pour
;crire9NReilleur note F N+ax:
;crire9NRauvaise note F N+in:
;crire9NRo=enne des notes F N+s/n:
Fin.

Exercice 4
Algorithme ?uissance
Var
a+c : Kel
-+i: ;ntier
Dbut
;crire9N;ntrer la valeur de aFN:+ %ire9a:
;crire9N;ntrer la valeur de -FN:+ %ire9-:
16/36
c 1 (* initialisation du resultat du produit *)
Pour i de 1 A-s9-: Faire
c c A a (*produit de axa b fois *)
Fin Pour
Si 9 - G 0 : Alors (* si b est negative alors le resultat sera 1/c *)
c 1 / c
Fin Si
;crire9a+N " la #uissance N+-+NFN+c:
Fin.

Exercice 5
Algorithme ?reier
Var
n+i+n-Odiv: ;ntier
Dbut
;crire9N;ntrer un entier #ossitifFN:+ %ire9n:
n-Odiv 0 (* initialisation du nombre de diviseurs*)
i 1
Tant que 9i GF n: Faire
Si 9 n Rod i F 0 : Alors
n-Odiv n-Odiv D 1 (* incrementation du nombre de diviseurs *)
FinSi
i i D1
Fin Tant que
Si (nb_div < 2) Alors
;crire9NC<est un no-re #reierN:
Sinon
;crire9NCe n<est #as un no-re #reierN:
Fin Si
Fin.
Exercice 6
Algorithme ?'C0
Var
a+-: ;ntier
Dbut
;crire9N;ntrer la valeur de a FN:+ %ire9a:
;crire9N;ntrer la valeur de - FN:+ %ire9-:
Rpter
Si 9 a H - : Alors
a a B -
FinSi
Si 9 a G - : Alors
- - B a
FinSi
1usqu ( a F- )
;crire9N%e ?'C0 FN+a:
Fin.
17/36
Exercice 7
Algorithme ??CR
Var
a+-+i+x: ;ntier
Dbut
;crire9N;ntrer la valeur de a FN:+ %ire9a:
;crire9N;ntrer la valeur de - FN:+ %ire9-:
Si 9 a G - : Alors
x a (*-------------------*)
a - (* Permutation *)
- x (*------------------*)
FinSi
i 1
Tant que 999iAa: Rod -: I 0: Faire
i i D1
Fin Tant que
;crire9N??CR FN+iAa:
Fin.

Exercice 8
Algorithme (i-o
Var
f0+f1+f+i: ;ntier
Dbut
f0 1
;crire9Nf0 F N+f0:
f1 1
;crire9Nf1 F N+f1:
Pour i de 2 P Faire
f f0 D f1
;crire9NfN+i+N F N+f:
f0 f1
f1 f
Fin Pour
Fin.
Exercice 9
Algorithme )oe
Var
n+i: ;ntier
s : Kel
Dbut
;crire9N;ntrer la valeur de n F N:+ %ire9n:
s 0 (* initialisation de la somme *)
Pour i de 1 n Faire
s s D 1/i (* incrementer la somme avec la nouvelle valeur de 1/i *)
Fin Pour
;crire9NsoeFN+s:
Fin.

1E/36
Exercice 10
Algorithme cu-i!ue
Var
i+ centaine+ diJaine+ unite: ;ntier
Dbut
Pour i de 130 210 Faire
centaine i 0iv 100 (* ex . i150 centaine 1 *)
diJaine 9 i Rod 100: 0iv 10 (* ex . i150 di:aine 5 *)
unite 9i Rod 100: Rod 10 (* ex . i150 unite 0 *)
Si 99 centaineC3 D diJaineC3DuniteC3: F i: Alors
;crire9i+N est un no-re cu-i!ueN:
Fin Si
Fin Pour
Fin.
Remarque : les no-res cu-i!ues sont : 133+ 370+ 371 et 207

Exercice 11
Algorithme #arfaits
Var
i+ n+ s+ 4: ;ntier
Dbut
Pour i de 1 1000 Faire
s 0
Pour 4 de 1 9 i 0iv 2 : Faire
Si 9i Rod 4 F 0: Alors
s s D 4
Fin Si
Pour
Fin Pour
Si 9 sF i: Alors
;crire9i+ N est un no-re #arfaitN:
Fin Si
Fin.
Remarque : les no-res #arfait infrieurs " 1000 sont : 6+ 2E+ 2P6.

1P/36

TD n 4
(Les chanes de caractres)
Objectif
Construire des algorithmes qui traitent des caracteres et des chaines de caracteres.
Exercice 1
;crire un algorithe !ui lit un caract$re au clavier #uis affiche son #rdcesseur+ son
successeur et le code A)C&& de son !uivalent en a4uscule.
Exercice 2
;crire un algorithe !ui lit une lettre au clavier #uis affiche s<il s<agit d<une consonne
ou d<une vo=elle.
Remarque :%es vo=elles sont :NAN+ NaN+ N;N+ NeN+ N&N+ NiN+ NLN+ NoN+ NUN+ NuN+ NYN+ N=N.
Exercice 3
;crire un algorithe NPalindN !ui lit une chaZne de caract$res et vrifie si cette chaine
est un #alindroe ou non.
Un #alindroe est un ot !ui #eut 6tre lu indiffreent de droite " gauche ou de
gauche " droite 9;xe#le: NAU&UAN+ N%AMA%N+ NKA0AKN+T:.
Exercice 4
;crire un algorithe !ui lit une chaZne de caract$res #uis affiche son inverse.
Exemple: )i la chaZne entre est NalgoN+ l<algorithe doit afficher NoglaN
Exercice 5
;crire un algorithe !ui lit une chaZne de caract$res et renvoie son !uivalent en
a4uscules.
Exercice 6
;crire un algorithe !ui #eret de co#ter le no-re de ots dans une #hrase.
%a #hrase coence o-ligatoireent #ar une lettre et les ots sont s#ars #ar des
es#aces.
Exercice 7
;crire un algorithe !ui dterine et affiche le ot le #lus long dans une #hase
donne.
Exercice 8
;crire un algorithe !ui lit :
Un ot 9chaZne de caract$re fore uni!ueent de lettres:
Une lettre
?uis affiche le no-re d<a##aritions de la lettre dans le ot.

Facult des Sciences 1uridiques,
Economiques et de Gestion de 1endouba
Anne Universitaire : 2006/2007 - Semestre 1
Module : Algorithmique et structures de donnes I
Classe : 1
re
LFIAG
Enseignants: Riadh IMED FEREH & Riadh BOUSLIMI
20/36
Correction du TD 4
Exercice 1
Algorithme Caract
Var
c : Caract$re
Dbut
;crire9N;ntrer un caract$reFN:+ %ire9c:
;crire9#red9c:: (* affichage du predecesseur du caractere c *)
;crire9succ9c:: (* affichage du successeur du caractere c *)
;crire9asc9a4us9c:: (* affichage du code ASCII du mafuscule de caractere c *)
Fin.
Exercice 2
Algorithme ConsOMo=
Var
c : Caract$re
Dbut
Rpter
;crire9N;ntrer une lettre:N:+ %ire9c: (* saisie controler dune lettre *)
1usqu' 9 c HF NAN ET c GF NUN: OU 9 cHF NaN ET cGFNJN:
Si 9Ra4us9c: F NAN: OU 9Ra4us9c: F N;N: OU 9Ra4us9c: F N&N:
OU 9Ra4us9c: F NLN: OU 9Ra4us9c: F NUN: OU 9Ra4us9c: F NYN: Alors
;crire9c+N est une vo=elleN:
Sinon
;crire9c+N est une consonneN:
Fin Si
Fin.
Exercice 3
Algorithme ?alind
Var
ch: Chaine
i+ % : ;ntier
?al : >oolen
Dbut
;crire9N;ntrer une chaZne non videFN:+ %ire9ch:
% long9ch: (* longueur de la chaine *)
?al Mrai (* on suppose initialement que la chaine est palindrome *)
i 1 (* initialisation du compteur i *)
Tant que 9 i GF % 0iv 2: ET 9?al: Faire (* Parcours de la chaine fusqua la moitie *)
Si 9 ch[i\ F ch[%iD1\ : Alors (* sil sont egaux alors on incremente *)
i i D 1 (* incrementation *)
Sinon
?al (aux (* sil v a deux lettres differentes alors on sarrte *)
Fin Si
Fin Tant que
Si 9?al: Alors
;crire9ch+ N est un #alindroeN:
Sinon
;crire9ch+ N n<est #as un #alindroeN:
Fin Si
Fin.
21/36
Exercice 4
Algorithme inverse
Var
i+% : ;ntier
ch1+ch2: Chaine
Dbut
;crire9N;ntrer une chaine :N:+ %ire9ch1:
% %ong9ch1: (* Longueur de la chaine *)
ch2 NN (* initialisation de la chaine inverse *)
Pour i de % 1 Faire (pas-1)
&nserer9ch[i\+ch2+%iD1:
//ou aussi ch2[i]ch[L-i1]
Fin Pour
;crire9N&nverse de la chaZneFN+ ch2:
Fin
Exercice 5
Algorithme Ra4uscule
Var
i+% : ;ntier
ch1+ch2: ChaZne
Dbut
;crire9N;ntrer une chaZne :N:+ %ire9ch1:
% %ong9ch1: (* Longueur de la chaine *)
ch2 NN (* initialisation de la nouvelle chaine au vide *)
Pour i de 1 % Faire
ch2 ch2 D Ra4us9ch1[i\: (* conversion de chaque lettre en mafuscule *)
Fin Pour
;crire9NChaZne en a4usculeFN+ ch2:
Fin
Exercice 6
Algorithme Co#tageORots
Var
i+%+n-Oot : ;ntier
#hase: ChaZne
Dbut
;crire9N;ntrer une #hrase non vide :N:+ %ire9#hrase:
% %ong9#hrase: (* longueur de la phrase *)
5-Oot 1 (* initialisation du compteur de mot // par defaut on un seul mot *)
Pour i de 1 % Faire
Si 9#hrase[i\ F N N: Alors
n-Oot n-Oot D 1 (* si on trouve on espace on incremente le Nbmot *)
Fin Si
Fin Pour
;crire9N5o-re de ots FN+ n-Oot:
Fin
22/36
Exercice 7
Algorithme ?lusO%ongORot
Var
i+4+%: ;ntier
#hase+ ot+ ot#l: ChaZne
Dbut
;crire9N;ntrer une #hrase:N:+ %ire9#hrase:
% %ong9#hrase:
ot#l NN (* initialisation du mot le plus long *)
i 1
Tant que ( i GF % ) Faire
ot NN (* initialisation du mot courant *)
4 i
Tant que 994 GF%: ;/ 9#hase[4\ I N N:: Faire
ot ot D #hrase[4\ (* creation du mot *)
4 4 D 1
Fin Tant que
Si 9long9ot: H long9ot#l:: Alors
Rot#l ot (* retenir le nouveau mot le plus grand *)
Fin Si
i 4D1
Fin Tant que
;crire9N%e ot le #lus grand est FN+ ot#l:
Fin

Exercice 8
Algorithme fr!uence
Var
i+%+n-: ;ntier
ot: ChaZne
lettre : Caract$re
Dbut
;crire9N;ntrer un ot:N:+ %ire9ot:
;crire9N;ntrer une lettre:N:+ %ire9lettre:
% %ong9ot: (* longueur du mot *)
n- 0 (* initialisation du compteur doccurrence de la lettre cherchee *)
Pour i de 1 % Faire
Si 9ot[i\ F lettre: Alors
n- n- D 1 (* incrementation du nombre doccurrence *)
Fin Si
Fin Pour
;crire9lettre+N a##araZt N+ n-+ N fois dans N+ ot:
Fin
23/36

TD n 5
(Procdures et fonctions)
Objectifs
Appliquer la demarche de programmation modulaire pour construire des algorithmes
structures en procedures et fonctions
Savoir le mode de passage de parametre dune procedure et une fonction
Apprendre et distinguer lappel dune procedure et une fonction

Exercice 1
;crire une #rocdure puissance !ui calcule c = a
b
= a x a x a x .x a 9- fois:V a et -
tant des entiers #ositifs. /ester cette #rocdure
Exercice 2
;crire une #rocdure permut !ui #eret d<changer les valeurs de 2 entiers a et -.
/ester cette #rocdure
Exercice 3
;crire une fonction minimum !ui retourne le iniu de 2 entiers a et -.
/ester cette fonction
Exercice 4
1. Ln a##elle bigramme une suite de deux lettres. ;crire une #rocdure !ui calcule
le no-re d<occurrences d<un -igrae dans une chaZne de caract$res.
2. ?euton transforer cette #rocdure en fonction] )i oui crire cette fonction.
Exercice 5
;crire une fonction 1riangle !ui #eret de vrifier si les 3 no-res a+- et c #euvent
6tre les esures des c7ts d<un triangle rectangle.
Remarque: 0<a#r$s le thor$e de ?=thagore+ si a+ - et c sont les esures des c7ts
d<un rectangle+ alors a
2
F -
2
D c
2
ou -
2
F a
2 D
c
2
F a
2
D -
2


Facult des Sciences 1uridiques,
Economiques et de Gestion de 1endouba
Anne Universitaire : 2006/2007 - Semestre 1
Module : Algorithmique et structures de donnes I
Classe : 1
re
LFIAG
Enseignants: Riadh IMED FEREH & Riadh BOUSLIMI
22/36
Correction du TD 5

Exercice 1


Procdure ?uissance9a+- : ;ntier+ var c : ;ntier:
Var
i : ;ntier
Dbut
c 1
?our i de 1 " - (aire
c c A a
(in ?our
Fin

Algorithme /est programme principal]
Var
x+=+r : ;ntier
Dbut
;crire9N;ntrer un entier xFN:+ %ire9x:
;crire9N;ntrer un entier =FN:+ %ire9=:
Puissance(x,y,r) //appel de la procedure
;crire9x+N " la #uissance de N+=+ N FN+r:
Fin.
Exercice 2

Procdure ?erut9var a+- : ;ntier:
Var
aux : ;ntier
Dbut
aux a
A -
- aux
Fin

Algorithme /est programme principal]
Var
x+= : ;ntier
Dbut
;crire9N;ntrer un entier xFN:+ %ire9x:
;crire9N;ntrer un entier =FN:+ %ire9=:
Permut(x,y) //appel de la procedure
;crire9%a nouvelle valeur de xFN+x+ N et de =FN+=:
Fin.
23/36
Exercice 3
Fonction Riniu9a+- : ;ntier: : ;ntier
Var
in : ;ntier
Dbut
Si 9 aGF -: Alors
in a
Sinon
in -
Fin Si
Fin

Algorithme /est programme principal]
Var
x+=+ : ;ntier
Dbut
;crire9N;ntrer un entier xFN:+ %ire9x:
;crire9N;ntrer un entier =FN:+ %ire9=:
Minimum(x,y) (* appel de la fonction *)
;crire9%e iniu estFN+:
Fin.
Exercice 4
Procdure fr!9-igra : Chaine[2\V chn:ChaZneV var n-: ;ntier:
Var
i+ % : ;ntier
Dbut
% %ong9chn:
n- 0
Pour i de 1 9%1: Faire
Si 9chn[i\F-igra[1\ ET 9chn[iD1\F-igra[2\: Alors
n- n- D 1
Fin Si
Fin Pour
Fin
Cette #rocdure #oss$de un seul #ara$tre rsultat de t=#e entier+ donc elle #eut 6tre
re#lace #ar une fonction.
Procdure fr!9-igra : Chaine[2\V chn:ChaZne:: ;ntier
Var
i+ % : ;ntier
Dbut
% %ong9chn:
n- 0
Pour i de 1 9%1: Faire
Si 9chn[i\F-igra[1\ ET 9chn[iD1\F-igra[2\: Alors
n- n- D 1
Fin Si
Fin Pour
fr! n- (*affectation du resultat a la fonction *)
Fin
26/36
Exercice 5
Fonction triangle9a+-+c : Kel: : >oolen
Dbut
Si 9 aC2F-C2DcC2: OU 9-C2FaC2DcC2: OU 9cC2FaC2D-C2: Alors
triangle Mrai
Sinon
triangle (aux
Fin Si
Fin

27/36

TD n 6
(Les Tableaux)
Objectifs
Maitriser la manipulation des tableaux a une ou a deux dimensions.
Traitement des problemes de recherche dans un tableau (Recherche sequentielle, Recherche
dichotomique,
Savoir les principaux algorithmes de tri dun tableau.
Exercice 1
;crire une #rocdure Remplir #erettant le re#lissage d<un ta-leau de n entiers.
Exercice 2
;crire une #rocdure Afficher #erettant l<afficher les lents d<un ta-leau de n entiers.
Exercice 3
;crire une fonction Minimum #erettant de chercher le iniu dans un ta-leau /
de n entiers.
Exercice 4
;crire une fonction Rechercheseq !ui #eret de cherche un lent x dans un
ta-leau /. %a fonction renvoie Mrai s<il est existant et (aux sinon.
Exercice 5
R6e exercice !ue n^ 3 ais on su##ose !ue le ta-leau est tri.
Exercice 6
0onner le #rinci#e et l<algorithe de tri de :
/ri " -ulle
/ri #ar slection
/ri #ar insertion
Exercice 7
;crire une #rocdure !ui #eret de fusionner deux ta-leaux tris A et > contenant
res#ectiveent n et lents. %e rsultat est un ta-leau tri C " 9nD: lents.
Exemple:
A 1 20 21 B 1P 23 27 32 P1

C 1 20 21 1P 23 27 32 P1
Exercice 8
1. ;crire une #rocdure #erettant de re#lir une atriceV
2. ;crire une #rocdure #erettant d<afficher une atriceV
3. ;crire une fonction !ui renvoie la soe de deux atrices R1 et R2V
4. ;crire une fonction !ui renvoie le #roduit de deux atrices R1 et R2V

Facult des Sciences 1uridiques,
Economiques et de Gestion de 1endouba
Anne Universitaire : 2006/2007 - Semestre 1
Module : Algorithmique et structures de donnes I
Classe : 1
re
LFIAG
Enseignants: Riadh IMED FEREH & Riadh BOUSLIMI
2E/36
Correction du TD 6


Exemple de dclaration d'un tableau

Constantes
n F 100

Type
/a- F /a-leau[1..n\ de ;ntier
Var
/ : /a-
Exemple de dclaration d'une matrice

Constantes
n F 100
F 100
Type
Rat F /a-leau[1..n+1..\ de ;ntier
Var
Ratrice : Rat

Exercice 1
Procdure Ke#lir 9var / : /a-V n: ;ntier:
Var
i : ;ntier
Dbut
Pour i de 1 n Faire
;crire9N/[N+i+N\FN:+%ire9/[i\:
Fin Pour
Fin
Exercice 2
Procdure Afficher 9/ : /a-V n: ;ntier:
Var
i : ;ntier
Dbut
Pour i de 1 n Faire
;crire9/[i\+ N N:
Fin Pour
Fin
Exercice 3
Fonction Riniu9/ : /a-: : ;ntier
Var
in : ;ntier
Dbut
in /[1\
Pour i de 2 n Faire
Si 9 inH /[i\ : Alors
in a
Fin Si
Fin Pour
Fin
2P/36
Exercice 4
Principe de la recherche squentielle :
Co#arer x aux diffrents lents du ta-leau 4us!u<" trouver x ou atteindre la fin du ta-leau.

Jersion avec Rpter. jusqu'
Fonction KechercheOse! 9/:/a-V n+x:;ntier: : >oolen
Var
i+ : ;ntier

Dbut
i 0
Repeter
i iD1
1usqu' 9/[i\Fx: OU 9i F n:

Si9/[i\Fx: Alors
KechercheOse! Mrai
Sinon
KechercheOse! (aux
Fin Si
Fin

Jersion avec 1ant que. Faire
Fonction KechercheOse! 9/:/a-V n+x:;ntier: : >oolen
Var
i+ : ;ntier
Dbut
i 1
Tant que (/[i\ I x) ET 9i GFn: Faire
i iD1
Fin Tant que

Si9/[i\Fx: Alors
KechercheOse! Mrai
Sinon
KechercheOse! (aux
Fin Si
Fin

Exercice 5
Principe de la recherche dichotomique :
%e -ut de la recherche dichotoi!ue est de diviser l<intervalle de recherche #ar 2 " cha!ue
itration. ?our cela+ on #roc$de de la faWon suivante :
)oient #reier et dernier les extrits gauche et droite de l<intervalle dans le!uel on cherche
la valeur x+ on calcule + l<indice de l<lent dian :
F 9#reier D dernier : 0iv 2
30/36
&l = a trois cas #ossi-les :
x G /[\ : l<eleent x+ s<il existe+ se trouve dans l<intervalle [#reier..1\.
x H /[\ : l<lent x+ s<il existe+ se trouve dans l<intervalle [D1...dernier\.
x F /[\ : l<lent de valeur x est trouv+ la recherche est terine.
%a recherche dichotoi!ue consiste " itrer ce #rocessus 4us!u<" ce !ue l<on trouve x ou !ue
l<intervalle de recherche soit vide.

Fonction KechercheOdich9/:/a-V n+x:;ntier: : >oolen
Var
#reier+ + dernier : ;ntier
trouve : >oolen
Dbut
#reier 1
dernier n
trouve (aux
Rpter
9#reier D dernier: 0iv 2
(1)
Si 9 x G /[\ : Alors
dernier B 1
Sinon Si 9 x H /[\ : Alors
#reier D 1
Sinon
trouve Mrai
Fin Si
1usqu' 9trouveFvrai: OU 9#reierHdernier:
KechercheOdich trouve
Fin
(2)
Exercice 6
Tri bulle
Principe :

Ln r#$te le traiteent suivant :
?arcourir les lents du ta-leau de 1 " 9n1:V si l<lent i est su#rieur " l<lent
9iD1:+ alors on #erute.
%e #rograe s<arr6te lors!ue aucune #erutation n<est ralisa-le.

Procdure /riO>ulles9 var /: /a-V n: ;ntier:
Var
i+ aux : ;ntier
change : >oolen
Dbut
Rpter
change (aux
Pour i de 1 9n1: Faire
Si9/[i\ H /[iD1\: Alors
aux /[i\
/[i\ /[iD1\
/[iD1\ aux
change Mrai
Fin Si
Fin Pour
1usqu' 9change F (aux:
Fin
Optimisation de la procdure du Tri bulle
Procdure /riO>ulles9 var /: /a-V n: ;ntier:
Var
i+ aux : ;ntier
change : >oolen

31/36
Dbut
Rpter
change (aux
Pour i de 1 9n1: Faire
Si9/[i\ H /[iD1\: Alors
aux /[i\
/[i\ /[iD1\
/[iD1\ aux
change Mrai
Fin Si
Fin Pour
n n-1
1usqu' 9change F (aux: OU (n 1)
Fin
Trace d'excution
Tableau initial 6 2 2 1 2
Apres la 1
ere
iteration 2 2 1 2 6
Apres la 2
eme
iteration 2 1 2 2 6
Apres la 3
eme
iteration 1 2 2 2 6
Apres la 4
eme
iteration 1 2 2 2 6

Tri par slction

Principe :
Cette thode consiste :
chercher l<indice du #lus #etit lent du ta-leau /[1..n\ et #eruter l<lent
corres#ondant avec l<lent d<indice 1V
chercher l<indice du #lus #etit lent du ta-leau /[2..n\ et #eruter l<lent
corres#ondant avec l<lent d<indice 2V
T
chercher l<indice du #lus #etit lent du ta-leau /[n1..n\ et #eruter
l<lent corres#ondant avec l<lent d<indice 9n1:V

Procdure /riO)election9 var /: /a-V n: ;ntier:
Var
i+4+aux+indin: ;ntier
Dbut
Pour i de 1 9n1: Faire
indin i
Pour 4 de 9iD1: n Faire
Si9/[4\ G /[indin\: Alors
indin 4
Fin Si
Fin Pour
aux /[i\
/[i\ /[indin\
/[indin\aux
Fin Pour
Fin

32/36
Trace d'excution

Tableau initial 6 2 2 1 2

Apres la 1
ere
iteration 1 2 2 6 2

Apres la 2
eme
iteration 1 2 2 6 2

Apres la 3
eme
iteration 1 2 2 6 2

Apres la 4
eme
iteration 1 2 2 2 6

Tri par insertion

Principe :
Cette thode consiste " #rendre les lents de la liste un #ar un et insrer chacun
dans sa -onne #lace de faWon !ue les lents traits forent une sousliste trie.
?our ce faire+ on #roc$de de la faWon suivante :
co#arer et #eruter si ncessaire /[1\ et /[2\ de faWon " #lacer le #lus #etit
dans la case d<indice 1
co#arer et #eruter si ncessaire l<lent /[3\ avec ceux !ui le #rc$dent
dans l<ordre 9/[2\ #uis /[1\: afin de forer une sousliste trie /[1..3\
T
co#arer et #eruter si ncessaire l<lent /[n\ avec ceux !ui le #rcdent
dans l<ordre 9/[n1\ + /[n2\+T: afin d<o-tenir un ta-leau tri.

Procdure /riO&nsertion9 var /: /a-V n: ;ntier:
Var
i+4+x+#os: ;ntier
Dbut
Pour i de 2 n Faire
#os i 1
Tant que 9#os HF1: ET 9/[#os\ H/[i\: Faire
#os #os 1
Fin Tant que
pos pos + 1
x /[i\
Pour 4 de 9i1: #os [#as F 1\ Faire
/[4D1\ /[4\
Fin Pour
/[#os\x
Fin Pour
Fin

Trace d'excution
Tableau initial 6 2 2 1 2
Apres la 1
ere
iteration 2 6 2 6 2
Apres la 2
eme
iteration 2 2 6 6 2
Apres la 3
eme
iteration 1 2 2 6 2
Apres la 4
eme
iteration 1 2 2 2 6
33/36
Exercice 7
Procdure (usion 9A : /a-V >:/a-V var C:/a-V n+ :;ntierV var _ :;ntier:
Var
i+4 : ;ntier
Dbut
Tant que (i <n) ET (j < m) Faire
Si9A[i\ GF>[4\: Alors
C[_\ A[i\
i i D 1
_ _ D1
Fin Si
Si 9>[4\ GF A[i\: Alors
C[_\ >[4\
4 4 D 1
_ _ D1
Fin Si
Fin Tant que

Tant que (i <n) Faire
C[_\ A[i\
i i D 1
_ _ D1
Fin Tant que
Tant que (j <m) Faire
C[_\ >[4\
4 4 D 1
_ _ D1
Fin Tant que
Fin
On a lelement de A et
plus petit que B alors
on afoute A dans C
On a lelement de A et
plus grand que B alors
on afoute B dans C
Si on a encore des elements
dans A alors on les rafoute
successivement dans C
Si on a encore des elements
dans B alors on les rafoute
successivement dans C
32/36
Exercice 8
1. Remplissage d'une matrice
Procdure Ke#lir 9var atrice : RatV n+: ;ntier:
Var
i+4 : ;ntier
Dbut
Pour i de 1 n Faire
Pour 4 de 1 Faire
;crire9N;ntrer un entier : N:+%ire9/[i+4\:
Fin Pour
Fin Pour
Fin

2. Affichage d'une matrice
Procdure Afficher 9atrice : RatV n+: ;ntier:
Var
i+4 : ;ntier
Dbut
Pour i de 1 n Faire
Pour 4 de 1 Faire
;crire9/[i+4\:
Fin Pour
Fin Pour
Fin

3. Somme de deux matrices

Principe:
)oient R1 et R2 deux atrices " n ligne et colonnes.
R3 F R1 D R2

Exemple

M1 M2 M3


Procdure )oRat 9R1+R2 : Rat V var R3 : RatV n+: ;ntier:
Var
i+4 : ;ntier
Dbut
Pour i de 1 n Faire
Pour 4 de 1 Faire
R3[i+4\ R1[i+4\ D R2[i+4\
Fin Pour
Fin Pour
Fin

1 2 3
4 5 6
2 5 3
3 0 1
3 7 6
7 5 7
33/36
4. Produit de deux matrices

Principe:
)oient R1 et R2 deux atrices " n ligne et colonnes.
R3 F R1 A R2
R3
i+4
F R1
i+1
A

R2
1+4 D
R1
i+2
A

R2
2+4 D T D
R1
i+n
A

R2
+4

Exemple


M1 M2
M3


Procdure ?rodRat 9R1+R2 : Rat V var R3 : RatV n+: ;ntierV var _ : ;ntier:
Var
i+4 : ;ntier
Dbut
Pour i de 1 n Faire
Pour 4 de 1 Faire
R3[i+4\ 0
Pour _ de 1 Faire
R3[i+4\ R3[i+4\ D R1[i+_\ A R2[_+4\
Fin Pour
Fin Pour
Fin Pour
Fin

1 2 3
4 0 5
2 1
3 0
1 4
11 13
13 24
36/36
Bibliographie

[1\ )-astien Kohaut+ ` Algorithmique et Techniques fondamentale de programmation a+
;dition ;ni+ 2007.
[2\ ?atrice %ignelet et *ean 'irerd+ ` Algorithmique. Methodes et modeles a+ ?aris : Rasson+
1PE3.
[3\ U&/LU5& >aghdadi, Algorithmique et structures de donnees a+ Centre de ?u-lication
Universitaire+ 2003.

S-ar putea să vă placă și