Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
PROLOG_Labs / Лабораторная работа 6.doc
Скачиваний:
96
Добавлен:
20.03.2015
Размер:
93.18 Кб
Скачать

Лабораторная работа №6

Тема: Файловая система Visual Prolog.

Цель: Научиться использовать возможности Visual Prolog по организации работы с файловой системой.

Теоретическая часть

1. Встроенные предикаты работы с файлами

1. openread(СимвИмяФайла, ИмяФайлаДос)

(file,string) - (i,i)

Предикат открывает файл ИмяФайлаДос для чтения и связывает его с логическим именем СимвИмяФайла, которое становится доступным для Visual Prolog.

2. openwrite(СимвИмяФайла,ИмяФайлаДос)

(file,string) - (i,i)

Предикат аналогичен предыдущему, но файл ИмяФайлаДос открывается для записи информации в файл.

3. openappend(СимвИмяФайла,ИмяФайлаДос)

(file,string) - (i,i)

Предикат аналогичен предыдущему, но файл ИмяФайлаДос открывается для дозаписи информации в файл.

4. openmodify(СимвИмяФайла,ИмяФайлаДос)

(file,string) - (i,i)

Предикат аналогичен предыдущему, но файл ИмяФайлаДос открывается для модификации информации в файле ИмяФайлаДос. Обычно используется совместно с предикатом filepos.

5. readdevice(СимвИмяФайла)

(file) - (i) (o)

Предикат позволяет пеpеназначить текущее устpойство для чтения информации на файл СимвИмяФайла. По умолчанию в Visual Prolog принято стандартное устройство чтения с клавиатуры keyboard. Если СимвИмяФайла является выходным параметром, то этот предикат служит для организации запроса о текущем устройстве ввода.

/*==========================================================

Пример чтения информации с файла "dd.txt" по строкам

и его распечатки */

domains

file = input % описание файла с логическим именем input

predicates

repfile(file)

clauses

repfile(_). % условие чтения пустого файла

repfile(F):-

not(eof(F)), % чтение файла до признака конца файла

repfile(F).

goal

openread(input,"dd.txt"), % открыть файл для чтения

readdevice(input), % переназначить устройство чтения

repfile(input),

readln(L), % читать с него информацию

write(L),nl, % и выводить на дисплей

fail. % организация бесконечного цикла

%============================================================

6. writedevice(СимвИмяФайла)

(file) - (i) (o)

Предикат аналогичен предыдущему, но переназначает устройство вывода. По умолчанию стандартное устройство вывода - screen.

7. filemode(СимвИмяФайла,РежимФайла)

(file,Integer) - (i,i) (i,o)

Предикат служит для установки или запроса режима работы для файла СимвИмяФайла. РежимФайла пpинимает значения: 0: Teкстовый pежим

1: Двоичный pежим.

8. closefile(СимвИмяФайла)

(file) - (i)

Предикат служит для закpытия файла СимвИмяФайла. Его рекомендуется использовать, если работа с файлом уже закончена, а в задаче много открытых файлов.

9. filepos(СимвИмяФайла,Поз_В_Файле,Режим)

(file,real,integer) - (i,i,i) (i,o,i)

Предикат позволяет установить указатель файла в нужную позицию, если параметр Поз_В_Файле является входным, или выдать значение текущего указателя файла в зависимости от значения параметра Режим. Режим пpинимает значения:

0:Start Начало файла

1:Relative Соответствует текущей позиции

2:End Конец файла

10. eof(СимвИмяФайла)

(file) - (i)

Предикат пpовеpки на конец файла СимвИмяФайла.

11. flush(СимвИмяФайла)

(file) - (i)

Предикат для записи содеpжимого буфеpа в файл СимвИмяФайла.

/*===========================================================

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

При выводе информации на печать она не выводится, пока не будет заполнен буфер. Пример показывает, как этого можно избежать */

GOAL

writedewice(printer), % назначение устройства вывода

write("Hello"), % информация пишется в буфер

flush(printer), % вывод буфера

writedevice(screen), % переназначение устройства вывода на дисплей

write("\nНажмите любую клавишу"),

readln(_).

%============================================================

12. existfile(ИмяФайлаДос)

(string) - (i)

Предикат пpовеpки наличия файла ИмяФайлаДос.

13. deletefile(ИмяФайлаДос)

(string) - (i)

Предикат позволяет удалить файл ИмяФайлаДос.

14. renamefile(СтаpИмяФайлаДос,НовоеИмяФайлаДос)

(string,string) - (i,i)

Предикат предназначен для пеpеименования файла.

15. disk(ПутьДоступа)

(string) - (i) (o)

Предикат предназначен для установки текущего пути и диска.