Науки Российской Федерации Федеральное государственное бюджетное образовательное учреждение высшего профессионального образования




НазваниеНауки Российской Федерации Федеральное государственное бюджетное образовательное учреждение высшего профессионального образования
Дата публикации17.10.2016
Размер9,76 Kb.
ТипЛабораторная работа
Министерство Образования и Науки Российской Федерации

Федеральное государственное бюджетное образовательное учреждение высшего профессионального образования

Московский авиационный институт
(национальный исследовательский университет)


Кафедра 304

Отчёт по лабораторным работам по курсу

«Логическое программирование»
Лабораторная работа №4


Выполнил студент гр.13-401

Волосюк К.Г.

Принял доцент кафедры 304

к.т.н., Новиков П.В.

Москва 2013

Лабораторная работа №4. Рекурсивные логические программы

^ Цель работы – изучение возможностей создания рекурсивных логических программ, а также осуществления арифметических и алгебраических вычислений на ПРОЛОГе.

Задание:

Часть 1: распечатать таблицу факториалов натуральных чисел;

Часть 2: разработать рекурсивную программу «предок по прямой отцовской линии»;

c:\users\kvolosyuk\desktop\img115.jpg

Часть 3: вычислить приближённо «интегральный косинус», создав соответствующую рекурсивную функцию суммирования функционального ряда.

Текст программы 1:

predicates

printfact(integer, integer, integer)
clauses

printfact(N, K, M) :- K <= N, write(K, " | ", M), nl, K1 = K + 1,

M1 = M * K1, printfact(N, K1, M1).

goal

printfact(7, 1, 1), nl.
В программе используется предикат printfact, имеющий три аргумента типа integer.

N - число, до которого нужно вычислять факториал

K - число, для которого сейчас считается факториал

M - факториал числа K
В программе используется тип integer, который имеет диапазон значений -32768…32767, поэтому 8! и далее не могут быть посчитаны – в типе integer не помещается большее значение, поэтому таблица составляется до 7!
^ Результат выполнения программы 1:



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

ancestor(symbol, symbol)

sex(symbol, symbol)

ancestors(symbol)

clauses

ancestor(jaropolk, izjaslav).

ancestor(mstislav, izjaslav).

ancestor(svjatopolk, izjaslav).

ancestor(evpraksija, izjaslav).

ancestor(izjaslav, jaroslav_mudryj).

ancestor(izjaslav, ingigerda).

ancestor(filipp_I_francuzskij, anna).

ancestor(filipp_I_francuzskij, genrih_I_francuzskij).

ancestor(anna, jaroslav_mudryj).

ancestor(anna, ingigerda).

ancestor(vasilij, rostislav).

ancestor(rostislav, vladimir).

ancestor(vladimir, jaroslav_mudryj).

ancestor(vladimir, ingigerda).

ancestor(ilja, jaroslav_mudryj).

ancestor(ilja, ingigerda).

ancestor(jaroslav_mudryj, vladimir_svjatoj).

ancestor(jaroslav_mudryj, rogneda).

ancestor(ingigerda, olaf).

ancestor(anastasija, andrej_II_vengerskij).

ancestor(anastasija, jaroslav_mudryj).

ancestor(anastasija, ingigerda).

ancestor(elizaveta, jaroslav_mudryj).

ancestor(elizaveta, ingigerda).

ancestor(vjacheslav, jaroslav_mudryj).

ancestor(vjacheslav, ingigerda).

ancestor(boris, vjacheslav).

ancestor(svjatoslav, jaroslav_mudryj).

ancestor(svjatoslav, ingigerda).

ancestor(gleb, svjatoslav).

ancestor(oleg_gorislavich, svjatoslav).

ancestor(gerald_III_norvezhskij, elizaveta).

ancestor(igor, jaroslav_mudryj).

ancestor(igor, ingigerda).

ancestor(davyd, igor).

ancestor(roman, svjatoslav).

ancestor(svjatoslav_, oleg_gorislavich).

ancestor(oleg_severskij, svjatoslav_).

ancestor(vsevolod_kurskij, svjatoslav_).

ancestor(igor_severskij, svjatoslav_).

ancestor(vladimir_monomah, vsevolod).

ancestor(vladimir_monomah, anna).

ancestor(anna_, konstantin_IX_monomah).

ancestor(vsevolod, jaroslav_mudryj).

ancestor(vsevolod, ingigerda).
sex(jaropolk, m).

sex(mstislav, m).

sex(svjatopolk, m).

sex(evpraksija, zh).

sex(izjaslav, m).

sex(filipp_I_francuzskij, m).

sex(anna, zh).

sex(genrih_I_francuzskij, m).

sex(vasilij, m).

sex(rostislav, m).

sex(svjatoslav, m).

sex(gleb, m).

sex(oleg_gorislavich, m).

sex(roman, m).

sex(svjatoslav_, m).

sex(anna_, zh).

sex(oleg_severskij, m).

sex(vsevolod_kurskij, m).

sex(igor_severskij, m).

sex(vladimir_monomah, m).

sex(anna, zh).

sex(vsevolod, m).

sex(konstantin_IX_monomah, m).

sex(davyd, m).

sex(igor, m).

sex(gerald_III_norvezhskij, m).

sex(boris, m).

sex(vjacheslav, m).

sex(elizaveta, zh).

sex(vladimir, m).

sex(anastasija, zh).

sex(ilja, m).

sex(andrej_II_vengerskij, m).

sex(olaf, m).

sex(ingigerda, zh).

sex(jaroslav_mudryj, m).

sex(rogneda, zh).

sex(vladimir_svjatoj, m).
ancestors(X) :- ancestor(X, Y), sex(Y, m), write(Y), nl, ancestors(Y).

goal

ancestors(boris).
В программе используется предикаты:

  1. Ancestor, имеющий два аргумента типа symbol. Ancestor(X, Y) означает, что Y является предком X.

  2. Sex, имеющий два аргумента типа symbol. Sex(igor, m) означает, что у igor мужской пол (m).

  3. ancestors(X), имеющий один аргумент типа symbol, используется для вывода предков по прямой отцовской линии.

Тип symbol начинается со строчной латинской буквы, содержит латинские буквы, цифры и символ подчёркивания или произвольный набор символов в кавычках.

^ Результат выполнения программы 2:



\operatorname{ci}(x) = \gamma + \ln x - \frac{x^2}{2 \cdot 2!} + \frac{x^4}{4 \cdot 4!} - \frac{x^6}{6 \cdot 6!} + \cdots = \gamma + \ln x + \sum_{n=1}^{\infty}\frac{(-1)^n x^{2n}}{(2n)!(2n)}

Текст программы 3:

predicates

sum(real, real, real, integer, integer)

ci(real, real)

clauses

/* Если N > M будем возвращать 0 */

sum(_, _, 0, N, M) :- N > M.

sum(X, Y, Z, N, M) :- Y1 = Y * (-1) * X * X * N / (N + 2) / (N + 2) / (N + 1), N1 = N + 2, sum(X, Y1, Z1, N1, M), Z = Y + Z1.

/* Возвращает в R значение Ci(x), 0.5772... - постоянная Эйлера */

ci(X, R) :- S1 = -X * X / 4, sum(X, S1, S, 2, 15), R = 0.5772 + ln(X) + S.

goal

ci(1.5, R), write(R).

В программе используется предикаты:

  1. Sum, имеющий три аргумента типа real и два типа integer.

X - число для которого нужно вычислить инт. косинус

Y - значение N-го члена ряда

Z - вычисляемая сумма ряда

M - номер, до которого будем вычислять сумму

N - номер текущего члена суммы

  1. Ci, имеющий два аргумента типа real.

Тип real – вещественно число диапазона +1.7Е-307…+1.7Е 308.

В данной программе использовалась встроенная алгебраическая функция ln(X) – натуральный логарифм числа X
Результат выполнения программы 3:



Вывод:

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

Рекурсивные правила имеют вид:

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

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

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

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

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

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

Отличительной чертой рекурсивного правила является использование одного и того же предиката в голове и теле правила. Это позволяет организовать повторяющиеся вычисления при вызове рекурсивного правила.

Рекурсивное правило содержит предикат условия выхода, чтобы рекурсия не была бесконечной, поэтому её необходимо направлять в сторону точки останова.

Рекурсивное правило может вызывать другое рекурсивное правило – вложенная рекурсия.

Список литературы

1. Ин Ц., Соломон Д. Использование Турбо-Пролога. – М.: Мир, 1993. – 428 с.

2. Учебное пособие /В. Г. Николаев, О. Н. Евсеева, Н. Г. Ярушкина; Под ред. О. Н.

Евсеевой. - Ульяновск: УлГТУ, 1995. - 64 с.

Похожие:

Науки Российской Федерации Федеральное государственное бюджетное образовательное учреждение высшего профессионального образования iconНауки Российской Федерации Федеральное государственное бюджетное...
Федеральное государственное бюджетное образовательное учреждение высшего профессионального образования
Науки Российской Федерации Федеральное государственное бюджетное образовательное учреждение высшего профессионального образования iconРоссийской Федерации Федеральное государственное бюджетное образовательное...
Федеральное государственное бюджетное образовательное учреждение высшего профессионального образования
Науки Российской Федерации Федеральное государственное бюджетное образовательное учреждение высшего профессионального образования iconРоссийской Федерации Федеральное государственное бюджетное образовательное...
Федеральное государственное бюджетное образовательное учреждение высшего профессионального образования
Науки Российской Федерации Федеральное государственное бюджетное образовательное учреждение высшего профессионального образования iconРоссийской Федерации Федеральное государственное бюджетное образовательное...
Филиала федерального государственного образовательного учреждения высшего профессионального образования
Науки Российской Федерации Федеральное государственное бюджетное образовательное учреждение высшего профессионального образования iconРоссийской Федерации Федеральное государственное бюджетное образовательное...
Цели и задачи дисциплины «исследование социально-экономических и политических процессов»
Науки Российской Федерации Федеральное государственное бюджетное образовательное учреждение высшего профессионального образования iconУчебно-методический комплекс учебная дисциплина «Теория государства и права»
Федеральное государственное бюджетное образовательное учреждение высшего профессионального образования «Российская академия народного...
Науки Российской Федерации Федеральное государственное бюджетное образовательное учреждение высшего профессионального образования iconРабочая программа дисциплины «культурология»
Федеральное государственное бюджетное образовательное учреждение высшего профессионального образования
Науки Российской Федерации Федеральное государственное бюджетное образовательное учреждение высшего профессионального образования iconИркутский государственный университет физический факультет
Федеральное государственное бюджетное образовательное учреждение высшего профессионального образования
Науки Российской Федерации Федеральное государственное бюджетное образовательное учреждение высшего профессионального образования iconОтчет о самообследовании Федеральное государственное образовательное учреждение
Федерального агентства лесного хозяйства (Рослесхоза) Министерства природных ресурсов Российской Федерации №189 от 17. 04. 2007 года...
Науки Российской Федерации Федеральное государственное бюджетное образовательное учреждение высшего профессионального образования iconМетодические рекомендации по выполнению контрольных работ Оренбург
Федеральное государственное бюджетное образовательное учреждение высшего профессионального образования
Вы можете разместить ссылку на наш сайт:
Школьные материалы


При копировании материала укажите ссылку © 2013
контакты
dopoln.ru
Главная страница