Développement Web avancé L2 (PHP et MySQL)
TP numéro 1
gilles.hunault "at" univ-angers.fr
Table des matières cliquable
1. PHP cli : date, heure et numéro de version
2. PHP cli : conversion pouces/cm
3. PHP -a et test rapide de fonction
4. Gestion Web de l'affichage avec \n,<br> et <p>
6. Affichage XHTML de milles terrestres
9. Occurences du maximum d'un tableau
Il est possible d'afficher toutes les solutions via ?solutions=1.
Rappel : vos programmes PHP doivent être transférés sur le serveur forge dans votre répertoire forge_html avant d'être utilisés. Vous pouvez les éditer sous Windows ou sous Linux, mais au final ils doivent être exécutés sur forge. Il faut utiliser ssh -X -Y login@janus.info.univ-angers.fr pour vous connecter ou ssh -X -Y login@forge si vous êtes dans une des salles locales de TP.
1. PHP cli : date, heure et numéro de version
Ecrire un programme PHP qui fonctionne en mode CLI (ligne de commande) qui affiche la date et l'heure et le numéro de la version du PHP utilisé sur le serveur.
A quoi sert l'instruction nommée phpinfo() ?
Solution : masquer la solution
Pour la date et l'heure, on utilise la même fonction de PHP nommée date mais avec des paramètres différents. Il est conseillé de lire au moins une fois le manuel de PHP à l'adresse http://php.net/manual/fr/function.date.php pour voir toutes les options possibles. Voici ce qu'on peut écrire pour réaliser l'exercice :
<?php echo "La date est ".date("d/m/Y")." et l'heure ".date("H:i")."." ; echo "\n" ; echo "Version de PHP : ".phpversion().".\n" ; ?>La fonction nommée phpversion() renvoie, en plus du numéro de version le nom du système d'exploitation. Par contre l'instuction phpinfo() renvoie toute la configuration de PHP. Ainsi, le simple programme
<?php phpinfo() ?>renvoie tout ce que vous pouvez lire à l'URL phpinfo.php. Cela permet en particulier de savoir comment est configuré le serveur, quel codage il utilise pour les accents, quels modules sont disponibles...
2. PHP cli : conversion pouces/cm
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 le mot "cm". On effectuera alors la conversion idoine, sachant qu'un pouce vaut 2,54 cm. Voici un exemple de ce qu'on voudrait comme fonctionnement :
$gh> php convcminch.php Désolé, mais je n'ai pas assez d'informations pour convertir. Vous devez fournir un nombre et le mot pouces ou le mot cm. Par exemple, si vous tapez php convcminch.php 9 pouces, je ferai la conversion en centimètres. $gh> php convcminch.php 10 pouces 10 pouces = 25.4 cm. $gh> php convcminch.php 10 cm 10 cm = 3.9370078740157 pouces. # mieux : $gh> php convcminch.php 10 cm 10 cm = 3.94 pouces (arrondi).Volontairement, on n'utilisera aucune fonction et on ne fera aucun test sur la valeur numérique afin de voir commment PHP se comporte en cas de donnée mal typée.
Y a-t-il une façon standard d'écrire des paramètres sous Linux ?
Ecrire un programme similaire qui fonctionne avec les paramètres val et unit passés en méthode GET dans l'URL. Voir la page convcminch2.php comme exemple. On pourra utiliser les fichiers debutpage.php et finpage.php de l'archive debutfin.zip pour générer le début et la fin de la page.
Ecrire enfin une page XHTML Strict valide basée sur le "squelette" de page sqs.htm avec un formulaire dont l'attribut action est convcminch2.php.
Solution : masquer la solution
Pour tester le nombre d'arguments, on peut utiliser argc et pour leur valeur on utilise argv qui font partie des variables dites réservées. Un exemple de solution est convcminch.php :
<?php # (gH) -_- convcminch.php ; TimeStamp (unix) : 25 Février 2013 vers 12:19 ##################################################################### # # # conversion pouce/cm en ligne de commande (dans les deux sens) # # # ##################################################################### # ATTENTION : ce programme s'utilise en ligne de commande ! # si vous ne comprenez pas comment sont stockés les paramètres, # décommentez l'instruction suivante : # print_r($argv) ; # s'il y a moins de 3 paramètres, on ne peut pas effectuer de conversion # et on le dit if ($argc<3) { echo "\n" ; echo " Désolé, mais je n'ai pas assez d'informations pour convertir.\n" ; echo " Vous devez fournir un nombre et le mot pouces ou le mot cm. \n" ; echo " Par exemple," ; echo " si vous tapez php convcminch.php 9 pouces, je ferai la conversion en centimètres.\n\n" ; exit(-1) ; # force à quitter le programme } # fin si # arrivé ici, on est sur d'avoir le bon nombre de paramètres $valeur = $argv[1] ; # car $argv[0] est le nom du programme en cours d'exécution $unite = $argv[2] ; # sans doute pouce ou cm if ($unite=="pouces") { $fact = 2.54 ; $autreu = "cm" ; } ; # fin si if ($unite=="cm") { $fact = 1/2.54 ; $autreu = "pouces" ; } ; # fin si echo " $valeur $unite = ".($valeur*$fact)." $autreu.\n" ; # sans doute mieux, avec arrondi et calcul séparé de l'affichage : $valCnv = $valeur*$fact ; $valCnv_f = sprintf("%0.2f",$valCnv) ; echo " $valeur $unite = $valCnv_f $autreu (arrondi).\n" ; ?>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, pas plus que $autreu, d'où deux erreurs. De même, si on ne fournit pas un nombre mais une chaine, il devrait y avoir une erreur mais PHP renvoie 0, tout simplement :
$gh> php convcminch.php 10 pommes PHP Notice: Undefined variable: fact in /home/gh/public_html/internet/convcminch.php on line 48 PHP Stack trace: PHP 1. {main}() /home/gh/public_html/internet/convcminch.php:0 PHP Notice: Undefined variable: autreu in /home/gh/public_html/internet/convcminch.php on line 48 PHP Stack trace: PHP 1. {main}() /home/gh/public_html/internet/convcminch.php:0 10 pommes = 0 . $gh> php convcminch.php deux pouces deux pouces = 0 cm. deux pouces = 0.00 cm (arrondi).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. Voici ce que cela donnerait si on décide de nommer unit et val les paramètres :
$gh> # ancien style : php convcminch.php -val 10 -unit pouces $gh> # nouveau style : php convcminch.php --val=10 --unit=poucesLe code-source PHP de la page nommée convcminch2.php qui gère ces paramètres avec la méthode GET est ici et un exemple de formulaire basé sur sqs.htm est là.
3. PHP -a et test rapide de fonction
Quelqu'un vous dit que la fonction ucfirst() fait une «quasi uppérisation» d'une chaine de caractères. Avez-vous besoin d'écrire un programme php pour tester ce que fait cette fonction ?
Solution : masquer la solution
Non, bien sûr car on peut utiliser le mode interactif avec php -a. Démonstration :
$gh> php -a Interactive shell php> echo ucfirst("jean dupont") ; Jean dupont php> $chen = "essai" ; php> $aut = ucfirst($chen) ; php> echo $aut ; Essai php> quit
4. Gestion Web de l'affichage avec \n,<br> et <p>
Téléchargez l'archive debutfin.zip et reproduisez le programme suivant que vous nommerez essaipage.php. 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, par exemple si on écrit echi au lieu de echo ? Au passage, rappelez où on peut trouver une liste des entités XHTML.
On en profitera pour installer HTML VALIDATOR de M. Gueury.
<?php require "debutpage.php" ; echo "<h1>Page valide</h1>\n" ; echo "<p>Bonjour \n à tous " ; echo " et à " ; echo "toutes.<br />A bientôt.</p> " ; require "finpage.php" ; ?>Il est possible de rapatrier l'archive et de la décompresser en ligne de commandes (dans le bon répertoire !) via :
> cd ~/forge_html/ > wget http://forge.info.univ-angers.fr/~gh/internet/debutfin.zip > unzip debutfin.zipSolution : masquer la solution
Les sauts de ligne dans le code source HTML apparaissent uniquement quand on demande à PHP de produire \n. Par contre au niveau de la page Web, vous devez vous rappeler que tous les espaces, tabulations et sauts de ligne sont remplacés par un seul espace. Donc seules des balises explicites comme <br>, <p>, <li>... ou des marges induites par le CSS permettent de passer à la ligne. Ce qui signifie que le texte "à tous et à toutes." est sur une seule ligne, les mots étant séparés par un seul espace. Vérification : ici.
En cas d'erreur, par exemple avec echi au lieu d'echo, le serveur réagit en fonction de sa configuration. Ainsi sur forge, une erreur fait que la page est vide... dommage ! Avec un serveur configuré autrement, on peut avoir le détail (pas toujours très compréhensible) de l'erreur comme ci-dessous :
Pour retrouver une liste d'entités XHTML, Google est notre ami, soit le lien français entités ou le lien anglais entities. Parmi les listes proposées, nous conseillons celle de la W3 School, celle de elizabethcastro et enfin celle du wiki anglais.
5. Combien de tests ?
Combien de cas faut-il envisager et tester avant d'être convaincu que le programme en ligne de commande convcminch.php est correct et qu'on a «tout prévu» ?
Au passage, quelle est la différence entre développer et programmer ?
Solution : masquer la solution
Il faut certainement prévoir et tester au moins 7 cas :
- un cas sans aucun paramètre ;
- un cas avec tous les paramètres corrects en nom et en valeur ;
- un cas avec le paramètre val absent ;
- un cas avec le paramètre unit absent ;
- un cas avec la valeur du paramètre val mal typée ;
- un cas avec la valeur du paramètre unit mal typée ;
- un cas avec des valeurs des paramètres avec beaucoup de décimales.
Programmer, c'est juste écrire un programme. Développer, c'est réfléchir au problème, l'analyser, choisir des solutions, les programmer, les documenter, les tester...
Ainsi, pour l'exemple de conversion, un «vrai» développeur ajoutera la détection de l'initiale (p pour pouce, c pour cm), viendra certainement ajouter un s à pouce pour obtenir pouces au lieu de reprocher à l'utilisateur une mauvaise orthographe, il (elle) proposera peut-être d'utiliser aussi l'initiale i pour inch(es), voire même d (pour Daumen en allemand) si la page est beaucoup lue en Allemagne...
6. Affichage XHTML de milles terrestres
Reproduire la page mille.php. On utilisera debutpage.php et finpage.php comme précédemment mais aussi std.css afin d'avoir une page XHTML valide et «jolie». On produira le tableau avec une seule boucle pour dont l'indice variera de 1 à 15. Les valeurs seront arrondies et affichées à droite avec deux décimales.
Solution : masquer la solution
Voir le code-source de mille.php.
En version «php conceptuel», c'est-à-dire sans balise apparente, consulter le code-source de mille2.php dont le rendu est mille2.php.
7. Affectations multiples
Il parait qu'il est possible de réaliser en PHP des affectations multiples avec list. Est-ce vrai ? A quoi cela peut-il servir ?
Solution : masquer la solution
Si on lit la documentation de list, on voit qu'il est effectivement possible de réaliser plusieurs affectations avec list à gauche et un tableau (array) à droite. Cela permet par exemple de permuter deux variables en une seule ligne, comme dans l'exemple suivant :
$gh> php -a Interactive shell php> $a = 5 ; php> $b = 3 ; php> list($b,$a) = array($a,$b) ; php> print_r($GLOBALS) ; Array ( [GLOBALS] => Array ... # de nombreuses lignes omises [a] => 3 [b] = 5 ) php> quit
8. Une fonction pour <h1>
On voudrait implémenter une fonction pour produire des titres de niveau 1 avec <h1>. Ecrire une fonction achin() qui correspond au comportement suivant :
achin() ; # affiche un titre <h1> xhtml vide mais valide achin("bonjour") ; # affiche <h1>bonjour</h1>\n achin("oui","grouge","t25") ; # affiche <h1 class='grouge' id='t25'>oui</h1>\n achin("oui","grouge","t25","onclick='show()'") ; # affiche <h1 class='grouge' id='t25' onclick='show()'>oui</h1>\nQuelle serait la syntaxe pour avoir juste une indication de classe ? Et d'id ?
Solution : masquer la solution
Voici un exemple possible de fonction :
<?php function achin($texte=" ",$classe="",$id="",$extra="") { $h1 = "<h1" ; if ($classe!="") { $h1 .= " class='$classe'" ; } ; if ($id !="") { $h1 .= " id='$id'" ; } ; if ($extra !="") { $h1 .= " $extra" ; } ; echo $h1.">".trim($texte)."</h1>\n" ; } # fin de fonction achin ?>Pour utiliser juste une classe, achin($txt,$cla) suffit et pour avoir juste un id, il faut écrire achin($txt,"",$id).
9. Occurences du maximum d'un tableau
On voudrait trouver la plus grande valeur d'un tableau et le nombre de fois où elle apparait. Pour cela, on commencera par écrire une fonction valMax($leTableau) qui calcule la plus grande valeur du tableau et on utilisera une deuxième boucle pour compter le nombre d'occurences du maximum.
Recommencer l'exercice en utilisant cette fois une seule boucle pour déterminer à la fois le maximum et son nombre d'occurences. On utilisera les valeurs 1 8 2 8 3 6 8 2 comme jeu d'essai dans un premier temps. Dans un second temps, on utilisera les valeurs "a", "b", "oui", "c", "oui", "d" comme jeu d'essai. On donnera aussi la position de la première et de la dernière occurence du maximum. On pourra se contenter d'une version en ligne de commandes.
Solution : masquer la solution
On trouvera la solution dans valmax.php. 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. Voici la solution avec les lignes non numérotées :
<?php ################################################################## function valMax($leTableau) { ################################################################## # nbelt : nombre d'éléments dans le tableau # maxjl : maximum courant (Jusque Là) # idv : indice de valeur dans le tableau # valc : valeur courante dans le tableau à l'indice idv $nbelt = count($leTableau) ; $maxjl = $leTableau[0] ; for ($idv=0;$idv<$nbelt;$idv++) { $valc = $leTableau[$idv] ; if ($valc>$maxjl) { $maxjl = $leTableau[$idv] ; } ; } ; # fin pour idv return( $maxjl ) ; } # fin de fonction valMax ################################################################## $tableau = preg_split("/\s+/","1 8 2 8 3 6 8 2") ; # si vous décommentez la ligne suivante, on trie des chaines de caractères : # $tableau = preg_split("/\s+/","le chat, le chien et le rat sont des animaux") ; echo "Voici le tableau utilisé :\n" ; print_r($tableau) ; # version 1 : utilisation de valMax et utilisation d'une boucle # pour calculer le nombre d'occurences du max $vmax = valMax($tableau) ; echo "Version 1 : le plus grand élément est $vmax " ; $nbmax = 0 ; $nbelt = count($tableau) ; for ($idv=0;$idv<$nbelt;$idv++) { $valc = $tableau[$idv] ; if ($valc==$vmax) { $nbmax++ ; } ; } ; # fin pour idv echo " et il apparait $nbmax fois.\n\n" ; # version 2 : tout en une seule boucle # nbelt : nombre d'éléments dans le tableau # maxjl : maximum courant (Jusque Là) # idv : indice de valeur dans le tableau # valc : valeur courante dans le tableau à l'indice idv # prem : première fois où on la voit # dern : dernière fois où on la voit # nboc : nombre d'occurences $nbelt = count($tableau) ; $maxjl = $tableau[0] ; $prem = 1 ; $dern = 1 ; $nboc = 0 ; for ($idv=0;$idv<$nbelt;$idv++) { $valc = $tableau[$idv] ; if ($valc==$maxjl) { $nboc++ ; $dern = $idv+1 ; } else { if ($valc>$maxjl) { $maxjl = $tableau[$idv] ; $nboc = 1 ; $prem = $idv+1 ; $dern = $idv+1 ; } ; # fin si } ; # fin de si } ; # fin pour idv echo "Version 2 : le plus grand élément est $vmax " ; echo " et il apparait $nboc fois,\n" ; echo "la première fois en position $prem et " ; echo "la dernière fois en position $dern.\n\n" ; /************************************************** Affichage : Voici le tableau utilisé Array ( [0] => 1 [1] => 8 [2] => 2 [3] => 8 [4] => 3 [5] => 6 [6] => 8 [7] => 2 ) Version 1 : le plus grand élément est 8 et il apparait 3 fois. Version 2 : le plus grand élément est 8 et il apparait 3 fois, la première fois en position 2 et la dernière fois en position 7. avec les chaines de caractères : -------------------------------- Voici le tableau utilisé : Array ( [0] => le [1] => chat, [2] => le [3] => chien [4] => et [5] => le [6] => rat [7] => sont [8] => des Version 1 : le plus grand élément est sont et il apparait 1 fois. Version 2 : le plus grand élément est sont et il apparait 1 fois, la première fois en position 8 et la dernière fois en position 8. **************************************************/ ?>Il serait possible de tout déterminer sans utiliser de boucle explicite car PHP dispose de nombreuses fonctions sur tableau. Voici par exemple comment trouver le maximum et son nombre d'occurences. Il faut bien sûr noter qu'utiliser ces fonctions ne garantit pas l'efficacité (et donc la rapidité de la solution).
<?php /**************************************************/ function maxOcc($leTableau) { /**************************************************/ echo "Voici le tableau utilisé :\n" ; print_r($leTableau) ; $tabOcc = array_count_values($leTableau) ; echo "Voici la fréquence de chaque élément du tableau :\n" ; print_r($tabOcc) ; $vmax = max($leTableau) ; $nboc = $tabOcc[ $vmax ] ; echo "Le plus grand élément du tableau est $vmax " ; echo " et il apparait $nboc fois.\n" ; } # fin de fonction maxOcc /**************************************************/ /**************************************************/ $tableau = preg_split("/\s+/","1 8 2 8 3 6 8 2") ; # si vous décommentez la ligne suivante, on trie des chaines de caractères : # $tableau = preg_split("/\s+/","le chat, le chien et le rat sont des animaux") ; maxOcc( $tableau) ; /**************************************************/ /************************************************** Affichage : Voici le tableau utilisé : Array ( [0] => 1 [1] => 8 [2] => 2 [3] => 8 [4] => 3 [5] => 6 [6] => 8 [7] => 2 ) Voici la fréquence de chaque élément du tableau : Array ( [1] => 1 [8] => 3 [2] => 2 [3] => 1 [6] => 1 ) Le plus grand élément du tableau est 8 et il apparait 3 fois. Chaines de caractères : --------------------- Voici le tableau utilisé : Array ( [0] => le [1] => chat, [2] => le [3] => chien [4] => et [5] => le [6] => rat [7] => sont [8] => des [9] => animaux ) Voici la fréquence de chaque élément du tableau : Array ( [le] => 3 [chat,] => 1 [chien] => 1 [et] => 1 [rat] => 1 [sont] => 1 [des] => 1 [animaux] => 1 ) Le plus grand élément du tableau est sont et il apparait 1 fois. **************************************************/ ?>Calculer le maximum et son nombre d'occurrences en une seule boucle ne présente pas vraiment d'intérêt pour un "petit tableau" (disons quelques centaines ou quelques milliers d'éléments). Par contre, si on dépasse le million d'éléments, c'est non négligeable. Par exemple, si une image comme celle-ci -- 7 Go ! -- doit être traitée pour trouver le maximum d'intensité des pixels (ce qui correspond à l'intensité maximale de la maladie), le parcours de l'image mise dans un tableau dure environ 6 minutes. Avec deux boucles, il faut donc en tout 12 minutes ; avec une seule boucle, la durée d'exécution est plutôt proche de 8 minutes (il y a un "surcout" de temps à cause des tests dans la boucle).
10. La structure de données "pile" version 1
On voudrait implémenter en ligne de commandes la notion de pile où on ne peut ajouter qu'en haut de pile. Pour cela on utilisera un tableau PHP. Voici un exemple de ce qu'on voudrait pouvoir écrire :
$p = creerPile() ; # un simple tableau montrerPile($p) ; # doit afficher "la pile est vide" $p = empiler(5,$p) ; # la pile ne contient que 5 $p = empiler(2,$p) ; # la pile contient 5 et, au-dessus, 2 montrerPile($p) ; # affiche 5 (bas de la pile) et 2 (haut de la pile) list($x,$p) = depiler($p) ; # renvoie 2 dans x et modifie p echo "on a enlevé $x (du haut) de la pile\n" ; list($y,$p) = depiler($p) ; # renvoie 5 dans y et modifie p list($x,$p) = depiler($p) ; # afficher "impossible, la pile est vide" ou renvoyer "erreur" ?Implémenter les fonctions citées en utilisant seulement return(), array(), count(), l'indexation et unset().
Comment dit-on une pile en anglais ? Et empiler ? Et dépiler ? Y a-t-il des fonctions PHP prévues pour cela ?
Solution : masquer la solution
Consulter pilev1.php pour un listing numéroté, mais vous pouvez vous contenter de ce qui suit :
<?php # ---------------------------------- function creerPile() { return( array() ) ; } # fin de fonction creerPile # ---------------------------------- function pileVide($p) { return( count($p)==0 ) ; } # fin de fonction pileVide # ---------------------------------- function empiler($valeur,$pile) { $pile[ count($pile) ] = $valeur ; return( $pile ) ; } # fin de fonction empiler # ---------------------------------- function depiler($pile) { $idd = count($pile) - 1 ; # idd : indice du dernier if ($idd>=0) { $dep = $pile[ $idd ] ; unset( $pile[ $idd ] ) ; } else { $dep = "" ; } # finsi return( array($dep,$pile) ) ; } # fin de fonction depiler # ---------------------------------- function montrerPile($pile) { $nbe = count($pile) ; if (pileVide($pile)) { echo "la pile est vide.\n" ; } else { echo "Contenu de la pile :\n" ; for ($ide=$nbe-1;$ide>=0;$ide--) { echo " valeur numéro ".sprintf("%2d",$ide)." : ".sprintf("%4d",$pile[$ide]) ; if ($ide==$nbe-1) { echo " (haut de la pile)" ; } ; if ($ide==0) { echo " (bas de la pile)" ; } ; echo "\n" ; } ; # fin pour ide } ; # finsi } # fin de fonction montrerPile # ---------------------------------- $p = creerPile() ; # un simple tableau montrerPile($p) ; # doit afficher "la pile est vide" $p = empiler(5,$p) ; # la pile ne contient que 5 $p = empiler(2,$p) ; # la pile contient 5 et, au-dessus, 2 montrerPile($p) ; # voir plus bas list($x,$p) = depiler($p) ; # renvoie 2 echo "on a enlevé $x (du haut) de la pile\n" ; list($x,$p) = depiler($p) ; # renvoie 5 list($x,$p) = depiler($p) ; # afficher "impossible, la pile est vide" ou renvoyer "erreur" ? /*************************************** Affichage : la pile est vide. Contenu de la pile : valeur numéro 1 : 2 (haut de la pile) valeur numéro 0 : 5 (bas de la pile) on a enlevé 2 (du haut) de la pile ***************************************/ ?>Dans le contexte informatique, une pile se dit stack en anglais, empiler to stack, dépiler ou désempiler to unstack. PHP dispose des fonctions array_push et array_pop ce qui fait qu'on n'a pas besoin d'inventer de fonction pour résoudre le problème, comme le montre le programme ci-dessous :
<?php $p = array() ; # un simple tableau print_r($p) ; # affichage d'un tableau vide array_push($p,5) ; # la pile ne contient que 5 array_push($p,"2") ; # la pile contient 5 et, au-dessus, 2 print_r($p) ; # affichage du tableau $x = array_pop($p) ; # renvoie 2 echo "on a enlevé $x de la pile\n" ; $x = array_pop($p) ; # renvoie 5 echo "on a enlevé $x de la pile\n" ; $x = array_pop($p) ; # renvoie chaine vide echo "on a enlevé $x de la pile\n" ; print_r($p) ; # affichage du tableau ################################################################ # # Affichage : # # Array # ( # ) # Array # ( # [0] => 5 # [1] => 2 # ) # on a enlevé 2 de la pile # on a enlevé 5 de la pile # on a enlevé de la pile # Array # ( # ) # ?>On notera au passage le comportement de array_pop lorsque la pile est vide.
11. Polynome quand tu nous tiens
Contrairement à ce qu'on croit dans les «petites classes», un polynome n'est pas une fonction de x, mais un "objet mathématique" défini par une liste de coefficients. Par exemple la liste
correspond à x3 -2 x + 6 avec les puissances décroissantes, et à 1 - 2 x2 + 6 x3 avec les puissances croissantes.
Ecrire un programme PHP qui lit une telle liste et qui affiche le polynome comme ci-dessus.
Pour les plus courageuses et les plus courageux, implémenter la saisie d'un deuxième polynome, puis calculer et afficher leur somme, leur produit, leur polynome équivalent à leur fonction primitive et celui de leur fonction dérivée.
Solution : masquer la solution
Solution volontairement non communiquée.
Code-source php de cette page ; code javascript utilisé. Retour à la page principale du cours.
Retour à la page principale de (gH)