Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методичка_РЛП_4_форм.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
644.61 Кб
Скачать

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

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

4.1.Задание n1 Отношения между объектами. (на Прологе и Паскале)

4.1.1.Методические указания

В практическом плане:

  • определить заданное сложное отношение через заданные простые отношения средствами языка ПРОЛОГ;

  • сформировать базу данных (явное задание) для простых отношений (база должна быть достаточно представительной для демонстрации возможностей программы);

  • не использовать отсечение и предикаты ввода-вывода;

  • протестировать целевой и другие предикаты, получить явные задания отношений, построить различные сечения отношений;

  • если ответ на запрос содержит повторяющиеся значения, определить дополнительный предикат, содержащий вызов предиката типа findall, setof (см упражнение 3.9.2);

  • для сравнения - написать программу на языке PASCAL (или другом процедурном языке), которая частично реализует те же функции.

В теоретическом плане:

    • записать словесную интерпретацию правил ПРОЛОГ- программы;

    • записать программу посредством формул логики предикатов.

    • сравнить программы (ПРОЛОГ и PASCAL) по критериям:

      • пользовательские возможности;

      • возможности модификации;

      • объем текста программ;

      • трудозатраты;

      • и другие.

4.1.2.Варианты

  1. Определены предикаты: студент(X,Y) - студент, обучающийся в данной группе; преподаватель(X,Y) - преподаватель, который ведет данный предмет; предмет(X,Y) – предмет, который преподается в данной группе. Определите предикат студент_обучающийся_у_преподавателя(X,Y).

  2. Определены предикаты: мужчина(X); женщина(X); родитель(X,Y). Определите следующие предикаты тетя(X,Y); братья(X,Y).

  3. Определены предикаты: отец(X,Y); мать(X,Y); мужчина(X); женщина(X). Определите предикаты: двоюродные_братья(X,Y); племянник(X,Y); внук(X,Y); внучка(X,Y).

  4. Определены предикаты: отец(X,Y); мать(X,Y); мужчина(X); женщина(X); муж_жена(X,Y). Определите предикаты тесть(X,Y); теща(X,Y); сват(X,Y).

  5. Определены предикаты: отец(X,Y); мать(X,Y); мужчина(X); женщина(X); муж_жена(X,Y). Определите предикаты троюродные_братья(X,Y); племянник(X,Y).

  6. Определены предикаты: отец(X,Y); мать(X,Y); мужчина(X); женщина(X). Определите предикаты: внучатый_племянник(X,Y), внучатая_племянница(X,Y)..

  7. Определены предикаты: отец(X,Y); мать(X,Y); мужчина(X); женщина(X). Определите предикаты сводные_братья(X,Y); сводные_братья_или_сестры(X,Y).

  8. Определены предикаты: отец(X,Y); мать(X,Y); мужчина(X); утверждает(X,Y) (X утверждает, что Y – убийца). Определите предикат: убийца(X). X - убийца, если это утверждают Y и Z, которые являются двоюродными братьями.

  9. Определены предикаты: отец(X,Y); мать(X,Y); мужчина(X); женщина(X); знакомы(X,Y). Определить предикат: люди_одного_круга(X,Y), если X,Y - братья, или сестры, или они знакомы, или их родители знакомы.

  10. Определены предикаты: станция_назначения(X,Y); станция_отправления(X,Y); промежуточная_станция(X,Y). (X - станция, Y- поезд). Определить предикат пересадочная_станция (X,Y,Z) для поездов X и Y, который истинен, если поезда следуют через одну промежуточную станцию Z, или станция назначения Z одного поезда является станцией отправления Z другого.

  11. Определены предикаты: отец(X,Y); мать(X,Y); мужчина(X); женщина(X); муж_жена(X,Y). Определить предикат однокровные(X,Y), если у них общий прадедушка.

  12. Определены предикаты: мужчина(X); женщина(X); родитель(X,Y). Определить отношение прямой_родственник(X,Y). X – прямой родственник Y, если X - отец, мать, дедушка, бабушка, брат или сестра Y.

  13. Определены предикаты: мужчина(X); женщина(X); родитель(X,Y). Определить предикаты: тесть(X,Y); теща(X,Y); свекр(X,Y); свекровь(X,Y).

  14. Определены предикаты: сессия(V,W,X,Y,Z) (V,W,X,Y,Z - названия предметов сессии); экзамен(X,Y,Z) (студент X сдал предмет Y с оценкой Z). Определить предикаты: отличник(X) (студент X сдал все экзамены сессии на "отлично"); двоечник(X) (студент X сдал какой-либо из экзаменов сессии на"неуд").

  15. Определены предикаты: мужчина(X); женщина(X); родитель(X,Y); муж_жена(X,Y). Определить отношения тесть(X,Y), теща(X,Y).

  16. Определены предикаты: мужчина(X); женщина(X); родитель(X,Y); муж_жена(X,Y). Определить отношения золовка(X,Y), своячница(X,Y).

  17. Определены предикаты: мужчина(X); женщина(X); родитель(X,Y); муж_жена(X,Y). Определить отношения кузены(X,Y), кузины(X,Y).

  18. Определены предикаты: мужчина(X); женщина(X); родитель(X,Y); муж_жена(X,Y). Определить предикат двоюродная_бабушка(X,Y).

  19. Определены предикаты: имеет_специальность(X,Y); муж_жена(X,Y). Определить предикат имеют_общие_интересы(X,Y). X и Y имеют общие интересы, если они коллеги или их жены (мужья) коллеги.

  20. Определены предикаты: занимается_спортом(X,Y); имеет_специальность(X,Y). Определить предикат имеют_общие_интересы(X,Y). X и Y имеют общие интересы, если они коллеги или занимаются одним видом спорта.

  21. Определены предикаты: мужчина(X); женщина(X); родитель(X,Y); муж_жена(X,Y). Определить отношение шурин(X,Y).

  22. Определены предикаты: мужчина(X); женщина(X); родитель(X,Y); нравится(X,Y). Определить отношение близкие_по_духу(X,Y), если существует нечто, что обоим нравится, либо они братья или сестры.

  23. Определены предикаты: мужчина(X); женщина(X); родитель(X,Y); профессия (X,Y). Определить отношение связаны_общим_интересом(X,Y). X и Y связаны общим интересом, если у них одна и та же профессия или их жены - родные сестры.

  24. Определены предикаты: нравится(X,Y), вор(X), дефицитная вещь(X), милиционер(X), не_боится(X,Y). Определить отношение: мог_украсть(X,Y). .X мог украсть Y, если X - вор и Y - есть вещь, которая нравится X или если Y - дефицитная вещь, а Z - милиционер, причем X не боится Z.

  25. Определены предикаты: студент(X,Y) - студент, обучающийся в данной группе; предмет(X,Y) – предмет, по которому данная группа сдает экзамен. Определить отношение: экзамен(X,Y), студент X сдает экзамен по дисциплине Y, если он учится в группе, которая сдает экзамен по этой дисциплине.

  26. Определены предикаты: студент(X,Y) - студент, обучающийся в данной группе; преподаватель(X,Y) – преподаватель, который читает лекции в данной группе. Определить отношение: лекции(X,Y), студент X слушает лекции преподавателя Y, если он учится в группе, которой читает лекции данный преподаватель.

  27. Определены предикаты: студент(X,Y) - студент, обучающийся в данной группе; присутствовал(X,Y) – студент, который присутствовал на занятиях в данный день. Определить отношение: встретились(X,Y,Z), два студента X,Y встретились в некоторый день Z, если они учатся в одной группе и оба присутствовали на занятиях в этот день.

  28. Определены предикаты: дорога(X,Y) - дорога, включает данную станцию; станция(X,Y) – станция, на которую данный поставщик поставляет груз. Определить отношение: поставщик(X,Y), поставщик поставляет груз на дорогу, если он поставляет груз на какую-либо станцию этой дороги.

  29. Определены предикаты: дорога(X,Y) - дорога, включает данную станцию; отправляет(X,Y) – станция, на которую данное предприятие поставляет груз; получает(X,Y) – станция, от которой данное предприятие получает груз. Определить отношение: является_клиентом(X,Y), предприятие является клиентом дороги, если оно отправляет или получает грузы с какой-либо станции этой дороги.

  30. Определены предикаты: нравится(X,Y). Определить отношение любит(X,A). X любит все то, что нравится Y и Z, или любит P, которому нравятся цветы.