ࡱ> >Root EntryF**$&u&l2jE@0/ * F*sesa&1quneemnt25ueHF/<+1nIformatoin4//4co%ainv3|>Z194SummaryInformationt/en/*81 ^ e//4( T Z&'()*+,-/02456789:CDEFGHIJK[\]^_1DocumentSummaryInformation8+,/0CompObj6789CFGJXP0TableUVWXZ[\o^-Bpqrstuv]wwwwwwwwwwwwwwwwwwwwwwww [4@4NormalCJOJPJQJmH D@DTitre 1$<@&5CJKHOJQJ>@>Titre 2$<@&56OJQJ8@8Titre 3$<@&OJQJ2A@2Police par dfaut&o&Titre 0$,o,JavaCJOJQJmH n:>!   = n )%#$M)+Cfln} hi,9TViqwy -/Bafnp] ^      D  , B O \ w y   = C E G O o p 36KW},p$@$7r$6$6$cS$6$cS$cS$6$6$6$7r$6$6$cS$cS$cS$cS$cS$cS$cS$cS$cS$cS$cS$cS$7r$6$6$cS$cS$cS$cS$cS$7r$6$6$7r$6$6$cS$cS$cS$cS$cS$cS$cS$cS$cS$cS$cS$7r$6$6$cS$cS$cS$cS$cS$7r$6$6$cS$cS$cS$cS$cS$cS$cS$cS$cS$cS$cS$cS$cS$cS$7r$6$6$cS$cS$cS$cS$cS$cS$cS$cS$cS$cS$cS$cS$7r$6$6$cS$cS$cS$cS$cS$cS$cS$cS$cS$cS$cS$cS$cS$cS$cS$cS$7r$6$6$cS$cS$cS$cS$cS$cStype que les lments du tableau. Ne rend aucun rsultat, le tableau tant modifi par effet de bords. voidappliquer_f(type[]tableau) { int i = 0; while (i < tableau.length) { tableau[i] = f(tableau[i]); i++; } } Exemple Soit f la fonction successeur: int f (int x) { return(x + 1); } Vrifier que les lments sont ordonns Soit f(x, y) une fonction de comparaison entre deux lments. booleanelement_ordonnes(type[]tableau) { boolean ok = true; int i = 0; while ((i < (tableau.length-1) && ok) { if (not(f(tableau[i], tableau[i+1]))) ok = false; i++; } return ok; } Questions Que se passe-t-il si les fonctions acceptent des tableaux vides? Adapter les schmas. Ecrire une fonction qui retaille un tableau partiellement rempli. =DX\^b$VZiopxy=DKLx5 R d l Y y } D ~   ? C  Deijhz~*W^T^6CJH*OJQJ6 6H*mH 6mH mH [%#$T"$<_egvx%#$T"$<_egvxS T  1 3 F N T V b d l X Y  " ' / 1 A C D m   P d q CD  ^S T  1 3 F N T V b d l  X Y  " ' / 1 A C D m   P d $cS$cS$cS$7r$6$6$cS$cS$cS$cS$cS$7r$6$6$cS$cS$cS$cS$cS$cS$cS$cS$cS$cS$cS$cS$cS$7r$6$6%#$M)+Cfln} hi,9TViqwy -/Bafnp] ^      D  , B O \ w y   = C E G O o p 36KW},p@@@((ppppppppppppp(p @         @            @  [4@4NormalCJOJPJQJmH D@DTitre 1$<@&5CJKHOJQJ>@>Titre 2$<@&56OJQJ8@8Titre 3$<@&OJQJ2A@2Police par dfaut&o&Titre 0$,o,JavaCJOJQJmH ::!   D  )^ d gD(1=DX\+1289=NR}    !/GI]_lpv~Y\"& " R U e h q v | D G y |    4 < \ d h l m x     --5:moprsv5D$S$&35! y  g h j  ' ) .QmlSihir:Schmas de programmation A @--{-,@@GTimes New Roman5Symbol3 Arial3Times;Helvetica5  Monaco"13FyJ3F)3F5I 0d Schmas de programmationmlml@ P0!B , 6@B ˳SSʼ ˱||ΚΚ|E Π |α  ˴˱Κ˚˱b '˚Ќ̚˱˚Κb (Ҵ˚ˌ̴˚δ˚ΚαE_ δΚҌΚЌ  ̚_S +Ҍ˴ЌҚΚ˚˚̢ |u ,ЌҴˠ˱rΚ˚αˠ   r  rΙ}PΚ Κs ˱r} ̱r4˚̱  @_˚rr+ҴЌer4}Κ˚s 6Κ΃1}˚T}ЃTTr44̚Κ E BTTaa˚arreTTaҌrTTraT4YΚr1˚D_ΚTTTT˚˃1aTTT̃TTa}TT˚㚚˚r˚bDaTlTa˚˃}aTTTTT}aaTTTla˚ך2saTlT˥lTTTTTTlr}TTTTTTTΚr  rΚ|=E˚΃TTlaTT̃TaTarTTlTTT͙l㚚 ;TTa     ( N N N N N N N  @    @          ^< d gDUnknownml=DX\+126GKv}' "#%-09>DRjlY]aee k l o    $ . 6 C F P S \ a g u     O S Y a b l w } ~  7>DHKNW\p5D$L+-VX/1   y { C D b n ,pmlSihir:Schmas de programmation A @22{{{22P%/2^ _ e k l p q w ~ mn@@A<@^@@r @A:A:A:A:@0@A:A:A:A:@p@A:A:A:A:@@A:A:A:A;@@A ;A ;A;A$;@@A&;A(;A4;A@;@>@AB;AD;AP;A\;@@A^;A`;Al;Ax;@ @Az;A|;A;@"@@%@GTimes New Roman5Symbol3 Arial3Times;Helvetica5  Monaco"q3FJ3FJ3FI 0d %Schmas de programmationmlmlPTlrP˃lTaԥb(TTarr1rar}1P1rrrTlre̥Tal_<ΚlTTTP11Prrarrr}r}˥˱˚s=rΚˠaT॥P1rl}1r1r1PllrΚΪͱ̚˚α˚ @Κrrlraaraerrra11rP1llͪΚΚΚO㱚˚αrTal}1rrrlTr} FDocument Microsoft WordNB6WWord.Document.8Κ˚㚚|  sΚ ՜.+,D՜.+,D hp|  'ma  Schmas de programmation Titre 6> _PID_GUID'AN{61B1A380-D092-11D2-A5C6-D51B4570A92C}|E_|ʟ˙ Oh+'0t  $ 0 < HT\dl'Schmas de programmation.0chmllNormal mlm214Microsoft Word 8.0a@78@h;6 j@N ^d@ujI 11PαΠ _ 111$s r1˱' P(('||H__⎎IS⎟˱ Π˚Πˠ P˚㚚P 鎟Κ˳r1㚚㚚㚚|b}r˚rr˚̚_S⩎˚fr̠r1r㱚|v˚Κˠ˚ΚΚ_On consid|HH(FG(HH(d'`rH! ˱P|_  ˱rα1˱˙rΚ˚˚P˚̱Κ̱|Κδ˚ˌЃҚ̥Κ4SҌ㴌1ҥ㚚4d_P}Ҍ˱˚44"1ҌҴ̌˚44db%ΠαaΚ˥Ҍ҃Хa˚g $jbjb |>n]T ::::N4h \prrrrrr,O"C$bUfp,,pJ\\/ h :\Schmas de programmation Gnralits On considre un tableau tableau dlments de type type. type peut prendre nimporte quel nom de type, par exemple int. Vous pouvez spcifier les valeuri qui doivent tre de type type. La fonction principale de votre programme de test sera la suivante: public static static void main(String [] args) { type [] tableau = {valeur0, valeur1, valeurn}; autre_type resultat = mafonction(tableau); System.out.println(resultat); } mafonction doit tre remplace par le nom de la fonction que vous voulez tester. Les fonctions correspondant des schmas de programmation utiles sont introduites ci-dessous. Recherche de llment le plus petit selon une fonction F Soit p(x, y) une fonction de comparaison entre deux lments. Nous souhaitons rendre lindice de llment le plus petit de tableau selon p. Le tableau nest jamais vide (cest--dire quil a au moins un lment). int recherche_plus_petit_element(type[]tableau) { int indice = 0; int min = tableau[indice]; int i = 0; while (i < tableau.length) { if (p(tableau[i],min)) {min = tableau[i]; indice = i;} i++; } return indice; } Exemple Soit tableau un tableau dentiers et p la fonction <. boolean p(intx, inty) { return (x < y); } Commentaire Cest la mme chose avec la fonction >, lors de la dfinition de recherche_plus_grand_element. Comptage des lments vrifiant un prdicat Soit un prdicat p, on veut compter tous les lments de tableau qui vrifient p. int compter_elements(type[]tableau) { int nb = 0; int i = 0; while (i < tableau.length) { if (p(tableau[i])) nb++; i++; } return nb; } Exemple Soit p la fonction (x < 0) boolean p (int x) { return(x < 0); } Recherche du premier lment vrifiant p Soit un prdicat p, on veut retrouver lindice du premier lment vrifiant p. Si aucun lment ne vrifie p alors retourne 1. int rechercher_premier_element(type[]tableau) { boolean trouve = false; int indice = -1; int i = 0; while ((i < tableau.length) && (!trouve)) { if (p(tableau[i])) {indice = i; trouve = true;} else {i++;} } return indice; } Recherche du dernier lment vrifiant p Soit un prdicat p, on veut retrouver lindice du dernier lment vrifiant p. Si aucun lment ne vrifie p alors retourne 1. Ici, on est oblig de parcourir tout le tableau. int rechercher_premier_element(typetableau[]) { int indice = -1; int i = 0; while (i < tableau.length) { if (p(tableau[i])) {indice = i;} i++; } return indice; } Recherche de tous les lments vrifiant p Soit un prdicat p, on veut retrouver les indices des lments vrifiant p. int[]rechercher_tous_elements(type[]tableau) { int [] resultat = new int [tableau.length]; for(int i = 0; i < resultat.length; i++) {resultat[i] = -1;} int i = 0; int j = 0; while (i < tableau.length) { if (p(tableau[i])) {resultat[j] = i; j++;} i++; } return resultat; } Appliquer f de tous les lments On veut transformer tous les lments du tableau selon une fonction f. Attention f doit rendre un rsultat du mme Root EntryF**$&u&l2jE@0/ * F*sesa&1quneemnt25ueHF/<+1nIformatoin4//4co%ainvL<Z194SummaryInformationt/en/*81 ^ e//4( T T !"#$%=A?CDEFGHIJKMNOPQRSUVWXYDocumentSummaryInformation8+,/0CompObj6789CFGJXP0TableUVWXZ[\o^-Bpqrstuv]wwwwwwwwwwwwwwwwwwwwwwww AN{61B1A380-D092-11D2-A5C6-D51B4570A92C}|E_|ʟ˙ Oh+'0t  $ 0 < HT\dl'Schmas de programmation.0chmllNormal mlm213Microsoft Word 8.0a@vN+@7d@N ^d@ܴ FDocument Microsoft WordNB6WWord.Document.8Κ˚㚚|  sΚ ՜.+,D՜.+,D hp|  'ma  Schmas de programmation Titre 6> _PID_GUID' jI 11PαΠ _ 111$s r1˱' P(('||H__⎎IS⎟˱ Π˚Πˠ P˚㚚P 鎟Κ˳r1㚚㚚㚚|b}r˚rr˚̚_S⩎˚fr̠r1r㱚|v˚Κˠ˚ΚΚ_ [4@4NormalCJOJPJQJmH D@DTitre 1$<@&5CJKHOJQJ>@>Titre 2$<@&56OJQJ8@8Titre 3$<@&OJQJ2A@2Police par dfaut&o&Titre 0$,o,JavaCJOJQJmH u::!   D u )d e    K  3 I V c ~ D J L N V v w :=R^3w$7r$6$6$cS$cS$cS$cS$cS$cS$cS$cS$cS$cS$cS$cS$7r$6$6$cS$cS$cS$cS$cS$cS$cS$cS$cS$cS$cS$cS$cS$7r$6$6$cS$cS$cS$cS$7r$6$6$cS$cS$cS$cS$cS$cS$cS$cS$cS$cS$cS$cS$cS$7r$6$6e w 3w^; d gDUnknownml(1=DX\+1289=NR}   .&)*,47@EKYqs $`dhll r s v    + 5 = J M W Z c h n |    # V Z ` h i s ~ '>EKORU^cw5D$S24]_68    J K i u 3wmlSihir:Schmas de programmation A @{{{,e f l r s w x ~ tu@@A:A:A:A:@0@A:A:A:A:@p@A:A:A:A:@@A:A:A:A;@@A ;A ;A;A$;@@A&;A(;A4;A@;@>@AB;AD;AP;A\;@@A^;A`;Al;Ax;@ @Az;A|;A;@"@@%@GTimes New Roman5Symbol3 Arial3Times;Helvetica5  Monaco"q3FzJ3F)3F6I 0d Schmas de programmationmlml|E_|ʟ˙k |_bb|_ bו|⼼|%SSPP!H b _ܰHԕss_bs||SEﰰ|bESs|S_b E_Ssg jbjb <u]4K\          ,b 1         ~   ,,  J     Schmas de programmation Gnralits On considre un tableau tableau dlments de type type. type peut prendre nimporte quel nom de type, par exemple int. Vous pouvez spcifier les valeuri qui doivent tre de type type. La fonction principale de votre programme de test sera la suivante: public static static void main(String [] args) { type [] tableau = {valeur0, valeur1, valeurn}; autre_type resultat = mafonction(tableau); System.out.println(resultat); } mafonction doit tre remplace par le nom de la fonction que vous voulez tester. Les fonctions correspondant des schmas de programmation utiles sont introduites ci-dessous. Recherche de llment le plus petit selon une fonction F Soit p(x, y) une fonction de comparaison entre deux lments. Nous souhaitons rendre lindice de llment le plus petit de tableau selon p. Le tableau nest jamais vide (cest--dire quil a au moins un lment). int recherche_plus_petit_element(type[]tableau) { int indice = 0; int min = tableau[indice]; int i = 0; while (i < tableau.length) { if (p(tableau[i],min)) {min = tableau[i]; indice = i;} i++; } return indice; } Exemple Soit tableau un tableau dentiers et p la fonction <. boolean p(intx, inty) { return (x < y); } Commentaire Cest la mme chose avec la fonction >, lors de la dfinition de recherche_plus_grand_element. Comptage des lments vrifiant un prdicat Soit un prdicat p, on veut compter tous les lments de tableau qui vrifient p. int compter_elements(type[]tableau) { int nb = 0; int i = 0; while (i < tableau.length) { if (p(tableau[i])) nb++; i++; } return nb; } Exemple Soit p la fonction (x < 0) boolean p (int x) { return(x < 0); } Recherche du premier lment vrifiant p Soit un prdicat p, on veut retrouver lindice du premier lment vrifiant p. Si aucun lment ne vrifie p alors retourne 1. int rechercher_premier_element(type[]tableau) { boolean trouve = false; int indice = -1; int i = 0; while ((i < tableau.length) && (!trouve)) { if (p(tableau[i])) {indice = i; trouve = true;} else {i++;} } return indice; } Recherche du dernier lment vrifiant p Soit un prdicat p, on veut retrouver lindice du dernier lment vrifiant p. Si aucun lment ne vrifie p alors retourne 1. Ici, on est oblig de parcourir tout le tableau. int rechercher_premier_element(typetableau[]) { int indice = -1; int i = 0; while (i < tableau.length) { if (p(tableau[i])) {indice = i;} i++; } return indice; } Recherche de tous les lments vrifiant p Soit un prdicat p, on veut retrouver les indices des lments vrifiant p. int[]rechercher_tous_elements(type[]tableau) { int [] resultat = new int [tableau.length]; for(int i = 0; i < resultat.length; i++) {resultat[i] = -1;} int i = 0; int j = 0; while (i < tableau.length) { if (p(tableau[i])) {resultat[j] = i; j++;} i++; } return resultat; } Appliquer f de tous les lments On veut transformer tous les lments du tableau selon une fonction f. Attention f doit rendre un rsultat du mme d q CDvy1MSUgDvy1MSUgijgh')*R  ,-.=CEQST^os  Fgijgh')*R.=CEQST^^;mH / =!"#$%|HH(FG(HH(d'`public static public static public static public static public static public static public static public static public static d q CDvy1MSUgDvy1MSUgijgh')*R  ,-.=CEQST^os  Fgijgh')*R.=CEQST^^;<mH / =!"#$%|HH(FG(HH(d'`public static public static public static public static public static public static public static public static public static