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


 

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

38493. Общая организация работ и проектная мощность шахты 1.31 MB
  = 0809 при блоковой отработке шахтного поля панельной погоризонтной схеме подготовки вертикальном подъеме; = 075085 при индивидуальной не блоковой отработке шахтного поля панельной схеме подготовки вертикальном подъёме; = 0708 при индивидуальной отработке шахтного поля панельной схеме подготовки наклонном подъёме фланговой схеме вентиляции; = 06075 при индивидуальной отработке шахтного поля этажной схеме подготовки вертикальном подъёме. глубина верхней границы шахтного поля м глубина нижней границы...
38494. Технологические решения по отработке крутых угольных пластов с закладкой выработанного пространства 506.5 KB
  Технологические решения по отработке крутых угольных пластов с закладкой выработанного пространства 1. Нижний угленосный горизонт приурочен к среднечепинской подсвите второй ритмопачки J3 ср22 включает до 40 пластов и пропластков от 5 до 18 из которых имеют рабочую мощность 07 и более метров. В восточной части месторождения залегает шесть пластов в1–в5 в7 от средней мощности до мощных и сверхмощных.
38496. Роман Набокова «Соглядатай» 48 KB
  Сразу же сформировались две основные точки зрения на повествователя. Судя по всему определяя Пильграма Цинцинната и повествователя в Соглядатае как разнородные символы творца художника поэта[825] критик не причисляет их к людям создающим художественные ценности а имеет в виду следующий смысл: отношение к жизни как к творчеству поэтическое видение мира. В последнее время наметилась тенденция отождествлять повествователя в Соглядатае с убийцей Германом из Отчаяния: И подлец Смуров в Соглядатае“ и неудачливый убийца ...
38497. ԳՐԱՃԱՆԱՉՈԻԹՅԱՆ ՄԵԹՈԴԻԿԱ 483 KB
  Յուրաքանչյուր ժողովրդի մշակույթի ու դպրոցի պատմությունն սկիզբ է առնում ազգային գրերի ստեղծումից և դրանց ուսուցումից։ Այս առումով մանկավարժական գիտություններից ամենից հինը մայրենի լեզվի մեթոդիկան է, իսկ նրանում էլ ամենահինը՝ գրաճանաչության բաժինը։ Սակայն չնայած այդ պատկառելի հնությանը, զարմանալիորեն
38499. Организационная культура предприятия на примере ООО РИА «Веда-Консультант» 575 KB
  Процесс формирования и развития организационной культуры очень интересен так как появляется возможность регулировать поведение персонала на основе тех ценностей которые актуальны для организации. Все больше руководителей и менеджеров по персоналу сегодня задумываются о необходимости целенаправленного формирования организационной культуры. При этом управление не только соответствует культуре организации сильно зависит от нее но и оказывает влияние на формирование и адаптацию культуры к новой стратегии. Формирование организационной культуры...
38500. Правовая аномия в Украинском обществе 210 KB
  В условиях провозглашенной политическим руководством Украины курса на модернизацию вырисовываются контуры радикальной перестройки сфер общественной жизни которые требуют немалых усилий по преодолению правовой аномии в украинском обществе как массовых неправовых практик населения и маргинализации ценности права. Специфика правовой аномии в украинском обществе не может быть списана только за счет издержек социальной транзиции или концепции культурной самобытности выражающейся в архетипах социальной анархии или имманентного бесправия....