Valid XHTML     Valid CSS2    

Listing du fichier progie2.php

 

00001     <?php
00002     #   # (gH)   -_-  progie2.php  ;  TimeStamp (unix) : 16 F&eacute;vrier 2015 vers 21:19
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] = "Permutation (simple) de variables" ;
00025     $idr
++; $tableauDesRubriques[$idr] = "&laquo;R&egrave;gles&raquo; d'&eacute;criture des noms de variables" ;
00026     $idr
++; $tableauDesRubriques[$idr] = "Calculs et affichages avec le symbole deux-points" ;
00027     $idr
++; $tableauDesRubriques[$idr] = "Pourcentages et normalisation" ;
00028     $idr
++; $tableauDesRubriques[$idr] = "Valeurs sp&eacute;ciales en $R;
00029     $idr
++; $tableauDesRubriques[$idr] = "La fonction rep" ;
00030     $idr
++; $tableauDesRubriques[$idr] = "Souligner une phrase" ;
00031     $idr
++; $tableauDesRubriques[$idr] = "Les subtilit&eacute;s de la fonction ".b("cat()") ;
00032     $idr
++; $tableauDesRubriques[$idr] = "Calcul du &chi;".sup(2)." d'ad&eacute;quation avec contributions" ;
00033     $idr
++; $tableauDesRubriques[$idr] = "Arbre syntaxique abstrait d'une expression" ;
00034     
00035     $tdmCRLM 
= new tdm($tableauDesRubriques) ;
00036     $tdmCRLM
->titre() ;
00037     $tdmCRLM
->menu("oui","oui","nou") ;
00038     
00039     afficherSolutions
($numSerie) ;
00040     
00041     finSection
() ;
00042     
00043     debutSection
() ;
00044     $numExo 
;
00045     
00046     ## -------------------------------------------------------------------------------------------
00047     
00048     $tdmCRLM
->afficheRubrique("oui") ; $numExo++ ; #  Permutation (simple) de variables
00049     
00050     ## -------------------------------------------------------------------------------------------
00051     
00052     # en 4 instructions, perm. circulaire
00053     
00054     blockquote
() ;
00055     
00056     blockquote
() ;
00057     
00058     p
("texte") ;
00059     echo "On dispose de deux valeurs " 
;
00060     echo b
("a") ;
00061     echo " et " 
;
00062     echo b
("b") ;
00063     echo " dont le contenu peut &ecirc;tre num&eacute;rique, texte ou autre (ce sont peut-&ecirc;tre des listes)." 
;
00064     echo " Trouver une fa&ccedil;on simple de sauvegarder le contenu de chaque variable avant de les permuter, sans doute " 
;
00065     echo " en quatre instructions (commentaires non compris)." 
;
00066     finp
() ;
00067     
00068     p
("texte") ;
00069     echo "Quelle est la solution classique en trois instructions, nomm&eacute;e \"permutation circulaire\"&nbsp;?" 
;
00070     finp
() ;
00071     
00072     finblockquote
() ;
00073     
00074     solution
($numExo,$numSerie) ;
00075     
00076     p
("texte") ;
00077     echo "Voici la solution \"tranquille\" o&ugrave; on sauvegarde chaque variable dans une autre variable" 
;
00078     finp
() ;
00079     
00080     pre_fichier
("permute1.txt","cadre") ;
00081     
00082     p
("texte") ;
00083     echo "Puis la \"fameuse\" solution classique en trois instructions" 
;
00084     finp
() ;
00085     
00086     pre_fichier
("permute2.txt","cadre") ;
00087     
00088     finsolution
() ;
00089     
00090     finblockquote
() ;
00091     
00092     ## -------------------------------------------------------------------------------------------
00093     
00094     $tdmCRLM
->afficheRubrique("oui") ; $numExo++ ; #  «R&egrave;gles» d'&eacute;criture des noms de variables
00095     
00096     ## -------------------------------------------------------------------------------------------
00097     
00098     # camel snake
00099     
00100     blockquote
() ;
00101     
00102     blockquote
() ;
00103     
00104     p
("texte") ;
00105     echo "Il est d'usage d'utiliser au moins trois ou quatre lettres pour les identifiants de variables, " 
;
00106     echo " comme "
.b("nbl")." ou ".b("nblignes")." pour indiquer le nombre de lignes, au lieu d'un simple ".b("n").". " ;
00107     echo " Quelles sont les conventions d'&eacute;criture&nbsp;? Laquelle fournit les identificateurs les plus lisibles&nbsp;?" 
;
00108     finp
() ;
00109     
00110     finblockquote
() ;
00111     
00112     solution
($numExo,$numSerie) ;
00113     
00114     p
("texte") ;
00115     echo "La convention " 
;
00116     echo href
("http://fr.wikipedia.org/wiki/CamelCase","camelCase")." et ses variantes " ;
00117     echo " &eacute;crit les mots coll&eacute;s avec initiale majuscule l&agrave; o&ugrave; la convention " 
;
00118     echo href
("http://en.wikipedia.org/wiki/Snake_case","snake_case")." les s&eacute;pare avec un tiret soulign&eacute;. " ;
00119     echo " D'autres notations sont possibles avec des points. 
$R autorise m&ecirc;me les noms de variables avec des espaces, " ;
00120     echo " ce qui n'est absolument pas pratique. " 
;
00121     finp
() ;
00122     
00123     p
("texte") ;
00124     echo "Utiliser des "
.href("http://fr.wikipedia.org/wiki/Convention_de_nommage","conventions de nommage") ;
00125     echo " pr&eacute;sente de nombreux avantages (voir aussi " 
;
00126     echo href
("http://en.wikipedia.org/wiki/Naming_convention_%28programming%29","naming conventions")."). " ;
00127     echo " Une pratique classique consiste &agrave; utiliser juste ou trois 4 lettres, comme un sigle, avec une " 
;
00128     echo b
("tdc")." (table de correspondance) en d&eacute;but d'algorithme." ;
00129     finp
() ;
00130     
00131     pre_fichier
("nommage.txt","cadre") ;
00132     
00133     p
("texte") ;
00134     echo "Il nous semble que la lisibilit&eacute; est une notion subjective et qu'il est donc difficile " 
;
00135     echo " de pr&eacute;tendre qu'une convention de nommage est vraiment meilleure qu'une autre. Dans les faits, " 
;
00136     echo " certains langages imposent plus ou moins des conventions mais &laquo;" 
;
00137     echo em
("chacun fait ce qui lui plait")."&raquo; au final." ;
00138     finp
() ;
00139     
00140     finsolution
() ;
00141     
00142     finblockquote
() ;
00143     
00144     ## -------------------------------------------------------------------------------------------
00145     
00146     $tdmCRLM
->afficheRubrique("oui") ; $numExo++ ; #  Calculs et affichages avec le symbole deux-points
00147     
00148     ## -------------------------------------------------------------------------------------------
00149     
00150     blockquote
() ;
00151     
00152     blockquote
() ;
00153     
00154     p
("texte") ;
00155     echo "On suppose que "
.("n")." contient 10. Trouver comment g&eacute;n&eacute;rer&nbsp;:" ;
00156     finp
() ;
00157     
00158     ul
() ;
00159     
00160     debutli
() ; p() ;
00161       echo "tous les nombres de 1 &agrave; n"
.sup(2) ;
00162     finp
() ; finli() ;
00163     
00164     debutli
() ; p() ;
00165       echo "le carr&eacute; des nombres de 1 &agrave; n" 
;
00166     finp
() ; finli() ;
00167     
00168     debutli
() ; p() ;
00169       echo "les n premiers nombres pairs, impairs" 
;
00170     finp
() ; finli() ;
00171     
00172     debutli
() ; p() ;
00173       echo "les n premi&egrave;res puissances de 10" 
;
00174     finp
() ; finli() ;
00175     
00176     debutli
() ; p() ;
00177       echo "les n premi&egrave;res lettres de l'alphabet" 
;
00178     finp
() ; finli() ;
00179     
00180     finul
() ;
00181     
00182     finblockquote
() ;
00183     
00184     solution
($numExo,$numSerie) ;
00185     
00186     p
("texte") ;
00187     echo "Voici les r&eacute;ponses, sans plus d'explications&nbsp;" 
;
00188     finp
() ;
00189     
00190     pre_fichier
("avecn.txt","cadre") ;
00191     
00192     finsolution
() ;
00193     
00194     finblockquote
() ;
00195     
00196     ## -------------------------------------------------------------------------------------------
00197     
00198     $tdmCRLM
->afficheRubrique("oui") ; $numExo++ ; #  Pourcentages et normalisation
00199     
00200     ## -------------------------------------------------------------------------------------------
00201     
00202     blockquote
() ;
00203     
00204     blockquote
() ;
00205     
00206     p
("texte") ;
00207     echo "On suppose que le vecteur "
.("v")." contient des valeurs num&eacute;riques. " ;
00208     echo " Trouver les instructions qui permettent d'afficher&nbsp;" 
;
00209     finp
() ;
00210     
00211     ul
() ;
00212     
00213     debutli
() ; p() ;
00214       echo "le vecteur normalis&eacute; issu de v (on divise par le max, la plus grande valeur est 1)" 
;
00215     finp
() ; finli() ;
00216     
00217     debutli
() ; p() ;
00218       echo "le vecteur centr&eacute; issu de v (on soustrait la moyenne, la moyenne devient 0)" 
;
00219     finp
() ; finli() ;
00220     
00221     debutli
() ; p() ;
00222       echo "les pourcentages associ&eacute;s aux valeurs de v avec 2 d&eacute;cimales" 
;
00223     finp
() ; finli() ;
00224     
00225     finul
() ;
00226     
00227     
00228     p
("texte") ;
00229     echo "Voici, si v contient les nombres 5&nbsp;12&nbsp;8, ce qu'on veut obtenir&nbsp;:" 
;
00230     finp
() ;
00231     
00232     pre_fichier
("pctnorm.txt","cadre") ;
00233     
00234     finblockquote
() ;
00235     
00236     solution
($numExo,$numSerie) ;
00237     
00238     p
("texte") ;
00239     echo "Ces calculs ne requi&egrave;rent que des affectations, bien s&ucirc;r, et des appels de fonctions de 
$R&nbsp;:" ;
00240     finp
() ;
00241     
00242     pre_fichier
("pctnorm.r","cadre") ;
00243     
00244     finsolution
() ;
00245     
00246     finblockquote
() ;
00247     
00248     ## -------------------------------------------------------------------------------------------
00249     
00250     $tdmCRLM
->afficheRubrique("oui") ; $numExo++ ; # Valeurs sp&eacute;ciales en R
00251     
00252     ## -------------------------------------------------------------------------------------------
00253     
00254     blockquote
() ;
00255     
00256     blockquote
() ;
00257     
00258     p
("texte") ;
00259     echo "On veut cr&eacute;er le vecteur "
.b("resultats").". Sa premi&egrave;re valeur est 5, sa troisi&egrave;me valeur est 8 " ;
00260     echo " mais pour l'instant on ne connait pas la valeur num&eacute;ro deux. Comment faire&nbsp;?" 
;
00261     finp
() ;
00262     
00263     p
("texte") ;
00264     echo "Dans "
.href("progic2.php","le cours de la s&eacute;ance 2").", comme dans les autres cours, il y a de nombreux liens sur l'aide en ligne des fonctions en $R " ;
00265     echo " sous les mots en vert. Apr&egrave;s avoir relu celle sur NULL, NaN, Inf, essayer de construire des expressions qui " 
;
00266     echo " renvoient ces valeurs. Quelle est leur \"classe\"&nbsp;?" 
;
00267     echo " Peut-on leur ajouter 1, les utiliser dans des comparaisons&nbsp;?" 
;
00268     echo " Compl&eacute;ter avec les valeurs "
.b("TRUE")." et ".b("FALSE").". " ;
00269     finp
() ;
00270     
00271     finblockquote
() ;
00272     
00273     solution
($numExo,$numSerie) ;
00274     
00275     p
("texte") ;
00276     echo "Une valeur inconnue se note "
.b("NA").". De fa&ccedil;on un peu surprenante, la classe de NA est ".b("logical")." comme " ;
00277     echo " pour "
.b("TRUE")." (vrai) et ".b("FALSE")." (faux). Ajouter 1 &agrave; NA renvoie NA, faire une comparaison avec NA aussi. " ;
00278     finp
() ;
00279     
00280     p
("texte") ;
00281     echo "NULL est identique au vecteur vide "
.b("c()")." qu'il ne faut pas confondre avec la liste vide ".b("list()").". "  ;
00282     echo " La classe de NA est "
.b("NULL").". " ;
00283     echo " Ajouter 1 &agrave; NULL renvoie un peu myst&eacute;rieusement "
.b("numeric(0)").". " ;
00284     echo " Faire une comparaison avec NULL renvoie "
.b("logical(0)").". " ;
00285     finp
() ;
00286     
00287     p
("texte") ;
00288     echo " Une fa&ccedil;on simple d'atteindre l'infini (!) est de chercher &agrave; calculer 1/0. " 
;
00289     echo " La classe de Inf est "
.b("numeric").". " ;
00290     echo " Ajouter 1 &agrave; Inf renvoie "
.b("Inf").". " ;
00291     echo " Il n'y a que deux infinis pour 
$R&nbsp;: Inf et -Inf. " ;
00292     finp
() ;
00293     
00294     p
("texte") ;
00295     echo " Pour produire NaN, on peut chercher &agrave; calculer 0/0. " 
;
00296     echo " La classe de NaN est "
.b("numeric").". " ;
00297     echo " Ajouter 1 &agrave; NaN renvoie "
.b("NaN").". " ;
00298     echo " Comparer 1 &agrave; NaN renvoie "
.b("NA")." (encore fallait-il y penser&nbsp;!). " ;
00299     finp
() ;
00300     
00301     pre_fichier
("naetc.txt","cadre") ;
00302     
00303     
00304     p
("texte") ;
00305     echo "Je vous laisse imaginer ce que peut donner "
.b("Inf+NaN")." et ".b("Inf+NULL")  ;
00306     echo "  -- &agrave; savoir "
.b("NaN")." et ".b("numeric(0)")." -- " ;
00307     echo "  sachant qu'on ne fait pas en g&eacute;n&eacute;ral ces calculs expr&egrave;s, mais qu'on les obtient " 
;
00308     echo " si des variables sont mal d&eacute;finies, si une lecture de fichier a &eacute;chou&eacute; etc. " 
;
00309     finp
() ;
00310     
00311     finsolution
() ;
00312     
00313     finblockquote
() ;
00314     
00315     ## -------------------------------------------------------------------------------------------
00316     
00317     $tdmCRLM
->afficheRubrique("oui") ; $numExo++ ; #  La fonction rep
00318     
00319     ## -------------------------------------------------------------------------------------------
00320     
00321     blockquote
() ;
00322     
00323     blockquote
() ;
00324     
00325     p
("texte") ;
00326     echo "Apr&egrave;s avoir lu l'aide sur " 
;
00327     echo lafonction
("rep") ;
00328     echo " et " 
;
00329     echo lafonction
("vector") ;
00330     echo " essayer de produire un vecteur qui contient 10 fois la valeur 0 " 
;
00331     echo " puis un autre vecteur qui contient 20 valeurs &agrave; savoir des 0 et des 1 en alternance " 
;
00332     echo " puis 11 fois 0 suivis de 10 fois 1. " 
;
00333     echo " Enfin, essayer de produire le vecteur 1&nbsp;-2&nbsp;3&nbsp;-4..." 
;
00334     finp
() ;
00335     
00336     p
("texte") ;
00337     echo "Au passage, comment afficher un vecteur en colonne, avec le num&eacute;ro de l'&eacute;l&eacute;ment devant sa valeur comme ci-dessous&nbsp;?" 
;
00338     finp
() ;
00339     
00340     pre_fichier
("cbind1.txt","cadre") ;
00341     
00342     p
("texte") ;
00343      echo "Que contient la variable "
.b("x")." si on la d&eacute;finit par ".b("x&nbsp;&lt;-&nbsp;vector(length=8)")."&nbsp;?" ;
00344     finp
() ;
00345     
00346     finblockquote
() ;
00347     
00348     solution
($numExo,$numSerie) ;
00349     
00350     p
("texte") ;
00351     echo "Voici les expressions demand&eacute;es baties sur "
.b("rep")."&nbsp;:" ;
00352     finp
() ;
00353     
00354     pre_fichier
("rep.txt","cadre") ;
00355     
00356     p
("texte") ;
00357     echo "D&eacute;finir un vecteur en utilisant explicitement " 
;
00358     echo lafonction
("vector")." n'est sans doute pas une bonne id&eacute;e puisque la valeur par d&eacute;faut est ".b("FALSE").". "  ;
00359     echo " De m&ecirc;me &eacute;crire "
.b('vector(mode="numeric",length=8)')." pour g&eacute;n&eacute;rer 8 fois 0 n'est sans doute pas tr&egrave;s explicite par rapport &agrave; " ;
00360     echo b
("rep(0,times=8)").". " ;
00361     finp
() ;
00362     
00363     p
("texte") ;
00364     echo "Pour forcer un affichage en colonne, on peut utiliser " 
;
00365     echo lafonction
("cbind")."&nbsp;:" ;
00366     finp
() ;
00367     
00368     pre_fichier
("cbind2.txt","cadre") ;
00369     
00370     p
("texte") ;
00371     echo "La fonction " 
;
00372     echo hrrr
("cbind")." est surtout pratique pour afficher la correspondance entre num&eacute;ro de colonne et nom de colonne&nbsp;:" ;
00373     finp
() ;
00374     
00375     pre_fichier
("cbind3.txt","cadre") ;
00376     
00377     finsolution
() ;
00378     
00379     finblockquote
() ;
00380     
00381     ## -------------------------------------------------------------------------------------------
00382     
00383     $tdmCRLM
->afficheRubrique("oui") ; $numExo++ ; #  Souligner une phrase
00384     
00385     ## -------------------------------------------------------------------------------------------
00386     
00387     blockquote
() ;
00388     
00389     blockquote
() ;
00390     
00391     p
("texte") ;
00392     echo "On voudrait souligner avec le caract&egrave;re \"&eacute;gal\" un titre ou une phrase, comme dans l'exemple suivant o&ugrave; " 
;
00393     echo " on a soulign&eacute; le texte \"un exemple de soulignement\"." 
;
00394     echo " Comment r&eacute;aliser cela avec un seul appel de la fonction "
.hrrr("cat")."&nbsp;?" ;
00395     echo " On utilisera, &laquo;bien s&ucirc;r&raquo;, les fonctions " 
;
00396     echo hrrr
("nchar").", " ;
00397     echo hrrr
("rep")." et " ;
00398     echo hrrr
("paste").". " ;
00399     finp
() ;
00400     
00401     pre_fichier
("souligner00.txt","cadre") ;
00402     
00403     finblockquote
() ;
00404     
00405     solution
($numExo,$numSerie) ;
00406     
00407     p
("texte") ;
00408     echo "Il faut produire autant de caract&egrave;res \"&eacute;gal\" qu'il y a de caract&egrave;res dans la phrase indiqu&eacute;e. C'est justement " 
;
00409     echo " le role de la fonction "
.hrrr("nchar")." que de donner le nombre de caract&egrave;res d'une chaine. La premi&egrave;re tentative " ;
00410     echo " avec " 
;
00411     echo hrrr
("nchar")." et " ;
00412     echo hrrr
("rep")." est presque la bonne&nbsp;:" ;
00413     finp
() ;
00414     
00415     pre_fichier
("souligner01.txt","cadre") ;
00416     
00417     p
("texte") ;
00418     echo "Comme " 
;
00419     echo hrrr
("rep")." renvoie un vecteur de caract&egrave;res \"&eacute;gal\", on utilise " ;
00420     echo hrrr
("paste")." avec le param&egrave;tre ".b("collapse")." pour n'avoir qu'une seule chaine de caract&egrave;res&nbsp;:";
00421     finp
() ;
00422     
00423     pre_fichier
("souligner02.txt","cadre") ;
00424     
00425     finsolution
() ;
00426     
00427     finblockquote
() ;
00428     
00429     ## -------------------------------------------------------------------------------------------
00430     
00431     $tdmCRLM
->afficheRubrique("oui") ; $numExo++ ; #  Les subtilit&eacute;s de cat()
00432     
00433     ## -------------------------------------------------------------------------------------------
00434     
00435     blockquote
() ;
00436     
00437     blockquote
() ;
00438     
00439     p
("texte") ;
00440     echo "Est-ce que l'instruction "
.b("cat(x,y)")." est &eacute;quivalente aux deux instructions " ;
00441     echo b
("cat(x)&nbsp;;&nbsp;cat(y)")."&nbsp;?" ;
00442     finp
() ;
00443     
00444     p
("texte") ;
00445     echo " Comment doit-on afficher des informations sur deux lignes diff&eacute;rentes, comme par exemple " 
;
00446     echo b
("Bonjour")." et ".b("Bonsoir")."&nbsp;?" ;
00447     finp
() ;
00448     
00449     p
("texte") ;
00450     echo "Quels sont les autres param&egrave;tres de la fonction " 
;
00451     echo hrrr
("cat")."&nbsp;?" ;
00452     finp
() ;
00453     
00454     finblockquote
() ;
00455     
00456     solution
($numExo,$numSerie) ;
00457     
00458     p
("texte") ;
00459     echo b
("cat(x)&nbsp;;&nbsp;cat(y)")." n'est pas &eacute;quivalent &agrave; " ;
00460     echo b
("cat(x,y)")." parce que le s&eacute;parateur par d&eacute;faut de " ;
00461     echo hrrr
("cat")." est un espace. Donc " ;
00462     echo b
('cat("Bonjour\n","Bonsoir\n")') ;
00463     echo " produit un espace de plus devant "
.b("Bonsoir")." que les deux instructions " ;
00464     echo b
('cat("Bonjour\n")')." et " ;
00465     echo b
('cat("Bonsoir\n")').". " ;
00466     echo " Il est donc prudent d'&eacute;crire une ligne &agrave; la fois et de mettre "
.b('\\n')." comme dernier param&egrave;tre&nbsp;:" ;
00467     finp
() ;
00468     
00469     pre_fichier
("cat01.txt","cadre") ;
00470     
00471     p
("texte") ;
00472     echo "Les autres param&egrave;tres principaux de " 
;
00473     echo hrrr
("cat")." sont " ;
00474     echo b
("sep")." pour changer de s&eacute;parateur " ;
00475     echo b
("file")." pour &eacute;crire dans un fichier au lieu de l'&eacute;cran, m&ecirc;me si utiliser " ;
00476     echo hrrr
("sink")." avec le param&egrave;tre ".b("split")." mis &agrave; TRUE est plus \"".em("intelligent")."\". Voir " ;
00477     echo "l'exercice 2 de la "
.href("progie5.php","s&eacute;ance 5")." pour plus de d&eacute;tails &agrave; ce sujet." ;
00478     finp
() ;
00479     
00480     # pre_fichier("cat02.txt","cadre") ;
00481     
00482     finsolution
() ;
00483     
00484     finblockquote
() ;
00485     
00486     ## -------------------------------------------------------------------------------------------
00487     
00488     $tdmCRLM
->afficheRubrique("oui") ; $numExo++ ; #  Calcul du $\chi^2$ d'ad\'{e}quation avec contributions
00489     
00490     ## -------------------------------------------------------------------------------------------
00491     
00492     blockquote
() ;
00493     
00494     blockquote
() ;
00495     
00496     p
("texte") ;
00497     echo "On dispose d'un vecteur "
.noir("Vobs")." d'effectifs observ&eacute;s et d'un vecteur \n" ;
00498     echo ""
.noir("Vthe")." d'effectifs th&eacute;oriques. Comment effectuer le calcul et le cumul des carr&eacute;s pond&eacute;r&eacute;s des diff&eacute;rences \n" ;
00499     echo "relatives entre valeurs observ&eacute;es et valeurs th&eacute;oriques (ou \"contributions\") que l'on triera par ordre croissant de pourcentage par \n" 
;
00500     echo "rapport au total des contributions en n'utilisant que des affectations&nbsp;? \n" 
;
00501     finp
() ;
00502     
00503     p
("texte") ;
00504     echo "Avec quelle fonction de 
$R peut-on v&eacute;rifier que le r&eacute;sultat de ces calculs \n" ;
00505     echo "est correct ? \n" 
;
00506     finp
() ;
00507     
00508     p
("texte") ;
00509     echo "On pourra, pour les vecteurs num&eacute;riques d&eacute;finis par \n" 
;
00510     echo ""
.noir("Vobs &lt;- c(18,55,21,12,4)")." \n" ;
00511     echo "et "
.noir("Vthe &lt;- c(6.875,27.5,41.25,27.5,6.875)").", \n" ;
00512     echo "s'inspirer de la pr&eacute;sentation suivante pour afficher les r&eacute;sultats&nbsp;:\n" 
;
00513     finp
() ;
00514     
00515     pre_fichier
("chideux.txt","cadre") ;
00516     
00517     finblockquote
() ;
00518     
00519     solution
($numExo,$numSerie) ;
00520     
00521     p
("texte") ;
00522     echo "Puisque 
$R est ".b("vectoriel").", chaque colonne doit se calculer avec une seule instruction. \n" ;
00523     echo "Afin d'obtenir un bel affichage, on regroupe les variables cr&eacute;es dans un "
.em("data frame").". \n" ;
00524     echo "Les colonnes de ce "
.em("data frame")." sont automatiquement nomm&eacute;es par $R avec le nom des variables utilis&eacute;es. \n" ;
00525     echo "Voici ces calculs&nbsp;: \n" 
;
00526     finp
() ;
00527     
00528     pre_fichier
("chideux1.txt","cadre") ;
00529     
00530     p
("texte") ;
00531     echo "Arriv&eacute; ici, nous disposons donc d&eacute;j&agrave; du tableau de r&eacute;sultats suivant&nbsp;:\n" 
;
00532     finp
() ;
00533     
00534     pre_fichier
("chideux2.txt","cadre") ;
00535     
00536     p
("texte") ;
00537     echo "Il reste donc &agrave; &agrave; trier le tableau par contribution, ce qu'on \n" 
;
00538     echo "r&eacute;alise &agrave; l'aide la fonction "
.hrrr("order").", \n" ;
00539     echo "et &agrave; calculer les pourcentages de contributions, \n" 
;
00540     echo "ce que l'on peut \n" 
;
00541     echo "faire avec le code suivant \n" 
;
00542     echo "(on notera les deux notation "
.noir("df[,\"Pct\"]")." et ".noir("df\$Pct")." pour acc&eacute;der aux colonnes&nbsp;: \n" ;
00543     finp
() ;
00544     
00545     pre_fichier
("chideux3.txt","cadre") ;
00546     
00547     p
("texte") ;
00548     echo "Pour v&eacute;rifier nos r&eacute;sultats, on peut comparer la somme de la colonne "
.b("Cntr")." &agrave; la valeur du &chi;".sup(2)." fourni \n" ;
00549     echo "par 
$R via la fonction ".hrrr("chisq.test","stats")." du package ".hrrp("stats")."&nbsp;:\n" ;
00550     finp
() ;
00551     
00552     pre_fichier
("chideux4.txt","cadre") ;
00553     
00554     p
("texte") ;
00555     echo "On voit alors qu'on trouve la m&ecirc;me valeur "
.b("65.382")." &agrave; l'arrondi pr&egrave;s du calcul, mais il est pr&eacute;f&eacute;rable de le v&eacute;rifier \n" ;
00556     echo "avec le code suivant&nbsp;: \n" 
;
00557     finp
() ;
00558     
00559     pre_fichier
("chideux5.txt","cadre") ;
00560     
00561     p
("texte") ;
00562     echo " Ici, nous sommes oblig&eacute;s d'utiliser "
.noir("as.numeric()")." parce que la statistique de test est une ".b("variable nomm&eacute;e")."&nbsp;; \n" ;
00563     echo " du coup, sa simple comparaison avec la somme des contributions &eacute;choue&nbsp;: \n" 
;
00564     finp
() ;
00565     
00566     pre_fichier
("chideux6.txt","cadre") ;
00567     
00568     p
("texte") ;
00569     echo " Au passage, rappelons que le code de nombreuses fonctions 
$R est consulatable. " ;
00570     echo " On trouvera ci-dessous celui de la fonction "
.hrrr("chisq.test","stats")." dont le coeur de calcul " ;
00571     echo b
("STATISTIC&nbsp;&lt;-&nbsp;sum((x-E)^2/E)")." correspond " ;
00572     echo " exactement &agrave; notre calcul vectoriel." 
;
00573     finp
() ;
00574     
00575     pre_fichier
("chideux7.txt","cadre") ;
00576     
00577     finsolution
() ;
00578     
00579     finblockquote
() ;
00580     
00581     ## -------------------------------------------------------------------------------------------
00582     
00583     $tdmCRLM
->afficheRubrique("oui") ; $numExo++ ; #  Arbre syntaxique abstrait d'une expression
00584     
00585     ## -------------------------------------------------------------------------------------------
00586     
00587     blockquote
() ;
00588     
00589     blockquote
() ;
00590     
00591     p
("texte") ;
00592     echo " Que fait la fonction "
.b("ast") ;
00593     echo " du package "
.href("https://github.com/r-lib/lobstr","lobstr")."&nbsp?" ;
00594     finp
() ;
00595     
00596     p
("texte") ;
00597     echo " Installer ce package et ex&eacute;cuter les instructions suivantes " 
;
00598     finp
() ;
00599     
00600     pre_fichier
("ast01.txt","cadre") ;
00601     
00602     finblockquote
() ;
00603     
00604     solution
($numExo,$numSerie) ;
00605     
00606     p
("texte") ;
00607     echo " La fonction "
.b("ast")." fournit la repr&eacute;sentation interne d'une instruction. " ;
00608     echo " Cela permet entre autres de voir que l'affectation, l'indexation en crochets et m&ecirc;me l'instruction "
.em("if")." sont des fonctions comme les autres." ;
00609     finp
() ;
00610     
00611     p
("texte") ;
00612     nbsp
(5) ;
00613     $img 
"ast.png" ;
00614     echo href
($img,img($img,"",500)) ;
00615     finp
() ;
00616     
00617     finsolution
() ;
00618     
00619     finblockquote
() ;
00620     
00621     ## -------------------------------------------------------------------------------------------
00622     
00623     finPageExercices
($numSerie) ; # contient finSection() et finPage() ; la fonction est dans progi.php
00624     
00625     ?>

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)