Главная страница
Навигация по странице:

  • Федеральное государственное бюджетное образовательное учреждение высшего образования «Московский государственный технический университет

  • Вопросы: Что собой представляет программа на Prolog

  • Какова структура программы на Prolog

  • Как реализуется программа на Prolog Описывается база знаний, задается вопрос. Как формируются результаты работы программы

  • Цель работы

  • Логическое программирование. Отчет к лабораторным работам 11, 12, 13 По курсу Функциональное и логическое программирование


    Скачать 180.94 Kb.
    НазваниеОтчет к лабораторным работам 11, 12, 13 По курсу Функциональное и логическое программирование
    АнкорЛогическое программирование
    Дата29.11.2021
    Размер180.94 Kb.
    Формат файлаdocx
    Имя файлаFaLP11-13.docx
    ТипОтчет
    #285636




    Министерство науки и высшего образования Российской Федерации

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

    высшего образования

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

    имени Н.Э. Баумана

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

    (МГТУ им. Н.Э. Баумана)



    ФАКУЛЬТЕТ «Информатика и системы управления»
    КАФЕДРА «Программное обеспечение ЭВМ и информационные технологии»
    ОТЧЕТ
    к лабораторным работам №11, 12, 13

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

    Студент ИУ7-65Б

    Абрамов В.А.

    Преподаватель

    Толпинская Н.Б

    Москва, 2021г.
    11:

    Задание №1 Настроить утилиту TestGoal


    Рис.1 – создание нового проекта


    Рис. 2 – настройка проекта



    Рис. 3 – запуск тестовой программы

    Задание№2: разработать свою программу - «Телефонный справочник»

    domains

    phone, name = symbol.

    predicates

    phone_book(phone, name).

    clauses

    phone_book("+10000", "Moscow").

    phone_book("+10000", "NotMoscow").

    phone_book("+01000", "SPB").

    phone_book("+00100", "Sevastopol").

    phone_book("+00010", "Ufa").

    phone_book("+00001", "Simferopol").

    goal

    phone_book("+10000", Name).
    Результат работы программы:


    Вопросы:

    Что собой представляет программа на Prolog?

    Программа на Prolog представляет собой набор фактов и правил, которые формируют базу знаний о предметной области.

    Факты представляют собой составные термы, с помощью которых фиксируется наличие истинностных отношений между объектами предметной области — аргументами терма.

    Правила являются обобщенной формулировкой условия истинности знания – отношения между объектами предметной области (аргументами терма), которое записано в заголовке правила. Условие истинности этого отношения является телом правила.

    Какова структура программы на Prolog?

    Программа на Prolog состоит из разделов. Каждый раздел начинается со своего заголовка.

    Структура программы:

    • директивы компилятора — зарезервированные символьные константы

    • CONSTANTS — раздел описания констант

    • DOMAINS — раздел описания доменов

    • DATABASE — раздел описания предикатов внутренней базы данных

    • PREDICATES — раздел описания предикатов

    • CLAUSES — раздел описания предложений базы знаний

    • GOAL — раздел описания внутренней цели (вопроса).

    В программе не обязательно должны быть все разделы.

    Как реализуется программа на Prolog?

    Описывается база знаний, задается вопрос.

    Как формируются результаты работы программы?

    В процессе выполнения программы — система пытается найти, используя базу знаний, такие значения переменных, при которых на поставленный вопрос можно дать ответ «Да».
    12:

    Цель работы – познакомиться со структурой, принципами оформления и логикой выполнения программы на Prolog.

    Задачи работы: приобрести навыки декларативного описания предметной области с использованием фактов и правил.

    Изучить способы использования фактов и правил в программе на Prolog, принципы и правила сопоставления и отождествления, принцип унификации.

    Задание:

    Составить программу – базу знаний, с помощью которой можно определить, например, множество студентов, обучающихся в одном ВУЗе. Студент может одновременно обучаться в нескольких ВУЗах. Привести примеры возможных вариантов вопросов и варианты ответов (не менее 3-х). Описать порядок формирования вариантов ответа.
    Листинг:

    domains

    id = integer.

    fname, lname = symbol.

    uni = symbol.

    predicates

    student(id, fname, lname).

    study(id, uni).

    students_from_uni(fname, lname, uni).

    clauses

    student(1, "Abc", "123").

    student(2, "Bca", "231").

    student(3, "Cab", "312").

    study(1, bmstu).

    study(1, msu).

    study(2, mfti).

    study(3, bmstu).

    students_from_uni(Fname, Lname, Uni) :- study(Id, Uni), student(Id, Fname, Lname).



    goal

    % 1.Find all universities of student by id

    %study(1, Uni). % 1.1

    %study(2, Uni). % 1.2

    %study(4, Uni). % 1.3



    % 2. Find all students(id) from one uni

    %study(Id, bmstu). % 2.1

    %study(Id, msu). % 2.2

    %study(Id, no_uni). %2.3



    % 3. Find all students(name), from one uni

    %students_from_uni(Fname, Lname, bmstu). % 2.1

    %students_from_uni(Fname, Lname, msu). % 2.2

    %students_from_uni(Fname, Lname, no_uni). % 2.3

    Результаты работы программы:

    1. По id студента найти все университеты, в которых он обучается:



    Рис. 1-3 – результаты работы 1.1, 1.2, 1.3

    Система пытается найти, используя базу знаний, такие значения Uni, при которых на поставленный вопрос «в составном терме study: id == значение?» можно дать ответ «Да».

    2. Найти всех студентов (id) одного вуза:



    Рис. 4-6 – результаты работы 2.1, 2.2, 2.3

    Система пытается найти, используя базу знаний, такие значения Id, при которых на поставленный вопрос «в составном терме study: uni == значение?» можно дать ответ «Да».

    3. Найти всех студентов (имя, фамилия) одного вуза:



    Рис. 7-9 – результаты работы 3.1, 3.2, 3.3

    Система пытается найти, используя базу знаний, такие значения Fname, Lname, при которых на поставленный вопрос «student Id == значение Id из study, где Uni == значение?» можно дать ответ «Да».

    Вопросы:

    Что собой представляет программа на Prolog?

    Программа на Prolog представляет собой набор фактов и правил, которые формируют базу знаний о предметной области, вопроса.

    Факты представляют собой составные термы, с помощью которых фиксируется наличие истинностных отношений между объектами предметной области — аргументами терма.

    Правила являются обобщенной формулировкой условия истинности знания – отношения между объектами предметной области (аргументами терма), которое записано в заголовке правила. Условие истинности этого отношения является телом правила.

    Какова структура программы на Prolog?

    Программа на Prolog состоит из разделов. Каждый раздел начинается со своего заголовка.

    Структура программы:

    • директивы компилятора — зарезервированные символьные константы

    • CONSTANTS — раздел описания констант

    • DOMAINS — раздел описания доменов

    • DATABASE — раздел описания предикатов внутренней базы данных

    • PREDICATES — раздел описания предикатов

    • CLAUSES — раздел описания предложений базы знаний

    • GOAL — раздел описания внутренней цели (вопроса).

    В программе не обязательно должны быть все разделы.

    Как реализуется программа на Prolog?

    Описывается база знаний, задается вопрос.

    Как формируются результаты работы программы?

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


    написать администратору сайта