Salut à tous,
est-il possible en prolog de créer une variable globale ?
Si oui, comment fait-on pour modifier sa valeur dans une sous fonction ?
Merci
Salut à tous,
est-il possible en prolog de créer une variable globale ?
Si oui, comment fait-on pour modifier sa valeur dans une sous fonction ?
Merci
Bonjour
A ma connaissance non il n'y a pas de notion de variable globale.
Point supplémentaire, en prolog une variable ne peut pas changer de valeur une fois qu'elle a été unifiée... (à part via le backtracking de l'interpréteur, mais ce n'est pas vraiment un changement de valeur) C'est une notion essentielle à saisir.
Par contre tu peux mettre un "fait" dans le texte de ton programme, qui sera accessible de n'importe quel prédicat. Par exemple si je mets ça :
alors n'importe où dans le programme, prolog pourra savoir que les prédicats suivants sont vrais :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 valeur(x, 3). valeur(_, 4).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 valeur(x, 3). valeur(X, 4). valeur(Y, 4). valeur(nimportequoi, 4).
En SWI-Prolog cette notion existe : voir ici
Un mécanisme simple est
et
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 nb_setval(+Name, +Value) Associates a copy of Value created with duplicate_term/2 with the atom Name. Note that this can be used to set an initial value other than [] prior to backtrackable assignment.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 nb_getval(+Name, -Value) The nb_getval/2 predicate is a synonym for b_getval/2, introduced for compatibility and symmetry. As most scenarios will use a particular global variable either using non-backtracable or backtrackable assignment, using nb_getval/2can be used to document that the variable is used non-backtracable.
"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
Je connaissais pas... Mais c'est un peu le même mécanisme que ce que j'ai proposéEnvoyé par Trap D
Merci
je ne connaissais pas ces commandes, nb_setval() et nb_getval(),
elles sont tres pratique.
Voici un exemple pour utiliser une variable globale :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 main :- T = 1, nb_setval(myvar, T), nb_getval(myvar, V), writeln(V).
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager