- •Основные Элементы ТурбоПролога.
- •Структуры Пролога, разделы программы
- •Способы объявления предикатов в программе Пролог
- •Объявление предикатов
- •Утверждения и правила. Факты и правила.
- •Раздел goal
- •Этапы программирвоания на тп
- •Декларативный и процедурный смысл программы
- •Сопоставление
- •Арифметика в тп
- •Арифметические функции в тп
- •Рекурсия
- •Рекурсия и эффективность
- •Стандартные предикаты
- •Стандартные предикаты ввода-вывода
- •Отсечение
- •Отрицание (not)
- •Использование составных объектов
- •Списки. Описание. Голова и хвост списка.
- •Стандартные предикаты для работы со строками Определение длины строки
- •Конкатенация строк
- •Разделение строки на две части
- •Описание файловых доменов
- •Запись в файл
- •Чтение из файла
- •Дозапись в конец существующего файла
- •Создание меню с помощью окон Определение окна
- •Быстрое переключение между двумя окнами
- •Очистка текущего окна
- •Удаление текущего окна
- •Создание динамических баз данных. Статические и динамические базы данных
- •Способы занесения информации в динамическую базу данных
- •Предикаты для работы с базами данных
Описание файловых доменов
Для того, чтобы использовать в прграмме файлы, необходимо в раздел domains произвести описание файлового домена:
file = datafile
file – стандартный тип домена
datafile – символьное имя файла (логическое имя файла)
В файл описания логично указать несколько символьных имен, но само описание должно быть единственным.
file = df1; df2; df3 % (; или)
Запись в файл
Последовательность действий, необходимая для записи в файл:
Открытие файла с помощью предиката openwrite. Если файла с указанным именем нет, то создаетс яновый файл. Если файл уже есть, то его содержимое будет утрачено. Чтобы от этого застраховаться, можно сначала проверить наличие файла предикатом existfile, и принять соответствующие меры, если existfile будет успешным.
Назначение файла в качнстве устройства записи предиката writedevice.
Самма запись в файл write или writef.
Использование любых других предикатов и правил, отвечающих назначению программы.
Закрытие файла предикатом closefile.
/* Вывод информации на экран дисплея в файл на диск */
domains
str = string
file = datafile
predicates
data (str)
write_lines
goal
openwrite (data, “a1.dat”),
write_lines,
closefile (datafile)
clauses
data (“aaaa”).
data (“bbbb”).
data (“cccc”).
. . . . . . .
write_lines:- data (Line),
write (“ “, Line), nl,
writedevice (screen),
fail,
write_lines.
/* Считывание данных с клавиатуры и запись их в файл */
domains
file = datafile
kstr, fstr = string
predicates
readin (kstr, fstr) % чтение-запись
create_file
goal
create_file
clauses
create_file:- nl, nl,
write (“Введите имя файла”),
nl, nl, readln(FileName),
openwrite (datafile),
writedevice (datafile),
readln (Kstr),
concat (Kstr, “\13\10”, Fstr),
readin (Kstr, FStr),
closefile (datafile).
readin (_, Fstr):- write (FStr), readln (KStr1),
concat (KStr1, “\13\10”, Fstr1),
readin (Kstr1, Fstr1).
Чтение из файла
Открытие файла предикатом openread.
Назначение файла устройству чтения с помощью readdevice.
Само чтение из файла.
Использование произвольных предикатов и правил.
Закрытие файла предикатом close.
/* Считывание данных из файла и вывод их на экран и принтер */
domains
file = datafile
predicates
read_and_print
read_file
goal
read_file
clauses
read_file:- write (“Введите имя файла”), nl,
readln(FileName), nl,
openread (datafile, FileName), readdevice (datafile),
read_and_print, closefile (datafile),nl,
write (“Нажмите любую клавишу”), readdevice (keyboard),
readchar (_), exit.
read_and_print:- not (eof(datafile)), readln (Fstr), write (Fstr), nl,
writedevice (printer), write (Fstr), writedevice (screen), read_and_print.
read_and_print:- eof(datafile),!.
Дозапись в конец существующего файла
process_append:- write (“Введите имя файла”), nl,
readln (Filename), nl, write (“Программа готова принять данное для записи”), nl,
openappend (datafile, Filename), writedevice (datafile), readln (Kstr),
concat (Ksrt, “\13\10”, Fstr), readin (Kstr, Fstr), closefile (datafile).
% readin – смотри выше.