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
= 1 ;
00012     
debutPageExercices
($numSerie) ;
00013     
00014     
## -------------------------------------------------------------------------------------------
00015     
00016     
p
("texte") ;
00017     echo
"" ;
00018     
finp() ;
00019     
debutSection() ;
00020     
00021     
$tableauDesRubriques = array() ;
00022     
$idr
= 0 ;
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
= 0 ;
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)