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

Prolog Discussion :

[Débutant] Design Patterns


Sujet :

Prolog

  1. #1
    Membre à l'essai
    Inscrit en
    Mars 2009
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 18
    Points : 13
    Points
    13
    Par défaut [Débutant] Design Patterns
    Bonjour,

    je suis débutant en prolog et je vois qu'il ya une réelle différence entre reconnaitre un programme et le concevoir

    après quelques recherches, je suis tombé sur les design patterns

    http://pcaboche.developpez.com/artic...mation-prolog/

    j'ai essayé de suivre ce tutoriel, et ai essayé sur un exemple (calcul du factoriel), mais il retourne l'erreur : "Singletone variable B".
    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
     
    facto(A,B) :-
      A<0,
      !,
      fail.
     
    facto(A,B):-
      A>0,
      !,
      C is A-1, facto(C,D), B is A*D.
     
    facto(A,B):-
      A=:=0,
      !,
      B is 1.
    Alors si quelqu'un peut m'apporter des clarifications sur cette méthode, Merci

  2. #2
    Membre actif
    Profil pro
    Étudiant
    Inscrit en
    Février 2005
    Messages
    263
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2005
    Messages : 263
    Points : 255
    Points
    255
    Par défaut
    Ce warning signifie qu'une variable est nommée mais pas utilisée.

    Si l'on prend ta première définition:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    facto(A,B) :-
    A<0,
    !,
    fail.
    on peut se rendre compte que la variable B n'est pas utilisée. Dans ce cas, ce n'est pas un oubli et donc le warning est un peu inutile, puisque c'est intentionnel. Il existe cependant une méthode pour ne plus avoir ce warning. Il suffit de remplacer la variable non-utilisée par le caractère '_'
    De plus, cette méthode possède l'avantage de fournir un code plus facilement lisible pour quelqu'un. En effet, s'il voit ce caractère '_', il va tout de suite savoir que celui-ci ne sera pas utilisé.

    Celà donnerait donc ce code ci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    facto(A,_) :-
    A<0,
    !,
    fail.
    Concernant l'utilisation du pattern, celle-ci m'a l'air tout à fait correcte.

    Est-ce que cela répond à votre question?


    [edit] une faute lors de copier/coller [/edit]

  3. #3
    Rédacteur/Modérateur
    Avatar de Trap D
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    4 942
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 4 942
    Points : 6 498
    Points
    6 498
    Par défaut
    Concernant la correction de code, le copier/collé a encore sévi
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    facto(A,_B) :-
    A<0,
    !,
    fail.
    Oubli du '_' avant B
    "La haine seule fait des choix" - Koan Zen
    "Il ne faut pas être meilleur que les autres, il faut être meilleur que soi." Albert Jacquard
    "Ceux qui savent où ils ont posé leur parapluie ne sont pas alcooliques." - pgibonne.
    Faites du Prolog, ça vous changera les idées !
    Ma page Prolog
    Mes codes sources commentés

    Mon avatar : La Madeleine à la veilleuse de Georges de La Tour

  4. #4
    Membre à l'essai
    Inscrit en
    Mars 2009
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 18
    Points : 13
    Points
    13
    Par défaut
    Merci énormément pour la réponse luckyvae, ça à réglé le problème, cependant cette méthode des design patterns ne simplifie pas tant que ça la résolution vue que le plus important à réfléchir est le cas général :

    ... :- C is A-1, facto(C,D), B is A*D.

    J'arrive à concevoir quelques programmes.. mais parfois

    La conception de programmes en prolog n'est pas tache facile comparée à la programmation déclarative, il n'y aurait pas une méthodologie à suivre pour penser en déclarative et arriver au code prolog ??..

    ( Aussi, pourrais tu m'expliquer le fonctionnement du Pattern 3.. )

    Toute aide me serait très utile surtout que j'ai l'examen dans 2 jours, Merci

  5. #5
    Membre actif
    Profil pro
    Étudiant
    Inscrit en
    Février 2005
    Messages
    263
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2005
    Messages : 263
    Points : 255
    Points
    255
    Par défaut
    Concernant la correction de code, le copier/collé a encore sévi

Discussions similaires

  1. [Débutant] Quel design pattern choisir pour le J2EE ?
    Par ghost10 dans le forum Développement Web en Java
    Réponses: 2
    Dernier message: 06/11/2010, 09h31
  2. Réponses: 4
    Dernier message: 24/02/2009, 12h06
  3. [Observateur] Précisions sur le design pattern Observer [UML]
    Par joquetino dans le forum Design Patterns
    Réponses: 2
    Dernier message: 07/10/2004, 22h35
  4. Les Designs Patterns Entreprise
    Par boulon dans le forum Design Patterns
    Réponses: 4
    Dernier message: 01/09/2004, 19h16
  5. [Design Patterns] Architecture 3 tiers
    Par HPJ dans le forum Design Patterns
    Réponses: 1
    Dernier message: 29/07/2003, 11h49

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