Лабораторный практикум пролог. Методические рекомендации по дисциплине Анализ данных
Скачать 311.21 Kb.
|
Результат выполнения программы: Список студентов 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. Результат выполнения программы Расписание поездов Номер Пункт прибытия Время отправления
б) организовать поиск поезда по пункту назначения. Решение: 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). |