Лабораторная работа № 2. Рекурсия в Прологе — КиберПедия 

Индивидуальные очистные сооружения: К классу индивидуальных очистных сооружений относят сооружения, пропускная способность которых...

Археология об основании Рима: Новые раскопки проясняют и такой острый дискуссионный вопрос, как дата самого возникновения Рима...

Лабораторная работа № 2. Рекурсия в Прологе

2017-09-30 1026
Лабораторная работа № 2. Рекурсия в Прологе 0.00 из 5.00 0 оценок
Заказать работу

Цель работы: освоение программирования на языке Пролог с использованием рекурсивных правил.

Рекомендации по выполнению работы

Рекурсия (в программировании) – алгоритмический метод, заключающийся в возможности обращения правила (функции, процедуры) к самому себе один или более раз.

В виду отсутствия в Прологе операторов цикла, рекурсия является часто используемым приемом в программах на этом языке. Любая рекурсивная процедура в Прологе должна включать, как минимум, два правила:

1) нерекурсивное правило, определяющее его вид в момент прекращения рекурсии;

2) рекурсивное правило. Первая подцель, вырабатывает новые значения аргументов, а вторая – вызов самого правила с новыми значениями аргументов.

 

Рис. 5. Использование рекурсивных правил

 

В программе на рис. 5 приведены примеры двух предикатов с рекурсивными правилами:

· predok – предикат, позволяющий определить родственную связь «предок-потомок» через поколения. Первое (нерекурсивное) правило предиката predok предписывает Прологу завершить процедуру поиска предка (потомка), если первый терм является непосредственным родителем ребенка, указанного вторым термом. В противном случае срабатывает второе (рекурсивное) правило, предписывающее в процессе поиска связи между предполагаемыми предком и потомком добавить промежуточное поколение. На первый вопрос «Является ли Вася предком Коли?» получен положительный ответ, так как Вася является непосредственным родителем Коли. На второй вопрос «Является ли Вася предком Светы?» получен положительный ответ, так как Вася является дедушкой Светы. На третий вопрос «Кто является предком Леши?» получены три ответа: Света (мама), Вася (дедушка) и Коля (прадедушка);

· factorial – предикат, определяющий значение факториала для заданного числа. Первое (нерекурсивное) правило предиката factorial определяет для числа «1» значение факториала, равное «1». В противном случае от числа N, указанного в качестве первого терма, необходимо отнять единицу [N1 is N – 1], найти значение факториала F1 для нового числа N1 [factorial(N1, F1)], определить факториал для исходного числа N [F is F1 * N] и установить значение F в качестве второго терма.

При необходимости вычислений в программе следует учитывать разницу и особенности применения операций «=» и «is». Первая операция не приводит к вычислению (преобразованию) выражения, записанного справа от операции (вопрос 1 на рис. 6), а вторая – приводит (вопрос 2 на рис. 6).
В случае использования свободной переменной операции приводят к присваиванию исходного (преобразованного) выражения, записанного справа от операции (см. вопросы 1 и 2 на рис. 6). В случае использования связанной переменной выполняется сравнение левой и правой части. Так, на вопрос 3 (рис. 6) вначале свободной переменной X присваивается выражение «5+1», а затем для уже связанной переменной X выполняется сравнение с выражением «4+2» («5+1» = «4+2» ® false). На вопрос 4 (рис. 6) вначале свободной переменной X присваивается «6» (результат выражения «5+1»), а затем для уже связанной переменной X выполняется сравнение с «6» (результатом выражения «4+2»).

 

Рис. 6. Использование операций «=» и «is»

Задание на выполнение работы

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

A.Программа должна запрашивать у пользователя:

· N – количество членов ряда, учитываемых при расчете приближенного значения функции;

· X – значение переменной (если в формуле есть X).

Б. Выдавать результаты работы на экран:

· приближенное значение функции, рассчитанное с помощью ряда;

· точное значение функции, рассчитанное с помощью встроенных функций Пролога.

В.По индивидуальному заданию добавить в программу правила для определения приближенного значения функции с помощью ряда:

 

1)
2)
3)
4)
5)
6)
7)
8)
9)
10)
11)
12)
13)
14)
15)
16)
17)
18)
19)
20)
21)
22)
23)
24)
25)
26)
27)

 

Г.Отчет должен содержать:

· титульный лист;

· описание задания;

· текст программы;

· вопросы с ответами, иллюстрирующие корректность работы программы;

· вывод.


Поделиться с друзьями:

Индивидуальные и групповые автопоилки: для животных. Схемы и конструкции...

Семя – орган полового размножения и расселения растений: наружи у семян имеется плотный покров – кожура...

История развития пистолетов-пулеметов: Предпосылкой для возникновения пистолетов-пулеметов послужила давняя тенденция тяготения винтовок...

Историки об Елизавете Петровне: Елизавета попала между двумя встречными культурными течениями, воспитывалась среди новых европейских веяний и преданий...



© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!

0.013 с.