readchar (Yes), nl, savequation1 (Yes), nl, (Fname), menu. ('7 '): - write ("Зберегти зміни (y/n)?") , (Yes), nl, savequation1 (Yes), nl.
Крім перерахованих предикатів Турбо-Пролог також підтримує предикати читання інформації з файлу, запису у файл, модифікації файлу і тому подібні. Однак для того щоб використовувати в програмі такі предикати, необхідно її постачити описом файлового домену. br/>
Опис файлового домена
Опис одного файлового домену з ім'ям datafile виглядає як = datafile
Це опис відрізняється от звичного опису типу = symbol,
де name є ім'ям домену, а symbol - стандартним типом доменів Турбо-Прологу.
. При описі файлових доменів, стандартний тип домену file задається по ліву сторону від знаку рівності, а ім'я домену datafile - по праву. p align="justify">. datafile, хоч і описується як домен, але використовується в програмі (при записі правил) як символічне ім'я файлу, тобто ідентифікатор, який у програмі може бути логічно ототожнений з будь-яким DOS файлом. Це символічне ім'я називають також логічним ім'ям файлу. p align="justify"> В описі file можна вказувати кілька символічних імен, але саме опис має бути єдиним. Якщо в програмі вводиться кілька символічних імен файлів, то вони розділяються між собою крапкою з комою (;). Наприклад,
file = datafile1; datafile2; datafile3
Це оголошення декларує три символічні імені для подальшого їх ототожнення з реальними DOS файлами.
Операції читання-запису у файл
Запис у файл
Перед тим, як почати писати що-небудь у файл, потрібно створити його. У Турбо-Пролозі файли створюються за допомогою предиката openwrite. При цьому, покажчик файлу поміщається в його початок. Синтаксис:
openwrite (<символічне ім'я файлу>, <імя_DOS_файла>).
Наприклад
openwrite (datafile1, "file1.dat"),
де datafile1 тобто введений користувачем файловий домен, а file1.dat - фізична ім'я файлу на диску. Предикат встановлює зв'язок між об'єктами datafile1 і file1.dat. Тепер заслання на datafile1 означатимуть звернення до file1.dat. Зв'язок залишається в силі аж до закриття файлу. p align="justify"> Зауважимо, що якщо файл з ім'ям file1.dat до моменту виклику предиката openwrite вже був присутній в директорії, то його вміст буде втрачено. Для того, щоб застрахуватися від цієї неприємності, можна спочатку перевірити наявність файлу за допомогою предиката
existfile ("file1.dat")
і вжити відповідних заходів, якщо existfile буде успішний.
Щоб використовувати стандартні предикати write або writef для виведення інформації у файл, необхідно призначити цей файл в якості пристрою запису:
writedevice (<символічне ім'я файлу>).
Наприклад
writedevice (datafile1), write ( Ці три рядки будуть записані у файл file1.dat ), nl, write ( Це друга рядок ), nl, write ( А це - третя ).
дозапис в кінець вже існуючого файлу
Для того щоб записати нові дані в кінець вже існуючого файла, необхідно відкрити цей файл предикатом openappend. Коли файл відкривається для дозапису, покажчик файлу встановлюється в його кінець. p align="justify"> openappend (<символічне ім'я файлу В»,В« імя_DOS_файла>).
Наприклад, (datafile2, "file2.dat")
Подальша робота (переадресація виведення, і виведення даних) аналогічна роботі з новим файлом.
Читання з файлу
Для читання даних з файлу потрібне:
. Відкрити файл за допомогою предиката openread:
openread (<символічне ім'я файлу В»,В« імя_DOS_файла>).
Приклад: (datafile3, "file3.dat").
2. Призначити файл datafile3 пристроєм читання:
readdevice (<символічне ім'я файлу>).
Наприклад, (datafile1).
. Ввести інформацію з файлу за допомогою відповідного предиката або правила (readint, readreal, re adln і т.д.).
Модифікація існуючого файлу
Турбо-Пролог дозволяє відкривати файли для модифікації, тобто для читання і запису одночасно. Для цієї мети служить предикат openmodify. p align="justify"> openmodify (<символіч...