En aquest tema, aprendrem a definir regles en Prolog. Les regles són una part fonamental de la programació en Prolog, ja que permeten expressar relacions lògiques entre fets i deduir nova informació a partir de la informació existent.
Conceptes Clau
- Regles: Són declaracions que defineixen relacions entre fets. Una regla té la forma
Cap :- Cos.
, onCap
és el fet que es dedueix si elCos
és cert. - Cap: És la part de la regla que es dedueix.
- Cos: És la part de la regla que ha de ser certa perquè el cap sigui cert. Pot contenir múltiples condicions separades per comes (AND) o punts i comes (OR).
Estructura d'una Regla
Una regla en Prolog té la següent estructura:
- Cap: És el fet que volem deduir.
- Cos: És una o més condicions que han de ser certes perquè el cap sigui cert.
Exemple Bàsic
Considerem un exemple senzill per il·lustrar com definir regles en Prolog.
pare(josep, maria). pare(josep, joan). mare(anna, maria). mare(anna, joan). germans(X, Y) :- pare(P, X), pare(P, Y), mare(M, X), mare(M, Y), X \= Y.
En aquest exemple:
- Hem definit alguns fets:
pare(josep, maria)
,pare(josep, joan)
,mare(anna, maria)
,mare(anna, joan)
. - Hem definit una regla
germans(X, Y)
que diu queX
iY
són germans si tenen el mateix pare i la mateixa mare, iX
no és igual aY
.
Explicació del Codi
-
Fets:
pare(josep, maria). pare(josep, joan). mare(anna, maria). mare(anna, joan).
Aquests fets indiquen que Josep és el pare de Maria i Joan, i Anna és la mare de Maria i Joan.
-
Regla:
germans(X, Y) :- pare(P, X), pare(P, Y), mare(M, X), mare(M, Y), X \= Y.
Aquesta regla defineix que
X
iY
són germans si:- Tenen el mateix pare
P
. - Tenen la mateixa mare
M
. X
no és igual aY
(per evitar que una persona sigui considerada germana d'ella mateixa).
- Tenen el mateix pare
Exercicis Pràctics
Exercici 1
Defineix una regla avi(X, Y)
que indiqui que X
és l'avi de Y
.
Solució
Exercici 2
Defineix una regla cosins(X, Y)
que indiqui que X
i Y
són cosins.
Solució
cosins(X, Y) :- pare(P1, X), pare(P2, Y), germans(P1, P2). cosins(X, Y) :- pare(P1, X), mare(M2, Y), germans(P1, M2). cosins(X, Y) :- mare(M1, X), pare(P2, Y), germans(M1, P2). cosins(X, Y) :- mare(M1, X), mare(M2, Y), germans(M1, M2).
Errors Comuns
- Oblidar la condició
X \= Y
: Això pot fer que una persona sigui considerada germana d'ella mateixa. - No definir tots els fets necessaris: Assegura't que tots els fets necessaris per a les regles estiguin definits.
Consells Addicionals
- Utilitza noms de variables significatius per fer les regles més llegibles.
- Divideix les regles complexes en regles més senzilles per facilitar la comprensió i el manteniment.
Conclusió
En aquesta secció, hem après a definir regles en Prolog, que ens permeten deduir nova informació a partir de fets existents. Hem vist exemples pràctics i hem practicat amb exercicis per reforçar els conceptes apresos. En el següent tema, explorarem com fer consultes simples en Prolog per obtenir informació a partir dels fets i regles definits.
Curs de Programació en Prolog
Mòdul 1: Introducció a Prolog
- Què és Prolog?
- Instal·lant Prolog
- Primers Passos en Prolog
- Sintaxi i Estructura Bàsiques
- Fets, Regles i Consultes
Mòdul 2: Programació Bàsica en Prolog
Mòdul 3: Estructures de Dades en Prolog
Mòdul 4: Programació Avançada en Prolog
- Unificació Avançada
- Tall i Negació
- Meta-Programació
- Gramàtiques de Claus Definides (DCGs)
- Programació Lògica amb Restriccions
Mòdul 5: Prolog en la Pràctica
- Entrada/Sortida de Fitxers
- Depuració de Programes Prolog
- Biblioteques Prolog
- Interfície amb Altres Llenguatges
- Construint una Aplicació Prolog