Expliquez moi le return - C++ - Programmation
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 )
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. |
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
Marsh Posté le 05-10-2004 à 20:05:49
Masklinn a écrit : A faire sortir quelque chose de la fonction |
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
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 !!??
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 :
|
Marsh Posté le 05-10-2004 à 20:29:37
ReplyMarsh 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.
Marsh Posté le 05-10-2004 à 20:52:05
Mc Kagan a écrit : Enfin une explication sèrieuse (Jubijub). |
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?
Marsh Posté le 05-10-2004 à 20:53:15
Masklinn a écrit : |
3 ans
Marsh Posté le 05-10-2004 à 20:54:58
kadreg a écrit : 3 ans |
j'ai dit sérieusement
tout le monde sait que ca fait pas 3 ans que tu programmes kadreg, fait pas ton mariole
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 ...
Marsh Posté le 05-10-2004 à 20:57:09
Bon tant qu'on y est qq1 pourrait m'expliquer a quoi sert une fonction?
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 ...
Marsh Posté le 05-10-2004 à 20:58:02
ReplyMarsh 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? |
tu veux pas aller demander sur WindowsSoftareEtRéseau comment on clique plutôt que de dires des conneries ?
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
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
Marsh Posté le 05-10-2004 à 21:31:18
Taz a écrit : et moi je suis très sérieux |
En l'occurence oui, tu m'auras pas comme ca martoni
Marsh Posté le 06-10-2004 à 00:52:42
Taz a écrit : pastèque |
brocoli
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.
Marsh Posté le 06-10-2004 à 01:29:44
Masklinn a écrit : |
tu bluffes !
g012 a écrit : HAHAHAHAAAAAAAAAAAAAA !!! Excellent !! Merci pour cette franche déconnade Super la blague hahahahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa !!! |
mutli ? boulet ?
boulet, hein ?
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 ?
Marsh Posté le 06-10-2004 à 02:28:29
enorme ce thread.
vraiment enorme. ca merite le best of.
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.
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...!!
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 :
|
où toUpperCase retourne un string
ou:
Code :
|
bref on pourrait ecrire une these sur le return
Marsh Posté le 06-10-2004 à 09:54:10
Nithril 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 )
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 ?
Marsh Posté le 06-10-2004 à 10:20:28
tu t'es oublié dans la liste
kadreg n'a finallement pas tort...
Marsh Posté le 06-10-2004 à 10:26:36
Nithril a écrit : tu t'es oublié dans la liste |
bye
Marsh Posté le 06-10-2004 à 10:33:29
pas de bol je suis du genre perseverant
sinon poste constructif au lieu de balancer des boulets a tout va
Marsh Posté le 06-10-2004 à 10:54:57
JagStang a écrit : c'est quoi ce débarquement de boulet ? |
Y'a un intru dans ta liste
Marsh Posté le 06-10-2004 à 10:55:54
chrisbk a écrit : *eax pour les entier, st(0) pour les reels. |
cai de la marne Untel
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)
Marsh Posté le 06-10-2004 à 10:59:39
chrisbk a écrit : Y'a un intru dans ta liste |
les multis sont considérés également comme tels
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?