Les structures de contrôle - partie 2

Écrit par Jean-Michel CHRISOSTOME. Publié dans Blog

Une fonction c'est quoi?

Les fonctions sont des conteneurs logique de code. Il s'agit d'une structure de contrôle dont vous pouvez définir le contenu et les conditions et qui peut retourner (en fonction du langage et de vos souhaits) une valeur, un tableau, des objets, un booléen ou seulement exécuter une action sans rien retourner.

Les fonctions sont faites pour ne pas avoir à réécrire les même portions de code pour traiter les 250 000 cas de figure de votre base client. Un ensemble d'instructions peut ainsi être écrit une seule fois et réutilisé des millions de fois pour traiter par exemple les données d'un tableau ce qui fait gagner un temps précieux pour le développeur et des milliers de ligne de code.

Les fonctions sont très simples à définir et à utiliser, voici un petit schéma logique

// Définition
FONCTION nom_fonction(paramètre_1, paramètre_2, paramètre_x) {
	// Instructions à exécuter et éventuellement valeur à retourner
}

// Utilisation
RESULTAT_1=nom_fonction(val1, val2, valx) ;
RESULTAT_2=nom_fonction(val12, val22, valx2) ;
RESULTAT_Y=nom_fonction(val1y, val2y, valxy) ;

Voici comment définir et utiliser une fonction en C

 
#define <stdio.h>
#define <stdlib.h>
 
/* En C les paramètres d'une fonction se définissent avec leur type comme les variables */
int voyelles(char *mot) {
  int res=0 ;
  int pos=0 ;
 
  /* Tant que la fin de la chaînes de caractères n'a pas été atteinte */
  while (mot[pos]!='\0') {
    // On parcoure chaque lettre du mot et à chaque voyelle on ajoute 1 à la valeur de res
    if (mot[pos]=='a' || mot[pos]=='e' || mot[pos]=='i' || mot[pos]=='o' || mot[pos]=='u' || mot[pos]=='y') {
      res++ ;
    }
    pos++;
  }
  // Retourne la valeur de res à la fonction appelante
  return res;
}
 
int main(void) {
  printf("azerty contient %d voyelle(s)\n", voyelles("azerty")) ;
   /* Affiche : azerty contient 3 voyelle(s) */
  printf("pierre contient%d voyelle(s)\n", voyelles("pierre")) ;
   /* Affiche : pierre contient 3 voyelle(s) */
  printf("toto contient%d voyelle(s)\n", voyelles("toto")) ;
   /* Affiche : toto contient 2 voyelle(s) */
 
  return EXIT_SUCCESS ;
}
 

en Javascript

 
// Définition de la fonction
// Retourne le chiffre entré en toutes lettres de 0 à 10 ;-)
function enToutesLettres(nombre) {
  // On teste la valeur du paramètre pour voir si il est dans la plage fixée
  if (nombre > 10 || nombre < 0) { return "Traite seulement les chiffres de 0 à 10 !" ; }
  if (nombre==0) { return "zéro" ; }
  if (nombre==1) { return "un" ; }
  if (nombre==2) { return "deux" ; }
  if (nombre==3) { return "trois" ; }
  if (nombre==4) { return "quatre" ; }
  if (nombre==5) { return "cinq" ; }
  if (nombre==6) { return "six" ; }
  if (nombre==7) { return "sept" ; }
  if (nombre==8) { return "huit" ; }
  if (nombre==9) { return "neuf" ; }
  if (nombre==10) { return "dix" ; }
  // On ne devrait jamais arriver ici
  return   "Il y a un problème !" ;
}
 
// Utilisation de la fonction
console.log(enToutesLettres(3)) ; // Affichera trois
console.log(enToutesLettres(6)) ; // Affichera six
console.log(enToutesLettres(9)) ; // Affichera neuf
 

En PHP

 
<?PHP
// Définition de la fonction
// Crée retourne une histoire avec les noms passés en paramètres
function histoire($nomPrince, $superPouvoir, $nomPrincesse, $nomSorciere) {
  $prepa='Il était une fois il y a bien longtemps, une princesse nommée '.$nomPrincesse.' fut enlevée par '.
  'la sorcière '.$nomSociere.'. Mais heureusement, arriva le prince '.$nomPrince.' qui grâce à '.
  'son super pouvoir, '.$superPouvoir.', terrassa la princesse '.$nomPrincesse.' et épousa la sorcière '.
  $nomSorciere.'. Oups !!!' ;
 
  return $prepa ;
}
 
echo "Voici ce qui arrive quand on veut aller trop vite et qu'on ne fait pas attention:<br/>".
  histoire('Kevin', 'la sieste', 'Cent-Vingt Drillons', 'Bien-Aimée')."<br/>";
 
?&gt ;
 

Le code ci-dessus affichera (et l'histoire changera à chaque fois qu'un paramètre sera modifié) :

Voici ce qui arrive quand on veut aller trop vite et qu'on ne fait pas attention:
Il était une fois il y a bien longtemps, une princesse nommée Cent-Vingt Drillons fut enlevée par la sorcière Bien-Aimée. Mais heureusement arriva le prince Kevin qui grâce à son super pouvoir, la sieste, terrassa la princesse Cent-Vingt Drillons, et épousa la sorcière Bien-Aimée. Oups !!!

Ca n'a aucun sens bien entendu, c'était seulement pour l'exemple...

Et enfin en Perl

 
#!/usr/bin/perl
 
use strict;
 
sub concatenation {
        my ($motA, $motB, $lien)=@_;
        my $resu;
 
        $resu = $motA.$lien.$motB;
 
        return $resu;
}
# Appel de la fonction
print "Résultat: ".concatenation("Jean", "Pierre", "-")."\n";
 

Le code ci-dessus affichera :

Résultat: Jean-Pierre