Valid XHTML     Valid CSS2    

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&ecirc;mes questions que pour Rexx en mode interactif, "
.href("s1p2.php#tdm4","exercice 4 de la série 2").". " ;
00057     
#echo " m&ecirc;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&nbsp;:" ;
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&nbsp;:" ;
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&ecirc;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&nbsp;? et sur Perl&nbsp;? ";
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&nbsp;:" ;
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&nbsp;;")." en haut du script. " ;
00208     echo
" Que faut-il alors changer pour ne pas avoir d'erreurs d'interprétation&nbsp;?" ;
00209     
finp() ;
00210     
00211     
solution
($numExo) ;
00212     
00213     
consulter
("archcd.pl") ;
00214     
00215     
p
("texte") ;
00216     echo
" Avec "
.b("use strict&nbsp;;")." toute variable locale doit &ecirc;tre déclarée à l'aide de " ;
00217     echo
b
("my").". Il faut donc ajouter trois ".b("my")." au script&nbsp;:" ;
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 &nbsp;:" ;
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&nbsp;" ;
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 gH    Retour à la page principale de   (gH)