Principes de programmation

Fonction

2526 · Dekens Antoine

Les fonctions

Définition

Une fonction permet de réaliser plusieurs le même bout de code, avec un retour de valeur ou non. Cela permet une abstraction procédurale.

Syntaxe

Le mot clé function est utilisé pour définir une nouvelle fonction suivi par un nom qui est arbitraire, c'est nous qui le choisissons. Le nom est suivi d'une ouverture/fermeture de parenthèses et d'une ouverture/fermeture d'accolades'.

<?php
  // Définition de la fonction 'multiplication'
  function multiplication() {}
?>

Appel de fonction

Définir une fonction n'est que la première étape, il faut ensuite l'appeler. Pour se faire il suffit de noter le nom de la fonction suivit d'une ouverture/fermeture de parenthèses :

<?php
  function multiplication() {};

  // On appele la fonction "multiplication"
  multiplication();
?>

Logique

Pour le moment notre fonction ne fait absolument rien, ajoutons une opération à afficher dans un écho :

<?php
  function multiplication() {
    // On demande d'afficher le résulat de la multiplication de 10 * 2
    echo 10 * 2;
  };

  // On appele la fonction "multiplication"
  // Affiche 20
  multiplication();
?>

Usage

L'avantage de définir une fonction, c'est que nous pouvons l'appeler autant de fois que nécessaire et ce peut importe où dans notre code.

On évitera cependant de les définir en bas de notre code, le but d'une fonction est de conceptualiser une logique qui nous sera utile d'utiliser plusieurs fois.

<?php
  function multiplication() {
    echo 10 * 2;
  };

  // On appele 4 fois la fonction "multiplication"
  // Affiche 20
  multiplication();
  // Affiche 20
  multiplication();
  // Affiche 20
  multiplication();
  // Affiche 20
  multiplication();
?>

Paramètres

Notre fonction n'est pas très utile pour le moment, elle retourne toujours la même multiplication. Ce serait plus utile si nous pouvions lui dire quoi multiplier sans devoir réécrire plusieurs fois la même logique.

Heureusement nous pouvons définir un ou plusieurs paramètres séparés par des virgules entre les parenthèses. Ces derniers nous permettront de dynamiser notre fonction :

<?php
  // La fonction attend que nous lui passions 2 paramètres
  // $a et $b à l'appel de façon à ce qu'elle puisse les utiliser
  // dans notre éxécution de fonction. 
  function multiplication( $a, $b ) {
  
    // Multiplie les paramètres et les affiche avec un "echo"
    echo $a * $b;
  };
?>
<?php
  function multiplication( $a, $b ) {
    echo $a * $b;
  };

  // Nous devons passer les 2 paramètres
  // pour que la fonction puisse être éxécutée.

  multiplication( 10, 2 ); // Affiche 20
  multiplication( 3, 15 ); // Affiche 45
  multiplication( 4, 0 );  // Affiche 0
?>

Valeur de retour

Une valeur peut être retourner par une fonction via le mot clé return. Une fois appelé, l'éxécution se termine et le script revient à la ligne appelante de la fonction.

Aucun code situé à l'intérieur d'une fonction et juste en dessous d'un return ne sera éxécuté.
<?php
  function multiplication( $a, $b ) {
    // Notre fonction n'affiche plus le résultat
    // de la multiplication mais retourne sa valeur et
    // met fin à la fonction.
    return $a * $b;
  };

  // On enregistre la valeur retournée par la fonction
  // dans une variable.
  $result = multiplication( 10, 3 );

  // On peut ensuite l'affichée
  echo $result;

  // Ou continuer de l'utiliser dans votre script.
  // Ici on utilise la valeur qu'on a calculée (30)
  // pour refaire une multiplication 30 * 10 = 300
  echo multiplication( $result, 10 );
?>

Portée de variable

Une fonction à son propre contexte, rien à l'extérieur de la fonction n'est accessible à l'intérieur de ses accolades par défaut :

Il existe cependant une technique pour rendre une variable extérieur accessible, via le mot clé global.
<?php
  $a = 10;

  function test() { 
    echo $a;
  };

  // Retourne une alerte disant que $a
  // n'est pas définie 
  test();
?>
<?php
  $a = 10;

  function test() { 
    $a = "Je ne suis pas la même variable";
    echo $a;
  };

  // Affiche la valeur de $a à l'intérieur de notre fonction
  test();
?>

Exercices

Exercice A

Écrire une fonction nommée pow qui va calculer le carré d'un nombre passé en paramètre $a. Il faut que vous puissiez l'appelé avec 5 et que cela affiche 25 :

<?php
  $powResult = pow( 5 );

  echo $powResult; // Affiche 25
?>

Exercice B

En utilisant la fonction de multiplication que nous avons vue plus tôt, faire en sorte de pouvoir changer la puissance du paramètre $a via un nouveau paramètre $b. Voici deux scénarios à résoudre :

Il faut utiliser une boucle dans la fonction pow
<?php
  // pow doit retouner la valeur de 5 exposant 3 (le cube)
  $powResultA = pow( 5, 3 );

  // pow doit retourner la valeur de 2 exposant 4
  $powResultB = pow( 2, 4 );

  echo $powResultA; // Affiche 125
  echo $powResultB; // Affiche 16
?>

1/2

1/1