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

Langage Pascal Discussion :

Utilité et fonctionnement des fonctions et procédures


Sujet :

Langage Pascal

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2014
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2014
    Messages : 19
    Points : 13
    Points
    13
    Par défaut Utilité et fonctionnement des fonctions et procédures
    Salut à tous
    Voilà, j'ai un petit problème : je n'arrive pas à comprendre l'utilité des fonctions et procédures et je n'arrive pas à comprendre comment elles fonctionnent...
    J'espère que vous pourrez m'aider...
    Merci infiniment.

  2. #2
    Modérateur
    Avatar de l_autodidacte
    Homme Profil pro
    Retraité : Directeur de lycée/Professeur de sciences physiques
    Inscrit en
    Juillet 2009
    Messages
    2 415
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Retraité : Directeur de lycée/Professeur de sciences physiques
    Secteur : Enseignement

    Informations forums :
    Inscription : Juillet 2009
    Messages : 2 415
    Points : 5 806
    Points
    5 806
    Par défaut
    voila j'ai un petit probleme......
    On ne vient ici que pour chercher de l'aide et si on a un problème que ce soit grand ou petit.
    Il vaudrait mieux éviter ce genre d'introduction inutile.
    Le forum doit être utilisé selon certaines conditions dont l'une est d'éviter le langage sms et d'utiliser un français correct et bien orthographié.

    Concernant le problème pour lequel tu cherches de l'aide, vas sur cette PAGE et tu y trouveras pratiquement tout ce qu'il te faut pour comprendre et avancer.
    Les les utilisateurs et les responsables du forum ne peuvent en aucun cas donner un cours à ceux qui n'ont aucune notion sur un thème donné. Ils n'ont pas de baguette magique et pas le temps de dispenser un cours(magique) vu leurs occupations.

    Si tu as toujours un problème après avoir consulté les tutos et cours indiqués plus, reviens poser ta(tes) question(s) accompagnée(s ) du bout de code que tu aurais produit. Dans ce cas, on pourrait t'aider.
    Ne pas oublier le tag si satisfait.
    Voter pour toute réponse satisfaisante avec pour encourager les intervenants.
    Balises CODE indispensables. Regardez ICI
    Toujours utiliser la clause Option Explicit(VBx, VBS ou VBA) et Ne jamais typer variables et/ou fonctions en VBS.
    Vous pouvez consulter mes contributions
    Ne pas oublier de consulter les différentes FAQs et les Cours/Tutoriels VB6/VBScript
    Ne pas oublier L'Aide VBScript et MSDN VB6 Fr

  3. #3
    Responsable Pascal, Lazarus et Assembleur


    Avatar de Alcatîz
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Mars 2003
    Messages
    7 929
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ressources humaines
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2003
    Messages : 7 929
    Points : 59 395
    Points
    59 395
    Billets dans le blog
    2
    Par défaut
    Bonjour,

    Ce cours complet devrait t'aider à y voir plus clair :
    http://lazarus.developpez.com/cours/...on/?page=pg_02

    Règles du forum
    Cours et tutoriels Pascal, Delphi, Lazarus et Assembleur
    Avant de poser une question, consultez les FAQ Pascal, Delphi, Lazarus et Assembleur
    Mes tutoriels et sources Pascal

    Le problème en ce bas monde est que les imbéciles sont sûrs d'eux et fiers comme des coqs de basse cour, alors que les gens intelligents sont emplis de doute. [Bertrand Russell]
    La tolérance atteindra un tel niveau que les personnes intelligentes seront interdites de toute réflexion afin de ne pas offenser les imbéciles. [Fiodor Mikhaïlovitch Dostoïevski]

  4. #4
    Membre régulier
    Profil pro
    Responsable de service informatique
    Inscrit en
    Mars 2003
    Messages
    99
    Détails du profil
    Informations personnelles :
    Localisation : France, Dordogne (Aquitaine)

    Informations professionnelles :
    Activité : Responsable de service informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2003
    Messages : 99
    Points : 108
    Points
    108
    Par défaut
    C'est probablement un peu tardif comme réponse mais bon. Au pire ça servira a d'autres.
    si t'as pas trouvé ton bonheur, et si t'es pas pressé je peux t'accorder du temps. je suis un viel utilisateur de turbo pascal, pas un pro mais pour ta question ca suffira..
    Mais tu code avec quoi ? Turbo pascal ou un IDE? c'est pas tout a fait pareil.
    Je vais rester simple.... tres simple...


    Un peu d'histoire avec Le vieux basic:

    Dans un même fichier "program" tu peux si ca te chante créer un code liste, les instructions bêtement les unes derrière les autres.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    0:a=1
    1:b=2
    2:c=a+b
    3:print c
    4:d=c+a
    5:print d
    6:e=c+b
    7:print e
    8: if getkey=chr(13) then goto 10
    9: goto 0
    10:end
    tu peux noter que les opérations sont simples et les lignes de codes sont nombreuses. allons jusqu' a Z et on se retrouve avec des instructions répétitives et ca rends très vite le code illisible. ont notera aussi au passage la possibilité de sauter d'une instruction a l'autre au sein de se code en ligne. ( le vieux basic hein..)

    Le Goto lui fait simplement se déplacer le curseur d’interprétation du code d'un endroit à un autre bêtement.


    Turbo pascal:

    Ahh! que du bonheur, pascal nous apporte des structures que l'on appel PROCEDURE et FONCTION. La différence notable entre les deux est que la FONCTION Renvoi une variable
    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
    17
    18
    19
    20
    21
    22
    23
    24
    25
     
    program test;
     
    Uses CRT;
     
    FUNCTION ADDME(a,b:integer):integer;
       var result:integer;
    begin
        result:=a+b;
        addme:=result;     ( a l'epoque je crois que c'était result:=variable; mais bon évitons de trops noyer le poisson)
    end;
     
    VAR
    a,b,c,d,e: integer;
     
    BEGIN
     
     repeat
       a:=1; b:=2;
       c:=ADDME(a,b);
       d:=ADDME(a,c);
       e:=ADDME(b,c);
     until keypressed;
     
    END.
    La fonction avait pour unique but de pouvoir renvoyer un résultat concocté par le code qu'elle contient.
    Tu peux noter qu'une fonction déclaré une foi est plus simple a modifier que trente-six foi la même dans son code source.
    Tu remarque aussi que au finale ton code est plus lisible et plus concis.

    à contrario, la PROCEDURE , elle, ne renvoie pas de donnée, elle les consomment.. miam!!!
    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
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
     
    program test;
     
    Uses CRT;
     
    FUNCTION ADDME(a,b:integer):integer;
       var result:integer;
    begin
        result:=a+b;
        addme:=result;    
    end;
     
    PROCEDURE SHOWME(a:integer);
    begin
        writeln(intToStr(a));
    end;
     
    VAR
    a,b,c,d,e: integer;
     
    BEGIN
     
     repeat
       a:=1; b:=2;
       c:=ADDME(a,b);
       SHOWME(c);
       d:=ADDME(a,c);
       SHOWME(d);   
       e:=ADDME(b,c);
       SHOWME(e);
     until keypressed;
     
    END.
    La PROCÉDURE permet comme la FONCTION de pouvoir réutiliser quelques lignes de code récurrente, de faciliter le débogage, et d’améliorer la clarté.
    Aujourd'hui la procédure peut aussi renvoyer des variable modifiés par le biais des variables passé en paramètres, mais c'est une autre histoire.

    Toutes les variables créés aux sein d'une PROCEDURE ou d'une FONCTION ne vivent uniquement que la durée de l'appel de procédure et uniquement au sein de celle ci.
    Tu peux noter aussi la disparition des Goto pourris qui ne passe pas de paramètres...Les sauts quantiques de début et de fin de procédure, et le passage de paramètres par la pile sont automatiquement gérer par le compilateur.

    voilà très simplement a la base a quoi ça sert, une procédure et une fonction et quelle sont, à la base, leurs différences notoires.

    Leur utilisation:

    1- la structure d'un programme

    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
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
     
    Program [nomDeTonMagnifiqueprogramme;
     
    Uses [Mesunitéesindispenssable];
     
    CONST
       [Mes constantes globales]
     
    TYPE
       [Mes type de données]
     
    // je déclare ici mes procédures et fonctions pour pouvoir les utiliser après
    // L'ordre des déclaration des procedure était me semble t'il important, car pour les vieux compilateurs 
    // pour intégrer une procedure dans une autre procédure il fallait qu'elle soit déclaré avant celle qui l'utilise)
    PROCEDURE [maproc]( paramètres1,paramètre2,...: le type de mes paramètres; parametre3,parametres4,...:type de mes paramètres);   
     VAR
        [mes variables locales]
    BEGIN 
        [debut de ma procedure]
        ...
        [fin de ma procedure]
    END;
     
    FUNCTION [mafonction](paramètres1,paramètre2,...: le type de mes paramètres; parametre3,parametres4,...:type de mes paramètres): [TYPE du résultat à renvoyer];   
     VAR
        [mes variables locales]
    BEGIN 
        [debut de ma procedure]
        ...
        mafonction:=monrésultatàtransmettre;
        [fin de ma procédure]
    END;
     
    VAR
       [mes variables globales]:Type de mes variables globales;
    BEGIN
       [début de mon programme principale]
         [appels de mes procedures et fonctions;]
       [fin de mon programme principale]
    END.
    voilà, comme les variables, les procédures doivent être "déclarés" au compilateur avant leur première utilisation(appel) par le programme principal.

    jespere avoir répondu a tes premieres attentes.

    si ton manque d'info persiste : http://mfritz.perso.sfr.fr/SectionEC...rbo-pascal.pdf

Discussions similaires

  1. Réponses: 5
    Dernier message: 09/04/2014, 23h53
  2. Déclaration des fonctions et procédure ..vues ou triggers
    Par hicham20 dans le forum SQL Procédural
    Réponses: 1
    Dernier message: 08/05/2009, 00h31
  3. Regroupage des fonctions et procédures dans une unité
    Par gilardino dans le forum Débuter
    Réponses: 3
    Dernier message: 15/04/2008, 02h58
  4. Fonctionnement des fonctions sous MySql
    Par crazyday dans le forum SQL Procédural
    Réponses: 2
    Dernier message: 19/05/2007, 23h35

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