Сделай Сам Свою Работу на 5

Тема работы: реализация рекурсии на ПРОЛОГе.





Министерство образования и науки РФ

Федеральное агентство по образованию

Саратовский государственный технический университет

 

ФУНКЦИОНАЛЬНОЕ И ЛОГИЧЕСКОЕ ПРОГРАММИРОВАНИЕ

лабораторный практикум

по курсу «Функциональное и логическое программирование» для

студентов специальности ПВС (220400)

 

Электронное издание локального распространения

 

Одобрено

Редакционно-издательским советом

Саратовского государственного

технического университета

 

 

Саратов, 2006 г.

 

Все права на размножение и распространение в любой форме остаются за разработчиком.

Нелегальное копирование и использование данного продукта запрещено.

 

Составитель: Бровкова Марина Борисовна

 

 

Под редакцией

 

 

Рецензент А.А.Терентьев

 

410054, Саратов, ул. Политехническая, 77

Научно-техническая библиотека СГТУ

тел. 52-63-81, 52-56-01

http://lib.sstu.ru

 

Регистрационный

номер

 

 

© Саратовский государственный

технический университет

 
 


ЛОГИЧЕСКОЕ ПРОГРАММИРОВАНИЕ

ВВЕДЕНИЕ

 

Методические указания к выполнению лабораторных работ по дисциплине «Логическое программирование» предназначены для студентов третьего курса специальности 220400. Методические указания содержат перечень тем, выносимых на практические занятия и варианты практических заданий для самостоятельной работы.



Практические задания выполняются на основании лекционного курса по дисциплине «Логическое программирование» с предоставлением отчетов преподавателю. Варианты заданий указывает преподаватель. Практические задания выполняются на языке Turbo Prolog 2.0 в среде MS DOS.

В качестве самостоятельной работы предполагается изучение объектно-ориентированной версии языка Prolog (Visual Prolog).

 

Лабораторная работа №1

 

Тема: Анализ предметной области. Выявление закономерностей. Составление схемы взаимодействия объектов. Составление простейшей программы на Прологе. Структура программы. Прямая и обратная цепочка рассуждений. Включение цели в структуру программы.

 

В задании должны быть рассмотрены два варианта блока goal: вне текста программы и внутри текста программы.



 

Пример: Известны следующие факты:

Том любит Лиз

Джон любит Глорию

Памела любит Майкла

Лиз любит Тома

Лиз любит Джека

Роберт любит Глорию

Майкл любит Памелу

Глория любит Джона

 

брак считается возможным, если любовь взаимная и только к этому человеку.

Составить программу, отвечающую на вопросы:

1) Кого любит Майкл?

2) Подобрать все возможные сочетания брачных пар.

 

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

 

Predicates

love (symbol, symbol)

para (symbol, symbol)

nepara(symbol,symbol)

clauses

love(tom,liz).

love(john,glory).

love(pamela,michael).

love(liz,tom).

love(liz,jack).

love(robert,glory).

love(michael,pamela).

love(glory,john).

nepara(X,Y):-love(X,A),A<>Y;love(Y,B),B<>X.

para(X,Y):-love(X,Y),love(Y,X),not(nepara(X,Y)).

goal

love(michael,Z), write(“michael loves “,Z), nl, nl,

para(X,Y), write(X, “ loves “,Y), nl, fail.

 

Варианты заданий:

 

1. Известна система родственных связей с отношением РОДИТЕЛЬ. Имена в ней не повторяются. Разработать программу логического вывода, позволяющую определить, кто кому приходится отцом, матерью, братом, сестрой, дядей, тетей, дедушкой, бабушкой.

2. Известны следующие факты:

 

Преподаватель и учитель имеют высшее образование. Преподаватель ВУЗа имеет высшее образование и аспирантуру. Также известно, что

Джон работает дворником.

Том работает учителем.

Глория – продавец.

Майкл – преподаватель ВУЗа.

Билл – инженер.

Мери – учитель.

Лиз – инженер.

Составить программу, отвечающую на следующие вопросы:

Имеет ли Майкл высшее образование?

Закончил ли Том аспирантуру?

Кто имеет высшее образование?

Кем работает Лиз?

Может ли инженер быть преподавателем ВУЗа?

 

3. На основании известной таксономической системы (а) составить программу, отвечающую на вопросы:



Кто кормит детей молоком?

Является ли собака позвоночным животным?

Плотоядная ли кошка?

Какие семейства относятся к млекопитающим?

Кормят ли молоком животные, имеющие острые зубы?

Относятся ли копытные к позвоночным?

Все ли кто лает, имеют острые зубы?

Имеет ли позвоночник корова?

 

Таксономическая система (а):

 

Каждое млекопитающее – позвоночное

Каждое плотоядное – млекопитающее

Корова мычит

Каждое копытное – млекопитающее

Позвоночное имеет позвоночник

Семейство псовых и кошачьих относятся к плотоядным

Кошка мурлычет

Собака лает

Копытное имеет плоские зубы

Кошка относится к семейству кошачьих

Собака относится к семейству псовых

Млекопитающее кормит детей молоком

Плотоядное имеет острые зубы

Корова относится к копытным

 

4. Составить программу, осуществляющую подбор партнера и партнерши в бальных танцах на основании следующих правил:

Рост мальчика >роста девочки, но не более, чем на 10 см

Танцевальный класс мальчика выше или равен классу девочки

 

Известно, есть партнеры:

Боб (рост 175, класс «С»)

Энтони (рост 180, класс «В»)

Поль (рост 160, класс «Д»)

Ник (рост 160, класс «Е»)

Фред (рост 176, класс «А»)

 

Партнерши:

Мэри (рост 172, класс «В»)

Энн (рост 170, класс «С»)

Луиза (рост 165, класс «Д»)

Натали (рост 168, класс «С»)

Клаудиа (рост 158, класс «А»)

 

Лабораторная работа №2

 

Тема работы: реализация рекурсии на ПРОЛОГе.

Письменный отчет по работе кроме текста задания и исходного текста программы содержит пошаговое описание реализуемой рекурсии для 5 шагов.

Варианты заданий:

1. , a и n вводятся с клавиатуры

 

2. , n –раз

 

3.

 

4.

 

5. y=sin(x)+sin(sin(x))+ …+ sin(sin(…(sin(x)))

6.

7.

 

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

 

Тема: Работа со списками на Turbo Prologе. Цель:Научиться решать типовые задачи со списками, используя принципы логического программирования.

 

Задания на выполнение практических работ:

Варианты заданий:

 

1. Дан список из 10 элементов. Упорядочить его в порядке возрастания или убывания.

2. Дан список из 10 элементов. Получить список, циклически сдвинутый на один элемент влево, например, исходный список -[1,2,3,4,5], результат- [2,3,4,5,1].

3. Перевести список чисел от 1 до 12 в соответствующие названия месяцев.

4. Дан список из 10 элементов. Найти максимальный элемент списка.

5. Дан список из 10 элементов. Выделить все одинаковые элементы списка в отдельный список.

6. Дан список из произвольного числа элементов. Установить является ли количество элементов четным или нет.

7. Дан список из 5 элементов. Установить, является ли список палиндромом: т.е. читается ли он одинаково, как справа налево, так и слева направо, например, [a,b,c,b,a].

8. Дан список из 10 элементов. Подсчитать количество положительных и отрицательных элементов в списке.

9. Дан список из 10 элементов. Найти сумму элементов в списке.

10. Дан список из 10 элементов. Найти количество элементов в списке, принадлежащих заданному диапазону.

11.

Лабораторная работа №4

 

 








Не нашли, что искали? Воспользуйтесь поиском по сайту:



©2015 - 2024 stydopedia.ru Все материалы защищены законодательством РФ.