Les structures de contrôle - partie 2
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/>"; ?> ;
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