Upload
anonymous-wpl47bwu4
View
213
Download
0
Embed Size (px)
Citation preview
8/19/2019 Chapitre+II-Les+structures+simples2
1/44
Sous Programmes : Procédures
Pag | 1
Analyse et Algorithme PascalSyntaxe générale Var Valeur Var := Valeur;
Exemple Moy (Dc+2*DS)/3 Moy:= (Dc+2*DS)/3;
Exe mpl e: Write (Informatique:14) InformatiqueWrite (Informatique:!)
Année Scolaire : 2010-2011Informatique
- 1 - LPS- 4 Maths 3
Mme Saoussen Maâloul
Chapitre II : Les structures simples
"ne #tructure #im$%e $eut &tre : "ne entr'e ou %ecture e onn'e#
"ne affectation "ne #ortie ou un afficae e# r'#u%tat#
I- Les entrées :ette o$'ration $ermet e %ire ou e #ai#ir une ,a%eur $ro,enant u c%a,ier ou un autre $'ri$'rique-
Analyse Algorithme PascalSyntaxe générale Var= onnée Lire !Var" #ea$ln!Var";#ea$!Var";
Exemple .=Donn'e. 0 : Donn'e
ire(.)ire(. 0)
ea%n(.); ea(.);ea%n(. 0); ea(. 0);
#e mar% ue : a %ecture e $%u#ieur# ,aria%e# e ty$e cane 5 %a foi# e#t non fonctionne%%e-
II- L&a''ectation :
ette o$'ration con#i#te 5 attriuer une ,a%eur 5 une ,aria%e- ette ,a%eur oit &tre e m&me ty$e ou e ty$ecom$ati%e a,ec cette ,aria%e-
III- Les sorties :ette o$'ration $ermet 6afficer ou 6'crire %e contenu 6une ,aria%e ou %a ,a%eur 6une e7$re##ion-
Analyse et Algorithme PascalSyntaxegénérale
(crire !) message *"(crire !Var"
+riteln !,message&"; +rite !,message&";+riteln !Var"; +rite !Var";
Exemple 8crire (9 onour >>>>C+>23 +rite !0aleur1réelle : n" @ffice %a ,a%eur r'e%%e en notation #cientifique #ur n $o#ition#-Exe mpl e: Write (124-AB! :) 1-2C+>23 +rite !0aleur1réelle : n : $" @ffice %a ,a%eur r'e%%e #ur n $o#ition# a,ec 'cima%e a,ec au#tement-Exe mpl e: Write (124-AB! :B :2) 124-A
Write (124-AB! :A :2) 124-AWrite (124-AB! : :2) 124-A
3 +rite !0aleur1réelle : 4 : $" @ffice %a ,a%eur r'e%%e a,ec 'cima%e a,ec au#tement-Exemple : Write (124-AB! :> :4) 124-AB!>
Le type cha5ne $e caract2res:
3 +rite !cha5ne : n" @ffice %a cane #ur n $o#ition#- Donc in#ertion 6e#$acement 5 auce e %acane #6i% y a $eu e caract?re# #inon au#tement automatique-
8/19/2019 Chapitre+II-Les+structures+simples2
2/44
Sous Programmes : Procédures
Pag | 2
Analyse Algorithme Pascal
Syntaxegénérale
EinitF Pour com$teur e Gi 5 Gf /aireHraitement
/inPour
InitPour com$teur e Gi 5 Gf /aire
Hraitement
/inPour
;/or om$teur := Gi HJ Gf o
einHraitement;
Cn;
Chapitre IV : Les structures $e contr6le itérati0es
Jn a eu7 ty$e# e #tructure# it'rati,e#- 7ne structure itérati0e compl2te oK %e nomre 6it'ration# e#t connu 5 %6a,ance- 7ne structure itérati0e 8 con$ition $&arr9t oK %e nomre 6it'ration# e#t inconnu 5 %6a,ance-
I- La structure itérati0e compl2te:a #tructure e contrL%e it'rati,e com$%?te $ermet 5 un $roramme e r'$'ter un t r a it e m e n t un nomre efoi# con n u 5 %6a,ance-
# em a r%ues :• e com$teur oit &tre e ty$e #ca%aire-• Si %e com$teur e#t e ty$e caract?re a%or# %e nomre e r'$'tition# e#t C(Jr(Gf)Jr(Gi)/$a#) +1-• 6incr'mentation u com$teur e#t automatique a,ec un $a# e 1 ou un $a# e 1-• Cn $a#ca% %e mou%e 5 r'$'ter e#t '%imit' $ar egin et En$ #6i% e#t com$o#' e $%u# qu6une in#truction-• Si $a#=1 a%or#: /or i :=Gf onto Gi o
II-La structure itérati0e 8 con$ition $&arr9t:a #tructure e contrL%e it'rati,e 5 conition 6arr&t $ermet 5 un $roramme e r'$'ter un t r a i t em e n t u#qu65
rencontrer %a co n i t io n 6 a rr & t-- La structure #épéter - La structure ?ant @ue
8/19/2019 Chapitre+II-Les+structures+simples2
3/44
Sous Programmes : Procédures
Pag | 3
• e traitement n6e#t e7'cut' que #i %a conition e#t ,'rifi'e onc %6e7'cution e#t e > 5 $%u#ieur# foi#-Année Scolaire : 2010-2011 - 1 -LPS- 4 Maths 3 -
Les Procédures & Les
Fonctions Un sous-rogramme est un e sé qu e n ce d' in st r u ctio n s d écl a r ée dan s u n
p r og r a m me à pa r t et !ui eut "tre e#écutée une ou lusieurs $ois %ans unrogramme rincial grâce & %es aels'
L(ael %(un sous-rogramme %ans le rogramme rincial se $ait simlementar le b ia is d e s o n p r o p r e n o m.
Le rogramme rincial s(aelle rogramme appelant Le sous-rogramme s(aelle rogramme app elé U n e v a r iab le loc a le est une )aria*le %éclarée %ans le sous-rogramme et
n(est utilisa*le !u(& l(intérieur %e celui-ci'
U n e v a r iab le g lo ba le est %éclarée %ans la artie %éclaration %urogramme rincial et est utilisa*le ar le rogramme rincial et les%i+érents mo%ules ,sous-rogrammes'
Un sous-rogramme est aelé aussi u n e P ro cé d u r e ? ou u n e F o n c t i o n ?R e m a r qu e : En Turbo Pascal, la déclaration d'un sous-programme fgureaprès la déclaration des variables globales du programme principal.Ut ili té d es s ous - p r og r a mmes :
.aciliter la tache %e résolution' /)iter la réétition %(un m"me traitement %ans un rogramme' éutiliser %es sous-rogrammes %é& %énis' .aciliter la localisation %es erreurs ainsi !ue leurs corrections'
1. Les P r o c é du r es :Les rocé%ures sont %es sous-rogrammes !ui eu)ent a)oir ou p lu sie u r s
r és u lt a ts %e te simle ou comosée'En Analyse :Def Proc nom_roc!f"#f$ : tye" % arf' :tye$ %() ésultat le,s resultat,s %ela rocé%ure ,Les aram5tres récé%és ar)ar
6raitement 71
8' 6raitement 7n
.in nom7roce%ureEn algorit*me utiliser le m+meent+te suii ar l,ensem-le destraitements
R e m a r qu e :
En ascal :Procedure nom_roc! f"# f$ : tye" % arf' : tye$ % ( ) %
9onst8'' 6e8''' ;ar
8''.unction88Proce%ure8''
8/19/2019 Chapitre+II-Les+structures+simples2
4/44
Sous Programmes : Procédures
Pag | 4
" es p a r a mè tr e s eec t i fs # gurent %ans l'in s t r u ction d'app el d e la p r océ du r e et sont su*stitués au# aram5tres $ormels au moment %e l(ael%e la rocé%ure'
Proce%ure Permut ,)ar #? :integer Permut ,6@i?6@
A e l d , un e P r o c édu r e : "es paramètres e%ecti!s et les paramètres !ormels doivent
s'accorder du point de vue n om b r e, o r dr e et t& p e.En analyse : P7e$$3 Proc Bom7%e7la7rocé%ure ,P7e+1?P7e$$2?P7e+3
>n%i!uer la ou les )aria*les %ans les!uelles la rocé%ure ren)oie les résultatsEn Algoritme : Proc Bom7%e7la7rocé%ure ,P7e$$1?P7e+2?P7e+3En Pascal : Bom7%e7la7rocé%ure ,P7e$$1?P7e$$2?P7e+3
8/19/2019 Chapitre+II-Les+structures+simples2
5/44
"'appel d'une procédure est un e i n s t r u ction d'app el i nd é p e ndan te et n e p e u t pa s $t r e dan s un e e p r e ssion comme c'est le cas pour les!onctions.
R 0 l e de s a r a m / t r e s : Cénéraliser une rocé%ure et ermettant la communication entre le
rogramme rincial et la rocé%ure' Lors %e l(ael %(une rocé%ure? le rogramme rincial asse les )aria*les &
la rocé%ure sous $orme %e aram5tres' La rocé%ure les traite et ren)oie les)aria*les a)ec leurs nou)elles )aleurs au rogramme rincial'
P a ss a g e de s a r a m / t r e s :La su*stitution %es aram5tres e$$ecti$s au# aram5tres $ormels sDaelle
passage de paramètres? elle correson% & un trans$ert %e %onnées entre lerogramme rincial ,P'P et la rocé%ure? et lDin)erse' En %istingue %eu# mo%es%e assages :
P a ss a g e a r
a l eu r : Le assage %e aram5tres ar )aleur ermet au rogramme aelant %etransmettre une )aleur & la rocé%ure aelée'
Le trans$ert %Din$ormation est e+ectué %ans un seul sens? %urogramme rincial )ers la
rocé%ure' P'PProcé%ure
Les aram5tres $ormels ne sont pas précédés par le mot !A"' Ar5s a)oir e#écuté la rocé%ure les aram5tres e$$ecti$s sont in c h a ng és'
P a ss a g e a r a r i a- l e : Le assage %e aram5tres ar )aria*le ermet au rogramme %e transmettre
une )aleur & la rocé%ure et )ice - )ersa' Le trans$ert %Din$ormation est e+ectué %ans les %eu# sens? %u
rogramme rincial )ers la rocé%ure et )ice - )ersa' P'PProcé%ure
Les aram5tres $ormels sont procédés par le mot !A"' Ar5s a)oir e#écuté la rocé%ure les aram5tres e+ecti$s procédés par le
mot !A" changent et reFoi)ent le contenu %es aram5tres $ormels'
#. Les f o n c t i o n s :
Une $onction est un sous-rogramme !ui ren)oie une )aleur %Dun seul te' 9e
te sera celui %e la $onction'
Ge$ .B nom7$onction ,$1?$2?8 :te1 $3:te2 8 : terésultat ésultat nom7$onctionnom7$onctionés
8'
8'' .in
nom7$onction
.unction nom7$onction ,$1?$2?8:te1 $1?$2?8 :te2 8 : te résultat HGéclaration %es o*ets locau#I
8/19/2019 Chapitre+II-Les+structures+simples2
6/44
A Algorit*me PascAction %DA+ectation ; .B nom7.,P7e$$ ; : nom7.,P7e+ Action %Da+ichage =crire ,.B nom7.,P7e$$ Jriteln ,nom7.,P7e+ >nstruction Si .B nom7.,P7e$$ K0 i$ nom7.,P7e+ K0 then=#ression Arithméti!ue ; .B nom7.,P7e$$2 ; : nom7.,P7e$$2
f onc t i o nLes instructions sont e#écutées & la %eman%e %e lDaelant ar une instruction%Dael'
1 n e f on c t i o n eu t + t r e a e l é e dan s un e :
8/19/2019 Chapitre+II-Les+structures+simples2
7/44
2"3 4 3 25 " "'
E$ercice 1 :
Pour chacun %es cas sui)ants %onner lDalgorithme et le co%e Pascal %Dunsous rogramme !ui ermet %e :") Saisir un caract5re alha*éti!ue'
$) Saisir une chane %e caract5re non )i%e et %e longueur ma#imaleégale & 20'') ;éri$ier est-ce !uDune chane %e caract5re %onnée est alha*éti!ue ounon'6) emlir un ta*leau 6 ar B éléments triés %ans lDor%re croissant'4) emlir un ta*leau 6 ar B éléments %Dune mani5re aléatoire ,0 N BN100'5) A+icher un ta*leau 6 %e B éléments'7) 9omter l(occurrence ,nom*re %(aarition %(un caract5re %ans unechane'
8) ;éri$ier la résence %(un caract5re %ans une chane'9) Géterminer le ma#imum %Dun ta*leau'"3) >n)erser une chane %e caract5re'
NB : Pour chacun des exercices la solution doit comporter au moins deux modules.
E$ercice # :
Soit la $onction 6raitement sui)ante écrite en Pascal :
F1;
8/19/2019 Chapitre+II-Les+structures+simples2
8/44
5'H Ouel est le rle %e cette $onction Q
8/19/2019 Chapitre+II-Les+structures+simples2
9/44
I< I IeI IcI I* I In I IoI Il I IoI IgI Ii I IeI
E$ercice % :
Soit l(Algorithme sui)ant :
3) DEF F I# I=I# I1I# II)alors
@ @ C "Fin si
Fin Pour$)
8/19/2019 Chapitre+II-Les+structures+simples2
10/44
!3) faire
E.ace !c*# # ")
888888'88''88888888'''
8/19/2019 Chapitre+II-Les+structures+simples2
11/44
Ael de la fonction Ael de la rocédure888888888888888' 8888888888888888
Fin tantque
$)
8/19/2019 Chapitre+II-Les+structures+simples2
12/44
Alors le ro%uit m'n 20 12 240 ne contient as le nom*re 20'
8/19/2019 Chapitre+II-Les+structures+simples2
13/44
1
4C>
WPOR
2A<T
XYL
Z 6U;0-
3G=V
MBE
[\]_
E$ercice :
Sur les touches ,2? 3? 4? T? V? W? Z et [ %u cla)ier %Dun téléhoneorta*le? sont inscrites %es lettres our écrire %es messages en lus %es
chi$$res'Par e#emle? sur la touche T sont inscrites leslettre X? Y et L' Pour taer la lettre X on auieune seule $ois'Pour taer la lettre Y on tae%eu# $ois'Pour taer la lettre L on auietrois $ois'=crire un rogramme ascal ermettant %e %éterminer et %Da$$icher lenom*re total %Dauies sur les touches %u cla)ier %Dun téléhone orta*le
our saisir un mot %onné %e B lettres? suosées non accentuées',4KBK['>n%ication :La $igure sui)ante %onne la réartition %es lettres sur les touches %ucla)ier %Dun téléhone orta*le'
E$ercice 2 :
Soit l(algorithme sui)ant :
3) DEF F Somme ! : entier) : entier
") S 3Pour i de " J ! di $)
RééterSi ! mod i B 3)
AlorsS SCi
FinSiFin
our
$) Somme S
') FinSomme
8/19/2019 Chapitre+II-Les+structures+simples2
14/44
"H =#écuter cet algorithme our V uis%onner son rle'$H 6rans$ormer la $onction Somme en unerocé%ure''H =crire un algorithme %(une rocé%ure Saisie? ermettant %e saisir%eu# entiers ositi$s non nuls'
6H =n utilisant les %eu# mo%ules Somme et saisie? écrire unalgorithme %(un rogramme intitulé Amis? !ui ermet %e saisir %eu#entiers ositi$s non nuls et %(a+icher s(ils sont amis ou non' Sachant !ue%eu# entiers m et n sont %is amis? si la somme %es %i)iseurs %e n estégal & m et in)ersement'
8/19/2019 Chapitre+II-Les+structures+simples2
15/44
E$ercice 13 :
< étant un ta*leau %e %imension _QA ,B7MA 100? remlir ar entiers ! _QA)HEn )ous %eman%e %Décrire un rogramme nommé E;LA
8/19/2019 Chapitre+II-Les+structures+simples2
16/44
Sa m ir
s 3 s t 5 me
< o n 1o u r
s e s elle
'36Le résultat est la somme %es nom*res %e la %eu#i5me colonne !ui sont en$ace %es nom*res imairs %e la remi5re colonne ,%onc les nom*res %e la%eu#i5me colonne !ui sont en $ace %es nom*res airs %e la remi5recolonne seront ignorés'
1W "9Z 3Z >gnor4 WV >gnor2 1T2 >gnor
1 '36
"7 V "9 B "9 C '36 B '$'
En )eut écrire un rogramme !ui lit %eu# entiers ositi$s non nulset in$érieur & 100? calcule et a$$iche le ro%uit %e %eu# entiers ar lamétho%e usse'
E$ercice 1% :
Soit lerogramme intituléinfo !uiermet %e:
Saisirla taille %Dunta*leau
8/19/2019 Chapitre+II-Les+structures+simples2
17/44
A $ r A \ c
Ge
u#
ch
an
esso
nt
%it
es
an
agr
am
me
s si
ell
es
so
nt
$or
mé
es
ar
les
m"
me
s
car
act
5re
s'
=#
em
le
:
` 9hien et ` 9hine sont
anagrammes'
E $ er ci ce 1/ :
=crire un rogramme !ui ermet %e remlir un ta*leau 6 ar Bcaract5res alha*éti!ue ,2KBK10 uis %éterminer eta+icher le nom*re %Doccurrence %Dun caract5re alha*éti!ue%onnée %ans le ta*leau 6'E
$ em
p
l e :
<
Si ;ar BIrI le rogramme a+iche ` le caract5re r e#iste%ans le ta*leau '
Si ;arBIaI le rogramme a+iche ` le caract5re a nDe#iste
as %ans le ta*leau'
Les Procédures & LesFonctions
Un sous-rogramme est une séquence d'instructions déclarée dansun programme à part et !ui eut "tre e#écutée une ou lusieurs $ois%ans un rogramme rincial grâce & %es aels'
L(ael %(un sous-rogramme %ans le rogramme rincial se $ait
simlement ar le biais de son propre nom. Le rogramme rincial s(aelle rogramme appelant Le sous-rogramme s(aelle rogramme appelé Une variable locale est une )aria*le %éclarée %ans le sous-
rogramme et n(est utilisa*le !u(& l(intérieur %e celui-ci'
8/19/2019 Chapitre+II-Les+structures+simples2
18/44
Unevariableglobaleest%éclarée%ans laartie
%éclaration %urogrammerincialet estutilisa*lear lerogrammerincialet les%i+érentsmo%ules,sous-rogrammes'
Un sous-rogramme estaeléaussi
uneProcéd ure ? ouuneFonction ?
Remarque
: En TurboPascal, la
déclaration
d'un sous-
programmefgure après
la
déclaration
des
variables
globales du
programme
principal.
Utilité des sous-programmes :
.aciliter la tache %e résolution' /)iter la réétition %(un m"me traitement %ans un
rogramme' éutiliser %es sous-rogrammes %é& %énis' .aciliter la localisation %es erreurs ainsi !ue leurs corrections'
1. Les Procédures :Les rocé%ures sont %es sous-rogrammes !ui eu)ent a)oir ou
plusieurs résultats %e te simle ou comosée'
En Analyse :
Def Proc nom_roc!f"#f$ : tye" % ar
:tye$ %()
ésultat le,s resultat,s %e la rocé%ure ,Lesaram5tres récé%és ar )ar
6raitement71
8'
6raitement7n
.in nom7roce%ure
En algorit*me utiliser le m+me ent+te
suii ar l,ensem-le des traitements
En ascal :
Procedure nom_roc! f"# f$ : t
f' : tye$ % ( ) %
9onst 8'' 6e 8'''
;ar 8''
.unction 88
Proce%ure 8''
8/19/2019 Chapitre+II-Les+structures+simples2
19/44
"es paramètr ese%ect i!s et les
paramètr es!ormelsdoivent s'accorder du point de
vuenombre,ordreet t&pe.
En
analyse :
P7e+3 ProcBom7%e7la7 rocé%ure,P7e+1?P7e+ 2?P7e+3
>n%i!uerla
ou
les )aria*les %ans les!uelles la rocé%ure ren)oie lesrésultats
En Algoritme : Proc Bom7%e7la7rocé%ure ,P7e+1?P7e+2?P7e+3
En Pascal : Bom7%e7la7rocé%ure ,P7e+1?P7e+2?P7e+3
"'appel d'une procédure est une instruction d'appel
indépendante et ne peut pas $tre dans une epression commec'est le cas pour les !onctions.R0le des aram/tres :
Cénéraliser une rocé%ure et ermettant la communication entre lerogramme rincial et la rocé%ure'
Lors %e l(ael %(une rocé%ure? le rogramme rincial asse les)aria*les & la rocé%ure sous $orme %e aram5tres' La rocé%ure lestraite et ren)oie les )aria*les a)ec leurs nou)elles )aleurs aurogramme rincial'
Passage des aram/tres :
La su*stitution %es aram5tres e+ecti$s au# aram5tres $ormelssDaelle passage de paramètres? elle correson% & un trans$ert %e%onnées entre le rogramme rincial ,P'P et la rocé%ure? et lDin)erse'En %istingue %eu# mo%es %e assages :
Passage ar aleur :
Le assage %e aram5tres ar )aleur ermet au rogrammeaelant %e transmettre une )aleur & la rocé%ure aelée'
Le trans$ert %Din$ormation est e+ectué %ans un seul sens? %urogramme rincial )ers la rocé%ure' P'PProcé%ure
Les aram5tres $ormels ne sont pas précédés par le mot !A"' Ar5s a)oir e#écuté la rocé%ure les aram5tres e+ecti$s sont
inchangés'
Passage ar aria-le :
Le assage %e aram5tres ar )aria*le ermet au rogramme %etransmettre une )aleur & la rocé%ure et )ice - )ersa'
Le trans$ert %Din$ormation est e+ectué %ans les %eu# sens? %urogramme rincial )ers la rocé%ure et )ice - )ersa' P'PProcé%ure
Les aram5tres $ormels sont procédés par le mot !A"' Ar5s a)oir e#écuté la rocé%ure les aram5tres e+ecti$s procédés
par le mot !A" changent et reFoi)ent le contenu %es aram5tres$ormels'
#. Les fonctions :Une $onction est un sous-rogramme !ui ren)oie une )aleur %Dun seul
te' 9e te sera celui %e la $onction'
8/19/2019 Chapitre+II-Les+structures+simples2
20/44
Ge$ .Bnom7$onction,$1?$2?8 :te1 $3:te2 8 : terésultat
ésultat nom7$onction
nom7$onctionés
8'
8''
.innom7$onction
Remarques
:
Pou
rles$
onctions on utilise uni!uement le mo%e %e assage ar)aleur
A la n %e la artie instruction il faut a.ecter le résultat au nomde la fonction
Les instructions sont e#écutées & la %eman%e %e lDaelant ar uneinstruction %Dael'
1ne fonction eut +tre aelée dans une :
Ael Algorit*me Pascal
Action%DA+ectation
; .Bnom7.,P7e+
; :nom7.,P7e+
Action%Dachage
=crire ,.Bnom7.,P7e+
Jriteln,nom7.,P7e+
>nstruction9on%itionnelle
Si .Bnom7.,P7e+K0 alors
i$ nom7.,P7e+K0 then
=#ressionArithméti!ue
; .Bnom7.,P7e+2
; :nom7.,P7e+2
E$ercice 1 :
Pour chacun %es cas sui)ants %onner lDalgorithme et le co%e Pascal %Dunsous rogramme !ui ermet %e :
") Saisir un caract5re alha*éti!ue'
0 Ge$ Proc saisie,)ar c :caract5re
1 ééter
=crire,dDGonner uncaract5realha*éti!ueDD
Lire,c
Xus!u(&maus,c%ans@dDADD''DD^DD
2 .in saisie
8/19/2019 Chapitre+II-Les+structures+simples2
21/44
$) Saisir unechane %ecaract5renon )i%eet %elongueur
ma#imaleégale &20'
0 Ge$ Procsaisie ,)arch :chaine
1 ééter=crire,dDGonner
unechainenon )i%e%elongueurma# 20DD
Lire,ch
Xus!u(&long,ch
%ans@1''20
2 .in saisie
') ;érierest-ce!uDunechane %ecaract5re%onnée
estalha*éti!ue ou non'
0 Ge$ .B;eri$ ,chchaine*ooléen
1 ééterSimaus,ch@i
%ans@dDADD''DD^DDAlors
6est
)rai
Sinon
6est $au#
.inSi
i iR1
Xus!u(&ilong,choutest$au#
2 ;eri$ test
3 .in ;eri$ 6) emlir un ta*leau 6 ar B entiers triés %ans lDor%re croissant'
0 Ge$ Proctrita*,)art : ta*? n :entier
1 =crire,dDGonnerélément 1
%uta*leauDD
2 Lire,t@13 Pour i %e 2
a n $aire ééter
=crire,dDGonner
6@dD?i?DD
suérieur& DD? t@i-1 Lire,t@i Xus!u(&,t@[email protected]
4 .in 6ri6a*
4) emlir un ta*leau 6 ar B entiers ositi$ %Dune mani5realéatoire ,0 K B N100'
T Ge$ ProcAleatoire,)ar
8/19/2019 Chapitre+II-Les+structures+simples2
22/44
t : ta*? )arn : entier
V eeter=crire,dDGonner0KnN100DDLire ,n
Xus!u(& n%ans @1''100
W Pour i %e 1 &n $aire
6@ialea,2TT.inPour
Z .in Aleatoire5)Acherun ta*leau
6 %e Béléments'
0 Ge$ProcAche ,t :ta*?n :entier
1 Pour i%e 1 an $aire=crire,t@i?dD| dD .in
Pour2 .in
Ache
7)9omterl(occurrence ,nom*re%(aarition %(un
caract5re%ans unechane'
0 Ge$ .B
Ecc,c :caract5re?ch :chaine :entier
1 n 0
2 Pour i %e 1 &n $aireSi ch@icalors n nR1.in Pour
3 Ecc n4 .in Ecc
8);érier la résence %(un caract5re %ans une chane'
0 Ge$ .BPresent,c :caract5re? ch :chaine :*ooléen
1 6est $au#
2 i 13 eeter
Si,ch@icalors 6est )rai .inSi i iR1
us!u(&ilong,ch outest)rairesent test
4 .inPresent
9)Géterminer le ma#imum %Dun ta*leau'
8/19/2019 Chapitre+II-Les+structures+simples2
23/44
0 Ge$ .Bma# ,t :ta* :entier
1 Mt@1
2 Pour i%e 2 & n$aireSit@imalors M [email protected] Pour
3 Ma#m
4 .in Ma#"3) >n)erser unechane %ecaract5re'
0 Ge$Proc>n)erse ,)arch :chaine
1 Pour i%e 1 &n %i) 2$aire
9h@i9h@i ch@n-iR19h@n-iR1 #
.inPour
2 .in>n)ers
e NB : Pour chacun des exercices la solution doit comporter au moins deuxmodules.
E$ercice # :
Soit la $onction 6raitement sui)ante écrite en Pascal :
F1;
8/19/2019 Chapitre+II-Les+structures+simples2
24/44
Si
o
n
!m
aKu
s
!<
i)
da
ns
IA
I#IEI
#
I>
I#
I=I
#
I1
I#
II
)alo
rs
@
@
C
"
Finsi
Fi
n
Po
ur
$)
8/19/2019 Chapitre+II-Les+structures+simples2
25/44
U
n
t
i
l
!
<e
s
t
)
o
r
!
c
B
L
e
n
g
t
*
!
;
*
)
)
%
!
e
r
i
f
:
4t
e
s
t
End
"H 9omléter les ointillés ar les %onnées man!uantes'$H Ouel est le rle %e cette $onction Q
!ériDe est ce ue une caine contient des caractères ui ne
sont pas des lettres
E$ercice :
Soit lDalgorithme %e la $onction sui)ante :
3) Def F
8/19/2019 Chapitre+II-Les+structures+simples2
26/44
function inconnu,c:stringc:car8:7o
olean%
ar
i:inte
ger
tr:7o
olean%
-egin
tr:,10 i:0
ree
at
i:iR1
tr:,ch@ic
until ,ilength,ch or ,tr
inconnu:tr
end%
") comléterlesointillesarles%onnéesmar!uantes'
$) %éter
miner lerésultatretou
rné ar la $onction our chacun %es cas sui)ants :aH inconnu ,(algorithme(? (g( inconnu )rai-H inconnu , (ascal( ?(( inconnu $au#cH inconnu , (1T(?(T( inconnu )rai
') %onner le rle %e la $onction inconnu la fonction inconnu permet de cecer un caractére c
dans une caine c et renoie s6il e$iste ou non
6) con)ertir la $onction inconnu en une rocé%ureProcedure inconnu 9c:stringc:carar tr:7oolean8
ar
i:integer
tr:7oolean
7egin
tr:491438
i:43
repeat
i:4iC1
tr:49c>i?4c8
until 9i4lengt9c88 or 9tr8
end
4) recoier et comléter le ta*leau sui)ant sachant !ue lDael se$ait en utilisant une )aria*le :
Ael de la
fonction
inconnu
Ael de la
rocédure
inconnu
I :4inconnu9
cc8
*nconnu9c
c$8
E$ercice 0 :
=crire un rogramme ermettant %Dacher tous les coules %Dentiers,m?n )ériant la roriété sui)ante :
M ∈@1?100 et n∈@2?1T
=t m gure %ans lDécriture %u ro%uit m'n
=#emles :
1- Si m 20 et n VAlors le ro%uit m'n 120 contient le nom*re 20 %ans ce cas lecoule ,20?V sera aché'
8/19/2019 Chapitre+II-Les+structures+simples2
27/44
2- Si m 20et n 12
Alors lero%uitm'n 20
12 240 necontientas lenom*re20'
program
Welcome;
usesWinCrt;
var
m,n,i,j:byt
e;
procedure
saisie(var
m,n:byte);
begin
repeat
writeln('Do
nner m dans
[1..100]');
readln(m);
until m in
[1..100];
repeat
writeln('Do
nner n dans
[2..15]');
readln(n);
until n in
[2..15];
end;
procedure couple(m,n:byte);
var
chm, chp:string;
p:byte;
begin
str(m,chm) ;
str(n*m,chp);
p:=pos(chm,chp);
if p0 then
writeln(m,',',n,'Le couple verifie les propriétés')
else
writeln('Le couple ne vérifie pas les propriétés');
end;
begin
saisie(m,n);
couple(m,n);
end.
E$ercice :
Sur les touches ,2? 3? 4? T? V? W? Z et [ %u cla)ier %Dun téléhoneorta*le? sont inscrites %es lettres our écrire %es messages en lus %eschi+res'
Par e#emle? sur la touche T sont inscrites les lettre X? Y et L'
Pour taer la lettre X on auie une seule $ois'
Pour taer la lettre Y on tae %eu# $ois'
Pour taer la lettre L on auie trois $ois'
=crire un rogramme ascal ermettant %e %éterminer et %Dacher lenom*re total %Dauies sur les touches %u cla)ier %Dun téléhone
8/19/2019 Chapitre+II-Les+structures+simples2
28/44
orta*leour saisirun mot%onné %e Blettres?suosées
nonaccentuées',4KBK['
>n%ication :
La guresui)ante%onne laréartition
%es lettressur lestouches %ucla)ier %Duntéléhoneorta*le'
1 2
A
T
XYL
W
POS
Z
6U; \]
R 0
-
program caract;
uses WinCrt;
var
nbr,n:byte;
ch:string;
procedure rempli(var n:byte;var ch:string);
var
i:byte;
test:boolean;
begin
repeat
writeln('Donner une chaine sans caracteres accentués') ;
readln(ch);
n:=length(ch);
i:=0;
test:=true;
repeat
i:=i+1;
if not(upcase(ch[i]) in ['A'..'Z']) then
test:=false;
until (test=false) or (i=n);
until (n in [4..9]) and test;
end;
procedure appui (ch:string;var nbr:byte;n:byte);
var
i:byte;
begin
nbr:=0;
for i:=1 to n do
begin
case upcase(ch[i]) of
'A','D','G','J','M','P','T','W':nbr:=nbr+1;
8/19/2019 Chapitre+II-Les+structures+simples2
29/44
'B','E','H','K','N','Q','U','X':nbr:=nbr+2;
'C','F','I','L','O','R','V','Y':nbr:=nbr+3;
'S','Z':nbr:=nbr+4;
end;
end;
end;
begin
rempli(n,ch);
appui(ch,nbr,n);
writeln(nbr);
end.
E$ercice
2 :
Soit
l(algorithme
sui)ant :
3)DE
FFSomme!:entier):
entier
") S 3Pour i de " J ! di $) faire
Si ! mod i B 3) Alors
S
SCi
FinSi
Fin our
$) Somme S') Fin Somme
"H =#écuter cet algorithme our V uis %onner son rle'Pour B5 la somme est égale J 5 la fonction ermet de calculer
la somme des diiseurs
$H 6rans$ormer la $onction Somme en une rocé%ure'3) DEF Proc Somme ! :entier % ar s :entier)") S 3$) Pour i de " J ! di $) faire
Si ! mod iB3) alors
S sCi
FinSi
FinPour
') Fin Somme
'H =crire un algorithme %(une rocé%ure Saisie? ermettant %e saisir%eu# entiers ositi$s non nuls'
3) DEF Proc saisie !ar W#y : entier)") Rééter
Ecrire !O,Donner deuW entiers W et y ositifs et non nuls,,)
Lire !W#y) TusquMJ !WX3) E< !yX3)
$) Fin Saisie
6H =n utilisant les %eu# mo%ules Somme et saisie? écrire un algorithme%(un rogramme intitulé Amis? !ui ermet %e saisir %eu# entiers ositi$snon nuls et %(acher s(ils sont amis ou non' Sachant !ue %eu# entiers met n sont %is amis? si la somme %es %i)iseurs %e n est égal & m etin)ersement'
3) De-ut Amis") Proc Saisie!m#n)$) Sn somme!n)') Sm somme!m)6) Si !smBn) E< !snBm) alors
8/19/2019 Chapitre+II-Les+structures+simples2
30/44
Ecrir
e !m#
O, et
O,#n#,,
sont
deuW
nom-res
amis,
,)
Sino
n
Ecrir
e !m#
O, et
O,#n#,,ne
sont
as
deuW
nom-
res
amis,
,)
FinS=4) F=
Amis
E$ercice
13 :
< étant unta*leau %e%imension_QA
,B7MA 100?remlir ar entiers
!
_QA)H
En )ous %eman%e %Décrire un rogramme nommé E;LA
8/19/2019 Chapitre+II-Les+structures+simples2
31/44
readln(t[i]);
end;
end;
procedure
eclat
(t:tab;n:byte;
var
tn,tp:tab;var
nn,np:byte);
var
i:byte;
begin
nn:=0;
np:=0;
for i:=1 to n
do
if t[i]
8/19/2019 Chapitre+II-Les+structures+simples2
32/44
writeln('Sur
quel entier
naturel
voulez-vous
effectuer le
test dunombre
parfait?');
readln(x);
until (x>0);
end;
procedure
parfait(x:lon
gint);
var
s,d:longint;
begin
s:=0;
for d:=1
to (x div 2)
do
if x
mod d=0
then
s:=s+d;
if s=x
then
writeln(x,'
Nombre
parfait')
else
writeln(x,' Nombre non parait');
end;
begin
saisie(x);
parfait(x);
end.
E$ercice 1# :
La ` multilication Russe est une métho%e articuli5re ermettantla multilication %e %eu# entiers A et < en utilisant seulement lamultilication ar 2? la %i)ision ar 2 et lDa%%ition'
E$emple : our A 1W et < 1[? le ro%uit %e A ar < se $ait commesuit :
A @
"7 "9
Le remier nom*re est %i)isé ar 2 ,%i)ision enti5re et le %eu#i5me estmultilié ar 2 : on aura
8 '8
Le rocessus se ré5te us!uD& a)oir %ans la remi5re colonne 1 :
"7 "9
8 '8
6 75
$ "4$
" '36
Le résultat est la somme %es nom*res %e la %eu#i5me colonne !ui sonten $ace %es nom*res imairs %e la remi5re colonne ,%onc les nom*res%e la %eu#i5me colonne !ui sont en $ace %es nom*res airs %e laremi5re colonne seront ignorés'
1W
"9
Z 3Z >gnoré
4 WV >gnoré
8/19/2019 Chapitre+II-Les+structures+simples2
33/44
2 1T2
>gnoré
1 '36
"7 V
"9 B
"9
C
'3
6
B
'$'
En)eutécrireunrogr
amme !uilit%eu#entiersositi$ s nonnulsetin$érieur &
100?calcule etache lero%uit %e%eu#entiers arla
métho%eusse' progr
am
Russe
;
uses
wincr
t;
var
a,b:byte;
r:longint;
procedure saisie (var a,b : byte);
begin
repeat
writeln('Donner deux entiers a et b entre 1 et 99');
readln(a,b);
until (a in [1..99]) and (b in [1..99]);
end;
procedure mult (a,b:byte; var r :longint);
var
x,y:longint;
begin
x:=a;
y:=b;
repeat
x:=x div 2;
y:=y*2;
until (x=1);
r:=b+y;
end;
begin
saisie(a,b);
mult(a,b,r);
writeln(a, ' * ', b ,' = ',r);
end.
8/19/2019 Chapitre+II-Les+structures+simples2
34/44
E$ercice 1%
:
Soit le
rogramme
intitulé info !ui ermet
%e :
Saisirlataille %Dunta*leau
8/19/2019 Chapitre+II-Les+structures+simples2
35/44
procedure
remplir
(n:byte; var
t:tab);
begin
for i:=1 to n
do
repeat
writeln('Donn
er la chaine
de la case ',
i);
readln(t[i]);
until
(length(t[i]) in
[3..20]) ;
end;
procedure
totalo
(n:byte;
t:tab);
begin
writeln('Les
chaines
totalogramm
es sont:');
for i:=1 to n
do
if t[i][1]=t[i][length(t[i])] then
write(t[i],' | ');
end;
begin
saisie(n);
remplir(n,t);
totalo(n,t);
end.
E$ercice 1& :
Un te#te est %it tautogramme si tous les mots commencent ar la
m"me lettre'
E$emple :
` Mabarin? ministre mala%e? mé%itait m"me mori*on% malicieusement
mille malttes
En suose !ue la hrase est écrite correctement' ,Pas %Desace en
%ou*le
=crire un rogramme !ui ermet %e )érier si une chane %e caract5re
saisie au cla)ier est tautogramme ou non'
program Welcome;
uses WinCrt;
var
ch:string;
procedure saisie (var ch:string);
begin
repeat
8/19/2019 Chapitre+II-Les+structures+simples2
36/44
writeln('Donn
er une
chaine');
readln(ch);
until(pos('
',ch)=0);
end;
function
tauto
(ch:string):bo
olean;
var
c:char;
p:byte;
begin
c:=ch[1];
repeat
p:=pos('
',ch);
delete(ch,1,
p);
until
(cch[1]) or
(p=0);
if cch[1]
then
tauto:=false
else
tauto:=true;
end;
begin
saisie(ch);
if tauto(ch) then
writeln( ch , ' est un tautogramme')
else
writeln(ch, ' n''est pas un tautogramme');
end.
E$ercice 1 :
=crire un rogramme !ui ermet %e %ire si %eu# chanes ch1 et ch2 ,non
)i%es sont anagrammes ou non'
Geu# chanes sont %ites anagrammes si elles sont $ormées ar les
m"mes caract5res'
=#emle : ` 9hien et ` 9hine sont anagrammes'
program Welcome;
uses WinCrt;
var
ch1,ch2:string;
procedure saisie(var ch1,ch2: string);
begin
repeat
writeln('Donner ch1 non vide');
readln(ch1);
8/19/2019 Chapitre+II-Les+structures+simples2
37/44
writeln('Do
nner ch2
non vide');
readln(ch
2);
until
(length(ch1)<
>0) and
(length(ch2)<
>0) and
(length(ch1)=
length(ch2));
end;
function
anag(ch1,
ch2:string):b
oolean;
var
i,p:byte;
test:boole
an;
begin
test:=true;
i:=1;
repeat
p:=pos(ch
1[i],ch2);
i:=i+1;
until (i>length(ch1)) or (p=0);
if p=0 then
test :=false;
anag:=test;
end;
begin
saisie(ch1,ch2);
if anag(ch1, ch2) then
writeln(ch1,' et ', ch2,' sont anagrammes')
else
writeln(ch1,' et ', ch2,' ne sont pas anagrammes')
end.
E$ercice 1/ :
=crire un rogramme !ui ermet %e remlir un ta*leau 6 ar Bcaract5res alha*éti!ue ,2KBK10 uis %éterminer et acher lenom*re %Doccurrence %Dun caract5re alha*éti!ue %onné ar lDutlisateur%ans le ta*leau 6'
E$emple :
<A $ r A
\
c
Si ;ar BIrI le rogramme ache ` le caract5re r e#iste %ans le
ta*leau '
Si ;arBIaI le rogramme ache ` le caract5re a nDe#iste as
%ans le ta*leau'
program Welcome;
uses WinCrt;
type
8/19/2019 Chapitre+II-Les+structures+simples2
38/44
tab=array[1..
10] of char;
var
m,n,i,j:byte;
t:tab;
c:char;
procedure
saisie(var
n:byte);
begin
repeat
writeln('Donn
er n dans
[2..10]');
readln(n);
until n in
[2..10];
end;
procedure
rempli(var
t:tab; n:byte);
var
i:byte;
begin
for i:=1 to n do
repeat
writeln('Donner un caracètre');
readln(t[i]);
until upcase(t[i]) in ['A'..'Z'];
end;
function occ(t:tab;n:byte;c:char):byte;
var
i,oc:byte;
begin
oc:=0;
for i:=1 to n do
if t[i]=c then
oc:=oc+1;
occ:=oc;
end;
begin
saisie(n);
rempli(t,n);
writeln('Donner le caracètre recherché');
readln(c) ;
if occ(t,n,c)0 then
writeln('le caractère ',c,' existe dans le tableau et apparait ',occ(t,n,c),'
fois')
8/19/2019 Chapitre+II-Les+structures+simples2
39/44
else writeln('le caractère ',c,' n''existe pas dans le tableau');
end.
La structure : 6ant !ue $aireLa structure itérati)e & con%ition %Darr"t : tant !ue $aire est utilisé elors!ue la con%ition %oit "tre testée a)ant lDe#écution %u traitement &rééter' Structure utilisée lors!ue le nom*re %e traitement nDest as connu &lDa)ance'
oca-ulaire etsyntaWe :Au nieau del,analyse et
l,algorit*me@init6ant !ue,con%ition $aire>nstruction
18>nstruction
n.in tant !ue
Au nieau ascal
\hile ,con%ition
%onstruction 1 8>nstruction
n =n%
Les instructions seront e#écutées aumoins Yéro fois
Si la )aleur %e la condition est raie# l(or%inateur %oit e#écuterles instructions 1 & n' Si la )aleur %e la con%ition est fausse# l(e#écution %es
instructions 1 & n sMarr+te et l(or%inateur asse & l(e#écution %elMinstruction !ui se trou)e uste ar5s fin tant que La *oucle tant !ue nDest utilisée si la con%ition nDest as )éri$iée %és laremi5re $ois'
Actiité"H=crire une analse un algorithme uis un rogramme ascal intituléS>QQE !ui ermet %Da$$icher la somme %Dune liste %Dentiers saisie' Laliste se termine ar 0 !ui ne $era as artie %e la somme'=#emle :T? -3? W? 0 S [
Actiité$H=crire une analse? un algorithme et sa tra%uction en PAS9AL %(unrogramme !ui ermet %e :
7 Saisir un entier ' ,a)ec
8/19/2019 Chapitre+II-Les+structures+simples2
40/44
2NBN20 7 9harger un ta*leau ) ar 'entiers'
7 A$$icher lDin%ice ind %u remiernom*re air'
Actiité'HEn se roose %e calculer le P;D %e %eu# entiers ositi$s enutilisant la métho%e %e %i$$érence : Le lus gran% %es entiers A et <reFoit la )aleur %e la %i$$érence %es entiers us!uD& A
8/19/2019 Chapitre+II-Les+structures+simples2
41/44
La structure : QQE !ui ermet
%Dacher la somme %Dune liste %Dentiers saisie' La liste se termine ar 0 !ui ne $era asartie %e la somme'=#emle :T? -3? W? 0 S [
rogram sommeuses Jincrt)arsom? n:integer*eginJriteln,(Gonner un nom*re:(rea%ln,nsom:0Jhile,nK0 %o*eginsom:somRnJriteln,(Gonner un nom*re:(rea%ln,nen%Jriteln,(La somme (en%'
Actiité $H=crire une analse? un algorithme et sa tra%uction en PAS9AL %(un rogramme !uiermet %e :
7 Saisir un entier ' , a)ec 2KBK20
8/19/2019 Chapitre+II-Les+structures+simples2
42/44
7 9harger un ta*leau ) ar ' entiers' 7Acher lDin%ice ind %u remier nom*re air'
rogram airuses Jincrt)art:arra@1''20o$ integersom? n?i? in%:integer*eginreeatJriteln,(Gonner n la taille %uta*leau entre 2 et 2:(
rea%ln,nuntil n in @2''20$or i:1 to n %o*eginJriteln,(6@(?i?((rea%ln,t@ien%i:1in%:0Jhile ,in%0 an% ,iKn %o*egini$ ,t@i mo% 2 0 then in%:i else i:iR1en%i$ in%0 thenJriteln,(Pas %e nom*re air %ans leta*leau#(elseJriteln,(Premier nom*re air %ans la
osition sui)ante :(? in%en%'
Actiité 'HEn se roose %e calculer le P;D %e %eu# entiers ositi$s en utilisant la métho%e %e%i+érence : Le lus gran% %es entiers A et < reFoit la )aleur %e la %i+érence %es entiers
us!uD& A
8/19/2019 Chapitre+II-Les+structures+simples2
43/44
sinon < K-- < - A .insi .in 6ant!ue,A?
8/19/2019 Chapitre+II-Les+structures+simples2
44/44
)arn?tem? r? som:integer*eginJriteln,(Gonner un entier :(rea%ln,ntem:n
som:0Jhile nK0 %o*eginr:n mo% 10r:rrrsom:somRrn:n %i) 10en%i$ ,somtem thenJriteln,tem?( est un Bom*reArmstrong(
elseJriteln,tem?( n((est as un Bom*reArmstrong(en%'