En aquest tema, explorarem les operacions més comunes que es poden realitzar amb llistes en Prolog. Les llistes són una estructura de dades fonamental en Prolog i comprendre com manipular-les és essencial per a la programació efectiva en aquest llenguatge.
Contingut
Introducció a les Llistes
Una llista en Prolog és una col·lecció ordenada d'elements, que poden ser de qualsevol tipus, incloent altres llistes. Les llistes es representen entre claudàtors []
, amb els elements separats per comes.
Exemple de Llista
% Llista buida [] % Llista amb elements [1, 2, 3, 4, 5] % Llista amb elements de diferents tipus [1, 'a', [2, 3], foo]
Concatenació de Llistes
La concatenació de llistes és una operació comuna que combina dues llistes en una sola. En Prolog, podem definir una regla per concatenar dues llistes.
Regla de Concatenació
% Concatenació de dues llistes concatena([], L, L). concatena([H|T], L, [H|R]) :- concatena(T, L, R).
Explicació
concatena([], L, L).
: Si la primera llista és buida, la concatenació és simplement la segona llista.concatena([H|T], L, [H|R]) :- concatena(T, L, R).
: Si la primera llista no és buida, es descompon en el capH
i la cuaT
. El cap es manté i es concatena la cua amb la segona llista.
Exemple d'Ús
Afegeix i Elimina Elements
Afegeix un Element al Principi
Per afegir un element al principi d'una llista, simplement utilitzem l'operador |
.
Exemple d'Ús
Elimina un Element
Per eliminar un element d'una llista, podem definir una regla que recorri la llista i elimini l'element desitjat.
% Elimina un element de la llista elimina(_, [], []). elimina(E, [E|T], T). elimina(E, [H|T], [H|R]) :- elimina(E, T, R).
Exemple d'Ús
Recorregut de Llistes
Recórrer una llista és una operació fonamental per aplicar una funció a cada element de la llista.
Regla de Recorregut
% Recorre una llista i aplica una acció a cada element recorre([], _). recorre([H|T], Accio) :- call(Accio, H), recorre(T, Accio).
Exemple d'Ús
% Acció que imprimeix cada element imprimeix(X) :- writeln(X). ?- recorre([1, 2, 3, 4], imprimeix). 1 2 3 4 true.
Exercicis Pràctics
- Concatenació de Tres Llistes: Escriu una regla
concatena3(L1, L2, L3, L)
que concateni tres llistes en una sola. - Afegeix al Final: Escriu una regla
afegeix_final(E, L, R)
que afegeixi un elementE
al final de la llistaL
. - Inverteix una Llista: Escriu una regla
inverteix(L, R)
que inverteixi els elements d'una llista.
Solucions
- Concatenació de Tres Llistes
- Afegeix al Final
- Inverteix una Llista
inverteix(L, R) :- inverteix(L, [], R). inverteix([], Acc, Acc). inverteix([H|T], Acc, R) :- inverteix(T, [H|Acc], R).
Conclusió
En aquest tema, hem après com realitzar operacions bàsiques amb llistes en Prolog, incloent la concatenació, l'afegit i l'eliminació d'elements, i el recorregut de llistes. Aquestes operacions són fonamentals per a la manipulació de dades en Prolog i proporcionen una base sòlida per a temes més avançats. A continuació, passarem a explorar les tuples i estructures en Prolog.
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