Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
49
Добавлен:
05.03.2016
Размер:
1.28 Mб
Скачать

Додаток б Службові предикати Турбо-Пролога для роботи з файлами

Вбудовані предикати звільняють програміста від необхідності самому визначати деякі стандартні дії. Для кожного предиката зазначені типи даних і припустимі сполучення їхніх типів:

i – параметр має визначене значення при звертанні до даного предиката;

o – параметр одержує значення при будь-якому звертанні до предиката;

io – тип може бути i або о незалежно від поточних типів інших параметрів

Наприклад, якщо предикат має два аргументи, то можливі такі шаблони – (і,і), (o,o), (і,o), (o,і), або більш коротко – (io,io).

Турбо-Пролог визначає поточний вхідний потік, з якого здійснюється читання усіх вводимих даних, і поточний вихідний потік, у який здійснюється запис даних. Звичайно з поточним вихідним потоком зв'язується дисплей, а з поточним вхідним потоком – клавіатура.

Однак у ряді випадків використовуються операції читання або запису даних у файли. Для того щоб одержати доступ до файлу, він повинний бути відкритий. Файл може бути відкритий для читання, для запису, для додавання інформації або для модифікації.

Коли файл відкритий, Турбо-Пролог зв'язує символічне (Символ_ім’я_файлу) ім'я файлу з дійсним ім'ям файлу (Ім’я_файлу), що використовується в операційній системі. Символічне ім'я файлу повинне бути атомом і повинне бути описане в програмі в розділі domains як стандартний тип file. У програмі тип file може зустрічатися в розділі domains один раз.

openread(Символ_ім’я_файлу, Ім’я_файлу), (file, string) – (i,i). Відкриває файл для читання.

openwrite(Символ_ім’я_файлу, Ім’я_файлу), (file, string) – (i,i). Відкриває файл для запису. Якщо такий файл вже існував у каталозі, то вміст його знищується.

ореnаppend(Символ_ім’я_файлу, Ім’я_файлу), (file, string) – (i,i). Відкриває дисковий файл для додавання інформації.

ореnmodify(Символ_ім’я_файлу, Ім’я_файлу), (file, string) – (i,i). Відкриває файл для читання і запису.

readdevice(Символ_ім’я_файлу) (file) – (io). Переключає поточний вхідний потік даних на файл із зазначеним ім'ям. Аргумент повинний бути зв'язаним і відкритий для читання, інакше відбувається зв'язування Символ_ім’я_файлу з ім'ям активного читаючого пристрою.

writedevice(Символ_ім’я_файлу) (file) – (io). Визначає поточний вхідний потік за умови, що зазначений файл відкритий або для запису, або для додавання інформації.

closefile(Символ_ім’я_файлу) (file) – (i). Предикат closefile(...) закриває файл.

filepos(Символ_ім’я_файлу, Позиція, Режим) (file, real, integer) – (i,io,i). Змінити місце читання або запису в зазначеному файлі (при умові, що файл відкритий для читання і запису). Параметр Режим вказує позицію місця читання/запису відносно: початку файлу (0), початкової позиції (1) чи кінця файлу (2).

eof(Символ_ім’я_файлу) (file) – (i). Перевіряє чи є поточна позиція в процесі читання кінцем файлу.

existfile(Ім’я_файлу), (string) – (i). Перевіряє наявність файлу в поточному каталозі. Використовується перед спробою відкрити файл.

deletefile(Ім’я_файлу), (string) – (i). Знищує файл з ім'ям Ім’я_файлу з дискового каталогу.

renamefile(Старе_ім’я, Нове_ім’я), (string, string) – (i,i). Перейменовує файл, якщо Нове_ім’я відсутнє в каталозі та обидва імені коректні.

disk(Шлях_до_каталогу) (string) – (io). Встановлює поточний пристрій і каталог.

Стандартні імена пристроїв для readdevice і writedevice наступні: printer, screen, keyboard.

Для запису у файл необхідно змінити поточний вихідний потік даних так, щоб ним був файл, у який будуть записуватися дані. Позиція у файлі, у якій матиме місце читання або запис, може керуватися предикатом filepos.