• Aucun résultat trouvé

M1Info/BIA/2012TP1- PROLOG (PROgrammation LOGique)

N/A
N/A
Protected

Academic year: 2022

Partager "M1Info/BIA/2012TP1- PROLOG (PROgrammation LOGique)"

Copied!
2
0
0

Texte intégral

(1)

M1Info/BIA/2012 TP1- PROLOG

( PROgrammation LOGique)

Nadia Kabachi, Alain Mille, Blandine Ginon, Amjad Rattrout 08/11/2012

Avertissement : Ce TP n’est pas noté.

1. Le site de SWI-Prolog 5.4 : http://www.swi-prolog.org/

- Sources et exécutables

- Documentation et manuel de références

2. Mes premiers programmes : Faites fonctionner les programmes ci- dessous pour vous

familiariser avec l’environnement de Prolog

A)

pere(charlie,david).

pere(henri,charlie).

grandpere(X,Y) :- pere(X,Z), pere(Z,Y).

Vous tapez ce programme dans un éditeur de texte simple et sauvegardez dans un fichier « prprog.pl

» (par exemple, ou tout autre nom avec le suffixe .pl).

?- consult('

c:/prprog.pl

').

///*** attention à respecter le « chemin » d'accès à votre source Prolog.***////

% c:/prprog.pl compiled 0.00 sec, 0 bytes Yes

?- pere(X,Y).

X = charlie Y = david ; X = henri Y = charlie ;

?- grandpere(henri,X).

X = david ; No

?-halt.

B) habite(jean,paris).

habite(hans,munich).

habite(juan,madrid).

capitale(paris).

capitale(madrid).

habite-capitale(Qui) :-

habite(Qui,Qqpart),capitale(Qqpart).

Welcome to SWI-Prolog (Version 5.0.9)

For help, use ?- help(Topic). or ?- apropos(Word).

?- consult('c:/dxprog.pl').

% c:/dxprog.pl compiled 0.00 sec, 0 bytes Yes

?- habite(jean,paris).

Yes

?- habite(jean,Qqpart).

Qqpart = paris ;

Blandine Ginon, Amjad Rattrout, Nadia Kabachi & Alain Mille

(2)

No

?- habite-capitale(Qui).

Qui = jean ; Qui = juan ; No

?- habite(Qui,paris).

Qui = jean ; No

?- habite(_,Qqpart).

Qqpart = paris ; Qqpart = munich ; Qqpart = madrid ; No

?- habite(Qui,Qqpart),capitale(Qqpart).

Qui = jean Qqpart = paris ; Qui = juan

Qqpart = madrid ; No

?-halt.

C) Les Mutants non_vide([_|_]).

mutant(S) :- animal(D), animal(F), append(Debut,Milieu,D),

non_vide(Debut), non_vide(Milieu), append(Milieu,_,F),

append(Debut,F,M), name(S,M).

animal("alligator").

animal("lapin").

animal("tortue").

animal("pintade").

animal("cheval").

?- consult('c:/mutants.pl').

% c:/mutants.pl compiled 0.00 sec, 1,568 bytes Yes

?- mutant(X).

X = alligatortue ; X = lapintade ; X = chevalligator ; X = chevalapin ; No

?-

3. Manipulation de listes : Reprendre les programmes du TD6 (prolog) et tester-les.

Blandine Ginon, Amjad Rattrout, Nadia Kabachi & Alain Mille

Références

Documents relatifs

Opening the cursor allocates memory for the cursor and makes it ready for fetching the rows returned by the SQL statement into it. For example, we will open above-defined cursor

Reprenez ce prédicat, et modifiez le programme en déplaçant les tests de différence de couleurs le plus tôt possible dans l’écriture du prédicat, c’est-à-dire en vérifiant

Vous tapez ce programme dans un éditeur de texte simple et sauvegardez dans un fichier « prprog.pl » (par exemple, ou tout autre nom avec le suffixe

Etant données une station de départ et une station d'arrivée, il faut trouver un chemin de l'une à l'autre en précisant les lignes empruntées, les directions

Définir le prédicat resoudre(S) qui donne la liste S des opérateurs à appliquer pour passer de l’état initial à l’état final. On va maintenant appliquer le

Il s’agit d’un problème classique dont vous devez présenter un programme PROLOG de résolution en déclarant ce qui est doit être vrai dans toute situation et en cherchant quelles

Dans cette troisième partie du TP, nous vous proposons d’effectuer une amélioration du fonctionnement du moteur d’inférence. Vous pouvez choisir une amélioration qui vous

Pour un problème de flot à coût minimum (avec paramètres à valeurs entières), il existe toujours une solution optimale entière. Exemple 3: problème