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

  • Пример 4

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

  • Пример 5

  • Пример 6

  • Пример 7

  • Z

  • Лабораторный практикум пролог. Методические рекомендации по дисциплине Анализ данных


    Скачать 311.21 Kb.
    НазваниеМетодические рекомендации по дисциплине Анализ данных
    АнкорЛабораторный практикум пролог
    Дата11.03.2021
    Размер311.21 Kb.
    Формат файлаodt
    Имя файлаProlog.odt
    ТипМетодические рекомендации
    #183725
    страница5 из 10
    1   2   3   4   5   6   7   8   9   10
    Результат выполнения программы:

    Список студентов 1-курса

    lena

    dima

    marina

    Пример 4

    База данных содержит факты вида father(name, name). Создать проект, позволяющий определить кто чей отец.

    Решение:

    DOMAINS

    name=symbol

    PREDICATES

    father (name, name)

    everybody

    CLAUSES

    father ("Павел", "Петр").

    father ("Петр", "Михаил").

    father ("Петр", "Иван").

    everybody:- father (X, Y),

    write(X," - это отец"^,'^")^^ fail.

    GOAL

    everybody.

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

    Павел - это отец Петра

    Петр - это отец Михаила

    Петр - это отец Ивана

    Пример 5

    Создать проект, реализующий железнодорожный справочник. В справочнике содержится следующая информация о каждом поезде: номер поезда, пункт назначения и время отправления.

    а) вывести всю информацию из справочника.

    Решение:

    DOMAINS

    nom=integer

    p, t=string

    PREDICATES

    poezd(nom,p,t)

    CLAUSES

    poezd(233,moskva,"12-30"). poezd(257,moskva,"22-40"). poezd(133,armavir,"10-20"). poezd(353,armavir,"20-40"). poezd(353,adler,"02-30"). poezd(413,adler,"11-10"). poezd(256,piter,"21-30").

    GOAL

    write(" Расписание поездов"), nl,

    write("Номер Пункт прибытия Время отправления"), nl, poezd(N,P,T), write(N," ",P," ",T),nl,fail.

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

    Расписание поездов

    Номер Пункт прибытия Время отправления

    233

    moskva

    12-30

    257

    moskva

    22-40

    133

    armavir

    10-20

    353

    armavir

    20-40

    353

    adler

    02-30

    413

    adler

    11-10

    256

    piter

    21-30

    б) организовать поиск поезда по пункту назначения. Решение:

    GOAL

    write (" Пункт назначения:"), Readln(P), nl, write ("Номер Время отправления"), nl,

    poezd(N,P,T), write(N," ",T), nl,

    fail.

    Комментарий: Readin -стандартный предикат ввода строкового значения

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

    Пункт назначения:armavir

    Номер Время отправления

    133 10-20

    353 20-40

    в) вывести информацию о поездах, отправляющихся в заданный временной промежуток

    Решение:

    GOAL

    write(" Время отправления:"),nl, write("c..."), Readln(T1),

    write^^c..."), Readln(T2), nl,

    write("Номер Пункт назначения Время отправления"), nl,poezd(N,P,T),T>=T1,T<=T2,write(N," ",P," ", T),

    nl, fail.

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

    Время отправления:

    c...10-00

    до...15-00


    Время отправления

    12-30

    10-20

    11-10

    Номер Пункт назначения

    233 moskva

    133 armavir

    413 adler

    Пример 6

    Имеется база данных, содержащая данные о спортсменах: имя и вид спорта. Определить возможные пары одного из спортсменов-теннисистов с другими теннисистами.

    Решение:

    DOMAINS

    имя,вид сП string

    PREDICATES

    играет(имя,вид_сп) спис_спортс

    CLAUSES

    играет("Саша",теннис). играет("Аня",волейбол). играет("Олег",футбол). играет("Коля",теннис). играет("Саша",футбол). играет("Андрей",теннис).

    спис спортс:- играет(Х,теннис),!,играет(Y,теннис), X<>Y,write(X,"-",Y),nl,fail.

    GOAL

    write("Пары теннисистов"),nl, спис_спортс.

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

    Пары теннисистов

    Саша-Коля Саша-Андрей

    Пример 7

    Студенту в зависимости от набранной в процессе обучения суммы баллов Z присваивается квалификация:

    магистр (М), если 80<=Z<=100

    специалист (S), если 60<= Z< 80 бакалавр (B), если 40<= Z< 60 неудачник (N), если 0<=Z< 40

    Составить программу, которая определит квалификацию в зависимости от введенного значения Z

    Решение:

    Для решения задачи составим правило grade, устанавливающее связь между количеством баллов (z) и квалификацией (r). Правило состоит из нескольких частей. Первые две части обеспечивают проверку недопустимых значений Z с выводом соответствующего сообщения. Остальные части правила определяют квалификацию в зависимости от значения Z.

    DOMAINS

    z=integer

    r=string

    PREDICATES

    grade(z,r)

    CLAUSES

    grade(Z,""):-Z<0,!, write("Неверный ввод данных!"). grade(Z,""):-Z>100,!,write("Неверный ввод данных!"). grade(Z,"M"):-Z>=80,!.

    grade(Z,"S"):-Z>=60,!.

    grade(Z,"B"):-Z>=40,!. grade(Z,"N").

    GOAL

    write("Z="), readint(Z), grade(Z,R),write(R).

    1   2   3   4   5   6   7   8   9   10


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