- •Первое знакомство Объекты и отношения
- •Запросы
- •Переменные
- •Конъюнкция
- •Правила
- •Более подробно Термы
- •Операторы
- •Эквивалентность и унификация
- •Арифметика
- •Выполнение целей (повторение)
- •Структуры и деревья
- •Обработка списков
- •Отсечение
- •Разное Ввод-вывод
- •Управление порядком вычислений
- •Динамическое создание и анализ структур
- •Пролог как база данных
- •Работа с файлами
Работа с файлами
Пролог поддерживает операции ввода-вывода не только с использованием консоли, но и с использованием файлов. Перед использованием файл необходимо открыть, для чего используется тернарный предикат open. Первый аргумент этого предиката задает имя файла, а второй — режим открытия, который может быть чтением (read), записью (write), добавлением (append) или обновлением (update). В результате открытия файлу присваивается идентификатор, который унифицируется с третьим аргументом предиката open. Этот идентификатор используется в качестве первого аргумента бинарными предикатами read, write, write_canonical, get_char, put_char, а также унарным предикатом nl. Также идентификатор файла используется в качестве аргумента унарного предиката close, предназначенного для закрытия файла. Закрытие файла после работы с ним является обязательным. Пример:
?- open('C:\\TEMP\\Hello.txt', write, S),
| write(S, 'Hello World!'), nl(S),
| close(S).
S = <stream>(0188B020).
Пример с использованием базы данных.
?- dynamic stream / 1. true.
?- open('C:\\TEMP\\Hello.txt', write, S), assertz(stream(S)). S = <stream>(015C24F0).
?- stream(S), write(S, 'Hello World!'), nl(S). S = <stream>(015C24F0).
?- retract(stream(S)), close(S). S = <stream>(015C24F0).