PHP : Le tutoriel pour grands débutants pressés
PHP : Le tutoriel pour grands débutants pressés
Date de publication : 17 janvier 2009
V. PHP ETAPE 5
V-1. Les opérateurs
V-2. Les fonctions
V-2-a. Les fonctions dans la page
V-2-b. Plusieurs paramètres passés à la fonction
V-2-c. Les fonctions dans un fichier à part
V-2-d. Fonction qui renvoie une valeur de retour
V-3. La boucle for
V-4. TP5
V-5. Correction du TP5
V. PHP ETAPE 5
V-1. Les opérateurs
Rapidement les opérateurs essentiels :
Presque tous les opérateurs |
|
V-2. Les fonctions
V-2-a. Les fonctions dans la page
Imaginons le problème suivant. Votre programme affiche les notes/20 d'un élève.
Vous souhaitez mettre en rouge toutes les notes (strictement) inférieures à 10.
Vous souhaitez mettre en vert toutes les notes supérieures (ou égales) à 15.
Cela veut dire qu'à chaque apparition d'une note, il faut la tester et lui appliquer la couleur adéquate.
Comme c'est une tâche répétitive, on va la mettre en forme dans une fonction.
Voici comment opérer :
Vous souhaitez mettre en rouge toutes les notes (strictement) inférieures à 10.
Vous souhaitez mettre en vert toutes les notes supérieures (ou égales) à 15.
Cela veut dire qu'à chaque apparition d'une note, il faut la tester et lui appliquer la couleur adéquate.
Comme c'est une tâche répétitive, on va la mettre en forme dans une fonction.
Voici comment opérer :
On place évidemment la fonction que l'on va construire au début du code, avant de l'utiliser.
Par exemple, dans le début du body (au sein de balises php bien sûr).
Mais on ne la crée qu'une fois, tandis qu'on la convoque autant qu'on veut un peu plus loin sur le même fichier PHP.
C'est pourquoi on va lui donner un nom simple à retenir (comme les variables, les noms de fonctions sont libres, il faut juste bannir les espaces et les accents.)
Bien entendu, il faut aussi retenir une chose : c'est que si le nom de votre fonction est libre, une fois que vous l'avez choisi, vous ne pourrez le convoquer qu'en ne changeant rien (ni une lettre, ni une majuscule ou minuscule)...
Mais bon, vous devez commencer à comprendre que comme tout langage de programmation, PHP ne supporte aucune coquille.
Par exemple, dans le début du body (au sein de balises php bien sûr).
Mais on ne la crée qu'une fois, tandis qu'on la convoque autant qu'on veut un peu plus loin sur le même fichier PHP.
C'est pourquoi on va lui donner un nom simple à retenir (comme les variables, les noms de fonctions sont libres, il faut juste bannir les espaces et les accents.)
Bien entendu, il faut aussi retenir une chose : c'est que si le nom de votre fonction est libre, une fois que vous l'avez choisi, vous ne pourrez le convoquer qu'en ne changeant rien (ni une lettre, ni une majuscule ou minuscule)...
Mais bon, vous devez commencer à comprendre que comme tout langage de programmation, PHP ne supporte aucune coquille.
Le cadre de notre fonction se présentera ainsi :
|
Dans la création de la fonction, il est obligatoire de commencer par écrire function, ensuite vient le nom (libre).
Enfin ici, notre fonction comporte un paramètre (une variable imaginaire, $nombre, dont on ne connaît pas encore la valeur)...
On fait comme si $nombre existait déjà, et on fait le petit bout de code qui effectue ce qu'on veut obtenir :
Ma fonction qui colore les notes |
Vous voulez tester jusqu'au bout cette nouvelle fonction ?
Convoquer notre fonction dans une boucle |
|
En définitive, notre fichier notes.php complet donnera ceci :
le fichier complet |
|
Vous serez peut-être étonné du fait que cela fonctionne, bien que votre fonction disait colore($nombre) et que lorsque vous la convoquez, vous dites colore($note)...
Mais ça ne pose aucun problème. Le nom même de l'attribut au sein de la fonction est celui que vous voulez.
Quand vous la convoquez, il remplace de toute façon la variable 'théorique' de la fonction par la variable courante que vous lui passez en attribut...
V-2-b. Plusieurs paramètres passés à la fonction
Une remarque importante, en ce qui concerne les fonctions : elle peuvent être définies avec plusieurs paramètres.
Par exemple, je peux définir une fonction moyenne annuelle telle qu'elle soit la moyenne des trois trimestres scolaires :
|
Dans ce cas, pour la convoquer, on pourra écrire :
|
V-2-c. Les fonctions dans un fichier à part
Si vous développez un programme un peu ambitieux, vous aurez un certain nombre de fonctions.
Vous pouvez tout-à-fait les mettre à part dans un fichier voisin que vous appelleriez fonctions.php par exemple, ou comme vous voulez en fait.
Il vous suffira ensuite de le convoquer une seule fois au tout début de chacune de vos pages php, au sein de balises PHP bien entendu :
par la formule suivante :
Vous pouvez tout-à-fait les mettre à part dans un fichier voisin que vous appelleriez fonctions.php par exemple, ou comme vous voulez en fait.
Il vous suffira ensuite de le convoquer une seule fois au tout début de chacune de vos pages php, au sein de balises PHP bien entendu :
par la formule suivante :
|
Ceci vous permet ensuite de convoquer n'importe quelle fonction définie dans votre page fonctions.php.
Par exemple, vous avez développé tout un site et vous souhaitez sur chacune des pages signaler le dernier événement mis à jour.
Vous pourriez procéder ainsi :
Dans fonctions.php, vous rédigez cette fonction :
Vous pourriez procéder ainsi :
Dans fonctions.php, vous rédigez cette fonction :
une fonction de simple affichage |
|
Dans chacune des pages de votre site maintenant, vous vous contentez de mettre, à l'endroit où vous souhaitez que votre avis de mise à jour (maj) apparaisse, la ligne suivante :
Pour convoquer la fonction |
|
Bien entendu aussi, vous aurez songé auparavant à mettre votre "include" de la page fonctions.php dans chaque page de votre site...
Ceci vous permettra, à chaque nouvel avis de maj, de changer centralement et une seule fois dans fonctions.php votre texte.
Et cela aura pour conséquence de le changer sur chacune de vos pages.
Par exemple :
|
Vous remarquerez que la fonction DerniereMaj n'a pas de paramètres. C'est une simple fonction d'affichage.
Une fonction sans paramètres conserve toutefois les parenthèses vides, dans sa définition comme à chaque convocation.
V-2-d. Fonction qui renvoie une valeur de retour
Une dernière chose sur les fonctions : Si l'on ne veut pas une fonction qui affiche, mais une fonction qui par exemple calcule et renvoie une valeur, on utilisera le mot clé return.
Par exemple, réalisons une fonction qui nous retourne le verdict du nombre que l'on vient d'entrer : pair ou impair ?
Par exemple, réalisons une fonction qui nous retourne le verdict du nombre que l'on vient d'entrer : pair ou impair ?
Un formulaire de saisie, et une analyse du nombre entré |
|
Quelques commentaires supplémentaires : return stoppe la fonction.
Il faut donc le placer en tout dernier, juste avant l'accolade finale qui ferme la fonction.
Pour la même raison, return ne peut renvoyer qu'une seule valeur.
Enfin, bien penser à "ranger" la valeur retournée par une fonction dans une variable, peu importe son nom (c'est bien pourquoi je l'ai appelée ici $toto)...
V-3. La boucle for
Une boucle for, c'est une boucle qui dit "pour chaque valeur de tant à tant, recommence".
Traditionnellement, $i est le nom de la variable qui sert un peu de compteur pour une boucle for, mais rien n'interdit de lui donner un nom plus explicite.
La syntaxe de cette boucle est la suivante :
La syntaxe de cette boucle est la suivante :
Ca serait sympa si on pouvait faire les punitions en PHP |
|
Plusieurs remarques :
Puisque $i commence à 0 et non à 1 (oui, pareil que pour les indices de tableaux), pensez bien à mettre ensuite strictement inférieur à la valeur de la limite supérieure de la boucle.
Ici on peut traduire par : pour $i de 0 à 49, ce qui fait bien... 50 tours de boucle.
Bon en plus, si vous en avez marre de commencer à zéro, vous pouvez commencer à 1 ou à ce que vous voulez pour les boucles (c'est pas comme les tableaux)...
Mais c'est la syntaxe suivante : $i++ qui doit vous sembler un peu surprenante.
Elle signifie $i=$i+1;
Autrement dit, augmente notre compteur de 1 à chaque tour de boucle, cela se nomme aussi l'incrémentation.
Puisque $i commence à 0 et non à 1 (oui, pareil que pour les indices de tableaux), pensez bien à mettre ensuite strictement inférieur à la valeur de la limite supérieure de la boucle.
Ici on peut traduire par : pour $i de 0 à 49, ce qui fait bien... 50 tours de boucle.
Bon en plus, si vous en avez marre de commencer à zéro, vous pouvez commencer à 1 ou à ce que vous voulez pour les boucles (c'est pas comme les tableaux)...
Mais c'est la syntaxe suivante : $i++ qui doit vous sembler un peu surprenante.
Elle signifie $i=$i+1;
Autrement dit, augmente notre compteur de 1 à chaque tour de boucle, cela se nomme aussi l'incrémentation.
V-4. TP5
Dans fonctions.php, vous créerez une fonction qui, quand on lui passe un nombre, affiche le verdict "est un nombre premier" ou "n'est pas un nombre premier";
Pour rappel, un nombre premier est un nombre qui n'est divisible QUE par lui-même et par 1 (et ce, de façon distincte, donc 1 n'est pas un nombre premier).
A ce propos, 0 n'est pas un nombre premier non plus (car on ne peut pas le diviser par zéro), mais vous le gérerez comme une exception...
Dans premiers.php, vous proposerez un formulaire pour que l'utilisateur entre un nombre, disons entre 1 et 10 000, puis traiterez le nombre entré en appelant la fonction en cas de clic sur validation.
Vous afficherez alors le verdict sous la forme :
"99 n'est pas un nombre premier." ou bien "59 est un nombre premier" etc...
Si vous bloquez vraiment, après avoir cherché, lisez le préambule de la correction avant de vous replonger dans la réflexion... Cela devrait vous aider sans tout vous mâcher...
Pour rappel, un nombre premier est un nombre qui n'est divisible QUE par lui-même et par 1 (et ce, de façon distincte, donc 1 n'est pas un nombre premier).
A ce propos, 0 n'est pas un nombre premier non plus (car on ne peut pas le diviser par zéro), mais vous le gérerez comme une exception...
Dans premiers.php, vous proposerez un formulaire pour que l'utilisateur entre un nombre, disons entre 1 et 10 000, puis traiterez le nombre entré en appelant la fonction en cas de clic sur validation.
Vous afficherez alors le verdict sous la forme :
"99 n'est pas un nombre premier." ou bien "59 est un nombre premier" etc...
Si vous bloquez vraiment, après avoir cherché, lisez le préambule de la correction avant de vous replonger dans la réflexion... Cela devrait vous aider sans tout vous mâcher...
V-5. Correction du TP5
Petit préambule avant la correction (abondamment commentée) des deux fichiers :
Un flag (que l'on peut appeller $flag pour plus de lisibilité) est une variable logique qui fonctionne un peu comme un drapeau qui est en berne ($flag=0;) et se soulève à l'événement qu'on lui a indiqué ($flag=1;).
Ici, on souhaite que dès qu'il repère un multiple (un seul), hop, il initialise le flag à 1, et il sort de la boucle.
A ce propos, un autre tuyau : au sein d'une boucle, la commande break; permet de sortir sans finir les tours de boucle.
Le programme cesse de tester les autres multiples, c'est devenu superflu pour l'objectif que nous poursuivons, et qui est de chercher quand un nombre cesse d'avoir une chance d'être premier...
A vous de jouer maintenant !
Un flag (que l'on peut appeller $flag pour plus de lisibilité) est une variable logique qui fonctionne un peu comme un drapeau qui est en berne ($flag=0;) et se soulève à l'événement qu'on lui a indiqué ($flag=1;).
Ici, on souhaite que dès qu'il repère un multiple (un seul), hop, il initialise le flag à 1, et il sort de la boucle.
A ce propos, un autre tuyau : au sein d'une boucle, la commande break; permet de sortir sans finir les tours de boucle.
Le programme cesse de tester les autres multiples, c'est devenu superflu pour l'objectif que nous poursuivons, et qui est de chercher quand un nombre cesse d'avoir une chance d'être premier...
A vous de jouer maintenant !
Veuillez cliquer sur le symbole à droite pour découvrir la solution quand vous aurez fini.
fonctions.php |
|
premiers.php |
|