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

Algorithmes et structures de données Discussion :

Je ne comprends rien aux sous-programmes


Sujet :

Algorithmes et structures de données

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    septembre 2019
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : septembre 2019
    Messages : 10
    Points : 7
    Points
    7
    Par défaut Je ne comprends rien aux sous-programmes
    Bonjour,

    Je suis en 1ere année en DUT Info et j'ai du mal avec les sous-programmes, et surtout tout ce qui concernent les paramètres.

    C'est la même chose en programmation en java ou en Algo.

    Je comprends le principe d'appeler un sous-programme pour éviter de répéter les instructions, etc, mais à quoi sert les paramètres et SURTOUT comment marchent-elles ? Et également les fonctions que si j'ai bien compris permettent de retourner une valeur....MAIS COMMENT ? Je n'arrive pas bien a comprendre son fonctionnement.

    Si j'arrive a comprendre comment sa marche je ne pense pas que j'aurais pas de soucis par la suite.

    Cordialement,

  2. #2
    Expert éminent
    Homme Profil pro
    Responsable Datas
    Inscrit en
    janvier 2009
    Messages
    3 999
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable Datas

    Informations forums :
    Inscription : janvier 2009
    Messages : 3 999
    Points : 9 311
    Points
    9 311
    Par défaut
    Bonjour,
    Je vais tenter de te l'expliquer via une analogie.
    Imaginons que ma télécommande soit un sous-programme (ou une fonction, c'est kif kif ici).
    Les paramètres d'entrée sont les touches, et la valeur de sortie le signal émis.
    La télécommande est une boîte noire:
    • Tout ce qu'on sait d'elle c'est l'état des touches (i.e. la valeur des paramètres) et la valeur de retour (le signal)
    • Tout ce que la commande sait du monde extérieur est l'état des touches (ces paramètres d'entrée). Elle seul sait comment "calculer" le signal de sortie.

    Je délègue le calcul du signal pour commander ma télé à la télécommande, tout ce qui m'importe est de savoir quelle touche utiliser, donc quel paramètre lui passer.
    Comment ce fait le "calcul" m'est totalement indifférent.

    Pour une fonction, c'est pareil. Tout ce qui t'intéresse est de soir quoi lui passer pour avoir le résultat voulu.
    Après rien ne t'empêche de démonter la télécommande (voir le code du sous-programme), mais c'est juste de la curiosité.

    Tatayo.

  3. #3
    Rédacteur/Modérateur

    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    décembre 2013
    Messages
    2 653
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Conseil

    Informations forums :
    Inscription : décembre 2013
    Messages : 2 653
    Points : 5 801
    Points
    5 801
    Par défaut
    Je vais y aller de mon analogie moi aussi.
    Dans un programme , si tu mets par exemple l'instruction x = x + sinus(t), tu fais appel à un sous-programme (ou à une fonction), la fonction sinus()Le sous-programme sinus() va prendre en compte ton paramètre, (t dans mon exemple), et il va te renvoyer une valeur, la valeur de sin(t).

    En principe, ce sous-programme sinus(), tu n'as pas besoin de l'écrire toi-même, les concepteurs de Java ou de ton outil de programmation ont pré-programmé cette fonction sinus() ; Mais c'est un sous-programme (ou une fonction) comme un autre.

    Ici, Tatayo ou moi, on a l'air de dire que sous-programme ou fonction, c'est strictement pareil. En vrai, il y a quand même quelques différences.
    N'oubliez pas le bouton Résolu si vous avez obtenu une réponse à votre question.

  4. #4
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    septembre 2019
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : septembre 2019
    Messages : 10
    Points : 7
    Points
    7
    Par défaut
    Est ce que c'est possible d'avoir un exemple avec justement l'exemple de la télécommande ? Un exemple avec la syntaxe de rédaction d'un sous programme etc..
    Je pense que je peux comprendre encore plus avec un exemple rédigé...

  5. #5
    Expert éminent
    Homme Profil pro
    Responsable Datas
    Inscrit en
    janvier 2009
    Messages
    3 999
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable Datas

    Informations forums :
    Inscription : janvier 2009
    Messages : 3 999
    Points : 9 311
    Points
    9 311
    Par défaut
    Allez, un petit exemple, en C#:
    Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    …
    	messages = GetMessages("ENC", cnxTorpedo);
    	TraceAdd(TraceLevel.Info, $"{messages.Count} messages à traiter");
    ...
    Le code appelle ici 2 fonctions: GetMessages et TraceAdd(). La première renvoie une liste d'objet, et la seconde rien.
    Voici la déclaration des 2 fonctions (enfin l'entête uniquement, le corps de la fonction ne nous intéresse pas ici):
    Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    internal static List<Message> GetMessages(string ressourceType, DbProxy cnx)
    {
    …
    	List<Message> messages = new List<Message>();
    	return messages;
    …
    }
    internal static void TraceAdd(TraceLevel level, string message)
    {}
    Pourquoi déclarer ces fonctions ? Pour ne pas à retaper le code correspondant partout où j'en ai besoin.
    Ainsi pour la première fonction, dès que je veux ajouter une trace (dans un fichier log, à l'écran), j'appelle directement la fonction.
    De même, si je veux modifier la façon dont j'enregistre les logs (par exemple en les ajoutant dans la base de données), je ne le fait qu'à un seul endroit: dans la fonction.

    Tatayo.

  6. #6
    Membre habitué
    Homme Profil pro
    Développeur de jeux vidéo
    Inscrit en
    février 2013
    Messages
    210
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Développeur de jeux vidéo

    Informations forums :
    Inscription : février 2013
    Messages : 210
    Points : 158
    Points
    158
    Par défaut
    J'y vais de la mienne: Pour faire un gâteau, tu fais une série d'actions, les sous-programmes c'est quand tu délègue des actions à d'autres, et les paramètres ce sont les ingrédients que tu leur donne; toi tu fais les courses et tu mets la farine dans un bol, tu "passe" les oeufs à ton fils qui va les casser et les battre, tu "passe" le sucre à ta fille qui va le peser et enlever les fourmis qui l'ont attaqué; ton fils peut te renvoyer les oeufs juste cassés ou cassés et battus; quand les oeufs sont entre les mains de ton fils tu peux les voir entiers ou cassés (ce ne sont alors plus des oeufs entiers (c'est la "portée" des variables).
    Savoir pour comprendre et vice versa.

Discussions similaires

  1. Je ne comprends rien aux outils de test logiciel
    Par manuhexadec dans le forum ALM
    Réponses: 0
    Dernier message: 11/03/2017, 16h09
  2. [Débutant] GUI je ne comprends rien aux callbacks et handles
    Par negyxo27 dans le forum Interfaces Graphiques
    Réponses: 2
    Dernier message: 14/10/2010, 11h36
  3. J'y comprend rien aux modules
    Par PadawanInPerl dans le forum Modules
    Réponses: 2
    Dernier message: 15/02/2010, 12h13
  4. Programme où je comprends rien
    Par MeTaLCaM dans le forum Prolog
    Réponses: 3
    Dernier message: 24/05/2009, 19h36
  5. cx_oracle : je comprends rien aux dates
    Par ustilago dans le forum Bibliothèques tierces
    Réponses: 4
    Dernier message: 14/01/2008, 14h28

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