quelqu'un pourrait m'expliquer les différences et les usages de chacune ?
en me disant un peu plus que : "la fonction retourne une valeur" !
merci![]()
quelqu'un pourrait m'expliquer les différences et les usages de chacune ?
en me disant un peu plus que : "la fonction retourne une valeur" !
merci![]()
J'ai peut etre tord mais:
Hypothese:
1. Conceptuellement une fonction n'a pas d'effet de bord (ne devrait pas en avoir).
2. Les procedures en ont forcement car elle ne renvoient aucune valeur a exploité.
On est d'accord que la différence entre une procédure et une fonction et que la première ne revoit pas de valeur et la seconde si. Par contre, je ne suis pas tout à fait d'accord avec le point 2 : une procédure peut servir à l'affichage par exemple, ou même à un traitement sur ses paramètres dont le résultat n'est pas à garder pour la suite.Envoyé par mathk
Pour le point 1, disons que je ne verrais aucune objection (dans le sens où je ne pense pas que l'on puisse considérer ceci comme une pratique à éviter) à passer un paramètre par référence à une fonction.
Foe,
La réponse est claire
Faut-il rappeler que ce sont les créateurs du Pascal ?Envoyé par Jensen & Wirth
D'ailleurs, en C ou C++, on ne parle que de fonctions, même quand le type "retourné" est void, ce qui correspond donc aux procédures du Pascal.![]()
L 'affichage est un effet de bord. Il change l'etat de ton systemEnvoyé par Woufeil
C'est idem en Java. Une "procédure" est une fonction qui ne renvoie rien.Envoyé par droggo
Il n'y a pas vraiment d'autre différences, on peut atteindre les même fonctionnalités avec une fonction ou une procédure.
Un exemple autour de "Hello World", en Java :
Grosso modo, une fonction qui ne renvoie pas de résultat est une procédure. Mais certains langages dont C, C++ et Java ne se posent plus ces questions, il n'y a que des fonctions dont certaines renvoient "void" (vide, rien)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 // code type procédure public void hello0(String name) { System.out.println("Bonjour " + name); } // code type fonction public String hello1(String name) { System.out.println("Bonjour " + name); return name; }
Si tu as besoin d'obtenir un résultat de ton algorithme, tu utilises une fonction qui te renvoie ce résultat, sinon tu utilises une fonction qui ne te renvoie rien.
Partager