Valid XHTML     Valid CSS2    

Listing du fichier sen_tps.php avec syntaxhighlighter


        <?php
        #   # (gH)   -_-  sen_tps.php  ;  TimeStamp (unix) : 07 Octobre 2019 vers 12:56
        include("../std.php") ;
        debutPage("L3SEN TP ENONCES","strict") ;
        debutSection() ;
        h1("ENONCES DES TPS INFORMATIQUE WEB") ;
        h1("pour la licence DSCS") ;
        h1("(Diffusion du savoir et Culture scientifique)") ;
        
        $HTML = ghBleu("HTML") ;
        $Javascript = ghVert("Javascript") ;
        $MySQL = ghBleu("MySQL") ;
        
        p("grouge droite") ;
        echo "gilles.hunault@univ-angers.fr" ;
        finp() ;
        
        #########################################################
        
        function tpDscs($num,$nom="") {
          h2("TP ".aname("DSCS","tp$num")." numéro $num ".ancre("sen_tps_cor.php#tp$num","(corrigé)").$nom) ;
        } # fin de fonction tpDscs
        
        #########################################################
        #########################################################
        
        $nomTp = array() ;
        $nomTp[1] = " Pages Web ".em(ghvert("locales")) ;
        $nomTp[2] = " Pages Web sur ".em(ghRouge("distantes"))." sur ".em("devel")." et tableaux " ;
        $nomTp[3] = " Tableaux, listes et CSS " ;
        $nomTp[4] = " CSS, formulaires et $Javascript" ;
        $nomTp[5] = " $Javascript" ;
        $nomTp[6] = " Php " ;
        $nomTp[7] = " Php et Mysql " ;
        
        h2("Table des matières") ;
        $nb_tp = 7 ;
        blockquote() ;
         for ($itp=1;$itp<=$nb_tp;$itp++) {
             echo h3(ancre("#tp$itp","TP numéro $itp").$nomTp[$itp]) ;
         } ; # fin pour
        finblockquote() ;
        
        $jtp = 0 ;
        
        #########################################################
        
        $jtp++ ; tpDscs($jtp,$nomTp[$jtp]) ; # TP1
        
        #########################################################
        
        p("texte") ;
        echo b("Remarque ")." : tout le TP se passe en local, sous Windows ou Linux." ;
        finp() ;
        
        ol() ;
        debutli() ; # 1
        p("texte") ;
        echo "Quels sont les navigateurs Web disponibles en général&nbsp;? Lequel ou lesquels sont les meilleurs et pourquoi&nbsp;?" ;
        finp() ;
        finli() ;
        
        debutli() ; # 2
        p("texte") ;
        echo "Ecrire juste ".ghBleu("ESSAI : &lt;H1&gt;BONJOUR")." dans le fichier  ".b("bonjour.htm")." " ;
        echo " à l'aide de Geany ou Notepad++ (mais pas le bloc-notes standard de Windows) pour Windows, " ; # sous Xp, avec gedit sous Linux." ;
        echo " avec Geany sous Linux (ou un autre éditeur de texte avec coloration syntaxique des mots-clés de XHTML)." ;
        finp() ;
        ul() ;
        li("Est-ce que le texte s'affiche avec un navigateur via Fichier/Ouvrir&nbsp;?") ;
        li("ESSAI et BONJOUR sont-ils écrits pareils&nbsp;? Pourquoi&nbsp;? ") ;
        li("Est ce que le texte s'affiche de façon identique quelque soit le navigateur&nbsp;?") ;
        li("Le fichier est-il bien formé&nbsp;? valide&nbsp;? ") ;
        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.") ;
        li("Ecrire un fichier  ".b("sq.htm")." (\"squelette\") qui servira de modèle pour les exercices suivants.") ;
        finul() ;
        finli() ;
        
        debutli() ; # 3
        p("texte") ;
        echo "Essayez de trouver plusieurs façons d'écrire ".ghBleu("BONJOUR BONSOIR")." sur deux lignes différentes à l'affichage. " ;
        echo "  ".em("Remarque")." : il y en a au moins 6." ;
        finp() ;
        finli() ;
        
        debutli() ; # 4
        p("texte") ;
        echo "Mézalors, quelle grammaire (DOCTYPE) faut-il utiliser&nbsp;?" ;
        echo " Et comment utiliser les styles&nbsp;?" ;
        finp() ;
        /*
        p("texte") ;
        echo "Installez HTML validator pour Firefox. Si on vous demande une méthode de validation " ;
        echo " à l'installation, privilégiez le mode &laquo;les deux&raquo;." ;
        finp() ;
        */
        finli() ;
        
        debutli() ;
        p("texte") ;
        echo em("Do you need to speak english to write Web pages&nbsp;?")."" ;
        finp() ;
        finli() ;
        
        debutli() ;
        p("texte") ;
        echo "Ecrire une page Web qui correspond à l'adresse Jean DUPONT 3 route de Rome 49100 ANGERS pour une grande enveloppe A4. " ;
        echo "Comment mettre en bleu le nom et le prénom&nbsp;? Et la ville en gras&nbsp;? " ;
        finp() ;
        p("cadre unTiers center") ;
        echo img("a4.png","",600) ;
        finp() ;
        p() ;
        echo b("Attention")." : résoudre complètement cet exercice en transitionnel et en strict est technique. On réfléchira à la solution " ;
        echo " mais on n'essaiera pas d'écrire exactement le code source HTML et CSS." ;
        finp() ;
        finli() ;
        
        debutli() ;
        p("texte") ;
        echo "Construire une liste numérotée puis non numérotée des courses : oeufs, pain, viande, fruits, légumes." ;
        echo " Reprendre avec une liste à définition (faire un petit commentaire pour chaque ingrédient)." ;
        echo " Cherchez le mot oeuf avec ".b("Google").". Comment faire un lien vers la page correspondante&nbsp;? " ;
        echo " Cherchez une image d'oeuf avec ".b("Google Images").". Comment afficher cette image&nbsp;? " ;
        finp() ;
        
        p("texte") ;
        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, " ;
        echo " la colonne 2 l'image (normalisée), la colonne 3 le petit commentaire. " ;
        echo " Comment mettre un lien sur le bas de la page de la liste de courses&nbsp;? " ;
        finp() ;
        
        p("texte") ;
        echo "S'il reste du temps : (à faire dans le tableau)" ;
        finp() ;
        ul() ;
        li(" Quelle est la \"bonne\" syntaxe de l'URL  ".b("http://www.google.fr/search?q=légumes")."&nbsp;? ") ;
        li(" Mettre toutes les images avec une m&ecirc;me taille. ") ;
        li(" Mettre une couleur bleu clair en fond de tableau.") ;
        li(" Mettre le texte de commentaire en vert sur fond rose pour le pain et la viande.") ;
        li(" Faire un roll-over (qu'est-ce&nbsp;?) sur deux images en cru/cuit.") ;
        finul() ;
        finli() ;
        
        
        finol() ;
        
        #########################################################
        
        $jtp++ ; tpDscs($jtp,$nomTp[$jtp]) ; # TP2
        
        #########################################################
        
        p("texte") ;
        echo b("Remarque ")." : sauf pour l'exercice 1, tout le TP se passe en local, sous Windows ou Linux, " ;
        echo " mais les pages doivent ensuite &ecirc;tre transférées vers les comptes Linux étudiant(e)s du départment informatique de l'UFR." ;
        finp() ;
        
        ol() ;
        
        debutli() ;
        p("texte") ;
        echo " Utiliser le PC sous Linux et réaliser une connection vers la machine  ".em("devel")." dans un terminal. " ;
        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 " ;
        echo " associé à votre compte d'étudiant(e). " ;
        #echo " Au pire, demandez à un(e) voisin(e) connecté(e) de taper  ".b("liste licsen")." " ;
        #echo " afin de voir votre login." ;
        finp() ;
        
        p("texte") ;
        #echo " Changer le mot de passe provisoire de votre compte en un \"vrai\" mot de passe avec la commande  ".em("yppasswd").". " ;
        echo " Est-ce que  le répertoire ".ghRouge("forge_html")." existe&nbsp;?" ;
        echo " Si non, le créer. Vérifier ensuite que les droits sont bien ceux correspondant à la commande  ".b("chmod -R 711 ~/forge_html")."." ;
        finp() ;
        
        p("texte") ;
        echo " Reprendre l'exercice 3 (Bonjour/Bonsoir) et recopier les fichiers sur votre compte Unix et votre \"site étudiant\". " ;
        echo " On utilisera un éditeur comme  ".b("gedit").",  ".b("kate").",  ".b("geany")." ou  ".b("kwrite").". "  ;
        echo " On fournira une version transitionnelle ou une version stricte, mais il est possible de se contenter de recopier la solution et " ;
        echo " de tester qu'elle fonctionnne après avoir recopié tous les fichiers nécessaires dont les feuilles de style. " ;
        echo " On viendra tester que le validateur du W3C est capable de tester les pages étudiantes via leur URL." ;
        finp() ;
        
        
        
        finli() ;
        
        
        debutli() ;
        p("texte") ;
        echo "Peut-on écrire des pages Web chez soi, sur son Pc sous Windows et les mettre sur son compte étudiant Unix&nbsp;?" ;
        finp() ;
        p("texte") ;
        echo em("Mézalors").", sous quel environnement (Windows, Linux) écrire ses pages, et avec quel éditeur&nbsp;?" ;
        finp() ;
        p("texte") ;
        echo " Vérifier que vous savez transférer un fichier local sur ".em("janus")." à l'aide de ".b("FileZilla")  ;
        echo " ou d'un outil logiciel équivalent qui utilise le protocole ".b("SFTP")."&nbsp;:" ; # , port 4920&nbsp;: " ;
        finp() ;
        
        p("texte") ;
        echo "Il faut mettre ".b("sftp://devel.info.univ-angers.fr")." comme nom d'".em(ghVert("h&ocirc;te")).", " ;
        echo " puis entrer son identifiant ".b("et")." son mot de passe puis appuyer sur Enter (pas sur Connexion rapide). ";
        echo " Il n'y a pas besoin d'entrer le numéro du port." ;
        finp() ;
        
        
        p() ;
        $url = "filezilla.png" ;
        echo href($url,img($url,"",600)) ;
        finp() ;
        
        p("texte") ;
        echo " Vérifier aussi qu'on peut alors consulter la page Web sur son téléphone portable, ou avec une tablette." ;
        finp() ;
        p("texte") ;
        echo em("Remarque")." : " ;
        echo " à la faculté, on peut aussi mettre comme nom d'h&ocirc;te ".ghvert("sftp://devel.info-ua")." pour ". b("FileZilla");
        echo "  alors que depuis l'extérieur, il ".ghrouge("faut")." mettre comme nom d'h&ocirc;te ".ghvert("sftp://devel.info.univ-angers.fr").". " ;
        finp() ;
        finli() ;
        
        debutli() ;
        p("texte") ;
        echo "Reprendre sous Unix l'exercice de la liste des courses du TP 1 (version tableau) avec les images et les liens. " ;
        echo " On mettra des liens vers Google, les images en petit avec un lien pour avoir l'image en grand. " ;
        echo " De plus on mettra une nappe (ou une couleur de fond) pour le tableau et une serviette (ou une couleur de cellule) " ;
        echo " pour la première case de chaqe ligne. On pourra aussi tester les ".b("divisions")." (&lt;div&gt;)." ;
        finp() ;
        p("texte") ;
        echo " Pour ceux et celles qui l'ont oublié, vérifier que la page est valide avec la grammaire transitionnelle puis en faire " ;
        echo " une copie avec la grammaire stricte (page valide) avec tous les styles en externe dans un fichier CSS." ;
        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." ;
        finp() ;
        finli() ;
        
        finol() ;
        
        #########################################################
        
        $jtp++ ; tpDscs($jtp,$nomTp[$jtp]) ; # TP3
        
        #########################################################
        
        
        p("texte") ;
        echo b("Remarque ")." : tous les TPs sont désormais aux choix des étudiant(e)s sous Windows ou sous Linux." ;
        finp() ;
        
        ol() ;
        /*
        debutli() ;
        p("texte") ;
        echo "Démarrer le PC sous Windows et vérifier que vous savez utiliser WinScp " ;
        echo " pour transférer un fichier de n'importe quelle machine connectée à Internet sous Windows vers votre compte Unix ; " ;
        echo " recopier, par exemple sur votre compte les deux fichiers " ;
        echo href("modele_transitionnel.htm","modele_transitionnel")." et " ;
        echo href("modele_strict.htm","modele_strict")." puis " ;
        echo href("std.css")." qui servira pour tous les TP." ;
        finp() ;
        
        p("texte") ;
        echo "Installer en local sous Windows l'extension ".ancre("https://addons.mozilla.org/fr/firefox/addon/249","Html Validator")." et " ;
        echo " vérifier que le code-source est testé en fonction de la grammaire. Choisir le mode \"les deux\" pour la vérification." ;
        echo " Installer aussi le validateur sous Linux." ;
        finp() ;
        
        finli() ;
        */
        
        debutli() ;
        p("texte") ;
        echo "Reproduire le tableau de la page " ;
        echo ancre("botablo.htm") ;
        echo " puis celui de la page " ;
        echo ancre("botablo2.htm").". On essaiera de comprendre la différence entre " ;
        echo b("&lt;table bgcolor='yellow'&gt;...")."," ;
        echo b("&lt;td bgcolor='yellow'&gt;...")." et " ;
        echo b("&lt;td&gt;&lt;p bgcolor='yellow'&gt;...")."" ;
        echo " Tester également  ".b("border='100'")." puis les couples  ".b("cellpadding='20' cellspacing='100'")." et  ".b("cellpadding='20' cellspacing='100'")."." ;
        finp() ;
        finli() ;
        
        debutli() ;
        p("texte") ;
        echo "On veut s'affranchir du souligné sous un lien. Comment faire&nbsp;? On essaiera de mettre un petit texte en bleu foncé dans " ;
        echo " un paragraphe sur fond gris (paragraphe justifié à droite et à gauche et encadré) avec un lien en rouge sans souligné. " ;
        echo " Dupliquer le paragraphe et inventer un \"bouton rectangulaire\" en jouant sur les dimensions du style associé au lien." ;
        echo " On ne commencera pas avec une page web vide mais avec le squelette ".ancre("sq.htm")."." ;
        finp() ;
        finli() ;
        
        debutli() ;
        p("texte") ;
        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"). "." ;
        echo " Copier-coller le texte suivant (tiré de ".ancre("http://fr.wikipedia.org/wiki/Jules_C%C3%A9sar","wiki").")." ;
        finp() ;
        
        pre_fichier("jules.txt","cadrejaune") ;
        
        p("texte") ;
        echo " On utilisera pour cette première partie la grammaire  ".em("transitionnelle")."." ;
        echo " Mettez un titre de niveau 1 autour de  ".b("Jules César")." puis écrivez à nouveau  ".b("Jules César")." " ;
        echo " en taille 7 et encore une troisième fois en \"font-size\"  ".b("300pt").". Qui est le plus gros&nbsp;? " ;
        echo " Délimiter le paragraphe de biographie via l'élément  ".b("p").". " ;
        echo " Dupliquer le paragraphe et essayer de mettre la copie en retrait. " ;
        echo " On essaiera de trouver plusieurs solutions pour ce retrait. Mettre ensuite le titre en bleu_intense à l'aide d'un " ;
        echo " style en ligne puis avec un style nommé  ".b("jc")." pris dans une feuille de style externe nommée  ".b("cesar.css")." ;" ;
        echo " peut-on utiliser le style  ".b("jc")." pour faire ressortir les mots  ".b("Rome")." et  ".b("République romaine")."&nbsp;? " ;
        echo " Pourquoi est-ce \"stupide\" d'utiliser une feuille nommée  ".b("cesar.css")."&nbsp;?" ;
        echo " On ne commencera pas avec une page web vide mais avec le squelette ".ancre("sq.htm")."." ;
        finp() ;
        p("texte") ;
        echo " Reprendre l'exercice avec la grammaire  ".em("stricte")."." ;
        finp() ;
        finli() ;
        
        debutli() ;
        p("texte") ;
        echo "Ecrire un petit texte dans un paragraphe et dupliquer le paragraphe. Appliquer ensuite " ;
        echo " le style ".b("cadre")." de la feuille de styles ".href("../std.css","std.css") ;
        echo " au deuxième paragraphe. " ;
        finp() ;
        finli() ;
        
        finol() ;
        
        #########################################################
        
        $jtp++ ; tpDscs($jtp,$nomTp[$jtp]) ; # TP4
        
        #########################################################
        
        ol() ;
        
        debutli() ;
        p("texte") ;
        echo "Recopier en local la page ".ancre("sen_ts.htm").", les styles ".ancre("sen_demo1.css")." et ".ancre("sen_demo2.css")."." ;
        echo " Testez ces 3 fichiers pour savoir s'ils sont valides et corrigez-les le cas échéant." ;
        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")."." ;
        finp() ;
        finli() ;
        
        debutli() ;
        p("texte") ;
        echo "Ecrire un formulaire minimal pour remplacer le formulaire de base de Google. " ;
        echo " Qu'y a-t-il de plus dans le formulaire original de Google&nbsp;? " ;
        finp() ;
        p("texte") ;
        echo "  ".em("Pour les experts")." : écrire dans la m&ecirc;me page un autre formulaire dont la recherche est restreinte à la France," ;
        echo " un troisième restreint aux images et enfin un quatrième qui filtre les recherches pour protéger les enfants. " ;
        echo " Pourquoi dans ce cas certaines pages de  ".b("Gilles Hunault")." sont-elles filtrées&nbsp;? " ;
        finp() ;
        finli() ;
        
        
        debutli() ;
        p("texte") ;
        echo "Que peut-on faire avec l'URL  ".b("http://forge.info.univ-angers.fr/~gh/internet/ndjpm.php")."&nbsp;? Essayer de voir comment cette adresse " ;
        echo " permet de connaitre le nombre de jours d'un mois donné. Pourquoi est-ce que ce script (programme) se nomme  ".b("ndjpm")."&nbsp;? " ;
        echo " Peut-on 'coincer' ce programme&nbsp;? Lui faire afficher une erreur&nbsp;? " ;
        finp() ;
        finli() ;
        
        debutli() ;
        p("texte") ;
        echo "Faire une liste numérotée avec les mois Septembre, Octobre... ; peut-on commencer les numéros à 9&nbsp;? et mettre les nombres en latin&nbsp;? " ;
        echo " Mettre un lien sous le nom du mois avec comme URL :" ;
        finp() ;
        
        div('center') ;
        echo b("http://forge.info.univ-angers.fr/~gh/internet/ndjpm.php?m=")." " ;
        findiv() ;
        
        p("texte") ;
        echo " suivi du numéro du mois ( ".b("?m=9")." pour Septembre,  ".b("?m=10")." pour Octobre etc.). " ;
        finp() ;
        p("texte") ;
        echo " Si on commence à 1957, quelle est la première valeur avec  ".b("type='I'")."&nbsp;? Pourquoi&nbsp;? " ;
        finp() ;
        p("texte") ;
        echo " Si on commence à 2019, quelle est la deuxième valeur avec  ".b("type='A'")."&nbsp;? Pourquoi&nbsp;? " ;
        finp() ;
        finli() ;
        
        debutli() ;
        p("texte") ;
        echo "Ecrire un formulaire qui demande un numéro de mois et qui renvoie le nombre de jours dans ce mois. " ;
        echo " On utilisera l'URL de l'exercice précédent." ;
        echo " Ecrire dans la m&ecirc;me page un second formulaire qui utilise une liste de sélection non multiple qui affiche les noms de mois " ;
        echo " et qui renvoie le nombre de jours dans ce mois. " ;
        echo " Ecrire (toujours dans la m&ecirc;me page) un troisième formulaire qui utilise une liste de boutons radio pour sélectionner le mois " ;
        echo " et qui renvoie le nombre de jours dans ce mois. " ;
        finp() ;
        
        p("texte") ;
        echo em("Question sans  réponse")." : pédagogiquement, quel est le meilleur formulaire et pourquoi&nbsp;?" ;
        finp() ;
        finli() ;
        
        debutli() ;
        p("texte") ;
        echo " Ecrire un formulaire qui demande une longueur et une largeur en mètres et qui utilise comme action " ;
        echo " l'URL ".href("http://forge.info.univ-angers.fr/~gh/internet/longlarg.php") ;
        echo " pour afficher le périmètre et l'aire du champ rectangulaire correspondant à ces dimensions " ;
        echo " (pas de $Javascript ici)." ;
        finp() ;
        finli() ;
        
        debutli() ;
        p("texte") ;
        echo " Puisque l'attribut ".b("start")." pour l'élément ".b("ol")." est interdit dans la grammaire stricte (voir la validation de la page " ;
        echo  href("http://forge.info.univ-angers.fr/~gh/internet/olstart1.php","olstart1")."), " ;
        echo " comment faire pour commencer une liste ordonnée à 9 pour le mois de septembre avec la grammaire stricte&nbsp;?" ;
        finp() ;
        finli() ;
        
        debutli() ;
        p("texte") ;
        echo " Ecrire un formulaire qui demande un nombre et en affiche le double sur la m&ecirc;me page. " ;
        echo " On utilisera $Javascript avec une grammaire stricte et on fera la multiplication par 2 'à la volée' dans un \"onsubmit\" ; " ;
        echo " on utilisera deux champs textes nommés respectivement  ".b("nombre")." et  ".b("double").". " ;
        echo " L'action sera l'URL : " ;
        finp() ;
        
        p("centre") ;
        echo b(href("http://forge.info.univ-angers.fr/~gh/internet/non.php"))."" ;
        finp() ;
        
        p("texte") ;
        echo " et ne devra pas s'exécuter..." ;
        finp() ;
        
        p("texte") ;
        echo " Pour mémoire, en $Javascript, à l'intérieur d'un formulaire, on accède à la valeur liée à un élement de type input " ;
        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, " ;
        echo " on y accède par ".b("window.document.getElementById(\"IDELT\").value")." si IDELT est l'id de l'élément." ;
        finp() ;
        
        p("texte") ;
        echo " Ajouter un autre formulaire qui demande un nombre et en affiche le double et la moitié sur la m&ecirc;me page avec un seul bouton d'envoi. " ;
        echo " On utilisera $Javascript avec une grammaire stricte et on fera la division par 2 'à la volée' dans un \"onsubmit\" ; " ;
        echo " on utilisera trois champs textes nommés respectivement  ".b("Xnombre").", ".b("Xdouble")." et  ".b("Xdemi")." (pourquoi&nbsp;?). " ;
        finp() ;
        
        p("texte") ;
        echo " Ecrire enfin un troisième formulaire qui affiche le tiers d'un nombre. Comment gérer les décimales&nbsp;? " ;
        finp() ;
        
        p("texte") ;
        echo " Peut-on faire la m&ecirc;me chose sans formulaire&nbsp;?" ;
        finp() ;
        
        p("texte") ;
        echo " On pourra consulter ".href("sen_nombres4.php","sen_nombres4")." comme modèle de page ) produire, comme ci-dessous&nbsp;:" ;
        finp() ;
        
        p() ;
        nbsp(8) ;
        $url = "sen_nombres4.png" ;
        echo href($url,img($url,"",600)) ;
        finp() ;
        finli() ;
        
        finol() ;
        
        #########################################################
        
        $jtp++ ; tpDscs($jtp,$nomTp[$jtp]) ; # TP5
        
        #########################################################
        
        ol() ;
        
        debutli() ;
        p("texte") ;
        echo " Ecrire un formulaire qui demande une longueur et une largeur en mètres et qui utilise comme action " ;
        echo " l'URL ".href("http://forge.info.univ-angers.fr/~gh/internet/longlarg.php") ;
        echo " pour afficher le périmètre et l'aire du champ rectangulaire correspondant à ces dimensions " ;
        echo " (pas de $Javascript ici)." ;
        finp() ;
        p("texte") ;
        echo "Remplacer ensuite l'action par la mise à jour des réponses dans la page via $Javascript. On pourra afficher des étoiles à la place " ;
        echo " du résultat tant qu'on a pas cliqué sur le bouton d'envoi nommé ".b("calculer&nbsp;!")."." ;
        finp() ;
        p("texte") ;
        echo "Pour les plus rapides, masquer la zone des résultats au chargement de la page et la montrer seulement " ;
        echo " quand on utilise le bouton d'envoi nommé ".b("calculer")." (utiliser la propriété ".b("visibility")." ou les styles " ;
        echo b("visible")." et ".b("invisible")." de ".href("std.css").")." ;
        finp() ;
        finli() ;
        
        
        debutli() ; p("texte") ;
        echo "J'ai malheureusement écrit le texte html suivant nommé ".href("malchance.htm")." : \n" ;
        finp() ;
        
        pre() ;
        echo "     &lt;h2&gt;Bonjour&lt;/h2&gt;                                 \n" ;
        echo "                                                                  \n" ;
        echo "     &lt;script language=\"javascript\"&gt;                       \n" ;
        echo "         window.document.write(' Qui le dit&nbsp;? C'est moi ! ') ;    \n" ;
        echo "     &lt;/script&gt;                                              \n" ;
        echo "                                                                  \n" ;
        echo "     &lt;h2&gt;Bonsoir&lt;/h2&gt;                                 \n" ;
        
        finpre() ;
        
        p() ;
        echo "...mais je ne vois rien entre Bonjour et Bonsoir. Pourquoi&nbsp;? Corriger le script puis \n" ;
        echo "indiquer comment on peut voir les erreurs des scripts. Est-ce que cela a de l'influence sur la validation&nbsp;?\n" ;
        finp() ;
        finli() ;
        
        debutli() ;
        p("texte") ;
        echo " Ecrire un formulaire qui demande un nombre de kilos et qui affiche son équivalent en grammes. " ;
        echo " On utilisera $Javascript avec une grammaire stricte. Une première solution fera la conversion à la volée dans un \"onsubmit\", " ;
        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 " ;
        echo " qui ne devra pas &ecirc;tre déclenchée. La fonction utilisée, soit  ".b("conversionKilos(x)")." recevra tout le formulaire " ;
        echo " et non pas juste la valeur à convertir. On fera juste la conversion, mais aucune vérification sur le type, la valeur... " ;
        finp() ;
        
        p("texte") ;
        echo "  ".em("Pour les experts")." : dans le deuxième formulaire, arrangez-vous pour rendre le champ de réponse invisible " ;
        echo " (propriété CSS nommée  ".b("visible").") et rendez-la visible quand on soumet le formulaire. Attention : ce n'est pas le " ;
        echo " m&ecirc;me code avec Firefox et Internet Explorer." ;
        finp() ;
        finli() ;
        
        debutli() ;
        p("texte") ;
        echo " Ecrire une page Web qui met, via  ".em("Javascript").", " ;
        echo " la valeur  ".b("8")." dans la variable  ".b("a").", la valeur  ".b("2")." dans la variable  ".b("b")." " ;
        echo " et qui ensuite calcule et affiche leur addition, soustraction, multiplication et division." ;
        echo " Comment demander à $Javascript d'écrire dans la page&nbsp;? " ;
        echo " Utilisez une grammaire stricte. Attention : cet exercice n'utilise aucun formulaire." ;
        finp() ;
        
        p("texte") ;
        echo " Ecrire dans la m&ecirc;me page un formulaire qui demande deux nombres entiers et qui affiche leur addition, soustraction, multiplication et division." ;
        echo " On utilisera $Javascript avec une grammaire stricte et on soignera le cas de la division." ;
        echo " On pourra ajouter la comparaison des deux nombres (à tester avec 13 et 2). " ;
        # echo " A quoi sert l'url  ".b("javascript:")." sous Firefox&nbsp;? " ;
        echo " Comment demander à $Javascript d'écrire dans la page qui contient le formulaire&nbsp;? " ;
        echo " Utilisez une grammaire stricte." ;
        finp() ;
        finli() ;
        
        debutli() ;
        p("texte") ;
        echo " Ecrire une page Web qui met via  ".em("Javascript")." " ;
        echo " la valeur  ".b("8")." dans la variable  ".b("a").", la valeur  ".b("2")." dans la variable  ".b("b")." " ;
        echo " et la valeur  ".b("6")." dans la variable  ".b("c").". Comment afficher ces variables par ordre croissant&nbsp;? " ;
        echo " On utilisera impérativement une fonction  ".b("afficheCroiss(a,b,c)")." et on réfléchira à l'ensemble des cas possibles." ;
        echo " Comment devrait-on faire si on avait 4, 5, 6... valeurs&nbsp;? On pourra utiliser la liste de nombres 1 5 8 2 8 3 6 8 2 pour vérifier." ;
        echo " Utilisez une grammaire stricte. Attention : cet exercice n'utilise aucun formulaire." ;
        finp() ;
        
        #########################################################
        #########################################################
        #########################################################   CONFINEMENT
        #########################################################
        #########################################################
        
        div("cadre") ;
        blockquote("1") ;
        h1("TP ".aname("confinement","confinement")." novembre 2020","grouge") ;
        blockquote(2) ;
        
        #########################################################################
        
        h2("TP du 03 novembre : fonctions $Javascript liées à onClick ") ;
        
        #########################################################################
        
        blockquote(21) ;
        div("cadreblanc") ;
        blockquote(210) ;
        p("texte") ;
          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. " ;
        finp() ;
        
        p("texte") ;
          echo " N'oublez pas d'afficher la console $Javascript via les outils de développement pour voir les messages d'erreur." ;
        finp() ;
        
        p("texte") ;
          echo em(s_span(" Pour mémoire","vert")).", l'éditeur de texte conseillé pour écrire du HTML et du $Javascript est ".b("Geany").". " ;
          echo " C'est un logiciel gratuit, facile à installer depuis son téléchargement " ;
          echo href("https://www.geany.org/","ici").". " ;
        finp() ;
        
        finblockquote(210) ;
        findiv() ;
        finblockquote(21) ;
        
        #########################################################################
        
        h2("TP du 10 novembre : tableaux en $Javascript ") ;
        
        #########################################################################
        
        blockquote(22) ;
        div("cadreblanc") ;
        
        blockquote(220) ;
        
        p("texte") ;
          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 " ;
          echo b("rr?o?uge")." dans &laquo;".em("le petit chaperon rouge")."&raquo;." ;
        finp() ;
        p("texte") ;
          echo em("Facultatif")."&nbsp;: " ;
          echo " réaliser le test de compréhension des tableaux disponible " ;
          echo href("https://wiki.developer.mozilla.org/en-US/docs/Learn/JavaScript/First_steps/Test_your_skills:_Arrays","ici").". " ;
          # echo " puis l'exercice ".ghVert(9)." du ".ghBleu("TP 5")." (le nombre mystérieux). Quelle est la meilleure stratégie pour trouver ce nombre&nbsp;?" ;
        finp() ;
        
        finblockquote(220) ;
        findiv() ;
        finblockquote(22) ;
        
        #########################################################################
        
        h2("TP du 17 novembre : nombres au hasard, le jeu du nombre mystérieux ($Javascript)") ;
        
        #########################################################################
        
        blockquote(22) ;
        div("cadreblanc") ;
        blockquote(221) ;
        
        pvide() ;
        
        ul("class='disque'") ;
        
           debutli() ;
        
              p("texte") ;
              echo " Pour vérifier que vous savez générer un nombre au hasard, lisez et étudiez la page ".href("nbAuHasard.php","nombreAuHasard","bleu").". " ;
              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 " ;
              echo " (au bout d'un moment, ils ne sont donc plus vraiment au hasard). " ;
              echo ghRouge(" Attention&nbsp;:")." si vous programmez mal vos calculs, il est possible que votre script entre dans une boucle infinie, " ;
              echo " alors, prudence dans ce que vous écrivez. " ;
              finp() ;
        
              p("texte") ;
                 nbsp(5) ;
                 echo ghBleu(" Solution&nbsp;: ") ;
                 echo href("nombresAuHasardDistincts.php","nombresAuHasardDistincts") ;
                 echo ". " ;
              finp() ;
        
           finli() ;
        
           debutli() ;
        
              p("texte") ;
                echo " Programmer ensuite en $Javascript dans une page Web le jeu du nombre mystérieux, selon les consignes suivantes. " ;
                echo " L'ordinateur choisit un nombre entier au hasard entre 1 et 100. L'utilisateur doit trouver ce nombre. " ;
                echo " A chaque réponse utilisateur incorrecte, l'ordinateur répond " ;
                echo em("&laquo;plus petit&raquo;") ;
                echo " ou " ;
                echo em("&laquo;plus grand&raquo;") ;
                echo " pour guider l'utilisateur. " ;
                echo " Si le nombre n'est pas trouvé au bout de 9 essais, l'ordinateur affiche la réponse. " ;
              finp() ;
        
              p("texte") ;
                echo " Il faut bien s&ucirc;r commencer par réfléchir au ".b("design")." de la page. " ;
                echo " Vous trouverez " ;
                echo href("leNombreInconnu.php","ici")." un exemple de page possible (mais sans $Javascript) pour cet exercice. " ;
                echo " La division qui contient le nombre inconnu et le nombre d'essais ne doivent pas apparaitre et " ;
                echo " il serait \"sympathique\" de masquer la zone jaune tant que l'utilisateur n'a pas effectué son premier essai. " ;
              finp() ;
        
              p("texte") ;
                 nbsp(5) ;
                 echo ghBleu(" Solution&nbsp;: ") ;
                 echo href("leNombreInconnuVersion1.php","leNombreInconnuVersion1") ;
                 echo ". " ;
              finp() ;
        
           finli() ;
        
           debutli() ;
        
              p("texte") ;
              echo " Rien n'interdit à l'utilisateur de saisir plusieurs fois la m&ecirc;me valeur. Ecrivez une version 2 du jeu du nombre mystérieux " ;
              echo " où on n'autorise pas deux fois la m&ecirc;me valeur de la part de l'utilisateur. " ;
              finp() ;
        
              p("texte") ;
                 nbsp(5) ;
                 echo ghBleu(" Solution&nbsp;: ") ;
                 echo href("leNombreInconnuVersion2.php","leNombreInconnuVersion2") ;
                 echo ". " ;
              finp() ;
        
           finli() ;
        
        finul() ;
        
        pvide() ;
        
        finblockquote(221) ;
        findiv() ;
        finblockquote(22) ;
        
        #########################################################################
        
        h2("TP du 24 novembre : requ&ecirc;tes $MySQL") ;
        
        #########################################################################
        
        blockquote(22) ;
        div("cadreblanc") ;
        blockquote(222) ;
        
        pvide() ;
        
        p("texte") ;
          echo " Le but de ce TP est de vérifier que vous avez compris la seule chose importante dans ce cours par rapport " ;
          echo " à $MySQL, à savoir&nbsp;: ".em("écrire une requ&ecirc;te ".b("SELECT")).". " ;
        finp() ;
        
        p("texte") ;
          echo " Donc ".ghRouge("pas de panique")."&nbsp;! Si vous avez l'impression d'&ecirc;tre perdue entre $HTML et $Javascript, bonne nouvelle&nbsp;:" ;
          echo " dans ce TP, il n'y en a pas, il n'y a que du $MySQL." ;
        finp() ;
        
        ul("class='disque'") ;
        
           debutli() ;
        
              p("texte") ;
                echo " Répondez aux questions du " ;
                echo href("../tuteurs/tutmysql.htm#tth_sEc6.","tuteur $MySQL") ;
                echo " section 6, exercices 1 (".ghVert("titanic").") et 2 (".ghVert("elf")."). " ;
              finp() ;
        
              p("texte");
                echo " Vous utiliserez bien s&ucirc;r la page " ;
              finp() ;
        
              p("texte");
                nbsp(8) ;
                echo href("http://forge.info.univ-angers.fr/~gh/Pluripass/Db/executeMysql.php","&nbsp;executeMysql&nbsp;","bouton_fin nou jaune_pastel") ;
              finp() ;
        
              p("texte");
                echo " pour tester vos réponses. " ;
              finp() ;
        
              p("texte") ;
                echo " Essayez ensuite de répondre aux questions de la partie 2 de l'examen " ;
                echo href("sen2017_3.pdf","sen2017_3").". " ; ;
              finp() ;
        
           finli() ;
        
           debutli() ;
        
              p("texte") ;
                echo " Répondez aux questions du " ;
                echo href("../tuteurs/tutmysql.htm#tth_sEc6.","tuteur MySQL") ;
                echo " section 6, exercices 3 (".ghVert("ronfle").") et 4 (".ghVert("2tables")."). " ;
              finp() ;
        
              p("texte") ;
                echo " Essayez ensuite de répondre aux questions de la partie 3 de l'examen " ;
                echo href("sen2016_3.pdf","sen2016_3").". " ; ;
              finp() ;
        
           finli() ;
        
           debutli() ;
        
              p("texte") ;
                echo " Répondez aux questions du " ;
                echo href("../tuteurs/tutmysql.htm#tth_sEc6.","tuteur $MySQL") ;
                echo " section 6, exercice 5 (".ghVert("4tables")."). " ;
              finp() ;
        
           finli() ;
        
           debutli() ;
        
              p("texte") ;
                echo " Sur la base du " ;
                echo href("miniQuizzHistoire.php","mini quizz d'histoire") ;
                echo " présenté hier, comment feriez pour avoir trois dates aléatoires à proposer dans l'exercice " ;
                echo " plut&ocirc;t que les trois premières dates&nbsp;? " ;
                echo " Peut-on le faire avec $MySQL&nbsp;?" ;
              finp() ;
        
           finli() ;
        
        finul() ;
        
        pvide() ;
        
        finblockquote(222) ;
        findiv() ;
        finblockquote(22) ;
        
        #########################################################################
        
        h2("TP du 1".sup("er")." décembre : révision, suite et fin") ;
        
        #########################################################################
        
        blockquote(33) ;
        div("cadreblanc") ;
        blockquote(330) ;
        
        pvide() ;
        
        p("texte") ;
          echo " Si vous n'aviez fini pas le cours d'hier avec ses huit étapes,  reprenez là où vous étiez rendues. " ;
          echo " Si vous avez l'impression de passer trop de temps sur l'étape 2, lisez et recopiez le corrigé dans " ;
          echo href("mots2.html")." et dans ".href("mots2.js")." puis passez à l'étape 3 qui est plus simple. " ;
        finp() ;
        
        p("texte") ;
          echo " Si vous aviez tout fini, refaites tout mais sans utiliser les maquettes de fonction fournies. " ;
          echo " Si vous préférez, refaites une page similaire pour des exercices de géographie avec la m&ecirc;me démarche&nbsp;:" ;
          echo " $HTML puis $Javascript pour un exercice, une boucle pour plusieurs exercices, intégration de la base de données, évaluation... " ;
        finp() ;
        
        pvide() ;
        
        finblockquote(330) ;
        findiv() ;
        finblockquote(33) ;
        
        ##########################################################################################
        ##########################################################################################
        ##########################################################################################
        ##########################################################################################
        ##########################################################################################
        
        finblockquote(2) ;
        finblockquote("1") ;
        findiv() ;
        
        finli() ;
        
        ##########################################################################################
        ##########################################################################################
        ##########################################################################################
        ##########################################################################################
        ##########################################################################################
        
        debutli() ;
        p("texte") ;
        echo " Ecrire un panneau d'affichage Eux/Nous avec des \"gros\" boutons + et - pour modifier les scores, comme dans une salle de sports. " ;
        echo " On utilisera $Javascript avec une grammaire stricte et on mettra un bouton pour remettre à zéro." ;
        finp() ;
        finli() ;
        
        debutli() ;
        p("texte") ;
        echo " Ecrire un affichage d'horloge numérique pour apprendre à lire l'heure, avec avec des \"gros\" boutons + et - " ;
        echo " pour modifier les heures et les minutes. On initalisera à 23 h 58." ;
        echo " On utilisera $Javascript avec une grammaire stricte. Exemple de rendu via ".href("sen_horloge.php","sen_horloge")."&nbsp;:" ;
        finp() ;
        
        p() ;
        nbsp(8) ;
        $url = "sen_horloge.png" ;
        echo href($url,img($url,"",600)) ;
        finp() ;
        
        p("texte") ;
        echo " Beaucoup plus difficile (".b("mais plus pédagogique")."). Ajouter un panneau qui dit l'heure : " ;
        echo "  ".em("neuf heures moins le quart ")." pour 8 h 45, " ;
        echo "  ".em("10 heures moins dix")." pour 9 h 50 etc." ;
        finp() ;
        finli() ;
        
        debutli() ;
        p("texte") ;
        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 " ;
        echo " avec la contrainte qu'on doit utiliser une seule boucle POUR qui fait à la fois la détermination du max " ;
        echo " et le calcul du nombres d'occurences." ;
        finp() ;
        finli() ;
        
        debutli() ;
        p("texte") ;
        echo "Ecrire tout en $Javascript le jeu du nombre mystérieux avec initialisation à un entier entre 1 et 100, " ;
        echo " un nombre maximum d'essais et un affichage de l'historique des réponses." ;
        finp() ;
        finli() ;
        
        debutli() ;
        p("texte") ;
        echo "Ecrire une fonction $Javascript qui trie un tableau HTML à plusieurs colonnes." ;
        echo " On distinguera le tri alphabétique (comme pour les mois) du tri numérique (pour les prix)." ;
        finp() ;
        finli() ;
        
        debutli() ;
        p("texte") ;
        echo " Ecrire une page Web qui pose la question ".em("Quelle est la couleur du petit chaperon dans le conte de Charles PERRAULT&nbsp;?").". " ;
        echo " Sans utiliser de formulaire, utiliser $Javascript pour accepter silencieusement une chaine avec des espaces en début ou en fin de chaine. " ;
        echo " On acceptera la réponse ".b("rouge")." comme seule bonne réponse exacte. " ;
        echo " On acceptera les réponses ".b("roug").", ".b("ruge").", ".b("rrouge")." comme réponses correctes approchées. " ;
        echo " Le code $Javascript devra convertir en minuscules tout le texte entré et remplacer les espaces multiples par un seul espace." ;
        finp() ;
        
        p("texte") ;
        echo " Demander ensuite à l'apprenant son mois de naissance au format ".b("MM").". On refusera tout autre format." ;
        finp() ;
        
        finli() ;
        
        finol() ;
        
        #########################################################
        
        $jtp++ ; tpDscs($jtp,$nomTp[$jtp]) ; # TP6
        
        #########################################################
        
        p("texte") ;
        echo b("Remarque ")." : que le TP se passe sous Windows ou sous Unix, toutes les pages écrites doivent " ;
        echo " &ecirc;tre enregistrées dans des fichiers de type  ".b(".php")." (et non pas  ".b(".html").") et il faut les " ;
        echo " ouvrir avec le protocole ".b("http://").", c'est à dire qu'on ne peut plus faire  ".em("Fichier/Ouvrir")." " ;
        echo " pour charger la page." ;
        echo " L'URL du fichier  ".b("demo.php")." pour l'utilisateur  ".b("login")." est :" ;
        finp() ;
        
        p("centre") ;
        echo b("http://devel.info.univ-angers.fr/~login/demo.php")."" ;
        finp() ;
        
        p("texte") ;
        echo " ce qui signifie donc que vous devez mettre vos fichiers   ".b(".php")." dans votre répertoire " ;
        echo "  ".b("forge_html/").". " ;
        finp() ;
        
        p("texte") ;
        echo ghRouge("Attention&nbsp;:")." contrairement aux pages Web précédentes, une erreur dans le code PHP peut aboutir à une page toute blanche " ;
        echo" ou au message ".b("Erreur 404: not found")." ou à l'affichage d'un code d'erreur. " ;
        finp() ;
        
        p("texte") ;
        echo " Pour tester les erreurs de syntaxe élémentaire, il est conseille d'utiliser ".ghVert("php -l monProgramme.php")." comme ci-dessous " ;
        echo " où il manque un point-virgule sur la ligne qui précède ".ghvert("if").". " ;
        finp() ;
        
        pre_fichier("err_demo.txt","cadrebleu") ;
        
        p("texte") ;
        echo" Lorque votre page est \"propre\" et \"correcte\", vous pouvez l'utiliser sur forge, soit, pour l'exemple précédent, avec l'URL" ;
        finp() ;
        
        p("centre") ;
        echo b("http://forge.info.univ-angers.fr/~login/demo.php")."" ;
        finp() ;
        
        p("texte") ;
        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. " ;
        finp() ;
        
        ol() ;
        
        debutli() ;
        p("texte") ;
        echo "Testez ce qu'affiche le code PHP suivant :" ;
        finp() ;
        
        pre("cadre") ;
        echo "\n";
        echo "     &lt;?php\n"  ;
        echo "        echo \"&lt;h1&gt;\\nET VOILA LE TRAVAIL\\n&lt;/h1&gt;\\n\" ;\n" ;
        echo "    &nbsp;?&gt;\n" ;
        echo "\n";
        finpre() ;
        
        p("texte") ;
        echo "Si on affiche le code HTML de la page, combien trouve-t-on de lignes&nbsp;? " ;
        echo " Que se passe-t-il en cas d'erreur, pas exemple si on oublie un guillemet&nbsp;?" ;
        finp() ;
        
        p("texte") ;
        echo "Ecrire un programme en ligne de commandes qui affiche, au dizième de milliard près, le nombre de secondes écoulées " ;
        echo " depuis l'an 0." ;
        echo " On ne tiendra pas compte de la nuit du " ;
        echo href("https://fr.wikipedia.org/wiki/Calendrier_gr%C3%A9gorien","4 au 15 octobre 1582").". " ;
        echo " Faut-il tenir compte des annnées bissextiles&nbsp;?" ;
        finp() ;
        
        p("texte") ;
        echo "Ecrire ensuite un programme PHP qui à partir des variables \$a et \$b met respectivement dans " ;
        echo " \$p et \$g la plus petite et la plus grande des deux valeurs. " ;
        echo " Combien y a-t-il de cas à envisager&nbsp;?" ;
        echo b(" Attention :")." votre code doit fonctionner aussi bien avec des nombres qu'avec des chaines de caractères. " ;
        finp() ;
        
        p("texte") ;
        echo "Ecrire ensuite un programme PHP qui à partir des trois variables \$a, \$b  et \$c met respectivement dans " ;
        echo " \$p, \$g et \$m la plus petite,  la plus grande et la valeur du milieu. " ;
        echo " Combien y a-t-il de cas à envisager&nbsp;?" ;
        echo b(" Attention :")." votre code doit fonctionner aussi bien avec des nombres qu'avec des chaines de caractères. " ;
        finp() ;
        
        finli() ;
        
        debutli() ;
        p("texte") ;
        echo " Ecrire une fonction  ".em("debutPage()")." qui écrit toutes les balises jusqu'à ".b("body")." compris " ;
        echo " et écrire dans la foulée la fonction  ".em("finPage()")."." ;
        echo " Combien faut-il de temps désormais pour écrire une page \"propre et valide\" qui affiche  ".b("Bonjour")."&nbsp;? " ;
        finp() ;
        
        p("texte") ;
        echo "Une fois que les fonctions  ".em("debutPage()")." et  ".em("finPage()")." seront au point, on les mettra dans " ;
        echo "le fichier ".b("mesfonctions.php")." et on utilisera un  ".em("include")."... " ;
        finp() ;
        
        p("texte") ;
        echo "  ".em("Pour les experts")." : ajouter un paramètre à la fonction  ".em("debutPage()")." pour que le programmeur " ;
        echo " puisse facilement choisir la grammaire stricte ou transitionnelle. Par défaut, ce sera la grammaire transitionnelle ";
        echo " qui sera utilisée." ;
        finp() ;
        
        finli() ;
        
        debutli() ;
        p("texte") ;
        echo " Ecrire en PHP la fonction  ".em("h1").", la fonction  ".em("h2")." et la fonction  ".em("h3")." puis implémenter " ;
        echo " la fonction  ".em("tnh(x,i)")." telle que  ".em("h1(x)")." corresponde à  ".em("tnh(x,1)")." et " ;
        echo "  ".em("h2(x)")." corresponde à  ".em("tnh(x,2)")." etc. " ;
        echo " Quel est l'intéret de  ".em("tnh")."&nbsp;? " ;
        finp() ;
        finli() ;
        
        debutli() ;
        p("texte") ;
        echo "Ecrire le programme PHP qui correspond à l'action du formulaire ".ancre("sen_age.php") ;
        echo " (dont le code-source est ".ancre("montresource.php?nomfic=sen_age.php","ici")."), " ;
        echo " et qui répond " ;
        echo b("Vous &ecirc;tes mineur")." si l'age est strictement inférieur à 18 et " ;
        echo b("Vous &ecirc;tes majeur")." si l'age est supérieur ou égal à 18." ;
        echo " Pourquoi n'est-on pas obligé(e) de recopier le formulaire&nbsp;? " ;
        finp() ;
        p("texte") ;
        echo "  ".em("Pour les experts")." : tester s'il s'agit bien d'un nombre entier et positif ou nul." ;
        finp() ;
        finli() ;
        
        debutli() ;
        p("texte") ;
        echo "Répondez à la question 1 de l'examen de décembre 2014 (".href("php_conceptuel.php","PHP conceptuel","grouge")."), " ;
        echo " le PDF est ".href("sen2014_2.pdf","ici").". " ;
        echo " Afin de disposer de ".b("std.php")." et de ".b("strfun.php").", le plus simple est de copier/coller " ;
        echo " les deux commandes suivantes dans un terminal, une fois la connexion établie sur forge/janus. " ;
        echo " Vous devez &ecirc;tre dans votre répertoire ".b("forge_html")." pour exécuter ces commandes&nbsp;:" ;
        finp() ;
        
        pre("cadre") ;
        echo "\n" ;
        echo "   wget http://forge.info.univ-angers.fr/~gh/internet/std.php.zip\n" ;
        echo "\n" ;
        echo "   unzip -o std.php.zip \n" ;
        echo "\n" ;
        finpre() ;
        
        p("texte") ;
        echo "La première commande vient rapatrier l'archive et la deuxième décompresse les fichiers de l'archive " ;
        echo href("std.php.zip").". " ;
        echo " Facile, non&nbsp;?" ;
        echo " Une autre solution consiste à rapatrier l'archive " ;
        echo href("std.php.zip").", " ;
        echo " à la décompresser sous Windows puis à retransférer les fichiers présents dans l'archive..." ;
        finp() ;
        
        p("texte") ;
        echo "Vous viendrez bien s&ucirc;r tester votre code en ligne de commandes (pas dans Firefox)." ;
        finp() ;
        
        p("texte") ;
        echo "Répondez ensuite à la question 1 de l'examen de juin 2017 (".href("php_conceptuel.php","PHP conceptuel","grouge")."), " ;
        echo " le PDF est ".href("sen2017_1.pdf","ici").". " ;
        finp() ;
        finli() ;
        
        debutli() ;
        p("texte") ;
        echo "A partir de la chaine de caractères  ".em("\"pain oeuf viande lait vin fromage\"")." construire en PHP un tableau qui reprend " ;
        echo " les éléments de l'exercice de la liste des courses : lien vers google, image en taille normalisée et en grand... " ;
        echo " Comparer le nombre de lignes du fichier PHP (qui utilisera  ".em("debutPage()")."  et  ".em("finPage()")." via un " ;
        echo "  ".em("include").") et le nombre de lignes du fichier-source HTML." ;
        finp() ;
        
        p("texte") ;
        echo "En faire ensuite une fonction et l'appliquer à la chaine  ".em("\"tomates saucisson eau bananes\"")." ; " ;
        echo b("pour les plus fort(e)s")." ajouter le mot  ".b("légumes")."." ;
        finp() ;
        finli() ;
        
        debutli() ;
        p("texte") ;
        echo " Ecrire en PHP un formulaire qui utilise la fonction  ".em("hist()")." dont le code-source est " ;
        echo ancre("montresource.php?nomfic=sen_hist.php","ici") ;
        echo " pour préparer un questionnaire d'histoire  ".em("sen_hist_form.php")." sur des dates ; " ;
        echo " écrire en PHP la page  ".em("sen_hist_rep.php")." qui utilise le m&ecirc;me texte  ".em("sen_hist.php")." " ;
        echo " et qui évalue les réponses de l'apprenant. On pourra supposer que l'exercice affiche les évènements " ;
        echo " et demande les dates correspondantes." ;
        finp() ;
        
        p("texte") ;
        echo " On pourra consulter la référence PHP sur la boucle  ".em("foreach")." (pour chaque) liée aux \"tableaux associatifs\"  " ;
        echo ancre("http://www.manuelphp.com/php/control-structures.foreach.php","ici")."." ;
        finp() ;
        finli() ;
        
        debutli() ;
        p("texte") ;
        echo " Expliquer comment les titres des énoncés et corrigés des TP sont produits sachant que le code-source des énoncés " ;
        echo " est ".ancre("montresource.php?nomfic=sen_tps.php","ici")." et celui des solutions" ;
        echo " est ".ancre("montresource.php?nomfic=sen_tps_cor.php","là")."." ;
        finp() ;
        finli() ;
        
        debutli() ;
        
        p("texte") ;
        echo " Après avoir lu la page " ;
        echo ancre("http://fr.php.net/manual/fr/function.rand.php","rand()") ;
        echo " écrire un programme PHP qui tire au hasard un nombre entre 1 et 3, l'affiche puis propose un lien pour recommencer." ;
        finp() ;
        
        p("texte") ;
        echo "Modifier la page précédente pour qu'elle ait le m&ecirc;me comportement que la page " ;
        echo href("sen_quests1.php") ;
        echo " avec 1=Calculs, 2=Histoire et 3=Géographie." ;
        finp() ;
        
        finli() ;
        
        finol() ;
        
        #########################################################
        
        $jtp++ ; tpDscs($jtp,$nomTp[$jtp]) ; # TP7
        
        #########################################################
        
        p("texte") ;
        echo em("On relira les ".href('phpmysql.htm',"exemples")." MYSQL et PHP avant de faire les exercices du TP.") ;
        finp() ;
        
        ol() ;
        
        debutli() ;
        p("texte") ;
        echo "Ecrire un programme PHP qui compte combien il y a d'hommes dans la table " ;
        echo ancre("../Datasets/ronfle.htm","ronfle"). " (la base de données est statdata, sur forge). " ;
        echo " Modifier le programme pour qu'il compte combien d'hommes fument et ronflent." ;
        echo " Modifier encore le programme pour qu'il indique le pourcentage d'hommes qui fument et ronflent par rapport " ;
        echo " au nombre d'hommes en tout. On fournira un pourcentage entier arrondi." ;
        finp() ;
        p("texte") ;
        echo " Lister ensuite via PHP les 10 plus jeunes femmes qui ronflent par age croissant. Où est le problème&nbsp;?" ;
        finp() ;
        p("texte") ;
        echo " On mettra les requ&ecirc;tes SQL dans des variables PHP. Pour le pourcentage entier, on pourra au choix " ;
        echo " faire l'arrondi en SQL ou en PHP. Quelle est la meilleure solution, à votre avis&nbsp;? " ;
        finp() ;
        
        p("texte") ;
        echo " Lorsqu'on fournit des comptages, des pourcentages, il est souvent agréable de fournir une représentation " ;
        echo " graphique nommée ".b("histogramme des fréquences").". Est-ce possible de réaliser un tel graphique en PHP&nbsp;?" ;
        finp() ;
        
        table(0,20) ;
        tr() ;
        td() ;nbsp(8) ;fintd() ;
        td() ;
        $i = "ronfle.png" ;
        echo img($i) ;
        fintd() ;
        td() ;nbsp(8) ;fintd() ;
        td() ;
        $i = "titanic.png" ;
        echo img($i) ;
        fintd() ;
        fintr() ;
        fintable() ;
        
        
        finli() ;
        
        debutli() ;
        p("texte") ;
        echo " Après avoir lu la page " ;
        echo ancre("http://fr.php.net/manual/fr/function.rand.php","rand") ;
        echo " écrire un programme PHP qui tire au hasard un nombre entre 1 et 3, l'affiche puis propose un lien pour recommencer." ;
        finp() ;
        
        p("texte") ;
        echo "Ecrire un programme PHP qui tire au hasard un nombre entre 1 et 3 et qui utilise la table de données " ;
        echo " correspondante dans la base statad sur forge : " ;
        finp() ;
        blockquote() ;
        ol() ;
          debutli() ;  echo "sen_CALC"   ;  finli() ;
          debutli() ;  echo "sen_HIST"   ;  finli() ;
          debutli() ;  echo "sen_GEOG"   ;  finli() ;
        finol() ;
        finblockquote() ;
        
        # consulter sen_bd.mysql pour le détail des tables
        
        p("texte") ;
        echo " La table sen_CALC (Calcul) comporte deux champs par exercice : EXPR et RES ; EXPR est l'expression à afficher et RES son résultat. " ;
        echo " On fera faire à l'élève tous les exercices de la table (il y en a 5). " ;
        finp() ;
        
        p("texte") ;
        echo " La table sen_HIST (Histoire) comporte deux champs par exercice : EVENEMENT et DATE ; l'exercice correspondant consiste à demander " ;
        echo " la date associée à l'évènement." ;
        echo " On fera faire à l'élève la moitié des exercices de la table (il y en a 6) par tirage au sort. " ;
        finp() ;
        
        p("texte") ;
        echo " La table sen_GEOG (Géographie) comporte trois champs par exercice : PAYS, CAPI et DIFF ; l'exercice correspondant consiste à demander " ;
        echo " la captiale du pays ; diff donne la difficulté de l'exercice (1=facile, 2=difficile). " ;
        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. " ;
        finp() ;
        
        p("texte") ;
        echo "Voici des liens pour voir le contenu des tables : " ;
        echo href("sen_CALC.dsc.txt","sen_CALC").", " ;
        echo href("sen_HIST.dsc.txt","sen_HIST").", " ;
        echo href("sen_GEOG.dsc.txt","sen_GEOG")."." ;
        finp() ;
        
        
        p("texte") ;
        echo em("Pour les experts")."&nbsp;: demander au tout début un prénom, puis boucler sur 5 séries d'exercices et afficher les résultats." ;
        finp() ;
        
        finli() ;
        
        finol() ;
        
        #########################################################
        
        pvide() ;
        
        p() ;
        echo href("montresource.php?nomfic=sen_tps.php","Code-source de cette page","orange_stim nou")."." ;
        finp() ;
        
        #########################################################
        
        finSection() ;
        finPage() ;
        ?>
        

La coloration syntaxique est réalisée par : SyntaxHighlighter.

Si vous préférez, vous pouvez utiliser celle de geshi ou même celle construite autour de la fonction highlight_file.

 

 

retour gH    Retour à la page principale de   (gH)