En aquest tema, explorarem les tuples i les estructures en Prolog. Aquestes són eines fonamentals per representar dades complexes i organitzar informació de manera eficient.
Què són les Tuples i les Estructures?
Tuples
Una tuple és una col·lecció ordenada d'elements que poden ser de diferents tipus. En Prolog, les tuples no són una entitat separada com en altres llenguatges de programació, però es poden representar utilitzant llistes o estructures.
Estructures
Les estructures en Prolog són una manera de representar dades complexes mitjançant termes compostos. Una estructura consta d'un functor (nom de l'estructura) i un nombre fix d'arguments.
Sintaxi:
Exemple:
Creació d'Estructures
Definició d'Estructures
Per definir una estructura, simplement escrivim el functor seguit dels seus arguments.
Exemple:
Accés als Elements d'una Estructura
Per accedir als elements d'una estructura, utilitzem patrons de coincidència (pattern matching).
Exemple:
% Definim una estructura de cotxe cotxe(ford, mustang, 1967). % Accedim als elements de l'estructura obtenir_marca(Cotxe, Marca) :- Cotxe = cotxe(Marca, _, _). obtenir_model(Cotxe, Model) :- Cotxe = cotxe(_, Model, _). obtenir_any(Cotxe, Any) :- Cotxe = cotxe(_, _, Any).
Modificació d'Estructures
Per modificar una estructura, creem una nova estructura amb els valors desitjats.
Exemple:
% Modifiquem l'any d'un cotxe modificar_any(Cotxe, NouAny, CotxeModificat) :- Cotxe = cotxe(Marca, Model, _), CotxeModificat = cotxe(Marca, Model, NouAny).
Exemples Pràctics
Exemple 1: Representació d'una Persona
% Definim una estructura de persona persona(nom, edat, ciutat). % Exemple de persona persona(john, 30, barcelona). % Accedim als elements de la persona obtenir_nom(Persona, Nom) :- Persona = persona(Nom, _, _). obtenir_edat(Persona, Edat) :- Persona = persona(_, Edat, _). obtenir_ciutat(Persona, Ciutat) :- Persona = persona(_, _, Ciutat).
Exemple 2: Representació d'un Llibre
% Definim una estructura de llibre llibre(titol, autor, any). % Exemple de llibre llibre('El Quixot', cervantes, 1605). % Accedim als elements del llibre obtenir_titol(Llibre, Titol) :- Llibre = llibre(Titol, _, _). obtenir_autor(Llibre, Autor) :- Llibre = llibre(_, Autor, _). obtenir_any(Llibre, Any) :- Llibre = llibre(_, _, Any).
Exercicis Pràctics
Exercici 1: Definició i Accés a Estructures
- Defineix una estructura
animal
amb els argumentsnom
,especie
iedat
. - Crea una instància de l'estructura
animal
per a un gos anomenatRex
de 5 anys. - Escriu una funció per obtenir el nom de l'animal.
- Escriu una funció per obtenir l'espècie de l'animal.
- Escriu una funció per obtenir l'edat de l'animal.
Solució:
% Definició de l'estructura animal animal(nom, especie, edat). % Instància de l'estructura animal animal(rex, gos, 5). % Funcions per accedir als elements de l'animal obtenir_nom(Animal, Nom) :- Animal = animal(Nom, _, _). obtenir_especie(Animal, Especie) :- Animal = animal(_, Especie, _). obtenir_edat(Animal, Edat) :- Animal = animal(_, _, Edat).
Exercici 2: Modificació d'Estructures
- Defineix una estructura
cotxe
amb els argumentsmarca
,model
iany
. - Crea una instància de l'estructura
cotxe
per a unToyota Corolla
de l'any2010
. - Escriu una funció per modificar l'any del cotxe a
2020
.
Solució:
% Definició de l'estructura cotxe cotxe(marca, model, any). % Instància de l'estructura cotxe cotxe(toyota, corolla, 2010). % Funció per modificar l'any del cotxe modificar_any(Cotxe, NouAny, CotxeModificat) :- Cotxe = cotxe(Marca, Model, _), CotxeModificat = cotxe(Marca, Model, NouAny).
Resum
En aquest tema, hem après a:
- Definir i utilitzar estructures en Prolog.
- Accedir als elements d'una estructura.
- Modificar estructures creant noves instàncies amb els valors desitjats.
Les estructures són una eina poderosa per organitzar i gestionar dades complexes en Prolog. Amb la pràctica, esdeveniràs més còmode treballant amb elles i podràs representar informació de manera més eficient i clara.
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