En aquest tema, aprendrem com gestionar la lectura i escriptura de fitxers en Prolog. La capacitat de manipular fitxers és essencial per a moltes aplicacions pràctiques, com ara la gestió de dades persistents, la configuració de programes i la generació de resultats.
Conceptes Clau
- Obertura de Fitxers: Com obrir fitxers per a lectura o escriptura.
- Lectura de Fitxers: Com llegir contingut de fitxers.
- Escriptura de Fitxers: Com escriure contingut en fitxers.
- Tancament de Fitxers: Com tancar fitxers després d'usar-los.
- Gestió d'Errors: Com gestionar errors comuns en la manipulació de fitxers.
Obertura de Fitxers
Per obrir un fitxer en Prolog, utilitzem el predicat open/3
. Aquest predicat pren tres arguments: el nom del fitxer, la manera d'obertura (lectura o escriptura) i una variable que contindrà el descriptor del fitxer.
Exemple
% Obrir un fitxer per a lectura open('exemple.txt', read, Stream). % Obrir un fitxer per a escriptura open('exemple.txt', write, Stream).
Lectura de Fitxers
Un cop obert el fitxer, podem llegir el seu contingut utilitzant diversos predicats com read/2
, read_line_to_string/2
, o read_string/3
.
Exemple
% Llegir una línia del fitxer open('exemple.txt', read, Stream), read_line_to_string(Stream, Line), write(Line), close(Stream).
Escriptura de Fitxers
Per escriure en un fitxer, utilitzem el predicat write/2
o writeln/2
.
Exemple
% Escriure una línia en un fitxer open('exemple.txt', write, Stream), writeln(Stream, 'Aquesta és una línia d'exemple.'), close(Stream).
Tancament de Fitxers
És important tancar els fitxers després d'usar-los per alliberar els recursos. Utilitzem el predicat close/1
per fer-ho.
Exemple
% Tancar un fitxer open('exemple.txt', read, Stream), % ... operacions amb el fitxer ... close(Stream).
Gestió d'Errors
Quan treballem amb fitxers, poden sorgir errors com ara fitxers inexistents o problemes de permisos. És important gestionar aquests errors adequadament.
Exemple
% Gestió d'errors en l'obertura de fitxers open('exemple.txt', read, Stream) -> % Si l'obertura és exitosa (read_line_to_string(Stream, Line), write(Line), close(Stream)); % Si hi ha un error write('Error: No s\'ha pogut obrir el fitxer.').
Exercicis Pràctics
Exercici 1: Lectura de Fitxers
Escriu un programa en Prolog que llegeixi tot el contingut d'un fitxer i el mostri per pantalla.
Solució
read_file(FileName) :- open(FileName, read, Stream), read_stream(Stream), close(Stream). read_stream(Stream) :- read_line_to_string(Stream, Line), (Line \= end_of_file -> writeln(Line), read_stream(Stream); true).
Exercici 2: Escriptura de Fitxers
Escriu un programa en Prolog que escrigui una llista de cadenes en un fitxer, una cadena per línia.
Solució
write_file(FileName, Lines) :- open(FileName, write, Stream), write_lines(Stream, Lines), close(Stream). write_lines(_, []). write_lines(Stream, [Line|Rest]) :- writeln(Stream, Line), write_lines(Stream, Rest).
Resum
En aquesta secció, hem après com obrir, llegir, escriure i tancar fitxers en Prolog. També hem vist com gestionar errors comuns en la manipulació de fitxers. Aquests conceptes són fonamentals per a la creació d'aplicacions que necessiten gestionar dades persistents.
En el següent tema, explorarem tècniques de depuració de programes Prolog per ajudar-nos a identificar i corregir errors en el nostre codi.
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