Valid XHTML     Valid CSS2    

Listing du fichier progie4.php

 

00001     <?php
00002     #   # (gH)   -_-  progie4.php  ;  TimeStamp (unix) : 16 F&eacute;vrier 2015 vers 21:26
00003     
00004     error_reporting
(E_ALL E_NOTICE E_STRICT) ;
00005     
00006     include_once("std7.php"
) ;
00007     include_once("progi.php"
) ;
00008     include_once("statuno7.php"
) ;
00009     
00010     $R 
s_span("R","gbleuf") ;
00011     $numSerie 
;
00012     debutPageExercices
($numSerie) ;
00013     
00014     ## -------------------------------------------------------------------------------------------
00015     
00016     p
("texte") ;
00017     echo "" 
;
00018     finp
() ;
00019     debutSection
() ;
00020     
00021     $tableauDesRubriques 
= array() ;
00022     $idr 
;
00023     
00024     $idr
++; $tableauDesRubriques[$idr] = "Equivalent TANT QUE d'une boucle POUR" ;
00025     $idr
++; $tableauDesRubriques[$idr] = "Nombre d'occurrences du maximum avec puis sans boucle" ;
00026     $idr
++; $tableauDesRubriques[$idr] = "Sommes par colonne" ;
00027     $idr
++; $tableauDesRubriques[$idr] = "Des boucles TANT QUE surprenantes " ;
00028     $idr
++; $tableauDesRubriques[$idr] = "Calculs complexes sur s&eacute;ries de fichiers" ;
00029     # $idr++; $tableauDesRubriques[$idr] = "Lenteur des boucles POUR" ;
00030     
00031     $tdmCRLM 
= new tdm($tableauDesRubriques) ;
00032     $tdmCRLM
->titre() ;
00033     $tdmCRLM
->menu("oui","oui","nou") ;
00034     
00035     afficherSolutions
($numSerie) ;
00036     
00037     finSection
() ;
00038     
00039     debutSection
() ;
00040     $numExo 
;
00041     
00042     ## -------------------------------------------------------------------------------------------
00043     
00044     $tdmCRLM
->afficheRubrique("oui") ; $numExo++ ; # Equivalent TANT QUE d'une boucle POUR
00045     
00046     ## -------------------------------------------------------------------------------------------
00047     
00048     blockquote
() ;
00049     
00050     blockquote
() ;
00051     
00052     p
("texte") ;
00053     echo "Ecrire en R une boucle TANT QUE &eacute;quivalente &agrave; la boucle POUR suivante" 
;
00054     finp
() ;
00055     
00056     pre_fichier
("e4s1.txt","cadre") ;
00057     
00058     finblockquote
() ;
00059     
00060     solution
($numExo,$numSerie) ;
00061     
00062     p
("texte") ;
00063     echo "Voici une solution possible&nbsp;:" 
;
00064     finp
() ;
00065     
00066     pre_fichier
("e4s1cor.txt","cadre") ;
00067     
00068     p
("texte") ;
00069     echo "Ce n'est en g&eacute;n&eacute;ral "
.b("pas")." une bonne id&eacute;e que d'utiliser la valeur d'un indice " ;
00070     echo " de boucle en dehors de la boucle. Un indice de boucle doit &ecirc;tre une " 
;
00071     echo b
(" variable locale")." qui ne doit pas exister en dehors de la boucle." ;
00072     finp
() ;
00073     finsolution
() ;
00074     
00075     finblockquote
() ;
00076     
00077     ## -------------------------------------------------------------------------------------------
00078     
00079     $tdmCRLM
->afficheRubrique("oui") ; $numExo++ ; # Nombre d'occurrences du maximum avec puis sans boucle
00080     
00081     ## -------------------------------------------------------------------------------------------
00082     
00083     blockquote
() ;
00084     
00085     blockquote
() ;
00086     
00087     p
("texte") ;
00088     echo "On veut trouver le maximum du vecteur V et son nombre d'occurrences. " 
;
00089     echo " Ecrire une premi&egrave;re boucle POUR qui d&eacute;termine le maximum et une seconde boucle POUR qui calcule le nombre d'occurrences." 
;
00090     finp
() ;
00091     
00092     p
("texte") ;
00093     echo " R&eacute;&eacute;crire ensuite tout cela avec une seule boucle POUR puis enfin donner la \"bonne\" solution 
$R sans boucle explicite. " ;
00094     finp
() ;
00095     
00096     p
("texte") ;
00097     echo "Serait-ce beaucoup plus compliqu&eacute; de renvoyer la ou les positions du maximum dans le vecteur&nbsp;?" 
;
00098     finp
() ;
00099     
00100     finblockquote
() ;
00101     
00102     solution
($numExo,$numSerie) ;
00103     
00104     p
("texte") ;
00105     echo "Voici la premi&egrave;re solution demand&eacute;e&nbsp;:"
;
00106     finp
() ;
00107     
00108     pre_fichier
("maxocc1.txt","cadre") ;
00109     
00110     p
("texte") ;
00111     echo "Puis la seconde&nbsp;:"
;
00112     finp
() ;
00113     
00114     pre_fichier
("maxocc2.txt","cadre") ;
00115     
00116     p
("texte") ;
00117     echo "Enfin, voici la \"vraie\" solution qui utilise " 
;
00118     echo lafonction
("Extremes","","max()")." et le filtrage vectoriel&nbsp;:";
00119     finp
() ;
00120     
00121     pre_fichier
("maxocc3.txt","cadre") ;
00122     
00123     
00124     p
("texte") ;
00125     echo "Vouloir d&eacute;terminer la ou les positions du maximum est &agrave; peine plus compliqu&eacute;. C'est un peu " 
;
00126     echo " d&eacute;licat parce qu'on ne connait pas &agrave; l'avance la taille du vecteur qui contiendra les positions. " 
;
00127     echo " Voir l'" 
;
00128     echo href
("../Programmation_avancee/progr.php?n=2&amp;m=e","exercice 3") ;
00129     echo " de notre cours num&eacute;ro 2 de " 
;
00130     echo href
("../Programmation_avancee/","programmation $R avanc&eacute;e") ;
00131     echo " et sa " 
;
00132     echo href
("../Programmation_avancee/progr.php?n=2&amp;m=s","solution") ;
00133     echo "." 
;
00134     finp
() ;
00135     
00136     p
("texte") ;
00137     echo "La solution 
$R vectorielle tient en une seule instruction&nbsp;:" ;
00138     finp
() ;
00139     
00140     pre_fichier
("occposmax.txt","cadre") ;
00141     
00142     finsolution
() ;
00143     
00144     finblockquote
() ;
00145     
00146     ## -------------------------------------------------------------------------------------------
00147     
00148     $tdmCRLM
->afficheRubrique("oui") ; $numExo++ ; # Sommes par colonne
00149     
00150     ## -------------------------------------------------------------------------------------------
00151     
00152     blockquote
() ;
00153     
00154     blockquote
() ;
00155     
00156     p
("texte") ;
00157     echo "On dispose d'une matrice de valeurs num&eacute;riques, comme par exemple celle d&eacute;finie par " 
;
00158     finp
() ;
00159     
00160     pre_fichier
("somcol1.txt","cadre") ;
00161     
00162     p
("texte") ;
00163     echo "Calculer la somme de chaque colonne avec une boucle POUR puis sans boucle POUR &agrave; l'aide de "
;
00164     echo lafonction
("apply").". Quelle est enfin la \"bonne\" solution $R&nbsp;?" ;
00165     finp
() ;
00166     
00167     finblockquote
() ;
00168     
00169     solution
($numExo,$numSerie) ;
00170     
00171     p
("texte") ;
00172     echo "Voici la solution avec une boucle POUR explicite " 
;
00173     finp
() ;
00174     
00175     pre_fichier
("somcol2.txt","cadre") ;
00176     
00177     p
("texte") ;
00178     echo "La solution avec "
.hrrr("apply")." utilise une boucle POUR implicite " ;
00179     finp
() ;
00180     
00181     pre_fichier
("somcol3.txt","cadre") ;
00182     
00183     p
("texte") ;
00184     echo "La \"vraie\" solution fait appel &agrave; "
.lafonction("colSums")."&nbsp;:" ;
00185     finp
() ;
00186     
00187     pre_fichier
("somcol4.txt","cadre") ;
00188     
00189     finsolution
() ;
00190     
00191     finblockquote
() ;
00192     
00193     ## -------------------------------------------------------------------------------------------
00194     
00195     $tdmCRLM
->afficheRubrique("oui") ; $numExo++ ; # Des boucles TANT QUE surprenantes
00196     
00197     ## -------------------------------------------------------------------------------------------
00198     
00199     blockquote
() ;
00200     
00201     blockquote
() ;
00202     
00203     p
("texte") ;
00204     echo "Que font les boucles TANT QUE suivantes&nbsp;?" 
;
00205     finp
() ;
00206     
00207     pre_fichier
("boucles.r","cadre") ;
00208     
00209     finblockquote
() ;
00210     
00211     solution
($numExo,$numSerie) ;
00212     
00213     p
("texte") ;
00214     echo "La premi&egrave;re boucle permet de voir &agrave; quel moment 
$R confond un tr&egrave;s petit nombre avec 0 (puisque 0=0/10)." ;
00215     echo " La seconde montre &agrave; quel moment 
$R confond un tr&egrave;s grand nombre avec l'infini." ;
00216     echo " Voici un extrait de l'ex&eacute;cution de ces boucles qui, heureusement, ne durent pas longtemps&nbsp;:" 
;
00217     finp
() ;
00218     
00219     pre_fichier
("boucles.sor","cadre") ;
00220     
00221     p
("texte") ;
00222     echo " On pourra consulter les variables et utiliser les fonctions suivantes pour avoir plus de d&eacute;tails " 
;
00223     echo " sur les limitations machines et la version de 
$R utilis&eacute;e&nbsp;:" ;
00224     finp
() ;
00225     
00226     pre_fichier
("machine.sor","cadrebleu") ;
00227     
00228     
00229     finsolution
() ;
00230     
00231     finblockquote
() ;
00232     
00233     ## -------------------------------------------------------------------------------------------
00234     
00235     $tdmCRLM
->afficheRubrique("oui") ; $numExo++ ; # Calculs complexes sur s&eacute;ries de fichiers
00236     
00237     ## -------------------------------------------------------------------------------------------
00238     
00239     blockquote
() ;
00240     
00241     blockquote
() ;
00242     
00243     p
("texte") ;
00244     echo "On veut traiter "
.b("n")." fichiers, disons " ;
00245     echo href
("ficSerie01.txt").", " ;
00246     echo href
("ficSerie02.txt").", " ;
00247     echo href
("ficSerie03.txt")."... " ;
00248     echo " mais ce pourrait &ecirc;tre bien s&ucirc;r des fichiers Excel." 
;
00249     echo " Une fois le traitement de chaque fichier effectu&eacute;, on veut obtenir un tableau et un fichier .CSV r&eacute;sum&eacute; des traitements. " 
;
00250     echo " Le traitement consiste &agrave; renvoyer le nombre de lignes et le plus petit age et le plus grand age." 
;
00251     echo " Peut-on aussi calculer la moyenne des ages et la moyenne g&eacute;n&eacute;rale des ages ainsi&nbsp;?" 
;
00252     finp
() ;
00253     
00254     
00255     finblockquote
() ;
00256     
00257     solution
($numExo,$numSerie) ;
00258     
00259     p
("texte") ;
00260     echo "Par rapport &agrave; l'exemple de la s&eacute;ance 4, il suffit de modifier ce que renvoie la fonction qui traite les fichiers et " 
;
00261     echo " d'augmenter le "
.em("data frame")." r&eacute;sultat, soit le code&nbsp;" ;
00262     finp
() ;
00263     
00264     pre_fichier
("seriefic05.r","cadre") ;
00265     
00266     p
("texte") ;
00267     echo " Exemple d'ex&eacute;cution avec les fichiers cit&eacute;s&nbsp;:" 
;
00268     finp
() ;
00269     
00270     pre_fichier
("seriefic05.txt","cadre") ;
00271     
00272     p
("texte") ;
00273     echo " Fichier CSV produit&nbsp;:" 
;
00274     finp
() ;
00275     
00276     pre_fichier
("seriefic05.csv","cadre") ;
00277     
00278     p
("texte") ;
00279     echo " Pour la moyenne de l'age, on ne peut pas proc&eacute;der de la m&ecirc;me mani&egrave;re parce que la moyenne des moyennes " 
;
00280     echo " n'est pas la moyenne g&eacute;n&eacute;rale. Il faudrait calculer une "
.b("moyenne pond&eacute;r&eacute;e")." des moyennes par fichier..." ;
00281     echo " Si le calcul n'est pas associatif, il n'est pas possible de traiter s&eacute;par&eacute;ment les fichiers, c'est bien le probl&egrave;me " 
;
00282     echo " des fameux "
.em("map/reduce")." li&eacute; au Big Data&nbsp;: la somme et le max sont associatifs, pas la moyenne..." ;
00283     finp
() ;
00284     
00285     finsolution
() ;
00286     
00287     finblockquote
() ;
00288     
00289     ## -------------------------------------------------------------------------------------------
00290     
00291     /*
00292     $tdmCRLM->afficheRubrique("oui") ; $numExo++ ; # Lenteur des boucles POUR
00293     
00294     ## -------------------------------------------------------------------------------------------
00295     
00296     blockquote() ;
00297     
00298     blockquote() ;
00299     
00300     p("texte") ;
00301     echo "D&eacute;tailler ce que fait le code R suivant et ajouter des instructions " ;
00302     echo " pour savoir combien de temps dure chaque boucle." ;
00303     finp() ;
00304     
00305     pre_fichier("lent.r","cadre") ;
00306     
00307     p("texte") ;
00308     echo "On pourra utiliser notre fonction ".b("duree")."&nbsp;:" ;
00309     finp() ;
00310     
00311     pre_fichier("duree.r","cadrebleu") ;
00312     
00313     finblockquote() ;
00314     
00315     solution($numExo,$numSerie) ;
00316     
00317     p("texte") ;
00318     echo "Not yet!" ;
00319     finp() ;
00320     
00321     finsolution() ;
00322     
00323     finblockquote() ;
00324     */
00325     
00326     ## -------------------------------------------------------------------------------------------
00327     
00328     finPageExercices
($numSerie) ; # contient finSection() et finPage() ; la fonction est dans progi.php
00329     ?>

Pour ne pas voir les numéros de ligne, ajoutez &nl=non à la suite du nom du fichier.

 

 

retour gH    Retour à la page principale de   (gH)