Premiers pas en JavaScript
9.1 Fonctions à instruction 'return'
cuy copyleft
  See You Why?  

 


test sur les fonction à paramètres multiples (8.9) | | exercices sur les fonctions avec 'return' (9.8)

Contenu

 

 

I. Fonction avec return

Nous venons de voir les fonctions sans paramètres et celles avec paramètres (unique ou multiples). Jusqu'ici, toutes les fonctions étudiées engendraient une action : le plus souvent écrire sur la page en cours ou envoyer une fenêtre pop-up avec un message.

Cependant, il est fréquent que l'on fasse appel à une fonction pour qu'elle nous retourne une valeur et seule la suite du programme dira ce qu'il faut faire de cette valeur retournée. En effet, les fonctions définissent souvent un processus qui reçoit des entrées et les utilise pour calculer une valeur à sortir. Ces fonctions utilisent généralement leurs arguments pour calculer une valeur qui deviendra le résultat de l'appel de fonction.
Return est le mot-clé de JS qui renvoie (ou retourne) une valeur lorsque la fonction est appelée.

Dans ce cas, la fonction ne pose aucun acte, elle ne fait qu'exécuter des instructions (de calcul, par exemple) et retourne une valeur à la ligne qui l'a appelée.

Dans les fonctions préétablies de JS, il en existe déjà de ce type... lorsque vous appelez la méthode replace() qui nécessite deux arguments (ou paramètres) indispensables, à savoir l'expression régulière de la chaine à remplacer et la chaine de remplacement, par laquelle il faut remplacer : chaine.replace(regExp, chaineDeRemplacement ), vous obtenez une nouvelle chaine de caractères, mais rien ne se passe avec cette chaine... c'est le contexte de votre programme qui dira s'il faut la retenir, la placer dans un fichier, l'afficher dans votre document HTML courant ou l'afficher dans une fenêtre pop-up.

Un exemple, si vous voulez trier une liste de patronymes (noms de famille), vous pourriez créer une fonction qui supprime les éventuels espaces d'un nom... en vue de pouvoir faire un tri par ordre alphabétique. L'usage que vous voudrez en faire n'est pas nécessairement un affichage à l'écran.

Avec le mot réservé return, la fonction en cours est capable de renvoyer une valeur au programme appelant (ou à une autre fonction appelante). Cette valeur est contenue dans une donnée en tout point comparable à une variable.

Le plus simple est d'illustrer notre propos par un exemple : il est fréquent qu'en math on doive utiliser le carré d'un nombre (c'est-à-dire le nombre fois le nombre)... pensons au théorème de Pythagore, à l'ajustement linéaire des moindres carrés et j'en passe...

On pourrait donc créer une fonction (la déclarer) ayant comme nom 'carre', ce qui donnerait :
function carre(x) {
       return (x*x);
}

Ainsi, à chaque appel, carre(5) prendrait la valeur 25, carre(4) la valeur 16, carre(2,5) la valeur 6,25 sauf qu'en JS on ne fait pas usage d'une virgule décimale, mais d'un point décimal, donc carre(2.5)=6.25, etc.
Lorsque dans une fonction, l'instruction return est rencontrée, l'expression qui suit ce return est évaluée et renvoyée au programme appelant et l'exécution de la fonction s'arrête, même si ce n'est pas la dernière ligne de la fonction... prudence donc. S'il y a plusieurs return dans le code, c'est le premier return rencontré qui mettra fin à l'exécution de la fonction.

Comme nous l'avons fait pour les fonctions à paramètre unique, nous devrons donc distinguer l'usage des paramètres dans la déclaration (définition) de la fonction et leur usage dans l'appel de la fonction.

Le but de ce chapitre est donc de créer des fonctions avec un ou plusieurs paramètres qui contiennent l'instruction return et de les appeler.

On parlait
d'une part de la définition de la fonction (ensemble d'instructions effectuées à créer) et
d'autre part d'un appel de la fonction.

Ces deux notions ont été abordées dans cette page.

 

A. un autre exemple sans paramètre

Comme déjà signalé plus haut, la fonction appelée ne doit pas nécessairement contenir de paramètres. On pourrait facilement imaginer une fonction bravo() qui envoie un message de félicitations en cas de réponse correcte ou mieux, dans quelques leçons, une fonction qui génère un message de félicitations aléatoire, ce qui éviterait l'éternelle apparition du même message en cas de réponse correcte.

Cette première fonction bravo() pourrait se définir (se déclarer) ainsi :

function bravo() {
        felic = "Félicitations ! Ta réponse est correcte, continue ainsi";
        return felic;
}

et l'appel de cette fonction va générer un message de félicitations, que le programme décidera d'afficher simplement à l'écran, éventuellement dans une fenêtre pop-up, voire en couleurs (cf. les manipulations de chaines).

Évidemment, si vous souhaitez avoir un message aléatoire, il vous faut encore un peu de patience (voir fonction aléatoire).

 

B. un exemple de fonction à plusieurs paramètres

Vous vous intéressez à la vente via le Net... JS n'est peut-être pas le logiciel le plus sûr à utiliser, PHP nous semble plus correct pour cet usage. Cependant, la réflexion concernant la programmation est la même... si le PHP vous intéresse, vous pourriez y revenir.

Il nous paraît évident qu'une fonction ajouterArticle() soit nécessaire à tout programme de vente sur Internet. Ce que le logiciel en fera, c'est le reste du programme qui le fixera : vérifier si le produit fait déjà partie de la commande, ajouter le ou les produits à la commande, calculer les montants hors TVA et TVA incluse, recalculer le poids de la commande (pour pouvoir calculer les frais de port), etc.

Cette fonction aura aussi besoin de paramètres pour faire son calcul : la référence ou libellé de l'article, la quantité commandée pour cet article, le prix unitaire hors TVA, le poids d'une unité commandée, une éventuelle commission supplémentaire ou une réduction sur cet article et évidemment le taux de TVA sur cet article. Cela pourrait donner naissance à une fonction de ce type :

function ajouterArticle(libelleProduit,qteProduit,prixProduit,poidsProduit,commissProduit,tvaProduit)

Et, si vous ne vous êtes pas endormi à la lecture de ses premiers pas en JS, vous pourriez contester que cette fonction ne puisse pas retourner une seule valeur unique au programme appelant... et vous avez raison. Il existe cependant un objet facilement manipulable en JS, à savoir les tableaux. Un seul tableau peut contenir diverses valeurs... ce sera l'objet de notre chapitre 26 "les tableaux" et suivants.

 

Exemple

<html>
<head><title>montant à facturer</title></head>
<body>
<script type="text/javascript">

function a_facturer(p_catal,reduc) {
     alert("Le prix catalogue hors TVA :" + p_catal +
        "\nLe prix HTVA réduction déduite est " + (p_catal - reduc/100*p_catal) +
        "\nLe prix à payer TVA comprise est " + 1.21 * ((p_catal - reduc/100*p_catal)));
        // d'autres instructions pourraient être notées ici
}


a_facturer(300,20);
a_facturer(800,25);
a_facturer(27.45,4);

 
</script>
</body>
</html>


Toujours attentif ? J'en doute, car vous nous auriez déjà écrit un mail pour nous annoncer que l'illustration ci-dessus n'est pas un exemple de fonction avec return.

 

C. un exemple de fonction à un seul paramètre

Vous vous intéressez toujours à la vente via le Net... Je suis certain que vous serez sensible à l'orthographe et vous suggère ici une fonction qui marque le pluriel des noms si nécessaire. Limitons-nous pour l'instant à la règle générale, à savoir un 's' pour marquer le pluriel.

Ne soyez pas effrayés par ce IF... ELSE... qui introduit une condition, nous y reviendrons au chapitre 15. En attendant, considérez que c'est un SI... SINON...

<script type="text/javascript">
function fPluriel(nbr) {
    if nbr<2 {
        return "";
    } else {
        return "s";
    }
}
</script>
 

On imaginera bien que le programme puisse compter le nombre d'articles achetés, ainsi que le nombre de rubriques concernées (pêche, chasse, nourriture animaux...). Le script devrait donc se poursuivre par un calcul de ces renseignements, mais ici nous envisagerons que les renseignements sont donnés :

var nbrArticles = 8;
var nbrRubriques = 1;
//var nbrArticles = fCalculerNbrArticles();
//var nbrRubriques = fCalculerNbrRubriques();
//trop tôt que pour développer ces fonctions
 

Il ne reste plus qu'à utiliser ces fonctions dans le script, par exemple pour afficher un petit message

document.write("Votre commande compte ",nbrArticles," article",fPluriel(nbrArticles));
document.write(" choisis dans ",nbrRubriques," rubrique",fPluriel(nbrRubriques));
 

Vous voilà prêt pour la suite du cours... vous venez de découvrir comment créer et appeler une fonction à paramètres multiples ou unique, avec instruction RETURN ou sans. Au niveau des fonctions, il ne vous reste pour l'instant qu'à découvrir les fonctions qui s'imbriquent l'une dans l'autre.

 

 

VIII. Exercices sur les fonctions à valeur retournée

voir suite >>>

 

 

IX. Test relatif aux fonctions à valeur retournée

voir suite >>>

 


test sur les fonction à paramètres multiples (8.9) | | exercices sur les fonctions avec 'return' (9.8)

 

 

Merci de votre visite à partir de :

Vous êtes sur :
https://cuy.be/cours/jvs/jvs_090_fonction_return.html

partager sur FaceBook...           consulter sur FaceBook...

 

copyleft
Des liens ne fonctionnent plus ?
Avez-vous des suggestions ?
des commentaires, des corrections, un encouragement... ?
Pour info : Non, il n'y a pas de version papier ou DOC, PDF, etc. de ces notes.


Envoyez-moi un E-Mail (cuy(point)w(at)skynet(point)be)

Attention (at) signifie @ et (point) signifie .

Accueil CUY = See you why?

Compteur gratuitEasyCounter     BelStat Monitored by BelStat - Your Site Counts
La 1 000 000e page a été visitée le 21 mai 2010.
La 2 000 000e page a été visitée ce 18 mars 2012, vers midi.
La 3 000 000e page a été visitée ce 7 janvier 2014 entre 18 h et 18 h 45,
La 4 000 000e page a été visitée ce 5 juin 2015 entre 15 h 49 et 15 h 52,
La 5 000 000e page a été visitée ce 29 aout 2017 après 23 h 30,
Et la 6 000 000e page visitée, trop tôt pour y penser ?
 
et, d'après BelStat, CUY est visité surtout en semaine, peu le weekend...
moins et irrégulièrement pendant les vacances :

visites sur 3 mois, de la mi octobre 2013 à la mi janvier 2014.
 
La 3 333 333e page visitée a eu lieu ce mardi 10 juin 2014, en début d'après midi...
La 3 666 666e page visitée a eu lieu ce dimanche 28 decembre 2014, vers 16 h...
Un tiers de million de pages visitées en 154 jours cela fait une moyenne de 2165 pages visitées par jour...
Deux tiers de million de pages visitées en 355 jours soit une moyenne de 1878 pages visitées par jour...
et seulement 1195 pages visitées quotidiennement pendant les vacances estivales
de la mi juin à la mi septembre 2014

Vous voulez lire quelques messages reçus ?
quelques encouragements ?
Cliquez ici


Fin septembre 2009, installation de ce compteur
qui ne compte chaque nouvel ordinateur visiteur qu'une seule fois
free counter
 
m-à-j du 22/11/2021 :

Depuis cette fin septembre 2009, parmi les 210 pays (sur 274 drapeaux connus) qui nous ont visité,
voici les 100 pays qui nous visitent le plus, 
Nos petits visiteurs, classés par date de visite, où un seul ordi nous a visité, sont :
199. Turkmenistan (TM May 10, 2017) ; 200. Lesotho (LS March 1, 2017) ;
201. Turks and Caicos Island (TC January 18, 2016
202. Cook Islands (CK September 19, 2015)  203. Faroe Islands (FO January 27, 2015
204. Virgin Islands American (VI November 12, 2014) ;
205. Belize (BZ September 29, 2014) ;206. Eswatini - Swaziland (SZ July 21, 2014) ;
207. Grenada (GD April 3, 2014) ; 208. Timor-Leste (TI March 29, 2014) ;
209. American Samoa (AS December 26, 2012) ; 210. Guyana (GY November 5, 2010).