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 :

Pb en GNU Prolog


Sujet :

Prolog

  1. #1
    Futur Membre du Club
    Inscrit en
    Décembre 2010
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Décembre 2010
    Messages : 8
    Points : 7
    Points
    7
    Par défaut Pb en GNU Prolog
    Slt a tous les membres!
    j'ai trouver un problème en GNU prolog dès ma démarche de réaliser un Système expert en Ophtamologie!
    ma proposition c donc
    j'ai créer d'abord un fichier .pl qui contient
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    bébé(X).
    age(X,Y):- y> 0 , y =< 5, write(X,'est un bébé').
    ensuite je consulte ce fichier avec GNU prolog pour l'inférence des connaissances!
    et enfin il dirige un warinning "singleton variables [Y] for age/2"

    et pour la question que je tape c age(X,3).
    normalement il m'indique que X est bébé!
    mais il affiche ce message "uncaught exception: error(type_erroe(evaluable,y/0),(>)/2"

    alors SVP si possible de me donner le help!
    et bon courage a tous

  2. #2
    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
    Attention à ne pas mélanger les mots en initiale majuscule et minuscule.

    Les variables en Prolog commencent obligatoirement par une majuscule.
    Tout identificateur en minuscule est considéré comme un atome.
    A mon sens vous devez écrire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    age(X,Y):- Y> 0 , Y =< 5, write(X,'est un bébé').
    D'autre part, vous devez avoir un message d'alerte à la compile pour bebe(X) car X est ce qui s'appelle une variable singleton, qui n'est jamais utilisée dans le prédicat et donc inutile.
    "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

  3. #3
    Futur Membre du Club
    Inscrit en
    Décembre 2010
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Décembre 2010
    Messages : 8
    Points : 7
    Points
    7
    Par défaut GNU
    Slt a tous les membres!
    Merci beaucoup d'avoir lire et repondre a mon pb!

  4. #4
    Futur Membre du Club
    Inscrit en
    Décembre 2010
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Décembre 2010
    Messages : 8
    Points : 7
    Points
    7
    Par défaut GNU Prolog
    Bonsoir a tous les membres
    Durant mon projet, j'ai besoin d'entrer ou bien lire quelque sympthome pour pour les pour dire c'est telle maladie, j'ai esseyer avec ce code là:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    %-------------------------------------------------------------
    dans un fichier .pl j'ai ecrit:
    %faits
    vision(faible). 
    vision(double).
    vision(brouillard).
    periode(nuit).
     
    %Regles
     
    maladie(cataracte):-vision(faible),vision(double),vision(brouillard),periode(nuit).
    %---------------------------------------------------------------
    et apres la consultation avec GNU prolog
    bien sur que la ça sera maladie(cataracte).
    et repond avec Yes
    mais ce que je veux c'est faire entrer les sympthomes moi meme avec read et ensuite afficher la maladie avec write (si ce sont les sympyhomes!)
    quelqu'un m'aider SVP!
    et merci tout d'abord!

  5. #5
    Futur Membre du Club
    Inscrit en
    Décembre 2010
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Décembre 2010
    Messages : 8
    Points : 7
    Points
    7
    Par défaut GNU prolog
    j'ai esseyer d'améliorer le code précedant avec les fcts input output

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    vision(baisse). 
    vision(double). 
    vision(brouillard). 
     
    sympt :-  nl,write('entrer les sympthomes: '),read(X), symp(X).
    sympp :- vision(X). 
     
    symp(stop) :- !.
     
    symp(X,S) :- S = sympp, X is S,write(X),write(' --> la maladie cataracte'),nl.
     
    symp(X) :- sympt.
    mais le probleme c'est comment je vais entrer mes sympthomes? après la kestion
    sympt. en gnu
    et merci tout d'abord

  6. #6
    Futur Membre du Club
    Inscrit en
    Décembre 2010
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Décembre 2010
    Messages : 8
    Points : 7
    Points
    7
    Par défaut Parcourir les faits avec input
    bonsoir a tous et a toutes

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    vision(baisse).
    vision(double).
    vision(brouillard).
     
    cat(X):- vision(X).
    vision(X) :- X = baisse, X = double, X = brouillard. 
     
    sympt :- write(' tapez les sympthomes svp : '),read(X),symp(X).
    symp(X) :- cat(X),  write(' vous avez le probleme de cataracte').
    symp(X) :- write('non'),sypmt.
    le probleme comment je vais parcourir l'entré X, et la comparer avec les 3 faits
    si wi alors affiche "vous avez le probleme de cataracte"
    sinon affiche "non" et il redemande d'entrer a vouveau!

  7. #7
    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
    Cette clause
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    vision(X) :- X = baisse, X = double, X = brouillard.
    échoue toujours, il faut mettre des points-virgule :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    vision(X) :- X = baisse; X = double; X = brouillard.
    En Prolog, la virgule peut-être assimilée à 'et', le point-virgule à 'ou'.
    "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

Discussions similaires

  1. Traitement des listes avec GNU Prolog pour Java
    Par JeuneJavaiste dans le forum Prolog
    Réponses: 1
    Dernier message: 07/09/2011, 13h27
  2. [GNU Prolog] Quelles commandes pour compiler ?
    Par xeron33 dans le forum Prolog
    Réponses: 7
    Dernier message: 30/05/2009, 06h35
  3. [GNU-Prolog] fd_maximize qui ne veut pas
    Par HanLee dans le forum Prolog
    Réponses: 2
    Dernier message: 07/06/2008, 16h36
  4. [GNU-Prolog][Mémoire] Local stack overflow
    Par Maxoo dans le forum Prolog
    Réponses: 15
    Dernier message: 04/06/2008, 22h15
  5. [GNU Prolog][Débutant] Comprendre les predicats
    Par frp31 dans le forum Prolog
    Réponses: 2
    Dernier message: 26/07/2007, 21h37

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