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 произойдет выход из программы:


 

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

29168. Судебная баллистика 52.5 KB
  Судебная баллистика – это отрасль криминалистической техники, изучающая огнестрельное оружие и боеприпасы, следы их применения, а также разрабатывающая приёмы и методы обнаружения, собирания и исследования этих объектов с целью решения вопросов установления истины по делу, решения вопросов и задач расследования
29169. Криминалистическое значение следов крови 54 KB
  Прочие следы включают в себя: следы отображения (следы зубов, ногтей, кожного покрова тела человека) следы вещества (это биологические следы: кровь, слюна, сперма, а также следы других выделений человеческого организма)
29170. Почерковедческая экспертиза 62 KB
  Следовательно объектами почерковедческой экспертизы являются рукописные документы фрагменты рукописных текстов краткие записи буквенные и цифровые подписи. Одним или разными лицами выполнены тексты подписи в различных документах либо отдельной части текста в одном документе например подписи от имени гна Иванова в накладной и расходном ордере или рукописный текст и подпись от имени гна Иванова Диагностические задачи связаны с решением вопросов: 1. Свободные образцы рукописи и подписи выполненные до начала производства по...
29172. Установление дистанции выстрела 56 KB
  Принято выделять 3 основных дистанции выстрела: 1 выстрел в упор Выстрел в упор происходит тогда когда дульный срез оружия касается преграды при производстве выстрела. В этом случае: может наблюдаться отпечаток дульного среза оружия штанцмарка на преграде теле человека дополнительные следы выстрела находятся внутри раневого канала. 2 выстрел с близкого расстояния В этом случае дополнительные факторы следы выстрела находятся вокруг входного отверстия.
29173. Криминалистическая регистрация 58.5 KB
  Виды учетов соответствующие им формы информационных карт а также порядок систематизации информации об объектах учета в рамках одного вида учета определяется МВД России. Криминалистическая регистрация насчитывает множество различных видов учетов. Оперативносправочные учеты чаще всего характерно наличие причинноследственной связи между объектом учета и событием преступлением. К оперативносправочным учетам относят учет: лиц подвергшихся аресту; лиц осужденных за совершение преступлений; лиц находящихся в розыске; лиц совершивших...
29174. Криминалистическое исследование документов 58.5 KB
  Исследование письма. Объектами криминалистического исследования письма являются письменная речь и почерк: 1 почерковедческое исследование; 2 автороведческое исследование. Техникокриминалистическое исследование.
29175. Автороведческое исследование документов 58.5 KB
  В письменной речи выделяют общие и частные языковые навыки. К общим языковым навыкам относят: стилистические навыки; синтаксические навыки; лексикофразеологические навыки; орфографические навыки; пунктуационные навыки. К частным признакам письменной речи относят устойчивые нарушения речи индивидуальные лексические грамматические навыки свойственные конкретному исполнителю.
29176. Криминалистическая габитоскопия 60 KB
  Криминалистически значимыми свойствами внешности человека являются ее неповторимость и относительная устойчивость так контуры лба лица форма головы и другие признаки лица обусловлены строением черепа. Все признаки внешности можно разделить на две группы: 1 собственные признаки; 2 сопутствующие признаки. форма отдельных частей тела головы лица шеи плеч груди спины рук ног; антропологические признаки раса национальность; функциональные динамические признаки осанка походка голос жестикуляция мимика и т. К...