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 :

Interface XPCE pour Prolog


Sujet :

Prolog

  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2014
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2014
    Messages : 2
    Points : 2
    Points
    2
    Par défaut Interface XPCE pour Prolog
    Bonjour, dans le cadre d'un projet sur Prolog, j'aurais besoin d'intégrer mon code
    dans une interface plutôt simple, il s'agit de la conjugaison de verbes.

    j'ai bien essayé avec l'éditeur intégré de SWI prolog, mais j'y arrive pas.

    pour donner un exemple simplifié de mon code:

    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
     
    conjugue-continuous(Infinitif) :- racine(Infinitif,Racine,Suffixe), termine2(Infinitif).
    conjugue-continuous(Infinitif) :- racine2(Infinitif,Racine,Suffixe), termine3(Infinitif).
     
     
    racine(Infinitif,Racine,Suffixe) :- append(Racine,Suffixe,Infinitif), Suffixe == [101].
     
    racine2(Infinitif,Racine,Suffixe) :- append(Racine,Suffixe,Infinitif), Suffixe == [].
     
    terminaison("i am","ing"). 
    terminaison("you are","ing"). 
    terminaison("he is","ing"). 
    terminaison("we are","ing"). 
    terminaison("they are","ing"). 
     
     
    termine2(Infinitif) :- racine(Infinitif,Racine,Suffixe), terminaison(Debut,Fin),name(Deb,Debut),
     write(Deb), write(' '), append(Racine,Fin,Verbe), 
     name(V,Verbe), write(V),nl,fail.
     
    termine3(Infinitif) :- racine2(Infinitif,Racine,Suffixe), terminaison(Debut,Fin),name(Deb,Debut),
     write(Deb), write(' '), append(Racine,Fin,Verbe), 
     name(V,Verbe), write(V),nl,fail.
    le but est d'avoir un simple champ de texte, ou je tape le verbe à conjuguer, un bouton pour lier le prédicat conjugue-continuous, et un label pour afficher le résultat.
    Merci d'avance pour vos réponses.

  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
    J' ai créé le code pour que tu puisse utiliser une boîte de dialogue, mon code ne fonctionne que pour le premier conjugue-continuous(Infinitif), (j'ai l'impression que ce sont les verbes qui se terminet par 'e'.
    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
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    % le code de termine2 adapté pour écrire dans l'editeur
    termine2(Infinitif, Editor) :-
    	racine(Infinitif,Racine,_Suffixe),
    	forall(	terminaison(Debut,Fin),
    		(   name(Deb,Debut),
    		    append(Racine,Fin,Verbe), name(V,Verbe),
    		    format(atom(A), '~w ~w~n', [Deb, V]),
    		    send(Editor, append, A))).
     
    % le prédicat apellé par le bouton 
    conjugaison(Atom, Editor) :-
    	send(Editor, clear),
    	name(Atom, Infinitif), 
    	racine(Infinitif,_Racine,_Suffixe), termine2(Infinitif, Editor).
     
    % le code de la boîte de dialogue
    dialog(my_dialog,
           [ object        :=
    	   My_dialog,
    	 parts         :=
    	   [ My_dialog := dialog('My dialog'),
    	     Text_item := text_item(text_item),
    	     Editor    := editor(@default, 32, 8),
    	     Button    := button(button)
    	   ],
    	 modifications :=
    	   [ Text_item := [ label  := 'Verbe à conjuguer',
    			    length := 28
    			  ],
    	     Button    := [ label := 'Go'
    			  ]
    	   ],
    	 layout        :=
    	   [ area(Text_item,
    		  area(28, 20, 322, 24)),
    	     area(Editor,
    		  area(30, 68, 327, 150)),
    	     area(Button,
    		  area(380, 22, 80, 24))
    	   ],
    	 behaviour     :=
    	   [ Button := [ message := message(@prolog,
    					    conjugaison,
    					    Text_item?selection,
    					    Editor)
    		       ]
    	   ]
           ]).
     
    % le prédicat de lancement du programme
    go :-
           make_dialog(D, my_dialog),
           send(D,open).
    "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
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2014
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2014
    Messages : 2
    Points : 2
    Points
    2
    Par défaut merci
    je vous remercie beaucoup pour votre aide, le code n'a pas l'air de fonctionner sur ma machine:
    j'obtiens ce message d'erreur.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Foreign predicate pce_principal:send/2 did not clear exception: error(existence_error(procedure,racine/3),context(conjugaison/2,_G262))
    aussi je voudrais, si possible, quelques éclaircissements sur le prédicat format, qui à priori sert à afficher du texte.

  4. #4
    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
    Je n'ai fait que donner les modifications à apporter à votre code, je n'ai pas donner le code complet, e.g. racine/3 n'ayant pas été modifié, je ne l'ai pas donné, à vous de le rajouter dans votre code.
    Pour ce qui est de format, il y a la doc SWI-Prolog accessible par Menu/help/help.
    "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. Comment faire une interface pour PROLOG
    Par david-santon31 dans le forum Sujets
    Réponses: 1
    Dernier message: 12/05/2018, 02h36
  2. L'interface XPCE du prolog et ACCESS
    Par LovaMickael dans le forum Prolog
    Réponses: 7
    Dernier message: 03/12/2014, 21h22
  3. prolog et l'interface xpce
    Par habibaroubi dans le forum Prolog
    Réponses: 3
    Dernier message: 28/12/2010, 09h43
  4. Version de XPCE pour Turbo Prolog ?
    Par killer_instinct dans le forum Prolog
    Réponses: 1
    Dernier message: 16/03/2007, 19h11

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