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
animalamb els argumentsnom,especieiedat. - Crea una instància de l'estructura
animalper a un gos anomenatRexde 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
cotxeamb els argumentsmarca,modeliany. - Crea una instància de l'estructura
cotxeper a unToyota Corollade 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
