• Aucun résultat trouvé

Télécharger Cours gratuit de langage Prolog pdf

N/A
N/A
Protected

Academic year: 2021

Partager "Télécharger Cours gratuit de langage Prolog pdf"

Copied!
24
0
0

Texte intégral

(1)

Le langage Prolog

(Demo I)

Atefeh Farzindar Ift3330 Ift6330 A-2003

(2)

Table des matières

Demo 1

• Introduction

• Syntaxe et terminologie Prolog • Les termes en Prolog

• Les relations, ou atomes logiques • Clauses

(3)

Introduction

Le Prolog est un langage de programmation

symbolique lié :

à la logique formelle;

à une modélisation du raisonnement;

au traitement linguistique;

Application, aux bases de données : il

est facile d’interfacer une base de données

avec un module logique écrit en Prolog.

(4)

Syntaxe et terminologie Prolog

• Un programme Prolog est constitué d'un ensemble de clauses ; une clause est une affirmation portant sur des atomes logiques ; un atome logique exprime une relation entre des termes ;

• termes et relation entre des termes => clause

ex: père(marie,luc)

(5)

1.

Les termes en Prolog

Les objets manipulés par un programme

Prolog (les "données" du programme) sont

appelés des termes.

1.Les Constantes

2.Les variables

(6)

I. Les Constantes

Les termes atomiques représentent les objets simples connus de l'univers.

1. Atomes : un identificateur est une chaîne

alpha-numérique commençant par une minuscule (ex. toto, aX12, jean_Paul_2 ).

2. Nombres : entiers ou flottants (ex. 19, -25, -3.14,

23E-5).

3. Chaînes de caractères entre guillemets (ex.

(7)

II. Les variables

• Les variables représentent des objets inconnus de l'univers.

• Une variable Prolog représente toujours le même objet tout au long de sa durée de vie et ne peut pas changer de valeur.

La variable commençant par:

1. Une majuscule =>La valeur de la variable nous intéresse. (ex. Var, X, Var_longue_2)

2. Un sous-ligné => La valeur de la variable anonyme ne nous importe pas. (ex. _objet, _21).

(8)

III.

Les termes composés

• Les termes composés représentent les objets composés de l'univers. Ils se composent d’un foncteur avec une suite d’arguments.

• Les arguments peuvent être des atomes, des nombres, des variables, ou bien des structures Exemple:

élève(robert, 1975, info, 2,

adresse(6, 'jean Brillant', 'Montréal')).

(9)

foncteur (t1, ..., tn)

Foncteur est une chaîne alpha-numérique commençant par une minuscule, et t1, ..., tn sont des termes (variables, termes élémentaires ou termes composés).

• Le nombre d'arguments n est appelé arité du terme.

• Exemple : adresse(18,’ave Decelles’,Ville)

est un terme composé de foncteur adresse et d'arité 3, dont les deux premiers arguments sont les termes élémentaires et le troisième argument est la variable Ville.

(10)

2. Les relations, ou atomes logiques

symbole-de-prédicat(t1, ..., tn )

• Un atome logique exprime une relation entre des termes ; cette relation peut être vraie ou fausse.

• Ça commence par une minuscule, et t1, ..., tn sont des termes.

• Le nombre d'arguments n est appelé arité de l'atome logique.

Exemple : père(paul, jean).

est une relation d'arité 2 entre les termes élémentaires paul

et jean pouvant être interprétée par paul est le

(11)

3. Clauses

Syntaxe <tête> :- <corps>

Trois sortes de clauses :

I. Faits Ex. masculin(jean).

II. Règles Ex. parent(X, Y):-père(X, Y).

parent(X, Y):-mère(X, Y).

III. Questions Ex. ?- masculin(jean).

Yes

?- masculin(françois). No. (Pas dans la base de données)

(12)

I.

Les faits

• Faits est en effet équivalente à :

fait :- true. (Pas de corps)

La forme générale d’un fait est la suivante :

prédicat(argument1,argument2, …).

Un prédicat est un symbole qui traduit une relation. L’arité est le nombre de ses arguments. On identifie un prédicat par son nom et son arité :

(13)

II. Les règles

• Les règles permettent d’exprimer des conjonctions de buts. Leur forme générale est :

• TÊTE :- C1, C2,... ,Cn.

• La tête de la règle est vraie si chacun des éléments du corps de la règle C1,... ,Cn est vrai. On appelle ce type de règles des clauses de Horn.

(14)

« OU » et « ET » Logique :

Dans le corps d’une règle, la virgule « , » est

le symbole représentant un ET

logique (conjonction). Le symbole « ; »

représente le OU logique (disjonction).

A :-B,C;D.

est équivalent à

A :- B,C.

(15)

Exemple

masculin(jean). masculin(paul). masculin(luc). masculin(pierre). féminin(isabelle). féminin(catherine). féminin(marie). père(jean,paul). père(jean,isabelle). père(paul,luc). père(luc,catherine). mère(isabelle,pierre). mère(catherine,marie). CATHERINE ISABELLE JEAN PAUL LUC PIERRE MARIE

(16)

fils(A,B):-père(B,A), masculin(A). fils(A,B):-mère(B,A), masculin(A). parent(X,Y):-père(X,Y). parent(X,Y):-mère(X,Y). grand_parent(X,Y):- CATHERINE ISABELLE JEAN PAUL LUC PIERRE

(17)

Récursivité

Définissons un nouveau prédicat « ancêtre/2 » déterminant l’ancêtre X de Y par récursivité :

1. Condition de terminaison de la récursivité si c’est un parent direct.

ancêtre(X, Y) :- parent(X, Y).

2. Sinon X est ancêtre de Y si et seulement si il existe Z, tel que X parent de Z et Z parent de Y.

ancêtre(X, Y)

(18)

• Lors de l’exécution d’une requête, Prolog examine les règles ou les faits correspondants dans l’ordre de leur écriture dans le programme : de haut en bas.

• Il utilise la première règle (ou le premier fait) du prédicat pour répondre. Si elle échoue, alors il passe à la règle suivante et ainsi de suite jusqu’à épuiser toutes les règles (ou tous les faits) définies pour ce prédicat.

• Lorsqu’une règle est récursive, l’interprète Prolog rappelle le prédicat du même nom en examinant les règles (ou les faits) de ce prédicat dans le

(19)

III. Les questions

Une fois le programme chargé, on peut poser des questions sur les faits.

On peut aussi utiliser des variables. Elles peuvent s’identifier à toutes les autres valeurs : aux constantes, aux termes composés, aux variables elles-mêmes.

« ; » demander la solution suivante, Retour arrête la recherche des solutions. | ?- mère(isabelle,X). X = pierre ?; Yes | ?- parent(jean,X). X = paul ? ; X = isabelle

(20)

| ?- fils(A,B). A = paul, B = jean ? ; A = luc, B = paul ? ; A = pierre, B = isabelle | ?- ancêtre(jean,X). X = paul ? ; X = isabelle ? ; X = luc ? ; X = catherine ? ;

(21)

Utilisation de Sicstus Prolog au

DIRO

1. Dans votre fichier de configuration du

shell(.cshrc) ajouter la ligne:

inclure sicstus–3.9.0

2. Pour utiliser Prolog:

%sicstus

3.

Écrivez votre programmes dans un fichier

texte avec le suffixe « .pl »

(22)

Chargement de fichiers

Pour compiler et charger un programme : ?- consult(nom_du_fichier). par exemple :

?- consult('file.pl').

ou bien le raccourci avec la commande : ?- [nom_du_fichier].

par exemple

?- ['file.pl'].

Chargement de plusieurs fichiers simultanément ?- ['file1.pl', 'file2.pl'].

(23)

• Si on modifie le programme dans le fichier, on peut mettre à jour la base de données par

?- reconsult('file.pl'). Le raccourci de rechargement est : ?- [-'file'].

• Difference entre reconsult et

consult:consult toujours concatène les

nouvelles règles à la B. de C. mais reconsult redéfinie les anciennes relations qui étaient déjà définies.

(24)

L’affichage du contenu du fichier chargé se fait par : ?- listing.

L’affichage d’une clause particulière, ici « père», se fait par :

?-listing(père/2).(ou listing(père)) père(paul, jean).

père(luc,paul).

• Finalement, on quitte Prolog avec halt.

Références

Documents relatifs

Dentre os vários fatores que continuam preocupando os pipericultores dessa região, e que limitam a produtividade da cultura, destacam-se a fusariose, a

A rigid actin and myosin filaments hypothesis is made, so that for each active bridge the microscopic strain rate ˙s is equal to the macroscopic filament sliding rate ˙e c.. What

In their study of the co-gasification of coal, biomass and plastics wastes with air/steam mixtures in a fluidized bed reactor, Pinto et al., 2003 [81] studied the

It is found that the three major factors affecting the decomposition rate of epoxy matrix are, in order of increasing influence, the steam flow-rate (slope term of 2.93), the

Nous y étudions l'ensemble des enclos fossoyés découverts par prospection aérienne depuis 1975 en Bretagne nord, en nous inspirant des méthodes d'app r oche mises

conduite de la guerre pour les deux aspects du même monopole étatique de la violence légitime a pu être facilitée par cette répartition telle

La disparition de la « république serbe de Krajina » lève le principal obstacle à un rapprochement entre la Serbie et la Croatie, quand le contrôle des territoires repris

Le montrer a par ailleurs permis d'étudier plus avant la structure de la deuxième partie de l'Éthique et la manière dont Spinoza a enchaîné ses propositions