50868

Построение простейших экспертных систем

Лабораторная работа

Информатика, кибернетика и программирование

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

Русский

2014-01-31

160 KB

1 чел.

МИНИСТЕРСТВО ОБРАЗОВАНИЯ, НАУКИ, МОЛОДЕЖИ И СПОРТА УКРАИНЫ

ОДЕССКИЙ НАЦИОНАЛЬНЫЙ МОРСКОЙ УНИВЕРСИТЕТ

Кафедра «Информационные технологии»

Отчёт о выполнении лабораторной работы №6

 

«Построение простейших экспертных систем»

Выполнил:

Студент КСФ 4 к. 4 гр.

Мельников В.Е.

Проверил:

Рудниченко Н.Д.

Одесса 2013

Задание к работе

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

Выполнение работы

Описание предикатов:

book(number, name, author, year, publishing, country)– описывает книгу:

 number – порядковый номер книги

 name – название книг

 author – имя автора книги

 year – год печати книги

 publishing – название издательства

 country – название страны издания

start – организует начало работы программы, выводит главное меню.

analyze(integer) – анализирует введенное число, соответствующее пункту меню, запрашивает все необходимые для поиска данные и организует поиск, либо завершает работу программы.

search_number(nomer) – организует поиск книги по ее порядковому номеру number и выводит результаты поиска на экран.

search_country(country) – организует поиск книги по ее стране издательства country и выводит результаты поиска на экран.

seach_year(year) – организует поиск книги по ее году выпуска year и выводит результаты поиска на экран.

search_publishing(publishing) – организует поиск книги по ее издательству publishing и выводит результаты поиска на экран.

exit_program(char) – организует выход из программы при введении с клавиатуры определенного символа.

Листинг программы:

domains

number = integer

name = string

author = string

year = integer

publishing = string

country = string

 

predicates

nondeterm book(number, name, author, year, publishing, country)

nondeterm start

nondeterm analyze(integer)

nondeterm search_number(number)

nondeterm search_country(country)

nondeterm search_year(year)

nondeterm search_publishing(publishing)

nondeterm exit_program(char)

 

clauses

book(1, "Миг бытия так краток","Роджер Желязны", 1991, "Новелла","США").

 book(2, "Патруль Времени","Пол Андерсон", 1994, "Александрия","США").

 book(3, "Совершенный код","Стив Макконнелл", 2008, "Питер","США").

 book(4, "Заставьте танцевать мертвеца","Джеймс Хэдли Чейз", 1997, "Центрполиграф","Великобритания").

 book(5, "Монах, который продал свой Феррари","Робин Шарма", 2009, "София","Канада").

 book(6, "Одна минута глупости","Энтони де Мелло", 2009, "София","Индия").

 book(7, "Психология влияния","Роберт Чалдини", 2009, "Питер","США").

 book(8, "1984","Джордж Оруэлл", 2005, "София","Индия").

 book(9, "Самый богатый человек в Вавилоне","Джорж Клейсон", 2003, "Эридан","США").

 book(10, "Дверь в лето","Роберт Хайнлайн", 1991, "Лениздат","США").

 

 start if write("Программа 'Топ-10 книг'!\n\n"),

 write("Введите нужный пункт:\n"),

 write("1 - найти книгу по порядковому номеру \n"),

 write("2 - найти все книги одного года выпуска\n"),

 write("3 - найти все книги,выпущенные в одной стране\n"),

 write("4 - найти все книги одного издательства\n"),

 write("5 - выйти из программы\n"),

 write("\n"),

 readint(X),

 write("\n"),

 analyze(X),

 write("Желаете продолжить?(y/n)\n"),

 readchar(Yes_No),

 exit_program(Yes_No).

 

analyze(1) if

      write("Вы ввели: 1\n"),

      write("Введите порядковый номер книги:\n"),

      readint(Number),

      search_number(Number).

analyze(2) if

  write("Вы ввели: 2\n"),

  write("Введите год выпуска книги:\n"),

  readint(Year),

  search_year(Year).

 

analyze(3) if

  write("Вы ввели: 3\n"),

  write("Введите название страны:\n"),

  readln(Country),

  search_country(Country).

analyze(4) if

  write("Вы ввели: 4\n"),

  write("Введите название издательства\n"),

  readln(Published),

  search_publishing(Published).

 

analyze(5) if write("You've decided to exit.\nGoodbye!"),

  exit.

     analyze(_) if  write("Неверно введен номер\n"),

     writef("\n").

search_publishing(Published) if not(book(_,_,_,_,Published,_)),

  write("Книг данного издательства нет\n"),

  writef("\n").

search_publishing(Published) if book(_,Name,_,_,Published,_),

  writef("Книга - %s\n",Name),

  fail.

search_publishing(_) if writef("\n"),

write("Желаете продолжить?(y/n)\n"),

  readchar(Yes_No),

  exit_program(Yes_No).

 

 

search_year(Year) if not(book(_,_,_,Year,_,_)),

  write("Книг данного года печати нет\n"),

  writef("\n").

search_year(Year) if book(_,Name,_,Year,_,_),

  writef("Книга - %s\n",Name),

  fail.

search_year(_) if writef("\n"),

write("Желаете продолжить?(y/n)\n"),

  readchar(Yes_No),

  exit_program(Yes_No).

search_country(Country) if not(book(_,_,_,_,_,Country)),

  write("Книг данной страны нет\n"),

  writef("\n").

search_country(Country) if book(_,Name,_,_,_,Country),

  writef("Книга - %s\n",Name),

  fail.

search_country(_) if writef("\n"),

write("Желаете продолжить?(y/n)\n"),

  readchar(Yes_No),

  exit_program(Yes_No).

 

search_number(Number) if not(book(Number,_,_,_,_,_)),

  write("Неправильно введен номер книги\n").

 search_number(Number) if book(Number,Name,Author,_,_,Country),

 writef("Эта книга - %s\n",Name),

 writef("Автор - %s\n",Author),

 writef("Страна - %s\n",Country),

 writef("\n").

exit_program('y') if nl, start; exit.

goal

start. 

Работа программы: 

Для начала работы программы необходимо запустить исполняемый  файл, при этом появится главное меню программы:

При выборе пункта №1 будет найдена книга по порядковому номеру:

При выборе пункта №2 будут найдены все книги одного года выпуска:

При выборе пункта №3 будут найдены все книги, изданные в одной стране:

При выборе пункта №4 будут- найдены все книги одного издательства:

При выборе пункта №5 произойдет выход из программы:


 

А также другие работы, которые могут Вас заинтересовать

44430. Применение методов коммутации на примере глобальных сетей 1.28 MB
  Любые сети поддерживают некоторый способ коммутации своих абонентов между собой. Этими абонентами могут быть удаленные компьютеры, локальны сети, факс-аппараты или просто собеседники, общающиеся между собой с помощью телефонного аппарата.
44431. Дизайн-разработка рекламно-сувенирного буклета 8.08 MB
  Дизайн-разработка рекламно-сувенирного буклета кафедры Художественной и пластической обработки материалов Пояснительная записка к выпускной квалификационной работе по специальности Определение термина буклет история развития буклета. Задачи и функции рекламно-сувенирного буклета. Основные этапы и элементы дизайна буклета .
44433. Разработка приспособления для сборки-сварки кронштейн симметричный 1.38 MB
  Обоснование маршрутной последовательности выполнения сборочно-сварочных операций Проектирование приспособления для сборки-сварки кронштейна переходного Выбор и обоснование конструктивных элементов приспособления установочных зажимных элементов вспомогательных устройств рамы и т. Разработка компоновочной схемы и сборочного чертежа приспособления...
44434. Проектирование микропроцессора (МП) управления внешним объектом на базе микропроцессора производства фирмы Atmel семейства AVR 862.5 KB
  В соответствии с заданием на наше устройство поступают как дискретные так и аналоговые сигналы. Дискретные сигналы не требуют обработки поэтому мы можем сразу подавать их на ЦПУ используя только схему которая будет защищать порты ввода вывода от больших токов. На порты микроконтроллера могут поступать токи до 20 mA
44435. Проект завода по производству пива производительностью 500 тыс. гл в год 2.96 MB
  Приведены выбор и обоснование способов производства пива и процессуальные схемы их получения. Для производства светлого и тёмного пива предусмотрено кипячение сусла с хмелем, брожение, дображивание. Для достижения стабильности пива предложены обработки: фильтрация, осветление, обработка холодом. Применён изобарический розлив
44436. ПРОЕКТИРОВАНИЕ УЧАСТКА ЖЕЛЕЗНОЙ ДОРОГИ 1.05 MB
  Строительная стоимость вариантов трассы Общая строительная стоимость железной дороги выражается следующей формулой: где: коэффициент учитывающий стоимость временных сооружений прочие затраты содержание строящегося предприятия проектно-изыскательские работы а также непредвиденные затраты. Для первого территориального района ; стоимость работ по земляному полотну главных и станционных путей с учетом дополнительных и укрепительных работ тыс.; стоимость работ по искусственным сооружениям на перегонах и раздельных пунктах тыс.; ...
44438. Изобразительный товарный знак «Школа паркура» на основе формы мартышки 1.79 MB
  В рамках курсового проекта был создан знак на основе формы мартышки для школы паркура. Паркур — искусство перемещения и преодоления препятствий. Многими занимающимися воспринимается как стиль жизни. В настоящее время активно практикуется и развивается многими объединениями и частными лицами во многих странах