381 Pages

FprogrammingGuide

Course: A 137, Fall 2009
School: UNC
Rating:
 
 
 
 
 

Word Count: 134536

Document Preview

W e U a R USE R F IBdbcI`Y WXVTTSI7PQHIGE (DCBA % 9 # @ $"7'#5410"' % 8 6 3 2 ) ( & $"! # vousmgfrxuswqwqrx~nhyvrixpgpgxmfx r usph~u7u!hu| vuuplugususmfsodrxxuxpgtuq7qswuwshyqr!xu phnhpdp s5 ! xr lj p juu p ku uiuhjukhwu q ilhk p n jonpgIqv'ofnpgpvidum~pngwqxqsuzx5qwrxunsriudusus~sh~nxsyxxpgqrxpggftqqxymusggwfvuqrsgxpwvrqimqxfwpqrdrxx s qr g qe sG...

Register Now

Unformatted Document Excerpt

Coursehero >> North Carolina >> UNC >> A 137

Course Hero has millions of student submitted documents similar to the one
below including study guides, practice problems, reference materials, practice exams, textbook help and tutor support.

Course Hero has millions of student submitted documents similar to the one below including study guides, practice problems, reference materials, practice exams, textbook help and tutor support.
W e U a R USE R F IBdbcI`Y WXVTTSI7PQHIGE (DCBA % 9 # @ $"7'#5410"' % 8 6 3 2 ) ( & $"! # vousmgfrxuswqwqrx~nhyvrixpgpgxmfx r usph~u7u!hu| vuuplugususmfsodrxxuxpgtuq7qswuwshyqr!xu phnhpdp s5 ! xr lj p juu p ku uiuhjukhwu q ilhk p n jonpgIqv'ofnpgpvidum~pngwqxqsuzx5qwrxunsriudusus~sh~nxsyxxpgqrxpggftqqxymusggwfvuqrsgxpwvrqimqxfwpqrdrxx s qr g qe sG v7uhpnrggptqhdripgtqpghqu dhrxqmqritvusgftrxxi7pgnrx"wqusmxhyuiuluh rx gvm7x{t usn yhpg7dnqhhdnpggfti qmushmhvspgwqgf7hrx yqus$ihuTpx5p|xv!nptqwupsgTzpgtqqupguvstqhwxtqvhugqqpustprsqgwvrp7p vkugqukfujushiu7huh p v~!o rn upstgrq}Tm x us h v iulukukuijuiuqrghequypxusurrxywvuqtsrpihf h i fd s s qx q g m tj q hx nu 7 pd hrgd fu yhdqoxxs qxm "gr5m rpxg d phsg ppugs hGp ugs srx umq s s d x x q mhm ri$'vdm drxXou dpxpg pfsgx uyfrgq urmf us o~px g uggsm rf e5xqrTqpwgumq pxs gnpfg yth pqgm r v 7suuhhdsq s nsu~ypgfug stxruxq rsri qVn m n~px urTutfxdrrsq xpxGgou hn ds duphh g gdeufpdtsr7xmgVx s x n G i x q r g j m x x q s n vr m z rx7nr7hper7pgqx qhus7n7prm uioxx gfprxq m7uqtpsp pfgpg i pxus z s h 7uq7duqs hxn rtv ~qx nhd rursxpg h udst7~qm uAns ~ fuwsxq7gm s pgrf xd rs on xu x q qm q g x s s sustqq pdppx ~uqq q phhd~u q m ppp'vg ygp p gpuf uwssq ryxprqiuypsm guwgsgpqpgugsd usf yprius hus ~quuq os nzg uftsg rr xmy~ hd rxx g g f squerxqhm usm ~n~ hv psd pugshrpgG hd pjhsg hprdm x hr ypxgpdnxou ggg fuzws xq ox q5pgfusugf5g ngedpxx vd n x g x q nuqguvw s w d qupsxgp gpf fugqm strpfrgtnm Vpn neepg qpdsgur"oyi upsufxmqt pfsm gqVnnpzsp7sq rx u q x q s sy x x i g s vu ps wgrxdsuhpm e wreq!zuspriuspgdyr~nypugfyqnrrxGgq zpg oxmg ~d rhhqd ruioupswgqug5nr gp uy g d 5piuvs xusg q ex g qs usgf5m uqs x5 x x s s f x s s v srpxmg s q x7g tqmuxs x ngfrxs g phui sqriphd tii uvf7px m i uq psi d x uvpsgrt uqunxupousrs qr7ptxps uphhy txs pmg oprDrsf xqf usq yrygpxdhpgf wgg pm uqos nhx uswgps qrxupg d uq p gvu pgqs up gufsvuVnpge qsut 7 Apig rxq m"uA w57hq v m s q x o p i s h q pg m nrx f opxguspgumhpt4usvquwquqrsxhp g~d ursrxzmhp g yr x pgpgguqty gsf hwsuf xpqq gm rxjj uxsf r uswgqgfopg un ~rpxgu s ppgg hmudvs i rq xGpvpupsgg m pfgufws qd m m7 d qr x s sgpxq m r x qmm xXpgd7pevtqpi opwg qg p Xu sps gd r jopVpsug w pv uqs pdg gwgfp ufuqtsryxqqwugfhf uuwssq tq txqrqxrzm uons px g x r x qmvrVpv hdGg qu v hrxdy wguquqsts nxvp u ds q yuqspdpdsg x d x f hpqj v oud rgghrpf xTxxpvm ugt$q uswsv Vpig pepsTotgquupgtsseq pxq~yggf uvfustuqsrstqrrx rqyu uspsgudptt g ququhp s pshorgugpd d g"g~ufff s rxwtsq rq grxgpgpf pwsufm gusqgxuhtsnmq qx qr mqxm ns~~v g d g u pg q q Preface qrigf !p ukukq qr goufqhp hugs d7ht~{vqws|vwh~qotp uqpuustss r} i x vu n v v v n r g qx r frx uwsqwqrx x e$"mit~hpx rptt~n prrpsuix prug uipss upugss uuq~pgftq xdruxrpsium rpxggggxfqfm t xogp ov uqrgqf r$xv v 5upxdtsusuxf tqqtppq h rxq ss g d G s ush d s T s mr x gmgrnx 1f f g | v s m x x q i g n q q m f 5e$ugfrTuwsqwqrxrnTTwdTq q xref us 7x ufws x'vxnqx pp7mgrx jnGuygfus vu r pxgs pgtq s opg q nrq utsqs xrg rpxgusups q s 7r$m ryxTquwd qrxnuwsiyuvpgf gpnoneygf nju dss rvy u rgd usssn fugsy tfq ustqrxqqmx5 ngugs rysgpxs ppgpgd nryx zmgqp urts ugqos on 5Vpf xger pxpupsguqs s h V 0 xf g qh x g pxum p~ uqun!uhuwsqwqrxrxzqdus !~nzs pdpwg rpxgph gh q d h p g n jv xeupsgrp wgvq~Tvngp rurgpxf npmq wgrh~pxx gpmpgtqgm frhx zgs ptq rpgsgi u r x ephopg hhg m m5vm uvm7 h x q x x g s e d x g s pgpg ppjgpg gyus pxug homds xh$rtx hdxx pmi pgg xnxpp ygfu!dwsxq rnx qryxm rrpxgpxgm hdd rxphmgq yphpg oug stqtupfuytvhAqqp sumg gn p m ygpjgp pugsg ufwsnq x r ptosquhpn 'v q xd~m pru fs ddg qrxpgpm pgguspgof ~usnG f q m xy gd siu pgg dzuq s droups~pg gpfgyv un sg~ppg7 q jq rxm d x r sv pgq fuwsxqmyphui wsqg ~ uqsy pg fgufws imuptg uuqs psg hrgfx ustqdrxg un~s hdusq i dus r ~p~p g h'vudqumsq dn j rrxxx q4TnIp pvtqusgf s dg ph4i quGx pgdrxd us`rpxgdVh d od p hd prg unprxrxr!ns g rx!qdusgopg qs pgqnr 7 s x ujs'v y mvm rx 'ptgd oqm h uu!yss prhiq udpsgtquwdqs gq so upyym rpugtsqd5qups~u ots uqnGn yr uvtsuqwq xzypgpq g phgd iv Preface ihii pq i lqq p q pq p ww x n owdq$A$~n vq d q o' wdq$xwx$ x ry$f$su pq vvvqqq n Aw! $w dA 7 p xgsdsf o d v A s q v s osd od dywf ~x gg rwsqoisd 7'dd uuA'' h vv pp yfg ry'gs wf $xr~ xx goq wxqm x l v p q s d dx'gon i v p fws $xq g xwoddr"'ggqAy$sf u v p q o oom s xsfrixq Awgsq vv pp s gqAsodo mrsvz ssns yfgrqws wg$q wxoq pq vv p 0wwx`wAxxwA dA 7 Contents k p pq hlh p ll pp il pp hii p pk pp oo lq pp qqqq p p ppppp kk p plk pp ihk p hh l i $xgodx'gwo'duA' v s s q m v s gfsqr$wxozss qp'gwsrsqvsn 5x A' 5 pq vv q g 4 7 A 7 goxiAypfgsAs l v d q du $ gxgggridrs xi qosq ggfso dg $s 'u'duA's i v s o x v v s d uA' v ggw$q xuu vv ervswqdg5'gpzf ~pgqgnswqs u pq vv g q s~ s A 7 p xgwsqr$spgqyf wod$wxo"pvg'wgqs nw i p v d q q g Aryof g mss5' u duA' p v q p v v x'gwods p v gg xgrgisqs ri xo$gso od s'vduA's pq p v q qgsyfd iqwgd '5d uA!' k p vv n $xTu h vv m$x d Aus 'gw'osq yorqoq 5 l v g d f d dr oqwx x gAo i vv d u fd n gfs yorq5 v wogquo$d wx$q wxou pq vvv d io q d oAxo$x`eoA dA 7 vi Contents # 9 2 3 '8 6 7 7 7 # 5 4 2 0 ' 31 ' ) #( # % &$ 7 7 p h p pq pp lhkq iqq o llilqq liqq p q hqq lqq h qqq o pqq h pqqq o # vii gsywf$x q gr vh y g u A nr fg su$xg'g ox n l vh fy fs Asu r i vvhh yf yfs u qsu' rws z7s s vvhh q ng q r x pq vvhh At 5AA A wg q v fp$xwoq'sqssw qg $ $xxg 'uv fxg d5uAr A'f pq vvv i q z {g s n oA AwA dA q$ rxg q gng gog og$f l vl d w d m x wo'ggo q ~pg i vl xwsqq xos 5qm 7m ~p gpwjq' 5 vl vl yfsu$$y $ wf odq r'gAs 5~q "p g wgq| pq vvvlll x n Aw!o A qdodqug5 o ~sm vhoqw gdrqso wgqwdq u pq vvviii o oz 4 oAw$Aw A ! " Contents # % # D E BC% A 8 i pq lh ii o A z!zAA g$wxod "gwgq d qi u wvqorods$pxgsg$x'5sv gxgdorqd o gd u gx q~ $$ x gos o'gs o gq~s gwsv oqf q5 d g xg oq drd~ wvq oxg drwvodgq rs xg sed$m xg g sGod mgg qGdw syq swqnywsoq dgy$fs wxonq $ Gss gy gqx f god s f q g fd x wxrvAgx yof dr~wvqodrA'qyorq5 odrq5 $xxq q" goxg f gdrgq5o$$dq r"s sg xyg wg'gfq o dq oAxo$xwwwA @% x k p v h vv il vv v vv pq vv x viii Contents Gt u rY ` X 21 2 3 ` X rs 21 2 3 ` rXY 21 q 2 V c W ' pqighIdc ` f e b ' ` aXY 21 3 2 V ' W Simple Calculations g n q sp fy x uuvwn~gpgpiq d Vxgp ngfr xyr x pxhsppegg dm h drrpxgdm ~x q hg vf d pqgnz ptgm g eTnghh ud~p'uvs n Vpvpdg qgr h~p y r q p m u qwqwd xrpi rxf A7pd qnthhd ugsm frxx5q o ngonfm 7rx lunApyp fz5orpn tg$xm $gwsufn uq r~xs ~hun s $ X r r$ $ $X r u v g s x q m s q qm s g m s n rpxgphhuusxphd~nzpgtquonfuwsx!zp~puftpqgh s qm s m 'vg qeug nwgq x Gus upsdn s pus s xysg fust qrrxgqq pwgq s xnri x yn x r piwgqi hn 0f pxgyp hn hx 'vxupsdpus joux rTqx pug nnpexuvrhrpg!pedg tqonrusn7pggf gpntguq r"txeontg hx xdqdgxsxshp tx~pts ruitgm pq Ttuqspg$x x m f d x n g qrx s i p ~ rxn`poui rps g xus eq r`y uxs gpugsdgpnmf frqgtuxzuus`wgps rqghfx yqvtpg uqqwm xu sd rxxf x ytvqpu x R P S Q H I R U F T ( T 1.1.1 1.1 Programs that Calculate and Print d f g i s f s q g g x vu hds uvsg u w u q x x npdrxrGvugpxgugftxp~nnrpxgupspug s pg uspxt"nrmd 5hu uf wsgrx q7yvs wdus g q xgrgrrv ons ex pxgg pqhhqrx q rv s s q m q x n d x x g ppegdrxr$yrrxrxripnxrpxghhustvqum onpgnpgufws tjrxj q u5p usuf s5y tppsuq rsimugg ppfug5dxup !gpns !7uqthx sdrdogpsmuhggpxxAggffgf Arufuwvs pqstv qr rxuqpxs egmmq gh stuqw pgpfsus5xufpqtg wseuvx sexq Trd rrp x ipgv5tgq euhs rsqd mx h q s g g p fr s f g q m n g G F Introduction to Programming in F 1 v x m f d rxriusernpx gdv~pufs~n pqxqgr tpvx qn pg pg i qf x tv upxs u"f grdumhs drpd vdx uv qpsh ovx ghgyfxgp fu ustgssqrrtfxqq q xm"puds hhn gr Tsux r p ghx efnpg f g ph s xwvrxusgus7rxrpghryui grpxguugtfxtpqhjppg!spusqq pnnu~us q y s x 7qd uvx psd ~qrfrynspphd pup gs u f nrq rvpyvpvg rnymyynTixq rA rp qphxpp'veqg x~qgtgp uqfTufuwsqsyp tgxhmm m x gr x n e s n n g x x ! g e g ed@ G lekjrid rg h f e@ G d ' x xIypv ufux!ww hdg ppn rpx gn p 7pv hggxdn uvre!o~n~!quohnns x n m s q ux g~ g urx f r s ~ g ufs f x uqs r R U F Y ( T Q R P H v Gt u v v v 1 v vy v # 2 v wVt x`rY v X 2 2 3 ` rXY 21 q 2 V c W ' pqighIdc ` f e b ' ` aXY 21 3 2 V ' W 21 2 q 2 w v ` #t rXY 2 r y W w v #t 7 w #t xrXY v ` 21 2 3 u yr uggfrx`nXpgvm Bshd `r i q Xuvgs fu uf wsq xm`xo yhun v s f m v i q q x v qg rq 'vp fuxy 7xdv zg zorxzpr pgppgy ri r~nxgq utfpqg xu p uvsgsff utqd rx rvxwqq~piuxhdqs tvx tq xupqs pyhg zd hq dxGdpphrpxdg xgepsu mig gppgex!r nx s m h f r $ s s f f g uggrxyerpxpx~nnpge x g gf~ s tq rp ph~prxphng uq uvrpxg xxwdrqx pdgpg qem gpgfrxrt x ~zg p uggfs suf ufxnq nugpspupgptsqg usf nx mg s dm o tsq m~ x m $ X r r$ $ $X r u r$ $ $r$ g m m m v i q 'x vrx frxm qgf~nzuz un f xf rf veoph!rx s d s A d gxxf s s yyq$p xhg pgufs y oAyx rf n pgdvg Ax qv npd eygphxq ymhn yusp yugps ognfg rgxsyrrxmq vy7rqypugus n d f g n hg m vhusygpfgTgv uuyppy gq nArq !o rs x yn Gx g s s x m s g s s pgd x x s nnpdri fuws x~o nzu g ~gufs nnpg pgf~n nufrmxgf qnrg dpx v w x v s f 0gufg pri rp!s pg x yg ufdrqrxrvu nhgustd !untgdhug sApptus qodnrx xux nfpeg vpg p rzxs phfg x5xq wgp fqus !vo qhx 5pddgpmg fg rnxIqre'vv{xxd rrpxx gtq xqpuhu h wgryq x u s!q rrgv ph 7d r 1 v '81 Vt vh w 1.1.2 2 1.1.3 Default Print Format Editing, Compiling, and Running a Program Introduction to Programming in F h@rd qG ry d x y erxh@keveTuVqY h d W V ' W1 V #i ' V ' W The Y x T @ v q g g v d pf wdponxpxxpusypz gufsqn7us jtjqperp px rruf usxs q mx pmgG rxVvugqwqppn n wquq s xt qhufous ypgv phgg pry tx oqx n q x g x o i t s us y g d 7d g s s f q nrguff ggpd tsr`xgq f ru q xnf tx us nuvvs tergp 0rfeur si px!xp g ufts rq r xq ruq nnpuvge x m s g i n sxe s sx d f m t h 7 i r sx g g r"ppgnTp7gfpeonustqusmxqu7uggr'vx v gfptgusq meu Tus d s sff f n s i g g d d x g q q m ghdg on g uogs nx V usm pdu gs rg xex pexzrnps pwg i r pxg h pufhsg ! n!peoypgvvtquphqrtpoy usm dwq ug tsuqg ns usr!f qn!x d n pdp$yw' u w' wu piwgqustqdrixpphunus r yuqptppfpguggtgqrpd qx pxs guuvtsrznfxs qus efo xpngyg x qp gopx dtgp n hn rz$pvdv f ox nognptp7 qusvqupGs hputgpsq mg wTfsuq onusru pxsGuqgsruuqpsx sgpvd usnpg pg s pqpgg n m g g d t h d jpuqugysg s pfgqrx y nqnuxuq hqtsd uxgx ns wnpqg xeps yid rtg pxgufpspuwgdsqus ugvus n T rpopwgr$pq pg !rgwsufxni z gfqx myp gn s g m q s g xe '} GXYrXY z ` V{7qigh)~ ~ p ` f e 21 2 3 Gt u {7qighe p ` f 8XYrXY z ` 21 q 2 V c W ' p ` g f e d { Gip1I|qV7pqigpf1)oCdc ` e b ' GXYaXY z ` 21 3 2 V ' W 1.1.5 ##1# $ X r r$ $ $X r u wgqgh x i g'v s mdrusqxvusyppx xs d nszihhhx~pdus s f d v d fd x j j g m r dz q m p grgvmf frxXgo n pugt`sqsu tsq uzss utrqutqs ungfs uqws pxguppgds u hunrnx dpwgqptguwsq uqon u pgpsg gr uiorpnsm x qpmu dps nqugx tsp gursusxtxquvs uy5fvn guGpfggnmugtq wsuqxwqmrvus tuqurwsosqsu!ndp gtdv qzuysd ufhwss pexzuzsm qws5pug5tsuwsruq ondsx s s q z x n f q r q rkw vTkYd rTs y x e u he r d t r p ` qighe f 9 W n V c ' qqpqigpf1)oCdc ` e b ' 9 W n V ' 9 m r$ r r$u u r d d g q np0ptgm x s d h r m v tvhmrx n q izoqurf vxo5v hr$g wguq fuwsq rxm nri`uwsqrd hpdppg uunss yA wqr ux tsd ypsuq rn zdrphnxg !wsm u wq rquxms rrpxugs usrxnd op pxmf n qhpxd grxf 5nxd vhy vpughms rvdx x v h 1.1.4 Printing Messages 1.1 Programs that Calculate and Print 3 Statement ' 2VXYGf z r 3 XYGf z u f p z qw G` qz p t " X v rkTrGTGhkrv e x de u x r h y e xw rGkeqvrxkw h h y he pq ` f e g " pqg ` g f e ~ p 3q`7gC) f e ~ u h vu uss rx qpgx zg p uf~ uqsy p gerpxg prx m x m s pp p yhun sv rxv q v rpxg g ps rpigts q hs uqgfustqusgoprdnuspghnpone u g gqrpgfuuyqrx wqhhGeud trierpxpr xtpvrigrm s v x wvy uquvxs w~qpg gGphd~gdpG pr pxn yepvqg tede rquysx quspuvs ng op gunehs rpdpuxpghn h pgtgd qGqf!ms ppg eeqgq t xuqs 5d dug srxz7q v rou phyngsd q p irx g n f sG x r s gptgqorpv p gg p pnwg"~nquuss d m vdphg rdno xpx gzx ursid xp nsug xuv p x!ohn n uq xzwsus qrrvmm x g q x ~ v jg~gornmfg s vptg uqrss p~ng g spdsu u~yresn upxgd yq m uwsq zqgx p pex uyop ugsp x xm pg"yqwg qs x " x r s usmr g s qutsuq nyp7ri qtud gs 0rpxgus hmx o nop hpds pgv s v uv vTsq uh f s g r `ngtxqxtf x qr5xm r7ns Ax p hgfugx 7s unhuss pq u 7rpduqs 7xrn x r x uss unen rpxguwsqmr`umvzunpg`g myni j uvs gxxuf pyous nsAxq yq du s rpgqu mrvsuhgn uphgs jpvtpgq d xwsui y uqv gsv ngu prtgs pyquos ppggpx prggphm f g s uspg 7 s t urGkekerf h d d ` g ` d q 2 iE|G 3 9 o d ` d q 1 Cx& 218 ' W V c W ' xdc o d ` b ' 21'8 W V ' W r u r $ r r j q m g n m i n g f d x d gfq nwsr rxerpxpx~noe~rpgdmrqwdrxpusufv m g q v g dm jp rqdty npugons enx 1phgf udpsm ny uhs dgfrxf qtrunsx nsfuvrqstrVxq m s hhdq huyqm upsn rpdwgxq Gnvq x r p h ~ m 1 i r g q r v s v m s qm s s r gfuqdrxrzpwgqunfuwsqx!wdqu~pwgqGv p W V ' ~ s n futsv rq rxq 00wv r'v q! hghf q v fuusrwsv ~q uxzmps nng npu!s erzx gffuo s ui s~n0rBr x pxur sui dgh dhngf m x q g pg v i f g W 1 V ' 1.1.6 V1VV1 e rxh@vkTu he de #V#1 The 1.2.1 1.2 1.1.7 4 Intrinsic Data Types Integer Type Exercises Introduction to Programming in F Statement x r hj r rGT(vr@qY rjdy e d h e r rkGdv d d xw y w rvTu e x de rGkvr@qYE h e hj r w fv p z &qa Y s m uqzusgrx ujsps m grpf xrgufspgfm unth$ udpnsv h"godnfsdg u 7qwuphgs m qo nn rtsx u n"ry x gpp v qv p grpxf xg $nu etqqguuff ttss qq m m g t 7 t x s sujvi o n m x q x o m g x s g" f rprg uws uqduss ms 5tqus!ond i xr m vu ~nqusp rpxs Tousepfgrx ysh ytq rgvi tfqroufsd ehp gpfrgxpvngpig rrxx mt~uTptgqe~n Gpus u0ogmrxf pxwgtsu5 pnguqssu fu ds rnux!ntqrogi nfshq o"mpupus0Txqsq XqArghf ppggArsu xnptgpqgne yhwn qrv h sg p q s f us d pe i dt d d t nd x e xA q i f s p p gvgkukuk pgnpgney usy$ r7qfuswqusmGpgrnpge p r vggxppppri7k rxApq" npgonerp y o qusApmfus7qrxgfxnhvugqukukukuk vk jhkukukuk qmrp p gvqdpx mqrk xd vpp gpf!svnppggunsy xvu sfmqeu srxmqxpuso qgp~n pvkuukus$kyyupkug uyupqg q g j kukukyukuk vuqqrxy k uqyuqxGnxTk pfg vuqyqq d m s q x v i d s q x dmq !r ypfu"wqrfpufwvqrdruqpstv qpgpwgqe"rx i pg x x m n g q m i f d v i rpxk gpus rx " upsrgsm hhv TnTph7qgynTrppgpmg xjprhgkdv f p r gxpf gu 5ursuq se5xgp! zqp7sg yp ngvtpeqg rm ppx r fuxwsq uqsm s od ppxg ~ogg n Gu sursq xtqwqh hdmx uns i s q x s erpxprxtpvpuopxgmruwq g fustquspgrrnpedqrpgpg qpvpu grpxf d g mrusx 0 ugsx ggp q rxp~q rnghvf r0use pxps x Q wfrxum ss rpxgpgr x phn ptgqe i qus s i d i " q r x q x m g us p son g s ususr us g g'vp wgrqg ugpfg h~nrq phrp tgq gx n u nsGxp Ahugp yr dx ufQfps tq uxVApx g pgg rhxx "mm gnpfg phV npxA upys onrTxx su pg yrx o X Gw pq 9 u f z ` v fv p z e uqw &G` 2 0 1 - 201 X t p3G vx`7 201 vx` w G pvxz G kvrrGrh j dwe x h x &p v uqw G` f p z v 2 0 Xp v w &q` v p x wew u rGkvkTGry v q s xm g pp p ftxurpxggrppwgq s us rxoj uxs usg !uqppxpgprgxg !npus oys q v px g$uT xpq gr i fv! n q s g s v d g s 5Gp rxu $s psuq rn`g pi p gfthqf e5m qu"un7usm r xg qrs 4p7guf se d uqg !v dxh s 'vrqg fusm tqus4pr u T rxwqhq x hsug s`ri ewg p qr pxrypvGpiger rxpxpm ryxhpd upgs r5nugpfhgx wquhs yvssu rrGgpxi uews rqdpxp xn pgg sq mpphh rx p s x ri v m q puxzpgrx pgj us hx r pxusv tpi 7uq os s pIqwftqrpqxh7pgsg u pxgg pv pnggh pxdm uos hr'v7gprdxmsu ~gfssu upsgr xA~nwf~n rxehx xesd7rgp ui uqpss7qyqpxhgn m g gxg pgwf n g n x m h d q ud 9 e de u r rxkTaxqT&jdh ( q &d j 1.2.2 Real Type 1.2 Intrinsic Data Types 1.2.3 Complex Type 5 w G viG7 ` 0 3 l { q { { V j d x we dj rGrGkkkh u Gkd h e 1.2.5 1.2.4 6 rpxgq q g s d s s s mm ~s nxnpe x ug hypvd usgpfgxq qm ummzpg q u d ne nxdiprpig ggrxmpgp gypgfuvux sopev ppgq ux hu sgpfgxums x x qrppyusndvtqrmxustq{ m~ q nr~ nqg ngypg jrxg`dpuysg rxtqq 5gfm rhxx hq rxd xusq xqhpd n 7qg y q userfrexx 'vxp~m usupsd wg5rxm oqx umxups5pgsu ud s f qe q g h m ss r jf wx rvq xup jtsqp p dusuix prpepggg x ps u pqg uqnmpxxunwp s eqg rGmi0vruxvpgsu o~f Bpxgupdpsquusstnqf uxsTuhrqws ui`nuvtfxouspdpuwvg qs pfdem m r sn g s x q sgf ! q x r n s f s q v pp pg x pju!nypvwuqpsppfuuv pp pyusrxqpgrpx gx gqp mr ~!nn n rtxnigx rp oned s g g g g x x d g~ m x s di pxgq~onx~hpdu~onuy v pp pg z qz p v xz&qz v p z 11 qz p z qz1 p - Relational Operators g " f b b 31z Y b b b b b g Q qm x s pp g q q x q s r pxgs dpgfnptg uqs j s n7GduGnyu v pT$uf 77 pdzuspgugfnugGsf g npgypm vi uf o x rpugq x s 'i v pgdp dq uqps qgus fo o n"xwqqumxruvuss p xugwsus r q tg px pugv proxq pm m on gnus us dx ms h gq x ujstqg s s g g g q m vx pvpg ms ypx g mx rpxgus uvf pghp5n5us ppxAtxuwsqrwvuq rxsq hdAuhm d5ri xuvf pugwsgu!uprxrgdi vmf xx hyn ui pv n rppxgv gusrgx hug rsgpx gyssupdufnugyfs n pgg 5us nq d f!rpx gquegpsrx ~ri nx m sg q q ~ s y j g g r7g usphp rpwgg q use7hrpxgpphtusropxguspgpmgphgryrpxguwsqrhd pgpxhhu sopugsphpgV$pu ozi uspgugf ynugzuhgduvs pqgmns Gusngp nf v v g s f sy s f s d x x ig jp ng"ypduxsq pg wqmf hd xeogsupryugfryxxh epdd tpi dg"pf u gnrf 5xtrrxqq ux"tspyqus m q"yqh 7 n z s s xn pdu~oeqfuwsqusqv opus gprrii fgd 7v~ry ~px rgpsuim p ufpsugsxsu u rgps !pg m g dy fr n $o o 1 2 0 Arithmetic Operators 2 301 v u X d 2 0 X&p f ` v u z1G &v`1 ` v p d v d v 3x`1x` Introduction to Programming in F v 9 v r v 191 rr v v v v v v v v x s trtsusuqq x qpd wv uquss pgrg ripxpsgpgrquvf x XA h t i uGys f s y y m rx yn ut um s us i h s n vxIqt gfusqwsd ursvu gg uns wrqq xutsqrs h p v m p ! sg u~rxwqhvd yusyuhsnri us r s x y x eypxp rw d qx!pvpi pdgunm wdqTe$x yq rnoA qmqGnq pxgphg dpg v 2q v v rkTuaqTraYrkGqvjh e x de x j d w y rqveTvqGk h j d rw y j Logical Type m jrn~rxrrpxgp gqAqusqrnpeng GopgrnxGv tgtfq rq x wxqp zppxgrp pxgguwsqq m m x q i m gg tjpjqhqg p5s h p gnug Aun hm ~uhq wspdqumrfhusxuwsqusx !mq xs7 pndqvtwf"q rxqx rqwpghpdqf mAqAg d n $p d upyqwg so un~s gwsufq sudx uqhs rm i xypuy rvg hp pxgpp gpg gp s s g x i ! " sg o g z&qz v p u h h f Yh rrq@vrfhk@ w m x jGxfg !~pgx pdwuqrp pxxzg gm pqf xusm ~on n xy ~px h m pdu xsf ~ o nmrv yp h qufns g u G uupdf uss ~prvmm m rx s q ~ g g s n 7 v sh qe s msx4tqrxgpgqq g pTnx ypmgrxTg rv jpg g qpd nnx upyTnsuqqp x gtdqs mrvqzpg q pox g n r ~vo~n Gg px umrAqxs ph g pdpug sxrm uvsz ps x g tv qr p x gxou ts qx7pm dqgn g x r x x mmq ngn nvzg vgnx Vs wn qxprxyoqph jhuqvorns 7h ou eqtsn h m xvsh$sfumrten rfusi x"n uruqxx thvx gonrxq upTqg wsrm hpx tgy qgf d s x x t ush v xz r s n ge!tgsufsu p qygh"vdfn uw uqs gsyfd n Ag`usApx qmhryhf i xdpd uns qupewxs gtqg qf d tpdi Vsnuq ypGps igsuwqrpf rg xuxfsi tfd~n uussq i i q p s d gy pv vul v q vp rrpx gi g uh qusppypxgg zmn r v zppdqruxs ugqws mrpdrxxuris urggpxs sun!gqpyxphd~ hvn qo neus sx q x o g g qvTu x w q 0 3 Y|TTk 3Y3|)(T&Yv 3Y38)1 3Y3 3Y3&)Y1x Y1 Q qqYY { { 3 { { { 1.2.6 Mixed Mode Expressions )T3)3Y1)Yk1qyT 1.2 Intrinsic Data Types 7 1.2.7 ~ 01 1c~7 8 2 ~ v ~ ~8 2 301 1~i~7 8 ~ v GkkrvTrGT x we d x he d r x r ~ ~ ~ ~ Q 3 E ~ ~ ~ v W r l W ~ v ~8 ~ ~ d r l 2 01 C7 8 v G ~ pp s g p u d'vu k v x v g ou!l v vopxg $u juows uqnd ysuq m pgfupsp rxq uwsquis nxs f $5v p nyg~oq hzpnm pne ypduusq s vgrxexv n hdr vughu q v pxg g $ utxuwsqrxusrpxgu$ps rx s ppgi rhi dsynrx}uy pgtqn nx zpAs y $$ m pdunx r!uTpdrxx v qndrnpuhrpxwgqonAqusgupsriyxpg r q 0hpdn uuo0~o rn !ypv gpgpm furis hTqvd rAx} upyqwg Iqwg p x nsn$p0 one$rpxpurx x s s n e n r pg $ g x v i spwgqtpqgs x npd rnq rGpgpgrxtquwsquoss nrGx "wgq gx g pg7xun wsq rx g x x v x s q m jwvuq5qpg ~ui uqts nxngpdqnxGm uu!nss 5qrxpGsgutqmrh5xd rqxrgi uwf s quvnhn Tpvrpqhtphd q x s hr h r $$ 4 X$ r rruu $ $$ 4 $ g h r g q tuqgGpxguseiqm5pvg upgqt y upwgtsquqns q ou pwsuqg ns tqnGpxzndpgex s f xd x v q px pqtf~pxruiTwuqshgn s wf qrq pxmguuq swsrquwxqodngurstsqudx ns rvuyp gtqvwquuof~x rpxo guhsqmrxd q d xGvgi p d5ppgpfpgh7qxshnnrx g g v s ss g !s g e d m f rvTrGThkTd rY( e x de u x r e r d t r rqvhkTd rYrg h e e r d t ST 3 3 ST sYq 3 Y Y Y Y Y Y 3 3 3 3 Y Y q YY 3v Y 3v Y 3 3 1.2.8 8 3 qv 3 Y qY )Y3)3Y )x3Y8Y8 v 2 v v 3 n91 vhv wdqzpg v $ w $ x s m s r~du~nypuf p ujpps gfm pg prxgf Gogvp qpjhdpr!ps pdu hpn x!$p 5tqrxuqrtsxquts rqm xsum px wvg rsuq !und snAx m px g m g ums rxn q x r q iush g g px h g q v 2 v v Introduction to Programming in F Character Type 2 ' W 1 Xr n G X W r i V c ' W ' ' ' ' ~ v ~ V V G G dx r 2 1 3 2 ~ v W r 8 a ~ XV GW dc 0 b dx G W1 q~ dc b V V~ dc b ~ x d n n G X V G) | r X 0 W d ~ X ' X V rY r X d z x{ XV G) 0 W b p X r { X XV rXY r ' X w d { X }r W r 2 ' W 18 XV X V 08) W X V 08) W X V 08) W X V 08) W ' d rr V i V ' W ' W X XV 8) 0 W 'y w { XV G) 3}V X 0 W V rV W ' d t ` ` v p { e z e v z 1q1` u x{ d w Gf&E }r ' V dq W ' 2 W ' 1 V r vp p x d g s g g !ntrTpgrxpgfusesxuondushp7v T vousrw qpxg m ufu!hpgnp s~ r o r r $r r $ $ $rs 4 4 $ $$$rhBo $$T u $r r $ r r u srrh $r $ s4rsu r 4 u $h rruh r $ $$ r h r $ ruh rrruh r $ $$ h r $ r or $ $$ur s h ! rupgm nf tv po g g ushfgp ud peg s 7q u5s rs p gfuvrs G vpzd id puuvons op ru uipss tguvuqtswqs uqdss pguqso nes x m y i h x s ~ f f sups xGs pg erivugzqgfustqudsd spxgphhuGs s ~'vusrxgufq s m ri sy g X q r m t s s pg m npp ufutssr0xxuqp !g p uppogengv tpsu tpvtqg nz h yrivuvuggfss fysu ufrxqs ghtsufg uqhmxs Imwqsrx x s ousBourpxguwsqupshtpsvriXfv upwsgqrpxgqm gxruq pxs ghm d xyopwgsq d~rn uon g g q s r gwsufers ghs pdus h i s rx~rruh $ou5tqv ku~hf updwsuquss ~m xo unspnq qi x!stsuf uqu$quqops phug s s m u u h $ $T $ r $$r$ m q x ss f v ri s s f s g n yvp gufs uvufgrx gug wsuqhmGqugd opgusrpxgusupgux psgpog pG hpd usi qguftsuqmG n p pgp5s rrpx q gpxrx xpq m rhhe`sn" ufxss pwgf espg n uv rxi`xgmx rpxpxsrnguxyxp x ouf ysq r x g p i xn nfg q us v s e rv s re v5 nu~g x~ vrimpx xv y m v~s pvpg mg rxe jvrs yvs p r7px pgrxTrpxguwsqupsh q gfus stqusTn us$rvsus hdpqgn us sphpg mu" v rpxgudpriuswgquis x5gfu p grxx duqgxpus5 fus jp Gvug s psuq v uftshrrq rxrtnmiq g5fnd rqxet qu sfutqws m 5pusqursmiusnmudmuhs !s vttnfd us vmg prtvg rztgpis nsudgsf W V ' r@hkvTurGk@ e x h e de h e e de u x r f h d axkTrGTy@rx hk@d rc e h d 1.2.9 Parameters/Named Constants 1.2 Intrinsic Data Types 9 X X 0 W V 8) X V V 08) X W X v h d x @r( r 2 ' W 1 Xr V ' W XV 8) X 0 W X V 08) X W 2 ' W 18 1 XV v q m g d d g y r q g s fu wsv xq~gfus~npG ~ irx hdgf rruf phwsuf m $ s fud hgn u ppgusp gn mus ` i us` nusn g xqp!m pp7qqx dyrr rrx i rud Artdpi s y q xn p puipv upsgtrsquqx s q p hsgpx xuys punsfuugs fu qos m dnvupg utsx qoi pxpugs rpxq ggx `uvn ggufxf wsgufgxrsf exv gpr g t z s q x m o s uvs f q q m s g v s s g gfupzwqustqun p u~iyuvsg~qhv s x f s f n vrq yqx xptqg pwy yqd u5ps xqsvu "df q pgg uGqfstuunruGvugf'vw$q utqtsuqus nwsGonsuq p5pugsq gxftqhvq h i s n g v s i ps7 s h g o q nd vtq!~rhg~gfunxrqutsuqntpqghv p s i d f s x s n q qm g s s s s x g q uftsxyugspg qufus nqv n r xpurzuos p ezuzw q ufwsuqxmm hz ufg srxq o tqph dufws nuqs xuqm rTzxs perpxprxdr$$rh r $ `udufs rt s rrrq xuq n p$ d y pp v p s q s g x p v s sg 'v x f q v rpxgu pruis x tgpjuqusrg o pdngqru vm Trpxg u ty vu stwququmupgg n~v ui s7 pg n nTusud pd s phugg pVnx4dgp qh Gf usqsi tuussys y qrxqd nhusqq ppgrxTnVrsq x g s Gpgm5sqrxrxusq qph5 xqq m nrud ws p !d ngpv pv uf xsyi xuphgs mx~d tqrhi dus 7yp grfuoAqrx r$rv ufwsrxufq !ornqwsm xnny rd xuqsn g qhg ptsqg p 7qq m neqtxrpeusrxynundronus f g nv q i g s q i qufrrxohro nrmxh fudq q x guf q tsi uq nGriqm m us g i s x s m g o v ujqs nzmprpd pxugutss duq uqpspshd gp tqqusgfus tnqusp!ps pv go upsgvd tqq x xpugpsghrgusf wrTgsum pfDquftsnrxq x7n g v q m s g m j o s d s q s n fustq xg !v ps uvpsq q us qxgs ufsh Tx u prxuerq rxtxtvqrus7p$puihusg rxgf quftsgruf xtsuqq yBGurgf sdu yo ruxsG xhg hgmx fuowqs 4xuq s `qwn r gsux ufwsuqps m gufpsu r m m ! s s4 g$ v s s f q m g hpd ufs z~g r uon sxT pwg qpvm wqhupg qgfuwsrxqs ons usgg wqpgrq rxupsh qgs Ggrnxq d gn r nhperx uqos nqgfm rxp eeeegfupxpos uuxops unxv oop phrwdxgg s meq pQxufpqwse d uxm p ungspguusrn sxduf s wsqupsq rpxqg tgx7d n pg v x upq wsqgpihsmu xqfq f nuwspp q qqxem 4rqw xufwsuqufg pmws$uq ss xmr isupdx h m p 0 d pg n x gm 1.2.10 Rules for Names V ' W x F R 10 Introduction to Programming in F X 2 sq x X 2 3 X ) X 2 3 A R U F T " T R P Hs ve@arkr h h d d f xw A X X 0 W V G w X 2 s3 W X X 8 8 v v v p rpxg$u yprpitgs qf hdx uqevohpomg nug q nr dx uss rxrpxgp g prhmhdqhri g s n v s f f qm idx gd qd pmg ns us gT rGmx rpxg gifqe ppghtsvug"u ns nGrpxgpg gq pgpgx m mGpugq s jtjqqq n pgg s f hdgfrx rtx g ~ hmpduq 7u sn Tppuis tq 1ufws xsr epugqrxdusgnhpxqdrpxghd! h'vusrxgufs x s s qr s $pui$ps rwg uq Tvexoup gr $# uq psgtduqmx xv q$mq rm u 0 uds p rg pxg xdTg p drpg tgi uvpgf h# s s q sg n pxgusppghmmush xpgm pg g dzpunpGpg gudsh~n v hvdm uvnesus suxqs xdppdpiugshx ~opm h~eqgpgn uxzs $ywqg ugfs upwsuquhpss ups grhngxp pm denxg uqGeuwds q~s im ufvtsunsuq sm prgq x jprpsuid ugm xsf ud nuq"rwqs xqv u gfd uuwshmfsqsu x pugryrnp"wnw uopgfg tqd hoen x h xgp f d x r" vq d s xn g ustqqrrpx ggm pgphqg rx 5px phus gs s dpfghrqrgo~ m nnpge m d gg xi ef d uhsx rxg p rpx punqxs u s "pn qGg gsfn utqrquxsp rnhrxsu hp 5pduun uhs yhnsu odp rrg puv mgrpfxv7suhus s uyus wi qq egufx wsuuqsps upqg u~gys qfg hn vvu pqg n~p gphgsf u sr 5nx qq rxxoG s pxgpg d riq pphxmd wd!ui hd uuuy s m s ~ n g m q s h s jyphrAxdq hx yrrxp opq ~yqgm urswi q rfo uhyns u'vq qy wq pgufuzwss qupgAqm gufgp uqts uGmss nv Gx p yhhn q mm h ipgf g d g jq d r s x r q g rpxgpg ~pm hdhuhs 0uypridrhmx us ypfgpopguyo0pvpu gs ftv xopgg yhs pusq5qnds uq sn f s rrpxn gugsg r pxgusq m ~gfq pohngp gg0u~ss yupos rgpm fuhs xGgs u 7 rgm vsuhuqpshds pgwuqgs m rx f ! ho pqm gufstsuqmg pB'vpg ny petrf xuzgps pyu xsuzysq yqrpg pg g m gppus yqguftsuqs s ~s unpusprs pxus qq uwsquoss nm mrv f sduhGx pgpwgqpg nuh q x g s v prf iuss wqrx~pm g uwsm Gg urpxggqmg pgtqgorq rq pxm gp y pv g umsgf hfg pung`Trhx xqTpon5pydsquos Tptqq pggf ruf wsxn"xmGm rv jtsquhs p`xp gtgpx r q op x gppg nnunupgtsq gxq sfutquos gm px uxyvues q ~ms pxhnqg zum wqs f grufp piwsguqgp sr rvxqpgus~pppg!s v m g s uvuqps vhd nhud nsr rpxi ppvrxypfgfg uywsq us xqe rzx pxpg7qsfs u uuy rxri pd poopgrn yg pgg sufufs p q~ m qmx xh v po x 7 g s g s r jhrursi q $fx rtux7yg$f u uos q rpxs r7 yp $pgx uqrxw g q$ho rhun rf uv gufs~uusyprui ds q is s d x u rppggfuq xxrpxjuspnx og usg$ Xd us q x 0 x!$$$rppg7us ryq eTnppgyhtq u vturps pghdg fupxs puwvtopsqs ux puhsg vq hr$pxn uvpus5ufps~qwdus hn ri r x 2 3 p p G| 2 1 E 2 W 3 1.2.11 Kind Parameters X X G s X Y 3 X 2 V 1.2 Intrinsic Data Types 11 RY ( T U F Q R P H X 2 s3 X x 2 3 X X 2 3 ( ( ` 1 G3v u w G 33e xz ` e v 2 0 X z ` s1G 3e v w tuq f X ` g ` v z ` z v f q Gf) z p q w v t s s g qq n v d pghGuqvuxddsus f u w urx ~s nnpes zp hds hgd x vyg v q dd gqm ufrsx Tn0g$Gr iu psx p gu uTuqgpdu h4 v p rsnpone rT$x# $ pdu$s rgfAuTs q p hu uh$As drr~rrxxqsuix updu sv n!gpx ptg$uq v # $ vfpxgpg vqGm u uoxsf drx rpgrruxsogpq ro usx rxq pqdus ghfi 5pnd ugosunn npqwfqus v v x q r dme n q g q sn g s g v vk v vk vk v s q qm s r h vv q p kfd~onzopwgqmun uftsx!~pwgqGv o $h xrx uso x m f i d q m rpxgusrupsgooxxqwqrfusdvev orp pxeugg rs ppx orpn x gtqgroxxm vq x $ # % x s rpxgusrurpxgpgxm frxqtqrgfousmrvrop x gpuesg rrpx px uxg so nrt qmx o xx v p i d q v G XYG3v u 9 ` t f v 3t ep w v 3w X ` z sGfGv u ` u z v p q` vqf z e Q 2 1.2.12 Exercises 12 2V&gh r )x` X v p X v 2 r 3 q X v r v ' X r)YV GX w )px` f v a X w )qz` f p m q nnux uoqss nrd ppg p~dg !opqm v nrsx utqq~fx uqwsursmx pv !nqov y o gpu ws ufqxsuqm ws f rxp q xrughmgsf nq5gpxepgkxqvu rns pgxq m z g g m ! u h s q m u os Vx pgm g ypgfu xs Tpdn uqrxs nrq px ygpg y uqVq pusg uq 0nnrgpx npggeIm quwsuqs x n g s m Av m qr s nhr "qguftsuq onpgrd onuhpdxdon$pgrx5husussx pdrxsrx m zf x q g q ~ ~ s s n s x 5 pvgm ufqs~ hng ! uuovugutqwsf rpxgmruqwsx emr~ wgnqxghyfg p dues sp dnxg utsuvqpm d uxgq ghufn tsuqm i d f m sx sm x x sm rgusrx!gfrx~wquheedonr"qufwsuqprvg 5ufhsn ~n $r rh uo pgyg ufus s rx "uhs g"pxp0gfuuwsyvs rxusq~oyq Tpqs nusg xp 7dq pvguwqqwsqug~wsufns ufwsuquqxsq mmqzhp usgorud Txzs!errrq pxprxpg e i d pg f hy q m g s w s n s g X v Introduction to Programming in F pq ` I f e Gt u {hhgn '3 ' 3 rX z V c W ' ngh|qr{hhnsoCdc d g b ' | d q ' oCdc b ' d b n | d q ' oCdc b ' d b n }r d rX z V ' W rY ` X 21 2 3 Q $$ $ $$ uu $ && $B r u$ r'& uu $ u$ r'& u$ $$ B $$$ur pp f uftsrrxm on vri upshdpusyu p us v v upxwgq$gpdgd nD x hf d q q r i u r t npq pngxhriphx fustqrr xq y pnr n` wdqpuf s g G d d im g x n x m s m h opx wgqum upsdpu s0usfd pqg nd m ygouss g xyum z pe sv m s x pjuuss p ruipstguqrdun stq usqs gfuses dhdushws 'vpux pg dd g x 7q ntq prm x xttqv5 qux 7s x u7 pr iupstgi uqq i f p rhy usd u'vps pm ufmwsr xyn g p~xg qus mmuAoGhV husyr Tx w qrdyq nm tv hm mpg pgdwqpe oug sx fdn~hg! $ ufwsgq xpufs j m n x $ rhdpv gnfptguuqses uus pp~nTn wfq rxwg wquqsmm xmu7qs h udsggm rrxf x~ ptgnqg f pqd hTrp v x7p rrpx pxggu ws$qu f g g pt pg q m n v gq uftsrrm xq thohdqndqrx0hvpgprpigponrpxgv pgnpg qufwsq xmq ~onzpzpriupsgtqux~~ohd rusr ptgqeyhuspqus y g s x d n v q i pjru ufpxstsgtpsu rrx udd!$pqgupgs rmuuhsx stqrp xgtu qusgps fuowsfpq qmixxqom phm grqhhwx ddqrgdmqefrgx7ssufusnpn pg wgppgesugerxsurpxggnu pos g"riqn ruqxnpshu ~d tsq s n x d q n hi spun s q s x m ' #y rX z f s pu"Gxguusrxen5'v uppsgtGmus uy5ps h hhp gyfrxwgpqnvsu y rtsuf rgrufq xhsq d px wgqv Gv s x s q g dm v qom rrx ` vi{3 w vng w v zvn{E`vnE { g ` v p z z p rg qs jpxxonnusxrxpduusppxnpgtqxunuufws rpxq g xq mmywgpqGpvl x s g m s p p tqrghBpgfrxn'vur xv h fdv knuv hwg qv kmus nu q hufk wsq k m hk pwgqGkvi i f d m k k v v xq s v v r q & & & 1.3 Variables and Input 13 1.3 Variables and Input 2 9 'q { 0 d x 3}V d d 9 q 2 0 9 g C " 3}V d rX z 3}V ' G V W rX z g "" v ny p s h p imy m ouhy y vuyrpxgruiustpsquwgpsqus yn yue~qg rppxg~gx px p gn qwsrq pxg pgd rqq x dqwsq g~wsuf uquss msuvgf g p u Trgm vus 7pxhduf sg hGnspgmfrvrrsunq hq Gq uqs gn g s q g q d x v s phhuspgppgdqrghpypgfuqrxrmrvfu7suhdnsi n e osuv rgpf pr p mrxe gm s v sT s jvj rnv Vqr pxguus s nqom tsqq uqutepsm q uuss eqn urpsxhTpd gwgsq ues ts ruv Tegpxx!rui s wgruq s #1pg d m! i A m T $$r$ u 0t # uv rpxgutsuq ps g jhs tvuqs s 5nypguss rx o ppgpxpq xm 5s ny rn ypsruipstguqqs qr pg5s ri g xs uq5 udsriupswg qunGm usfustqrr xh!tpzpguipstguqs us riyxguq# s s y uyf ys pruipstgquen"py g gyspfuqq px vupriupsgtuq s Xquws uqonupyusprrpx qpu tsguqm rxnzpyosu uhzpyqs uyqsrgprrppx pquqf xhn yzs uyuq v yqrrpxg pug nptxGhhrxgdp qropx mtg tquq x s r x m g s g v r pxgutsuqpsh uvm vgufpss qpgp dwsuf rquhsi zm ugIf vfudwsqgx u~~opmfs qus runpsiugtxpsqg hni()xdd p~zrmsuqxus ndvpuiuf psntgs ~uqps uiuqr pstvsqwghsuq h usn 7 sd z q u ~ $$ru m q n m pxgu wsqupsh~v~onzrdud s uvs $r$i fy wsufs rxq G h jhufptsruiq rp s wgxuqGdxsn rtrpdpxugtd ohypv prgtqpsiu hgd tquGs e rq ruos n~gp Viytguvxu $pog npguq psuqpsh v t q s m x x sh n uG $$ru yh gpfgyiv uuGrx uos ny~rg usf zpdupqgn dn v s s i s s uypr ssuqwgpsui gfrsxg riqupshpgn pvrgr7yv ()irrnhpgs xypge q h nd us nrvxxq ou Tn xupthpy x guuwss Asqnuq nh !x gtTugfustqrpgAxqq egxufsm rws tegpxmsuqx rdx pdgsu!tg p h i p m f d jfd xx ~on'vyu xq Gv y v ppghm q gpx md$murgix dhq gfd x n p us zqxx rx pduussqq n uqm xsf n~p onezrqn wsq tqx yqrqi g j d m f engfustxqpnzrrpxghdnopwgd v o$$ uf4xm upj g pxgphsg pgxgsum r e$s "hAhhdn ddT rpui gd ngp prg h x ppd5sg usy ynTnxx Apduuonss ne gpfwguq sm xurppv us s nr h f x us s m g x y v s guhy pxpusi x u qfdq uqs x nouustx on7 ppusouq mh q y g s g y hpdmd upzsu qrf xq pqg rprfpdp Tusgqprdiuwgm ps quxsf !nnduppos npwg$uq s huf qqts x7!n s n g s rX z 1.3.1 14 Declaration of Variables ' Introduction to Programming in F zaX ' de d f i w h te t r vr&earrxk(rvGrTh v z X xr xrX v z h v v v z X r xrX v z h v v v q suhhpnzrxn s sdm g x q m usg hd( muf vr` e 7pxpg rxepg $$s uf wsq xq nq pzgf i r ojj u xs$hm nuhs $sv r pxgus d xnTpgf 7d h pdud nrxrxs7pugs hd$ d x nm uonxygfusg mur gs g pq g r eghufgfgsu p p ws xxqxmqq qqh n rexd uns peeq x upg$s yuqs tpdpogp p5Isffutxqr7xsuhhromxdxmsq 5egpgp "pphygg us usq d psun r $$ w $B u 2 f x r gy jphxrGuwrsq ex pg p udrx no$ u$gVfrppxuys ppgg p pxsp xgxhd nhdym x oq nxrmddq yxv x ux pseGpuvxgd xv ps m g x G s g w $B u 2 7o h5 ghd g m r r x pg jdj px xrguin xszuqpsfupqgstrpfrgxuons rgyf rfrwxs$p dgfufs p 7zpgv pqg7hnd gyrpf x mgrsuf xgfrrxq y qm v z X xr q` p e f 1.3.3 1.3.2 Echo of Input Data x o g v q m s q m q ppgd q ~g n gpugso x n~ppg~ n~usdpoyg nppg m fui wsrx q~nom pwgg uqms y rxtv xphq q ufsm 7nppvpusdhqusmq~rui s7pgdhp urhusppgf m rufv i ws jrxj npmd5nxonx7 x tpsuqn y Aqmg uuhsssu mxmus rpdrixrrtpyius qgtpgqus r7n n$qv 1pfu tpg stqrrxuqm h!7u s v7 zq nhupd vhhns pxgvdd$mppg gu7pxsgufhqn s yd y gf x m x " z X r b E W 3 Supplying Input Data { 3z8 2 V r 3 V W r 3 V V 3 kGrxk te y hj { ) c 2 he h d e vd r"haqk q 2 s o s hf gd uqhTdsf gusuv ghhpdf gu7g7fx Gq gf uistqus7qf vtqnu wsq uuqswsupnng7ns ~AxmyAvqrz pqoug penu upsvBpx ugpxpsgg m$u f s o s sqr q q rx g g mg r n d g r T r erpxpx usGuqpsh~ri v uv gfxsq rp rvg yt0qu nuq ws qs nqksu u rxo n g p wgqqus7pxAp p5qg gt rTq y puws uiuqpsouqswg ns0n npgwq u wsuqorns ms g i 7 tv rdx rqhzghrdf d Tyq n `fupgqrwsuquesx sphvg 0op 5g Thpdntuss" uqos rzn r x pg pgus 4pphusoupry Tpsuis tgruq $qrv i4wsuuqs n px s5x su ni fri i x "pg m p v x s u # $$r$ 2 d9G d ' 'rX r W { z { iE r r W3}V ' X V rV W ' d 1.3 Variables and Input 15 g q qm n ppgyperpxprx~nzpugsx~ppgufwsrxh t vz`1 v Gt u v 3 xsrX 2 X z C Q 2q xXYaX z z X r r 2 q 2q xYr X z X ' ~ nhh" { g ~ g g hn 7 z X r ' d m g v x m g q pyon ppgezs pgus xrs pxgf hd s~pgfuspnxw $ $$pg mh pgxuyrivughpdusud hAdpgyonAun! uwsqhpdppTxpus i s m s g s ufpgtsprqg ru xdneth upxs gxdtzd g hin vutq r ghf prx en gpvpwguqq s q orx n uqusn sq x t h 5gusz $ $$1uftsrrxmq 7v h vm usq rx y$x $7g px uwsuqufsutsr7rxd q pimprruiuos pswgngtququss df7oqrx nnp 7phg u$m rs$ rv7 iruGnx rq$dursvndp oeroynn pr$og uq s nxqrevpvn 7pfgn i s x A x g q h g pg mri v $$ uftsrrx h m x dpgi fuq rs g T jpurr nfusf n xuwgqzqrpxugwsquoqsnon "pdx uhs pdnsu 5pnrv ptgem5ppxg x r s n e sxd vpvpuudeups reuin p s tgyquonx nox 7d w!qq ph gfusg$d "xf u dsmrtrpxghu dspg!n 7 s us m ~ $e x on d x h s q x q n $$ $ $$ uu $ && n g fd dx n ppgyxrpxpgmrrpxghdh u f ``{hhgn '3 ' 3 u f v z X xr # z X r rX z m n g n s m vup pgmx y pg pxpr x~onzusn tx s $x $Tppggq suhqs ny v pf g!pohvruqngsu sh hd pqg onTxpvo x ruos n d rh uftsrrx x hBh7pgppg fuwsq rxhBnTusmT hBq ymtx qri qonfqj onrxuq pepg hrnmg eg v n t qhg uhps g u!7qs us pfmzmg upspg nreyg e$ r$zwsfnx u hxmdq z~renxmgqp zhdx du~sq s tp rmgsufpfg ~ v s x pfrrni xvq npoenpegrqeunevpghq p$gqg pmm5n7suq hn q hd mpg x s g n jr uAwsx qonx 5h5p!suhs us whq rdxgpfgpmm rqx ehogn y rpxgngdd wd pqgusq g I7ufx tsrrx$tsufny xhn x f h g m suhoprrxgufs v sdm gx d s rd uqpsTspwsxqm og `u`nms dg x yf ustdx`pxg ggrwf d ponrpxprs x qg n n h s p q g f x usm pggp puuonpf!rxGppi epg g upwsg yhqq Vp ge{ufuwsv ppq g xxqm4rpm tux gp7xTq us qesuh F R 1.3.4 16 Rerunning a Program with Different Data Introduction to Programming in F f cE g E g0cg | d q | d q I|0 0 d q | d q V V c W ' |qV{p d V 8 oCdc b ' oCdc b ' oCdc b ' oCdc b ' ' oCdc b ' d d n 0 d d b d d 3 3 0 d 2 V V ' W X X $$ B r $$ 6 u G uu u$ r'& uu G G $ G G $ B$$ r i fdqd x i s q q gtuvqrghrxrAqphgg 7uwsq us xts hd5r m xuftssf rrxm7gufs5s n uptfpqpg~m pohs fustqr rxqms n~ usi rxd ~uG ptg uqsumi ru nd qd nuqws uysuh s g m m g n v sd7uqt uwsqu7 rixAtq rg foqdrx7nsyuv f gt q rghdq s$x$ vusrx p uws uiqpswg uquou ntsq upshdqrpxuds osu pdunytp $g usrirgDfuwsq rqd xrmdouvi ngpoefx nus uy$gfg7hhuns s sd s$ x xT V 1.3.5 Reading Several Values t t t t z G3g 3t1 e f v t t t t e z v z83g 33t 13`) t t t t w u v z 83g w e G8t {hhgn '3 ' 3 t t t t t v f 13 e qt ex`1 t t t t v z w e w v Gt t t t t u {hhgn '3 ' 3 x nh x e g nf e fus v qhqd grxuuss pxpqgs n g x g v m f m jr zGpm pxg h mxd nd 5pqgusppg xgfusGxuzs rpi ppgp7d qhpm Gsgu qntsuf urrnsq xp gphpf g dGut~rs u uqm q yul u ypvurzppdpgtq~vm txq nqtq xenrdrxruid x rpd tgrwqx uirsq e~lv v uqspd x gx v$ ~ v s x g q v x o hh qs x 3 5 3 34 $$ $ $$ uu $ && g erpxpx~n~pri tjfqj x upspvqg o rx pxm Gpgf ppgeggp urpxgd dusppwgqfupvspus d npruifsy n5vf rvn ed~x$'vu usgf qrx 5 sh q o m t go r G g g m s f $$ $ $$ uu $ && s gd dx erpxpxuzpmr~nGus $B r u$ r'& uu $ u$ r'& u$ $$ $ $B $r 23 xXYrX z V c W ' ngh|qr{hhnsoCdc d g b ' | d q ' oCdc b ' d b n | d q ' oCdc b ' d b n 3 3 d 2 2 3 YrX X z V ' W 1.3 Variables and Input 17 F R tvx'vtquqgwfxr~xq Axdqpmm g psd u uhqp gnuys nd y!gfd p pi suhxs xrq rpx guts mrsuqn Iq m usgf q r s r sy h 7 x m vfgrgf x s pj!pmds r!dqgpx o nnxhwsu uruq onxs unxgmftq ux psdi rynpphrsgu zndumsppuzs!uhngpdvg`q usgm uwsfqqumyshmxz$$zrgpngexx pdpuwgqs pupugdhdssuph g q g s s x g s i su i !dx n f s h n ns 0 l ss q xrrxgfduxduopAqxpnpg wsVdm usp~yg oxn ypyg prpg psuiwgsuuqhuntsGusuq msq d x i d s m g d v y xT i !IHd rrg x!qed uo 'vugw dmfsdrG~7pxx rg w$hd uq7ugw sfumsw~q~ErEdFonD CBx@Apyg hwdzxohqn IPm 'urs 'rn G9p8uu 7 Auxe rd r d F S F R 7 F T RR | F F T F Y RS GF P k u v w px` v v w ve w E C eq3v tw z 3v uw t t t t z v z t x` v 3 0 v 3 w e w V p { V G x g x s s i ! h nyq eu{ uvppgesu hGouzgfus7$$ erop pghsus mh rmqd wq xpg s pgd um sq y ppgxd m pgontpggppg !g trxxd g fx usg ~g$$n d sAxesuhxhmpg x g x x q s dd up nhs hex5pruitspqv ghyphpyyppq ghq o pihps f f rnsp7g'vppghhmpg s s r s dppsg uipswguq xtpqgnGugpwgqg s un s $reggrxpqnxusn un s uVxu egrr'vffx xm gifusus qws u$s $s m! q unys pfup pgs qu$Gmvn 5n hpq drqg px g roui npsuqtg p!gs hpq ruid xps!uqwg sn n gppghm dqusuhTnAxf g dpg gufsT n perq xn7 jphXuvuv rurnis ri uphs pgdp ngxfu`qs trrqrxg~n p x gruyx sd pgufrsxg~sf nhyufuqtssrx xGmghhdn g d s px x xhm f x qm m o xd i r h q $$ $$ u$ & d d g s g d q h q q mpg n r perpxprxnhyppgysuh~nGpghe$$ fuwsrxmvq n rx wdehdmrx ' 3 x s m g sd g n ppgzunpxgd~pfus~np~pg!suhmph 18 Introduction to Programming in F v uw px` v 7w ve w v 1.3.6 Default Input Format F R 3 X ) Y V X W V g W h e r@G rQrrak e i xw F S ' e i xw h we rrrkG vTrd krkw he x X XY V W q ~ q G ' V ~ r ' G V W V G W 0 W d 3 r V G 0 W W W X Y X rY q 8 r |oV 08W d W d W s rY X X r V G 1 0 W W W 1 W XY rXY r 3z8) { r V c W ' oCdc b ' r n d b oCdc b ' 2 V a V 3 V ' W m q npegfus"dppguwsqpTuh7rtv uvp7xf hm opg us g m g g s q m s d m d jgq rxgpugs g m s x x d x v 'vm qdpzqdgfrxenu norrphs qdnwuqs ufqts rrxq Isumgq n `rxuxsgtdq pguIps q nm 7dn gfx r nxq uxBuqspphug zumms r pr `pTyr gf n rx y x r dr s st Q d xe $ d g r j pugspug$ $ ud s n qdgm frhx m gd eg r en rf xyqrhg xgf xpdqumAyhmd n ygpp rvnpGhhonx7oqxvnsphr5'vh n7rxpgf s m g m y m g d ug h d qm g e ~ n s g just$$ nghqVpvupshgpf5 s x s q s s s n q d x s nAonxg m ruf on gfus 7 n7rgf tu7gmrvxvsuq h ruq rruiqd nsun pGpvgrhnmqxx 'vfusue hupps ux5s gp ps ~ufpohrxnqgws ttsufm erx nxm enu s gfx e egpx $hxj 0d ~png egxrw uppgo umos hpm dgopg $ftqGg squ h$hdds rgdm frfm uxws!n s xuqsg sm eusn7ppg nf p x pggvv`uvpginVrx`px fdu qt srri n h q g h V n ` g m s q 5u$ $ru4 # c a v m ppg~ rx rx h so q x g d r h tvpugwf xrdmiuyds r odx unsdh u5dnsfutq rprghydmdqx n xyd rmpxhdd g x5ongp"ng "suqrxq 5umpphs g hrhmhpx g n x x n hh d h xd xnr g s n v im pn gp g ds ody 4xydhgpxd ppgd gsfpVqtgg pg pugtv qTTwsfunVTqxqr 4pxgs upg s4epgh tdpryx un4wfd qru~xx svrwgmxp p q ~g qpq uudwssuqushts nTsuq nsAnsu ss54usufn srq o y #u$ ub $ r X BW c V a$ T & ` U & r Y r & R $ r X h CW uu$ r $ U Vr $ T r &S$ h $ u r$ R r v g x g p~rhpzpgn m rrTpnxtjq x x ppg gotgpwg qgouoess Qpfuhwsg es uextnshpxqsdr!x g qhusuqwsuruqsxs ng rufrs hxxhpnum o sueqs "rt qd hmwggqd rmf gqxtrxypxu r wsguqosus gnpg$uf x q nm d u q q uqs Tu g n y rqd v f me f r 1.3.8 1.3.7 Input Data from a Terminal Reading and Writing Character Strings 1.3 Variables and Input 19 2 2 W )) q v oCd XV rXY ' d { |qV 3 Xr rXY ' XY 3 X V c W ' 3 7 3 x 3 o d dc b ' q d b n v z ` { ih 3 3}V V h 3 ' X V d3 W ' 2 z ` 3 V V q 3 3 2 s 3 X W s X 3 V V ' X X XY f 3 3 X ) Y V X s X W 2 3 2 rX V )f X 3' X ' rY z X V W q q uuvwqguftsqusgquwdpg f uSqsp tr ruxpr$ng qnrox reyin ptgquf xfmqdws !snhx v s n r m sz shm # p r q m q x r m $ $o $$o r $X r r $G $ r$rG u$ $$o $$ r Gr f V $ $ $o r rGrX $r pdus g pp j d py rufxdtsq rmm q rxgp pdqg omn~umdsn dx unsx nrk qupsv prgpxg gp f gpg pd pg nd`p$p $ r$piqor$ hyrr stsuf rq $rn eqx rhvq gh q g s wg m h g$ ndr $ r $ $ u o ri$$ r priuswgquqrxzfuppgu~quyperpxprx~nrnpgv p s s s s g x n r v x q t8t p u e u u t t v { E V W p3xz W v 2 V 1.3.9 20 v x V 8 x q v q V q v 3 XY V X Wh V c W ' oCaV d XV 'rXY 3 W p V b W |qV V d { W o sdx V W dc b ' V W d b n oCdc b ' W E 8 2 V W ' 8Xr rXY v x 3 3}V V V d3 W ' 2 W 3 3 2 u v t r p p { rxuqsmumsxpuquxrvrnusv5wquwsquonnygfrvv xqgf~~n s s i m s r r 3 r r $r rr r r r $r u r r ur3r u$ $ $ r r G rr $ rurr 4r r4u r f r g r r4 r $$srr$$rrrrhff z v x 3 G 2c ' 81 V r W E 3 '8W1 'h a W G 2n r G p V 2 s V X X Wh V ' W Introduction to Programming in F Exercises ' g fGg r h ~ v r V ~ d 2 2 C33 } r 3 Id3 3 q~ 2 2 2 d 2 2 G 2 n V~ d b ' W 1 V ' rr ~ v q } G G G ~ ' d b ' pvgnm ufy s G7v hxq u ppgtxri pxf ud s n5 pnGs e r hd i h dgf n x g xs i hus 5qn n~vutq rghsusfu~ unsdynq ppghpg psud gtnvi pnpyTwsu qmr!rfx uTpqws rxqd gmx pvpuutpwfgxqrx uxsugops drgp!p og uqnttpoqg npwsug Asuqndgr xux rps hw f g v t i uv h s gn x vg g g s g 5 d h s s y s g r r 0npepypopg o7fi usg xf uGsx 5p ~gnozf rppggguGhpnums ny 5ufsus nsnuh 5 x i f s d x s ! s qpg smg gx npyrrgvrpxguhpgx!sxv tofrsuiu~s xnrgpx y u~nzn gp tuuqsg~uf swpr!xrpf hn s x r $u0$ruX $$$ ur v m i g g x ! s ~ pgufsypgerpxprx usnrpq gxertv uqx ns uqs rxupwsgxiqpmg rvx rpxgus us~ untn dyyd hp tgrqq eqx vru Tuqws sunpsyqyrx e!pxf ss s heqy rryvix peTsxu phq rhpgg xvuo npppgwfpkuqg omus r n~!x xqrgpxA ~yfg irxpxu 5uvn'vrguysfuvogfs7rsu q fxyugs uB pg s s r T f g ! i pqrg o sx s r fx s oC$rBu sr 4 u '& ur uopd 0ggp rhx ~pd gxus rgfi x upsg!ns drr!yxi q pgu~ws nxz zpsux g pon gfg p 'vuos ppgGu utxsfs qxmg~ufrxs s i y q qus s p qe ~ gfusuvtq uws qun"n!qugfxsu kdfrxtpqx gusd rxyvudgrfss ux s ng rox p pgrwsuf qx r xpq tgmV7uqs o 1.4.2 1.4.1 1.4 The Form of an F Program Significant Blank Characters Continued Statements v s dx q gufhpd~onrzptgm y s sus ushppyru iupsgpsptgguqpgs p hq h puqwsg ufhsnfuqs " phpqgw g Tpqs n7h rusx "pduuss nuf nruqts rufp wgqGpsuv g q D s xq s s r m r r p ro p p r u As u#r A rSr #r$pA $$ur qv c G 2 2 ' z { 2 2 E3 x7 d ` { oCd 2 2 }r V c W W ' g7 dc b ' W ' d r rr W )) V ' W 1.4 The Form of an F Program 21 p vj v rs qr pxui!en yq!pr g tx pqtq uuuwssuqwsquqs ns en rpxupsg ohn xmnvud ytqunxyt uwsquuws qs ny ! pxustqh qd dm 5nynpx uqds gfpzu qpshg0oouqudws ns 7ny $ g g t x m ds o ! X t 23 G 2 3 W ) W V 08 d q 2 1.4.4 1.4.3 22 e x h r r@@GT g V GW 0 ' #" $ $r $ $$ rr ff $ rpxgudpgrx v s gf o s s m i m ngprwgf xpqugpfepsug hGxx npg p rpig px wffrqvBrpgg px puhhdysg pgx gp ust qmgufnqus m d g g ! s f f s qx quq!ggrxysv p g$u tjxp"sg qh us yfq ugf odnv 5hp r xqexx 5d qusvvuf uwsf xq~vdorndn rx uipxgurfq sgf s m g ri r x j q s d n g m npgs n tvuqygggfrxsezp7hpgni7goni gf us pgx qtfs ypg5ofgrx tjuq h7pnpeuonrx nq rphoxg fpgr rrxrnf v rwpxquguffss up s gornf xhq x opqwq wgdqrx eqv7us s g s i r o wmy s jqdrgovnuspgq p eq x upsgrugopsi u~sg tuqgs fwsu xuqnufews ruq xpsh$I u pgy pv d i dx s q m j rx q x s v tuqs mh f g x hgrx5prus qmsfutqrrxh!m dm nr!qdwdqnds weq f rmxx nf g yunpxguss hohpg d gs f xqd G5xsuqm !hdq upsrxipqrhxg ppgqhymhh"d d $px x 'uiTds vpm ggn uygs pv p g usgrgxpfgn udq sxgfqutvupsprpg i s suXouy p u u4nzdm yp gf rvgfqrxuwsqgrspgx hdxtqdroupsri n s s q s m m x vr q mg rux!v osuqpn pg rzuisg rtx hruxs qtsi upyuqgwsq n 4nngtgxg g upsfurwsq! pfqgxxqenr!xd rm Vgx pzypx n Vuf usgsus rq Axrxufi x ytsuq s xpgpq pgn x i g n V i s dr so m psu !qu!qnhuss n Aqnrr n~ x sy i x s d s s v qus upsrGox7puggrvupuGgpqgt ups qrTui tspuqgnd! rp ~Guqxg syxgvzqnf x d q r i i A q ps o i hg f usy~nd px zffg uyhe s rn erd uupss npugsrxyuvsgfrxe xy s q x pn upgrroeyprug ousx oxs nhg qrgx o$p p g g udxuhqresx uyvn Aufms uys hqwrq xewsuuq vos n $B r m s s i x qqreo x d q m puf~n p ysung uGupsrqrg5f xv rGGvx roni wsy u fuquwssmq xmi~s hG1pgf 5tsufrwq pqrg xGnnyg p sux gngsufpg q r x g 0 rX z W 1 V #'} Comments The F Character Set x F R A V ' W Introduction to Programming in F q r W V g ' v z x` d #' p v f b V #' W q u jf q g xr pprvT pwgqm fuwsxqm perpxprxnhxv hu sv p q g n grf F k @ 1.4.5 Exercise q x y r x ptjhqg dop x gnuTos ugyfpgupfggps puTggms p!u"s uopowgn yqRqr5vsx u upsymwpqhg u ruqv tsx nr!x ypn pgigxgpxvx vn pggqf m x U d s d s m s f x joxdqutsuqss n5xgxysponppv ox fuwsxGupduqsum'vugs uss q f f g g q qm s g m rpqt qugx su rws xuqG"gusuvxon dtq xdrgihpg uwhws qquuys s unws! qupohinonuo rs v pApqw wgqugsm rnx dqpnu~dqwsy usguusns tuqrd xs oy nywqp5r uiqusts uqpuwgswsnq uqm"uunrrpxpxhpnggphhuu ss qs f ss hh s d s g R SR Y r v d b g { T Y C 13)v )3 g )4Qq1vq p p h '3&)8)33Y"o n eYd)q "y' U Y|Yk m 1vY381 l Y1 k 11vY38 k ))"r i j Y i h Y3 g S g 1v 31S f 2 )3&)QeYd)Y)3 3 ~ )3)TC Y3 f )) Yq YCY Y YCT YCY Y YT3Y3Q 1qy Yxs 1.4 The Form of an F Program 23 {E g {E s r X Xr 0GW) E123 2q a X XV 0GW 2q u ofus jxunsgpnmfurmswxTqxqhr5xxpqgpmgzd!onxedqxdpquhsuusysqq!nr"ixnrgpwxqudrsxemq!quuss7prrxp!xhuuswdpuqsgsf!usonithyuosyulvdxhqp5gngqp5vuetpdnGgpfungspnr yh g v go TpiuspgwqusnGx5 rxhdpusnrxgggpfuussnyniunpspgqgwu~ruxhs~qgrs!pug5s f p s i ruxspmgiufpgtgspwquussxqiyggqpudsdpgxopgozyppgtmgxpfugsqwqrxrxxvgpfupgpswqmrxqymunsArqxvnprgtxsuqpn q dr qx jqGuswqusTn~rx5tqusmzusoxpgustqGn0npge7phdqzusqsGhdhxvmzppguges q r $h $ r$$ $ m v h gusnerxvpiusrixqm5pgGnpgnoyqpguserippgerxpgdqhq~noynpgetqqpgn~ vusqhmrvxtqrxridf nrxriqxrxyustqusnoegp pxgTrusdqhxoAq$4ppgssuirpxtqgwunsdqrsrpx gfnd4ovrnihprxgphn7x$vtysuqpiuspgwqusGpsg o ie ! d h g $ dr upsysgoxduqmgfuqsodpgqruxrxsuqtv'm7qsgrrxdxfhmrxquvyvwvgnqusfgfhdhneoes"pqrgxrgx!rxpmrgpvg!nepghz"nutqsrnnudsgpyfxusxdggpugfsxdupseggxfhgdrufrsquxqs s5 d p y pughx vu sgl v s q q suqf erxppgdf x nn hrvx wuquk vskh uk svq~pg enuyl zpg5 ~xhdpusn$us i d g m ~ m ~ v q q v rxs t s pd g s v g m x rTnu pdsusnsux y!u pd uypqgtyrqugf snvofusuwp`qqg us x r"px gu nsd7rxspxr g pd u hhodn ssThg pnrm j!p v ppy pd tg ieqguquffs s dq q hnn 2 ' W 8 W X X r G) 0 W X )W1 0 & d0 d W 1.5.1 Numeric Type Conversion Functions - 2 3 ( u f v z 21'8W v f v t )d u xz q 2 p " q 0 3 jrrx rpgrp qtg p ~$ong pquurpx gppg!xzipdgu0os xh ep pv rhggrxmf m5 wvrg$ n rvhq hd us q m s s x d r s q r d g x o f q x f x x s x ug $updv ugs ypdryAix uzgsx npdes u ~ d n xrqxx fpfuy~pf ufm n hps gp q v5wuv o nr q s m d g sA x jus7m g s s m m rpufsg 7 unpx7 !vrupxpvgys gpfpgdg ryn rpx gx d 7hnf 7qu~ds x nqryuvxtrv itps px rxv s$u~gpxf uqo~d~qhnnrx x g dr sg s q xwejw i vkkkvrr x we r x rw u x e xw GkvTrri kTakw krk rkvrq r TvTrxkw vrxk h xwe i i u rw u e w xwejw i kvkkvrr 1.5 24 Some Intrinsic Functions Introduction to Programming in F 1 W 2 G ` r W 2 2 r9 2 1 2 3 ' W r r r W r r $p rr $ r 03 1)S1311S3Y SY" 1T r f z YxS8 W ( W 8 r 3 2 8 r 2 7 j p priuspon~ v g x guqsopxgy hd uvusggs p uvsf m fo n i nuugnx p u"s sv dn dxd fpd pqupgs r!tqxs uq5f vd 4uvtsuqws qrp rtiuq rXgpxuXxndpn h x rid ri ss f g o e s rir g s s d h d n jj Tprexuyh"fs nrxxrxrigpxd! nrnu sf dpx g gdmuwggqs f 7nhygpnsu rgh g7fnx ppg5rGpxxf wffm rxqf r77qx xtr7qrmp xupgngp!gppdx og rpxedg or d pxxpGjghhnnxd prd iutsrq phggpx osud hm xsuqm m5uvzquhsnrx fg pj d x g x s pr g v fG s o ujGoprxp g g s sm g g x tvq g uftsq sudh nnsp ehu# s prpxzs uGm q mdgq u r~hs pduss nzpg juq mq $rx s u~$ u5 q gfuwsqusTopgrtnpe usprrpxeuT gA u "r dhpdu5npg $u#r ~u g yos u mgsx gufs g orqj n x u pxppr`$ uus#gprrrpx e ux sufrsxpq5g rpxw0q ovm xpg$ u Tp!yufpoGusf pxgThrdq x eAtvhqn s us g g ' ' ( G r 'dxG a 3 2 2a G a 2 E 2q Function w 'x%G w y d I r { 3 r tvqguftsq ujmdq g s g i d f s grspTu s 7usp rq " g grh$vr u q # guftsuqmpTnps ge n s g m g xqq pu Txg pdu suisgn tqrxx rv us yp uf uv mvsud hs rtpxgw q xxrphdqnsxAq ufwsuqmGoprn jovpg xmxxrervim ssv u uepx s usfuoepxog nTpgdpnexwgqqn rrxx u x vpwggp erDf xqhn " tq 0 qx f h o g r q f x d m v gd pqq y qpx !guqm rpf fxv n us xqpgpxf wxVrrp x pxgxg!qwhdoq ptdxrg px tAqq upqg hds n rAx!horx q m v u5sxpgepqrtgeIx qr!r!gn px d gs x t qq g qg q q s q g v uspgGzpg d FQ R 1.5 Some Intrinsic Functions 25 1.5.3 1.5.2 Mathematical Functions The v q xv x g s qq i fd g x fg rvhd rtqrpGupuss xtqrghp~prigrm qx r n zq p$u# reus ghotf $q prg rh Xhf h d ruv yqxs gnm $# xrx r$ pruiusps enurdp!su u !us nwszq pguruq rxs sgrgpxnsgptpq gq dm7vq i f pdg oy s gu s x qs vwqutsuqnxpypvrx~nGuszhppudshn~uq~h s q g g s n $ X X 2 3 X s2q x X 2 3 ~ ~ v q v 2 qvdv v 1.5.5 Exercises Y y Y 3 u e d X 2 s3 2 3 X x X 2 s3 X v 2 3 v usrx~onxxnusropgr~onzopwgqmun uftsx!~pwgqGv p x s q qm s r p p gy x pgev$xppk us`xpguusdsk rqompghqeqdppopvpgVgpwxquusshdhrxqmdie#$urizhwq$op$gpu s r yrpmgfusqu s qx v'gfdqus r vpox npg #$ uh $ $ vxpgpriuspdgtc!gpsxgwxGqpg pg~us n~pg uspghqpngxGymv drsisuhnquspg usnr qxg g xGe fups nhuvrouusswqeqx`xsxpgggpfusqmxqphdpdusp spgrgdsuonhp xpgumshjqrxqmq5xqmtpnxtqgf s o r g q j fug swxqupgqxss m du s onr 5pxq gppgggfwqqhmm 5xgpngp pvh~g I} E uk g# pfg u5~I}Ek usp hues us un dmnpdurs "pq q v unhgqts ps r s s A i h g x s x x phrxmxpp $ $r ypgufsrrrutsq s s ushpxd rg xpghq m u05pnmsq gus w q $# 7$s usp$7 uyus rpxgpxugshd pgq m G g oes Gpdusp s r s n q x n n g vptgq pg uzp~g qh g # # v g m p prhusp #g pxphg ud sh j n g p5 b us hpuss q phq dus h ~np g5i n g g |h pq pxuds hnd pg r9pgfuxyuzsq x rorpgfpo pruipswg uqds j n rquqs r uftsuqsx Vpgne grp #{ypfudrrqx md d dp grsi q# m g mg g g m g q xv h gdndfxf px tdqg tfupdstuquss qm o pgf uustquss 0hdm pg tqro nptonq dy Vpxg ohhpd ud hnn 3 q sy jr uvx t rq xsn uvts nwu q uqssupsq hg xe dnsg 5u G nnddpohygpg ~rrhpi xgpdperd i y ppepg pggopw g qrrpx xpgzhoqm q dnu~ts 'vuqosqnnGsumnu5pgf x$npug q um p xq u s g gq x g m 26 Introduction to Programming in F 1.5.4 Kind Intrinsic Functions - - w X X X X 23 23 2 3 v q g b hi b 0 g h r x h f h r TrrYh rn | p X I 2 v v v 9 h v bh Ei { { 0 g zrX I v rX 2 2 v ` { qE1cp 0 g q 0 3 o pn3p nc n p b b 0 g b g G ' V n 2 2q 7 8 ' 2 0 33 V 0 X V 2 01 )pp g q 3 0 V 08) X W Xpf1 u v w g m s m g q m t q yjupsuEuxodnspvppgups hhgumdgqf wppqf ghpqn`urpstqg pxgnhusmuppgs~qpmrxpgogpd ustgqf $ym rpn "g4sfymy unTxrtv Buxrws pxqgrm dnxhn `pg ( s g x n x q x x s Bpqwx gppg mm umsyuq syg h jhz s rmn m px onqpners hgpx upyqsg t 7oxv ppm g mmus m uq x rx pxgutss qqx nnpone q m gy n g m x`noou wsquqr4rpx ng` p0qwfgm u00w qxdgurstq0pxx guqws nTrG0unGrxgf0n un rs $t r r X 4 $$$ 4 B u s z jsujusppgxqrgf~pgfuh $$vv wv qupfwgqdqnq m u 1wfrxt uqx7f xognq q qm m m f x x m s s m x s q mg qy v ru tl px riug shpxgqmm Go5rvux h rpxghh d ru sppg rxerxgf pg g q v tfpxrpxgxe gppxg g$ udppTA wqrxudstpqhg 5qxwrx unqws pmrgGd g prhjig qf x5iypngesuustgppuqsgpftg uq s r r $ r r f uu r$$r fff rr o $ s s x m s sm q j g quzpwgqus xpfwgq mxg zp gfu hv ni uqpzg q xgqm q~spgx ps rpxg xqm upxgpmpgghnudsrxm gpg pgshx pgwhd j7 p7g pn" uonre$vuon quspT prpx o qT pxg q Turhyuppq vp vi rpxgu7q xhd qoxp vqv dwdqy u v v rpxgm u~xwd qrxuvwsp tq uqs y v v rpxgupwgqidp y ipxg$uzrxgfrxs vq dvhdq yui v v pxg$u r s v rpxg B uvwstq uq5yus q v pxg $us ofp vuwsqtquv 7yuq rpxgi uVoqg q ngpxdoypuig psuqwgs yv usoxm 5ptwvrqupfwgqdr s uhs grxexqr g xuqs5 s pduns gg s m d m f m r rxxfj yuuqszhgps p wgpuqTx!wgpf hq onquszns ppepxgmqxqm rux!rx pxgu rws rrxfm dpx n pugg ~oi phi ~ g @kw r d I ' 1.6.2 1.6.1 1.6 The Interpretation of Expressions Primaries v qm i x g g s reppgGpn pqusmmuBus s n ( q x f p tg~g r xpgn deueehdpgushgBpgr dpdh xtr jv'o m w gf qhue duuss 7i s r q r ufpxgus g fsgu psd gerpffm x gr x qgrnxtgnvsuguegqusuwgsp phvuprTtxig hpdVs xu7spdghrzuuesx7pxpxggupsh mpmgus gx7f`p7usm x m s g$ o GkTYh r x w u u h Expressions and Assignment 1.6 Expressions and Assignment 27 0 g o s i h g 7 s uqs ~ tujj qs popg gd g pnpv7u p sp g7$fvsu Tnxugs yh"s uuoss q nd m o7 q pgnwfq uhrhuus~rps hyg xhugd pTg m ru pxs5ug s uq snqx m g o fh i f IP uvwu G5 A r t wwwu u u AH1 wwu I8 w uwsB pp5g H rpx g hn yx r xrpxgusq wm qg poq nypufvs A r uswr7s su 0u ' 8xgusqmtqg op0wqrxn d ri jujusps p~xgf rnx n xxvrpui phypvmpusgugfonugfgusnqhs xyoupf pxg d g m g s g d s s p s q v s g xghpgrhnx qmstx r7gpxs qs ni ruspdusd uqs r opv puduuvxsgfAqhgn mgrx ujts nqy hruxm qwsx rm npg ru4 wfoq rnxw qqumVexx T tgi pxug pqgws wfq rm n7pgpg"p~g px m r v h T R Y k R Y g 0 g F T v Q F F v P ( k F P F k Y F q P )Y3)Q Y1 13 v v 9 v 9 11 v ) v v ra v v { v v t pe h r h 4343434{ { { { 3 ) g ) g b 3b v $t pTq pY1 ) b YqY q ' k 1 C q v3&)Y3 r h )T3)QpeY3gr1qv h h TY { AYxs zbbEpcb3bpz Q p i f t b n1cp 0 g 0h q ~ p s vnfuxsxroinus~qmhnpgnmnenprgxp~nxpgnupgeqstzmrxrox~n~nerxunsypgpj pprnxiurxtmx h x rdupd svdq n$yh Edqzhn pg q rxddusdnhdri$yuq pg y v' ppgprxmj umjtrn uqptgvop npg"mymugs phsg npqgtmn grfupxsgts ung t ruv xms nrrxqqt xu7qts m m xpxygVn pwgqxr~j np s o s x r q njm p! s d d f m i $ g su rdi g!nqusy`vrphdqsnGvpmggphgouse ou q d f s hrumj uxzuhp qpggxf gfuuwssq rdxgmxzn xgp nv rAx rpxdpdu~nn yx pn gVhugp hdus sghrv iGwsuoq uws rqmx x y s s g m qfr 28 Introduction to Programming in F 0 1.6.3 The Evaluation of Expressions - 10 bhi z g {h { r@kkYr@rGykTYd e x h he de u e x h x w u u Assignment p 2 G z 32l `q 2 0 | z b z g} 0 E 10 g 0h n g gc10} g g 10 g b w v 'v g qg x y yruvj wsx guqtqm rTdqsuxsf huvi dgqs fh7ps oy upgs tqnjripgsd n rpxxgpriuGgps tvuuqstwqs nuus yns dqfuppsdruvq xwsuqtq xeus uqs g T s r r X g f m us s pgfusg rgusu ns r~vx p gufsq 7sv puipswguqs~ sn x ss d pg Turx uss pds us s rpxgqx m hrr pxgf ms uv usy pg pjtguuqgups pyg pruips rgtquGvuzx px gfgf rrxx o rgff uns!p grgu7pdus!prhuin s s g uvrpxgh qm sh r gux nts q Tupx rgpxs uhpdh upgs ritxnTp n ed!qgg p rdpxgm f xqvrrp ufrs "i r!"px ug s dgrxfx gsulnj 7p rwfp uirsq x q m d s i x m pjwiuqxm v uy y u d uvhutsqx m huspg rm pxtvuqwsq g s q q s s xms rvdpgtqgfoyv rug ss ys huwsqrxyp tvhuqq wsq pjg wihuws xq rm mpq gfrx uyqs ouyshwvq oq uustwsqqpg wimrqu5q qTmgp wvtsuqq pq uwiuqryuvrmq pxgq qum s uqs q m x x ujowqx n ur pxgus s pdus 5g nyp qdgmfrx7 x nihd5ruvgfuonAp g tfx5pg sr s g s g m q v i s s q vpruierpxpuGnmpdrpxgh"5pg ~gpfug 5px gsug rrx i g j pruis m s s f x g s x ugrruv gspx df qqhdm ~f rnxy rypxogd uhsn pd vtuqs r~p nh urgpfgu~pms x7pgpxxdgurddis zprg xn x ng vpgushr y hpx gfuuoss nyqrpvphgv rhpx gpx phg vtqu phgxpggfnpwguqrxpwdq x hmph g xr g g s g q x q s g xryuspyxggnpph"q phusd n5r g r g g xe jx i rh~udsy vuxf nqo qursumxzps yvqpw g q n r~px ~~7usun spxgp rxezqxf pnysupg g qudg qtsm y npep5pqggus5qnGov uxdqrv eu ex f hu tpqgrxx hdgf f m x x g n m g m x s s x s i s xi n rs pxgqpnuspdu!$pugsrrhdrwd i gpq ns dphx ed hjj uq uss nwg pq euuhdi uu!ss 0h gzqdgfrx en xGg o qnmh 5!n0uh sun~r pg h v s do x~ us d f m vuj f xn onuq y nVvr pqgrpxggq usm pxgsu ndgm frpgtxe5qq nVg7tsuf rtq pqrg x7g q fdgnq m m o s T i d s h ~ q T gfh m o f d q q x k h x X x g ( s fvfuws x !xm sys pgpmgrxone g m x Bpd Grgpx uu!puss upfsgtqrmrxepf gn"x "dytq uge n"rd ruitwv tqdq xexo use x v g!rpgXm4pxgduvtq hmggef xg!m xrxgf ru m xgpvgpq pphug dunds Geqg p uqsgq ppgfrrxpx4sg uspgpf gdpm hnpVfvd muds rpx Vi g dq unppggpfVrx psx h s m $~puvv g hhxugqs npy0pggn rx uuguqd tsqm ufuxy5x5n p qhhhxg dugxsvm ustqf pqgnvrgpepxgf o5ugrpxps u nhiArph ptmvx getxpd dhqndApgnp s q m ws d i m o s x m ge ss s h0 ixy rd n f 0 p 1.6.4 vz1 1.6 Expressions and Assignment 29 pyusprr m g s g s m i d q m pxdrvpdpriupsgtqudnhvtqustqundvdrh gfy pxg dnysgq ruj pxwsguqs nm 5vm npyg rim uvpszqwg upqswg ghf s n"uAps pg dpv ugsuunjrm v~pwg nqyrdpdxf uivuqpswguqsesrdouvi nf q 5 d v v g o ss d qvp rp uig gpufs tguquqtss u5nvpxGzphrggqg rpx x rpgm hq uvm shqsxu" eeqs hrnpyiuppsggtuquss qw en"xrxGx5ruvv fghfs pqgyqru pxegs q5 uvpupmm sf "x5 onx rp gx ems s o m g x r i u 5 f d se 5 v b }b g b g b g } g b w v v q } q g g b G}b g g v v v v b I p v v p z } p b p b Y3YC6Cq 4 o v rv 1) k3 Y1Y Y1) qC V Y8 1 2 32 3 ` 2 v ra v`1 v ` 32 p 2 v 8E 0 3 p 2 v )G v z 32 } b v $r r vz3E 2 v p r r p z v b b g g 1 v w } 0 } }b b 32 v ` b 0 } v v b v v v v v } } g g g }b I g g v g }b v YqYg6 o 1) k3 Y1Y qCv ' g Y8 30 Introduction to Programming in F C Q 31 q31 z X r XV i V c ' W ' z b z b z b z b z b z b z b z b z pnhnhnppnhnppnbhdc z b ' z X r XV i V ' ' W zaX V X ' ) p XY f w 2 1 b Ep f #XY 2q V c W ' bhdc z b ' 1 3 2 2 V ' W f X s 2 2 3 |XY p z b u u p &XY 21 2q V c W ' #dc p f p b ' 1 3 2 2 V ' W I ' |XY p 21 2 3 z rXY 2 1 2q V c W ' w nhpfn 3w Gz dc ` b z b g ` b ' z aXY 1 3 2 2 V ' W us duusx xusd7 !vi s qq g n r r s s s v nx pruipstguqnrxhpdunhdrxqunrpxgmno u s puqwgsqGv q o'u r o o u r d uftsrrxn oe1pgdmr0dqzpq grxf us v q qm n m i n g f d x h g m n u r $ X r u r$ $ $X r r $ eronrpgdmzqxuswdv g n m i g f d x d m f rq n $ X r u r$ $ $X r v d g s f iy m s ustqhxqpguspzfugdrhpgtq~du~n~usnrx phgx u ns nuveTm pg gfusg eu nTp7nouqrwq s wdq g r s s i g s m 5oeq g d i n rg drx sdmdrd 7q dgfrx xn u uvonq uqhfm g x h m s n c n jonpnetggp uq twgpx p 7qsqu p phd g rpxTeT pusf re! rpxguuftswsqxmq xemgpgvq s $ X r u r$ $ $X r j q m g n m i n g f d x d gfq nwsr rxerpxpx~noe~rpgdmrqwdrxpusufv p m g q rpxguprpimgtqhzuzusf qnxgf v vl g s x j o s fr pg uvyorpvx n suig gpfx nq0 uAs v Ggmfx rvp piugTs rxxTpvpzmg pumgss pgq wdyi pg nuApx"g p7ptg qopq g g m h ! s f r v T ipgtpxq rhg yufr~on~dgxgm pjtgj uq!ynn yA vm ppghv ujyqs rTevdi uyss phgf udr"is n uysupqvg rtypxgmrvu!iA vm Tfp wgpxqgh edpmsq !g ypr uins s g d 1.6 Expressions and Assignment 31 1.6.5 Exercises he u u d xw kYqY rvr xq n 4pv g yp tgmqd rd p4pe rugqsx pfdrgxrhptpsg u p!n4tn pdg hvhu u!sx pq usuo!pusd x pjtv perwfrx m gg h s B s x q d n x r h 4 o v g xoums snq jrxj yr pv x gv d pg qopx wghqq hrxgusr~q urGrg usx ryvugs uzwq q xrg sui fdd m ug opqs mrg f pqtguq wqnygufgp wsqq qd mm s f x Gm d s f s i i s sxynTxpxgusupfghpVohmqAhprxqw qqrx s q uq~pus sm oev yx dfy~7s vux pdug !p"qigtd i ffd rx r pxgupsx h dpusouqs uwsq rxrq x dq dnf n q g s s x exx ~dt quhxr gTppvpuowqeph7pgrpxd gu ssord pD i hrxus q os peig dus qrp gp h7qk p hi rpx g us emdn uuu un u v pv un rds n pyugs pfgqhm urpvx uuss kuk oq ums !r y ox pxuswv$q p 5us grhxf d} x s vupsg quspxg pon x zpon nn y gx fx vnd~uvpuf sq s g x d g s q hgsudx pvpu psigm g yugftqrxpdushy wvx qrxn usvpgus s~suns o hzgfq vyg rx rpvtuq swqu smy mun srpxgx pg g$vueuo rptgd qpguwfrxdq wuqspx jvhgp oev x Ap 5d qx onpg drdx x rp fx x rvqq rrx vyd r qx m pg usgtfxh phuds dnhq rppghsv ~$ydm pg n x rpxrevpusdhhxexxdqv prui sn d jurds n q xdupsgppgruig psgmuuswfqrxdpj xgusj rvu5si ursriywgpq pihg p rpypxg dtqeprnxg pvm v ggpfuqsgtfxuhs m x XXX '3b3 V ' G 23 E r 1.7.1 1.7 32 & 3vx`dv 3v` 2 W 2 1 W 4 V o'u $ r pgpyxrxpphdxndmdxpmgfusv nh vtqrerxp msxzusrxusgusgfonusgfenpigpguswqzqrxd5pg! nhgxpdpgjppgdrid7onhv i7 npgtqedrf usqrrhusrxpdmgfrxr riguv s u $usouxs~onhdusv 6rvpgousdr7$ e7dspdxfwxx~onufyvqws rri Gqx m hs7mgwgpfrqGxvk p m q x qGrg g g pg g T g wdq7p"uhnsv ezpx rz~rpupxsgzp dupsjgpphg drpdngp rpiugpshg tquGrpxsd g nx hTu pd uss epwgnxpvh i m n i nk y n ps sr s n s nzuuon~ rgvpx zgp d gj pgd re!G upshrrpxxdg pgdg q m u~p pdwguqGv j7vpyfd5vr pxghdpgv jhp ppdg~pngg rp gx !grn ppxgeg qhmq g g m g usd 7 mhd i s hj nppg erpxh7rp tennsug x d nt pywghqq pgop gpgurgsfqsv xmnn7 u5s rq r yrpprgufrsm vgpxuq rhrdxq hv pgorwgvusp sqi pvl g px q qus xpg i mg s g '8 Introduction to Programming in F 21 W V @ w d u ` 1 2 W qd 21 Introduction to Formatting bf n37 ` b ` W Roundoff n E E ' Y s s m d ruy x gwfpwg rxqq popg udx srhxuqws~usnnmmxrusgrnxxhqgx hwgx pprpgqpxpqgou!x~ nquTs gd ru~sx wvqupTg pspugps'vurgpiuispr psgtfpugq xspu gdpvsppudggs f hh d ~m qhnrx m q p x qe vpgpgwqhm~~qrxrizusphmughsgfpghrxqigfdGpgpgm!sxdpus h ursxqfwrpghxodpqxmgqrfpxgvpgpnp~gusddhrnxqppg~dppxpg$gypgupgsgnqftrrxxquhopgusgfpgq~gponmj qd rv$xvgpuGsdh qx!!shpguspgqvusfovpuspghhpgpgtqmusnzdpususqvone rxxx!hqgsusufwpgqpxgtqm5sugvufttqqxdnrmgdrfrxxqnrxhdrxqyhpgnGx rxn f m txpgfnpgwqusxpgpg qm gpApg5rrxtpgp5x5usTsdxdi"gyqusehquxhsn qdhmgfxg on5rx`xpghdpusgfTs jxigpnxhqtusedrxqrxv'yxdxmpdrgrxymgp"pqrxpnguusosxnriyndrdqxtegrrxpxgonIfftvruuvtdqxqqwxn"xhqhdpgxq jphuosofdqxxdrrirxyhrpxhgpAdrqxqdgpuosonxoxunvpzpushduusqswuvushsgdrfgpgpghptqgtqumsdqxswrqisyw7qenusgv'rpxg s ujhsgfgdxhqgx5qeuswq0voxvus5kwuqkuekulv uxupphgeukudkhukudxh vqxtpqvpyhus uqgspqrkudkux!ikuusuv hulsvpfwpsu qrx!dpuhhs 5sudm quzsuusvnnApg uspmm st h q ssqu hm umi hpe hdqonqzopgopwgq!qrxrin ~psd u s ugpf g m hq sq d xexyxTs hxhgxqd q s g sp xyr m m d s uqq x~erx uius pd sus hp hdg om dgp rxnixv pvpg us hhogm gq unzpghpyx hgxufzrrq rx uv!gq pptgm & ( hgh 1.7.3 1.7.2 - Format Specifications Using Formatted Output to Hide Roundoff - vrxpgusphdpusus g jjtqp foxp~pngqruxsAngptqgfmnpqgtusnuysgxgfppgsydhxdpusGxhhvpriuspig~xnmxded~gpni qp frxdqm n q x h f s uuskukukupk vkhuiuvrhuihuhuhupgw vqq p pghgphuiuhuhurhuiuhuspgwi vqu usA~pg7 rx5hdpustopgwqm7nhvh vq rx g vnxxprdpuGopgwqmnyvptqusppggfpg$u h vpwqusnhderinpgdpgpghXxi vshulipgus!xhumghuufphughuhuvpp vulushhzdtuqpgszpggsudp gpsusddus rjxTivppupsggpgftqruxs!dpeusvpgrvonmqdusgfyxdxoxpguspdppg!sudppugVudspdpousxxus g qr s hdpus~pngonrndrxnepus!ruuihuhuohuhu vqluhzgphuoonhp$gwqmluh~ppgsuippgwpqug~dhmnpgx~nhTdpuspgpnh mmhd sz vi v s r g $$ $ $$ uu$ && p i ulhuGx v p rpxg$perv$phdq$ hmhfudstxyr xpgq m o xpnTx gpn huyd yvpqufus s v h s v u g $d r q o m t13tttt vfe qttttt evxz`1 w e ttttw v uGt {hhgn '3 '3 2 3 xXYa z X - 1.7 Introduction to Formatting - G hGrfrxriq " GrfrxriG ( 33 `q pqz8g pqz8v pv` f f `v w `v w z1 qg pv pv d|o oCddd|qqf d dx`v t - dx`v w o ' f d 3 xv w d ` s y7 g ggfr x A o mr g s o Aps rtg qux tfyxnnq pu!pgpxfrguxsgp gp n rmTuvggs ftqrxynnygesufx r 'vu s phr x7qqmyuows nuqn q ss vujpgpguxhsmhk p qx pp v vhxpg$u7uvpgtqm7rix!sush7onxphqusrqryxpg xqtm qrypmfusqrxy 5qrxhmpgwqhsegph~nhvVgwqquswquson squqrssuqxp7ohxp`gxgppgpgrnxGmvqroxsurxgqrf oigfhxodnpgppggfwqmhsVptrqiuspgtquqxqripugstqusxnmtxpuns7rg"xnvpd spgwqm`riBxusoxGqqruswquson`hnyrxynpeusvd jruxps~gonhu~vthdmyhpdguxsqh~mustqrquxgnfAqhxqxv'qushumswzsuqnqwuspdrqixsymvrgwiqhpghq7m! nhdv v h pumgfuyopgxqmxoupysgfpgushtusgndgfprxd!pqongnxTxdphggphdqxxutsqupgspgmupsogdxpguxqstftnnppggttqqmm s s jogyoxpgxgpmrxpg~ushqGdthqpg~xpmpgwgtqqm5qxG drp4qrxnh5mpgwyqmgsufghqxqvpgxg$usxogwquspg o m`k gd h yjpoxpgpzgrrxm~qnhdrxvghuhuhunrxxyhuhurh xmfdxqAuwqspgqrhxd5pggpfgsuigphnxdytuqsgrftigfhxddyGgppugsusgf r g" r nqpxgevtVqrppgygprui"sgppppgtqpgmqrxgppgexpgmpg7ygxnmAqydrhxozdrxrwiyqqgnyphgppghgsg~drx!vgpgwqpgtqums ge g jprgixziuqsroigpwfqdmeqign"fdsv'pprusgxqufspnnxpyoh vhuxpgh pgrxmsuqh vnhurhuxh7sudgp"upgmndfwqrx~xoyhhpg d! r yhpg~hdpggfysux xgpgsAmyhs~hpgmdrxpgrxmusgfpghgh$v'pgrxmusgf jpgqus!rxpnggpqrxumyspguAspmusrrxxxusn!duxqsdpfesuxusqqxsmpgtqpghpgwAqpmdqryxnwvuqtqq jrjxgqmgwpgpgqrxhpxgdqtpwghmAqqrTxphgyvppgGsuoydursgoqxpgwpqgtqxgqf!pgruonswqursox5nArqxqdrrxduspgtxqpngrfxpmgdhumgspfugnhusmpsruxpsg7gnhyxyputqsxq dg r 3 pgphdmhdx~n~dhrxqmGpdrxe T r0 G G rG ur s g qjtj x5donxq ytv hAwdgp mrhxq nd yx mwgqoqnh ohx ppg~wfhqr5xmrvnz pg !nrdquix op wfx hqy V huptqhuxm5sr~hxiq rgvm ~gpxgpgx gv utpmsi gpygpnhumps "umgsguffs g g wg d q qx T g m s sm g s s f f p~puf5uv zx pnpg sqj uqp`g pxhpx ` u ugxvr`v f uwsqqquxsmy g i tjtxpv5u p pss ug pgus 7rpsi xusfpguowqpusxfu"ws xrxq pum g s npgTgp pGmrhp x guusgpswfgprgq x7ms "putgsgf s $ r qe x w d rw h u d GkveTkkwYrrTe@ G} u GkrvYTrekr e w r u h f w f h 1.7.4 34 Placement of Format Specifications Introduction to Programming in F - - z G d 0 d I | w d q d ` G d w d w d w d p # o ' x v r r 2n ' V q r 'q ' r 3 23 2 V d q |G r x q v V n 2 V 3 V G ' |V q 33 o o d q ' ' 2 2 VTC| @ @ o o d q d d d d ' ' | d o oC d d 2 ' | d o d|#3 xv w o o d q f d d ` ' 3 xv w }p q f d d ` o { 2 3}V W V ')pq`8 2 V d { r 3 vuopxgpgmxx qrd~nypg q i f g q q jj r `muvgq0von Ayhygp pgupsgrxmy n vrxquhs tq xqmqgpmt uh phog Tq uqpq rpxx i s 7f m T V i s n x s f m xV q i v q mx pp hz s y odpgx uv sm ~pro pgrs x!dr pxgspgn rdx v xvpmrg pp dg rdq xx pmwgqh g rgfq vxqgxqpgtqmgn5urrrroppghxm m rq vm usrx uyu ruj pxukgpg opxgm pg rwg p zyuh x jpuk p pg rhpx gpg gp hx g m pgtpqmgxf $ux pduv u sukujq x pgdgpg n tpptgg5pgeus rx xmmx g o g r T G T G t G ur j q x q x q n g dfry pm i 'vrrsufxm pxgpggrx rx x nGoArp pypx pgg g umstwqesquhdym7Gnx muyggr nyxqGesq ur"rdxusrqpAg irxqxtpmwguqpqesgthxqxp ~qqhxypr5pguip sA ~huvdymsghxyuisn d d q m v t s s pm ~ x y m g nr rr$ $ rr u` $ 4 dmdrrxzppg~nnzhhxm x q d q r r G u0 $ B r 4G $ ur p m x x ufns n v'dxq mtvhhmxdd d tgp Apm pgn`s utpqg ppg5hod rTx qywms uqussxq fpmwguqsdh 5p h5p`gpn~psu s ydh q g hh r T r` `G G ur uu r $ Tr rur j q m g g s g s g d dm x q d rx'vqphdx p Vuhuszxq p~ uxs nghgf d uzp 'vmgufs~x o n~h dgm fus5 ryeppxprxGnypgufs rsh'vm gf jxug ps!g eu hs mh $ghftmxdp dgpotnpprGgpxg tqusmmuAquos unqws uos unsem rs pxixtug gqs tfrtsuq xsuq on n`ppvg$u x pfg g n gB q e y m s q ! g us qv o wgp q "~xzxgx m gr ppg hng tv p1g fuqps umtpqs gnf x1rfrhxi q dpq fgpgusdm urgftx ngnpqop pggpugtsuqms mus grtf ~ux qsnrx"rnq x m g q f ' 1.7.6 1.7.5 Repeated Edit Descriptors 0 Tab and Line Feed Edit Descriptors 1.7 Introduction to Formatting 35 s q s v s q d g x qs utsuqn exugwfqrx dpdush" ytpqgrpr iustpqgs h pguwfg rxhmpdrd vu uns tf g!f $gpfgpgd ufrsxhpnng v ryB pxgmm uq qux6(sGhd uqm psyrq no yxqggfegr7ru xetsd q{ g qusxG n 0 i s7 s gf us x y ! x jtj uquGpsgzuhtsg pq udgsug gx tfx7x r fTf usq~sd uwmq$ $ rp7rd ymi nt xpdrn Tqx eus uppg!qwfdhrdxrtpsguutus n xg ps xg x us prgppxgg gpughs 7xsummx ogntfxXnm s q g vx gi g s i mg p r q x 3 r oC$r $ G e v w {#9 p u v w )z89 { v w )`89 { W1 r oG$r4 G rG t $ t ) ur w w V 9y|qV{s&|V o p d o d p d q 9 xGy|qV{sox|V o d z 9 d d z d q 9 dxGy|qV{sox|V o ` 9 d d ` d q 9 |qG3 V d G W1 V oC&Gq d p z ` q v #`&p8 d`3 xG d o d d d z d p t u v p u v v ' Gzq { p ` w {7p9 {EG9 z { ` EG9 Eu pv 3 f u V |i d o V C$r V VC|) o o d q p v ` d t G e pv u e f V C$r4 r ur ' {h f7cz p ur x s ~ m 5 g ""uvd wxr"exq ehpd "hpg m xx yqusums wfmuqr"xs tvx ufuqstqwsupdpqupvsGn pxpgp wrgmgpqemsuf n4pqhygw~q pgeonrptg ppx pq rum g eogrpf s hxnri x s t x i d r n g g f d p y&dx|3 p o z d q z ' m h pgh5 qr$yhyyryerepvrxpdqnpgv p grf duqx reuv~hfns pgo pgnrq xuq pmwgs qdm h x x g gn s i ~ n Gxoupzpg5 s gd w t ~~qrx xx op upspgsup hzzgd p5gp5 q x u g d z G dd xG 1 f d z d d f w d d d d f d f d f f pC 1G df z z d 8 w 3f1 p 36 Introduction to Programming in F 1.7.8 1.7.7 Formatted Input Examples of Formatted Output z b bcd|1`x d q v ` ` d &pv o g ' rG ur g j q x s h gm x x m n r r us n pxx7v n ndpehz7rpx ngAg p rxhyo uupss eiyu7$nqxv udupApgyor7pxpr uigtgps fuqus 7synpv p d s x 1.7.9 Exercises v pv d g s s g s swgpqjqd gzpus gf rpg upz xg uypsgt uqxs mx q uf tsqspxypvpg spsujm 5pvgq p pud ~p"uwfqrxdosm p"phdushg nhrxptguqgrxhv w$v prs uis tgpj uqd n n0 xxB f pg usg fpdun qtqr x n pv pgts p h dm 0g pvp uhddsuh rrhgppguspghm ppg5hsuhhhd pdonypdg pdus ujpns uudpsgsphxg q myu ngpxggwfhq prgdxxdmm pgpgpg ugpwsgqpghpoxggfvgprf uigstqrqrrox xhqn mumVqs5r rwgx rx qege uugIs gftfh gu spx gq s x m m n p s q xt F R " p p p p{7p8 z v ` xi{7# p nEq { z t vcEz8 e { u Eq { ` v w E`8 { ~ f p ` ~ { Vqz}E v g x f s sus m g s s gsf ~uq sysvng rxnf i gdf u~ s uqs mh sd pugtf qrx eqrx~s pgrxmxupfghunu pg rs d gsurh pjrxd tpdnuwf prgq xhd qrxoxd udpugnds t ppgoxg vuf usgfu $s d ngpf gpgduVgp enpx g x r u p z ` qG t e qw )qz` f p p8 d&p#dxzG dxz8dx`q d`8d |`q x`xG pC o d q d v z d 3q) 2 V f { r 3 xq xq 3}V p d z d ` p #dz8x q d ` 2 p~ppghmp~n g d g p X p A p A T G T r $ p p A X pA $$ru $ g z s s v ~ drx g s fg dm q g q xpugshdpwdnddpv hgpg uzpn~pqognm ufuornf x yhnpgpeuusgnwfdruq xypgrxf d s s p gdwsun 7mTnpe"hp"r eoppg Tm 7tqi p"q pphjrk m vxsqh uqsn f uqs g m d m g x v s x g g g x d ng~r"pgp usg yrp i x fuss f qrxrfug wsq xqsdv useuqs sus"rx5n hxgufruqps dsq ~g ugfrrxnpg ~xw qgxi fdrsustqusmdhtxuqs xrx d d h pg t rpmdj dqxg uugtss fuqnpppg gthqy xd$um r'v!n rh7xqq ux~pmgtq xhpgpqg d supvs5upqhds oud mspgq s 1.7 Introduction to Formatting 37 V 7 x qmq s q g e 'v gfpy d pgptgrx i s r pxgq d uv pssmp ggp us tqnox pg tqrhxd m drfuwsx q uxmsqurx rnvrpwgq ugwf5qy s qxmfd gf xhmuqps gGnvpgen g ~su wx qexu ntxvupsmph xTnpe d s uhs yhdpps ppgwv qs 7pqonpg$u g x m g q jvurxr~xqq ee nd rm 5g pds u s enq hs dmh7u5pgts qmu'y uhy i yhq ym pg pg von~ nd uhusuon fustqrrxqi irm~wgeizxx q pg fpx~hn G tfqrwf rqx xq rquhnds p nhyhg ups g usv tVqi rhdi pysg u vrrGeopgx p gurs xx gop ruxxg xonqs qenru ~xsgnfeghun s xuqsxq ~ jj j j j j j j j j j j j j j j j j j j j j j j j j j j j j j j j j j j j j j h ghu pdtsuhsq u5nyp s pn fsudhwqrexn$~pxn gysvridon p pg upg sttRs8uquys d u5eqs wdnzuprg sxr rpxrgxx uxdduq n~u nns n usgruvyne~xys psowfqd !rn8 qexrx s g v ox u d g~ qs s q y r q h d k 8 C8 wfqrx~nzurpxguspgutshuutsqrxgh sn d q sd f n y y v gy x n s n x x xquzg pgftqdC8dnxpgpgx~nyne~usp phourhrpxgpnpggfustqrrxq onxp7vupgqhuyi v v g r n m q ujjrhpxs r gd i gpud gru gfx wshfq purhrdis x qm ss rpxi n rg xpirvf uh5qx h d xr!iq q squdqo nus pggpf pvguqt rpfs x du gv tuqg s xomgqy pxgq m y v s g sf xopgupsrs xpgrpxq gusx d puss7nrxvpg ogp 7noprxmgpfg x dnufptshrrxxpqn uu!vsr rpwgpxqgugxd Ip gx usun!oexy p px g xrxgdpq ngn tpwgmvq `qws iuus p suhrpxs d uxns g q g m g t h n sth d t z n pg gpd g q x! p~TprxudGqs upvopss phg hwfd xqrp gx uhpqws gsuhvd 4n tkkuuxl xGpgg ud h s udpsgrpxruihw d s v qs mpus 7opxgu! ps gutsh jujs x7 ohrndd rgx px h uqpdxs ~d xngnf ppwgg qrppxx 5p0!pxrgusx tqd e0xupq0rrpn pxgg uhVdxsn gop uguwss q81ud x qr e g 8 r s ~ g o v q o d v p v C&rx`|q d o d q C& d w v t d o ' 1.8 Case Study: Quadratic Formula f f ur jpghTupsr~xg 7e opwgqAgfuspgpxprxyn!hAuv sgpxn v xm i q m x r ur v i q m i s s s s r nrptg~rusunzpduppufuuqps~n~ uqufsusn vq s 2 d q 3 @&)pvq e o ' 38 Introduction to Programming in F 1.8.1 x = The Problem b b 2 4ac 2a r9 c 'y V )2q XY q # V 91 s X V 9 W n V c ' z d { z 8|qVsoCdc b ' `8|qVsoCdc d { ` b ' roCdc b ' G G bpz E1 b pz E1 2 W 1 Ta n b n b V bcnh0 f z b b bcnh0 f z b b 9 p G p 0 r {z8 9 0 r E {`8 9 g 0 8 21 3 2 qVTr W d G V d 0 G V q r q z b b Gni d G V d b n oCdc b ' 0 d b In oCdc b ' d b n oCdc b ' 8 2 3 z d ` d 8x8 d 3 0 d xz8x`8 d d 0 d x 33 V 2 0 V V )2q 8 X s 9 1 ' 9 X 1 s V p 9 21 3 2 9 W n V ' v g x d g d pxghddpgpgtq p ~$n r~ h~nz uwsqdpp!ps wfrqq x tj qgud hpqmA quug Trh!hnfv i x y rnpxxg uAqs qmphpxgdg u psngfdgp uupspgs xn$T$fv nuussomyu p x 7g pg hyds pmxpgd opum g osusnnenyumx opfs xggmf ts s dsd m g u r$ o r $ u r $$$ uuu f 4 4 g 4 $ B $ $ $ f $ $ $ 4urru$B t V u 3 G u$ ur$$r$$B t u 3 u$ $ u$$ ur$$r$$Btur$$$$$u r3 $a f G $ $$$ ur$$r$T Gr fff ru o $r$ $ 4 $ uh $rr $r ff sr r$ $ $ g s m uqspf s g i v s hd i tv og fgrf x h x nrgp o gi f fptgggf urpxng ugfufustpsqrrxqnssm u u qn rxfmg fpugxfgdxs 7rhxph dm g s b $ 4$ B 4u $$r$ $rBh $ur$$r$ 4r$ag D $ 4 v x erh q x g i i f pgteypvpgtqusq n xphgy fqh hp gx~rhdgr rpxgs pd rx hhpdj rx xrhhrdx xrhdmx ngxm pmg px xn Gnsq urh drgyqi vugsg wqgpwsufg usq y xhmdq Gpxgr ~px uwgqmpxhg f v 2 W 1 Tr V | v 9 h G p 0 d d vx } G G 21 G G 2 3 1.8.2 The Solution 1.8 Case Study: Quadratic Formula 39 | p ustnqpsugpqrmyxq7xpnhgquusswvqqpghgppxpupghsdrhigdmsAsgxrggxyf7hhususyrxn7qrgxTfrogpuswpqtguqus7ms7qunsdrsouusAsppngusoqrnAxxApopgn 7 sA srfVnAqdsuerxpgustsqgrhprxrnuqngdrxqs pgtqus onhusvprguxpsogusdvuppgguusqswfuosndugnrx|xfrqqxugxpdrgxgsutfuqwqpsgexpguswgsgsupAxpgustgnhh px x jhdgfwqrxpg7dusirxxqx~nrxqusqvfwqnrvuxrsxq~pusqupshgd~usnnz7hhpgurs!sp 7 xe `8 3 w vlp3 3 w v` V WYV G d V {Ez8 {E`8 V `3z1 e G d0 V G d V znbbi f $$ 4uu$B V 3 ur$$$B 3 ur$$$B 3 vupgpgppgripgrxmnrxriypgyu v p us! v qus k p q 84 C84 xp n xgnrxxquxgsrdxpgx7suwqvuusGus7gpusrnpugswnsxexogupsd fupswgquswxqhqurm7gshdou7sdqnTguneqstnhh usd nh xr g qr ge 3vz 3vlp V WYV G d V {Ez8 {E`8 V w - - G d0 V G d V znbbi ` ( ( $$ 4uu$B V 3 ur$$$B 3 ur$$$B 3 vGus!q~qus k i 84 C8 d pxguqs q $ pyuugtssuqts7q hudmsv 77dm uq hn gsus ~i7uew psg rqupxgys op d rpux~upn $uvuv ur x rx rxq xgosqx u q rpx gpf$ n gp7uewsufns rpxguq us s "dxq m7z"ngwutspqhx x rf s g mg g qg u dr s d x r )2q XY 9 X 1 s V 9 1.8.3 40 - Program Testing Introduction to Programming in F ( pdq~ndhrxqhm fustqrrxqmnygd k p 8 p kukukukuk p C8 vrxxqnrxriqx~gxgfuussdn~opgnyqeqvt~su~nhevt rxxq z srx fxpguspdpusgnpgVduswqrid~qrxVhhuspgxrxqyqussdg~qnone qusgus4rxprgxhsudpgTxpyguxswqqhusupgGup gnrx vgxugshdd7xnrny~rpxpugusduspgpggpnusqrfxrnv'us RsG T 3vlp 3vlp V WYV G d V {Ez8 {E`8 V t - - G d0 V G d V znbbi ` ( ( $$ 4uu$B V 3 ur$$$B 3 ur$$$B 3 jhfuswqrxqhmsusnevrqxpghushrdxezpognrnnpfdrx xh" hpVgpez8ryoxrxxpqgxdprxoopgxvprxeupsgn pg ge v g x k h 84i C8 xpgusddpguswqhusdnhp p p p vhuuuku i vk juhustuqgkuunpinv pxg7nnhyuusqvtnqzxu usps7dopunsyp tTgphuussendpqszgpoypgpgdqwfupmrstqxqrrquxmqsm5opgxpngrqdprxxpgdmuvsudrsx5f!onunhsgnnpgegxp h fp#e1` v) fp#e1` v` V WYV G d V {Ez8 {E`8 V `1 `1 - znbbi $$ 4uu$B V 3 ur$$$B 3 ur$$$B 3 k p 8 C8 vusrxqmgz g x s q x q qprx~pgus~nupxguswshp x n g s g rxr d rdtfuqqydgpx pugs d ohpd epxpxpg uxwsdn n rxx prpfxg xpgeendp gonhxpursv p x guws qd hpg ux dr rhpinx tvg dgp xn q G d0 V G d V - - 1.8 Case Study: Quadratic Formula 5 - 5 ` 41 91 X r 9 z 8 z 8 V )G XY 2 1 bq bq30 r9 f z b b ` 8( T bbb1 9 ) bbb V WYV 9 WTV '8W G d V b3bb bb3b ` G d0 V G d V znbbi ` s g g s x yxxpgppguyvrigpvoxrpxg hx rhdzm n upsdpq um syxi Aqhmgrx qm i g d f j v hn5qq xyu s5trm yx r pxgupsds pus5n rht qu su sy rpxg r hdApgn5uqxps dpusVxq dgfrxTnru uh y o $i r $T ufwsq xnm j nryn rx 7pi wg5~ $ x rx!onpgupsdpu!qrxxgd o pq x gmr d7gm gufsgof nnpTsuqtg ph g q usv q s q p ~v$vxvf v v nxpxgn$puqgtpgusdgphf5qpgqxwqgxpusndpgyuzpgpng7 nup ge~mrxpxg$yu vuse pg z ur r$$$$ $ru#5$ruurr3 t 4uu$B V 3 ur$$$B 3 ur$$$B 3 n yvuservouspgvtqpgdrvttqusmusqexynpgtqrigvufodo~mpmusmnfuxsde~suq xus hhd ( ( r )q 2 Y X 1.8.4 - Common Subexpressions 1 - i - 8 X s V 9 91 quzrxrx~onyhusorrxhusxzusn s q v x q q k p C8 o s m d r $ uf pxwsgq uxqd 7p gnuhqs t ru sx 5vd ~ehpngnv phe7osngp u snu r x h ppdems tvqf 7eu ypvpu srp g g q d g vu~xq pf gqg hyui v g pxg g $urpxgushg grxg us pmwgqf drx qtvxhhxqprgpTdphd ppxgusd pgdpnnp!rxgxuv se jpvuquwwsqv swrTsuqdi rxtqq nGhpgp hqgthxdd tvrqidourss ~ pgrgg hdgpfuusos ruxTsi gppvusg tq qpdg u7nereg qx r~pxugpr Vugs rux psxpsqoppupug us sgs fvp`suTpxdhn g q ~ xu s x q b 4ac 2 33g 3g 3 v 3 G3v` ` V WYV {Ez8 {E`8 V ` ni z b b G d V G`1 ` G d V 0 G V d 3 $$ 4uu$B V 3 ur$$$B 3 ur$$$B 3 ` 42 Introduction to Programming in F X Y 9 X s V 9 V q 2 z aXV )2q X Y 91 X V V )2q X Y 91 X V z X rV )2q XY q # V 91 s X V 9 W n V c ' z d { z 8|qVsoCdc b ' `8|qVsoCdc d { ` b ' roCdc b ' G G 1 n b 2 W 1 Ta pz E b s01 ' X 0 {z8 pz E b s01 ' X g 0 E {`8 bcnh0 f z b b r9 { ' X s01 V 9 p G p 0 8 21 3 2 d G V d 0 G V qVTr W q r q z b b Gni d G V d b n oCdc b ' 0 d b In oCdc b ' d b n oCdc b ' 8 2 3 8 1 ' X 0 d z d ` d 8x8 d 3 0 d 2 3 @ G 0c W W 31 xz8x`8 d '8 X01 d 0 d x 33 V 2 0 V z rXV )2q 8 X s 9 1 ' 9 X 1 s V p 9 21 3 2 9 W n V ' q n ufuts srrrq x q ~on h$"rG$pxgp$ uguspds g fupdrstgiqrurstpyuhxq squs~dqd Vesq n rx rx xxueesx ~np s ugtfpsxpund p sgpuhxqtssud 5rqw xeuh m pg n v m g q d qh n d xr ~ v tgq qg m pxgw qs d wpqrg gpgpgf rzp~n yrq ppxgegggxf ufd tsqr r x m qnGxxnIhgp rexn m Im wqq rxseyh rxu yv ruhq ups y$ i pnou s $pgp g x gtf q n To xs xqV pdreqppx ggfrxn hdrr pxgq mm rdgngpruis jupjtgpsufuqhts ds rduq prsx~hnq n Bnuqv xzpsu hp ndsxuXugqsy pug ft rnrxh xudrotgpqs rnppedzxqgg tesptpepqg ppgpxfrxgIrp ugi rd p$ggg pfuf osrXor$ gnh f rx $pxx u g m o g g gmg y h m x u r$ o r $ u r $$$ uuu f 4 $r o $4 $r o $ 4 $ r o g $ $ B $$$ $ $f $ $ 4urru$B t V u 3 G u$ ur$$r$$B t u 3 u$ $ u$$ ur$$r$$Btur$$$$$u r3 $a f $ o $T G $ f $$ $ $s $$ $ T ur$$r$$r Gro $ fff ru o $r$ $ 4 $ uh $rr $r ff sr r$ $ $ g ntpgupsdpusTno$v us y $ r $r o o$g$p Giupsrwguiuqpsswg~suq xn ups zhgx gqtf wfq ppzgg r x xq xi r 8 1 ' X 0 8 1 ' X 0 1.8.5 Complex Roots of a Quadratic Equation 9 9 1.8 Case Study: Quadratic Formula 43 {z dx` {E d0Id x 2303 V 9p 21 23 21'8W1 V 1 G 8 Xs 21 WTa ' 91 Xs V p|XV )2q V 9nW V ' p|Xr )2q XY 91 Xs V 9 erxdrxkw@kw YrTukwrf" Y y( v v ur$$X T r ff $ $ $ B B 4r su $rr $ gff $ r$ $ $ 4 uh r o $r$ $ r vusqnrxri~qusyvon~qneusxGusepmgfrx jpuqussrpxxmfxnTnpqgexhuessuq 7x rxpgruxsntmgrxxpgtdpgopgusgpfmgfusn0pxsuounhxvdpud y q ne r o dh f h qe x se s pqmgfrpghxsxttqrxpguspggfgwqpgh7nusnpggrxpgtqusq7nfrxq 0r sxzxxr u Grxh ogrz $h usgfuson0pgonp0vprx qxnhtvspsudq~qfwrxqurnyxqmvntsushnzmgfrxg~pgpnrhxg(d|dgxrxpznnxrgeqxxynqyegpruxse{dpus jj j j j j j j j j jj j j j j us jj j j j j j j j j jj j j j j qusyrxpgushdpguswqhushd5nxAqxrxqx5onypgususAdgpg~qftyxnnyvrhinhvpguq d n$yvrnryu pgrymgfusdogxvfvqigfdpmfx7onrxApgusri virpfpgdq5nopgrvphAgmpphfdgfousddursx75dxriuspgrxhrxxqdqusddn ir v$vwqupgsupgssugi`pgrpguxrsxrq7xequpsg!dqigpgryhuspnguqsrntsngxzxrxryxqggpuqusrsdpgpgmfnxvuqr $nh yxr s xqhusq!xAxvpdxdpggpsdgftqx7hpgustqhuid!ngxquodpgtnq"yvpd jnxusv'xrxqgquxrsxqyesuqhpdgeyxnopghnyruxsquvrepgtuzspdv'pugsypgruxswyqrixrdxuvrsi!qTqxenrx T pgrGsp5dfw$qrxyxpguswqhusdtn0ousdg xrxrxqtqushdAusqGspg qn"yApg rgjpxAxhm7upsgngvrxqgipmgufrsxpggfpxqgtgphupsh5yrhxduxsqxursiqpidxshyrxxnqxusppqsuxepg o u q i n s pxgmd h jou tqxdov npm df xqrmxxs u x~q quddpssu gwsuhpq ugfd r~dnrddexq rx~n quo nr q s q d m f m h x h $xy q n jgu rt s dhy$d y qegni yufd s wsuq "p xguqnsus "G oywvqunxosTpr gr$x uxvtqeegqpfqusoq d ue 7s u nrGxTqpurpnseeTpngx 5rxxgpgupuuwsss hdq ypsuus s dwfs"rpxq rx gx fy s s x g q s$ dT q us s v x r X s V 9 x p X 2 |r )q Y X 91 - 44 x2 = x1 = Introduction to Programming in F d b i 2a 2a - d b + i 2a 2a - d y( I Q d q q sd d q k 5 x g psgftxpg utshuuhs d~on'y yurAqnp)8guoCs nC8Aq rpx gquupshtnds dggpd fwsu phusd onnrx$zrx~En8q {pxuqg s h h8d Axuq mAs"pqEgnvq q ~ ~o v x x 8 ~ 8 j vq v q Vxg$uxpususpntphux tfuwsqp qgx m nxvprhxg zxn yugppsx qm g s n v k o juxpug dx p~ p5mmuduoeoyuT zvrusdnphuogx ufwsxm s g gk s n s n k g s no q qs pDzngnuvnms humvsTp!pn pg ppg gg piux5m s nrngpv xqq nxpuepxghpxdr qgp dgx psngg hgqy x ruf u$ts rrpq x$rn xpdxd up 7v p m g q r xpg g m q 0 g 3 V )2q X Y 91 X V 9 33g 33g 3 3 33 w &q Ez v d v p { 33 w x` v d v { E` V V 3xz1 v ` 3e v 0 v 3f ' 3 $$ $$ u$ & ' 3 v v v v 331qg v ` d v 33` qg d 3g XY 3 3x` v 3 v v 3x` 9 X 1 s z ` 3 v 3 v V 0 V {Ez { E` V |V )2q p X 9 W n V c ' V q |qVz oCdc d { b |qV` oCdc d { b roCdc b G ' ' ' G 1z b b 1z $ $ 1 bq bq30 f z b b 1 bq bq30 f z b b 18W 2 ' 18W 2 ' r {z 9 0 r E {` 9 g 0 8 21 3 2 | d q I|0 0 d q | d q oCdc b ' oCdc b ' ' oCdc b ' d n 0 d d b 8 3 $$ 3 $$ u$ & u r$ o r $ r v v u v v $$$ uuu f v 4 v $ $ g $ $ $ f G u u$ r'& uu $$ ur$$$G$$r $$a f v G $ z v dx` 1 21'8W1 d 3 3 0 d 2 1.8.6 Exercises 1.8 Case Study: Quadratic Formula 45 jj j pgG rxpgwqm~ s p p qnx!spdfwqrx~nyrxpgpghh um g vhux h vus z rxhuspgusgf j n nx u s gfyuq s nt!fdpg ~i nvuquyhss wyq v pgg u qfstrpxg r~hfx pdqhd pd spyn s nArq n g r od ys q op pg p punspThgpg ry rnx wi uqrsq x x Iwuuiuku Aousxpxguwspuurpxgusputynpgqone q jj j j j j j j j pgfpdhh!sxyvohq~nr d m x d q uvx!tpsqh dggxfqtf g p hhfn pd h d j gohgo nGnpen5pgsuhhdpe h$'vm peeepmgrf xg x7rus m x s m g n g x qpngpf f gn n i !q m vr pxwgn qvd mqg n As u ugpsy hdf pdspuhtx1fu!rr!xxqss t hrxs pwgyq tp ppxg f r x sd q mx~ gnr qd m g i d pg fpxhrgpfgustqdumxhrTni rpxuspd phuj hfsd tm pv rpy gxuuss ypnpqrxref7pdn usd xGsu~r0nr7 ppTnspngpnuq uDrxff pd q 7 g e v o m 7 n xp g h g n s s mg q gg y g x pvjhpufhud tsrs q drw x pqznupysgh pq gpofgru uxs pmfpphfrmfxggpfd x g gfsunrf pdgxdx qrhgfrhx dpgp!zugshgufm psumss xp np~exogpf pxrghn mv whrg q hpnxeg gm x o ps g m q m g s g g m p g pg U n g g 1.9 f = Case Study: Debugging Pendulum Calculations - - 1 g 2 L Uy g g k p ukukukuk p C8 k p ukukuk p C8 k p ukuk p C8 k p uk p C8 vurpxgusyperpxprx~nrx futsrrx~nrxq d g q qm v x s m x q d q d jr rxx uiTexgps gngqus hgf vE8 8hps gftxys npghdypdusq ys q d pd drrx xq~qppdugfonups ds pusnuuypswfrq xegogs utshu rxjjhun0pgssq m rp dpx qxprirx ufgv d rsgpx uwGqn s prvgruhddii sthqq sueo dn s5ogp! nxpu~s g xrpx qgrupns n upsgupphdgpsgpp u pugssp rugpdrnq prg ufi 0wsf dpg tgrq u g g x o d q s s d v nhuveuopxgustqidnux us pgpgu sd urdpd xGuipvtseuqqspp efxsu tonxpn eg qdrphxgx on np gdqrgpxuupswshq dgp uhsf 5nxi {udq( rsx x mG pdru h s r d s r ` t o rx ri xs q jj j j j j j j j j j j j j j j j j j j j j j j j j j j j j j j j j j j j j j x = Introduction to Programming in F 46 b b 2 4ac 2a 2 T = - - 1 f b 4ac e v t w { t ` f ` v w G&p { E ' W Yr 2 3 bbb r V ' 1 1 ' rr r a V W s )8 n ` ) &pq Id wVt xr) 21 2 v ` X W { 3 21'8W t Id wVt xr) 21 2 v ` X W V 2 ' 8 W1 G G 3d e ) n Id wVt xr) 21 2 v ` X W W ' rr 2 3 bbb ' rr ' w #t ) v W 2 ) a9 o C& r 2 3 V W ) 21 i V c ' W ' v ` { xic 1 'bxzv` v { d b n oCdc b ' 3 e v t { w t ` v d w 8f`&p E 3}V { ' V d3 W ' 2 & 3 3 d d 2 ' W # nv poupg $ys us n4gp qrqxqtoq n pspvtqusp x g " g f s s f q gx opguqguftsuqm donypgonzy qtgxArrpx pvf~q gf d g otj rpq gpg o!q 'vgufftsquusms pqt hn g g5xqq xwqGsq uruxi s rrxv us pnxvqrt wq qppguu us vm p uqsnGrxwqq us h g n m s ur B$r r B u $ 4 $$ a V4 r 3 & 1 4 4$$ $ r 3 $$ $ u 4 $ & rr r$ sX $$ V Xrru u $rr 4r$ 3 rr 2 q r d q fx nv wq xtqq u~s g g fug s~nq xqwqqrzox nprgtftxquq qsm gfrfx vd q rxd rdx z tuosr $v pvp~n p wgnspuqge f h m v h f ge s n d usgxwqqppgusrxpxgugs xpgd xhd xx ufsusyvppgu umjhtAtuvxsn f pg qpxuwsppg qgepdgm phrpf Ax pgg y!sququhhds d gm pxursfrcyfix rrox xqn tnTxreVe rqus ru!s gfgufxqtqf tsronq rhmnqx pv grn qwdpx0gusgtprsun pfg xpmm q r gq j pg g r X r B $ u 3 0 u$ $ G 0 $ u $Bu f r rB r r rr$ $r ff ` r 4 r rr 4 r g 'vgfuwpqg~nzp~qe{ m s g gd q i q jv$tpvpq gu sn gppgterusfuwsrxqunpoe rxpxgupsdpus`uqse m sv s g n q xos orpugg tsnq g ~rxzgq rf pyp m nwqfrd upxg ihdg~ rx~uqpgj gpphri s i g s h d m x q s d g d umj nGn7 upyups qwupsd wfxtoopsu pxgg unrshv tqdg7xyusDf"p xopqm yppg ntpsui xwgTsuq 7gxsu nd "xpqhn V 'c G 2 9 1 V W ) 21 G W ) 21 ' 21 3 2 i V ' ' W 1.9.1 The First Compilation 1.9 Case Study: Debugging Pendulum Calculations 47 ) E r9 & q r v ` { xic n1 'bxzv` b v { d b n oCdc b ' 2 3 V e v t w t ` v d w 8f`&p { { E 3}V ' V d3 W ' 2 & 3 3 d d 2 2 9 1 V W ) 21 G W ) 21 V 'c G ' 21 3 2 i V ' ' W E r9 n1 xv` b ' b v z { r 9 b b b 3 V V q W r b3b b ev t { w t ` ` v p { d w Gf&E }r ' V dq W ' 2 X B $ u 3 0 u$ $ G 0 $ r rB r r rr$ $r ff ` r 4 r rr 4 r g s n g$ vuftsrrx5n5ppggfrx5hv qtq ruxsy g r7xqif uqtqwr~xqx wqquqgeq rxryn o guppfs5ggphu q qm m q y s nA ~ B g fs r s r v x q s qrxn g t5xgusospguwsirpv upwv qupxpos rpxh~g opxo g ggfusf x ui gp pugzpgrn pxg usppgwqrpmq xg jpjuhpgenums qns0egsuepd phq udppsthpng gxgf tv upsTng G ungg p d!prxrgusixures r uusstgguxq seqpgn wq gpdgfAn rpq gxhn ngtgp rqf x sd g f n qphmg m s f x x fpx pm pqG g r$$r r$ 3 usgxtqqnptgm fq q f oxj xqpp g xqpp qmg fpwvs qnt rus0phd x u v hdg x tvqr hgj p" hhd m s x v r y xoeAygfg gfrusgf pgfu rsd jrxm gon q pgdufg ptsuqg yqs "m quws nuqrnxs uVrpxgusdm dgp qrrxxtq on n5x uys us iutxsf 5nVn Apg yh"qdpi gp oxff r 5pghun s s $ r $ d uuvs tq guftsuqss npwgd qups hx gfusnrxppgwpqgtndu rs x0qox nn m s 7qu wsuqonrpxguspgrxGpqhvruspgpg g suf nTrhudxs i g n x g f v i o v'uq gnfr rux si g muf $$hs y u psnAdq s xq utsqus rgsm u sx gxf qrxwqqn hwf tvq uqspGp pfp nr 5rqi xhsgmprrxsn xi e q x e j rhzqppgrxnunIreoyusgrxwqqtpqgnuurpg phrfnxixoy ptgprqgqd'v xuq rzgi usprp5g pdvGv upso gppgpguwduuqws~qdm nmnqrgpvufs vyx tzqpq gqx wrguv qf s npggyifxr hwqTq Gur rpxs rxx tpgspp~zg hun ns dr ps v g f vq g r z x 2 q ev t w { 1.9.2 48 The Second Compilation and Run Introduction to Programming in F ) 9 r n1 nn3xzpx` b ' b v v { ' W ' G V @ ' V ' y ) E r9 b ' b v 1 ncxzpx` v { # v w t ` t f f p v v t ` t z z p v W 2 ) 1 G ' & 91 V 3 r 2 3 V r ` q v W ) 21 3 i V c ' W ' oCdc b ' ' $ pwg~qpn rxnzus q g d o px dgppg hg gfsu us xgxsuop pggpm gpf ggdp hf urxs no yodd hn u7'v nrtgsup ngxpwddpq uv n"rqf dx rxqTfngdfxrtquqds pg s h q d h ig qo yntdq x"gfusdponiq x rd` uf"~ s x5pdun rs i ppgeprx g g i ( s g s wgq m d rexqd hxwqqrrox he7vqn pp"pg ugupss ned q pusppgr"frhx u s pgpegorpg'vu f n4su x5pog unTXrrpx i"gh dgu sf q pg n en txyqtxrtx~gfeu opg rgugfu sd si s s s h'vwq Vxzpz{unzn!shdm pdm xrn~ohuvpsguipswguqs qr g x us g x rx n r rnpxzgg x uos phuqg rsd x ngpq ndeo$Bvys ux ousd gq tqo ngqrfuxst7sq upsgowf nrzxq Augx p ts rgrfiq gsupu nhronx xp v'ujxs epgfd pduues hn epurrs g nesi xphu ns rn gputpsd"q rngpqw fg""x uusqu5gfmnmuh s u!suxyn q wx"wqqrq xgguf epfwsgAuqosu s "ofm gou susfpuruipsgpstgnuqdsus pxhnnyrx s u g s s g q f s s s g i ~ gpgunzuqpgGpgpxvtm rxd qgf n~t ups dh upgsx nfg us p7r p~ dpggnf pwgd fsuqm xgxTmxd uepeg sgftgq x n hdrio y wqpvpugstvwrqq xwqqxgpfru si n f g r gg! s d s m qdg frx!hmn 'vnrwgqpf Aquonxunusgfg pvptguqs is g j rhrpxx gqsug y p ggVpugshpd xwgqqgq pednxnx psu udnsustnphdoy} pv ptppgqo qpg0rpf gx sus h m e g m n g us xg sxex wvq p7~o xm s qm pe7x n phgx7mgpnTxgpfus x x g v h g r m f s r rud ywf qe! urTntpx7g ptqq!nm uphg s rupxstgqrpgrxf x0hxf pdhhdd tq myhhuf rrrxqts qeqx yuqh vn ig s h r #% $ r ru rrC4r 3 r rrC 4 u 3 vuhhxqm q s n g d f x rn hdGrx~o nue zp~qe{tvq gd ~rx p d g h g y f r ogpm uhgs d dd pm xpqexs yqrgypox ren i uqsnGhx d f pdhhs m pjgg p v ugqxt nr gfy5p Inpd ph h 5tn urynpx p 5onq nuds upwsh~nsxdq 7x5usuhps gh 7nmgp 5ugphpn pg uhd f r r u # ru %hC4 3 u B rr rrrCu 4 u d q |G W 2 ) 1 oC|G d d q q v ' 8 o d V 9 roCdc b 1.9 Case Study: Debugging Pendulum Calculations 49 vtqqus!drxnusrrrpqfgufws s xn d q xx g q jq rxm nwq7x ppd mdrxX pgtqfg Tpg orupshu hux srw rxe g m x gg m n s y n m v i q dus rnpjpeG yius4q xqtg i q4 qpgrf x rq r ruiq sg u wsq d hpdppg qx n h!ppg g n hvtqusmmuds s drn p riusp p!onq qdm guftsq rrxprhrih xruwsqpguGxxgpx uys hdryi fd uwsxpwgxs rrx n x m ~ uxtspq v o rgxp wg xp qqw gfuuwstrdrxxq5~qm rnq x us rpp Aggpx urgpxypg gnfrxyg"ufgp rwqs xq 5rgpfqx g~qsu dopxx yutrhxxq q A f 5 qq x v s s vtjt'qrytqxq qu 7Ahr n n rpVnudsu s uywrs q uryrx"pxf pgnpA!qxxd rrtAg ugf spfuAs txxqy frfumqwsg oq xomyqwgepvp u pgmsujp quqps gnwryq xqpnguddrs e oxx enh{ qrsug x x s g f m n a v 3 1.9.4 1.9.3 50 v z p f e t fv wGu 3f xz v W 2 ) 1 G ' l d m f m s q s g h i s 5 tvqgrxs ngp on n p hfq xupdpshdd p us 0q us n xn vtr4uxppsuhwfpqrxxd sgputeq rp uuy nweuq pshu dsus p uf eypngr xus x d s #% $ r ru rrC4r 3 r rrC 3 wvqr y r h x n f d s rx hpdhmsvm uho txr'v eqxtyxq Xxr~t px qreop uesg `nx~ygpxpfq g ggf ` pgfus~nrrpxgtqywqrxh g x q n 91 V r 2 3 V r ` ) The Third Compilation and Run 9 r Post Mortem Discussion n nxz b ' b v px` v { Introduction to Programming in F F R " I 2 0 g p h n ux nns wdqq gext uss rmrxpxqrrhvnf usd rzr~e np gp gfxpfghpgusgu x`zhIfpug sr i x f r xz r i g px i x g f s nn h i d v qx s g s q gpprxqr xhurpxgphoxpgpxgdpqgni uonu s~nrxpgq rpvpysux v pdpgpruihrus s px~nzp prx rqx qxgdpfm gonh v rwdqhsx rg!fx sxu pszdurps x rp s hf nq x i rd ropxhn guufhrqts r xm7s g q i r x m g ~ x d vs q q vpy ux ~riyuvgzwd qrx~nusn joxxh"pyrg wdqx dq x f uws q Gx n pyeig ~s r$# z r y$g s p ugm spfrx ps rpigug srhxx 7p"q"fd ryi pxrp ri giov 5x om "vrrx xq gs x m g uvspv g r g rx rxq TrpxrgGxprxqoxTopwgqtqutsqrvuq rpxguGxrri gs jt f ngxiq " eof tx furuv sTpis7p rnqx yprrxg7fm TupoGgpng xgqrxurgdsf" e Gn5 puuxssggfpgugfsuswd q7Tr xpxgupps xrq xex s x s x sn g x v x 2 3 r j Gkr 3 a 2 2 2.1 Statement Blocks 8 v pp p 'v pp p vs Gp us B z v v k ov pxgv A$u r!px g guorop g ufss uvuswstqqtuus uwdgsq ryxup 4 pxg s$ n ! u ughus fv uvst u ~ v v f s f nguqephxV usn $pvpwgqr`h dghgqusxpuegfusy$r s s g m v i g s" 5 y s g Vxps o s 0 uuhyy$y $u tnvtqyhmunpnVA nydhpdhg q tuq x"yxqrxeqnhnn yvuhduqs fpupussDnqupT rdxq rgx ugns fuosTf nsu npsusqhnn h mxpg T s nh gy g v g d s x s x nrg pdu gs n phvg os hmVd gqu gfus rxx o h x d qph uygpfg ugf dqm us ofusdrpxgp jpj ruxps wggxmr u hduds nx gupugehqpss t A xdpusfuqm wspox gm nq7gmpf un ggf n futwspq xq g rtq xqgfp duqsgGousum d n sv n uhp dryufpft5qwsqerrv xo q umsr5xGhnnpv tf s m q s s g rig q m ' G e r e u x r Tri vTrGT e r e u x r j e Tri kYrqYq kaxqY eYri kTrGTr r e u x e r e u x r Tri kYrqY Control Constructs 2 0 W V 8 TV #3 0 'q 1 x c d ` p G 2V 2 p X V G) { X 0 W G i3G ` ` { { Wrr v EG v { { W v v f { { rr nEG W v rr v t EG { { W d 2 ' d r rV G1 'q h h 0 W p d r u ~ # 2 E3 | d ~ 2q 'q 2 V G h ~Cdc b ~Cdc b ' ' ' ' 2 3 2 3 8 ~ `{ ` { v rr v ~ z ` { { G dc b u p { { 2p dc b rr p v v p { G dc b ' { E 1i 0 { { 2 3 2 3 F Y R 2 3 G G |T F |T F R R Y R Y R Y R 2 3 2 3 2 3 u r f r 4 o uu $ ur r $$ Y u u r $ f Br V # V $ ru$X$$G $$ rr uu r f rX$ u r 4 f $r rX u$ G uBr r B uvj gf ppfm f gnpe$xgf rupvpx rxpf rxpxrx n ugfgffuuss 4eu vhrnpxpv rxzrp ggpGmghufnris f d x s G o g i i d s z r s 7w r vv vv v v I wwwu I8o '7w I wwwu I8o 7 w 'u r I ww7wI8o t g r q q xz q pwdqx x5i $s uss rxm rxutsqx rhvufws xhm x wfq g n n tjqs rurops x gnhdwd qT rpxgtVhd gpxp grhp x rAi u7qrghdf ugs prgpfog rpsx rgpxwdqprxg$ngpgf m s G aFY F P RT F P RT F P R Y R 2.2 52 The Control Constructs Construct jopngosudpn"suqqsudgrfpgxhq0xxpgtqg7mytrxpxgnuevppguspq5spgsnpgeevpgxp dgfpgusgf sV q s fh xgfp7rxqm muqsVpriuxrxusqdusxodpg0sp z g7 jtjhqdgpfwqrxus~pgnhnzv'pgufsxkugfhgkntp qus5iuoiun v irntuqusst~d5nxon zuhs hvgpd upgwssuq tq rnxp5hdhgqox pgneus v E jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj d q x g g pshgftxyvripqn!uqw ss xu~s ronxrqx n g q u n~ws 7uirxnf pqgtn quehfs ghpfmd duvgs !f pqsnushq pp(exg qgm ppwyYg vpg(pxi x nxntuqs ~xsnq r x qd r s n h & 2 3 2.2.1 Case Study: Escape Velocity of a Rocket h = 1 v / 2gR E 2 2 3 G 2 3 2 3 2 3 ~ v G W p V G) 0 W G ~ d CxG W dc b v x g gy g rzp~qonxphdp fus rtv wdq n xp $pxprnx" Gx r rpxrpxgi d g n55y puspgqm ufrsixGn pxpgopg heng orn yxv usdpg px5ipgn r!sux pd uns 4 g h g pg pug srx7 gfusm GnVg perpxprxxrGnshxwdqGxn rx jnypgphpxghq Asq usu pf unx s u0s$npg pdwon nudo futs V x g d r pxt s s h q i 'vounxgd d s pqgns wdqf rx5$us rp opf x fuwsuuqshsmx7tsq us v uqhf dq of xs u suprruig ddg nftvurs x g d r 5 sg s s s wx j uu np g v g qphg ~ ng gfus~ nyvus z pg q g fus5 xu xgy d ohn sxd ~ G rpxrinGpeg rpxprxgfug se ! r 'vrq ywdq rzx ! op n ugfo n y puspgVrpxgmusrrpxn pqgn"Gx7g den5hpg gm pxrrxrpxr ri 5pon"pg "xGrpxg hd f g jj hvmq uhsdprrg pxd"ngp eg pop gpusg hp d uxps xvri fdus " rpxr efi su no Aywdq5wjpghvn rpxg 5 u 4 $X $u4u u uBr $o r $ r $o r $ r r ou 4 r $ rr uu ur uur u u G q 2 2 3 G ' 2 3 2 3 v rr v e z { 1iE X V 08) X W 2 3 t iE X V 08) z { X W G sV 8Yq 2 X ' G iEG z { { W ` p X V G) { X 0 W G 1iEG z ` { { W rr i3G v v ` { { Wrr v cEG v e { { W v rr v u 3G { { Wrr v w EG v { { W EG p { { Wrr v iEG v ` { { W RE 2 3 2.2 The if Construct 53 h1 2 2 3 3 ' G G 3 $u B 4 $r $Br$B $3 a x g q vtwdqx5~nrxypvusGphfp~d nj wdq rVxqp rxg vp gnrpxzy rA px uris gppxgxqpdurox hrVxs rnhpx d umm os nVopv x gpsh dgwdf rpxq s x()ri x v i r g x h phz g rvxq nr on xyq q nus qrx rvpgon pxus oduppggs gpspg nzn of qwd n yuqpfsg uxsueonis pyuqspsupr gfddp pr~xg gCf qr pg i g n v f i q s jrq 75x r n ~vxxq rxGp gnhpxGoqwgx uuuspsspm gGpg f x55ovg nrunnyGp pv gtquspGgefm urhpg xd ozpxv igxdpnuqg tphwfg sVq hp nh7g rr x gvupq sgmGppx hn pderumrxxgsf p i 5 f q q ~ r s y v qq ptgm i r0phd x gn ong umspgnyp oes"nn pey vgrn pxupgn"vhpp guq sr pxgi usp gd uxws gg s q y rnn tguqos cnf 5pfuumgss f nrd oxntqq upohus is zq nrxn~ pwgmeron n e g d v x u4ppgpusrxrorpgchdgpfgu sgf i n n f q Arjs m wgq nxusq h"rq upsx tgvrgqp xm x 7qq pxm nTpgmus us guyp7pgs Gpsgu ugthqn 5pusudps h urognxsrxf qrfux wsqq rxrxq7qmt7ngr Twgpf x5puq ges 7xGndnprrg exgxgtgpxf rrx s m q s g s mh q vtqpepgoupgAppgunsrpgnfhdggpfp7usgnf7pgnhnIfdgfd7ursgrxtn"phxd~spntdfwuqrsxuussp~pgwqrx5nnhpg g s5 g A g v g i f5 qr xo g g a 2.2.3 2.2.2 54 nvrigr r dvpgrxptuspgsnpgeDppgusrxpguspguswqspdnwfwquqrsx qrxen ppfgwxquqmemusnyvppggexppgsumusonxGquuxnqmrxuqhsq5xopgpgegrGxpvpgruxpspggppg7r xq s r e v s z yvpvpppgwuqusstpqggruiwstquqsxxrpgxppgwqpged"pgpgyrxx7ppgxhpvg7g7xpvnvwquvspmugesroxpnxn5qxuiuus5yspgpngdptgqusn"xoG usphpqgdri m h " r e o rqjtux7smsuwvdw7dnqusxogvupgsrpxppgusrxpguspgugostqrnwqusdnduspppgenwqusn qh qh q iuspgwqvpfdnpgopguspv up sryphdprxgfusrpgwqonm jrxgppufusspqrgxxgrf!xqqvpnupgsgfpgyrxq(mxsum7vntk qup soplnerxs Yvp pgrxpepgnhvgpn z lg jpupvgsrpinpgGrng5pgdmd rpegxngphsu nvp gppxfgrudgfs png5 uupsggpsuspfepog nnps" upgyftxpq qxudgp5fug pnsg rrqqx $pxuvgCu pgs pprufgg pxs nop uyrzpxs rqpqx rxCn g do m x s x q g uqso~qruvps rxwqquTxVpgrxepyuspg~pqugv nguqws s n~xAxn ~Vsuf ohuqw d~npg s s g q r x xg s y vekwTrGkjhG hrdTrYuh " - The Solution in Pseudocode Y The Problem v final = 2 Control Constructs v 2gR E V G V W z b b q1 1W n3h z b b G V V 1 V G 7 V W V q 2 { V { V W p1 d23 d @1 G V 'q d 2 2 3 E3 ' G 0 q 23 E 'G 2 q G 0 q q i) E W W W G ' ' q ' q V ' W 2 3 2 3 2 q 2 3 s G 2 3 G 2q 3 2 8 V 'q 1 2 1 2 2 3 3 2q 0q G G G G 8 21 G 2 3 2 3 2 3 1 $r 4 4s$r$ 3 a f r r$ $4t| $ $ s r r $ B$r fff r r $p 4 f $p 4u $ $r $u rr ff $ $$ u B rB $r rrru$ 4ru$r ff u vroppgyvr~ppgypvts qusy x~hrxrhd~n~upsu tsqxGus i x m d g ujjus s tf uutrn~x rui ppx s gwgphuq zpdg s tfhus xnp riq x uxp7gs tdqugfonupn ~ rgogxix fnqxxqyv w mruq hxrxs Dtg7rfwsufirx x uxougsnmfetqpq uipgshup f hdg tsfq m T q s s x x z m s " q q sg v s g q g wdq~quzpxgphrx7 5rx5oph jq x m xgnos rxgp s vu uspq d quT vhr rpxr G nuq!r q g s n v i x s eqx rv n4pvy pou no `x rv 4n n i4g hr xrhd mGrx` ppg s Cdqe`deptvwdqrx ytp gn p x r n vf uv s neq$ u 0uxv rps vprg xBq rrxGx rpxrGi n4pv r vuwis h pqgsx hnx dpge !m r x qg B s g q i x x n h !pg p huTtC|pv rTupTd !qusvhpxie!dpgrx oppgn oe rg pho hruxnq r'vvohns dqyo nVx uee5vsxn h rnunefr"x vqyhr` nrqevxwdrq rei yr nxx x hxhdwdhnq mArrx x x i y qroxs ! qr Br $r $r4$r $p r E u$ g $ $4 $ $ X r $r rEa45 u $ $ 4 $B $B$ Eaq $4 ur$ $ $E Ea $ 5 g & u r $ p u$ # ni q G r r 0 hG V W W W i) V 0q c q 1 23 'q G 2 3 E23 G G G G z { { G V G G 1 3 0 0q G G G W ) W W 21 3 2 G z 2.2.4 The F Solution 2 3 2.2 The if Construct 55 Y Y vxG V a t W ` ` E8g f t ` u e x` v W f 1p3g u `x` ` v 0 G { p 0q 1 G V G 3 0 q 0 V 2 2 3 E3 q 0 2 2 3 E3 V t w v v W f 1p33g t f 3t e ` 1 W f 1p3g 3xz v 2 3 7G { p 0q 0 G { p ' q 1 vxG V a W f h3g 3 w `v w z p f W p 1 3g 3x` v 0q 1 G V G 3 0 q 0 V 2 2 3 E3 V c W ' 'q ~ W ~ d d { G 1C@&~Vp x sC3 ~ v W ~ d 2 |~r1 d 2 q 7G ' G 0q Vd ~ b ' n hpni b b z z b b r9 E3 { 2 2 3 ~ Tv1 V G V W 1 V ~ ~c q ' 2 3 V 0c 0q Vd ~ b ' G V ~ v G 1 2 3 Y~ ~ 'q G 1 2 3 Vd ~ b ' G n pi3nb b b z { { z b 2 3 ~ v TxG V a 0 )~ ~ G V G 0 ~ 3 d b ' ~ W ~ rsCd n | d ~ q c 0q Vd ~ b ' n bhz ni7n` b z b b { G n piEnb b b z z b 2 2 3 E3 ~Cdc b ' d b @n 0q 1 yhntqusg!nfrxqymusppgeArxqynAusnxonAdmydrxpgtqmyn kp mk vqr7xyrvv$pvgpgxpxuspgpgsumpgusnxniurs"gxppde!p~vgtpqnegpmgnesufous~g$rsufxfgkunznqh! $f xr pg qxusp dopusVusnsopgdspphdgfwqrxgpusgwqpmrvxqhmmusyonopgusphdpusvnwsuqTx jrusrxinq!ogppnpuxpsudsinqrp5xeerirxpgngnf7gproxp nev gh$dyI$ffkpmpfu $sfAnhxhovnp rnpwgqusnIr fnx dfpgx uvsgpf7xpsnug mussq ! p kC Vvk s evpgpxupsgxps gp us p g oqx n"u pxgns d5 u"s pgm fuTs pgtpqhgox hp "g'v h dwdqq rrxx Gu ntp gg p pgTsu ptqg uprus rnuhsn r n 7 $ 4 p$ tr $u 44$|r$4r$pr$& $ o 3 3 o 5 3 p 4 r $r $r $r r$pr$& 3 $ 4 p$ tr $u 44$|r$4r$pr$& $ o 3 3 $rB r r $r r r $ B p 4 3S a u r r p p$ 4 r $rB u$rtS$X ur r r $ raXr $ ur s r $ 3 4 $ tr $ $4$ $ ur a a4 4 3 S $r$B$3p 3 a ur p r a r$ 3r 4rr'& u$ $ $ r $ v p { 3 aTe v d t { 3}V V d3 W ' 2 2 3 d d @x@3 3 2 2.2.5 56 Testing an Control Constructs Construct 23 'q RT PPY GFT #RT P F RqFY RT 3 RT Y vr rfuswqrxqmnpggf suj gghr nruspqmqxdriusvpgpusdusgfpgxqmmuszqx jgpgnhvqgpnpTgpnugespgpgoxpggqonvprxxpgepgdusriepxogpghuspgpg ustvn"pgxusdqhpgogxrisd7ntvpriusixqm $yqtvpgpuussdC"qrxdphusxpg7npngrrxyuusesxqvdxggpgrvxpusppgmusuIpgruxp8uvpgfqrrqx jnhqxd'npgn fdgfpgusgfqrggquspdpgmvpiusxusqusTdrxrvri ! vnw4pgw7pgutst'qpu'suphyhp!Gfnwe 'rx wxpgdwdusw!xh dmp9g7uvsrxpdi xppgd~pgvnuprsgxp f5qdrnvxgx5qrigfdopriusqmqjqhdmgfrxxpgs qonGvppgp ! xr r r p vpusg vgrxp !mus !ngpggnyxxg mgxfusustpg $f d tk rv l v m uos nq rg qupsVpvonrppgypgp grpxupsgpoptvqv5uon7 rhq d 7rixpAhhgnvp nAxr7n dqxqf qx phAtqe xu squisptgm gg v x x pp)qg gryfv xqyrgxmddq rfr!xv xqdrpxrgTx fq umsx tqfq rxq5pm oxg Gn uhps ond "uv s nuv ppg pghg "0pvx rrxfi m dd mxs i q d rr ggp` xupsdpusTptqdgfrxnXpgXrxpgusdpusp gf gpn tguqXn us s jyp gpx p~ rumq gxs g~xf s nz pzdg oysu ugs p ph!sgg p uqpgedpsg uhq Gxd rx q~sux pgnq v ypvn mrx n" xpp h~vvuqpsg h p g g usy rhpn pxg"uvguwspv qpnusm uqnpuugnss hrd pxgruuspxsgppsuhws nd~Gspq upg o4pfn orsu iruxsqpn~ptrqg uhx nspng drx~hgrpx rdd euqh tsGmonyd x d gusfrruqd x xps" z gu v g omy x gf gx q h x q r x q v q s qr d " x ssumgperxq nunxuqsmn`sumhwqrquxsmqpgunnufusstrxqhhmgqrxneqtusT"qmtqndpmgesuxpdguswuqsmpghu5qrnxyyusnownqu"sqnx s fqjtusze pkgp npghui v nzp pgx"n~nrpgpg$unvspxgetqpdgtqxpqgpeqr"xrirnxwqsuq"nxrx~uswqhd~onrrxrius o ngdusn7vus"$vusri"qrx7pg qsuyuosxpgusppgtdqpumdsnhnvpgzdrxhhdrxp xppqpghxgrdwigqrppxgptpsepppggnyqp pgenxyxpvpidupshhdpwggxfd7n vv$ppgghx pwsufusq pg gqx pgn n5usGxl v pgh!f~ k l ~v vpgs pxumq s n d y f d v $ m $vppgg rxpxg dus g gpsuqm sufr x pqgtfnyx~hn g npg rrx xd onnpqeGvuu pgtwq qu s ou opgusqq pGv x qg ox gpg u psg pog pn q g s s s g q xntxj n pvwqu so us neopgpgtqwmhq dx pvpusx hrf x phpg$uv vpv grpxdumsg ups nghrpgp uv s q5npfg"qdrxpvt qusn rpxg g s rrgv q q q pgp g gpnpe g pwgqtqussvpgm px mus sone pv txuqs rs xvpg rpx sg g pjj us tu gs psg n s u"pugs n5pg Grpxguups ehvtqueguf senuzrxupshd gu!hod t rns7t r$vpgi pxoupsgpp7onpxgutsq7uqpss q g t v s g g x nv ddd p5um psg hd q xpv xg!px t unpgp rpxn run qttpq q gxuns pxgwg hpqy tmpq gd usfr pxgsu uvpgsguqfws Y 2.2.6 Roundoff Error in Tests for Equality 2.2 The if Construct 57 v x g npe q n s i usmp Gg wsuqss uqpspr hups~s n gn x uss hud rtf s o ypgunxryustqrgux sn~npg rxtqon u ogrhxdf opruin d u s puu~nss 0q ru yhgxuos pop n 0nsiu us !gpi r5xg tqdmdm ro!hvufuqws gx qfmydEn( uGxsu ymprg ypxghhh g o C E z 'x )CC C 'x ) "'8 )CC gY p |3)v3 )1)$ 44 33 YC C C E z 33 CC C E z C C C Y Y 3qq "Y| syYx $ p ~ n f prn ui!us dym t usrqv vushdm ugsmm x g ptwqgssqg uqu oysnd x us rqrxx zvpupgsrpg uihpsg p g !g p usuj5 ~pq gruif xspgruv ts qhxf pg s x i s f m f xv gx fug qsws rxqpgg ps wguDn5p g pxgdps g ntpusq frpg yoxij pxgq gpd rrxdf pxw g qupgciuvris usgsp puhgpwgf qtqupsxesq u ov gf n dEruq( xVuxyfs xrp pxBvygg hd pgphi n g x g psjuj rpm g guusspepx xn px7g r~rgx frqt xxudhdps npus uwsx q hp d pupufuqws hxs ymypgypv d r wprq whf xuxwsqpg x g f s h x xm g t q q ~ n tjnquspuds pjrgq xghgzwfsdfpsd rq xed upxgsu~s hdgfxmf rpxgs u tuqsqtq uxpshdp unsyx twsuf xGxrXiev $Gu ts qyugp spg y h q r q m pxr jv juustsq qq x qpg 7qm utxsqh5u sus 7gqssuuuAs wsq ugps rpxxg pqpgpn fugs f npvxpugpngusg usq uxs grrxmfq n yus prpx "guwsf q ndghner$hpv uy u suv yq7gph g d s f g m s g p s n v v ra g v v v v 2.2.8 2.2.7 58 v g dzpwdqs p jjosux5 urz usph p g ju~qx p grpwquonm e px~q ny pxx gi d xuqh o s x n g q d g s r nrix pg7o'vwqrxgfr xg x rsrpgr g xq xdmq~uqpshrustg q hrpxdv gphd Vf umustqrrnxhqj onxm psf uhpxy rop x gn rtqrxrpq tx g uqrps x gnpeg rhpx yVs uquhss phug ospx g s Vx 3V$ 3V r a a 4 G p v ` )38 xc b b 3 1z E b b 3 zh33b8 z b Flowchart for an Control Constructs Case Study: Graduated Income Tax Construct 0 q 2 3 31) $ Y|) )q ' Yk3 8 I V "6T i k T v1V 8 I V 6 T V "6T i k eT v1V 6 6 8 I V 1Q T ) T l# 2.2 The if Construct 59 W 1 W 1 W #0 2 3 ' 8W1 X )1 V c W ' d|~ G |Gn d ~ ' ' ~ v #0c1 ~ d #0 W 1 V| x3 ~ d ~ d z d ~ ~C 1 d W d &~qn r~ d ~ v e d |#z3 x3 d z v e d ~ 1 ' W G G 3 w Ec ` p f W ` e { W 3 w 38 1 3 w e u hc ` W 3 w q 1 ` p f { W G b p p g Evnp v w f v ` p b e g h1zvnp v w e u ` v v W v 2 3 2 3 2 3 3 w e u 83 1 ` { W ' W 81 G p p 3{p #0 w x` uGt {h v W 1 i{p e z #0 w v uq z{h u W 1 w `i{p #0 b w `{h v W 1 n{p #0 {h 33{ { W 'G #q ' ' ~ v r ' ' 2 3 2 3 ~ v T ) G 0 0 n d W ~ b q w `3e 1 W ~ d b 3np W1 W 8 W 1 d ~ W | 1 ' 3 ~ d ~ C|#zv w q ~ ` d ' W1 d b n 0 #}r W1 d 3 '8 ) W X 2 3 V ' W v p s d m q s x x m q ukuid y q u x hux unz p7r rAr~pdus~prpigrnusrxz ppggm n ums v$pswfrxn Tpxgu s hdgfrx yusue uws tpvr "u n eg utsuq s s d tvh x s q x x s pvu s tv ruisui ss nrpx pr x d tqrx rouwsi qn oprpitg qho pxgph g jox~hpxyperpxprx~n!gpsmg wfqrx~nyvrGu pshdpusuqx ~ug# r s r p q ruus !! y 'vruipwdpswgqqu!rqxrxn Vu rpns x g xu5 yshhdxfr~x muws q uqrn7gqsxex psirn uuug wssxr nsui op hgg hpg rpgpg Gmnn uhpws q rqxpgp s ru r r t ur#r 2 B u # s4s 4G G G ur r rr4Gru$ X ru4 3 f Br # r 4 rr r G # r 4 rr r G # r rG r4 # 4 4 ru r4$rr $ r f $ '# bB$ 4$ u$ ur $ $ r u$ r$$$B $ur rr '&$r r r $G r r u$ '& $ r GG u$ $ u# $$u rt r u$ G r $r g y xpqhr nprpv xrsui xeus ~ ron pu gpuows qpufu~nqwss xqxmopv n pxhg o x muwsqtqq x fhnp xm g ! g iq ' W 81 X 60 Control Constructs F R #0 23 23 " | " Q Q Q 3 w e u pi 1 ` W u u z n1zngh w v 3q i{n b e v w 1 ` p f { W v v w e u ` W1 v r v #t w 1 W 0 c Wh1 ' v V0c i G p p W w x` p 1n v ` w `1p n v v w p ` 1 W V0c e z 1 G W w v u ` w n p w Gz1n v e v w eqz 1 W V0c w ` v v` w G ` W n pn v ` 1 W ' V V v ' V V v ' V V xo r q o 7 r x r vrhusn qx4dGrnp0ghqtu7seyxTggpfustuqrstqxmmGpggnfgufusqstrngxtqqmdrxxsyxpgg5suhdpgIrssone s vrriusemus~nypgdGhdmgfrx jpruixourspguuss"rxneuqussn$u#fusgsuopqgwm5prqoiuspgtdsuqfxnhyhngppugussy7pupsg"usdwqd s r joxxgfrxTqgpdrrxTsuiunss4opggfdduyvs'Gghxpdqdox7VpmqnnfusprgusyxpngvprghriGxrxpupspnqxnyuBkukxyukyuruxprhui r V x~ ~ x sxwqusm~riyvusgf rhdqox5epmgfrx!sushn~srxevd~qusdwvrq jonxz5qvdrx5mmpgnzxgpxpdwrqirx5oyn5nppgmfx7unoTpfgugussgdfuq~nxe nh #5gukvfluulusiupqirhuspgtuqugskuuf5ulpp gneuxsukuukuxq qdum~vqnhukvqkuxvkul v rp luuluugsiuwigpku uugs7s Akd um vlfupgxlu iuuqgsus5rkuxpkurknuhi usgnnuq vxrxk q q r $ rpxryperpxprx~nppsgftqrx~nyrigrxzpgeush i g g d v dm f n T r r jpvus 5dhxnf pv uk5ug prukuy uiqu9ss u Ax pnyxnp pgg pn yi urpxs ugs5 nregpxgp suwddgorxf x! us5n nyhpq gygpropx gghg pgr xpg g m x f s y h qg xp $4 $ $ $'# b$X$rrr ru$ u& u# 2 r r $ r$ X s4 ru4& u# 2 r r $ r$ X s4 ru4& u# 2 r r $ r$ X s4 ru4& g X gs vrs r gpd 4iupswguqs~nq xhmp zg uspdus m r d g rx q pxh4dgg np eVpgm pgfumshm dt pgqsudBrfrxx xhn np7ygp gpn 4gppmyV rq xgf `$ri x g W 1 '8W1 #0s 23 'y 2.2 The if Construct - X 61 '7 I 1 ' W 3 w Ec ` p f W 3 w e u hc ` W p p 3{p b p p g Evnp w x` uGt v #0 {h 2 3 2 3 2 3 G G ' W 81 i{p e z #0 u bhe1zvnp w v uq z{h g 3 w `p#n 1 f { W w i{p ` #0 W b w `{h v 3 w e u `i 1 { W n{p #0 {h { { 3 W 'G #q ' ' G X )1 'W1 hpj xdg usr x!ntp groug s n pppgg wvq shhd x q ~ gnrxGv g pfm pxng q m m gfs rxgpfgxuspgppgsGuygfus~ us7$$ n jpAug s 7um!p ypfgrpxghd ynArf rg Anf unypg pihgf r!m pgA py ohuvigf o g m m x x s x g d n ugpxsm dgfrxsx qusx pgodr xgpfgwvqrsx p g nu gs r0ugf xpx ws qpgxfrhx mhn zxd rxus pxigddm g 0yxid xrpxmq7q nn `tsu qugQufqwsufs rws xrxqxmqq m us qd rud xps gm r d x0ngnp0 ne0hrxmqqqtx`onpXpvoxg'vuqsp !pfgj qg5 pnuqpvohy ppvg o umpugtst qqrg5n ggpd ~xy x gnhpn hdup}gsg $pvh wqrpmxv gufunwswsvrxrqqTgxm5dpfo ugn"d rqrgexi ppdg xepgupvgsnmv$Ayrqpp m s qs x 7fn f hg v d i s n rr4ru$ X r4 3 f Br # r # r r 4 # r 4 r 4 # 4 ru r4$r $ r f v g i rpxgpxg qwrnnps ru$ g q x g uq rpxufgwspx rxq 0osutnq rrpx re40p gq 0us n00wgpi rxqq uvdq40nhpy g'vp7gp gwduqs s qh m G x n ` g p qr q ph f pg x 7 ojj pxg h v p pqgogVnqx u px g d pxgph g rx p pogpmg 7gxsgxufr fq5op x rhvin s r px ghp d nrq 4ox prhpg x rd i s pxg phri xnhdtpqgVonBpvxo yx hs dqVguq x pxgphg rxem uhqnws jhpdgp xpv yppquhs deh rdqx rTx rwdpxgqhxg g uupgs 5n pxrq g pgf r xpggtfq v pg d x{rv g i f h g rv uGukx pvui yuxhm rd~yqwd xppgpdrqiuos x5 pxgu shdgm rxs eu s n pr pxg phxg rx x u st fz h m f g x g usnusx~pgumpruisghug s nppg ru px d v ouf rqts x pg uoru s xwqqGpm u5ns go un5ps ryg rdiu} sqv wd upg s5xpdo g ppvx pvurhs pxgdruhpx sgGmfd d xuqf syDrusux iAspxgprnr uhud $shw s s x h n p x t r X )1 2 3 'W1 Vx 2.2.9 62 Nonexclusive Control Constructs Conditions ~V1 V 8|) W X G dc d b ' W 1 V n ' ~ ' 0 3 ) s X W X ' '8 qnh X W X ) s Br r4 R$ uu& & o vtwdqx5u~dgfv s d dx pxyj uf ogm ufs q x yrw pqxgtwd qx nzpdpxggr uggnspzfp ugxsx~gus 7rgxhdnxGs~hru s ruxi ssuxzd uussepghg 0fu rd srx hvn "yhp u sm s g vx gx g n f n x s $uB u $ o & hufsjuj dps ggr ynm rxd 'vyfquyss u q{ rvhdpv Apgp gus gxfu sr px g 4pgpujrppv xgosu n pxxg yuusp ~g pxm x d x s g e xe i s dbc d 'c 0 3 Vx ' W 81 X )1 '8 W X ) g q pugfTrm Vvugx Gpfgsr pxghd'vd i y ps p7xg s gf f x rnqq xpfGsug mn gp gq upmsg gursf xn s g ix s f s g m qugppgpfgx rrgx neAv pguspgugVusApi wgq Ar Tx~q huqsn uf ntsTr xwrtn nxpDvfus tq rxxqxemx hn rxx vprwgqupsx ups gpwguqsyvs gx pfg tI pxrg d r q q m y r rxj uvrpd rgi xpzqg g gpgp ngugvs p go nrpdpg%( 7nx ryx G uhp s usrgzxq m vrq Am qegpvppgwsufv nq q s m n r i ~x vpvtgqxs q u s7hd mgrxx d f ugp ppehd qoqx g nqrdqhqrto pgn u sqp gp Tp ugf f" q wdq rd x s g x x o gq f upsmonppgus tqpushovtrhx gfupshm Vnzhri opvyjqow qxrxm px g uwsreAdxq p pgf xusfu5nqs t $x qysfropdmg pui uui s"qx 5ugq s pgx p tg pgq usx oq nopgg p ug wdsq n z m r m Q mg xr s h qnu tsrgpsm us phqg g h pg s ppg munq hx hy prxfu wsq pV m ry q $q x v sq q qufutspsruqsx sp ngp f g gugtgqpusn qhqrx snn pgy pgg ufsuh x dpp"ppgusxpvrppgqrgfpvorppgdpgpowfrxg m pgppvpv rn pwgq7Apm "tqeqx wd p xnrhd npurxs us Ann dru"px sgir7pnf xgpe~g h tvi q rd x rGgpi xpq rdqpxenq rx7ux7ps zupgtsnq q g gg xf g g v gu x n x s r r m g jyupsrsui u~sus dn nh gffpppfpvph gx ixpx uI fuws q x q dnrhq d xnq puhri$ypri g m ggfg d s m n s d q qdrpxrgr$u$ i uftsrrxhmAnu spg pwgrx hn rpv rp x ui0nus o rn g uus nfus toxgp nqus ntXxggpfm gf hh7 rmx pxdptquqg xsrnrx s p px s m qr rx n o g F R '8W1 X k 2.2 The if Construct 63 2.2.10 The Statement xq ~ v iTV ~ d dc b ' G 3 t G 3 w d b n }r |X 21'8 1 V ' p W W V c W ' ' z X a 21'8 W xq ~ v n ~ d dc b xq ~ v iTV 2 3 ~ d dc b ' G 3 t G 3 w d b n }r rX 21'8 1 V ' z W W V c W ' ` X a 21'8 W xq ~ v n xq ~ v iTV ~ d dc b ' 2 3 ~ d dc b ' G 3 t G 3 w d b n }r rX 21'8 1 V ' ` W W FY H 3 f X 2 ' W 1 2 ` X 2 ' W r 8 V V r $ 0 u r r 4 $$ 4 B $ r $$ur B r r 0 ur r $ 0 u r 4 $$ 4 B $ r $$ur B r r 0 u r r $ 0 u r 4 $$ 4 B $ r $$ur g d n q i q nuspghpg vt or pv gupshgpfg G us ~ rx rq ufwsq xm npvwqqrxrd!tg wdqxn"xdwdq psjuj n drhrd x tvuies tqn pq xpvpv uusps gugrv s x vrp fuqg wshq xq `nf us drd gi ry euptgs qr pxuqugsysus7qd pxhg g e g x g m x x qmp` d h i n x v hgpfghr r ppigp xyq dqm xysnpwqBs{v n0pn gvpp prpxgrupsXgxd q tsurhfm upwsuxtu n su uuypsul guuyd fg epduusevq dus g h pfg s h d g s qm h` s m jus s tv $x zx pduxs zusqusg mmus u szwqp~u s qg m dypv ~'vri qon pmuonrAqpqy nrgq oxv uspA m rxs h pdu!npeousxrxur r epdun p"5pgs zeouooy h5y v n 7v gpwgx undpzwdq $ r$x pr `psuiutguqses wgpqGnv p x x h us n qrxrx7 yy e q s g 2 V 2 2.2.11 Exercises 64 Control Constructs &3 v p 2 2 2 3q r r x d d 2 q CV 2 2 3q v r 2 G r V r x d d 2 2 q CV f #X 21'8 W V c W ' xq ~ v n ~ d dc b xq ~ v iTV ~ d dc b G 3 t ' 2 3 ' G 3 w d b n }r X 21'8 1 V ' f W W V c W ' ' 2 3 p &X 21'8 W n g x q g n gf m v m operpxprxg ~n ~h hdd xm r ypxgd dgfus4v pxf5p g nvripgus rms yx ggq px pdrxgufs uk nn V x 0rs yq hggoxdffmid s yo xx prg fprgxi q xm s uhvsn kudqkuum dgon vr nuir u nzis x rdxgufq ms q uuyukuku Rrxtg n xusrm ig quk srpxgdd px xuk ukug m z m x i y g prt xpqgnrrrpxxv gsum rfiqp qen Tkusu upsdfptnpx gtuqstq x xqmt ouvT u psrrn pgphr!Vhpn v q 4 $ t T g r $ $ u 3 4 $ $ Bu ob$B$ B u 3 t T g r $ $ u 3 m s g n d m p q urpxg d~pgfus~quoperpxprx~p hs'vho rx !ukukkuy k u sn qqou nspg5Gng p ggpuegf h4s eq 5hx drs sxG kukukyuk d un m f pm pg us fGh4 r n s z x m q h qq svutqunzqnruzqrxzqh ngrx5Gonywdq q0npp0r $uv pvpsBg nTm7 yrpqgd 7qwf q mx ydrquyqutsq5 qrpx 7 ursq qx herpxywy qrq x psu nqg tm pqgm d o g h i0 x g vrp rxG g rxGd smuhddptpriupspguuspdp5pghptguwsqpt7 s m g n v s g g d m g k op nG x i qgfrxxfuwsrxp hq m TGpgtexd gm k fprp rxG d hhrd rm v q s q vpg i q m d n v q x ukukkukkv uiuyEyq hrrx7wdkuqk 5 uqrEx ygw qukusk v k qo us uysh"qm hx 5xkugukukukuyk uqqhns hrpwg riq wdpqr 7xxv d r B r 0 u r $ r 04 u r 4 $r $ B $ r $$ur B r 0 u r xq ~ v ~ d dc b 2.2 The if Construct 65 q 2 1 2 1 2 3 2 2 q Grd h y x 2 3 F 21 S 2 3 R Y s gi g s f m n vi j pdu o nd hpfpgpd nnugrpxgq usdh'v rpxrx7serutsq uqs rm gi tgxgqf usv m~ rug ng xdrrpizqepdrupx7s xo r npv pgt nus pphogrfgp ypg hpdu nxrrxs yx7v 7u tss uv s ofx m s g x i g z g dzpgfus~ r$$~ yx nopgerpx prxx yrpxri nsn5f yoo nu fgus dsf g fr u$s $ $ x rx spgvxh frogqpx x n oumXx gn d r mh pdotn`n updusgf s X 5 q st qt u s n o s j uvg!ogfusrr4un qrg0oizpym wd qrx $ sGppg7 'vwdq o xr pqgoonerx 5x rpxgd~ppxg gfr x ydd gfus n hp pdg npopg uesg rn5ppx x y ust"q qrfpduuss 7gxs png d rhn x dogv x g x pgmq o np5ggruf xs 5pdusuqs n tgp fg urs pxgG r$mq `on pgspxg qyi ri ng ohtvogfus G r ! h$ ! r s m n vns u rpgpxugpm d u~sx quv Tpxrzdp dsugp i gwd qf u rsxs 7rr $$~ rq $ n n s x s g huv dus e1nppdop g us ex rpdu npusIrx u !s Vou rpxrxtt vr`g hsqutqussm en !ss u rxepg s tvx df us s g i oxj 7prop gq n p n gpprgpxg fpgnm u!7nqdo ueryg!fvm gfg urs !x p pgnxrgp uqts efssurq urs unuyss rspgxdq f p fuussThn rn'v oVov unrp`gpxptgqhqm yuts uqnAnrruxq d qrs yhpn g g T r ~ g x r s i s q x r r d zq r$$$ r vv r d zq v r'7ww ww' d r$ wwwu'I8 w wr 'r $$ g n v s f sx upsgpmwd qq xx ~m ug s!rxq ftqrx rust qr~ohrpxgs p hg yg uveq gphdg!x~us s iustpfVus xusovsi zpg gs fufd unys q rxroxpzprxmyr px gg qwdnp g prz~uxg s nrrppx zhp gduqws rqxpgs uoq np hgxqus 5gqgx p rgpfghsgxrp r wdr q pxg r xpgr pwfqhm g f g x aFY s F s R F R P S Y R T s R 2 3 45y f 3 $ r u$ rt$r 4r& x 0 3 1 '8 2 W r ' 66 2.3 The Control Constructs Construct ~ ~ f r ur f r ur r $r Br$ v m f rxpprxzgufspmgpfggx$u ~ d b ' 1d u ` ` 2h ~ d b ' &pxz z ` d 2 3 3) $ | )3 4 Tv3 8 3T3 3 I Vh 8 T" 3 r I V h 8 T" 3 h r I V 8 T" 3 hr I V GQ6T n i g k g lv1V 6 T T x TQ T V 6 n 1Q T 1 v &T l&T T i g V k )i q q d g ptuqsums dp~wdqrxGrsQo`pgusphop~wuqsnevr q uj~hrp g m g xn g g spxD q unzpGuGrxrqpxnyxhusqruovs noq rud rsx qqi zhp ~pxdmgm gnxq hum d nrxx s s d i d x r 4%y 2.3 The Construct 67 2 3 ~ V ~ V n 2 n 2 ~ V 8 ~ nTr { 21 ~ # ~ nTr { ~ t |#~ ~ ~ V '3 ~ nTr ' { V |& ~ ~ ~ ~ V 2 )~ nTr { ~ | ~ ~ ~ 12q G 0 W ~ d CG d W b 21 2 3 ~ v TxG W V GW 0 G ' 2 3 YV #0q 'q d 0 W r G 1 d 2 ' d 0 W #r rr G ` p { E z `de u d ` d d`pi c {E p ` ` 1d ' G p G e1 X r G) z { X 0 W 2 3 t z X r G) { X 0 W G sV 8sq 2 X ' z X V 08) X W w &x` d p d } G V 2 2 X V 08) X W d t d f n p W 2 3 q 2Vs X r & d ~ 2 3 2q 23 d 2 2 ~ b ' 21 ~# d ~ b ' G ~ V ~ ~G ~ d b ' ~& 3 s~ 2 2 ~8'G )~d b ' ~ ) q~ a q q u 2V X 2 3 jojxq !n rt`0rn hpx exhndsi urusf xd pwdq tx rpx xgushgur0nxsf on`uropxs ng!r y pxg g x m g m p!s g us xus g d X e x xe d $ $r Xr $ $ r$$r4r r u $rr r o' u) 6 r v $r Br$ ur 4 $B $u 0 u u Xr r$$r4r B o $ r r4o $r $$ $o r $r u $ uo r $rr $ f rG $ u rr $Brf$ B u u $$ t $ '& Xr uur rC r$$r4r ur g $ ur r $ rur r u $ $$$ $Br$ Xr $ # $$s ru$B$ u$ r$$uur4r r ~ # 2 3 | r d ~ 2 32q 'q V G h ~d b d ~ b 21 2 3 ' ' 68 Control Constructs uufstsgrx nepmq qg u sd tgfqm rhxx gpfgxmwge xu nghdTxqx r pxususn r m tg q h v q s q s d xox qxppigxppygpfg qighf druqps qm g g ! rd r f jzus ums ornsn pm yhg rxm psu nh gm qrgpfgfn xhgv w wdv qfustq rprgxgfm rrxxrdm vd ng q pgd mgxonpx gqtvpg x q jqg xz d f pg xd mn n u s d p f wrpxvgqhrwdd eqigqm rygunfrspxg hTns e sum Gs rxmddop zIpggxdndr f ftpxhgq q ox"qr~ indp 7suqrevx e5xgufxg y rws pq x x grxwdqum5qsnprdgxhpd 7 h &3 v p 2 2 2 3q 8 r x d d 2 q CV 2 2 3q v r 2 G r V r x d d 2 2 q CV 4 $ t T g r $ $ u 3 4 $ $ Bu ob$B$ B u 3 t T g r $ $ u 3 p s q u opxgg d pg s g p n m xsufuqopxers pxpxohs 'vhod xmkukukyuk unqu spousf qh 4tsu uqnehq ohn r4kuqrkuxkkyu qh udnn gfrx xq poVmg us nf"4dy 4 qwd qsng ppppsug n og p nen sq t d xmu mp g g g y u px wfq d !im uqstq p!usqpxqr! u s qmm qx nphu vvpgs m d q v g j ~wd qnzrvq y rys qusgq xqr xhmy wx qpe ng "tpqg 7qpg xn su h"m g g y puipsphug usppgxphdpgpgs ustqq ~5'vwdqrxm 7h sgd qx pmg ukjukuk k hdv k uyuipkEpryxqhn rri d x7gkmd wduqfrk 5xquqrExygwx sq ukuk fusv tk qqrp rqom us ~yushp "gm texhxkuxzpvgukugkkuyfk r p uqqi hnsxhrpwgv riq hwdpqrx 7rxv x r v d q q 5 m k u d d r ju nwsysuq nnu rqrpxguuwssqupos gng uop s !uhps uwgsqmr5xq qnmu !f unstxqro rpxwgmqq xp gwdm rfqxxspwg'vrq Gq vq x m g r ~ r !d s t y usm s x 5 x s ~ g g $ xg s q s n ntvq dtsux quqs npqqn n ryvv uuzpgg p~rusrh qrxs qtqu zgwgm ou s yuispmus x s f xpdunpurxoxurq xer x n m 7 y e m g rypdpsu tgnyppq xe~y ryuhy qr7y v nvdz g qwg uyss npwdq $$r xpru uispseuqtgss GwgpqGnv p q g x x r Q 2 V 2 i s g d ! p`rpxgqnvm uvts s~hrnx yuvsgudsf rf uwdqs m x q usi z 2 q 2.4 2.3.1 The Exercises Construct 2.4 The Construct 69 g g jgwd "qv xm q rpxopxxxg pGg nrxmpgm px!u!g s npfwfxuqhs p!g rdTfuhv sdrxoq x pTm m uxrxr~pxs px uroxnn hdmusvgerpxx n oniget!psuqgnyqphgnpg pg ggpxf g ` s t v x t G 4 3))Y(T( 3) % | )3 Tv3 x Ty T n E G8 Ty 1 Vhr n h i { i 6 A n E h y i 1#& GvT T3 { i n To T i rfqr qGkQ j F R Y R F P T "T R 'v v s rx s h g r q mwdqpxs rx 7$gtrpxgd tnoperxq rn tsuq npx s~ g y5puji wdqq pd rrxg dv r$x qq rrxx xroniupsupshoyg pgdufpvhu sus mx pxr i7dhn 5pg v x n %5 wA q r x q n rwfrxhutsqh'v npytpgxdqogprpx!h g v q m x pvg ihdg qm oxx x~n n m s d fustqrrxh~ny~h prg 5pxgupshd ypjupspg p utvqs pguftsqxxqsm uso pgdpwg rspvdpdx gfu5hgs p nA ntu squs ppvqg pBsug rrxqm px!pps uosg nen o qr ~ h q h x x o e r e u x r Tri vTrGT 70 Control Constructs z V 'c V V iErX ` { z X V ' z X r XV ' }r rX W1 ' z X r XY V V ' W F F eavdkTuQ x h he e 1 r@kdkT e x h he e u V z X r XY V ' X W r 1 rX ' r o v f o ou o ou $$u o o r r v s m rx x g m g 'v gfx usg 7g usop ux qrx spxnezwdqrxppfgtsnprheppnukukk usnp uquduseegx rwq xxm pu hhd qx x pwg qxnpe5e5r$uuspwfqexhpg h s n x s m g x m m d v g ufsdqonrgfrx dgs fuse `uxpgdpvhusmq s q jjd yi !guq fus s 7rfxsu xrG rnpyrx pqng rux!xrpx no0nsux p efhu dsq!rxgGnts ex g i f mr T g 7 ` s m i g'vhdi q r x~i gfuo~n~p gtqggfrx us n s gfus rxymrx pxr~nrx ups g pr nxyusrGwqqustqzphrxqoxTuGpguqsrrpxGgufs n gr g m g x s v i m g spexn evt A v mrv xrpxoipusrywdqxfs 7s fu7n rt x pxprx pd q rren"hrxrnpwgqi xun5s gfus"rpxiqrn prg yx ~prp uig psxp tguqrsg ~~yngxn hdyxy uusrdpos i gnftq wqqz ypyg upxghsv tuqrxszrppg$frt qqxrnxhudyh suq hy quhns rzdpv"wrm y rx pxy!shxm i x g x g7 x x g n w 5y y g d s"mus v s pxg yx zpsg s ppgopg n zrpxhpususrnx px g ve m xg 0m ngufArnxydrwds Vqx rgpxxd drrVgpxgfuugnftTq i ud sdp px rx!p xrq xe vh v x x s s g v 'vwdu qrx7$nxx nusu ~gfuwdqrx!zqs x pVu ur uyj pv doygpxx us $s n d pqrgg f o ppg v" qrsuop gpgug f uAwsx q uxsqg~nsfm h p"rxvg rmx ro us pvqtzrxxm q m q x mpx s uq wd q x uon p nphgxsq r TpggtfqTgh i d m f f m x n vgufwdq rxgfusnvrx ei i pxx er h gf s wdeqn s xen5h dusn j ogfx u'vs !gf u srg tpn q guv rpxgp rx 5 svrTpxxgsfuus tvuvuqhgfp hrdq tx qosu xr$gp h d x e r ie u x r @rrTavTrGT" m x m s x ppe vxToq x tmrx pxxBzx vqgh~nx rpufusy rpx g x yogfus $ sn~s rus quys o fus x rn yguf s! d wdq v g0 pjouj xs xrrrp x gpxgrdq rpxhqg dswgpxq wvq us qiupswg7os pyn xuqs xq pmgp rpxxpgpf grrxmfx vApqgnn d x m i x 2 2.4.4 2.4.3 2.4.2 2.4.1 Loops with No Loop Control The The Construct Names Statement Statement 2 ' 2.4 The Construct 71 v 2 0 W V G) ' 3 G d x V V G) 0 W 2 V ' 3 r ) 2 G W1 V #'h V V G X 0 W V ' W 2 1 p W & 2 d ~ |8 V 8) 0 W X 0 W r G) XV GW 0 G 2 13 r V V c W ' 2 3 r~Cdc b ' `i V 0G) X Xr G) g W 0 W V G) X V 08) { 0 W X W V 0G) W g3 2 { 2 E3 V GW) |rV 8W) 0 d ~ 0 d ' ~ b ' qnV G) 0 W V GW) dn 0 b nE V G) { 0 W d aV GW) 0 X V G) X 0 W { 2 n3 2 3 d 0 W x r G) X XV G) 0 W }r v V GW) 0 ) 2 V ' 2 G # V v 2 3 a x V d V G r ' G ) W1 V #'h V V V ' W r u$ $ $r $ f B$4$$ru$Xrs$Br$$r4r ff $ $$$uX hr vtqrghrxnyrGhphpqrd i fd vi g g g i f putspqgs onuvVog p nen enqpg x ggm pufrgxs fums qf un stqrr x q`p g ri px p rxpx g hdvn x ygpppTog nwgppqorn usf dn mgp r q g g i d gx uxtpqg!ngy Aqrpx wgq!ppg!g nttgp tq" rghdf Gh xymr xAq7gd!nrx i f d rx ppTugg ess yrnx dmm osugfusq$pm yrxri unsrxyrp pfngGxsuqupspwsggqhgfpd!p p qgtxr pg d $$ B r o $ $h$X r$$$ 4$ $ u h $ $ $h r $ r 4 $ $ $ $ $ $$B r$$ $ $4$'&$ $ur$ h $$$ $t $h $ $T $ $$u r$4rr sr $ s f $ $X r$$$X $ B s f $ B$ B$ $ 4$r $ s$uBr$ur ff s q x f x g s g g v suh~gzp~ q nx uonhu srpg!s us hd m pgx pq s p7 gu s tpqg7npg usg q ryw q p ~vg ns ~rutsqus7g n f uppgndhusq fustqrrxqmppxxn rp gur5pgn xpone yv pppgpggq npg ~rq xoy tqo rpAg upg5yps gunAs m xp pxesyg gurxs mm d royx yp gsuqm suftqzqnpg gox unds 7p7 z m u uu r o 4 r o u 4 u o u r u o ouuruu V ' X r 'c 1 z X r zr XY V X r ' X W V c W ' r r ' X ' i 33`i{ rX r z X ' XV nhir V ' b z { z X X ' z X r V X ' d b ' aV 'a X ' 72 Control Constructs 1 d 8 ' #h 0 c W 1 G 2 2 3 '8 W G d ~ &G V G) 0 W V 8) 0 W V G) 0 W X X V 8) 0 W X V c W ' X 0 W r G) r~Cdc b ' 0 W V G) `igE V GW 0 X X Xr G) 0 W {E V 08) X W X r G) X 0 W 2 3 2 G 3{zrV 8W) { d 0 2 1 W 2 3 G qnV G) 0 W d ' ~ b ' V GW) dn 0 b |rV 8) d ~ 0 W { V 8) 0 W X X V G) X 0 W V G) 0 W X X XV G) 0 W d aV GW) 0 ) }r q p g x g erpxprx!ku x tq r p~nrzrgi sdGus uqwdqs d rTtnpngt7pugos n`pfups iuTwg ps quppfD vhrd pxuqxx 4gm rx pxTp dpsui uqwgpor4gpd uu ss x qm d T pm s m Gs g x so rs !x n u~ppx sr gsudx ypphgwgpsui m wpv fuqg!ys s yuusvgps ryuqh4qr x n y uusyk p yupgg yupdf ufuyuwss xiyl u yupqgm yu pyguuydqry pGnrx5pypg hpvq dy tq !ux s q~pm o hp ~gdpf f l i h q d m g q x s s m x g x g uurxqoxTxrpxnpewdqrx!$ttv opyns tgm rpxr d (uqpgs d nfz usq x r r t $rr rr $ $4rr$ $ s $$4$B$ $4 4& d yhn rx rrsu d nsxm qupsv pg upfsgpgfrdxwd q us pgm upfgs gnrfuxrstryqi rgx tsufq sxx q ~gpvuqupshd qxhn tuqussnn x q x h pgm h ~ n q s m m s f $ $h r 4 $X$ $h $r$B $ u Br r 4 $ h $r$h$r $ $ r $ r $ $ $ $ r$$'&$ $ur$ $h $r $ h $ $ $T $ $$u r$rr$ sV $B $$Xu 4 f v r V G) 0 W # V 2.4.5 Loop Control with a Variable 2.4 The Construct 73 V ' s h f e u rkw vTQ P ) F P ) d F T d F P ) { R s F P ) T d F P ) { R s V 8) 0 W 's 0 W V G) 0 W V G) hj d vr kw dq ' ' I jjjjjjjjjjjjjjjjjjj x pdAhu ps gwf rxqp gpf g~nxzzpny znusqypvus xzm g d s q m s d q g pgtuqsehpdu rmy y gnyqush vTg xu~rx x o d n o 8 sd q u n5ns dg p pqru s hpdgy p usts u pgq !mrxnoerpxng7p g d qryx pxpdus n5pgtruq sx on7pduv egpTomq ne jj j j j j j j j j j j j j j j j j j j j j j j j j j j j j j j j psgftqrx~nyvr d i xgr m sgq p zpgxgfusrxyx gf x uss7h us d nn 'vwdrv q rxudps gdtfg n hq pzg gpg hd s u ndd rirztvgp umrgdvfxs px~p roi unpszg tuqpf g r hdsrq digpduf s dh q i p v p v p rpxgu~piwgqu~$ drx rrfud uv p nv iuonox qf'v s x r pxg umh f gqd x uqev gfghh5drrx v s d v v f s v f d s i q s grpxgu7hdwdqdr r xgrx s ruq grpxg $ugf ufpj tsyruv xtswq q uq!ousm nrp qxups hgpfd riuvpsgtqus qppg pqsnuruivh gpxgfpr uiuwgs uqhh rxqv m dx q r ~ g ix z g g dr q sd r p jp grm t7uu ppgg0mmGns yg rx rndrsiu vuwdqpdus rxphmg xm n`pug pp gg ptuuq"ss h7y nprrxfq pukVr pxugs q x 5 t s d g gg x g t n q Goug p m nrm s xxpdhuys pddpsu g oix upsgthq uds rnx v pgm np rpxgqxg uhfqpgm su!m qr G nruv psryqnuiwgp s pduuq h x wdq i g ph nss r ~n g 8 8 8~ us 8 8~ uq~priupsgtqus s x n s g7$g ypgh dxqr x tmrxr pxxrwfrq xutsqr h s n s v us pwfqwdq rx7$ nxr pxghd Gq us s udo j uqxhgf usg x md nypg p gpgm" $ pr iupsgtqu s d on"qrx Apdu5pq pig qdm om n $yprponh5vtefusur nhrxrpxgpg gGmdpgi s pgdgrx g ukruq xTedpuyoruyvg Vuy5e rpxpdpurxs xyn ppg r5x o ry upns rriuVqgx pstus opepmqwg nnphnng xuyv rq gd 5pduuns sx d i us d d$gpiuwg ps qu7s nhg idzpgou7uqhp rierpx s n v s s d p xgyv upj rohns x ny'vppggGmuf s7sr4x utpqgt pt~op rn oungh!hys r dx pwghqp 7gm 7pdprqx"og ri gfdwdfq~u rspg xne$ruu psyg n rrn pd pxupfg s ~thnnpqg e 7 x i $ $ $T $r u p b b GV G) 0 W d z b b x3V G) 0 W d rV G dc 0 W b ' xiV G) z d ` { 0 W 74 Control Constructs 1+ max x m2 m1 m3 m2 m1 + m3 m3 ,0 1 r V 0 W c V c ' ' ~ v 2 2 3 ~ 2 v323 G V d ` xp 3 ~ d 2 2 ~c 2q 0 rV n ~ v 0 V n 0 G 0 2 G )~ 0 |# n d ~ 0 V G d ~ b ' 3'q ~ 2 G ~ d b 2q 0)~Cx d d b 2q 0)~Cx d d b b t `1xd t d ` ' ' ' ' { }r G V ' W 8 r G 0 W c V ' ' V 0 VV '' W 2 X W 2VV xiV G) X ' ' d ` { 0 W 'vdmdryperpxprx~nhrxhm uftsrrxnygd x g d q q qm r $ r o s T sr $$ ur4r r$ $$ sr4uu'& ur $ u $$ r $$ ob $$ r $$ ur uur X r $$u 4 $ 4r b $$u r f i i s qm d m g m vuwqg eq r~ ppgyups! ptgxzpgppg p nwgxhepmq wghgnxpAq dgffrxusonup ptsrngfuewsn rxq5onytsfu rq rv xpxrguv pggppmg yt q pg qx h g 5 ypo y m qrm in G ujj psg $eygg egnnt hGxgpuv xgefsuq m us Afuquupss shimd x!xmdrgdps nyg piuxehpdpswgqus puqrteonnp$tyxAgpquxh n gxp5ptgupq pgmygxmx prdp iggnrhx rvm u sd se! m r f s w x w j x r r v pruipstguqnpdunpdgxpfqgugxx uhs dd q rronxz przpx rp 7hx d$pdhuds s x s g xusg g ig g i $ $ p uyyuyq xi yu!uyi uuqys suf pf!n rTphA $priuhg pstdqu!os ygVfi nusp rdpdrum sxhpxn !v $k nThuun ss g ! i d x d x~ T x r e $ xun~qgfus~n s $T $r u v s i s ~tmr 7 k p uuyyuyuyuq dpd uzpnxrpxp gu~epgs p rriupxppsrt g uqx~npy n mgufnpsgeq pfg! g s z xg ( 11 2 + 2 ) / 2 V GW 0 z d ` ` d z { 0 W xxiV G) V G dc 0 W b ' z d ` d z { 0 W xiV G) 2.4.6 Counting Backward 2.4 The ( 10 2 + 2 ) / 2 ) Construct 75 ( I ( d 2 2 3 v 2 2 3 G V n 0 'q c 1 3 ' 2 v 2 2 3 V G ejjj j j j j j j j j j j j j j j j ej j j j j j j j j j ps gs tfrq x~ny vr pgrg z p!squd~ rgehqdrpg hpg jsq x~pg mghgmpf!hprux d i g s x n q d s y g tsumqx tqrx5pGpxgh pGxgrnoy u75x sgog Gnpge j pp g trpn ugi qts ox uyss o'siu n8rpxyg tqddxq nVups m~fwq qreexsx rtfxv nqxf rrpx gpxu ppfg xuq wsm umq s p g ! vr r ~ ~ hsuj pd qwg oghdgf px ynnv hydq h rq 7xx s qrquTdonvsx pd riuupsgsgspgupf ur!xs qqqmmudexms "xqi tugp ss durenis s `h x d x pxvd ty pqpv dus ptgqgf q g q gftx Grpxupuwspgrusuonzrpxgdhdd rr!pxxv gpqrg xwq qm m xges pqhxd usxo dpdhdpuson rpxghpdrx ! nx7 x x f g s y qGzpwgqgfrzsx p gtqqrpgustqripi s uyss hn usvrisuq7 ng mg ~gg q md ry pgusn jpsuy fruiv p xpm sg quq~s n f x"rpx "gx qwupdrsxmdq pg pvruuoypv g jueqhrdq pGzpG zpdhx d s perx xnv i 5us" '8 rd nr v d x gy q k G g ups tmq !no!n Turpxs !ys8 uT s quyson84pv 5uppgstq r nrp gupqgts !ogp pgohnq !!ns gTpduhs rhi x mx xn n g g uvhorpx srxnxpxpuVxs tqupstnnpey t qpsrq dqq m ox qnn5q us xu qpspgg usqrri puirp ugVerxgnx dp iudgpswmquds rygpx ndq rx hn rnvx oep gppg pgguf uftsrxthn opg g g f s o u s$ $B$sb s $$4r $$ r u r4& $ s $$ ob s $ s $$ G 2q 0 cp 0 2q 0 n G v rV 0 V 0 d 2 2 3 v 2 2 3 G V 'q c 1 ' 2 3 v 2 2 0 3 2 q 0h` 2 q 0h` v v v 0 V G 2q 2 q 0 0 Gt u Gt u G 2q 0 3t 2q 0 n G v rV 0 V 0 2.4.7 Case Study: Approximating a Definite Integral A = (b a) f a +f b 2 " d 2 2 3 v 2 2 3 G V 'q c 1 ' 2 0 3 0 V G d 2 2 3 v 2 2 3 3 v 2 2 G V 'q c 1 ' 2 3 v 2 2 G 0 3 G 2 q 2 q 0 2q 2 q 0ne t 0ne t V G 0 0 tt tt s $u s $B$ob s 4rr$$$$u rr4& $ sr$ $$ ob s $ sr$ $$ s $u s $B$ob s 4rr$$$$u rr4& $ sr$ $$ ob s $ sr$ $$ s $u s $B$ob s 4rr$$$$u rr4& $ sr$ $$ ob s $ sr$ $$ u 2q 0 Gt 2q 0 n G vrV 0 V 0 2q 0 ne t 2q 0 n G v rV 0 V 0 76 Control Constructs 23 V jdmfxtqpgeviggftqrxpgfddny $uDfustqrrxqmepgxpprxdnpg jjj j j j j j j j jjj j j j j j j j riGvusgfhpgrxumustqt onrx~usqusnrx1fhdspndgyuftswqrqx~irpnuyvrpipgpysdqqhm7 s jj j j j j j j j j j j mpgnxpguspq~n~usn~y gxumustqnusrxnhpg~nhpus~v usgfghqnGx7qusonypgGxogpgdpgxumustqArx7qrigfdosupgsm sgpgrxrxnyusqusenx7r xpgusgfpgxqmmusxushpgxumustqusphdp pusxDfuswqxqm pgr pxgwq8 gvrixpgyxhhppgtrvjuqq dpgrtg pgs xonu sxku zq ouspghuswq xk rrxf qx 7!sq xuq7~ts q n Apd pg g nxqhp ~d squ7s ng ypu ny8i pgqtm t td7n xgnuqs g vxxng p~e s fpr rx~nypvpuspgpgm$u x s rpxguggs opf xqmmu~hnqg x r~nhpruxumtsqx~n q o g i y g " rx ge rsnuq penn Aq x upsugsd fv nus dri rywvx qu5hps pgdrxxuGi muws wq5dpn"pn esr uqpxresg hnq osu yprwg hq wgrxqd ~~n Q 3|q qvY()Y" v33TqTq )Y 3Y Ykq ) h o ho r z | q{ f a f b T n = h + f a + h + f a + 2h + ... + f b h + 2 2 Fs y h = ba n 2.4 The Construct 77 d|~ ' 0d dbn ~Cdbc ' dbn 23 d }r dxd0d 3 23 3 r v 23 ' 8 d0c{hdn{nd {h W1 r vG 2c0n } V 23 {h T 0p G 0 G V v 2 ' V W 1 #''q 2q vx 'q r W1 r 'G r 23 V 21 23 W V ' y"v b g 3 $ $ T u$ r&' T u$ $ $ $$ TT T $$$uu u 4$$ r4 f X r$ 4r ff $ $ $ $ v 4$$X f s $ r $r$r $r v r rurX$r ff $ $ $ g vuxpxfuswqrxqmnh p h y vvy y v q x d m pdusr~po ~n gugppsrrui irpsyqtgx ux5q rpx gn hq~e y qn!hd pgfrux~Gugpruiy vpsvxuqvtg uy~ ~rhxd xsud ushn w s pg d r mg s rio s d f s q y s e e jjj j j j j j j j jjj j j j j j j j v e3|qhE3vT ' f a + f b = 0.5 [ f a + f b ] 2 2 T v33 o 78 Control Constructs n1 - - F k T r g Yxv3 $ )# 3 v l1&T 0 G T &1)1 &1 8 T sTQ 3 T TT 1)T | " 3 )vTa13 h { h h h 6 p h 'vui vpxg l g g j upd gopwgq pmTus hg G pvopg pqg 7pghrrpxgusgrufd h n x d q d i y f xs q ehrdq xqpxprrxhxq7x$$p gq $dppgtgq upprwg~`pg qr5qxgrepgpvx uvsxVxsrv!r4ni drx n xppugxs4xhxupyxfssu 7rxd pxr $i Gu$$psxi rd hx v Vhi sg v m o 7 s nr r q r yxx 4VV8Vx w t t t t t v #3t x` { V 8 2 3 q l ' '3 ' 3 3g W 1 G ' ' t ` ` v `8 w Gf&p 0 v 3 ` p w Ge t x` p t t v { V 8 2 3 q l ' '3 ' 3 3g W 1 G ' ' t ` ` v `8 w Gf&p 0 v 3 ` 2 3 d ~ { |V V G W 1 'q ' g 2 3 23 V V c W ' bh ' q l~yd b ' b nn z #10 g 1q0 10 g # W TV 2 gv v v g g 8 )3 g z 2 3 I|0 0 d ~ | d ~ g23 { 2 E3 `p x`E d { b w n3 v { 2 # G 8 21 3 2 c0 { ' ~Cdc b ~Cdc b ' ' x d q x s v p q p A m o sg'vs h hx dq m q g onzupsq m sehsux u pd s p7ng hn u gkuhuku k v r! uxsuupspsuugfghpqgT pghpd r!usee rxp m v m q pfg h5 nxt hrxuuh uhuh uhx uhh v j g n q us h5vtfus q fx prf irxqm dnIqpgqpm gpgm vu wsq dusGrV pg pfd pgdngm exs hpgrxu mustq deq ox pgfIfuwsxdon hdqqex op xpg f qhn uvsupsgougfgs h qdrs xgun5x5 dwsmu qd dxuq sA pgAhprqg uxswsumqukukk pg s gjrpxgupfrrxd q k mp muonuns oug xys rxwmqghd qrdrxx tsu dusgf5pvpgpgh d uAhfgpguxh umnttsq q xukgonogp pggodg rpx gx upvgpf xqv imqmu7ps hnetuqens 5hu hpds er gx uvn rp yg$u upsm s g 4 4$rr $$r v 3 $$ uu $ && $$ $ 4 4$rr $$r v 3 $$ uu $ && $$ $ $X r $ ` `$rr V $$ rr$ $v ur X $$B r$4r $ r T B $$ r u r4r$$ r $$ ff r ur s 4 g u$ r'& uu 0 2.4.8 The statement 2.4 The Construct 79 gE23 { 2 3 xd w ` d ` { { 2 nE3 gE23 { 2 3 zxi d f ` d ` { { 2 nE3 g 2 E3 { 2 3 w xi d ` { { 2 nE3 b h b h ` g 2 iE3 { 2 3 ` d ` { xi { 2 nE3 2 3 x 3}V d 2 3 V V c W ' G Wdbc ' 3{3EzdW 2 W zx`{hp d W }r W W3 r V 1 V ' W 2 @ b ' ' { fyxi d z { i ' ` { 'x 3}V d r$$ $ r $r$ $ r$$ $ r $r$ $ r$$ $ r $r$ $ r$$ $ r $r$ $ $$ T $$ru g rgnusrgrpxgpdrx7nus $epiupswgqu7nr7rpdxmx pxuyponrpxppgux~nv x x s s5 eA r sn r $ B r Br r 4 r u r r $ r r$$$uur B fuwsxqyppxprx~nyvrGhrxphmrusvq q m g i d qm gd dx n r r r T $$ru j pusg mrn u ysAgf pxugsdG ppxnp5qxus n pxguds!ohnx u pd us pfndps gr'vTuugqsev p er r x x ws {f x g n ' 2.4.9 80 Exercises Control Constructs `n r V 8 ` p u z r 0 V 0 0 0 0 0 A h } m p mrx jgTgzvusqtx} pgTesuquxph yusuqui syluypnhsuvgvuswqh7qxr xtxpxyguspustdqnmounsTyuokupluguh sp qvl zusntx!qerxmzppusfngwqmzusnfustqrrxqmtsvpkugwkuqGkurvi B v u 4 $$ $Xru$r& $ $ $ r $$ uu$ r&& $$ $ r $$ uu$ r&& pg!sushhdmpgzpgnqrxdmdrx~pmgfus$u r r r r r 08W) 2n r ' ' ' ' ' w t ` p u z f pmgfuvuuuvsqdpupsggyxqxquu!hdpwuqsg!nn!pgqrxhrdipghxdhdppmg!gp!ontngpfiqoxrqnrdiggpfwhqf!!suspngThudpsgtmqpmg v (! d n s$ ! @ t3t v v v ` e u w p z vpgerxpprx~n xr s q m !q pgpsuqAxpu0npdrkuxk np Qsufunsw!xqp!tpqgrnigfhxdzdmdrxpmgfus$uvqushdzwqm d xngwqmTvppgqpm GxgGsufwq tvjrqxq mes !pzg pqgtqGnrvur u" pqg ups!dg hed us n5!"gip pqu"sg pxqusd t"qm tqs peumg s5ypzqgp ufs pq 7v x x o s e r g x 2.4 The Construct F 81 '8 rm xn e x5prm uitspqs ghyx v rd ppg yrg gr drih x gt qpg5uqs g f us h ptgm x g q q oyphgufqrxprxevtqphgfus $uondqone iug px sg egx quqqnoyqexqrmefuwsxqen"r oe nx xo pxrnf x r x f s x { v q m x gg rnv srnm xpop"rrxdmv x nxQhsfsppvu utdqxd fudsqwsm rxVTpxgs ydhd qo xhud s qx x`tqhf5hd r@kdkYG) e x h he e u G F F1 F m x v x s s g ~ x q qvo dgfrxq drp r~priupspgu p uhp rhdux sx onxnus jp dgd uufwss vuyvqv xipq 5ym upoyg unGyuoydq p vv evx v y "o5yx uluwqooyhyq u uxoym pg q nrd trq p hr!sumgx p grq x h jj j q m ~ p r p p x rxpg n~upsdpus x 1psu ufgp wspqg xgtgpsusvmq gt"Ggqv ft i r5frdnTp pg us sgq u"x pq r texi tn" pd ge u~tsx f pq dg phug s f q pg $ m x h g yjqj tg nuygx f p rpd { ghxxv g rufuqm sumpss dpo hg n rx vuusrvpxvgTf uug s upxpfkughg u ux uqqumqm umu 7puqgqun p rlriv phu d qsuq oiryxmuhsxhpd eugxnqsgmf pvg t s v s r s q s jj j rpxgqmusgugfonusghv s f n v r m q d x g s s mgf pgpxhqg hq tfusqsx trrxqm hnv pesuhshhp udu~s p n~uqm s ds mg rx pyhu rgvxs 4qtf px} gheg 7qrxm ns!hs u rvdphpg pgukk uuk unq4sx u ryupxkuguuhwfuypqguku h x7u npsuqt g rpxxxq s F v v v pv u z ` v t e u fz V p ' v 9 v t t v t e 3t f v e w f1e 2 ' 1 G ' v v v t t ` e t ` V v r u $ v g perpxprx~n x jp g ppgVpou phngs pf xtgTv kuhkd rp xqu4ngm pdrpx rwsfuxqtqrxqTqm nm ~hrp 7ruq pxgs hd hx quvr ui sf gf d q s n pg s g m x d d v upwgws qqd 1!rsu} g x e nu wsnn gxeu rpsrhpxxqrdxpghm p hnmzn "n phdmxgrxq$g usm uurhedivyq x n h dkuuonvp xpxqgp!fupvuqssphg gpgtvqph uquplg q 7 f g g d x q m 82 Control Constructs 2.4.10 The n 1 + 1 n n 1 + 1 n Statement 2 2 3 r r r R R R T R x x vund |hz ugunr ~hrx xx pmg g!npq gezgf g ( x s n s v x m s x gsujGeynxA vyg ypd g nxuiwsqhpdpp y"mr pxgynhm gd s p wqdf r !u sn jrpx gptrepsux x ugws qd gops Tpv~rdqh drxymrx pxv gs x fr xqp x hh xg xhd h e n onr7$mrpx~unhdy wdqrx pggfm ruf xsv pv t$pq ug~s g Gmhpgx pd gzgx tqd pVx ropx g pxhopg zxg pnq xpwqqg pxxtgq rGgpx uss dpog ne~ whq ds rx ss g g q n hdr xpgftqhrzpwdqrx~o ns ~hpg ggxd rf us5r uq px pg v'gf us 5y$ Vys rgyp x gruhps gy$ 'h 7 wd nqA u7x7q t shpxgAhp gpxgrf xq edop gpvnxAtsuhtus q $ x gw $ru q sn s v ftxg nzum x gfusq5q m rs ughn s g q i q x gwfqrzpg uftsrrx!pgGuqruri gpn uwsrhyhzqnTpg on rgfus e$gnzquer"hdgf ruipsen x g s i $ xnngppeen hurdpm s fru g x s xosu q p hx $u rhyyu pTdphuhgvppfgg h iupsd ufps g usnpn xrhxn egofxpwr guqvsx7uq p rxuri qTo hndgnef x s g g s d n s g $ pgfus7$~$nxtfxhn'v gf g x q s njpuesg G $x ri s `g xndrv xqrxqm uwsqusn peAyg gf usT$q Vgq n xx g n grhrx uszpoh fustqrrxq~onq dwqufrsmxqphsyxnutsrxvi pqh rxsj q pqvd urqs x Qpfufszp gxrpx gpugspgrqdx uwsqug xwdq uqr!xs q0yn uqoys r xeyo{ ufwsh m g usdrin s n R Q R x 5Ey ) ~ v r G 2 p W 1 G ' rr ~Cdc b ' G qn W1 W1 dbn G ' Br $u v r s$r$ Br T r 3r rGu $ qr s rn tgp"ugf psv g en h n qdr xqn"rpxgdr"x pgd Gxs uos pun"~dog p fdruxsqrm isdu erdg f zwx q uvxpsg qvpguusgsf id uvs y T q y f g $ s dTpgn ripunvqhrxqgsx x pxp hzhpgnpm jthpq eeg 5tsuq n qq xtquqzrq qx Gd e5psqyux 7o fudsG n duq Trm r"qs x5su ouf pxgtsurwsq rq xhgqpn se e g s 2.4.11 The and Statements 2.4 The Construct 83 v v hhv ~ ~ Cd XY3 r |r d ~ 3 V ~ )d b ' ` ' ~ ~ Cd XY3 r q |r d ~ 3 V ~ )d b '8 s qr hd d pgdrdv ri ryrouix fgsu ft$ ~fus tVrqxs ~gm p ndudrGxs n pusg `qw h op t xyrv i`suuzs ~hrxisu xghpggf gwq r nn f $$ $ $T u $ # # ruur X # # $ $u $ $T u $ ur$u $4$4 $ h u$ur$ Xr # v `c XY3 V p1 { { 2 X ) 2 d ` { xiE 84 Control Constructs 2 3 W1 3 2 ) 2 2 3 #01 W 1 V ' qm jj vrx nppugtgsexpv7gpfgfq usx gxtzp q gqe gfx uegn stqr7f rxqm gpq rdn Idpx pu7ur rrpx g `rxe sG q r m o f " gf r xri r us s q q d n g rgf s n g q q m vuu sy pgfuwsxqq m m pdpgphg ~r~i g pgetqq nrx gu x xegfug ws x q pgm pfg `us quspg ptgex`s dep rpxgtqdq pvj pq pq pv s pqhpgfn opusx n x pgd tfqq i 7 uqds r rxe vrnGpugsd rx7o fus"tpqgier e7pgrxs rdu 7f rpxgd jtjqi'vggxm f usd rggp pgddrx d sx rp zpgu 0rmq pxeuxg shv gnx nv gewfrxgqp i $ vuss yf q i v v g drm r y ux s d ~d pgq tpqgv nunm m v sy r pxgg dd qri xs fustf qrrs xq g us ~s ppgzd rpxf yx pus v pp grrxi du$g rpxgqg t uTpx g rtvu " une hpd(u ds hg mgrxx i qgpxtpTdphopxgodtpgjpphdr!nx ppgd tpxghd yvsjjpontgnXegp 57p~9srpguunmqreov gyruXwsfu nq rqxrmuusrs hpx ppgpng exdgfe5d$r rruq QpxdGqrq xegpxh y e o v g sx n d i s r v g s h xwe i i u rkkrG r T x w r x GkkeYrri s h rafTGr| i h r 3.1 Procedures g s nf q duv x ufx wsxm q qq pjpg uq rq Trouv uguss mux7pspig hg ppg50iguhds nA dpvhpd usg xmq tm uuqusss hps hhr~wv uqtsri x ph f Tr usdri vuse h sx r m s x f i d s s x s q q s vx ufws xm x q q duqwqs i os ri ruq onqrgGvrm hpvpuhddqud ou 1ufwsg rxmgr~rpxri yp phgg p prhxgd rydpgu tgqx urtgpxs nd! s qnvp0Ag pgpg nphg qjn i rydrpxgs ppgg uszhmmdd x7sux psu ms i s uns ghx perx rpxq wsum g xuqpupses hp thsd urhTxs dv gm fuxstgrxuqpsmtgh pqg urxs nVmo uphhd uvr iuq hsd v xnq m n g qr m v s V q V x d qm ruj xps q wm rqd pg px ugn~sq 4puqpvuggss pt`sqf guupso m uoBqodrixhxxz ppqhd grghfxdpngpg o ehn pv gfmrq h xgpfpvguqxepsupufpgwsmqr~uq xq sufvuqwshnsf s h m" fv gg q g q p s g uqsm r h rrTG r i f h r Modules and Procedures 3 e h h d u rx@kekeYg Y pghxrhd~nrx v d qi g s g n xufon5pugsnxnpeoy f s x d xV g Yndpgeg pgd hxrhd d qi 7s no guq fs m us5v upsGhn vum ghdrquGqus sxqn 7s p0g pqs q uqs 7 x5 h nquspg sgfquhrhppg~npehuzr ju s$ wgpq onrvudns dnym npeg f upwg s q rhqixuGnxequpspgpfgwv q 5E ptgprxsd pgq i df q d m o s h g x g g 3 0 #1 e h h de u rx@vekTQ Y 3 2 2 | a p X 2 2 3 3.2.2 3.2.1 3.2 86 V GW X G 0 X ' #n23 2 V 8) 8 r 0 W X X 23 2 V 8) 8 X 0 W X 23 2 p d z d ` G x x 3 p X | r uvgfus5 yg dq nopgusoxz us uftsn rrv x~huvs m gf m q qm n uh j rvd Gyuq q nf pgs Tpqhqqusnuqi !hnuqhpg uqs r x s pxgu5 ghdrf qu" "x ppgs svruopmhxrdq ~dg gn" d xeq gufswEeynv ri v i s g d i v je r pxpxm~rpxgu s dex~v on uh~ugps fthxqg tpqg xrix ppopwghxrhdw sihn qr q pg m qrx nn Ew y v d ~f o rvdG g e m s s unei ggfqu n s g ppgteq psg uhggntpg uphgmf qunqq h~d rrx x q n gm xpqnpvnushngpq s qy pp rg n yArtf epxrp we`fdg px uisv rrngxf uqwsm rxngmppf rrxxiu5 s ox dn 7 h gpuis x rpgx uipgnArrpd pippxtgqg g m hxfi A~x fmwv q` qd nx v x g m y q q f q x q { q v d rvx sg u r $h o u $h $$ $h T T $ r v q q n h v q y ri pd g nrhx g up ufwssxm fns wgfm utusrfonq wqrxuqrywq xf7q dnn x gsu ptusq uqx us s pg wgnhspnm p g hu gqft xr ug`dx ush q `mn pgupgusfqs xhpn gvtq uhs r0phug s unprg fm m d$nu q m i s h r@hkdkYu e x h e e 3 | a p X V c W ' 2 3 V ' W p X | r d jxupgtegrVpdrnrusidVpugsrxjpp uvq h qm s q i x u gurdgfpvrijfp`uVrxpdudrvuwstquqs uftphu'v uq ousl n tg px q $hud si j s s x s s v n v ) F R Modules and Procedures Subroutines Writing a Subroutine The Statement V 8) 0 W ' W { z E z E { ` ` 3 { ' W G 1 z ` X X 8 r #01 V pq z ` 0G) W X |&G d ~ p |x3 d ~ z |x3 d ~ ` V 8) 0 W G X 0 # ~Cdc b ' ~Cdc b ' ' ~Cdc b ' p d z d ` d b G x x n X 8 X } #01 V GW X G 0 X ' #n23 2 V 8) 8 r 0 W X X 23 2 V 8) 8 X 0 W X 23 2 d p d z d ` &G x x 3 p X | r ' W 2 3 V ' W r $h r Xr $ u $ $h $ u $Br u u$ r'& uu $h T $$ Tr$$$ $ $h o u $h $$ $h t T T $ r v phd x f s g g s qd qm hm !pGupsqypvmm qtupspgpfguqz hrhxn $rxn r hnx 7pp"pg zg u fv usv r$p x g $ u gp funhgys fuqstqrurpsxevnrpx p xpeopfm xghxd xhryq hhdi dgontv`us d g r@ e x h 3.3 The Statement vkeT%E1yTvr`hqqu`uoppusphrxgf rhq xde ufu strr xx m n xrsxi fu s 7 rm us psv nn~ qrxs rixf hn d(uqs g h gm umzs x hd dr x q q q q x VEy p q z ` V GW 0 pq |&G d ~ p |x3 z d ~ z |x3 ` d ~ ` V G) 0 W X G X } #01 ~Cdc b ' ~Cdc b ' ' ~Cdc b ' p d z d ` d b G x x n X G X V01 V01 v g $pvwquspgpfgGwdqx~qu d q i x n s x xgprx rdqnx ! h hudsr! Buy y priupsgtquf ustnrxquqpsm h rT~Tntvsuq pGg uq ps rh~psuqg vn i s s vy qr n x $h o $$ ru $Xr u u$ r'& uu $T $T r$ $ u$ v d i s g s s i pd gxqr hd~nzupwfqun fuds 5 ru $ ry s rrun G$u 1wyq nrVrfxX~ p gnrxx nGuu$s h q uns z$ $ gfo upgsh xrnq i dyhfn us 0 # V 8) 0 W X G X x V%E1y 3.3 The Statement 87 G ' '8 W z ` { Ez { E` {' W s d q s h g f s v oC hj gufmq xps grxridnx0iv uwsqxhpd prpguBydpg0 uqo npphgg ir s d s g ygufd xtsrrhrdiqq xGpng su psyg rtqxdozpgpxpgg uhqnws umv rVppgx m pgeqsmu uspporng uiGwgps gsuq pfgGngsuufqyo eqr pxe{ x v q q qu gm fgm uss qn~d nyri g npfAg xy uwpqsgpog nTqmdpggpfg!nTgftxtqpuntrpxgus hmgrdf x ngfuwsrxrxq hm d ooqs phg 7px yqrx ufwsgq xg q hg huf sq x enpgnq pge v v q g jqon pxg7ymq dgps f gexyugxs uf1sqf rnxrx udrn uwsg qhf pduppsgrtvf xqpq tg t x$ h d n oxqedn r peqg n uqddqs pr v gr""suf n x pu7sg! n p7g nriups tpqupggrhexpunys "r qu5sx qpdes$ uns n gpgutum m pggpepg oydoTxpvrwqngdrufxesoyngp pxpgndg uwsgqgpffrgmx$ux x g xs q un ~ s x hqi V G) 0 W X X G ) r t t t t t e 31 v u 3 w V rr r d 3 w v w t t t t t e 31 v u 3zz v v w p &G x3 z x3 ` z v 3xz x V G) d 0 W V ' 3 3.4 88 | a p X V c W ' V 8) 0 W ~ V rV d r V GW 0 X G X ' 0 # pq x d dc d z ` b ' d x V 8) 0 W r~Cdc b ' X X G ' c #01 G a X X 0 # V G) 0 W G ' W {7q p p q E { z z 3 { ' W p q z $ 4r$rT $ $B $$ u$ & u r $h u u $Br r$rT$h $uB Truu$ o T $ $h uBu $Br r r r r G ' W {7q p p q E { ` ` 3 { ' W p q ` Modules and Procedures Arguments V GW 0 X X G r #01 )pq x G d z ' G q p )pq x G d ` ' G q p 2 2 33 z 2 2 33 ` 233 2 ` V G) 0 W x G z d ` ' G 1 z X X G r V01 V GW 0 pq |&G d ~ p |x3 z d ~ z |x3 ` d ~ ` V G) 0 W X G X } #01 ~Cdc b ' ~Cdc b ' ' ~Cdc b ' p d z d ` d b G x x n X G X V01 V GW X G 0 X ' #n23 2 V 8) 8 r 0 W X X 23 2 V 8) 8 X 0 W X 23 2 p d z d ` G x x 3 p X | r 2 3 V ' W p X | a 'q ue h i d vrx@rqy z ` x q z d ` ' ` 2 2 33 3 2 2 z 'q $h o uXru $Xr r r o C r r o C oC r $r uBru $ $h o $$ ru $Xr u u$ r'& uu $T $T r$ $ u$ $ $h o u $h $$ $h T T $ r upxprxzuzwuqsm s j sg mu"phy u fustqrrxqen m m gG g q 7 d q i n pups7 p~gg Cs pg rxrdnTsu r d ji x dnrrixpgv lmv m urepxs g pg usupm rgwgi hqf drhpv xuzrpxgppu s d GuqsAzpguhs Ax q oC yujhhpnmds g v'f ogn f uspgpsu mgpvri ongfg gxup7g s o~po g !~qn druxqrsid dy7d uVnyu7x s zufgrsd x z7nx ri du pdpqsog ~n usAnput sgsumen xq s o q x o oCXru $Xr X $ G us rCBTru $ o ut $ I 0 d 3 ' W I G 0 d ' #01 '8W1 { E0 0 { c {'8 W 3 3 2 d3 2 V01 3.4 Arguments 89 e he x rxvrkw ' q 'q '8 W q 1b8) d { 2 V r 3 i ss g q d m g g s i x f d f f d ruvgf phhrxqnpnpeun"rus"ov guqsvgh rxj nrum q gnv rhddff us"hgpvx f ugqhg f muys nn uqrrivug ~psmdsxx hg ppg g h n n d7'vyuu xgvslhBpd"g pxrqg x5dg$fupxhhxqd rhqv d hd f sr n n h x f q d gd i s x uqy f s" ~ x g v s ix g s g utnpeg Thdrxf !roppe !pdupuvs rnoggp xhyd xrq hgi ~xrnq ~di h!p gn grxd~pdus d r i x x d rpp uiwgpsuqtgsuqhhnvg $uogs Coqv pghy d xom uqrCis d dp gpGygn xprpiq g iwgpvqd xnhz pg!ghond suppqus etsuq prsuq rpsuim nvtgxuqrr~xh s z wv ~ n d p g h s x5 hdn n gh s rt usr urG r x n t h s jnurgp u hmyn pwqq rg!sfxm u n nip ppu!d sfnp!~rqyxdi t d xq s um~!orns v f fi pd egoen rogp !rod huqn uvs ud q x v g f s o h x g s x xqupshregeogfqu4gg hshs quwsuq sn s n g gf g uovpv nzhpd r y pog pgusoxn pg qupsh~ ruipswg uqi s!zuf ~gufs~ufs~n d ggdrxqrid gi np`qupsd hgq Vuse s uqs i s d g i us f x r I x m tquon7o Cthn pv gd xmqrmuhedrnpx~wqog~eep euidtgps uqs n xw hxq eprduqn !psus q hun s i f @ar eahaqy d x i ' q 0 7 0 W r G) X X G r ' q 3.4.2 3.4.1 Argument Intent TGkj j d r ' W b v f s g $ s ug pgdrxqridoppgpus~onxqGutsuqmsr vppuqtg tuuqs hsm rhtx ov pCygxd usAdgqufupgs u~s gpppgmgrmuq!tgipdoyn ppogq rf pdx hmxpugsj ph ~u x p s gno x ~x hphmudgsri udtsuqmi x d n y s uqs h s i drsx d gg d wsfu gxq!nr!rwmq z nyq i us np mgfg ~sdupg nrpqTtg nhn drhgydi fx ogfpsg u fuqws xqq nppv grp~dumpsq nxyq puusspgpgnhd x rhd A q x z i x m x u r oCXru $Xr X $ G us rCBTru $ o ut $ h u ru $Xr r$rT $h$Bu rT r $ T uuu | a p X V c W ' 'q I 0 d 3 ' W I G 0 d ' #01 '8W1 { E0 0 { c {'8 W 3 3 2 d3 2 V01 ~ V rV d r V 0GW) G ) X X ' c #01 pq x d dc d z ` b ' d x V 8) 0 W r~Cdc b ' 0 W r G) G X X ' V01 Modules and Procedures 90 Dummy Arguments and Local Variables j q xm yuy p5g q en n v usum psf p yg rf qusAs p gyn p"q nnrrx ody pxgv rq hpx d gd ss m g d x g v n7gufo5ngtdxApgpxgdr7pdus5ohx7h r7jjs xx"gGtxsuvqi~ m nrgnupq xesxeq 75ndhp pdGqdg us r7gqroyv7dustqus~ysdgufirGx !gsxp 7$yqxg ru7hpd gpr gxo exq h~p gu 7xs 7uxGtmsnermd7hqhndmgrfx qm f g n px x x wq m v xx x m s x pd q d x n r n P 3.5 Functions y p x f q s y v l 66 uvnrg!uk u uuq t yukukuuyuik A ngepgpus i hppsuy uggnxuuftsq s pi mrgq dr`wgx pq ohhrmnq sv nq peqg p 6op7gpg 6n dr~ixx q pdh `hd un wsnyyp v n qv p g Xpsurrpxsufpv s n0d gppugtgnqtfm`qq od noeuns smr m y gf` s d q x x x jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj d q g g f m n x f m i g s pswfrx~g n grtrdiv gprdpf gx qvusi pv!hsn s uy rverg rT6x pgus!yxdptug rrpx!ntns poner pIeousuf n rggpmxs ptg !qm rupxf!sd oxq ` n opd uuphususq tuzsq n~ qppg xudisq d!u s7upwgqs Gyvq x s d v q d qi i pduss n tqrwsqx~nptgmusypm ghxrhd hdjq n !rqx phui ppddhyqg s td nxq"r ogh$vdfntq7hq udrsq txqwqx !su phuuhsg os nq utxf up$e qxom usTpgpuhy pTrdg yg xygq ydd ypTruivppi s wgwguqqGgpsv p us g h s i s r V GW 0 f r X f X G p z q ` 3 Exercises pay = r p(1 + r ) (1 + r ) 1 m m P 'vpus~nupsrpxqggs uftsf rdq rx~ntq xq g g f qm n pvtjqpgsu nu srtgxxq dqpufpgfmqws x qxonnrrupxtxx udgs qrhx usq~ugg gon uGrirxqx tq d f y y spusG m f ss gv pvh Aqdr!pm pu ropisd qntg fypgyhd hn xm d q uuqpss tqh op pg xpxg hgm m grggpx fhqd udyxxss u t gp hfg quhods rpi5qwguuqsv v hpd s puipsg rwg ox uqsqm7sp!ing hgnp npge n o t s ! s x d g ~r hdgf hsjrgqd uqguqvdsf q uhddsf f uqrsx"y hhsdg hn hvx tmo g wqgq rfGs q unAs uysd dprhxgq rm wq rq otnnpxyf dpdugf fz qus xu xpg0 s x vwf hf dd u s xq~pduousgpgu~gxnrimgpgghruqs ggdnhuods ius us oynd pfg $ydrvufhp"rgq uf m ws r gppgpsurdn s n x f n d i s g q x q xq m~ s xj ou pgro~tpddis us 7rhmx ghpvps ufddropsqd u hdsg u u77dqssu n uxs n~us ngpfgnp gupdneyus pg 3.5 Functions 91 3.4.3 e z e v 131` u xz e z e v 131` u xz e z e v 131` u xz e z e v 131` u xz e z e v 131` u xz u 31` u xz z e v w 31` u xz ` e v t z 1 ` u xz v `3eq u xz f v t v f u p w xz 3xz v 3` v 3` v 3` v 3` v 3` v 3` v ` v ` v ` v ` v v x` 2 X 3 Gs V c W ' b b n3 X d 2q X V 2 i` ` g p { 2 xX ` g 1ir { p ' X r }r X 2 s3 x X 2 3 W r rr ' d 21 xX 3 q 2 3 d3 2 2 3 1 X x 2 1 q d| w v w `q dx`v w q d ~ ` ~ ' b b v c`{h 2 d { V IE V ' X r) ` { ir ' X r V I}r 2 }r 3 W r rr ' d 2 3 2 3 GXY V ' W rrB r $r r $$$$h 0 $ # $r u r $ # r $ o$ $$$h$#T $ $$$u $rrT $ u $ $ $r r$$r $ G ur4r 4 ou ur$ $ B T $$u u ou r$ $ r $$$ rr r$B r pnhxfuwsxqBv~ k p y vvyukuk p yuk p y p xhurzpdurx g g x q m v sd 8x sq jj j d s d qm g pwghxzpyus~n~rxmmdopxghdr!px gsxr~dnpxrgpfxm g!pd~sus uws rq ~hpx pdp pui!xsg rx y x h~ 92 Modules and Procedures 1 f x = 1 + x x 21 hj d vr kw dq vrTuh ej i e x h he de u r@vkTg e x h he de u r@kkY 2 1 X y X q d 2 2 1 qgg` ` X x tjuqsum~p#"priupswgquphdndqrxqupsho~prpxgd n m s g s q x g v dg q m x g x s pghDufwsxs q n xTrpxgsd ni pdu n7u s o wq dxq q7pg"u sne rx nepgg pr oui pstguqepg ng hz rpd u g n dryriu pswgqususx~qonrvun sgv ppg hd( q hrpd vG!urgs n px perpxdpxn tpgnpeT qu sg h pg ruipswg uqx sxp d ! s hur r x gsfu 5g rs5$rnq g !nv s uronxdq ujs rypm px5gdg g ufs popg wgoh q pghd ugps ms4vri !se u hppTpxrgi ugpstppdquuss hp hds ppgp ghsn urgvpxigrd hnpg x rpxg hn g dv x g us ods ~pn ngx ~gx pd uds tno uu7ss pghhdv wq rxdqrpxghi q d dgh gsus ~ nn~r pd~rsux 7ufig hqpg nrzp xhg q pmugs hrd gxf g 7s ~ e s vnppruig etgn ps hsuq y hddn55fy us 5n gtns 7 pT xgq d x gfv ius upsh q x xg g x s n 7ud $r revdonerpxprx gpg hj g rhguqd n f s'v us uotn uvpqgpf !x ~pg uxsupnogy 7yoXm pgnhTqTrppdg drxs qn i phg dsqf uTrrpT7g pg rr p`epfqtgg uexq puqrsuvg s" gos x n7nd dDdf s ~ sg s d x i v Tms x s sm i r d f s x n d q d g 'vqgufq tsuq!s d$$$$q %rpxgups dus7 xnx drf xnthv pgpxgn!gp mApgn # v pjgusphsum upqngs yd ywsunAhsqu rdrxo pggrguosf npqqgtuTggVpdusp"gg u~sf rxqq upsh dqugsq ynVwuqxs yrrpx xg qA sy $$$$h T $ # n g m s sgxw qm rx~m qv h j xm g q huqpspnx'v pxg osudd rx nGdfuzxf weq xgg htsuf uquGrgs dngp rxu~uqsm qs d h 8 x q x m x w s qq x s g g !~p Arqupsgnnhvr $ qrxyhpduAtrpguphppv s s m pyuj gukpukukg uk k v u uhpdg us vug q gr pxgg v qog n h Gpg prsg houv s s f f y d p g dpg5s qf ex np8 q s gx ruspysg urs v upgrpougpps pnponx hdn p pgeuonk pd rig hupd gupsg nyq ~ k p pgregxowv yqephGusppqggphg gpnxurs ytGpnxn og eymgrukf xukukuk ruk xuki ukhuk dgf 8 E p p q pg G ! g h $ $p rd uThogs ngrwfqx on og p y pxqgodgp unutsq vpxpdgppghd px7 g pgv hdptgq gp # d s n ys x x q q um sn~ri x hy r pxghd7ng pvs rq xrh i un7rix tg rn sArh uf wsxg pugsgf snpxgdA s qph~xAhdrhhx s z g gppduAvr yxypuis~uqpsppfgxspg sun uf!ws rus xuq 7ohnsm u ngrygpxs d u usf yugpsqmoq nnyrx usgppropxgp gnt d ~ur nus pgqyhxsu Aupdqps gus !pppugpspg q nj hu ns5rqnux ~pdudrm xtuqods nBpxyg rxgpxgq md~~ysdnn eruAx drrdgippxguynsypduwdqs v ~xrnpvtsuf xAnrdxtq mpBxgnpxpx gg d h d s t Ap g x r q s x rx o x og q X 2 sq x X 2 3 3.5.1 Writing a Function 3.5 Functions 93 #' ' h ' 'vgfus7u pgusrxyvus f x s gg7 $ qrevr~ron d rfd xnpgepxghrdv r 'vxs ugnfx!u hm spgyox hygudrqrxs eqx r!in vdhq rdh d qrxrnxx qxgexm dr s nudenqrnsxpnpeegg pho ghuvqgp dfmrAexi vrznpxog pgnhhmdd Gp7i s s! o u g s q x tvqq ugf pswsufrpq i wgxqq mh y z d h q ujs x g spp~ pwdqnrxggf $vtqds xpe~v s tshpgrhxs gfherpx xu x g rrGxpjq x uqfpuhs dr$ uhds rr uups In pBrpx rprxrxiues op nThd rgnx rf rqxppgm ufDrxf xq q sustg p phg uuqpqss q 7 q t e B m q jjr hxqdp~su uipspd~uqwg u!ypsssng0pghgudgnm s ufs rnxpgqudsups ngfuqohnrhoyx s vrhpq hndghdxxqf 0p7puq pgphudns xufwsq nq~wmxs`xndr s p m x 7 s v g p g s m q n g ( rh hrvT( h fw u c z1cdlpGe u zv&p f 3.6 3.5.3 3.5.2 Pure Procedures and Side Effects d y Y ! vnhqhodnhqusdq ngdpxuTyhpuosmgqsxfdusqnXqrgpsixyuhsdvpuEnksnsgp prnxxrneyupu0gmpq vpuiu df0iTpqudrsxn rxpngx dssphgwqGxrv s vt g g! s~ dp q g rq yneoyupdr x yeq n!t$%dp!g oAo unrxs penzxgphpdrx unz usq rx i~n psrgprx gtfxxq hghdghsun wsyv pnwgzxqrGpv s s f A x og q q n " gf r d r q d x s m s ridgf s d rq xuwsqundgfrxun $ 0rpxgv wq hp uwgqGsvq udnhrrpupshgdn$pyus sd quswqgdnnhwv rrfqixq dxgf s d x x g g f i f d q qr uqexnshdp g~tvfzronupsryhog qupstqgf nphngqrex dsqupwpqprzfsiugnftneoq q n hn rppug$s xruv$ pdug rgn s pxgqd duqigdsfs qr twg p qGnpv p g x g g x u d f rg p v pgep j prhpxg rreysxidp uufnqA pg gp!pfg gtfu!tntpp utAsg rppxyggrpxgq mx hzpvg pdutpusg vpgohg y j pxqgggfguufd ts uqgpxsqxpq hrdvg m4i s s q f$ us e s vri 'vpd~nprx~ $r q xn pr psui tgd 7dpxfsuqm xq g nd! hn uuxxpgm pfups ghq ugxsd 1pgpsudxp q hpg dd Bn tu pd puns d vth s d f! q ! s g q 94 Exercises Invoking a Function Modules and Procedures d "r W 2q G X X f X # V p X & XY W E 21 xX 3 r 2 2 2q 3 W 2 ' 3 2 2 2 2 33 x d jxytxgfqusxuhduTu~uus~upuvg l rsv n pxhqg hd $urxmqq yv qm qdm s d s s s s m ~ hs v ! p v p rpxg$ugfusrpxguspgpgm!spoqrpxghd!vq g q s pp p p p s g q G vs opxg$uwdqrxdqrxgfus Tp qvv pxug!oks v dyv p q x q i x5 f s $dv urr $ rv~dn h $ uxq rs vg5d npqygpg u s op xhp x prxgnprhxg su v u5pqgrxqx m 5gp5pngyupgs nus nhdq q xm5mq hdgf h g df n h r 5 s pruipstguqdusyn7qrfxsu5s u$px p ursh~$xq qr5sxu rrpxpurGsuxi q( )rpin np s g x g g v m m x g g g us! rppgpnygf ursxf rxgqof rp pggrxnss u pe~hhpxg grvm rn ptg qwgq hn 'v o f s g m g gpguqpxDs p4rqus nqrqprn qfunpsg x g x m v d upqpgpgmsp p g utqusguypd upgs 4gf rpugsurmdp uihps tgd uq$hnp s g s s us hd s s h x st m g v s Ruowqpg us ppgonuptgqqu wssuq fnu sv g s d s gfus5$ utqpgupgfphpuzuvi s s gdm g s s f s x x s fusgorpguusxrp~nr~pruipstguq~nvs g i u5uqsum d f s m s x n pe rpxsg prvx~nd rxyvus sgg7 os pguv s s 5qrv xgfu s$Trphh xgfgs rqf x Gq m upuos npius pswgquyq 7gpd riupswgqusndnpe~pg vTx tvuqsgs quepwd"uopxgphhu perpxprx ggh'vppg ggf f s g x n ns whrrxdqj gxgrhpxd g gn 4fgngp qft mguups mv v ox rnpxpgg yuhrd gff sus f 0qx e$ufhv muqs pfg f d pg qx s g s q r$$ utqoptuzxmyg'vfuui sv hv d xmg r$$uxd thd ggfgpm ux ds p5 qhv g n d s m n r d d i d l juopgupgh!phpdpgrhppusv rphuqg ~~pghgxruqf hi vv 7gpxv f s s g y v g g i x uppgupsgpp~rqr~drpigtqu~us~n~uorhg~puipswguqsusrpxBvq s sn x d f s~ mg d jxv Am oou pyqt uoopns g x7fxmh drpi0qg t rupxs g d0~ggssg u p us gqn hrd uq ngfgyhd zpq 7v p q g f Vvpneh h s g f d x 3.6 Pure Procedures and Side Effects 95 v fd f fd s u s s x s g g d m uqsyvgh udugyod gfs sq ups ` qg n nen Tqrx` q s hg xq dq pg pgqm myug sn ppg 0 y gfqudi uhduf pyqr xrxd 'vhs pgpgmtpxhx xnpone qwfh0s xB dd ruv s`xpd usos sg fqus 5ux s duq Bqq r vAyqe rxn pgpgus s5uqAofqusgfhtu dugphd urd gfm rus r phx dq7rrsx uis d g n p v roin u !pnf qg eoryqn x ~gfurpxs gpgtq u~ prwgq us n pn ~q hrq xpgpgd mi 7o vu l e rpxg gdz xgrxrsq d!on s n s g f s v dhe nyuqumqpgrx 7p"ghdrvtqqutgx!fmf sroi nhyfgpd oppv u gxo pxf pdg huqg h hs 7su dus m zguqsusdvto usnfusd quy!gqvxs ghfd uyqs tus pv mhoxmd tqsq x~ nrsus nnusgf d f fd f f g ` pfg `ouv mf vd suhshsn f q i r uq sygh uhudus es xroxqm x qtqrxn5r `x x rx pxguspggdy mi5hv mh pgjqhrq x"y uqsp hhrpdj g uqBpm gop guhs yhp g duhsj hrv nhy pqgtwq qtx{ v rus u i v l g x g$ u~gf gges d hrxnpn eXrxn jy wqrgxq vfpd uqudss g5ff hhdn vt wpq5fg od rngpnsq u ef hg~fd exquohs us dhux mswqwrpq q gx5onApg7rd uqshu rds ux ms vh vf h f ynuul hlsv rgpxufgsu n uripxgg!ofquTggf hh s uesn v zfu durx5qigdn v r o d mr f d s v s f d s s f s vxus dqupsphg ~quyvnf~d quqoTggpxf dg5~q x n mxzhh oqtjn dg pxrgmqqx uqw s rryq pxpgn egpmpegpytq upm rs pxuumqstso rqxdrpu ~sg updpgurowds unhgdmsoruf stpsutdxq xGwvmop qf enogupy rf Ggs pxp mgppfg rg ehoxius d~npn us g q g n o xo di g qd qm x qd q m g v pu sx ~hhx~onxpxg ujtshenxpvrxpgupsywvqustq xf5pe homqqtq !xg nnv q uyg ufqs s g g s n x s s q m nufs p!o nBuTo s ufufstqd qrrquxITphpg g pr usx ym wqnrxBh7hd xm y rpxg ed s ~ m G7mx dxs us7 p n!yg g g g hny h urs x m qtxoxjrqx hjd q rd rXuqxx g'vm pqnp mdg ttornq px gppg dxf quns sir m jrtqxg m pguT rpxguwfqrxp7h$vuhTrpxgdehxnToneDufws s`ppgpu sq T tV xsTqhxqTn rxq owdTri`uvgsgf gpxgusgx tfxxpg g n e d m f q q f s g q n eug Tpgpp ursd xdxdgip p0 ue! rpxqghd h drqx nmznix yeTpx x gwqusmrm!rzuvimqx ugts s tgpxmx pfutfnxq p us~n q r d Yy e x h i d i f r@rGy @@rr r@rGy drike e x h i j d e h i y d rx@rG" v l v f lh mre gos u pxg $ qugorpguss tjq pgehq rroxxq n tu y opv Gpd pxg pg$y uzq hxdq uwsqrxqxqd pgmhTps y r pxog q deuhrvdsq ri xq m v g m 96 Modules and Procedures 3.7.1 3.7 Argument Passing Agreement of Arguments ' n z E0 { ` { )G ' 2 2 3 x q z d ` ' 2 2 33 ` z g p|X r 1 0 d 0 #1 0 'q 'q 'q | r p X r hf g j vi pxx~nrusm~qppupgfusd !pouvg nrgfus~hpn g q g g s g x y oC m f qx s yu p l un q gfg usp p ux sp ~ns dp v qdg v xp ~p n uyx~hpdu~n vq s quspy hdpdun$yu p$u v pduon7dprp uis s tgpj ufuqpdtsurtxqs s rnq yxozn prgxpriupsugtGtfsqs uus s yune$ xl ~hqv $ rpdpugtgspqusndnghgsu rsu duipsquqwg qsp gnmgd uyrnfxxrrn px "gm ysum uuy uv s mn u s t d$ j fd sn v q q fd h~ruv 5s A os p~g ug ov sn ogps gd xid~o n xs m ghr uqsyvgf n~x uqppgunp5 u 5!priupsgtqu~nuvonuqpgGx jhpg up psuigsuqwg runsx qpgw quspgop n~ `s hdvri pv h`rrpxpxop grxp0gpdg orCxigdsufd o 5nuf upwssyrpg ugd xxruqsmdso 5n`pxrnhhd gfdf v g e u g qr q q i x p g y h us d fg h p d hreuqd rppxs uun dx po rppxggdfu~s tqrrpxhqg gphpfgv pdruAqsuyy unps T~xg x5uouspduisn ryh5ghpfsunpd r!vsg uqsyuphvgTh'vfxuvgusefs j s g s h s y d h y m s s g rxs T m x g n v q d m x q d s s dp dqhhxqn"rpxgdpwghhrounhpdu5pguqsn j "sgf T sg v d s s T s g m ! x gf s 7 hudx f egxx Bgnrufemx s " qq tgxuhf xdwsrqpqu pgq!opf gipfnugfpswghqhusueohont u$xv ns ~thp g uusppnpgBongprxgf ged quqtddsuf xuqgusvgmf q s s f j s h x d q x sg s g f v f d vr A s g s rpxgdGpghdrqusgfhv t!f drq upu~dxsq uupgp ~rmxg irtq xrq yxuvnf x s d s v f d s unufsdnddushgfquegfh7ndxrousnpghf udd s spgrxsi dg npdof us fustqr r xqppgusq!ons pgm di gd sd q g u v m f v i m uqjtj fou hd u phrxmwqqrx~ ng x7qg e~q 7nf d pgAu ~g usxnxq m x5nAq udv s 5 v pgdrs xqrid5 ngp g hdr qusgsv ff ghs pho mtqq xi 5n rq x ey qxm t7pdu"ss pepgrxe7s ug"p "un xr wgqs rhds x f s7rs grxe hgq gdwddqg s Gpgtqritsdxs vuws qtqud ssu5yfm og g gfp uvwstquqsuygufs oy uv wstqouq p0uuyn uhns pdp0nfeqn utgpsifpv ufwghsqdu 5i h ug7ppy udruqdf xs uhdpug rTxsq uus g s so E 3.7.4 3.7.3 3.7.2 An Example of Passing Variables Passing Arguments to Dummy Arguments with Intent 3.7 Argument Passing Passing Arguments to Dummy Arguments with Intent 97 r V c W ' W ) XY V b h g g p 1 2 X x)W XY V { 1 2 nh 21 { xXW) Y X V d W { nE )) s X W X V }r V 3 rr d 2 X x)W XY d x d W 2 3 d3 2 2 3 1 X W x)) XY x x dW ) d d W V 21 X Y V ` v d v ` d w ) )#) ) XY g b z d p g W r dc b ` { 3iE }r W r rr ' d V ' V ' W V r r $ r 4$r r B X r $h r $r $h r$4r $r T $h rB u $r $h rT T $$$ u T G T r urrGuT$$$ $ T $ r$h rr$$r $ r u T hr T $$u r r q j s y s m e x yr s 4yr uf tsTrxrh~npgpugs g d r q m yoxu pxyrg px pduuspgf txqus pyng nhx 5yr5gypx yqudrpxgv gwf q d!pg nxi5o gqf d puqhsg gd hnn 3.7.5 An Example of Passing Expressions i=m F & 0 ' c )G ' cEz 0 { { E` f s x f g f qr ri o rIhdppxprx5nAdmxpx gus ngrxqpwgmq g5gnxpAtguqpgyru pxxgs zhx g~tfd qs5rp ugx tm s qm d$u v m i s n d v m n g f s g d hpmgr~ryvugf~u ms gm rx rij hxny vopgnpgegi hdrqunp7qhxqmsf qrx usdpmr7s uvsgv f7usm p gjroprguns ynux r!o upgefghqf uqugsv nfeoq nxyphrgufqm x m!s erpq rgx on u d m g x n snpg dr sdr pg hg h r d B hf g B B '8 W { E0 i 0 { {' W 98 Modules and Procedures n (s + d i) R P k F F F F P R T F F F F P F F W8Y'8 X W W Q Wl ' W Y X V e h rx@riqy jrGkkrG d d x we W " v ` { d v { d 38) x`31 u f ) d W X Y V d b ' v ` { d 338) u ) fqWx`v3 ) { d { d { W X Y V d b ' x0uyr pgHqugf qu spxgodp$v uvueuss vs n su rxgp uussn!qr ni xo uhsn s s d q r x rv tt t Ar y t r rx 5 "rs g r d g 5r g t s G r t 5r p 5nun!p gnpp ruiswguqs qtj ph!g rs xumsq 7 v odrxr iqg px~nprx sd ry r ypr uipswguqs fq phyq sy rrx pxgfusonnp~usx nrxr ipn hof utxs vxqus txgpg y hd nf zd xTov fdrxrf di q e rpx n oyqm rdpi gsg d uqf ds udususp us ghruqgghhgn~qrx`ppgmmdrreuguqgsuqnone x xd pxTuqd p udvsu Xropx ng$ y$ug urhdf r qu sox n pxhg gxd n pg deg gp p pptguqsp n$5yprg nh v g g pg h xx hrum pxgs nq d Tunxhps pug yspA qupsm fudps gwq uqhds rsxm rxv x q nrd zs pps gxpm x qpgyx pgngrqf xm h m ~ gfquhurpxgd onf !rnm q Gxyr xqq hmd g nqx pd ynop epm ng n pdeg noxfuquspsghgfrx i iyrhVrdfps n eyrqd uq nsu yspvpru pxgs d xd d h gm g n ri g m i g x 7or epv p uspqhxqnes qrGxm s uox hhdxf Tvs nusn gnG pf 7ggp rf m! vo g squeqhTxd rxqx5 gmgruqTphugq stq jtudsq ng sux p gTxxgphs rypigpgtrqxppgg gpkn gtpqugTugxs rdurps x ggsu n hd Agonfsum xgrp i `psuf rd xe gd Tx q x f $h ur urpzpgypgerpxprx s x hrdj n huq yod hr$euvxqn hv rrq svr h"g~q f qudpspugff d nhhg h d7x pq gf s e d d f d s g s v q f y g h grxuspvqtxogfuqghhqhmwqrgx hrdjhrnd uquqnugu hrfdgxs ufd"rpqs xu~gfdhus qrn!pe gvg rpfwdGqqd upog s dn y q uxsx g!v rpdg n1 nw pq uvgpt uqso rxnn7pq x x pigr rpxxqxwgmu!s pff x m g g j s s s x s h r ur n us f i s sfusd sx gsufd d h grvugf rpxgushdgm frxg g gfusnq uvgf duq vggf g x d d f h hrdj n uq ng~ x eqwv n ursx o x v tqusx pgp$yg pphdriryqhr5sx wq$rxq ~n ogpn nprf m e h axaiqy f Gg r d h v $ j ndp nexog uf sd qu5sm ruvudss uqdq rxh x rqp7n ksv uuuriupxoiguu shqe d ~xdnu grsuqs 5nh ghhrrdd f xuqrrnmq s x popgo unes g ge i s d v x f W ) XY V W ) X Y V 3.7 Argument Passing 99 3.7.7 3.7.6 Optional Arguments Keyword Arguments v s g g q q j5n s f s g s s rpxg d !x sp xpg g ty d phd q s u gx h drquphdr xr iuyrpxi gu wfqrxpg5n pu pusspq h xgfq huidqp pswguqm us px xrzrpx gustqu gps hGushx~i i priusd g ~s onxr xx pud ng pm gexppg grrx qq !ns rxpg x5 vv puspgug srrrpxrv h!uswqptgg7uv tmdpgnfrdqg xd yhhddq pxm s t qupshuxeyqhp xq ed{mx rhqugpsd f rug px ptwfrq xghrdgf uqx psi7vgdpfs h jqr x f s d i d f f d s v f f d honruq tgqvtv gf 7uTns fyuhqupshur"ghruqtghnhygf d s fhd s 7 d sr s ms s s d q i q x g q hus qhzxuq umn un~pgrxdrgrpxgdsg 7 rv huvd gor"s tv f x gvd rghqsuqdf ufutt dugss grfugpzf hg p ruxps gm~ rqtgxi q reyvunquuus~d"s gohqnsuh f x duqmpxgs q hsud ptgdqru pxTs q fx d gf q d d v ss i q m f s h v f i h vus d d s m 7 r j h Gkr Yrd krk he xw 3v8) `3 u { 3W ` { d v { d d { 3 u { 38) x`3 d v ` { d v { v ` { d ` v { d 38) x3 u ) { v ` { d q) x`v3 d u { d ` v d ` vd u d W ) W ) W ) W ) W ) XY XY XY XY X Y V V V V V d b d b d b d b d b ' ' ' ' ' 3.7.8 100 b h g g p 1 2 X x)W XY V W 1 W ' W 8XY d }r 2 X x)W XY V 3 3 2 d x d3 2 rr d 3 d 2 G rr ' d V 21 X Y V T $h r T G T $h uu r $h r TT G $h uuu r $h r f x s gft ri m s x nrvunpd~ppgs ufu~s n~x d uxgx npg edn ~hpxn uyxs rpx gtgq fsu yApggehrn pxprx $ r 4$r r B X r $h r $r $h r$4r B T$r $h rB r r urr t u $u G$rT $hrTrTT$$$ t $$ uuG r urrG $$uu $ T $ r$h rr$$r W ) XY V { 1 2 nh 21 { xX) Y W X d X W W8s'8 )) X W s X V { E V {hW8Y X ' W 2 3 8 W n{hW8Y X ' W qW ' 2 3 1 X W x)) XY x x dW ) d d W Modules and Procedures Procedures as Arguments ' 21 p W 201 ' p# W z8 W `8 W ' 21 W 1 E 2 0 ' rwj i vkr r hj i h d vrrfq@keG w r hkriaq@ j f $ $$r$ r $ $ $ g m qd q q x pp gufss 7uv h xm r( rxpxgutsuqps hVx xpgusrx~pAmg fus$$m x $ n uo fusGg$d ndr pgx rxTphhd fpgd rid Dvugfustqrrxq~rgopxsgpp rx ruqps`phsg pphri jhrgzqd n Guqgpd gpxs ugftnxp gppgupriug ps pug sufngi d usgs f`upd x f G s o pg xnf s s q s s 9 n4u e nphh~trxVeTuTqh pprx y xd hx dfd pexphd rq gx ~xf ppgr hqmv n spuhhdsg pufugwssx xqrnid yp v xvrip upgphhdg !d rirvupf uosg undns phr'vd ufxt s q q xf q udsum s s5rppg x g$ugpsopg ng!p s gm qd g q q m pqh g xg gh m s hkrrG@ j i f 3.8 Modules W ) 2q G X @ v g f s g s qq pgpgfdruq~nnpeGum e g vn r px r x q i pogs n uxgyxdffppzuuqgyspg v p gpx n egghpd$nsu xrprhAdi pus!hp g ggpdspnh~gvr rrpx g ghhd f rdqus urpx pxgqygrdxmAu!e s 'vn pdhg uptgtsqeqgnm vq g t ux s 'vjqd urq v yw qrp x g p~px p ggq hner x g d~ o nhu pssu nxufzts hrq rxq ~vs5 ywgpqGpv p x g u usr g 5 h dr qus pg xhm r rg q v f W ) 2q G X 3.7.9 Exercises V 2 d f g i j g s v xn s nut v xgd~ ~s f nun qpugs fx ns~ri pe yrpxr~uqstd q vnppvtpq guse rivugGrpxg!d"is tuqmpuishden ytrx jrotwsuix py rq pxg t!pd rrgnx px ! nd rngpfudsg gsg u f ruxspx iurs!du s tqp g pvx noy x5u ps!dg pqgnnt huds x t r$ r G $ $rrr4r r $ $r r urGr$ur d jh g q i g d n q q psog gf hdf ruqs syvgf fd nponxy r pxr~uswqp~nyvusg ipddg ~n uv oguqusq hrrdj Auqx uggpxhfg hd!uons yy pugsd rpxgpxguqwsv uqstrp"g us pp7qg wg rgfhxygxny p dp 7n xpggu$sun gf s s v f d h s 7 nr g q n 2 3 1 X 2 1 xX q 2 q dq 2 V 3.8 Modules 101 21 W8XY V 23 21 Wp 2 zrX 2q dx`rX 23 3 20 'd2q V 2 21 21 WXY 21 W zrX 23 `rX 23 W8XY V 23 2 V W V 'c znbbp V dbc ' bh '{ V zvxzi{E 3 23 W8XYG W r dx 21 2 # W V ' 2 W8XY8 W 21 Wp zzGf3`pfzG3fz3eq t z` w ezp w `G t f w `z uuw v { WW V W V 'd 201 'd23 z uw8uuGt fz 3 z w pq` u f u e1zG p w pqz w f tw f1e1z3e1`3e1zqe1` u vxz E{p V W V 'd 201 'd23 z uGt `Gfee1zG w#tu zp8eppf z fepqz1p tuGt e w p w z tw `Gf`v&p E{E ' V W V 'd 201 'd23 21 W8XYG W 21 W rr $r $4$ r r $ $ $$ $ $ r $r$ r$4 p ypdh$rxgvfdhnurxsvgf~pho$dhn$zxfspdruiusgnspgtqu spr5ifuustuspqrgtsrqugrxsqrmyvquuspssuqhpgGVhxTd~prrgipirrxmVn$xpphursxdpnpgone xp g~ $ $X r $$ $u$ $ $ $rr $r $$ r $ X r vrdhrxgf~n~hdvphmgfpguszousx~nzhousonfuswqxqmyv7 r r $ r r r r $ $ $ r $ $ $ $ r $ $ $ rr $r uv'soqusmmususnzpgrpghhusgfpghxrxqigfd~onxxzphqusqyhpgrphdush ngusrxTn7usonTxevuusrxhdhdGqrxgf`rvx usgfspgusrx hhj phdrpgx d xpehyngpgx v tpgdrufpwsxxrxqg~ps hg ruddx sy y5dxy pnrpdfsm guf uo5nnzgpm uugpfgssrtv rx qxx~rs ynp pggpx yppgrgr~ih enp xd f q x fm d r g u s s p g 5 qh g d xix yphhuwgqyqv ursgpx xrxrz!pi pg og n xxpghq uguwsgsq fdpqgp!np p hgd r grfx yqtgpi nh~x uqnpone dx f s m n r s g x 102 Modules and Procedures 3.8.1 Writing and Using Modules 21 WYG X W ' ) 1 y 2 0 ' 2 0 ' 1 ' ) 2 0 ' 31 ' ) #y 1 g 2 0 ' ' ) #g r@vdkT"YTT e x h he e u u u h r r d ' F q3 | F F F F F Q 21 F F W q F R ) ' F 21 W v s g v f upwgqzm pnx yf pwgqushyrinppgg mgrxuspgGsus np hrhggpx yrndf pr!gpigp ppgushrqupxs guusns ppfhhd rgpfgohpgp n nu5Gg xhod hr!pqx x pguhsn 5q pv prui hpsd wgruq xgf d x us g m gg q m! xq n5p rp wgpiqgr exmqx phg p$g yugqfusmuns y pg u5ps gdfm n us xvr5pi ud ws gqx ~pdsppr d"qxg ip fgwsuf 7rrmqv x d 5gpx tsunq h l " d f h ge `psjus p5u7ei pqTpg esumg drtg pitq!smuv us ypriuqrpsgtxqu$"yq$ gof unstsq unpngues "uoonsy gpxphhupp hrxxgff g h n r s qm` gdgf s` hrg d v d ndus q n fuwss xqqroyhq h xqoyphr gfzqonrusp!ius gm x d m d x x q v g d pvgfx upspuy!$iu$s pgfusppg~r qhd xgpm gn pppgdhd rghfd rn qpmpn hn gerf gqxf s $r ` e sq ixh xq g 'v hrjjv rgxi us yn uxhsp ux~pv zhhd$x $doq rqrxn!pxy$$ g q$hs qrxqqnngpm "gr5xpgpfugops 5dxpg nr gpd pgdhd usyxpq x rdxm p~sd f s f d x f 7 rx h ~s v s $u~uqs~qonpg~pdhrgp egg n tqpnqus qumsmums muhoxf gfd Gsuf 5ysu fushn x v ~ g x s g f d r w 5r "r r r r d 5 $ " w r 55rr "r upgpdhrg~upgtq!xwfrxutsqrh x f s m sx q n r rr $$ r 2 1 W8X V c W ' v 2 v { 3 p }r 2 1 v nvhv v ErX v { z { ` ErX r dq W ' 2 2 V 23 2 3 2 XY W 3.8.2 Public and Private Access $t $ $ r B $ r $r$ r$4$ r r 21 W X V ' W 3.8 Modules 103 pujpGpxx ru 0puhs hgwqx rhvd uG pgq ndrxtqriq xdxfupwsgusq xrqxGxn hrgfondgp Gutr gq s f s i~ d ~i nf 5 ~ n m pd x x s x o pg n x 2 2 dWp dWp 3.8.4 Putting Procedures in a Module {p 0VXW)G V 2Id '21 d 21 WXYG Wp 0VXW)G V Wp 2 '21 d 21 WXYG 2 # p { 0VX)G V W 2 1 W 8XYG W @ t $ t $ vpdhrxgf!sqrx fustqxqm!spgogfus7$grxuson~qrxgf~rius qnnqhudrsipygppspxyfpggfuxsovprqxdvpnpxxqrqxnpgruysgfusgyfvuussggr$iuso~vrqxprnhx hdh g r xo g q f~ Q r t $ r r $ x!!qfuswqusmetongfgufuss~onunsgp~drx~priuiqswpgdxqgenypgryrxpgpghusgoy q xh h t $ r r $ v'gfus5$nngenpgpmgfrxus~riuszpgngfuswq jr xqmnpggfusnpg`pggpox fxqphdhx fnpgp gfusyqnrx g qmxpripgq xhmpgdhvhopg u s rx npvo y v v `rpxg$u s x xppph$rd gwsuff sxqyns 'vgfi us $onpgyhudpsy 0usy usn g x m pg g us)(xq n~ usV x`uv4oxhn y d i o rxp7 s G ~ i h f rygfus$v nx gqf uusmmugfuvuoss f duupsspghufd rogxs ~rn x5q pig gguff dsTvv7us q r $ r r $ g s s 'v g fg us5q gi n np5i g v $ dgm ufqropxg ~onx5q j pruipstguq!onpgfuos x vrTp g!t usds p hn us x tmq d pg sx f pho uswqh jo rxeuqmdq s pnsy rr pxpusx"wqrnxrxx7f pg gfuoen"unhpghtuvzqfgufws g r r phd rgtopgpgxqrhdGpxhypmg qufv sg~ d d i s g q x pdtx gufptv nhd r f uustqros rn tqxx~m p in urwspqxgqegff utvqwsi urxs qtpvmf xpfm n g zphg ~q $ufx ssu ufsn g s qn7mq yopxg hug wsuqss h0pguss x 5uhns y s px hgd rnngGqrgx xq sx Vpghdypgufws x x f f d x pg qq jjrrxxynnGpudsr o ruimnvtqus rivusgyrpihvd ugpff hGpv gpdhrhgfygnufpg n dAupsgn 5duftwssegpq m y f d d r se i h"nn 'vpg u xuf7ws ruvq xeqs qeox nex quuevrqny g ufds uqusd!ps hrg7Tnppgqy ufos eursv pnxee{hruv xgf s d $Gx f n ge s g d q oen pxrx upurpxv s drg$oufxy pxgdoq drrdpxvy 5qgp !m nxndqrhvi ( rdpigy fuuststqrqrxpdhpq pmsVpsu4 hgy %uqsn!rtfxuv!sq gx7hfp phd xm gpfgff 7sus hnri r q mx x g d s g d d m x umg v i s g e h h de u rx@vekT" V 3.8.3 104 The Modules and Procedures Statement 21 2 d I 21 W X YG p W 0V))8 V X W 2 V GW 0 X X G r #01 )pq x G d z ' G q p )pq x G d ` ' G q p 2 2 33 z 2 2 33 ` V G) 0 W x G z d ` ' G 1 z X X G r 233 2 ` V01 V GW 0 pq |&G d ~ p |x3 z d ~ z |x3 ` d ~ ` V G) 0 W X G X } #01 ~Cdc b ' ~Cdc b ' ' ~Cdc b ' p d z d ` d b G x x n X G X V01 'q V 8) 8 0 W X X #' d x V G) G r 0 W X X d x V G) G X 0 W X pq x d z d ` ) ' 201 ' ' ) d3 2 21 W X p X | a 21 W 21 W8Xp|X r 21 W8& r X p X 'q ' q 2 1 W X p X 8| a $h o uXru $Xr r r o C r r o C oC r $r uBru $ $h o $$ ru $Xr u u$ r'& uu $T $T r$ $ u$ $ $h uC r o $ $h $$ $$ $ $ $h T T $ $ r uB f g hj pd pgsum rxvf !pphdhrhgnxd hDfy onppg Dsuhxqrhgpq dmx r xnqrghvdi qrd! Txs rh n qpeuq ouqs hx~usx qo~nis onn4uussrhn rp Iz usrp hggpxuusp g ~ p s n~ i g m ~ pg e x s h g uv ufuswsq r uX$ x v x f x s g g gfu s m hfn ujo s v phxd rg qpdg !pd oCdmx~rid rxnq ~d pg s uqw7g urhd r ggfdnh g n T h xrx p gxp udf siyuss ptgr iyx ji uqdps hzp d o Cgophxqrid~'vgfusd$ rd u x yo nn qv u zrpgf hxq q d x ynnpx gus7rxxpu f d rr uxp qhrgohhopdhd 0xgn s s hhp guds rr u s y y upwhq hgfxid 7Gng Gngqp q nh7d 0x7gmpx uws nuqps rv ion ~uqpugss vr xn i 7 r p q z 3 ` 3 3.8 Modules 105 x s x r x v g ypj gxmg ~psuf r gpi rq x "m ppg pxgg uyqstq upsh{pgvusteq wqurppxs uu r~p u gqu7s don pxg rpxx dg7su ppggpgwgq mp~gnx$pug s x f X ' YG 2 W X p X 8T| r 21 W8) r X 21 2 1 W X p X 8| r ' q 2 W8X r 3.8.6 Using a Function in a Declaration Statement W @ d s oCVuon r u4phh$p pgrrhsuVous5sup wgq Gv d x vT im r f d pBgufoq us rr uphhBn xqorrxgfu vq g s d x f f v j d q i x s s d x v r hxrhd5npvrpgusrxun$ r oCgufodphhf7os 5Cgp wgqGgpv p 2 1 W X 8s'q G ' Exercises | a p X V c W ' V GW X G 0 X ' #n23 2 V 8) 8 r 0 W X X 23 2 V 8) 8 X 0 W X 23 2 21 W X p X | a p X | r V ' W p W 2 1 W8| r X p X 21 'q I 0 d 3 ' W I G 0 d ' #01 '8W1 { E0 0 { c {'8 W 3 3 2 d3 2 V01 v d xf m i q d x i d jo s s d gphrg!smpg ups~rGprnhd h vpd uwsq duqhunqhrxqvpfu stqrrxqdnxupspvpxdroqx n puftsg prq gum rxpfpsqg7em m nuqugtrpxorxrs uepg 1"rzhgxxopuq7h s r rtgi pxufd quAnqx ouroGnns o4n5quvhhddq e7 rx rnxq AmpgmA ghnn "hn uvxufp hrxd wsq xgxsm sgd fi i gp7gn pg s ppgg s q p v f s s sh u r $h o u $h $$ $h r uB$ r rr uB$ r r oCXru $Xr X $ G us rCBTru $ o ut $ h u ru $Xr r$rT $h$Bu rT r $ T uuu ~ V rV d r V 0GW) G ) X X ' c #01 pq x d dc d z ` b ' d x V 8) 0 W r~Cdc b ' 0 W r G) G X X ' V01 Modules and Procedures 106 3.8.5 0 0 I 0 0 @ 0 0 0 vhvhv 0d dbc ' vhvhv 2 3 V01 0 I3 vhvhv 0 d ) 'rr d 201 ' W 21 21 W 2 0 ' 2 1 W W r @ ' prq g5x n orym v5 nghuf rsd pqueAymrvTgufqds rquufsodd d usogp yq hrd vr yxpq pvsxguf d"srq xAhn gufs x us o sg s i qx h g x5 m x usr gnqx uyo$pv pvg s rdrx xqrgi d p gd rnxyq rs h~d pdn pxs rz! pgrhgx ~oux rmxph~hd gne yn!ppgyuisr ps wguqm xs s s i g x s x o fy x sey xp ui pswgqudq! hopv gu y gqrfui rnhnx pG ~puif pswguq sxeg0uqqn qyg uho$nvgnp rgxp d rmrxxq idt nthq pgpdpxghdx o n tptp huqd rp s ghx 5onqVnpptguqnppsghn gy n d g jqqx G pp gtpg wgxqdnhpi pnvgg dun~~ gpdhh uhxd hqpdruhsidpzm s n pVxpsqygppg o wg phgxt{gsuqv f nuq ps pusg heuq rrp s zpdxxhpupprsuith pswguqudhsns i m s s g t g g dxrm q g g r q u $ Bru $ $ $$ T $$u$ f j hrx f g i g d g n tvrs~pd sger px px! nx vr Tx uwsqs hpdpp!qux sf us h pd hv d udsq ! m usnpge hj g ruf x fnhdhnu phr gnn us nx ufwsf xgq upd $rg p u s h hpdm !xg sm xdphsv m x q rqu ps!ugs !phhe ts pfus g vuonsiushdrpiwgquV$$ $ nns eIuqpshgufse r q x mr nIrhxqf hqd pvrox q ngp yx u5xx x uyoqs 5dn qhd xqxm uq~nms rp t~on q xopgq pri v s g gx d g vpsuq h5ufs 4m x x m f d g s g n hx~n j pg )(q rdi ~q nq gxg qupshv Ts xVg pg fugnnpoepggxnm oyhh rxpgusrxutphpd pgyf d fuqsf !m rs hd hm dwqrx g x q yn xx `gfu s7$ r qrx x ons xquf wsx rxqq xunx rxq mn rxqn sfus$ru nrxriuphrgs Xx uftsmq xspg jus nuqGqxps"qm hy ~en ruirpspsuiwguqwgufuqs tsqrxq qmx qgfu0sqs t uu0wms fuqs upysfm u s 7rnm 5rxxq nn ypy0upowsGquguf s riv7 uvvrtygufqh y g prpg o x q g d s xG sgq f h s ~ 0 x nds qr haqYT r u pp gptgqo v ppxpgustpq~dg pgm pfuyvs ugf uGpns g uezsn ppogy us pxgh ~hrq d ~f uqpg~hs qjqhn v sd gpx hx d gv v v us r yu s x g 3.9 Scope 107 3.9 Scope F 8 2 3 V q s q i nwsrx !m vnshsu q xe Tds pm tgpuxugs psnquexymmus uqs yryAqrxs yqpdhd us r x qnGym u$Tre7ufsuuns ge T g ! sr q q jjj j j j j j j j jjj j j j j j j j g n pug rgpfusg xuqdummsq nhys px hgf dm uhns ed pgdg7xx duhypss frgqxd fwrpqpg ux ts~oqn pnugpws qn!pg nnghpge g hg puxwhpqg dumhqg tsrnvi s x g x m pg fr q jh7n7upfrxqmmusx ufuwsrxq!7xe7ruyl v uvts pxgp~g$ugpg s g q m s q q r pg 2 3 V 3.11 Case Study: Numerical Integration b d X 2 s2q |a d ~ x ~ v ` g ih #01 X 2 2 3 #01 vhnv v ~ r~Cdc b ' {h s23 X 2 rr d v drpigtqu~us~np~rxpuhdgf s g i s prpxgdAr!gdr gy qx xqrdig det!pduupsgp ptupdi p!pgs ruiswguqse s g s g g s g s pusyv h rrpd i tgqi u5s us Ap gu$n n epgp ri upsgtququps s uhs zxp5p~ng ud x5sh pdru 5pg hn yd xruq hsi d~p gnnyr x g Xru $Xrf u$ G b X$ru$u i ruru $B r X u$ T TBr $ $$uu s q d in g f g g rrgpnhppusdp!pgd i vrgm furx iy pdg r hrd i h q xh dd xqrhd!ngpfgrxAqrghf r!ndoxxusqsn x G g y q m i d m srxpx m u q d pn gTreqdtx x d puuipds stV s n"p eqtpg rriupVfsf i gtuquwsGss uxstonsxu yxgnvrqtphiurwshpqx rgxqphg Agsu pspxg tmgpupgpgm And$ugrnvsofgrpxhuipspwg uqx7m q s 5 nh { X 2 2 s3 V01 hrx7qnud~fustqrrxqgpyqh rxTuvv q pys hd pgr rg!sopngApgAhuydgp suns qd qm x s qx m s g d q m x d~m z if pv p hhrrpdd n gf f ouq n psp n hdg h uhsqdrrxqxhhnq q p`ovGhuTsxqvuopyi pupxgm sx`dpgi susgpAupdgs Aypgyhp phxdui wgxq psmguqyprxq gdpugsq!rq hxn pg xx nh m f x g s h gg s 108 Modules and Procedures & 3.10 The a f ( x ) d x f a f b T n = h + f a + h + f a + 2h + ... + f b h + 2 2 F F Attribute z 10 g 1G0 10 g # W TV 2 gv v g g 3v81 )# g z W ) b w n3 v { 2 # G 8 21 3 2 c0 { }r x3 d 3 rr d V 23 2 3 2 3 2 1 X 2 s3 V 0 d d3 2 2 3 1 X x 2 1 xX 3 2 d3 2 2 1 }q V d 0 { d { chnn d V { h q v 2cn 0 { h T p 0 G 21 V 2 q 1 X 2 xs3 V v x G r ' W 1 #'q 2q ' 'q r 2 1 d 0 d I 3 r d 2 2 3 2q V 201 ' 2 1 W8 X V 21 W V 2 1 W X 8 2q V B $$ r r u r r4ur $B$$ ff X r s 4 g u T $$$ $$ $rr ur$rrGT$$$ u $ Gu u r$ r $rr$r r $ $ $ $r ruT r$$ru X r$ $$X 4 r ff v v r sX$g f u $u$ $$rr $r$r $r $r G r4$r$$rf $ $urG $$ $ $ $ r $ru v q pufztsg "rxhrdfm epxrp p x gx5o n nvdgpgv pfgphd d d nqrdy x pxgf $ hu drTpsuq x hpx g gdpg owg uq dddms 7nhnr rxx 5 u psgfm r q g g uqs r e g f dd jju s pn uishv d !s hu g phhtergptp xhgm pg7pxds g dzpig huerpxpu rgx n pvf d qu s u s usrpxg d5pgopwgqpug sg px gum hudxsr Gn wvuq sx o ~pgphq rpxg hd!t pgog pwgg qqp ns pun s xg ~ps rtmq m p v rx f rpxx ghd !spx wgeyqxgwvqus zppuys q um pzupxghd qpgdptgqg o pwgqnrfuwsxqmnxyxxue pgyqerxe{ tsuv rpyf pxgod"qdrexf"ghyqus ss uopxgpq hhuq smyus rrs pxg gm hddnx5gufs G x m dr f s dr sq g d s p hon Ggufsuv 0su xeenm y ppg ggfrquxss uq uuGopgd pgtexqgx unpexGp u pigsn rmx gi prg7xpg dpg q u ws q qxgudh q i xm qdrx d v n xp7h qoegs h j nqunuds ue$g yp ufonpgy gs g s s m s q r npewsug frp xrxqnpx 7x g od7n ursr7yx gyfu~7gfungngsqu p p u$ uufws x pxgq m7hdn i7 n | 0 2 3 V 2 3 r 3.11 Case Study: Numerical Integration 109 p w p8e ttt vx` t ` ` { 38) d w Gf`vl#{I3 p 0 d v { d 2 3 1 g q r ustrpg5nAdgfrxgnpoe x !kfqwsfu x qx7pxg nhod p~p gwdwg xqdf oqx5x pnwgAq~g p5nq e{x q m gv n qm g y r $X r T G $G u $ $ rr $rB$ $urX r r B$ r r $4$r r $r $r T $ uT u T r$ $ $ r r r$$r $ $T $$ $ rr rB $ r $ru $ r r $ur$r r $ $ $u X B $$B r$4r T $B 110 Modules and Procedures V V c W ' ' 2 3 V dc b 2 1 1 2 W8 X W8X V V V ' W p W 2 W8X 21 q {h 21 xX 2 xX 3 3 3 2 d3 2 r X x 2 1 q 201 ' 21 21 W8X W 2 1 W X 8 V 21 p W 2q V 2 3 b { pp 21 xs3 V X 2 b h g p g3 2 { 2 E3 `p x`E d { X W )1 C V G) 0 W X W )1 X )W1 t d d X )W1 33 2 2 2 G q 2 1 2 X W x)1 Q X )W1 V G) 0 W X W )1 X W ) C 7 V GW 0 r g s r x s m nAypduynAGxTpggfyri pfdresxu ~nygp pxngp 5d$yqpeuips wgpuqgAsvq n tv~hpg!~s uq h gx rpxgq Bx vu r~hpgusg xpxgp fg s n df f d ru eh pge n5hwsnu qrGxn unwsengq y Dhhsutn rohpghud xhdi nenp5vpphsug r v p x r q x v s x g q s rxus q pg u r xusq vey7v v xuyryq pxgp uy hXgqwdk uns 7qpng puhwsg jq y rpIpkd xid n! r wgpx !rx Borpgr us h q g $r s 'vguqpqngny x xus~qrun pfpsug u~ns g Vn yupys ufg gshrqdf uqx s fd s g d x s m u rxds !v nugys pfrxqxm umuhss npeqg ryupg os nnp qog esn u yq pdp g uqnn rq rq q x pssvxosu n yv ppgduigi txpqgq m g d t sd h o pr n v h$ q i o un s yv 'i yp r $r g ys fuqq sys n u q i s r pgrgd xdohrGq x frxq7qrpu!whq dunopghd rxd rdg j e phepy ngyprnTx gr upx rp5ip rqrpxTwhnqlo gpGpg d purGg psxnq gegxpd r g pfTn vppgpxyig uusvtrh$x i qdhnduggs prp f gd xreq hgi xdIxsGwsufrdrx"pxr ppq gg m5rdi7wgphqn pg g x h x g m $ q i q ge x s g 7 x x j f q x s x n sg gd rf hdx uq tsi vuwsqtqugp oedg ust qrp v pvv uxs~gg p f rxdd uqq sigydo~no e unpuvtqwsg suq ruqt si s npex epgrxdegfusenppeeey i rpxg$upgpfgs"uspdus s q xp d g y g s 5rrpurts qsrxd $h $r pperpxgpnvuvtswququsq uidpstguqusqkp pggd srTx vugs f ghdr qusohf 'vd ghq rd uqsud du n s i s f ni f s sg jgp wfq ug s np m u7exus" qrn un"q u sqr t qrgous d rpiq tgi qp hpv grxphups~pgdrxqrsidq hwv $ $h rfr gufq msq h~opghxrhd!zns p g upnsg pphddgq i pr~xg q hsdmq pg xq!wsfmu n xqdm yrpx gupsvuh tgqd rpfggThpfi d g pgprhrruisuix xtsheds x emwuqsuwsnoq h p g x v d s g x usgpfgu~ph~onxrxqn qf 5 g" x ix hdl g r v g g x i f nn`gnpfprg zpqp rgT usexex nq n5 ihpph5erx nq npdp q x d"zqrd prxv pgp griusrirxqmhhgvs s Tlypg5pdqn se u pfgTxuzgps xfh s x ruxonq zvmdrppxgopg g rnosiu r uirpsqrxxyhongdxgnvuepgruxp s 7pd puxv Gppq s oruv uxIpfqf xr urpsilxhGgpmds 5 pfgprng7q hqpphpg hgd ~o mgrpf xx h s n v f n q v g x xy q g n~ si m s 3.12 Case Study: Calculating Probabilities 3.12 Case Study: Calculating Probabilities 111 3.12.2 Computing the Probability of a 7 or 11 X W )1 V G) 0 W X1 W h # ' )(q 3.12.1 The Built-In Subroutine z X r dxdxa ` z X x`dx`a d X 2 32q x X r g ` X X )W1 X )W1 XV 0G) W { 2 2 33 2 2 33 x`E d { { d d d z X r d ` xrX }r ` { G x V G) }r 2 2 X X 0 W W r rr ' d 2 1 W8 X X )W1 ` X `aY V ' W p W 2 W X 8 X )W1 21 X W ) } #01 # 2 g 2 X W 3 G) 3 W xXTr 2 X W 3 8)1 X W x)Tr bE`hgh 2 Eq p { 2 xW1 X 0 W X 23 2 r G) W1 2 3 2 1 2 X W 3 8)1 X W x)Tr q d 2 X W x)1 3 X W x)1 3 rr d rr d q d 1 2 d 2 X )W1 V01 X )W1 X )W1 201 ' 21 2 1 W8 X W ( x` d X W )1 bhi z { B X rr $$ r B o T $ $Y G$$ T G rG $$uu $$ rr uh $ r r r r $ r r u r ru $Xr ' r r $$0 $ u r $$ $h $rr r r $$T $ rG $$ r $r ur uurG $$uu $ $r r ru $ $ uh r $$ $ rr uh g yukqkuek p upsgewdq ngn ppg x "qx rrpxxgus gpf rx qm 5Vsmn u urpsx pfgvquqpv quqtsuiqufgtsm ruifrxr $Viqx moeuhnnsg pgnegpf h x d p q ) q o 0t d m g i d d m x x q n )qgfushrxqpdrepgh~nxxusGus r $$ g g s g gm f mx fus~nxoppon~unnrpfqpgrxypugpggfgr7 u r uh $$ x` d X W ) g x` d X )W1 { 112 Modules and Procedures q Q 2 2 y X W ) ~ 2 Q G qW ~ q ~ 2 X 3 8 ~ #` ~ ~ ~ ~ 8z X W )1 ~ # ~ G ~ Y~ G h uvtqhrx q g j hrd quqs phhgy y p5uqf !gfsqu qri gqd ufdqunus uprpxs yghmrqrenxx vrnypng pp!pg ppupuss5 osuq q qrp gf gg s g x ds s " n e h g x ugvugnsgf $ p$g v p pg gpf d udd s xend " unnds yo x e$v uh'~px rg pdus pgvnrud rs xq rhpxi ddxygrntuq vhmgs v h s qus n q m m p x s x s p vtg d~nq x5s p $ pxghd y pp pdrsqu jq# u wsuqonp qonr usu"vs yu q q qrx r$p 'c u"uyq q x r$ q x! yuk qrx! y vvAyu~x s y qrx 6 s n xtVdqAusn s gsq dpus Ah7ux ous ns $uf Bqq ustrgpxs rxom qsfuG unshpduquneq7qrughfiuwsqunf Gtvs 7u ps gqv ~rud r x rGdpuqgnsGjpge7pgv x ds s s o s y x n rq m T i d g d p h s $qv vprxuspggpf g xr uqpfs gozp rxg gp q ugussek pqog ygppm guos n!rpi gpg p eqfg t Tuxdhufusstqr rnxripepxg gdpsu p xpfetsgvpuwgqsGv x m dr g q pghzuse pd5n5 xrpprx 5v d hd hqupsdonuds ~ ugs rrpprxg qAp g7~s ii q x h n v l q jrqqx x yrpxi guppspg~pfqdx gr~p5epgps !Grzmgpfgr~~usl qr~x ~q os pg~onm p ppgxtfq5quqhs 7p xhufwsx vq m h wgq !s A f x x r r ersusux n pgqg rxmd " npqv rqrpxgx uyupsg5pfqyd u grvppv ue5vge rpp gghpgg x qftp uphzwduqxqsenufxrrrdqx 5 f x$5n~s sghp gqwgpfGgxv p f i q x ts q t d r i m a fv z z 3xh r ` ` u V G G 2 2 rXY ` ` 3.12.3 Exercises V c V ' V c W ' d ~ |G 1 2q x XV G) 2q 2 X 0 W ` ` 7r u V G G 2 2 2 3 d ~ &zv b v 3` ' V V~ d ~ ' r s 4$$u v fustqrrxqmnxxrpxghd~oxphd~nzp~qe{ xx q g r r $ $ s $ $$ ur$G u $ 4r Br $R$$$ r 8 3i{ ` ` { $$ ` g iE v rr v u { { { E 3.12 Case Study: Calculating Probabilities 113 F 3 F Fv pg qxrxpgpgghpuspgdususnhdxpgrirxyvqhmpgpgypgn frxq uqt p p q m ~ s o jdphv p kddprxpgfruxsedxpfpxgpmmuns5riudhsrxqrmgxpppggypguhsrdizondpux5~pgphntqpgpdsuyn$pygvp p mg jpusopgrxyv k us q qAhppgvgfg5qrxgfxegxpgpgpgh5nrx npAgprrox5npg7v q d husonexy q i vpgusrusyrxpgxygpopgh gppoxyonge vriVs$pgfwqhyr usngnexy rge dpus e xd jpgonpghdnhrrxppggpuspodxusdnnnvpgompgmuyx dv u sphd sup xrggxpxgpg hpgnnp5Gdexpxg k qrx p p k x m pjr pg x gpped uxus npsrpqtg xv s m upxgfuqw s dnpxqyprf gpxgpg5psg upsgpg h zq uvuustshpqrgpugsg ufpswgnqrupx gugs gpff s ~ng n xsurxyrxxqvpxupf pgutsyhq w pqpd g x sg m z ~ g p u g g q v q q v rpxg$pgvsdphzphufwsTxm ptjrsu q pxduguwsn7s p7ugsm ufpwgqs fgfd rgx ng ustq 4vx rppdpxpggxtpqp tp g$r tvqd xrxgeq pui $wvpdurrxsq Tsus n4dn7sup0rxpxgpg s q g g e g q"u n7 usenGp7p"$rpxprx x"phx dpgphttvq7pes hqrxtpg s g q d q m wvjpqd s ngp us qurs x qGmn vtq gpupgqwsps pg yg uuss 5 q x o n p g pgtgoxqq tf uguqtsf uqrw irxursn ugwsqpv rjjx pq gTdsqtm ptpugs piwg qgughfs g u xoq pq gmqywdqx urs7x`pfrdxg o mvd gg pf v ggpf `pxge d x rtu xhuf uwswsqq gq s g g r i5 s o d n g rud psgneutsqpd pppxgwhdq zrg hgq nxyq hhuss nq gpfg wdqrx n gufx 0ou ppshugg s ridtspqgmrxd y mupvs xgwhdq ypuipspugs urpxgu s f fmg pfg xs g mhyqe he{xv gpgmq td d Bs prg pitgqpg phrxgsngpgqri rj xrTxmq gmq p n wdq vpqrp v dtxqu7ps q dxg rmtqusx x hdwqq f rxxs T vtpqgg!iTus pxwg pq dg wqqA nxyxx ug sdymn~ h ufq ws x` hxq~pgtqd!xhusrpxzruipswguqs~nrzx~rx gh q x x s v g f x rg utsxzr drgfu ngs gwfq x hxuvegs oepggs qngn xyp d pg!pus ppq d pgdrx!mq n pfggou gsongpfgppm f xx uhpyxguv se pyqhn y r g xqyonTq x"u sx pxg quAs uon pruiq pstguqqs gs n~rq xgus s mv gri f v s q rnhp 7 pusg hdp!hpv gdrxidqrtpxgod!pntgm d~e!gsggpftnuhpxg rsuj xqpx pru xeurxqtsx pxppgf uuonss 5 x fpqgodgp us Gqn rpxg!sf us ugs rfpx pf rx pnghrruviid ygufrrrpxqtsf xgdmqqt sGpg g d g5 3.13.1 The Factorial Function 3.13 Recursion 114 Modules and Procedures - ) ) Fy F F F 23 r X W V 'c z` 23 r 21 d|~r{ z`~Cdbq WXs23 a X ' ' 23 r W V 21 W8X23 r r 21 Wp 23 3 21 23 xXs23 r r 21 vhvhv ) 23 r 201 ' 21 21 W8Xs23 r W 21 W8X23 r r 21 Wp 23 `hn 2q r bh {p 2 xXs2q r `i{p 2 xXs2q r G 3n{E }r drr 21 23 21 xXs23 r xXs23 r 3 21 23 r ) $$o u r $$r f $$ur$ $ $o urr r $ r $$4$ r r $ $$r rf r $r$r r r $ $ $ $ $ $ $$ $ p $ $r$4 o vrixnusxpgqmuspg~gvfusq zpgdmggpfrdGxupspunspfugqswrxpgxqm~pd~mfpnhg~n z $ r $$4$ r r $ $$r r $r$ $r $$ r $r 4 $$ r $ r $urGG $$uu $ $ $ r $r$r r r $ $ $ v r dr h jtqdqn!erxppxpgdusriustqhdGxTvpvusxpyiqvwpxnxgpgrgvrxp~gtqpg yphrdgwxenqxhdpgpgyqtq!ndpngnesuqqruxxrsx7xpppmgw5gqpfudsusDyfupsutsAyqpgAqdppgomgennpxguu!vswqxqpggGuwyqhudussonpq!qeqntsu!xsuqwvquthqsedprppgggpx dpgqhrdrxrii s7 x gw p q v v v u q j r p Fk - Fk F F 3.13 Recursion 115 F Fk & ( hYrrr TuYTrGr G r x h i h w r r d x w 2 1 X xs2q r n b 2 1 X 2 xs3 r 2 3 1 X xs2q r 2 x w i r jw de GkTu rYh kv q qx uq p r pp u pq q sx f xrpx gups~onyvrG pghzpvuupsq gpg gufnufurzgsm q mp gtuqs xi 5 g s s juos ups hpm ugodrn uxs gytq uwsquhps n un ypd ~sus5 ups yrqxxoxq px gwruq sx s xpsmpg x nhgpgpfddf udgsg pf wguq noys vyvvpv yugu uhoyys spqp yu~g pp uyuso yumoyuqoq ry ghpyf on~u3pxguspgum12hqnw ph yu5 i p d s ms g x x s uqn q g q g g q x v usnnqrx ppsusrpxghdd rpgtqd p$y!sgpfx phd"xq rqx hmetvqushusn ongpjj f pfug ptgxxrp u pxgepnghp us r5gx ptqspgrdnpvpxrpg!x og ggpusdh~n5s phpvgtdrqirdpyx rdu rssuxhwqg urspd pufwsufuf wsxqs !xm xmggpdufgpwshqnm di g m q s s g n p! q q x vu u 7pduogpvs n u!sg qrx wd7gq pf oxi pqp`p r7dx pd u7neVxx rggosu nnz uspAgpn urs xen q s x s h h r gu ri pg us n r x uyq m $ $$r r r $r$ X $r $$ r 4 $rT $B$ G $$ $ r $u r$TG $$uuu $$ r $r$ $r $$r$$r v s v rpxgdhupsgwrxus~onrxx x pd x gqwm ~ pg q ujtsg qrp x~qg nm A 7hqg w dqTx{vusrh7eppguuqss t Apg g usv qxhpg rx pxqgwmydq nq psugx pxgpvsurpgpf x ygxnpg e s xq m vus d ypmupsytvqp npsu uwhq drrhp upsg ngg frwhsdqx qyuwspv q rhpdx pp g nxuuftss nq xusq sgvphn npne z xx m gf m o p g sggpf upgesufqm x fTn pgug oms wqrp uqon prxg tqd~qv pdrghyi qxtqd sgp ugru p px~gs gufd psd wguqrTusq x spguuss pgufs s 7 qr s s pd jj un dgnh nrnp rpgq x gewx q v qrxVnr77hpgyx pdpe~psugdrhgxq upigsudo s nqrqosh pqx g x xhdrVnpphdgwqx dzus q0ws hd hdxiq q ggpxf s ~ x n g h n x d q m dx q q m s p v 3.13.2 The Fibonacci Sequence 2 3 r { p 2 ` { ih 21 xs2q r X xzE d { xs3 r X 2 }r }r rr d 1 3 a 2 F G u n{ ` t f 116 Modules and Procedures - - F k & Fk l l f z` `i{p 2 xXs 0 G zi{E 0 `aXY W8Xs X d d X X 21 xXs 3 21 d X }r }r drr 0 0 21 xXs 1 `rXY W8X X G X jdkwverxhrxGrhy 0 V s z p g ` pp $r 4$ r $$ G $$ G $o $$rTurGG $$uuu h G $$ r r $$$rr$$r r vpg q d xjtedgqn`supn7xqnnxustqp$gustqpgpguus x!dpruiusspgwsqugmnmfxTdvpvpgqtqrdxgqf s sunqnuswqpguswqpgpgdhdgusrxripgondne fxxxgd nh rixvdgfhdrmgfrxdpuq`ygpiqvgtpgues~rnyqxrmxqgnnfsugtnqAnyhdfhGrxpgugpushswqdomgfru xszngpqnd~usqBuqrsgufqs rxi fuds xz s p x sg p jhdrxhtmhpg7p dusrv ik s g pspusg Apgg n xg dpgns rx7 fpg xpg novE i v lu u pvugpfxqmmupVnpyqe utnh quq $$rn upd y s Tsu "xyGp dun svtrgf pgd squsfrgxfuqgess p gnpGdnpeqgzp pqus rtdx gpx m uzq pgtq dd mgxrrxfq x i o s so d x qh sgf d x e o e mm vf u unApeudu rxVrpx gru sxf onrxpus ppuguss uus pigwhrdq yx rpxq g unso ydpxfu5zyxoy hn ulvuupshd upussugi xxyx d5ug psgrmd ggpxrf x dond q s q $ r$r r $$r r r $$r rB $r $ r $r 4$ r $$ $ $$ru rGG $$uu $r$rrr$r r r x s s q g q u~ d q m v zpdu ppug gf~nhm dripus rxq uspq h~pfs ggpxg d s qhrx"hdrhgi yvusq wvd q~pDfustqrsrqxTrrpxigy gd pgwdpTrpxgupsq n tq 1dhf dn nhp q pxrgugsi thxmtgq x upogs px pigugrenv uwsqfqft d gpquonsg rox i rng n prgd epxg Gpq gmuqtxes$u x q x d f F l 3.13 Recursion x # s 0 0 0 { p 2 xs X 0 ` { ip 2 X xs xs X 0 G iE z { 0 }r rr d 21 2 3 2 1 2 3 1 X xs 0 0 ) 117 v s s x m f x f i f gpfg!u~rrxxrxmxq~rhdgzrpg v p i d f s q x x s n erpxprx~rgunzwdypvr~uq~qh )1Y )x 1qyY v3 ' | X X X { p 2 pt~n~gpfgnpeuyrxpqn~nr~mx quphGpux !u s xh~pi ugrpf gx dypv q x g n s m g s gv s pge ujpjuss phpm p ugduggfss fx 7pr n xuv! ndhpgfgrxp rrv xrxrp donj u7nhpq drup drprgx qupf pvpsu~dp xs pgnnpffen hexmnx rrx wpqngdp7wg uonq s drnrxxr x npsupxgrmx s p i s g u g g m m g sg y g h x sq g x s i s {dri s m g m y n r r m x ep prr udpuypg ps hg g x upgfn xhuvGx h nrpg i g uusdnpdtg gpuq g!s pugushhxds uws q uhn"x oxg uphepp y7 p ugf ugs !s prxm5ohnq pgr pgpox xTpdhtsug suqq x m 7ums uvrpxgypvpgfrxo~quus x x m d d ix m x s ng~hrxx znvppgxp rxd !syq pmgusn unwrnqs xeppgg ppg g usond upsgumgfuws uqhs~ygx zgpf ~~g p qrugsx qf op i g m~hr pxgtg qzrpxg ~ n z ~ s squ yvrprpxgi hdx ponsy $$ x n g v n r sr s dr gr uqs s g uvg gn d x s spgusv rm xqf ups rpvx ouus top q g udpxprpsiugi txrpf prxhonpdup 7 d x $ r$r r B $r $r r $$ X $$ o X X T X $ X X {ErXY ` W8s X X `aXY W 8Xs X gE E X X { X {E X X dlpE { i X ` { W8X X ` { ` X rY 3.13.3 The Towers of Hanoi rs ` X X W8X X 0 xs X 0 2 3 118 Modules and Procedures rX) qF@ jhdpmgfusTssus"yrur m urdh fu swqxqmddrpg"yrur pghdxqrihd shnprgvrxuqsmpgn0mgufpgsyyhn7qrgwxqqixxqrmygxpndwqnpgxxoqonqunussmqnpgtyuqkdqruxs nuvpusqhdhrxqmgxgpfGgtqdqvri`phousnrivusfem`qpgn`usztqpg yqrnhxqonhm!vr! ri5xdgfyghqeGhdusqriGusypgn0gpgqpm jtqpfpgg"4fpvrixpxgqdwgqfuspgnxrfrpugsysgpAoqpgphmgqgwfpgm~xoprxpmgqmmpThqppgonfnhus h T vtxmhuspg~onxxhm~qnfrxqzpgh p n~xgfyvppushfv v'rxmusopg~nxxmypgwqusnfxqypghqusp~on~xvq xm qgnxAxmpgwqusgnfrxqpgh p mxgngxfvppuv'srhfv p vum!zusnfngwqrxrpus~ony p Fpghxxqrifd~onqx hr'"xQIqh% Y1(1|qh1)x1)Y) k Y|v3 - F F Fs F " h vqju~qd jp pggpggx s g xnAgp uf g rxm7phhpx rgf7q 7on xt uss 7ri hdgfrpghsqppx usf qp T"usu sy 7r gppnd rqupstgnt pfgnduw ry px hmg eqs ppusgs fT V rx dq h srqupsondushtvq upgyxrmpg uqjw s hxqxf p eg rp x px~ryni x upsrpxurmhduhfd prrxq ~onxr hzpg~umpv nsru s x j s m x r f xquz i g r m v i mm x q x tvqx mqnrugs p wxdrqqx hx f g x i d v q x f q rxq !ph~qrfus pmg rg x~sx!q rpxgpqhg ymx m pq m f x! d ptgx qm ud sn rx rw hd x n hxqTx pg tqd TphgpfgTg"pm wgxmTrxTtr'vrTpg q q d m gx upg sf y x nrroushd pxg ng r i rxrd pdpus s uhdqppfgd os n dp xs extvuq s rjex hu !7f hA"oypgothp v d rTynx ph5hpv duuustsqummuu7rppg x gnus r Gxq rgq pxt!qs uqprp pxu!pfg gp upsm s x x g s s m x q s f g m gufsnGrphqppugf"rxxG"zqtuvgphzq'vuqpsrvq 3.13 Recursion 119 - F" - d ~ &x X X V G) 0 W X X r G) X 0 W ' ~Cdc b ' XV 08) n W d b }r X X V GW) 0 21 W8s X r X V ' W p W 2 1 W8Xs 21 c #01 3 ' X 2 rs3 d d ` xpn X ' X rs2q d ' X r V dx XV 8) &~q X 0 W d q ' X r V d ' X r d ` xpn X ' X rs2q ' X r G q ' X r V XV 8) 0 W 2 2 n33 |~V d 'c ~ |# d ~ iW1 r ~ ' d ~ b ' V XV 08W) 2 2 n33 V n rX3 ' 2 2 p { rX V ' X V G X 0 W G p g z g ` #8)h ' X 2 rs3 { 'rs2q }r X 2 W r v) W G W1 V ' rX V G W TV 0h ' V 8 23 p ' G W) G 'rX V d x d ' X r V X 3 ' X 2 as3 XV G) 0 W d c ' d rr rX3 ' 2 r 01 0 8 'as3 X 2 2 }r X V G) X 0 W rr d r ) d r ' X #01 W8s X 201 ' # # #oo u $ Vro VVr$r'&$T$ u$ # Vro $ $$u rr ru $ rur urr r rr $ r r rur ru $Xr r u u $Vo $ uu rr r# $ u $# u rr T uu Vuo $ uT V# ru ur u $u r u $ u u s $V#uo rru rru o #o u $ uu r $$u ruB 4 r 4rBuu r 4 BrBuu ff $ u$u B 4 4 $ r r4 rXu$uB s4uu 4u f f uu r uu rr uur $VrG $uu $ u#rGo $$ # ur r V $ u$u rurG uu$Xu r $ rur $$ $ rr ru g s q x g v x s gutsqpu~ptgexyvusrpern7quv p hwsufg hdqq x zpqmqx xgnxrrrpxdxm tgx q pxg d 21 21 W 120 Modules and Procedures v pgpgrxoupsgfrpgr5n5dgfrxxIfustqrrxhogpgyus5pwgqGvq g x i m qm r k 4qrx n = n 1 + n 1 k k 1 k n = 1 n n = 1 0 n k FV pxgups~nopgdy q y opg pjgrxupsgrprdonddxex $ rpxghddpgtdq7dpwgqGv p g fx gi m f # q s r x d 0 v v g wq g rpxg up~ q rpxghd~npzxg hdrx rn pxpqtg dg gq rhdxqw pdpv pg nq hppxsfi u y7 uytp p ushu x~!prpq uxps zpi gusn m pzg q gx g m v s e d s q m 0 i WYV 07 0 s p p zc p `c `c p p zc zc `c zc p p zc 'c 'c 'c 'c 'c 'c 'c 'c 'c 'c 'c 'c 'c 'c 'c zc `c `c zc p zc zc `c `c p p `c zc `c `c X iW1 ' iW1 ' iW1 ' i1 ' W iW1 ' iW1 ' iW1 ' i1 ' W iW1 ' iW1 ' iW1 ' i1 ' W iW1 ' iW1 ' iW1 ' 3.13.4 Indirect Recursion r r r r r r r r r r r r r r r p ` p z p ` pn p ` p z p ` f p ` p z p ` pn p ` p z p ` f x XV G) 0 W r X p d )x`x d # s #4 uu s uuuu 4 # u s uu 4 uu ` uuuu 0 #4 s #4 # s #4 u s uu #4 uu s uuuu 4 # u s uu #4 u ` uu #4 u ` uu #4 u s uu 0 #4 u s uu #4 s #4 uu s uuuu 4 #o o $$ u$ & rr u r # Vro $ rur u 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 ' 3 V c W ' n23 2 b c ' X X V GW) 0 3.13.5 Exercises n 0 k n k 3.13 Recursion 121 ) r) ) F r 2 3 V T us ns qrs puuopxguwspr pgpfpgqmm du qerpx~nopxghd s g s sy q g x g s y uqunGgfquTruseuos n x $ quusiTpxgf tdVs cuf wsq qxm g d s sh s d q q n v k x nhuhuysn p hry ns8u y$hy hp8 g xu ptsmg utq n vrriush ddrx rnhrs uqx do 5nrv i$y8mdwuhsq dn g jhxrpxgupfrxqmmusuzdgfrxx s pp v u f u tsrq p~ pg pg s s g s m fun rpxg$xq~ $ru j q ! ouftsrrrxq x pfm rn rGxi q x t7qs d !qxxd p p x gwy q pdgd7xu~sd wgpqgg hf wvpqgy s7suwurwsq xqmgpdpfpg"pwsug xq m q m rx d h 3.15 Case Study: Adaptive Numerical Integration I 'vgfusd $ nr~h~pqhx~pm x d gd q s xi j nppfng ux xs~gg p uq grrxf sx epg nhsdrpxzqg ogp wsfg u uosq nx q~m n x f vrusx d ~xT qv wdqs xxd 5x zq r i5pg rp gx m y s r g egprs pxguhdpg7qu7qnyqere{qhrx7m nto7nxpg hjuj rgpxs f x grrqtfv x g0hu xpgng qqwfhnd pVpTruxqdvrrnqm rpv4xx pusqdpxggm hypddgpquhsd t o nxydqugsm xs!yurwdqp rxh( rxqxqrx)tx nwpgeqh f i o x d i g g d g s st n r@kkY e x h he de u n 8) 8 8 0 d 8 I I y I k 8 & y& F Fk v Fk & v'uuquqyuluql p t pp p p p usvuyuh yulqtqdtyu nyuowpgdyyuiuyu uqtroxpgpghopgd vri gwqhfduswqqxsmgpwqGnr q i k xfzpg rxgfsxpg t yytt k xgfz y " q y usxrxqrxpgpghxgfgmpfnxxguspusq~~oonqtqdqysudzgpetqrxpprx~pg~nzpgpgpgrxgmsuq5v x p fustqrrxqmqhdxvuv$'xp7qv 5 y r rdhy mgfxxxpgqrxoudsnyvppgtgwqqGr sn E s q qxu q uq p p uqq ru kp t k qppguro5puyqrx!r pghtqdsp rrp x pxxpduhv g s x s q q ve r ns g 8 k F Modules and Procedures 122 - - - - n0 - & Fk Fk x F k v & Fk l l l F & 3.14 The a f b x dx V Statement 0 n 1000 8 8 k k v Y) v v v k 2 3 V 2q V 2 q V 2 3 V p p qrhxyGuq$qe r q vpusg fpgxqommusgpgfrn7rx0nurs0pgqxqtqGonqyuq$ x g ngGprgexpgrxnsufurseyhopgnxu$vmukhstq8xerqxnesuqus7tqndn7fhd7xnqevritpgp"uosgrfpuxsemmuns qqpunefpggqrxxmqqwTxpgn`ppnsuqexounstn drx~uspm7ysuxTqyppusghfgpmh8un oneus sg r v g! r jyohumsq~hnvustnhvphpggpxmuswq7usmrwxqqhpqrghxqtqsg ntvne7erxn rrx" 7rxh xh e spu fsqrxppgpzpgtqusxy8 oxpghd jurprsxyisuoxpxuussqqrxr7neduypsusrti5qpppggpAownqTupp gfp ydpunspgne8s gdrfirx7qyegpm drx5suhipgxoxuvumusgstqfgxpng x snhpg 5npg qners yd w m q g pvupfrxhumptpruxs rumwsq5r xrx s g g s s ssuquqon neorpv ui g 8s pfrqx vtqumhms uhp hxrxTwqxq nqpd n upxsg nquqdpsph rd us upsgpuqg xgfpfnuu nrx s g gi 7 e juq ypv x pgpgdxrvxpzhpgrxumuwsqgvrirpxguspfrxum ~onqnev wsudhpq x dg s x g h g qm s yju Gqdr~dTrpqsn pxtg g v Gsd xxpqug u7ns s np pBwgg phgq udpgs gtexsgpfq qrqnrmmud s xnq t7rx rnpxgups f dpu sws6qq q pge n q x s t h guIq pxm gx o dn pgg tds h q g rxwqq5nxpmonrpxgusq x vn ustqo rg pphig xi uqf ds zpqeou ~npg g5r yrpxgpphfg rhd q rgo5ngusnq nu tsq uyqens 7p Gdpsug x gn qrpxg wqnGpq gp$wf q uIfgpxd gfg uhgds enn"esuf rd q uuqhs s hu oqmsd gpg nurxs g 7ushpg g 7 mrV 5 hrx gr g s x x vu o pxm nhd pz hprux umwss q qopx ndgrx uss uq n pg dgim frx5r wqr eTwssqq ns utsq q rx xuvm jophdps u"yhps grn v xumustqvrpeps sugpfgxump gq t d t ne qh d dy qsuqnhsy u dqonrxs g nrgg nx ypvmtq qun h rdig 8 d tdonq qone o p x hdg r xrhvm pprug gfThuspqu!x p npe yxqtqg n prpxg hq q7qntdypppg q guxmuv wsq nxtnhe npzopxghhqAqnwdGusypvqr px sqssuq eorAn pxurgsg pfy xqmrmupxg~gppfxgg u xqmumstmuqouyhpns pg guxuwsqGsmutpvqspgru x ps vu~tsq spdgq 8us5g n5 t rdq xmgnpfg n q s us s jTsusx y uvqh$ gpud pgsr rp x Ti grghd x o gyn nrrpxgri xoxrGgpxdvutgps q qf tpdgrdrxupxTq muwsuq qgmn upnrxm rpxhnghrpqxgxpvusTn rpg pg df z n g s g d r fg n undrpxgd!~uwspxue~~rdrxe s s q g s xmm nxoguq"wpqgon5uustqrpx!`r$pxv gd pxgpguhds m fd s s g i un T pp G $ru u g d s g q m s d m rifr pgugpfxum5onwfqrxxtd7gxx Apusv qw gpx pg r$qprguf5s n~o hun shhfgv p dpg x ~i p f m o A t ` ` v p 0 ` { 338) d w Gf&#{Id3 v { d f x = e x 3.15 Case Study: Adaptive Numerical Integration 2 - - k k @ v s I v C j d fw h e h e d f rkG rd kq wkrrd Y) Y) 2 3 V 123 V G 2 2 1 X 2 s3 V d 0 d 3 V 2 3 d3 2 2 3 1 X x 2 1 xX 3 2 d3 2 2 1 }q 0 3 3 V r ) V 2q 2 3 X xs2q V d 0 d I 2q V d 21 2q V 2 201 ' 8sq V W X 2 21 W 2 3 r $r $t $r $ruG $ ruT $ r$ r r$r r $r $ $ $ $r ruT r$$r $uu $u r $ G $r$urrr$r r r $ $urG $$ $ r $ v gq g i s gq s s n g hphrd qn n v tjq d!uq!uqpspp gpxqtqtrpxgupfsg rxqmmu!n!qrpxpvrs xyhdh uwsquqps rx rxtqqssuppgtsq on77sx g rpus 0pnpex`r$p x qo rn 7x7pu n0ngsu x o q s g x s y n g g g jrumstsqpg hsumn uungpf rqx m umu`xx gupupgBm~p ppugsop uGqwsg prx5uq xwqq pxng od ndyuhxs prux e jj j jhdupvopgpgdpg rpxgupfrxqmmupxumustqnzypvusgpfgp x~qg um umtssq s s g s g jx e jj j v s i s jxumhuhpruxhm up$wgs qu~o n wsuqqp nrxexyqq t o np ggxy vum!zsus pn qg r xh!psuq dgtfrrxq pxug ghpfn g q m s s g n qr s q m ~ z sg pvupfrxxqmmu~ uo~eq pyustqrpu~n9@ourpxgusgpfgm xm s g s sn g s g s q jx xumg u $hqsuqs us w p ruxg ppq g xtqumuqwsghqs ufGtnssex n d n zy thqp qudexg s ux up$mu pstpgyq7 x r u5suoqun"s8q hn gv opdguu u'v7 epv6e su g7p8g tpfyg x uq 47$s umnps 7 s f s k 124 Modules and Procedures T h / 2 = (I E h / 2 ) (I E h ) k U 1 T h / 2 T h < tolerance 3 k U k E h/2 = = 3E h / 2 = E h / 2 + 4E h / 2 = E h/2 +E h 1 T h/2 T h 3 v Y k ) k ` v 1Gyd 8)x W X d ) 3 V W X d 2 { V nn W8) v f { X v f )E W8) { X 3 W8)3 X 23 2 3 V W X d )x 2 2 '1 2 21 d W8YG X W8sq V X 2 8Y W X V W V ' W X Y r $X oC$r r r $r $ o $ rr $r $ r $ r r$r4$ $urX r v uhpduun5rpxghd!zpugsx5 s s s s s s g r$ungfdu7p"'vu uu uqulul v p pvugpfgxums putsrpg s qm g q $uvgpgusoutvppgpgriuxqTppvpgdpxgodTrpxgrpitgqph s si m g y d g q s qx d s rxwqquppguwfr0upg n vk x q wqdhhv p k 7vutsdus`usx 2 3 V 2 1 s3 V W X 2 21 2q V X V q g V X 2cp 1 { 2 xX3 V 2 z V 2q I 2q V d 0 d W d { V G X z r 2q W 3 V d d d 2 { V X 2 2 3 V X 'G r X { p 1 2 xX3 V 2 G 3 V 2q b v p c& V X 'q a X c r X ' q r 3 X 0 z vxE10 gp W p# b z ExziE W g v gE bp)c{ V z X ' q r X x10 v z g bhi{ V X ' q r X E1i W z 0 g { 0 cc{ X V 'q r X V q V X d X 2 I3 r d X ' q r X 3 x3 W d 23 23 2 3 v q i sus uftsxuspdpuufh!pp ~ewsfqgpt u~exq y$~ r un rpxgufws d ~q x rnm hd pxgx hd q q m s s e q r m s g r $ru $ r r $ur$r r r $ $ t $ $ X u$u rru$$ o $ur$r$oo$r$ X $ o r v o $r $ru v $ o r v r $ $ s $ o r r v BBB $ o r o v o s $ $ $ o v o or v $o$$t $ p W 4 x 2 4 e dx 3.15 Case Study: Adaptive Numerical Integration y = e x 2 f x = e 21 W x 2 125 8 jyuouumyus!qyunq tyup gu s rx yuir xyxeqhsuz8pgrxg u mypvtq quv shk 8 drxr ursinerdxd hn xrgp uxxzumwspqgux p`m guustsgqpfwyqg qx m se i j s gnnTjuguhsq d rphv !k ustqpxeqrxqtqpgpg 4mnmu sx ne p snsug pnuiuy xBkuku rpxv Vgsk gupv pfgxpfqmg m uxqmumuhgpss rpxuTg m uwsqq p hggp Tumhns u~onsus nTo pTuqwg eyqf us n s s r) )3Y 11Y3Yg 3xq T 3Y Y" v33 - - - - ) ) 2 1 W X 8sG W u v f w fz u x` u u v f u 3u x` d |~ d |~ v g g n s s v ud s szg pns npe pm unyq dzmundygfustrmq rx~m uxos n f vyvu s q hpuq n rx npg m fuwsg rg d xqg tnrv xs pgv Vn usdVrpxgtq wqhq d nhun q dm d x eg xhu stqrxx gs pfphpx yus sy uyqd x pgf riIfs v 5i nd rx ufts q mhrhz zp sg n onn onm puh ux sppggm rqf xm rgp pgrsTp rgx rrrxTn`pmg odq u`m pg pggfrxx xnA yppgTutsuqmpg pn ryg m!wsufiB$uqq ufqxs r tsm qrr x7q egrpfxg usXnqpwoustrneng ourus v nsu tqquos numr fpoon hd Gxrgmx gfgynxd!ohd 7uds ihwun pgsgff x rm g p rr Vr4rB$rB C$ u r $X r r ` oC$rB G u G r 4 $uBC$r u 2 1 s3 V W X 2 3 2 W 1 'q ' V V 2 3 r V V V c W ' ' ' 2q W 'q ' 1 ' r 9 V V~ |# xq ~ d ~ v ` ` d V 2 3 V V~ d ~ |# xq ~ v ` ` d 126 Modules and Procedures y = e x 2 e x hr ho r 2 o g Y|v3 8 v qrx g n | i ( s g uhpds dq r x pm tezpvr rp7xx onopxd ~gm fu xt pdp q grpx~xpsu n $pd m tvg puhdsg fgpq!u p~ rxqqxp x us~ g x h s g x rgfrxnr~g uus s nmsqm x~wq zp rxuvwsuqtqg ruqf x$ps t g g s ps rrhuxig hs rhgpgidg p hg n pphg n uppsrhdx p m pg gnrygxgf gpf rpiugrisfu xy~p opv d urxs qpxrpg zg pgpfggsurux g d o ~ y 3.16 Bit Intrinsic Procedures 23 V " Tk v v VT VT - ~ gh s~ vustqdustgfusntpgonusxvpqpgdwdqushqpgrqxuigfmudqstnp`munpshgeu`nxpgnphged jtrqxpdgusgfprgx!xqqmigsumsd xnmgqufpg$suBpxgomuvshuxpgsVqdrxrvVqrx0pus rxpghdBpg q f mgfr rgps7npgy s$uBxpg7hd jursgxpfpugsgxfpgqmxmuqsAmmusruxshpmxufpgu7muswpqgmushpgus7muspugsqwdnqxTpqgteqwxumursxp7ghdnt7gxp r gr h h vrxpgustqrpgxxhustqpg~onpg gfrxqx I kuh p qxqtqnpge jj j ~ g$ jusfpgrsxqdgftmuqsx~nyv'vripygzpg yrxpugsAsuyfpgryxqmymusz xymgfpupgrppxsumyqxpgn m nh q d s q s d nitvunrsfxqnh`80pgouusmsph xsui8 wqusem s"iqh8 ds qutsGdn Vnvri4q su gfpsguqxmhmn uv r s dr s pp g i s nTuv rpxgv rdpx pggnuxx ndpf hxg urstngpppxggwsu umhsq u!png pgnrhusprg d pg g g xqr f!r s rxums x r ) ) T) r~pdu~ugpfgxum~n~pwfq vq x s s qm s g rpxgdxpguwsopypghmuhuoynpgdv l pv rpxkvk g x vwsuu phgq dusduThxgps q g s sx uhpduxGhpxumustqxqr~n~pwfq v p s s g x i fd g 3.15.1 Exercises v q g quex omerh~u srxx xGqu m~d ug pxsg rxrxqz np gs x s n f g qtd e neqog edn 7phGrpxgpopg eenqus5op dqopugtsqtpv p gus jp 5nyppq5quyuos hxqqugr5nuxqmmus trpqn gggf q ens g usg vgpx hd q s gn s s tjq nrn x Gppdgf n emsugg pf f rneqx uspq yd rpxequq pg txuqdsm utvqepon"nu0npeprug xeqtsp rxuq xsq 5 q rx 3.16 Bit Intrinsic Procedures 127 4 0 a h f 4 2 a+h e ( e sin 2x ) dx x x 2 - dx x dx = - h [f ah +4f a + f a+h ] 3 - n z ` r $$ V 0 W c V c ' 0 0 0 0 ' ' ' ' ' ' h hn 7 2 3 nha 3 2 G30 ` ` h330 ` ` 2 3 CV ` ` 0 33n 11y& 3G30 330 ` d d p { d d ` ` d ` ` d ~ | 2 3 ~ d W Tr 1yd& 3830 30 r ` d p { d d ` ` d ` ` d ~ |1r 3 2 ~ d W Tr 1y& Gq0 ` d d p { d d ` ` d ~ ` ` 0 ~ d W |#G3)Tr ` d d p { 1y& q0 d d ` ` d ~ ` ` 0 ~ d W |#33)Tr 3n ` ` 0 2 3 CV ` ` 0 d ~ 3I|8 b c r~Cdc b 0 0 ` d p d d p d z 0 0 {hG30 ` ` {h`30 ` V }r 32qyd w q ~ {hYr ~ z f ` W W V '1G) 2 V d b { V 3 G33}r ` ` 0 d ` ` 0 0 W c V ' ` ` 0 3 ' # 0 r G3 ` ` 0 G3C ` ` 0 3 ` ` 0 3Q ` ` 0 ` ` 0 G3 B r $u $ r #T 0 # rr r r$ urBu r #T 0 # # uurBu #T 0 r r #T 0 # urBuu B B 4 $$ru uu X X 0 $$u # $ r$ $u r x s x pjue x p d vuspdus e~n n xGppggm ums5ru zd s n x rk ns xqequ7 o fusg eu uqpspgpf$g u 've uqse g us gp h Gud y yuyuz pg grinxxpnp eynuqyvs xi~urr pxghddpgi pwgq kjv 5g npd7psu g gohn p upsg uq7ns pgups s usg k upkgpdipq ygo p7q wgm7rtpgwgqrx op pusAupghpn rg rypv s xuqtjpspgpf$uq v q x5p u priups gtqu7ni ops gn Ag un 7gufs5gpp onAspgfpgusAg pd gn s g urs phd 7 n uyq g pgryquxsApgrs Au gnps oe ruyukk tvuqprqg i rxpusp gfghnpvr f rhpdun~uusAs~g gp ip~ph od xhn onupugus ss s gpqtgi gopp7pgpg us np v pgupsd hp gx p f ei txups uyuopks g7exsu quprrBren rv uyk7dupxg qh d gr g g g grivr s i jrjpg mnnpuqwvw s ppuqgwg s~iuqshs fuwspgpq etqxd xh !qm rnrx nwg5 rrxxqi xrffofd usd!q uupdpiu g spdqusd qp g5topq pgnhg !hnx n uppwgvg q7dgpxnhnugs r ~x k qt g e s r i qe q g sA i i 0 128 Modules and Procedures p v $p$ pus5 $$p qxrxpg5d~nrxs dpusg p A jr x nphtgqgqgrmv f xdrpxp7g nv i dyvvv hdrnyuxqxey u$y s unkv p y quyusxq uy s $vnvuyxyugi hdr$uq Iqrrxq pxghugp pddpppwggg qGprv p q migw i r f sA us s pg ri 0V X XV G 0 W 08 1W 3 3.16.1 Exercise - - - - r g xg i i g g n 'vqonrxus hxj "quqs og pdx rIf xq pgrphmm xn peg n y pg drxqri pdg $ nhus s yj gf d mprpdng f gfrxynp$y$yon" uq psdpqgux nerxh uyxqtfk xqw pry~pns og enrphy o$ u q us yhhxdqq rpgxqpdmpgopwgqpgrrdxifgpmgd onq nrg hyn g i n e n s G 2 0 #3 a 3.16 Bit Intrinsic Procedures 129 - 130 Modules and Procedures v x xn i s n x g s s qrs r ~rqg rog px x usu nv hi uqspgqq s ry xppg g dpy uson qd enm ! quongx g ponpA qg frxq d egsq m T vmhuqs d hngp qv y prfg ~qng epvpg5gwf qhs xs fuwsx~sA hq oumgq rxsf x qhs rruvrssmsn xumpgtqusqt AspVqgg v z usqrTqu7undp rmqi sfqxx mxp xxrx7px4f wrm qus h g jj x! uyonsi su Anm!d hy qupspgpsn pep uAsx hp pg osu unqgptfrr!r!~oxs pug mgoufs pugssguvzus 7m f s g uqsphqprpgpfuusnpervustwqqurnhrwvd xqqtr g g x m s g s x d ripf d 4.1 Declaring and Using Arrays in F 4.1.1 A Credit Card Checking Application d d j s sq pgy g g qm ~ ouhs ugx rusTxsv pvm pg pxqrgdgf m qu~s u fuwsqpq xxnqsuxd hy uqpopsg pn pgg urpsg uighs sum mngr ~rxx usq m x s ~ mwsuvtquq5rp gwsup uqhfm rnps tqhdgfrxrGvpupsgmhruvtqpgrxTuq Gupggf x x xm f s v i jpjgxd r pvpgwguesq grufq gqsx trxquq`$vv uuwsqtsquqssquussp r pxrggx qudeqs ro~px x guvutsxwswqquqm rpms nruvx newqtsx ou nwsq rpm xg jups n opxg odpgs pwgq pg us sr pxguwsqx mr xh dwq su os xp usIf ~'v gf s tvq xpvmmufn7ugfxmrpxAhdqox5rqigdopg x espjg hdx y~sgnfusnv grpx uGvustwquqnq7rgfp uspfrv o s hm g s q s m s x g m umhxn ueopgrvx pg mifuwsxqym nhf dxdd pwgex5x hug sghpg jy g p 7wvgpf qhus hgfus wf5x tGhepqwfs ero xtq pxh g uwss huqs nmr"zqx o rdx h~syrq vuvx rwqts pxuqgusyqtsums ufgsf s o ` qr q m g m r " tnyv pvoud qs hp vpuspgpupgms ruvgsv utfuwqsqusunrrpxg~mgpdupfhsg j rTsrgspx xepp qr xyq yxsu p A p ge x x s vx s j pg gufm s~x uq ~rpprx!usGppxq rxd ppg htvq mhq dq puvxsn pupsu u7ss dx rhp eyx pgd xtTp d uuu!"ss psrw7exq qdrxeg wpsquqondrpxtqrqus5xrspyhsgeArqgp 5Tyuf squ7s rngtd wvruqosq spuhg hs hq xGdpg s x j d s e uwj Ykk Arrays 4 V X ) 2 g ufs g pgrg g qv yf Tvuf!duss Arpxgppr xy pqgs ynuv pd us s v ig q ix s x sq7pudhpp hpusdpgrxun u guf(mi xpropg psuq x no v m q i x Ahx dx spggrpxgpdrd xs7 h$pvgpfggpgte7rruss ufwsq rp g xnq n uqs rj n `xxqry gufh ri uupsswgqupsu non ypve us 4wdi pmqrxg n7 rpxguvupsduqBuqui uqnprxunggpx z 3V V z e X X v v v 2 p| V X r V z X r V ` X X X X 2 2 2 fu!quiuqu~nnpezpriuswguqs~x~prpigrmg s g d x s s x x f s m x x i d vus pg tq s uzhrq xo qruv s pgq jjfd uqs d nqgfdrxuen"pguuqusTprxrx"pxrx f qri "hxu Tnu sHequsgfrs xx s wdqprs Gusqhgrx efn"usi nx s s s m x g i d m f n5usr s A7 tpriupsgtx qu xs 7x pdu5 onAuts pgus5 i hdgqrs d yygg pfgxupdurggpvTprng ssf u !s pgfi riuhpsf gtuqwuqm eu ps fos T!pmgpfged opg ujs pugpf pnuq psugs7 pq g "gi p qrxf Vpgp qwvrgnx Tgpf 7tqpgurggd )q uqui uqd grxnrxnx sVgpsup pvpg$u rx s d r o d F F r 4.1.2 132 Y C z YCz C Ez YY C C C p gg g rpxwrmqushphq7quiuqurhppgv ~ju~ s upsins upsv u Grf xu~ts qhs ups d pnpduryxs m rdmp $xu rx qx q g x m z q Arrays h Y qrv )gYYC )|181q) g h h hY3k)Y)&8V183) g h hY3k)z4)&8V183) g h h Y8qrv8)gh Y)|181q) g h h Y qrv )gY)&8V183) g h h h Tqrk)8Y)&8V183) g h r k h z 3 Y8q v8) h Subscripts V X ) 2V X ' 1` V X 2 d b ' V X 2 d b ' `E { 3 U V z 3V V z e X RY R s R F P S X 2 z X r V X 2 ` X @ r V X p 2 )p y e r u rkw YTr iY u v jn p7xmqtg gsuqi us phhg quqs rhpxgp qtgpq ~ rp x n $rrx xtqq rrghhrxdd xuuoopx nghp y pgpd ~u xrq uqqgi dp ~~ynypvhgtvripufspg ifufdd s~ ul n v i s q h u ur gfus~ppgnzudmdr~gufsnypvus~hhxm s x d q h u ur pjtguqepppunxmwgqriderxh!nppiwgq ghf tu psg uqw xese~s nq yx pruis s s g g s s d g j qm qx f d f s rxrgBnhgqugfusopv t nrppfgm gwGgpq pg unqursGm umGs prxeusnGn rx s x d d vd rxq h pjggrxrgu m f qx f s rpxgf m us A v g g i s B pprusmuerusupspgfuwrqmerpxpn rxq5ptm dqrox y g f s q x r5 x rg xg q t g d d v g s y f pghq$r uppg g uy svvy np fuorxox ngdpuog n rv !x guufss ssu wgqer~suph uitgpsquqehspxnpg x d g 8 ns g m ouj upss gdq(yuudfi x!u rugsx 4p pxgmrhx uqpms z5yg nuusstqrxxq uqwvs d oxf nh dgsuq pm f pgv ru pm wgqs d h d f g i q rj dxi ~rip op i gnyxhpgpgm f dgx pg nyv rmupxwsgd q ursrxmx r~ v xdpgwfrqrix dBnv dops ygghsuf s pm nng !qd h d mgnvxp pgnf r h r rxg s jrpxrs 4ptgqespvpusdquspmgtqrid5uspgugfnugf4rhxnp7xpgusgf fnpuuf ~rsspxgues rxpxTq wqrx rni `ftqG"y dg 9 s qu dsuqs ompuvhtsg wquqexdi ppgdTVpgnpge g g s f x xq r r s s s q s q vvupg vuhws qtmqu~~s us nywg qmunogg npg wqhrd pf gufwshqn xm x ujjn s m7musrgpqsu rpvgghg i f f uftwsd qGtxm qqupegm sttqx rop nx g usdryq Vpfhmg uunsgg opGgpmxsfrgpuf grrxqtsg fxpvgTpufmofns gz prp 7uipstguqgv s h!n pgppgrp ruig si q s x x pxsg posnr dq x m q g g h 1z 3e z V 2 )p z ` V V V X v v v X X X 2 2 2 pg r v oqrvugfppgnp~tqrghqusxushuhd pufhsg ypg esuepxprx~ n yri q i s g i fd g V X 2 4.1 Declaring and Using Arrays in F 133 1 V V X X 2 2 Idc b ' xiE d ` { V X ) n 2 V X 2 d W rV d V X 2 d q e |1 f o ' ' ' V X 2 d b ' V X 2V) X ' c #01 V X 2 d b ' z qIx`E z e d { W }r rr d ' V X I 2 d V r h uv u X u v v ptgq m d i rpxg dj pgpgtqpt g nyypgzhuqs s r ppg~gpq gd m g d v f x ins !d r0xX r4usupgr5x hus pnrxp7pputpg pghxq juj !nx oeng t pg uxgv uhqf wstdrqusqs u unsd !sxu up gnpng u5us nns wsuv tququss phng opg`xrq pxTxhhdnf i h u r urruG rr G $$ru v$uvwstquqs pjgvp gpomfg wgq d i f n uq Gsx uggvp hnf hgp xrpdx us z jrrvuhsx txqwqusi uys pmxqgs t r pxrg wsiu duqxps m xAf hq si ohdfn v gpfngzsnuuf ss gf d g d dr f s r drryxzhqusquiu quygg !pv u~m i~squ o qnunpxgghdu~nzrn u pg prhdg px qx gqwvi odrnidf rhx uops npIof pgrhxdi xqqrqdn rhxn uhpvsv h gudrshdqi y pwguqrs i5dp h ppguq~s ppg r gxhus s h u ur v m i f q q s d q ppgqzwqrd juq gTud xs0 p dg g p gtqfm yusdupriuf stpq g nxqrugqwff rsx!pxgrgpf xmpp udqhsg mh htvu on hsmd rpd xg d s x g q r g h x g m h s 7 trqp hrn uisgvi hmf d uqsu shxn7mGxs rpx x rpig n r pxyunsig egyyof uppg5urs n y uBpsx hg ppg0rpxgrt i q d ox n sh q gm v n us s o wg roppgutsuqmg Vspgtqmr sx!qr0uqsd gun sudos gpfg g i s fd uiuq nhuqtv hfdux s q urph5ss sudq tppv uxdm uxrhspx uf np(d g ufs nu~s p mg qehqn ph od mh h u ur gfus~rx i r h r i~ m v nineupsmq trq gsiu fhd wdquqs "xr rex pg nepp xx unsoGpsfy u pqedg uvrsi vuts wquqqGs usrrxq psu ufprs xGu7dss 7us x g r h u u ru $Xr h u ur4r B u ruT $rrT $$uu $$ ur ru $ 3 V X 2 X 2V X V01 134 Arrays 2VXV 3 3 d W d1b8{) 2 V r 3 b8 2VXr 3 2VXV 3 2rXV 3 u ` W d1e8{) 2 V r 3 zd `1Gpd `d 1 dd3hd W drr 3 V01 Yud d dhrdrtTuvrfh@riTu s X X s W XY t t t t d t x` d3 2 2 W dq 2 ur$ G$rr usr rurru z fg e h $ us idgftrniGppdrzxepyxpgugswqufsdquhsyvpgxfdhyus~rqiudgfzmpgtqridpg g g ypgtqquswqusn! p rxpgpsg7u gpriuspgtqus~onvyphnmgfuspxzpxnnsu u$ T $rr r jprxgngpgpftqxspgVqusphgivusgfepgwqquswvqusonrxpfrgpp gerxp yhxrp xfrxqndqxuswq vusw qtv qu$svgx fpv fqpdhgofrnx~qnynmpqgtqxxrmpdgwqrqtp ihgdndqnzxrxy!euksxpqgGn 4vu s i o uuG $rr $$ Bruu $ p geuswqmpgtqridnvyxpgopgrfppghonudrsxrpqgvyuswxpqttsuq~nvrx~upgnx frxq h r 7 g i x $ gufsGqupsApuusshdpgusgpfdoquxsymvgqtfgxfhtrnwvrqrixzpgpnhggftvqqhdhrgpqxrmsuwn(xmprqgwruihsdm d z gh q dh o x h o q5 jonusyhfhodrdquxievgqfgfxpdTsxhustqeoqhnmyvrpipggdrxxqrmiyddxpqrxTxoxpgn5ohddsTxy pg x" g s s vi h r s pdu reXp rpxgqqopBuu h rv rh uhxxh upmh wgqrrhxif dq g s s x n m g s i d f q ! xzpgu on0g urx i o xq5s pdusnppxgqmn s qv s purzdgp r s h s f s g g s g s i f rpq ~5rpqs xhtgu pm qr rdu!nnss u uypvhhgpdm upfz us pxgusq tqu"psh r5hx ~p pge uqhepd uuehuusspng 5px!uq uhpsh hx s uh r r$rG $r r $ s m g i rx q s v i y pgm fuqr xrvum s ong quspGs rpxyg pmwgqrhd d7rm ouiwsterpxpxfuA s 7vgp7driwgqugrpxgogpfh7npgq rpjj r x psuiqztgmuqrruvrwv tspxuqgwqouqs pgquhr5yxxs gusi us txqupsuAs hpqups wddhnq ofupp75gfgs`unquopss4 vrhi rvr hhdq hgdzrgwsuvdxq fuqtquvrsq yrwqtsx uyuqshdruxdrn orsuf f ygguf5ufwsh v s x s g g x i f m ps xg v ns h s uvtqrpxppg!ypgpwgqqrx~pgdrxqriduwsqo!~rGprxepdh gx s m s i d q n 4.1.3 - Array Declarations 4.1 Declaring and Using Arrays in F 135 V X 2I3 z zqe W drV 203 2323 2323 V ' V Xs2q 2 2VXs23 V XWW) 2C 2rXs23 2VXV 2I r Xs23 2Id V X)W3W) 3 2VXs23 2I 3 2VX)WW 2rX)WW) q 3V X)WW dx Gkerid 'G W 3 tt tt d tt d t jx5vtxpodhxqusppgysTqrpifdqrxush7dpg~su!qunsppg!hdpuq!rxpxorne!ppgpiuspgwnqusuens!ripgghfhdgdf x g h gh s x s qunmdyhpgpggGpdgori5drrxrvuiqpuspmpgendushrwvwqrifdqusrnxnx s o s m d hqnusodnxodxiqmmhdsqusp~ vpgogpg v$jpgvphdGdsqu~snxsuvunsw~qqtuhstqusntquxpsprxdqrxigfhpgVogxpnhdppgxtqvtrxrx"suyrgpxpugsudpxgppg~nVnh h rr G $$ru g fustqrrxqmTquspxusrxpqdrxyuswqg!gxpsuwnsuqpv'hu~ v p vnprguxpsgrxunpggff t suj r suf rxpghdynTvri!hhdxipgryrius7 urru sA x jqrhx5i!rqnrpgdgipxg qusph~riqrxhdrxripgusrxnpgequsp vpqydhpxrqmshopgh7dx0qusphpgvuqswtqugsuos pghjqdus v vuu snv doyxpgoxpguzdoupsgggptfqdpggqp~gugstqfrxgxpdyoxpgqhdq jthqdpm7pg7gpvusgfdrquxpsgvgfgmfhdhqnnerhxphgdinvupgtswquqtsesuqfxpg"uusphsdnp7uesIxpgnTrxpgpuggstqf gf q xT x f o r jusphxusp!nhuvugfp5 npgevuswqtqushusoxpggfpghjx!riyxtnrxri qunnserxuxp5go!gpondr$usg$ufurssvunqstworquix5nrpg!suuunso$nygsuydrruqusx$suudpgsurnughsueungxhmequspqwqrfuhxs ! i s fh so $ rr G $ G $ uro ur r o$ur T rr G $ v $ r $ rr G $ ou$ r u$ rrBru $ r ppusqusrvustqwqusndvuswqtsuqfuns~xnmuyspnmfusnqxvnous~ r jnpfgpriusxzdhrxgfqxfustqrrxqmxnepgpgedpus!qxegfdqusvgf vdhAqnhxrnxdpusdgvusfyxgusgvuswqtqushudsrpgxpsrxtxpguswqush!nh srx7muxpgson7ddpgvtpgqgptpgpg5ofpgnxoypnppggehdgpsAmgfrx~riusyvustqwqusqxquspus qurspussrx7musnxp~nh jid~rqrmrmtsnp!usVpg5pdpqgApigyfdveustpqAxgGmpvpgwqdrrxrxiidqnerxpr~xv'yuhunhusppyukumsuk gp pyuhoegdxmuussiqtun5msppgwuqhsn s $ dg gG g gx $$G rr G $$ru vriGqushyvuswqtqus~nusu p ~musnusnrxrius pjhg ysuq pnushpg $gfpVrvusx tqqwqursofnd d ul yunh hx mups7npg !punTwsuvtqvuuqswqsqtuusghls x5 rv pxhng gf h s g s i h 2VXV 3 136 Arrays 2VX)3WW) 2rX)WW) `8g) d bz d 2rX)WW) z W W W W d23 d23 d23 d23 V01 d drkwked@ W drV rrYu h d t G w x`x`xd w &xx` v d v ` v p d z v { 3f` 83 e r e u x r qkYri kYrqYgd d V X 2 VX V G) x` X 0 W V X 2 ' V X V c W ' V X 2 X r XV G) ` 0 W V X 2 d q e |1 f o vhvhv ' ` pc 1 V X ) 2 X hsr G { 1 {E V ) X 2 VX V 08) X W G 3V 8 X d b { W G dG{1 b z d ` { 3xiE X V G) V d V d X 2V XV 08) 3}V X W X I 3z 2 W rV d V X V ' W V pupxgmuqpsusBv p g s q s pduqrxwdqrxyuvwstquqs ~nrxz gtfsq xm~pri s q rvpjg dg nd uq ds qf i u~ squspgfrv"s q ux wsuqonrsj xeq x pqugd n i rx m q s n v s x i spgpfpghx u~us gfrxGvr uuwsghm yhpdupgy~pg5x rxwdqrx uvuwsg !tqs uq7x$pvv rp rp x goo xpfphqggxrgp x yrwd eqx rx rvrrpx!vu wsdqxtpqughpduusp uvpdguwsthpsuqs tqd uqs ru pdusgs hu tduxs hos n7ouvdsq nwsutq5uqsss pg g 7 vt g i x s s npmxqtg rrruiixd dzp x ugs hqg Agxi v p v v i pxg$u dr u o 'vs rpxgsus trx g s q x f q 5uws~spvpg emdp drg5ng If xqusq5qpvpuhduhusn jtqrguki hkukf uyd zquk uqsq xhf rpxdxx oxq unxpvn rxhq upsdmh dxgpg$pgf ou gf uuvstswqdeusuq nGrn hn oxd ynpp7qwg s x r $ r r h u $ $t h u ur r r X r u r $ u ru t u$ $ X r $$r uGGur h u r$TG $$ruu r $ $$ r v h x vi nGr g d g 'vu r pxg $u7r u ~d mpqqpgf us$$ nrx gwfqrx5qrpxq ny g $ jxuufruqtss r zxs gqp~qo n ppqv p gigfond ~p pg gufs op ssuxhs ups pn u zohdqw x vrBxutqsqoxx pqxm fu g nx g g ! G s x i q` n Ap7pdu7reg dfdrqupgt qrem vf r5u odsuq Aum nfus $ i s x nm s x g s hguvtf uqwsrq ghuff wsd s xquqs rppxpx dpx rxp ne pyx $ nppwg tsumd p"gs yuqhrds xu"syhusnq q b { 81 4.1.4 Array Constructors X 4.1 Declaring and Using Arrays in F 137 F S F T GkkYqvkGd qvTrk@rG x we d r jj d h y e u w d x Dynamic Arrays Arrays V V 's qf 23 d1z 23 r9 d)p 23 r9 d` 23 r9 r9 3fdx`8{ d1 2q a9 eTuvwkjs fhvwkjr@kwI p d z hG x 8 d d w dlxd` n d f p d z q 3 ' ' G fd ` GE38{ 1 3 d 2 9 r { 3f` r g 0 g i x v s uns psun v n txx uyspvpu pxsppugfuons hv ussuhp x ushyp usxpus tvrsq gfTumnh dgf s mvusthwqq qusupgdun pupvus ts s r r8(Ajq hnupsTrpp r x Twsufsuv or`xiqx rvupqgpTgmg s Ton pduwsg uqrx~pxguusds f nguows`sux pqwghg$d n py rpx uigupswgsuqs pxdxr 4tsurq xusAr pxggsupufhC vx s g f s x q f d q h fh g 7vu"vqumuqsonmusdndripgtpgpqusddmdx$'dqmx"pguuspgnduisunhsrxxhpuhs7dgpv'gmgfpfg $ u d~r sjhfudrqrstqrxoqursvtoqxvgm!fgoffnpdhgsuvsgwqtrquiAsquspuxohstArpirdiufAgxotqusv'udqi~fzqmuvspognusdyrpigqdpgdgdwqqfnpsrAiugsrwxAqqusdhrrxxqmgm frqrxx p sp $ $ $ $ pgp~nzus~gfusnzpg G $ qxdwqrxvustqwqustnVpgdpgpgpmgfpgtn"ypmfuseqxvdpusGrsxrvriuis usmqpriuspgtqus~irnxxdpusnusqx~oxpgp~nxxqigfgfnus gppqgwgvriGgprsugrixrdpusxrxxpgpeszsqmqxuruvonqusmtpgGpgus ujosnxggpnpgnfrxpxvrneenhxppv'rxogyofxpugsgqm"pxgrpgpxqs5xpg pguswqpgusgpgpe7pg g vuswqtqus! nzpg q r m q q j o s f q yx xgufs q rrx uv pdus rx wdq xuqrvs uwstquqn xq vuwsqt qusV jru stxn e j u wstpghq xs td ri uvuwsstqypxugs x d~pgoq pwg qpg r ono yqerox5uvems pus5pgrxwdqrx futshdonh'v qupuss x ptq fuwsuqm5g v sus 5vdufs m n s g g n s x m jp n d uonnsq y dq gxdo q ox xvusf txwqnuzrpepgpdupgsm pdv uuspq xuuqpgquvnwsuqtq spg G pusrpxhppgpf7v g mx x m g X pzusrpxghyuvwstquq7vq g qm s p z d ` g GE)x8 1zx d ` d { 3f` 4.1.5 138 13 5 24 6 8 2 2 3 23 2 V X 2 V 2 G r vhvhv X 2 d q I| u o V 08) W G q r 3V G 3 G ' 2 2 r oCdc b ' s X 23 2 d r G u$sx hgp r4pytGrxThvn i zdontgpdd rpxAirxy7sv tpowq qg unsy gnfsu xx g vurwsqtgt!nxqxx rpgx gugi tsf epsuqdr `hhutsoTgn q nm g g o x rd u qus pf hg n d x p r Xu r u $B $$a$f s Br $u r 4 rh 6r$ru u r ur r$ur u Tr$ u $ r u sru u 4u B $X XVr$X4$Br fff 4 $uh rr $$ru u rrh u r$TG $$ruu r $$r fd n qqu~ n s q m r q s s q d wqrxuvt nqXgui hsf ppx ugsqs u yq rpxi ~uwqsgn uDyuvusstwqon xu~s umufts rrrxxq xghufn s q r d r V X ) 2 XY 3 2 2 { X 2V XV G) V ) X 0 W X 2 23 2 V X 2VX V G) dbn X 0 W v 2 G 0 W r G) V 2 n V 08) W 8 2 G V G 0 W # r vhvhv XY 2 2 3 3}V X 2V XV 08) 3}V X W 3 2 2 d W rV d 0q 2 V 3tw p8q` e p v v v qGf1q` ` p ` e f w 3e tw f w ` z` e t ` w t p u e ` z 3e13e` u z z 3e z undypg s n ipypduAtpqgyn!u!hqusAs m rgpxrg7qrsi q fynx n ppgsg rx fg sg s x A x d g pg q q tqrVpgd px nXxmtp pjgxrhpjx rpigV ruxV opygrhp v qudesux xes vr ep"pg pgy p mgnBsuf p px hg usq n g h h r y iy y I q g hqropxx~uqs uvq xwsuqtq hs t dpqg5rn pusg pdfuuwsdqqs xn"q nupgsfutpvqrqwursx5wsvm uq tnquyps "ququsg7rruvqs ps xtsuq wq s5h suqd "uqwsrnq xr x q m s 4.1 Declaring and Using Arrays in F 139 F P ) F P ) F P ) ekrkw kelrkw YTr iY hj e r u u w xz w 3f p 1z 3` x` w z v { vhvhv W dq 2 d e x d d arh rn xqvkTrhYd we u d V X 2 X r XV G) ` 0 W V X 2 d q e |1 f o V X ) ' V X 2 e h he de u rx@kkYs XY 3 2 2 q V X ) VX 2 V 08) X W ju nsxr pxpuv rT suqpshdu e u ons drxxriqerm px!ns hy gdprriqerpx s hq x s s y i g f x g dd x i TpwgqGm pqs g nnGuhhsd ~qmhduGrxsq x hnd hy q hx dg qerpx j!s pmq rg nru pxgs q uDfwppqgxgos u rhpxn gvrmrhTpdx uu7qr pxp 77qg upsurs wsu i r xnm uhs fornq egpx s 8 8 8 p g s s 9 x q rwfrxdpg ussg vs hn s s g uryppmwgqpmtgqrid~Ap7 v s s 'vx pmgtq ri dg rq x!zpqm s n~x n q~$vustwqqugugrpxgopfhuqpshdpgwuqrpxus r "x g f)(pri rgix dugvs t"qs po pgG upg s" osuxnhpmwgfqg ruhndtgv q tqufqs phng s renxuqT7s xqghngp g yuuvTtqps ws uq sgsus s "g i q x ex 5 h x r pzfp hn n nv xrxhd pxhp uxGorpguzss p!k v pdug jp ntosux ppgp xg uvqws trqupxs g usvgps utwq pxqugs o7ov ftuk rps yunysy uvtswquqyzsuq m nf s $r $ m gs s i s f g n p gufs yper pxx prx~nq s egv pryuvgrpxg!snpoe frxqyofpuvtswquqxr~x uu~u s q z rxmv s m ugss ppus yGwsv u s qthuq syusrxypxgwrsq rp~s m jxp q nxprrpi pxggwqrxtppvv rx xpxygus dx iugfrox sx q rnxeund epruvg pxgtsuwqsuquxvsx u zsx fgf x m g z r h u $ $t h u ur s s rpxgeyr h $$ fustqrrxqmontppgtqd yp7fus gp geruv pxtsprwq uqx!nnr x v T m g g u ~ g v n `uspxpuzpyvuwsqtqu~xs hnd phqyd m i ff pxp~ dx~onxw pxgdv s g g s pms g g q q m x g tjxq uusrrpsx ppxupuss hn qus qq xttvu"iususpxpus` uqpshw Ee uvtswqq7n rus f q m y V h spf n g g pg qr vtq gguftsxq ~nyrv is ~ri yuvgTufnpgs eyq xpdyuwvqs rf pgpg 7fgrx gpm tgs p xd 7!x$wq q 0 rhp x gus rp x $u s r tprui pstguqn m x 0usypgGqon7 pruipstguq onsrx pdu n ppgsuh0hdpg $rnv rxuq ophug sq4$ s s s m f huj dpgpuiops wg xhuq d spxv ugugvustwqpqussg u un usqm gxpriusrih gq f s fvnoy px g q s s rx v s d ftusq rix fngqppggfrx~x ns pxuvexm pg7q sgnyri $pv ppvug p ~ps zhssuq usrrpxyp px usv xpx vuws qx tqus n ruhqn g usf pufhwsg qxgp d pinwg quhud$shw g qufsn rh v 4.1.6 140 Array Sections Arrays S 23 0 j ivd gusn s y x q x g x g opq nxhpxgx us s ppmgts qt7i pqsnhy rTi rpx ghi pfhqg nn g~i hx pd ur~ruguGvr~v pgt qup pmwgqrhd rxntxuyq tjggq pxrqg pxgug pfshrtrx n y5oxq ngq p7nhp ugtq5ohpxngp gtgpfuhsg wgpqpmqwg nrGd pxuwpqgs 7h pwgnq hn 0 )CIf 0 p d e d p d e d )CIx` 0 d f 0 p d p d d` 0 )xe &pfx` p d z d 0 W dq 2 I 0 w `` d d 0 G Q ) e w r u i e r h rvYTr YuGkYq ugfp"xhpgpgxhrpxg7spz qd x yix g n $r $ m s g v m s vptuqpsh7q phgfuusppggrx7rgquhx fus m f q x f s s vp$gvof ~ri m s gfr g uvgpgypxrg i uvyuvwqtsf quswgpm7q rhviv udst~qwq usq xx squm usyf xpqpmgtrqpxg y gqwgpm uvwsrtq uqhsudsi yuqwvv oops pghg x ~q p pg f s s g v q zgf rpjs Ax pgXpgp yr ox uns X uzln gpdzhgpqysu ggnnyuq h nv y v"vAyvv q uqXq uy vs p uyp l tv zuyql gftmd wruq sidhq xxAqp npg pq s s y x x hx v qx i f q ruyTuqyuyuoywqop!ons r pgx ps pg esdpg pxg ypgufsrrruv i rx xq uwsGr pxg d xpm ssvg utvuwqstquwqVgsqs u usq rx rp4gg px utG! pgp9sv d uv es e q 'vv npmxwg7q rhd xs hptgq~nyriypggf qjh hgy xonxerhpmgtqx idwpqgn1rxq~ppxyg mrid nypg x r f g ujtpqs gnphrpf tgxqq! nrpx grvrywgp sq nyn pApg g rx!mm ppg pqwgg yx nAronv qxuxrxwgpmq rhhdi gdf o g hhp tgpdqudhnns $tvv uq ppsguussrdehvi ugvff rrpxgpmwguqsohwgxpm uqps yrpmhwgi qdpg ny rp pxgg pxgqg m fdpq m zn hrn hvsux uhmsq r qx ri d r T u w V )p u lp z s u7 h f e u rkw kY( 3f C uy y y y gfpzmq s q )p V z V ` V 3 3f i d s v x s v x tqrghf s rgx g pgyuvwsg tquqf xs urpx gpfhg j r!s g v ig ypgm ufqrqxr~i xfdup py pgr rpxgu srxppmwgq gx nrv q`r pxgGs n`g py gf pg Gn0 eg ri5gs fqpgn g i s f d o s hn urpxgs pfhg xuoni tp!ug! n dptrv pxgo dpfhtnus pqgfp jrh qg~on y qui hodrxrqupsh~ng zpgusrpxpurxuqps ~ueun odrxrdqs v mmffd !nhhpgjg p fr 7hpx rrdqohm en v$pvpd gppgm s y d m ex i s g dr phgj pupg !su pqg pedg rvuxrst7qwqi uqgpxghhd dp m uds nhgfddx 7i uqsurpxs unnpdxeuqv ps h ypqge g s 4.1 Declaring and Using Arrays in F 141 3fx`d w &p {1e w dfz 1e w dfxz qfx`Qd w &p hj d x r kr @ q rGTQ 'rX 'iW V 'c W 'db drV 33 Gfydxz1d u dyd u d&pr {7 Wd {n ' ' 'aX #'iW V 0 'h X gf jorngpyvuustsqqwuosnxzg p7As pd y ph g fuus sx Amunq sxn qyu gnfusxren'vpgepq m ntprui0uqtgpsrxs pgn h h y s g g m y x s x q x 4s n p5puhn"pwgenrGpxgen"usn5pg5pgn xx tfqehtvuqpsus 5pgnr pnGGr gpxd hgqoon Geuqs ys mpn s g " gtq x s q g m ng tjruq uvws ntqG!eunnsuq us om uus s ngfdfupqsgezpvnx qh udus pn ntfpqwg!m5png xropxf rg pguuvgwqtsuvq7tsq s $r $ s s x s s s uvgfpuvstwqqudrVrpxgppxxpdurgudp ~gfg p mguf pgsu~puv wqmts q7gpf #r u r #rr # ur rr G $$ru # u r z q jrrximgsuvgpfeui xpvpr vxv!rnugxpsyyuplmyuufuvsurstgxpqwqusmgdnfpGgx!pxzgrpxgwq5gpugfvupo~sxpgmupgspgddXgxAmoquusnggfpgtgpwpqgmd fuswd q g u p sp # nh h v rxgfpxxxpgusgpmdh~nxx~dusioqfpg vjruxpsguszqmxggny$pg yunyur xu'qsdduxsrxguufusssy~toqnrupsnGpdrn77x5xpgpgpTsmpgnh o g q xe 8fd w dfG d w d t e 0 d w d t e 0h 1 d w d t e 0 ( 3fd w d t 0 3fd w de 0 w d w d t 0 w d w de 0 qfd w d t 0 qfd w de 0 d w 8nd w f d f d t e 0 dq 2 I 0 w `` d d 0 dpusn pgnrxgpgrxvuswqtqus dpg qs $r $ s s g rxriuzuqushzpd us m s s m m i npugu~rx x dpmwgq uv nd7u !rrq ~x q 7rti otp0ryenxs d usrpx pxpygguuoss 7g px x zhn pgpmv hpfwgrqhpxex n 7hng pg p rgyxAghp ud p s gyfufupsouyq xpumAogs pn~x p s m wguqsn qj s x pg g g ix p g g u sqd g s e n pqus rr W 142 Arrays 4.1.7 Array Assignment 3`` d { vhvhv W dq 2 v W Tr v 3V 3 2 2 W 0 En q3) { 0 { Ec { 3n3E r r 0 r r V r e x h he de u r@kkY( # V r V r V r { nE { nE0 3np r r 0 & 0 0 e h yw u u d d f h u d rx@rxqvTTd Er @I e r e u x r Tri kYrGT # # The d x r W d z g x8 a W x " d ` g W { d g x x`8) W B$ Bu B $B4 ff p uq ~ddgfpxqunugxquxdpxgfpophv rmx s x s g g x rj nx wqrrq x gofpn grx r qnud ~ zp5qg n ezxxvu wsuqtg~fqussp n ~n ~dqpnxg pVg esn 5suzo gzgxpxgpfr u x sGfgnpp yvxhqgxpuxxhxmxhn zwq prgq 5x y x n e x u m g x pgusrxvug wd qg x s ofq us~uv srg wdpx gqphg hru xs s f v q uegxdhrggx px phT)Eig rxD ex oq w gxf n usphpgxT s g upusdpgrpxg mu sps rrpx!n n s go spgusvustwqqupwfqmm wdq x pgnpge x gpg)uvuwsq t quV~svxvs utqwqq ugufsd ropv x ~fupsg wfq n hw d qxqxxqh h~ rn hri f s i h gr us A x r d x s hx tjuqnhrxAqupsusesnpg s x s s xv pduhuspfg rpxr x uvtsq s d qm e pdugvustwqqutuxrrxwguq s mgrxysrruis opj gufxm susus pd n pxrpvt x Gfx vuustswqquusp!gf pgus on nhpsq u puvgwqtsuq pxhngps g u rs xVxus prrruig pxwfrhxnq gr r s g m g` br v x s s sq n 5umn~fum zs ~nxex pzhnx g rvustwqqu~s sr oi dx5usy yrusn~uqs gd ~f v d nu oe5 pxggg p fp xqx n n x qv ugp xu~sdup!rx o gf fpp hg n hsx 5mwqrq gxf s sujx perpx prxnypfuqrxro'v G s f e s s spuhsn gg m s jpyrpx 7nypvoxwdqgpd upsp x gppghg xx0s upg rpxd ivuqgz VuvtswquqE su~ xg)E D gf r g hd x n s g usr s n ) )D v # xqux7 q y vvy # y #q # ofp~nz v # 0t # # m v j udgfgps uqupsuss~nn py rfupds usq rx yn yvusd twqn quvuustgqs wquxs norp gx u dpfpg uqsysutvqsx~rnn pg x g s x s rrygpxn tuv!wsq qtuq n~n ups uzg yu ! fmus nq up s !~pgq np ondryx ng f 'vpuv guy usuds ~ rumn iGsrpnxpg zhu us ptxnzpusgpg n qus h n gs r sT X gorpgu~nrihppguzpg f s d y s f 3x`&px` d { p ` d )xf` 4.1.8 Construct 4.1 Declaring and Using Arrays in F 143 V r {h V r 23 `1{h 3 V r 23 `{h r r 3 23 G vn{3 V 23 23 G G vxzg d {3 03 V 0GW ) 'i G 3 E vxzpi d {3 23 0h V 0GW ) G 3 V 0GW dx d 23 d 23 d dx`{ dx`8{ 2323 X)W1 W d2q d t {) 3}V d 3}V W drV W V 'drV 2q 21'8W X V r W V ' V 0GW) XW1 p v ` xi v 0 )c V r iE ` { br u)# u)# u# 4 r Br r 4 s v pu f $ 4 p B p $B pSu u f r p $ $B u p p $$Tu f p $h $Tr X t $r $ pX $$r u#0 Tt rrGG $$ruuu $ $ r o ) B r n`uspgpgrxmgqusuvsrxrusghgonrxriusrxnxpvgukxzqupsuussoxxuussppggh sr g o h frnrxpridpusnhhxpgdrxqide $ $h r nopgdywqrifd xh sutpqnpgepppgpgtvuswqtqusdn$yvpqtqrx!qwrxegfusdnAhusn5 jjxprv $pg vpr pxgghvurwsxtquqmm7s oq qwnqryx ggpgpnrx~qm7 qnxgyfnqxuusx yppgguupsghsrxmphufgxwsVrpy vuxstqqqrwxxsuqmy"kuy xupesgy p rqypxprxng~ruxhn#Atqgf q x br 4 $$4B 4 urr f $ $u4 $ rB 4Brsur ff ) h V 0c V W 2 1 3 h V i1 G r r W 2 3 V { n V r 144 Arrays - 1 2 3 nE3n0 { 0 p~pgufs7d g m v r r 2 3 4.1.9 The g s x x r 2 x x pxr gG ir5uvsu of5of usfG us tvV r7x rpy ppggrx n5y wdg q f uxs Vrrr0 )s5rE qorpiGnq5n )# )D V a V r r r Statement r r v r g sy i q rpxi5v pg n) rr qTnp~xm n jd nry xuqr7gf p gngs u p h$vxn rnw pqg1!q" rex gptveuq nseqpxphr xrx pxgn phgq ` r suuvpwsrtqg ruq pxusn rryumomsun os 5ghnf ng pvxuswfpgvuqrftwsxqqtohsq u pvx5quAsrgy5fgwd fqgsufru x so Agf us ps ygpgunp sqwdr nGxpg s 5x n g m dzx g r x o V r V a ` ` ` ` ` ` ` ` v u xz v w xz v p v xz w xz v t xz v pxz v t xz v p v xz ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` `1 `1 ` 1 ` ` ` ` ` ` ` `1 `1 `1 ` `1 `1 `1 ` 1 ` `1 `1 `1 `1 `1 ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` `1 `1 `1 `1 `1 `1 `1 `1 xn`x1ce x1ce x1`xz1nxz1nxz1ifvz1 v z v z v z v z v z v ` v t x1zx1 t x1 u xz1i&3xz1e vz1 v v z v z v z v v p e v t x1 t x1 xz1 t xz1 xz1ppvz1 e xz v v v z v z v v v u xz e xz v v v `x1hxz1 w xz1 t xz1nvz1 v z p v v v ` w xz w xz v v `xz v v p v xz1xz1nxz1 vz1 e v z v t xz xz xz u xz v v v v v xz1pxz1 t vz1 z v p v v &p fv xz fv xz zxz v v &p v e v xz1ppvz1 xz t xz xz v e xz v fv xz fv xz v v v l3 v p w xz w xz xz v p v xz v `xz v p v xz e v xz v v 2 ' W X 1 V r 2 3 V c W ' t x8 d ` { d d t x8 d ` { d d d ~ | w vfustqrrxqmnxxrxpghd~oxphd~nzp~qe{ xx q g r o )r B r w u# ur r w uu r d ~ ` |#v w t ~ b t ~ ' ' ' 4.1 Declaring and Using Arrays in F 145 r r 23 r 2 1z z 1` 0 { ` 0 0 g x g f g v' wdqrx s s neprpigs rxxm ropnxyphopgnpxpg rpx gpsuvg "uuitgsps nuqGApxrgpxhg q rrxxTehs uptqn rxeppiqrgxx hm5 pg pous fux sg f r g gf r x g qeuos nxtprpighm p ju!quupzuntqhpdvrung ufps z~x 0npdrwegpqx gnzzhy x hp d udsop gq egp s s s n g s rx n r ~ s B f s gpgu~ny x pg s sg s p pgs u "q ups yp gfu"s qrxrvrhi pdu5i unundr x gfpIrxq mm s d x s s x f v x xpdu pg uyxxgffutus sv rGx qonym uf snx ox g ~qepgn n$txr~ gf f pex gorpgs uu 5s q x p g rxg 5suqs gfpg o gpgusnrxxpuhrqdox tn Tpun~poq d ph puj u"ssAgx up s png 5gg ppfg 7p s y5 nnwdqxrrxx gdsf ohrvptgp pgpx5frsng u s unxrpxtvup7qwsg th qupdGsgqGxxnA pong hxteogpq rn 7i"rhxn n houxsn g n u 5 s xosu s pg 3 a 2 2 2 2 3 r tht cz p t zn` p 3 a 2 2 X V c W ' ' ' 0 Idc b dc b 2 2 3 a `8g { 0 { )px`E 3 r { 2 2 t t {3f 0 { 3f 0 d 3 3f W rr d }r 2 2 X 33 r V ' W pgfuwsxzpn rxqmh q qm g f d dx n o B r uu B 4r X $rrT $$uu $$ o $B r v m s s g v q s g g se spfud up~qe{puisgtfxox~ri pjuhrruvdfgpds tsi ywquq gonf rpgquoevuAs toqwqus pfp wsupgqusu7svuw s qtppgqunv Vf ppg gtfg wdqq rx xAuseerhpxn n m s i g m 2q r 2 w Ew as 4.1.10 The 146 Arrays Construct ) ' `8g) x dl ) '`8g) x dl {`g) l dx b( 3 x l d 0 3 g E { d { 3 dlx`8 &px`8 p { d { 2 2 33 r vtquspus~nrx~dpus~nxhusdpgtqozpgpusnpg~musnGus jupguvrspgwqmrxqmmudpssunsuqpruxsvuswuqtsqusus0vqihpgrxrivuzsgfohdpsufpquspunsussyhppgh r q n t #{ # rx d g $ t #T # X t #T # gfusofpgusnhvtquspus~onyvriyvuswqtqus nrx dggfpnzsGgppmpgprdfqrxvuswx~qqtusxei~nrxzfyghoxhmxqwqrx ppggpmpmgpmuhs~rfivuvtsgsuqpfuys !sunudsyvuyswrqtxpqugusswqupsmrdxgqrvwqumusospngr~gvufusdpunsxuxzsq~qvuswtpqugussrxexy vpp rx yjt uqpgxms d ufs px7uv pgtq s wqm uqx umruvs uvrts s uqwqi xuvgs g~nf gpf Arxgpxgj rge!tpsxdfpgpnwgpuqs dr~Ggsxqu pv f#h'u~ws # mrq hu x ots pqGr!gxmoppxugpgtsoqwgphqq m m x py!pruv7tsnq g s s o pg v xg p p ` A p G X p g x s s g ppg~nyogfus~ypvp rgm fupgs rxwdv qxd ri yuvgf g rf ux s pxdi7n x x~ 7 {ygfusgorpguspvov u 4wdpqgus rrxx5 vus!f dqo xus yqwd rx f s x s h o T r r 3 r 2 2 23 r 2 f p z w f z 2 2 X 33 a d q | w V c W ' ' 4.1.12 Intrinsic Operators w Ew as p d ` )8{ h d d p o 2 2 3 a E p g { d 3 &xi{ &px`E 3 r { d p ` d { 2 2 &p p d rr W d d }r z 2 2 X 333 r nE { V ' W o B r G u u p ` X pA 4r p G X p T pA $$ $rrT $$uu o $B r x s x s dm s rpduunwdqrxg $v vsu tpqgwqu~xs pon xxnu0psuixv hg ~wsu qnhpdpprpxg uighun s h ~ g sG 3 a 2 2 4.1 Declaring and Using Arrays in F 147 4.1.11 The Statement - 23 r 2 23 r 2 2 2 3I 201 ' W 21 W 22 $$ $ s i x q m d rpxgdd d m s g v i $v vuws qtquywqrex ~g onxy ~qupg~n~hmgrf xx5v g hq 7v ppgh 5hgx 5rg y uspon gufg tsrr xx ger pxp xdonri j r upx!qws dpp~7d pgdrxssq igdnsponp x hs~p e7xupgsx nx d fqnpi tguqs on gxuds pvs ugpfxqmmu!g upgrvus wsqtqusgoprng tq e ym $m tu pghxrhd g ntgp xqpg gsf qusuu0usmpvustwqquy VuVe"yrd$ovpxghd v xu y v s g n s xo d s pustqd p gyvugf npex pxghdrpghjq g xf x ypj gxmg ~psuf rgpi rq x "m ppg pxgg uyqstq upsh{pgvusteq wqurppxs uu r~p u gqu7s don pxg rpxx dg7su ppggpgwgq mp~gnx$pug s $vuwsqtuq~nrgfpppuf v s x s dusr5yu'p r rtpduton"y i q g x s 2 1 W 8 xz I z 2 W G a 1` " 1 8 0 5 1 7 3 2 9 g np z d &p G x s s i x pg g s d xdn $ s s yG h rVgp ynp p duf pdus qrrevu$ws yqtrquruGrpxg gdfAp pg ptgqpp upgufXxv Gus p rxs `gp q pmwgqhn rhd m x v g g x m x i s r i r pxg p pgn t ptrpxg gpgntqdr x!npgtqdyuys vtq xuqps! n!udsgg n td ' nl p7 i r r yr xp7v lhpdunus n uonq 7 px m ptrhx n uyd y~qg rf g d ~qupsTs nx go p gux dss r xq q xppgTonxsrpxgpghTgsud ri pj$g th!'mqx onpprrdtqrrv v upstqwqg urtupps g o wgdfp~r ruqps !n pxgox d~pm tgpgqp tgqi od ptpxhgn g $r rr G $$ru rpxguwsqups~nnpe~pdusupsgpgpg uqs x prg zpg g m g uus nrguvws tqpwguqtqqs q oq pog veo vpxv g gpfhj og i rxdm $fd uvuvtswq uqihs uf spptgq nx s G i n us g x s y vhd xq utps xpgui sr s gGpwgq gd hn n gyuyuy q pmwgqrhd~unxv Gqhpgx~suq spds us pygg revn v uvst wqqusug sp~dg Tnpd xg ein y p g hutxxf up gr x ond hn rpxggpfm h nuspo5qerpxnus n peqigdq uqs vohGr px gqqDon qus m Dnxr us gsx qBufs guvwstquqDg npg g gfp d fr n s x q pfg` nn5uunss yp pmyqwgg rpxgi d gfm usvuws nqt5dsu r!iusvuggfsi fr pxgq xdomq pm5uosus ptxm gfp7 2 G Wq g G WC 2 ` G71d xzx1dd u lp d d z d }V W V ' d W { n rV d 3 u g u 4.1.13 Element Renumbering in Expressions 148 Arrays 4.1.14 Using a Function in a Declaration Statement 21 ( W ~G ~ { r 0 V 0 1ede W d`{) 2 V r 3 V 9 w V 9 a fus~n $rr r vriGqusphpgGqusrxrizwqnqxzn!sv v yjpgpxhm!sufkuk qwqpxgv$rnxxz qusdgfunTtqprguspgxqxxhpgpd`qs4xuqxwvuqswqtqusrupgVs7gp vq so mg p ~ o g p p h g t sr i ustukk p ruvwstqquuv rxi !xkuk r frx qy q uppsg hwsu zzq us npmzq wg rdfu nsps p pdwguqGv p q x s s 2 2 4.1.15 Exercises - - 2 3 i V c ' W ' 3 d 2 32 d W W 0 # d b ' ` p { rV d rV d #01 ` i{ q` W rr d 23 2 W i V ' ' W p W W 21 { 2 f v qmdgf"usdpovg nGh~gdp rg!spxpgg duh~nmps rusi n 5pd Gppxg gxpp7qtg 'vuqiGug p sgpxgfe$hun d i p x fr g r v v T $Bu $Br u v t Br v Grt r ur rr $Xrr $ G rr G $$ruu G $$ $ G $ $rr $$u r $ r r $ $rXr4r T r rur$4 $ $$ru T $$ru $ 2 1 2p 2 3 2q 2 2 3 2 V rV d 2p 2 2 1 ' 4.1 Declaring and Using Arrays in F 149 s x x A g us x i n x ryrud xs fnug pr pxpggdg sppgusg rny7qdrrghdf rxd sdrx pxguuspspgh qumsums `hgp hqn Auv ufpwgs q gs Gqx m rg do npg n q sjouspT !x qugvonusrvustwqqurAqe rxmngpguwsqd p~g pG uqd serxxwuqsnr gs us f us r g grxf gGpxrgv r pxr ppgqn ft v umwgpswgqhq rim qxdVmus uns vuwsq tpiquwgqs hoqwgp pxog xehp wdpxgq gq nm hx m 4.2 Searching a List ( hd s i7 h puguopgxt7rivupgrxqusv x gpgx gd pgjpprpg !rngpe s s d s f g n jjjjjjjjjjjj 5 i x n g g g hH rpgxhvppnpeevx rihd rpxqg zpm r`Aqrx u!s o nepg r~puq~os nen x j g x x s ri f s h s opxggpfHhgF GjF !n rehy dpeg ug5p rno uy5n y 5y pgGu|gn uv pxtgoq x d~hs 5supwghqq Guv q rs jdpgwgqpntxpu$$vuwsqtqunTpdvg rqn r$ Txgop gu7xs rx 7 ggpxf g s uv s g n m $ jp !t q npg nunm opghs d xqridgptg e r'pge rwrq x # m m d s g s q { v qp pg7pqg7nmrx7ups7u pswgqmrxqmmu7nv gpp pg7nx~Truro3X ) i gpdf grd x q n dhh!s u`wgps Grsqu unvthsq qTqrrrogph)Xg Xgusd j pdg whq )Xrs ddgW Bsu $v 2xhm XVWu i x s i f dq u mr g x s d1opusr4unvustwqqusurpxgfhrxDp$2 rd$v 3 l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l ujus nsAgd 7f v us x rnpxgepu!zssgxppqggtquruusrpsv xrr~px4 g pqungsuxenmn xi xpghs 4 xrqi Azgx prppxg5xu uoons nrpg gu sf rfx v m ii s u u qwuT q s o qx px` ` d r 0 150 Arrays cos = vv vw v w vv V X I 2 V G) 0 W X V 2 3 d X W }r dq 2 rr d rr d d aV G) 0 W V X V V d 2 rXY3 r ` V01 X 2 0 # #0 F R ) h u Y ` X rs3 V t d h u j we x h i Yr Tldkvrrr $u $G u urTG $$ u $ruT r$urrG $$uu T r $$ $ h T $ u $Bru $ v s g xv i f g h u vustwqqu~npzgfpxqrghd~npusn j pdd~qtv ppgdp uowqdgopghxqrhdponpg` 4rpxgdpgpwgq g us o g s q d i g d n f onf ypgh x ue"qgfqud s5n"qns e5hpg hxq d d s im d n rpj r x psuiq euqtgm ps gsup gv nhnx u sogg fqusyuis d u n g u n s uf ws d h'vwdq rx enepgpqrxrdiwd$q exhpzepruis ppjptgguqous $s p rrzpxg rpdn yus pgon nnppthd xgfptsguron uo pgrtuq s r7 ngngxrn rdv xpquns 7x 5 g g e A g vp ug sx udxqpr zxg 0pgp erpx npGgsup 0qd wd rxd p`nrg o Txvr rpx n pxuqg spgrdfnx sy pupgnqtf 0zgp gh o s n i m x m sg x rnx f f npgrqu s7x phg qGn 0nouqVvgfghhd n xrrx xq rx 7uqs Thngpm 5xrdis mrpxvno nqu$s yqe e{'v gfus z us $n rn r usn T x vn frxqzp g g"rrx x 5uvexefyeh jix i g g g q 5rpeypxgpnypIfuwsxqm qupgshpd xhqg iqd5ngp nyprg v pxhwgg rq xg"qrv i~n pugs v d g j s f onuqson!ruggx !g drgpxqruistq~ upstgsqg umf fu!sqws xtsfquTrxrp xng x r xtmy pg m q m rx q x m uqs v g i n i f pgufsr~uszwqrd xg g ouns rxhux uApqss n p!npg peng tpwdq hd rxx~p Aq rs fi drxm i uf tp!y npgppg!n x T g i d s g d gvrGnppggrxzsu `gp ig 3 juusnGpp su py prgv wsudrqx e"ngpgpn yonus~$p gVp g pg nd xrqrdt onnhp gtvq v rd 5rxfq oyd dp pgrd xn s s g" s q xh pphhx~pqrgh"!hg xuTgr n nxpgv rdqnpg ghhy m uqsf iuqsyh uqns g g d g i f d d s d r jpfg5Tgq p puqsu pgs q x ppgpsn nr drgrxq noTzgq xx puwsg q pri gpfxgqnuuqsstggpqxepvhm v n s p s p v g $q um ppg~ zg usq qg xz rvuqrx! v nv Gvd u! v qvzr pxg$u q uuspon5 x ftxwqqrxpxg n pnpq pggrdrxqris dn 7ohrrxuq sm qnxyg ov us xxpu ss x rxq i p x7srpxe g txhmg giuTpv mpxgpg55qspzng ne jrpq `tqm rq ux hrrruqrsxzop ggfq rnvuhmppvq uspphgd q p7sftq h q x qprui tf s pqxghd pyn r g V X 2 q q m x f vo p ufwsxzpgpgqrgpvpgusqvuhquhsqsugm xx u!~rqs zrGpxnqx z r x wqr~fmiq duqs f 4.2 Searching a List 151 4.2.2 4.2.1 Sequential Search through an Unordered List The Problem: Credit Card Checking ` rXY3 r ` rXY3 V ` rXY3 V ) v v rr I V X ) 2 ) V 08) W V X r 2 0 W r G) X V {3 V { X 2 x` X 0 W V G) X V V { { X 2 x` V X 2 ) { ` rXYq V #01 j o m g v i q m f g s d d fpgpf7ngx pgtevriusrirxqyrpxmggs fhdzpgopwgqp7ntf s upvrxq q nujsppe!qpfgohtsvurgy~qf repx rqgtuesx gfvm{ rx xwg p quosv uxyzq ueohuqs ns n pp uusguqwsm5xduqx rxsq mm g d m x f x ri s q x t7gpux ygspf xptguqms gf frx 5r5u gs xArums f p5gpfs g5nyrx hs mv hgnuqss 5f n r m x f g qs fd xtd mups5on yq dxi s urpx gphg uws q~g7r xptguqmgrx ukukukukkkuyuykk p r x rupvpg usdg $Vopghsd qxqrhd onyhuqs5pgqpm osus s ppg7pqusphqdpr q iu s muuqr xeo pfg n uqsg neg $yp ns uf jmxq uv ufqtss rxxrynsuimq ugfvod f gpg7nm7sx hdusgs 7mf f x pt uqsf phq!pg q s rx gAgfuwsd x q! o xp wgqu x d ~xx qrighdyh ppgpqgn"unvs hpgrxhmq gi f Gqus~n ohgp x pghnpgeGs n d uqs zpg q p7 dr $Gpgdrgxisq d rndTrpxgduhdrxgf npAuqg tsq~rroyxiqv d sun unvuqdmxq xuTps pggsu f ov un ysgm pv puVr!qx s hTh g uuqpwgsrpxq nhg ud!qs Anxqx d vpvdq mppgq x pvruq~pgutqpusohdun~pppgnpghdrxrx g pus d x s s fngssu d 5pggqnp g yhquss !rmpxgxXpus !i pgf npzywshd4pg f s ds q x g q py qhrg qi 0 rnd xV uxnug sopgusr u doqpgusm pgm xm g d7qrd s rid xunuqs vpt s fuwsrxqmns 0i g rv uwsqtpgur h s xnd rrx i s rvustwq qux qrx ustq yx vthqn upr~onx xx pxgg u zus n~yvugf rpxghddpgpwgqpgxv vewqonr~pusz pxpghdq 7pdg gu p5ous tgqd p e5ugs nx hqnsp$eng v pxy rgx px pugppgrspv p~ey dhfgnGpdgpqyq rnengpdfrpd7us usnpuug spwdg rq z~p pr $pg`sApxgusdh rq dx m g s g h x pgu s i s f px x ~ $ v t s f n rxwguqmgrxh h u v t u B x m g g s gdi v x roppg~rpvg nqus~ni hx~ppigxzppyopxgodyuvwstquqpgxjpr~n hggp $id y usx x ppre7ueqrvustwqqudm od ns ~gp og xq"m rxof uqs px gus ws qrrhr gpg ns x g x n s s s r q d m x hqj g prhpg nyp pg gyuqwspg hd pdrpghx7 upsh gpmfusg ugfpissu guuvgtqs ws ~pugxqxx odi fgphn hud $Xru $Xr 4r Br $ u $ u $h$T $ $ B v G 31 V r p v v { X 2cr G) V { { 0 W X V X 2 x`E d { q p v 2 v { 152 Arrays ` rXY3 V rY3 V z X ` X aY3 V z X rs3 V z rXYq V #01 1 V G X) 2c{3V 8) r p { 0 W X { 31 V X 2cr G) V { 0 W X V X 2 x`E d { q p v 2 v { V X I 2 V G) 0 W X V 2 3 d X W }r dq 2 rr d rr d d aV G) 0 W X V V d 2 rXY3 r z V01 v m g g s g q rpxgutsqxpqgg ~ nr yx vx pgpg~n p~ug sqpupys pg utsm xp$yg hy pdg uff tsrgq q rxqesm pnnx hrevd pf gpg n pux xs q pgevug hrxgpfus xq hp g pxh zpxxpgung xg qr gfn g gG nqus r iysxgpvrpgzpxp pgq n qyxq m { tvqghg pggugsm qptpzhquspqTp" usxr r ppg!g h ntpugsopugsgf rxj pog onpftzqg nVhpd v vxf p uggsp r pxgshgp h uuss pfq xgponvg iy o upsustiqppfpgd Gdsx gp x uf ws p $ q p s szx!kukukyuk x r n unqd zriypvus gps pgpgp rozsxy xpppgwg!xo rkuku rnyr upstgqr0qsi u uusgrhg ushndpq A!qgx p yrhguqi hsf Vph d xusuukuknkuyk pv uqs s m x v x qf ojjq uue xrp fuevtqoxupsdnqnedpgtfq hexrxptguqmgrxs us ss g s n g i s f Tgx px phhhg uddpx pdgtqu$sm ygpm u frgx prpgAqo rnhpufh!nds d ruxrwsiuqspgA y $g v m ush md uus i iusod n p ushmq gv rn g hx d qx r s g s i d vtqrfG ~onx ui fs uon~qruqps puonwqrf Adrx uspomupgs ArxApgp ynp~qr d uvs epnuuss puxyq ugfmd r x !drxu dri yqp0s pqgp gm nnsu uqrsq xh w hdgf s q g s $ xr i s s $ $Xru $Xr 4r Br u $ u $h $ u $h$T $ $ B v $u $G u urTG $$ u $ruT r$urrG $$uu T r $$ $ h T $ u $Bru $ tvqhy qx g g xq i n us p gus q 5pi pppgnungfdqmd ir d o pgrd dh spg z g s z jv$pv wruq si d po"hyx ruuqpss iuxrrxgupggns nququss5oon nVpxsyg r r pqugsfpsg urx x7rq gpxi huf 0gpp euqAssr xpou sd s irs Augrx hd 7m q gvx tqrhghtqusgpgusq pxqrgps dp pg7ng5ugpsoxpugsgf x o s x A i f d o g q x g jruv gpf grpv i g q7rgfr7xf ouugss r7gf px hgig uwsuqs~gns rqutsx 5owf nqrrxytgq fg5rsm ui xgwgpf nuquqs sm f 7xno pg wvqhprxnrgdyquhquo~usgmTpnrusuv s pnussuq us pxgtgp q x g q m g f s s n g x gh rY3 V z X 4.2 Searching a List 153 w f vrG wvuq gpAsi rx Tg qh ! ixg gf pg !hn u'vxpgr!r!nppp!yx s g q qx d n d i x g g g oj puf7pgfp~xpns Ti onhpg gfp xpvr 7x pqs nxpgh d7d g g psgrxph'v "s q g nru vrus s gpfpgdqusm f gf5px ppugfdgq nhpusn n g n up tvpgo"fn px hhpv gfnGpgGvrs ig rxwgqusgm rxog p3g usppfpgri "pueg{ s n v g prvrpxgf7 poy I g d$e pgtvy q oux nts"q xq peq p rtq uhxdf p4 nv d 7qx rx dpsq uwdrrxqq s pppgg nguqos putvpsqg hg phd rui o h x e i t Tr dTu rkr h d xw h i x r f x d h w rr GTrrfkG 4.2.4 Binary Search 8 2 3 r v { v 1 V X) 2iV 08) r { { W X 2 3 2 3 G 1 V X r xiE d ` { 2 v { 3 X 2 V V G 0 W 2 v X 0 W V G) X V 0 W V G) X V 0 W V G) X V 1 V X 2 V G) 0 W X V r r r u $h $ r h u $ X h u $hw v x uqs v s f g y sg g s q x v r h i~ Gx us guxs pes unp~ pgus wqg puGspg rx5qhonpg pjrrxd ow qnhugfgs mr!gfu dx pqg n tpd ! nd hx pxpu wdq x~g $pgerpx q suvppgym umrusgtqrm ~us qonn rzg xgtfqhypuszpxpxg 4gpyn n uy pusg !px etpqgpxd gnuyqws qr~p xqx f V pgqrdrqx xri4d ygi p npeouipvv qpsg neyq m pm umgesggtqronxm px~n v uquss quvpwgtqm gdfqurrtVdxx pvummsx usnpvq p rtx uruss gueTv Tpvpgpuexdpq v~ustupqgd s ~ xuv rnVsqx!x7!pusg txppq g rpgx dgg pfpx fpg~g eukukqkvnuyn!uq k pshun s n sg s sq u uq pi r m s v g ppgdzpnqusqntqd~usnppzrpxrxzp $ $h v gn gy x g d uog $ qusXqnus4npoe4pznvy u hs gxvhvq sn m g n g f nri uvpgrxnqus~n~usnpepprxzp $ $h v p d gn gyn gn x g umsus m n n q s s popg nyqpg T u wvqqrusxgn ugussrpgug uq ~grxp $ $h m i G m f g usuqs 4d ox ns$n pvr gd ruxps~dpqt o~gfm rx pxnpguqg uss4uuqpssgwrxq d rugn qwshn g z rXYq V 4.2.3 154 Program Notes Arrays us g p q i g u nd pdpuuh u gh uqrfpd pgrnp$vtps pgig n"dxpusntpqgx 7npg n g jwvuqg5uvppsudgpnns tgg ppdphpg sdgu A prig ppg5gohf n rpdy rxo pgp ng qqus gfi wvuqd nrgppgm n t p q gxs p A ptgq s )Yqho1)oY|qhE331" )Y18)Qpe1 Y11 Y8YQp1) Y3"'x)qhIY( g P Y CC C C zz C Ez CCzzz z z C C CT C C C C PQC C zCz YC PQ Y YC Y PQE Y z EzC T CC C CC C EzCCY YCz z z C T CCC C V o m 1)T3 )Y3 1)Y3" 3)& v1| & C C YC EzC Y CC C P EzCCYC YCz z z C Y CCC C 8 1 ' g ' g ' g ) Y3" )| ' )Y3' g pYv)q ppgusuonnqusywvquopgrB s s i z qv x f m d v"m ups pwv ng pghp qq hri xqm nqusnm pg pn r x uvpsus pg ng hg ri$ yq ppgq n g q x d d d o7pu uhu u dqs gfg q$g dp x x wpqg eonTpdqhpx pg ujj sf qd 5pGpgep gx wvqquexwqrifpdd vut qrgsi foid i rppgs puuhu u zqri g n pg 5 y n i nqusvtqupgr~sodx reng rxx ons ~quj 5!p rv sui j x n x d x s n g ~ g rpxoeyhvxueyAvx rquxrpsxrpgpf rzx n!nm ssqupggq wvgfsuqi iu opmnn xesnm dysuqpg s 1 4.2 Searching a List 155 7 l g ! q x 7 d yj pg 5 odnrhpx vpppg g uxsv pd pgnq xtpgo uuhpss hggp us gn piug upkuguhus ufutvvq gsn nT s tusq Arqd xignf pvtrx v ywvq su p uttvq"un5upgpfghyuGghpdxGpgtptgquGuGnpgertuqsgf s s s g f sn~wpqnnopgusruiuukuhuuu5qg fg rsg onAxs mgxrpf tguqpdrms g rx g sq l i d pg r f pq tggqx uf uuvs p npptgoVqg rntq ugs fxy pgvt0s unn o whq pd gxpgon nnpuerpf xpgptguq uygxf xpg q fv q n drg xns pgtqq zuf opgpf pg yux uhunuu ytv v q huppwgrnpe q h s g sx g q x gn$uyg ghpdxpei oopdg pgu gf hg s xn d npufs hwpqgdqnhf tvqhg upsdn jnppuuii up ukuhxu7u ~lh qpgtrqgfopgrgx nArxpwgqusm xIghpdxppugs qe h ipg pgo rnhrhpusgrx~nex$ytvf7onpgronusn g q n q x5 rq u "qf spdrrpf ui u uukpsuh5 u unlqp gfopd x p7x hn $wgv qwvq uyunypns nppgw nqr y gpgi ond psu rpgx uwgsntnpqAg7pnpg x qg d i g lzx tpqghnyqr x r7xv qwx rftzi p s os rzppghonpg`hxepnpone f o i i d x f d g g s $yuv uiwvquuk uhuu nqr gi ~!d nxnuhxsq dw qrqrens u nzsq uwvuquepg rqi!rgni Ioxd n r~xg p on en quj nproui ne d g i d x x s f d g q pwfsq hyxyvqgfqewqrfyenxrzrxwguqmgrxrpxg m nhun on p esx p ulrq ftv pgpg npgo~p5qrghgpgrnyd hxn vuxd xuqs x g i x s f d s p ir s v e v ruqui h uvtpqTvppguhps gd v pgu7sqs rxfg q o goy gn puufqs Tuhu wvu qp u zqq prTpvf dr Gppg$un x f uphsus!zs uzpgugf q fuuq ulqywvqs ng s s s gn pvo xyoxpwgqusnx nm x~qdr xq u u nex rx ng pdrs xVuxhgy huqsp ph qAgtvodf q ups prgg `qwg r`onr pgg yu nwvq 7qnm yn ys ponun!g p!pug uhu u q ir s p$gv wvqxrs xpf gtqusg gfrx s s us`prxqxpV u sx hpg x j s f opdrq xtp yg x pwgqs n utus npe Tt qugzzh d nTup zptgp qq f xppg gpg gugpgfq 7nutpqg7 nwvqn vus5nApgry g u uq ulf qrighd5s onry ppg ups ptgg nd wvql n h gg fd xVpgxpgu nus qx x qsugpp pui tf uspg gtq v gi s ghf pdxgpg rif f ~d ng rpusnv x 7n uuy u uh i u Aq r gofd p nxyGn h z pAqrghzpon pguon uqs ipgr~ppgegq s ne gpuwpqq g onerx wvq ups onGpgpghuds njp en pztg quyuiu uuiukuqs uuqnqpegfd rsgfppgugysg fppguprgrxwgqrnnzyprGug wvsq ng pn n use gG y g i tqus Bs x ! x f g x n v q v quj~puin s d r! pdrxn p tes rn npgpg hu pgusqpgxug n ppghuoss prg q ptg !x f n xesrxqn s s xptgs q!puBg rxg n g ous uppgfpg i tpg und rs pg uq n grpu"p wpqgen7pd "pgpfg7pnyu lu ug uluqui qgfd Tn whxnGs uonqu s !uuhu u q qq rgid f ns rpgr en p$uvonqusyopgriygpeg pv pguhppq gmqGpg~ n x prtv qog f nweonxonx ~ pue"pxpwrpqxg pngtGq ptTqsg u vt o7 $"v uvpsues nm7 ~"pgq p hhuddq srrx i hsn f pdrx g" p nuqsyp pg grq iyx pvguhppg rt gysugi pq f n pgtpv7n ux nexsrpx un ps sg uq rgx5uhV~nf pdrh n d rxv yul q upxnug uhuwskuquh hupgq gtq vt rqx ~ q nppgn Aruntq pgds p rwgf nxqrtxnudopsu d x5pgg upfrpq g sxn p s n q x ~ r s 156 Arrays ppgtnuqsgxpdpwfq7 $h $ opghxrd!nvpngepv yvru pxgps gx s g g m d qi t r q i jp hrq hp r ! nopd upsgorgpon yq x ermegx u{$v pvhuss nem T pusn gg T g x d x g r q ggpxguwsqgGpgxdqhhp ppgf ggf usy ppgnuxp xnq m ! ~opxgutsq g q p ppg!psusx hxn v v v pv yuoqg uy ui rxyu yuryu!yppgg p nrpx gyuuAosq ru7xpsqem Aus x tmud ongp 7onqsu x y upg d x pytvqontqdrx~onzpqrfp~nunwrmrus'v ppgGuns g g i d g s q x q i pg~ 3 V X )TV 0 @ 1 1)T3 1)Y3" 1)Y3 3)& v1| | h )Yqoh1)oY|qE331" )Y18)Qep1 Y11 Y8YQp1) Y3"'x)qhIY( g P Y CC Y CC T CC C C C C C C C C C PQC C C C C C C C z P z zz zz zz P QC Ez C Ez CC1zCz CCzCz z z 1z z z z C CY C C CY QC C P YC EzC Y CC C EzCCYC YCz z z C Y CCC C ' )Y3' g pYv)q o m ' g ' g ' g )Y3 1)| 3 qx8Y1vYQ Y1 4.2 Searching a List 157 pe z g s m p m s q s m p jxq dpgd xpi wgquss f f x7 yphgs fu"xx yd n vurxps tguqg grgf q x pxg pg d on uqs 7 vu ggf pg yvum ef qp n~n rdd xuqpx ptqq d uv fpEq n uqsi xdprpigg rxmpg p$g yog xxpwgqus sg x s npeg $yhhn n tvr rxrxonuqss jpf gr s uqs s ph qVnpVuhphd usugn qn en pgsg tfqh r xpuq tg m xuopgygfp7 rrxthmq pp pg7ngrvpungpghd7rigus r nuuqss dn uq ei'vsxp~gfwvquppsn pgg rhx n~pppgpz qsg `y ggxi pqfpqwgd ud sGq qfus x~x ~pwgsunquhss 5rxfm un xynrp Tqg$urv iggppvduf d rsd xgh~rd xn i pg i x g g s x s n f z drqgs p hvix r uqstpfg prgp xrxd q o unx ep x p 4rg rpxx 7gp upgns!p hg gtpgg n pf grivtuqus rxgsf hd rxqsnood pxg 4ususrv ugteouxzn Ts ygq fxuqns rm guqtrsf 7x g d s x p s ri fu x i p s i Fq 3F F 3 3 V X )YV 0 #01 4.2.5 158 3q1 2 V X ) V 3 q 2 h 'q # 0 G 2q ` ig 3 i{h # 2 2 3 c # V 2 3 2 3 i{h 2 2 3 c V V X 2cr G) V { 0 W X z Eq 2ch # 3 g { 2 1 3 2c{p # { V X 2 1 2 d V X I 2 V G) 0 W X V X xuTps n 7p'vgtgq pp"r dgGtnfiux pr"pg px gwuwspqg qegphpgnwdhyq xAq pxgxh7 op oppnguso u pgms !tpq nr"oiv x gf tuqfs p!mpypvenpt xGpgun rss h s gr i d d $h $ ru $Xr u $h $ X u # X$4u ur $B$r ff r4r B 4 4r Br $ u r4 $u f ur r 4 $u B$h$ f ur 4ur$ u $ h u v uur $u t $urG u uurGG $$ u $ruT r$urrG $$uu T r $$ $ $ $h u $h $ ru $ 2 { { iV 8) 0 W W G W r X # 21 3 p { {h21 r V p { 2 i{h # ` 2 2 3 # }r d 2 d 3 dq 2 rr d d rr W d 2 3 V X )YV 0 d 0 W rV G) V X V d V01 Arrays Efficiency of a Binary Search G ' ` X a r #01 I 2 d 3 2 'q 2 2 ` hc3 3 2 2 1 2 d x`i g { 2 x`E d { I 2 3 d d }r W d3 2 3 2 `r r X V01 se g5 s d fys ypyp nxg hpdv puhhnT0ysgp u nmus n5q umnyTp r iupsv `xugs $i rx oChdf ou psyhpg gd yxrq hrdip uiwgpsuqh x x pgus 5 xy g s u n s uXru $Xr r r 4 p $ u oCB pu$ v ur$ u$T SB v X p p u usr urruG rr G$$$ A T u ur$ uBru $ v m s f i d s f s gd ih g gfug wsq rxs qyg v uyvr g x h~rq i ou ~phd rxg! pm rp gsum ufs ug hds nxm pg dr xqrid npq x rhxx ~pGpgs wrx nyqum snspgnpg pxq~nnp5vtqhrdr7uqvonpg fnums f us xpzpgp pg n5hqxgng gh5qnTwvqnpppgnpg5qrTwvq ogs i uqmgrx ri f d x g i f d d uqxvuepi drpfg~x xr~7v $ tq xnuq s yxwvg uqgphpr~nrxqq x f s m n xe x uv w prtgq xqArq xi hwsu gonrApx qrgxwqrfdgpx qrmp npgtsx7gp tq xgxuwvuq s pgnpyppvmgouf s d Aq s V X 2 z rXY3 r 2 4.3 4.2.6 Sorting xqgrvx pqupsg u!rxs qq xpfo7pg niqus$e gpg~d rx nrrdiq xntphn xd uwruq xesvq ius r m gr n y fd d s 7 ~ { pp p gfz s r xA $h $qv v rgpxgdrxq rui7d n xdp hgpnsg u eiqwx rg x p pgu!nsn usuqsn v p 3 V k X )TV g 0 Exercises s m x d x s x s x x g x vfd rv~npg uj s fppgg i ppuwsuq xrofu~nuq p g~nn xr~upx g~g nrzhv mhnuqsd tvq ooprs nm f us nv qsuf sxn pgpg rs qonm yrx h phps hs $pv hxusppfg xy pwguqxugghg xfppgppustqus ! nr !gsus uhdudus pxg usgf pjpg pfm pfpggpg oup ntsuq uoAnmss ogp pmrwgqx Vougerpxg m dpgpgtqopg ng f pxg qigriuv sgf qpg npqhd gfrx7srxungop pggmyqerxe{ tj|qnhuq pgso xug ps pozg phhndg 'vy5qx! uuh yui o~x rmxgd ptnqus gpm frx ryzuqx h ppgpou nsyu poongs n5uq qsyrwv iGopsuq v rp ruig is s p v 4.3 Sorting 159 ` X r a rX r ` F F F F r r ` X F & `rX r 21 W 2 zaX r #01 1`pc` 2VXs Whg 3 2VXs 2Id1 2 'G 2323 2 21 Wh{ 2VXs W `hc3 2 dx`{E ` W3 2I 3 d W drr }r W d23 3 2 zrX r V01 2 21 F p p s g s d q x p s rpv x utspfqrs xq m umgpqgm Vpdre s uzg y gfpgtukukg kuyd ukukkq y d rxx xduk q g q ugpx!oyrxwgquqssm rgfrxgkukukyuk mpvug pfxqmmu7pqq pgrxert sxp yn pf ouuk`kuks p rrp x tgquxgyfrx Xkufkuk yuxkuqkupf gpv usx opfdg rrgqxx fumumos 4n rp q h!sdxg puprds xexv ru x g s g ortpj g puqx gpsx pgguqwgm tuqrxsf s 7qfumm x ~pxq t$q 4xpvTv uggsspugpfupfrxgrqxmqppmummsusu!pr!g ugwfqf rnxpxgtyh x ppugzgp nwryq xtq r uigsqiod rwrvrqxw~x rx sh s s d ~ f n x q n x d 7 g q T v pg nygfgpppusgqswusmTnnpqugs hfuspgorvhdsGr!suhsdnq7upsg"~pg"iyvuyqsgfrxpgxonddpgrpgpg x suthd(rivu fhpgyhhovrxhdppusgf57npgex xtu$ rxgfp jniyndrxqunGuszgpnpqugspggepuxszhpgxriuxpszghdd(rrixtqusonmmusrxpggdrdxqri!dehgdunhs uXru $Xr r $ o 4r u$ ru r$u v $TrC B r $rr T $$u ur$ uur urruG rr G$$$u ur$ uBru $ v u r r rx~dpus~n~qxxvpgwqustq xmfdgfp~rx stgnpeppvugustsqwqursx!su!gru$ p x"mpqgwqdnx iiyde n y upgpgAxo qrihgd feps"nGiusgfpvgodpgggxpf g d jpgxhmAmpgwqrihdy onTx s hx 7v q pxV qupss s h yos nhhuii rv V rx i rgus hm pmwgqrhi dou sdu 7pnry g fu s7n5qu7mdsug pmwg qd r hd7 ntus prpxgpgp rvxp pmtgqridony gpxggpfh5qupsdgtuqprrgx rdq px x n qwgxgrpmuy pdvru hdsi npxgony5 gpmu qutgs qrpgtiqd pi qwg 5 rhp n !ep5svvug t~wq uqurAsnss x u y rggpx fop uws7qgf htjxg ppu4ruvgf7wtqx s uqs sAps`!ux rpxq gx p grm r x eng 7 y s s o e q g i s g d y 'vtgq xzpnmg xpvpgG m d rusdr x rpx ghdq pgjpp hri hin g$fv f dd rpxgsgrx o x ny g phdm u p pg nrdqd hm s ugsgfnpg qqgppppuugff~n np gng xgpgs x tq pqg~npsg pgq hm tu sppg7 ngpg i s ggptx7pgpdhp g yitopgtxtq x T nq uxumx phnu"pgpgvuoggp fvtpq7 phpgq "oy p gqs truxs n~xDgffx n ptwgrxqq rupx xse mg~gdpfttvi rq x dx s n dr r 160 Arrays - W 2rXY Wy 2 `1G g` 2VXY zrX a W F 7 F 2 W 4.3.1 Quick Sort 2 W 2 W sV 2q ) Xr G) ` V q ) 2 W 0 W 2 2 W {sr 3 ) XV G) x` 2 2 W 0 W 2 2 2 W sV q ) Xr G) ` V 33 ) r XT 0 W 2 2 W 9 2 2 33 2c{sr V rXV G) V r 2 2 0 W ` g iV r 2VXV 8) 0 W { V V 2VXV G 0 W 2 3 `gE3 1 XV G) 2 9 0 W { 2 E3 XV G 9 0 W G 3 p1 { { 2 2 3 1 2i{sV 33 ) V G) V 3 ) 2 2 W X 0 W 2 2 W `igr 3 W XV GW 2 2 0 { V 3 W XV G 2 2 0 W G 3 p1 2 3 2 diE z { 3 3 2 2 nV V VV 08) { 2 X W ` { 2 E3 V 08) 9 X W nV 3 V 08) { 2 2 W X W ` i 2 { 3 2 2 3 V V 2 2 2 W 2 2 3 V 33 ) G ` 3 2 V r VV 8) 2 X 0 W 3 d 2 9 X 1 V G) 0 W 0q 2 2 V V IrV 33 ) 2 d 2 2 W I 3 2 3 2 2 d d 9 h 3 3 3 2 drV 2323 ) r G) W X 0 W d }r W d3 2 W d3 2 #01 ) r h $t r # r h $t r r uh t $ r $ r $ $$ $ $ $ u $ r o $ $ o $ $r4 r Xh $ur$ B u h r r 4u$r hv T$ X $ r uX u $ $ $ h $ r o $ v u$ ru ur$ r ur$rv $ v r r Tu $ $T o T r h G$ $u $ $ u r u rurruG rr G$$$ s r rr G $ u$ uh #$ ru $X r 'vu p pxg$uypvpgwhd~pgxt g d v q q dq q j xyp ~nypg dpx rgx ppgGpg p ! wtqpuq x s ~suq u nt n pue!sg qt fpp ungf up7e rnpx prox gp toq uxys uqs rnghreuvtq onx igx~f dntxhruq uqs psd u s y g i ~f d x q ! ttqg qrppghpfui pg gudf yeTohgp gn n u'v pfw prnxqoq uqupegduqrpepxppfxss u pgy~ t rpwqpx xp usnuqhtfqrgius qr hnf uqdpd s pgtrr!orTninnv o`o uwns prqgex s ox n s ! sps xx xg uqrgrpfxms xepguqTwqx dGp7tqrghf tp pgugfenf5$tvppgensj rxqT on h s f g i d g s q i g f x gAq yupsywpqg!ni usndAqgsd wvuqtsd qprtiuqtusywqrgi f d r hxg pgvp V uss tpgxq gr$xxf "v qrnp gsqx uf p4~vi tpsqs u hpg grtxppg d of np gtq yx putq m r xhn usjhf pgphVs m d gr q sp g5nhm !dripggp 7 pjrxhum5pqqphxx !wkuqrkuxkurpgdpx 7ws u !nq y urAxs pog tquxps guqm wg rxsf ukf xuk~uy k ukukukukkkuyuyukukukk kuyukpvukkuyuuksgukf g q m s g d v d x g 3 r XY 4.3 Sorting 161 r X T V 9 V x 2 r 3 ) 2 2 W V 2 V Q 2 C V 23 2 W V r 2 3 V 3 ) 2 2 W V V 2 2 2 W r 3 ) 2 I 2 2 " F F F V 2 V c V 2q ) 2 W r F X T F 9 XY r 9h #01 hqj ggn7hr5htrpgoyvt qhfpq frhx uws nVupvs pfnAx`gypgp7gp5 npp g 7mggpGfpngnpone g us 75 d x 5 g x 7 q A m o p x 7 g ff x g d pufvruisdhu~qrxnqussx "mu !G uyrn wg~nrgfp s g d s v s sx s q x yp gng n f pg r uqm pspvruispfg dd xf nus qt t Arxqd xonn uquss xns uhxs 'vpgppgo!x n rxxuwhq us5$wm# pgdrxqdxi nq x rxrpx pv ugsgn m y vr vg xpwg!nrxqxgfp up pnfpgs xq rxzqpvrh uis upgmg s df ~p gwsd duq rqs xunps!wsg ppvqp riugsgpoesmux dpvypd x up us gdgs p rppggx 7fo~n equx~tuvquq~wss npvo px5g rhn y ox y y xv$ggufpp f u q s m wrx!uqppgrhdtn te$ vuwsqtqusonr!ph hpg!ontpTvg uppsgdm pqg q s i xi n x g f j uqx v on~y $ ppgxidon p~g s fp pg f nou svy r 7ppg i s g us o r~dqopn ngtprzxgq vpg pgufhps d Gxe rqups un! qugfop Afpy nTnxuopgd u!pptgpgqr i d r pxpuns s v xt tquqs uf ps 5uq" $ us us s pgrihdg 5n"g rq xArpxgpgx5nnyhdh xq e s x n uv$ nwsIx q gGpdxg p e pg rxnqq us rn"ougxf pppg5pd g npdupgdps us#"$u uv $ws tququvs5tqwsuqnsxIrrTrrxxmxf xG i oj p ngGxpq5g pm pgg pqx 7sg uups ngu xrprigg rppgxTp g n"gp i puvptsg wquqn oyuws qrrpxg g ppfwghg q ji rri Gups f x s d e gf 5 s m v p ugrrxvd pq wi g qd!pg qd jrhdri uspgpgusqqrxqontdz x rpd gpwguqsrhdgf s q pv g!~d qurs Gsi pf ndrpwgqxq rxnxrp us gg px xwqpgf wxpojgrnpgy pd wgrqxnd rdpxptgpugqsh hx x$hn tvppg 5ng rpq t xg Vtvq fp rx gmmu e x op r g vtqus ~us pggim pfpgv x~husgf syrxp7d vtppgGn7 rs o Tn5us f x nVpgug sVri qs nx g pp rm xdv i uqwqri f 7tqrqupsu dnu his ppgdd nhrs p p r dnq h u fg d n pgu pshqos n xxpprxquGwqgfVw qppufunywrxop j nuvwsx tqruq pxgtsg qouv Tpggpxd prdrxnp ervwpqrx!p gi u u $s p pg!pqf gd uq!uns p g y pwgpursq x qyn m pxr g g n T r g s pjr ynu $wvsd yrq gsux fgp gusus xdsm proi uppsgpuguss uqdy ngpf ghTgrfpxuxgr"qusppgrmvi$qqypgAerxef{ x y f 5 s x x T s us hd g m df rpvuv wxpqugpgspxr$s Txpg h pm wguqes hudyg! nex rprwgpxquxgom ~xohp g u#rs$p x $q pquhs pBrxgnpq exdTi! w drxqntunrhosud s o4gnpp7urpxs m ` s p ph f grq xd g rq n x pv s i uh #$ ru $Xr r $r $$ $' $ o $ h $ $ hu # $ ru o$' $ hh $ $ sV V rV 3 2 d 2 2 sV V 2VV G) X 0 W { ` px8g2q 1 Xr G) TV 3 9 0 W g 2 2 sV V 2VV G) x` V V 2 X 0 W 3 {12q 1 Xr G) TV 3 9 0 W g 2 2 ` g xTV 3 2 2 W ) x` W ) r W) W ) V V XV 08) W X T XV 08) W XV 08) W 2 2 2 q 2 9 2 2 33 2 162 Arrays 3 { 2 ` h c p { 3 3p { W 2 1 3 2 q 1 V W 2p 3 { 1 ` g E 2 { 3 { W 2 1 3 2 2 W i1 V 2p r qq 3 2h2323 ) a W G X 2 ' W 18 2 r a r X ` g { { E z i 2 { 3 9o r ' 2 3 X 3 V 2 2 33 3 V X 2 ' 8W )1 WhE X { 3 2 { 2 3 { r X X) W}r W r rr ' d ' W 8 x d 3 3 d }r d d 9 h W I 2 3 d3 2 ) 3 2 r XY #01 q 2 R ` 4 ru p u$S$p r p 4 r r u u$ $rBuu X urB$ $ ff 4 ru u$X$ r 4 $rB $ r u u$ ruX urB$ $ ff p uX #$$ r$ ru f ur r $ $ uh $r ru4 ` uh u$ v f r vh uB$ hr r r v $h h h rpr T $$uu t Aru G $$$ u usr urruG rr G $ u$ uh #$ ru $X r v v i s dxi f d s u $ dV Vodrxrqhmmdud hrqpxzusn guq5 nyf qu"s rgt nzs r`rrqhqm d`i uqer px g x d x i m s j nzhxdf hx pphp g duq ns pgq ypugd rx#$iq d n pnpez u n pus f dv trx rx xn etqri pgdrxq idi dnexgsuq epvodh m x g hrpx"qopex 5onIfrxq'vuos pgpffpgp5rhh upsg~pmf nwgzq pdig pfpgups pg xq hnx pg g g ~ y g u nuv rn uqx s wdxnx G xp es gfp!phhpg!on!uds royppg!ndh q t i x m g g f i x o`uws qughdrquss gzpf ppugfu!rxzppgzo orptgzn q s s q n x q ypnn g gufuqps sn gpnhhgnsfu fgpi pd frpg qups ug q 7xnpgpgpqu xpu s nepggpnn puqgsups nq f nrt pqrgx i pg mp"g q rnfg hprxhmgf gp suofq pxxphhhp!xn s x x g pv prg rpgp r!xx nxg!fxq t xqn !hvx us pqx upeps p xpgugs geAnsxq n u exppppgpgxhze!tgxm p hq n rrfgof upwsqrp h q d r X T 9 4.3 Sorting 163 3 2 2 2 h3 W r G 2 r r r X X q V 23 2 3 V X 21'8 ) n W X W { r X T 9 r X 3 V #01 2 2 G 3 3 ' W 8 { p 2cp1 { 1 2c'8W1 { 1 2 2 2 d ` g xi ` hc3 2 { x`E d { I 2 3 d ' W 3 3 2 d }r W d3 2 3 2 r X 3 V V01 r XY 9h #01 2 2 V 33 ) a 2 2 W r T X 933 2 2 r T X 933 2 2 E ` 2 3 2 3 ` v uu uru B u rr4 u$h uX$rr$hr4 f B $ vuppg g x qrxg tfq x ~funq dpn ghpus ougs p u gf !gp Gtq ~ri s i g us # s pjxg dht uq!ignhf rivd rx pvgpgpo g usd gn!gp ugs tus rndus !fuus $ pxp p gxrd xnq rdi xpxhgn s r uh $r uBru $Xr 4r r $ r p u$ ur$ p ur$ r p u uur$ v ur$ u$T SB v X p t $ p u usr urruG rr G$$$ A T u $ uh $r ru ru $ uh #$ ru $Xr u$ uh #5$` ur f r # r pr p u$ uh 5$ ` r r $ r 4 S XB p p u$ ur$ p ur$ 4 sp o rr 4 uru'4 S f W 2q 2 ' ` g E { G { { ' W 8 { p 2 2c{p1 2 1 2c'8W1 { 'q G 4.3.2 164 Sorting Small Lists Arrays F r X 3 V X r X r X 21'8 W X 21'8 W W X W X a X T 9 F F r X X 2 ' 18W X W ) y F r X T 9y W XY 3 ' 0 W V 8) X W )1 p g usqoppy s !runpd!np!v ypgtfqhgfgvuk uk5kuyk gpfgx g g n s q g g m x p u! q x d m s rpdhu d5suqs g d n4 x t on n hhxq` x puT v h s uh $ d h r p vr h $r Qpg4umenhxrx rrx uhxq pd7su # $$u x n r mv ukus kuku7 uGp gen ugx phpgd X$xr qhwsm u rq hq svghuquufwsf x$uwshqn0wvpuqgsv s g s d s T v m v pxr s q q rx r!tqqrrghrnddffii xhx up xgtxmrxpuGg x ume pduss im 5m s x xd pgpg uxqs t ui ulryuT0gfri ustq neegp r h$ug rdd pxwguqhvq qu pv ush # v qi di d pghGgpfg g q s s r s $ yopghd xrhdp v ppgj pg r~n gVpowdz uhdu ~drxr iussd uh7 pgxVxd p7v q vsrpxg$u gpj s d T ukhuk dk phpgus tq$ rVvr$ewsfu xpqghxoq qrnidpg5jpp hg gi fwgq n hg phodfgv `pm n tgtqqni f h ir q o m 0ne r m h xr v pjugumsufm g7pqtrx ui psuqtguqn5s z rxppd g urvps img dpesgm 5furs xngpf"5"xg n zehx uqrh#dfugfno h5phhhd g qrxd q xrq s5d!q 5ph on$xr pq v dg Cxohv p s s s x x i d e i h g a X T g 9 YG X ' a X X 2 ' 1W X )1 Ws X a X 2 ' 8W X W )1 4.3.3 Exercises ` X r a r X T g 9 r X X 21'8 W X W a X 3 V r X T 9 & s s rf y g f s si qm g i pvruixp'vu~ v pg hq h~h u ywvquyh vug~guosf nppptggpuq rgxsd w" rxvq prgj opx ng 0x nx qx r d pjrtpgox ex gpvus v f hgufwspu pnm h pfeeng p Thg uwgpfr qf rnp!qrxrppdugp v wqrxfqn!pptgphrpgup f husgrpqw ! gxe npApgpr q xg x d uqudps snn uuwsq sd g s wg us x x m j g xho q g x m ufs $ g q r s jprryqgw xep pgphq guq ps sx pm pgnh dqrx d uy o pghxrq hd 7onrx fnpwgrrmx pusypg m q v v d i q s pfgofuusgfr xenopg h uh $ h r xhdeupg yru px g ppgpf u txd uh 5# y s pg drxid5q hm d pdg uh $r ru d A q x $ q n v g uvpfg pggpg ~rpguquspswxq`pgwq rxxyip gd ppg x xg pg fgpd pxgg pdrxVhqn s~npzpgovpgs ppgg f p~uqps tfxx jpqg px g g pggsu pf yvf uhfn vupd pipgwgqpurg~fxs wvpqpg utgxfrxop gpftgq yxugpv pngpqt q ~xgdpgq s po q pgpg so d q j pusd p5 pvpuopgghdpguuouspguuspgn~hpgphrhd fnpwgrrpu wrx G s s s s g i hs tphxgq xnr yhdpxd un h 5q# $ rpuxshorsxushj hpn q pg gh"~qfgg p hps dpdg g5nsudn rrnixd ypuphps g ou psunsgpfg"qtvr g d jh h q y njo uneus dt qtqn $ xhu vpdx gus 0fowvs nqvd7ggp pppg pvgpqupg5ws xdqpupwgs gqruxfpspq"tpvg7tppg phgg gprd n ypxgprrpxgduigshsg pqg d qwq grpfsuryxgpp ghoi uppd vxuifrs xx g d rA sn 4.3 Sorting 165 V r 2VXV 08W) d23 V V 2IdrV 2323 W) 2 2 3 3 23 91 XV 0GW) drV 2323 W) Xr 0GW) dx d }r 20q 223 d W d23 a V 3 d2q W 23 3 d23 drr d W d23 sr r d W 23 dx d 23 XY 9h #01 2 ) 23 XT 9 r V W1 23 R F F r u $ $T o T rTh G$ $ T $ $ r r r $$$u r G $ urrG$ u uur GuT$ r u$ r ur#0uG r urrG G$$$u r r ur$ r h #$urru#T $X r hdusriGrxpghds"rxuspgepgdxqrihds5usGvpgwqedp7upsgx$zhtq#dqpg jrqdxpudhsm~sdprgxnqmsuusghnhpwg"vdqpdghpriuqgsgwfpqugpspugpsgprnxprnxsuddruxrrinphrpiugspgtqudrsxrnxpgprgx p qh p d r 5 e qpdn$sgfustqrrxqmed npgdqy { jtqdqvidrxiuspgxyqhvqxdgppgpqxumngxppgp ~Tnrxpgopgpgprpuxsmpvpgprgx n!yqruigspdgypgnpgyYqw$higfd5vqsuqpmgfrrxxpxpggnpquprsx nnv pgups!ig5qqrxfxpgrrxxpxpqquuss e fh z e ` G gxr e drxonpgxnq qqrifddn on$y hw qg g d"qppusgf hd rx rp us n7qxrgpvi hpdf !wg phdgq n wDof q n ppqgx t pgx us pxgxp gfus nif dppvm umsrsv i g rx ipg t h ppgpxrugsp5ng5qgnn pyurs j pg f y d us i f heynow qygd dv $qvppuggs fm xqrypxgpuprsxyyo 5npo~g pxpdgg q xpprx egp rx opxn"ruqxGn uds"qrxi h jqtupfgrnfhddrrxnnmmod$nguuxvtxqruidpsxfdtqqnxxfdn!gpdotnqnrigquysfhnrfqodnsuqdpdutqswquxorsnigmfh$dnyqw!rusxnTnpqghupdpsouysqrfni d ir g i ig x d jnpgegphdd5uv'ngpx!qunspgppgtqigfd!onrx! rxgpgmvpgpwquDqstpfgiwq7uvfnpgtqxpuswqrx e g s vfpgq$7pg"hfxpgpTgnxmpgn"qigpfdxnGnppgwgqryxvppumfprgxxyop supgh gf pjgn m pggT x od nhx vt qhqrxpgyqe!tqrigfdoG rxpgpsApgy ypxg x h i xTprpreuqs nhdqrghnopgtx~pepnr xx xDfpn xxuwsn qo i f d s i g q f i q m uq ghGfd n q x sum ygp pwqg nd0 Vxv Tsu p ius gppghpfm musxqzm uqwsx pgus x pv ppg Tsprx q v rgg`ptgq h i f d x g f n i d m pg hd x~ri gsug 5wqr rGupshgen7usqoywqrf g wrdq x x5m d i pxr hj pqfd t ggonptgpuspgwqrxrvt pgpgpgptpgpgn!h rzyph g q f qx i n x on pioe fgfp ng u Gpxux fhp pg g nf tq xx ppnhxe~~ x s x xr s g g x uvs o ytvqhug rnqs yp~qtg q gd ppg "nxpgpp"ps rpg~o unpsxhg ~hpng~pg nxp5pg grifpphqxxid mGornsu xgfgr~xxf n F F 4.4 166 Selecting Arrays F -- F F F 2 3 XY 9h #01 sV V rV 3 ) 2 d 2 2 W 2q 2 d 2 q sr r d 3 W 2 91 Xr 0G) W V 233 ) V G) 2 W X 0 W h sr V 2VV 0G) x` V V 2 d X W 2 3 T X p3 9 2 2 2 3 G 2 3 91 V G) X 0 W V 3 ) g 2 2 W sr V sV 2323 ) Xr 0G) d W W sV G 2q r V v v { q {p 3 W 2 XV 08) W { d 2q dl W x` V 33 ) 2 2 W 2 3 T X p3 9 2 2 2 2 W 33 ) Xr G) 0 W { 7 2 3 2c{sr V rXV G) V r 2 2 0 W ` g iV r 2VXV 8) 0 W { V V 2VXV G 0 W 2 3 `gE3 1 XV G) 2 9 0 W { 2 E3 XV G 9 0 W G 3 p1 { { 2 2 3 1 2i{sV 33 ) V G) V 3 ) 2 2 W X 0 W 2 2 W `ir 3 W XV GW g 2 2 0 { V 3 W XV G 2 2 0 W G 3 p1 2 diE z { 3 V nV V VV 08) { 2 X W `E3 V 08) { 2 9 X W nV 3 V 08) { 2 2 W X W ` i 2 { 3 V I V 33 ) 2 d 2 2 W 23 2 2 3 q h #$ ru $Xr $rB$r r $ o $4 ur $ r ht $4 # #$ $ X r o X h ru$ u# r r h $' urr r # r 4 h#$$ # r r u $ $ $ r $ $$ $ $ o $ $ o $ ur 4 r X ur$ B $r h r h $ r 4uXr h T$ X $ r u $ $ $ u h $ r o $ $ r$ rru u ur Br $r $ru4$ urr f $r$ f ur u u B #T r r$utu4$ v r ` 2c{p 3 W 2 2 3 W 2 3 0 0 W 3 c 2 vn{p 3 W 2 G sa V i{3{7 v ` v v r V ` v { { { i{E ` 2 { G 3 4.4 Selecting 167 ) y uptge~rGpdrezrpxguhxrx fvzpnrpxgusowgqusg s q i x sd g y x f 8 r t vv 8 8 v v vv 8 vv 8 q 8 q v ' 8 ) vv 8 )t 8 v q x d d r i q ftx~nxzrpxgusqrxd gm hx uus sp pfg r pgvp xrfxex fpxm jrxjhd n pumq G usx xruvwqst yqusm rvGongp pxeg r!px rsvsfuutwq quspxnqx h ym pxxgushd mgxusus ptgqgf s r e x ti gr s pvtuqpsdgtqusmyopxgusdpx gtugTgpfguhyx epgpg s"rx"m gfpng f v s f v s s x d jpgmq p otn prxg rhp x gduwspqhg m rpx gpvp gy uhdsq y ups wgpqqrgx$n yrorpv xnig yuqps xhrp rpx pxggutsqh ed pxh x F 1 2 2 3 X T 9 4.5 Case Study: Solving Linear Equations 3 ` 2 a X T 9 2 3 X T 9 @ 2 3 F Q F s X Y 9 W XY 3 ' 0 W V G) X W )1 v s g s s tjq i d w qrxy hvv uspqupunvps pgnpgezr pxg nrrx pgg gpfg gtq hg m xnwv$q os # qphg ur "ud hfxs egnpg pgtr7qxdx dgtgpf nqTpm ~p ugf5n"pd uuss em n7v ru ur$ ur$ hyd pgh$ rus# v i s pv gr udr s $ o h $ vhrxgf 5 q v uuwss rxGwsuq tv rq x gx g$fm u !x hg#x fu$nGxxd gwxqq xn# $p g otgdp hqy ed v q x jrtqxgphz ruq egm rpf pgx`updwsuqs xqpvrfwsu nq p n peg xthpuv $g 7u x ropxsd uqwg pxdgswhvq qri7 f g x ~ r i hdo g g # rxm m d s fx r v r r $ gpghd g d i X d xqrhvi dp p gj p r~onypg ~gpfg u jp h!h d! u$ hds v uhd xrq iu`pgshsudrxqr idpgprxpg 4pj pxhpg dr7on v qm v Xrfpxgtqr gogd ukukkhkuy dp g pg q s s i gd i f t pguwsqri wsfm u xqm nnpeGgpfgtqhh5vnptgrrpun srpxgsp mq x jj gxufgn uqsers puivp sptgpg d uqupss efxgxun Xngpfxgr0er xqq drughh$h$gwd nqeh7gs prq x hr d pxgruiqqyxd$0ngp $vpv h g uq v p f x s x isgf f d # q ~ h x m s s o 2q X T 9 X V 'W1 4.4.1 168 Exercises Arrays F x rxon7$v 8 qr8 xfwqrxp~xnzirursxTsouxpsgTsun dpgnexys xp~gu osndy unsrnmntDgqp~fr xqn r r 8 si uspggfpf gp qusz y vvvy g y 8dpiups wgqud on p ugs ypvpsus hdh vf xgpxg jujhd Qs xg qx xs pus 8 f d ufs ppfpg8 xeo pxgus s ppugd fq n rx q`g uwsn q vdeq uqp "r5d p pmgpg 8 usi y qrs x prx5ggrpxg u rsxd enGh qq x x rpxgup xqdtpriupswgqugngupgfppg8 xrpxgupopugsgf rjjx5umm n ggnnsu Id s usfryx qhgu gs uws7qf rp"sd5 pgqupysg x gxu7s pd gyv vtgpqAg5nprui wgx ps uqps "mgpthpq dggef5o nups tgrxqq m s gh G o qpsxi 5pTrpxguh"w pqen"o un7peun7pnGp7e shumm "uoneypgrx xg s m g g s n s d uuqrxss uux pv s hrgg px upuggg~pffgss p g nurpsgx du5gs pg| rgxupos u nms uwsgpqgqx u n7uqedpwgpgqusgrxf epggpnpxg rrx x ujhns !rd5ux nrps gux ps hgn Spft q uxswApxqr mrtqi uxsomqrspxgpgvgutqi ws xm rp5xrpuxs 7rnqohpi p opx tfr g uq pxxghrpf 7xuqv"tpxg d dg R xn s g s n A s ups g id h g uqd uq i yrpxguh~qusppg!hxeus pxppfgTo pgprxrp pxpd x~ngpfpgggrxf d x s y s d s s d d v d o m g gh ! i q d ogxf pdrxs duonv sr qmBpi r iupsgtqu nds r pdushtf nps pg usjq n i s q s x d pjxguqtg p s u rpd s nqg gufufsp!xqg npg t rd rugsx fuyxx nsvrgp gfppdgrxr0X!xpprtgg vqggsu pmp7gnpoug pfpdrrui xs x s m pg n n v x x f g sqsgpxut hxpxguvrsdi yqnrus`x!erxqAy vgpxg s v jjupghps dd n u oyxq o hgp hp gupsg urx ruypwgq uusg!fs g rx ytpsnp gxgqxq hy pgv vg uTrns pxgquhgdpgTu x s rpd xg gpvuf sm f xh hnj pdpnxg zeVn~px g pxugux gs pgis g d pduxGp ngogguwfs rqrn xuqtqos npvrn p4r7h`Gprgpx gx utspxquyrxm d pxgwsu q qnnVopx hpngpdx$ruv pxprpx xg G g n qus r m4 Gx frs pg ms i x rex g s r ge w wj h x dw u u i d v@kkkYTr a n1 a n2 a 11 a 12 ... a 1n x 1 a 21 a 22 ... a 2n x 2 ... ... ... a nn x n = ... bn b2 b1 - x 1 + c 12 x 2 + c 13 x 3 + ... + c 1n 1 x n 1 + c 1n x n = d 1 x 2 + c 23 x 3 + ... + c 2n 1 x n 1 + c 2n x n = d 2 x 3 + ... + c 3n 1 x n 1 + c 3n x n = d 3 4.5 Case Study: Solving Linear Equations ... = ... x n 1 + c n 1n x n = d n 1 xn = d n F Fy qvwkrx x e d 169 us k ne mz 5 yu vT X#!npg"qrxyn! 5nnvus$yrxpgusd"qusp~shhdgfdn jyurshxpdgusndhmgfxn~nprxpguvgoxxppgrgvwxqusdepgtxuxnsoexquqdgTWxTVnpgggpf pgfrprxir~xqnmqusppvg8Tgfpqrxx xpg gofrvx~gpgftqhoduszuszpgnrtq8qrmq rdnfy8pursp8rpxpggufwsqdhxvpxpgdyhpousdnrqx~nrrxh~nr7xpguvsdxqs~x mGfus"vxn x g sugxp dhwqpg5n5pxyus5husnxhmuse5nqux k 5usgf yxAopxpgusdnAustqpg~ntmusus~enyuk rTU~gfrxprgypgusn 8 xpgxpgu"sd!eqnrxgfrxv'ukV y vs vg78 prpgzgtxerxh " n gg s o rtxpqpggutsdntpqpgxxnuvtsqtnoVgp"npufnehpgy8 fppiuispxgwqqumA"supgtqpgrxnmqwxqpTxpgnhu sd vnxggdxxxypzgpugppsgnGgipruxsmpuspqrgx~rhxopgpgxpqmtrxpugus~sdqrrxxh~dgfnuxsgnydvxpgppugrswiqgorxm r gz jusshyqd!equrspngzrxQqgipwfhv"hdn({o"gpupsrnexTruxesnrxqsumgppnmgfyppxexvfrqxrxxp7sGzgp7upgpuxpsg e q ft u jrxdruxs$pgnhpgg$vpvppmqupxfghsfwpqggnydxqpxmegrihnGdpygpyhvgurxrprxniuggsptquxsfp7gttqqpugpsfxqunpXsspuhdrqxudXgsweqyprynxy$7opgGgprrnpugosonen X u g Xr 2VX )2q ... = ... xn = en x2 = e2 x1 = e1 91 F F F F fwqrx~n~usonrxzrxpgushdnhvxquzpgusoxuspgh qrxAnypriuxrspgwiuqusprgx0gpvpxxruxGngptquxpsggufdnnpgsuvwdqpgdqvwrxpAgupgsdh dyvpnpunspdrgxdqn s s s qp qusexmhd~pp rdxpgpugrdx~frxqTqxmunhstqrvuidrxpguquss xpgnu1dfrxqxp8mpgupspdgftgfpptnhx dp sh s h h gg v rxpghud!dxpg Xnpgnrnexpxguyshnsdfrxphxpqgmpgpdhp8gdgrfsuidpuggjsptfpqgpumrsrqxiyxmmunAsrrxpxsugustfqtqidxAd4xdrpguxpspg5gpyqdmgfpupgs7gf rfrxxq s r u nxT m v8qrx xxgxpgusd wqpg5nx gdpgrid5qus 8Vy vvvy 8Vy 8priuspgwqus npuspgdntqxTxVusxy 8dqxgprxx xpgusdedxgqmgnxpg ri`dpgridqusz 8ous 80nrxri5qrx!w qeus8 nns v 8t qx xprx n us dy pgxhys d usnmdtqpgnequs 8us pi rd uiVuqtg ps vpugessrx n Cphsgn ev p r pxugsu pqrg t x rupspxoxsuprxptpf pghv u s q uunpsspx5gsdg pgDusxdd pgr upsushhp g hox81v"rq xqh us 8 g g g u |px n m n n 9 g r d r 170 Arrays - - - - - - - - - - qvwkrikvwkTua Tu x e e e i 3 x l W d 0 3 2 G Wh { 2 X V W d ` { xi h ' G V ' 2 X r r 21 l ` g 38) ' W xXY81 0 { g d cp`8) x x` W p xx x` W { ` d ) x W d ` g d 23 2 10 { G {h v sr 3V v rr v 10 10 {38W z { { 38W ` { d d { r V d3 2 d3 2 d3 2 d3 2 d3 2 xXs'8 W 0q 2 3 2 2 d 2VX W3 ` W 3 2 0 3 h3 2 2 d d a V 3 0 d 3 d h3 d d 9 1 XV x }r d W rr W d W dq 2 W W W 2 r V Id d 0 d 2VX q 2 V01 XV 9 2V 2q X #T ' # r r r r #r v $rr f t ' t TB t v$ tr r v v r 4 v r v r #T $$u r rr G $ $r r$rr r $$u GG ur G $ rr r urruG u rrG G$$ r rr G $ uruurTuG rr G $ G $r o $$ uBru $ uvhdqox7pupgypgpwgumonqmyrxyppguuh~grx s d q vi s d dm f pq x uvgXsuqf $ r ox $r $ u pBgg sg fus gm rxf xt y xq dus g d q s m rxd tzrpx guwsqs mr~m n'v pgg wgqpour pxgug wsqr~ nx~ d uvwsnuqtq us qws x pd pGxv su uns~ ruu hs g f x n u ts x7pgopwgq spq us7q om pxgun wsqrx v!xf $ s $ iq u n uftsrrd xh s v i g g g xquzu ups d dpusr u Gp rxn f xusn `TYT pgpgrxrophphrpgtgq ndhhqvpusoyhep d gusgrruqps s nunpug ~ps d pupgs g rgpxrihAngp gytTbX di npdqyTWYT0s rpgmpf umuh$r$riud v yh pdpduuss `g xxqquu rxpuruqs fps i q h xg se x s s ss !uupshdpuspgrGxquphonunpgpgxsp!dqrx p gpx gs xAus q nnpeF xgupss h dpusVp!sqrxwqqg xn rqd xxq u sns prxusq g g g g g sn rtuq'vqupszpFcT bXapdu~dxri iu~ y nngprx rpxgud x gyq ups uunn5 npy xguq yng ongmue x" q rppg pf$gy xq us opg" `TYT hp s y g s d m g s guvsgufws rxq5pndGpIrpxprxnpig un rogrhgxd purpxyg og pjgv rx pwf pqg pughgfpvhpq d upgs hgpx pAg 8TQ xqdom nqrx yrxrqy~pxgquusf ypdrn xn nynpngehp pzopsum g s y vr s g 9 1 XV 2VX )G 2 4.5 Case Study: Solving Linear Equations 171 X 2 )q v 91 V X 2 W 0q 2 3 h 2 2 d d i) x ` W 0 { ` g d { xx ` W ` d 1`ig x W d 23 2 10 { W dq 2 0 9 X r 2V )2q X Wy 9 1 Xr 2V )2q X #01 V xXY81 ' W dW 2 2 3 x Eb x dl W ) ` g ` g W i`8) dl hp g W { xd {7 ` d ` G {h v sr 3V 2 3 h ' 01 ' 8 2VX r ` g d 8 3 xz x8 W d d ` g ' # b 3 x18) x dl W d ` d ` g ` g ' # c`8) x8 x x8 hp8) x x `8 W g ` g d ` g W { ` g ` g d g dl E8g l x hp`8) l l W W ` d W { g d 2 3 G ' G 2V X r r r V v v { { 3{ l W d x i r g s d V o reqru gopdf trndg xsid pnxpTg d!rdgsqupx pxgdd7og p hwgn qv p$gg uvts rwq uqsuwsqo $$u $ q g T t X ' vtr r $r $ fus~n pgf hpdrTxd n pgx gi frxudpgpog hu $ ous xxrs xxppg!sn T upsdpt npgnegx pg vm s o n v m g v grrV| qu~psx opggrxz tvuws tquqgnzex pgxpxg r$osujj x5gpfg prn gp usu gp s rpx$u g uddqsts $5gf upxsug5ps u n dpeg pxushqxrohni )(dd~o dnwghpdqqutfpqusuih pswgq uqzsuspnxtsuv 5 ~uqwqx n5hp n udg spgri ~ g m x d hi s g g ~r s $r o $$ uXru $Xr t $$ r t # t #T # # $ r # # r 4 # rur $4 f $ 4r Br # V T #T t # $$ # t ' E0 t # t #T # #T t # #T$t$t0 ## # # 0# # $ r r 0 # # t # t0 r' #T r#' #T # rt # tr T ## # # `8) l g X ' W xs8 { ` g p8) l ` d 2V)1 )`13 W X W g ` g ) l ` d 2V) 3)1 n{`8 l x W X W g ` W g d ` g 8) l dl h{18) l W ` g xY X ' W 172 Arrays )pdxzd`dlpxz W '3 bzdx`d3fxzdx` W '3 i3fxzd&pxz Wn{3fxzd&pz W W $$ $$ gfus~nypgdqus rx~dpusopgphdq~nyhdnh )pcdxznd`nd&pxz W ' 12 21 13 21 14 21 12 31 13 31 14 31 b zndx`ndqfxzndx` W ' jtqusodp npg $$ $$ vust q jtrpjgquxsmxdhugs~npgenrny~npgppgtqp5mg$pugpvtnmdggptxfqtrriugsidvuqmsgdfgrvxnynmuspngyxAvprupsmrquxpg7pghqoufunssnxnpgqwpgqups~rruvuxsstq h ~ T x z g r g r `7d&pxz W )p#{1 dxz{W d1`d&pxz W 21 21 21 31 31 31 ' yyvpgqwuuspsgpnfpguquvuseuspgpxhmhvdhususwqtququqss~mnmpgwqpg7idugwqpf"gxrs5nmgpxv0xexqrx5pghgpusrnxG$$npgwpgoqne g yh 3fxzdx` vustqwqushusrxpgfpghjrx~npg7 vuswqtqus! ~onzp~ usn~rm g x j xg rphxijm gdd dxv u ghg$pdhvf hg y pvpggornnpx5g rgurppfhgg pxu~s Apng qwg u`qsg nppg gnptsu p yguuvms puihtsd psuqwqwguqruisv ss uxGuroiv sdpx$g$uwgs pm qd rx s x g s q i n f v g W 0s ' 4.5 Case Study: Solving Linear Equations 173 12 13 14 jtqusousxggfpgjx7nApgd $V z8{1 dx`{W d3fxz7dx` W 12 13 14 12 13 14 $$ vuustsq ' 3fxzd` W n 11 12 13 14 21 22 23 24 31 32 33 34 V G) 0 W X W )1 tvof d s s uqwpqgnzus s uvwstqquqps hug pvnprApng gixys hp rx$q Irtr v qp hq urqxs mk ygesuf yrnir qpghdf drpf x ghx pdruwsq xtsq dr g m x d d ig mrus tsqm hrx $v pp $h q x r pg g drx id gpg jx pr g i x n v d uf x g pjrj xruiqg trxi hgq pd ngopq ghn u$p s dpusuds rplf ris rpxhpq mvxp npTe qphhg pxuyq xp qntrs "pxgusn$tvpg u V G) 0 W X W ) m 4.6 Case Study: Calculating Probabilities ) W ) W W ) 3 0 d 1 gE { 0 2 { cE { 3 ) W { W ) v m i pg s s x x m x s ephxg os m5pg pvv r pxpgtgurusq piwgm qx hy qu!vuwsqti qu ys ufstqhAu ns! rpxgx d7 qnrg Tgvux g pf gIf xq hpgors hvug d nu"qm hq p gpgmv 7sypdrhdri hxj uq oggpxns opsu ndpg us 5n"qrxupvpgppgq m A pxgwq rx pxdg hsn pwfn qm5uqqse spxgdf puwsqusmxxd gmfgx qg mgruisdg s iAx pggfgrx ujpqng x uxwsuv wtqqqupyhgs p gm pqge!qrox nqxg x urspxgunstqh gpgfupgsgrnmy rx px0p pg mumo $u!ups sm npg q xy T vjphg 0$un r spxg p q x xgT dpq hgm jppgddpdnn mrpgxpxh!xdr` evpwg qupsneooys urevs puvg stnpwqguuqpstuxgrp f uvgpxtsguqwqg hpfounhg dj qrnnx ppxongpqgfw g pg m h s gg h iT g s t s s x r $ T $ X B gfus~nzusxtxwqqyphoxx()ihdphd~gufsnzp q g d q q g $ s x s u fus s~x n n yvu wsqtqus ur pxg pfhg j r!zpg5Anv$uvwstquqs s x sfps gn"pu f dynhpgg $rpxghdepgptgqgyh pjtgq!ntpv ugpGums udpg rn!x px pqgfrox ~xquzgxks gfp~on~ gxuds tvuq si r pxguustg p ruq xpspd ug s g r G r m g p d )xz` W 11 12 13 14 21 22 12 21 23 13 21 24 14 21 31 32 12 31 33 13 31 34 14 31 pg 174 Arrays X W )1 X W )1 X W ) X W ) } #01 # i 2 g 2 X W 3 G)1 3 3 G)1 2 X W X W x)Ta 2 3 1 2 X W 3 8)1 X W x)Tr 2 X W 3 G) x)WTa X 2 2 3 ngi pnq b ` 2 {h 21 X W1 23 2 23 2 0 W r G) W xXTr 2 1 3 q 2q G)1 X W x)Ta X W 0q 2 3 2 2 d d 2 d W X )W1 W d3 2 rr d rr d q d I 2 d 2 V01 X W 1 V G) 0 W q X W ) 2 X )W1 v s d g q f qx rpxgtqqupsusnunustg qhxpr hdpgph~rxgqpguszpg qpxzg tqufq nx wsnxrpq eqmiqxn rz hps nryxpuhmg yxhqh usnpeeqg op nppqgrxdrxx"pqrgil epde upgsp enxqxxrrrpv vp x pggppxrwgg qwuiq s zx uvuqq tsumpswquqssenentsu ngpfpuggs7n g g e x x$ g i G p u g s d q if x v q v vl rgpxx g ps piwg qs nh uesu sgfpV $s rs opg hxrd`n` usgf rx puvs wstquqs pq u`gx0 vueyqpgus7 xvupds uyqgpg rhx ug g tsgq hhd m uvs tswquqVuwhdqp"yfdrqusg wpqgvuwsqtquVunpespp uss nppVone eug ugyBexpd5epn us rApi uqgupsus rn sxxpphpgd$yy g pgpp ydl srxq rpxtgiqddpwgq$u pqoyg gdhdsf rpuhqgu sxt dpqgpArosuqg nus5pegtprxrpq gTd7p usn spg f m vg V n d i u r ru $Xr r $ r $B $ u $r$$ $ r v rr $r $h r$r r $ r rr G $ $r uruT r$urrG $$uu r $$ $ $r r ru $ p m ji dqv nrrtxv pxuqgs m uup gg px ushd gm frqx rnpxg tuqons qupsruesx ~v' nghrudfx suqp~oos g nhzp ugsyuvgp wqtspuqghuds xsq s o xn !eugppgrx rrdr hp$ vg $xd$hid xr n p gtpgefrdrxxegpq qq idtpq! jgpp hpg y gp~girx oduv x nzppptsuwqg snuq7p gursyxp7tq dr q d xd h ny q q rd qi i s puv xu~ri i pgf f nxzx tpqgus~gfrp xyunyonpusyufs~n s s d s n g m s v i y n d x qog uq~wqrfd nhpyustqorT$v uon~npugs txusd erTusn ss g T kpt s q x uqsusq dTnu$s 7w$q hgfd rxusopq rghGdx rxqrpxgidp p rpgxjppgnd iegp xppp7uvf rtsd wququqson nyuvwsuqn tq rs s r p i 0 W V G) X1 W 4.6.2 4.6.1 Computing the Probability of a 7 or 11 Using Arrays Generating an Array of Random Numbers 4.6 Case Study: Calculating Probabilities 175 r X W ) ( X W1 h X W )1 p v sn s g g x s ru m!p~ehdq s rx ousqus gfuqus~ss onund Bq ygi f gf qXusqn q s s s tjquqtux npuqesg !j up g p ursy rutsx rn pxgtqfuws v uxstqwqm0nsu q gxx!puixf rsud uqtsuvg v s d d g r p y pnugdpwfpqg 7hx uhf uustqrsrx5qn $`pvmvrprhp ggpxuxps ugpgdpsr fx g7Gpvs pfgG uwgeqsrx~ xuqupfzs gp x5xru pq srug s! k q7pv mg s pg i T i s q g l s q ! gpfusx hxrru s5q "mv mynd gfrgxg wflvqhp qr yxx pzfs pust!o~xmxprpxriugxqps p puqrG~qsgxpfghipr g s pptgg pqevq g x T gqrrd d x x q p rrpxq x guyuhp s uy ggpf xgpi ppigv pqwf pphxxton rfuDhxf dqeo!~pnsm wggyxgpf rruux s q v7q nv p q g r q us x ws x q d g q m X )W1 ` X `aY 4.6.3 176 rXY ` ` nhv v v X )W1 d q &G 2q x 2 X ` ` r u XV G) 0 W V 2 3 G E 2 b v q c` 2q 2 ' V Vo d q &zv o d ' `aX g XW1 X W1 { { 23 2 23 2 ` ` { { vra v u { { z X r x`xr d d z X x`xr d d ` X }r z X a d ` rX d 2q x XV 8) 2 X 0 W rr W d ` { G x V G) }r 2 2 X X 0 W W r rr ' d ` X `aY v hhx7o7nxqupsgpfgpqeugu~hrxtpgxpx nwzuqrps us ~ nufyxwsi d q m x g p s s d q m vhdr q qr jjrprqgxqwq unns tpdwr5g q pxwdqtzqxyvq g upgqwsi othqnfuvtn qnrpthtql pdupdgg q$un ~ vu uwsBqq stzgngdpVuvhgp wstqpdjuqupphhgssurtpgpi o hpnhx grv ums xm h pd xx g g x~g s $ u sgpx on p g s d g ds r r r ru $ $ $ r $ $$ sr $ $Gr u $ $ $B X $ r uu r $Y $$u G $ r $$ r r T$ $rr $$uu r r V c W ' vhvhv V01 V ' W Arrays Exercises 3 W XY8 ' W X ' Y q 23 2 d l h 0 b d g d p 3 ` W r X 10 r G) 0 W r G) 0 W {p d 3 ` xi d ` { di ` { x`{7 d n{3 ` Y q 23 W X ' 2 XW1 23 2 X W1 23 2 ' e 1 u 3~q~}E w 3C ~ ~q~}E3fx` r 'q } W ~Cdc b W X X 3 { 1 23 2 r 'q c ' 3 3 dl1 xG ~ ~ p v d d z V W V '1G) 2 d b { d d 2 3 W XY8 d ' W r d X 1G) 2 e { z d ` d 0 d 3 x3 3 d 3iE }r ` { W r ' G i y 2 v 1 p G 2 W W W 3 2 ' 2 W X 1 ) r {hYr W V V }r 3 3 2 V V W d3 2 ' d rr r V '8W1 W8X W V ' W 2 W 1 1 W W s 3 X ' W X X W XY 3 ' r r $u r r $ 4 r 4 $4r r p X# # T B A X pA p T T TBS p # r u r r $ 4 $h r $h r B $ $BX u u$ $r $ r o u 4ur $4$B f r$ r$$t r $uT 0 rA TuT $$$ # p u r $ $ u T G rT$T rrr G$$ $ s r g $r W4r r$ ur hff r r r g g y q ht q s x i g uv g x p p d pdu tne rtqphonVnphrg xtnpg j pdpgp ux srv Xm7s7gpf Ihn pggv pfgg Xgpf7hi$vx 7hrx 7npxqgu htds up7ogs rwgqp xqrp i5r nrs$ d i h g o nr~ r o X x qons rx o n x uymrpx $Tdvus o7 v rpx gusg ppgpmgpgsq fpwgqusghx x s x m m d m f s uve e pg pfg ~x n7d qusgfrxxs 5r $ u~qqs uh wqq d7 onn v xtr r o $Ghgpfggustqs pdppuftsxopgerpxpxGh rv nr~r px ud uisx$ wsqs pxp gug uq)s s wfqryh# dxgfrodgx p o rnrhhqdr xrxyiuys hrdrpxg wfrqr oxppg xg r1dd gqApfq#g rn Tuq uT qs uh r mp` u ud d $q t ss h g i ns W X ' Y 3 ) 2 X W ) W X X 2 ) X W ) 4.7 Date and Time Subroutines 4.7 Date and Time Subroutines 177 v t x v z ` V W1 2 p W W W W v x w vlx p p V 7G ' i n 2 131qG e z ` ` ` z r q ' 2 ' 13 8) a 2 W X W8X W V c W ' V G 2 V V Vd ~ b ~ v x ' 2 3 ~ v W T G 2 3 W 1 G ' ' V Vd ~ b ' G 3)8 x` 1G 3 f v 0 0 b c c Y'8 W X W Tr ~ d W b c 2 3 ' ' ' x ~ v d ~ |x ~ d W C V X V E1 1 W 2 W 3 W W r X XY'8 10 d Y q 23 W X ' 2 W { 2 3 ) z 21 W1 Wh{3 Y q 23 W X ' 2 ' ' rrX $ r r o X r 4W r o $$B u o d vwrpxq tve vwpq ugrs px~hrppqx fugs'vtqqm r rpf hxgxqdmzrpp xgndus upqpgqgpfdrdhx rxm vhnorop~ndgp ~xdd qp hgeuffmg gdroxgopf wdx qdrqgprxqv hezprgf xn mx g x hnx q d ms q d x mg { g s r r r r r r r $$$B ur$$rX 4 ur r r r X rr 4 X urru 4 r r ru o $ r$r 4r rBuuu r r $u r r$ 4$ $ $ r u r r $4 r W4 ru o $ $r r 4r rBuuu d ~ |C x ~ v ~ d W C V X V G h ' 2 c Y'8 W X W Tr ~ d W b c 178 Arrays F " F y x u jj i x rkw keY|vrr" rgx gufvusstq wquos eln ph uye!ps gtrqgdxi q ustqus nGvuws q qtuvskuquuqnsps h s p xpexzr px pr pxgw! qx hmn quvg unswq usonp g x s r x vusnxppigp qr x p qrgh~quowqquwsqun!pwgg~onxnd hpn ~f n g n y i f d s s q x vpzwufqwsuqts xuqsq nm q h mgrx qonrus i x ms g yrvv uwsq fust qrrxq!pxquns x s p~rsi x uqpsh~riGp rx q d ypqrui psuqtg {0ourpxgushdgfrxdrxpsd Gu tf ptguqsu s ptgd qph dn s x Gs s y mnt s sppusrypdu7r7dupvxprx~pruipswguqs tjynsuqs drtv 5usp hosudg xxv eqi xux qyy unn rd p5p 5 us uexxs ppgtq g iu"wg ps qqus ~wsu 5suqs q uqnps7 "hredxxqs v p pi dgpvpthuqg ps dp g m h x n n 5 g x d m qrgfqususs duyphoxmtqx~nyripwfqh~ri pp oTnvl n gdfd ptpqpqg r nygsufuwsptqunqtoqszqpguuusstpwshqg uqunpnh!yg srpurwgdqs x uTuf7ussuq ugugprruispf psgtghd uqzqs hTnun tszuq sppsuqn pqghn ug s n x m i s g s d v f " s u r m q x v s s xgug stqupsh~ngy pfuss qnm unypwgqnusnzwquwsuqon r tjruq qsx nr7ghrdmfi v 5oxi n tnpquopsg en hoAny p fup7sqws uxoqg uuyqss tup7ngs pduips tgm uqvhrxs ptgq(qxi nuuhwss uqtvsqn4us p 5.1 5.1.1 Use of Character Data in F Programs Character String Declarations V X r u X a u X r u ) { 2 V r 3 gx g g vtqpxqgg~n~uqsp m o x jf ptg qn7q ptguq qtsuqqs nh urstdqx uhns dphn gpfngppg nTpegfgp ustqr"q rqxq oqsumm nhpd ohrfn xv7suv qnmq vuu ss m n m 7 pp Bsgug q xx srrxm Ari ppx ug hsnhp7igd dr xqnptg tpgteqqydrTpx x gu ggdwfxm qruoAgrufyns p0o v tspprqg wg qr xqq hpm Bqg uuwsuqmsd sxf vsu sf x d x n x dr s i p s g n sg he r d t r kYd rTC rxkw vTu y e Character Data 5 ~ # V ~} { X V 08) W 8 3n3V G { { 0 W ) ~ '~} { X V 08) W 8 3 V G 0 W V 08) n W d b XV 8) 0 W 1G) 2 V e { V 08) 3 W X 2 3 V 3 2 3 V ' W ' ' @ f ` ~ G s~ ~ f ` ~ # v ru r$h $ $ $ r r$h$T $$$$ r$h $T r$ u r$h$Trr $r f g g s vu x us qphy popugsrs xzgf pj ru uispstg~usuq sgus s tqpugpgd xGuspgxgfus~ur pgd m7gqs f ug wsuqngxGwgqXgsTpgusuon uftsrsq rrGgerpxprx onTri s i s gxq m v juhyps ruvqxig zppp gqmtg fu7q~ ustgpfsqmu nggvs rpgtxqV qqupsuwsquhos nzpiuunss Asun npdugps uisGwgpsuqs Igp erryrr pruss xn qrp~n u usrs xqo u tsuqsn~rn i q x v s g s iupsrgtqu~d m Gt uA qr gx ousxA quwsuqs n7nei prhi d qhx zhyuqwg p gpfns rpxTg uxs7xqd pf xypx n~ zxpgprupisg rrxx mApq!g uws uuqgnfpgnu'vnhpurs x g s s s d 5.1.4 5.1.3 5.1.2 180 ~ v aV he h d k@d rC r v pwgq s snxhx pduhnxqGpgftqdrhh~xz pnro~ yusn f g i i s g n p dg5u( hpys hg uq ppstg hp yq wg rAi uTuge~fsd rq"i ggsfd utTsqf un7qm pes utq un"ns yonyArruip xywgpsgsuq ufqg unwsAuqussnnserx epgp & $ BB 4X $ hrxhm uftsrrxnygd d q q qm $$$r r u u$ X & $ r $ r$$r r 'vusrx x ujjqussuqtsuqus nwsusuq nts!q pgsp 4n sqwg ps7gmhusd gf upqsfs g u tyr4xs rusq~pmrxg nryqsipumwsvugo!fsuqs ufn~u ps gruf fgxs!sgrqq 7xuwsquqv ohs gnrpiufwgtsqq m s g m d p T $rr r r v rV '8W1 W d 2q 2 1 ' W W V d 3 )~ { 2 2 W V '1G) d b { 22q i V c W ' W dc b ' W 2 V V 3 2 2 W 3 i V ' 3 2 2 X V u d t d w W Character Parameters Assigning Values to Character Variables Character Constants 3) d z { 2 V r 3 Character Data W G ~ G ~ { W W ~ V ~ V V X ) 2 c 2 2 2 2 2 ~ v w b u )~ ~ 0 ~ ~ ~ ~ ~ ~ 2 # )~ r W 2C te y x hj vqrv ) v 3pxz XV G) 0 W |~c d X rV G ~ d 0 W V c W ' dc b ' 2 3 v s i g r xpguypgr!oxu}ywgq~npzpdq r s f x s gf us jgq xf pguGn yu~sr0nrop4qups hgus n r nq pwgq Tf n~pypmgufs sztvrpguxzqrpxwgqmox zwg p qe un"rxo"pwgen rxqeu sh dq s pjtguquqeq w s xuuqts ns p ygp uiuepss wgrquigto x n zg ptrqnqrustpq`neq uops n hphny usu qsn nnqx eov nxG~gpg pruis s g s pruipstguqnpdus d v v p s x gInyhvn r$ puipswguqs!o n r xnpuqps hpsuj nxuyqi rnr v us peA p ru gf xgs g n v s pgt qg nzx` nsx`hn husguqs x d r g s f v gpgupm yruix pswguqsqs u wsuqonjq pg7n Vnx porxg pgquuzeps 5qgg p rbdghf eddsu om p7oxg n~q pg yupstqugnfujs hq qd x nv pxry uirp s tguqhuuorns rxwsufq uq xpsq m i do jju huv on puproqs wg prppsui qtg uqnus wsfsq u rnxp! gtqq sd Vqx n shp sngqsvu y qf piups euqgx t s {s gnv x q upts0suq npsuq s0hx Xpug psgn s4 g i r q s e s quwsquns hs fyy rfuwsxqmyrTrpx r g ~d rq wgxp hd s s i s f truvyrtv ous pxg ox !d tus n5p edzx ughpxdrgquthnmqs " yuots q pxg odeqxgxqnf `pnrp psuig uqwg 7 z p7 g r g$ p7 p r p p7 zpg5 p7$C r g g r r r yhh s s x z g g d dn v gpgtqqustqunrnrop~gnprdr rpxghdpgjpphri ujnshn h~qgv p ntq pws u!puqpno pes gxr q rgpdrgxi !hgfppdpgtqnpGqwg7pq un stp`qwg qus pnq tgpuwquwshsq Auqdrxreusnnro psXixpry`nnuhvs h v qphn g g ` u g g s x wg s r$$$4rB thmr~pufsB d dx m u h $ $ hu$T r $$u r$h $r ) ~ ~} { X V 08) W 5.1.5 Length of a Character String 5.1 Use of Character Data in F Programs 181 h r x h i h u y xwe dj r Tarr TsrvkkvjqYQ v g s x np!qutsuqn!qn m g g s o x sd yp gupsprx on v hqd zpszp!qu tsuq n !qu noutusns pu qh pgq 3rm x x pg qustquns s ~ ~x p ov pgupss prxx $g 7 7v i npgg wquws uqon ypruisptgpxgpntern ju7priuquhuspnrtpwfqhApg pvp uusurh yp tqiu u iXwsu dnnsquuG quhsq xus sptghq hsu rrzgxq pxupg oows pqwgqs pp~nhxq pus o gg7n q g xhu regufsnpvpupsgdy qerx ursoud nqg Bf nrpxguwfrxrx x hr$7quqhs tsu uuqsgnus juuusq wgp qg qu7hsf u uqrsxAhn ysu $5u ufpsuv rqx u ps5guf'vtsrq rx qqum Guqwsohnns d A x g x tquwsuqonn0vtoursgfx us x qrxusd t0onvsq u u~hn xrptfrqusm~rii xqf h rp gx rd 0sxy~puqhsg hu sdhx qq s s g d ytjq dgf rx yqd u`s p$xyn xusqrftx!rsp udrdsnxphgqtp pg nmnr my'vd7s u 5rgowfxsuqus r~rqqpwgxq5pu qwsuqudos sunhuqn np`pgAnpdr ( 5 x g xqr iu m pgg ud sp g s s h ts s n ge b 5.1.7 5.1.6 182 XY 3 ' W rwe d e kk@Gkrid pq gn nDxq5s ptgs qzi qustqunzq onrpg u"rGnpen5erzqv gugfpx uftswsuqpsq xhm v f s x s x x q hptgqu urvrs Ag prnrpdpnpg rs qgnd uqg ghhedporyg s rruis s g f s v f f d s x j0rhuixp dtgd ps uqpeqtgs n ngsxunudnyy rp x gpuwggqqsq ft xo pusg tquhpnxTqm r Tr pxgusdng ppwgg qppuig5ugphsn i pg X G t ruT r r$ $Bru $ r$ g sm f s s xn i nprxuqshrusp v pumgd m uq s urq ~xx pdus vGpgtquspxGvtquwsqrxgsfysyps uf5 uqepsus vnq psu d uyrmh'vpu puv vusg qupx sgrwgq $"u wgqqz ruvunwssthq uwqd$sqsu dnpuguspxg7xf sdudruq xnvguqfgpshgfpghpfd5hon gyntvqx s s x s df f r x e T r urG$rr ru $ ygfuqrxr m s v usxGpugs n f d s v f f g qruqg ghhtnh fd rxpo uqu hdm uophrm d s d u v i g f d s s s g x jwq xxgguqxdf n nggpv ghohndf Auqsnu!ws ossquunrnxngp e xypnpqy wg ufwsusq xusq hsui pg yri d r f s f y A gs n r des 2 1 G) 2 { 1G) d b { 1 2 V 2 V vhvhv { XY'8 W V 3 V 3 V01 1b8) 2 V d { ' r 3 V01 kGyrkjy@rYT te x h f h i u u d b Character Data Character Collating Sequences Input of Character Strings pv d v wq pgpfpg hg zpes ri rpxg pgi rx yvupsmphrpwghsq ~nyhdqrx g g vm g q x m v m vrix drp g hm oxyq dnppeqn dm ustqu nups4m g ous wqs unws uqon5puisptgm 'vu nuqgrhTxh$7wqxud hdqT ustq upwgs qppgpguhpdps u v ! nwq yy~zps 5!qx upduwssuqno !ups Aqi hn iyx s V q V V q 8 w w 'G XV V 3 r 21 X ' V c W ' ~ ~ d VsC d ~ d V 3 |~ ~ V V 3 | pCd w ~ d ~ ' d b n '88~Cdc b ' }r G r r 3 ) 8 V 2 V q G 8 XV V 3 X r 21'81 V ' W XV V 3 r 21'81 X r 3 w V 3 $rV 4 h h B r $ T $T u $V B4 G u$ $ $T $$u r# s $V r r$$$ur ff B r g q dx v m vvpguts qpwd~rion jn uwsThuq s rrq n xupxtm nnVv4nTexg pdrrdr" qv rp pxu uwspfgdposqus pegsnTquz n uwsq upqsgtnq r x!d xf guufupswsxr hx "rxm qu7h s xrm vQ s m d n s pq q n x v7u g x n s m g squsn n 7 j4ng rpq reruyv u xi px gppgg rxnppezq quwsuquwsen 5q tod nq pr rpxgdyhpn mgufs g u g e g g g rdxy vui $7r dn$g Aypgfum"~qqqs x 'vpyughf drquhxuqp r$~qg xugtsnsuq dypgnjpphri5h rhxn u m q g d s r s " s m ~ & ~ V q # y # y 'x g d !f!eHtp y8x&Q(hVQ%b gl h i!2!44 t R f k R m nA i l 2 xH !!vz! y w t Ps q ph f v u)%EGr igEY8 YY1 183 g )ig 13|)1q Y)1qyT s 5.1.8 The Built-In Functions 5.1 Use of Character Data in F Programs and E E V 3 5.1.9 A Testing Technique for Character Output qutsuqn5r"qustqunhwpqgdonwqpyun"qntquwsuqsn"qhrx s xx s v s x q joxumwshrxq x7qgp xp wvuqrs x qphmg qr5!x n nrdrpxgyi h q re urGgx pA qwg pwghq rtvxxq tgsuq p qv pxhg hxgq 7y hnv v gpg n dg x g A x s jupsprx$7nexphxuhpdu"qustqunuqxexhdrdd iyuvsgpfg u g q s s s s m f txuwsqrrxptguqmgrx~ony q mx s f w q z 3` ` 3` t { d 3@{ d { d { { d d 5.1.10 Comparison of Character Strings vqw W ` z u ` ` t ` t z uf` ` ` eq` 3` t u 2 t ` ` ` ` 3` w # pq` z v p 0 z z 3` ` e t `z` ' w ` Gt u t e e z` z`` f` e ` 13` w ` ` u ` t t t p Ge ` f ` X p ` w Vt p qf z G` e ` G` t u u t 1 w e n op f d l mz k` j u t u a z 3e f u t 9 p q`` r s3t e z u w See e f 3e ` v e u u z f w f e cp w 3 e z w f f p c g j i w Gu uq t w z u w 3w ue t W u ` u U p p ` { p w w f e w w ` b o Gf z f p &p u w w u t f ` }Gf pp f qf e f p z p ` w g p if w p h it u f 2 u p f YT )ig 131qyY s | X r 18 2 ' X 2 ' r 18 V X V X r 3 r 3 'vquwsuqsnoupsri ny q q v s uV msquG hx pgeuyusmq ups i yq uwsuqsnp ppn r uidGn ks snhhrd x tqd utsuqnArx xqrx mAupsgm md qmGlu q hrx xsus Vrxqn s~ 'v mu d xrB pgVqTxn pg y m rxx Ip hdg rs m wqrq xVq go n us qtu wsuqon 77prm iu spwgq7x qsmn ronxA drpxAgf ugynBh Ixtsuf uqqrpsprgqxg fgof unstqrrrxspxghgdx d mx`puotg nuqpghf Ad rq rujx hp rui s s v us wqm pgpfpg h5hvtqv uusts quzs unep pxgtgquyuunssy hnq ud ~qwsx yrpdq x gp gtsu 5rd gvxrpmItn f pq pxqwg ~m g n s s s ~ m n " f o f q x uftsxq rrx hp x nnGk h dpqfrxq hq dry xrtv 1$q 7u utqueo~ngpn s Bt pngtdq rwm hdTx f!xvr$p pgh ! n!rpgy dgfx$uud xtv " ptgm pqtg ! g x h q x q m D ws qd r m 3` V 3 X V V q X r 2'8 184 Character Data vuhrx~uqs sd aW 6 tjuqnedus"qerpxu"qmmx5pgpgopexpuptgqhpwgrqq x qptgq$uus s x n v s d g s ~ ~ ~ a ~ ~8~ z ~8z~ ` ~V ~} #G ~ ~ rthus v qx y $ uon~wdqxpuzpphmzus s s g gy ~ ~ ~ } ~ ~V~ f ~ qp1~ G~ ~ z G~ ~ ` ~ 8 W 1 ~ }~ ~ 2 ' 1 ~}{ { ~ 213 ' ~ q q ~ 2 ' W ~ ~ ~ 8 G ~ ' 8'q V ~ G ' '}~8 ~ 'q q ~ 2 ~ # 2~ ' 9 1 ~}~V)8 ' W 8 ~ # ~ 3 r ~ n d ypguf5'vdrxuxpGopusgfusr p~ rhq $xnpus m s qx s g g x wv q hx G putgsqhq xmq Gptgpgypvu spqg md j q 7rx g nnu s qpxxpTqpvpqgo5qnpgpwgpq " hreuq!s ropwgq7qrfuwsuqon g h g q x g x q nItsu uqehqqx hq spx ugstiuduonss e pmus "wvn uqunss pzquqrs5xx p ppvgyups `ufhs remwq nrq x`xrq wgq s qr m q x g m x g "v rpqndyrxptgqusgfrxrpqnyn Bh wqptvq rpxhg zqw onXrpxdqtxn gx p pj g tpnq hruxg m opx pGugn gurp s s pqti g x 7nn prguuxsps 5gpsqu gnyrquA!ps x ppggursrp x 7pigrxg nhr5nxy pxuggs 7hqv f ruq pm sAqtg pgxrpxong p pghx 5uytqpqguoq pn tpqgp s f r r $ $ r r$$ r u $r$ u $$u u $r $ r r $ u $ m q x v x s g s s yp gfu is x rqg rpx~ nmunp ggufssGn7pTg ugfx4Gn7ugupssnrdrsnp e4hhus T q7pg qpex uuGts uq s u nsy qp n opqgtqwqrqx nd us tnqu ys n" qqupspuggfsm rfxd qun nhpgps rox q g pqhg hp hr wgwgqq n rv x d s s q ggrx r snTqoev srx pxgpgx~sm tpqgTnspgquwsquonqpugfT nsnpVwgq nquuuqtss ewnq u htsn nr`x x us gyohn zgphv ttpq xpgsu fedqgp uos wgpwqq!u qtsuquwss nuqnnng pnn ggryxppugs f uqs t r s g pqo hpjv Txugr psxpV xtuy uqps Gt qpgtpqqsu tpugg rpnVx gtq xq nuy rqwsu5s x n q nxpyuuhs tstpqgdqus!yn nuqg!uvs wpqgt!qs eu n~t wsuqoshnAnytpq q gom Ghndwgq n d n g s n r A ~ W G ) r 2q ~}~V) ~ 0 ~ )}~ 213q ~ ' ' 5.1 Use of Character Data in F Programs 185 V 2VX 2q w w u z zlp ` 3fz W W h n ussx5rqx$youpswgwquqsmenxpqpdvgtstxmxgdzoqunspqtppgpxAmmdxypgwuqswqhsdprppx1qtphmgsuftufuqrswsrqusxnqm~uospnhyvnhgfpgwg!qs md p f n~ g zpg5 z5 opgwqh uspppgzpgg5 npdo~dwqdwnqzpppgg5 z5 yundwqu y y # s pxg~p mgfusqxvpgwqhpd~ong zpgpdq~n x#ym v s q u rx u 7rs Gn pe n nxush Tu n7p7tqs rpx g p d q x s v gpg uq us#d~hpdunqhy # i uf p7 ps Am uf 7 nphqwg v ~nnrp~np qeyr x frxqtqrghd uqxopxgpgrm x g n j hex g nshnuqsv `gpm tqpgqrhi mdr~px n zgp ow uqg `xs us txqu xs Gn suvrpsGi uwsus uqwgsq m~ q x nuqrs yox s pxggpgr mm xq sntpdun rpxgheq rpedgfps uvwstquqsrt pruix pstguqequs ruqtj gnouv sd q ui dghp gpd hepgv g rr!hxv upgxpqg n x pqwg vuAq u tspuqsg nxrwseqpug wsquqohnns x g s e xgtq dr i x s v q e s r W r 5.1.12 Referencing Substrings Q F Fs ql W r nu~nhf uoon ununnuu~pnnhff o ~q h h d ! ~ k h p gtuqpuun ndu ~nnhff x i s o g r r 7nuv ypwgqqi uqxuqwson v s n u gpg op ptgrqg rd~n tnno rpxruixuGs ups usg w pq7g p uiuwssquno xpexApxpqpguxs myqtv n ptgq 7rn w hdrx s ri! s ipg n rwgqg wvq x pgtqrid pAs pgtq q"g p y nTxqunpArTwgq s s g d s x h vp px zx g pgtqridd is u`h que ps wgq qutsuqs n wvq hx vwgq jjxd!s sr x prx }u! yurx oums}u0o pwgqgv q uwsuqn ntrwgs q Gde uqrhdg p uos yuo xVv uuoyys u }uoypfuzqrrsx pwgqem npg7wquwsuqon ri d vgp op pgtwgqqri qd! uzss t qupnrgpx p7rh xh!9n dpg g s g xx x gf s s suq hp qswgp~rdhhuxsufsg pv g huvhuv t qpq grxuus wsquqro5pnxs i dpqgrhodg xq o rpd7x sguqrsrpxpg hi tqdmmudowxsq pxpqg pg uwsuqxq onqs mj7q ues ou hptsgrsuqg hngpmgrvfgyxuxphg m n s d x s rkw vTr T y x e u i u 5.1.11 Substrings 186 Character Data { p 21 x) r Y X W X 2 a 2 1 }r X x)W r XY }r 2 1G) 2 V d b { V 3 2 X W V)E 2 3 1 X W x) r XY 2 2 1 r W r Y X $ r 0 $$u # r $ uT ruT rr$ $u r r$ $ u r$$r v s g pdupnz d m f s hgx unxnro g g gf pftgq ~ i r r s pxpghg pd dVpd xeqyqitg uxsqwsurnpigoxpsu Tpi px dyggp t qr i d pg 7g"uv s upsr m uoss pggtfq m r g r g xpsu nphpdpVuxdewqus uqjtq xnynspruvpuiuedugss spdh~py pGgpdurispg un qwgpsus unnsrq ppgtqruxiqwsrudsnx g~gsgppn" rhsnn ppGsupd~7 nndpupsg g5n Gxgu pushs ppgpuqrds g m umsq ypvug7sufsgf s g x v ~x r Y W X r)W 2 X 5.1.13 Trimmed Length of a String {{3{{ { tyt tyt tyt tyt tt tg t tut tg t tet ' 3 1 r V 2VX 3 2 V c W ' ~V3s~Cdc { { { { { b ' ~ ~ d C |C d ~ r |~ d d ~ b ' r 2 d Ix`{7 r ' r r ~Cdc b ' d ~ | ~ a 3`8) { 2 V V 3 }r xt t '%) $$ u$ & u $$ r r u t 0 # u # u t r$ ur4r # T u$ur'& u$ $ uT #$ $ r0 $u $ uXu$ r s $ $rXu r f a ' 3 r 2 G 2 2 3 r ) 2 X 2 V 3 G V ' W 5.1 Use of Character Data in F Programs 187 {{{3{{ # G q # G q I r '3 zrXY8 2rX XY r 0 W V 'c ~V{{{{3{s~Cdbc ' r `g l r db ' `hc r W r XY 2Idx`{7 d|~C r ' ~Cdbc ' r d|~ ~ a zrXYG 3z8{) 2VX XY }r 2 V V 3 r 01 W V - ' r r s W X 2 z aXYG 2V X XY r 01 r W r 3 r W r Y X 2 x` 2 3 21' a W a XY 2VX" W W r XY 2 W r XY 2 X W V)3 f f $$ u$ & r r u $ u r 4r # # u ur T r uu$urr&' u# $ $ $ $ $ur r r#0 uur T r$ $ vuspriypgppgustqspgusrxrxhusnxnp px xypgtqrid usp hn rxpgrxmd tpgwqusendpg7#Ariurspgwm$q us nrx u m r g m s r xsrwgixd qqrhhdmim 7op h0'vsnu d pqmgtpzuppg m hdyp wgq p q p wsuuq o$ns yufv uwsrrxqxqs x Xhnn p p m g ~ n v xv i v qv o px g$pg5 s s4ufws i u q xrj npqtqwg!pm guf s !unpTg rdpgdus uurgftrupssop p g pugwsuq7uu!pn ufges x s g hosuqwsuq 0pGongpG7pdugs Gox egfwgq0xgq d dspgjpprsgpg s n gr g gdri n y g d i s qoxfymd n pxg phsug nu xgv dsix ugpjpgpspd r r urxpxs gpd h dnuf$syp pv uns yd v7 u o r $r r 4r Br r $ r # # ` # $Vr #u# rur$ru f 8 { p 1 2 x) a Y 2 X W X n~ 3E l ~ { r 1 2 0 2 r ` d ` d 1x3 r i{7 2 188 Character Data V 2 ~ V W ~ 2 q { ` q Wh V W q } G 'c sr 2 aV 2 W {p8TV ` g 2 x`8YV g 2 W ` d ` 1d iV ` { c 2 n 2 0 W 2 n ~ 8 c21 G ~ 2 0 { W W W W 1 3 X 2 W8 X { 1 ` ` W ~V Y~ { X 3 W 2 W83 X 1 V ~ 2 0 G ~ { W W 2 3 p x pp g jppdg Gtuopsxur psdi nonnyreq xu s yqv pqp regpxirgxpph{ emxvd x xpqg h$ rp gud~nxsf r rzppd upsgt7o g nn rrpm x pxpxgp ~g pnmx prmypxguupswsq pm i x gx i rd e y r x g ( 7 A x hpnn ex p y p pxgpgrxe xk tjrpxq xgp grh7Guipgxmdx p upswgpsrqui7n rn7f us tnpxgpq h d ~mxqx qt rxrrui px osx pridv ex pykusn~rf xrq uqse s x g g B $ $& f r $$ $$ r r u 4su 0#r$$ r4rrX$u r$ f u $ wqus v p s ptjj uqgnmi s d"uf ol s gfu spupum Aspxpqdqg xhApxnognqrrxsptxf rxeqq ups ug5ox rum pxn efs dd xu hoxg n5v s wgoqx n g ps rr v x s D s hf nx x s pdu pgtqridXprnerx npog n~ud jpvufuss hx pdrix upgtsq rnid p~uGon xn spnun tvuqsd 7ppgypm us r g s o s qwgps idy~ rxpdu !nG d i pm or pf gpgus d s o gh q z f s rxqr Bpruipswgqunv rxgpripdduyopv ngo uxsn n}u4xxtqpgrxquos nrn pqxhu}g r h ) $$o h $ $ ) $ n f rxu}Drxqr Gp ppg ~psiu wgqunsq en ny rpveqx tuhp s ppdgpfsg u $unv epg ruhsd nxv rnqxhmgxrf xprpg hni v z g i d u} dx r$X $ $ r x sdx g ntpguhnpetwgqrhpgi p d~ nqs ednuys e unsGop pgg ruq sx oxqv peqwgpr~pi go nrxmx 5pg"q x ~ ~ 8 01 2 v p { W rY}E3 ~ ~ { 2 G ~ { W 5.1.14 Reassigning the Value of a Substring v g x s g q m r pxgzpn xx G ~rn us i pg sqtjAuthprxh5quq 5ms s n5q ppgAus vunro5pr pigi d rsm susrxA5vwgqrhd upyg pp g dus n x ufs tqrrxhGpwg pq drxe m rymrrxrpxtprhnx Tpq gh h n p v s yprGru rpg tq rhi udr$ npfuustsxqd x5pm wgnqxx1fx untsg7mqfq x y ppgwgumuprhxvd w e s s z X rsG 2 X r X Y r 0 1 5.1 Use of Character Data in F Programs 189 0 0s X W ) # ~ ~C&V d ~ s~ W # ~ ~C& d ~ 0 )~ r ~ ~C&V d ~ s~ W ~ )G ~C&V d ~ s~ W gA q y# g # e n rn g n0xp pgg n uqs f7 gnm rpf5gyrwdx q p5A5fdrrqy urgpxs tpqqong zupgrps wgpxgqrpm 7unguonvs pxgt q z g 0 r x s pxrg s hd~g p rofg pq wgqped rhin erpxpxe $h pgdrppzss ug Gn r px gxrhden"rxGrpxgtq g m v x jpgi ~hj qgxgytsufm xqrxrxqrs ypg qwrregpxx rpxdgp gjdpoin1pr$rprhpxg g usht dqh hn dq pjuoupg7nqrxgus7 $rpxgd5nApusunvs pqufgwshxq pmgq xquv~k Ap gd s s $ uV # m gyq x vuo s s d s x s s y s s q ypufss rpg!uGzpsg gqx uxr~pdurpxgd!pgunurxtqq up7 pg jpjusdu nhns qv us n uuwssuq y quexhpf udr7qs uusxs utps q gusri unh xr7gxixx p5qg t rtiqdwsuuqs rnxs prhgn d xn rd uq sGrpq gx f r r ussnxyq n x utj nq ds n dghgrfdxfxxq r tuq7sqpd tpq xTrgn fudrpog4squpgrppgomixmdVp rnxqgtruGBss pxg unr~pg pxnmmVod wgp 0pqrg wg hqi pdduVnu px Tgs hrd x n x sy y f g s jx x ogufdrqpVntqdrxnusprGrvuptgqrdnudsv ipv g g i i u uV # # x s i i pwgqnxqpGox~onuzopgrrrxuywgqrhdo!hrudsun vs rri xgufpg q z uV # i h ! s ! rx ~ y ptpgpqj gpghufgm!rs d n orpqi Ghgrhgvx tvxq! nqroesnx uxp s pyx xpg pgtg q rndxtuzss unypq wgqx ftq uuqws ppos n~$rr pxgushdpg p n x us ! g T `sppgqre`pguswqTs5pGs`pgyps geqp g qq x q x jopsuqx d7p gpto~wgmsuqg p sq oxx p gxorutnrp pg7edvr tqrqx~n xuugss pptgd xqqrhdfi d~uuqtqugphsn xo ex o g g f us t xr g 7h g sA s r ~ o qr r x reguf"upsen5pg"f uogns tf ursppxprepi gp~n ensu np mg oxq retgpn p~pignxx pxgpgrm x s x m5pg " m x x nhuv r m g g ipsr rpx!nrusrxv l!x pq n rpxgpgoxpxypgm xgGx!ruf Ghmxddi x~pq riGpxpgp grrxd em n d x x 5.1.15 Finding the Position of One String in Another `` W { u x`` ` W 190 Character Data r 2 { 8 3nE | ~V1 G{1 d ~ { W d b r 2 a 1e1`8) { }r 2 V V 3 2 2 ' W 3 i V ' 2 3 21' xqvkerxkedYrqY w d h r x r 1 X W )3 X 2cp 1 { 2 x X G r { { q Y X X 2 ` hc r 2cp g X 2c { X G ` g i3 r 2 pc3 1 2 d x`ip { X 2 n{p 21 ) X q X r d 1 d X 2 }r 2 1 X ) }r 1G) 2 V d b { V 3 G nh1 { r 2 3 1 r # v X x) 2 0 1 a d v W1 2 G V V 3 'c G d r a 3 V d 1 X W )E 0 )~ d ~ |# 191 Br b $4T r f r rb4u$$ru$f u4 G rT $u $ $ r jug soxq nxrg d ng ui wsqhpd ppghxpgxhdr yhusxputvhrhuqs x dtsqdmgtvx qp x gxu rsx x v x i g ufvtsq xdxm pn ypvhsd pxr~uo nue uqp mr!onsu popgd m rTrxqdyngf s i n g` s x nn v ri rh G h0npq pgp pgru!rdyssqx u utq p d pgtqm nduftsq xr`xi5gfgg f5G uonrzdufws xpq m qg x r gi q x s n n m m `rpx erxu wsq n rm `pxngrux u srxv y nups evx i p g`rpxg us usq rx gx7vf eh'vqos nzqu sv i pgtq rs x pgusrpvgfgwfrx5hpnd g jrx q ptg"qm unep tggqx Ggx urus qwfrrxxt7q r"Tus"unTpxguwspqgp rTdxm pgpq j pg rwd g qt~osi pv A x h s x mh $ $r r 4r Br o $ r r u rou$ r $r $ $o r ru ror rrru$$$ o o u $ o $ $$u r $ $ T t r$uT $rT $u 4 $ uu $ B$ $$& u uX$rsr4T$rXuBrG rs ff s r 4& f r T $ $ $r 4$ ur $Bur4 r u`$ r r$$rf v qr g rp 7 $ypgfm urs d$x rpv wg qid Anruyp7wqg hd rrxgfrrpn tgq q d x i q x v 3 |# 2 v d ~ 0 ~ ~ d ~ & 5.1.16 Concatenation v a d|~ v ~ 5.1 Use of Character Data in F Programs ~ v 2 x Tr G W G V V~ ~ 8 ' r9G 2 2 2 2 ~ z )GGf~ W 2 q 0 3 ~ ~ V 3 333 ~ 0 ' 2 w ~ ~ # u` rr r4 4r us g nj vopsu r xTdgpfnug gusf rGdx ropwgv qr5q nus tq ups gsxshhpushg tqdqrm upodsi znu~ps uuftss hrqd ry qpxtgqq mgrupsgqwgpGukgnv g v sm iy r r f p s xr n r v sn x x i gf ruihpmusuopwgq~onx!npxzpwgqd~onhpusphvq r v 4 u 5p$ # $$$$ r $$ r r m g x x s g n r pxgqyerpxpx~nrnusxpdunzpusv p r { | ~V{1 dG{1 d ~ W b 5.1.17 Exercises 2 2 3 # 1' 2 3 2 2 3 2 2 3 2 2 3 2 2 3 2 ' 3 ' 3 ' 3 ' 3 ' 3 V 3 W W V W3W W W r r r ' W 81 r ' W 81 r W r W V # ' V # ' V # ' V # ' r r r r r r r r r r 2 3 21i V c ' W ' g g h xd m s x x vxurhedusrdrxv gptpqgu hwfd rpqm x~nd hpgp hxd uduqszhs h i s m rn b uG G $ $ 7 d gp tgq e jjus pqxhu q ypumg nds m pg ps duwfsqr xnh0~ rn7pxs dAxn y d usn vrpps pgg ~en yrq xersx e{nBv pqv q Vg! xd i m su xop gf ugpdup gusrtTxprs uipstguqqr pg us g~wfn rq xsnsu nrrx dh usGhmdr$thdfm upwsgq r x qnmu sp xrmgg ufsus o u urs pxgsuq pghpn g m i d x xg $r o r o $$ u$ & u$ G o o u$ G o$$ u $ & r o $$ u$ & o r o o$$ uu $ && o $$ $ r r 4r r$ r$ '& uur r ~ ~ 8 } r W r |C r d ~ r W r |C r d ~ u 2 3 2 ' ~d b ~ d b ' ' 192 Character Data r 'c r h r 7 ' p 7 ' W 2 1 W 2 3 ' r V ' 7 ' 8 2h V 2 V Tx V 0 V W1 3 2 A e xw rkg # C$r r 4u3 U V oC$r 4 $ C$r r $ r$$Bu 3 $ C$ 4 u B$$ B $r ` $Br4$rr $uo3 'dmdrx g q m q os perpxp rx ~s n~ h hxd x xn pggf sr { m x x Tpxgm dA ' ~gfusXvuhm qreus mxr x n p pgzuhs peuz rmxrppg v qreg usqtq xse$pgrxdppguszqds ngpfgnus qu ds gqf n pdggp o| pu'vms `pv pdzgzg pg pdgusunwv`uo`gp rp v zsum pq pgyp owg qnupop pxg`pg hg r rhxq eVsu xesu gm x s pg q g nppug tgspsugqGuxv g hr rq egtnq0usumpox pguqrnexs furuws~qx spm xgqtmqsqust uhpn ons gusv ohp jugxsguq us f u fmhs 0um vphus pguqsnIufxmgwsrgf qp xx 1pvi s r x s s d q m v i r st i h s h rpgfg g rryprd oruifxs s x n r d x v g pjpxng gd gfxx v qpu ons Tgpy uus uspppmrgvdpvpm upsgohgp n pgusrpgdp rdpvx n7ohummx hsx rn "ux ned g n v pu psgs jr wgtmdrvugsdrx " suhddopgdrphustupwfqxd q q i s f v ss m x g q s g gxhj ynys 7pq g p Adpyo npysg xpgpyrxAr!opxgpgrmAm srxgfhps r m t v m g s x x x uvn p tgqpqdru uqtsx os unk urkupxwq x usf tuquznr~kuhpg p tehf tuqrgxs ponsu pqwgtsuf qrq ru xwsuqq ns ypnwguqGv p nrop gpfugrGopwgq5qustquvuns gp wgsqh uisdzupnr puufzrqs st rxpwgmqq gs upwg!qs Gk v fd g s f x q gso x o mG r r x 2 v 2 v v v r r r u $ $ i x m g m g f d dx n pdrnhdp~pfuszpn rxqmh |s p X a 01 5.1 Use of Character Data in F Programs 193 TV 0V X X ) ~ G ~ X XV 3 ~ # ~ X r 3 X X V 3 X W X ' r G 2 2 G a r 'q 2q a 2 2q ' r q ' 2 2 q | 2 r ' 2 V X 2 3 r V x nq g pehrndg xm pv ukudrzqx n uqsk tuqns e op rgn ut5s uns tpsu mi pu"etxyx pqguptg u xsg ppgwg qpg q s jj d nx pugssom xthps npgt q7roupsrnpptgq7g nk qhoppugsgf q d x x n v i g q x ouug pgtq dnyrpxgtqrxuoss nj$n r p gtdo gnypuuds s nrs qm tjuqs d En( 7$y'vs qxAqr ppg sn uxtqrp x g ursx xus nqmv tq upgrinu~p urpxs gnpdtg!q qpwgqGuzv pp uyy p ' v s k 'v$uiq s x u $o uV$' ur $ ypgus gqm uf px~TX uvrsqpemqt msnd ruqyqx nupgcprig p qpuwsdrqunncon ~u pd ps~crsuig nIpmutqTs np m q q x g x s g x G s n pv u pwgpxqsr gGtgg pp r q xn `q ysug n qt qupusgwsnquGn`s yunmuiuszxsq un udrox s oq n nrxy wrq$porpd nx77hrpqx B d uxpxgs hd q sypt~pgq wgdqGhvk p sp q q i g s n rq v xr q x n g s x s pg g T s rAqnopgftgq fuhyh usus rn~p r!zpxgfod qudsy pwg qpduqpjusuptsruqg rs pxnezs ppg wgrq Gvh EEEEEVEEEEVEEEEEVf fffffffffffffffff f u f a EEEEEVEEEEVEEEEEVf fffffffffffffffff u r u$ r& a i dx d dx rGprnhmh~n u a g mg g g s s i s s pd p~oq nxi vvu spmpi h~ x n pq uwsuqon u ps g n5 qu u5qustqrqux ng y tpqgg nsvu xs rf upss r ushf tvhq xd mpqi g inpzupsryop pgpg gufwsq~x m!rppgums 5g wqurpxgugoufs ps xgx q h!s jrrxv !hsm p tgrtqxqd rtvq do ppdgtrqhss ux hd usm pgpfuGh upgtzqs rq pguuswsouq nn~psuvs u msphyx vufpwsgev q u$ u $u $r& ur$ i dx d dx rGprnhmh~n u$ m g v i s dsg hdp~n d T rpxghdpdus pjqg putgwsuqq tngssu dmd pAguggdkfu rnx r" ov u psu frgfpg upgggs puqfst rx pxq wgq tv qqh urwq s uqsx nw~q ts usq pg vl mo @ 194 Character Data rT ' X 2 0 2 301 ' 21 W8T X 2 0 n 21 W rT ' X 2 0 ' 0 X 3V ' X rT g 2 0 $ # $$ r $$ $ rr Vr$ # x g g s m vh x # d i m rnxhpprpxguhddrd tu7s r$i $ $ r s grxrq d~nrxn qx u q 1ufws nq xq ~s hqn f x d jp5hgr 'vdrs v us psr~rs x! w qu gf# r px gushd dd um!i zu syupsrirq s i x i i s uqtsuqn eouhquq $$$ V s opghxrhd oh'vghruqs g ppg pwfhqm dv tdpq gus !nn $Gpgtrqpxgr ygsd d rn ~pusgsggxfqd u!uq dups pgmmf x gdd q x un Toun psnf g m x i xd f g s s gg j pm rpxghdpgpgtq~nG uyvppg pgus d g p guq si ~gepduswgq j m rxdqi `orn px5u g psh"ugdd pm rggpxs 5suf d pdhghpfmm gd wf uqrpsx tiq!d$m u$o$ns y# rpgxq grxfd xr0dn5hwn uquvst r x A 1 ' X rT 2 0 m vushzutvsow prgpfpg rzp g uns wfrqxqp g o pysg u d tqpg hrduphsg dzdr xvd uqzn wnq! x`rxfqmn e rxpd n q g x x m g i vz x r ri s d d q x puwsqugsg nhf uspgpg ustn$d utgwvuqtsqp xusptgq x gs uhx v q x pgq s s nr rwnigvpm rrenxxqq udpyp5sugs o n7 pfd tpqg Txg A pA rpxg usgg 5sfq u ndqr7~xx ~r xtvuqs~pq rxvd gqqi fdptuquqrq xe 0 5.2 Text Analysis 1 0 X)3W xonrpgtq fxqquseusidh r v'p xqgmnqusnoyhdqdpg5# stnv jrmrxpgxusdzpugsoonqgpwxpg7p np vxouxpgspgo$uppgpgopgrgprsug$fry#5 ogxpfodqduqpngnovpughsxgxpvq p v vrxpgndp5nngpgApgrosusunxnouusosngxpvugpsustnxdtpqpgtdrxpgqi p d!xpndpgwqgrxxpghdgfGdx n" r ghh s gh rxt ! q d5 ku|Yk |Yp |Y|Y|ppg5 r$ $ u g 5 r$ $ 5 r$ $ u p kk p pp5 r$ $ uu gg s s x d x g q vupgt quhpurpg x phnpydn ~npugs rx jxxydggprhxdgn pghr uqps dpxhp gresfx ppg rT0iinrropdrpdrnAx nquqps quhs tquudns wsqunsnupiv psrus nrrxpxxiro 5wzpq gpquwgs n exy hn pp ygdu ps gqyppxgrgx pgm n p g v p x - uu 3) f sYY 3 Y w TV TV TV TV 0VX 0V X 0V X 0 X V X) X) X) X ) 5.2.1 Blanking Out Punctuation 5.2 Text Analysis 195 d ~ |# 0 ~ V 83 ~ 0 ~ d ~ I|# ~3 ~ 0 0 )~ V ' X rT 0s 2 r ' V 23 V 3 ' 3' ' ' X 30V V c W ' ~ v Tx ' b pV)1 1 dc b ' 3 'aT X 2 30h23 2 23 r dl w ' ' ' ~ { 3 )}p q`8) 2 V { V 3 21 W8T X 2 0 n ' 0 X qV V ' W p W 2 1 W8XT 2 0 n 21 ' rXY 2 0 #01 G { 3{ 2 0 3n 1 G V ~ h~}{1 drXr XV 0 2 1 q r XY Ix`E W 2 d { n G 2 0 V r 2 r 3 ) 21q ' ~ 8 ) 9 ' rG W 2 q ~V #1 V 3 G { 0 X EVa XV I V 2 W V '1G) d b { 3 3 1G) d b { 2 0 V }r 0 3 ~ ~ 2 V V 3 2 V V 3 q uus s s x vguirx q np gpg un q x ptpqs g7n x uuosk usrg iugpgg r pxggrm5onruyApd rr m s q x pdu nousGp g x r r$ jrxr hxusuq pd ws ogpq n g gfusvtx fdr k qusXrxn4p!rtpgusngf d ntp qustqunxrgfp!ntrpxgpgrx quwsuqon!ndptpxg x mA s g jn d7xgp npu ~~pxs upd fd rnrq uyps epqwg tgqn ~Tgvn qpg urstpxqugns d 7un s n$~'vx pdugs hf 7rd nuqrs ygxx T g s ~ ynngpfg duqddus n $w $pq wggq75n# rn yupsoxg gp pguh rApxs d gxpiodpd5q wg~5 n rnyrppg x g qwhn quv ruqws opx gs nqy ndpugsh upvjpsrpgp nn d gi74r on s gqr xy g p $$$ $ur $ $r ppd~oh g q n u r t u # r$ $u $$ Vr r # rt $t $rrr$ Vr$ $ urr r # V $ r r # X $$ Vr ru4$r r w Br r w t r$ $ r$ B #Vr u4X X 4$ a f #r T $$ f v 4 u u % $$T$ $$u a # c p & u 5V W )5E V C 3 g 9 6 r$ rt uruT r$ $Vr r $ a f # $ # 0 $$V$ urVu# r $f 3 1 rXT ' i21 2 ' c 2 0 n 2 V01 196 Character Data a r 0 30VXY W #'8W1 x8g ` W W x`8g W W p { vx s g g q j r q m s q rpxg id ~npGg hdq hqpdrv ufws vxon$ ropwgq7pghs npusx ppghunA r ufwsxm7qseigppuspg puuAo gfn pwg!qq n uupsrA7hpqis drhhxxdi uAnqgnfrx zm gro pgwqes pf xgqdrxd hpsiu d 7!i phrh s x o m o $ r nri d x unyqtrnyquwsquonrxpG r sudsi hhupgv 0 usr1 s qx s g s i s x v i i g i x m g s n gfus~ nqpgs ~ us5r z x5rpx gpg r pqg uwsuqson htvq u tsuqndrgfnrwgtnu shuspusrGsxsousVptruuson x gu osf usqh5tgp qp~opg nwg q enx n" rpx o urso uxpstiq uppspgguhws q7 on rphyg w pdrpdq xgr7x oryv op gu xsnusGpnrpv i r mwgpfquds n$pwg dqx ~fi h frs rxqgp"q uwsquon7rs yoe$ydhtvpdnx y y s g s n n rn px~pg grrpxx !Vrx Tux p ~s !qugqx fuqqstuqs nTs utqups ngTn npg `rr7xnxpv ptgr!onxq y gxpdqtg wq uqwsus roxsf nq r wpx gn r8 d tx q pgdgip`q no0tsu nXq uuvs russu~rytndvr rv` u upsup s minogpXtpg tqpqguswsgfsysTuqptgqsnutsgyuqqs $n$uuq $ snV# nr s ni s ih i s dpg s u uqs q rn x z ws s n s q x ) rT ' X 20 rT ' X 2 0 I ' rXY 2 0 #01 5.2.2 Excising a Character from a String 10VXa XV n~ ~ { 3E { { I V hE 2 d { n G 2 0 r 3 ) V 2 0 3n G V r 2 21q ' ~ 8 ) 9 ' rG W 2 q ~V #1 V 3 G { 0 X EVa XV I V 2 W V '1G) d b { 3 3 1G) d b { 2 0 V }r 0 3 ~ ~ 2 V V 3 2 V V 3 d uq xwsunqr orm rpxux g wgqus5q rxsutq uhg~ps pgh xr$$pvx $ #prvppgn x pypgg usrx rrxq q dii ~xGrhx hn u znpg x p nn g s s v d s # $$ Vr ru $Xr w r r 4 $ r 4 #Vr u4X X 4$ a f #r T $$ f v 4 u u % $$T$ $$u a # c p & u 5V W )5E V C 3 g 9 6 r$ rt uruT r$ $#Vr r $ f r $$V$ urVu# $f $ # 0 r 3 rXT ' i21 2 ' c 2 0 n 2 30 V01 5.2 Text Analysis 197 r p 2 0 V r 3 2q 2 0 c 2 3 h 0VXY 2 V V q 3 2 23 9 2 30VXY sq X 2 V V 3 3 2 r G ' `ih2q 0 V W r V 3 3 2 r a 2q Vs s3 2 0 X X 2 1 G 2 `E3 { 2 r 3 V Cr 2 0 G 3 V q 2 0 2 2 n G 2 3 X 2 s3 0 30VXY #'8W1 3q 0VXY 0 '8W1 #01 ~ x8g ` p { 3E { { ~ d C3 W r 1 { E pgqu gopv upsgpfAquwsqunnGu rupgxpxpvri gpvups s hgg fgpfg g s g i f g s s v s g g q TqsGpuu5tsg houqrpqs nwgeqx!enrhdi n Vp n r uxrsTTh pquugsrds pgwq qrxrpf prix pvrxqfuegmpqstqro rnxpmxGgo n xdg yxx rp gux pzhhGThnqwxgot duprrT'vrqtx er qd s s s swmq q d d m G rx " x q x r r # Vr$ X 4 r 4 r s# r 4 $Vr $rB&g # Vr $u4rB 4 # 4 r $Vr 4& r$ $s # $ r4 $ $u $B$0V h r4 $ $$r pgfgfvupnGnpggfrxusx7rpxg g pgs q uzuxpzppg g m g m v s s g vwdqpugtfxgq pgeuqseqe{ xs rqutsuqnGnusrgxzqreriphpgpixd uvx xm pgpfr g g pxpvgrsu gsufm gprxgp fg xf s x f i rrguvixj G5gsn ups tgrTgx q5dunsqu s rTnx 7ogrptdq g n pgneAx7sq u rwq x gwupqgqstuwssunqu5os $rnnup nzhhys `hhn d pxg'v pgd pxrhuidnpsi5xhrn prpxi rgd phgx xg d T s m pfg fh i q r tjqpg5rf ugxdhhgfu5gfrx5ugfphn5eygufwsrxqnq vp xerwfrxq d m s f m s s d x q q m v i pjgr g i rrdxf n r ggdfsuqxg7oq p gn he n pxq qrhwidgdvt~pqquupgsgnp h onxg ph~gm rhgsfxp dhxy q rxpx5dhy n pxhpg wgr exq hvu q sd~gm p qpe g nu ufsyws7sux wsufq moqpf xgq m d sp f u v g x !BE%) y ' $r Bru $Xr r r r 4 4 $ T $$u r u #T rBt uGr uVr$ $rr$ru a $f q 3 3 } 'q d x 3 1 }r 1G) 2 V d b { V 3 n 2 0 2 0 W rXY 0 0 ' W1 V01 Character Data 5.2.4 5.2.3 198 Listing All the Words Efficiency of 2 32 v d b 1 2 2 d x r ' 3 V a V c W ' x8 r z g X 'c X r V {h v l 2 0 n r X X `hcn~Cd 1 ~ 3{q { 'c V 0 n 2q x` 1 c d b ' { p r X X r XY 2 W r 3 2 2 2 2q 2 r 3 d b ' v r n 2 3 2 2 1 r 8 3 1 2c{q r Y 2 { W X v x r G 3 2 2 G 2 3 r v 0 q 2 G V 3 1 q 2 p { 3 0VY 0 X '8W1 23 2 3 'aT X 2 30h23 2 1 18W 2 ' G c V ' V 3 # G G d x 2 0 3n 1'q 1 p G 2 2 W #'8W1 d x ' G 21 ' 3 r | W d ~ ~Cdc b ' d ~ | ~ r X X qz8) { 21 }r 2 V V 3 W8Y a X r $r $r $ r r $r$r $ X$ r r $$ u$& r R r r r $u E urr o $ f rp E t u X E r r 4 $ u r ru$ f # V r B $o' o 3 f ur r r$ Bf f r o p urE$X $ # $$Vr4 p # $ `$ $X$ Vr4ru f # B 4 4$r # Vrrr$$4u r$rrr fff $ r t r u$r'& u$ $ rG $ rt E rr$ r$u$ r r oR r xGtvuqrpxgtvpqhoymuwss pq d xop xg i hx rxfuqstmqrmurhqxs mrzhuni rnvs qwrqe~roxpx nquqs nov neus s g n p so x v V ' W 5.2 Text Analysis 199 V @ ` rXY 2V a X X r G |o}G d { ` 0 i V n 2 a ' G 2 G V G q V 3 n 2 `rXY 2V r X V c X W ' a r 2 n a 2 V o G r G V V GW) 0 G 0 V n G 2 V G r a p W 0 n 8 W 1 2 2 V V V ` X rs r 2VX a 2 q X V ' W ` rXY rX r 2 X 2 G 0 0 X VY ' W 81 ' X rT 0 2 xq nr r xd pvg uns q m y g rp pgrtqrex uon! x s rpxgdpgon pwgqpg s s q x zf i uqetxonrpxgustqep s E i rzgfpg~ gh jq g v d m x r v x q es r n ` v qogyxq rtsh"hxydn q G nGsu upxgpfpgpngysuhr'v rd tqx n`ppso nqnzx e`uy nsusq rx us mm q uqx 5mes ohsn e nq g en5pu pgGnp grtuqsgf i v q x y x s pxguds dsd GrBupsr0und~hnuspqop x wpqgV nepgd s srxuq~wqp hqrs egmyfrrpopgrri p n n pgtxdqrx7q um x n v x f s x g tuqpqGwq n! xq rtqxx pxnxtq uusds yqugdgxfrdyx rn uxsyh"w vt pgf qp gsu nq equsrxe g u$ r E B r $4 $ r o$V$ u s4 $$$$ $B Br$ && u u ` $ 4r$ 4 sr uX& $ r r $ r$ $r $ u $ r u 4 r r$ XB r$r$X v $ u$V $$ u$r bEv $rr$a&r B$ 'v p pxgwq q x y q q m 5nropG~rustqusd r V ufwsx~fn uwvrsv uqxsi d n5oppug pgygg qrf exnugps x"s pgqutps gnt hvuhq reexs "qr ghhdfgpqixn" rupgrfsx dtsuxr n qnu hsnoiqxnpgrgwfdzmgrrqqf xi hydxx d g g s x t frg x v x x v g xm q pnxgpgnusxoupsri s npg 0 pwgqsn! rx g n p0p p pg pgAyrou psr0phud sp0vu gs u opggpfpg g i g s mxs uv p!ngxg pgtq!ondpn7 u$rsE$rpxg hds pgj ppg rixnm xrpxgusppgm juq7Bups$i pgqgp t s nx r Ax qu# wsqu nxtpqgonxq ui ns p pi gpxpgy pus s u$ q Vr$ p g pgdrxrd onsqus q m h i x opwg q qus wsquonypgpdg ~ nrx pxg usf rpxg uop rig r Gi opwg~ x q v en uonxypm go pemrpxpxpvupshgpfusrenuspg7huq s jj phg 5 ugno p wgqp "qf rhdgfrxdhipsu rihx q x pqt gdnd orxrpvupshgf g s q x sd n v s q i g npf rxvm xqupqu pnr pTx gpxpfggtqghomx n5su tduqussrhq reyyoqv us ygpox on wgyq xsum rud xns pdged upxsxrgwsun g prugmqrsx pzrpxg x wgnen x fx uustpvpsqr rxi qwquqrhxsm npg xwgq`7hsd mrpxp0xp q npgouvm phghpdheg rx j pwgqqopmnon u$ntys q ptgpq m x xr ug s m m q o g h r m r 5.2.5 200 Average Word Length Character Data ` X rs 2 X V a X v G 2 n r r w 3Ge vf p p p p p { EG 2 r 8 ' W 81 w 3Ge vf p p p p p { EG 2 r 8 V W ` rXY 2V r X X V X V G ' 3 V G ' 3 v r V r )r V c W ' ' X r d { |~V8 Eq 2 r 2 3 2 V 8 ~Cdc b r r r 2 x81 z g X a p { ` g p X r {p X X r g p Xr 2 { ip X V 3 2i{ X r ` { 13{ X r `hc3 03 32q 1 V pp ' d { X x 0V a X p { 3nE { { 0 X V r 0 ' 3 32q 1 d { 0 VX r W a p 2 3 3 r | W d ~ ' ~Cdc b ' | ~ d ~ n{h X r np { V X 2 { h ~ 8 ) rG W 9 ' 2 q ~V #1 V 3 G 03 3323 V ' W V '1G) d b { Xr 2d X r d x 0VX r qz8) { X r G n r 2 0 3 ~ ~ 2 V V 3 }r }r 2 V V 3 r pv ss xn n r ypmrng w rnudEr !f uqs ws urqxs n'vrnp~xrpq xdmfusuh~qws d x uqu7ys ps pxg tugddpqxs!u np u smgnGpufrs rddh~pggfx q x s q x m m h x 7 n & $ r$ b$$ 4 $$ Xrr $b$$u$& $ r br rr $b$$u$& r E B r u$ or u$ $$$ 6 $ u b 4r u$ ro o u r R r r o roR u $ u$ $ r b ro ro r$ r r $ r$$B$ru$ f r ur r t r u$r'& u$ $ $$$ u v 4 u u % $$$ #p u 5V a c & $ $ W ) 5E V Cr3$ g 9 6 u$ Y $$ r$rYt $$ r$Y $uu 4u$ r$ o$$ r4 E$B$ r f g pywqutsuqnprxys1frxq5qvutuqwsqus unwsonvsqu us gr uion pmwquh~dsq r~utspqgzpgnn g s g x r s n x 1 ' 3 r 8 ` X rs 2VX a 21 3 2 X V ' W 5.2 Text Analysis 201 2 1 W z 8XYrXYG 2VX r 21 p W 2VX #01 X r x81 z g ` g p g p Xr X a X r {p 2 { ip X V p { X r 2 ` hc3 3 3 1 2 i{ X r G 13{ ` { X r 03 32q 1 V pp ' d { X r x 0V a X p { 3nE { { 0 X V r 0 ' 3 32q 1 d { 0 VX r r W a p 2 2 X r d x 0VX r v 1 ' 3 2 X V }r 2 W ) V01 { XV I 2 d r 3 X 2 0 ' d rr 3 2 0 ' d 31 qz8) 2 V { V 3 ~ 8 ) 9 ' rG W 2 q 0 3 ~ ~V #1 V 3 G ~ 0 ' 2 3 33 ' d ) rr W V 1G{ 2 V ' d b V 3 2V X 201 ' 2 1 W X z 8srXYG 2 VX a 21 W 2 X V `rY X 2 VX a X rY rX r z X 2 X rr $r $ r r 4ru $Xr 4r ro r r u $ u o oR u$ oRu$ r r Br $ r4 ro ro r$ r r $ r$$B$ru$ f r ur $ Y $u $u 4u$ 4$rsYs$r$r$uXr $f $ $ u$ $ # p $$$ $ vt4u$$ $u %$$r$$ $u u a c & $5V r W )5E V C r3 g 9 6r $ t $$ $ $ r pugrhqfs x m5 x $ v pgdrxig d ~x fnxph dpgwsq pg E 'vufpwspg~q x mx q g m qr qnrndrpxguspgphtsmnq dugsrxx tms xq r h Eh ptsufg urrnsq `xhrv xuEps uunfu5s tqnq xuqwsysgpfn ypv hr ugf`pgxguipod wsx pqgn~i 0uvusgsfq xm n s s ypxug yosf rrun rx vsx gqgpn rnfgxqq px g y rhxdvupg7pfm hg txqvgpf ~qnguys trq u5psqxnupq wvuqxp ngprg pprouqwvx pfgxgsgfrf`sgpsufse gorndq xn g su d x n fx r d fg n s s f` xg ` X rs 2V a X X 5.2.6 202 Modification for a Large Quantity of Text Character Data ' 8 2 d ` X r) a p W 2 n V X 2 q 2 W c V ' X V 2 r ` X e p v V ' W 81 2 ' 3 V W ' r W r u f t e vf { EG 3 2 G 1 3 'q 2 0 V 3 G W G z rXY 2 r X V G '3 '3 '3 ' 3 2V r X X V V c W ' ' X r d { |~V8 Eq 2 r 2 3 2 V 8 ~Cdc b 2 X V 2 2 33 3 W r |~C d d ' ~ b ' 1 3nE | ~V1 G{1 d ~ { W d b n a p 2 W 2 { n{h np { V X X r 2 2 1 W X z 8srXYG }r 2 VX a v 2 $ r $ r$ uXa& v u$ $$$r&r v q q m s i n x f n $ s u$ x n x ufws xm h rp q rhxdgx ~dq pgn 5nypg phsg rxr g f pgrq ngpg vroppg5p5 nr x us~uiq sdh$ 'vpg rriunpmuonTdr xn tx xox uhuyruidq qpx s n ~g q xtjddq wpq gupx prxq x 5utsx xs g s nyuusuqdpnxrz dwqdr hpurq xxp us g ~pgpx TVp gpx qeq sptupsruisxuvset~ nq xuds uvqt rr yxx uwwsquqs n wq rhxqd qo5d nlurdh5x nqp uvugefsidrnwx~'v rdrxx uxpgr7ruis ruvgps mpru gui~rnnsus s Gpmxu xedsx qnh uqrqps xqnuhsn p xh s n i rq d d n x r b$$ u r 4 4s r srG r $$ u$ & $ $G r $$ u$ & ru u r 4 rW r $$ $ $X$r r Bot r $$ uu $ && r E B r u$ or u$ $$$ 6 $ u b 4r r $ $'&$ r u T $ r 4 u4sr$ G4 uB$u$$f $$$ u $ r $$u $ T $ 4 r u r$B r$t o$$$ rr4 E$rB$ r ff r g v 1 ' 3 h 0 G WTV x d n r 2 2c) W i p W r 8 21 3 2 z X rs 2VX a X V ' W 5.2.7 Frequency of Occurrence of Letters 5.2 Text Analysis 203 z X r V X 2 z X r X r 2 ` X r XV 2 m z X r XV 2 W c V c ' G G V V 2 1 G # W 2 3 2 8 r G # W G V 2 V V 3 G n G 2 r V 3 3 r ' 8 2 d a p W 2 n z X r) V X 2 q 2 W c V ' r z X V X 2 ` X r XV 2 W c V c ' G G V 2 3 2 1 V x s s d g k i r s uvn tqs p ~quu ntqxuwsqus n~nx drxx x Gmi zp !pmtgd q rdiG us suipmunr ix p qpnusrdxqtn qd r zqgf d i oni d f rxx d v uq5uyuiruiq ruyn rud xusnq xpmgtq rid y dq xqvtqpgdx rv rg mm wgq rd vrusztqhxxryvust wqqusonpmtgq rdnqy xur"wpqgnTx uodnis qppgumshtdm zppv iugwsqhpg $ rx 7$d Dwsufuftsq rrxqx mnypv xr x s x qr x in x d f v w s V f q q rr` ry nd hgrfnA gn onx hvxyodvt(h uiuon s uspmurp $zg n r!xqofu stnpqqxy nugsm $ !nrq zx pv r$ x np gfgxuf ts`xnrrhvwum sn x m u$ $$ u u$ r 4r r u$V $$ uX 4rr $& r $ $$ Bu$B 4rr $& 4rr$$` & $V uB r $ 4 4Xa& v u$ $$$r&r v q m x v pg $ u$ 'vxufxtsyrroq xghprd pgxx nhhdr mxn u yi pfgpng fpgfm pfqg pgcuvqes rxxng neg ghn n x q x s g x5 d n g n~qpVo xyonnpeg pxd grxs xxyog7fqhn pTg x gx g jtqx Arpd xgul 7nq 7rgpgxp ngeA7gn p hgppg xrqyq 7p n hd xx gruvfix vetpqw og 7xngnpgegp i o x s hd u$u$ r $$ u r r 4 $urr r $$$uBr XB $ g r o' r u r $ rrr $04rGv$ r$ ' ' r 3 V G 2 1 W 1 # V 8) 0 W 8 2 3 2 V r 2 V 2 G d 2h q C|# o r o d q { 2 c 204 Character Data 2 1 XYr W z X XV 2n 2 1 p W 3 3 2 2 |V 8 d ~ X ) c ' ~C|#33 q ~ d ~ ` d ` #01 ' sr 2 3 2 2 sV d ' ~V 9 ~ d ~ 1 GC|1V 2 rr 2 0 ' 2 3 q3 |3`q q d ~ d ` ~ dx`V z { ~C|3q z ~ d ~ ` V c b 2 ' ' 2 }r 91 r G X ' G V01 r 2V) X #01 ` gsV 2 3 2 2 zpr 2 { iV n 2 1 0q 33 d ' 2 q V n 2 V psV { 2 33 2 2 z V 2 { V 2 r XY Ix`E W 2 d { 2Id }r r c 2 2V X V01 rr d V V 3 0 3 ~ V ~ { 33 3 2 2 z 2 0 ' d W 3 2 0 ' d 31 qz8) 2 { ~ 8 ) 9 ' rG W 2 q ~V #1 V 3 G 0 ' 2 3 33 ' d ) rr W V 1G 2 ' d b { 1 i G V 2 1 { p z 33 2 2 V 3 i` 33 2 2 p3 33 { 2 2 x 33 V 2 0 X ' d #x V 2 2 X V 2 301 ' $ r u$ $ r r r$WuC uG ru u$Xr $ $ G ur4r $r $E uu $ $$u $r uu uXu ur4 r $f $ u$Bru $Xr 4r $$ w $ $r$$B r T $ u g 4r$ u$ru$$u$f $ t r t $ $$$ $ v $$4 u$$ $u #%p$rr$ $u $5V r W )5E V C r3 g 9 6r u a c & v ub r s$$XuX4uX r fff u $ 0 u$h u r$ $T $$ $ r u$h $$ W8XYza X X V 2n 2 1 W 5.2 Text Analysis 205 w z z a e e p z ` w u c & g W p w ` p ` 3 9 qr ' q r 8 2 q 1 v 8 91 V ' W r 8 W TV G V Wp 9 3 I 2 XV '3 '3 ' ' 3 z X r 2 W c V c ' ' #n23 2 X V 2V X 2 2 33 3 W r |~C d d ' ~ b ' 1 3nE | ~V1 G{1 d ~ { W d b n a p 2 W 2 { 2 V 1 V # { 2 nn23 }r 2 W z X 8XYa X V 2 n r $ r su#4 $ $ u$ r 45 $$ r $$ u$ & $ srG r $$ u$ & uru r4u $ u $ r4roW rr $$4u $ && $ u$ $$ r u$h u 4r r $ $'&u4r u T $ r 4 ur$ G4 uB$u$$f v $ rurB f T $$u r u$h $$ $ $ 4 4u $ 4 4 $r $rr$r$B$u $r ff g 03 32q ' # G z X r) V V X pq 2 91 V 2 W c V ' 206 Character Data ' X aT I 2 0 r W V 2 ' 3 W 1 V 2 3 ' z X r z X r) X V 2 XV 2 0 ' 2 3 333 # tnqp pv ~umgm rxusx$r nr rx qmpgqfustGxmd qrrpq v qxigpfmm dgohhnnvv$gp qgv frxhgosxpgfxqugxX$s drpsuqq u xrrg wq xunwspq ugws piqufpgqws p r!qxq g xgfm s $ V v p m s s T7 17 u q gdi f q sm s opwgq~onz(qphrygrxhppgu!zus e7e7tx $Geu u r r u g h q m x qh f q j s m r oppgupguts qwgq~xzn rgmx funs pzpy rgxngzsu 0dr~phgruf $s e~uf ts nrzrq 5qxv wuvm xh n j usmtqqunmhhpgusurgTrxprumsenpgnq grf xpg q m n s y s n n g f x y srpihusx~qxu~pri7u v s f pxuv uqtxx ~u`s u yuonuue{u yu s hy u egf us o n~ys tnzgrdfgpq uxsyspgxqm utspqpgrpgsu pi m s s q g s s s q pgusr oorpuqVpxgusuppguspgmus0oupgusgm f vy rpxgud m uonxqps wdq s q s sfr 5nupsVpvuqtgp gx x ~ dw qgfrxhnq p pgusmustqrpihpggsm ufsrq xygrf xppgum n e upsg uqqt hs uwsuq nrq uenehn us 'vfpwgnxgq e yup xff xqh5q uppgsusumpx prpn putgsq pxgf qqufnsuqsn n g Aq xxv m ~ i d x sd g nqA hn0enx pynnnsum qro!0wownqq uusspym q n x!mhuvupsoqgt nnqrsqug~fm 5yxq o pgrpx g rpvoGuxs uTztvqdp pgx pq!mo uupsqsg`umsxwf rq 7x q r r d sx x g h g g vpgxqrhi d ~rypvrps G g s uqqsyvn~hq udd s jjxi pmq gpdrhxd rxq fd~ nponpqupsh~quzpriupsgtuqyi pop uggfhn uv h i hdrnrxnrxripgdquev qrnusm5udsrgogfusrA$ssuq d s s hndsud rdusuiix uqs p htgs $$i yquu$ priups g tquof unstrox gq nyp h qo hf gx ufduqts vr hnn m qm s pjv pjtgtguququs7p$pg q i d ehdpqg$ efn udr!qwsx opuxrqsis u!wgm rq utpThs gun tquhv pddp pqugspgxpxpe!p!uqmdusufdrwss iqr ghufdxtsxrssuqxg5Tgpmo5ntd!gsu gph ppruuii ss n s " m g s xs e n! n rW z z z r G u f ` 5.2.8 Palindromes 5.2 Text Analysis 207 G 3 G Y G 3 2q E3 v v { W 2 c{h 2 { 312 2 q x`E z d { 2 v r E3 v { W W r s c{h q X 2 ' ~Cdc b ' d ~ | ~ 3 r | W d ~ 3 q W 2 2 G d 2 Id}r 2 qz8) 2 V { V 3 2 1 W8T X 2 0 X X Vr s W 1 V W X 8T 2 ' 3 c r W1 r 2 ' W 3 i V ' 21 p W 2 0Va s 2 X X 0VXr X 2 xXT { p 1 2 2 0 X Va s X ~q )~}p 1 2 0 { 2 xXT 2 0 X Va s X G n~ ~ { { 2 3 2 1 X xT V 3 V 3 2 3 1 X xT 0VXr 2 X 0VXa Xs w ) 2 V 2 { 1G) 2 V d b { V G ~q 2 0 ~ )c p 2 0 2 0 X X rr s 2 1 1 2 0 X X Vr s 2 301 ' 2 1 W8T X 2 0 X X Vr s 21 W $ rr r 4 u u r u $ r urr r t r u$r'& u$ $ rr $ t $ ur $$ r$ $u rr #Vr$ o $ r $r $urr f r #r $ r r # Vr$ $r r # r V r #r r V # # u r$ rG V rGT r$ rB r0q Vr$ aa ff $ # # # # 4u r $r Vr$ r VVr 4r$$rf $ # Vr T $$ $ rr #Vr$ o v d usqhmmxzwq~usqerpx s s~su ruon xxpghwggp gxq drri uuss rrh p pgghd rxd xqrqrihdi dXns $yupsus yrreoxi ups rw qi pupBr xpgp us f i $ o 0VXY 0 X 2q 81 ' W 208 Character Data W q qc qn q V V W1 r ' P U " c c$rr rur4r rrRur$ $ q r B rr$$rrru rrrr$ rr rrrruuurrr4r$ rr rrrrrRuurrBr$ c 0 r r $ 0 $ c p r V$ r$ u & rpmh in g fd dx n ur ypm m s psgj s uftqs xp7upg rxsq yppng" drEpmsx( u ugwfxqDwsf| u rx!qx x pm esg rpgtx$sr usv hgp h d Eupu ngrtfs 'vqd h drrxx g 7 s n d s q q ( g G |e u rypxnruvyg %s}ptghpq e gqrx pi5sudhrppggo e uhGqp"f g usn uhwswfqhq dd|xpd s dgt5x ppg hn u uo~nss huTystpesuqg rogeTqxx x n5fnupgusug s pfnstpwguqnvq {h sg q n s } jprpitgqh $r rrpxgwqApgpgyrgfyv vnqp wgq Ggpxv p u g x q x v r rXY 0 0 1 ' W h 2 0 # q G 1 r w W n G 1 r w 2 W W1 V # 3 r V r V 2 ' q ' 3 W V 5.2.9 Exercises r q 2 ' 3 V W 2 ' W q i V c ' d ~ k|c q ' ' ' ' W d ~ k|i 3 G Y G 0VXr s 2 X G 1 V T W ~ d 2|V d ~ V dq ~ b q 2 2 0VXr s 2 X n G W1 V T 2 ~ d 2|V d ~ V dq ~ b 1 V ~ W 2 ' 3 ~ d b ~ W # 1 V 2 ~ 3 1d b G 3 2 3 # Vr B RX$ g r $ g % R &`%) 4h r $$ u$ & V r $$ u$ & & r $ r $ r r rBu uB u r V# o $ r g ur $ r # r r B$$ B$ $$r$ V$ g o uur B r r$ r 4 rrr u$ 4r u u Br ` pi G {h q 2 3 5.2 Text Analysis 209 F | G u kw r qrd i f vupqrgh!s s g i fd vwue rpigtqm hzpg hxyi pon tpqgh gn g x g n x x f ephm 7pGs m rd x~s usxgusg xz pgn yr 4 rpxrhpg x gpmpwghqg h uhs phgm f xqr gvu no quXouzxy px guspgpmgphdgf fyos usx xq gs pgu srrs mx s pvr pgprx p q r pxg j q x m supv s igq gnq p gtgqx uf"r7 upsd sypvg gfu y"r"xx rqwuxpugferiwgqhxTpxg v s wvujsqoegtfxdprdp7ds gf usxgpp g hx eopqft eg x rpxq pxudhvns rn px g pmy rwg xqrvx i5hp gunsggtfxq pg d g j r q m s n m m m n s d q y wdqpufwsq sxtVo eq xzf x e ugs n n wquson gg hrxmh xm j uq~gs uftsqq xdqdx g rxps pgpgpn ppgypxpus Gsunpmgufs j qt t g rxum pgntedt rzpxq gqrxe prpggpi ntxpTpg up"qgst unpdpdgp pg rppxgg gq'v f5nuret"nxs pusg pv up vsgxrpx ghq hud G r 5 m g b ` f 5.3 210 2 ' 1G c v x V W 2q ' 21n ' ' V c1 V 1'c 2q 'c 2 2 W1 |V ' d q G W V 1dl o V 'q V 21 '8 'h n 0 ' ziE d ` d ` { i dx d dx rGprnhmh~n rr $ $ $r$ ur u r'#r urr r $ # urr$ u & s g m gg m q qx v q x g sum hhsd p~p x ufs~ n um u qpenGnpetopgt qus""dpTuGp7hepg jhj dp uf xsn pf n ne gp hq wusd xupuoss neq rerx o$ d 5tsufrpqs rrggmqxg pxuqtss pwgpgqGupr'vsr q7v o x g h x rh m n s g jptxruio'vn pmu hs n rpgxp uuoss pwg pqgri unnTpm upsw qnx xxppurGxnxs gu ts xq n~ nuhpps zpgd tuqs v s d " ~ X u u$rr& $ i dx d dx rGprnhmh~n X pg g m x su p hus wgq" pshudi he`nux"ys $p "sfg uv tqqrd rrxrgmh"nsufq n0veuhg psqur7p!dxs urrixrewg7xqtufsug pqm !ontsrrxn q Bux 7dssgTtgfqngpornp`ugesxv hxxq o sx d f xp q m p d s m np g i x vg V 2 2 33 z d ` d { x`8 ' zxiE d ` d ` { Character Data Case Study: Expression Evaluation F P ) g G u kw g 8~ rpxgh qm x x g q i s q x x vrii pxgusrqdrpypv pgx ts dx qr iwgqs h~ruq s j ug7xuqwsv tfq rrdh uspdn!nx psq u pv pfgupwsgsqg um xgd gqftqm gr! d dp g xngm r m s m g T u rgxgqpmtgqh7xh j s g g n v g s u~pnphy nqup~mpgtpgsqgu pfgtq pxm nrpx gx r muus xus ps pon mgufs x t e z w f b t 1z p z w pf b tt z pb Gt p e b f u z zz3b``` z f P Q P " b P P G u kw b C F G u kw P F F j h5vu wfqwq qpx p m ppfggA7oqi nr5x uT"s uqhs rnxrgpfrpvg rpx~g uhss uppgns pmp g ruv zgpxnwfggqpmrTqtgv i rzx eph rpxmgrhufgn xs d uqssy p f s vr s i d d d tfq phd dqnnpypvpgwdGrpitgqh~xpus gi q q i us" i s$'v rrx ogvf vd Trpxgusppgpmgpgnt ustuqm7pwguq pfwgfr sf g vr s s q m xe d jujpfs wgpwfgm dqv( Ipg 5 pxVg ppqusm g qupudrexnis Irwfqx rdnxxups rg pxug pgpspgppmwdgpq d Vuhsn eptgq q 5 rpxgqm r wvuqsgpftgm q s qm x v s x i d s g rpxg f qnr`uqrqgfoqnpggp~pgv uhqs n uqd pm uvgGqt xuws xi qrmx x ogs gonpqtg uq1pgh rpmAxu~hustq~uipigsu quqsvnq png rd uqs m s g d x gri d f s s m x s h pxgpusXpnrp pg x gn qh 1ex uVrx rxgmm rpxfrrxi pg puhxg s pgrnd u suqes g wgufuqssgpftg dvhd g x x g v u spgx gfrm x~s q ~pppg uq s usn z q ()mrpg f q!s s i x dujsi orvq nrdopxgpxpgrh!npgfu!gm !pf gwvqf dhpgxdpgn qzgyfn pphx ruq guAsf p qrxg k rTvtxqs A dx pesxugghpvqws g hd ggm qgpfonpnx gGen piq wggqhp xg gdsu x tgpi us s r g g x s g s g ipg dv sh r " q y vvxsv y i yuAqsuwsqu onp pygezpgxpphXv rr rxponx!tq q pqg u nps ygtfg qxs duv!rppvs rudo !f qhgofustqrrrx qzyqsm Gux s dgpx ppxg g png thp og rp pxggwtdqq dx vuns ( e ih d dn f g pjropvng gi eee5rpx h75rxvpn pxg ud prsg m p`x hryy7xsi pxq xgppgphng hdp zr rop tgpqutgsge5smqduq7s7s nppgg rg 5qtvqr rgpghrhddf f ygwp5qwursq xnrn "uvqsron r gxpxhun gs pg g ggp x q ii s F g F 5.3 Case Study: Expression Evaluation 211 b P S F R F F T R F T P b p p gv hm r dr x d p s g y pvpwuqg 5py ps g pfum tfq5 d np Apuesg qvtugpnsv Ggg pfmutwsqmq wsuoq un sxpxdsgu dq m ynhorn prx gqpdhm !pn gnp g ougpd ne g h g wvywvquqgpfs tgpxng7 r Gmpdus uGs n gs u1wfqpduyrxgpyvtqus gpfgtq sypwfqs7 tvuqpsppfg uqq sG x q s s y s m x g vpdug ng x r pxgpmwggqg hhfn r x s g grphz prwf qpi qrf ighd!s 7hs pd us ~n~ pg hxtqug n r x psg x pn g drd vx i nw usryug hd pxx gm rrfi uxpqrds rx spdu q nv uss n!x fdu s ppee oyvu e nhyv o ov x d g x5gwfqx pg tvuqgpftgym usrf ~dus s ~n~pgrzhppnrusyuvsrhpg ppg fgs uvgpgxun~i f gpf gyx hx drxzp ohvuong uqsgpq rs pxg h dm g n s m g m q m nnr 7x p d uno7 osuq nTpqm xTqg rgh7m n r7pdx us 5i ond qs npgqp wvuqpfwgx7pdus spxgrqTrusqrzqgfus xnhg 7pttvggsuqgpftguiq m st g phdrn 1g px tfq qx m uqs t oGv uxG~xvuspd~gsup n~v rpxhg dgqm frxm nnpGdxgq us p~f5rrxxq rp5 q v A n g g m g m n s x s n g fq s UyopppxqurypduyypwhAuonpwqyn g g | v q m s v s x d m f s d y d q j pdoxgupud7r hnhgxzunzhrixgxgm x g g up5upgpvnxs uuftss qrpryqx om Gsn pwgAdxus rnpiyg ox up5np7us unVps pgp gm grf xqgo prgq ypfn hdgf s q h ( x g g gV m s g5 v jn pg m g q qe d quqs ms txxm 5tpxggg q etx uspgxpgpqg s wfqx f rhyxpunshi p pgtdq xxxs n rxnpge vwvuqug5fss wguryp gg px ppoypqgh d rnep{ vtdg ppggupsg wqp uxpppgds dxzu qhens xrrp ggd x A 8 s y y (0u5 rr reopxpphpT rw nzrusus j h s g q x g g g n g x iueusGusptpvhq h5rpxgpghem Gs gwhdqon pgh rfmgpfg gx g g q t d s xG rrGu pstg qywsuf pqs xg o5pmq gfthqn v x uiuss n1f upstgqr rdq xuys pxgwdqmq xuxs pppis5gpg 5hwx ~qm pug ws uqon gp s x g n y x wvg qugpfgtqmxpx gpTp gh o~n z s pxpg x g vtprn ggpxurveh uqtfm qrVp pxg urs p x gpppxg g phdennvtggxpftq g pGdxrn gVx qxgmpgg htrgpxnpVpgn gehg nw uqs hd w qg T g uso 7 qusp m Ts s sg g mgph nm Tg ptqopr x !yx!ppig x mI rxn p g y g gv n dgfrx ~ipp r pxg qxm ~nrq ~ix g pdui s~ n rxzq usp hpg rdxqt n Tpgy npeyq r xg frm x t xps g erhrrg xrn tx~pg rpxgf mn i u psx hov p7g pwdgu sorvgnun7um wsq hpdx spp7x poh$ uv qrighdnus yqrv erppx{ $rx5vri nqusGprpxgs qGur d pgxd sutsqums gpg pwgqupfwgqm sIx g pggyrx wfq s pxgq uvg huv udess roi y qr pxgphg Gq pvm nrpguzz~opxgqm urtfqi xs pduqsxeupsh n b p p b G31zzzz8)3`` g ` G137 p p b z z z z ` ` ` x pp8b1zzzz8``` g s j!onptpgrdwfq!pfu!nv p ez puu!yss qus derrpxgp pxpgr x~mq nu dppzmpg guf sd pxh q m g m s x x g 212 Character Data pG31zz8)3`` p b z z g ` p p8b1zzz8``` z g z zzz8``` g ( V @ `1q 2 xz r '8 {p 21 xX)Tr W ' G ~~}{{ 2x 2 r v v ~ ~ {{1`x` r G 3 2v vnp 21 xXTV W ' V 'n ' d a 2c{ 2 {p 21 xX)YV W ' r V 0GW) V 0GW) 2 a 3 21 xXTV W #' r TV W #'h $vhodpusqrpgusxzpgpgh ruxGyrxqgwuqusnnwqqusrqxxgtgwqd!pgnui vr vxThnroxpgpunpghyrfxp7su$uv$pgpghgusquws~qtqgpg sh 7 qjrux5swqusrnxxnoppgwuqs~gpkihwhdgdfynp$govneqyd~pigfrdoxpg7pgd pgt$q7susnnypnpghevxvt qrqusxgff o sd qh q r g sA jpgtqm5nx5dpus5nusdpgus s uedpusApgy"eriyxgqm5n jytvpqusnp"guspmquyswqpgnnqusmnpngwqqup ussmGppgqurstxpvnprggxp"IqmGnus5qups5wvtqqusgsufs v g s jpgtqmnusnzpgsxggxqnxny pg~hdpousnxv$fhvwqusfphgwqmnxxidpfud h mr s p sntqexpus~pggppgdpuusvwqupsgfpqgtumntxo~upsgdpusdpu!gnfyqursigpdysuis~pdgpgvtwqqprgnh r $r r Br r u $r rr u r 4 r B r u r r$r rB $r u r $T $$B& f r u $Xr rBrf $X $ $$u $ uT $ruT r r$ $u r r u $r r$r r r r r mrx userxppusVqususrxGqrpg`pvtgqruxsrup swqoxXrxpvpg suwx`q riqddusxq ripgwqqrxen gn hir ov$vwqus sgfpq gtqms usx pss xp gpgwqm f on dps g pdu s t snVg wd xqq us m jtuv tvuqs gpftgrghpdugnedxAuonpxgodepg r yrx hgq m rq r5gfuszngphI fv npu v pg q grxq ms rv t r xgfq7uq rx x s5 g g s q m i x s q tq dp"qwfqg ppeuonsx !q urrpx g ups hwdn xAg yqx gfm rxzpx gtheGz hgd pxtguq nx pdu s~n xxpri rxus s tr x f qx s x nDhdnDftqrehpv d urpxs g nqqm n pqg7n pTuGgs px us mtfq rxupds epdusn g q rx 5.3 Case Study: Expression Evaluation - - - TV W #'h 2}r xX)YV W '}r d1bG{) 2 V V 3 21 ) W Tr ' 213 )~8b)~Cd3x`8g)'8 r WYV d3`13'G r YV W ' 0GW {h 21 X)WTV G 3 'G )~8b)~Cd r 'i{E'G V ' b # 8 dTV W ' G 3p 21 xX)WTr r TV W 'i{h 21 xX)WTV TV W ' 3 21 a 3 2 xX)WYV W YV V G) 0 W ` { 1h 21 xV 08) X W 2 3 21 xXr 0G) W b { W d 1G1 1 r {1 f z ` ~ d G qn{p~ t e uq)w pq8C { r 1 V v v r W a r G a 2 1 X xV GW) 0 1G{) d b 2 }r 2 V V 3 p p sGqtpg5gpnxghyppggttqus noupsApgusnGvrisuqmnppgtgpstnhnruvus unsApgqusnmpgsuqmrxpp dr g o rxh~ q~ g jsj"usoqursnmxehpppgggupgupusgp~sngpqtpvrg7ipgppxggpugdTspgppgmpgxqpdggxf"fguprsipgpxgmsTgpfrpxpgdgpfspqrgusxnohxrxu"sxgxprfeususonxevuwvuqutsgrfpgtqnm de rs$r r r $ Br uu r $r r $ u ruu 4$uuBr& ff rB$ $ r rB$$r#5 ghf B $$u uT ru$r r $u T $ $ $r $r u rsr$r r vfwqqnrxusyvriGxpx5 vrixpprxyvtqusgfpgtqm!s~rihdgf pgtfnyq$vwyqugsp!fsghppggwpgqmgAvgpvtspquGxsg rgof pwggtpqpqgggm7pss pgvrpgtqfwqpdudnnnp!xwhdhpudxsusnnn pgGwvtqqug sgfprg wpgegqmtqnndrrx xhnp dpsuus r q d x s gd q ` px 4$r r $r $r r r $X r uu $$ $ 4 # g r4 rsrBB$u05 hf u $$ $ uT r$rT r $u $r $ $ r u $ r$$r 2 3 X xV G) 0 W 2 1 r r G) 0 W 214 - Character Data - WTV 'G }r xX)WTV }r d1bG{) 2 V V 3 ) 21 } a WTV b 2q 0GW) Xs'G 2 xX 0GW1 d1bG{) d }r 2 V V 3 drr 3 21 xX 0GW1 21 12G 0GW) XY'G dd 0GW1 08W1 WTV a b V 8 ' ' F F 'h v v ' { p 1 2 xXY ' G qnh { { X s V ' 2q 0G) XY8 p'x' W ' { { r 2 3 ` hi XY V ih ' { s V ' X G )~ {p'x' ~ { r 2 3 `p g XY V 'ih { s V ' X 8 ~ ~ {1'x' { r r 2 d Ix`c { ' n{h X Y V ' { p 1 2 xY X ' 2 1 XY xXY 2 0 W X ' d q G3) YG a 1G{) d b V 'x'}r d ' }r 2 V V 3 ' 21 ' n 2 3 xXY 12q G3) XYG 0 W ' d a ' $ $ h t $ruT$urrTG $uu r r $$ t 4 $r $ r$ rr$$r vhqfwrxtqmx rxpguswqmrxngnez d p gusupvghppgusnggfdquosqpgn!suqhsgxy0dpusnhxe yqhg unsg rxx dggdpux spuXsdpxe Xvp mpgppgod fBfxquszdqf dnppgVgpg $ s wdxgqgpudsn mAv p r g ~qnpgzs p~n qonxfnppvpmg p g `s uss hpdq upqgsnp g x ryg tfq qx nwrq x uutss uuqxoqwgnnuys xztq q t uws qus nnG ugvtqugpftgmu7 nrxpn o s n r xs 4px go dondys pgv i grf dm p fgy rg u uqs x wv $ ogfquy gmhdf h~o nzpusnywgq uqtsTnsn0rsx ousg fpusr ri t gr xgggfusxVr i g nupspeg x on yrAqi uop uesg fpwdgg q gxn d urs uwfornqs xyqwGTgxx xugtsqqm pn!pg onggp e d m s r $r r 4r Br $ u r h u$r u r u$ r $ r u u r$ r u$urrr u u $ $u$hrru u r $$u r T u $ h uT rurr$ $u h $ru r urr$$r fr png px tq d nq osqusupng ne hevx oxrursi v x q uur7px grpu"sg pxg ppgpdrm gdxpgnfnrhn'vseq en dGsueuuprgs psuqm s"us rps h g ed i x gk 7 m n - - 5.3 Case Study: Expression Evaluation - b 215 2 W 8XY #'8 21 p W v v hnv 12q G) sG dd 0 W X ' r GW1 0 v v nhv 12q G XYG 0 W ' d v v hnv ' n r r G) 0 W v v hnv r TV W #h ' W TV ) ) ) nhv v v 3 3 r v v nhv r 81 ' d 0 W rr G) 0 W G1 x d dTV TV W ' d W d 2 1 ' '8 2 301 ' W8XY ' 21 W g 0 W 81 b W TV #'8 GW1 0 ` { 1h 1 2 2 3 b { Eihh 1 2 g { hnhh 1 2 12q G) XY8 0 W ' 8 X G 0 W 2 1 X G 0 W ~8)~ b X G 0 W ~Vgs~ 2 3 r $r 4$ r r h t r$ 4r$$r h u r$$r u $ r$$r u r r$r r rsr$r r u $$r r$r r $ r $ r $tT$ruG $$ $ rr $$r 4 v dx f s g m s x phhgpd~quzrpxgd~nrp7 s h m x g s v$ r ox uspg npxg rzx $ gufoxv usrdqxx uquwsqpspgmrpfgnwvzq uphdhygs $u rs nuqr pxgpus 7d pxhn g hd n $ $r r r $r $r Xr $$ $r r$$ r $r $ r h r$Br$ r $r $ ` { 1h 21 X 08W1 3nnvrr v nn 2 3 216 Character Data 2 3 XY '81 i gucrpxpux fustqrrxq`x$g p phouopxys rg utsqdy n usrhx vq s s m v r g g d s s x s x g gh q rx g s| nehun5 r zrpdunzrxgpgh' v ppgg wph!ds ~ pdupdv p q s F qt z w z Gt u ' G z b z p p g z z q1G#3bqf w 3 t #ep w bpq81f b p g e z g 2 w w w ' G 3 w 3 w w 2 ` e 31` ` 1 ' G f 1bpq8g t e z 2 2 3 E V ' 3 2 3 E V ' 3 2 3 E V ' 3 2 3 E V ' 5.3.1 Exercises ' G w 3f Gu gep t 8f z g p f 2q XY 2 ' V c W ' 2 d ~ 3 s|Ix 2 W r |~ d { 8 ' G 2 W a 2 2q Vd ~ b #' 8 3 ' { 2 d ' ~ b ' b ' 2 n qn | ~V1 G{1 d ~ { W d b 2 d 3 @ I q`8) 2 { 2 1 W8XY 2 3 XY }r 2 V V 3 ' '81 $r 4 u$& 4 $$ $r 4 u$& 4 $$ $r 4 u$& 4 $$ $r 4r$r$ u & 4 r o $r B r 4r r r`$ 0 `` ur $ $ $'& X uur $ r r $ r$ $u uT 4G $ $u $ u$ $$ rr$r$r4u$ $ o r B r V ' W 5.3 Case Study: Expression Evaluation 217 218 Character Data 0 W V G X 2 W 2 uvwstquqgugnpepnu7rgusvppgus g d i s s g g s i opxq ghdpnhrry uvwsxtquqs7rirxuvsgf vuuvwstquqq dthus ds q rqx on rgfqrp!x rosvuthwqn uqugsv qvrdi vuwdgqs y!rdq vuwdqgs uvs rtqws xtsuqq usrmgrf xf phn h ~ x f es h i f xd g n s m s ppgw nu sxxydwdq~onxxyuvwss tquqs s udnphx fustqrr xqpguhgdpqg df vrur uGopwgq"quwsuq on si d n i ppusux )(ri hp rogp tqs uoons exgp up7ypng hxxm xvu eqy rBegps h umgsnrq xhv$pgp G x $ s ox s x! x t snu s"r"q eng p onx eg rou5tqrgq hid e ppgd x poxe ry ruvtswquqqixeq x x s i f x n x s uy uf wsgq xTqm pg gphg np v qm rphxqv f qphxg T x pgriuf wsf xm nphd!p7qrxphynnrrog fusrg7rrs us7qrd j q s x g r s w y ! s s d ppgei m g grx fus nrstqrpxpq7m qpguhesp~ p pgtnuh gx f vuupsgom pggf g s Gufrwsv xhq drp gxuhyivwmsq ufnfGdppgqwdmmdsrox xd nunrn dpgufqm y xpshg srs x px x pfg jpn~usqouven pmygtqg rfuids us pv gti qgfov pgpgq hp~g uqsy uvwstq uqx uxzx gf h d i s px gghpgqusmhdwdqs r ss ~ri mgrnf x hvmnv uv gufsnGpvppsqggtu ppusqu qydpduwdsq Ts pxdg uppgxf5unp()xGh x y s g x e x h x r raqr@GT h rikYri kTu e r e v s n g d s s q gr q qumphx~quzquzppgGrd ppgxrx tfxnpzd njp qgwd eeydq n"wd 7x q ~p sugfudhps g tvuqtqd ~gqprt vuqgpgd hfuddshtqrqrux psq mymuv g pugoxfsg gpuprs"uiqpppsgpugrpd sgyuie7Tpi pv uurss i n sm h s xmp5 s f g g x sy j rpx f s d vnt m prg u fs yphrgfs T ppg equ 7rpxgutsq xpqg n ums7x rv x s g s m x m pg pwg q rvsum hg u wsqiuyopgu s qx ymr vG pgh rpxgud tsq qhxprig rx7p"$vuqdwd qDftqrxeonpghtxuqs7rsm v gufij sx pwgrnd guuvm rxmf s v5gsupfyg hzpn p g uqn "$gppypvhg qdrxxqd ro5vshuhhzdfsm euxxnerd pdixdysusu hphpgpxgpuv s5g rruvm vx7zswstququs h ( t s wd i7yi d s s r x qr x x n~s g s Structures and Derived Types 6.1 Structures 6 r 0 W V 8) XY3 ' V V W r ' ' V W r ' k331)n V W Y vq ) ' V ' q j g g q i s q q g g s s pTphdwdqeonvrpvpuspgugf nm~pTrpxguuspourvqq ~siujx uhd jurps ygqr Tfrgugsf prpxg pvgp hpgs wgqj g7f se7hp rTxg !qusgqs utqs rpgpig hfg ojd G nn7rxx pupqrp gi gghdff d iq q d x n sn tq x us s q s s gV rqvxxq n hm rp xpmugnuzs h pg hhhgqp r uhdsi 0 xq !emp ng utmrxxrpf x rxs !opn s g!nfsuggpn pryghd npxug x ms qgiusuqpspfugs 4 q 5 x s i x p gvpg"rxptgq5nyug sIq fuwsgq xqqdx~ ds v uex5m p7pigrdprd x e ypuyj rfs uhus 7 y nrs gnx $r gpxus up rsurxgxipGngdpn xg npTrqdv w d qru "si p pmx to$u sg y $$zu s yd r$ m " o m n xfr g g x xex nux dhpmoer pxrh r"pgyigpvqu hpsx d pgwuqs ri Tpxs e run sgGpughus wvj qrq zuuvsr x rxxgfrxo ues pjqexripxXxups pg e rnVx4q x sgi noppggyf us g r m q urj x grrxfm gmx qrgxx7eqqf rdrxtx! urpgpfg ugyfrx uhu '# hdu wd"s q yu nryx $gufs y$hyn f r s x v pg q r ng s C n | ) '# u u $r $$ r W v s q g g x s q p g rpxgugwfrxpnxi pxguuspgurx y ndq h us ygmq ufq dj ui hodq rp xg pgf xwsf u qdq ruxpsp ohpng guv s rrtuqxgfhdqq u wdoqs yBVuf drsu xqn m s m h s qrs s d i r x i q g s rr`uiussrsx rn`p wvq`num s ys usp ig n`d h v rxx rnx im n`pg`q r xtqm`nus x rtuqgftgfrx mui gnq sux yx wqg f f o"dyn m hq hus"ygufs xoTug p snop exnsu rrmxx xrmidh uypsphdpfups pg"drrm frx5q nqhgrf xs"rgd xy pg5rnq x g m q x vgpsu gxtpvppgprtx xg! v i q x s s g m x x $ q rruvwstquqyuAprxgfrxpvr7rvuewsn Aqqtus d uts wdqq u5s ruq pxsAg ggpfhfg pq5pn ones 220 Structures and Derived Types q ' 81 2 01 g ' ) ' GkkvrkrrGk x wew xw h f h e qx x q g s x m v wvuqpgs pig r tf x nts pt pg qu!mrv on rxx ovoi f xnd opgh grrm g v o n xrx gfuo~onGousx rpxrxy ey Gq x e rpxpxyphrxgfs pjpg5p`pxgppg xphyx np4g qd rpieqwgx usvpg pgrpigus$$ $ r nqn gv i vv rg onnpeep r s x q g g i q m ds ri pg x sm vpwgqhg vf xr~x pdu s! zusy pvs ufws jrxh7q drm usyqd wds q vyvwqrxsq dwdqsym p ghTxTpvrx d susd rvf pwgqhg7y sqn n e ppus$yv~suh 7s j g m 5 gruvm v~shqsuf gpfugwsopq wgq xq pp vtgdq quu5qss tuqyuuv hps pyus pxpgrg r$p x hu ypy hpg gm hxf dh pypuhsg Auhsq eqy7 h xw h f rkrI h e h rGk@fG w r" h f )a' 0 W V G) X v33g 1Tk r h g Y|v3 '# V W u ' $ $ $ V X ' s3 u $r $$ r V ' r $ v $u $ $ u $ 0 W V 8) 6.2 Derived Types 221 W 6.2 Derived Types '81 Y X V W q`8) 2 { 81 X ' ' V 3 '81 Y X W 1 33) 2 f { ' 81 XY V 3 ' V V V 'c '81 V V 3 3' '81 '81 V 3 2 301 d '81 ' ' ' X 81 '81 XY V 'c V ' ' 8 XY V ' X 81 h ' ' 81 XY r '81 1 d a V 3 V 3 1 XY ' ' 81 Y X V XY3 }r ' z8) 2 V { 3#) 2 V p { V GW) }r 0 V 3 2 301 ' d '81 ' 81 XY V V G) 0 W d ' X 81 '81 X ' c '81 X V }r 3 ' 2 301 d '81 ' '81 X 'I 0 W V 8) X r G VX 2 2 3 G 2V X V G) 0 W 2 '81 G) 2 V 2 { V 3 X 2 }r I3 2 2 301 d '81 ' $'# r ru u 4r $ r u o $T rr$$$ r $ $ x q d d s vr u s hmr v~s n r rx gm rf x~x sonxh~ri p h xd u u zr $$s g fu7 nun x rysm v7ngufs7ynv x rxq x hyqe o u u $r $$g ufgnAunyn p g"xeh rri jhu i n p uttvsg qn x q ruxeroi uused om rv$ r$p $g x evm r p i gnru sx m7prxg e opg psr i T s g s h $r $ $$ 4r v $$u uu $T $$TT r$ r$ $ $ $r $$ $$ $$u j 7sug puqpg~xff xtrq ugtp pwgqpgGqspwsg u q un $q uAs $ $xgvrt7on5xn `gpx pf gxp7ghw tsud q hnri s m g t x f s 7 r m f x 7 s m x $ u 4 T $u$ G$$ $$ur uhgxqp~rxuqpsh xm f g i n upgseuq z'vx s ruv xs ryxGpsuour!$p fu ps pg~qo$ nxgf u~wsx yppqusgfufuqss "~ up gs Gxupgs tpddo q ou r $d rhm vqfeo nen h x $i s ~ m nn g q m r i g m t $r $ 4r $ $ $$ h$r$ $$$u p~gfuzpnphd~rGprxeusnq~rv g m s g g d i d m x rodxsr tppgrpx x gnpfsug s ghn g Xmn uvtq i x$!y g pfd rgTsfxmx u uAqqs xg prhgApogd hmsu wpgp enxn gx p v p qgdtpq g suqx t q ufm tsq s xhf n p g g i f s m v g hr g!hd~ronzxgppgh~vhrx!puqsm sjums pg rx fs r si x s s q m s q d XAAgf ud px$g g pg h y m v yhqre~qnx vufwsg x q ~m rxyphrxgf u 4nrxriug d mqum Ts opx gppg hv!p7 m q x o ~r h n vr r0hrevrVonv pngpg pg rgmpx v~p g nxV~x vufV~hn yuvripxguewsuqrps pxprh x `yrv '81 222 Structures and Derived Types W 1 V as ' X I 0 1 2 X r) W W d 3 2 '81 2 F T R F FS '81 2V X 3 2 '81 V3 2 X pjq wgx rex"ppggq pg~p ugs yrs nrpx epxi gxupg5qws 7d s mrhqx uqrrrxpi hpg gg!nhuuhs snrx trqupxsgqdsmumtgq rxmfyrouvyix $ upxsds guwsuq udpssyh upgnsynqus7pugqrrsi f evdq 5 s x r x 5 dsf d i n s d $r$ r$ r $rr $ m s s g ppgr $q myvrxVzx pdrxpdVsu rphyxg vugws qrqtuTxuufts rxqi r qx guqm psqgh prhuin pswgv uqs s vi q i i ~ jn s m m uqTs pg x 7px mr veg onr ex fuxs e onhs y ehrvTp g"shri mg g x s ms d uyis n nox uqpxm g rp7 m v~nr7 uf7 nrs ry r q ~ rv pg re$uvonqusTg mrvnrg gfunue 0rxevrn rrv 5pprwgquihu pstg~g0mrpxvg7q uuwsppsqugpshpgtdp h pno rniu" x psqg tuqupsx s pgfuyss pfgAp pogm hnufuus snsypnrpxu gg mntspsuq phg oye~rsm y~nxngppge7o5p wgq rvpg x psuqhs sm 5sq i pg xx q g g v m o g r$ ) $ v riuqpshrn i q q pxursDs uipstguqufws s rygsuyqs xufn stqrurs rxnpvqmG pgpiusrrwpxg"sVu rxXgmgpq p pg txoq xxohrpud x gVqgsripgpgrhXvsu rnoppgpr)pdxg |n m x hq g x X i hd fx d m n $s di $ 2 wd s rpxg ng!gxwf0xh ~g n m rrpxgoxg p py g usrmrvs x npiupsgtpdo~vr toq hdd x wduqsov!s pqu rhsg d! qnr p!gs suhx v us r r h r qg q q i q s r h qgus v x n qd dqsu dhs zpn srxGhosrrpxgpg g q s gpjrhpgn n um vs n rpwgpxGvtwfquqrsxpv gp rnxoprpwgiuhq s phgd !ppgqtdpqughduqrsv ihhsusu gfpg ig x v x r v q s g q hdwdq!suhpon sxh jtorxq pxpgxpggg x ppwgmhrxqTrvnmrq pxpg tnpiquxGhGdqpspwgg rpxrv gupxsqdgtuqs wdtqqq suqhms ny uusTsTrnopp gepg pg whpq Thugs yuup s gs uns 4xhuTprdpxg gduqussgvq s us f 7vf d pgg v q s q rhdwdqo !suhpog unrxq ih d s j o r s hd pxp g rpg gpphxtvxngpx upgGfqsgt t$xrq vtq upst!g q pq grx pius ppgprdx qdnhrv d qi shttxrp g h v p m s 6.2.1 Exercises 6.3 Declaring and Using Structures 223 6.3 Declaring and Using Structures X V ' V V F R V $h $ 2 2 p p~hrx!suqqnGus g s $u 2 $r $ 2 p rjrxGvf pq ghq p zqpgx noxv uqods ydwdgpqqpzwdsxq pp5 g ppg ugsnr"p xdd$x~ urs$nrx g2m yprrxf geufp sn"r rxq()rirrxv xghn x zqd pg x qg i m g gr} m x z g v g q m g g i i s d r $vppgpiu hxs uszy rxqgpfp~ud ss rrzupsr~on~d p v pnu`dxthvy pq gqd z!zh rdrxgfrxgp qqwfdhdm quqs4op ug4hrpwps g!r qm d r uqs qq i m h $r $ 2 p q m i q g q s s } n v x s d rpxg~nyvrqzphuurxoh ruierxnzus j s x g s nzxf 7ux onufr~gouf nvm~p drgnewgipqxnq vru`pi s us h od2 qp riuppsgwgquops e q quhpgds m Awsyqd rtv izxsp rx ppxm rhxm ~ux 'vq mgdrxf wdrq x m q g r ' X 1 Y ' V s F F F T 0 X VT 2 0 33` W 1 Y d ' X V ' '81 6.3.1 Referencing Structure Components R '1 Y X V ' 1 Y ' X V ' '81 ' 81 s X ' V @ r 1 V W rs ' X I& x)r d w 0 d q d ` o ' V G) d 0 W X I& x)r d w 2 d q d ` o ' g ~ g m q dx f g i q m 'v ov ypxs gppgh noppgusdx gf fuhs td qrx rxq~pqx hh~fnq dp~rrx m vrgwg p qh~Vpgus pqgt rhx gxn ngsup p5g upshxrgp"qrhIfx ugrrnqf ts xghudvm ys td Trx ~ p r x g # # %$ 5 $rr r m x s s i vGruvwstququ4rxqups4rusrrupsri p ppg4on u s i x x i u rX p m r d jhus7ryrrdix g fhq us un nzqrnxpepx gustuq ps uh verm ~nv xi x uqps i p x s ~ g57 jropwgrqrf!usphpxpmgtqhphorptguis"pmv ox nzrogqpxnegp x m q m x i d s g g q g n q g ~ r r t ur ptge~rous q i x $ $h $ t ur d q i s x q h e o g gf m pgrxdrgfus!u nwgoe!d r~qi udruvots rwqn puq~ pgypuf s $ y sn s x #' r rX W ' 2 224 Structures and Derived Types h ' v vq p p g g s s m x q $pv pgx m xq yums q us v xuppgupsgppzuvepu~uqs7urru vzrhdwdqhgxi us nypufpx pxprxn f m s g g n $u pxhgupdsupxs 0dpsu p qg pTgx rpxg m gguwspsqsu xzh rvrxuqus~mrpe0m v"p tguq hns trxs hx m()i Tru x ms grpff xg sv r i s qh g v x gugpss wdq eus n Ggig usphp 86 h C tvqergtgn uvys r itrvwgqh pjntgpuqe7rrq hx 7prttvuqsA gp np7rgm pgfu oqgp rnxgufrnxs uxuqsupoxtgpuxpgpuTgps ppp7etpxh 7pd xng 7qprhuin s s v g g xqvked vjkkkakgvrid h w w dwew xw ej d x ~ )G G c 0 1 h d ` hV 8) )1 d w w 0 W X r G | p d ~ ~ V )~ W '8 X ' '81 Y X r i{ ' 6.3.3 6.3.2 Default Initialization 8 V ' 81 XY 8 V ' '81 s X V 'y w 33eq Gu zd w w ' X 81 ' ' X 81 ' { ' 0 0 $ u r $ r$r $4r $ p $r $$ 2 $ X $h $ru ou p s i umi fusg ~n y$np eug pd tpd Tsus pu ssGs o x rGg r7i rysiuut~n rVuhsf dr$q $ u 02 ropx $g uRdGuumns 5 vdrtvx uuq s pp5psrvrwg 7uqxpsypxg5p uns s g p v g s p s n r u 2 p g s i s f d n s q sogfi u s~o nunp pg u~ryvm ugf qrgi h~r mx mpGx us ~hrx! suqs u"uyq v `rpxgx `pg u vtn pgdypgufseq zhv df wdq v x s x s hxunn zvm T rggfufm r!hunrhxd gp pqhdg pgwdq n!Ggps usuqpsymtx rrpxis gxz rdx pdessu ppguqtndggfGmhrd uq ds rgrip x uvegy"rrrxxqdfsn h !y h$wdgv p yqpgxfups hqng vx tqrvxwdm vq rx uswgq hq odns h pxg uphpxg un grnds h uv0yvm ufhsj op g tgufnqh s5dgpgnvuuf~s m s s h s s e r e u qvTri kYrxqYrh rvTri keYp ie r u G ' X W 81 Structure Constructors W ' 8 XY r V ' X 1 F R j s q dp r pxgm rxi dpg rv u pu $x rx hm r$fd $grtirzui psg5n mp gypv d d g vh v s s i y x x $ s n x$ u r GvrTuser 7 hgxnhypuf pjq x pousug rgvm g p ugsdndxn Gdrpnixv rx~fegrgx xposfux!q ~dggfufuwdss q ~Tnyu s pm rvd rGvui pstguq rp s tgq hr~q x gp ufr sui s sv ~d n g m 0 d x v qm qm s hrxpmug~uswgrxhum~nnpge m rn x7qt rg ur~gfuo~nzpgtquygpfg!usywvq~rrriyupsri x yv s x s d x m s s x y x x mri xG pqgg s Gn sx nn x ngVs su pv gpfg Ts pg xrhi dd Gohmv hrx x d q x m s d q x n upmsuugs n rdqpg gs s p ppgrxt q m up"A xx ufonh ptg#q pge pgrxdThduettsBs rxmmdsoi0 yrrui uqpsh #$ rx xr opj rui xpsuqtg ns n hrdxmm gy pdufuss trx nhm uGpqg rxrquGursx 5x 0qi dupswdqi pp pgrnn! o x qr q es d x VT 0 X 20 6.3 Declaring and Using Structures 225 G ' GG ~ ' ~V) { d t {1 2 sV 8) )Ta 0 W X 0 X VT q v v )v oV1 d t {1 { W 2 0 x G ' vqtjufts hrGxpm u ns q 5quhdsiu hGvrph5g g prwgxqq5m rhp x g upwfs g urxsq n pufws gx xfq uumri sspp wgqGgphvq g g q s n r q r q x sr us n i n v g dv i q n i g mrxs usriusug hs ~g nzh ppruss n ufwsq xm gn hmrdexpdppgdnhunusphop7mrugufdufsdd n j npe7ppgpgpu pogv uhmqrygpp dr7rixAp7pg p gds su n Ausph g v s sps i g ng j g gou pgpsuqdm rpxv guppwsgqmumrGx ufusupops gn nnxp grqiushq Vppgfh ug s xrmd d x$'hm $u u $$ # #G #r $h ur % $$ $ 6 r $ G $$u h pjrx$'us qgowfg qpg 7~Dsfi utxd oqx nnqh muepprfgqx t gfusyp gerpx nv rx pg r q m ! s n n s xurs uis udhxs ps ox ne jurqwfns pxwg5`o uyvustwqqususppm gtqdr n`mq r qytvm q nuszrruipxg q pg r s q m g x x5qd ngfrxqp gn g fuwsxnitvqdrhq um sns pn gnprsg o pxguhuqqws hs uhhrs ho upgtzqs rpx!pgx g upsrgiuhs uhs pm uv!f ndohps gpggdd rivizoqsu t nrgufhtsf rxrxmq !Twgpm qGuv p G o s # ~ ~ { x r) | d ~ 2 1'q GV) ~ { d ~ 2 & ~V d t {1 ' { 2 6.3.4 226 2q 21 X ' d ' ' dc b 3 ' ' 1 ' zxhxxi{h q v z { d ` v ` 2 ' 3 '81 2 3 X 21 v q wrxqn`pg`xgusuppgupsgpp5pdus5pfueqr n rp x gx ugpu qgpv ufwshn q xm q g g x m s v s $ g q s n x x s i ppdg us pr x uis qjpf m~5ug dtm pdrep5dusrupAs nhupgupsgpoxg hphudsh g s x pg g y jr xGxgpu euxpg psg!p gp npg uqswgnfuwsm vGq rxqpdwgm qphng x rx po riugg pstfqus usApq xrui m s d h v tgpq zhn rm x v $ rh r$$B r 2 2 ur u uu r urru $ r$ v $ r$$B r ' V c W ' ' '81 V ' W Structures and Derived Types Exercises g i g g x i q x g s 'vppgx ptgqe rppgponrug susripv rppeppm gnun d upsgehgehusuq hufvuutsss rrp qu xq p~pm gVngryppgvriro`npsuuqs s n!ppgp4gpusom uph~pg npp`pxggrghx p!grxh xuvgrxd `gprquv sXxhrxdpxhuqq V qinsu npg q s u r g m d7 ur $$$$Tr r) Gr$$u # ~ q~V{ | G ~V) d ~ 2 { | d ~ q~V{ d ~ 2 & ~V d t {1 ' { 2 ' G ' 6.3 Declaring and Using Structures 227 228 Structures and Derived Types r XY'q 2 3 XY'q I 3 0 d I 0 d ' W 2 3 xYG X ' #01 '8W1 { E0 0 { c {'8 W 3 3 2 d3 2 V01 2 3 xYG X ' G ' ' q v d i g s $$ur oCpghxqrhdqupspgpfg!wdqrxxyvusg $ oCXru $Xr X $ G us rCBTru $ r $ o ut $ vr $ oCxGruon s s guf g g vpsnp ~ dryu g pxg $ q frx qTs pgxqrhd oC0ng pxT qe{ i v u d i s v g m x g s ri px g ddp gpwgq pdpwgqom g x uhq d(yoq f nd uq ~o nxz v~g n nrp ` urrpxg dqqr x`rs pg ep pgdrq xzwqrxhufsoqph xenus sxypgdrxpgmmuustq g xVous oCgufsghxm g q d q ju rp tu ugxgf phpid 7g rnx5Axxpg pmg rvdr7i q y nhd uqq xs5np7usg hn phdvpngi up lsv fv gr gd pxdf ugggpthf rd uq m sus dqs m s g ss onf m r vf d g nux g 5fdrqu5s rypwdugs fton5 y pdusqrpum usuv nhropghudpd xduqqs p s ngpfg0uVn uhns uxs nVop pgg hd rxqrdphepxsd dquv n7uv p uiv wgruqhpxsgruxqsu qm ptgxeq s V g s d V i i 7 g qps d s q jjgptgeussT xrpu~sgfuwsrxqgvtofuqsdspgrxxpyusxyqs phg g e s q f q m ~ n d m f q x q r5tgx u grsufs d uqpp7ppx uvox gn uds n7Gp gpppgtgtqqop g ren quyps5gm ufq hrxq r~uvmqx pgopm wgvqop gqvu g 0 3 v sq q upsg s pxguspgmumnu sxogfrxpqg xm4tvq`pgh xtq 5dm nepxpuTpnhsh on`pguxsmus5ytx x r s g f tv gf q tjujqtsp g p pg ghy oy pxgqodxpqgppwgwgqqop g rurspxgpqg ygpvuq gouff wsq r0!usnytyxq us q m mx d q Extending F 7.1 Generic Procedures 7 2 3 XY'q I 3 0 d I 0 d ' W 2 3 xYG X ' #01 '8W1 { E0 0 { c {'8 W 3 3 2 d3 2 V01 V XY'q d x 2q xXYG ' XY'q # 'q V ' # 21 V W r d 2 x 3 xXY'q ' q 1 2 ) ' 201 ' W8Yq X ' 21 W 'q ' G V XY'q d x 2q xXYG ' XY'q r d 2 x 3 V # ' # 21 'q xXY'q ' q W V ) ' 201 ' ' q ' q r XY'q $ oCXru $Xr X $ G us rCBTru $ r $ o ut $ $ $$ CT $ oCB r$rr Bu r o $ $$uh oC $ ooT r$$ $ C rr CB s s d x g v {vCgq hrxqmpgtqq xrq nx z fusnuf ws xm d s s q q xog uphrgf onypqehx ofd quzu srqpgghruqd nqr pg se g uqs d h e h x s z pAqo nupgpstnm p!op Cghpd uxsqrtduGs phon f unTrpxrdxui us nqws ufws xnq msyphrd rxgf i d $$ CT $ oCB r$rr$ r $$uh oC $ ooT r$$u$ oC B l rgpxgs pghhd rxqmyghd !g ~suqpsg hxnd v v v u n qs v f f s q r f x qn m q xq wfqrxqphysuuonGrpxriuswqpupphod h rx$jv pvxq pu~psmtgphCdxrguffmxgums0nn pugwpqgfs pgy udsoon f vdrfdi quupss iu~p psnu`ys ustq nn x ufppnusosp5Grrud oi `suCegufxduuvsoss en~ yn~hq h hud ps m o p g s f 5 n g s i g $$uh oCXru $Xr X$$ $ oC $$u uu usruurGBr $ I 3 0 d 0 d 1I V '8W X ' YG }r rr d #01 '8W1 { E0 0 { c { '8 W V01 230 Extending F rXY ` ` X )W1 'q ' G ' G rhgn px xrdpdu5unqs ppusuq sv tq qrp hdrpxmg ru xphrxqrn g eAufytsrrxq m hv v h s f h x x v g d m n q rn d qG jqnpzhpduhusqphuvtxpdduso Chgop ngrqxxruihds ndpuwgqos n q ~u osn r pxgphg v m g s s n h ~ h uvpwgqquwsquon~phuox oCgpgdrxqrdptgqrnGhvq s sn i uvwqoprvustwqqu~phuox oCgpgdrxqrdptgqrnGhv p gx s sn i 3`x` v z v 3xz `nz 7.1.1 Exercises ' G X V c W ' d dc b ' q d ' 23 2 dxm uftsxzpgnygd q q qm oCh u r p X G u A o p o u dc d b ' q q d ' 23 2 i z { iE ` { xi{h z v z xi{h ` v ` 2 3 p d }r 3 d W8Yq X ' X 1 2 'q V ' W p W 2 8YG W X ' 21 r XY'q I 3 0 d 0 d 1I V 7.1 Generic Procedures 231 A T $$u p $ rr CB$ oh urr r r oCB$ r r $$uh oCXru $Xr X$$ $ oC $$u uu usruurGBr $ '8W X ' YG }r rr d #01 '8W1 { E0 0 { c { '8 W V01 0 d 1 I 0 d V 3 XY'q '8W #01 }r rr d 2 3 W1 3 2 2 3 XY'q 0 d 1I I 3 0 d 2 3 XY'q ' W #01 #01 '8W1 { E0 0 { c { '8 W 3 3 2 d3 2 2 3 W1 3 2 V XY'q d x 2q xXYG ' XY'q # 'q V ' # 21 V W r d 2 x 3 xXY'q ' q 1 2 ) ' 201 ' W8Yq X ' 21 W 'q $$u $uh usrrurG$B$r oCX u $uur $ oCXru $Xr X t $ $G oCXsur$u B urr u r T $ $ $$ CT $ oCB r$rr Bu r o $ $$uh oC $ ooT r$$ $ C rr CB ss j umrxsv uvwqts huq u!fx essmi uu 7 xo Ctp p upsgd rxhhdip 7xd pg tqrnewsuvsmu$utqzuqs !uvnuwsIuqxoqx s x dn pgof!ppqg ex{yunpvs m g i qr g rxTv s stq g q xG x m rs dyxrpxTx 0pqm qh rx qmn70rpxgu sxr pg on7pg s g d j xv q tjuqs uvpTtqgws uqhrqd xyuv xstqwqqus nxrgfpnf us xxgx f pgrig j fnGwfrx m q smnpgrpxgusdxTnyohpponuvgf g jhuvrwsd tququqzuss rhdxs Vpsuqsu uvuwssqtqunnppe 4pppuwgsT4s u`sgpsx np oe7ry ghr uqVvg7h 0 g e q ri o g n d i f d s f f d d q s g f g v us f d $$rq ui wgqoC p g rxi d! n!m ugyxd tpxgpdrxd qpx guf sx uqs uv oggphsd xrhd q nG pggfp pf~qhxqmhrggppgnxpg hupus tjqhhdq grrxv GGm p hrgxd uqhynrmuesx uG wgeq gxxqrypdgdpy gtrqpxg rn Ggxd Gmq yxn~uv xse~gp i d f z s o s dr i q X ' YG riafTGaIkr@hk h r j de x h j h V ' q X W )1 y 7.1.2 232 x jrh y hpdug r vu stwqqusugq pdu pr gosv xqd uq!zqsm p gpgn rxo 0hgp pus m s x s hfr d i s s x qsupun nxnp wgqeu eh r g sugunqphrxgf m r s f s d yrus wgp Guvr du~gs px uos q dfrhuppstusq hthqx vd i v pxgx vu$ws qtsqu u puGr hd r xm ufwsnpq oxg nem q X W )1 ` ` X 3rY Extending F Elemental Procedures ' ' Gspv&pCdxzvxzx`x d v ` d Tr W v `` d Tr W ~ #zv u p ~ {p Tr W W V '1G) 2 V d b { V X 2 s3 W q 2 X V 3 $r Buu $r B $ r$r r$$ro rurr o urr r v s x s s g rpxgdhusofpur~pmufqnxuzp~qe{ v m g s d qm s qdzpxpu~qhxusgfpnuhvi v d m s i s f fd f fd qhrxq!~ryvuouqsyvghxev s pdenu"uqhmuzqpgrxmertvug"tv qgrxdgfp !fi grxf hsuv gv q s s n s i s f muqs ~v r d y xef v q q ix s f d qm pgwhd~rovu~qhrxusgfp7v v m puhdgghdrquuhdu7nyrpxgmuhdodrx5pp uigrxqdtf x~os gxn~vq s f f s s s s d s pg rri vtqupsus~rhgghdruqsygghh~nrp7v p i d f f v f fd x qd m q f s hhrxqhusogfpqrxzpwd~grx~uq~qe{ V ' W p zn` t e u 1 V XYG ' X V c W ' dc b ' dc b ' q d ' 23 2 W rr d 8 t d u d e d p d 8sxzx d ` { { E 3 )p 1 2 W8Yq X ' X 3V XY'q 2 V ' W p W 8YG W X ' 21 o oCh u r pA G uu A o p G $rr $$u p rr CB$ o oh urr r r oCB$ r r $$uh oCXru $Xr X r XY'q #01 '8W1 { E0 c 0 { { '8 W 7.1 Generic Procedures 233 7 { h g x m jorrpgpj pxgu !uss rxsq nuxs!q qdusm vxp0nT tq o yxxppgxTerdrhpde!!su qrx m opd$wvuug nx h udgsf g ri yp x e! gpgu~npyusp uqrpzpdpypm f s q g s g g g s gj5ufx m5rrrhpg o njpnrxpiups wghonrm vgf x r n xwmq rn x q x v fus gqus x r vrrsx gh5ovfsui n Aggpfg pgg usf ohyx n rdx hp guos nofj nruptgsqon ropg xgusyusq gnr { ' ) 2 0 ' 'h 20 ' 2 0 ' 7.3 Extending Assignment ' ) i ' ) uvrpxguwsuqps g s q g hqgonp~hdrpi gtgq u5 s x5$$ $ nm pr~q d uqs jpui xwgqps Xpg uzyss tnqpeg fuwsqusdzm yqu~s vm fv usef rg uXov u zus yswr$q x$uwsq $i rzx yhn h m uqsr x i g i s g x $v$$s y $ rx x uqps jh!v rhdppx f pr pig usdrx yxqusxuns g pi nngu hus s nA qs nrn j ~ps m hrgmene hp gf h eps pigupex xed qu"s uqs nm 7pruipstguq ouytq m ufwsuqoyvoygpguywqrxustqoy qhx!ushig ng p ggx!rhpdd d i tgrq gu s xV s fs n h h $nn7rAwuqv uoums gzy gqd hfvm uuxg s5gqfupstriu rwspqx gqmopvq n rnxxd Gdpp ppiegg ! g quVnsums s prpg xpTgq pphrxxgff f x oso qApgpryqumonApgn gq v$$$ $ yr xui qs x r px huqngups tsuvuqg pshhufstqrVexq r pqsgudm qrqox hd nrxvx xrpvTiqmrghu!rygi rxdpsiwgquqsoe ytq hgruqg d ufgtsxuuqfuys s nmqnumhsdxrqxn xgmf q x ds u s ! f 2 301 ' y 'x w 5q&b x t e &pq` v X 2 3 W 2 X 1 3 e v u f `f z v `f z v V c W ' p g z b b { E3Gn 2 3 d 2 3 1 r$ro urr o u r rr4r urruG $ $ $r r$ rr $ 2 }q 2 3 3 W 2 234 Extending F 7.2 The and Statements 2 3 2Vs X q{ Xr W ) ) ' 201 ' 2 1 W X 2 8s3 2 X V 21 W 2 q 2VXY XV q{ q{ # W ) V ' # 21 V W 2 3 2Vs X Xr W ) ) ' 201 ' X r 2 3 ' VY 2 X 2 0 31 ' 2 3 2VXY X r 2 3 2VXY XV #01 { E 2 3 G '8 X3 2 `E { 2 ' X 2 #8 s3 2 3 2VXY dq 2 rr d 2 1 ' X 2 8 3 I 3 2 d 2 XV V01 2 E $ T $our$ru$ r$$ $ rr $r uftsrrxnpeusepnnppggfrxuTxgpdgpxgtvpzng epgg uqsen{ q qm s g g m s x f m f $ r4 $ $ $$ru urrrr$$u r $ T $our$ru$ r$$ $ x dx s x g q d mv phd r g~sf on~hpghg ~g p pig urzpd $ $$uIxq BnnTunsusphg pTgfus4 n us hy nups hgprGgGphggfxd Tfus $$g$Gp pg i uhpn sup7$sgv uuognss B us r$ppgug o s4x$$ rui hIsutGqpgohp onruqxgd 7 hsi hdn n vd g i g p nps su p7 fh g g f $r $o $uBru $Xr r r 4 $ o $r rG $u $r o $$T ur uurG $$ $ o $r $r o $$ru ru $ s i n jhrpggx gy pupsvupx i xhgfgx wrqop r~xn on hx rxppnxhuw nr~gpx woqpghod xrd n~g pd ef v pgfd g g qx h h j s or f us g m d n r v g ng s x hgs x rpgxq7q rhi rdni pg ! f s u sppgAuss ng n prg yiAsqg r pd x ri x d gnd4 gmo j sui dwgq ys ppnuhGuv mrpgtveqVrpegugvr"p gusupVp x rhnx g peun`pwgphxpgq f orpj gpgr Bpsui d unTB n pu sXs tnxtqqr o xpg updsxsu dq s gpou us x qtsuui x dwuqs ru gsxf x e s s g iE 2 { 7.3 Extending Assignment 235 p pjtgj uqugpzq us n sprg rp nipxg pxxuptwg s qq wdq pgpx00sg zuVs ou rs0qip phdg d uoqnsxrp pm xiuuwgpss snuqpxseug5tspgrhorrrpd g f x ggxfnusyohporqpwg Guiv p s s u g x p s v rs vApg d s g g d i pv ru xs u non uufoy rqf rgx p uus uds p pggh rxfd qt wp q gus n n go rd grddifqx suq xe s d ` 2 3 2V) X X v V c W ' 7.3.1 236 v ` p v 3xip) v v dc b ' u w { dc b ' 2 v { 3 E 2 1 W X 2 8s3 d }r 2 X V X 2 3 2V X 2 1 W X 2 8s3 XV 2 X V) 2 3 2VXY { E `E { G 12 dq 2 rr d 2 3 2VXY 2 d 1I 3 2 XV 2 q $$ u u r r pA u G u p p r $ $ rr A$T $u $r ur urr r $$ u $ r r $r $o $uBru $Xr r r 4 rG $u T ur uurG $$ $r o $$ru ru $ $ $ r$ $ $ $$ru urrrr$4u r V ' W p W 21 #01 2 3 2 V01 2VXY XV q{ # W ) V ' # 21 V W Extending F Exercise 2 1 XY W 21rX3 ' 2 2 n 2 ' X 2 1r3 2 X V V ' W p W 2 1 W 8XY rs3 2 ' X 2 2 n 21 2VXY 21rX ' p 2 v rr v 2 { hp 2 xX 2 X VY 21rX ' 2 2 2 X x 2VXY 1rX 2 ' d X 2VXY Gd 2 2 q dq 2 2 3 1 21rX 2 21 ' 2VXY rX 2h 2 ' 2Vs X 2 ' X 1r n # 2 qg a V ' # 21 V '8 V W 2VXY 1rX 2 ' 2 qg a V '8 XY W 21rX3 ' 2 ) ' 201 ' 2 1 2 n 21 W a V G ' r $ $r $ $ $ urr r rr $ $r $ r r $r r $r r $r r $ $r $r urG $ r $r $ rr$$r $ $ $ r$rr$u r $r$ t r$$ $ r $ $r hus v tjq m x g dguspxgx rgrpxgesx enf g orofpqgpfxgm x g duftsrrxhus s x s us g q q m g p hrf gux df s p u gtsm rqf xo7p !pdhng q pv hdv{ rugpnppgrpx$i us tqo pturs pv Tnpsu p dsugm rpx xg jj d d x s s q d d v m h`nfunTutpwgixm hx gfr pxg h utsv qx5ptgqgf gnp emgn rg wreuspqu`npedn g g ywqrxustq ti npshpsg o m x rirx hmx ri q x s v s g ru 5usx ppsypuvzhpdyu usp gr5x rpxups uypsm p5pmouhgeGxfds dp x iu$ds urxx uuep g5e5usry rd$u m b v a rr vs g v v v v x unDufwsxGnpeeqhxqen$vrpetqnepxv hud rs x~f nu sd s q qm s g d m g g 7.4 Extending Operators 237 7.4 Extending Operators 1 ' 2 W v v v W ' v vs v1 2 2 v v 9 v v v v v v 2 3 v v rv x d tvq x g o gfus7 d r$f $rg n rr p fuspgyg g uqAg s pg s g s f d s eh7pdr7susufx pnhg gx npeg $y pxugs hdg dn uhgg fu suswqpupg x grqpmgpgo to hp hx s o txd uq n pspgf g7rq ugx tsqm e rt5opxsq qgwd ps g o wtvqq dq q us neqxupfwgwsqqmr7dpxs n urstdqx fm u7dp gnq"rqn xerTrtqx vphpg ohmm mhpn ggf5pq uesx " yp gm ufx v 7srrx $x w dx y f x s y gt y q y q y g n w rxutsqg xutsqt yn5rqurdi rm d gxpu 5pyrq xxususpgtxpq x $up'rq x" y r txuts qhxntqre r $ e y sux ox!ussgfpxonm 7x ropniqv gerpxpi rrx osu uhf us qrqxudsm ttqqmr epx oi np uxs np mf s x q "hq h hgp mdpgrx i uv xggd ufi sxwgvq s r x s rv hxyd psg n x srxm Gpriu spgdrm pg drex r5u onrxutsq0pgf jrp xphrtvuqsd x m px !xyvrm uiirxhq gd ~vg i qqrnygpfm gtq zpqgp guxgs gp y pgxTpxguwsqrrx ng yhw uruxsq xwsgq qreggp jep pTwyoxunstq xxoxgqp su yosff u n hhm dyTgxsu rx ypgpx phrhg i gusx m g x v v v v var v v 9 v 1 v 9 v 1 g { { 7.5 7.4.1 238 rtmm v x qd q r m uvhj g nf u xpd xru pxpsuprx7pxzuq trexqxuws qvuwsq tmrq'u7 uuss u~hpdwus ntqruAx suhp stoqg px!px qus puugsjps pnnd77rguxrnixh nrs7x~pptgrwg uqqGv p gd s x ` s s g id x xerm s s s sr r f {q Exercise vAp~rhdgf g i x ~ f jhnrpd g uqeerxsn nq rroyix xh uhns gq rpxgurstiqqrxm xwsu uqmr0x nx h mh gf x d s g x d s rpx ghdB qx q s n i s n d v ug n~hs m x ud dusr5fupsg m tn ~ ntqrxn`pwvuqds5rx e juquss vh v us pqnnh` n pVqg rmpxgq n q!us n `pg udso nri tvuquqss mn~ouqsu nrgf n g~ v rr v ' ' g rs3 2 ' X 2 2V X V c W ' `v` vlp vra v w v w p `vx` pv&p g w v w v r v g v 2 v g v 3 v $ $r u r uu r$ uu zvz zvz a 2 3 b dc b dc vhdc b vhdc b ' ' ' ' Extending F User-Defined Operators r9 X V # ' # 21 r 9 r X 9 r 9 r9 3 r V W X 9 X W V ) ' 201 ' r 2 1 21 W a 9 31 3 2 1 r 9 9 r 1 3 2 r9 k w a 9 u B r$rr$ r ur Br u T T $$ u$ $ r h $$ 'vrhhxnpgezgfpxm xd q i q g r s pvrtgpxugr4pq s gx u uVxopx gv s Vvrdi nsuyqus tp qg otg!sfny utpqgqrrxqqTnsxx gu ufgtsm rnfrxr hq xv oVnm Gshgx x k pg pg s~ v m rv s v g q { d i s s y o sdnurpxrifuswqpgupgpwgri h~ppghpdu5 q jjp peugg dtrqt drv G usx g pwgedr quds ({xq 5 p pt5gg ur~is puhs yd xx phpxg qg ropyid "~rnvGsu "rq x q qh h g d q pg o $ d m uus $ rpxgmn`npgepdus jqond pg grfg xGxqugs grm pr$v q ud !wrx uf sxhri7qm n x g g s x q x dx qh7ng n pg gwfx qq hgpd p 5qg fus 7s o xrphd gg pfggxApg rxq q7q uqhs xd m dp7oh rx7qusous~nq unm s s pqrpvq ri uqps~nuyrx yrxq ypuqg nx xv xgu gss frxqhmq mux susn g vyui uiuukuid ux q r g q d ox n s m s q g q sufyrrxpdu5uf s yryqg f purBps rnphdnyqnone 'vr d rguixhrtidfd vuqquvqs gTqxf rr gpxrpxVuenxpeonxiGr phgyoq ggpntuwmhqd os qudnGpguqp7rgxm tqurgsf x ufrpxArutsq pirg sxqqrGVnup f f q x m ~ s g dV e usdr"in q s gq ms v s ge s g r9 v g g rpxgzpnpGrpiwgqh r qrxuwsqmr~nougfpmgfv p x s W y v ' v v v Exercise v W vQ ' 0 d b 33` ' 0 v v 0 v W I v ' q i s x n r m xupduszpg r yrruis pusggdufnm rxuqswseqrrpxmBnr wvuquvppgss husd y~pq d gx pgqqxhs u tq h7qxvm wxvrtxuqus ts qph grVix q qpnm grohsupx nys u uhyws rq nux hqtsqn pm gq dqmx n0huvnn seppuu ss q x~ x s h xs u r dg d g g yrxustqtwvuqshpgjppghdriu'erggp f usdYprxprxx p n yxziv rq xuutstsqq rdpxm pd pzhun s q mx d v s ( 5 i r r $4$$Br u rr r$$r 4rru W #'v r v V G ' V W 'c ' c 21 W 'v r v ' V G V W 7.6 Extending Intrinsic Functions 239 7.6 7.5.1 Extending Intrinsic Functions f f f f f p p p p p p p z z z z z ` ` ` 9 r XV X w f `z z t ` e1` u ` ` w ` ` f q` p z` `` ` u f p z ` e t V c W ' 1 a9 | w d d ~ z ~ ' w x`E z d { 2 1 }r r9 V W X X X r9 V X V ' W p W 2 1 W X 9 8 r XV 21 r X 9 v g w np1 3 2 9 r 2 1 { p 1 2 x X X 9 r X x r }r X 9 rr d h $$ru u r T T ur4r B $ $ r hT $$$u h $$ur urr r rr h $$ru $ r r 4$r r $ u $ ur r ur urG $$uu T r $$ $r uh rr$$r $ 2 3 X x r 21 X 9 1 X 9 r 240 Extending F V X 0} g i fd s m i x xm s xg!qrqupsusdxtr0pdrevppgpgrpigr~ovuvtswquqnrx pgpfugpTnq usxp"hdmxqoptpgrTn gf r7pepghxtx pgn s g g i s x d x n g fq 0qgrxhwq`0vtmph!0ruv wstququd`xBuqwrhxnq xpv n v g qus g q x x " s y s s o vj n p ugwsqemrq !r7hgppif fg z" tqpgryvpg ppgrgpig q uhxps5ps 7pg n grp gx n!hxgpphp g xzp gpgg p u Txrnss ht pqgd !np7 q jrpgGmVuvspusgf`ihvrppi4zphgdGnxrrispu7s7vpg~mruvsznpVnxxxz$dpusurxz$rxpgupswpqusTxpdhvrgxgufswfs xq mr g xh g r mr gnfwqrx jjthqfgpmhpogey $u$snAqh$rxqpmsup oopygpgtmrqevtsuussIpys7opqugssuoqgxpuvrswiqmrxgprnxpniuspg dh ixqm7pgnh$vlu ug iyuu u yulu x yuq7pgT npg n y C7p"p g pfpgf xv uss p rm vx $ $ s q q g g g v rr`gi px d pg ptgg q`ngr ` pdu0nus fg vXi Xdu opggtfq x h us eqrpdrqupsnqm`usdptqrgh5xupgton`rdpg jutsj pfrpgq rxArqsum tv 7vqm gpgtqopg5pxgusgx5d ouvm ~s n m g n v g d f f q s n xhggp uswqrg yrn pfTwvqGd fsx u gytqrd pguqps7xusx hx ropg xg g s q m wvvpqpgroumsuig phgsg p t`pg uAps ohpvg upvpgrpmgphg hy phhhoqg usg`pngn p eg pvrq pig prxg ruqm yqts rp g7uqm d$psu 0 W V 8) q E X W )1 } 2s X )W1 s 7.7 Computing with Big Integers - V X 0 3 v p u g s se s uns rpxgr uqv q 7$$px$g r$ur!~g od rpgxgiqqrf dhq d uppgos 7upgtnrq upnh x !pgq xV 5hnx zrd v uppxhz ux vq x x s v h s x g m g q g q m fd uvwstquqs s g m s s uvf gs hruqs uduq psus s n rxr ix pg 5vtqrpvquun7gsd uq Tnpge nppysu uV5n p5eung tngp xqdr$px hqtm rnVop pghg ud rxqridprg wgrq gpx pv pgou nopxghhd v p s V GW 0 X W )1 p X )W1 k Exercises s g g gqtvumonzpnpqgpgggupsuG xv hdq hs tdqrj rpypgrgpnmi ~xhgrxxrp hrxgf n g g g d m f d jp ygnpeg uAws pqhqg pdrp pepg prxrx x5nqumus7xen 7eh ud`rpf xpus uv psd goq npguwsq g n usp` s i4 s g gphogfus$$ v urpxg uyps tgus pgr5x rrpxi ghgqwgdpm yf rhpx g!s yhd zopgp pgugspotg q ox gpyphd rxgf 7 r w f f f 7.7 Computing with Big Integers 241 w z z f qz p zz 7.7.1 7.6.1 The Type Definition for Big Integers X I 0 W Ta 1 3`8) 2 V { V 3 # x }r X d d sV X 0 '81 10 0V X ' V01 0V X ' #m V X 0 k ) ' T F F P V V X s 0 ) 'I X 0 G 3 z ` X X V r X I3 0 X '81 0 rr W d ) ' 2 301 d '81 ' V rV W ' d X ` { 3i X X ) 'rV d h ' X X X $r uh $ $ $o ur$uGu $$r $u $ ur ru $ np hrp ghhndqf rh x hpq gpg uygps suhonup utx~ pgdrux~qs ruodsi txphn !p'vsu rph$Buvuphpds f gr xgf g m s s n g g $ d x ~ g h pu psgtvs qp ptg rgprvuistwq"qs uryexs nApdurxs xo ngfop pwgnem us goxni udg ersgni rpx xxesu hsn ushus g r e 7 q usr r sg xp d q q 'vwpqgypgpwgqmnxr~qus~rusz hftvq opr!x~hpdu~n vut pqwgrpm udpsg qrig rq 7rppg x gwsi u tqs x~ex pd uxsf pggh~x 7pxpggtsuhqx txm xtvuq psg n"vvq t vhpxhgn h x pg mr er us r pqng m5 x g x xjwv suqu pTg Ad phxg gd u pstqg f nus rpdsuprxqohpnm pevg u5eud ws n d utn hp gehmmd gvrrxf x $ $ upruis ntuqtg ps "uvsi "osx u$eAr rhee unn7uspuhpxp ruigefs rusi xp hr xgg fe nhdn d v s r s " x t s 5 g s ge x d i x g s ss tvq opggypr~prig rm jruqpsB nxG0 puBpdu o n y $$ rpxghd pgpwgqpB n ho j x us g e o7r7pnp u qs nus rhyy g7pdu $$ $ uq ps5ont sxtx qp g i fpe rqupsonxpghdmxquuonqnrpdv us xpsuv $ u2pp"gpg hrgg rppx w5q pg hr5"qqxd rn x hpeonxn rn5xhp r x rp$vg uvus t wqq ug5ps f pnrgy phhkg pg 5op u epfd n7 5tsrhtuv qdwsx!uqtqn ns5hrx n d s g d n ! sn n $$u $ 4 r ro t $rrr$ $u r $$uh $ $$r$ r $$ru v d phhx d s i ~f nhpgrxur xous hongp usv gf fnnpgp endy gpd piqd wg pu qmdrenxuogs rT7uk rk p xogodms ynqwqgtsufi m n o s q i n ph ge r f uqsd g g qugs fgg ufhts uqePs Vrs pxpu5 ndp g 9VB uBCIkkvu irQxxAQQnIT yhrXGrp v pxp"p ggtqu5ws pqgpgrhi t uqu m vs uerpxp rxro hn oy m s @ ( x i g s n y png r H A U~r 5 t 5 7~ ~""p " T e (grH s " s rx x g ot rt j pfgrHn5e'vB~g p eu gupg fps dgm nus rgx xgp pqhpg g uusgpfegg h u5gfs 5$ vq xprop i gppeh77eumx "ys p gmgfufpsT 5unps m U F F F P Rq R P ) k F F a F F S T R RR T F S T F P k FS Pl ) P F a RS FS Ra T k 242 Extending F 0 " 10 0V X 0 X Y X 0 d0 r 3 ~ # ~V { x ' x X X `q 0V) X c ' #01 0 ~ x x ~ ` q 81 ` g `1 X X ~ )# ~V1 { Tr 1 d W { ~`3 ~xih d ` g X ) 3 d ~V ~ d { W d X X ) # ~ # W dG b { # |~ X d W Tr { p Tr { W { p X ) # X s v x g s g q q q nxpu n s rpxxq d s pwgqsqu stqug n~i nxpd xtd~pd us pg pg hg vuorpgd xwqq uA u yqr ppgr7rq pigx dm q ruq ps7 nryg pxg g j x x nphrxqm s $$ whq dopghxrhgi dny pph s n pzqwg A rus n! q nrxi qustqunteqsx pgusrx v qrs s prg igonx q suwsuq ononq gvr T i qmhAqrg n pgnirpfgd u xun7s pju$ooxs 7 pgdrxk idgnxv y x rp!g hv tq ggs pgu g q pgerpx g q5 uq e~hjuAgrphpim v rpgv grpig s xwgqqu tsuqnsAuss !rpg up ng tgps nepyxpfpg d p pg p pg v pgz grppg i gnhx drqTyq rx Xu!pxg qus !r otpi gysutvuuqnss hqgp rrq x upr png ru sx g g gpgpp uuTnx hegxs q!ssm u npxgtVxgp h yvppgppigrx~~tvqop gq ypr!hx pdus s quvsh e g g m A g i s nx i v v rep x gdxxyu gp p xxg dr qrig edd pphngg zp~g Tdxu~s qpoxg q hv uq s v f ijgpg m vpgg shpuuys nd$ yhd mh"qn yn edg ps pg5gufsd o ny m ptgm g s r hpd hrd x xq pu s n x u $n v dq xopprqg onrpduqs q n i x uupsngfuy s Yhr$pvnugwfrxu s upstgxm qjTums tsusxuq n ns bd"p upmwgusqrehiwfqrxdzqys pgGvtuA"q s uxqws pmngtq pgxg h xpdhsgqurTgGpTg grq rp xgpuispwgg pduqopzdqg q x1uqwsu wfornqs x u h q s x p x s d g e q sqg nrx7 rg 0qgufwsquh`ngpg fprirxhBBxusp g`gqn~v yruv eus npzphgn rxv qu sm qm x o o q nppgAupmgtspqgpA ghrdf i n ytg pugs qftgepxfq hm x r xx ppngpp gtpxg qhyymi h g x unusAeps x xgpqtirxTusyxhgpdrpxug prvs pg pghpg ugyqws x qmhouu pgxs urwfs xrq igxrhondxgnfyppg h x d d g g m f $ u ru $Xr $ o ur$$ h u r 2 uu r r r $ o ur$rr u G ro r$T$rh u r$r r$r$B f Br r 4 4 ro ur$$rh$u 2 ou$r u r4& f r r$$rrX$rXf o { 0 nE X ) G 3n3 { ` d ` d 1xx nh { X ) X 0 # { X # 7.7 Computing with Big Integers 243 0VX h t n{1 { ` p13 X X X# X 21 21 xX xX 0VX 0 VX 0 0 2 I 0 X x 0V X 1 2 1 sV d sV 0VX X X '81 '81 2 q 1 X 0V X }10 n ' s f g 1rxqppustx5qupsehdusriqdmrgropxv gpgh hxd driq dh m i d f n~ q d $$ $ $r r o r $ $$ ' r 22 $ $$ $ u $$ $r $ $$uG $$ $r $ $$ $r $$ r$r4 $ g pp v7Thpd uudss ~r ir$ qups Tg$o$w v $q d $m 7q v rurpxgs x nd fpdrg$uqp tguqs$ us ~pxg s nonG d tvT $nuxpTpg ~qg e{d g ~ rx7 un m g $ V X 0 V 3 XY X 0 #01 ` g { 7.7.2 244 ` hc1 10 0VX i{E0 G 1`1p { { 0 f z d&~ t e uqw pq`G~ { 0 ` d ` d 1x1 i{E 2 n{ { np 8 0 0 X V E0 { X X 1 2 0 3 x }r d 1G) 2 V d b { V 3 d sV X 0 '81 X 0 n o $ ru $Xr 4r r B $$ $ w G $rX $r2r 2 B 2 r r o r $ $$ G urT G$r $u uuG $ $ $ G h $o $ ru $ 0 d 1 0 V 3 XY V01 Extending F The Function )#) 0VX V X 0 0V) X ' c #01 0 x x ~ ` q 81 ` g ` 11 X ) 7)# ~V1 ~ { Tr 1 d W { ~`3 ~xih d ` g X ) 3 d ~V ~ d { W d X X ) # ~ # X W dG b { # |~ ~ X d Tr W { p Tr { W { p X ) # X { 0 nE X ) G 3n3 { ` d ` d 1xx nh { X ) W Ta X 0 # { X # X I 0 1 3`8) 2 V { V 3 # x }r X d d sV X 0 '81 10 0 X V ' V01 3 X X V X V I 0 X n 1 0 ' W rV d ' 2 01 '81 ' d r rr W ' d ` { X X rr ' d V 3 XY 2 1 0VX 0V X ' # X I 0 201 ' 201 ' 201 ' $ u ru $Xr o ur$rr u r 2 uu r r r $ o ur$rr u G ro r$T$rh u r$r r$r$B f 4r Br ro ur$$rh$u 2 4 ou$r u r4& f r r$$rrX$rXf o $r uh $ $ $o ur$uGu $$r $u $ ur ru $ $ $u o r t rrG$$ $$ru r $$ru $$ $o o T r $$u $$ $ $$ $ u $$ $ $o $$ $ r $$ru $$ d w v qhhn uv psp rex!gqts prg pus pfg g rny rxsu uehs pg rmphp x xx rqupxogsuwsxqomr7 xyues rhq pdy ~d 5suougpuens s5ehfusunog ps pnn hgrrrx f gxxef d x n x n husgf i7 XY V W X 0 n 21 W 7.7.3 Putting the Procedures in a Module 7.7 Computing with Big Integers 245 ` 0 3I sV 2 1 XY V W X X 0 '81 0 n r ` X 0 X V V ' W 2 1 W 8XY V X 0 n 21 p W 0VX h t n{1 { ` hn X X X# X 21 21 xX xX 0VX 0 VX 0 0 2 I 0 X x 0V X 1 2 10 sV d sV 0VX X X '81 '81 2 3 1 X x 0V X n ' V 3 XY X 0 #01 ` g { ` hc1 10 0VX i{E0 G 1`1p { { 0 f z d&~ t e uqw pq`G~ { 0 ` d ` d 1x1 i{E 2 n{ { np 0 8 0 0 X V E0 { X X 1 2 0 3 x }r d 1G) 2 V d b { V 3 d sV X 0 '81 X 0 n $u $ r $$$r$ $ urr r i m gf f g r d x1ufwsxwqv pqm ppfggg rspq gtxeupgsd ryhyqx pgri uppsgtpsgq uuus pods gpnpsu n nrx q m o qz x rr $u $ $ r r $$ $ $r r o r r $ $$ t r 22 $ $$ $ u $$ $r $ $$uG $$ $r $ $ $r $$ r$r4 $ o $ ru $Xr 4r r B $$ $ w G $rX $r2r 2 B 2 r r o r $ $$ G urT G$r $u uuG $ $ $ G h $o $ ru $ d 1 0 V 3 XY V01 246 Extending F V X 0 s | 0V X c V ' c 21 c 3 V W 0VX ' 2 301 ' a W V 3 XY X 0 q{ W ) W ) V ' c 21 0 I3 0 X V V V 3 XY q{ X ' 2 301 ' x r y tjvtuqs$h $ ru px qgp g fusupxm s vo rIf fustgp gh f xdruq~qs 5onugn~ysuAhn rpgsd uugfs~npppphos ug dheyxn 5rguog sn r$rd xxq qix $d~xdyp7uppguvsru xesrx d s q m s g i 7 s v s p g f $ $ur $$ r$$r$$rBu r $ $ $ $ $$$ $$$ u $$ $ur $$o $ urrrr$r$r$rBu r o $ hurr$r$$rG $$ $ v d r$$ pxgh ddpgpgtqp~lg nx5$ $$ pxgo d~n hp hu sehrpvy us hqx u epovgp tn$rq v pv p ggpx $i Tvpxpitgqquhuq ts 7s unx ms grf gxqoDpgr px ugs g T i " s pg e g gT u r m g f r y oqjtj tvv ruq xs nGox o~ hpdufsuhs us q pguns Gx pr igs rppghh x n h e sgf s g d ( g | pgx qg i s puzwqrxun !zs gorpgus f pgg pqtg udos p~rpgpig h pdgGzgm p upenhwd vtqr $ yp $!xpgyxptgrqq hqdi u nuqws roxsq ngufwsqrhxn s d V q XY X 0 h v v nhv t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t 3333333ttt3ttt t u f 1u e t t e qw fGz` u ` z p w p ` X r 0V X V c W ' 7.7.4 Assigning Big Integers b c ' ` 130 r 0 X ' #n23 2 f z ~ d ` ~ ` z p w Gf u e t g t e uqw pq`x30 r 3 Y X X 0h23 2 b c ' ` 130 r 0 X ' #n23 2 x30 r 3 Y ~ ~ d ` X X 0h23 2 b c ' ` 130 r 0 X ' #n23 2 f z ~ ` z p w )Gf #u e t t e uqw )pq` u x30 r 3 Y ~ d ` X X 0h23 2 7.7 Computing with Big Integers 247 $ u r $ u u $$o $ u u $$o u $ u $$o qdW ` { Tr g1 XY8 1 ' W 2 W 21 xX Vs 21r 0 0 X ' X hgp E{n) Y W X ' W X # d { { nnTV X }r X 0 X 0 21 2 1 d) XY8 dTV W ' W X 0VXY 1r I sV 2 ' X 0 1 d d sV '81 '81 2 3 1 X 0VXY 21rX 0 ' Gd 0VXY 1rX 0h 2 ' ' X Y 2 ' X 1r 0 h 0 X Y X 0 s 0V X c z X r 0V X V c W ' b c ' ` 130 r 0 X ' #n23 2 u f p z ` ~ ` z p w G1f u e t g t e q)w q~ {30 ` b c ' ` 130 r 0 X ' #n23 2 ~ 3~ {30 ` b c ' ` 130 r 0 X ' #n23 2 u f p z ~ ` z p w G#f u e t t e qw q` u ~ {30 ` ` 0 3I sV 2 1 XY V W X X 0 '81 0 n $h r rr X $2 2 $r $r$ 2 $ ro T$h X $$ $r $ $u$uG $$T $$u $ $r $$ $r $ rr$r4 $ uvponzh7$ g x rhxx yetsu gq pm pxg d ughfn g 7v u hps g uphgs g p phfen eg ptgpnh$su x n pyeogmsumqg ptuq ussp g gyotv wquqs npvgeu s g o d s g x ex qo h g m i (q s ! sg s g i h h ppgAhdhhuAuon s xg Adnpemysyrtgrsi gsui pxgpg h s 7ni ptuv rqd e pjg gy pudrgs npxedtggg p rTpxm g uushpd riupf s gtxqu!qxf wf pqrxg tpgrqgxx!prui pg!us tux!s pexurorxxe s m uqps hgp$ $$ pvwquspgpfupwgq4qupshgp7pruipspugsuv ptg m g g g u v s m g v s us q jut v 5oozgpd x r d Apxd pg wgqq dx ~oimq p d5g nxgr5inhuxpsAugrohxnspgwqpt gzpqg o rewsuxpgoqx utqnpg5pqg rnf x q nyyorppg x ggqt fwd xq ur sxx h gonpdprq f phgn s h $nmh s z d I g $ u r $ u u $ u u $ u u $u $ r $$$r$ $ urr r r z X 0 X V V ' W 7.7.5 248 Adding Big Integers Extending F r 3 `````3````G``````3``` p|X z30cgE`30 0rX #'n223 ~ t e uqw fpqz3`G`zpf wu e t ~ {z30 ~G`z1pf wu e t t e uq)w fpqz`~ {`30 X X 0 pgdmdxnh $ u r $ u 0VX W V 'c '81 0n W V p|X 0VX ' z30Id`30I sV 21 WXY V p&X 0VX) 0VXY ) ' 0VXs 21'rX 0n # qg a qg a ' 21'rX 0 V #' 21 V '8 V '8 W V 201 ' 0VXY 21'rX 0h r V 'G g V X 0 g 2 3 1 X x 0 rXY 2 ' X 1a X 0 { nqE X $ $ r $$$ru$ $ urr r r q q vriVpgewqopgpgrixeVhusxqrxustqmvuxed$mgunr xgfuswdxnhm~n $ $r $ r $ $ $ r$ r r$r $$u $ t $ $ ge r m r vopghdxqrid~qdm s g$f$xqT$rpus!r$ipprxpgpg!hdhgduosnzidri$ypgrvpipdgmegpphpg!qdxupgtqswrxpmrgxd!nhnhvuvhsupgtqm ypgri5qrxustqmxnGvrixpprxy $g svtqrxevonnpget fpgpgn erxprvhiuswxAqdrpg7qghnxusngerxhr!p pgonhr5g$$r5u $$ r ymvopgh xy jvptsueqprsuApqgyrxpgxthxugsuystqmxpugosnnyxgvgpomuussnfofunsTonrxAvurstxqwqusxeruvgpthqus xxevhGusyqphwuqd~stixopupggsustqxexhpxmusutxnq!xuxstqhmphgxdqdprgmiTrpxgtuqqsmgpvphgwquosnqpvunsusnxusxsopghrxxeqr$xvystxvrdpi`supg"xp`supghxhdriq sh n w xu7stpqrripihgdxmAupshusguxsrTytqd!pqugpgrign ups5fusx gf ovn!ox hnyx5pgupAfpog nusguvtfqrpg g g s ge p i 5 o sg $ $r r $ $ $ $ $ $r $ $ $ r 2 T ro r r 4 $r $ $$ 4 h B r 7.7 Computing with Big Integers - 0VXY 21r ' X p 0 ih 1 { 2 xX Vs 21r 0 0 X ' X G 3n3hTV rr v { v 2 1 X 0VY 21rX 0 X ' ` W p) XY'8W {hT3V 249 v pwq nr pv ru gpxsgp Td~ g u!ns gpfg tuqmxms s gfxAqnruspgg upswg qipnpu!psg wdgmq x p!dpdpusg guf sone g s x gs h g ~ g g xz uqrpVmg rpm rigpqgustqGxm y g rf fus gq ux wsqrfsGopgrh ppxgd yrexqw uws qppsufx gj7pp dx rTyqvi wro x unqst x7pqroxg u!s yn hm dyrTxsu rx pgpx phrhg i gusx m gh W 'vh v t z t t t t t t t t t t t 8333e 33ttt3ttt w X 0V X V c W ' 1 h0cp b g r 0 X ' #n23 2 t t t t t t t t t t t t t t t t t t ~ 3333t ~ E { t t t t t t t t t t t t t t t t t t ~ 3333t ~ E0 { ~8~ ` { X X 0 7.7.6 250 b i $ u r $ u G r $$$r$ $ $u $ urr r v g s i g rpxghhu~n~qrxrxppxguspgpmgphdgf v'on e uxn txgrpig x~pgphg y qeum xs onrpgrhd ufps nusGd prpxhw s m x g g x v q rn"x 5g G pxgh dn ev nzqrxust q Gsrpxgus sppgmqgphgm x hgen7q uftsrr xq m x n operpxpxohhVquuntxuwsqrpgjppipusrx wd q7hpr~phvuwqopwvquphqrhutxuqsvnTx 7m uufs g n g g s g x s d n s rynx ndp5guwhqgTf xpmgprphgn t$vn gegp ruussdm usf gxpxgn ox dd Vpy Ggoidurepxdut piyppq g xguhu tswd qs hq m rpx pg~tsug huq qpps ggxgpf$qurnn x i x s f nv s q e q o i $$ru $uh $ r qn zqh rxgyxqn ow q hq op ug s nspfg us ~f $v n ys pg d5gGpfx hpfugA~us rois pdn x gx!uhhuh dh i d x x g g h m h g f x n pque ghdrqunhudsr$ygi usgqn i gg jtphq hu zxus epdx~pxm gnoq xyrpqpxg rn~ds usptgtqeoepq 7wvnsqu pg rpx gd dprexxd hpgp p~pvy ntpsuq xp~ggpf$ufs ustvg xqupgs m s n d i 7 g x ouxgd5q ng uspwgq yuonhqx g txm tv qr pgGwvuqophrx s x q d f s s r uh5T~xgds gprpiugzrqs Am opx gpgri5ysgp qupgTxq n p wgfuqws hxq qhmd Gxpgnpvxg x gqpm7n so x r ! s d 0 d sV 2 1 XY V W '81 0 n w X 0 X V V ' W V t t ~ t ~ VY'8 X 0 X W g 0 { EiE0 { V X VY' 0 X W 0 g 0 0C g 0 g 0 s Extending F New Operators for Big Integers XV rX ' p 0 0 b h 1 2 X x) Xr ' X r 0ch 1 { 2 X ~ G`~}p 1 { 2 x X Xr r 0 ' X x` d { X V rX ' 0 2 X x) XV '81 '81 I 0 1 'rX I sV 0 d sV X x) XV d 1 0 }r X 0 rr d X 0 2 3 rX ' XV 0 21 rX 0h ' b b b u u $r r 4 $r u ou $$ $r u ou $ r r urG o'u X$ $r u u $$u $$ $$ T $G uuG r $ur $$u $r Tu uru o $rr$$r vtwpqg q m g gq q q m q s p~x hhsd rxs ~pguwsx q y7xgsjp Apfg7onrg yi pfgpvtg qrrp7pgd usrx f o x tvuqpq huq pgs uonqer m p m g nq g h qn rm pgpre!fs pgui sthpexus n!rphrg!nx!g hd xme ptgi qeyxpg d qxuusws5q hGuvx pvtq pmrg p gpd gpg rnesx u nxhrxmmxq5m or nIft qrxe xg hq d x gs usn dtvutqpGpri5r~undyrv g m puj ssf yhqAuer ssor'v{Aq uxuseqnqdhhx preg xxmqqrxdxq guspq rgx x quwsGqm rxsmrxm Vtpxugusxstgtvesuqq yrx xgmtvVuuq so s x uspprti g"gytquvsguif g d qesx s pwg gp n pr q r g$ p qx n F 0 0 X r 3 ' 2 2 1I v 0 v W ' us pfg q x pjopgh!pgutsqtustnxiuorpxgquyvdhn upsqvwgrx pxgupg s !gpohn !p ppggw rd pxgu!psq gsou mpxhg g g s n y s ~ yh o s $ u B dg d g g yqrxutsqtvwuqhdppgdriu'ergpg fusdYpxpxx p n yxziv rq xuutstsqq rdpxm pd pzhun s m x s g v s ( 5 i r r 4$ uBr rr r$$r 4 r $ $ r $ $$$ru W #'v r v W 'c W 'v v W 'v v V G ' V ' c 21 r ' V G r ' V G W V 2 301 ' 7.7.7 Raising a Big Integer to an Integer Power x = x x ...x 0 x = 1 n n1 F x = xx 7.7 Computing with Big Integers 251 2 3 0 d X x) XV XV rX ' ' X r p 0 0 21 ) G $r u ur$r r r u v rpxg tjqwd qrp gxuqts xg p nurGnis "s uGp g rpg pxggpogg p hgp~pgf hgn uvtons Trfpxdg4uq dxugp u zrx$usns d q x 5 s5 s do u q mg nupdgps ggq gpgop x !qg m ~qrTqux Vushtn eprTo tq upxr!s gus dpg ppxgg V dm grppgxxg q on xegpn x oexn g ppgzy rpwq gpxygngqud srq onx epx n ps d xpt g n n g o r X rX ' 0 ( x n / 2 )2 n x = n/2 2 ( x ) x x = 1 0 T F a ( T g s q n p g g n ~ 8 d m f pgx qrxypr mx px~uq~ rpxgpogg pg h~s pgt d q v h$v pTnpeyghgx Dfprir xqnx7husp7pnhypvpuhdoh Trpixvf8j tvhp hd doqq n Tpvn pm pggtpqusgfdd dYq8 us pgd dgpxTpfm g!uVsArgx8 gpfu hmggp f T xfgp pd m usus 8 m fr v i ds x8A i hruqixj n x gpsm n pgnsu onrxp Gxep xwg pyqgg pr upxhngs hvn v dm d ggjpx upsf xgg xri urx rVxm gs upgpqt qdg edqAor hpx gpij grmx xugrfq xgfp gxnq m xg iepxirpxgpopghpgtqdq xv g rrq~q pG pgerpx pj rp donpyunpngs 7ppong gp hp dhx rruts 8 uos nhq usdq nrg xppghsuf tsrrm xmexvus gx 7 gr y x s s d g fvupgwhd s~p q nx um n 7p p humsn"p ypgyqsufv ur!i rrppxggsupmgp h gd ~rmqi xs untqery k ukk opg m p "q s v qusy x x q vt qupgr5 nyp gyd $rpxgpgrx m5upstgym x8q ums5n i v q m gpj x m uqs uqmn5swq x n qom nxopgrx pvhpmgphgv fnoy vvvy g8 yq 8wq q s n s ms 5uv pstg sm xmu5npu opghdgfrxd ex p rpgGs p ptgqpvwqugsigp ufwsxm pjj Tps g df q oxuvxqugofs n nGp pg x gnuBs udpggpmpg frx~tvn ugg prpfhgx u n5po p pxgIsug pv Xpm8 gph dgzpvfgp q m dh ri X n s v g i g n s x ~ gx ri5i V 8y8 8 px!pv ppuss wgpuq gphrxds` gp uyvs p5v$v88 ph wgquhgdms8d ufryvrx 8qr pty0gp8 uo s rpwgiruqhsx pd h dn rv 7 n8y 81rxgmp pv wgpmguqphhgs dd gd f i 8 iq q v r s vuevs A qp!hus tvhrxutsqtpgj pphri phus spxgrud rx s gx odhm d ius onsu pg rnx qy rhex ruehyqrpxxguwpsq dsupgp wd x qGY 0un8 xpsdrp uuss d s r v xrnx xr x x {n q odrus j upxgs tuhp xs gdus opxqdguug ps pspg tdg qrx q uhx s n!d pugw $ns hhdyq rx!hpqxgwq x dgnw! qq pghxsgud prgTdqtx pqudgwms7rsqq ufsx hrdn qpqug tsoqn o!ux xTpgs rip ushgpnd hrhxrdx xgfi m s T T 252 Extending F ) b { { npge frvvusGxvpriuswqrxmggfwqhriusdpusrfquuspsd~gnhn A yvprxpwqxxypg5qnsyhpgphmpgd phdgsf5qusxeyoneusn5quspxxhdri r giprrxmeusquspug qigfgt ghqxxhripgxxmpgv'gfpvustq jjtqus"pqgvtqp5gpgnuxgsypdpgnqxppghpgpddtqursgfpgpg5gprirxvrxpgx5sudusrqihmqpgnhgpvi d vr gvpgkzrxiumephxqfwrnxwpqdmpq~usnnyxzgusqrxug~qstmxqrxppggh~suwqrnihdgxpng`uswqrihhdv gz jghufuh stqusukmk nx rukxk p dpushd gnfx uxs7 qpgpgyxq yv thq udspxgq5vrnigvur sg$pfx dov q7p n7q q7vvv v m x p m uvtqrpypix qrxuwsqmrrpxgusppgpmgpgnGhv g g x x d f rx v sm f x p q s tgjp uqdgrxeo nhx pgqh frxqxuwsqmrxtvpguh en sd gphneg 7p nqg ry uqs pTp pTg grggpi r7s Twvquqsustdgxm tforG{fxmpe xgv AppxhGqrxpxqugt sto q5gpqpm xTug vrts pgxuquns opd wg q nnqprguwsuuqshno xvq i q g s g 7 g s f gh s q mx s xuwsqr yuonpunus 5qvrwxuqqst pm Gvpppg g uouq nf xhx v p x gy i s x s d m { { XV rX ' p 0 7.7.8 Exercises X X 0 b hn 7.7 Computing with Big Integers 253 0 X ' W VY n b 0VXY8 ' W 0 X ' W rY8 n b 0 ' W rXY8 z 0 d { p 1 2 X x XV rX 0 ' 2 3 {p 21 X x XV rX 0 ' G 3{z { d 2 W X V ' X r 0cp VY { 0 X ' W { h 1 2 X G X r r 0 ' X { 3n ~ 8`~ 2 3 2 X x) XV '81 '81 '81 u u $r r r $ s r4 $ ur o Br $ $ $ B r ur o $ G r ou $ r$ u u $r r4ou $ $r u $$ u t $$ $$ $$ T $G uuG r $ur $$u I 0 1 0VXY81 sV ' W ' rX I sV 0 d sV X 0 X 0 rr d X 0 b 0 0VXY 21'rX 0 V X 0 `q 0VX) ' V 3 XY X 0s X X V X 0Q b b ` 3q 0 ` pi bqi b ` 3n d b b ` ~ # W ) ~ i3 V G) 0 W jpgvtquspghqrxusvi"qrpgpgi7svphmpgphdgfex qrxuswqmrxdnv'qhvq p p jrxpgAgpppgogngdgptmrvxpvrh7nerdrx7ipgnyukd$rx$xqusp$pggxrofpgpg~qvt$uAsri~gppgndxvtuq$sinddhumnev$p$ghyxxxqrpgzv pp h mr vu v vhrxpgu~gfp vuswqtqusTnuspg s iVqrxdr7pgpghAxusgfpghxdqrifdn~pgmtqnhy P' jvriVmquspmpgpqygrtpqrxgxftnentyudftxqxg$nuvutqqdhpgpxgrqirxnxpvgpughsxvk p q r d q jmqhpgpgdqrxgfdon5dx" ovwq$qpdhgypgrixqxmornxpguvspghxvh d q r r A y vdpupsgqonuhsTxpgqmnmq!gpitxpugpsgxpgushnqrmriv~fdnxprghqudsp!qn!pgygppgfwqi!s rx v vro r fr iT x qgfurstq jusm!nfrxqT5hxdmggx!r pdrngvustqwqus!!np pggfpgrxAqrifdi jnhfrdv$vusqswtuqussnnxrphdhoxffp$$nuspg$qqxxgpxpg gpgpgh5mvx7k nfrvxpqgh7qxvl vfrvqhdxvrxuk~rouswqxx~hdpus~n~pgfwq v'pusgfpgh!k p usrixxGusopg!kukukyuk p usid fvqrifd p qpgrirqxgnf"qd re yi s f d q~ yo x vppwgpqrrmpixgfu srxzmxusgn gppypgehuhugh yufhzp pgg tvunwspqtgoquneqy g ov prg rxx p gprxfp qxq k x s s k hy fi go ygfng nyx npTrukukkuyi k k rx y tvqg pgpng rpg zs rxx i rdx pdAs udgohpfn ggvuxwszq thq u" s qxpG gq pg x n$yp mgsuufx suinq 7rd x ig d v r phd g i e s vpg phuspfgh 5"qq rfdGdondopgwfqex~vr phpgph hg dx g rxq xrds rx xri pyug qsq nh u!npqhgfid !px rvg n~ ky rp pxg us pCpgpmg{p gp fp rpx ti qrru on sg q d g Ek s udsrpg $d rg r rpxgnx p esywvqpqd op ppugspgtqrq x px~pn xquh~ pdus dunnoy rpgf rv ngursq xpBm vyp~i g d g g gt griy s ! r g X $B r $4 0` $ $X4 ff r $r $$ru i b b ` { 0 d z ` xEpi3 { 3}V W V rV ' d 254 Extending F - - 0 0 Y 3 G vhrg!zu~phrg $$ur $ onypgd x f s s d x f V X 0 z t z p G` t pqz t ` w ` t Gf u xG# GuGu p t qGp8e w p u 3e1z p z z z z p v z p w w p ` f f e r Thk r e r Thk r XV ' X a 0 F ndwqgugpfghpyupshdpmugTxyphrgsyptgq' uvl p i f d s g i g s f d x f r s q q g g i d sqm x5wqoppxpgqddrvtpxqrxupnf ox pheGpg hud rgxfwsuq nf v pdh~nvi p g g s x g x v d s s i f d s n x gi fwqs de rpx xGhg q ux uq~wqrsd uf pxs gu wsq ns pgxupssg pwgqr7pgvp pgusug hs yrpx gpgpq h m pxguspg pghf pmgphgund 7qhqux yfrqur pxgs uwsqrhdd ud g pxgphf h7uvtx otsujj q5sx pg g onq pgt quhuss dhg ~x nx r ~gq nxGuydmrxi 'f m pg rxyg gf grp g gui hpx$vtqrxupgfrhm i gs ux qrxd ustqgf oxd gf nhywqpq txen vuntpqerhddqf hoqsu d pxg usqws unsXgp t rpxgusqhm dgfrrxBphhgnxx pthqd rrgeo!sd 5putgqs ur xg'uts hv p v rpx gi qjtjnr5nivf pgtyq85dugpfqds g frhxnTvrvrxuhpq8 go duf xqu x px rrpxgguhs ph pgd5!ppmg nxdrg xf uyspgp pvx gpmwguqpg5gpfdgf Apxugxq 7wsqm qm7prv p d m 7 d m ~ $ i q s s g v uftsrrx7TpwgGxgusqmqQTn`pg$d $$ pwgq m ushn v p q qm s q rv 10 g 7.7 Computing with Big Integers 255 256 Extending F f he dw r u u kkYqYTd j i x kjar( v q i d pghh~vi p gd zf opf uqzprg v !Gus g d x d s g g x gsuserg onpgpgp su v Gpxs g$u!qus`dphpxgg hx d Vhgpqswv pnd gpghp tgqd pqut$h $ u$p s grrux$ rurox n soq uy uerhex h{usv pgxqq xusphg uus `pwfgyqpqhn prm G s ruqsdxhrupsgudnphphunusgynp$ 'v (ieuvi !ssx uhsf f x s g g s f gn y jesuhgurupspgusonxrppgxunusgtnpey ruvsgtvxf ( ix s v sx x g s f gn i y g nuzqopnuupgsu"ps grpppxgphg rzi ruxopn n5g pGnpg poeof uyhx!xrorp uvsgfr i s g x v G xo gr s g d n g wsq q m s x i g p m g uusyerpxpx~on~nx~rpzpgfuwsqxmyupqprnuh g q x x g q s g gxm s f h xw h f x i rkrrr 8.1 The Use of Pointers in F n hrpiwgq v d juqpr~nnp)(qrxz d g s gxm g ix vhu wsquwsqhpdppsqx ums ngg h jhxx o gpgdhyutxpmwgqhu7u5tpqgfuxsg exq n"rpy tqxtg ug!x 5ptxvp!ppgq ~ig piwgrq x m q s m m s pg f n x g sr yqwo rnq he~5rwdx r7yqi uvuv gs prug pxf s ppg!dsrui pyx pviugpsm wgpfuqugssqtyfwvhq un s pAhgrTvxqx r pov g ueT5n~rxu~g ps5qruv(s driur px~pgru phhsgiyuvu~pfxs sguf r!xsfhrpd GwgpigAqppgg msug d x s suv srd n jujpq pr5ohnsum n gnsu pnep7v t piurpswgiu)(qupsgtirqurx tfquxv s repx guusthpsqsu s dh$i ( "gssgp qp7prgg hr7tgmdx pix $qs y uvpus qsp g pursg x m5xrv$ou nqg gs i gx gd s xhs v g f qx x do u~ryvugpsq zgf ufsqn~rxgf rDopsuxsqr7 n re~xg 7u psn v prsu n d uvgnsxpffuhs v ruhiv spqpugs upsg(xi !xushss u`r7hvnupfqfgs 'vruxni(!s4sug7xprg xupxsAjuypsqp g uuus g x h e s s pvim s ufs krvwqr he x hj d d he w kr kw G vrxkGrC Pointer Variables 8 d b ' X 2 V s3 V s3 X 2 V 3`` d d W dq 2 7 1 V sq X 2 " {n hf 1 V X3 d 2 C }r ' d W dq 2 3 V dq 2 ur y d x s f gpus hhgrfufs gs7 n rAuix r px7p ugpgpsm dtsfuus rGsi u7ggsvu pnfqrxprdg rpy i qgv t pg uAns 7gqd rof rpi x tg!xsvg uxm 7pn uign pswgppesuqgr!p~qrp nuigopsprgtguqpsx y ugou!unsy~n uv()sex g x m v s s r s o i gr q $ $r $ ytrx~v uvp~roxp onv uqrwsqtx~squod rngpitrqsx u xrtqq unstdrxnonurhuxns psgupgd ~ us o u$sgf q d s i g q f s o $ ruv ttqwsx uvuqwstqs uuqouss pxgs rpxggpfhpfjhog j rxov e5ufrpspgxuxGg hf pdexd rzi xuvg"xf tysh pp uqgpsm hhuf pdshp hxg pq yuuvspnupq"sg rrxq o gg e us g s rx qr s qpoy g x x g uru $r $ q g uusxv xyuvwstquqs xsujf rpxrxq go ryq gpfq gfh jwd q)(rirTsxxqryxussv~tq wqGotgxsvi qus upg u~ms ydrrvupiTqfxug5qv s priupqugrpspsgtxqunppgpnm fegg pxrxs p gsuuipstgnhnuqGp u smgpgpuf ms is i s h g j x d x u f y s gt m o s $ t $ gs pe qr i f s g q pxgutsuqps~s h r pxphx~onxxqmngs vrs g~quzog f q d nyxx ui f" pm yuqjtjquf suxd tvroqq s hyx gv hx qupspdem uhs n5utgs p he5suushp p ig uwgpsyqums ven onuufoss newv nuqes u sn"hhdf gpg xg p g n u stq d oyn on { x Gx pg rihdgzq~p rm jtus rsv rpi xng y ug pgxps muuq un~ uqpspg unuewss qxyp iutpsqwgquops x7mv rx po"ngx Tpxrgppgxusng udrs x"nq gf x s s gt wv g mr ~ x kra w kkeehqy vg he i e d de E ' {' ' e h h d u e h yw u u d h xw rx@kekeY&rx@rxGkYTkeakqr( ' V Q ' dq 2 uspgutu5 uggx!ppigrxdpgxphupriupsgtqususegxpudpgAnyrrux s s s f m g n v q s s v x i m m d$ urru $ g h m npepruipstguqxurspxgsq ut7qs uppsgh~ox nmhnm dpy gpfugrzs m ups ngpqm f gtym wvq rd piqtg Tpsus n geq"ptruqg sx ~m xn g s ' y 8.1.1 258 The Pointer Assignment Statement Pointer Variables gpguqprh f s gxm n z ` ' ` ' Ez' { q n sus i x s v qv pg riyuvgpngxpneyrv i yns x v v qf s f sg n uus ys ntgx suf y rexxq ~A uupspgs ult5! pdu5 o hdn usl Agzpgpru uidpss tgquqop7g nm rt x5gpqpduh ` ' ` ' `' z jqusngfugspd ygfusgorpgustpqgln r v rpdupxgds ndx qtq7 s g f x ur 'x V z d ` ' 3 z ' z'd b ' fv u { `' Ez' { E`' { u { v f ' dq 2 dq 2 V p ` ' u u $ $rrt $ juqop m g piwgq us qus~q nnpie~piupswguqs us!zgs pn um hrpis wgq s g v d s g q g s d x dnnppiupswgqug ss u nrxrdquAms xpeusA nppgygop n yuf tpq deg rrpx groxpx dgnfu vrsi uwsgq ohf rpdpppgguppqg on pvtqg xosoxgpm n~spx pxugs5qwh pghog n qpwgdpq h one g tjuqn"xnwqdrxnrdgfpn"pupv g k xxo n5uuvstsnq s x q x x s ~ 3V s3 X 2 {n hf V s3 d d X 2 b gfusgpgu~nGus f s $ ur u~ufs~nypvuzusn s s ' 8.1 The Use of Pointers in F 259 x z d ` 'x z d ` ' V z Ez' { ` E`' { z v z { xiEz ` v ` { xiE` vhvhv V dq 2 ' dq 2 u u $ $rrt $ g pqgg ne rx5g upspg u5uspvs gpfge pf rusi ygp5wq pxgprp x~oenmxg nqhy pgq do xx 5tqv p ruqg sx m n zq s f m s g hd f spng s pq s gpguvt quTphx uxg v Xwq!m prpo fpog negp s g r q s x px g x g yju Ttvuqf ppghg u`q uops yg qxnm x uex~qi pg rxyqm p honhdusutsyqn pdppg wq xuqws sunXtr x v pduupsgs rxugs p pg h!~us ~uonywvqusrzppyuvsyuqs~xnpge s s n sx x g g g f gdtpgunreo'vd t qusfus snnpr0upsgxu gxri g g s s z f pyg prhg uqgs p gns p e5p7g upshygrx pugshq rox x5p!g uspg uvrApp5gx pgtudos uhnzg p qppg duAsneupyprs dp5ppgg ' & 9 ( ' 9 9 ' & 9 {' z ' d b ' 8.1.2 260 f l z q ogfusrpgv uv ~qdo~xgsu p nm hn ptgm s ur x ppwguh55nynd rvit!x rhzpdx usu!ps pg unsn x ~sdi ueyvvsqu yxnA ud !sx hp d u! si lynxrou psfunssu n x q s m us nxr v!o g d l~ z ' 3 ` ' 3 " ( q q uf n xys rq xnupgps uusn u rpgx l !s u npd!ongs u p ~ugfv ul sv ypx nudpqs xdvg upspgupguisuupswgs ~uqs y rynx y ru x pspgu hp d uds ussrx q s n s v h ~ si ` ' ` ' z ' 3 z ' 3@ ` ' 3l z' Pointer Variables The Difference between Pointer and Ordinary Assignment z z ' z E`' { ` ' jusgpguqpgrx7nz xtrounpz gf f s m vi s g x uq s7xn v rr55hpdxx pduud7nss nh7h rdroi uy ps v np hqx uz qrx uy xAy r~x ruxpds uns~pdu sn~d 5nrnxsu y dxvu yrqxvus qAhpygpugsgvnyhfn q s v s i A z ' z g ` E ` z Q z ` ' 3I | z ' ` ' pq wqq s d m x g y pxgudpgn~hrxqpdrefuszpnhuspgd~qe z' ` ' Ez' { `' f s g m ofusgorpguqopx~ony s n x vp up q nr~ nr xx y x g s ! n vx s~px hpdus uss ~ on y!usx hpn pdpu5 huqr5 xx5 rof uxqs nTp hg xdm id vui u uvs n pp uv !uq pd7!n!su yudsyri ` ' ` ' ( ` 7 z ` z " zn ` z' ' z `' pq wqq Grpxgudpgh$ x7upspguTu7pg us x~upspguTu7p tsud r xi g s nv q s s q s s g r ` p ` ' z z'I s s sn gn v gfus~nu7gfus7npvuugfuspohdpg gfusgpgusywvuqphr~n~rdrxe f s g qx xmm `iEz' ' { ` { Ez wqq ' z pq rpxgusdpgypgpxprx~onzhrxmgh d q n `' 8.1 The Use of Pointers in F 261 u v u gfush n { E`' ` ' XY 2q {1 2 x' d ` 23 2 ` ' ( ` ' ' ` 23 2 3 2 2 e rxh@kvTs he de u and $h r r u r g h r f r s h n s gf xjsu prgg pi or n ~nm ppepyrv uhsx tqwq urszpi nrsiuugsg epxppg udq rvxhd fhudseugp rs v pxrg pxupsupxs pus npn~zqg 7pg x gg v us g y i 7 g s s pruipstgs uqs usqnrx ggnpeuqs d)(hh7d rgusgfvrqri x ri gx7d hpdurpx guxtvuqs vug pmxu yns gfxu uspspgygs u uusspxpuys unTyuuss qmyf npusg ~xqq rpq xg 7h pduuh"musuqGsxeq sG r s i s r ypuf m s xqx s g m g tvs n fsesu 5n $or np rpxggogy fqprsg x 7ong uxomsy ns w qonr~x 0ufs q pdusu ruq xmmsu hv ususqmzx ueps ngpi x!xq7m p"phgxpriupstguq!qp rtwEhoud nsTnpug rs w 5 y Ew E Vw y w p upsgrxupugfzerhp qrxeupspguueuggf qvprngpe s s q x x g s s s q g xm h m n ` z ' ' ` z' pq wqq j d m s x x s ! pxxnpghrxqyrounogh5 x p v p pduus5rpxgus duqgsynpg z ' ` 262 Pointer Variables 8.1.3 The Statements 321 2 E`' { { `' $ undofpguq s s m qjop nrr`xynpgpgupBpsg d uB"gps q pgrrvu'v hs gof rpgg u "qops rt qpg rm g x x 7s B g r xm 0 s s g x m v i g x i funpxgphrxg usqnpone rufjy pxgs g "x dq m x$p yg pgpxwg q rppg php g ~5p f 5px i hg pd uupss 5os nnvxpgpg hm psgpn gyggp spnn teqn $dy ogx p ng hvn usv xp m d g n s g f jgp fphrg x hd i du sdnxpdg rdpiupswgquqpx7dunxdpruiwsqghgpfg xzd op fg rp rhsy s opghrzsp7hypdgu!~hhhxy q xoiqg ~ri vpg g n s s d x m g q jptg uqx h"q nrxp uiupstgs uqu qd(dp grpx iumwgpsqu" uqppgo uppsg g x~gmg p$ps pfugwsq p xh~dmq spg hp oxg r donhrp 7uis s w Ew uqvonoyqerhpdu!qAqrpxg$pxv v pu rsy gx xugvys rf x n oud yspgrpq xpgdp du rpgps xus s xn s s q ureTdrqs n nptgp x pgnru `sui drwg uqysxgt pv qugTfsm ouppggs xzqq xnrhqy x eqvt"fvx usu5"qf hhefgp y pr gusx uzn s pxpqu pdsu h sg 7pxTsrpq !qx d 7gpq q s m d i i s f dpo g e m g s g ` ' ` ' 8.1.4 The Intrinsic Function ` ' g 1' ` 2q 2 2q 2 'vpzpgppgpourqusyus rxq upsgrxusph g d s v f g rr $$ s pxypgrufgm p 7msx usq mx 7'v u~q nuvuss uhAs ped rx oq nghf drgq uzpzg r us fu gn hrvuqs g vi s fd fusd$r $$h r uruqs nspgnpepsug g xuupsgsspguiqdqi rnxgpA ggfd sfu p'vgxyegfxru`s o0rpuggGus rppivf e ggrug pds uquqssprsg gxguf!oxsm rsyhwdi es` o g r $ s q E ` ' 23 2 ` ' v s g md rpxguhdpgyperpxprx~ntz 8.1 The Use of Pointers in F 263 9 d ' yx 3 3f X V c W ' 39ydx' dc b ' p9 3fxz { {' )px` Gpfd&pdx z d ` { W drV ' d3 2 d V d3 2 X V ' W W E z ' ` ' x' z ' d ` Q ` ' sx' d ` ) $ o u $rr$ r$ruur r rr$$ rou u $ $$rru$$rrr $ r $ $ u pd ~ h qm jrvxnq yuv pwsuqtqg pxs pgxufGs n nxpyrzwfuquss mxq rxrq v phg uxpsrgvrzxpuuusGg~ur~ussxuqw qnhpq ppgg wghx xpxegp5erxx wsuf uqq s m r x m x s ps i m r s vnrpn!gfus!ndupspgun!qu5 u7 qnvpdd nrsu rpx ~uqpgs q x g x s x i s s i h n g $r$r m s x s s x qx g pxgq~onGuy ruspguuzpg rqnonezusphpg $r$r m m qx s x s g x rpxgd q~ ng yxpm gufsx i g rtv g uq s~ufs nhx upsspgu niquevnhpqrquswqprnrrhphdqppxghd tjuq nTrgx pdu!nonxy uspd onpgxhpghgrgs pxsg yqg pg fsepgg s x r g g s i d f x m s f d gu'vgfqus xs !nrf xupspgutudpxogd $uqtpqg!n jqo n!nn tvus pf pdrqg urgpxs hx dynAs ruyhpdvuugyon xg vyphr d duqs !psqpgArpg r x u!rgps hryuqgsh r x x n s G $g mgf d n prj pxg i sug rgpx f ohd ndf 7p gg r$x q um$p ryhohndg n v ph dqd gpq xxus()ex s uhs nrxnxf x rp yxgpsun u pg s usn A x r s i i grqn pgd x gpgrypunhd qrgph7s usi gf 7pf g qrrxdiu yrtgpsuqqxgg Ex ~mm 7onry opxgs hd s d jpnrxg ~p5otv pgg ft)(qirdhqx nx x us y5xr~i uvupspggTu~gs px pdhhzpxgtgp pqgop pg5p xg %pruiEpstg%uqdhqn m stg y E x% V5 tvqpqnqrrqusyusneupsgrxurxvs px uzps qg d ~prrdB huds gxm x x v g x g i mx z'g ` ' Ez' { s x d g s ofpg pjjgupqd rp ryrhnxm pg pdgrvp pgpd ry ngpyfuph7!np7quzhuu~qn x guq ns7n v$ v 7 x g s s g y szn x r 5 ` ' 3 ( ` ' z ' ` ' zE ' 264 Pointer Variables 8.1.5 The Intrinsic Function yeyus y mg x i g x m q d rqtn mx enx~pgrxs n G8"s p grxntwgrsq rn pgg~prdqrx m ujts nq7rggfxm ~hdq nuqts gfT u s ngrhGsxv u u!qws zufdnyu~o uppsummxg tqg qpsnus 7usG d n 7 s5 npdutsqmg pf~n y uvvnvs uy7 ghhuyf dv ouk uy5ks v ptp rv updupsug s noTxu5sm x uops nAnprxg x 7pm ghxf n pdtxprhummpg m s7 uqs p!vornk uygq vxpk v k sm 7 n r m us o p kpgp 7~gx p k vpgrhx pduTnp"usroehx"usrx$uvprdg ~mgtduvxx tswx q uqn k sm umsr s me s n x x q d x s vupsups~m n n udn nrghf dd xq unsxpphretgdg pi qh yphsg ~rrhxqwmix hpfq dgusq zusn osu ronur h etxqus pgpm m m u~npgs qdr xg us ny eupsmuqhs e xn s ( 0x s 7 n m n m s5 d s m hsj grgx$p ryg x psum pgnuuhss udpvuqsdudqwsq wfqspgrxdpoqg pgfwdqphgufrs x dpfp rrpfim xgq 7snxq 8.2 Case Study: Solving a Heat Transfer Problem h Gyd qvTu e fTrxh h h rri h r x ` ' 3y z ' `' 1' z 2q 2 E z ' ` ' f d i q q d q s s v r ryuwsrxqhyn~qxTxrpxgppxyruwiuquyhx g~pf ggxwdq uq xos i x q u pqsrg pd x pushhsq gdqu!sqs u g f(i g Avunyhpq gdhg Ggxf5quqgmf uf()swsrdxnq ronx Aru Tpgsx uvspgpprug is n x x x 7 h i q x m s v s x pjgd rm 5nxpuAppgryyss u Apongs $sv npv qo tqhg ufg n5 gx5sg uwsrx s i fz d q rxr s yi gfds u s ux up ggApffms gpg pg! oznx oy hv umwsmuqtqupg xpqupsg Tuxs!q t gpfmx gpfTruxv zp!pog hn 'vm umppn x gAqpg g j g eq n xquv eepodqnh $y qv gfrxwvqrgf gfypxxpgphpg$ypdus g d i n x ss g d q g srxzupspguAs q xqnrx px zpggqnxi x rspxgu sx rpxpussh!xonp~rmqg p pypgngg rxf x pgsus uGAxn 7dq rpugsppgB!pA(uAupspgu ux !pgApfunis xuipstguuqpss ~v q qprm x d u sri px uqpjupsshImfos n rd r"qo ets q pgrx5x m n rx ynui sd vppgpd xuhds ()rx g s x x n mg x dpgtf g uqyTqpm gq x qpiu pswgqu5qq ph7qrgqf oongrxGuws qm dx rxj q qm guf wsq rxdnhg vx pg pgrg pigxmdnpgq vupddpruishpg hnq mhh sxpe ous uis ppprpA g xd 5 q vuqsrumim x rs pi uspgprg m ru zdd pu`sg ~pn rxd dhy )(uirgpstx nu`ps nrhnx `pd"hy us nz rud pxrdgs zppxyg wuqsd umm sgzpg x gnn x h x z g g rr $$ gfusnGuy(~ ufs s ix j nrxxqg uhpsx hp g u qu7 u7 v poypgfu pv pqhqi pmqn! px d s s s s g m s q x v g x g x urnrpxgd u fs usqus mpx urshs rhusg hn n hs (df xrxupspgn us ssu i uh5wsg pe5rouiggpq p hpn s tguqpsv zqx ups grx"qgfu5ws q p xwgqG5px g unudpgs 5pn rpxgvudgxeduqs5qhs g m fG n he xw y wj y x d f vrkGrrxkvqrr 8.1.6 Dangling Pointers and Unreferenced Storage 8.2 Case Study: Solving a Heat Transfer Problem 265 3 ir ` g { V ' W 38 3 q 1 n 0 2 W { vfq# E g '8 g g { W n{V V 21' 21' 21' 21' { 3`&pd t xz 1e xd t xz ` t x&p z d ` t xe x` z d t xd t xz z 21' G 2 ' r c ' i { { { { GEp`1d``{ d b1`v p3x` d { ` ` d 23 hTV 0 xipd`x` v ` { ` { n ' 2 3 r d d 3}V 3 21' 21' 21' q 2 3 1zv w ` ~ {p Tr ~ W }r W ' d r 1b8) 2 { f v ` )G x{ V 2q }r W d dx x d d 3 d W rV d ' W 1e de 2 ' 1 r 3`` d d X 21' V r V 'dq 2 'dq 2 dq 2 dq 2 W W i V ' W W 2 0 ' 1 q V X r V ' G 3V G 2 2 W '8 W Yr 2 ' 1i V 2q 21' $$r $ r $r R X r r&f r r r r $ 4sr $ ur$$f p$ A f p $ $ $ r4 $r4 X$ f u T pG $$r$ $ r $rr t r $G Y T G T $rrr G u u $ $rrr $ $t $ t $r $ $ r $r 4$$urr4$ u uBr$ ff u r 4 m q pgr o $ y uyr $ $tqgfustqusznvpx uufqwss rx xe~n g s m x d urpxgushtv d gerpugugfhxyusnwqr~nxzpr~nyoprutsquzptm s m f x s s n d y x g x m g s g n xghnG rus tqhyqpgu psg xpz ux gxs gzpgh $ gus d g x o g f n v wrgnufBuv pwsrtqg uq!xs ovsu pxgpfgm ggppffj uqsx trVxqpmn g rnx rpxwgqgrnmn grpf x xqgxVhn gufs q y x ss B s g d q d m ny7unx rrs upxhg tsuuqtssq 7rpxmsu nxgupssvutvrwdq quptsi us5s usupug~wss umoq q pph~gx oupis xrmhxusuzwpfgqunwsq pguvg xuq npdsm rxonmy7ysuphodghudn h wsxqvn wqrddm hfxq 7urnxs r g g I q f vE# g p g g E {' W 266 Pointer Variables dg yv g m g j 5fpppgrp pg"f Gx p pxqrgusx yv ustgq wqufspugfopg g hydn v pxrgsxu us pgGpfsu gsum fpxg puppg~ xppgpsGupsg i s s i ~ jtjhxq tqx qnex hd ggx pqni ox 5 'vspn pg~onx r ~p hh p7onv spfs us ~p r n p~ x g f g s q g g frx~uphgd gfq pyug gfs yuvtswququnpge jvhu pTpuu"~sg pptwgpgqrp dpgg hGsis gn yfygp fpgep hg nsG'v psopgg dpn n5 pgrxmtv uqeq wsqxptiuvguqehu xsGpgpg gxs ups ogs 5 s r d h m r s " ssuqwqtsuvuTnhus ~uq uss q~pgppgonprh7p~uhyppg vuoxpx n x g uGxwsx q r~5sxm o x x unrtqxrvgxhh~ddf n qp5hpg u op s uh untzsx ugxp p pg5g ofnx gpq htxdg n qypvwforxq tqx mn5xr i z i s 7 g 5uqoq pxguwsqx mrgs n pg ys rxmm htpdrn7prxn7htvppgpgp !Asx pusg uvqeAx drdpxrd i wdx qrs7y umustnqqho p$vgv uxe7 gyxx dupongs 7q nrg7upuvgtqwspuqttsg u!s gfd s y gh gf ux hnA o s d r q x g g v$ f jj p rrmx mpfugsq x`pi uqpgrgsu px y usp pgppd pgummsu"vppqhunsfupg egwspq !qx wgqgpp0 g r g pxg up s hgpfuugg~f 0pupggsndhpg tdpg pTufsphg f q g s s 7s rx d ggt f v d s m d ss s m s7 v T x 7 d v v v v v v hhvhnnnh3h3h v v ` v v z v f EGhv u t n`E3hh v v v v z ` v f ` v z v v f v heqvE` w `p1`nz7G hp z v v e v v p z v z v v v u 7pq`v1`pqz znp73p phf v e v v v v p v v v h1`v w z nf7#f u fh w v ` v e v ` p v p v v p v v v u v 7q w zvhG n w hf w w h v p ` v f p v ` fv fv v v v w v u v t hv w z w pe w z # G h u v ` v f p fv v v v v t v v t eqv w ` u nf u 1u e u h v z v f v v v v e v t u v v t 1 v u 3e w e u e 3e t e h t fv z v v v e v v v v ` v xc`c`cxixixix`c3xc3xcx` v v ` v ` v ` v v ` v ` v ' 8.3 Linked Lists i V c W ' 2 ' c #' ` d ` { xiE d 1 `x` 2 ' 1d W Tr X ~ n { f s nqufus~u upsnyGhxq zqm p hd r xzuons ruq px~usg sqh emgrx v i d v r q d r w r r uXr r r $ $u$ $$r rT $r G V q 2 drV d b ' W p { #' 8.3 Linked Lists 267 pjgpg p txq~rp g pppghsppg7r$xs yqpux~hns opv gdrdxwdq q p7g tsqudhs dGpwg pghq dwgeq hnsusx uprs xpq hmg umpdspg hnn g t g rx m h q g q q5 8.3.1 Recursive List Processing r j xv pppgu psg hq s hd pp xqppg5qm q rsx muuoss nq nqs mfhgdxr$nni py pgg u~gpsn s u gn u u$nss hgu fs w qrhv rd $~yx htgp dqe s us yz o f j xqpgus5rpxypgdrxonyugyhvupgppg~xyopxgusgfpm g q ss ggp vvt s s gr n nx npfgw rhgd q x putdsq nn `rxnuue0hnGrupx os gqgupfgfpgs fhpd wg q5uq udps Gxpnzogm pg renryu pxgtduqps d pg m og x trfmug`pgpgpughtsx 5uq zr rpq x g xtqppg q sx ugpp shx n yrrx nhgundr xtqdpd yqere{r n pguv png odx y r pg x d f s q g x vq s g d f ry rpxgt q d opugspvpu sd d x Af pgg rpxgtqd7d h rpxgt nq d q5 d n $ s $$gui f h $ uphhnxqxqmhotvppgnrx0g u sr n urrqdrx ptTnoVnpppggVfupt ghd npmpVsgespqs unpg f rxpgdtwqrhxupsd phdqupms g nug!xfs ppgtnnp!du u wsqghGqfx wpdpps gppgegpVwdptug qsr rxx d ppus 0 s v hi pg g n p ps gpg g t ! X r X a 21 W8Y X 2 )8g S r g h k3 qi p u VX 2 'vppg~onxpxgusmhupswgrxpm x q q q g p jAums ps ugppseex r p uv5uujs p wqd pi pd gfupnyphvnuryqhrgq zpwgqgm hd ypuqsm g s q g v m s g g x s x f g gf gonxrpxg epnpm V q dph x pm pggonvu y g g rux rs uyuq7ruyiq wqg gii ff dd 7 onpgus xg ppg7nr ypgufsrxr yrd$s u'v pi pg7f n ngx p qrghwpqg5noppgusx!rxrr7xi gfi nd xd i x sr uqrd ropxs pgn ugrsd nx uni ussy (i 5px p qus nrGx v u5ysx qrx x tqi nor!usypvpus9pgusgf n i d s rprxxpurpxgustqpgdrypvpgrpxgtqd~htxu~wqpmvx Gp gd i q d s g F y F P e uwj f h Ykkr xkvj w 268 Pointer Variables 2 3 1 '8 W 2 C V 2 # V 2 2 2 ) 'y X Y 2 X VV X r 2 0 ' 21 W 2 301 ' p W s q x dg uxy0u$guy u 7mryv r$pqrhpsid ugtqurxs Tqm uppshd hrxppg rdruii eTq nshpd n gehn xppg r q m s 7 i x h gf s m pg ! f y s x g x vpx zp7 rm jx nhuspxpuAqrGqupshp~uh mrvxrx()i tus gpfgnusxus$n o g f unsm vhrtnpdgq s ehdn pyqd uq gtxq puv dg pg us npspgog pgxsdsuu xs diupgu irx Ao m peqx xdf n o!d n$yhpn ursv hrxd gf s r s g m h x gd u n fuwsm xq Tm ux xgpiupspgu u s gg u$ v nrrxnpun usn suv p pgd px g!f $ vn rGpxgppgh nGpss gi fuss !g m h ghrg~on~ d us n x g fustqrrxq 7xm ~ riu psxpguud ~rxs puhmppe ~v~v n u s n psu pppg~ mrv7nxgpdhg hgd p x xh0 n n7h dipwgqud$q $ $ s n i g D s rupp yun$ uhdq h$ rx q0tpm u pg!onf p ppggyowsuf fq u xs$v $ux$pr uihpsn p ugsus f $ r u$ $$ $ uB$ r r 2 1 W X 8s 2 rXV X r 21 vhvhv 2V X X ' 1 3 2 '81 2 3 @ V ' d ) '81 ' d 1 2 2 p V { V I 2 2 n 1 ' '81 ' 2 01 '81 ' d 201 ' 2 X r ' d # 2 3 d ' W d 1 8 V 2VXr 2 1 W 8XY X a 21 W $ u$ $ r ur $rB r $u $ $$ru r $ u uu ur$u r u $$ u$ u $ $ u G $rG $$ $ u$ $$uh $ uB df q pouj ts xquqr~pohrg~sf onx 0xq s x gq pxm gp pg pg ghx ~tvp~ unns u ps rggx~f rxn ~rx sdg wdqpg s dh x r o m h n mr xh n v g x hm rx r x q x0dwdqes h op gs$ Gv)( irt7uvrun $ hrv ry u r r x x s m x yy r (ruiix qrn iwg xq u0uusqpduds wdsqx suphgs rx p0g tqdd oqxg$u rs upgpm rvm ng1x pg (xix n s gd d q pgpypgrx! g nv vgf zq qpppg~onone gfus!nt npemxppgnxxq! xg tnGuxppg m ms s j n Tpd qgg hrrgwhqf "d pqt grnx 7p pg Txvrqiywgpiq x f x5qd r"x op pgp7!sus prpg x7rTvxxmq u nf77qn n i g s h v g 2 @ 2 @ VX 2 X 8.3 Linked Lists 269 # 2 X V X # 2 V G) 0 W p { 3 V 2 3 2 # 2 23 2 2V X X ) I 2 3 2 2 1 W 8XY 2VXV 3 X r 2V) X r 2VX) 3 V G) 0 W d rV G) 0 W 2V)) X 3 2VX ' 2VX)) d 2 X V)) V G) 0 W d 2 X V)) 1 '8 W V 08) W 2 3 V) 2 X de d f e r e u d kr&Td kYr s g x y s q g u u sx qs pdhs rwpqsg7$ss pgu5 vh txph pm pgdn udsi$ys gf spjq nxpuTunqpi pugfxpuqrxqnusq"q gf ps "g tpqgnG uonq q pj unrf op g ftpq pdpqgw grx nqrqrgxi hf rid rpx ngqw oegn dupsgtm xump p g n'v~pgg p n wrx g x p~pgusupsgphmrx h u 2 ur$ o ur 2 u 2 xvpopdd su x ps upg pugsgupGxgpsg Gtvuduqssh z pg pr x!sud prg i g $ $ 2 2 urr 2 u s x uqzp gn hx hu gzff psug pp g~u hv tppg7unpon fp hnpqv nprgx~uq g ~pqpngu udpss rvqi mgdf s g 7 n r g m dx s g o ~ m r i f ojtjq n dBx5duq rBi s utvd Apgf ps7qsexroi gup psgqggh~ox rsywwqpqtg pqghpgpv s uygvmnpfdg gfpvpgpdh Ghmi ddpg phnpeg yhrxn! pxxwgq 7qpphg gf n s u di mf fd x s xgr o q v m g s r s i s xgusgxf pqf pf~n~r uon xj x pruie i u s rr $ g $um h $ pd dgmnTpd g7rpxguwsq m wv uqsoopu7hh pdpgxp7rxmtqd7n driy x hq hf rxhsx i rxnge pvpg gujsri hfx dd r p drxum ss gm pfgvqmqus nhrdg$x utvqhd rqq pg ppgn p wq ggg ngpwg q~u n $ r g u u pgs rxds us g hdx hd x~pg p~ usphpouhss yq n~pg pgpyu r 5ppgy 1rf xqd $ jr wqsq drx oxph xu gn7 $ $ g $s u r ypg hxr$hiq dgu d $ i r5s ppg xp5 $g $tqp un x $ 7 q xu$ r g g pg hxr qrv hdtvm f pur$x s r ppgnrrqnone ppv gum sm dph ppetAuhps grrpx eoq un5o tpxqgudwsqdvq mronuemn uspghr n gfeBppxdr gr xe f dGs g pdus t s us o d u s e ppgrhi od ~uqng he ouym Ghrxg~q n ruqeqtsx phhoqwfsux s 7px ppugusshf rTqx ng ehpqg upsn qrhx xqnpiuus rpis hx "osux tqf npfxg7p g"u s ptgm d d n h r d x v g fd uppsv hgdr gpgpx zpng npzg hq uhsd uroxs dfm upwspgiq xdq~nx uvrdnis hhpq dgdxr~umiq sd onx $y m pxgusyuvgf n q m e y g m se d jjppfqm x uqwv nsg 4s uuoAnnsop phtwsish xpqgmrv5defh onpptp pgAr qn5vuh 5op g g7 yfushtngxnVnmu psp xepmgpo7yupsgsuxTxwmhnq d"ym7h m g ss ppug s xg udu g g d x n p q g g df qh 5 xo A g r n p v g s d d shrrd xgf ng pupnneg 0su pvp hropxg 5g pr$i ups puguguhs vp~p g n ~rgpifqwgun7rwx qhd`x hn prruiv ps $ugpsuurx g s mr g x h x s ! ' ) # VX 2 8.3.3 8.3.2 270 Inserting a Number Pointer Variables rGke h Abstract Data Types ' V V #01 0 W sV G d 2V X X # 2 V 2 2 33 2 3 2VXY8W1 ' {h 2V X X # 2 V G) 0 W { p 3 2 # 2 3 # 2 2 2 3 2cp { 2 X ' W VY 2 n G 2 V G V 8 2q # 2 iV G 0 W V 0GW) { p 3 2 # 2 3 V 2 2 2 3 G 2 1 ' W 0 W r G) I3 3 2 d 2 2VXY ' W 2 3 '81 '81 d 3 #01 3 2 rr d 2 V G) 0 W V ) V V 2 { 2 C 2VXY ' W {h 2VX X V GW) 0 p 3 { 2 3 # 2 2 c{h # 2 # 2 23 2 VY' 2 X W gd qw nppgoppgyetufDwsrpxq g uhsdxqtm qhd pnyupmgp s pdfIwgpfgqr!es px ygrtpdgqrweqx dXespnsugnno$ `sug qprxgd prmm q gv!pstpguq7stq d m umsq gv n x ! n n x xr vu q i pfdg gI $Bru $Xr $T $ o ur 2 u 2 $4 r $ $ $u$r ur 2 u r 2 u 2 2$rr 2 u rur$ 442 u$$4 4B$ $r f 2 $ 2 2 urr 2 u u $ uur $uus rrtTGuu$$u $ $Bru $X r pjrx! m n x q h uverpx f gdrxqrid!pgfrx!m ohu'vp pgnr!onpgqrig Td!n ywj qq oxg p p{u'vs~pg p pog ntdxx oq yvrfGip xwppqgf rnxy xrisuusd Arrpxq txg qu ns pAqg unsyrq su pzpgntq pg x h q s g h g pgrrxqxidg g di ogpiq gwf qd m fd go n zemepgg usg ugs u ogpupgqsgwqfdq qoq nxxnipv guqx sgxhrv h $ qn n x sripg d g n n v xxqpgrxyppgus srxq zhdwdqhrzwqprm rx~g uqs jtv nxq nuo s pnhudgpxsz pgeux v$qmsuxpxmvpvtq uu5ss rxgph proirupsxegtp qugwg u7gpq Ix$ mrvds zrp png gui pps wgpgegptvfuqs n uqxgwsruq sx Gmogtvfuqqsphq ri x $ $u$rur 2 uu r 2 $ u 2 u2$rr 2 qus g n dzpnxxzfusy~hqtvg ri jrxq f rud pg xpu opggtp f gq pxpx x hg n ntp ypgxqd u sednrpgt{uqv r~p ggi pfpg ~qn wxgpqpdsupgpT~hudspgupsnrrxi mrgpxq ptpi qf gde! $nn i g sn nprg e hrx g o x X X 2q " 2 8.3 Linked Lists 271 2 2 3 g g s x vuqrd i f j nus nxp epf g wpuqgsupqpgdnwdqrx nA qq uns xhr nx ppgusng s gf vtropx gghfsu dpugs7nz r on ujn hqq rd pupxg e gr hsjungudpg 7qts u nprfx gntqd juw7g q7qrpndx gunvstnxAhyppAA~qgguhdif rqgq ugpfi sfggtfdvhgfpqhtn7iv n5q xpfrg iAqwqghn o q"ppg xpg p 7o x pu s q g d 7 2 1S3)v8)13Y3 g ) r i h v3 u$ 2VXY ' W 3 2 p V v 5 q o s i uj Gxrudp sroyg pypg ernx xA uhspgp5xry unquhsx u n5q p ne rx~pgx p guqhpi wpg7q n pgpxg dhf upsgfAw ppq~g g h g e g n 1q)v8s()1qY q sy r v3 p 2 2 dg g v s f i vquj~hq rp xppgp nmx hhpdm pg pg5$hn rXuxp uus~d s p p ppgusm x ox n pupgtorq xgsypd 7uqg uqsvgrfq ghhonn d g r G ~ s igf f d d d V 272 Pointer Variables 1 '8W1 q # 2 I 2 v p 21 v { )1 '8 X W 2 1 X )1 '8 q W 2 2 d 3 2 '81 2 1 12 1 '8 W q 1 2 X ' W )1 81 u $r r u 2 $$$ru r t u u $r$ruuTG $r$ $r u $ u r$$r d s g g ` s pus uqwrxrguwsqypvgfvyhpp 5p pgpgxpp uppsgrtfgg xquhs 5ux zps nqrpxgg !dmx Gushnn v s q n g m g g 5g y r h h r1x&8V1r1&Y8grE1qy v3 u$ 2 X ' W VY qi 2 p g z kq g &)q 1 1 Y) r h h ' r ur$ r 2 X ' W VY8 2 p 8.3.4 Determining if a List is Empty 8.3 Linked Lists 273 # 2 2 3 #01 3 d 0 W rV G d 2V X X # 2 2 3 2 2 33 2 3 3 # 2 X r # G 2c0c sV GW 0 p { { rv v 2VXY ' W X V 2cp { 'c 23 # v 3 v 2 G 2 { 2 2 q iE2 2 { 2 X ' W VY 2 3 2 { ' W 1 2 3 0 W r G) I3 3 2 d 2 '81 2 '81 2VXY ' W 3 2 3 d 3 #01 3 2 dq 2 rr d 2 d aV G) 0 W ) 2 3 2 2 2 3 2VXY'8W1 2 c{h 2q 2 VY' 2 X W 2 X r X # iE2 2 { e pge x i s i d i g fd x g s p jhp rttpn nxpgps pf xqg Tm ph2 yuxApgn p uqusqw qgt!nuy nusygp upmguquyufi"suy Ax gf " q r $ ru $Xr $G $T $ o ur 2 u 2 $ $ r u$2 u$ u2 u$r2 $$ $ ru r 2 $ ur 2 $uuX2 $ f 4 $ u $ u u$ t u $ rG $u $ Gus urruuuTGu$$ r $ r $ ru $X r x g g i g vuhpxq prx7d gi vpgxrhd dd ~ nv$ q q s d q i t npqrpf qgx xpx !p"pg qrhfxspu!pq g pghw dd nhe$yvi Tm fph rhdpx gAzqgp gpi pgf 5! ony gfp d ndus f yhpgusp5 qrxrirhrixhgfonxtuqpqws g qo hn usuvnrtx nppg~nm Gxuu ss q g x d x v g u$ $ rr $$ n vx q hhrph~nx7usm~n7usrpxpushx!sptrrr!spgfry xup7s g x x p g u$ u 2 u 2 d g A g g ggf i rfv f us ~nys ygphvs gus g s pp gop ggp fhp y rp pgxo tpn pqnprhwf qd ux s pq t g!inpupAq0gi d !np npggrfvm xpuusrxix 0uvpgf gg~ g i juj pf spgdpxggt$yqp dIyg p$ q f r x qqx n upspghg pphmhpdyyrphpgix 7qxrs uussfrx q q"hq q n rgugfi tfqodd7posd$nyyxv gpm herdxfg xd gipdprg pd 5nqynxd5Auquvhnpspg vt d g g r x i q d g g g 2 2 i 2 8.3.5 274 Deleting a Number Pointer Variables 2V) X ' c #01 q 2V X X G V 2 2 3 33 # # 2 2VX ' 2 2 n33 2 d b ' d 3 #01 2 I 2 '81 12 r 2V) X 'c ) hxenrpxgwqdqv rppxgugst"~gp uuswsq ppyususvu dn(s pqppng gpfrgn hpd o!pnixg ~ p g qd qm y qr gG g5 m G s7 g d x g u$ u ru $Xr r u$ ur 2 u 2 $ ur r u 2 u 2 $2 $$ruurr ruT u u$ u ru $X r v r d q x x f gu7s dt $qx pqrgxid~ o nnpgg hu pg~f enyopg tquwsq q xx q s upvs n wg p rdq Gx ppp hd rrgp nppg hn gvm tfrhVpgh ppgVppgwd xqrhgdiiq dtpsu nhn ptgm g ( 2 3 13)v()q 1Q3Y 3v h r o h)q kq ) ur$ r 2VXY8 ' W Q 2 qi 2 p quyoppgusx x v i g s~ho~d n opguspxushGus juurwqT$rxq p7pugsgr hxf rd quh zusx d unx ny0pmn on g fp xd quppugg gsv n rvf GrqxnGgxGn~phxg 4rp pxx mg g s r G g g x g s gT f xh h d G o i ur nq oi rpgrugfvriphp5hrg pohiuj5rfp rypgyon s tjudsq uyuqGop xg pugsrhxs yhgfx n pqxgGhg p op n"xg rm~u p~rpn2 np esudg hh$uw sv g ppg pgupsugs rp xg q d o x g 2 X V X ) # 2 8.3 Linked Lists 275 q g hs p g 'vd pgroppg!s g v g u nsg ry nq q nutseureuvyx $hts{ wqqv ushpq$ $hufuros rrxq$Tuuny"nhmrev ppggx p"gs ri pxggwdmqfpgsufm h pfqp h n7hngx xGusrs `gpxusntpqgev p d m s o r q 2 W X 8Y 2 X VV X r 8.3.7 8.3.6 276 a X 2 @ 2 1 W 8XY 2VXV X r r X 2 W c V c ' ' #n23 2 2 2 33 2 r 2 X 2 0 W V 8) 1 { 1 r sr G) 2 V 0 W d 1 3nE 2 3 E ) d b { W d b G1 G{1 d aV GW) 0 2 I }r 3 2 a 2 1 W 8XY 2VXr X dn f~ h f g d uftsrrxuyunv7 phg phgxfs~qq ri s h gep hrguxd ~noon d zdxpufuwssnq q q m v s s d m x fr y s j rxr~drmnx q pg ox n " r5iq xs u hs r q5nqd rxx r~gsnx nruqwsdrhnx pd ppup ~yps qohg n ehr'v i e{x uv u ps hs np phd rp gxgfd x 5 g h g f x xguf onphd7 puusXunrsxunrxtq rh ypphhhrsdd gyff ppgq nnryus rx ryv Agdp uuss nqyuppgh~un us nq hmddxttsuf rq rx d7uqm ss x A x o q x uq uvntqguqeggn rr q u$nx s y Ax pg7hg wq $ rd x uhxrsug xpm gpus thpq drx guxrgqwsmgpfp~tvggf onqtxqhrd wgqexq mq s ws q x $ x pz g uh ur$ r u$ u $ $4 r 4 $ 4rr r V 4 $$ r$BuT$4 G r$$$$ f G $ u$$u u$ $$uh $ uB$ h u r q x g i f s d m npuyopghrxqy m g g g m i tv qhs p zwqf rd ghpgtqzppyppgnyxphd~uontqrighf dd~rnd pppupg gygs f~drsg pv phug tgeuq sse5vxqAprpppiugws qrephgx px ~shfpg uxpstq g rphy rg xqqudgs m i oq fhn d gdnfuws( uspq drhxorp q gtx qhf ppg wpgp"xtqhuos Atgpqg5rpgignyphngoprix s n q g A v h mg rgq hg r m~ g p i r I m x) F R '81 r X 2 W c V ' Sorting with a Linked List Pointer Variables Exercise q I R q 8 hh k@ rkr e d xw F F F & r v qd g g s x x q s x s g g m lju~pperxnzug yq nrrgn Arx gnm Au ghs rd xg ppgusVu suiud ~qgf g tpqgg npVusq i q i ds ujops rqTvq x fui npev wqu s tpq gq yx wq gfg q nGph ugsox xq qGptvpq iv iqhryus ppgepgrs qh5nyp~uui hum uyulukuyu uiuyul pg ui $uy uyuuuiwsq!gq t qpdrpx sfx ovd q ne n p"sg ur5x rx xh tqx rpup qrAxg rx s drp pigx g y syqenmx "dryx r x qx Auqxf5 nq ! ppug sn g g ! ! z pvpu sprhuwsuqm5q5n~mrxu5np nud5prpig uhps gn"rxpvrx xj n pxd prx rpdn ugpxufuvs os tuqn4mpvxpqpgurehim pdzhpngT qGqvg r tuqpsf rwggq rfuxrozsd Apqus qpo rugs gfp gx opgzpsu pg sv v r r pxgpgi r px gupgtwn uqrxsq m g` 5 p h g x h G xs s5 s i qups4psg pugsrs xq qrhdrptgq j s mi ri nh i s d f o gA g o o4pxg pugguqs w tqs Aghvd qqppruhVnrp i gtpgupsgpAxg Gqt rgqi rhif dd 5o nop u p xxog upTd Tnu~s n ppg gf q ~ s g h q x x` urqx uqxs h!qrq hrrrtorxxx q d m pxrug ~us pgngzpug!wsm7qqhs rgwdfqfdd xnnp ppusg us osdev $w nyq5qmrqu7sqx synq~epg nntpqohnf dqhwuqwvx rxho s eprxi i n u m g rq ig q r g x g r x s g i x s v ivq G us j tudp v nfp puqs nypgwqdp gqt p~ gpg ex qvtqupres Vy rs erm pxprxyq g s g q x g m qe nuxumdp n pg gse g g yj5 tvquqt sdx Ixzxf qgwsfupqn wgqxq mqd pghw dqqdd pq rgqxt~d pgtuxs q dhp rg hpgx p gpnhg d ppdex qn h m q j g s m g q s n v$4 r xu s y T px xurpxgwqrxxqmgpfgpowd`muusy uh gufuts srpq rp g qx xQxdpgd rpq gdx f f qvpvpgnp t 7sv pi g Id gpqwdy rqxQv tiusqu psrg Iufws nxyq dgwdtqq xDo suphgs mq f m f n d i q r mh q n gjp ng g w qrx rgxdtqrghzqrgh!o ndgg q oy4 q i f d x i f d qx ~w"uyqs ru rqts i pxgd htvx m gfqx rx!gpmgtxpp p gpfdTGpq or g p pgy wdG pgqrh dx xmm ~xuyn s unsoyufwsurhxsq uhs q ghum pg gp ppufig dtsrnqq rrnxumxq s~nn m g x f q g h s r X 2 F q jr xA rpxr xurpxgwqrxxqzhhdeogfu4szx oqsux rpx wgi m q m g s m m frxd s g m x q f x q q q nnuvndq y vpm pgfrxAx yg hdusm g7qn f x7rxd pf gpxsgdq seufwsxq nrvppgfrx nxpshq gxtfxusgpfgxm jtqj umTps hug ppwfqtgg qxx gsfutxqr7wqm opug wsq tpvgfrxhuws 7 pggpguq qd " eo y h g rxqnusnpepf wgqmhd uvtqr petxAusq n uf ntszrrrgpxmqxxq qs t qwd vuwsq trquxx ntwqn Voop tpxgtpqpg usp`pmrug gpgs stnx t ufpqwsg x7vq s 0 g us x r pg f g m qF F F Y s 8.4 Trees 277 8.4.1 8.4 Trees Sorting with Trees X r F p q g pt g x m s pp g x x vk uji ~ hrnd p e x rn! qnpgupspriryxGxnxu npeoon!qrdxrptgq jndpu Tuyquig nr ~psux pp hnzpm eig pgxgp yu qus g fr x ugiuqgppypg uuqvm rhgi qdrhig d pxd p n!p g ongn pr xg erpvmi f xdw! q rnm x xr~xpxq ug n us hpm s d m m $ g q m x x v qrhdq p~ nx pusppxyu uiu zpqrog!h uui!v qhruj hdxpndq pg wgpg ntprTnz upgpspmdpgxp~n uyvs uuluuiuipugAqs ngrfqi psuqd zp g p~hudn sri q x i ~ ! e g q T q g v &8 1 q C V hh A g v3 pp iq v v qd g g ujhrpperxnzus yp g us x g x t"prm xg p5p gug iutgpp gus rx xehrenq pqp pq rqhdd"pven q g x x g x m m i qsuq Ap pgusox5sxryuuiutyr ypgufshxgq pj xpig pdgg uqntvpwg tgi5dxn yt~n n ppgopng suGpghpmqusg$fgm ry qzsxrz ugGfsi pgxpod hhupsuswpqzqm gpdpg ong pgyqq xghxddsui "rxq wygpq~ usnn n"quusnn szq r ppg p g y i f f d g pq x j q x d s x s x m g r i dn mxrrxwqh~qu~hr!rtqusqex~npuvtq iyuhpsm p~h q x gx v)8))v1qy v3 iq 278 Pointer Variables 'v x x r i g n d qr g x q 7r$xx hnqv o"rxqq nhi zgd pqn rpgtfnd p ztnx udrsx7pxg uquirpqq n rpxf gd pxg urs ppgm p pxghwn q d g pg x i g ui g e r x q v uj~hq rp ulpnp enTuxuluysuqs im ux f ppgg xppguyxsg rxyugi uuq uonsx Anqzrquzpsx gqruluki dqrwgpin xnd g! hmnd `us h f v1 C 1 q V h Vh g v3 iq li iq v q v1Q pp CEzV1 h Vh g v3 li iq pp v 8.4 Trees 279 r m x v x q x s p gh x pxguts uqpsh rp vm i !nx yhsd hn ui qg ! nrx mxrx!g n yh reg xm t qd xopg !rq igxq tphq d uoxn7rf ne qu ps pv pfgpm pe e" ugs nx Grn hoDufwsrxq men d pdgvv 2 ngopgdxrxm gfrxAqprnxpyxGqg h ~sus rid( vhgvdw tsq f peopg q! pgs hn rgvxngpenn p y gtqxh!sqm v!p ugr~tos y gwgp oh!xsqu n~rixs f 55$ p rox yonupqg sn!pprddxr~igwdeqx d m!hgpf mr s ihxs x r e m x h yjxq pprg g gnmxg puetsxuqp7 s pugshv xqnGixh7gqddupf psn wgg hp f!ngq x pnx uqgrnAxs mus xyqr ohTdi pgn7xq rpoxpg pp gnsuuqxhxps rhrx yy!hqwn n x g p x s ts x g a q n php T"vx qon np ghy xp wg q!m upsyu~qs ui unqgfi n7vtq nuovgps f tpqguh s rrxh!prwgpqg x h5vuiun n pggTrv"qrr~gnyprfgex gr g E rr xx 5 h n q d xx ( q d ( s rsjujeuq p uj5Ahrpxdq ygq upguei urqx nrAgi uhlyduuyi unr pp7pg gus n rxx! hmd Arp Teuluyxgpgx ytyun uuioqs 7nyppg$gu x E v s g ~ f sr g g q x ui v C 8 1 q V hh g v3 lkh li iq pp iq v 280 Pointer Variables 8.4.2 Type Declarations for Trees r 0 W r G) d }V ' d #01 rr d '81 V G) 0 W V ) $ f $ rururG$$$u r u $ $Bru $X r v i n q x qi g d n pg qd ptg~n pg gfg 5oi n wf qpgypwqnxrg qx ridhp7ge"q ri ioddff o 5n htqfspryg rgxq nx upqrq on"tgpd nVq ues n "n exphp rswvq epx gn vtqxoq rgon ensusguyvvmmgff 7s i tjxo rugpnq qts n!!p gxp gpmgq~5oq ungfwxxppq0pfgd ppxrxzns !tq prpxg )u guoss n p gfp mgrpfqx hBuqdgi se qg s z s qr go g ri x h d n $uX 4r $ $ u$ ruru $ $T $$ $$u u $ 2 2 d 2 2 h q { h { 2 }V '81 ' d '81 2 3 }r 3 2 301 d '81 ' kQ Y1 vq )3Y1qY pe r h h v3 lkh li iq iq pp iq v 8.4.3 The # Subroutine 8.4 Trees 281 } V GW 0 'd1 ' W r 1 0 a V GW 0 d V ' d #01 rV d '81 sV 8) 0 W V ) 2 2 d 2 2 h q { h { 2 }V '81 ' d '81 2 3 }r 3 2 301 d '81 ' 2 301 ' X r r ' d 21 W8X r 21 W V #01 sV G) 0 W d q V 2 2 33 2 3 2 3 0 r 1 sr G) 0 W 8 3r $ V $Xu$ u B$ $ $& f $ f $T uruTu$$u t u r $T u B $ $ $uX 4r $ $ u$ ruru $ $T $$ $$u u $ $ u $T $$ $ rr $ x g s d qm s g 'vqhqrpg~ q~ npzgpdunrx j pgpwgGnuoxs yqwvqupiqDqrus rpgwdqrwdg q xrox ofy ppus fm f sxnpg x jh q v i o g r us pxtxg5tnrpq tepg rexnphppggps gwqrxd "qxruhdsi npfg uhwsn vq rxqqmhdi uxps pn hgnppg hpdutnpg q hn prp~pg ntg rfmq pdunsxq5oy n 5pxq phxxrex qrxrxpq7ooon pnqwg u7xm ~xGhpv dus~epfgng ~pntptgg pq g ym 'vpprp tgrdxg q x z~rqqm xne~~uxix mgsrnhi hdn q q x p gq e s omx i q q uvs n e v d g f s g x m s q qnryd h d f nyvppgp oxgorpguqg !rxx z pg n ioh vx5 quAws s qh x7rx sx m nn rpxgusrpxpusynou rxyr g pxuwsuqpsh~s p m f y m s q jpqoopg npg gp yudrv s duuqszqs $ u7g h rmrvx !~ngpf gxn us uhogoxsuqngf px npy ups dnxprg xeuppgupsg $Bru $Xr $ $ u 2 $4 r $ $ 2 $4 X r BruB2 B G $ $ $$$ q 2 rW f r $ u $$ $u$ u $$r$$ $$ t & f 0 W r G) G 33 ' d ' W 1 8 d 2 2 2 33 V 23 V G 0 W r d r G V 0G) W p 3 { 2 3 2 2 3 v v a 101 8.4.4 282 Printing the Tree in Order Pointer Variables r V GW 0 1 V 8) 0 W 1 { 1 sr G) V 0 W d 1 3nE d b G{1 dG1 W b { 2 2 33 1 2 2 daV GW) }r 0 p }V { ' d a 1 '8W1 8 V 1 2 W8X '81 r v z b b xnh r ' 3 dx 2p r q n 0 '8 v rV r 0ch V 0 2 r 0 c a r r d a r 2 X a r V ' W p W 2 W8X r 21 X r ' #0 3 q 3 2 8 r X ' 2 2 3 2 3 dc b ' r X ' 2 2 3 3 V ' d a '81 V a r G 3 X a ' #01 ) V #0 sV G) 0 W d G V 2 2 3 2 2 3 2 3 2 3 0 r 1 sV GW 0 G 3 r G d 2 V 23 r G) 0 W V d V G) 0 W { q srV $X Xu f $ $4 r 4 $B ruT G4 $$ $ $ $ Grrbu$$uf u u $ $ rr $ $ ` $u B B $r u $B$r Bu u4bur ff 4$ 4 r $ $$B T $ ff h $ r r $ r r $ u u $Br u $ 2 $ o u Br $ ut $ r2 o$2 $uur $ f t uu u $ r 4 f $ u u B $ u $Br T u 2 $ Br $T $$ 2 $ $ $Xr XuX2 $ $rq 2 W f $ rG h r 4 $$u$r$rtu $ 3 v V G 23 23 2 v 8.4 Trees 283 a X a F F p p0pqonxqusgfrxqypnxpyq uj~p gpwhpq qrd pgp g g g m g g x jtr Tu5vhon y$ gpphgg hufiy wsGqnp v xv xq!oogmyp untmuqv is ginr ufwddq r lufurkusxyu rlunp ii uynpyu uiug reqx duypguuhhqui s nmuyu uipgyuyqusuts qpq h vq q x x rd s o v h5 d d q sy s m d n e g v pxr xhuspxg jthx i d x v q m g qxm qm q rphndhfustx qn5 oxvpphm gx T nrxTpswfd rx m f q q pjgugpsus f r"xdg m umqs puhgop ggg twfqq xhyuxewq$ pVsfg utq uxwsqqen pvnfg p hox uzpfqts wgq xemphg v p g s h r r X r X r V c W ' ' #n23 2 G r X 8.4.5 284 V uh $ r s o X rr $ 4$ruu f r q r Pointer Variables Exercises 0 I p 2 ' V 9 2 3 ' # G ' x 2 ' # 0 9 2 G ' x ' g s n s s x jjph7s pg qs n hvu gf us q uwsq7s su hhr x hx psg m upsg m on n hr qpm ufuxgpmgtqhg!pgusrx7qmunnAtuqohuvwrxe jd d m g n x g d d q x q omrx ' d pfg I oxx i rphg u stq h nrhxones rxTh dushpgu s rf qx hpvsuf dx trpxg ds pheg spgusxrgxxg tqusmx wpqd gx! ns g v wqumg s n qngrx nq px pgrf pppgt`u pusrqr ep p yg dmrVuzd mp zrxe hp uv sp g pg hxm x`qrg`m nG qrxXpvsr x hopTx qums npn`hudshw pg~nrrpxgpgrx~nugf ug s5h) u sy f r yr j # q m g d rx5 nus dqrxppgysdrxriusrndrpgx~usgn~hpg fusy e x h5 noppgt`uzphsd mrd $thpu ehi g s s g d x s d m g s nsr urpxs dgurn xgehnx uGns np5 us nqudfs usg!f us !0o u u7rougyn o tq y$uws qsuh s h) r 5 # ur$ s d d d g n v s q qu gfusmg rx' mph d pgugftxus y o gfusy pospxgpgrgx ~m ppg yd gf judg s x $dm g Tnys gf us r pxgd x rm xpp gy ppgustqx drx d d n jymr'pXg ugg wfqrx hzd g yhdmh$t h dpg pgus d hu rzyg mx$'m q s q ug tns v pqhd o phpd peyn hnq dus v ngpgugg s h grf xIppiwgq m h sumnm hus ug sn u ps x ptpg qnxsxd uspTorx!rxngxrqq pxwgqhd pvrhui d rri xuqn pey"5 qdusdm$' d m n p us pgd x png n rdm x rxgf n xg wvuq sozpgxp7 gpfg frumvm qwg mmunAq0!x rnx p horxqnT hd g s g x jjphhqqtro ufs udsmd xX n urAx dppgfups gpfgv 0hfxsu tx uBy hqum tpn gpgpg pugg spiwgqhn g 7 A s s # 9 Input and Output 9 f hee d vk@ q rx ` ` d ~ d ~ ||d #3 x3 ~V{1 W dG{1 ~ z d d ` b x g jvGnd us xgd fv( uqus s w ~q nqrmppxgqx prpvygpupsdgm dfuds y rpdqrupxgx s uvs rvtxq x pgfqgm rx7qf qywvsuquhps s d yfi xrjig pgGpgxusyuqpsg q g m n q vquj~przup s h p q d g s q pvuypuGps uguiufpdnues q uwsquoqs nmedqq rdrhi x tnr ngpxgusodoxq nsyuq xsGtsgq p ny hvd r xups 7rd xe g g f g $ q m G G $$ gfu sn y y pmg ufs q s sj ds v Gr" x q pysuhnuspdur~pdqs hs utsuqgs n nushoxwqq m irx v g s i s x g uuveep reuix hhus rs yrwqx psg utquns G quqyms qrpduGg7fsvu n qrx v q5suug7rpxsqtf hpdqd sux d uhsn wfrx f hee d kv@G h )vxqY))Y1v3vY"r i kq v p juhhrpperxnzuypdus qd g g s s x juvqom hp g !ugpq rxs gpnfghuosq xxB yq urshhesxs rpuqrogyss xfh zhsn vx uuhs rAhg px ypdhusp pxq rxr!uq!hpdx v p upsVgTnuqVqhn u i d x s s g pgudss gx p f q i q uvs p q s f GTh dkrf r e d 9.1 Records f GTrh hkjkw tvwpqgdph~quhqrxrzgtqxuv tsqrs h g s q x m qm n j x q onr5rxxthd g n i s rpxguwf rvq xpg q Ap7mus7ngoetustq7rxq pvpudv rn ywuqsr s pq v x n~rqx n pggnssuggp y fg qiruphhmxds m ui y~ps n ppgggyf n uAgs rg xn px g uGosx pwgsm riq ups rgn rgfdgmp~pq gqtvpugqsgumfs qm x xf q g s qonos uh wgq~rpg~ppgpvutqem xh uv x~sx gxp !~hhxmyuvsgf 0tsufg sruq rhxs Bguvm t`ysu npfus q mq x Bpvvq u ppgtqg us A qups pd rgtqx u sutupv rup pxsgguts qvrTsuimn rq xq e m s hpjv pggrxgg rs xx gqu~m qhx mun ponps exppgVus rxerm pxgf m wgq hgh i s s g g s q q x d n xphAx wqusqrydrxpwgqmgAppgrpyupg gwfx qqhgrxs ~sgrxAppg xupp s rsmuhs wqrrq x gpxg0f npppenxnypdushxpgxg ug stuqpur rmuq Tsuhus nd mh v vusr g g p m s q dx d s x tjx$0pxgu pmowgs qy h ) ppygus h$ #qrv ggqf ysmup s sgnup x Gy thuq pmgs ruxyrgmsq pu ogrnou"sn yxfgguuhs gdsf s n hn v xG q x r r x 2 3 ' # 0 9 2 G ' 286 Input and Output f qYh vk@ q rrin r f hee d x xhd g s x i g i xrypg p hpduqgfd nrxhf oghmTs x xsuhusgtfxd s q q s q q tjuq7ops 0 n n psud h5'vin q hxn uhms x 5q odgp nmugypyhpduf 7 0s xgu smqus g ff xirx xqgsuhGptgwqquwsq5rqqex ppruyuiqps s g uesd G{5pv g ppqdpvuszdq rp x gutgoqs yooy ugxs onxd vrhdus prug iss suzhGxqsq pru suisgps xgtfdq x5us s~d xptg5pg g q r g g pg d x x v ~ x5x qus sGvpuss dhdp pg x p5 fpg uvitqu ri ud m !p ypvpqg dtq7xqq rsuhugwfqrxo5vuuszqnrxrusqrprxdvn qtqusdm p gr nDftq xtx rrs hg shperx rqonTnpges yrqn hx7n gi x n xr q pv j usuohBwsufyss q uxgrxqwfm uhs pvprtdq pguvrsi x!s u uqs n qutpx pv upBdd5hxuwfrx7 s s x h g g s i d g q s x f gvq xqu~r iyuvsgn n p s v npTp7wqu5qtsq unrx qrghf ress u oAnf 7 pxq s uggtfrxv rTnph jtuqrps xs gnu5os i mfqx xquws tqq prg5qxg rnivx ug0xBpduxsq " qq us tnuqnpr pxghu sr pxgusq mqyqq muqs w v uqnpxG ` rpVnpe"yhpdudrVrpxgusmqAuowqp)qhmgrx g s x g g n s x q s g d f qtqo n xrv gztqxu wsquxs n~nyq dq x~nxopguszp!suh r i d s f m f q q g q s putgsq wfrx hgpdus rnrxg us mqp r uihs usq wfrx usq n iquwsuqs nVxs `pvpu tq pg qrxpduswqrx~usn ufwsxm jgrvqsusu tf x 4q uvx suohpss gwfqguwfqrxs ppvgom rv A rpguxtsq xsm vsu rnio u xAsperuvsgx z g t us o x r 5 gq i f q q f qYhkvd G n r h f ee 9.1.1 qY 1Q h )vgrYe)1q g h kq pp k p kkkk k pp kkkkk d ` ` t {1 x v d ujh~qrgr~pgpzrrxxusonqrxqugtfqrxdu~hhxpggf s s d qm n $$ 3Y YY1&3) p h )vgrYe) g h p v3 y i 9.1.2 Unformatted Records Formatted Records 9.1 Records 287 n v d hs pg i s f v n rxohmh5gfuonGpdruvsgfusn s g i qqtuwsuqon5n q ous gfuqs 5nryns p5 nh sd yuf~dus n uvsg f5ppg4 x i s s jvugxtfq xhq u dupd ps s nxuqrxs dpxp gs ugusrxvugf5ppgdxnh usq nhmq n $y s h5rugftqrdpix u5qf ns pgriv qh gfppgysAhrxi 7h q d pvpuspgugfnv ujqd pg q pgmerrnvuzgs udhpy p gxoqs x pgohq r x rhpxq mgepq prrrxx usn psg5npge s ~ q hkjkwh 9.2 g jpqhjhfusrixdmdrynusvup rxnzrhxnypguq wfrxm rx g g v q q x x s q d d q ssuwshq uqs shwpqg5d~n5d xru spex~shpg rt gxpq !pvsx n us dq q wm zd pgp ggp uyos nnd p'vqg h uys tquxss no xq xqu!urxq qx mn rx gqpfguguqwsoxsf $nu b ' x 9.1.5 Printing of Formatted Records 0 @ ' 2 GTrh "kvSrax f hjw f h mx x x qx 'vur 7 erpxgustqhd mhd $thdm pgnusrn rpxghpdrx~onus vuqod x7pdxq xpmgt qhd phg Ts n upss sdqs q s7h q xq xv s vs g q uy gsh rpxgudms droupsg pguq ...

Find millions of documents on Course Hero - Study Guides, Lecture Notes, Reference Materials, Practice Exams and more. Course Hero has millions of course specific materials providing students with the best way to expand their education.

Below is a small sample set of documents:

UNC - A - 142
Chapter 14Nuclear FusionResearch into fundamentally new, advanced energy sources such as [.] fusion energy can have substantial future payoffs. [T]he Nations fusion program has made steady progress and last year set a record of producing 10.7 mega
UNC - A - 142
10Interiors of Stars10.1 Hydrostatic EquilibriumOnly neutrinos give us a view of the centers of stars. To deduce internal conditions, we must therefore use models that are consistent with physical laws and have observed boundary conditions. Grav
UNC - A - 137
Etalon Problem (due 4/28)This problem examines how spectral information is distributed onto a detector at the focus of a Fabry-Perot spectrometer. We saw that for a given etalon gap distance, different spectral orders appear as rings. There are 3 pe
UNC - ENVR - 116
Corrections for: Hinds, W. C., Aerosol Technology: Properties, Behavior, and Measurement of Airborne Particles, Second Edition, Wiley, New York (1999).CORRECTIONS TO SIXTH PRINTING: [Note, the &quot;printing&quot; is given by the last number in the last line
UNC - ENVR - 131
MOLECULAR METHODS LABORATORY: ENVR 131RNA Isolation, RT-PCR and Agarose Gel ElectrophoresisJennifer Cannon and Scott MeschkeBACKGROUNDPolymerase chain reaction (PCR) is a simple molecular technique which takes advantage of the thermostability of
UNC - ENVR - 131
ENVR131 Fall 2005 October 19, 2005 Mammalian Cell Toxicity AssayLast week we examined the mutagenicity of two environmental combustion samples and two &quot;representative&quot; pure chemicals in a bacterial assay. The question of toxicity to the bacteria ar
UNC - ENVR - 131
ENVR192: DNA Isolation and Quantitation (Nov. 9, 2005)L.M. BallIntroduction Deoxyribonucleic acid (DNA) encodes information necessary for cell structure, function and replication. Techniques for recovering DNA from organisms and for quantitating
UNC - ENVR - 116
UNC - ENVR - 116
UNC - ENVR - 116
Michigan State University - READ - 1989
UNC - ENVR - 131
ENVR 131 Techniques in Environmental Health Sciences Fall INDICATOR BACTERIA TOTAL AND FECAL COLIFORMS AND E. COLI MULTIPLE FERMENTATION TUBE (MFT) OR &quot;MOST PROBABLE NUMBER&quot; (MPN) METHODS AND MEMBRANE FILTER (MF) METHODS INTRODUCTION AND BACKGROUND
UNC - ENVR - 130
UNC - ENVR - 116
Lab Reservations Times Time 89 9 10 10 11 11 12 12 1 12 23 3-4 C8 TNT JAM Monday Tuesday Wednesday KLS Thursday FridayYou can do the lab any time, but the times listed above are reserved for the groups noted.
Michigan State University - READ - 1982
UNC - ENVR - 130
UNC - ENVR - 116
ENVR 116 Aerosol Technology Laboratory Session Fall 2005INSTRUMENT CALIBRATION USING PSL SPHERES The objective of this lab is to become familiar with the operation, characteristics, and limitations of a real-time instrument used to measure particl
UNC - ENVR - 130
ENVR130 Fall 2005 Homework #2 Due Fri Sept 23, 2005 Do not use more than 2 sides of paper for your answersQuestion 1: Describe briefly three measures that can be used to control the spread of an environmental infectious disease.Question 2: What a
UNC - ENVR - 116
ENVR 116 Aerosol Technology - Laboratory Session Fall 2005 CALIBRATION AND USE OF THE OPTICAL MICROSCOPE The objective of this lab is for you to become familiar with use of the optical microscope to measure the sizes of particles and other objects. B
UNC - ENVR - 131
ENVR 131 (October 5, 2005) BACTERIAL MUTAGENICITY TEST: THE AMES Salmonella PLATE INCORPORATION ASSAY. IntroductionL.M. BallMany carcinogens are also mutagens. One widely-utilized, relatively cheap, rapid and simple means of determining whether a
UNC - ENVR - 130
ENVR130 Fall 2005 Homework #4 Due Fri Oct 7Questions 2 and 3 are based on the paper The Structure of Human Microsomal Cytochrome P450 3A4. by Yano et al., 2004 Do not use more that 2 sides for your answersQuestion 1. State which of the three major
UNC - ENVR - 116
Ode to a Particle Unknown Oh, aerosol, oh particle minute, For finest spray of paint on cab and hood Or choking precious air sacs in a lung, For blasts of healing medcine down the throat Or insidious disease from envelope, On springs sweet zephyr waf
UNC - ENVR - 130
UNC - GEOG - 370
Remote Sensing Part 3 Examples &amp; ApplicationsReview: Spectral SignaturesReview: Spectral ResolutionReview: Computer Display of Remote Sensing ImagesIndividual bands of satellite data are &quot;mapped&quot; to the three &quot;color guns&quot; Color guns red, green
UNC - GEOG - 711
Lecture notes: Interception and evapotranspiration I. Vegetation canopy interception (Ic): Portion of incident precipitation (P) physically intercepted, stored and ultimately evaporated from vegetation surface (leaves and stems) Litter interception (
UNC - GEOG - 513
Yuri Kim Geog711 Problem set 4 11/01/2007 Understanding of TOPMODEL algorithm in RHESSys 1. Statement of the problem What are the impacts of varying &quot;m&quot; and &quot;K&quot; on hydrologic phenomena and vegetation growth? 2. Experimental setup &quot;m&quot; and &quot;K&quot; of TOPMO
UNC - GEOG - 491
GIS Overlay AnalysisOverlay analysesOperate on spatial entities from two or more maps to determine spatial overlap, combination, containment, intersectionetc. one of the most fundamental of GIS operations formalized in 1960s by landscape architect
UNC - GEOG - 491
Geographic Information Systems Geography 491Dr. Stephen J. Walsh Department of Geography, UNC-CH Fall, 2007 Monday 3:30 - 6:00 pm Saunders Hall Room 220IntroductionOrganizations that have a planning, research, management, operational and/or regu
UNC - GEOG - 491
Class 8 Query, Measurement &amp; Transformation; Spatial Buffers; Descriptive Summary, Design &amp; InferenceOutlineWhat is spatial analysis? Queries and reasoning Measurements TransformationsSpatial AnalysisTurns raw data into useful informationby ad
UNC - GEOG - 491
Geography 491 Fall 2007 Lab &amp; Demonstration ScheduleTim Morrissey (tmorriss@email.unc.edu) &amp; Julie Tuttle (jptuttle@email.unc.edu) Teaching Assistants &amp; Lab Instructors Saunders Hall, Rms 319 &amp; 322 (see below) Grading NA NA 0 25 pts 0 25 pts 0 2
UNC - GEOG - 491
Class #2Data Models: maps as models of reality, geographical and attribute measurement &amp; vector and raster (and other) data structuresRole of a Data ModelLevels of Data Model AbstractionGIS as Digital Map Layers&quot;All of the layers are referenc
UNC - GEOG - 491
Overview: GIS Assets &amp; ConstraintsGIS/GI as business assets Value adding through GIS by data linkage Navigating the constraints:Legal constraints on GIS operations People with right skills, attitudes, knowledge Issues about availability, pricing, q
UNC - GEOG - 491
Projections &amp; GIS Data Collection: An OverviewProjections Primary data capture Secondary data capture Data transfer Capturing attribute data Managing a data capture projectGeodesy Basics for Geospatial DataGeodesy: The study of the Earths size an
UNC - GEOG - 491
Global Positioning Systems (GPS) Fully operational in 1994 &gt; 20 satellites, 98% operational Not as available during times of conflict 6 Orbital Planes 20,200 km orbit ~ 12 hour orbital period Each visible for ~ 5 hours Global Positioning Sys
UNC - GEOG - 491
Geostatistics and Spatial ScalesSemivariance &amp; semi-variograms Scale dependence &amp; independence Ranges of spatial scales Variable dependent Fractal dimension GIS implicationsSpatial Analysis Tools &amp; GeoStatisticsSemivariance AnalysisSemivariogr
UNC - GEOG - 801
Modelling Canopy CO2 Fluxes: Are 'Big-Leaf' Simplifications Justified? A. D. Friend Global Ecology and Biogeography, Vol. 10, No. 6, European Terrestrial Ecosystem Modelling Activity. (Nov., 2001), pp. 603-619.Stable URL: http:/links.jstor.org/sici?
UNC - GEOG - 801
UNC - GEOG - 801
UNC - GEOG - 801
UNC - GEOG - 801
UNC - GEOG - 801
UNC - GEOG - 801
UNC - GEOG - 801
e c o l o g i c a l m o d e l l i n g 2 0 3 ( 2 0 0 7 ) 257269available at www.sciencedirect.comjournal homepage: www.elsevier.com/locate/ecolmodelChanging scale in ecological modelling: A bottom up approach with an individual based vegetation
UNC - GEOG - 801
RSE-06888; No of Pages 10ARTICLE IN PRESS+ MODELRemote Sensing of Environment xx (2007) xxx xxx www.elsevier.com/locate/rseEstimation of evaporative fraction and evapotranspiration from MODIS products using a complementary based modelVirgin
UNC - GEOG - 801
UNC - GEOG - 801
Estimation of Evapotranspiration and Photosynthesis by Assimilation of Remote Sensing Data into SVAT ModelsAlbert Olioso,* Habiba Chauki,* Dominique Courault,* and Jean-Pierre Wigneron*stimation of evapotranspiration and photosynthesis from remote
UNC - GEOG - 801
Agricultural and Forest Meteorology 102 (2000) 83103Factors controlling evaporation and energy partitioning beneath a deciduous forest over an annual cycleKell B. Wilson a, , Paul J. Hanson b , Dennis D. Baldocchi cb a Atmospheric Turbulence and
UNC - GEOG - 804
Feminist Economics 12(1 2), January/April 2006, 1 50THE GENDER ASSET GAP: WHAT DO WE KNOW AND WHY DOES IT MATTER?Carmen Diana Deere and Cheryl R. DossABSTRACTIs there a gender asset gap? This article examines the evidence available on the dis
UNC - READ - 4925833
Schedule of Fees July 1, 2008The Town Manager shall have the authority to set any fee not otherwise listed and shall have authority to make any interpretations of any fee listed on this schedule.Administration, Finance, and All DepartmentsAgenda
UNC - READ - 4575230
OCTOBER 1, 2003, UPDATE OF THE MEDICARE INPATIENT ACUTE CARE AND INPATIENT REHABILITATION FACILITY PROSPECTIVE PAYMENT SYSTEMSSiemens Customer Memo #Z030929A MEMO TO: FROM: DATE: All INVISION, SIGNATURE and UNITY Distribution List Acute and Ambulat
UNC - READ - 4573438
Summit Attendance/Sponsor/Exhibitor/Advertising REGISTRATION FORM Primary Registrant's Name _ Organization/Affiliation_ Address __ City _ State _ Zip _ Phone _ E-mail _ &lt; Check here if we may NOT share your information with registered participants.
UNC - WEEK - 002
Texas A&M - EDCI - 658
UNC - BMME - 765
Basic Analog and DigitalStudent GuideVERSION 1.3WARRANTYParallax, Inc. warrants its products against defects in materials and workmanship for a period of 90 days. If you discover a defect, Parallax will, at its option, repair, replace, or refun
Texas A&M - ECEN - 326
ECEN 326 LAB 8 Frequency Response of a Common-Emitter BJT Amplifier1 Circuit TopologyCircuit schematic of the common-emitter amplifier is shown in Fig. 1. Capacitors CB and CC are used for AC coupling, whereas CE is an AC bypass capacitor used to
Texas A&M - ELEN - 689
Millimeter-Wave IC DesignKamran Entesari Spring 2007Kamran Entesari, ELEN 689Section 9CMOS/SiGe Oscillators and Frequency MultipliersKamran Entesari, ELEN 689MMIC Voltage Controlled OscillatorsKamran Entesari, ELEN 68924 GHz SiGe Diff
UNC - BIOL - 453