Valid XHTML     Valid CSS2    

Listing du fichier l2a_tp1.php avec syntaxhighlighter


        <?php
        #    (gH)   -_-  l2a_tp1.php  ;  TimeStamp (unix) : 25 Février 2013 vers 11:19
        
        error_reporting(E_ALL | E_NOTICE | E_STRICT) ;
        include("std.php") ;
        include("l2a_inc.php") ;
        
        $numTp = 1 ;
        debutPageTp($numTp) ;
        
        ## -------------------------------------------------------------------------------------------
        
        sdl(3) ; echo cmt(' pour afficher toutes les solutions : l2a_tp'.$numTp.'.php?solutions=1') ; sdl(3) ;
        
        ## -------------------------------------------------------------------------------------------
        
        debutSection() ;
        
        $tableauDesRubriques = array() ;
        $idr = 0 ;
        $idr++; $tableauDesRubriques[$idr] = "PHP cli : date, heure et numéro de version" ;
        $idr++; $tableauDesRubriques[$idr] = "PHP cli : conversion pouces/cm" ;
        $idr++; $tableauDesRubriques[$idr] = "PHP -a et test rapide de fonction" ;
        $idr++; $tableauDesRubriques[$idr] = "Gestion Web de l'affichage avec \\n,&lt;br&gt; et &lt;p&gt;" ;
        $idr++; $tableauDesRubriques[$idr] = "Combien de tests&nbsp;?" ;
        $idr++; $tableauDesRubriques[$idr] = "Affichage XHTML de milles terrestres " ;
        $idr++; $tableauDesRubriques[$idr] = "Affectations multiples " ;
        $idr++; $tableauDesRubriques[$idr] = "Une fonction pour &lt;h1&gt; " ;
        $idr++; $tableauDesRubriques[$idr] = "Occurences du maximum d'un tableau " ;
        $idr++; $tableauDesRubriques[$idr] = "La structure de données ".b("\"pile\"")." version 1" ;
        $idr++; $tableauDesRubriques[$idr] = "Polynome quand tu nous tiens" ;
        $tdmCRLM = new tdm($tableauDesRubriques) ;
        $tdmCRLM->titre() ;
        $tdmCRLM->menu("oui","oui","nou") ;
        
        pvide() ;
        
        p() ;
         echo "Il est possible d'afficher toutes les solutions via ".href("l2a_tp$numTp.php?solutions=1","?solutions=1","bouton_fin jaune_pastel nou").". " ;
        finp() ;
        
        finSection() ;
        
        debutSection() ;
        p("texte") ;
        echo s_span("Rappel :","grouge") ;
        echo " vos programmes PHP doivent &ecirc;tre transférés sur le serveur ".b("forge")." dans votre répertoire " ;
        echo s_span("forge_html","gbleuf")." avant d'&ecirc;tre utilisés. Vous pouvez les éditer sous Windows ou sous Linux, mais au final ";
        echo " ils doivent &ecirc;tre exécutés sur forge. " ;
        echo " Il faut utiliser ".s_span("ssh -X -Y login@janus.info.univ-angers.fr","grouge") ;
        echo " pour vous connecter ou " ;
        echo "  ".s_span("ssh -X -Y login@forge","grouge")." si vous &ecirc;tes dans une des salles locales de TP." ;
        finp() ;
        finSection() ;
        
        debutSection() ;
        $numExo = 0 ;
        
        ## -------------------------------------------------------------------------------------------
        
        $tdmCRLM->afficheRubrique("oui") ; $numExo++ ; # PHP cli : date, heure et numéro de version
        
        ## -------------------------------------------------------------------------------------------
        
        blockquote() ;
        
        blockquote() ;
        
        p("texte") ;
        echo "Ecrire un programme PHP qui fonctionne en mode CLI (ligne de commande) qui affiche la date et l'heure et le " ;
        echo " numéro de la version du PHP utilisé sur le serveur." ;
        finp() ;
        
        p("texte") ;
        echo "A quoi sert l'instruction nommée ".b("phpinfo()")."&nbsp;?" ;
        finp() ;
        
        
        finblockquote() ;
        
        solution($numExo,$numTp) ;
        
        p("texte") ;
        echo " Pour la date et l'heure, on utilise la m&ecirc;me fonction de PHP nommée ".href("http://php.net/manual/fr/function.date.php","date")."  " ;
        echo " mais avec des paramètres différents." ;
        echo " Il est conseillé de lire au moins une fois le manuel de PHP à l'adresse ".href("http://php.net/manual/fr/function.date.php")." pour voir " ;
        echo " toutes les options possibles. Voici ce qu'on peut écrire pour réaliser l'exercice&nbsp;:" ;
        finp() ;
        
        pre_fichier("dh.php","cadre") ;
        
        p("texte") ;
        echo " La fonction nommée ".href("http://php.net/manual/fr/function.phpversion.php","phpversion()")." renvoie, en plus du numéro de version le nom du système " ;
        echo " d'exploitation. Par contre l'instuction ".href("http://php.net/manual/fr/function.phpinfo.php","phpinfo()")." renvoie toute la configuration de PHP." ;
        echo " Ainsi, le simple programme " ;
        finp() ;
        
        pre_fichier("phpinfo.php","cadre") ;
        
        p("texte") ;
        echo "renvoie tout ce que vous pouvez lire à l'URL ".href("phpinfo.php")."." ;
        echo " Cela permet en particulier de savoir comment est configuré le serveur, quel codage il utilise pour les accents, quels modules sont disponibles..." ;
        finp() ;
        
        
        finsolution() ;
        
        finblockquote() ;
        
        ## -------------------------------------------------------------------------------------------
        
        $tdmCRLM->afficheRubrique("oui") ; $numExo++ ; # PHP cli : conversion pouces/cm
        
        ## -------------------------------------------------------------------------------------------
        
        blockquote() ;
        
        blockquote() ;
        
        p("texte") ;
        echo "Ecrire un programme PHP qui fonctionne en mode CLI qui a besoin de deux paramètres : une valeur numérique et le mot \"pouces\" ou " ;
        echo " le mot \"cm\". On effectuera alors la conversion idoine, sachant qu'un pouce vaut 2,54&nbsp;cm." ;
        echo " Voici un exemple de ce qu'on voudrait comme fonctionnement&nbsp;:" ;
        finp() ;
        
        pre_fichier("convcminch.txt","cadre bleu_pastel") ;
        
        p("texte") ;
        echo "Volontairement, on n'utilisera aucune fonction et on ne fera aucun test sur la valeur numérique afin de voir commment PHP se comporte " ;
        echo " en cas de donnée mal typée." ;
        finp() ;
        
        p("texte") ;
        echo "Y a-t-il une façon standard d'écrire des paramètres sous Linux&nbsp;?" ;
        finp() ;
        
        p("texte") ;
        echo "Ecrire un programme similaire qui fonctionne avec les paramètres ".b("val")." et ".b("unit")." passés en méthode ".b("GET")." dans l'URL. " ;
        echo " Voir la page ".href("convcminch2.php")." comme exemple." ;
        echo " On pourra utiliser les fichiers ".b("debutpage.php")." et ".b("finpage.php")." de " ;
        echo " l'archive ".href("debutfin.zip")." pour générer le début et la fin de la page." ;
        finp() ;
        
        p("texte") ;
        echo "Ecrire enfin une page XHTML Strict valide  basée sur le \"squelette\" de page ".href("sqs.htm")." avec un formulaire dont l'attribut ".b("action")." est " ;
        echo " ".href("convcminch2.php")."." ;
        finp() ;
        
        finblockquote() ;
        
        solution($numExo,$numTp) ;
        
        p("texte") ;
        echo "Pour tester le nombre d'arguments, on peut utiliser ".href("http://php.net/manual/fr/reserved.variables.argc.php","argc") ;
        echo " et pour leur valeur on utilise ".href("http://www.php.net/manual/fr/reserved.variables.argv.php","argv")." qui font partie des " ;
        echo " variables dites ".href("http://www.php.net/manual/fr/reserved.variables.php","réservées").". " ;
        echo " Un exemple de solution est ".href("montresource.php?nomfic=convcminch.php","convcminch.php")."&nbsp;:" ;
        finp() ;
        
        pre_fichier("convcminch.php","cadre") ;
        
        p("texte") ;
        echo "Si on se trompe sur l'unité, par exemple en écrivant pomme ou pouce au lieu de pouces (donc sans \"S\"), la variable \$fact n'est pas définie, " ;
        echo " pas plus que \$autreu, d'où deux erreurs. De m&ecirc;me, si on ne fournit pas un nombre mais une chaine, il devrait y avoir une erreur mais PHP renvoie 0, tout simplement&nbsp;:" ;
        finp() ;
        
        pre_fichier("convcminch2.txt","cadre bleu_pastel") ;
        
        p("texte") ;
        echo "Sous Linux, on écrit des paramètres nommés à l'ancienne mode avec un tiret et un espace, à la nouvelle mode avec deux tirets et un signe égale. " ;
        echo " Voici ce que cela donnerait si on décide de nommer ".b("unit")." et ".b("val")." les paramètres&nbsp;:" ;
        finp() ;
        
        pre_fichier("convcminch3.txt","cadre") ;
        
        p("texte") ;
        echo "Le code-source PHP de la page nommée ".href("convcminch2.php","","grouge nou")." qui gère ces paramètres avec la méthode  GET " ;
        echo " est ".href("montresource.php?nomfic=convcminch2.php","ici","gvert nou")." et " ;
        echo " un exemple de formulaire basé sur ".b("sqs.htm")." est ".href("convcminch_form.htm","là","gbleuf nou").". " ;
        finp() ;
        
        
        finsolution() ;
        
        finblockquote() ;
        
        ## -------------------------------------------------------------------------------------------
        
        $tdmCRLM->afficheRubrique("oui") ; $numExo++ ; # PHP -a et test rapide de fonction" ;
        
        ## -------------------------------------------------------------------------------------------
        
        blockquote() ;
        
        blockquote() ;
        p("texte") ;
        echo "Quelqu'un vous dit que la fonction ".b("ucfirst()")." fait une &laquo;quasi uppérisation&raquo; d'une chaine de caractères. ";
        echo " Avez-vous besoin d'écrire un programme php pour tester ce que fait cette fonction&nbsp;?" ;
        finp() ;
        
        finblockquote() ;
        
        solution($numExo,$numTp) ;
        
        p("texte") ;
        echo "Non, bien s&ucirc;r car on peut utiliser le mode interactif avec ".b("php -a").". Démonstration&nbsp;:" ;
        finp() ;
        
        pre_fichier("ucfirst.txt","cadre bleu_pastel") ;
        
        finsolution() ;
        
        finblockquote() ;
        
        ## -------------------------------------------------------------------------------------------
        
        $tdmCRLM->afficheRubrique("oui") ; $numExo++ ; # Gestion Web de l'affichage avec \\n,&lt;br&gt; et &lt;p&gt;"
        
        ## -------------------------------------------------------------------------------------------
        
        blockquote() ;
        
        blockquote() ;
        
        p("texte") ;
        echo "Téléchargez l'archive ".href("debutfin.zip")." et reproduisez le programme suivant que vous nommerez ".b("essaipage.php").". " ;
        echo " Où seront les sauts à la ligne dans la page Web ? Et dans le code-source généré de la page Web ? Que se passe-t-il s'il y a une erreur, " ;
        echo " par exemple si on écrit ".b("echi")." au lieu de ".b("echo")."&nbsp;? Au passage, rappelez où on peut trouver une liste des entités XHTML." ;
        finp() ;
        
        p("texte") ;
         echo "On en profitera pour installer " ;
         echo href("http://users.skynet.be/mgueury/mozilla/download_090.html","HTML VALIDATOR","bouton_fin jaune_pastel nou") ;
         echo " de M. Gueury." ;
        finp() ;
        
        pre_fichier("essaipage.txt","cadre tarose") ;
        
        p("texte") ;
        echo "Il est possible de rapatrier l'archive et de la décompresser en ligne de commandes (dans le bon répertoire&nbsp;!) via&nbsp;:" ;
        finp() ;
        
        pre_fichier("wgetarch.txt","cadre") ;
        
        finblockquote() ;
        
        solution($numExo,$numTp) ;
        
        p("texte") ;
        echo "Les sauts de ligne dans le code source HTML apparaissent uniquement quand on demande à PHP de produire ".b("\\n").". " ;
        echo " Par contre au niveau de la page Web, vous devez vous rappeler que tous les espaces, tabulations et sauts de ligne sont " ;
        echo " remplacés par un seul espace. Donc seules des balises explicites comme &lt;br&gt;, &lt;p&gt;,  &lt;li&gt;... ou des marges induites " ;
        echo " par le CSS permettent de passer à la ligne. Ce qui signifie que le texte ".b("\"à tous et à toutes.\"")." est sur une seule ligne, " ;
        echo " les mots étant séparés par un seul espace." ;
        echo " Vérification : ".href("essaipage2.php","ici").". " ;
        finp() ;
        
        p("texte") ;
        echo "En cas d'erreur, par exemple avec ".b("echi")." au lieu d'".b("echo").",  le serveur réagit en fonction de sa configuration. Ainsi sur forge, une " ;
        echo " erreur fait que la page est vide... dommage&nbsp;! " ;
        echo " Avec un serveur configuré autrement, on peut avoir le détail (pas toujours très compréhensible) de l'erreur comme ci-dessous&nbsp;:" ;
        finp() ;
        
        p() ;
        $img = "echi.png" ;
        nbsp(15) ;
        echo href($img,img($img,$img,900)) ;
        finp() ;
        
        p("texte") ;
        echo "Pour retrouver une liste d'entités XHTML, ".em("Google est notre ami").", soit le lien français " ;
        echo href("https://www.google.fr/search?q=liste+entit%C3%A9s+XHTML","entités","gvertf nou") ;
        echo " ou le lien anglais " ;
        echo href("https://www.google.fr/search?q=XHTML%20entities%20list","entities","gvertf nou").". " ;
        echo " Parmi les listes proposées, nous conseillons celle de la " ;
        echo href("http://www.w3schools.com/tags/ref_entities.asp","W3 School","grouge nou").", celle de " ;
        echo href("http://www.elizabethcastro.com/html/extras/entities.html","elizabethcastro","grouge nou") ;
        echo " et enfin celle du ".href("http://en.wikipedia.org/wiki/List_of_XML_and_HTML_character_entity_references","wiki anglais","grouge nou").". " ;
        finp() ;
        
        finsolution() ;
        
        finblockquote() ;
        
        ## -------------------------------------------------------------------------------------------
        
        $tdmCRLM->afficheRubrique("oui") ; $numExo++ ; # Combien de tests ?
        
        ## -------------------------------------------------------------------------------------------
        
        blockquote() ;
        
        p("texte") ;
        echo "Combien de cas faut-il envisager et tester avant d'&ecirc;tre convaincu que le programme en ligne de commande " ;
        echo href("montresource.php?nomfic=convcminch.php","convcminch.php","gbleuf nou")." est correct et qu'on a &laquo;tout prévu&raquo;&nbsp;?" ;
        finp() ;
        
        p("texte") ;
        echo "Au passage, quelle est la différence entre développer et programmer&nbsp;?" ;
        finp() ;
        
        solution($numExo,$numTp) ;
        
        
        p("texte") ;
        echo "Il faut certainement prévoir et tester au moins 7 cas&nbsp;:" ;
        finp() ;
        
        ol() ;
        li("un cas sans aucun paramètre&nbsp;;") ;
        li("un cas avec tous les paramètres corrects en nom et en valeur&nbsp;;") ;
        li("un cas avec le paramètre ".b("val")." absent&nbsp;;") ;
        li("un cas avec le paramètre ".b("unit")." absent&nbsp;;") ;
        li("un cas avec la valeur du paramètre ".b("val")." mal typée&nbsp;;") ;
        li("un cas avec la valeur du paramètre ".b("unit")." mal typée&nbsp;;") ;
        li("un cas avec des valeurs des paramètres avec beaucoup de décimales.") ;
        finol() ;
        
        
        p("texte") ;
        echo "Programmer, c'est juste écrire un programme. " ;
        echo "Développer, c'est réfléchir au problème, l'analyser, choisir des solutions, " ;
        echo " les programmer, les documenter, les tester... " ;
        finp() ;
        
        p("texte") ;
        echo "Ainsi, pour l'exemple de conversion, un &laquo;vrai&raquo; développeur " ;
        echo " ajoutera la détection de l'initiale (p pour pouce, c pour cm), viendra certainement " ;
        echo " ajouter un ".b("s")." à ".b("pouce")." pour obtenir ".b("pouces")." au lieu de reprocher " ;
        echo " à l'utilisateur une mauvaise orthographe, il (elle) proposera peut-&ecirc;tre " ;
        echo " d'utiliser aussi l'initiale ".b("i")." pour inch(es), voire m&ecirc;me d " ;
        echo " (pour Daumen en allemand) si la page est beaucoup lue en Allemagne... " ;
        finp() ;
        
        finsolution() ;
        
        finblockquote() ;
        
        
        ## -------------------------------------------------------------------------------------------
        
        $tdmCRLM->afficheRubrique("oui") ; $numExo++ ; # Affichage XHTML de milles terrestres
        
        ## -------------------------------------------------------------------------------------------
        
        blockquote() ;
        blockquote() ;
        
        p("texte") ;
        echo "Reproduire la page ".href("mille.php","","gbleuf nou").". On utilisera ".b("debutpage.php")." et ".b("finpage.php")." comme précédemment mais " ;
        echo " aussi ".href("std.css")." afin d'avoir une page XHTML valide et &laquo;jolie&raquo;." ;
        echo " On produira le tableau avec une seule boucle ".rouge("pour")." dont l'indice variera de 1 à 15. " ;
        echo " Les valeurs seront arrondies et affichées à droite avec deux décimales." ;
        finp() ;
        
        finblockquote() ;
        
        solution($numExo,$numTp) ;
        
        p("texte") ;
        echo "Voir le code-source de ".href("montresource.php?nomfic=mille.php","mille.php","gbleuf nou").". " ;
        finp() ;
        
        p("texte") ;
        echo "En version &laquo;php conceptuel&raquo;, c'est-à-dire sans balise apparente," ;
        echo " consulter le code-source de ".href("montresource.php?nomfic=mille2.php","mille2.php","gbleuf nou")." dont le rendu est ".href("mille2.php")."."  ;
        finp() ;
        
        
        finsolution() ;
        
        finblockquote() ;
        
        ## -------------------------------------------------------------------------------------------
        
        $tdmCRLM->afficheRubrique("oui") ; $numExo++ ; #  Affectations multiples
        
        ## -------------------------------------------------------------------------------------------
        
        blockquote() ;
        blockquote() ;
        
        p("texte") ;
        echo "Il parait qu'il est possible de réaliser en PHP des affectations multiples avec ".b("list").". Est-ce vrai&nbsp;?" ;
        echo " A quoi cela peut-il servir&nbsp;?" ;
        finp() ;
        
        finblockquote() ;
        
        solution($numExo,$numTp) ;
        
        p("texte") ;
        echo "Si on lit la ".href("http://php.net/manual/fr/function.list.php","documentation")." de ".b("list").", on voit qu'il est " ;
        echo " effectivement possible de réaliser plusieurs affectations avec list à gauche et un tableau (array) à droite." ;
        echo " Cela permet par exemple de permuter deux variables en une seule ligne, comme dans l'exemple suivant&nbsp;:" ;
        finp() ;
        
        pre_fichier("affmult.txt","cadre tarose") ;
        
        finsolution() ;
        
        finblockquote() ;
        
        ## -------------------------------------------------------------------------------------------
        
        $tdmCRLM->afficheRubrique("oui") ; $numExo++ ; #  Une fonction pour <h1>
        
        ## -------------------------------------------------------------------------------------------
        
        blockquote() ;
        blockquote() ;
        
        p("texte") ;
        echo "On voudrait implémenter une fonction pour produire des titres de niveau 1 avec &lt;h1&gt;. Ecrire une fonction ".b("achin()") ;
        echo " qui correspond au comportement suivant&nbsp;:" ;
        finp() ;
        
        pre_fichier("achin.txt","cadre bleu_pastel") ;
        
        p("texte") ;
        echo "Quelle serait la syntaxe pour avoir juste une indication de classe&nbsp;? Et d'id&nbsp;?" ;
        finp() ;
        
        finblockquote() ;
        
        solution($numExo,$numTp) ;
        
        p("texte") ;
        echo "Voici un exemple possible de fonction&nbsp;:" ;
        finp() ;
        
        pre_fichier("achin.php","cadre") ;
        
        p("texte") ;
        echo "Pour utiliser juste une classe, ".b("achin(\$txt,\$cla)")." suffit et pour avoir juste un id, il faut écrire " ;
        echo "  ".b("achin(\$txt,\"\",\$id)").". " ;
        finp() ;
        finsolution() ;
        
        finblockquote() ;
        
        ## -------------------------------------------------------------------------------------------
        
        $tdmCRLM->afficheRubrique("oui") ; $numExo++ ; # Occurences du maximum d'un tableau
        
        ## -------------------------------------------------------------------------------------------
        
        blockquote() ;
        blockquote() ;
        
        p("texte") ;
        echo " On voudrait trouver la plus grande valeur d'un tableau et le nombre de fois où elle apparait. " ;
        echo " Pour cela, on commencera par écrire une fonction ".b("valMax(\$leTableau)")." qui calcule la plus grande valeur du tableau " ;
        echo " et on utilisera une deuxième boucle pour compter le nombre d'occurences du maximum." ;
        finp() ;
        
        p("texte") ;
        echo "Recommencer l'exercice en utilisant cette fois une seule boucle pour déterminer à la fois le maximum et son ";
        echo " nombre d'occurences. " ;
        echo " On utilisera  les valeurs 1 8 2 8 3 6 8 2 comme jeu d'essai dans un premier temps." ;
        echo " Dans un second temps, " ;
        echo ' on utilisera  les valeurs "a", "b", "oui", "c", "oui", "d" comme ' ;
        echo " jeu d'essai." ;
        
        echo " On donnera aussi la position de la " ;
        echo " première et de la dernière occurence du maximum. On pourra se contenter d'une version en ligne de commandes." ;
        finp() ;
        
        finblockquote() ;
        
        solution($numExo,$numTp) ;
        
        p("texte") ;
        echo "On trouvera la solution dans ".href("montresource.php?nomfic=valmax.php","valmax.php")."." ;
        echo " Le non-typage explicite de PHP permet d'utiliser les instructions qu'il s'agisse d'un tableau de nombres ou de  chaines de caractères. " ;
        echo " Voici la solution avec les lignes non numérotées&nbsp;:" ;
        finp() ;
        
        pre_fichier("valmax.php","cadre") ;
        
        p("texte") ;
        echo "Il serait possible de tout déterminer sans utiliser de boucle explicite car PHP dispose de nombreuses fonctions sur tableau. " ;
        echo " Voici par exemple comment trouver le maximum et son nombre d'occurences. Il faut bien s&ucirc;r noter qu'utiliser ces fonctions ne " ;
        echo " garantit pas l'efficacité (et donc la rapidité de la solution)." ;
        finp() ;
        
        pre_fichier("valmaxfn.php","cadrejaune") ;
        
        p("texte") ;
        echo "Calculer le maximum et son nombre d'occurrences en une seule boucle ne présente pas vraiment d'intér&ecirc;t " ;
        echo " pour un \"petit tableau\" (disons quelques centaines ou quelques milliers d'éléments). Par contre, si on dépasse le " ;
        echo " million d'éléments, c'est non négligeable. Par exemple, si une image comme " ;
        echo href("http://images.aperio.com/H_E%2040x.svs/view.apml","celle-ci")." -- 7&nbsp;Go&nbsp;! --" ;
        echo " doit &ecirc;tre traitée pour trouver le maximum d'intensité des pixels (ce qui correspond à l'intensité maximale de " ;
        echo " la maladie), le parcours de l'image mise dans un tableau dure environ 6 minutes. Avec deux boucles, il faut donc en tout " ;
        echo " 12 minutes&nbsp;; avec une seule boucle, la durée d'exécution est plut&ocirc;t proche de 8 minutes (il y a un \"surcout\" " ;
        echo " de temps à cause des tests dans la boucle)." ;
        finp() ;
        
        finsolution() ;
        
        finblockquote() ;
        
        ## -------------------------------------------------------------------------------------------
        
        $tdmCRLM->afficheRubrique("oui") ; $numExo++ ; #  La structure de données pile (v1)
        
        ## -------------------------------------------------------------------------------------------
        
        blockquote() ;
        blockquote() ;
        
        p("texte") ;
        echo "On voudrait implémenter en ligne de commandes la notion de pile où on ne peut ajouter qu'en haut de pile. " ;
        echo " Pour cela on utilisera un tableau PHP. Voici un exemple de ce qu'on voudrait pouvoir écrire&nbsp;:" ;
        finp() ;
        
        pre_fichier("pilev1.txt","cadre") ;
        
        p("texte") ;
        echo "Implémenter les fonctions citées en utilisant seulement " ;
        echo " ".b("return()").", ".b("array()").", ".b("count()").", l'indexation et ".b("unset()").". " ;
        finp() ;
        
        p("texte") ;
        echo "Comment dit-on une pile en anglais&nbsp;? Et empiler&nbsp;? Et dépiler&nbsp;? Y a-t-il des fonctions PHP prévues pour cela&nbsp;?" ;
        finp() ;
        
        finblockquote() ;
        
        solution($numExo,$numTp) ;
        
        p("texte") ;
        echo "Consulter ".href("montresource.php?nomfic=pilev1.php","pilev1.php")." pour un listing numéroté, " ;
        echo " mais vous pouvez vous contenter de ce qui suit&nbsp;:" ;
        finp() ;
        
        pre_fichier("pilev1.php","cadrebleu") ;
        
        p("texte") ;
        echo "Dans le contexte informatique, une pile se dit ".b("stack")." en anglais, " ;
        echo "empiler ".b("to&nbsp;stack").", " ;
        echo "dépiler ou désempiler ".b("to&nbsp;unstack").". " ;
        echo "PHP dispose des fonctions ";
        echo href("http://www.php.net/manual/en/function.array-push.php","array_push","gbleuf nou")." et " ;
        echo href("http://www.php.net/manual/en/function.array-pop.php","array_pop","gbleuf nou")." ce qui fait " ;
        echo " qu'on n'a pas besoin d'inventer de fonction pour résoudre le problème, comme le montre le programme " ;
        echo " ci-dessous&nbsp;:" ;
        finp() ;
        
        pre_fichier("pilev1bis.php","cadrejaune") ;
        
        p("texte") ;
        echo "On notera au passage le comportement de ".b("array_pop")." lorsque la pile est vide." ;
        finp() ;
        finsolution() ;
        
        finblockquote() ;
        
        ## -------------------------------------------------------------------------------------------
        
        $tdmCRLM->afficheRubrique("oui") ; $numExo++ ; #  Polynome qaund tu nous tiens
        
        ## -------------------------------------------------------------------------------------------
        
        blockquote() ;
        blockquote() ;
        
        p("texte") ;
        echo "Contrairement à ce qu'on croit dans les &laquo;petites classes&raquo;, un polynome n'est pas une fonction de x, " ;
        echo " mais un \"objet mathématique\" défini par une liste de coefficients. Par exemple la liste " ;
        finp() ;
        
        p("texte") ;
        nbsp(15) ;
        input_text("coeffs","   1   0   -2   6   ",20,"bleu_pastel") ;
        finp() ;
        
        p("texte") ;
        echo "correspond à x".sup("3")." -2 x + 6 avec les puissances décroissantes, et à " ;
        echo " 1 - 2 x".sup("2")." + 6  x".sup("3")." avec les puissances croissantes." ;
        finp() ;
        
        p("texte") ;
        echo "Ecrire un programme PHP qui lit une telle liste et qui affiche le polynome comme ci-dessus." ;
        finp() ;
        
        p("texte") ;
        echo "Pour les plus courageuses et les plus courageux, implémenter la saisie d'un deuxième polynome, " ;
        echo " puis calculer et afficher leur somme, leur produit, leur polynome équivalent à leur fonction primitive et celui de leur fonction dérivée. " ;
        finp() ;
        
        finblockquote() ;
        
        solution($numExo,$numTp) ;
        
        vnc() ;
        
        finsolution() ;
        
        finblockquote() ;
        
        ## -------------------------------------------------------------------------------------------
        
        finPageTp($numTp) ; # contient finSection() et finPage() ; la fonction est dans l2a_inc.php
        
        ?>
        

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)