Cours de mathématiques - 2ème année de CPGE économique et commerciale, voie ECE, Eléments de Turbo-Pascal

De
Publié par

Ce cours est composé de 13 chapitres : (1) Espaces vectoriels (2) Applications linéaires (3) Probabilités discrètes (4) Suites et séries réelles (5) Réduction des endomorphismes (6) Vecteurs aléatoires (7) Intégration (8) Fonctions de deux variables (9) variables à densité (10) Problèmes de convergence et approximations en probabilités (11) Formules de Taylor et développements limités (12) Estimation (13) Eléments de Turbo-Pascal
Publié le : vendredi 1 janvier 2010
Lecture(s) : 30
Licence : En savoir +
Paternité, pas d'utilisation commerciale, partage des conditions initiales à l'identique
Nombre de pages : 16
Voir plus Voir moins

Chapitre 13.

Table des

mati`
eres

1

Ele´mentsde

Turbo-Pascal

1 Les bases en Turbo-Pascal
1.1 Structure d’un programme Pascal. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.2 Variables et types. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.3Proce´durespre´de´finies.........................................
1.4 Bouclefor...to...do.. . . . . . . . . . . . .. . . . . . . . . . . . . . . . . . . . . . . . . . .
1.5 Bouclewhile...do.... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.6 Boucleeprli..ae.tu.tn. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.7 Structures conditionnelles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.8 Tirage au sort . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

2

3

4

5

6

Analyse et Turbo-Pascal
2.1De´clarationd’unefonction.......................................
2.2 Suit ´ rentes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
es recur
2.2.1 Calcul du terme de rangn. . . . . . . . . . . .. . . . . . . . . . . . . . . . . . . . . . .
2.2.2 Vitesse de convergence vers une limite connue . . . . . . . . . . . . . . . . . . . . . . . .
2.2.3Majorationparunesuiteg´eom´etrique............................
2.2.4R´ecurrenceportantsurplusieurstermes...........................
2.3 Calcul de sommes et applications. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.3.1G´ene´ralite´s...........................................
2.3.2Calculapproch´edelasommed’unese´rie...........................
2.3.3Calculapproch´ed’int´egrales..................................
2.4 Solution d’un ´ uation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
e eq . . . . . . . . . .
2.4.1Me´thodededichotomie....................................
2.4.2Me´thodedeNewton......................................

Proce´dures.
3.1G´en´eralit´es...............................................
3.1.1De´clarationdelaproce´dure:passageparvaleurouparvariable..............
3.1.2 Variable locale . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.2Exemplesdeproce´dures........................................
3.2.1 Calcul du terme de rangnd.ne’u.i.t.s.u..........ecnerrcu´errpaiefin´eed
3.2.2Recherchedelasolutiond’unee´quationpardichotomie..................
3.2.3Proc´dree´change.......................................
e u

R´ecursivite´.
4.1Fonctionre´cursive...........................................
4.1.1 Fonction factorielle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4.1.2 Fonction puissance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4.2Proc´edurerecursive...........................................
´

Tableaux, compteur, tris.
5.1 Tableau. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
5.1.1G´en´eralit´es...........................................
5.1.2 Compteur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
5.2Trid’untableaudevaleursal´eatoires.................................
5.2.1Tri`abulles...........................................
5.2.2Recherchedansuntableautrie´................................

Simulationd’expe´riencesal´eatoires.
6.1Loige´om´etrique.............................................
6.2 Loi binomiale . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
6.3Loihyperge´ome´trique.........................................
6.4 Loi uniforme sur un intervalle [a b. . . . . . .] . . . . . . . . . . . . . . . . . . . . . . . . . . .
6.5 Loi exponentielle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
6.6Loinormalecentre´er´dite.................
e u . . . . . . . . . . . . . . . . . . . . .

Brigitte

Bonnet,Lyce´eInternationaldeValbonne

2
2
2
3
3
3
4
4
4

5
5
5
5
5
6
6
6
6
7
7
8
8
8

9
9
9
9
9
9
10
10

11
11
11
11
11

12
12
12
12
12
13
13

14
14
14
15
15
16
16

Juillet 2010

1

Les bases en Turbo-Pascal

1.1 Structure d’un programme Pascal.

2

Unprogrammeestcompose´d’uneive´eclaratrapdeitet d’unprogramme principal.
Lapartiede´clarativepermetded´efinirlesvariables,fonctionsetp´edesqu’onutiliseradanslepr
roc ur ogramme
principal.

Program truc ;
var x :real ;
n,i :integer ;
function f(y :real) :real ;
begin
f :=...
end ;
procedure fait ceci(x,y :real ;var t :real) ;
begin{nocaledunetdu´eocprre}end ;
BEGIN
{PROGRAMME PRINCIPAL}
END.

1.2 Variables et types.

ecd´ralaaPtrei
tive



Unevariable’ued“aneesdr”.senuemac“e,”esinumtrˆeutpemocee´re´disnoce

Danslapartied´eclarative:red´eclarunnonantm,es,”“eacdinoneulse´etresttceerrvravenu’c,elbai
qu’onappelleunidentificateur,etend´efinissantletypeelc,e’tsetavirbadecetelleleuquaelmbseenl’redia--`
appartient.
Unidentificateurest soit une lettre (x,u,k...) soit un mot (alea, limit...).
Untype’dpoe´aritnoesdtefonctions.eseenunstnimulemb
Lestypesutilise´scetteann´eesontlessuivants:

a)integer: ensembleZdes entiers relatifs.
Lesope´rationsde´finiespourcetypesont:+∗−,div(a div bestle quotient deaparbdans la division
euclidienne),mod(a mod bestle reste dans la division euclidienne deaparb.)
Une variable “ indice de boucle”for..to..dodoittoujoursˆetredepteyinteger.

b)longint: ensembleZsedpyqecetelisinOtuifs.elatersrentisreipe´dedretnesutitisilnduadoonassantla
valeur 215reˆtaoisn.etLnoesl´mpspourinteger.
so emes que

c)real: ensembleRnsedlsee.bromr´es
Lesope´rationsde´finiespourcetypesont:+∗− /(division dansR).

d)boolean: une variable de ce type n’est pas un nombre mais ne peut prendre que deux valeurs,TRUE
ouFALSE.
Remarque´eraselintmelegasedunitO:erpsxeeo´blsoneoninseselrustnel2savga´emeleretprendop,navu
TRUEouFALSErmedusfontsoouvenos,oenusie´e´laertrˆeutpeui,qonitidnocenutnatne,repr´esomecrapaonis.
Exemples:i=1, f(a)>=0, abs(b-a)<1e-8(ce qui se traduit par :|b−a|<10−8).
Uneexpressionboole´enne,ouunevariablebl´eenne,estattendueapre`swhileouifouuntil.
oo

e)array[a..b] of integeruanudimiu’tnbaelldenombrensionnee´rp´sicudseepytice(esidtdgi’als:I
entiers)dontles“cases”sontnum´erote´esdeaa`busontnot´eeses.Lenerff´disesacsetaelbatudt[k](,e´´lmenet
nume´rokdabutaulets)emocetropctneemmooi(Ve.s´ci´eprpeytudselbairavsed4e).iprtcrah

Dans le programme principal : on donne unevaleurvaneabriau`:ossiblesafc¸nopselededxu

a)affectation: ;x :=3avaletcexa`3ruel).affon(
x :=y ;lsnaravalbai)yee`nuetacstintdanvalaa`lxnoetuecr(ecteonaff
n :=n+1 ;)naosancneinnvelaueargue(motnnaeff´edcet1ee`
u :=f(u) ;ncnanniealevrpeua`eti’luegamosed(onaffecraf.
Attention !ne pas confondrex :=y ;(affectation) avecx=y ; )(comparaison, expression bool´
eenne .

BrigitteBonnet,Lyc´eeInternationaldeValbonne

Juillet 2010

3

b)lecture:readln(x) ;l’exdant(pengoarudrpitnoe´ucisileuate,mmutl’valclreitneruaeru’ilavaleurq
d´esireaffectera`x.L’instructionreadln(x) ;es.xrdser`eu’aalttcealevnemeed”tgernrtsictue“l’eeffe

1.3Proce´durespr´ede´finies

write(’lenombrecherche´est’,a);esphlaetrctinertaeoptsor(afficheletexte´evaleurde a)
writeln(x) ;ffia().neigaltnnelaal`elaustiavalchelexeneurd
Affichaged’unevariableentie`re:writeln(k :5).susurenpselonbmerract`ereacede5cadr`ateoial:neig
Affichagede´cimald’unr´eel:writeln(x :8 :4)gien:lambrelenooite`adrrususpneedaccae8tcarere`va,sce
4chiffresapr`eslavirgule.
Read(x) ;l’utrparateuilisa’efferltlavatc`etrisegnreualavelee´nnodreivalcua.)lbxeraaei(
Readln(x) ;oseemech(mˆe.e)itsuenengilala`tnallan
Writeln ;rienaffichignesansel`rlala(aftila.)re
Readln ;rendcolad’etteat(mreppesanadtlai’es`rde“emmanr”avntrerra“()etrusteˆtiuctrnsanivsuon
image ”).

1.4 Bouclefor...to...do.

Utilisationeutcenurcaˆt´rehou:Pfferednauq,evitite´pepeta´ed’rembnole.uocnnests
Ecriture:for k :=p to n do begin
{instructions}
end ;

Remarques :
•quand il n’y a qu’une seule instruction, il est inutile de mettre “ begin ” et “ end ; ”
•ypetnteer(ietein)reg.Liablavarftrokesenedt´cme
•eLsniscurttionsnedoiventjaamsiomidefilrvalardeu(nekasepecaffuretavenruel)ka`.
•On doit avoir n≥p.

Ex´ecutionorabd’ndeualavdltceffa(prininoitae)ettialenteaugmcaahed`1tepauq´eecA.euqah:pker
e´tape,leprogrammeeffectuelesinstructionsencadre´esparbeginetend.Apre`sl’e´tapecorrespondanta`k=n,
leprogrammepasse`al’instructionquisuitle“end”delaboucle.
Exemples
u :=a ; for k :=1 to n do u :=f(u) ;(calcul du termeund’une suite de premier termeu0=aeinfie´dte
parlarelationdere´currenceun+1=f(un)).

for k := 1 to 20 do writeln(k :3,k*k :6,sqrt(k) :8 :3)) ;n“taranu’´ece`alffiahc(-aveduaelb
leurs”contenantles20premiersentiers,leurscarr´es,leursracinescarre´es).

1.5 Bouclewhile...do...

S’emploiequandlenombred’e´tapesd’unalgorithmen’estpasconnu,maisquel’arreˆtdecetalgorithmeest
subordonne´a`lare´alisationd’uncertaine´ve´nement:tant que{condition}faire{instruction}.
La“condition”estuneexpressionboole´enne(quipeutprendrel’unedesvaleurs“vrai”ou“faux”).
“L’instruction”estg´ene´ralementcomposeed’uneouplusieursaffectations.S’ilyenaplusd’uneilfaut
´
les “ encadrer ” parbeginetend ;.

Exemple :Soituune suite de premier termeu0=a:arefid´epniteun+1=f(un), qui converge vers une
limite`. La boucle qui suit calcule le plus petit rangntel queunsoorpparuelavenutiedech´e``a10−8pre`:s
u :=a ; n :=0 ;
while abs(u-`)>1e-8 do
begin
u :=f(u) ; n :=n+1 ;
end ;

BrigitteBonnet,Lyc´eeInternationaldeValbonne

Juillet 2010

1.6

Boucle

repeat..until..

Meˆmeutilisationquelabouclepre´c´edente.
Leprogrammeduparagraphepr´ec´edents’´ecritalors:

u :=a ; n :=0 ;
repeat
u :=f(u) ;
n :=n+1 ;
until abs(u-`)<=1e-8

4

Onnotequ’iln’estpasne´cessaired’encadrerlesinstructionseffectu´eesdanslaboucleparbeginetend.

1.7 Structures conditionnelles

a) Structure conditionnelle simple :if..then..

Exemple:if x>=0 then y :=sqrt(x) ;
Lastructures’´ecrit: ;if <condition> then <instruction>
ou`laconditionestuneexpressionbool´eenne,etl’instructionestuneaffectation,ouplusieurs,encadr´eesalors
parbeginetend.
Traductionla condition est vraie, alors effectuer l’instruction, sinon, ne rien faire.: si

b) Structure conditionnelle alternative :if..then..else

Exempledsnoeneltcoinnuodde2r´eeplusgran:sl:nofettec
function maximum(a,b :real) :real ;
begin
if a>b then maximum :=a
else maximum :=b ;
end ;

La structure est :
if <condition> then <instruction 1>
else <instruction 2> ;

Traduction: Si la condition est vraie alors effectuer l’instruction 1, sinon effectuer l’instruction 2.

Remarque : il ne faut jamais mettre un point virgule avant leelse.

1.8 Tirage au sort

Laproc´edurepr´ede´finierandomize ;tialisermetd’inipretdbu´eudtouetrageuntiatoial´elni’erO.riaasnrc
programmeprincipalcomportantdestiragesausort,c’est-`a-direutilisantlafonctionrandom ;, avec ou sans
variable.

La fonctionrandom ;, sans variable donne unrembno´reelau hasard dans l’intervalle [01].
Si on a l’instruction ;X :=randomseXeenutravalbaiamgr,ldmesuanronputenolieruqsiiual´eatoivariable
uniforme sur l’intervalle [0irav(]1´e).nsit`adeable

La fonctionrandom(n) ;donne unnombre entierau hasard entre 0 etn−1.
Si on a l’instructionX :=1+random(100) ;equiogprunnslae,mmraadbleaariatoirl´eabaelavirnuveeXts
suit une loi uniforme sur [[1100edblcris(v]]iaarete`.)

BrigitteBonnet,Lyc´eeInternationaldeValbonne

Juillet 2010

2

2.1

Analyse

et Turbo-Pascal

De´clarationd’unefonction

5

Lad´eclarationd’unefonctionsefaitentie`rementdanslapartiede´clarative.
Bienv´erifierqueletypedelavariabled’entr´eeetceluidelavariabledesortiesontcoh´erentsavecleprobleme
`
propose.
´

Exemple 1:
function f(x :real) :real ;
begin
f :=2*x/(1+x*x) ;
end ;

Sixseavtliaaredblnt’eee´rval,airadelboresestia2er+1xx2;fest une fonctionr´eellede variablellee´re.

Dans le programme principal on peut utiliser par exemplef(5), f(u)(uo`utuesvanellee,)ebair´relf(k)(o`u
kedescommtpasisencsmomsiabaelavirxpsecen!iontteAtlitu’sensnoisserestunevaite`er.)irbaelneemeds
constantes:onpeutsoitafficherleurvaleur,soitaffecterleurvaleura`unecertainevariable,soitlesutiliser
dans un calcul.

Exemple 2sqor:lndi-recouctuestrsilinureresntua`failpeutitfinn,iolbdedee´dee’snmeprobl`emu’ilyaun
tionnelle.
Function f(x :real) :real ;
begin
if x<=-1 then f :=0
else f :=sqrt(x+1) ;
end ;

Exemple 3epno’sturce´aericuvelgnaitorephmulcsmolpxe,evaceutilisa-celal:seavucdlsd’uleurnctinefo
tion´eventuelledevariable(s)locale(s).

function fact(k :integer) :longint ;
var i :integer ; x :longint ;
begin
if k=0 then fact :=1
else begin
x :=1 ;
for i := 1 to k do x :=x*i ;
fact :=x ;
end ;
end ;

2.2Suitesre´currentes

Soiturtermenfieiapsrnorpmeeineu´eeditsuu0et la relation :un+1=f(unuo`,)f
num´erique.

2.2.1 Calcul du terme de rangn

est une fonction

La fonctionfeurs,eparaille´ralce´dtnate´nbmerneitattnnuon´e,asilruetrlpati’udoer´ennae´rtnatrpeleime
terme de la suite, on utilise une bouclefor..to..doet le programme est le suivant :

u :=a ;
for k :=1 to n do u :=f(u) ;

2.2.2 Vitesse de convergence vers une limite connue

On suppose que la limite`est connue, et on cherche le plus petit rangntel queunpproeuraech´eoslavenuti
delalimite,a`10−4sruotnartpjuotrterme´elepremieexpmel,)e`(saperu0=a.

BrigitteBonnet,Lyce´eInternationaldeValbonne

Juillet 2010

u :=a ;
n :=0 ;
while abs(u-`)>1e-8 do begin
u :=f(u) ;
n :=n+1 ;
end ;
writeln(’lerangcherch´eest’,n);

2.2.3Majorationparunesuitege´ome´trique

6

Onsupposequel’onad´montre´,`al’aideduth´eore`medesaccroissementsfinis,quepourtoutentiernde
e
N:
|u−`| ≤v0qn
n

ou`qunsteer´ellteque−1≤q≤1.
Dans ce cas la suite (un) converge vers`, et pour calculer cette limite on calcule les termes successifs de la
suitetantquelemajorantestsupe´rieur`a10−4elbairavalsnadeuenntcourlevalae,’sraˆrtealobcuel:quand
uestbienunevaleurapproche´ede`01a`−4rpe`.s

u :=a ; v :=v0 ;
while v>1e-4 do begin
u :=f(u) ;
v :=q*v ;
end ;
writeln(’valeur de la

limite

:

’ u
,

:7

:4) ;

2.2.4Re´currenceportantsurplusieurstermes
Exemple :Soituarepet´dfieinlsaiuu0=a u1=b, et la relation :∀n∈Nun+2=√unun+1.
L’ide´e,pourcalculerletermederangndoeriaf“edtse,e´nnssceucssaselsdif”renruotemretselus3riuet
variables notees u,v,w.
´

u :=a ; v :=b ;
for k :=2 to n do begin
w :=sqrt(u*v) ;
u :=v ;
v :=w ;
end ;
writeln(’le terme de rang ’,n,’ est ’,w :6 :4) ;

2.3 Calcul de sommes et applications.

{pour

n≥2}

2.3.1G´ene´ralite´s
n
Soit`acalculerlasommeSn=Xf(ko,u`)fetsreatnucenotcnifeevarionder´eiablneuoelle.ere`it
k=1
Danslapartied´eclarative,ond´eclarelafonctionfqu’une variable s qui va recevoir les valeurs successivesainsi
deSn.
Dansleprogrammeprincipal,oninitialiselasomme`a0,et`achaquee´taped’unebouclefor..to..doon ajoute
letermederangka`lasomme:

s :=0 ;
for k :=1 to n do s :=s+f(k) ;

Remarquescassimp:dansleno.cnitalofrarecl´eedsdreaisscee´nsaptse’nlisel
Exemplealcuourc:pse´rsedrlleomasdemearscnpremiers entiers non nuls :

BrigitteBonnet,Lyce´eInternationaldeValbonne

Juillet 2010

s :=0 ;
for k :=1

2.3.2

to

n

do s

:=s+k*k ;

7

Calculapproch´edelasommed’uneserie
´

Silas´eriedetermege´ne´ralunest convergente, sa somme est :

n
S= limSn= limXuk
n→+∞n→+∞
k=1

Pourn“grand”, la somme partielleSneraunevaleurapprco´heeedalosmmdeaselri´ee.s

Casparticulier:se´riealtern´ee.Soit(unustiu)entivipesooicr´eeddeteanssunetimil(te,ellvn)lasuited´efinie
par :∀n∈Nvn= (−1)nun.
Alorslas´eriedetermege´n´eralvnest convergente.
SoitSnmepaasoml´settecedelleitrtourporslo,aieertuneitrenimpair,Sn≤S≤Sn+1. D’autre part comme
limn= l
n→+∞(Sn+1−S)n→i+m∞un+1= 0, la somme partielleSn(ouSn+1hce´ppordeestun)eeuraevalSa`01−4
pr`esd`esque|un+1|<10−4.

Exemple:calculdelasommedelase´rieharmoniquealt´
ernee.

Program Harmalt ;
var n :integer ;
s :real ;
BEGIN
s :=0 ; n :=1 ;
while 1/(n+1)>1e-4 do begin
if (n div 2)=0 then u :=u + 1/n else
n :=n+1 ;
end ;
writeln(’lasommedelas´erieest:’,u:7:4);
readln ;
END.

2.3.3Calculapproch´ed’inte´grales.

u

:=u -

1/n ;

On utilise letemr`eoh´mmossedemeiRedsenanriveeitn,ecuquerla`aappliq-cerdohtsedem´e
tangles:
Sifest une fonction continue sur [a b], alors :

b−a−
Zbaf(t)n→+∞nkn=X−01fa+ankb=nl→im+∞b−ank=nX1fa+k b n−a
dt= lim
Chacune des deux sommesSnetS0nedecttfeegraint´ourle,pcorpparu’ledee´heslemuorlevanetun“assez
grand”.
Leurmoyenneest´egalementunevaleurapproch´ee,encorepluspr´ecise(m´ethodedestrape`zes).

Calculdel’inte´gralesur[01] de la fonction :f(x) =xxl−1nx.

Cettefonctionadmetunprolongementparcontinuite´sur[01], en prenant :f(0) = 0 etf(1) = 1.

Program calculintegrale ;
Var s,t :real ;
k,n :integer ;
function f(x :real) :real ;
begin

BrigitteBonnet,Lyce´eInternationaldeValbonne

Juillet 2010

if x=0
end ;

then

f :=0

else

if

x=1

then

f

8

:=1 else

f

:=x*ln(x)/(x-1) ;

BEGIN
s :=0 ; n :=100 ;
for k :=0 to n-1 do s :=s+f(k/n) ;
s :=s/n ;
t :=s - f(0)/n + f(1)/n ;
writeln(‘v.a.parm´ethodedesrectangles:’,s:8:6,’ou‘,t
writeln(‘v.a.parme´thodedestrap`ezes:’,(s+t)/2:8:6);
readln ;
END.

2.4Solutiond’une´equation

:8

:6) ;

On suppose qu’une fonctionfest continue et strictement monotone sur un intervalle [a b], et que 0 appar-
tienta`l’intervalleimagede[a b] parf.esleapr`s,d’Aloredemibale´hte`ro´el’atquctjen,iooinf(x) = 0 admet
une unique solutionαdans l’intervalle [a b].
Oncherchea`d´eterminarunevaleurapproche´edeα10`a−4pmelerex.)s(papr`e

2.4.1M´ethodededichotomie

Onpartdel’ide´equ’unefonctionmonotonechange de signeleelans’llva`ueoi’lsretnnaduoepO.cnunel
l’intervalleen2,puisencoreen2,etc,entestanta`chae´tapedansqueldemi-intervallesetrouvelaracine.
que
Lorsque la longueur de l’intervelle [a ba10´fnitse]`erueire−4(par exemple), les deux nombresaetbsont des
valeursapproche´esa`10−4edalaricp`rseneα.

While b-a>1e-4 do begin
c :=(a+b)/2 ;
if f(a)*f(c)<0 then b
end ;

2.4.2Me´thodedeNewton

:=c

else

a :=c ;

Onsupposequelad´erive´edelafonctionfur[nulepassna’senteee´nrobtesa b].
Onconsid`ltangente`alacourbedefau point d’abscissea: cette droite coupe l’axe des abscisses en un
ere a
point d’abscissex1.
Cacul dex1ondelatangenteesL:´’qeauit:ty−f(a) =f0(a)(x−a).
Cette droite contient le point (x10) donc :−f(a) =f0(a)(x1−anend).Oti:e´ud

f(a)
x1=a−
f0(a)

Demˆlatangentea`lacourbedefau point d’abscissex1coupe l’axe des abscisses en un point d’abscisse
eme
xff0((x11.))
x2=1−
x
Enrenouvelantl’´ration,onde´finitunesuite(xn)n∈N, en prenantx0=a, et pour tout entier natureln,
ope
xn+1=f(xn)
xn−f0(xn) .
Cette suite converge vers la racineαedionquatl’´ef(x) = 0.
Ilsuffitd’e´crireunprogrammecalculantletermederangnp,ecruofinieparr´ecurrendu’enustidee´n“assez
grand”. (Voir paragraphe 10.1)

BrigitteBonnet,Lyce´eInternationaldeValbonne

Juillet 2010

3

Proc´edures.

3.1G´en´eralit´es

9

3.1.1De´clarationdelaproce´dure:passageparvaleurouparvariable.
Uneproce´dureestunsous-programmeenti`erement´ecritdanslapartied´eclarative.Ceprogrammeeffectue
unecertaine“tˆache”lorsquel’oneffectuedansleprogrammeprincipalunappeldelaproc´edureutilisant
l’identificateur(=nom)delaproc´edureainsiquelaoulesvariable(s)auxquellesonveutl’appliquer.Onpeut
ainsiappelerplusieursfoisunemeˆmepr´d,enl’appliquante´ventuellementa`diffe´rentesvariables,cequi
oce ure
apouravantaged’all`egeretclarifierleprogrammeprincipal.

a) Passage par variable (ou par adresse)
procedure truc(var x :real) ;
begin
(...){xelbve´,valrairantmeussotuenleelcalculsuuned’uformuclenebo...}
end ;

Dans ce cas, si on effectue dans le programme principal l’appel :truc(u) ;effretuececelcuall,alrpcoe´ud
contenudanslaproce´dure“truc”enrempla¸cantxparlavariableu,etlamodificationsuruope´r´eeparcette
proc´edureestconserve´edansleprogrammeprincipal.

b) Passage par valeur
procedure truc(x :real) ;
begin
(...){un calcul utilisant la variable x}
end ;
Dans ce cas, si on effectue dans le programme principal l’appel :truc(u) ;,dureutillaproc´edeipaleuesiocen
variableupoureffectuerlecalcul,maisauretourdansleprogrammeprincipallavaleurdeun’estpasmodifi´ee.
c)Proc´eduresansvariable
procedure truc ;
begin
(...)
end ;
Cetteproc´edurepeute´ventuellementutiliserlesvariablesduprogrammeprincipal.Ilfautalorsfaireattention
auxvaleursprisesparcesvariablesaumomentdel’appeldelaproce´dure.

Conclusionssaglepalisenutio:vnodqtuealeucorpareprivaleabanquelruedal´eduremodifielava
variable(exemples:proc´edure“e´change”,proce´duredelectured’unevariabledontlavaleurestentr´eeau
clavier,...), on utilise le passage par valeur quand on veut simplement utiliser la valeur d’une variable, sans la
modifier(exemples:proc´edured’affichaged’unre´sultat,proc´eduredecalculd’undiscriminant`apartirdes
parame`tresa,b,cd’une´equationduseconddegre´...).
Remarque:Toutevariableduprogrammeprincipalutilis´eedansuneproce´dure(avecousansvariable)passe
parvariabledanslaproc´edure.

3.1.2 Variable locale

Ils’agitd’unevariableinterneausous-programmede´finiparlaproc´edureetquinesertpasendehors.
Exemple : un indice de bouclefor..to..do..pouruneboucleine.urnretla`eorpade´c

3.2Exemplesdeproc´edures

3.2.1 Calcul du terme de rangnencepaiefin´errcu´erru’ddetiusen

Program chap3ex1 ;
var u : real ; n :integer ;
function f(x :real) :real ;
(...)
procedure suite(n :integer) ;
var k : integer ;
begin
for k :=1 to n do u :=f(u) ;
end ;

BrigitteBonnet,Lyc´eeInternationaldeValbonne

Juillet 2010

10

BEGIN
writeln(’donner le premier terme u0 de la suite’) ;
readln(u) ;
writeln(’donner le rang’) ;
readln(n) ;
suite(n) ;
writeln(’le terme de rang ’,n,’ est ’,u :8 :6) ;
readln ;
END.

Remarques: Ici le nombre entiernelemtnamsiispmrac,’nnoavrarueldimor,fieasaple`as´eptpases
l’utiliser.
Lavariableun’estpasunevariabledelaproce´dure,maisduprogrammeprincipal:ellepasseautomatique-
mentparvariabledanslaproc´edure,etlamodificationeffectu´eesuruparlaproc´edureesteffectivedansle
programme principal.
Lavariablekestunevariablelocaledelaproce´dure,onn’enapasbesoindansleprogrammeprincipal.

3.2.2Recherchedelasolutiond’unee´quationpardichotomie
Ils’agitd’afficherunevaleurapproche´ea`10−4lednqe´’losaoitutiuaonledse`rpf(x) = 0 dans l’intervalle
[1; 3] :

program chap3ex2 ;
var a,b :real ;
function f(x :real) :real ;
(...)
procedure dichotomie(var a,b :real) ;
var c : real ;
begin
while b-a>1e-4 do begin
c :=(a+b)/2 ;
if f(a)*f(c)<0 then b :=c
end ;
BEGIN
a :=1 ; b :=3 ;
dichotomie(a,b) ;
writeln(’la solution est : ’,a :6 :4) ;
readln ;
END.

3.2.3Proc´eduree´change

else

a

:=c ;

Cetteproce´dureesttre`sutilise´epourmanipulerdestableauxdenombres,enparticulierdanslesalgorithmes
de tri (voir chapitre 5).
Ils’agitd’´echangerlesvaleursdedeuxvariablesdumˆemetype,not´eepourl’instantxety.
Si on effectue ;x :=yla valeur dexedeletsc´lampreelrcpaeey, et on perd la valeur dex. C’est pourquoi on
utilise une variable auxiliairez, qui va recevoir provisoirement la valeur dexavant de la remplacer pary.
procedure echange(var x,y :integer) ;
var z :integer ;
begin
z :=x ; x :=y ; y :=z ;
end ;

Remarques: Le type estintegerdans cet exemple, la variable localezpetymeˆe.sedtnodcceme
Les deux variablesxetys´eetpasvarisparp,iubaelalrpqseunossitnoedectiodrtnee´coerudodemcaifiınaˆuner
variables.

BrigitteBonnet,Lyce´eInternationaldeValbonne

Juillet 2010

Soyez le premier à déposer un commentaire !

17/1000 caractères maximum.