Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
metod_AYaII_buklet_maket (1).doc
Скачиваний:
1
Добавлен:
01.05.2025
Размер:
858 Кб
Скачать
☆

1.4. Пример решения задачи

  1. Тема работы: Ознакомление со средой программирования Turbo Prolog. Организация ввода-вывода в Turbo Prolog.

  2. Цель работы: Получение практических навыков работы в среде программирования Turbo Prolog 2.0.

  3. Индивидуальное задание: Знания о заданной предметной области представить в виде фактов. Вывести факты на экран в виде таблиц. Предметная область: предикаты ввода-вывода в языке Turbo Prolog.

  4. Разработка метода решения задачи.

Знания о предикатах ввода-вывода (Приложение Г) представим с помощью фактов, имеющих имя IO_predicates. Вывод значений фактов на экран организуем с помощью предиката vivod. С помощью этого предиката будет выполнен полный перебор имеющихся фактов и вывод значений на экран в виде таблицы.

  1. Описание предикатов, разработанных для реализации метода решения задачи на языке Turbo Prolog.

Для реализации метода решения задачи разработаны следующие предикаты:

IO_predicates(INTEGER номер_предиката, STRING имя_предиката,

STRING назначение_предиката)

Предикат представляет знания о предикатах ввода-вывода Пролога. В скобках указан тип параметра и его смысл.

vivod Предикат vivod будет иметь две формулировки –

правило vivod для обращения к базе фактов и вывода на экран значений аргументов очередного факта, и факта vivod, который ничего не значит, но обращение к нему всегда завершается успехом.

header Вывод заголовка таблицы

  1. Стандартные предикаты, используемые для решения задачи:

    Предикат

    Цель использования

    fail

    Выполнение возврата и перебора всех значений базы фактов

    makewindow

    Создание окна для вывода значений

    writef

    Форматированный вывод

    readchar

    Ввод символа

  2. Текст программы.

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. Результаты выполнения программы.

------------------------------------Предикаты ввода-вывода-------------------------------------------

| №пп Предикат Назначение |

| ----------------------------------------------------------------------------------------------------------------|

| 1 readln(string) Ввод строки символов |

| 2 readreal(real) Ввод вещественного числа |

| 3 readint(integer) Ввод целого числа |

| 4 readchar(char) Ввод одного символа |

| 5 file_str(string,string) Преобр. файла в строку или строки в файл |

| 6 write(спис_знач) Вывод значений на экран

| 7 writef(формат,спис_знач) Форматированный вывод |

| 8 nl Перевод курсора на новую строку |

| ----------------------------------------------------------------------------------------------------------------|

  1. Результаты трассировки программы.

Для выполнения трассировки программы следует вставить в первую строку программы вызов предиката 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(_,_,_)

Звездочкой помечается точка возврата на дереве решения.

  1. Выводы

При выполнении лабораторной работы ознакомились со следующими темами и средствами:

  • Среда программирования Turbo Prolog 2.0.

  • Структура Prolog-программы.

  • Типы данных.

  • Факты и предикаты Prolog-программы.

  • Предикаты ввода-вывода.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]