- •Лабораторная работа № 4 Работа со списками
- •3.1 Длина строки
- •3.2 Конкатенация строк
- •3.3. Создание подстрок
- •3.4. Преобразование данных
- •3.5. Преобразования, определяемые пользователем
- •3.6 Создание символьных префиксов
- •3.7. Преобразование строк
- •3.8. Формирование атомов из строк
- •Лабораторная работа № 5 Работа с файлами
- •4.1.Предикаты для работы с файлами
- •Описание файлового домена
- •Запись в файл
- •Чтение из файла
- •Модификация существующего файла
- •Дозапись в конец уже существующего файла
- •Лабораторная работа № 6 Структуры
- •Абстракция данных
Лабораторная работа № 5 Работа с файлами
4.1.Предикаты для работы с файлами
В системе Турбо-Пролог имеются следующие предикаты для работы с файлами:
deletefile уничтожение файла
save сохранение файла
renamefile переименование файла
existfile тест на наличие файла с данным именем
flush сброс данных из внутреннего буфера
disk выбор дисковода и пути доступа
dir выдача каталога директории
Кратко опишем, как работают предикаты для работы с файлами. В приведенных ниже примерах file_domain является описываемым пользователем файловым доменом (как это сделать, будет пояснено в следующем разделе), a DOS_filename — именем, под которым файл фигурирует в директории на диске. В том случае, если пример не очевиден, он снабжается пояснениями.
de1etefile(DOS_filename).
save(DOS filename). Сохраняет на диске утверждения динамической базы данных.
renamefile(Old_DOS_filename,New_DOS_filename).
existfile(DOS filename). Предикат успешен в случае, если файл с именем, заданным переменной DOS filename, присутствует в директории.
flush(file_domain). Этот предикат сбрасывает содержимое внутреннего буфера, отведенного для данного устройства записи.
disk(Path). Если переменной Path присвоен корректный путь доступа, то заданная с его помощью директория становится текущей. Если же переменная Path не означена, то данный предикат присваивает Path путь доступа к текущей директории.
dir(Path,File spec,File name). Переменной Path должен быть присвоен корректный путь доступа, переменная File spec задает расширение представляющей интерес группы файлов. Данный предикат выдает каталог имен файлов с заданным расширением; вы можете выбрать среди них нужный и нажать Enter. Имя файла будет присвоено переменной File_name.
Помимо перечисленных предикатов Турбо-Пролог также поддерживает предикаты чтения из файла, записи в файл, модификации файла и тому подобные. Эти предикаты будут рассмотрены позднее.
Описание файлового домена
Для того чтобы использовать в программе файлы, необходимо снабдить ее описанием файлового домена. Описание одного файлового домена с именем datafile выглядит как
file = datafile
Это описание бросается в глаза, так как не похоже на описания доменов других типов. Куда более привычным кажется описание типа
name = symbol
где name является именем домена, a symbol — стандартным типом доменов Турбо-Пролога. При описании файловых доменов, однако, тип домена file задается по левую сторону от знака равенства, а имя домена datafile — по правую.
Символическое имя файла типа datafile из настоящего примера есть идентификатор, который в программе может быть логически отождествлен с DOS-овским именем файла (именем, которое можно видеть при выдаче каталога директории). Это символическое имя называют также логическим именем файла.
В описании file можно указывать несколько символических имен, но само описание должно быть единственным. Если в программе вводится несколько символических имен файлов, то они разделяются между собой точкой с запятой (;) :
file = datafilel; datafile2; datafile3
Это объявление декларирует 3 символических имени для последующего их отождест-вления с реальными файлами DOS.
