Запись в файл. Последовательность действий, необходимая для записи в файл:

Последовательность действий, необходимая для записи в файл:

1. Открытие файла с помощью предиката openwrite. Если файла с указанным именем нет, то создаетс яновый файл. Если файл уже есть, то его содержимое будет утрачено. Чтобы от этого застраховаться, можно сначала проверить наличие файла предикатом existfile, и принять соответствующие меры, если existfile будет успешным.

2. Назначение файла в качнстве устройства записи предиката writedevice.

3. Самма запись в файл write или writef.

4. Использование любых других предикатов и правил, отвечающих назначению программы.

5. Закрытие файла предикатом closefile.

/* Вывод информации на экран дисплея в файл на диск */

domains

str = string

file = datafile

predicates

data (str)

write_lines

goal

openwrite (data, “a1.dat”),

write_lines,

closefile (datafile)

clauses

data (“aaaa”).

data (“bbbb”).

data (“cccc”).

. . . . . . .

write_lines:- data (Line),

write (“ “, Line), nl,

writedevice (screen),

fail,

write_lines.

/* Считывание данных с клавиатуры и запись их в файл */

domains

file = datafile

kstr, fstr = string

predicates

readin (kstr, fstr) % чтение-запись

create_file

goal

create_file

clauses

create_file:- nl, nl,

write (“Введите имя файла”),

nl, nl, readln(FileName),

openwrite (datafile),

writedevice (datafile),

readln (Kstr),

concat (Kstr, “\13\10”, Fstr),

readin (Kstr, FStr),

closefile (datafile).

readin (_, Fstr):- write (FStr), readln (KStr1),

concat (KStr1, “\13\10”, Fstr1),

readin (Kstr1, Fstr1).

Чтение из файла

1. Открытие файла предикатом openread.

2. Назначение файла устройству чтения с помощью readdevice.

3. Само чтение из файла.

4. Использование произвольных предикатов и правил.

5. Закрытие файла предикатом close.

/* Считывание данных из файла и вывод их на экран и принтер */

domains

file = datafile

predicates

read_and_print

read_file

goal

read_file

clauses

read_file:- write (“Введите имя файла”), nl,

readln(FileName), nl,

openread (datafile, FileName), readdevice (datafile),

read_and_print, closefile (datafile),nl,

write (“Нажмите любую клавишу”), readdevice (keyboard),

readchar (_), exit.

read_and_print:- not (eof(datafile)), readln (Fstr), write (Fstr), nl,

writedevice (printer), write (Fstr), writedevice (screen), read_and_print.

read_and_print:- eof(datafile),!.

Дозапись в конец существующего файла

process_append:- write (“Введите имя файла”), nl,

readln (Filename), nl, write (“Программа готова принять данное для записи”), nl,

openappend (datafile, Filename), writedevice (datafile), readln (Kstr),

concat (Ksrt, “\13\10”, Fstr), readin (Kstr, Fstr), closefile (datafile).

% readin – смотри выше.

Создание меню с помощью окон