Expliquez moi le return

Expliquez moi le return - C++ - Programmation

Marsh Posté le 05-10-2004 à 19:51:54    

Voila trois ans que je programme et il reste pour moi une zone d'ombre immense sur le C++, c'est le return. Je l'utilise de façon complètement aveugle dans mes programmes mais il me faut maintenant savoir comment il fonctionne.
 
-A quoi sert-il?
-Ou est retournée la valeur ? (dans la pile?)
-A quoi ça sert de retourner une valeur?
-Comment est-elle réutilisée?

Reply

Marsh Posté le 05-10-2004 à 19:51:54   

Reply

Marsh Posté le 05-10-2004 à 20:02:18    

A faire sortir quelque chose de la fonction
je sais pas
sortie d'informations ou codes (erreur, terminaison, ...), en C++ il y a les exceptions mais il peut être meilleur d'utiliser le return
?
 
(au fait, les 3 ans de prog, c'est mytho? non parce que dans la majorité des langages disposant de fonctions le return existe quand même [:cupra] )


Message édité par masklinn le 05-10-2004 à 20:06:24

---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
Reply

Marsh Posté le 05-10-2004 à 20:04:41    

Mc Kagan a écrit :

Voila trois ans que je programme et il reste pour moi une zone d'ombre immense sur le C++, c'est le return. Je l'utilise de façon complètement aveugle dans mes programmes mais il me faut maintenant savoir comment il fonctionne.
 
-A quoi sert-il?
-Ou est retournée la valeur ? (dans la pile?)
-A quoi ça sert de retourner une valeur?
-Comment est-elle réutilisée?


 
imagine une fonction somme qui prent 2 entiers en paramètre, et te renvoie un entier égal à la somme des 2 autres : le return sert à renvoyer ce fameux entier


---------------
Jubi Photos : Flickr - 500px
Reply

Marsh Posté le 05-10-2004 à 20:05:49    

Masklinn a écrit :

A faire sortir quelque chose de la fonction
je sais pas
sortie d'informations ou codes (erreur, terminaison, ...), en C++ il y a les exceptions mais il peut être meilleur d'utiliser le return
?


 
Ouais je sais que par exemple si tu déclares une méthode de type "bool" la valeur de retour (1 ou 0), ça a une influence sur le prgramme mais la quelle

Reply

Marsh Posté le 05-10-2004 à 20:07:21    

Jubijub a écrit :

imagine une fonction somme qui prent 2 entiers en paramètre, et te renvoie un entier égal à la somme des 2 autres : le return sert à renvoyer ce fameux entier


 
Mais ça sert à quoi de retourner !!??

Reply

Marsh Posté le 05-10-2004 à 20:11:30    

!!!!!
 
je te montre l'exemple en java (la syntaxe doit pas etre très différente en C) :  
 

Code :
  1. public class Test {
  2. public static void main(String[] args) {
  3.     Test test = new Test();
  4.     int a = 3;
  5.     int b = 5;
  6.     int c = test.somme(a,b); // j'appelle la fonction somme (une méthode dans mon cas)
  7.     System.out.println(c);
  8. }
  9. public int somme( int a, int b) {
  10.     int resultat = a + b;
  11.     return resultat; // ici je renvois le résultat à l'endroit qui a appellé la fonction somme
  12. }
  13. }


Message édité par Jubijub le 05-10-2004 à 20:12:09

---------------
Jubi Photos : Flickr - 500px
Reply

Marsh Posté le 05-10-2004 à 20:29:37    

3 jours? :sweat:


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
Reply

Marsh Posté le 05-10-2004 à 20:41:12    

Enfin une explication sèrieuse (Jubijub).
Mais quel est l'interet du retour, et comment ça tu retournes à l'endroit de l'appel de la fonction la valeur.

Reply

Marsh Posté le 05-10-2004 à 20:52:05    

Mc Kagan a écrit :

Enfin une explication sèrieuse (Jubijub).
Mais quel est l'interet du retour, et comment ça tu retournes à l'endroit de l'appel de la fonction la valeur.


Le but d'une fonction, c'est d'effectuer un traitement en fonction des infos qu'on lui donne (les arguments).
 
Ce traitement peut ne pas avoir de résultat (la fonction fait son bordel puis se termine), ou alors la fonction peut avoir un résultat qu'on aura besoin d'utiliser.
 
Le return sert à renvoyer le résultat des traitements effectués par la fonction à ce qui a appelé la dite fonction (ensuite libre à toi de l'utiliser ou pas).
 
Sinon, sérieusement, ca fait combien de temps que tu programmes?


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
Reply

Marsh Posté le 05-10-2004 à 20:53:15    

Masklinn a écrit :


Sinon, sérieusement, ca fait combien de temps que tu programmes?


 
3 ans :o


---------------
brisez les rêves des gens, il en restera toujours quelque chose...  -- laissez moi troller sur discu !
Reply

Marsh Posté le 05-10-2004 à 20:53:15   

Reply

Marsh Posté le 05-10-2004 à 20:54:58    


j'ai dit sérieusement :hello:  
tout le monde sait que ca fait pas 3 ans que tu programmes kadreg, fait pas ton mariole [:spamafote]


Message édité par masklinn le 05-10-2004 à 21:01:51

---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
Reply

Marsh Posté le 05-10-2004 à 20:55:09    

moi ce que j'aime c'est le mec qui a pas niveau CP ...
 
 
1 + 2 tu crois que c'est quoi si ce n'est la fonction + appliquée à ses deux opérandes 1 et 2 et dont l'évaluation vaut 3 ?
 
 
Jubijub > bah ton exmple ... il suffit de faire
 
 
int main() { return 0; } qui est un programme où la fonction main retourne 0 au système, 0 étant une valeur indiquant le succès du programme ...

Reply

Marsh Posté le 05-10-2004 à 20:57:09    

Bon tant qu'on y est qq1 pourrait m'expliquer a quoi sert une fonction? :ange:  
 


---------------
http://www.janaga.com
Reply

Marsh Posté le 05-10-2004 à 20:57:25    

Mc Kagan a écrit :

Ouais je sais que par exemple si tu déclares une méthode de type "bool" la valeur de retour (1 ou 0), ça a une influence sur le prgramme mais la quelle

tu veux pas aller doucement et sécurisez tes bases ?
 
en algèbre, un booléen, c'est Vrai ou Faux
en C++ ça se matérialise par le type bool et true/false ...

Reply

Marsh Posté le 05-10-2004 à 20:58:02    

non, 3 minutes dans le monde de l'informatique.

Reply

Marsh Posté le 05-10-2004 à 20:58:58    

Nithril a écrit :

Bon tant qu'on y est qq1 pourrait m'expliquer a quoi sert une fonction? :ange:

tu veux pas aller demander sur WindowsSoftareEtRéseau comment on clique plutôt que de dires des conneries ?

Reply

Marsh Posté le 05-10-2004 à 21:00:12    

J'ai deja demandé et ils m'ont dit d'aller te voir, parait que tu es un pro du clique


---------------
http://www.janaga.com
Reply

Marsh Posté le 05-10-2004 à 21:03:41    

Taz a écrit :

tu veux pas aller demander sur WindowsSoftareEtRéseau comment on clique plutôt que de dires des conneries ?


Stopos, je sais que t'es lancé mais je pense que nithril plaisante :o


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
Reply

Marsh Posté le 05-10-2004 à 21:26:11    

et moi je suis très sérieux :o

Reply

Marsh Posté le 05-10-2004 à 21:31:18    

Taz a écrit :

et moi je suis très sérieux :o


En l'occurence oui, tu m'auras pas comme ca martoni
 [:masklinn]


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
Reply

Marsh Posté le 05-10-2004 à 23:40:58    

pastèque

Reply

Marsh Posté le 06-10-2004 à 00:52:42    


 [:totoz]  
 [:gratgrat]  
 [:figti]  
brocoli [:itm]


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
Reply

Marsh Posté le 06-10-2004 à 01:22:10    

HAHAHAHAAAAAAAAAAAAAA !!! Excellent !! Merci pour cette franche déconnade :) Super la blague hahahahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa !!!
Ahhhhhhh putain ça fait du bien de rire de temps en temps.
Tiens tu veux pas nous poster un code dans le même délire ? J'ai bien envie de rire :) Bravo en tout cas pour tes talents de comique, j'aurais jamais pensé à celle là ;) Préviens-nous lors de ton premier spectacle. Je réserve une place dès maintenant.

Reply

Marsh Posté le 06-10-2004 à 01:29:44    

Masklinn a écrit :

[:totoz]  
 [:gratgrat]  
 [:figti]  
brocoli [:itm]

tu bluffes !
 

g012 a écrit :

HAHAHAHAAAAAAAAAAAAAA !!! Excellent !! Merci pour cette franche déconnade :) Super la blague hahahahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa !!!
Ahhhhhhh putain ça fait du bien de rire de temps en temps.
Tiens tu veux pas nous poster un code dans le même délire ? J'ai bien envie de rire :) Bravo en tout cas pour tes talents de comique, j'aurais jamais pensé à celle là ;) Préviens-nous lors de ton premier spectacle. Je réserve une place dès maintenant.

mutli ? boulet ?  
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
boulet, hein ?

Reply

Marsh Posté le 06-10-2004 à 01:30:59    

Ata j'en ai une autre:
Voilà ça fait 5 ans que j'utilise un pc, mais il reste pour moi une zone d'ombre immense sur le clavier. Je l'utilise de façon complètement aveugle dans mes post mais il me faut maintenant savoir comment il fonctionne.
 
- À quoi sert-il ?
- Où passe le courant ?
- À quoi ça sert d'appuyer sur une touche ?
- Peut-on sans risque de détérioration appuyer 2 fois sur la même touche ?
- Pourquoi y a-t-il plus de boutons que sur ma souris (qui fera l'objet de mes futures interrogations dès que j'aurais élucidé le mystère du clavier flanqué de sa multitudes de carrés réagissant à la pression de mes doigts) ?
- Est-ce vivant ?
- Qui contrôle qui ?

Reply

Marsh Posté le 06-10-2004 à 02:28:29    

enorme ce thread.
 
vraiment enorme. ca merite le best of.


---------------
http://chilax.com/forum/index.php?showforum=46 => !!!
Reply

Marsh Posté le 06-10-2004 à 03:34:48    

C'est clair c'est terrible. Je propose de mettre ce thread en sticky, que tout le monde puisse se marrer ;)
Je propose aussi la création d'une équipe de "Voilà ça fait x ans que j'utilise y, mais", qui s'amuserait à aller poster sur divers forums variés des messages de ce type et nous mettrait le lien ici :)
Y'a pas de raisons, marrons-nous.

Reply

Marsh Posté le 06-10-2004 à 08:27:59    


Franchement, j'ai plus envie de poster sur progammation sur hfr : ya un groupe d'élite, et si tu mets une ligne de travers, c'est l'exécution sur la place publique, réflexions et compagnie... Toujours comme ça!
 
Au lieu de critiquer, tu ferais mieux de dire ce qui te dérange et de faire des remarques constructives, hein...!! :pfff:


---------------
brisez les rêves des gens, il en restera toujours quelque chose...  -- laissez moi troller sur discu !
Reply

Marsh Posté le 06-10-2004 à 09:46:02    

ok, supposons que Mc Kagan soit de bonne fois :  
 
 
> -Ou est retournée la valeur ? (dans la pile?)  
 
- si ton resultat est un entier ou un pointeur c'est généralement dans le registre e(ax)  
- si c'est un flottant, dans la tête de la pile du FPU  
- pour les registres SIMD je n'en c'est rien du tout
- sinon sans trop me mouiller je dirais dans le heap
 
> -A quoi sert-il?  
> -A quoi ça sert de retourner une valeur?  
 
Comme la dit Jubijub et Masklinn une fonction prend en entrée des parametres et retourne un résultat dépendant desdit parametres, on pourrait faire le parallele avec les fonctions parametriques mathematique. (A noter qu'une fonction retourne tout le temps quelque chose, sinon c'est une procédure)
Donc le return sert à retourner la valeur calculé par la fonction
 
 
par exemple :
cos(angle) retourne le cosinus de 'angle'
le retourn sert ici simplement à dire que l'evaluation de cosinus(angle) vaut mathematiquement parlant "cos(angle)"
 
c'est aussi bien pratique pr l'imbrication et la réutilisabilité immediate du resultat:
 

Code :
  1. string tagada="pouet";
  2. tagada.toUpperCase().find("poue" );


où toUpperCase retourne un string
 
ou:

Code :
  1. cos(sin(tan(angle)))


 
bref on pourrait ecrire une these sur le return  :D  


---------------
http://www.janaga.com
Reply

Marsh Posté le 06-10-2004 à 09:54:10    

Nithril a écrit :


 
> -Ou est retournée la valeur ? (dans la pile?)  
- si ton resultat est un entier ou un pointeur c'est généralement dans le registre e(ax)  


 
*eax pour les entier, st(0) pour les reels.
*edx:eax si la valeur retourné fait 8 octets.
*si la valeur retourné est supérieur a 8 octets, l'appelant fournira a l'appelé un pointeur indiquant ou stocker le resultat (generalement, la pile, mais ca, l'appelé s'en fout)
 
(kookoo [:god])

Reply

Marsh Posté le 06-10-2004 à 10:11:13    

\o/ chrisbk \o/
 :love:


---------------
http://www.janaga.com
Reply

Marsh Posté le 06-10-2004 à 10:11:49    

pour les SIMD ca passe par registre

Reply

Marsh Posté le 06-10-2004 à 10:17:53    

c'est quoi ce débarquement de boulet ?  
g012
Nithril
Mc Kagan
 
c'est la rentrée c'est ça ?  
 


---------------
What if I were smiling and running into your arms? Would you see then what I see now?  
Reply

Marsh Posté le 06-10-2004 à 10:20:28    

tu t'es oublié dans la liste
kadreg n'a finallement pas tort...


Message édité par nithril le 06-10-2004 à 10:20:44

---------------
http://www.janaga.com
Reply

Marsh Posté le 06-10-2004 à 10:26:36    

Nithril a écrit :

tu t'es oublié dans la liste
kadreg n'a finallement pas tort...

bye  :hello:


---------------
What if I were smiling and running into your arms? Would you see then what I see now?  
Reply

Marsh Posté le 06-10-2004 à 10:33:29    

pas de bol je suis du genre perseverant :D  
 
sinon poste constructif au lieu de balancer des boulets a tout va :kaola:


---------------
http://www.janaga.com
Reply

Marsh Posté le 06-10-2004 à 10:54:57    

JagStang a écrit :

c'est quoi ce débarquement de boulet ?  
g012
Nithril
Mc Kagan
 
c'est la rentrée c'est ça ?


 
Y'a un intru dans ta liste :o


---------------
NP: HTTP Error 764 Stupid coder found
Reply

Marsh Posté le 06-10-2004 à 10:55:54    

chrisbk a écrit :

*eax pour les entier, st(0) pour les reels.
*edx:eax si la valeur retourné fait 8 octets.
*si la valeur retourné est supérieur a 8 octets, l'appelant fournira a l'appelé un pointeur indiquant ou stocker le resultat (generalement, la pile, mais ca, l'appelé s'en fout)
 
(kookoo [:god])

cai de la marne Untel

Reply

Marsh Posté le 06-10-2004 à 10:57:00    

Taz a écrit :

cai de la marne Untel


 
bah pas vraiment intel, disons plutot convention du C/C++ et ptet d'autre langage, apres si t'implemente un truc a toi tu fais comme tu veux (.net change 2/3 trucs dans la preservation de registre lors d'appel de fonctions pr ex)


---------------
NP: HTTP Error 764 Stupid coder found
Reply

Marsh Posté le 06-10-2004 à 10:59:39    

chrisbk a écrit :

Y'a un intru dans ta liste :o


les multis sont considérés également comme tels


---------------
What if I were smiling and running into your arms? Would you see then what I see now?  
Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed