Listing du fichier s1p3.php
00001 <?php
00002 # (gH) -_- s1p3.php ; TimeStamp (unix) : 27 Novembre 2012 vers 16:56
00003
00004 error_reporting(E_ALL | E_NOTICE | E_STRICT) ;
00005 include("std.php") ;
00006 include("../xmlstd.php") ;
00007 include("scripts_inc.php") ;
00008
00009 $numSerie = 3 ;
00010 debutPageExoScr1($numSerie) ;
00011
00012 ## -------------------------------------------------------------------------------------------
00013
00014 sdl(3) ; echo cmt(' pour afficher toutes les solutions : wedrd01.php?solutions=1') ; sdl(3) ;
00015
00016 ## -------------------------------------------------------------------------------------------
00017
00018 debutSection() ;
00019
00020 $tableauDesRubriques = array() ;
00021 $idr = 0 ;
00022 $idr++; $tableauDesRubriques[$idr] = "TCL : commandes en session interactive" ;
00023 $idr++; $tableauDesRubriques[$idr] = "TCL : archivage incrémental de fichiers XML" ;
00024 $idr++; $tableauDesRubriques[$idr] = "TK : choix du répertoire de sauvegarde ";
00025 $idr++; $tableauDesRubriques[$idr] = "PERL : commandes en session interactive" ;
00026 $idr++; $tableauDesRubriques[$idr] = "PERL : nombre premier en \"one-liner\"" ;
00027 $idr++; $tableauDesRubriques[$idr] = "PERL : archivage incrémental de fichiers XML " ;
00028 $idr++; $tableauDesRubriques[$idr] = "PERL : striphtml" ;
00029 $idr++; $tableauDesRubriques[$idr] = "PERL : créer les fichiers dictionnaires d'un texte " ;
00030 $idr++; $tableauDesRubriques[$idr] = "TK avec Tcl, Rexx et Perl " ;
00031 $tdmCRLM = new tdm($tableauDesRubriques) ;
00032 $tdmCRLM->titre() ;
00033 $tdmCRLM->menu("oui","oui","nou") ;
00034
00035 pvide() ;
00036
00037 p() ;
00038 echo "Il est possible d'afficher toutes les solutions via ".href("s1p$numSerie.php?solutions=1","?solutions=1","bouton_fin jaune_pastel nou").". " ;
00039 finp() ;
00040
00041 finSection() ;
00042
00043 debutSection() ;
00044 $numExo = 0 ;
00045
00046 ## -------------------------------------------------------------------------------------------
00047
00048 $tdmCRLM->afficheRubrique("oui") ; $numExo++ ; # TCL : commandes en session interactive
00049
00050 ## -------------------------------------------------------------------------------------------
00051
00052 blockquote() ;
00053
00054 p("texte") ;
00055 echo "Essayer en mode interactif avec ".b("tclsh")." de donner la ou les instructions qui répondent aux " ;
00056 echo " mêmes questions que pour Rexx en mode interactif, ".href("s1p2.php#tdm4","exercice 4 de la série 2").". " ;
00057 #echo " mêmes questions que pour Perl en mode interactif, ".href("s1p3.php#tdm4","exercice 4 de la série 3").". " ;
00058 finp() ;
00059
00060 solution($numExo) ;
00061
00062 consulter("tclsh.txt") ;
00063
00064 finsolution() ;
00065
00066 finblockquote() ;
00067
00068 ## -------------------------------------------------------------------------------------------
00069
00070 $tdmCRLM->afficheRubrique("oui") ; $numExo++ ; # TCL archivage incrémental de fichiers XML
00071
00072 ## -------------------------------------------------------------------------------------------
00073
00074 blockquote() ;
00075
00076 p("texte") ;
00077 echo "Implémenter une version tcl de la sauvegarde incrémentale de fichiers XML comme pour " ;
00078 echo href("s1p2.php#tdm7"," l'exercice 7 de la série 2")." . " ;
00079 finp() ;
00080
00081 solution($numExo) ;
00082
00083 consulter("archcd.tcl") ;
00084
00085 finsolution() ;
00086
00087 finblockquote() ;
00088
00089 ## -------------------------------------------------------------------------------------------
00090
00091 $tdmCRLM->afficheRubrique("oui") ; $numExo++ ; # TK choix du répertoire de sauvegarde
00092
00093 ## -------------------------------------------------------------------------------------------
00094
00095 blockquote() ;
00096
00097 p("texte") ;
00098 echo "On veut mettre à disposition des utilisateurs un système de choix de répertoires à sauvegarder. " ;
00099 echo " Voici ce qu'on voudrait voir sous Linux :" ;
00100 finp() ;
00101
00102 $img1 = "../Farcompr/choix1.png" ;
00103 p("texte") ;
00104 nbsp(15) ;
00105 echo img($img1) ;
00106 finp() ;
00107
00108 p("texte") ;
00109 echo " Et sous Windows :" ;
00110 finp() ;
00111
00112 $img2 = "../Farcompr/choix2.png" ;
00113 p("texte") ;
00114 nbsp(15) ;
00115 echo img($img2) ;
00116 finp() ;
00117
00118 p("texte") ;
00119 echo "Ecrire un programme TK pour cela. Le programme devra s'exécuter tel quel aussi bien sous Linux que sous Windows." ;
00120 finp() ;
00121
00122 solution($numExo) ;
00123
00124 consulter("archglob.tcl") ;
00125
00126 finsolution() ;
00127
00128 finblockquote() ;
00129
00130 ## -------------------------------------------------------------------------------------------
00131
00132 $tdmCRLM->afficheRubrique("oui") ; $numExo++ ; # PERL : commandes en session interactive
00133
00134 ## -------------------------------------------------------------------------------------------
00135
00136 blockquote() ;
00137
00138 p("texte") ;
00139 echo "En mode interactif, avec ".href("pt.pl")." donner la ou les instructions qui répondent aux " ;
00140 echo " mêmes questions que pour Rexx en mode interactif, ".href("s1p2.php#tdm4","exercice 4 de la série 2").". " ;
00141 finp() ;
00142
00143 solution($numExo) ;
00144
00145 consulter("perl_pt.txt") ;
00146
00147 finsolution() ;
00148
00149 finblockquote() ;
00150
00151 ## -------------------------------------------------------------------------------------------
00152
00153 $tdmCRLM->afficheRubrique("oui") ; $numExo++ ; # PERL : diviseurs de n en \"one-liner\"
00154
00155 ## -------------------------------------------------------------------------------------------
00156
00157 blockquote() ;
00158
00159 p("texte") ;
00160 echo "Donner une expression perl en mode ".b("one liner")." qui indique si un nombre est premier ; on utilisera une " ;
00161 echo " expression régulière. " ;
00162 # echo " Recommencer ensuite avec l'affichage des diviseurs. " ;
00163 echo " Est-ce efficace pour des grands nombres ? " ;
00164 echo " Que peut-on en conclure sur les expressions régulières ? et sur Perl ? ";
00165 finp() ;
00166
00167 solution($numExo) ;
00168
00169
00170 p("texte") ;
00171 echo "Voici une solution qui n'affiche rien si le nombre n'est pas premier et qui écrit explicitement quand le nombre " ;
00172 echo " est premier :" ;
00173 finp() ;
00174
00175 pre_fichier("perl_prime.txt","cadre") ;
00176
00177 p("texte") ;
00178 echo "Si vous n'avez pas tout compris, une explication est " ;
00179 echo href("http://montreal.pm.org/tech/neil_kandalgaonkar.shtml","là")."." ;
00180 finp() ;
00181
00182 p("texte") ;
00183 echo "Ce n'est sans doute pas très efficace, quoique... " ;
00184 echo "Cela montre la force des expressions régulières. On verra avec d'autres langages comment réutiliser cette expression régulière." ;
00185 echo " Par exemple, il est possible de consulter la référence ".href("http://wfr.tcl.tk/1827","1827")." de ".b("wfr.tcl.tk")." pour en voir " ;
00186 echo " l'implémentation en Tcl." ;
00187 finp() ;
00188
00189 finsolution() ;
00190
00191 finblockquote() ;
00192
00193 ## -------------------------------------------------------------------------------------------
00194
00195 $tdmCRLM->afficheRubrique("oui") ; $numExo++ ; # PERL : archivage incrémental de fichiers XML
00196
00197 ## -------------------------------------------------------------------------------------------
00198
00199 blockquote() ;
00200
00201 p("texte") ;
00202 echo "Implémenter une version Perl de la sauvegarde incrémentale de fichiers XML comme pour " ;
00203 echo href("s1p2.php#tdm7"," l'exercice 7 de la série 2")." . " ;
00204 finp() ;
00205
00206 p("texte") ;
00207 echo "Reprendre ensuite le script Perl en ajoutant ".b("use strict ;")." en haut du script. " ;
00208 echo " Que faut-il alors changer pour ne pas avoir d'erreurs d'interprétation ?" ;
00209 finp() ;
00210
00211 solution($numExo) ;
00212
00213 consulter("archcd.pl") ;
00214
00215 p("texte") ;
00216 echo " Avec ".b("use strict ;")." toute variable locale doit être déclarée à l'aide de " ;
00217 echo b("my").". Il faut donc ajouter trois ".b("my")." au script :" ;
00218 finp() ;
00219
00220 pre_fichier("archcds.pl","cadre") ;
00221
00222 finsolution() ;
00223 finblockquote() ;
00224
00225 ## -------------------------------------------------------------------------------------------
00226
00227 $tdmCRLM->afficheRubrique("oui") ; $numExo++ ; # PERL : striphtml
00228
00229 ## -------------------------------------------------------------------------------------------
00230
00231 blockquote() ;
00232
00233 p("texte") ;
00234 echo "Expliquer ce que fait le programme ".href("striphtml.pl") ;
00235 echo " dont la partie importante est listée ci-dessous avec des numéros de ligne :" ;
00236 finp() ;
00237
00238 pre_fichier("striphtml_part.txt","cadrebleu") ;
00239
00240 p("texte") ;
00241 echo "On pourra l'appliquer aux deux fichiers " ;
00242 echo href("f1.html") ;
00243 echo " et " ;
00244 echo href("f2.html") ;
00245 echo " qui sont des portions HTML -- non nécessairement valides -- pour tester ce qui se passe." ;
00246 finp() ;
00247
00248 solution($numExo) ;
00249
00250 p("texte") ;
00251 echo "Le programme Perl enlève toutes les balises HTML et convertit les entités. Ainsi, pour ".href("f1.html")." on passe de " ;
00252 finp() ;
00253
00254 pre_fichier("f1.html","cadre") ;
00255
00256 p("texte") ;
00257 echo "au fichier texte tout simple (mais avec tous les retours-charriot) " ;
00258 finp() ;
00259
00260 pre_fichier("f1_stripped.txt","cadre") ;
00261
00262 p("texte") ;
00263 echo "Ce programme prend en compte les commentaires via la première substitution. Sans cela, pour notre fichier " ;
00264 echo "on obtiendrait " ;
00265 finp() ;
00266
00267 pre_fichier("f1_bad.txt","cadre") ;
00268
00269
00270 # en ultra-court : s/<(?:[^>'"]*|(['"]).*?\1)*>//gs
00271
00272 p("texte") ;
00273 echo "Une solution ultra-courte mais incorrecte est " ;
00274 echo href("http://www.rocketaware.com/perl/perlfaq9/How_do_I_remove_HTML_from_a_stri.htm","ici").". " ;
00275 finp() ;
00276
00277 finsolution() ;
00278
00279 finblockquote() ;
00280
00281 ## -------------------------------------------------------------------------------------------
00282
00283 $tdmCRLM->afficheRubrique("oui") ; $numExo++ ; # PERL : créer les fichiers dictionnaires d'un texte
00284
00285 ## -------------------------------------------------------------------------------------------
00286
00287 blockquote() ;
00288
00289 p("texte") ;
00290
00291 echo "Essayer de réaliser l'".href("s1p2.php#tdm3","exercice 3 de la série 2")." (création des dictionnaires) en PERL. " ;
00292 finp() ;
00293
00294 solution($numExo) ;
00295
00296 consulter("dico.pl","cadrejaune","On appréciera la concision des tris.") ;
00297
00298 finsolution() ;
00299
00300 finblockquote() ;
00301
00302 ## -------------------------------------------------------------------------------------------
00303
00304 $tdmCRLM->afficheRubrique("oui") ; $numExo++ ; # TK avec Tcl, Rexx et Perl
00305
00306 ## -------------------------------------------------------------------------------------------
00307
00308 blockquote() ;
00309
00310 p("texte") ;
00311 echo "On voudrait disposer d'un convertisseur cm/pouces et pouces/cm sachant qu'un pouce fait 2,54 cm." ;
00312 echo " Réaliser l'implémentation en ligne de commandes avec paramètres en Rexx, Tcl et Perl puis " ;
00313 echo " réaliser une implémentation avec interface graphique en Tcl/Tk puis en Rexx/Tk et Perl/Tk. " ;
00314 finp() ;
00315
00316 p("texte") ;
00317 echo "On commencera par vérifier l'installation de Tk et l'exemple élémentaire fourni en bas de la page " ;
00318 echo href("http://www.tkdocs.com/tutorial/install.html","tkdocs-install").". " ;
00319 finp() ;
00320 solution($numExo) ;
00321
00322 vnc() ;
00323
00324 finsolution() ;
00325
00326 finblockquote() ;
00327
00328
00329 ## -------------------------------------------------------------------------------------------
00330
00331 finPageExercices($numSerie) ; # contient finSection() et finPage() ; la fonction est dans webrd_inc.php
00332
00333 ?>
Pour ne pas voir les numéros de ligne, ajoutez &nl=non à la suite du nom du fichier.
Retour à la page principale de (gH)