Exercice 5/11

Dans le fichier "script.js" :

  • déclarez la fonction calcul avec deux arguments numerateur et denominateur;
  • la fonction doit diviser numerateur par denominateur et retourner le resultat;

  • cliquez sur "Soumettre ma réponse".

Leçon 5/11

Une fonction peut prendre des arguments en entrée mais une fonction sert aussi à renvoyer un résultat (une valeur) en retour.

Cela peut servir si on a besoin de récupérer une valeur qui doit être utilisée dans le reste du script. Pour renvoyer un résultat, une fonction utilise le mot-clé return.

Comme une fonction est comme une "boîte noire" et qu'on ne peut pas accéder à ses variables locales. Le fait de pouvoir renvoyer une valeur qui peut être utilisée dans le reste du script est bien pratique.

Exemple :

// on déclare la fonction
function maFonction (texte) {
    if (typeof texte == 'string')
    {
        return texte;
    }
    else
    {
        return false;
    }
}
// on exécute la fonction
var recup = maFonction("Jean");

Ici, la fonction demande un argument :

  • si l'argument donné est bien du texte alors la fonction retournera "Jean";
  • si ce n'est pas du texte la fonction retourne false;
  • selon le cas, la variable globale recup contient soit false soit "Jean".

Attention :

Dès que la fonction rencontre le mot-clé return elle s'interrompt et retourne la valeur. Si il y a du code après il ne sera pas exécuté.

Commentaires les mieux notés

  • mram Administrateur

    Essayez sans les parenthèses ligne 4.

  • mram Administrateur

    Ligne 6, vous affectez ce que retourne la fonction à la variable "recup". Donc dans la fonction ligne 4 il suffit juste de faire "return = ..."

  • mram Administrateur

    Oui on a déclaré num1 et num2 pour les besoins de l'exercice, mais c'est transparent pour l'utilisateur. Ensuite, lignes 2 et 3, vous pouvez simplifier en faisant un "return" de la division directement. Et ligne 5, pas d'espace après "calcul".

  • mram Administrateur

    Ici même souci que sur l'exercice avec "texte" et "position". Les variables "num1" et "num2" son a utiliser au moment de l'exécution de la fonction ligne 6 (ce que vous avez fait), et non à l'intérieur de la fonction (ligne 4) ce que vous avez fait aussi ...

56 Commentaires

  • mram

    mram Administrateur

    Essayez sans les parenthèses ligne 4.

    le 16/10/2016 à 23h48

  • mram

    mram Administrateur

    Ligne 6, vous affectez ce que retourne la fonction à la variable "recup". Donc dans la fonction ligne 4 il suffit juste de faire "return = ..."

    le 16/11/2016 à 19h37

  • mram

    mram Administrateur

    Oui on a déclaré num1 et num2 pour les besoins de l'exercice, mais c'est transparent pour l'utilisateur. Ensuite, lignes 2 et 3, vous pouvez simplifier en faisant un "return" de la division directement. Et ligne 5, pas d'espace après "calcul".

    le 28/03/2017 à 01h11

  • mram

    mram Administrateur

    Ici même souci que sur l'exercice avec "texte" et "position". Les variables "num1" et "num2" son a utiliser au moment de l'exécution de la fonction ligne 6 (ce que vous avez fait), et non à l'intérieur de la fonction (ligne 4) ce que vous avez fait aussi ...

    le 19/10/2016 à 11h06

  • mathieu.finocchiaro

    mathieu.finocchiaro

    var recup; function calcul(numerateur,denominateur) { recup = numerateur / denominateur; return recup; } calcul(num1,num2); alert(recup); AVEZ VOUS BIEN DIVISE ETC ou est l'erreur

    le 16/12/2016 à 14h37

  • jenebakone

    jenebakone

    c'est bon j'ai enfin trouvé mon erreur.

    le 29/10/2016 à 22h41

  • mram

    mram Administrateur

    Et oui, quand vous construisez la fonction (lignes 2 à 5) il faut utiliser les mêmes noms d'arguments, qui seront remplacés par de vraies valeurs au moment de l'exécution ligne 6.

    le 31/10/2016 à 18h29

  • mram

    mram Administrateur

    J'ai dit on met "return" devant ce qu'on veut retourner, pas avant, nuance.

    le 30/08/2016 à 20h25

  • mram

    mram Administrateur

    Votre code lignes 4 et 5 doit tenir sur une seule ligne : il faut juste faire un "return" de la division. La fonction retournera automatiquement le résultat. Et c'est ligne 7 qu'il faut attribuer la fonction à la variable "recup".

    le 18/12/2016 à 18h37

  • veronicalavroff

    veronicalavroff

    "Avez-vous bien divisé les deux arguments dans la fonction?"

    le 11/08/2016 à 02h12

  • mram

    mram Administrateur

    Essayez en mettant le contenu des lignes 3 et 4 sur une seule ligne.

    le 16/08/2016 à 11h01

  • fumey.claire

    fumey.claire

    pouvez vous me dire ou est le problème s'il vous plait ? merci .

    le 21/12/2016 à 08h17

  • ea_kouassi

    ea_kouassi

    /* var recup; function calcul (numerateur , denominateur) { recup = (numerateur / denominateur); return recup; } calcul(20,2); alert(recup); */ Ce code marche sans problème mais le message d'erreur affiche toujours! (AVEZ-VOUS BIEN DIVISÉ LES 2 ARGUMENTS DANS LA FONCTION)

    le 03/11/2016 à 15h35

  • mram

    mram Administrateur

    Dans votre fonction (entre les accolades), il faut juste faire un "return" de la division, donc le code doit tenir en une seule ligne. C'est après avoir déclarer la fonction qu'on va l'exécuter en affectant à "result" ce que retourne la fonction, exemple : recup = calcul(10,2); alert(recup);

    le 22/12/2016 à 12h55

  • bsmeyers84

    bsmeyers84

    correction faite cela ne fonctionne tjs pas

    le 05/09/2016 à 15h56

  • mram

    mram Administrateur

    Il faut juste mettre le code lignes 3 et 4 sur une seule ligne. Et le code à partir de la ligne 11 est inutile.

    le 04/11/2016 à 20h43

  • <h1>Colombe</h1>

    <h1>Colombe</h1>

    var recup; function calcul(numerateur, denominateur) { if (denominateur == 0) { return "error" } return (numerateur / denominateur); } recup = calcul(12,14); alert(recup); je ne comprends pourquoi ild demande de bien diviser les variables alors que oui enfin je pense merci d'avance pour la réponse

    le 10/02/2017 à 17h34

  • ctt

    ctt

    Bonjour, Pouvez-vous me dire quelle est l'erreur dans mon code ? J'ai essayé pas mal de solutions basées sur vos indications mais je finis toujours par obtenir une erreur, surtout "Avez-vous bien divisé les 2 arguments dans la fonction ?". Merci d'avance

    le 22/12/2016 à 13h20

  • mram

    mram Administrateur

    Bonjour, c'est presque correct, il n'y a juste pas besoin de parenthèses ligne 2. Et ligne 4 pas besoin de mettre 0 à recup, juste la déclarer suffit.

    le 26/12/2016 à 10h47

  • Trov

    Trov

    Tout semble fonctionner quand je remplace num1 et num2 par des nombres pourtant j'ai toujours le message AVEZ-VOUS BIEN DIVISÉ LES 2 ARGUMENTS DANS LA FONCTION ?...J'ai dû oublié quelque chose mais quoi...?

    le 12/10/2016 à 15h24

  • maksika

    maksika

    function calcul (numérateur,denominateur) { recup = (numérateur/denominateur); return (recup); } calcul (num1,num2); alert (recup); peux tu me dire où se trouve le PB ?

    le 13/03/2017 à 13h56

  • mram

    mram Administrateur

    Il faudrait un espace autour du symbole division pour bien le distinguer.

    le 06/09/2016 à 17h16

  • mram

    mram Administrateur

    Le code lignes 4 à 7 est inutile. Et ligne 10 il faut utiliser les variables num1 et num2 et non vos propres nombres.

    le 14/02/2017 à 01h26

  • ludovicbonpoil

    ludovicbonpoil

    Pour une fois que mon code fonctionne dans l'exécution du javascript. Je ne peux pas le valider... Franchement : return numerateur/denominateur; Il n'y a pas plus simple mais il me sort toujours : Avez-vous bien divisé les 2 arguments dans la fonction ?

    le 03/12/2016 à 13h20

  • <h1>Colombe</h1>

    <h1>Colombe</h1>

    toujours pas

    le 15/02/2017 à 16h59

  • mram

    mram Administrateur

    Oui c'est la correction qui est un peu stricte au niveau de la syntaxe. Il faut un espace autour du signe de division " / ".

    le 06/12/2016 à 00h08

  • mram

    mram Administrateur

    Ligne 4, pas besoin de mettre de parenthèses, juste faire la division ça suffit.

    le 17/02/2017 à 14h08

  • cdezandee

    cdezandee

    Pathétique

    le 15/11/2016 à 10h57

  • mram

    mram Administrateur

    il ne faut pas déclarer la variable "recup" dans la fonction car elle est inaccessible en dehors de la fonction du coup le code ligne 6 ne fonctionne pas. Et à la place des lignes 2 et 3 faites juste un return de la division.

    le 17/03/2017 à 19h22

  • bretel.val

    bretel.val

    Je ne sais pas pourquoi ce message s'affiche, "Avez-vous bien divisé les 2 arguments dans la fonction ?", j'ai pourtant bien attribué des valeurs au numérateur et au dénominateur.

    le 12/06/2017 à 21h13

  • bsmeyers84

    bsmeyers84

    bonjour je viens de faire l'exercice en le faisant normalement et aussi en essayant la méthode que vous avez donné a VEROCALAVROFF et ça ne fonctionne pas non plus

    le 26/08/2016 à 16h58

  • mram

    mram Administrateur

    Votre ligne 3 est fausse, on met "return" devant ce qu'on souhaite retourner...

    le 26/08/2016 à 19h27

  • patricerameaux

    patricerameaux

    recup ne contient pas la valeur attendue : je ne vois pas comment affecter calcul à recup

    le 17/10/2016 à 14h46

  • mram

    mram Administrateur

    Ligne 5 vous affectez à recup une variable "calcul" et non la fonction ...

    le 18/10/2016 à 09h49

  • jenebakone

    jenebakone

    Bonjour voici les messages que je reçois:"Avez-vous bien divisé les 2 arguments dans la fonction?" lorsque je mets des espaces autour du symbole de division , j'ai alors le message suivant "récup ne contient pas la valeur attendue.Avez vous bien utilisé "return" puis exécuté la fonction?". Quelle est mon erreur?Merci

    le 29/10/2016 à 16h23

  • brett.anna

    brett.anna

    Bonjour Mram, Un petit coup de pouce svp. Pour info,si je remplace num1 et num2 par des nombres, mon script fonctionne. Je me posé la question suivante : Est ce que num1 et num2 sont déclarées ? function calcul (numerateur,denominateur){ var result = numerateur / denominateur; return result; } var recup = calcul (num1,num2); alert(recup);

    le 24/03/2017 à 12h05

  • patricerameaux

    patricerameaux

    là c'est peut-être bon

    le 19/10/2016 à 10h14

  • bsmeyers84

    bsmeyers84

    CELA NE FONCTIONNE TJS PAS

    le 30/08/2016 à 15h44

  • philgd28

    philgd28

    Bonjour, toujours des souci pour faire passer le code. Je pense que je suis bon la aussi, mais il me dit "avez vous bien les deux arguments dans la fonction" donc erreur. Y a t'il une erreur du coup ? Le code me semble correct.

    le 09/08/2017 à 17h12

  • mram

    mram Administrateur

    Bonjour, il fallait en effet ne mettre qu'une seule ligne dans la fonction pour directement retourner le résultat.

    le 16/08/2017 à 09h57

  • simon.fred

    simon.fred

    Bonjour, j'ai réussi mais avec beaucoup de mal. Je voulais seulement dire que la consigne est pas très clair. Après j'avoue que cette partie de javascript est mon point faible mais je pense que ce serait peut être mieux de mettre une consigne un peu plus détaillé.

    le 08/12/2017 à 12h05

  • mram

    mram Administrateur

    Bonjour , qu'est-ce qui n'a pas été clair et que vous souhaiteriez plus détailler.

    le 10/12/2017 à 14h39

  • triplaxs

    triplaxs

    boujour var recup; function calcul (numerateur,denominateur){ recup = numerateur / denominateur;return recup; } calcul (nam1,nan2); alert(recup);que fair?

    le 02/09/2017 à 04h43

  • mram

    mram Administrateur

    Bonjour, il ne fallait pas déclarer à nouveau num1 et num2 , il fallait aussi utiliser directement return dans la fonction. Votre dernier code semble juste.

    le 06/09/2017 à 10h31

  • gwendaniel35

    gwendaniel35

    Bonjour, je ne comprends pas mon erreur. Pouvez-vous m'aider ? Voici le message de correction que je reçois : "recup" ne contient pas la valeur attendue. Avez-vous utilisé "return" puis exécuté la fonction ?

    le 12/09/2017 à 18h07

  • mram

    mram Administrateur

    Bonjour, il faut mettre des paramètres dans la fonction à l'avant dernière ligne.

    le 14/09/2017 à 13h15

  • il_matador

    il_matador

    Avez-vous bien divisé les 2 arguments dans la fonction ? voila mon code : function calcul(numerateur,denominateur) { return numerateur/denominateur; } var recup = calcul(num1,num2); alert(recup);

    le 13/09/2017 à 12h30

  • mram

    mram Administrateur

    Bonjour, à tout hasard, mettez des espaces autour du "/"

    le 14/09/2017 à 13h22

  • fromentxavier-81

    fromentxavier-81

    Simple comme exercice ! Suffit de faire à la lettre ce qui est écrit dans l'énoncé. ;)

    le 02/01/2019 à 11h57

  • chadesedouy

    chadesedouy

    qu'est ce qui cloche dans mon code? help!

    le 02/07/2017 à 20h23

  • mram

    mram Administrateur

    Ligne 6, il ne faut pas mettre "fonction", on l'appelle juste avec son nom pour l'exécuter : recup = calcul() ....

    le 07/07/2017 à 11h25

  • loic.tsiry-92

    loic.tsiry-92

    Bonjour, voici mon code mais ca me met "numerateur is not defined" : var recup; function calcul (numerateur,denominateur){ return numerateur/denominateur; } calcul(num1,num2); alert(recup); var recup = calcul(numerateur,denominateur);..... Comment ça se fait ? Merci de votre aide

    le 02/06/2018 à 15h33

  • mram

    mram Administrateur

    Bonjour, collez bien les () au nom de la fonction. Et faites alert() en tout dernier.

    le 07/06/2018 à 04h25

  • belespoir38

    belespoir38

    Est ce que ce code serait faux, en ajoutant la variable qui sera retournée var result et pourquoi ? function calcul(numerateur,denominateur){ var result= numerteur / denominateur; retun var result; } var recup= calcul(num1,num2); alert(recup);

    le 14/01/2018 à 10h17

  • mram

    mram Administrateur

    Bonjour, là votre code semble correct. Quelle erreur avez-vous ?

    le 17/01/2018 à 19h06

  • armand1807

    armand1807

    rien compris a l'exo... var1 et var2 servent à quoi dans cette histoire ?? à rien

    le 17/08/2017 à 15h24

  • triplaxs

    triplaxs

    merci

    le 08/09/2017 à 08h15

  • armand1807

    armand1807

    c'est bon ! ne tenez pas comptes des commentaire que j'ai mis

    le 17/08/2017 à 16h09

  • mram

    mram Administrateur

    num1 et num2 sont des variables qui contiennent un nombre. Au moment d'exécuter la fonction ces variables vont remplacer "numerateur" et "denominateur" dans la fonction. C'est le principe d'une fonction, on peut alors l'exécuter plusieurs fois en changeant juste les paramètres en entrée.

    le 17/08/2017 à 20h28

  • hantute.kevin-100

    hantute.kevin-100

    Pouvez-vous préciser que l'appel de la fonction calcul se fait avec les variables num1 et num2 ? Merci

    le 23/02/2018 à 10h53

  • mram

    mram Administrateur

    C'est fait :)

    le 25/02/2018 à 01h43

  • slaouitaibi

    slaouitaibi

    Je ne vois pas ou est mon erreur. Le code fonctionne correctement mais sa m'affiche une erreur

    le 12/09/2017 à 12h22

  • mram

    mram Administrateur

    Bonjour, quelle est votre erreur ici ? Votre code semble correct en effet...

    le 12/09/2017 à 17h37