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

  1. Regles: Són declaracions que defineixen relacions entre fets. Una regla té la forma Cap :- Cos., on Cap és el fet que es dedueix si el Cos és cert.
  2. Cap: És la part de la regla que es dedueix.
  3. 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 :- cos.
  • 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 que X i Y són germans si tenen el mateix pare i la mateixa mare, i X no és igual a Y.

Explicació del Codi

  1. 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.

  2. Regla:

    germans(X, Y) :- pare(P, X), pare(P, Y), mare(M, X), mare(M, Y), X \= Y.
    

    Aquesta regla defineix que X i Y són germans si:

    • Tenen el mateix pare P.
    • Tenen la mateixa mare M.
    • X no és igual a Y (per evitar que una persona sigui considerada germana d'ella mateixa).

Exercicis Pràctics

Exercici 1

Defineix una regla avi(X, Y) que indiqui que X és l'avi de Y.

Solució

avi(X, Y) :- pare(X, Z), pare(Z, Y).
avi(X, Y) :- pare(X, Z), mare(Z, Y).

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

  1. Oblidar la condició X \= Y: Això pot fer que una persona sigui considerada germana d'ella mateixa.
  2. 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.

© Copyright 2024. Tots els drets reservats