Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методический практикум.doc
Скачиваний:
9
Добавлен:
12.02.2015
Размер:
106.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. Известны следующие факты:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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