Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ПРОЛОГ.docx
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
98.8 Кб
Скачать

40. Программы для обработки файлов.

7.3.1. Описание файлового домена

Для того чтобы использовать в программе файлы, необхо-

димо снабдить ее описанием файлового домена. Описание одного

файлового домена с именем datafile выглядит как

file = datafile

file = datafile1; datafile2; datafile3

Это объявление декларирует 3 символических имени для

последующего их отождествления с реальными файлами DOS.

7.3.2. Запись в файл

Перед тем, как начать писать что-либо в файл, нужно

сперва создать его. В Турбо-Прологе файлы создаются при по-

мощи предиката openwrite. Опишем последовательность исполь-

зования предиката openwrite и других действий, необходимых

для записи в файл информации:

1. Открытие файла. Предикат

openwrite(datafile1,"FILE1.DAT").

где datafile1 есть введенный пользователем файловый домен, а

FILE1.DAT - имя файла в DOS, устанавливает связь между объ-

ектами datafile1 и FILE1.DAT. Теперь ссылки на datafile1 бу-

дут означать обращение к FILE1.DAT. Связь остается в силе

вплоть до закрытия файла.

Заметим, что если файл с именем FILE1.DAT к моменту вы-

зова предиката openwrite уже присутствовал в директории, то

его содержимое будет утрачено. Для того, чтобы застраховать-

ся от этой неприятности, можно сначала проверить наличие

файла при помощи предиката

existfile("FILE1.DAT")

и принять соответствующие меры, если existfile будет успе-

шен.

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

операцию проделает предикат

writedevice(datafile1).

3. Сама запись в файл. Можно использовать любые подходящие

для этой цели предикаты, например, write или writef. Любой

предикат write будет теперь выводить информацию не на экран,

а в файл.

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

щих назначению программы. Примером может служить переадреса-

ция потока данных с экрана на принтер.

5. Закрытие файла. Этой цели служит предикат

closefile(datafile).

Когда файл закрыт, операции чтения или записи для него недо-

пустимы. Закрытие файла также защищает содержимое файла от

каких бы то ни было манипуляций, так как теперь возможны

лишь операции с файлом в целом.

Ниже приведен пример фрагмента программы на Турбо-Про-

логе, поясняющий только что сказанное.

openwrite(datafile1,"FILE1.DAT"),

writedevice(datafile1),

< любые правила или предикаты записи в файл >

< любые другие правила или предикаты >

сlosefile(datafile1).

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

В случае, если файл FILE1.DAT уже существует, то с ним

можно поизвести целый ряд операций. Можно считать из файла

все содержащиеся в нем данные, можно считать данные выбороч-

но, можно модифицировать их, а можно произвести дозапись

новых данных в конец файла.

Для чтения данных из файла требуется:

1. Открытие файла

openread(datafile1,"FILE1.DAT")

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

readdevice(datafile1).

3. Само чтение из файла при помощи соотвествующего предиката

или правила.

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

щих целям программы.

5. Закрытие файла

closefile(datafile1).

Иллюстрацией может служить

openread(datafile1,"FILE1.DAT"),

readdevice(datafile1),

< любые правила или предикаты чтения из файла >

< любые другие правила или предикаты >

сlosefile(datafile1).