Cours d'informatique

¢¡4 576¦! 86¦#!"@9 £ §6¦AB ¡0 ¡2 ¡0 ¡1 ¡0 ¡1 ¡0 ¡0 ¡1 ¡0 ¡1 ¡0 ¡2 ¡0 ¡0 ¡1 ¡0 ¡1 ¡0 ¡1 ¡0 ¡0 ¡1 ¡0 ¡2 ¡0 ¡1 ¡0 ¡0 ¡1 ¡0 ¡1 ¡0 ¡1 ¡0 ¡0 ¡2 ¡0 ¡1 ¡0 ¡1 ¡0 ¡0 ¡1 ¡0 ¡1 ¡0 ¡ 3.
592KB taille 4 téléchargements 357 vues
Notes du

Cours d’informatique Math. Sup. MPSI Lyc´ ee Fermat A. Soyeur

Table des mati` eres 1 Introduction ` a CAML           " #%$ &$ (' )$ *   +" ,$ -./ 0  /)1  +"+" 2345 68 7   )  +" : ;< =>=? 5(  @  +" ! BDCEF ) Xh 

j    PFo Q./bNO /  R)$ Q.5 Up  "R : dOXPRQX    5Q/ QR''q   "R ! st K5 u    "R 9 dO=LEX'$ =? 54  ?P. ' K5 &P/(XMPFo+(QR5)=?b2XIj/;=?ˆ  =V(6&$ =V4 QX /| 

 L0FP/h/  wUQ/ let ... in ... (( Q.  Š Xs‚ M' S( 

/D8o &Q.XjEF  $  Q/P/(Xa;; >^ L’identificateur a n’est pas d´ efini.

}EFQ.jP ^ L’identificateur a n’est pas d´ efini.

*

%Q. '   P.Q.y

let in

Q/) ) NOt| CAML

#let a = 2 in let b = 2 * a in a + b;; - : int = 6

1.2.2

Parenth` eses.

6

; =>=?P/(X&'SkEX'QREt(MP.)M'S(.T(TU) ' M EM$ 45Q.5DEF   )7 P. =? PR -/w' o 5PR5?P8o $ ('QX4   P.)ˆyE.    X a  =??5?Et4 68)7 ) }UQno '&Ne(Q. $ ('Q/> E/   8$ | CAML

#(2 + 3) * 5;; - : int = 25

de'a   JP.=% ^ =?MEF Q.M

Q. )&')& XK QX  / 54  wP/M'Sj5( ''MPRQ>/ =vf/5QR '   'SkX h4   4E/4 7 D')< EM$ ( Q.5DQ/Q/ '&QRJ'   ( 8| .

)



)

*

CAML

#4. *. 5.;; - : float = 20.0 #2.E4 /. 2.4;; - : float = 8333.33333333



sFvNO X  

print_float

EF5=?JPFo+?56/ 63 ? 67 C 68 D 69 E 70 F 71 G 75 K 76 L 77 M 78 N 79 O 83 S 84 T 85 U 86 V 87 W 91 [ 92 \ 93 ] 94 ^ 95 _ 99 c 100 d 101 e 102 f 103 g 107 k 108 l 109 m 110 n 111 o 115 s 116 t 117 u 118 v 119 w 123 { 124 | 125 } 126 ~  EF5=? 5MP.bEt JPRQ 44)7 vˆ 7  }) P/Ij.;&dKd int_of_char char_of_int CAML

#char_of_int 65;; - : char = ‘A‘ #int_of_char ‘T‘;; - : int = 84

sFvNO X  

print_char

EF5=?JPFo+?56/MQ. )4h)7 5



string †&X 56t^ / P.)(h)7 5b  JP unit =

1.3

Aspects imp´ eratifs du langage

   ' "#  ,.- '&%  ,. 

s ˆ KC'ˆP.E/5 T(=>=V4   F

  jE/5 56/vPRQ NO /  .X=? MP8o Q/ hPR t4  QRt|t   EM)$  -/P/h/J' o hP Q//J$   =? 'SE/5 T(=>=V4  > =LEM$ 4  (( ))



$" '  "   -6

0



1.3.1

R´ ef´ erences.

*

† / 0 then print_string "positif" else print_string "n´ egatif";;

:RD' )‚| 

QR&  UQ/ ‚  DE/'ShXM $ 5

begin



end

  &) X P=?MQ//MQ/. Q/M XK QX  LEt4 0 then begin print_string "x > 0"; print_newline() end else

!.i Q/ ' JG

*

begin print_string "x int Q/ nP XM'jEX'Q/=V4  L =LEM$ 4 U  'F  J =LE‚ ( t(  VPRQ}E. Th=>=?

 

sFˆ(' PR b $ PRQ}E. Th=>=?F|R '‚Ne( &f/  })UQX ' o  4 XP%P.'Q. 

1.4.1

Ind´ ecidabilit´ e de la terminaison



de'3 $ j $ =?  R$ hQ%P=?P. .&k $  k55=> XEF Q.b5 QX   45TQ/=?5j Q Eth)Fs3o P< $ ˆP.ˆ'S>P< $ =? XK4     'V Q/ hh  .(/&5&PX(/&')MP X  EF Q.( k(' h XK Q/ 5%V  7 Et4  vP/>   NO /   U'SkNO X  }Q. ( a| termine let absurde () = while (termine code(absurde)) do done;;

*





 

 X'SJNO /     &  => X (' h hhQR D'SjNO X   f‚ Q/ 'M5(Xa-. absurde code(absurde) true absurde  UE‚4\ 5D'S /cEth (h' 5 (QR =Vh 3(' hF'S / P.bNe Y$  P.   absurde



6

,b(X&')MP. QRy4h R 14fF QR v 7 Q.X(fXQRPR $ 

1.4.2

Invariants de boucles





8,0  $   '  

,   ,



{ $ 5(JP. .&& 3 $ Q.f/' bP8o XK QX  /  %(E.EF'' PRQf/'  '  Qg $  Q.54Šn;< / P=?> =LEM$ 4 NOˆ w' wfF Q/')   lQR '  VQ/ for while 4 S(&P.bfF QX' E‚ QR&E. Q/U&) KCUEFP/jE/5 T(=>=?  Uo )Kvˆ 7 PR jQ//jE. hE/ $  $ wD$  -X( (( ))

*



 



F 7Q xP=?J }Q. '  (' o 45 S(P.LfF QX'wEF Q.k=?  ˆ'V55=> t(  …P8o Q/ E. T(=>=?w Q  EF Q.V$ QXPR &'Sv) =LEX'y 0j $ P8o Q/VE/5 T(=>=? & † 1       4  5  S (    &  / P  F f 

/ Q   '  )  K  J  Q/1yR  '' J =>=? 5( bQ/ FEF5=?JP.v =LE/5 /PR5b =>=? M' E/5 T(=>=?  NO X  .X

*

 '   6 ,  ,

*

,   ,  - '    %     -&/

,   , 4  " '65%0 (7 * 

'   

R  nQ/kEF 'Cn ^ =?    !"  $# $#   E/R)$  8$ Et(n'c 5Q.3P/D  a ?   % '  &)(  }  JQ/'SkNO /  } Q/ hh w‰ ('T h5 0 6.=?JP/  h

 5/Š=V4  w =LEM$ 4  U FV 7Q 'jE. T(=>=? QRc.$ $ 56/  float -> int = #let g = f "100";; g : float -> int = #g 3.;; - : int = 103

Chapitre 2

R´ ecursivit´ e 2.1

Fonctions r´ ecursives



†M/&NO /   3EFQ.&^ 5M(=? &)$ b 7 )o (E.EF'c '' =% ^ =?\EF Q.ˆ$ ('QX\Q.?4('Q.'  234jyR=LE/' 'SkNO X  VNeh

 ''MEF U  7 P/J'SkE. hE.5 $ & $ =V4 6& $ =V4 Q/b Q/ (5a|



91 ‰ aŠ {\''  P 1 | _ -> n * fact (n - 1);;

6



J h  ?'S} h   E‚ /PX(/)v5L'SVE. hE/ $ k $ =V46&$ =V4 UQXˆv'SVNO /   M3;bo   ˆ ?Q/ cNe( v' o $ 4^  P. 'SvE. Th=>=V4  LNO /  //''de'FNe(Q.JQR '  M'=? h ' $ EF Q.jP collatz (n / 2) -> collatz (3 * n + 1);;



s8>  )Q.5P/ˆ;< ''S4 kPR bQ/k) NO /  1   => X E‚ QRJ5 Q. ('Q. P/ $ J $ E/5 Q.ck $ ) 

X=V( J R)$  Q/'54M8o+

(=Vh 

†M?R $ Q.'5(D'Sh  Q/&P.j)('Q/'S4f/ ' D $ / QXDP. 0 / absurde   => XJE‚h 

termine

(QR

"absurde"

true

8vP. XL'S?NO /  

absurde



/? 



 &'SNO X   X??  => /wE‚h a(' h (Q/PR(  wPX(/ˆ V4h 8'S absurde termine "absurde" false NO X    b  => / absurde

6

,b(X&')MP. QRy4h R  hf. &Q./   hPR   n {\1 X'Q/   Uo   j(Q}E. T(=>=? QRiQno /) =ˆfFj'SE/5 Q. P/b 5=> X( 

VP/ kNO X    †M/k= $ 6X P.'Sh  Q/ =LE/' EF QRb=?  jQno Q//NO /  %R $  QR U    => / . / K5LL 7 y6. fFjQ//  QRc' o  / =ˆf/' ,?5  "! " -     % -2         ,0  %9'  2 '  '6 7 @BA  DCF E    Caract´ erisation des ordres bien fond´ es

Exemple

1. ,

%('

.-0/`

2143



s3o hPG => . =V(' 

  >f/  NO XP$ ' $ =?5c=> . =V(Q.y>E‚ QRJ J hP CAML

Ce sont tous les couples de la forme $(0, p)$ o` u $p \in \nn$.



@BA  DCF E  $ Induction sur un ensemble bien fond´ e   w‰  jŠJQ.…/ =ˆf/' fX   NO X< P $ / Q. E.R $ P. 44J Q.BL p => . =V(QRy?P/B>  / F' o  .)$ QR   | '   Q./ 4E.EX' 44  L F 7Q   Q. L %  /    /  :' ( ‰ tŠ&  J=> / =V('XPX(/ ‰'bŠ 1

*









*

6

(' h







*



 p ‰ tŠ&  Jh 



'

‰%  Š *!*"*

pf

Šj F7Q

)K&Q.% hP&fX  >NO XP-./ jP. 4('Q/'wP. n‰  Š *!*!* n‰ ‰ %F Š  ‰ tŠ "*!*!* ‰   F Š  ‰ tŠ&



 

pf

‰

Š 



pf



Š>  

‰XŠ

f

 =? 5v =wQ.'5(&$ =? ) h 5)  1PFo Q./kNO X  1R $  QR U  Q. ' 5(j) b6& $ 4 7 =? ) … {\%R4$ (' $  '8  ME/'QXM =LE/' P.bNe(  P8o (f‚ 5P'b( 

//=? D /P.Q/ Na)(J' oK)$ 5 0 QRJP.'SkNO X  VR $  QR j P< $ ) Q/'bPR  5=? )s‚ h 

// =?cKCE/ Q/)KJ' Q/ hht|



 / =VhQRy (( )) 

 'cfX   X'Q/&P/h/5Q/ S('4Šn    Q/ $ ' $ =?k4 f/  ( 5F{3  QRE/E‚ U hQX>' o   h56X?)h' Q.' n‰ .ŠEF Q.k

Q/ ' …$ ' $ =?

 .  a) =>=? vgP< $ P.Q. 5ˆ'V4('Q.' 1 | _ - > x * exp x (n - 1);;



'  





s8kNO /  %PFo IJ =Vh.)KjX$ ' 7 f.J% RNO  =V( Q/MEF QRJ ˆ    h/ by 4 ^ =?=?i(E/ P.n| CAML

let rec ackermann n p = match (n, p) with | 0, p -> p + 1 | n, 0 -> ackermann (n - 1) 1 | n, p -> ackermann (n-1) (ackermann n (p - 1));;

Š }  M'Sk 5=> X( 

VP/   NO /  8 f‚Š } 5MQX3‰ ‚Š   /h5=V(.t‰ tŠ   n





'  





*

sF5E.R $  5wQ. $ ' $ =?wP8o Q/ / =ˆf/'V XPRQX NJE‚4>Q. " ' '6 D P< $ 5 (w5 E/5 P.Q/   7 ' o h P/P/  ) XK QX  QR  * }E/'Sh) (Q.y?NOQ/ '')$ '$ =?  iP. Rb(QRy/ QXP.  ')M XK QX5QRiQR '  $ ) ,b(X&' o yR =LE/'jP/ M 6  ' o   M:L hf/ QEt(J(E.E/' )(  ?Q/)    bP.Q}) XK QX  QR Succ bE/R)$    / M  b'bfF R $ Q.'5(DEF Q.M

Q.  ' K5

; o   j )$ 5 hh=? >)$ 5 5b' iNO X  /& Q.J'  0 | x :: q -> 1 + longueur q;;

†M/ NO X  }Q/ 8 /)() 7 /jP/Q.yV'   )t| CAML

#let rec concatene l1 l2 = match l1 with | [] -> l2 | x :: q -> x :: concatene q l2;; concatene : ’a list -> ’a list -> ’a list =

; / 5  0MPFo Q.Xj'   | CAML

let rec insere_fin a l = match l with | [] -> [a] | x :: q -> x :: (insere_fin a q);; let rec miroir l = match l with | [] -> [] | x :: q -> insere_fin x (miroir q);;

 8, %&%('



 …P< $  T/&'b/ =vf/5MP8o $ '$ =?  \P.j'S'    D‰ P. OŠ R& &‰ 3ŠD)K&'jX =ˆf.MPFo+4E.EF 'cR $ Q.5 NOcP.j'S NO /  

1v'S'S4  P/j.)$ QR /)8| insere fin a l





M‰ `Š  &‰ aŠ 

P8o F} 7Q ' o  &‰ 3Š  i  ' o X h  v‰ 3Š‚'\/ =vf/5\P8o (E.EF'XR $  QR NOXEF Q.n)(' Q.'

1k'Sk5 '(  }P. R $  QR 5 / 8|





v‰ `UŠ 

v‰ 3Š 

` &‰ 



miroir l



‰eQ./c=? QR\P.c'S 7  'SE/5 => 7 M' K5 )KM P. =V( DE‚h&'SvP/Q.y  7 =?   

(QXQ.XbP/ MP/QRy'   )ino )KM P.

sFQ/ ' 5P. 'SNO /  % h   E‚ /PX( J)Kn| CAML

let f l1 l2 = match (l1, l2) with | [], [] -> ... | [], _ -> ... | _, [] -> | x1 :: q1, x2 :: q2 -> ... ;; J Q/& 5 /&P.)MyR=LEX' &

2.5

Bj,k

Impl´ ementation de listes dans d’autres langages



  ,0 &%(' -

,b(X&')&'S(.T(TU)iP/jE/5 T(=>=V4  L hPR   .X'J‰ ;Y Q 23h )h'Š Q./ ' K5 o =LE/'$ =?  kv 7 ' o h P/bP/  †MˆEF  5Q.3)K3Q.X=?D')nR$ N)$ X )F cŠ ˆEFQRcP 7 5J)''Q.'R{3 R'jE/5 T(=>=?Q.ino kEthˆ 7 )o   QREFJP/b'SvTU)K  }P/  2 fibo 3 fibo --> 5 fibo --> 8 - : int = 8

;  5JNO /  V t)QXJEX'Q/  QRD4E/E‚ '3R $ Q.5 NO\ QR ')3EF QR&)(' Q.' < RsF-.TQ.5b" !kR $ Q.=?M

Q/cNO h5=? fibo 3 P8o (f/5b' MPR J$ 5) =>=? ˆ   $ ('Q&)$ LQ.X?NO /   R $  QR nsF NO X   Q. (5 4('Q/' 4| CAML

let rec fact n = match n with

| 0 -> 1 | n -> n * fact (n - 1);;





I„56XhQ/>4E/EF'DP/wNO /   FQ. X Q/U'c =LE/'Sh)=?= $ =?  5w  ˆR)$ LUQ/ i)   'SV('QRwP. ˆ4 TUQ.=?   >Q. /PR5  kEF QRwE/'Sh)w'1('QR>P.V

QR>P.V' NO X  8\ M' o  P. =V(/P/?PFoK $ hh'QX aQ// ''Q.' fact 3   w.)$  8=Vh kEF QRˆ5 =LE/' v'S%('Q.wP.?5

QR 8 ' .X ^ 05L'S}('Q.LP/>5 QRLP. \†& (3, _) fact 2 X Q/U' 7 Q/ =?)5(TvP.   ‰ Kh (U  jŠgde'cy K5vQ//ˆ'Sh ˆP.NO /  XJR $  QR  MQ. 3EFQ/U  )o $ ('Q/)U 









 2   "-6-    ,0  0 

)

3

?



*

0

1

1

?

1

?

1

1

2

?

2

?

2

?

2

?

2

2

3

?

3

?

3

?

3

?

3

?

 

"+9 

;

"$ %    :

3

6



Q/   Eth)b= $ =?  J / 5(‚|R')DNO /  XD.)$ QR  c 5=> X(') 

*

         Fonctions r´ ecursives terminales

 '   , "# 

 PR vQ8o Q./ˆNO /  …R $ Q.5 Uˆ    c'> Q.' t('8| CAML

let rec terminale n = match n with | 0 -> print_newline() | _ -> print_int n; terminale (n - 1);;

h' 5&Q/)''  ‚/ ' o    print_newline(); | _ -> non_terminale (n - 1); print_int n;;

sF NO /  Xj.)$ QR  j  => Xh')  $    h  b)4w'' /L& $ )   5 Qno Q/   Eth)ˆ= $ =?  v) / 5h ' 5P.ˆ'Q.yD $ Q.   ‰O'S>6t(QR5Q.P/v'SLEX 'wPFo yi)$ Q.  1Xˆ5 4^ bE‚h ) ˆ'>5( ''ˆP/v'SVP. /&)$ )Š /  t F  EF QR

QRfX'  'Sv('QRJP/ J45TQ/=? i' h&P. ' o 4E/EF'tR $  QR NK (( )) de'jy   }Q// (/ NO h5=V4  g(QR5 =V4 UQXVQ. JE‚ =?LP/5 =LE/'Sh ˆQ//NO X   R $  QR U> 5=> X('?Et4>Q. E/5 T(=>=? =LEM$ 4 NnQR ' 5(MQ.XfF Q/ 'bQ//.$ N)$ X .QRE.EF U /MQ/v'v56&$ =VˆPFo Q.X NO /  1R)$ Q.5 U 55=> X(' ‰  7 Q.145TQ/=? XŠ&

 MP.'SNO  =?Q. ( a|



let rec f x = match cas_de_base x with | true -> f_base x; | false -> action x; f (sigma x);;

.

7Q F P< $  TU/jQ.}E.R $ P. )4i) h 5)KEF /P/hbk 7 ' o X =vfX'bP.)M)h t(QRy Q//   5h XJNO / cas_de_base f_base    Q// $ 5 jPFo ‚ MP/JfF 5P/iP 7  ‰SEF Q.Q/ hPkfX   NO /P X(' ) 2\'QX8T3$ &$ ('=?   'y   cQ//c6& $ h5 3P.c'S   VQ. EF5=?nP/\ (XKNO  =?FQ./\NO /  kR)$ Q.5 U QX' /Q/&VQ./  (



2 '   %9' - 

"$ ,



2.6.2





Accumulateurs

s >NO /   Neh

 '' )$ 5 05v

QXj'SwNO  =?vQ/Q/''no )K EthjR $  QR U 55=> X(' X 'aNe(Q.) .t^  ' o $ ('QX4   8 P/ )(JP.bEF Q.   t('1 $ Q. ('5/2a QR )'S X  Q. ' Q/ /o   L> 7 PR  Q/ 45TQ.=? 4('Q.' fact_t n 1 P  / .Q// / Q.U ''jNO X     } $ hh'Q& $ ˆ‰SEXQ.  UQno  '' P x | n -> fact_t (x * n) (n - 1) in fact_t 1 ;; fact : int -> int =

s8kNO /     } $ hh'Q& $ jQ.Xb Q/'bNO  &M5 U  bQ.XJNO /  8 fact_t ed '   >E‚ U f/'}PFo+(=g$ '  hˆ'…) =LE/'y V $ P/'S NO X   ‰eQ. )(' Q.'S( ˆ' o =VhTU=> 0  >PFo Q.X'   )ŠL  miroir Q. '  (bQ./kNO X   (QRy ' S( 5 Q/ nE/5 /P P.Q.y '   )JEF Q.( TUQ.=?5 .Q./v'     &  !*!*"*  .  miroir aux  miroir_aux (x :: accu) q in miroir_aux [];;

0

2a QR$ ('Q/8'S& =LEX'y 3 $ P.i   cNO X   X h5 / v  ‰ ‚Š‚'\X =ˆf.\PFo+4E.EF't.)$ QR 0NOt& $ )   h 0 /EF Q.a4('Q.' ' 5 Q/  ( (   (  (  a  hf/ &'S'S4  }P/j.)$ QR /) miroir aux l accu

1



*

 ,     



v‰ ` ‚Š 

`

‚Š 

v‰

v‰







&

Q/ /P. .Xi =>= )$ PR S45=?v‰ ‚Š   v‰ `  aŠ  D234D) X)$ Q/ &)$     05 …4E.EF'nR $  QR NO miroir l h' 5&Q/ 'SkE.=> 7 M  %Q/ /  Q/M)  /?)$ 5 05j& $ )   ( iP. ' o 5PR5 P. 4. E EF'iR $  QR NO)



'  

  

{c5 0 Q.XJNO /  

bits

UQ/ ‚U  j'S'   P.)M56. / & f‚h "wP8o Q/}   V| 

1

*"

!"

1

 *"

1 

& 1 ! *!*"*

1.

Chapitre 3

Analyse math´ ematique des algorithmes 3.1

Complexit´ e

s\o (t('CP.) =LE/'y j $ P8o Q/%('T h5 0 6.=?J) X   L 7 $ ('Q/F|

   '6    Š  $ =?  M& $  )5( ‰O'Sˆ =LEX'y  $ -  "$ "$  Š

J 5=LEtMPFo yD $  QR   ‰e'ˆ =LE/'y $ "JsFvE/'Sh)j=



;4h  %( J 8'Sˆ XK(     jP.' o hPbP/>)`   / '8wP.

 .Q/)8o   MEth '4h   P.   /TQ/J hPR   .X''=?c')M'Sh )iP/ =LEX'y J $ Q. (5 ‚|





*

+ " '    5&% +3 ,   "8 '6 5% "-  3 ,   "8 '6  $38 ,    "$ 

 







 =LE/'y $ |/ ‰O' T 3Š‰S4 7 &?) )Š    =LE/'y $ |. ‰ aŠ ‰e ?)h))Š   =LE/'y $ |. w‰ k'aŠ&=Vh iE‚h& w‰ 3Š‰e ?)h))Š   =LE/'y $ |F w‰  Šw‰e=? (CU ./ =??)h)L' hQ/     .N)$ 5 Q.L 7 : ‚ / ?)h)w / XŠ s‚)j('TU  6/=? D=V4 5  '‰Sf‚h$   T3 $ &$ h'nQRkQ.Xˆ  4$ TU  P.    EF QR. $ T/ Š3; a'     $ '$ =?5 4E/4)7  L





 



 

$# 





$#  

$# 

 

  



 

 #  

  



 

 





4   " 6' 5%0 $7kGR( 

XJQ.Xk=V(5Q/vQR 'vEF QR' 4('Q.'  ` .  (' h 



   

CAML

let recherche_dicho x t = let rec cherche_entre g d = if d < g then false else let m = (g + d) / 2 in if x = t.(m) then true else if x < t.(m) then cherche_entre g (m - 1) else



6

Q. \U Q. F Y  

P. QRy   ‚)U 

 

 



:. 

# 

 

 

 



 '  -      , 7   -  '6   ' -       ,0-- ,0 2   "   "   

cherche_entre (m + 1) d in cherche_entre 0 (vect_length t - 1);;

@BA  DCF E

 

$

Complexit´ e de la recherche dichotomique s L/ =vf/5wP.L) =LEt(( 

XM' h P8o Q//ˆ 56/556XvP. 56X h5 => Q/k)Kk=V  hR ‚ $ E‚4v"' T  =LE/'y b $ P. 'S 56X56/JP. 56/ h5 => Q/b  MP/ Xb 1 w‰O' T aŠMPX(/k 7 'Sv-. P.Q}54fX'4(Q bP/ X  Qno (Q%   /P?Eth  hTU  EFQRM b)    &P/JE‚45) Q. D'j54fX'4(QVP/j' o XPR   `V 7  : j( / ‚P.  Q/  IM /  E/5 T(=>= J $ %





CAML

let tri_bulle t = let echange i j = let temp = t.(i) in t.(i)    4Š

*!*"* *!*"*

‰4Š

))



P Q.'=? ˆ ‰    Šˆ8o   vE‚hˆQ./ U5   P/ eas‚>X =ˆf.LPFo   / P.  D  ˆP/ /w'>X =ˆf.ˆP/? QRE/')L‰  Šk)U    PR K /5t|8 'DC l   i‰  )Š "R ?E‚ QRi$ Et43' o  / =ˆf/'&P. \E‚ =wQR4  /3VP/Q.yw'Sh   \PR   5 ?' |')3EF5=ˆQ.54  / )U) ‰4Š  ‰ aŠ J' J(Q.   >/s\o 4E/E/' )4       JQ.XjfX     }P.B  ' U  >

*

 





 

 

:R+"

 '   ,.-  '  8, 7  ,.- &  ' ' 



 

@BA  DCF E

 







d&  [w‰ Š

# 



 

$# 

"  - "!  "    2 

"$ '   -       ,0-

 



  b'QRi =VhTU i=> 5   ‰ P/(X ˆŠ R  P X&'bX =ˆf.M=? (CU }P8o 

{\}T5 QRE‚(D' iEF5=ˆQ.54  /iP.B'   Xt| d&  [

 

 







 

d&  [w‰ Š





d&  [w‰

 

 

"

(' (

D‰  

"



)Š 

"



D‰ !





Analyse du tri bulle



,b(XD5 QX&')M)h ' / =ˆf.jP/ =LE‚4(  /cP.Q Ff/Q.''bhhQR8| 

 



‰ aŠ 





‰ 3Š

 



‰ 3Š

i‰ 

sF/ =ˆf.jP/b (/ NO  &PRQ} ‚fXQ.''j(Q.8| 















Š ‰



‰ 3Š Y  `wP/h/&' =? '' QR&)h‰e' 4f/'4(Q)KM 4$ Š  : D‰ ‰ Š&PX(/? a 7 56XUQXkE‚h  (TkP/h/ 'SLfF QX' P ˆc$ 5 -/   x` ‚ …EFQ. Q. '  Q// . for k   'b54fX'4(Q  *0‰ )Š * * *  *‰  4Ši }E/'S)h&   *‰ `UŠ   "*!*!*   #  M ' Ne(QR (Q.5(%P.… =LEt4(  /LQ/ P8o $ '$ =?  cEt45=>   !*"*!*    Q. 8

MK  =? &QREM$ 5 Q.5J 7   E/'QXiQ//  =LEt4(  ? Q.E.EX'$ =?( 5 )U  # 'E.=>  $ '$ =?       ‰O' hQXV' o l8o QR ' ?EthLP/}  /'' a 'M8o Cl1Ethˆ5 Q QRw  % =LEt4( 

 QRE/E/' $ =?5h 0)ŠU{3%/ 5(    'bX =ˆf.jP8o /P.    M 

   }

     R % f.  MhQ5 h('





w‰ Š 

$#  







‰

)Š   ‰













,# 

#   E.R $  5n'D/ =ˆf.3P.i Q.E/' c‰ RŠa    %h   ,      5









 



   'nQ/      4o )KMM 7 PR \'\/ =vf/5\P8o   X P J'SjEF5=ˆQ.54  ?h

 )$  / 7 234 J (XKNOk‰   # {\/Q.   tv 7 56XhQXb) =LEt(( 

>‚ Q& $   VNeh 0&Q. (XKNO  7 'S-.%Q/V(XKNO& Q.E.EX'$ =?( 5 234j) X)$ Q/ U' / =vf/5bP.b (XKNO5iD$  -/3|





&

ˆ‰ Š 

$#  







‰"

 Š Y  "R‰ 

&



   w‰ Š 

‰ 



w‰ Š

sF/ =ˆf. P.b (/ NO  &P. 37 5bPRQ%/ =vf/5bP. =LEt4( 

/DPFo Q.Neh5QRJ' &)$ ( 



 

  

 

Š   

   

[  



  

  

[

G

[

G









   

   

   

  

[

G

[

G

[

G

[

G

f‚

fF)

4fF

f‚h

44f

hf

f‚h

4fF

 3.3.4

G

:. :

, " ' '6   2    -6 ,. %('    '  %      :       ,0



Comparaison des tris



s k4f/')hQ1 Q/ ( P. //'X =ˆf.P.ˆ =LE‚4(  / 

D $ ')   cQ/'' de/    

‰ Š

‰ Š

‰ Š 





‰ aŠ







‰ Š ‰ Š

‰ Š







‰ Š ‰ Š

B8(XKNO5 =? (C =V4y

=> 





‰ aŠ ` ‰ aŠ







‰ aŠ

‰ Š ‰ Š







‰ aŠ

‰ Š ‰ Š

4f/ ' $ X 

Q.

Q.



;P.>( ''  ' o+('TU  6/=?j) =>=?X jEt4j) =LE‚45&P/Q.y $ '$ =?5 ' }' R $ Q.'4 Q/JEt4JyR =LE/')Š  v'b6& $ h( 7 =?&E/'Q/ / P/(X)('Q/'   ' 5 Q/   ]  _‰ T(/PXŠFs‚?E.=> E. Th=>=?vQ. i  ? 7 ' o   E.5 )Kˆ'

Q. (F|

CAML

let exponentiation x n = let p = ref(1.) in for i = 1 to n do p := !p *. x done; !p;;

de'n&)$     05 =wQ.' EX' 44  X  sFP.Q.y 7 =?bh'T h5 6.=?bbf‚hQRM'S=V(5Q/b Q/ hh 3|



  

             

 ‚1)K&E‚(   ‚1)KM =LEth 0

CAML

let rec match | 0 | 1 | _

@BA  DCF E

  

expo_rapide x n = n with -> 1.; -> x; -> let y = expo_rapide x (n / 2) in if (n mod 2 = 0) then y *. y else x *. y *. y;; Complexit´ e de l’exponentiation rapide



jsF hQ/  " R' o ('T h5 0 6.=?JP8o yE‚ /  S4  >(E/ P.j&)$     05J' T ‰ aŠ&=wQ.' EX' 44  X  "jsF hQ/   Q.c 5 \Et(i hPi5  5(3Q.L5(f/')(Q \P. $ '$ =?  i‰SEF Q.D/ Q/\P/ c   ŠsFb=V4Q/DNO /PX(=?(' )K Š jP.bR $ h5Th. D'b54fX'4(Q%



19

1

[| t.(0); ... ;t.(m); ... ; t.(n-1) |] P/   ''  5UQX  *0‰  Š   *0‰ `Š "*!*"*  *0‰   )Š  ?" *0‰  Y4Š !*"*!*  *‰  )Š de'a Q wJ /Q.  P.bR$ Q. ' cR $ Q.5 U =?i)b('TU   6.=?JQRM' Q/ 4f/')hQ



1X

[|t.(0); ... ; t.(m-1) |] j Q.J' 

QX 5(f/')(Q [|t.(m+1); ... ; t.(n-1) |] EF QRj hf/  .  7 'S-/ Q.}54fX')(V Q  5 $ 

!

9 "

H

`

`

:

!

9

"

:

!

9

`

!.+9



>

:

€

H

%  '  ' "   P.bNSQ/  %P/(Xi'b 5 ‚4E/ P/R234J 5  ' o $ 54EFbP.  

de'n8o CvEth&PFoK$ 54EF

"

€

€ H

2  

Et( 0  )KJ QX S('

1

1 

E/ U 

1 



1

1







!/ A 

>



,.#" '  ",0   %    %  '  ' "&   

2a QRw t  ) Q/w'SEt4     F P o Q. 4f/')hQ  & (   "*!*!*   $#  ( . a/ Q/vh'' /k t  )QXwQ./>f‚ Q/ 'wNO w XP.yi)$ ˆEt4   &` .aJ=V(   . i' o  h( S(&P.bfF Q/ 'bQ. (‰OU  J'-.TQ.5 !/ AUŠX|  

 

I













   1  .    1X -.%P.j'f‚ Q/ 'MNO h   }(Q.b5 Q.DM$ Q/V /P.   

 



&0

 

&

.







'S ‰eU  0J'Sk-.TQ.5b!. €Š

1 E/ U  

1 

1

!. € 

1  

1 



z 7 5MNO /  %Q. F kv 7 ' o )KE/ ‚| CAML

let multiplie p q = let dp = vect_length p - 1 (* degr´ e de p*)









1 : 





and dq = vect_length q - 1 in (* degr´ e de q*) let r = make_vect (dp + dq + 1) 0 in (* remplit les coefficients du produit*) for i = 0 to dp do for j = 0 to dq do r.(i + j) ’a |.Q.}E.R $ P. )4iQ/ ‚ )K5 F'SkE/ 'b)KJ P. is_empty : ’a pile -> bool





|/  QR5jQ/Y$ '$ =? =?MP. 'SkE/ '

EXQ/6

 

9 

4   '   -  ,0/"# ,

85 %

,    

0

‰ sFh \de G8 5 

* QR5Š 4E.EF' )$ 



EF hE

=8>

     -   ' "$ ,.- % -     

† /vNe   =>=? P.P.ˆ  Qt('  JQ//kE/ 'k  P8o =V(TU /JQ//kE/ 'kPFo+h   )jP/h/JQ/1  5(Q.h)/s‚wQ/  .  M EF QRb =LE/ 'JP.)jh   )‰ 4E/4)7 $ ' $ =?5D

JP=V(   =LEM$ ( U (( ))  FQ.XMNO X  ?R $  QR MP.  =? aQ. ' )$ &V .NO h5=V4 Q/&  iQ//  85  ;bo   DQ//J  5Q/QR  Gad G (( )) ‰ G8 0 Jde G8 5  QR5Š/{3''bNO /  //b =>=? Q//Q/QXwk 7 Q/}TUQ. 56/‚|. }EFQ.J  . Q  MQ/Y$ '$ =?  k 7 Q./b-.' .  5&'bE.=> ? $ '$ =? i   PRQ. 4 sF M= $ 6X P/ &h   )$   ?$ '$ =? iP. 'Sk-.'M' 5

Q. X retire_file : ’a file -> ’a |Q.}E/R)$ PR )(=? P/>' o (f/54ŠFs‚ h UQno Q/  XK QX5QRk)KˆP8o ( $  F 'D  kE..)$   $ E‚4kQ. X Q/P P/L' o+4 f.LUQ/ cEF    7 P/  -.' ‰  Q/ (f/5) Š

.

Q.'

!

}  /

23'Q/

 

" {\

 . %P x | Sin e1 -> sin (evalue e1) | Exp e1 -> exp (evalue e1) | Plus (e1, e2) -> (evalue e1) +. (evalue e2) | Moins (e1, e2) -> (evalue e1) -. (evalue e2) | Divise (e1, e2) -> (evalue e1) /. (evalue e2) | Mult (e1, e2) -> (evalue e1) *. (evalue e2);;

de'Fno )K&E‚hM(TR)$ (f/'JP.P R-.y%) QR(5V  (=ˆf/  T Q/  a)4? ''}& $  )  P. wE‚468 7   v QY(' hˆP/ L6CEF h 68)7 ) =LEX'  05 )4h)7  ˆ‰O 'DNe(QR $ ' => X' k)KE‚h ) F) U ')Et4  )P.L'S}56X^ /w   EF XP/(w 7 P/ j/ =ˆf. M   5h k) 5Š‚s‚h ^ 'PFo Q. \   P/ (XKNO  =?JQ./ 5''k56X ^X Q//Q.   P/  ?‰OQ/. )$ )(h)7 5   P print_char ‘F‘ | Var c -> print_char c | Non p1 -> print_string " non "; lin´ eaire p1 | Et (p1, p2) -> print_char ‘(‘; lin´ eaire p1; print_string " et "; lin´ eaire p2; print_char ‘)‘ | Ou (p1, p2) -> print_char ‘(‘; lin´ eaire p1; print_string " ou "; lin´ eaire p2; print_char ‘)‘;; #lin´ eaire p;; ((p ou q) et ( non p ou (p et

non q)))- : unit = ()



2a QR 5) XK Q/j' o (f/5P8o Q//E/5 EF hEF     w 7 E‚4  P.v'S>/ 54   ' &4$ ( 5 ')JE‚468 7   M

 &  )$  )5( 5) ‰  =>=?%EF QR')?yE/5)  /?h'T3$ f/ Q/) Š n=Vh V'' ?P/ .X>    (6.   (5 )  EFQR}  QRE/E.5 =?



*

 

*

 

) 5( X & o 'F8o CkEthMP8o h=vfX TUQ. $  %/  Et4jy =LE/'  ‰ 7 'E/'Sh) P/w‰  ‰

Šv

ŠŠ "H  EF QR ( jQR '  % $ T(' =?JQ.XkX h5(   EFU

K-RyR ‚ =>=?EF Q.b'   y E.    / ('T3$ f.5 QX  j E‚h M(' 5&P.bE‚45 68 7   )

4  " '65%0 97 *

6.3



S´ emantique

6.3.1

´ Evaluation d’une proposition logique

;< / P &M $ 'Sk45 S4f/'n

4   '6 , ,.- 65        65  ,0 '  %  , 7   " '  '   - " '  "$ ,.- 7   9  %  3    '6 , - 8,   '    "    ))

  "  ,   '    "    3   ,  - %  -  "8- %   ))

   ,    %   "8- 3   ,  - %  -  "8- %   7 ,0 ' ,.- 5%0   ,  - ' "  "8" - %   7 ; ,.- ) )2 ' ,.-!  - '  -$" '  "    -  '  -   ,.,     7 7 ((  (  &%  ))

 7  7 ((    '6 , - ,   '    "    ))

 7 B7 ((   - %  - %     )) 7 #/ ,.-  3      -! ' 8 - ' . -  ,.-! $ 5%0 -

'&'  -/ ,  ",02" % " '  "$ ,.-   65  , 8 , ?  7 

7   

Exemple 8. 5 (( , 5 (( ,  5 (( ,











 

7



7





 

7



 '  ,.-!  - 8,.-   5%0 ,  -! 8 5%0 -- %  $",0  7     7      7      7   7  , "  8, 2 ' %

 5%  $"$  ,   8 5%0  5&%  $"$  ,   8 5%0   5%  $"$  ,   8 5&%  '   #  7      

 '   # $ 7   









 







$7 





7



   5%0   /" ' "   ." ' ,.-  5%0 ,0 3   ,  - %  -2 "- %     7 †M/?(Q. v5 56/. Q/vE‚ QR=? 5Qno Q//ˆE. hEF    „)KkQ//L /'QX   ' T Q/wPFo Q.Xˆ$ 5 vP8o 6CEF h 68)7 )  "*!*"*  4 /   Ji 7 ( 

//tE‚48' o (fXQRP.3k=?  (FQ/  1  ˆ  8Q.Xc / $ QX/)a' T Q/3P.)F6CEF h 68)7 )  "*!*"*  w s8} )56.. Q/V =LEX' 7 5wP/LR $ 

'QR  0X  EF Q.v=? 5ˆQ8o Q.XLE. hEF        ˆQ//?) X)$ Q/X w' TU QXwP8o 6C  





EF 68 7     !*!*"*    J'SvQ. (5n|  }   j')D6CEF h 68) 7 )c  

QX\NO h5=?j)   X ‰SEtcNO 5X$ =? D/  =V('4ŠR|

*





      hf/ J(' h   !" 





*!*"*



+  " % -  -

 

 



*!*"*



  t   )6

"     ‰ePR  X  /iP. ' 0$ hQRy.Š   6CE‚ 68 7     Q/ 8 JP.  :RJ† X(  A\EF Q.a hf/  . aP/  $ 5(E‚)   4  $ ' => Xh‚P/ 8h( S4fX')  !.MI&fF Q. vv 7 'v / $ Q/ /)J' TU QX  



'   



6

[ Q/&^  )3EFPRQ> Q.DQ.XQ//ˆ Uh b(Q fF QRP.ˆ'Sw5 QR5vP.ˆP       'LE. hEF     de'\C >Q// (( )) ((

h M(Q}fF Q.JP. 'S Q.  P.ThQ/56/ +(' h )) J{ayE.5 =?&Et(&Q//bNO h5=wQ.'jP/b'Sv' T Q/ P.bE/5 E‚ U   /\')JL =V4  /   A B "J{ayE.5 =?j(' hi'ˆ .t( 5(/)  C :RjW?)$  Q/PR5M' o $ / T=?J  QR '  hi' i5(f/' MP/bD$  $  !.jW?)$  Q/PR5M' o $ / T=?J  QR '  hi')('Q/'‚P. ' TU QX  7 >45 S4f/' b‰ !  "*!*!* !  Š R  h   jQ.XJNO /  ?fF  ' )$ //  RQ/ ' o P / =>  c'JX =ˆf. P/ EF h    5 E. )   QRt X    < M 7 R)$ ('  8' o+hP.P. 0  kP.=?    wˆP8o Q//w/ Q.U ''v  Q/ \;< =>=? /bEt4NO  =?k'S 

=>=?v‰  ŠDP/%? 7 ' o+( P.JP8o Q/VP. => hP/PR   // QR 4& /Q.  &NO  =? /D'k =>=?‰ , 4ŠDP/  k7' o ( P/ P8o Q/1(QR5 P. => hP/PR   // QR(h[3   F'Sk54fX' P.)=?}P.)> 5}‰   *!*"*   Š  ‰ ! * " * , * Š   n '  Q wjP/ =? 5 %$  MEX'Q/  QREt> 4 KNe( 5(> J' o lE.XP Y =LE.5')>P< $ 'h LP/VE/5 Et(T4   Q. j

 E/5 EF h   //'a(QL/ =ˆf.=?  EF QRw) XK Q/ 0LP.)kKCEF w   EF /PX(=V46&$ =V4 UQX=? > 7 ' o Q./   PR    >P/VP/QRy KCEF ) QR '  bP/ M) /  5Q/  QR\Et((= $  .)$ 3EF QRb X $ P.&(Q.yVKCEF MP8o  T X8|

*

* 

CAML

type nombre = Entier of int | Reel of float;;



{ $  U /iQ.XjNO /  %Q. nhP/PR   ./bP. QRyVX =ˆf.  U Q. '  ( Entier (p + q) | Reel p, Reel q -> Reel (p +. q) | Entier p, Reel q -> Reel (float_of_int p +. q) | Reel p, Entier q -> Reel (p +. float_of_int q);; addition_nombres : nombre -> nombre -> nombre =

[\   8Q. (QR5yR =LE/'JEF QRMNe( bP/b' o+45 0 6.= $  Q/JPX(/

|

CAML

type reel_bar = Reel of float | MInfini | PInfini ;; Le type reel_bar est d´ efini. #let rec addition x y = match (x, y) with | Reel x, Reel y -> Reel (x +. y) | Reel x, MInfini -> MInfini | Reel x, PInfini -> PInfini | MInfini, PInfini -> failwith "operation non definie" | _ -> addition y x;; addition : reel_bar -> reel_bar -> reel_bar = #addition (Reel 3.) (Reel 4.);; - : reel_bar = Reel 7.0 #addition (Reel 4.) PInfini;; - : reel_bar = PInfini #addition PInfini MInfini;; Exception non rattrap´ ee: Failure "operation non definie"

:RMBiCUEF)=?4 TUQ.=? 5Š



{3 )h=>' R)'SkP/ //a| CAML

#type liste = NIL | Cons of int * liste;; Le type liste est d´ efini. CAML

#let l = Cons (1, Cons(2, Cons(3, NIL)));; l : liste = Cons (1, Cons (2, Cons (3, NIL)))

J'SkNO X  }Q. n)('Q/'J'Sk' .TQXQ. 0 | Cons (x, q) -> 1 + longueur q;; longueur : liste -> int =

de'8  } $ T('=? cEF   fX'bP.P=? 5(    ) .t^  JP.)&/ =vf/5) ' &=? h5 ' )$ iP.Q'S(/T(T0+Š  ‰Sf‚Š%†& Q. DE.XP 'S  wP/L' o (t('C QR'y 4('J‰eQ. Q.y…P.L'yt7 =? 5Š vQ. i'S  (/ NO h5=?j   e ‰    C     4  R y k  4  X f     (  

 4  Š   ‰e4Š%sF>E‚4  ˆ) X hR $ ?? 7 ' |‚  E/47 54  1P.w' o+4f/5ˆP.w C4yRL(fX  (  EF QRE. PRQ.  PRQ% P.   = )$ PR S(  ' o hE. =>  &X Q/ 05JEF QRj.-.}E. PRQ. MQ. yD $ Q.54fX'j1) P.b=Vh56. /

    -

6

)

2-6,0/" 

' " " ' 

;=V4  tŠ P/ 'kEt(  ‰eQ. n h   E‚ /PVhQ wP.QE/5 T(=>=?)Š



+-   ",0 5%0

-  ,.-

PRQ'S(.T(TU&P.

Annexe B

Aide m´ emoire CAML J{3 5 Q/) ) Q.MP/ succ n 2aR $ P< $ )   QRiP/ pred n W&)K5 P/ 'ˆPR    QX' PR // mod bQX h  &P/b'SˆPR    }Q/ ' P. .X / ('Q.b4fX

'Q/ abs  U5  >R $  '‚U5&  int_of_float  U5  V  MU5M56t^ / string_of_int  U5  V56t^ /bU&  int_of_string "  %(/ 0EXQ.'S4  VP.bfX 05  land n p lor n p lxor n p lnot n n lsl m n lsr m :RjG8' h ( 

!.

*

{aJ' TU UQXJfX k 7 f/  Q%' TU QXMf/ vk 7 f/  Q yR'QX NFfX 0vk 7 f/  ) =LE/' $ =?cfX k 7 f/  , $ 4(' P/

 ƒfX 05k 7 T(Q/56X , $ 4(' P/

 ƒfX 05v 7 PR5   

* *

+. -. *. /. x ** n . R $  'XM 

*

{aMfF  ' $  1‰( $ ('QX4  ?E‚45) QX4Š A && B QVfF  ' )$  ‰($ ('Qt4  VEt4   Q/ )Š A || B M }fF  ' $   not A ;< =LEt4(  / < = > 9j;&4h)7   ,$ -..   P8o Q/}44)7 k‰e  h )    &P8o Q//b'    rev l 4`J{3R)$   

h  ) I ?56/Q/%   print_int I ?56/Q.}R $  ' print_float I ?56/Q. 44)7  print_char I >56XQ.Xb56t^ / P.)4h)7 5) print_string 23h Lv 7 'Sk' TX print_newline() Ui Q/ '  for i = 0 to n do expression_1; ... expression_n done; while condition do expression_1; ... expression_n done;

4"MBa   

Ba  j =LE/'n| if condition then expression; Ba  j XPR   ./ ')| if condition then expression_1 else expression_2; I 'SEX'  PFo Q./ yE/5)    }EFQ.J%E/'Sh))     #     "!     J' o 45 h 0 do q := !r1 / !r2; temp := !r1; r1 := !r2; r2 := !temp mod !r2; temp := !u1; u1 := !u2; u2 := !temp - !q * !u2; temp := !v1; v1 := !v2; v2 := !temp - !q * !v2 (* INV : a * u1 + b * v1 = r1*) done; (* r2 = 0, r1 = pgcd(a, b), a * u1 + b * v1 = pgcd(a, b) *) (!u1, !v1);;



'  





mystere 5;; 5 4 3 2 1 1 2 3 4 5 - : unit = () #mystere "BONJOUR" 0;; BONJOUR ruojnob- : unit = ()



'  

  

s8kE/5 => 7 &NO X  Q. ' b'SE/5 E.5 $ M $ PFo+hP.P. 0  F$ |

  



 



: 





` 

!%

`

P.k ''Ne) …UQX









   

Š

:4‰ !  # 



  ! 

Š



#  

let rec binomial n p = match (n, p) with | _, 0 -> 1 | 0, _ -> 0 | _ -> (binomial (n - 1) (p - 1)) + (binomial (n -1) p);; J'SvP/QRy  7 =?J'SE/5 E.5 $ M $ P.bNeh

h5  (   |

 

 





 

  



let rec binomial n p = match (n, p) with | _, 0 -> 1 | 0, _ -> 0 | _ -> n * (binomial (n - 1) (p - 1)) / p;;



'  





*

234i XPRQX  ˆQR D ? / PF7 \' o hPDQX QX'.QR  `RU,o+4E.()7 F' o 6CEF h 68)7 iPFo /PRQX   E/Q.  Q/b‰



'  



let rotation p = let q = new () in while not is_empty p do push (pop p) q done; let temp = pop q in while not is_empty q do push (pop q) p; done; push temp p;;

0





t2a QR\' o $ '$ =? n=> . =V('  `#   )Š   exp x (n - 1) 4('Q.'  ,# 

iE‚4DP=V4   NO /  //'' ! =LEM$ 4  €

"R



!€



R W? $ Q.5  0$

A! RH!

E/5 Q.bP/ ) h 5)   55=> X( 

 "R W?$ N4$ 5 / ) H W&)56/556X P. 56/ h5 => Q/ :UA ' &)$ (  :9

A`

)GR X  / 9

€ R)$ Q.5 U  4€ R)$ Q.5 U c  => Xh')

:`

S  …‰ ('T h5 0 6.=?4Š

"U"

:UZ

"R

9U€

T B34f/'4(QRy

I N

Z XPRQ/   "R deXPRQ/  %  5Q/ QR'' de45 S(&P/bf‚ Q/ '

PMfX  }NO /P X( 

?PFo Q.XbNO /  R $  QR U Ba   Z B8 :€ fF  Xj RN4$ 5  QR !U:

".

f/Q.'' :UH NSQ/   !€ Et4J /     !` Et4j$ ')   :€ 4EX P. 9. K4f/ ' $ :€ BiCEF 9 BiCEFP.P. .& $   9H BiCEF  $ Q/=g$ R $  H"  h 5  49  =>=? H:  =>=?j.)$ QR 0NO HU:

V [\)  QR H