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 :

[LG] Compilation de fonction 'sans retour', ...


Sujet :

Langage Pascal

  1. #1
    Membre régulier
    Inscrit en
    Août 2002
    Messages
    132
    Détails du profil
    Informations forums :
    Inscription : Août 2002
    Messages : 132
    Points : 102
    Points
    102
    Par défaut [LG] Compilation de fonction 'sans retour', ...
    Bonjour à tous!

    Ceci est plus une remarque qu'une question...

    Une fonction est censée renvoyer un résultat, pourtant, si on ne met pas de renvoi dans le code, cela compile! Pas que ça m'embête, mais ça m'a surpris!!!

    De plus, pour moi, une fonction est comme une valeur, pourtant juste une valeur sur une ligne donne une erreur à la compilation, pas une fonction!

    Mais ... Un petit exemple vaut mieux qu'un long discours :

    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
     
    program exple;
    function a : integer;
    begin
        writeln('On est dans a, sans a:=...');
        readln;
    end;
    function b : integer;
    begin
        writeln('Entree dans b');
        b:=3;
        readln;
    end;
    BEGIN
        a;
        b;        {Ceci compile, par contre, " 3; " ne compile pas!}
        writeln(b);
        readln;
    END.
    Bon ... Je sais, ce code ne sert à rien!
    Mais, par contre, je trouve bizzarre qu'il compile : dans la fonction a, il n'y a pas de a:=..., comment cela se fait-il?
    Et... pourquoi a; ou b; compile, alors que ce sont des fonctions et pas des procédures?

    Bon ... C'est pas trop gênant, hein! Juste un peu perturbant, la première fois qu'on s'en rend compte!

    Merci! A bientot!

  2. #2
    Membre habitué
    Avatar de Stormy_Ordos
    Profil pro
    Expert sécurité informatique
    Inscrit en
    Mars 2005
    Messages
    91
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Expert sécurité informatique

    Informations forums :
    Inscription : Mars 2005
    Messages : 91
    Points : 166
    Points
    166
    Par défaut
    Bonjour!

    ... juste pour savoir: tu n'aurais pas fait du C++ ou du JAVA avant pascal?

    sinon, au niveau de la structure d'un programme, Pascal ne considère pas vraiment les fonctions au sens strictement mathématique (ce qui n'est pas le but de pascal: Wirth avait voulu créer un langage pédagogique qui exerce les étudiants à voir le processus d'exécution de la machine d'un peu plus près, tout en restant restrictif au possible pour former de beaux algorithmes bien conçus).

    Donc, une fonction est distincte d'une procédure, en pascal, par le fait qu'elle PEUT renvoyer une valeur. Maintenant, la valeur de retour peut aussi être vide, le compilo s'en fout (on est pas obligé de placer un Return machin; à la fin de la fonction). La procédure, elle, ne représente qu'un tronc de code sans valeur du tout.

    Mais bon, en réalité, écrire une fonction qui ne retourne rien est inutile, et souvent regardé comme une mauvaise implémentation: si tu ne dois rien retourner, il vaut mieux déclarer une proc.

    a++

  3. #3
    Membre habitué
    Avatar de Stormy_Ordos
    Profil pro
    Expert sécurité informatique
    Inscrit en
    Mars 2005
    Messages
    91
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Expert sécurité informatique

    Informations forums :
    Inscription : Mars 2005
    Messages : 91
    Points : 166
    Points
    166
    Par défaut
    Maintenant que j'y pense, le fait qu'une fonction n'ait pas forcément besoin de renvoyer une valeur se justifie au niveau mathématique. Ca existe, les fonctions renvoyant du vide. Par exemple, pour ta fonction a, on aurait : Function A : Z -> Ø.

  4. #4
    Membre régulier
    Inscrit en
    Août 2002
    Messages
    132
    Détails du profil
    Informations forums :
    Inscription : Août 2002
    Messages : 132
    Points : 102
    Points
    102
    Par défaut
    Pour ta première question, mon parcours 'programmation' est le suivant : apprentissage (quand j'étais tout petit ) par le Basic, sur Amstrad et sur commodore... Puis j'ai fait un peu de Fortran à l'université, et puis du Java. Enfin, pour mon boulot, je me suis mis au Pascal : j'enseigne la programmation et j'ai choisi ce langage-là pour enseigner les bases de la programmation impérative et procédurale... (pour info, je vois aussi un peu de Java avec eux, pour la programmation orientée objet).

    Je sais donc qu'en Java, on ne parle pas de fonction/procédure mais de méthode, une méthode qui renvoie void est une procédure et une autre est une fonction... Je sais tout ça

    J'ai vu qu'il compilait une fonction qui ne renvoie rien... J'ai juste été surpris, la première fois que j'ai remarqué celà, et ... tout à fait d'accord avec toi, programmer une fonction qui ne renvoie rien est abbérant, puisque c'est juste une procédure!

    Merci pour tes réponses!

    A bientot!

  5. #5
    Rédacteur/Modérateur
    Avatar de M.Dlb
    Inscrit en
    Avril 2002
    Messages
    2 465
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Avril 2002
    Messages : 2 465
    Points : 4 312
    Points
    4 312
    Par défaut
    Tu peux également leur enseigner la programmation objet avec Pascal ! La majorité des concepts de la POO ont été introduit avec Turbo Pascal 5 je crois (ou 5.5 ?).

    Tu peux donc tout à fait leur apprendre l'héritage, la privatisation ou le polymorphisme. Je te conseille de lire le cours sur la POO d'Hdd34 :

    http://hdd34.developpez.com/cours/artpoo/

    Ou de le faire lire à l'occasion à tes étudiants !

  6. #6
    Membre régulier
    Inscrit en
    Août 2002
    Messages
    132
    Détails du profil
    Informations forums :
    Inscription : Août 2002
    Messages : 132
    Points : 102
    Points
    102
    Par défaut
    Oui, je sais que les concepts de la POO sont accessibles avec le Pascal, mais je pense que c'est aussi une bonne chose qu'ils connaissent les bases d'un deuxième langage... D'autant que le Java est un langage moderne, utilisable par le WEB, ...

    Mais ... Je lirai le lien dès que le temps me le permet, merci!

    A +

Discussions similaires

  1. Réponses: 2
    Dernier message: 05/03/2012, 16h31
  2. [PHP 5.0] [Système] fonction system(), les valeurs sans retours
    Par keaton7 dans le forum Langage
    Réponses: 18
    Dernier message: 17/07/2009, 22h01
  3. Problème de fonction sans retour
    Par Bahan dans le forum C
    Réponses: 1
    Dernier message: 14/09/2007, 19h25
  4. Fonction sans retour?
    Par MicaelFelix dans le forum ASP.NET
    Réponses: 5
    Dernier message: 23/05/2007, 08h25
  5. [TP]Compiler un prog sans entrer dans TP7
    Par poppels dans le forum Turbo Pascal
    Réponses: 11
    Dernier message: 23/10/2002, 18h46

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