Télécharger la présentation
1
La Programmation Logique: PROLOG
Aline Deruyver IUT Robert Schuman
2
Plan Introduction Les premiers programmes PROLOG
Historique Différences avec les autres langages Les premiers programmes PROLOG Les 2 parties d ’un programme Un programme avec variables Le raisonnement PROLOG Présentation de l ’exemple détails du raisonnement (arbre de raisonnement) Les principes
3
Plan L ’unification Le CUT Introduction aux listes définition Exemples
Le CUT et la négation Le CUT pour sélectionner une règle Introduction aux listes Définition Etude du prédicat appartient
4
Le premier programme PROLOG
?- lire /*question ou but*/ /*Règle 1*/ lire :- write("donner un entier"), read(X), nl, write("votre entier est"), write(X), nl.
5
Une petite base de données
/*faits*/ personne(germaine, 85). personne(émile, 63). personne(léon, 35). personne(lucie, 27). personne(louis, 40). personne(pauline, 9). personne(jean, 1). personne(luc, 27). /Règles*/ individu(X) :- personne(X,_). Majeur(X) :- personne(X,Y), Y>=18. Mineur(X) :- personne(X,Y), Y<18. Meme_age(X,Y) :- personne(X,Z), personne(Y,Z), X =\= Y.
6
Le raisonnment PROLOG Le programme « HUMEUR »
/*but*/ ?- est_de_bonne_humeur(X), write(X). /*Faits*/ a_de_largent(jean). a_de_largent(alain). on_est_en(juillet). reussit_dans_le_travail(jean). reussit_dans_le_travail(alain). reussit_dans_sa_famille(alain). /*Règle1*/ est_en_vacances(jean) :- on_est_en(aout).
7
Le raisonnment PROLOG Le programme « HUMEUR »
/*Règle2*/ est_en_vacances(alain) :- on_est_en(juillet). /*Règle3*/ il_y_a_du_soleil :- on_est_en(aout). /*Règle 4*/ est_de_bonne_humeur(X) :- a_de_largent(X), est_en_vacances(X), il_y_a_du_soleil. /*Règle5*/ est_de_bonne_humeur(X) :- reussit_dans_le_travail(X), reussit_dans_sa_famille(X).
8
L ’unification bibliothèque(l(a(de_closets, francois), toujours_plus, c(grasset,1982)), jean). bibliothèque(l(a(borges, jorge_louis), enquêtes, c(gallimard,1957)), jean). bibliothèque(l(a(hugo, victor), les_misérables, c(_,2002)), jean). bibliothèque(l(a(foucault, michel), naissance_de_la_clinique, c(puf,1963)), pierre). bibliothèque(l(a(hugo, victor), _, c(livre_poche,2002)), pierre).
9
Utilisation du CUT /*R1*/ /*faits*/ a(X,Y) :- b(X),c(Y). c(10). /*R2*/
e(1). e(2). f(100). /*R1*/ a(X,Y) :- b(X),c(Y). /*R2*/ a(X,Y) :- d(X,Y). /*R3*/ b(X) :- e(X), !. /*R4*/ b(X) :- f(X).
10
Utilisation du CUT b(1). b(2). c(10). c(20). d(100). d(200). e(1000).
a(X1,X2,X3,X4) :- b(X1), c(X2), !, d(X3), e(X4).
11
Le CUT pour sélectionner une règle
max1(X,Y,M) :- X=<Y, M:=Y. max1(X,Y,M) :- X>Y, M:=X. max2(X1,X2,M) :- X1=<X2, !,M:=X2. max2(X1,X2,M) :- X1>X2, M:=X1. max3(X1,X2,M) :- X1=<X2,!, M:=X2. max3(X1,_,M) :- M:=X1. max4(X1,X2,X2) :- X1=<X2,!. max4(X1,_,X1).
12
Introduction aux listes
appartient(E, [E|_]). appartient(E, [_|L]):-appartient(E,L). longueur([],0). longueur([_|L], N) :- longueur(L,NN), N:=NN+1. concate([],L2,L2). concate([E|L],L2,[E|LLL]):- concate(L,L2,LLL).
13
La database ajout():- write("nom:"), read(N), write("prenom"), read(P), assert_in(personne(N,P)). supprimer():- write("nom:"), read(N), write("prenom"), read(P), retract_in(personne(N,P)).
Présentations similaires
© 2024 SlidePlayer.fr Inc.
All rights reserved.