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

  1. Obertura de Fitxers: Com obrir fitxers per a lectura o escriptura.
  2. Lectura de Fitxers: Com llegir contingut de fitxers.
  3. Escriptura de Fitxers: Com escriure contingut en fitxers.
  4. Tancament de Fitxers: Com tancar fitxers després d'usar-los.
  5. 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.

© Copyright 2024. Tots els drets reservats