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

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

  • Оборудование: Персональный компьютер Среда программирования SWI-Prolog Задание

  • Прототип базы данных «Сессия»

  • Описание базы данных «Сессия» на языке Prolog

  • Цель работы Описать генеалогическое дерево для решения задачи. Составить программу решения задачи. Оборудование


    Скачать 479.13 Kb.
    НазваниеЦель работы Описать генеалогическое дерево для решения задачи. Составить программу решения задачи. Оборудование
    Дата04.11.2022
    Размер479.13 Kb.
    Формат файлаdocx
    Имя файлапрактические 1-3.docx
    ТипДокументы
    #770120

    Цель работы:


    1. Описать генеалогическое дерево для решения задачи.

    2. Составить программу решения задачи.


    Оборудование:


    1. Персональный компьютер

    2. Среда программирования SWI-Prolog


    Задание:


    1. Описать с помощью фактов 4 - уровневое генеалогическое дерево в пролог - программе “Родственники”, включающей предикаты parent и person.

    2. Написать правила, определяющие следующие отношения:

    “X является отцом Y”

    “X является бабушкой Y”

    “X является сестрой Y”

    “X является племянником Y”

    “X является племянницей Y”

    “X является родителем родителя Y”

    “X является прадедушкой Y”

    “X является двоюродным братом Y”

    1. Отладить программу с помощью интерпретатора SWI Prolog.

    2. Продемонстрировать работу программы с помощью вопросов.




    1. Генеалогическое дерево


    Прототипы генеалогического дерева представлен на Рис.1



    Рис.1


    1. Описание с помощью фактов 4 - уровневого генеалогического дерева


    Описание с помощью фактов 4 - уровневого генеалогического дерева на языке Prolog представлено на Рис. 2.


    parent('Sergey','Artem').

    person('Petr','m',37).

    person('Pavel','m',18).

    person('Ksenia','f',21).

    person('Natalia','f',55).

    person('Aleksey','m',72).

    person('Maks','m',90).

    person('Sergey','m',30).

    person('Denis','m',1).

    person('Sofia','f',2).

    person('Artem','m',9).
    father(X, Y) :- parent(X, Y), person(X, 'm', _).

    grandm(X, Y) :- parent(X, Z), parent(Z, Y),person(X, 'f', _).

    sister(X, Y) :- parent(Z1, X), parent(Z2, Y), Z1=Z2, X\=Y, person(X, 'f', _).

    plem(X,Y) :- parent(Z1, X), parent(P1, Z1), parent(P2, Y), P1=P2, Z1\=Y, person(X, 'm', _).

    plem1(X,Y) :- parent(Z1, X), parent(P1, Z1), parent(P2, Y), P1=P2, Z1\=Y, person(X, 'f', _).

    grand(X, Y) :- parent(Z1, Y), parent(X, Z1).

    prapra(X,Y) :- parent(Z1, Y), parent(Z2, Z1), parent(X,Z2), person(X,'m',_).

    cusin(X,Y) :- parent(Z1, X), parent(Z2,Y), parent(P1, Z1), parent(P2, Z2),Z1\=Z2, P1=P2, X\=Y, person(X, 'm', _).

    Рис.2


    1. Результат выполнения программы


    Результат выполнения программы представлен на Рис. 3-4.


    Рис. 3



    Рис. 4


    Лабораторная работа № 2. Использование арифметических операций и унификации арифметических выражений.




    Цель работы:

    1. Рассмотреть использование стандартного предиката отсечения в правилах на языке Пролог.

    2. Составить программу решения задачи.


    Оборудование:


    1. Персональный компьютер

    2. Среда программирования SWI-Prolog


    Задание:


    1. написать правила определения значения функции в зависимости от условия по индивидуальному заданию (варианты приведены в приложении 1);

    2. отладить программу с помощью интерпретатора SWI Prolog;

    3. продемонстрировать работу программы с помощью вопросов;

    4. составить отчет по лабораторной работе.





    run:-write('Input X,R:'),nl,

    read(X), number(X), read(R), number(R),

    f2(X,R,F),

    write('F = '), write(F),nl.
    f1(X,R,Y) :- X<0,!,Y is R*(X*X).

    f1(_,_,Y) :- Y is 0 - 1.

    f2(X,R,F) :- f1(X,R,Y),Y<0,!,F is Y/(1-Y).

    f2(X,R,F) :- f1(X,R,Y),F is Y*Y.




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







    Цель работы:

    1. Рассмотреть использование стандартного предиката отсечения в правилах на языке Пролог.

    2. Составить программу решения задачи.


    Оборудование:


    1. Персональный компьютер

    2. Среда программирования SWI-Prolog


    Задание:
    База данных “Сессия” содержит факты, которые описывают отношения двух типов:

    1) lector(<фамилия>,<дисциплина>,<номер группы>,<дата экзамена>

    2) student(<фамилия>,<номер группы>,<номер зачетки>).

    В работе необходимо выполнить следующие действия:

    1. Создать с помощью фактов базу данных «Сессия», включающую предикаты lector и student.

    2. Написать правила, обеспечивающие ответ на следующие вопросы:

    А) Выдать на экран фамилии всех студентов, которые сдают экзамен определенного числа, дата задается следующим образом: ‘хх.хх.xxxx’.

    Например, ’10.01.2001’.

    Б) Выдать на экран фамилии всех студентов, которые сдают экзамен определенному лектору.

    В) Выдать на экран названия дисциплин, по которым будет сдавать экзамен определенный студент.

    Г) Выдать на экран фамилии преподавателей, которые принимают экзамены в данной группе.

    Д) Выдать на экран фамилии всех студентов, которые учатся в данной группе.

    Е) Выдать на экран названия дисциплин, по которым принимает экзамен данный преподаватель.

    1. Отладить программу с помощью интерпретатора SWI Prolog.

    2. Продемонстрировать работу программы с помощью вопросов.

    3. Выбрать соответствующий вариант задания на вычисление y=f(x) в зависимости от условия, и переписать правила с использованием стандартного предиката отсечения «!» в приложении (см. Рис.1).



    Р
    ис.1


    1. Прототип базы данных «Сессия»


    Прототипы базы данных «Сессия» представлен на Рис.2


    Рис.2


    1. Описание базы данных «Сессия» на языке Prolog

    Описание базы данных «Сессия» на языке Prolog представлено на Рис.3.

    lector('Karpovish','Intelligent information systems','61-20','27.03.2022').

    lector('Karpovish','Intelligent information systems','61-20','27.03.2022').

    lector('Karpovish','Intelligent information systems','62-20','27.03.2022').

    lector('Karpovish','Intelligent information systems','60-20','27.03.2022').

    lector('Doroshenko','Mathematical and simulation modeling','63-20','29.03.2022').

    lector('Karpovish','Intelligent information systems','64-20','27.03.2022').

    lector('Znyakin','Information systems design','61-20','28.03.2022').

    lector('Eremeev', 'Designing network and mobile applications','61-20','29.03.2022').

    student('Kuhareva','61-20','1').

    student('Ivanow','61-20','2').

    student('Petrow','61-20','3').

    student('Antonow','64-20,'4').

    student('Lastochkin','60-20','5').

    student('Sobolew','62-20','6').
    list_student_by_teacher(X, Y) :- student(X,Z1,_), lector(Y,_,Z2,_), Z1=Z2, Y\=X, student(X,_,_).

    list_dist_by_student(X,Y) :- student(X, Z1,_), lector(D,Y,Z2,_), Z1=Z2, D\=X,lector(_,Y,_,_).

    list_teacher_by_group(X,Y) :- lector(Y,_,X,_).

    list_student_by_group(X,Y) :- student(Y,X,_).

    list_exam(X,Y) :- lector(X,Y,_,_).

    Рис.3

    1. Результат выполнения программы


    Результат выполнения программы представлен на Рис. 4-7.


    Рис. 4


    Рис. 5



    Рис. 6


    Рис. 7


    1. Блок схема программы для решения системы уравнений

    Блок схема программы для решения системы уравнений представлена на Рис. 8


    Рис.8


    1. Описание базы данных «Сессия» на языке Prolog

    Листинг программы для решения уравнения на языке Prolog представлен на Рис. 9.

    run:-write('Input X,R:'),nl,

    read(X), number(X), read(R), number(R),

    f2(X,R,F),

    write('F = '), write(F),nl.
    f1(X,R,Y) :- X<0,!,Y is R*(X*X).

    f1(_,_,Y) :- Y is 0 - 1.

    f2(X,R,F) :- f1(X,R,Y),Y<0,!,F is Y/(1-Y).

    f2(X,R,F) :- f1(X,R,Y),F is Y*Y.



    Рис. 9

    1. Результат выполнения программы

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



    Рис. 10


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