web-dev-qa-db-fra.com

Quelle est la différence entre une fonction et un sous-programme?

Quelle est la différence entre une fonction et un sous-programme? On m'a dit que la différence entre une fonction et un sous-programme est la suivante:

Une fonction prend des paramètres, fonctionne localement et ne modifie aucune valeur ou ne fonctionne avec aucune valeur en dehors de sa portée (cohésion élevée). Il renvoie également une certaine valeur. Un sous-programme fonctionne directement avec les valeurs de l'appelant ou du segment de code qui l'a appelé et ne renvoie pas de valeurs (faible cohésion), c'est-à-dire en ramifiant du code à un autre code afin d'effectuer un traitement et de revenir.

Est-ce vrai? Ou n'y a-t-il aucune différence, juste deux termes pour en désigner un?

35
phoxis

Je ne suis pas d'accord. Si vous transmettez un paramètre par référence à une fonction, vous pourrez modifier cette valeur en dehors de la portée de la fonction. De plus, les fonctions ne doivent retourner aucune valeur. Considérez void some_func() en C. Ainsi, les locaux de l'OP ne sont pas valides.

Dans mon esprit, la différence entre fonction et sous-programme est sémantique. C'est-à-dire que certaines langues utilisent une terminologie différente.

9
Jason McCreary

Si nous parlons en C, C++, Java et autre langage de haut niveau connexe:

une. Un sous-programme est une construction logique utilisée dans l'écriture d'algorithmes (ou organigrammes) pour désigner la fonctionnalité de traitement en un seul endroit. Le sous-programme fournit une sortie basée sur une entrée où le traitement peut reste inchangé.

b. Une fonction est une réalisation du concept de sous-programme dans le langage de programmation

8
Amit

Une fonction renvoie une valeur alors qu'un sous-programme ne le fait pas. Une fonction ne doit pas modifier les valeurs des arguments réels alors qu'un sous-programme peut les modifier.

C'est ma définition d'eux ;-)

8
Andreas

En termes de Visual Basic, un sous-programme est un ensemble d'instructions qui exécute une tâche bien définie. Les instructions sont placées entre Sub et End Sub déclarations.

Les fonctions sont similaires aux sous-programmes, sauf que les fonctions renvoient une valeur. Les sous-programmes exécutent une tâche mais ne signalent rien au programme appelant. Une fonction effectue généralement certains calculs et communique le résultat à l'appelant.

4
saina

La fonction et le sous-programme renvoient tous les deux une valeur, mais bien que la fonction ne puisse pas modifier la valeur des arguments entrant en sortant, un sous-programme peut le faire. En outre, vous devez définir un nom de variable pour la valeur sortante, alors que pour la fonction, vous devez uniquement définir les variables entrantes. Par exemple, une fonction:

double multi(double x, double y) 
{
  double result; 
  result = x*y; 
  return(result)
}

n'aura que des arguments d'entrée et n'aura pas besoin de la variable de sortie pour la valeur renvoyée. D'un autre côté, la même opération effectuée via un sous-programme ressemblera à ceci:

double mult(double x, double y, double result) 
{
  result = x*y; 
  x=20; 
  y = 2; 
  return()
}

Cela fera la même chose que la fonction, c'est-à-dire retourner le produit de x et y mais dans ce cas, vous (1) vous devez définir le résultat comme une variable et (2) vous pouvez changer les valeurs de x et y sur son chemin de retour.

3
NKay

L'une des différences pourrait provenir de l'origine d'où provient la terminologie.

Le sous-programme est davantage une terminologie d'architecture/organisation informatique qui signifie un groupe d'instructions réutilisable qui effectue une tâche. Il est stocké en mémoire une fois, mais utilisé aussi souvent que nécessaire.

La fonction tire son origine d'une fonction mathématique où l'idée de base consiste à mapper un ensemble d'entrées sur un ensemble de sorties autorisées avec la propriété que chaque entrée est liée à exactement une sortie.

1
Azeem Akhter

J'écris cette réponse dans une perspective VBA pour Excel. Si vous écrivez une fonction, vous pouvez l'utiliser comme expression i. e. vous pouvez l'appeler à partir de n'importe quelle cellule d'Excel.

par exemple: la fonction vlookup normale dans Excel ne peut pas rechercher des valeurs> 256 caractères. J'ai donc utilisé cette fonction:

Function MyVlookup(Lval As Range, c As Range, oset As Long) As Variant
  Dim cl As Range
  For Each cl In c.Columns(1).Cells
  If UCase(Lval) = UCase(cl) Then
  MyVlookup = cl.Offset(, oset - 1)
  Exit Function
  End If
  Next
End Function

Ce n'est pas mon code. Je l'ai obtenu d'une autre publication Internet. Ça fonctionne bien.

Mais le véritable avantage est que je peux maintenant l'appeler à partir de n'importe quelle cellule dans Excel. Si j'ai écrit un sous-programme, je ne pourrais pas le faire.

0
Daredevil