- •Предисловие
- •Лабораторная работа 1
- •Темы для предварительной проработки
- •1.1. Порядок выполнения работы
- •1.2. Содержание отчета
- •1.3. Индивидуальные задания
- •1.4. Пример решения задачи
- •Приложение 1б
- •Контрольные вопросы
- •Приложение 1а
- •Приложение 1в
- •Приложение 1г
- •Лабораторная работа 2
- •Темы для предварительной проработки
- •2.1. Порядок выполнения работы
- •2.2. Содержание отчета
- •2.3. Индивидуальные задания
- •2.4. Пример решения задачи
- •Контрольные вопросы
- •Приложение 2а
- •Приложение 2б
- •Лабораторная работа 3
- •1.4. Пример решения задачи
- •Контрольные вопросы
- •Приложение 3а
- •Приложение 3б
- •Приложение 3в
- •Приложение 3г
- •Лабораторная работа 4
- •4.4. Пример решения задачи
- •Контрольные вопросы
- •Лабораторная работа 5
- •Темы для предварительной проработки
- •5.1. Порядок выполнения работы
- •5.2. Содержание отчета
- •5.3. Индивидуальные задания
- •5.4. Пример решения задачи
- •Контрольные вопросы
- •Приложение 5а
- •Лабораторная работа 6
- •Темы для предварительной проработки
- •6.1. Порядок выполнения работы
- •6.2. Содержание отчета
- •6.3. Индивидуальные задания
- •6.4. Пример решения задачи
- •Контрольные вопросы
- •Приложение 6а
- •Приложение 6б
- •Константы типа драйвера
- •Константы режимов драйвера
- •Константы цветов
- •Константы стиля и толщины линий (для предикатов GetLineStyle, SetLineStyle)
- •Константы типа шрифта (задаются в предикате settextstyle(Font,Direction,Charsize))
- •Лабораторная работа 7
- •Темы для предварительной проработки
- •7.1. Порядок выполнения работы
- •7.2. Содержание отчета
- •7.3. Индивидуальные задания
- •7.4. Пример решения задачи
- •Контрольные вопросы
- •Приложение 7а
- •Приложение б
- •Редактор о.І. Шпільова
- •61002 Харків, вул. Фрунзе, 21
1.4. Пример решения задачи
Тема работы: Ознакомление со средой программирования Turbo Prolog. Организация ввода-вывода в Turbo Prolog.
Цель работы: Получение практических навыков работы в среде программирования Turbo Prolog 2.0.
Индивидуальное задание: Знания о заданной предметной области представить в виде фактов. Вывести факты на экран в виде таблиц. Предметная область: предикаты ввода-вывода в языке Turbo Prolog.
Разработка метода решения задачи.
Знания о предикатах ввода-вывода (Приложение Г) представим с помощью фактов, имеющих имя IO_predicates. Вывод значений фактов на экран организуем с помощью предиката vivod. С помощью этого предиката будет выполнен полный перебор имеющихся фактов и вывод значений на экран в виде таблицы.
Описание предикатов, разработанных для реализации метода решения задачи на языке Turbo Prolog.
Для реализации метода решения задачи разработаны следующие предикаты:
IO_predicates(INTEGER номер_предиката, STRING имя_предиката,
STRING назначение_предиката)
Предикат представляет знания о предикатах ввода-вывода Пролога. В скобках указан тип параметра и его смысл.
vivod Предикат vivod будет иметь две формулировки –
правило vivod для обращения к базе фактов и вывода на экран значений аргументов очередного факта, и факта vivod, который ничего не значит, но обращение к нему всегда завершается успехом.
header Вывод заголовка таблицы
Стандартные предикаты, используемые для решения задачи:
Предикат
Цель использования
fail
Выполнение возврата и перебора всех значений базы фактов
makewindow
Создание окна для вывода значений
writef
Форматированный вывод
readchar
Ввод символа
Текст программы.
predicates
IO_predicates(integer, string, string)
vivod
header
clauses
IO_predicates(1,"readln(string)","Ввод строки символов").
IO_predicates(2,"readreal(real)","Ввод вещественного числа").
IO_predicates(3,"readint(integer)","Ввод целого числа").
IO_predicates(4,"readchar(char)","Ввод одного символа").
IO_predicates(5,"file_str(string,string)","Преобр. файла в строку или строки в файл").
IO_predicates(6,"write(спис_знач)","Вывод значений на экран").
IO_predicates(7,"writef(формат,спис_знач)","Форматированный вывод").
IO_predicates(8,"nl","Перевод курсора на новую строку").
header:-write("№пп\t Предикат \t Назначение"),
write("\n-----------------------------------------------------------\n").
vivod:-IO_predicates(X,Y,Z),
writef(" %-3%-25\t%s\n",X,Y,Z),
fail.
vivod.
goal
makewindow(1,120,2,"Предикаты ввода-вывода",2,2,15,75),
header,vivod,write("-------------------------------------------------------"),
readchar(_).
Результаты выполнения программы.
------------------------------------Предикаты ввода-вывода-------------------------------------------
| №пп Предикат Назначение |
| ----------------------------------------------------------------------------------------------------------------|
| 1 readln(string) Ввод строки символов |
| 2 readreal(real) Ввод вещественного числа |
| 3 readint(integer) Ввод целого числа |
| 4 readchar(char) Ввод одного символа |
| 5 file_str(string,string) Преобр. файла в строку или строки в файл |
| 6 write(спис_знач) Вывод значений на экран
| 7 writef(формат,спис_знач) Форматированный вывод |
| 8 nl Перевод курсора на новую строку |
| ----------------------------------------------------------------------------------------------------------------|
Результаты трассировки программы.
Для выполнения трассировки программы следует вставить в первую строку программы вызов предиката trace. Фрагмент трассировки программы:
CALL: goal()
CALL: makewindow(1,120,2,"Предикаты ввода-вывода",2,2,15,75)
RETURN: makewindow(1,120,2,"Предикаты ввода-вывода",2,2,15,75)
CALL: header()
write("№пп Предикат Назначение"),
write("\n------------------------------------------------------------\n")
RETURN: header()
CALL: vivod()
io_predicates(_,_,_)
write(1)
write(“readln(string)”)
write(“Ввод строки символов”)
REDO: *io_predicates(_,_,_)
Звездочкой помечается точка возврата на дереве решения.
Выводы
При выполнении лабораторной работы ознакомились со следующими темами и средствами:
Среда программирования Turbo Prolog 2.0.
Структура Prolog-программы.
Типы данных.
Факты и предикаты Prolog-программы.
Предикаты ввода-вывода.
