- •Общие сведения о Прологе, области применения, отличия Пролога от других языков программирования.
- •6. Утверждения программы Турбо-Пролога: факты и правила.
- •7. Раздел goal программы Visual Prolog.
- •8. Этапы программирования на Visual Prolog.
- •9.Декларативный и процедурный смысл программы на Прологе.
- •10.Сопоставление. Правила сопоставимости термов, структур.
- •12.Арифметика Visual Prolog. Арифметические функции.
- •13,14. Рекурсия в Visual Prolog. Пример рекурсивного правила (вычисление факториала, возведение числа в целую степень).
- •14.Рекурсия и эффективность рекурсивных правил на Visual Prolog .
- •15 Стандартные предикаты. Поточный шаблон стандартных предикатов.
- •16.Стандартные предикаты ввода-вывода в Прологе.
- •17.Отсечение в программах на Прологе.
- •18.Отрицание в правилах Visual Prolog.
- •19.Использование составных объектов в Visual Prolog. Простые и составные структуры.
- •20. Списки как основная структура данных в Visual Prolog. Описание списков. Голова и хвост списка .
- •23. Преобразование строки в список символов или атомов.
- •Преобразование строки в символ
- •24.Преобразование данных из одного типа в другой.
- •Преобразование строки в символ
- •25. Преобразование, определяемые пользователем. Пользователь может определить преобразование, не предусмотренные предикатами. Например: целые числа в действительные и наоборот.
- •26. Предикаты Visual Prolog для работы с файлами.
- •27. Описание файловых доменов, переадресация внешних устройств.
- •28. Запись данных в файл на Visual Prolog
- •29. Чтение данных из файла на Visual Prolog
- •30. Дозапись данных в конец существующего файла на Visual Prolog.
- •31.Создание меню средствами Visual Prolog.
- •32.Способы организации цикла в программах на Прологе.
- •33.Создание динамических баз данных средствами Visual Prolog.
- •34. Статические и динамические базы данных в программах на Visual Prolog.
- •35.Способы занесения информации в динамическую базу данных на Visual Prolog.
- •36.Предикаты Турбо-Пролога для работы с базой данных.
28. Запись данных в файл на Visual Prolog
Последовательность действий, необходимая для записи в файл:
Открытие файла с помощью предиката openwrite. Если файла с указанным именем нет, то создаетс яновый файл. Если файл уже есть, то его содержимое будет утрачено. Чтобы от этого застраховаться, можно сначала проверить наличие файла предикатом existfile, и принять соответствующие меры, если existfile будет успешным.
Назначение файла в качнстве устройства записи предиката writedevice.
Самма запись в файл write или writef.
Использование любых других предикатов и правил, отвечающих назначению программы.
Закрытие файла предикатом closefile.
/* Считывание данных с клавиатуры и запись их в файл */
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).
В приведенной программе
Kstr - строка, вводимая с клавиатуры,
Fstr - строка, выводимая в файл.
29. Чтение данных из файла на Visual Prolog
Открытие файла предикатом 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),!.
30. Дозапись данных в конец существующего файла на Visual Prolog.
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).
31.Создание меню средствами Visual Prolog.
На приведенном ниже рисунке дается структурная диаграмма программы, использующей упрощенное меню.
Целевое утверждение result создает главное меню show_menu. В главном меню можно выбрать одну из пяти опций, каждая из которых реализует определенную операцию (process).
Возможный вариант программы:
predicates
nondeterm repeat
process(integer)
show_menu
result
goal
result.
clauses
result:-
show_menu,nl,write("Нажмите любую клавишу"),
readchar(_),exit.
repeat.
repeat:-repeat.
show_menu:-
repeat,
write("**************************"),nl,
write(" 0 Выход"),nl,
write(" 1 Создание файла"),nl,
write("***********************"),nl,nl,
/*аналогичные предложения для опций 2-4*/
write("Наберите одну из цифр (0-4): "),
readint(N),N<5,process(N),N=0,!.
process(0):-
nl,write(" Выход из меню"),nl.
process(1):-
/* реализация процесса создания файла */
write(" Для возврата в главное меню нажмите любую клавишу"),nl,nl,
readchar(_).
/*аналогично пишутся остальные правила process */
Правило повтора repeat, являясь одной из компонент некоторого правила, обеспечивает циклическое выполнение расположенных после repeat подцелей данного правила.