Listing du fichier sen_tps.php
00001 <?php
00002 # # (gH) -_- sen_tps.php ; TimeStamp (unix) : 07 Octobre 2019 vers 12:56
00003 include("../std.php") ;
00004 debutPage("L3SEN TP ENONCES","strict") ;
00005 debutSection() ;
00006 h1("ENONCES DES TPS INFORMATIQUE WEB") ;
00007 h1("pour la licence DSCS") ;
00008 h1("(Diffusion du savoir et Culture scientifique)") ;
00009
00010 $HTML = ghBleu("HTML") ;
00011 $Javascript = ghVert("Javascript") ;
00012 $MySQL = ghBleu("MySQL") ;
00013
00014 p("grouge droite") ;
00015 echo "gilles.hunault@univ-angers.fr" ;
00016 finp() ;
00017
00018 #########################################################
00019
00020 function tpDscs($num,$nom="") {
00021 h2("TP ".aname("DSCS","tp$num")." numéro $num ".ancre("sen_tps_cor.php#tp$num","(corrigé)").$nom) ;
00022 } # fin de fonction tpDscs
00023
00024 #########################################################
00025 #########################################################
00026
00027 $nomTp = array() ;
00028 $nomTp[1] = " Pages Web ".em(ghvert("locales")) ;
00029 $nomTp[2] = " Pages Web sur ".em(ghRouge("distantes"))." sur ".em("devel")." et tableaux " ;
00030 $nomTp[3] = " Tableaux, listes et CSS " ;
00031 $nomTp[4] = " CSS, formulaires et $Javascript" ;
00032 $nomTp[5] = " $Javascript" ;
00033 $nomTp[6] = " Php " ;
00034 $nomTp[7] = " Php et Mysql " ;
00035
00036 h2("Table des matières") ;
00037 $nb_tp = 7 ;
00038 blockquote() ;
00039 for ($itp=1;$itp<=$nb_tp;$itp++) {
00040 echo h3(ancre("#tp$itp","TP numéro $itp").$nomTp[$itp]) ;
00041 } ; # fin pour
00042 finblockquote() ;
00043
00044 $jtp = 0 ;
00045
00046 #########################################################
00047
00048 $jtp++ ; tpDscs($jtp,$nomTp[$jtp]) ; # TP1
00049
00050 #########################################################
00051
00052 p("texte") ;
00053 echo b("Remarque ")." : tout le TP se passe en local, sous Windows ou Linux." ;
00054 finp() ;
00055
00056 ol() ;
00057 debutli() ; # 1
00058 p("texte") ;
00059 echo "Quels sont les navigateurs Web disponibles en général ? Lequel ou lesquels sont les meilleurs et pourquoi ?" ;
00060 finp() ;
00061 finli() ;
00062
00063 debutli() ; # 2
00064 p("texte") ;
00065 echo "Ecrire juste ".ghBleu("ESSAI : <H1>BONJOUR")." dans le fichier ".b("bonjour.htm")." " ;
00066 echo " à l'aide de Geany ou Notepad++ (mais pas le bloc-notes standard de Windows) pour Windows, " ; # sous Xp, avec gedit sous Linux." ;
00067 echo " avec Geany sous Linux (ou un autre éditeur de texte avec coloration syntaxique des mots-clés de XHTML)." ;
00068 finp() ;
00069 ul() ;
00070 li("Est-ce que le texte s'affiche avec un navigateur via Fichier/Ouvrir ?") ;
00071 li("ESSAI et BONJOUR sont-ils écrits pareils ? Pourquoi ? ") ;
00072 li("Est ce que le texte s'affiche de façon identique quelque soit le navigateur ?") ;
00073 li("Le fichier est-il bien formé ? valide ? ") ;
00074 li("Complétez le fichier pour qu'il soit valide au sens de la grammaire XHTML Strict et vérifiez-le sur le site du W3C.") ;
00075 li("Ecrire un fichier ".b("sq.htm")." (\"squelette\") qui servira de modèle pour les exercices suivants.") ;
00076 finul() ;
00077 finli() ;
00078
00079 debutli() ; # 3
00080 p("texte") ;
00081 echo "Essayez de trouver plusieurs façons d'écrire ".ghBleu("BONJOUR BONSOIR")." sur deux lignes différentes à l'affichage. " ;
00082 echo " ".em("Remarque")." : il y en a au moins 6." ;
00083 finp() ;
00084 finli() ;
00085
00086 debutli() ; # 4
00087 p("texte") ;
00088 echo "Mézalors, quelle grammaire (DOCTYPE) faut-il utiliser ?" ;
00089 echo " Et comment utiliser les styles ?" ;
00090 finp() ;
00091 /*
00092 p("texte") ;
00093 echo "Installez HTML validator pour Firefox. Si on vous demande une méthode de validation " ;
00094 echo " à l'installation, privilégiez le mode «les deux»." ;
00095 finp() ;
00096 */
00097 finli() ;
00098
00099 debutli() ;
00100 p("texte") ;
00101 echo em("Do you need to speak english to write Web pages ?")."" ;
00102 finp() ;
00103 finli() ;
00104
00105 debutli() ;
00106 p("texte") ;
00107 echo "Ecrire une page Web qui correspond à l'adresse Jean DUPONT 3 route de Rome 49100 ANGERS pour une grande enveloppe A4. " ;
00108 echo "Comment mettre en bleu le nom et le prénom ? Et la ville en gras ? " ;
00109 finp() ;
00110 p("cadre unTiers center") ;
00111 echo img("a4.png","",600) ;
00112 finp() ;
00113 p() ;
00114 echo b("Attention")." : résoudre complètement cet exercice en transitionnel et en strict est technique. On réfléchira à la solution " ;
00115 echo " mais on n'essaiera pas d'écrire exactement le code source HTML et CSS." ;
00116 finp() ;
00117 finli() ;
00118
00119 debutli() ;
00120 p("texte") ;
00121 echo "Construire une liste numérotée puis non numérotée des courses : oeufs, pain, viande, fruits, légumes." ;
00122 echo " Reprendre avec une liste à définition (faire un petit commentaire pour chaque ingrédient)." ;
00123 echo " Cherchez le mot oeuf avec ".b("Google").". Comment faire un lien vers la page correspondante ? " ;
00124 echo " Cherchez une image d'oeuf avec ".b("Google Images").". Comment afficher cette image ? " ;
00125 finp() ;
00126
00127 p("texte") ;
00128 echo " Faire un tableau (avec bordure) des courses oeufs, pain, viande fruits, légumes sous forme de tableau. La colonne 1 contiendra le mot avec son lien, " ;
00129 echo " la colonne 2 l'image (normalisée), la colonne 3 le petit commentaire. " ;
00130 echo " Comment mettre un lien sur le bas de la page de la liste de courses ? " ;
00131 finp() ;
00132
00133 p("texte") ;
00134 echo "S'il reste du temps : (à faire dans le tableau)" ;
00135 finp() ;
00136 ul() ;
00137 li(" Quelle est la \"bonne\" syntaxe de l'URL ".b("http://www.google.fr/search?q=légumes")." ? ") ;
00138 li(" Mettre toutes les images avec une même taille. ") ;
00139 li(" Mettre une couleur bleu clair en fond de tableau.") ;
00140 li(" Mettre le texte de commentaire en vert sur fond rose pour le pain et la viande.") ;
00141 li(" Faire un roll-over (qu'est-ce ?) sur deux images en cru/cuit.") ;
00142 finul() ;
00143 finli() ;
00144
00145
00146 finol() ;
00147
00148 #########################################################
00149
00150 $jtp++ ; tpDscs($jtp,$nomTp[$jtp]) ; # TP2
00151
00152 #########################################################
00153
00154 p("texte") ;
00155 echo b("Remarque ")." : sauf pour l'exercice 1, tout le TP se passe en local, sous Windows ou Linux, " ;
00156 echo " mais les pages doivent ensuite être transférées vers les comptes Linux étudiant(e)s du départment informatique de l'UFR." ;
00157 finp() ;
00158
00159 ol() ;
00160
00161 debutli() ;
00162 p("texte") ;
00163 echo " Utiliser le PC sous Linux et réaliser une connection vers la machine ".em("devel")." dans un terminal. " ;
00164 echo " On utilisera la commande ".b("ssh -YC -p 4920 VOTRE_LOGIN@devel.info.univ-angers.fr")." pour se connecter où ".b("VOTRE_LOGIN")." est l'identifiant " ;
00165 echo " associé à votre compte d'étudiant(e). " ;
00166 #echo " Au pire, demandez à un(e) voisin(e) connecté(e) de taper ".b("liste licsen")." " ;
00167 #echo " afin de voir votre login." ;
00168 finp() ;
00169
00170 p("texte") ;
00171 #echo " Changer le mot de passe provisoire de votre compte en un \"vrai\" mot de passe avec la commande ".em("yppasswd").". " ;
00172 echo " Est-ce que le répertoire ".ghRouge("forge_html")." existe ?" ;
00173 echo " Si non, le créer. Vérifier ensuite que les droits sont bien ceux correspondant à la commande ".b("chmod -R 711 ~/forge_html")."." ;
00174 finp() ;
00175
00176 p("texte") ;
00177 echo " Reprendre l'exercice 3 (Bonjour/Bonsoir) et recopier les fichiers sur votre compte Unix et votre \"site étudiant\". " ;
00178 echo " On utilisera un éditeur comme ".b("gedit").", ".b("kate").", ".b("geany")." ou ".b("kwrite").". " ;
00179 echo " On fournira une version transitionnelle ou une version stricte, mais il est possible de se contenter de recopier la solution et " ;
00180 echo " de tester qu'elle fonctionnne après avoir recopié tous les fichiers nécessaires dont les feuilles de style. " ;
00181 echo " On viendra tester que le validateur du W3C est capable de tester les pages étudiantes via leur URL." ;
00182 finp() ;
00183
00184
00185
00186 finli() ;
00187
00188
00189 debutli() ;
00190 p("texte") ;
00191 echo "Peut-on écrire des pages Web chez soi, sur son Pc sous Windows et les mettre sur son compte étudiant Unix ?" ;
00192 finp() ;
00193 p("texte") ;
00194 echo em("Mézalors").", sous quel environnement (Windows, Linux) écrire ses pages, et avec quel éditeur ?" ;
00195 finp() ;
00196 p("texte") ;
00197 echo " Vérifier que vous savez transférer un fichier local sur ".em("janus")." à l'aide de ".b("FileZilla") ;
00198 echo " ou d'un outil logiciel équivalent qui utilise le protocole ".b("SFTP")." :" ; # , port 4920 : " ;
00199 finp() ;
00200
00201 p("texte") ;
00202 echo "Il faut mettre ".b("sftp://devel.info.univ-angers.fr")." comme nom d'".em(ghVert("hôte")).", " ;
00203 echo " puis entrer son identifiant ".b("et")." son mot de passe puis appuyer sur Enter (pas sur Connexion rapide). ";
00204 echo " Il n'y a pas besoin d'entrer le numéro du port." ;
00205 finp() ;
00206
00207
00208 p() ;
00209 $url = "filezilla.png" ;
00210 echo href($url,img($url,"",600)) ;
00211 finp() ;
00212
00213 p("texte") ;
00214 echo " Vérifier aussi qu'on peut alors consulter la page Web sur son téléphone portable, ou avec une tablette." ;
00215 finp() ;
00216 p("texte") ;
00217 echo em("Remarque")." : " ;
00218 echo " à la faculté, on peut aussi mettre comme nom d'hôte ".ghvert("sftp://devel.info-ua")." pour ". b("FileZilla");
00219 echo " alors que depuis l'extérieur, il ".ghrouge("faut")." mettre comme nom d'hôte ".ghvert("sftp://devel.info.univ-angers.fr").". " ;
00220 finp() ;
00221 finli() ;
00222
00223 debutli() ;
00224 p("texte") ;
00225 echo "Reprendre sous Unix l'exercice de la liste des courses du TP 1 (version tableau) avec les images et les liens. " ;
00226 echo " On mettra des liens vers Google, les images en petit avec un lien pour avoir l'image en grand. " ;
00227 echo " De plus on mettra une nappe (ou une couleur de fond) pour le tableau et une serviette (ou une couleur de cellule) " ;
00228 echo " pour la première case de chaqe ligne. On pourra aussi tester les ".b("divisions")." (<div>)." ;
00229 finp() ;
00230 p("texte") ;
00231 echo " Pour ceux et celles qui l'ont oublié, vérifier que la page est valide avec la grammaire transitionnelle puis en faire " ;
00232 echo " une copie avec la grammaire stricte (page valide) avec tous les styles en externe dans un fichier CSS." ;
00233 echo " Essayer aussi de regarder comment on ".href("http://www.albionresearch.com/misc/urlencode.php","urlencode")." la référence pour les légumes à cause du e-accent aigu." ;
00234 finp() ;
00235 finli() ;
00236
00237 finol() ;
00238
00239 #########################################################
00240
00241 $jtp++ ; tpDscs($jtp,$nomTp[$jtp]) ; # TP3
00242
00243 #########################################################
00244
00245
00246 p("texte") ;
00247 echo b("Remarque ")." : tous les TPs sont désormais aux choix des étudiant(e)s sous Windows ou sous Linux." ;
00248 finp() ;
00249
00250 ol() ;
00251 /*
00252 debutli() ;
00253 p("texte") ;
00254 echo "Démarrer le PC sous Windows et vérifier que vous savez utiliser WinScp " ;
00255 echo " pour transférer un fichier de n'importe quelle machine connectée à Internet sous Windows vers votre compte Unix ; " ;
00256 echo " recopier, par exemple sur votre compte les deux fichiers " ;
00257 echo href("modele_transitionnel.htm","modele_transitionnel")." et " ;
00258 echo href("modele_strict.htm","modele_strict")." puis " ;
00259 echo href("std.css")." qui servira pour tous les TP." ;
00260 finp() ;
00261
00262 p("texte") ;
00263 echo "Installer en local sous Windows l'extension ".ancre("https://addons.mozilla.org/fr/firefox/addon/249","Html Validator")." et " ;
00264 echo " vérifier que le code-source est testé en fonction de la grammaire. Choisir le mode \"les deux\" pour la vérification." ;
00265 echo " Installer aussi le validateur sous Linux." ;
00266 finp() ;
00267
00268 finli() ;
00269 */
00270
00271 debutli() ;
00272 p("texte") ;
00273 echo "Reproduire le tableau de la page " ;
00274 echo ancre("botablo.htm") ;
00275 echo " puis celui de la page " ;
00276 echo ancre("botablo2.htm").". On essaiera de comprendre la différence entre " ;
00277 echo b("<table bgcolor='yellow'>...")."," ;
00278 echo b("<td bgcolor='yellow'>...")." et " ;
00279 echo b("<td><p bgcolor='yellow'>...")."" ;
00280 echo " Tester également ".b("border='100'")." puis les couples ".b("cellpadding='20' cellspacing='100'")." et ".b("cellpadding='20' cellspacing='100'")."." ;
00281 finp() ;
00282 finli() ;
00283
00284 debutli() ;
00285 p("texte") ;
00286 echo "On veut s'affranchir du souligné sous un lien. Comment faire ? On essaiera de mettre un petit texte en bleu foncé dans " ;
00287 echo " un paragraphe sur fond gris (paragraphe justifié à droite et à gauche et encadré) avec un lien en rouge sans souligné. " ;
00288 echo " Dupliquer le paragraphe et inventer un \"bouton rectangulaire\" en jouant sur les dimensions du style associé au lien." ;
00289 echo " On ne commencera pas avec une page web vide mais avec le squelette ".ancre("sq.htm")."." ;
00290 finp() ;
00291 finli() ;
00292
00293 debutli() ;
00294 p("texte") ;
00295 echo " Inventer la couleur bleu_tendre ou bleu_intense à l'aide d'un code RGB issu de ".ancre("http://www.pagetutor.com/colorpicker/index.html","ColorPicker"). "." ;
00296 echo " Copier-coller le texte suivant (tiré de ".ancre("http://fr.wikipedia.org/wiki/Jules_C%C3%A9sar","wiki").")." ;
00297 finp() ;
00298
00299 pre_fichier("jules.txt","cadrejaune") ;
00300
00301 p("texte") ;
00302 echo " On utilisera pour cette première partie la grammaire ".em("transitionnelle")."." ;
00303 echo " Mettez un titre de niveau 1 autour de ".b("Jules César")." puis écrivez à nouveau ".b("Jules César")." " ;
00304 echo " en taille 7 et encore une troisième fois en \"font-size\" ".b("300pt").". Qui est le plus gros ? " ;
00305 echo " Délimiter le paragraphe de biographie via l'élément ".b("p").". " ;
00306 echo " Dupliquer le paragraphe et essayer de mettre la copie en retrait. " ;
00307 echo " On essaiera de trouver plusieurs solutions pour ce retrait. Mettre ensuite le titre en bleu_intense à l'aide d'un " ;
00308 echo " style en ligne puis avec un style nommé ".b("jc")." pris dans une feuille de style externe nommée ".b("cesar.css")." ;" ;
00309 echo " peut-on utiliser le style ".b("jc")." pour faire ressortir les mots ".b("Rome")." et ".b("République romaine")." ? " ;
00310 echo " Pourquoi est-ce \"stupide\" d'utiliser une feuille nommée ".b("cesar.css")." ?" ;
00311 echo " On ne commencera pas avec une page web vide mais avec le squelette ".ancre("sq.htm")."." ;
00312 finp() ;
00313 p("texte") ;
00314 echo " Reprendre l'exercice avec la grammaire ".em("stricte")."." ;
00315 finp() ;
00316 finli() ;
00317
00318 debutli() ;
00319 p("texte") ;
00320 echo "Ecrire un petit texte dans un paragraphe et dupliquer le paragraphe. Appliquer ensuite " ;
00321 echo " le style ".b("cadre")." de la feuille de styles ".href("../std.css","std.css") ;
00322 echo " au deuxième paragraphe. " ;
00323 finp() ;
00324 finli() ;
00325
00326 finol() ;
00327
00328 #########################################################
00329
00330 $jtp++ ; tpDscs($jtp,$nomTp[$jtp]) ; # TP4
00331
00332 #########################################################
00333
00334 ol() ;
00335
00336 debutli() ;
00337 p("texte") ;
00338 echo "Recopier en local la page ".ancre("sen_ts.htm").", les styles ".ancre("sen_demo1.css")." et ".ancre("sen_demo2.css")."." ;
00339 echo " Testez ces 3 fichiers pour savoir s'ils sont valides et corrigez-les le cas échéant." ;
00340 echo " Tester l'affichage si on met ".b("sen_demo1.css")." comme feuille de style pour ".b("sen_ts.htm")." puis quand on utilise ".b("sen_demo2.css")."." ;
00341 finp() ;
00342 finli() ;
00343
00344 debutli() ;
00345 p("texte") ;
00346 echo "Ecrire un formulaire minimal pour remplacer le formulaire de base de Google. " ;
00347 echo " Qu'y a-t-il de plus dans le formulaire original de Google ? " ;
00348 finp() ;
00349 p("texte") ;
00350 echo " ".em("Pour les experts")." : écrire dans la même page un autre formulaire dont la recherche est restreinte à la France," ;
00351 echo " un troisième restreint aux images et enfin un quatrième qui filtre les recherches pour protéger les enfants. " ;
00352 echo " Pourquoi dans ce cas certaines pages de ".b("Gilles Hunault")." sont-elles filtrées ? " ;
00353 finp() ;
00354 finli() ;
00355
00356
00357 debutli() ;
00358 p("texte") ;
00359 echo "Que peut-on faire avec l'URL ".b("http://forge.info.univ-angers.fr/~gh/internet/ndjpm.php")." ? Essayer de voir comment cette adresse " ;
00360 echo " permet de connaitre le nombre de jours d'un mois donné. Pourquoi est-ce que ce script (programme) se nomme ".b("ndjpm")." ? " ;
00361 echo " Peut-on 'coincer' ce programme ? Lui faire afficher une erreur ? " ;
00362 finp() ;
00363 finli() ;
00364
00365 debutli() ;
00366 p("texte") ;
00367 echo "Faire une liste numérotée avec les mois Septembre, Octobre... ; peut-on commencer les numéros à 9 ? et mettre les nombres en latin ? " ;
00368 echo " Mettre un lien sous le nom du mois avec comme URL :" ;
00369 finp() ;
00370
00371 div('center') ;
00372 echo b("http://forge.info.univ-angers.fr/~gh/internet/ndjpm.php?m=")." " ;
00373 findiv() ;
00374
00375 p("texte") ;
00376 echo " suivi du numéro du mois ( ".b("?m=9")." pour Septembre, ".b("?m=10")." pour Octobre etc.). " ;
00377 finp() ;
00378 p("texte") ;
00379 echo " Si on commence à 1957, quelle est la première valeur avec ".b("type='I'")." ? Pourquoi ? " ;
00380 finp() ;
00381 p("texte") ;
00382 echo " Si on commence à 2019, quelle est la deuxième valeur avec ".b("type='A'")." ? Pourquoi ? " ;
00383 finp() ;
00384 finli() ;
00385
00386 debutli() ;
00387 p("texte") ;
00388 echo "Ecrire un formulaire qui demande un numéro de mois et qui renvoie le nombre de jours dans ce mois. " ;
00389 echo " On utilisera l'URL de l'exercice précédent." ;
00390 echo " Ecrire dans la même page un second formulaire qui utilise une liste de sélection non multiple qui affiche les noms de mois " ;
00391 echo " et qui renvoie le nombre de jours dans ce mois. " ;
00392 echo " Ecrire (toujours dans la même page) un troisième formulaire qui utilise une liste de boutons radio pour sélectionner le mois " ;
00393 echo " et qui renvoie le nombre de jours dans ce mois. " ;
00394 finp() ;
00395
00396 p("texte") ;
00397 echo em("Question sans réponse")." : pédagogiquement, quel est le meilleur formulaire et pourquoi ?" ;
00398 finp() ;
00399 finli() ;
00400
00401 debutli() ;
00402 p("texte") ;
00403 echo " Ecrire un formulaire qui demande une longueur et une largeur en mètres et qui utilise comme action " ;
00404 echo " l'URL ".href("http://forge.info.univ-angers.fr/~gh/internet/longlarg.php") ;
00405 echo " pour afficher le périmètre et l'aire du champ rectangulaire correspondant à ces dimensions " ;
00406 echo " (pas de $Javascript ici)." ;
00407 finp() ;
00408 finli() ;
00409
00410 debutli() ;
00411 p("texte") ;
00412 echo " Puisque l'attribut ".b("start")." pour l'élément ".b("ol")." est interdit dans la grammaire stricte (voir la validation de la page " ;
00413 echo href("http://forge.info.univ-angers.fr/~gh/internet/olstart1.php","olstart1")."), " ;
00414 echo " comment faire pour commencer une liste ordonnée à 9 pour le mois de septembre avec la grammaire stricte ?" ;
00415 finp() ;
00416 finli() ;
00417
00418 debutli() ;
00419 p("texte") ;
00420 echo " Ecrire un formulaire qui demande un nombre et en affiche le double sur la même page. " ;
00421 echo " On utilisera $Javascript avec une grammaire stricte et on fera la multiplication par 2 'à la volée' dans un \"onsubmit\" ; " ;
00422 echo " on utilisera deux champs textes nommés respectivement ".b("nombre")." et ".b("double").". " ;
00423 echo " L'action sera l'URL : " ;
00424 finp() ;
00425
00426 p("centre") ;
00427 echo b(href("http://forge.info.univ-angers.fr/~gh/internet/non.php"))."" ;
00428 finp() ;
00429
00430 p("texte") ;
00431 echo " et ne devra pas s'exécuter..." ;
00432 finp() ;
00433
00434 p("texte") ;
00435 echo " Pour mémoire, en $Javascript, à l'intérieur d'un formulaire, on accède à la valeur liée à un élement de type input " ;
00436 echo " par ".b("this.NOM.value")." si NOM est le nom de l'élément. En dehors du formulaire, par exemple dans la console ou par fonction, " ;
00437 echo " on y accède par ".b("window.document.getElementById(\"IDELT\").value")." si IDELT est l'id de l'élément." ;
00438 finp() ;
00439
00440 p("texte") ;
00441 echo " Ajouter un autre formulaire qui demande un nombre et en affiche le double et la moitié sur la même page avec un seul bouton d'envoi. " ;
00442 echo " On utilisera $Javascript avec une grammaire stricte et on fera la division par 2 'à la volée' dans un \"onsubmit\" ; " ;
00443 echo " on utilisera trois champs textes nommés respectivement ".b("Xnombre").", ".b("Xdouble")." et ".b("Xdemi")." (pourquoi ?). " ;
00444 finp() ;
00445
00446 p("texte") ;
00447 echo " Ecrire enfin un troisième formulaire qui affiche le tiers d'un nombre. Comment gérer les décimales ? " ;
00448 finp() ;
00449
00450 p("texte") ;
00451 echo " Peut-on faire la même chose sans formulaire ?" ;
00452 finp() ;
00453
00454 p("texte") ;
00455 echo " On pourra consulter ".href("sen_nombres4.php","sen_nombres4")." comme modèle de page ) produire, comme ci-dessous :" ;
00456 finp() ;
00457
00458 p() ;
00459 nbsp(8) ;
00460 $url = "sen_nombres4.png" ;
00461 echo href($url,img($url,"",600)) ;
00462 finp() ;
00463 finli() ;
00464
00465 finol() ;
00466
00467 #########################################################
00468
00469 $jtp++ ; tpDscs($jtp,$nomTp[$jtp]) ; # TP5
00470
00471 #########################################################
00472
00473 ol() ;
00474
00475 debutli() ;
00476 p("texte") ;
00477 echo " Ecrire un formulaire qui demande une longueur et une largeur en mètres et qui utilise comme action " ;
00478 echo " l'URL ".href("http://forge.info.univ-angers.fr/~gh/internet/longlarg.php") ;
00479 echo " pour afficher le périmètre et l'aire du champ rectangulaire correspondant à ces dimensions " ;
00480 echo " (pas de $Javascript ici)." ;
00481 finp() ;
00482 p("texte") ;
00483 echo "Remplacer ensuite l'action par la mise à jour des réponses dans la page via $Javascript. On pourra afficher des étoiles à la place " ;
00484 echo " du résultat tant qu'on a pas cliqué sur le bouton d'envoi nommé ".b("calculer !")."." ;
00485 finp() ;
00486 p("texte") ;
00487 echo "Pour les plus rapides, masquer la zone des résultats au chargement de la page et la montrer seulement " ;
00488 echo " quand on utilise le bouton d'envoi nommé ".b("calculer")." (utiliser la propriété ".b("visibility")." ou les styles " ;
00489 echo b("visible")." et ".b("invisible")." de ".href("std.css").")." ;
00490 finp() ;
00491 finli() ;
00492
00493
00494 debutli() ; p("texte") ;
00495 echo "J'ai malheureusement écrit le texte html suivant nommé ".href("malchance.htm")." : \n" ;
00496 finp() ;
00497
00498 pre() ;
00499 echo " <h2>Bonjour</h2> \n" ;
00500 echo " \n" ;
00501 echo " <script language=\"javascript\"> \n" ;
00502 echo " window.document.write(' Qui le dit ? C'est moi ! ') ; \n" ;
00503 echo " </script> \n" ;
00504 echo " \n" ;
00505 echo " <h2>Bonsoir</h2> \n" ;
00506
00507 finpre() ;
00508
00509 p() ;
00510 echo "...mais je ne vois rien entre Bonjour et Bonsoir. Pourquoi ? Corriger le script puis \n" ;
00511 echo "indiquer comment on peut voir les erreurs des scripts. Est-ce que cela a de l'influence sur la validation ?\n" ;
00512 finp() ;
00513 finli() ;
00514
00515 debutli() ;
00516 p("texte") ;
00517 echo " Ecrire un formulaire qui demande un nombre de kilos et qui affiche son équivalent en grammes. " ;
00518 echo " On utilisera $Javascript avec une grammaire stricte. Une première solution fera la conversion à la volée dans un \"onsubmit\", " ;
00519 echo " la deuxième solution utilisera une fonction de conversion mise dans un fichier externe (chargé dans ".b("head")."). On utilisera une action non vide " ;
00520 echo " qui ne devra pas être déclenchée. La fonction utilisée, soit ".b("conversionKilos(x)")." recevra tout le formulaire " ;
00521 echo " et non pas juste la valeur à convertir. On fera juste la conversion, mais aucune vérification sur le type, la valeur... " ;
00522 finp() ;
00523
00524 p("texte") ;
00525 echo " ".em("Pour les experts")." : dans le deuxième formulaire, arrangez-vous pour rendre le champ de réponse invisible " ;
00526 echo " (propriété CSS nommée ".b("visible").") et rendez-la visible quand on soumet le formulaire. Attention : ce n'est pas le " ;
00527 echo " même code avec Firefox et Internet Explorer." ;
00528 finp() ;
00529 finli() ;
00530
00531 debutli() ;
00532 p("texte") ;
00533 echo " Ecrire une page Web qui met, via ".em("Javascript").", " ;
00534 echo " la valeur ".b("8")." dans la variable ".b("a").", la valeur ".b("2")." dans la variable ".b("b")." " ;
00535 echo " et qui ensuite calcule et affiche leur addition, soustraction, multiplication et division." ;
00536 echo " Comment demander à $Javascript d'écrire dans la page ? " ;
00537 echo " Utilisez une grammaire stricte. Attention : cet exercice n'utilise aucun formulaire." ;
00538 finp() ;
00539
00540 p("texte") ;
00541 echo " Ecrire dans la même page un formulaire qui demande deux nombres entiers et qui affiche leur addition, soustraction, multiplication et division." ;
00542 echo " On utilisera $Javascript avec une grammaire stricte et on soignera le cas de la division." ;
00543 echo " On pourra ajouter la comparaison des deux nombres (à tester avec 13 et 2). " ;
00544 # echo " A quoi sert l'url ".b("javascript:")." sous Firefox ? " ;
00545 echo " Comment demander à $Javascript d'écrire dans la page qui contient le formulaire ? " ;
00546 echo " Utilisez une grammaire stricte." ;
00547 finp() ;
00548 finli() ;
00549
00550 debutli() ;
00551 p("texte") ;
00552 echo " Ecrire une page Web qui met via ".em("Javascript")." " ;
00553 echo " la valeur ".b("8")." dans la variable ".b("a").", la valeur ".b("2")." dans la variable ".b("b")." " ;
00554 echo " et la valeur ".b("6")." dans la variable ".b("c").". Comment afficher ces variables par ordre croissant ? " ;
00555 echo " On utilisera impérativement une fonction ".b("afficheCroiss(a,b,c)")." et on réfléchira à l'ensemble des cas possibles." ;
00556 echo " Comment devrait-on faire si on avait 4, 5, 6... valeurs ? On pourra utiliser la liste de nombres 1 5 8 2 8 3 6 8 2 pour vérifier." ;
00557 echo " Utilisez une grammaire stricte. Attention : cet exercice n'utilise aucun formulaire." ;
00558 finp() ;
00559
00560 #########################################################
00561 #########################################################
00562 ######################################################### CONFINEMENT
00563 #########################################################
00564 #########################################################
00565
00566 div("cadre") ;
00567 blockquote("1") ;
00568 h1("TP ".aname("confinement","confinement")." novembre 2020","grouge") ;
00569 blockquote(2) ;
00570
00571 #########################################################################
00572
00573 h2("TP du 03 novembre : fonctions $Javascript liées à onClick ") ;
00574
00575 #########################################################################
00576
00577 blockquote(21) ;
00578 div("cadreblanc") ;
00579 blockquote(210) ;
00580 p("texte") ;
00581 echo " Essayer de réaliser les exercices ".ghVert(6)." et ".ghVert(7)." ci-dessous (".ghBleu("TP 5")."), le panneau d'affichage Eux/Nous et l'horloge numérique. " ;
00582 finp() ;
00583
00584 p("texte") ;
00585 echo " N'oublez pas d'afficher la console $Javascript via les outils de développement pour voir les messages d'erreur." ;
00586 finp() ;
00587
00588 p("texte") ;
00589 echo em(s_span(" Pour mémoire","vert")).", l'éditeur de texte conseillé pour écrire du HTML et du $Javascript est ".b("Geany").". " ;
00590 echo " C'est un logiciel gratuit, facile à installer depuis son téléchargement " ;
00591 echo href("https://www.geany.org/","ici").". " ;
00592 finp() ;
00593
00594 finblockquote(210) ;
00595 findiv() ;
00596 finblockquote(21) ;
00597
00598 #########################################################################
00599
00600 h2("TP du 10 novembre : tableaux en $Javascript ") ;
00601
00602 #########################################################################
00603
00604 blockquote(22) ;
00605 div("cadreblanc") ;
00606
00607 blockquote(220) ;
00608
00609 p("texte") ;
00610 echo " Essayer de réaliser les exercices ".ghVert(8)." et ".ghVert(11)." ci-dessous (".ghBleu("TP 5")."), calcul du maximum d'un tableau et la réponse " ;
00611 echo b("rr?o?uge")." dans «".em("le petit chaperon rouge")."»." ;
00612 finp() ;
00613 p("texte") ;
00614 echo em("Facultatif")." : " ;
00615 echo " réaliser le test de compréhension des tableaux disponible " ;
00616 echo href("https://wiki.developer.mozilla.org/en-US/docs/Learn/JavaScript/First_steps/Test_your_skills:_Arrays","ici").". " ;
00617 # echo " puis l'exercice ".ghVert(9)." du ".ghBleu("TP 5")." (le nombre mystérieux). Quelle est la meilleure stratégie pour trouver ce nombre ?" ;
00618 finp() ;
00619
00620 finblockquote(220) ;
00621 findiv() ;
00622 finblockquote(22) ;
00623
00624 #########################################################################
00625
00626 h2("TP du 17 novembre : nombres au hasard, le jeu du nombre mystérieux ($Javascript)") ;
00627
00628 #########################################################################
00629
00630 blockquote(22) ;
00631 div("cadreblanc") ;
00632 blockquote(221) ;
00633
00634 pvide() ;
00635
00636 ul("class='disque'") ;
00637
00638 debutli() ;
00639
00640 p("texte") ;
00641 echo " Pour vérifier que vous savez générer un nombre au hasard, lisez et étudiez la page ".href("nbAuHasard.php","nombreAuHasard","bleu").". " ;
00642 echo " Modifiez le code $Javascript pour que, quand le nombre d'enregistrements est plus ou grand ou égal au nombre de tirages, les nombres tirés soient distincts " ;
00643 echo " (au bout d'un moment, ils ne sont donc plus vraiment au hasard). " ;
00644 echo ghRouge(" Attention :")." si vous programmez mal vos calculs, il est possible que votre script entre dans une boucle infinie, " ;
00645 echo " alors, prudence dans ce que vous écrivez. " ;
00646 finp() ;
00647
00648 p("texte") ;
00649 nbsp(5) ;
00650 echo ghBleu(" Solution : ") ;
00651 echo href("nombresAuHasardDistincts.php","nombresAuHasardDistincts") ;
00652 echo ". " ;
00653 finp() ;
00654
00655 finli() ;
00656
00657 debutli() ;
00658
00659 p("texte") ;
00660 echo " Programmer ensuite en $Javascript dans une page Web le jeu du nombre mystérieux, selon les consignes suivantes. " ;
00661 echo " L'ordinateur choisit un nombre entier au hasard entre 1 et 100. L'utilisateur doit trouver ce nombre. " ;
00662 echo " A chaque réponse utilisateur incorrecte, l'ordinateur répond " ;
00663 echo em("«plus petit»") ;
00664 echo " ou " ;
00665 echo em("«plus grand»") ;
00666 echo " pour guider l'utilisateur. " ;
00667 echo " Si le nombre n'est pas trouvé au bout de 9 essais, l'ordinateur affiche la réponse. " ;
00668 finp() ;
00669
00670 p("texte") ;
00671 echo " Il faut bien sûr commencer par réfléchir au ".b("design")." de la page. " ;
00672 echo " Vous trouverez " ;
00673 echo href("leNombreInconnu.php","ici")." un exemple de page possible (mais sans $Javascript) pour cet exercice. " ;
00674 echo " La division qui contient le nombre inconnu et le nombre d'essais ne doivent pas apparaitre et " ;
00675 echo " il serait \"sympathique\" de masquer la zone jaune tant que l'utilisateur n'a pas effectué son premier essai. " ;
00676 finp() ;
00677
00678 p("texte") ;
00679 nbsp(5) ;
00680 echo ghBleu(" Solution : ") ;
00681 echo href("leNombreInconnuVersion1.php","leNombreInconnuVersion1") ;
00682 echo ". " ;
00683 finp() ;
00684
00685 finli() ;
00686
00687 debutli() ;
00688
00689 p("texte") ;
00690 echo " Rien n'interdit à l'utilisateur de saisir plusieurs fois la même valeur. Ecrivez une version 2 du jeu du nombre mystérieux " ;
00691 echo " où on n'autorise pas deux fois la même valeur de la part de l'utilisateur. " ;
00692 finp() ;
00693
00694 p("texte") ;
00695 nbsp(5) ;
00696 echo ghBleu(" Solution : ") ;
00697 echo href("leNombreInconnuVersion2.php","leNombreInconnuVersion2") ;
00698 echo ". " ;
00699 finp() ;
00700
00701 finli() ;
00702
00703 finul() ;
00704
00705 pvide() ;
00706
00707 finblockquote(221) ;
00708 findiv() ;
00709 finblockquote(22) ;
00710
00711 #########################################################################
00712
00713 h2("TP du 24 novembre : requêtes $MySQL") ;
00714
00715 #########################################################################
00716
00717 blockquote(22) ;
00718 div("cadreblanc") ;
00719 blockquote(222) ;
00720
00721 pvide() ;
00722
00723 p("texte") ;
00724 echo " Le but de ce TP est de vérifier que vous avez compris la seule chose importante dans ce cours par rapport " ;
00725 echo " à $MySQL, à savoir : ".em("écrire une requête ".b("SELECT")).". " ;
00726 finp() ;
00727
00728 p("texte") ;
00729 echo " Donc ".ghRouge("pas de panique")." ! Si vous avez l'impression d'être perdue entre $HTML et $Javascript, bonne nouvelle :" ;
00730 echo " dans ce TP, il n'y en a pas, il n'y a que du $MySQL." ;
00731 finp() ;
00732
00733 ul("class='disque'") ;
00734
00735 debutli() ;
00736
00737 p("texte") ;
00738 echo " Répondez aux questions du " ;
00739 echo href("../tuteurs/tutmysql.htm#tth_sEc6.","tuteur $MySQL") ;
00740 echo " section 6, exercices 1 (".ghVert("titanic").") et 2 (".ghVert("elf")."). " ;
00741 finp() ;
00742
00743 p("texte");
00744 echo " Vous utiliserez bien sûr la page " ;
00745 finp() ;
00746
00747 p("texte");
00748 nbsp(8) ;
00749 echo href("http://forge.info.univ-angers.fr/~gh/Pluripass/Db/executeMysql.php"," executeMysql ","bouton_fin nou jaune_pastel") ;
00750 finp() ;
00751
00752 p("texte");
00753 echo " pour tester vos réponses. " ;
00754 finp() ;
00755
00756 p("texte") ;
00757 echo " Essayez ensuite de répondre aux questions de la partie 2 de l'examen " ;
00758 echo href("sen2017_3.pdf","sen2017_3").". " ; ;
00759 finp() ;
00760
00761 finli() ;
00762
00763 debutli() ;
00764
00765 p("texte") ;
00766 echo " Répondez aux questions du " ;
00767 echo href("../tuteurs/tutmysql.htm#tth_sEc6.","tuteur MySQL") ;
00768 echo " section 6, exercices 3 (".ghVert("ronfle").") et 4 (".ghVert("2tables")."). " ;
00769 finp() ;
00770
00771 p("texte") ;
00772 echo " Essayez ensuite de répondre aux questions de la partie 3 de l'examen " ;
00773 echo href("sen2016_3.pdf","sen2016_3").". " ; ;
00774 finp() ;
00775
00776 finli() ;
00777
00778 debutli() ;
00779
00780 p("texte") ;
00781 echo " Répondez aux questions du " ;
00782 echo href("../tuteurs/tutmysql.htm#tth_sEc6.","tuteur $MySQL") ;
00783 echo " section 6, exercice 5 (".ghVert("4tables")."). " ;
00784 finp() ;
00785
00786 finli() ;
00787
00788 debutli() ;
00789
00790 p("texte") ;
00791 echo " Sur la base du " ;
00792 echo href("miniQuizzHistoire.php","mini quizz d'histoire") ;
00793 echo " présenté hier, comment feriez pour avoir trois dates aléatoires à proposer dans l'exercice " ;
00794 echo " plutôt que les trois premières dates ? " ;
00795 echo " Peut-on le faire avec $MySQL ?" ;
00796 finp() ;
00797
00798 finli() ;
00799
00800 finul() ;
00801
00802 pvide() ;
00803
00804 finblockquote(222) ;
00805 findiv() ;
00806 finblockquote(22) ;
00807
00808 #########################################################################
00809
00810 h2("TP du 1".sup("er")." décembre : révision, suite et fin") ;
00811
00812 #########################################################################
00813
00814 blockquote(33) ;
00815 div("cadreblanc") ;
00816 blockquote(330) ;
00817
00818 pvide() ;
00819
00820 p("texte") ;
00821 echo " Si vous n'aviez fini pas le cours d'hier avec ses huit étapes, reprenez là où vous étiez rendues. " ;
00822 echo " Si vous avez l'impression de passer trop de temps sur l'étape 2, lisez et recopiez le corrigé dans " ;
00823 echo href("mots2.html")." et dans ".href("mots2.js")." puis passez à l'étape 3 qui est plus simple. " ;
00824 finp() ;
00825
00826 p("texte") ;
00827 echo " Si vous aviez tout fini, refaites tout mais sans utiliser les maquettes de fonction fournies. " ;
00828 echo " Si vous préférez, refaites une page similaire pour des exercices de géographie avec la même démarche :" ;
00829 echo " $HTML puis $Javascript pour un exercice, une boucle pour plusieurs exercices, intégration de la base de données, évaluation... " ;
00830 finp() ;
00831
00832 pvide() ;
00833
00834 finblockquote(330) ;
00835 findiv() ;
00836 finblockquote(33) ;
00837
00838 ##########################################################################################
00839 ##########################################################################################
00840 ##########################################################################################
00841 ##########################################################################################
00842 ##########################################################################################
00843
00844 finblockquote(2) ;
00845 finblockquote("1") ;
00846 findiv() ;
00847
00848 finli() ;
00849
00850 ##########################################################################################
00851 ##########################################################################################
00852 ##########################################################################################
00853 ##########################################################################################
00854 ##########################################################################################
00855
00856 debutli() ;
00857 p("texte") ;
00858 echo " Ecrire un panneau d'affichage Eux/Nous avec des \"gros\" boutons + et - pour modifier les scores, comme dans une salle de sports. " ;
00859 echo " On utilisera $Javascript avec une grammaire stricte et on mettra un bouton pour remettre à zéro." ;
00860 finp() ;
00861 finli() ;
00862
00863 debutli() ;
00864 p("texte") ;
00865 echo " Ecrire un affichage d'horloge numérique pour apprendre à lire l'heure, avec avec des \"gros\" boutons + et - " ;
00866 echo " pour modifier les heures et les minutes. On initalisera à 23 h 58." ;
00867 echo " On utilisera $Javascript avec une grammaire stricte. Exemple de rendu via ".href("sen_horloge.php","sen_horloge")." :" ;
00868 finp() ;
00869
00870 p() ;
00871 nbsp(8) ;
00872 $url = "sen_horloge.png" ;
00873 echo href($url,img($url,"",600)) ;
00874 finp() ;
00875
00876 p("texte") ;
00877 echo " Beaucoup plus difficile (".b("mais plus pédagogique")."). Ajouter un panneau qui dit l'heure : " ;
00878 echo " ".em("neuf heures moins le quart ")." pour 8 h 45, " ;
00879 echo " ".em("10 heures moins dix")." pour 9 h 50 etc." ;
00880 finp() ;
00881 finli() ;
00882
00883 debutli() ;
00884 p("texte") ;
00885 echo "Ecrire une fonction $Javascript qui détermine le max d'un tableau (la plus grande valeur présente dans le tableau) et le nombre de fois où ce max apparait " ;
00886 echo " avec la contrainte qu'on doit utiliser une seule boucle POUR qui fait à la fois la détermination du max " ;
00887 echo " et le calcul du nombres d'occurences." ;
00888 finp() ;
00889 finli() ;
00890
00891 debutli() ;
00892 p("texte") ;
00893 echo "Ecrire tout en $Javascript le jeu du nombre mystérieux avec initialisation à un entier entre 1 et 100, " ;
00894 echo " un nombre maximum d'essais et un affichage de l'historique des réponses." ;
00895 finp() ;
00896 finli() ;
00897
00898 debutli() ;
00899 p("texte") ;
00900 echo "Ecrire une fonction $Javascript qui trie un tableau HTML à plusieurs colonnes." ;
00901 echo " On distinguera le tri alphabétique (comme pour les mois) du tri numérique (pour les prix)." ;
00902 finp() ;
00903 finli() ;
00904
00905 debutli() ;
00906 p("texte") ;
00907 echo " Ecrire une page Web qui pose la question ".em("Quelle est la couleur du petit chaperon dans le conte de Charles PERRAULT ?").". " ;
00908 echo " Sans utiliser de formulaire, utiliser $Javascript pour accepter silencieusement une chaine avec des espaces en début ou en fin de chaine. " ;
00909 echo " On acceptera la réponse ".b("rouge")." comme seule bonne réponse exacte. " ;
00910 echo " On acceptera les réponses ".b("roug").", ".b("ruge").", ".b("rrouge")." comme réponses correctes approchées. " ;
00911 echo " Le code $Javascript devra convertir en minuscules tout le texte entré et remplacer les espaces multiples par un seul espace." ;
00912 finp() ;
00913
00914 p("texte") ;
00915 echo " Demander ensuite à l'apprenant son mois de naissance au format ".b("MM").". On refusera tout autre format." ;
00916 finp() ;
00917
00918 finli() ;
00919
00920 finol() ;
00921
00922 #########################################################
00923
00924 $jtp++ ; tpDscs($jtp,$nomTp[$jtp]) ; # TP6
00925
00926 #########################################################
00927
00928 p("texte") ;
00929 echo b("Remarque ")." : que le TP se passe sous Windows ou sous Unix, toutes les pages écrites doivent " ;
00930 echo " être enregistrées dans des fichiers de type ".b(".php")." (et non pas ".b(".html").") et il faut les " ;
00931 echo " ouvrir avec le protocole ".b("http://").", c'est à dire qu'on ne peut plus faire ".em("Fichier/Ouvrir")." " ;
00932 echo " pour charger la page." ;
00933 echo " L'URL du fichier ".b("demo.php")." pour l'utilisateur ".b("login")." est :" ;
00934 finp() ;
00935
00936 p("centre") ;
00937 echo b("http://devel.info.univ-angers.fr/~login/demo.php")."" ;
00938 finp() ;
00939
00940 p("texte") ;
00941 echo " ce qui signifie donc que vous devez mettre vos fichiers ".b(".php")." dans votre répertoire " ;
00942 echo " ".b("forge_html/").". " ;
00943 finp() ;
00944
00945 p("texte") ;
00946 echo ghRouge("Attention :")." contrairement aux pages Web précédentes, une erreur dans le code PHP peut aboutir à une page toute blanche " ;
00947 echo" ou au message ".b("Erreur 404: not found")." ou à l'affichage d'un code d'erreur. " ;
00948 finp() ;
00949
00950 p("texte") ;
00951 echo " Pour tester les erreurs de syntaxe élémentaire, il est conseille d'utiliser ".ghVert("php -l monProgramme.php")." comme ci-dessous " ;
00952 echo " où il manque un point-virgule sur la ligne qui précède ".ghvert("if").". " ;
00953 finp() ;
00954
00955 pre_fichier("err_demo.txt","cadrebleu") ;
00956
00957 p("texte") ;
00958 echo" Lorque votre page est \"propre\" et \"correcte\", vous pouvez l'utiliser sur forge, soit, pour l'exemple précédent, avec l'URL" ;
00959 finp() ;
00960
00961 p("centre") ;
00962 echo b("http://forge.info.univ-angers.fr/~login/demo.php")."" ;
00963 finp() ;
00964
00965 p("texte") ;
00966 echo" Il est conseillé d'utiliser ".ghVert("php -a")." dans un terminal pour tester un bout de code, découvrir comment marche une fonction, etc. " ;
00967 finp() ;
00968
00969 ol() ;
00970
00971 debutli() ;
00972 p("texte") ;
00973 echo "Testez ce qu'affiche le code PHP suivant :" ;
00974 finp() ;
00975
00976 pre("cadre") ;
00977 echo "\n";
00978 echo " <?php\n" ;
00979 echo " echo \"<h1>\\nET VOILA LE TRAVAIL\\n</h1>\\n\" ;\n" ;
00980 echo " ?>\n" ;
00981 echo "\n";
00982 finpre() ;
00983
00984 p("texte") ;
00985 echo "Si on affiche le code HTML de la page, combien trouve-t-on de lignes ? " ;
00986 echo " Que se passe-t-il en cas d'erreur, pas exemple si on oublie un guillemet ?" ;
00987 finp() ;
00988
00989 p("texte") ;
00990 echo "Ecrire un programme en ligne de commandes qui affiche, au dizième de milliard près, le nombre de secondes écoulées " ;
00991 echo " depuis l'an 0." ;
00992 echo " On ne tiendra pas compte de la nuit du " ;
00993 echo href("https://fr.wikipedia.org/wiki/Calendrier_gr%C3%A9gorien","4 au 15 octobre 1582").". " ;
00994 echo " Faut-il tenir compte des annnées bissextiles ?" ;
00995 finp() ;
00996
00997 p("texte") ;
00998 echo "Ecrire ensuite un programme PHP qui à partir des variables \$a et \$b met respectivement dans " ;
00999 echo " \$p et \$g la plus petite et la plus grande des deux valeurs. " ;
01000 echo " Combien y a-t-il de cas à envisager ?" ;
01001 echo b(" Attention :")." votre code doit fonctionner aussi bien avec des nombres qu'avec des chaines de caractères. " ;
01002 finp() ;
01003
01004 p("texte") ;
01005 echo "Ecrire ensuite un programme PHP qui à partir des trois variables \$a, \$b et \$c met respectivement dans " ;
01006 echo " \$p, \$g et \$m la plus petite, la plus grande et la valeur du milieu. " ;
01007 echo " Combien y a-t-il de cas à envisager ?" ;
01008 echo b(" Attention :")." votre code doit fonctionner aussi bien avec des nombres qu'avec des chaines de caractères. " ;
01009 finp() ;
01010
01011 finli() ;
01012
01013 debutli() ;
01014 p("texte") ;
01015 echo " Ecrire une fonction ".em("debutPage()")." qui écrit toutes les balises jusqu'à ".b("body")." compris " ;
01016 echo " et écrire dans la foulée la fonction ".em("finPage()")."." ;
01017 echo " Combien faut-il de temps désormais pour écrire une page \"propre et valide\" qui affiche ".b("Bonjour")." ? " ;
01018 finp() ;
01019
01020 p("texte") ;
01021 echo "Une fois que les fonctions ".em("debutPage()")." et ".em("finPage()")." seront au point, on les mettra dans " ;
01022 echo "le fichier ".b("mesfonctions.php")." et on utilisera un ".em("include")."... " ;
01023 finp() ;
01024
01025 p("texte") ;
01026 echo " ".em("Pour les experts")." : ajouter un paramètre à la fonction ".em("debutPage()")." pour que le programmeur " ;
01027 echo " puisse facilement choisir la grammaire stricte ou transitionnelle. Par défaut, ce sera la grammaire transitionnelle ";
01028 echo " qui sera utilisée." ;
01029 finp() ;
01030
01031 finli() ;
01032
01033 debutli() ;
01034 p("texte") ;
01035 echo " Ecrire en PHP la fonction ".em("h1").", la fonction ".em("h2")." et la fonction ".em("h3")." puis implémenter " ;
01036 echo " la fonction ".em("tnh(x,i)")." telle que ".em("h1(x)")." corresponde à ".em("tnh(x,1)")." et " ;
01037 echo " ".em("h2(x)")." corresponde à ".em("tnh(x,2)")." etc. " ;
01038 echo " Quel est l'intéret de ".em("tnh")." ? " ;
01039 finp() ;
01040 finli() ;
01041
01042 debutli() ;
01043 p("texte") ;
01044 echo "Ecrire le programme PHP qui correspond à l'action du formulaire ".ancre("sen_age.php") ;
01045 echo " (dont le code-source est ".ancre("montresource.php?nomfic=sen_age.php","ici")."), " ;
01046 echo " et qui répond " ;
01047 echo b("Vous êtes mineur")." si l'age est strictement inférieur à 18 et " ;
01048 echo b("Vous êtes majeur")." si l'age est supérieur ou égal à 18." ;
01049 echo " Pourquoi n'est-on pas obligé(e) de recopier le formulaire ? " ;
01050 finp() ;
01051 p("texte") ;
01052 echo " ".em("Pour les experts")." : tester s'il s'agit bien d'un nombre entier et positif ou nul." ;
01053 finp() ;
01054 finli() ;
01055
01056 debutli() ;
01057 p("texte") ;
01058 echo "Répondez à la question 1 de l'examen de décembre 2014 (".href("php_conceptuel.php","PHP conceptuel","grouge")."), " ;
01059 echo " le PDF est ".href("sen2014_2.pdf","ici").". " ;
01060 echo " Afin de disposer de ".b("std.php")." et de ".b("strfun.php").", le plus simple est de copier/coller " ;
01061 echo " les deux commandes suivantes dans un terminal, une fois la connexion établie sur forge/janus. " ;
01062 echo " Vous devez être dans votre répertoire ".b("forge_html")." pour exécuter ces commandes :" ;
01063 finp() ;
01064
01065 pre("cadre") ;
01066 echo "\n" ;
01067 echo " wget http://forge.info.univ-angers.fr/~gh/internet/std.php.zip\n" ;
01068 echo "\n" ;
01069 echo " unzip -o std.php.zip \n" ;
01070 echo "\n" ;
01071 finpre() ;
01072
01073 p("texte") ;
01074 echo "La première commande vient rapatrier l'archive et la deuxième décompresse les fichiers de l'archive " ;
01075 echo href("std.php.zip").". " ;
01076 echo " Facile, non ?" ;
01077 echo " Une autre solution consiste à rapatrier l'archive " ;
01078 echo href("std.php.zip").", " ;
01079 echo " à la décompresser sous Windows puis à retransférer les fichiers présents dans l'archive..." ;
01080 finp() ;
01081
01082 p("texte") ;
01083 echo "Vous viendrez bien sûr tester votre code en ligne de commandes (pas dans Firefox)." ;
01084 finp() ;
01085
01086 p("texte") ;
01087 echo "Répondez ensuite à la question 1 de l'examen de juin 2017 (".href("php_conceptuel.php","PHP conceptuel","grouge")."), " ;
01088 echo " le PDF est ".href("sen2017_1.pdf","ici").". " ;
01089 finp() ;
01090 finli() ;
01091
01092 debutli() ;
01093 p("texte") ;
01094 echo "A partir de la chaine de caractères ".em("\"pain oeuf viande lait vin fromage\"")." construire en PHP un tableau qui reprend " ;
01095 echo " les éléments de l'exercice de la liste des courses : lien vers google, image en taille normalisée et en grand... " ;
01096 echo " Comparer le nombre de lignes du fichier PHP (qui utilisera ".em("debutPage()")." et ".em("finPage()")." via un " ;
01097 echo " ".em("include").") et le nombre de lignes du fichier-source HTML." ;
01098 finp() ;
01099
01100 p("texte") ;
01101 echo "En faire ensuite une fonction et l'appliquer à la chaine ".em("\"tomates saucisson eau bananes\"")." ; " ;
01102 echo b("pour les plus fort(e)s")." ajouter le mot ".b("légumes")."." ;
01103 finp() ;
01104 finli() ;
01105
01106 debutli() ;
01107 p("texte") ;
01108 echo " Ecrire en PHP un formulaire qui utilise la fonction ".em("hist()")." dont le code-source est " ;
01109 echo ancre("montresource.php?nomfic=sen_hist.php","ici") ;
01110 echo " pour préparer un questionnaire d'histoire ".em("sen_hist_form.php")." sur des dates ; " ;
01111 echo " écrire en PHP la page ".em("sen_hist_rep.php")." qui utilise le même texte ".em("sen_hist.php")." " ;
01112 echo " et qui évalue les réponses de l'apprenant. On pourra supposer que l'exercice affiche les évènements " ;
01113 echo " et demande les dates correspondantes." ;
01114 finp() ;
01115
01116 p("texte") ;
01117 echo " On pourra consulter la référence PHP sur la boucle ".em("foreach")." (pour chaque) liée aux \"tableaux associatifs\" " ;
01118 echo ancre("http://www.manuelphp.com/php/control-structures.foreach.php","ici")."." ;
01119 finp() ;
01120 finli() ;
01121
01122 debutli() ;
01123 p("texte") ;
01124 echo " Expliquer comment les titres des énoncés et corrigés des TP sont produits sachant que le code-source des énoncés " ;
01125 echo " est ".ancre("montresource.php?nomfic=sen_tps.php","ici")." et celui des solutions" ;
01126 echo " est ".ancre("montresource.php?nomfic=sen_tps_cor.php","là")."." ;
01127 finp() ;
01128 finli() ;
01129
01130 debutli() ;
01131
01132 p("texte") ;
01133 echo " Après avoir lu la page " ;
01134 echo ancre("http://fr.php.net/manual/fr/function.rand.php","rand()") ;
01135 echo " écrire un programme PHP qui tire au hasard un nombre entre 1 et 3, l'affiche puis propose un lien pour recommencer." ;
01136 finp() ;
01137
01138 p("texte") ;
01139 echo "Modifier la page précédente pour qu'elle ait le même comportement que la page " ;
01140 echo href("sen_quests1.php") ;
01141 echo " avec 1=Calculs, 2=Histoire et 3=Géographie." ;
01142 finp() ;
01143
01144 finli() ;
01145
01146 finol() ;
01147
01148 #########################################################
01149
01150 $jtp++ ; tpDscs($jtp,$nomTp[$jtp]) ; # TP7
01151
01152 #########################################################
01153
01154 p("texte") ;
01155 echo em("On relira les ".href('phpmysql.htm',"exemples")." MYSQL et PHP avant de faire les exercices du TP.") ;
01156 finp() ;
01157
01158 ol() ;
01159
01160 debutli() ;
01161 p("texte") ;
01162 echo "Ecrire un programme PHP qui compte combien il y a d'hommes dans la table " ;
01163 echo ancre("../Datasets/ronfle.htm","ronfle"). " (la base de données est statdata, sur forge). " ;
01164 echo " Modifier le programme pour qu'il compte combien d'hommes fument et ronflent." ;
01165 echo " Modifier encore le programme pour qu'il indique le pourcentage d'hommes qui fument et ronflent par rapport " ;
01166 echo " au nombre d'hommes en tout. On fournira un pourcentage entier arrondi." ;
01167 finp() ;
01168 p("texte") ;
01169 echo " Lister ensuite via PHP les 10 plus jeunes femmes qui ronflent par age croissant. Où est le problème ?" ;
01170 finp() ;
01171 p("texte") ;
01172 echo " On mettra les requêtes SQL dans des variables PHP. Pour le pourcentage entier, on pourra au choix " ;
01173 echo " faire l'arrondi en SQL ou en PHP. Quelle est la meilleure solution, à votre avis ? " ;
01174 finp() ;
01175
01176 p("texte") ;
01177 echo " Lorsqu'on fournit des comptages, des pourcentages, il est souvent agréable de fournir une représentation " ;
01178 echo " graphique nommée ".b("histogramme des fréquences").". Est-ce possible de réaliser un tel graphique en PHP ?" ;
01179 finp() ;
01180
01181 table(0,20) ;
01182 tr() ;
01183 td() ;nbsp(8) ;fintd() ;
01184 td() ;
01185 $i = "ronfle.png" ;
01186 echo img($i) ;
01187 fintd() ;
01188 td() ;nbsp(8) ;fintd() ;
01189 td() ;
01190 $i = "titanic.png" ;
01191 echo img($i) ;
01192 fintd() ;
01193 fintr() ;
01194 fintable() ;
01195
01196
01197 finli() ;
01198
01199 debutli() ;
01200 p("texte") ;
01201 echo " Après avoir lu la page " ;
01202 echo ancre("http://fr.php.net/manual/fr/function.rand.php","rand") ;
01203 echo " écrire un programme PHP qui tire au hasard un nombre entre 1 et 3, l'affiche puis propose un lien pour recommencer." ;
01204 finp() ;
01205
01206 p("texte") ;
01207 echo "Ecrire un programme PHP qui tire au hasard un nombre entre 1 et 3 et qui utilise la table de données " ;
01208 echo " correspondante dans la base statad sur forge : " ;
01209 finp() ;
01210 blockquote() ;
01211 ol() ;
01212 debutli() ; echo "sen_CALC" ; finli() ;
01213 debutli() ; echo "sen_HIST" ; finli() ;
01214 debutli() ; echo "sen_GEOG" ; finli() ;
01215 finol() ;
01216 finblockquote() ;
01217
01218 # consulter sen_bd.mysql pour le détail des tables
01219
01220 p("texte") ;
01221 echo " La table sen_CALC (Calcul) comporte deux champs par exercice : EXPR et RES ; EXPR est l'expression à afficher et RES son résultat. " ;
01222 echo " On fera faire à l'élève tous les exercices de la table (il y en a 5). " ;
01223 finp() ;
01224
01225 p("texte") ;
01226 echo " La table sen_HIST (Histoire) comporte deux champs par exercice : EVENEMENT et DATE ; l'exercice correspondant consiste à demander " ;
01227 echo " la date associée à l'évènement." ;
01228 echo " On fera faire à l'élève la moitié des exercices de la table (il y en a 6) par tirage au sort. " ;
01229 finp() ;
01230
01231 p("texte") ;
01232 echo " La table sen_GEOG (Géographie) comporte trois champs par exercice : PAYS, CAPI et DIFF ; l'exercice correspondant consiste à demander " ;
01233 echo " la captiale du pays ; diff donne la difficulté de l'exercice (1=facile, 2=difficile). " ;
01234 echo " On fera faire à l'élève un tiers des exercices de la table (il y en a 9) avec au moins un exercice difficile. " ;
01235 finp() ;
01236
01237 p("texte") ;
01238 echo "Voici des liens pour voir le contenu des tables : " ;
01239 echo href("sen_CALC.dsc.txt","sen_CALC").", " ;
01240 echo href("sen_HIST.dsc.txt","sen_HIST").", " ;
01241 echo href("sen_GEOG.dsc.txt","sen_GEOG")."." ;
01242 finp() ;
01243
01244
01245 p("texte") ;
01246 echo em("Pour les experts")." : demander au tout début un prénom, puis boucler sur 5 séries d'exercices et afficher les résultats." ;
01247 finp() ;
01248
01249 finli() ;
01250
01251 finol() ;
01252
01253 #########################################################
01254
01255 pvide() ;
01256
01257 p() ;
01258 echo href("montresource.php?nomfic=sen_tps.php","Code-source de cette page","orange_stim nou")."." ;
01259 finp() ;
01260
01261 #########################################################
01262
01263 finSection() ;
01264 finPage() ;
01265 ?>
La coloration syntaxique est réalisée par un enrobage de la function php nommée highlight_file
mais si vous préférez, vous pouvez utiliser celle de SyntaxHighlighter ou même celle de geshi.
Pour ne pas voir les numéros de ligne, ajoutez &nl=non à la suite du nom du fichier.
Retour à la page principale de (gH)