Listing du fichier progie2.php
00001 <?php
00002 # # (gH) -_- progie2.php ; TimeStamp (unix) : 16 Fé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 = 2 ;
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] = "Permutation (simple) de variables" ;
00025 $idr++; $tableauDesRubriques[$idr] = "«Règles» d'é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éciales en $R" ;
00029 $idr++; $tableauDesRubriques[$idr] = "La fonction rep" ;
00030 $idr++; $tableauDesRubriques[$idr] = "Souligner une phrase" ;
00031 $idr++; $tableauDesRubriques[$idr] = "Les subtilités de la fonction ".b("cat()") ;
00032 $idr++; $tableauDesRubriques[$idr] = "Calcul du χ".sup(2)." d'adé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 = 0 ;
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 être numérique, texte ou autre (ce sont peut-être des listes)." ;
00064 echo " Trouver une faç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ée \"permutation circulaire\" ?" ;
00070 finp() ;
00071
00072 finblockquote() ;
00073
00074 solution($numExo,$numSerie) ;
00075
00076 p("texte") ;
00077 echo "Voici la solution \"tranquille\" où 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ègles» d'é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'écriture ? Laquelle fournit les identificateurs les plus lisibles ?" ;
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 " écrit les mots collés avec initiale majuscule là où la convention " ;
00118 echo href("http://en.wikipedia.org/wiki/Snake_case","snake_case")." les sépare avec un tiret souligné. " ;
00119 echo " D'autres notations sont possibles avec des points. $R autorise mê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é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 à utiliser juste ou trois 4 lettres, comme un sigle, avec une " ;
00128 echo b("tdc")." (table de correspondance) en début d'algorithme." ;
00129 finp() ;
00130
00131 pre_fichier("nommage.txt","cadre") ;
00132
00133 p("texte") ;
00134 echo "Il nous semble que la lisibilité est une notion subjective et qu'il est donc difficile " ;
00135 echo " de pré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 «" ;
00137 echo em("chacun fait ce qui lui plait")."» 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énérer :" ;
00156 finp() ;
00157
00158 ul() ;
00159
00160 debutli() ; p() ;
00161 echo "tous les nombres de 1 à n".sup(2) ;
00162 finp() ; finli() ;
00163
00164 debutli() ; p() ;
00165 echo "le carré des nombres de 1 à 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ères puissances de 10" ;
00174 finp() ; finli() ;
00175
00176 debutli() ; p() ;
00177 echo "les n premiè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éponses, sans plus d'explications " ;
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ériques. " ;
00208 echo " Trouver les instructions qui permettent d'afficher " ;
00209 finp() ;
00210
00211 ul() ;
00212
00213 debutli() ; p() ;
00214 echo "le vecteur normalisé 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é issu de v (on soustrait la moyenne, la moyenne devient 0)" ;
00219 finp() ; finli() ;
00220
00221 debutli() ; p() ;
00222 echo "les pourcentages associés aux valeurs de v avec 2 décimales" ;
00223 finp() ; finli() ;
00224
00225 finul() ;
00226
00227
00228 p("texte") ;
00229 echo "Voici, si v contient les nombres 5 12 8, ce qu'on veut obtenir :" ;
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èrent que des affectations, bien sûr, et des appels de fonctions de $R :" ;
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éciales en R
00251
00252 ## -------------------------------------------------------------------------------------------
00253
00254 blockquote() ;
00255
00256 blockquote() ;
00257
00258 p("texte") ;
00259 echo "On veut créer le vecteur ".b("resultats").". Sa première valeur est 5, sa troisième valeur est 8 " ;
00260 echo " mais pour l'instant on ne connait pas la valeur numéro deux. Comment faire ?" ;
00261 finp() ;
00262
00263 p("texte") ;
00264 echo "Dans ".href("progic2.php","le cours de la sé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ès avoir relu celle sur NULL, NaN, Inf, essayer de construire des expressions qui " ;
00266 echo " renvoient ces valeurs. Quelle est leur \"classe\" ?" ;
00267 echo " Peut-on leur ajouter 1, les utiliser dans des comparaisons ?" ;
00268 echo " Complé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çon un peu surprenante, la classe de NA est ".b("logical")." comme " ;
00277 echo " pour ".b("TRUE")." (vrai) et ".b("FALSE")." (faux). Ajouter 1 à 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 à NULL renvoie un peu mysté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çon simple d'atteindre l'infini (!) est de chercher à calculer 1/0. " ;
00289 echo " La classe de Inf est ".b("numeric").". " ;
00290 echo " Ajouter 1 à Inf renvoie ".b("Inf").". " ;
00291 echo " Il n'y a que deux infinis pour $R : Inf et -Inf. " ;
00292 finp() ;
00293
00294 p("texte") ;
00295 echo " Pour produire NaN, on peut chercher à calculer 0/0. " ;
00296 echo " La classe de NaN est ".b("numeric").". " ;
00297 echo " Ajouter 1 à NaN renvoie ".b("NaN").". " ;
00298 echo " Comparer 1 à NaN renvoie ".b("NA")." (encore fallait-il y penser !). " ;
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 " -- à savoir ".b("NaN")." et ".b("numeric(0)")." -- " ;
00307 echo " sachant qu'on ne fait pas en général ces calculs exprès, mais qu'on les obtient " ;
00308 echo " si des variables sont mal définies, si une lecture de fichier a échoué 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è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 à 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 -2 3 -4..." ;
00334 finp() ;
00335
00336 p("texte") ;
00337 echo "Au passage, comment afficher un vecteur en colonne, avec le numéro de l'élément devant sa valeur comme ci-dessous ?" ;
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éfinit par ".b("x <- vector(length=8)")." ?" ;
00344 finp() ;
00345
00346 finblockquote() ;
00347
00348 solution($numExo,$numSerie) ;
00349
00350 p("texte") ;
00351 echo "Voici les expressions demandées baties sur ".b("rep")." :" ;
00352 finp() ;
00353
00354 pre_fichier("rep.txt","cadre") ;
00355
00356 p("texte") ;
00357 echo "Définir un vecteur en utilisant explicitement " ;
00358 echo lafonction("vector")." n'est sans doute pas une bonne idée puisque la valeur par défaut est ".b("FALSE").". " ;
00359 echo " De même écrire ".b('vector(mode="numeric",length=8)')." pour générer 8 fois 0 n'est sans doute pas très explicite par rapport à " ;
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")." :" ;
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éro de colonne et nom de colonne :" ;
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ère \"égal\" un titre ou une phrase, comme dans l'exemple suivant où " ;
00393 echo " on a souligné le texte \"un exemple de soulignement\"." ;
00394 echo " Comment réaliser cela avec un seul appel de la fonction ".hrrr("cat")." ?" ;
00395 echo " On utilisera, «bien sûr», 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ères \"égal\" qu'il y a de caractères dans la phrase indiquée. C'est justement " ;
00409 echo " le role de la fonction ".hrrr("nchar")." que de donner le nombre de caractères d'une chaine. La première tentative " ;
00410 echo " avec " ;
00411 echo hrrr("nchar")." et " ;
00412 echo hrrr("rep")." est presque la bonne :" ;
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ères \"égal\", on utilise " ;
00420 echo hrrr("paste")." avec le paramètre ".b("collapse")." pour n'avoir qu'une seule chaine de caractères :";
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é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 équivalente aux deux instructions " ;
00441 echo b("cat(x) ; cat(y)")." ?" ;
00442 finp() ;
00443
00444 p("texte") ;
00445 echo " Comment doit-on afficher des informations sur deux lignes différentes, comme par exemple " ;
00446 echo b("Bonjour")." et ".b("Bonsoir")." ?" ;
00447 finp() ;
00448
00449 p("texte") ;
00450 echo "Quels sont les autres paramètres de la fonction " ;
00451 echo hrrr("cat")." ?" ;
00452 finp() ;
00453
00454 finblockquote() ;
00455
00456 solution($numExo,$numSerie) ;
00457
00458 p("texte") ;
00459 echo b("cat(x) ; cat(y)")." n'est pas équivalent à " ;
00460 echo b("cat(x,y)")." parce que le séparateur par dé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'écrire une ligne à la fois et de mettre ".b('\\n')." comme dernier paramètre :" ;
00467 finp() ;
00468
00469 pre_fichier("cat01.txt","cadre") ;
00470
00471 p("texte") ;
00472 echo "Les autres paramètres principaux de " ;
00473 echo hrrr("cat")." sont " ;
00474 echo b("sep")." pour changer de séparateur " ;
00475 echo b("file")." pour écrire dans un fichier au lieu de l'écran, même si utiliser " ;
00476 echo hrrr("sink")." avec le paramètre ".b("split")." mis à TRUE est plus \"".em("intelligent")."\". Voir " ;
00477 echo "l'exercice 2 de la ".href("progie5.php","séance 5")." pour plus de détails à 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és et d'un vecteur \n" ;
00498 echo "".noir("Vthe")." d'effectifs théoriques. Comment effectuer le calcul et le cumul des carrés pondérés des différences \n" ;
00499 echo "relatives entre valeurs observées et valeurs thé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 ? \n" ;
00501 finp() ;
00502
00503 p("texte") ;
00504 echo "Avec quelle fonction de $R peut-on vérifier que le résultat de ces calculs \n" ;
00505 echo "est correct ? \n" ;
00506 finp() ;
00507
00508 p("texte") ;
00509 echo "On pourra, pour les vecteurs numériques définis par \n" ;
00510 echo "".noir("Vobs <- c(18,55,21,12,4)")." \n" ;
00511 echo "et ".noir("Vthe <- c(6.875,27.5,41.25,27.5,6.875)").", \n" ;
00512 echo "s'inspirer de la présentation suivante pour afficher les résultats :\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ées dans un ".em("data frame").". \n" ;
00524 echo "Les colonnes de ce ".em("data frame")." sont automatiquement nommées par $R avec le nom des variables utilisées. \n" ;
00525 echo "Voici ces calculs : \n" ;
00526 finp() ;
00527
00528 pre_fichier("chideux1.txt","cadre") ;
00529
00530 p("texte") ;
00531 echo "Arrivé ici, nous disposons donc déjà du tableau de résultats suivant :\n" ;
00532 finp() ;
00533
00534 pre_fichier("chideux2.txt","cadre") ;
00535
00536 p("texte") ;
00537 echo "Il reste donc à à trier le tableau par contribution, ce qu'on \n" ;
00538 echo "réalise à l'aide la fonction ".hrrr("order").", \n" ;
00539 echo "et à 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éder aux colonnes : \n" ;
00543 finp() ;
00544
00545 pre_fichier("chideux3.txt","cadre") ;
00546
00547 p("texte") ;
00548 echo "Pour vérifier nos résultats, on peut comparer la somme de la colonne ".b("Cntr")." à la valeur du χ".sup(2)." fourni \n" ;
00549 echo "par $R via la fonction ".hrrr("chisq.test","stats")." du package ".hrrp("stats")." :\n" ;
00550 finp() ;
00551
00552 pre_fichier("chideux4.txt","cadre") ;
00553
00554 p("texte") ;
00555 echo "On voit alors qu'on trouve la même valeur ".b("65.382")." à l'arrondi près du calcul, mais il est préférable de le vérifier \n" ;
00556 echo "avec le code suivant : \n" ;
00557 finp() ;
00558
00559 pre_fichier("chideux5.txt","cadre") ;
00560
00561 p("texte") ;
00562 echo " Ici, nous sommes obligés d'utiliser ".noir("as.numeric()")." parce que la statistique de test est une ".b("variable nommée")." ; \n" ;
00563 echo " du coup, sa simple comparaison avec la somme des contributions échoue : \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 <- sum((x-E)^2/E)")." correspond " ;
00572 echo " exactement à 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")." ?" ;
00594 finp() ;
00595
00596 p("texte") ;
00597 echo " Installer ce package et exé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ésentation interne d'une instruction. " ;
00608 echo " Cela permet entre autres de voir que l'affectation, l'indexation en crochets et mê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 à la page principale de (gH)