A quoi sert les valeurs de retour (Fonction) vb.net

Résolu
Utilisateur anonyme - 30 avril 2017 à 17:49
 Utilisateur anonyme - 2 mai 2017 à 18:09
Bonjour , je voulais savoir qu'est-ce qu'une valeur valeur de retour d'une fonction

dans l'exemple qui met donner

Function Addition(ByVal Valeur1 As Integer, ByVal Valeur2 As Integer) As Integer
Dim Resultat As Integer
'Addition des deux arguments
Resultat = Valeur1 + Valeur2

console.writeline(Resultat)


Return Resultat
End Function


alors que si je fais juste avec


Sub Addition(ByRef valeur As Integer, ByRef valeur2 As Integer)


Dim a As Integer

a = valeur + valeur2

Console.WriteLine(a)

End Sub



ça change rien , du coup je voudrai avoir plus d'infos

merci d'avance

2 réponses

cs_Le Pivert
Messages postés
7743
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
9 mai 2022
129
30 avril 2017 à 20:01
Bonjour,

Ce code est tiré de ce site, où tout est expliqué!

Que veux-tu que l'on te dise de plus!

On ne peut que te répéter ce qui est expliqué sur ce site.

J'ai suivi tes post depuis le début sans intervenir. Je pense qu'au lieu de lire tout le cours de bout en bout, il serait préférable de commencer à faire quelques programmes simples, et chercher des solutions à chaque fois que tu butes sur un problème. Car c'est en pratiquant que l'on apprend le mieux.

D'autres membres t'ont prodigué les mêmes conseils!

https://openclassrooms.com/courses/apprenez-a-programmer-en-vb-net/les-fonctions-17
0
Utilisateur anonyme
30 avril 2017 à 20:26
"Imaginez que vous ayez envie d'une fonction qui effectue un calcul très compliqué ou qui modifie votre valeur d'une certaine manière"

c'est cette phrase que je comprend pas trop,


Function Addition(ByRef valeur As Integer, ByRef valeur1 As Integer) As String

Dim a As Integer
Dim b As String = "gagner"


a = valeur + valeur1


If a = 20 Then
Console.WriteLine(b)
Else
b = "perdu"
Console.WriteLine(b)

End If


Return b

End Function


je peux aussi faire


ub Addition(ByRef valeur As Integer, ByRef valeur1 As Integer)

Dim a As Integer
Dim b As String = "gagner"


a = valeur + valeur1


If a = 20 Then
Console.WriteLine(b)
Else
b = "perdu"
Console.WriteLine(b)

End If


End Sub
0
cs_Le Pivert
Messages postés
7743
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
9 mai 2022
129 > Utilisateur anonyme
30 avril 2017 à 20:48
0
Utilisateur anonyme > cs_Le Pivert
Messages postés
7743
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
9 mai 2022

30 avril 2017 à 21:21

Public Function getAgePhrase(ByVal age As Integer) As String
If age > 60 Then Return "Senior"
If age > 40 Then Return "Middle-aged"
If age > 20 Then Return "Adult"
If age > 12 Then Return "Teen-aged"
If age > 4 Then Return "School-aged"
If age > 1 Then Return "Toddler"
Return "Infant"
End Function


ok mais comment je fais pour les afficher ?

le site a l'air d’être bien mais je connais pas encore tout les termes du coup je comprend pas tout
0
Utilisateur anonyme > Utilisateur anonyme
30 avril 2017 à 21:28
et le
Public
je connais pas encore non plus :)
0
cs_Le Pivert
Messages postés
7743
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
9 mai 2022
129 > Utilisateur anonyme
1 mai 2017 à 07:49
0
Whismeril
Messages postés
17329
Date d'inscription
mardi 11 mars 2003
Statut
Modérateur
Dernière intervention
17 mai 2022
596
30 avril 2017 à 21:02
Si au lieu de toujours faire comme t'as envie tu commençais par faire ce que dit le cours.

Je cite
Imaginez que vous ayez envie d'une fonction qui effectue un calcul très compliqué ou qui modifie votre valeur d'une certaine manière. Vous voudriez sans doute récupérer la valeur ? C'est ce qu'on appelle le retour :


D'autre part le code du cours est
Function Addition(ByVal Valeur1 As Integer, ByVal Valeur2 As Integer) As Integer

        Dim Resultat As Integer

        'Addition des deux arguments

        Resultat = Valeur1 + Valeur2


        'Renvoie le résultat

        Return Resultat

End Function


Y'a pas de console là.

Pourquoi?
Y'a 9 lignes à lire pour trouver
Resultat = Addition(Valeur1, Valeur2)

et 4 lignes de plus pour une seconde option
Console.WriteLine(Addition(Valeur1, Valeur2))


Il me semble que si tu avais essayé ces codes et pas ta "bricole" en mode pas à pas (comme on te l'a déjà dit maintes fois), il n'y aurait pas lieu de te poser cette question.

Tu aurais vu que
  • la fonction n'affiche rien, son rôle est de faire un calcul et de transmettre le résultat.
  • la somme calculée est soit
    • transmise à la variable Resultat qui appelle la fonction(bon évidement ils ont appelé les 2 variables avec le même nom...)
    • Affichée par un WriteLine qui appelle la fonction (sans ToString, bien sûr, continuons à laisser l'IDE se démerder comme il veut {t'as vu ça ne marchait pas avec les enum de le laisser faire ce qu'il veut...})


Ceci aurait peut être été un poil mieux
Sub Main()
    Dim Resultat as Interger = Addition(1, 2)
    Console.WriteLine(Resultat.ToString())

    Console.Wriline(Addition(3,4).ToString())
End Sub


Function Addition(ByVal Valeur1 As Integer, ByVal Valeur2 As Integer) As Integer

        Dim LeResultat As Integer

        'Addition des deux arguments

        LeResultat = Valeur1 + Valeur2


        'Renvoie le résultat

        Return LeResultat

End Function

0
ok du coup on dois mettre la fonction avec les valeurs directement dans une variable intermédiaire ou mettre la fonction avec les valeurs directement dans le
console.writeline(addition(2, 4))
c'est un peu plus chiant nn ?

sub main()

addition(23, 21)

end sub

Sub addition(ByVal valeur1 As Integer, ByVal valeur2 As Integer)

Dim resultat As Integer

resultat = valeur1 + valeur2


Console.WriteLine(resultat)


End Sub

c'est plus simple ?


"transmise à la variable Resultat qui appelle la fonction(bon évidement ils ont appelé les 2 variables avec le même nom...)"

je comprend pas le Return , il renvoi les valeurs ou ?
0
Whismeril
Messages postés
17329
Date d'inscription
mardi 11 mars 2003
Statut
Modérateur
Dernière intervention
17 mai 2022
596
1 mai 2017 à 00:21
je comprend pas le Return , il renvoi les valeurs ou ?
pas les la, une fonction ça retourne un résultat et un seul.
Ce résultat est envoyé à qui l'a demandé.

c'est plus simple ?
on s'en moque
Est ce que le gars qui a codé la fonction qui calcule un cosinus a mis un writeline dedans?
Non il a retourné le résultat. Pourquoi, parce qu'il n'a pas préjugé ce qu'en feront les codeurs.
Et si toi, tu veux que le cosinus apparaisse dans la console, et bien, tu prends le résultat, tu passes par une variable intermédiaire ou pas, c'est ton choix, et tu le donnes à un writeline.
0
Utilisateur anonyme > Whismeril
Messages postés
17329
Date d'inscription
mardi 11 mars 2003
Statut
Modérateur
Dernière intervention
17 mai 2022

Modifié le 1 mai 2017 à 03:15
"Ce résultat est envoyé à qui l'a demandé. "

à
addition
?

ce que je comprend pas c'est avec cette phrase dans le cours
"Une fois cet appel écrit dans le code, ce dernier additionne les deux valeurs. Je suis conscient que cette démarche est assez laborieuse et qu'un simple Resultat = Valeur1 + Valeur2 aurait été plus simple, mais c'était pour vous faire découvrir le principe."

si je fais

resultat = valeur1 + valeur2


faut que je fasse ce code dans la fonction

resultat = valeur1 + valeur2
console.writeline(resultat)


donc le
Return Resultat

pourquoi on de puisse pas reprendre cette variable au-lieu de créer une nouvelle variable si je suis le raisonnement de la phrase ?

"on s'en moque
Est ce que le gars qui a codé la fonction qui calcule un cosinus a mis un writeline dedans?
Non il a retourné le résultat. Pourquoi, parce qu'il n'a pas préjugé ce qu'en feront les codeurs.
Et si toi, tu veux que le cosinus apparaisse dans la console, et bien, tu prends le résultat, tu passes par une variable intermédiaire ou pas, c'est ton choix, et tu le donnes à un writeline."

je débute je ne fais que poser des questions pour bien savoir (meme si pour vous elle paraisse débile), je connais pas de se qui est "bien" ou "mal" je connais pas les référence etc... on a bien tous débuter dans quelque chose


Je disais plus simple car avec ce code

Sub Main()

Console.WriteLine(addition(12, 45))

Console.Read()

End Sub

Function addition(ByVal valeur1 As Integer, ByVal valeur2 As Integer) As Integer

Dim resultat As Integer

resultat = valeur1 + valeur2


Return resultat


End Function


normalement
Console.WriteLine(addition(12, 45))


on ne peux plus changer en entrant les valeurs dans la console ?

pas comme

Sub Main()

addition()

Console.Read()

End Sub

Sub addition()

Dim entrer As String
Dim a As Integer
Dim b As Integer


Do

entrer = Console.ReadLine

Loop Until IsNumeric(entrer)

a = entrer

Do
entrer = Console.ReadLine

Loop Until IsNumeric(entrer)

b = entrer


Console.WriteLine(a + b)

End Sub
0
Whismeril
Messages postés
17329
Date d'inscription
mardi 11 mars 2003
Statut
Modérateur
Dernière intervention
17 mai 2022
596
1 mai 2017 à 09:52
Le problème c'est pas que ce soit bien ou mal.
Si tu programmes pour toi, c'est toi qui décideras si tu faits une fonction ou une méthode.
A l'inverse si tu bosses pour quelqu'un, il pourra l'exiger dans le cahier des charges.

Là le cours te montre un exemple simple de fonction, y'a pas à ce demander si une méthode serait mieux. C'est juste un exemple. Ne vas pas te compliquer la vie là ou il n'y a pas lieu. Quand à l’école tu as appris l'addition, l'instit t'as peut être fait compter des billes, des bâtons ou des cailloux. Est-ce que ça a un intérêt fondamental de compter des cailloux? Non mais c'est un exemple simple.

Par contre, ce qui est débile de leur part c'est d'avoir 2 variables avec le même nom, ça marche très bien mais c'est pas pédagogique. Ce qui ne l'ai pas non plus, c'est que le code d'appel de la fonction n'est pas dans un contexte exécutable.
C'est pour ça, que je t'ai reposté la même chose avec 2 nom différents et une méthode Main.


Maintenant on va utiliser une fonction déjà présente dans VB.
somme = valeur1 + valeur2
le + est une fonction (écrite dans le langage utilisé pour créer VB.net) qui va additionner 2 nombres situés de part et d'autre du signe et retourner le résultat dans la variable somme.

Regarde ceci
valeur1 + valeur2
, j'appelle bien la fonction, mais je ne stocke pas le résultat ça ne sert à rien, à l'inverse si + ne retournait pas de résultat jamais en VB.Net on ne pourrait additionner 2 nombres.

Donc je le répète, y'a pas à se demander si c'est bien ou mal, ni si une méthode est mieux qu'une fonction.
Les 2 existes, il y a des cas ou il faut prendre l'un plus que l'autre et des cas ou ça n'a pas vraiment d'importance, il y a des cas ou c'est toi qui choisiras et d'autre ou "on" te l'imposera.
Ce qui importe c'est de connaitre les 2 options et comment ça s'écrit.
0
Utilisateur anonyme > Whismeril
Messages postés
17329
Date d'inscription
mardi 11 mars 2003
Statut
Modérateur
Dernière intervention
17 mai 2022

1 mai 2017 à 17:51
ok merci

"si tu faits une fonction ou une méthode. " la fonction c'est avec les arguments et la méthodes sans les arguments ?

c'est juste qu'avec les argument une fois qu'on lance le programme on peux plus les modifier correct ?

ouais avec la variable qui à le même nom ça prête à confusion
0