...et bon appétit ! :mrgreen: (et ben voilà tu m'as donné faim :furieux:)
Version imprimable
...et bon appétit ! :mrgreen: (et ben voilà tu m'as donné faim :furieux:)
Avec vos conseils et aides, voila ce que j'ai réalisé:
Si vous avez des conseils pour améliorer un peu n'hésitez pas.Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70 <body> <script type="text/javascript" > <!-- function calculatrice() { var resultat; var nombre1; var nombre2; var type; type = saisieSigne(); nombre1 = saisie(); nombre2 = saisie2(); function saisieSigne(){ return signe = prompt("Quel type d'operation voulez-vous faire ? (+,-,*,/)"); } function saisie(){ nb1 = parseInt(prompt("Saisissez le premier nombre.","nombre")); return nb1; } function saisie2(){ nb2 = parseInt(prompt("Saisissez le premier nombre.","nombre")); return nb2; } if (type == "+"){ function addition(nb1,nb2) { res = nb1 + nb2; return res; } resultat = addition(nombre1,nombre2); } else if (type == "-"){ function soustraction(nb1,nb2) { res = nb1 - nb2; return res; } resultat = soustraction(nombre1, nombre2); } else if (type == "*"){ function multiplication(nb1,nb2) { res = nb1 * nb2; return res; } resultat = multiplication(nombre1, nombre2); } else if (type == "/") { function division(nb1,nb2) { res = nb1 / nb2; return res; } resultat = division(nombre1, nombre2); } function affichage(res) { alert("Resultat : "+res); } affichage(resultat); } //--> </script> <br /><br /><br /><br /> <center><input type="submit" value="calculatrice" onclick="calculatrice();"/></center> </body>
Pareil ^^ tu utilises ici des variables globales inutiles...
Je proposerais quelques simplifications :
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40 function calculatrice() { var resultat; var nombre1; var nombre2; var type; type = saisieSigne(); nombre1 = saisie("Saisissez le premier nombre."); nombre2 = saisie("Saisissez le deuxième nombre."); function saisieSigne() { return prompt("Quel type d'operation voulez-vous faire ? (+,-,*,/)"); } function saisie(message) { return parseInt(prompt(message, "nombre"), 10); } function addition(nb1,nb2) { return (nb1 + nb2); } function soustraction(nb1,nb2) { return (nb1 - nb2); } function multiplication(nb1,nb2) { return (nb1 * nb2); } function division(nb1,nb2) { return (nb1 / nb2); } function affichage(res) { alert("Resultat : "+res); } switch (type) { case "+": resultat = addition(nombre1, nombre2); case "-": resultat = soustraction(nombre1, nombre2); case "*": resultat = multiplication(nombre1, nombre2); case "/": resultat = division(nombre1, nombre2); } affichage(resultat); }
J'avoue qu'il y en aurait pas mal :aie:Citation:
Envoyé par Tora21
Tout d'abord, l'intérêt d'une fonction est de pouvoir exécuter plusieurs fois la même portion de code. Donc faire une fonction
c'est bien, mais à quoi sert la fonction saisie2() qui fait exactement la même chose ???Code:
1
2
3
4 function saisie(){ nb1 = parseInt(prompt("Saisissez le premier nombre.","nombre")); return nb1; }
Ensuite, vu que tu peux passer des arguments à une fonction, saisieSigne() devient aussi superfétatoire (:yaisse:)
Et surtout, définir une fonction qui refait exactement la même chose qu'une méthode native, c'est bien mais pas top :aie:
Ensuite, une variable sert à stocker une donnée, mais stocker une donnée qui va être détruite à l'instruction suivante a ma foi assez peu d'intérêt, donc saisie() peut facilement devenir
Autre choseCode:
1
2
3 function saisie(texte, valeur){ return prompt(texte, valeur); }
A part le plaisir masochiste de se faire de noeuds à l'encéphale, je comprends difficilement l'intérêt de définir une fonction puis une variable qui récupèrera le résultat de la fonction pour le retourner immédiatement... :calim2:Code:
1
2
3
4
5
6
7 if (type == "+"){ function addition(nb1,nb2){ res = nb1 + nb2; return res; } resultat = addition(nombre1,nombre2); }
Ne crois-tu pas que
est plus simple :mrgreen:Code:
1
2
3 if (type == "+"){ return nb1 + nb2; }
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 function calculatrice(){ var nb1 = prompt('Entrez le premier nombre', 'Nombre'); var nb2 = prompt('Entrez le deuxième nombre', 'Nombre'); switch(prompt('Quelle opération ?', '+,-,*,/'){ case '+': alert(parseInt(nb1, 10) + parseInt(nb2, 10)); return; case '-': alert(nb1 - nb2); return; case '*': alert(nb1 * nb2); return; case '/': alert(nb1 / nb2); return; default: alert('Erreur de saisie...'); calculatrice(); } }
Ne nous arrêtons pas en si bon chemin :mrgreen:
edit : le code ci-dessus constitue un retour en arrière par rapport aux remarques de bon sens de Bovino, mais j'étais pris dans mon élan de factorisation, indépendamment du pragmatisme général (le "pour quoi faire ?") :oops:Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 function calculatrice() { var resultat, type, nombre1, nombre2; var Operations = { "+": function (nb1,nb2) { return (nb1 + nb2); }, "-": function (nb1,nb2) { return (nb1 - nb2); }, "*": function (nb1,nb2) { return (nb1 * nb2); }, "/": function (nb1,nb2) { return (nb1 / nb2); } }; function saisieSigne() { return prompt("Quel type d'operation voulez-vous faire ? (+,-,*,/)"); } function saisie(message) { return parseInt(prompt(message, "nombre"), 10); } function affichage(res) { alert("Resultat : " + res); } type = saisieSigne(); nombre1 = saisie("Saisissez le premier nombre."); nombre2 = saisie("Saisissez le deuxième nombre."); resultat = Operations[type](nombre1, nombre2); affichage(resultat); }
Etant donné que l'idée du post initial était d'apprendre à manipuler les fonctions... ^^
--- (ci-dessous, supplément hors-sujet)
Attends ne me dis rien... Vous faites une sorte de loto avec des copains et tu devais essayer de placer celui-là quelque part... :mrgreen: Bravo c'était pas évident ^^Citation:
Envoyé par Bovino
:pastaper:Code:eval(nombre1 + type + nombre2);
c'est pour ça que j'ai pas voulu participer :mrgreen:
Eh ben je vois que ça vous motive mon post.
J'ai encore amélioré mon code avec des petits morceaux de RomainVALERI et Bovino. Mais la ton dernier affichage de code Romain ma donné mal à la tête je pense que je dois encore m'enfoncer un peu plus dans le javascript avant d'attaquer les réductions de code.