A quoi sert les valeurs de retour (Fonction) vb.net [Résolu]

Hixale 219 Messages postés samedi 25 février 2017Date d'inscription 16 septembre 2017 Dernière intervention - 30 avril 2017 à 17:49 - Dernière réponse : Hixale 219 Messages postés samedi 25 février 2017Date d'inscription 16 septembre 2017 Dernière intervention
- 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
Afficher la suite 

26 réponses

Répondre au sujet
cs_Le Pivert 5065 Messages postés jeudi 13 septembre 2007Date d'inscriptionContributeurStatut 13 avril 2018 Dernière intervention - 30 avril 2017 à 20:01
0
Utile
7
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
Hixale 219 Messages postés samedi 25 février 2017Date d'inscription 16 septembre 2017 Dernière intervention > cs_Le Pivert 5065 Messages postés jeudi 13 septembre 2007Date d'inscriptionContributeurStatut 13 avril 2018 Dernière intervention - 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
Hixale 219 Messages postés samedi 25 février 2017Date d'inscription 16 septembre 2017 Dernière intervention > Hixale 219 Messages postés samedi 25 février 2017Date d'inscription 16 septembre 2017 Dernière intervention - 30 avril 2017 à 21:28
et le
Public
je connais pas encore non plus :)
cs_Le Pivert 5065 Messages postés jeudi 13 septembre 2007Date d'inscriptionContributeurStatut 13 avril 2018 Dernière intervention > Hixale 219 Messages postés samedi 25 février 2017Date d'inscription 16 septembre 2017 Dernière intervention - 1 mai 2017 à 07:49
cs_Le Pivert 5065 Messages postés jeudi 13 septembre 2007Date d'inscriptionContributeurStatut 13 avril 2018 Dernière intervention > Hixale 219 Messages postés samedi 25 février 2017Date d'inscription 16 septembre 2017 Dernière intervention - 1 mai 2017 à 07:50
MessageBox.Show(getAgePhrase(15))
Hixale 219 Messages postés samedi 25 février 2017Date d'inscription 16 septembre 2017 Dernière intervention > cs_Le Pivert 5065 Messages postés jeudi 13 septembre 2007Date d'inscriptionContributeurStatut 13 avril 2018 Dernière intervention - 2 mai 2017 à 18:09
ok merci :)
Commenter la réponse de cs_Le Pivert
Whismeril 11407 Messages postés mardi 11 mars 2003Date d'inscriptionContributeurStatut 20 avril 2018 Dernière intervention - 30 avril 2017 à 21:02
0
Utile
17
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

Hixale 219 Messages postés samedi 25 février 2017Date d'inscription 16 septembre 2017 Dernière intervention > Hixale 219 Messages postés samedi 25 février 2017Date d'inscription 16 septembre 2017 Dernière intervention - 2 mai 2017 à 16:40

Sub Main()

Dim a As Integer = Console.ReadLine() 'demande la valeur
Dim b As Integer = Console.ReadLine() 'demande la valeur
Dim c As Integer


addition(a, b) ' appel de la fonction et envoi les valeurs à la fonction

c = addition(a, b) ' reçois et stocke le résultat

console.writeline(c) ' affiche le résultat


Console.Read()

End Sub
Function addition(ByVal Valeur1 As Integer, ByVal Valeur2 As Integer) As Integer

Dim renvoi As Integer

renvoi = Valeur1 + Valeur2 ' calcul les valeurs


Return renvoi ' envoi le résultat

End Function


correct ?
Whismeril 11407 Messages postés mardi 11 mars 2003Date d'inscriptionContributeurStatut 20 avril 2018 Dernière intervention > Hixale 219 Messages postés samedi 25 février 2017Date d'inscription 16 septembre 2017 Dernière intervention - 2 mai 2017 à 17:28
Correct
Hixale 219 Messages postés samedi 25 février 2017Date d'inscription 16 septembre 2017 Dernière intervention > Whismeril 11407 Messages postés mardi 11 mars 2003Date d'inscriptionContributeurStatut 20 avril 2018 Dernière intervention - 2 mai 2017 à 18:00
ok merci :)
Hixale 219 Messages postés samedi 25 février 2017Date d'inscription 16 septembre 2017 Dernière intervention > Hixale 219 Messages postés samedi 25 février 2017Date d'inscription 16 septembre 2017 Dernière intervention - 2 mai 2017 à 18:01
cs_ShayW

ok merci :)
cs_ShayW 3238 Messages postés jeudi 26 novembre 2009Date d'inscription 14 mars 2018 Dernière intervention > Hixale 219 Messages postés samedi 25 février 2017Date d'inscription 16 septembre 2017 Dernière intervention - 2 mai 2017 à 16:41
tu as valeur1 et valeur2 déclaré comme paramètre
Function addition(ByVal valeur As Integer, ByVal valeur2 As Integer) As Integer


et tu as valeur1 et valeur2 qui sont des variables que tu utlises dans l'appelle de ta fonction et évidemment il faut les déclarer
bien qu'ils ont les meme noms
Commenter la réponse de Whismeril

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.