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 :

Convertir une chaîne en terme


Sujet :

Prolog

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 5
    Points : 3
    Points
    3
    Par défaut Convertir une chaîne en terme
    Je cherche à convertir une chaine en un terme.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    chaine_to_terme('chaine',Res).
    Res = chaine
    Comment puis-je faire ?

  2. #2
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    38
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Novembre 2004
    Messages : 38
    Points : 42
    Points
    42
    Par défaut
    En swi-prolog, il me semble que tu peux utiliser atom_chars/2 ou atom_codes/2.
    Le deuxième argument peut être soit sous forme de chaîne, soit sous forme de liste de caractères, soit une liste de codes.
    Exemples :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    ?- atom_codes(Res, "toto").
    Res = toto
    ?- atom_codes(Res, [t, o, t, o]).
    Res = toto
    ?- atom_codes(Res, [97, 98, 97, 98]).
    Res = abab
    atom_chars/2 a exactement le même comportement.

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 5
    Points : 3
    Points
    3
    Par défaut
    En fait l'idée c'est que je voudrais pouvoir mettre une majuscule.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    predicat('nom',Res).
    Res = Nom
    Avec atom_codes ça me retourne 'Nom'. Je ne peux pas me servir de 'Nom' car c'est une constante et j'ai besoin d'une variable.

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    38
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Novembre 2004
    Messages : 38
    Points : 42
    Points
    42
    Par défaut
    Je ne comprends pas pourquoi tu veux donner un nom particulier à une variable... En Prolog, cela n'a aucun sens (le nom sera perdu à la prochaine unification).

  5. #5
    Candidat au Club
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 5
    Points : 3
    Points
    3
    Par défaut
    Je dois implémenter un pseudo-sql en Prolog.

    exemple de table:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    schema(etudiant,[num_carte,nom,prenom],3,[num_carte,cp])
    Cela veut dire que j'ai une table etudiant avec 3 champs(num_carte,nom,prenom) et ma clé primaire est num_carte.

    Les diverses occurences de la table etudiant sont de cette forme:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    etudiant(1234, dupond, pierre).
    etudiant(1324, durand, celine).
    Imaginons que je veuille faire un "select nom from etudiant" ce qui revient à taper etudiant(_,Nom,_) avec prolog.
    Cela va me donner:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    ?-etudiant(_,Nom,_).
    Nom = dupond;
    Nom = durand;
    No.
    Seulement la contrainte que j'ai pour l'implementation c'est d'avoir un predicat de cette forme:
    select(Relation, Attributs_recherches, Attributs_values).

    Ce qui me donne:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select(etudiant,[nom],[]).
    Pour l'instant j'arrive à avoir etudiant(_G152,'Nom',_G584).

    Ce qui ne marche pas. J'ai voulu transformer mon nom en Nom. Si tu as une meilleure solution pour placer une variable à la place de 'Nom' je suis preneur.


    EDIT: j'oublie de préciser que cela doit marcher avec d'autres tables que l'on aurait ecrite avec:

    schema(Nom_Relation,ListeAttributs,NbreAttributs,Contraintes)

Discussions similaires

  1. Réponses: 7
    Dernier message: 20/09/2006, 13h42
  2. Convertir une chaîne binaire en signal carré
    Par hotdog dans le forum Signal
    Réponses: 1
    Dernier message: 06/09/2006, 10h01
  3. Convertir une chaîne utf8 en iso-8859-1
    Par dredre dans le forum ASP
    Réponses: 1
    Dernier message: 05/05/2006, 00h48
  4. Convertir une chaîne en date
    Par davinout dans le forum Langage
    Réponses: 4
    Dernier message: 25/04/2006, 19h35
  5. Réponses: 3
    Dernier message: 28/09/2003, 10h46

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