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


 

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

30777. Подбор башенного крана 16.38 KB
  Подбор башенного крана требуемая грузоподъёмность крана Qтр = Qэл Qстр Qосн т Qэл масса монтируемого элемента Qстр масса строповочного приспособления Qосн масса монтажной оснастки т. Высота подъёма крюка Hкр = hо hз hэл hстр м hо превышение монтажного горизонта над уровнем стоянки крана hз запас по высоте для обеспечения безопасности монтажа hэл высота монтируемого элемента hстр высота строповки м Расчёт вылета стрелы крана производят по формуле б = а 2 b c м где а ширина подкраннового пути b ...
30778. Технико-экономическое сравнение вариантов 13.75 KB
  Исходя из того требуется ли нам выполнить проект быстро или дешево выбирают метод монтажа по раннее подсчитанным показателям : механоёмкости трудоёмкости продолжительности монтажа себестоимости выполнения работ и приведённым затратам. Механоёмкость затраты машинного времени на выполнение единицы монтажа также по ЕНиР. Продолжительность монтажа считается по количеству машиночасов всех монтажных кранов с учётом частичного совмещения во времени их работы на объекте. Себестоимость монтажа сумма прямых затрат и накладных расходов.
30779. Монтаж одноэтажных промышленных зданий. Методы монтажа. Продольная и поперечная схема 16.88 KB
  В этом случае кран двигаясь вдоль пролета монтирует все колонны а затем перемещаясь поперек пролета ведет секционный монтаж. Перед монтажом колонн проверяют их размеры и наносят риски облегчающие установку колонны в стакан фундамента или на оголовки подколенников. Тяжелые колонны обычно монтируют с транспортных средств или предварительно раскладывают колонны основанием обращенным к фундаментам. Тяжелые колонны поднимают и переводят в вертикальное положение способом поворота или скольжения.
30780. Основные технологические процессы при монтаже ж\б колонн в стаканы фундаментов 14.26 KB
  Тяжелые колонны обычно монтируют с транспортных средств или предварительно раскладывают колонны основанием обращенным к фундаментам. Колонны легкого типа как правило предварительно доставляют в зону монтажа и раскладывают вершинами обращенными к фундаменту. Тяжелые колонны поднимают и переводят в вертикальное положение способом поворота или скольжения. Особо тяжелые и нетранспортабельные железобетонные колонны бетонируют в инвентарных формах на позициях обеспечивающих удобное движение монтажного крана и установку с каждой позиции одной...
30781. Монтаж многоэтажных каркасных зданий, последовательность монтажа элементов 15.51 KB
  Монтаж многоэтажных каркасных зданий последовательность монтажа элементов. Монтаж совокупность технологических процессов связанных с доставкой конструктивных элементов установкой и закреплением. Методы монтажа техническое решение определяющее способ возведения конструкции и последующей сборки: По степени укрупнения: А поэлементный подъём и установка в проектное положение отдельных готовых конструктивных элементов Б крупноблочный конструкции предварительно собираются в блок укрупнит.сборка В монтаж сооружения целиком В...
30782. Монтаж многоэтажных каркасных зданий, расположение монтажных кранов, зон складирования, привязка подкрановых путей 15.6 KB
  Монтаж многоэтажных каркасных зданий расположение монтажных кранов зон складирования привязка подкрановых путей. При размещении привязке монтажных кранов на стройгенплане должны быть удовлетворены следующие условия: четкая ритмичная работа кранов и связанных с ними других строительных механизмов и машин безопасные условия труда машинистов и обслуживающего персонала снижение себестоимости и трудоемкости работ сокращение временина установку кранов и устройство подкрановых путей. Положение оси подкрановых путей относительно строящегося...
30783. Основные технологические процессы при монтаже колонн верхних ярусов многоэтажных зданий 15.14 KB
  Колонны высотой на один или два этажа стропят фрикционными или рамочными захватами а рамы штыревыми. Эти приспособления бывают одиночными для закрепления одной колонны групповыми для четырех колонн и в виде совокупности групповых кондукторов обеспечивающей монтаж элементов яруса на значительной части здания. Нижняя обойма обхватывает выступающую над перекрытием часть колонны предыдущего яруса а две другие закрепляют устанавливаемую колонну. После окончательного закрепления колонны одиночный кондуктор разъединяют...
30784. Основные технологические процессы при монтаже ригелей и плит перекрытия 13.13 KB
  Плиты поднимают четырехветвевыми стропами сразу выверяют и приваривают к ригелям. В безбалочных перекрытиях по капителям укладывают осевые плиты а по ним плитывкладыши.
30785. Виды защитных покрытий и требования к ним 14.84 KB
  Защитные покрытия предназначены для защиты зданий и их элементов от внешних агрессивных воздействий окружающей среды. Защитные покрытия в зависимости от поражающих факторов бывают : Гидроизоляционные Антикоррозийные Огнеупорные теплоизоляционные светонепроницаемые и др.войлок Противокоррозийные покрытия защищают от коррозии наносятся окраской распылением.