Fonction et procédure

Résolu/Fermé
faith cure - 30 oct. 2009 à 20:45
faith cure Messages postés 32 Date d'inscription lundi 5 octobre 2009 Statut Membre Dernière intervention 27 février 2011 - 5 nov. 2009 à 15:30
salut tout le monde, j'ai un probléme dans un sous programme je sais pas quand-il j'utilise une procédure ou bien une fonction ,aussi je sais pas comment destinguer quand j'utilise passage par valeur ou par réfference (adresse)

2 réponses

du crétin, point te moquer tu ne dois
30 oct. 2009 à 21:48
Salut

idéalement:
- il faut utiliser une fonction lorsque l'on veut récupérer un résultat. ex s = SIN(a)
- if faut utiliser une procédure lorsque l'on veut effectuer une (ou plusieurs) actions

en pratique, il apparaissait utile de récupérer un code d'erreur en fin de procédure. on a donc transformé la procédure en fonction, mis en place le retour d'un valeur vers l'appelant et pris l'habitude de voir des fonctions être appelées sans argument

maintenant que les exceptions existent, je pense qu'il est préférable de revenir à la méthode idéale et d'y implémenter une gestion d'exceptions pour bien contrôler l'exécution du code.

quant au passage par valeur ou par référence, c'est à toi de dire si la fonction ou la procédure appelée peut (ou doit) modifier une valeur passée en argument. Si oui, il faut transmettre par référence. Si non il faut la transmettre par valeur.
selon les langages, c'est déclaré de diverses manières:
- en basic, c'est le plus clair : ByRef ou ByVal est annoncé juste avant la déclaration de l'argument attendu.
- en pascal : si le mot clé var est annoncé juste avant la déclaration de l'argument, c'est que c'est un paramètre par référence, sinon l'argument est passé par valeur
- en C : rien ne précise dans la déclaration si l'argument est passé par valeur ou par référence. Seule la présence d'un pointeur peut laisser supposer que la fonction va recevoir l'adresse de qqe chose et que ce qqe chose pourra alors être modifié (mais l'adresse restera intacte). C'est dans l'appel de la fonction où tu peux voir explicitement un passage par référence : lorsque tu fournis une variable précédée de & cela indique que la fonction recevra un pointeur sur la variable et non la variable elle-même)
2
faith cure Messages postés 32 Date d'inscription lundi 5 octobre 2009 Statut Membre Dernière intervention 27 février 2011 23
31 oct. 2009 à 09:07
merci beaucoup ,Mais c'est necela ne te dérange pas stp donner mois un exemple
0
pacorabanix
31 oct. 2009 à 15:01
Pour l'exemple, précise au moins en quel langage stp !

Et pour compléter la réponse d'avant :
quant au passage par valeur ou par référence, c'est à toi de dire si la fonction ou la procédure appelée peut (ou doit) modifier une valeur passée en argument. Si oui, il faut transmettre par référence. Si non il faut la transmettre par valeur.
C'est vrai, mais il y a aussi un cas où on passe par référence même si on ne veut pas modifier l'argument : lorsqu'on manipule de grosses structures de données (des tableaux, des struct (C C++)ou des class (C++), il faut mieux les passer par référence, sinon la variable est entièrement copiée.

Si tu as une fonction qui prend un tableau par valeur en argument, et bien ce tableau sera entièrement copié pour faire la fonction, et si ton tableau possède 100'000 éléments ça prendra beaucoup de temps et de mémoire.
0
faith cure > pacorabanix
31 oct. 2009 à 20:34
pour l'instant la procédur et la fonction dans l'algorithme ,pas dans une language précise.
0
faith cure Messages postés 32 Date d'inscription lundi 5 octobre 2009 Statut Membre Dernière intervention 27 février 2011 23 > pacorabanix
5 nov. 2009 à 15:30
Merci beaucoup
0