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

 C++ Discussion :

fonction inerte ou active


Sujet :

C++

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    retraité
    Inscrit en
    Septembre 2006
    Messages
    286
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 83
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Septembre 2006
    Messages : 286
    Points : 0
    Points
    0
    Par défaut fonction inerte ou active
    Bonjour,
    Le vendredi 13 on peut tout se permettre!!
    Une fonction contient au moins une ligne active: on entre une valeur il en sort une autre.
    Comme le contenu de ce dont j'ai besoin à plusieurs endroits ne contient que des cout<<"xxx"<<endl; j'appelle çà pour l'instant une fonction inerte.
    En C++ cette écriture existe t-elle?
    Avec mes remerciements.
    Sen.

  2. #2
    Membre éprouvé

    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    533
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 533
    Points : 1 086
    Points
    1 086
    Par défaut


    Fonction inerte = Procédure ?

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    retraité
    Inscrit en
    Septembre 2006
    Messages
    286
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 83
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Septembre 2006
    Messages : 286
    Points : 0
    Points
    0
    Par défaut
    Pour moi fonction=procédure=sous-programme=routine.
    Tous ces mots recouvrent le fait qu'une valeur y entre, est calculée, modifiée dans un sens voulu par l'auteur et ressort pour être utilisée dans un programme.
    J'invente le mot fonction "inerte" pour expliciter le fait que rien n'y est calculé, modifié. Elle contient des caractères lus par cout. Son but est d'être utilisé ailleurs au moins 2 fois!!!
    string s="xyz"; peut jouer ce rôle mais le nombre de caractères est quand même limité.
    Je résume: existe-t-il en C++ une entité pouvant jouer ce rôle de fonction "inerte"?

  4. #4
    Rédacteur

    Avatar de Davidbrcz
    Homme Profil pro
    Ing Supaéro - Doctorant ONERA
    Inscrit en
    Juin 2006
    Messages
    2 307
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ing Supaéro - Doctorant ONERA

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 307
    Points : 4 732
    Points
    4 732
    Par défaut
    C'est toujours pas clair...

    Mais pour faire simple, une fonction que tu écris tu en fais ce que tu en veux
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
     
    void repeat10()
    {
        std::string s;
        std::getline(std::cin,s);
        for(int i=0;i<10;++i)
        {
            std::cout<<s<<std::endl;
        }
    }
     
    int main()
    {
        repeat10();
        repeat10();
    }

  5. #5
    Nouveau Candidat au Club
    Homme Profil pro
    retraité
    Inscrit en
    Septembre 2006
    Messages
    286
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 83
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Septembre 2006
    Messages : 286
    Points : 0
    Points
    0
    Par défaut
    La fonction classique:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    string Inert(string inertA)//fonction inerte
    {
    cout<<"ce message est ici"<<endl;//elle ne contient que cout
    }
     
    int main()
    {
    string inertA;
    string ii=Inert(inertA);
    cout<<"zzz";cin.ignore();
    }
    A chaque fois que ce texte est utile dans une autre fonction on colle ii=Inert(inertA);
    Existe-t-il quelque chose de plus simple?
    Si non je fais avec.

  6. #6
    Rédacteur/Modérateur


    Homme Profil pro
    Network game programmer
    Inscrit en
    Juin 2010
    Messages
    7 128
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Canada

    Informations professionnelles :
    Activité : Network game programmer

    Informations forums :
    Inscription : Juin 2010
    Messages : 7 128
    Points : 33 053
    Points
    33 053
    Billets dans le blog
    4
    Par défaut
    - si la méthode n'utilise pas les paramètres, on lui donne pas de paramètres..
    - si lé méthode ne retourne rien, on ne met pas de type de retour...
    - si tu as besoin d'appeler la méthode, même si elle n'affiche qu'un menu, tu appelles la méthode..
    faudrait commencer par comprendre et appliquer les 2 premiers points

    on ne comprend absolument rien à ce que tu racontes
    plus simple que l'appel d'une méthode ?

    Tous ces mots recouvrent le fait qu'une valeur y entre, est calculée, modifiée dans un sens voulu par l'auteur et ressort pour être utilisée dans un programme.
    cf les 2 premiers points, une méthode n'a absolument aucune obligation de prendre une valeur ni d'en retourner une

  7. #7
    Nouveau Candidat au Club
    Homme Profil pro
    retraité
    Inscrit en
    Septembre 2006
    Messages
    286
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 83
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Septembre 2006
    Messages : 286
    Points : 0
    Points
    0
    Par défaut
    Au final on va donc rajouter méthode à la collection de mots: fonction=procédure=sous-programme=routine=méthode.
    Et le résumé limpide:
    "une méthode n'a absolument aucune obligation de prendre une valeur ni d'en retourner une".
    Je retire l'expression "fonction inerte" qui n'a pas l'air de plaire
    Merci à tous , lecteurs et contributeurs.

    Sen.

  8. #8
    Membre émérite
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    2 764
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 2 764
    Points : 2 705
    Points
    2 705
    Par défaut
    Citation Envoyé par senvedgi Voir le message
    Pour moi fonction=procédure=sous-programme=routine.
    Pour toi, peut-être, mais il est mieux de parler un langage commun. Une procédure n'est supposée renvoyer aucun résultat.

  9. #9
    Expert éminent

    Inscrit en
    Novembre 2005
    Messages
    5 145
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 5 145
    Points : 6 911
    Points
    6 911
    Par défaut
    Citation Envoyé par oodini Voir le message
    Pour toi, peut-être, mais il est mieux de parler un langage commun. Une procédure n'est supposée renvoyer aucun résultat.
    Langage commun... il faut être conscient que la nomenclature varie beaucoup et que le fait qu'il y en ait une qui nous soit familière ne signifie pas qu'elle est universelle. En particulier tout comme le C utilise "fonction" quand il n'y a pas de résultat, d'autres langages (Algol par exemple) ont utilisé "procédure" quand il y avait un résultat.

    (J'ai jamais entendu "inerte" utilisé dans ce contexte, et j'aurais du deviner une signification que je l'aurais pris pour un synonyme de "pure" ou de "sans effets de bord", complètement à l'opposé du sens recherché.)

  10. #10
    Expert éminent sénior
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 629
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 629
    Points : 30 692
    Points
    30 692
    Par défaut
    Salut
    Citation Envoyé par senvedgi Voir le message
    Au final on va donc rajouter méthode à la collection de mots: fonction=procédure=sous-programme=routine=méthode.
    En fait, ces différents termes sont spécifiques, soit à un concept général (sous-programme, par exemple est spécifique à la notion de programmation procédurale), soit à un langage (fonction est spécifique à plusieurs langage) soit à un concept particulier (méthode est généralement synonyme de fonction membre virtuelle et publique d'une classe).

    Si tu veux que la communication passe bien, il faut veiller à utiliser le terme approprié par rapport aux gens à qui tu poses ta question.

    En C++, on parlera de préférence de fonction et -- dans certains cas -- de méthode.

    Ceci étant dit, la notion de fonction inerte n'existe simplement pas : La seule notion qui pourrait s'en rapprocher à mon sens serait une fonction qui ne fait strictement rien et qui, par conséquent, serait tout à fait inutile.

    De manière générale, une application informatique va manipuler des données et les fonctions font exactement la même chose: Peu importe l'origine des données ou la manière dont elles seront utilisées par la suite, un fonction manipulera des données. C'est le but intrinsèque d'une fonction, c'est sa raison d'être.

    Dis toi que, même si tu te contente d'une fonction proche de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    void foo(){ // ne renvoie rien, ne prend aucun argument en entrée
        std::cout<<"hello world";
    }
    la fonction manipule des données :
    std::cout, est une donnée qui est une variable globale correspondant à la sortie standard (souvent l'écran )
    "hello world" est une autre donnée, qui peut être considérée comme une "variable temporaire anonyme", mais c'est une donnée quand même.

    Même avec une fonction aussi simple que celle-ci, tu dois considérer qu'il s'agit d'une ligne active dans le sens où il y a bel et bien deux données qui sont manipulée (d'autant plus que l'opérateur << va en réalité sans doute appeler d'autres fonctions spécifiques ).

    On peut par contre faire la distinction avec du "code mort" : du code qui ne sera jamais utilisé, quel que soit le chemin ou la logique suivie.

    Par exemple la fonction
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    void foo(){
        std::cout<<"hello world";
        return; // oui, bien qu'elle ne renvoie rien, on peut parfaitement utiliser return pour
                // forcer le fait de quitter la fonction
        /* tout ce que tu mettras ici est du code mort : il ne sera jamais exécuté quoi qu'il arrive
         * et est donc totalement inutile
         */
    }
    Il existe certains outils (analyseurs statiques et / ou dynamiques) qui sont en mesure de repérer le code mort, le code inutilisé, et de "compter" le nombre d'instructions "utiles" d'une fonction.

    Mais il faut te dire que le seul fait de compter le nombre d'instructions utiles d'une seule fonction n'est souvent d'un intérêt que médiocre, car cela ne prend sans doute pas en compte le fait que certaines instructions sont en réalité des fonctions qui exécutent un certain nombre d'instructions qui sont elle-même peut être d'autres fonctions (et ainsi de suite)

    A partir de là, pourrais tu nous expliquer clairement ce que tu voudrais pouvoir faire, histoire que l'on puisse t'orienter de manière un tout petit peu correcte

  11. #11
    Expert éminent

    Inscrit en
    Novembre 2005
    Messages
    5 145
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 5 145
    Points : 6 911
    Points
    6 911
    Par défaut
    Citation Envoyé par koala01 Voir le message
    méthode est généralement synonyme de fonction membre virtuelle et publique d'une classe
    Je n'ai vu utilisé méthode que dans des langages qui n'avaient que des fonctions membres virtuelles, et le contrôle d’accès n’était pas un facteur dans le choix du mot.

    En C++ il ne faut pas utiliser méthode, c'est terriblement ambigu et je l'ai vu utilisé pour

    - uniquement les fonctions membres virtuelles
    - les fonctions membres non statiques mais excluant les opérateurs membres, même virtuels
    - les fonctions membres non statiques
    - toutes les fonctions membres (y compris statiques)
    - toutes les fonctions (y compris libres)

  12. #12
    Nouveau Candidat au Club
    Homme Profil pro
    retraité
    Inscrit en
    Septembre 2006
    Messages
    286
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 83
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Septembre 2006
    Messages : 286
    Points : 0
    Points
    0
    Par défaut
    Merci pour ces précisions.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 1
    Dernier message: 21/01/2012, 01h48
  2. Fonction équivalente à "a:active" du CSS ?
    Par Wookis dans le forum Mise en page CSS
    Réponses: 2
    Dernier message: 24/08/2011, 13h08
  3. Réponses: 5
    Dernier message: 16/02/2009, 09h23
  4. [Mail] Savoir si la fonction "mail" est activée
    Par sakini dans le forum Langage
    Réponses: 2
    Dernier message: 09/09/2007, 22h32
  5. Fonction qui s'active lorsqu'un Form bouge
    Par Xavier dans le forum C++Builder
    Réponses: 3
    Dernier message: 22/05/2003, 12h54

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