
- •27. Управление программой. Внутренние подпрограммы унификации Пролога.
- •28. Структура программ на Прологе. Предикаты и утверждения.
- •29. Арифметика в Прологе.
- •30. Программирование повторяющихся операций. Повторение и откат.
- •31. Методы повторения. Методы организации рекурсии.
- •32. Списки в Прологе. Применение списков в программе.
- •34. Использование метода с разделением списка на голову и хвост. Компоновка данных в список.
- •34. Присваивание переменным строковых значений. Конкатенация строк. Преобразование данных.
- •35 Создание символьных префиксов. Преобразование строк в список символов.
- •38. Преобразование строк в списки атомов с функторами.
- •39.Предикаты Пролога для работы с файлами. Использование предикатов для работы с файлами.
- •40. Программы для обработки файлов.
- •41. Дозапись данных в файл
- •42. Использование файлов прямого доступа
- •43. Использование предикатов для работы с окнами. Использование окон для ввода вывода.
- •44. Использование графики в программе. Использование графики черепашки.
- •45.Использование звук и музыки.
- •46.Базы данных в Прологе. Предикаты динамической базы данных в Прологе.
- •47. Создание базы данных, располагающейся в оперативной памяти.
- •48. Создание базы данных, располагающейся на диске
- •49. Принципы построения экспертных систем
- •50.Методы вывода и система пользовательского интерфейса эс.
- •51.Экспертные системы, базирующиеся на правилах.
- •52.Экспертные системы, базирующиеся на логике.
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).