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


 

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

67541. Электромеханический и электромагнитный переходные процессы в двигателе постоянного тока независимого возбуждения. Электромеханический переходной процесс 140.5 KB
  Через время Тэм экспонента уменьшается в е = 2,71828 раз. За время 2Тэм она уменьшится в е2 раз. Через время 3Тэм экспонента уменьшается приближенно в 20 раз, тогда считают, что переходной процесс заканчивается (остается 5 % от первоначального значения экспоненты).
67542. Совместное протекание электромагнитного и электромеханического переходных процессов в двигателе постоянного тока независимого возбуждения 163 KB
  Апериодический и колебательный процессы Совместное протекание электромагнитного и электромеханического переходных процессов в двигателе постоянного тока независимого возбуждения. Допустим что в двигателе постоянного тока независимого возбуждения uв = const; Ф = const но индуктивность якоря...
67543. Метод последовательных интервалов. Включение обмотки возбуждения. Пуск двигателя постоянного тока последовательного возбуждения и трехфазного асинхронного двигателя. Метод последовательных интервалов 143 KB
  Для решения нелинейных дифференциальных уравнений на ЭВМ в настоящее время применяются эффективные численные методы. Включение обмотки возбуждения Рассмотрим переходный процесс при включения обмотки возбуждения двигателя постоянного тока на постоянное напряжение.
67544. Качания ротора синхронного двигателя. Уравнения электромагнита постоянного тока. Качания ротора синхронного двигателя 339.5 KB
  Качания ротора синхронного двигателя. При работе синхронной электрической машины подключенной к сети бесконечной мощности возможны качания ротора. При отклонении продольной оси ротора-индуктора от оси МДС возникает момент который стремится вернуть ротор в нейтральное положение.
67545. Виды теплопередачи. Электрические схемы замещения. Нагревание одного и двух тел 258 KB
  Отметим что теплопередача теплопроводностью наблюдается не только через твердые тела но и через жидкости и газы если они неподвижны. Теплопередача конвекцией Тогда закон Ома для теплового сопротивления имеет тот же вид: Отметим что в отличие от коэффициента теплопроводности λ имеющего достаточно...
67546. Тепловые режимы работы электроприводов. Средняя мощность и температура электродвигателей и электромагнитных устройств. Тепловые режимы работы электропривода 157 KB
  Поскольку двигатель как нагреваемое тело может рассматриваться в виде линейного объекта то средняя температура может быть найдена по средней мощности потерь. Мощность электрических потерь определяется по закону Джоуля-Ленца: pэ = ri2. Они состоят из потерь на гистерезис и вихревые токи и определяются формулой где m масса стали...
67547. Соотношения подобия в механике, электричестве и магнетизме 227 KB
  Простейшим видом подобия является геометрическое подобие. Коэффициент пропорциональности назовем коэффициентом подобия. Геометрически подобные треугольники Определяющим называется размер выбранный для задания коэффициента подобия.
67548. Подобие электромагнитных устройств и электрических машин 128 KB
  Видно что электромагнитная мощность пропорциональна частоте питания произведению площадей стали и окна под обмотки а также амплитуде магнитной индукции и плотности тока в обмотках. 3 Рассмотрим электромагнит постоянного тока см.5 Рассмотрим электродвигатель постоянного тока независимого возбуждения.
67549. ЭЛЕМЕНТЫ ПРОЕКТИРОВАНИЯ ЭЛЕКТРОПРИВОДА 45 KB
  Экономические требования Синтез электропривода Синтез технической системы включает в себя структурный функциональный и параметрический синтез. представление электропривода в виде совокупности элементов определение функций и параметров каждого элемента с учетом их связей и взаимодействия.