Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

docs / PROLAB3

.DOC
Скачиваний:
25
Добавлен:
17.04.2013
Размер:
17.79 Кб
Скачать

МОСКОВСКИЙ ГОСУДАРСТВЕННЫЙ ИНСТИТУТ ЭЛЕКТРОННОЙ ТЕХНИКИ

Кафедра Проектирования И Конструирования Интегральных МикроСхем

Курс: Экспертные системы в САПР СБИС

Лабораторная работа N 3

Изучение методов повторения и рекурсии в Турбо-прологе

Подготовил: Авдеев Е.В.

Москва, 2000 г.

Введение. Некоторые средства и методы Турбо-пролога.

Предикат fail вызывает откат.

Предикат отсечения ! прерывает откат.

Встроенный предикат для считывания целых чисел с клавиатуры в переменную Num:

readin(Num)

Встроенный предикат для считывания десятичных чисел с клавиатуры в переменную Val:

readreal(Val)

Встроенный предикат для считывания символа с клавиатуры в переменную Char:

readchar(Char)

Встроенный предикат выдачи на экран строки и/или строковой переменной Name:

write(" <строка> ", Name)

Правило для сложения двух десятичных чисел:

sum(X,Y,Z) :- Z=X+Y.

Правила, выполняющие повторения, используют откат, а правила, выполняющие рекурсию, используют самовызов.

Вид правила, выполняющего повторение:

repetitive_rule :- /* правило повторения */

< предикаты и правила >,

fail. /* неудача */

Вид правила повтора, определяемого пользователем:

repeat. /* повторить */

repeat :- repeat.

Вид правила, выполняющего рекурсию:

recursive_rule :- /* правило рекурсии */

< предикаты и правила >,

recursive_rule.

Пример правила рекурсии с условием выхода - циклически считывается введенный символ и если он не совпадает с некоторым заданным символом, например, {, то выдается на экран, а при вводе этого символа { рекурсия прерывается:

read_char :-

readchar(Char_data),

Char_data <> '{',

write(Char_data),

read_char.

Обобщенное правило рекурсии:

<имя правила рекурсии> :-

<список предикатов>, (1)

<предикат условия выхода>, (2)

<список предикатов>, (3)

<имя правила рекурсии>, (4)

<список предикатов>. (5)

Лабораторные средства:

каталог LRPR2000 с подкаталогом GEOLAB и файлами

prolog.exe - экспертная оболочка "Тurbo-prolog",

prolog.cfg - текущая конфигурация системы,

prolog.err - расшифровка диагностических кодов,

prolog.hlp - описание системы "Turbo-prolog",

prolog.lib, prolog.ovl - вспомогательные подсистемы "Тurbo-prolog".

prolab1-..-8.doc - описания лабораторных работ 1-..-8.

work2-..-8.pro - рабочие файлы, содержащие на языке "Тurbo-prolog" примеры программ

ТИПОВАЯ ПОСЛЕДОВАТЕЛЬНОСТЬ ВЫПОЛНЕНИЯ ЛАБОРАТОРНОЙ РАБОТЫ 3:

1) Распаковать на диск D файл prolog00.arj с созданием каталога LRPR2000

arj x -r prolog00.arj d:\

  1. Изучить лабораторное задание prolab3.doc и войти в оболочку prolog.exe

  1. Изучить структуру и функции программы ГОРОДА на языке Турбо-пролог в файле work3.pro, скомпилировать и выполнить ее как в DOS, так и в диалоге.

  1. Разработать, ввести, скомпилировать и исполнить в диалоге программу, реализующую метод повтора, определяемого пользователем, получив у преподавателя номер своего варианта.

  1. Модифицировать программу по пункту 4), скомпилировать и исполнить в диалоге для своего варианта, применив вместо метода повтора метод обобщенной рекурсии, прерываемой вводом некоторого символьного или числового пароля или парольной комбинации.

  1. Сдать лабораторную работу 3, предъявив результаты диалога с созданными программами по пунктам 4) и 5), и сохранить нужные Вам файлы в Вашем Рабочем Каталоге.

  1. Уничтожить созданный Вами каталог LRPR2000 на диске D со всем содержимым.

Список вариантов работы 3.

  1. Прием с клавиатуры двух вещественных чисел и выдача на экран их отношения с прерыванием при делении на 0.0.

  2. Прием с клавиатуры двух целых чисел и выдача их на экран с прерыванием при вводе 1 в качестве первого числа.

  3. Прием с клавиатуры трех целых чисел и выдача на экран их суммы с прерыванием при получении 111 в качестве суммы.

  4. Прием с клавиатуры вещественных чисел и выдача их на экран с прерыванием при вводе числа 0.111.

  5. Прием с клавиатуры двух целых чисел и выдача на экран их отношения с прерыванием при получении нецелого отношения.

  6. Прием с клавиатуры двух вещественных чисел и выдача их на экран с прерыванием при вводе 1.111 в качестве второго числа.

  7. Прием с клавиатуры трех вещественных чисел и выдача на экран их суммы с прерыванием при получении 101.010 в качестве суммы.

  8. Прием с клавиатуры целых чисел и выдача на экран их произведения с прерыванием при получении нечетного произведения.

  9. Прием с клавиатуры пар символов и выдача их на экран с прерыванием при вводе символа W в качестве второго из пары.

  10. Прием с клавиатуры двух целых чисел и выдача на экран их разности с прерыванием при вводе 9 в качестве второго числа.

  11. Прием с клавиатуры целых чисел и выдача их на экран с прерыванием при вводе числа 0.

  12. Прием с клавиатуры двух целых чисел и выдача на экран их произведения с прерыванием при получении 999 в качестве произведения.

  13. Прием с клавиатуры трех целых чисел и выдача на экран их произведения с прерыванием при вводе четного третьего числа.

  14. Прием с клавиатуры пар символов и выдача их на экран с прерыванием при вводе

символа * .

  1. Прием с клавиатуры двух целых чисел и выдача их на экран с прерыванием при вводе четного числа в качестве второго.

Е.Авдеев 01.09.00.

Соседние файлы в папке docs