Valid XHTML     Valid CSS2    

Listing du fichier progie1.php

 

00001     <?php
00002     #   # (gH)   -_-  perf1.php  ;  TimeStamp (unix) : 17 Septembre 2014 vers 16: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] = "Programmer en $R avec $rstudio;
00025     $idr
++; $tableauDesRubriques[$idr] = "Bien programmer en $R;
00026     $idr
++; $tableauDesRubriques[$idr] = "Occurences du minimum et du maximum" ;
00027     $idr
++; $tableauDesRubriques[$idr] = "Plus grande r&eacute;p&eacute;tition" ;
00028     $idr
++; $tableauDesRubriques[$idr] = "Plus grande sous-chaine commune" ;
00029     $idr
++; $tableauDesRubriques[$idr] = "Programmation d'un a&eacute;roport" ;
00030     $idr
++; $tableauDesRubriques[$idr] = "Que faut-il conclure de ces exercices&nbsp;?" ;
00031     
00032     $tdmCRLM 
= new tdm($tableauDesRubriques) ;
00033     $tdmCRLM
->titre() ;
00034     $tdmCRLM
->menu("oui","oui","nou") ;
00035     
00036     afficherSolutions
($numSerie) ;
00037     
00038     finSection
() ;
00039     
00040     debutSection
() ;
00041     $numExo 
;
00042     
00043     ## -------------------------------------------------------------------------------------------
00044     
00045     $tdmCRLM
->afficheRubrique("oui") ; $numExo++ ; #  Programmer en R avec Rstudio
00046     
00047     ## -------------------------------------------------------------------------------------------
00048     
00049     blockquote
() ;
00050     
00051     blockquote
() ;
00052     
00053     p
("texte") ;
00054     echo "Pourquoi vaut-il mieux utiliser "
.href($rstudioh,$rstudio,"nou")." que l'interface standard si on veut programmer en $R&nbsp;?" ;
00055     finp
() ;
00056     
00057     finblockquote
() ;
00058     
00059     solution
($numExo,$numSerie) ;
00060     
00061     p
("texte") ;
00062     echo href
($rstudioh,$rstudio,"nou")." est un environnement tr&egrave;s pratique pour programmer&nbsp;:" ;
00063     echo " on y trouve notamment un panneau qui affiche les variables avec leur valeur, il y a un " 
;
00064     echo " \"d&eacute;buggeur\" qui permet de tester les programmes ligne par ligne, on dispose d'un panneau pour voir et " 
;
00065     echo " revoir ou exporter les graphiques, 
$rstudio sait installer les packages, afficher les \"help\", les donn&eacute;es etc." ;
00066     finp
() ;
00067     
00068     finsolution
() ;
00069     
00070     finblockquote
() ;
00071     
00072     ## -------------------------------------------------------------------------------------------
00073     
00074     $tdmCRLM
->afficheRubrique("oui") ; $numExo++ ; # Bien programmer en R
00075     
00076     ## -------------------------------------------------------------------------------------------
00077     
00078     blockquote
() ;
00079     
00080     blockquote
() ;
00081     
00082     p
("texte") ;
00083     echo "Est-ce que tout le monde peut devenir une bonne programmeuse ou un bon programmeur&nbsp;?" 
;
00084     finp
() ;
00085     
00086     finblockquote
() ;
00087     
00088     solution
($numExo,$numSerie) ;
00089     
00090     p
("texte") ;
00091     echo "Malheureusement, non. Tout le monde peut apprendre &agrave; programmer, &agrave; condition d'y passer beaucoup de temps." 
;
00092     echo " Mais comme pour la conduite automobile, bien programmer demande un lourd investissement et des capacit&eacute;s " 
;
00093     echo " personnelles inn&eacute;es..." 
;
00094     finp
() ;
00095     
00096     finsolution
() ;
00097     
00098     finblockquote
() ;
00099     
00100     ## -------------------------------------------------------------------------------------------
00101     
00102     $tdmCRLM
->afficheRubrique("oui") ; $numExo++ ; # Occurences du minimum et du maximum"
00103     
00104     ## -------------------------------------------------------------------------------------------
00105     
00106     blockquote
() ;
00107     
00108     blockquote
() ;
00109     
00110     p
("texte") ;
00111     echo  "Montrer comment on peut trouver  &laquo;"
.vert("&agrave; la main")."&raquo; sur la liste de valeurs " ;
00112     echo b
("1&nbsp;8&nbsp;2&nbsp;5&nbsp;8&nbsp;7&nbsp;8") ;
00113     echo " le nombre d'occurences du maximum en un seul passage. " 
;
00114     finp
() ;
00115     
00116     finblockquote
() ;
00117     
00118     solution
($numExo,$numSerie) ;
00119     
00120     p
("texte") ;
00121     echo "Il suffit de remarquer que si on change la valeur courante du maximum il faut remettre le \"compteur\" du nombre " 
;
00122     echo " d'occurences &agrave; 1 et que, sinon, si on trouve &agrave; nouveau le maximum courant, il faut incr&eacute;menter (augmenter de un) ce compteur. " 
;
00123     echo " Voici un exemple de traitement d&eacute;taill&eacute; de ces id&eacute;es&nbsp;:" 
;
00124     finp
() ;
00125     
00126     pre_fichier
("occmax.txt","cadre") ;
00127     
00128     finsolution
() ;
00129     
00130     finblockquote
() ;
00131     
00132     ## -------------------------------------------------------------------------------------------
00133     
00134     $tdmCRLM
->afficheRubrique("oui") ; $numExo++ ; # Plus grande r&eacute;p&eacute;tition
00135     
00136     ## -------------------------------------------------------------------------------------------
00137     
00138     blockquote
() ;
00139     
00140     blockquote
() ;
00141     
00142     p
("texte") ;
00143     echo "Etant donn&eacute;e une chaine de caract&egrave;res, expliquer comment trouver la plus grande sous-chaine r&eacute;p&eacute;t&eacute;e d'au moins deux caract&egrave;res, " 
;
00144     echo " son nombre de r&eacute;p&eacute;titions et ses occurences. " 
;
00145     finp
() ;
00146     
00147     p
("texte") ;
00148     echo b
("Application 1.") ;
00149     echo " quelle est la plus grande sous-chaine r&eacute;p&eacute;t&eacute;e pour \""
.vert("MON BEAU BATEAU BLEU")."\"&nbsp;?" ;
00150     finp
() ;
00151     
00152     p
("texte") ;
00153     echo b
("Application 2.") ;
00154     echo " quelle est la plus grande sous-chaine r&eacute;p&eacute;t&eacute;e pour de la s&eacute;quence d'ADN de " 
;
00155     echo " "
.href("../../../Abdc/Data/putida_gb_1.fasta.zip ","Pseudomonas putida GB-1") ;
00156     echo " qui est un des cinq exemplaires s&eacute;quenc&eacute;s de " 
;
00157     $pseudop 
"http://en.wikipedia.org/wiki/Pseudomonas_putida" ;
00158     echo href
($pseudop,em("Pseudomonas putida"),"gvertf")."&nbsp;? ";
00159     echo " Que risque-t-on d'obtenir&nbsp;?" 
;
00160     finp
() ;
00161     
00162     
00163     finblockquote
() ;
00164     
00165     solution
($numExo,$numSerie) ;
00166     
00167     p
("texte") ;
00168     echo "Mais ce n'est pas un probl&egrave;me facile&nbsp;!" 
;
00169     finp
() ;
00170     
00171     p
("texte") ;
00172     echo "Si on s'&eacute;tait content&eacute; de demander la plus grande sous-chaine r&eacute;p&eacute;t&eacute;e, c'est-&agrave;-dire la lettre ou le caract&egrave;re " 
;
00173     echo " le plus fr&eacute;quent, cela aurait &eacute;t&eacute; simple, puisqu'il aurait suffi de compter combien de fois chaque caract&egrave;re est " 
;
00174     echo " r&eacute;p&eacute;t&eacute; et de stocker ces valeurs dans une liste puis de trouver le maximum dans cette liste, ce qu'on sait d&eacute;j&agrave; faire." 
;
00175     finp
() ;
00176     
00177     p
("texte") ;
00178     echo "Malheureusement on ne sait pas quelle est la longueur de la chaine et si on devait construire toutes les sous-chaines de " 
;
00179     echo " un, deux, trois... caract&egrave;res, cela prendrait un tr&egrave;s grand temps, surtout pour la s&eacute;quence d'ADN " 
;
00180     echo " qui compte environ 6 millions de caract&egrave;res." 
;
00181     finp
() ;
00182     
00183     p
("texte") ;
00184     echo "C'est l&agrave; o&ugrave; l'informatique th&eacute;orique peut nous aider. Il est possible de d&eacute;montrer que la m&eacute;thode la plus rapide " 
;
00185     echo " consiste &agrave; utiliser un " 
;
00186     echo b
("arbre des suffixes").". " ;
00187     echo " On trouve alors (sans surprise) "
.vert("EAU")." pour la chaine ".vert("MON BEAU BATEAU BLEU")."." ;
00188     finp
() ;
00189     
00190     p
("texte") ;
00191     echo "Que risque-t-on d'obtenir pour "
.b("Pseudomonas putida GB-1")."&nbsp;?" ;
00192     echo " L'informatique est ici incapable de le pr&eacute;dire. " 
;
00193     finp
() ;
00194     
00195     p
("texte") ;
00196     echo "Qu'obtient-on pour "
.b("Pseudomonas putida GB-1")."&nbsp;?" ;
00197     echo " La r&eacute;ponse \"brute\" est une s&eacute;quence de "
.b("4015")." caract&egrave;res, " ;
00198     echo " r&eacute;p&eacute;t&eacute;e "
.b("2 fois").", aux positions ".b("183130")." et ".b("542146")."." ;
00199     echo " Comment l'obtient-on et " 
;
00200     echo " &agrave; quoi correspond-t-elle&nbsp;?" 
;
00201     echo " C'est une autre histoire... qui sera compt&eacute;e dans un autre exercice." 
;
00202     finp
() ;
00203     
00204     finsolution
() ;
00205     
00206     finblockquote
() ;
00207     
00208     ## -------------------------------------------------------------------------------------------
00209     
00210     $tdmCRLM
->afficheRubrique("oui") ; $numExo++ ; # Plus grande sous-chaine commune
00211     
00212     ## -------------------------------------------------------------------------------------------
00213     
00214     blockquote
() ;
00215     
00216     blockquote
() ;
00217     
00218     p
("texte") ;
00219     echo "On voudrait trouver la  plus grande sous-chaine de caract&egrave;res commune d'un ensemble de s&eacute;quences d'ADN bact&eacute;rien, " 
;
00220     echo " par exemple pour les " 
;
00221     echo "les 10 g&eacute;nomes s&eacute;quenc&eacute;s de "
.em("Helicobacter pylori")." " ;
00222     echo href
("../../../Abdc/Data/pyloris.fasta.zip","pyloris.fasta.zip").". " ;
00223     echo " Que devrait-t-on trouver&nbsp;?" 
;
00224     finp
() ;
00225     
00226     finblockquote
() ;
00227     
00228     solution
($numExo,$numSerie) ;
00229     
00230     p
("texte") ;
00231     echo "Mais ce n'est pas un probl&egrave;me facile, &agrave; nouveau&nbsp;!" 
;
00232     finp
() ;
00233     
00234     p
("texte") ;
00235     echo "La taille des chaines mises en jeu (plusieurs millions de caract&egrave;res chaque) et la difficult&eacute; inh&eacute;rente " 
;
00236     echo " au probl&egrave;me (car on ne peut pas se contenter de chercher la plus grande sous-chaine de caract&egrave;res commune " 
;
00237     echo " pour chaque paire de s&eacute;quences) font que pour r&eacute;soudre ce probl&egrave;me il faut utiliser des m&eacute;thodes tr&egrave;s " 
;
00238     echo " sophistiqu&eacute;es qui d&eacute;passent le cadre de ce cours. " 
;
00239     finp
() ;
00240     
00241     finsolution
() ;
00242     
00243     finblockquote
() ;
00244     
00245     ## -------------------------------------------------------------------------------------------
00246     
00247     $tdmCRLM
->afficheRubrique("oui") ; $numExo++ ; # Programmation d'un a&eacute;roport
00248     
00249     ## -------------------------------------------------------------------------------------------
00250     
00251     blockquote
() ;
00252     
00253     blockquote
() ;
00254     
00255     p
("texte") ;
00256     echo "On voudrait programmer la gestion des vols d'un a&eacute;roport. " 
;
00257     echo " Donner les grandes lignes de la r&eacute;solution de ce probl&egrave;me." 
;
00258     finp
() ;
00259     
00260     finblockquote
() ;
00261     
00262     solution
($numExo,$numSerie) ;
00263     
00264     p
("texte") ;
00265     echo "L&agrave; encore, c'est un probl&egrave;me dificile, ne serait-ce que par l'ampleur des contraintes &agrave; prendre en compte." 
;
00266     echo " Il est clair qu'on ne peut r&eacute;pondre &agrave; cette question en dix minutes, ni m&ecirc;me en dix heures..." 
;
00267     finp
() ;
00268     
00269     finsolution
() ;
00270     
00271     finblockquote
() ;
00272     
00273     ## -------------------------------------------------------------------------------------------
00274     
00275     $tdmCRLM
->afficheRubrique("oui") ; $numExo++ ; # Conclusion
00276     
00277     ## -------------------------------------------------------------------------------------------
00278     
00279     blockquote
() ;
00280     
00281     blockquote
() ;
00282     
00283     p
("texte") ;
00284     echo "Que montrent, "
.em("in fine")." ces exercices, et surtout les trois derniers&nbsp;?" ;
00285     echo " Quel impact cela peut-il avoir sur les cours qui suivent et sur la r&eacute;ponse aux deux questions " 
;
00286     echo "&laquo;"
.em("combien de temps faut-il pour savoir bien programmer&nbsp;?")."&raquo; et " ;
00287     echo "&laquo;"
.em("peut-on tout programmer&nbsp;?")."&raquo;&nbsp;?" ;
00288     finp
() ;
00289     
00290     finblockquote
() ;
00291     
00292     solution
($numExo,$numSerie) ;
00293     
00294     p
("texte") ;
00295     echo "On peut en d&eacute;duire que certains probl&egrave;mes requi&egrave;rent une grande technicit&eacute;, ce qui demande de connaitre des " 
;
00296     echo b
("structures de donn&eacute;es")." complexes, de savoir calculer math&eacute;matiquement la complexit&eacute; d'un algorithme " ;
00297     echo " -- ce qui n'est pas toujours facile -- " 
;
00298     echo " et d'y consacrer beaucoup de temps." 
;
00299     finp
() ;
00300     
00301     p
("texte") ;
00302     echo "En cons&eacute;quence nos exercices ne pourront pas s'attaquer &agrave; des probl&egrave;mes trop complexes et il ne " 
;
00303     echo " pourra s'agir que d'une "
.b("initiation &agrave; la programmation").". " ;
00304     finp
() ;
00305     
00306     p
("texte") ;
00307     echo "Pour bien programmer, en plus des techniques classiques qu'on apprend souvent en quatre ans progressifs " 
;
00308     echo " (du baccalaur&eacute;at au master d'informatique), il faut compter des ann&eacute;es... de pratique. " 
;
00309     echo " Heureusement, pour de la programmation classique d'ing&eacute;nieur " 
;
00310     echo " (comme lire des fichiers, automatiser des s&eacute;ries de calculs bien rod&eacute;s, produire des statistiques et des " 
;
00311     echo " graphiques...) quelques dizaines d'heures de pratique suffisent, une fois les concepts maitris&eacute;s. Ouf, " 
;
00312     echo " cette formation sera quand m&ecirc;me utile&nbsp;!" 
;
00313     finp
() ;
00314     
00315     p
("texte") ;
00316     echo "Il est clair qu'on ne sait pas aujourd'hui tout programmer. Malgr&eacute; des d&eacute;cennies d'"
.em(vert("intelligence artificielle")) ;
00317     echo " nous ne savons toujours pas programmer des machines qui parlent, qui comprennent les humains... " 
;
00318     echo " Par contre tout ce qui est automatisable (parce que syst&eacute;matique, calculable) et tra&ccedil;able (parce que connu (statistiquement, " 
;
00319     echo " math&eacute;matiquement...) est programmable, notamment en 
$R." ;
00320     finp
() ;
00321     
00322     finsolution
() ;
00323     
00324     finblockquote
() ;
00325     
00326     ## -------------------------------------------------------------------------------------------
00327     
00328     finPageExercices
($numSerie) ; # contient finSection() et finPage() ; la fonction est dans progi.php
00329     
00330     ?>

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)