Лабораторный практикум пролог. Методические рекомендации по дисциплине Анализ данных
Скачать 311.21 Kb.
|
Комментарий: readint - стандартный предикат ввода целочисленного значения Результат выполнения программы: й случай: Z=88 M й случай: Z=65 S й случай: Z=39 N й случай: Z=110 Неверный ввод данных! ЗАДАНИЯ ДЛЯ САМОСТОЯТЕЛЬНОЙ РАБОТЫ База данных содержит следующие факты: увлекается(“Коля”, гитара). увлекается(“Оля”, скрипка). увлекается(“Дима”, плаванье). увлекается(“Таня”, теннис). спорт(плаванье). спорт(теннис). муз_инстр(скрипка). муз_инстр(гитара). а) составить правило спортсмен и определить, кто увлекается спортом; б) проследить за поиском решения с помощью отладчика; в) построить целевое дерево поиска с возвратом. База данных содержит следующие факты: увлекается(“Дима”, плаванье). увлекается(“Таня”, теннис). увлекается(“Коля”, гитара). увлекается(“Оля”, скрипка). спорт(плаванье). спорт(теннис). муз_инстр(скрипка). муз_инстр(гитара). а) составить правило музыкант и определить, кто увлекается музыкой; б) проследить за поиском решения с помощью отладчика; в) построить целевое дерево поиска с возвратом. Составить программу, реализующую справочник товаров. В справочнике содержится следующая информация о каждой товаре: вид товара (промышленный или продуктовый), название, цена, количество, страна- производитель. Вывести: а) всю информацию из справочника; б) информацию о товарах, количество которых не превышает заданное значение; в) информацию о промышленных товарах, цена которых превышает заданное значение. База данных содержит факты вида: книга(автор, название, издательство, год_издания), украина(город). а) вывести весь список книг; б) вывести список книг авторов Пушкина и Чехова; в) вывести список книг, изданных в издательстве «Питер» не ранее 2000 года. Составить программу, реализующую авиасправочник. В справочнике содержится следующая информация о каждом рейсе: номер рейса, пункт назначения, время вылета, дни(ежедн., чет, нечет). Вывести: а) всю информацию из справочника; б) информацию о самолетах, вылетающих в заданный пункт по четным дням; в) информацию о самолетах, вылетающих ежедневно не позже указанного времени. Составить программу, реализующую географический справочник. В справочнике содержится следующая информация о каждой стране: название страны, название столицы, численность населения, географическое положение (Европа или Азия ). Вывести: а) всю информацию из справочника; б) информацию о странах, численность населения которых превышает заданное значение; в) информацию о европейских странах, численность населения которых не превышает заданное значение. Составить программу, реализующую словарь. В словаре содержится следующая информация: слово и его перевод (русские и английские слова). Реализовать вывод всего словаря, перевод с русского на английский, с английского на русский (с несколькими значениями). Составить программу, реализующую телефонный справочник. В справочнике содержится следующая информация о каждом абоненте: имя и телефон. Реализовать вывод всей информации из справочника, поиск телефона по имени, поиск имени по телефону База данных содержит факты вида: ученик(имя, класс) и увлекается(имя, хобби). Составить программу, которая выводит: а) список всех учеников и их увлечения; б) подбирает одному из учеников указанного класса, увлекающемуся кино, пару из других классов. Вывести все возможные пары. База данных содержит факты вида: ученик(имя, класс) и играет(имя, вид_спорта). Составить программу, которая: а) выводит список всех учеников заданного класса и вид спорта, которым они увлекаются; б) подбирает одному из учеников указанного класса, играющему в бадминтон, пару из других классов. Вывести все возможные пары. 1.3 Решение логических задач в ПРОЛОГе Краткие теоретические сведения ПРОЛОГ позволяет наиболее естественным образом решать логические задачи, моделируя процесс размышления человека с помощью правил. Многие логические задачи связаны с рассмотрением нескольких конечных множеств с одинаковым количеством элементов, между которыми устанавливается взаимно-однозначное соответствие. В ПРОЛОГе эти множества можно описывать как базы данных, а зависимости между объектами устанавливать с помощью правил. Пример 1 В автомобильных гонках три первых места заняли Алеша, Петя и Коля. Какое место занял каждый из них, если Петя занял не второе и не третье место, а Коля - не третье? Решение Традиционным способом задача решается заполнением таблицы. По условию задачи Петя занял не второе и не третье место, а Коля - не третье. Это позволяет поставить символ '-' в соответствующих клетках.
Между множеством имен участников гонки и множеством мест должно быть установлено взаимнооднозначное соответствие. Поэтому определяем занятое место сначала у Пети, затем у Коли и, наконец, у Алеши. В соответствующих клетках проставляем знак '+'. В каждой строке и каждом столбце должен быть только один такой знак.
Из последней таблицы следует, что Алеша занял третье место, Петя - первое, Коля - второе. Программа на ПРОЛОГе будет выглядеть следующим образом: PREDICATES имя(string) место(string) соответствие(string,string) решение(string,string,string,string,string,string) CLAUSES имя(алеша). имя(петя). имя(коля). место(первое). место(второе). место(третье). /* Устанавливаем взаимнооднозначное соответствие между множеством имен и множеством мест, X - имя, Y - место */ /* Петя занял не второе и не третье место */ соответствие^, Y):-имя(X), X=nетя, место(Y),not(Y=второе), not(Y=третье). /* Коля занял не третье место */ соответствие^, Y):- имя®, X=коля, место^), not(Y=третье). соответствие^, Y):- имя®, X=алеша, место^). /* У всех ребят разные места */ решение(X1,Y1,X2,Y2,X3,Y3):- X1=петя,соответствие(X1,Y1), X2=коля,соответствие(X2,Y2), X3=алеша,соответствие(X3,Y3), Y1<>Y2, Y2<>Y3, Y1<>Y3. GOAL решение(X1,Y1,X2,Y2,X3,Y3), write(X1," - ",Y1),nl, write(X2," - ",Y2),nl,write(X3," - ",Y3),nl. Результат выполнения программы петя - первое коля - второе алеша - третье Пример 2 Наташа, Валя и Аня вышли на прогулку, причем туфли и платье каждой были или белого, или синего, или зеленого цвета. У Наташи были зеленые туфли, а Валя не любит белый цвет. Только у Ани платье и туфли были одного цвета. Определить цвет туфель и платья каждой из девочек, если у всех туфли и платья были разного цвета. |