IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langages de programmation Discussion :

Procédure et fonction : les différences et les usages de chacune ?


Sujet :

Langages de programmation

  1. #1
    Membre habitué
    Inscrit en
    Mai 2007
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 10
    Par défaut Procédure et fonction : les différences et les usages de chacune ?
    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

  2. #2
    Membre chevronné Avatar de aziz jim
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2005
    Messages
    455
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2005
    Messages : 455

  3. #3
    Membre expérimenté
    Avatar de mathk
    Inscrit en
    Décembre 2003
    Messages
    211
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 211
    Par défaut
    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é.

  4. #4
    Membre Expert
    Avatar de Woufeil
    Profil pro
    Étudiant
    Inscrit en
    Février 2006
    Messages
    1 076
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2006
    Messages : 1 076
    Par défaut
    Citation Envoyé par mathk
    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.

    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.

  5. #5
    Expert confirmé

    Inscrit en
    Août 2006
    Messages
    3 966
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 3 966
    Par défaut
    Foe,

    La réponse est claire
    Citation Envoyé par Jensen & Wirth
    Les fonctions sont des procédures qui retournent une valeur et qui peuvent être utilisées dans des expressions.
    [in Pascal, Manuel de l'utilisateur, Kathleen Jensen et Niklaus Wirth, Ed. Eyrolles, 1984]
    Faut-il rappeler que ce sont les créateurs du Pascal ?

    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.

  6. #6
    Membre expérimenté
    Avatar de mathk
    Inscrit en
    Décembre 2003
    Messages
    211
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 211
    Par défaut
    Citation Envoyé par Woufeil
    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.
    L 'affichage est un effet de bord. Il change l'etat de ton system

  7. #7
    Membre expérimenté
    Avatar de anadoncamille
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juillet 2007
    Messages
    395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2007
    Messages : 395
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par droggo
    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.
    C'est idem en Java. Une "procédure" est une fonction qui ne renvoie rien.
    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 :

    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;
    }
    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)

    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.

Discussions similaires

  1. Réponses: 3
    Dernier message: 21/02/2010, 01h24
  2. [EJB] Différence entre les EJB et les JavaBeans
    Par cool dans le forum Java EE
    Réponses: 6
    Dernier message: 22/05/2008, 20h24
  3. Différence entre les fichiers et les files
    Par amine6441 dans le forum Langage
    Réponses: 1
    Dernier message: 14/01/2007, 09h59
  4. [C#] Diffèrence entre les structures et les classes
    Par Kr00pS dans le forum Windows Forms
    Réponses: 2
    Dernier message: 31/08/2006, 12h42

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo