• Aucun résultat trouvé

On appelle fonction un sous-programme qui permet d'effectuer un ensemble d'instructions par simple appel de la fonction dans le corps du programme principal.

N/A
N/A
Protected

Academic year: 2022

Partager "On appelle fonction un sous-programme qui permet d'effectuer un ensemble d'instructions par simple appel de la fonction dans le corps du programme principal. "

Copied!
4
0
0

Texte intégral

(1)

04/04/2014

1

1

La notion de fonction

On appelle fonction un sous-programme qui permet d'effectuer un ensemble d'instructions par simple appel de la fonction dans le corps du programme principal.

Les fonctions permettent d'exécuter dans plusieurs parties du programme une série d'instructions, cela permet une simplicité du code et donc une taille de programme minimale.

Si une fonction peut faire appel à elle-même, on parle alors de fonction récursive (il ne faut pas oublier de mettre une condition de sortie au risque sinon de ne pas pouvoir arrêter le programme...).

2

Utilisateur de fonction

L’utilisateur de la fonction ne connait pas le contenu de la fonction mais il doit connaître:

- Sa fonctionnalité

- Le type de résultat à obtenir

- Les paramètres attendus en entrée (Les paramètres sont aussi appelés arguments de la fonction)

On peut assimiler une fonction à une « boîte noire » qu’on utilise sans en connaître le contenu.

3

Signature de fonction et contrats

On peut aussi assimiler une fonction à un contrat passé entre le réalisateur de la fonction et l’utilisateur.

La fonctionnalité, le résultat et les paramètres de la fonctions sont aussi appelés la signature de la fonction.

L’utilisateur doit respecter les termes du contrat en transmettant correctement les paramètres attendus et en utilisant correctement le résultat fourni.

Le créateur de la fonction doit respecter les termes du contrat en s’assurant que la fonction respecte la fonctionnalité indiquée dans la signature tant que les paramètres fournis correspondent à ceux attendus.

4

Intérêt des fonctions

- Réutilisabilité: Vous pouvez réutiliser dans vos programmes les fonctions que vous avez développées auparavant ou que d’autres ont développées - Simplification d’écriture: Les fonctions rendent le code plus lisible car plus synthétique.

5

Déclaration des fonctions

Vous pouvez utiliser:

Les fonctions intégrées de PHP: date, floor, include, mysql-connect…

Vos propres fonctions

Des fonctions développées par des collègues (pratique quand vous travaillez sur des projets)

Des fonctions développées par des auteurs et mises à disposition librement (livres, web…)

La définition d'une fonction s'appelle "déclaration" et peut se faire n'importe où dans le code.

Les fonctions ayant pour intérêt de pouvoir être appelé plusieurs fois et de n’importe où, il est fortement conseillé de stocker vos fonctions dans un fichier spécifique.

6

Déclaration des fonctions

La déclaration d'une fonction se fait grâce au mot-clé function , selon la syntaxe suivante :

function Nom_De_La_Fonction(argument1, argument2, ...) { liste d'instructions

}

le nom de la fonction doit commencer par une lettre,

un nom de fonction peut comporter des lettres, des chiffres et les caractères _ et &

(espaces non autorisés !),

un nom de fonction est sensible à la casse (différenciation entre les minuscules et majuscules),

Les arguments sont facultatifs, mais s'il n'y a pas d'arguments, les parenthèses doivent rester présentes,

Il ne faut pas oublier de refermer les accolades,

Le nombre d'accolades ouvertes (fonction, boucles et autres structures) doit être égal au

nombre d'accolades fermées ! La même chose s'applique pour les parenthèses, les crochets

ou les guillemets !

(2)

04/04/2014

2

7

Fonction interne au fichier

On écrit le code ci-dessous dans un fichier « somme.php ».

<?php

function somme($nb1, $nb2){

return ($nb1+$nb2);

}

echo "<h2>Calcul et affichage d’une somme</h2>";

$a=3;

$b=4;

echo somme($a,$b);

?>

8

Fonction dans un fichier externe

On écrit le code ci-dessous dans un fichier « somme.php ».

<?php

include("mesFonctions.php");

echo "<h2>Calcul et affichage d’une somme</h2>";

$a=3;

$b=4;

echo somme($a,$b);

?>

On écrit le code ci-dessous dans un fichier « mesFonctions.php ».

<?php

function somme($nb1, $nb2){

return ($nb1+$nb2);

}

?>

9

Renvoi d'une valeur par une fonction

La fonction peut renvoyer une valeur (et donc se terminer) grâce au mot- clé return . Lorsque l'instruction return est rencontrée, la fonction évalue la valeur qui la suit, puis la renvoie au programme appelant (programme à partir duquel la fonction a été appelée).

Une fonction peut contenir plusieurs instructions return , ce sera toutefois la première instruction return rencontrée qui provoquera la fin de la fonction et le renvoi de la valeur qui la suit.

La syntaxe de l'instruction return est simple : return valeur_ou_variable;

Une fonction qui n’a pas de résultat (pas d’instruction return) est aussi appelée procédure.

10

Exemples de fonction et procédure

Exemple de procédure

function disBonjour($nom) { echo "Bonjour $nom" ; }

Exemple de fonction (factorielle) function fact($n) {

$resultat=1;

for($i=1;$i<=$j;$i++){

$resultat=$resultat*$i;

}

return $resultat;

}

11

Appel d’une fonction

La fonction ne s'exécutera pas tant que l'on ne fait pas appel à elle quelque part dans la page !

Pour exécuter une fonction, on fait appel à elle en écrivant son nom (en respectant la casse) suivie d'une parenthèse ouverte, éventuellement des arguments, puis d'une parenthèse fermée :

Nom_De_La_Fonction();

Si vous avez défini des arguments dans la déclaration de la fonction, il faudra veiller à les inclure lors de l'appel de la fonction (même nombre d'arguments séparés par des virgules !)

Exemple: Appels des fonction : disBonjour("Monsieur");

$a=7;

$result = fact(3);

echo '<br/>La factorielle de $a vaut '.fact($a);

12

Les arguments d’une fonction

Le passage d'arguments à une fonction se fait au moyen d'une liste d'arguments (séparés par des virgules) entre parenthèses suivant immédiatement le nom de la fonction. Les arguments peuvent être de simples variables, mais aussi des tableaux ou des objets.

Il est possible de donner une valeur par défaut à ces arguments en faisant suivre le nom de la variable par le signe "=" puis la valeur que l'on affecte par défaut à la variable.

function dire_texte($qui, $texte = 'Bonjour')

Pour utiliser un argument dans le corps de la fonction en tant que variable, il doit

être précédé par le signe $.

(3)

04/04/2014

3

13

Les arguments d’une fonction: exemple

<?php

function dire_texte($qui, $texte = 'Bonjour'){

if(empty($qui)){ // $qui est vide, on retourne faux return false;

} else{

echo "$texte $qui"; // on affiche le texte return true; // fonction exécutée avec succès }

}

?>

Ainsi cette fonction peut être appelée de deux façons différentes :

<?php

// Passage des deux paramètres

dire_texte("cher phpeur", "Bienvenue"); // affiche "Bienvenue cher phpeur"

// Utilisation de la valeur par défaut du deuxième paramètre dire_texte("cher phpeur"); // affiche "Bonjour cher phpeur"

?>

14

Travailler sur des variables dans les fonctions

Lorsque vous manipulez des variables dans des fonctions, on constate que, même en modifiant la variable dans la fonction, la variable retrouve sa valeur d'origine dès que l'on sort de la fonction…

Cela est dû à la portée des variables, c'est-à-dire si elles ont été définies comme variables globales ou locales.

Il existe plusieurs niveaux de définition de variables.

Une variable précédée du mot clé global sera visible dans l'ensemble du code, c'est-à-dire que sa portée ne sera pas limitée à la fonction seulement. Ainsi, toutes les fonctions pourront utiliser et modifier cette même variable.

Le niveau static permet de définir une variable locale qui persiste durant tout le temps d'exécution du script.

Par défaut, la variable possède le niveau local, c'est-à-dire que la variable ne sera modifiée qu'à l'intérieur de la fonction et retrouvera la valeur qu'elle avait juste avant l'appel de fonction à la sortie de celle-ci

Sauf en cas de besoin particulier, utilisez des variables locales !

15

Travailler sur des variables dans les fonctions

<?php

$chaine = "Nombre de camions ";

function ajoute_camion($mode=''){

$nb=0;

$nb++; // on incrémente le nombre de camions if($mode = = "affiche"){

echo '<br/>'.$chaine.$nb; // on affiche le nombre de camions }

}

ajoute_camion(); // nb = ? ajoute_camion(); // nb = ? ajoute_camion(); // nb = ? ajoute_camion("affiche"); // affiche ? echo '<br/>$nb vaut'.$nb; // affiche $nb vaut ?

?>

Trouver ce que fait ce programme et ce qui est affiché !

16

Travailler sur des variables dans les fonctions

<?php

$chaine = "Nombre de camions ";

function ajoute_camion($mode=''){

$nb=0;

$nb++; // on incrémente le nombre de camions if($mode == "affiche"){

echo '<br/>'.$chaine.$nb; // on affiche le nombre de camions }

}

ajoute_camion(); // nb = 1 dans la fonction (inconnu ailleurs) ajoute_camion(); // nb = 1 dans la fonction (inconnu ailleurs) ajoute_camion(); // nb = 1 dans la fonction (inconnu ailleurs) ajoute_camion("affiche"); // affiche 1

echo '<br/>$nb vaut'.$nb; // affiche « $nb vaut »

?>

17

Travailler sur des variables dans les fonctions

<?php

$chaine = "Nombre de camions ";

function ajoute_camion($mode=''){

global $chaine;

$chaine="Nb de camions ";

static $nb=0; // déclaration d’une variable static

$nb++; // on incrémente le nombre de camions if($mode == "affiche"){

echo $chaine.$nb; // on affiche le nombre de camions }

}

ajoute_camion(); // nb = ? ajoute_camion(); // nb = ? ajoute_camion(); // nb = ? ajoute_camion("affiche"); // affiche ? echo "<br/>$chaine vaut ".$nb; // affiche ?

?>

18

Travailler sur des variables dans les fonctions

<?php

$chaine = "Nombre de camions ";

function ajoute_camion($mode=''){

global $chaine;

$chaine="Nb de camions ";

static $nb=0; // déclaration d’une variable static

$nb++; // on incrémente le nombre de camions if($mode == "affiche"){

echo $chaine.$nb; // on affiche le nombre de camions }

}

ajoute_camion(); // nb = 1 ajoute_camion(); // nb = 2 ajoute_camion(); // nb = 3

ajoute_camion("affiche"); // affiche « Nb de camions 4 » echo '$nb vaut'.$nb; // affiche « $nb vaut »

?>

(4)

04/04/2014

4

19

Passage de paramètre par référence

Une autre méthode pour modifier une variable consiste à la faire précéder du caractère &, précisant qu'il s'agit alors d'un alias : la valeur de la variable est modifiée à la sortie de la fonction. On parle alors de passage par référence.

Dans ce cas on passe la référence (adresse mémoire) de la variable à la fonction, ce qui permet de modifier sa valeur.

<?php

function dire_texte($qui, &$texte){

$texte = "Bienvenue $qui";

}

$chaine = "Bonjour ";

dire_texte("cher phpeur",$chaine);

echo $chaine; // affiche "Bienvenue cher phpeur"

?>

20

Retourner plusieurs variables

Lorsque vous souhaitez qu'une fonction retourne plusieurs valeurs, le plus simple est d'utiliser un tableau.

<?php

function nom_fonction(){...

return array( $variable1, $variable2, $variable3 );

// on retourne les valeurs voulues dans un tableau }

$retour = nom_fonction();

echo "$retour[0] - $retour[1] - $retour[2]";

?>

21

La récursivité

Les fonctions récursives sont des fonctions qui s'appellent elles-mêmes.

Voici un exemple.

<?php

function fonction_recursive($n=0){

$n++;

echo "$n <br />";

if($n < 10){ // si n est inférieur à 10 on continue fonction_recursive($n);

} }

fonction_recursive(); // affiche les nb de 1 à 10

?>

22

Non abordé pour le moment…

Les fonctions anonymes

Les fonctions variables

Références

Documents relatifs

[r]

Ce théorème est d'ailleurs bien connu, mais nous allons montrer qu'on peut le faire apparaître comme une conséquence presque immédiate d'une pro- position d'Ascoli relative

- un texte rouge de taille 20pt centré en titre - une image centrée. a) Ecrire un programme PHP qui, à la soumission du formulaire, affiche une page avec une image de

Exercice/Exemple : lecture graphique des équations des deux asymptotes, coordonnées du centre de symétrie Conseil et méthode : tracer les asymptotes si elles ne sont pas

Les solutions éventuelles de cette équation sont les abscisses des points d’intersubsection de ces deux courbes. Puisqu’il s’agit d’une lecture graphique, les valeurs trouvées

# f est une chaîne de caractères qui sera évaluée en fonction de la valeur de x fenimagefonction= Tk()#fenetre principale. fenimagefonction.title('Image par

trouve sur une droite, la direction du déplacement est constante, mais la norme de la vitesse varie au cours du temps (augment ou diminue). L’accélération (ou la

Ensemble de définition d’une