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
