50319

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

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

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

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

Русский

2014-01-20

315.5 KB

2 чел.

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

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

Цель работы: приобретение навыков программирования экспертных систем (ЭС) и информационно-справочных систем (ИСС) на языке Turbo Prolog.

 

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

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

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

film(nomer, name, regiss, scenarist, year, kino_studio, strana_proizv) – описывает фильм:

 nomerпорядковый номер фильма

 nameназвание фильма

 regissимя режиссера фильма

 scenaristимя сценариста фильма

 yearгод выпуска фильма

 kino_studioназвание киностудии-производителя

 strana_proizvназвание страны-производителя

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

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

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

poisk_strana(strana_proizv) – организует поиск фильма по его стране-производителю strana_proizv и выводит результаты поиска на экран.

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

poisk_kinostudio(kino_studio)организует поиск фильма по его киностудии-производителю kino_studio и выводит результаты поиска на экран.

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

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

domains

nomer = integer

name = string

regiss = string

scenarist = string

year = integer

kino_studio = string

strana_proizv = string

predicates

film(nomer, name, regiss, scenarist, year, kino_studio, strana_proizv)

start

analiz(integer)

poisk_nomer(nomer)

poisk_strana(strana_proizv)

poisk_year(year)

poisk_kinostudio(kino_studio)

exit_program(char)

clauses

film(1, "Пираты Карибского моря - 3: На краю света","Гор Вербински", "Джерри Брукхаймер", 2007, "Universal","США").

film(2, "Самый лучший фильм","Кирилл Кузин", "Алексей Огурцов", 2007, "Мосфильм","Россия").

film(3, "Ирония судьбы - 2. Продолжение", "Тимур Бекмамбетов","Алексей Слаповский", 2007, "Мосфильм","Россия").

film(4, "Восемнадцать - четырнадцать", "Андрес Пуустусмаа","Иван Мартынов", 2007, "Ленфильм","Россия").

       film(5, "Беовульф", "Роберт Земекис","Рэй Уинстоун", 2007, "Paramount","США").

film(6, "1612: Хроники Смутного времени", "Владимир Хотиненко","Ариф Алиев", 2007, "Тритэ","Россия").

film(7, "Везунчик", "Кертис Хэнсон","Эрик Рот", 2007, "Paramount","США").

film(8, "Вторжение", "Оливер Хиршбигель","Дэниэл Крэйг", 2007, "Universal","США").

film(9, "Зодиак", "Дэвид Финчер","Кевин Лима", 2007, "Universal","США").

film(10, "Королевство", "Стивен Фрирз","Питер Берг", 2007, "Miramax","Франция").

 

 

start if write("Добро пожаловать в программу 'Лучшая десятка фильмов'!\n\n"),

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

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

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

 write("3 - найти все фильмы одной страны\n"),

 write("4 - найти все фильмы одной киностудии\n"),

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

 readint(X), analiz(X),

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

 readchar(Yes_No),

 exit_program(Yes_No).

 

analiz(1) if

      write("Введен 1\n"),

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

      readint(Nomer),

      poisk_nomer(Nomer).

analiz(2) if

  write("Введен 2\n"),

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

  readint(Year),

  poisk_year(Year).

 

analiz(3) if

  write("Введен 3\n"),

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

  readln(Strana),

  poisk_strana(Strana).

analiz(4) if

  write("Введен 4\n"),

  write("Введите название киностудии\n"),

  readln(Kinostudio),

  poisk_kinostudio(Kinostudio).

 

analiz(5) if

  exit.

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

poisk_kinostudio(Kinostudio) if not(film(_,_,_,_,_,Kinostudio,_)),

  write("Фильмов данной киностудии нет\n").

poisk_kinostudio(Kinostudio) if film(_,Nazv,_,_,_,Kinostudio,_),

  writef("Фильм - %s\n",Nazv),

  fail.

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

  readchar(Yes_No),

  exit_program(Yes_No).

 

 

poisk_year(Year) if not(film(_,_,_,_,Year,_,_)),

  write("Фильмов данного года выпуска нет\n").

poisk_year(Year) if film(_,Nazv,_,_,Year,_,_),

  writef("Фильм - %s\n",Nazv),

  fail.

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

  readchar(Yes_No),

  exit_program(Yes_No).

poisk_strana(Strana) if not(film(_,_,_,_,_,_,Strana)),

  write("Фильмов данной страны нет\n").

poisk_strana(Strana) if film(_,Nazv,_,_,_,_,Strana),

  writef("Фильм - %s\n",Nazv),

  fail.

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

  readchar(Yes_No),

  exit_program(Yes_No).

 

poisk_nomer(Nomer) if not(film(Nomer,_,_,_,_,_,_)),

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

poisk_nomer(Nomer) if film(Nomer,Nazv,Regiss,_,_,_,Strana),

 writef("Этот фильм - %s\n",Nazv),

 writef("Режиссер - %s\n",Regiss),

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

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

goal

start.

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

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

Далее нужно выбрать необходимый пункт меню:

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

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

При выборе пункта №3 будут найдены все фильмы одной страны:

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

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

Вывод: в данной лабораторной работе состоялось знакомство с основами построения экспертных систем и информационно-справочных систем на языке Turbo Prolog. В ходе выполнения работы были получены навыки по созданию внутренней статической базы знаний, а также поиска решений по заданным параметрам.

PAGE  6


 

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

21751. Системы и виды ремонта шахтного оборудования 25.5 KB
  Эта система представляет собой комплекс циклически повторяющихся технических и организационных мероприятий предусматривающих проведение запланированных профилактических работ по осмотру уходу и надзору с устранением встречающихся неисправностей а также ремонтов частично или полностью восстанавливающих работоспособность оборудования. Профилактические работы составляют сущность технического обслуживания оборудования и транспортных средств между ремонтами. Ремонт оборудования кроме стационарных установок должен сводиться к...
21752. Ремонтные нормативы и графики плановых осмотров и ремонта оборудования 22.5 KB
  Непосредственными ремонтными нормативами являются: длительность ремонтного цикла межремонтные периоды продолжительность простоя в ремонте структура ремонтного цикла. Длительность ремонтного цикла – это промежуток времени в часах между двумя плановокапитальными ремонтами. Структура ремонтного цикла – это определенная схема чередования видов ремонта на протяжении ремонтного цикла. Структура ремонтного цикла строится на основе группировки деталей и узлов по срокам их службы износостойкости.
21753. Организация производства. Основные понятия и определения 27 KB
  Организация производства – это комплекс мероприятий направленных на рациональное сочетание процессов труда с вещественными элементами производства средствами производства и расходными материалами производства в пространстве и времени с целью увеличения эффективности производственного процесса т. При определении организации производства следует разделять: Организацию предприятия как производственной системы на длительный срок. Особенности горного предприятия и анализ их влияния на организацию производства: Высокая...
21754. Классификация штата работающих на шахте 40.5 KB
  Рабочие трудящиеся занятые непосредственно на добыче угля на рабочих местах участков и цехов обслуживающих или создающих условия для протекания производственного процесса . Младший обслуживающий персонал трудящиеся занятые уборкой и отоплением помещений обслуживанием рабочих и руководящего персонала к ним относятся уборщицы дворники кубовщицы гардеробщицы рассыльные шоферы легковых машин и служебных автобусов. Ученики лица которые обучаются на предприятии под руководством рабочих и служащих рабочим профессиям или...
21755. Организация табельного учета 24.5 KB
  Табельный учет выполняет следующие функции: контроль за своевременной явкой рабочих и служащих на работу фиксирование опозданий и невыходов; проверку нахождения на местах работы работников учтенных в числе явившихся на работу; проверку правильности использования внутрисменных обеденных перерывов; контроль за своевременностью ухода работников с работы по окончании смены; контроль за временными уходами с работы по разрешению администрации а также учет работников находящихся в отпусках командировках выполняющих...
21756. Режим работы шахты и ее участков 25 KB
  Под режимом работы понимают степень использования основных фондов и производственных мощностей во времени. Режим работы – одна из важнейших сторон организации производства характеризующая продолжительность использования средств труда при определенной интенсивности смены суток года во времени. Режим работы устанавливается для производственных единиц ее участковцехов отдельных бригад и рабочих.
21757. Формы организации труда на рудниках 26 KB
  В зависимости от состава и методов учета выполненных работ различают специализированные и комплексные бригады. Специализированные бригады бригады выполняющие один процесс переноску конвейера доставку крепежного материала бурение и т. В настоящее время наибольшее распространение в очистных и подготовительных забоях ПО Беларуськалий получили комплексные бригады выполняющие несколько взаимосвязанных процессов при коллективной организации труда. По сравнению со специализированными бригадами комплексные бригады...
21758. Графики выходов рабочих 26 KB
  В них показывается порядок чередования смен и выходные дни для отдельных рабочих и бригад. В графиках выходов предусматривается: соответствие принятому числу рабочих смен продолжительности рабочего дня и рабочей недели т. режиму работы данного участка во времени; правильное чередование дней работы и отдыха; полное использование установленной нормы рабочего времени за месяц минимальное значение которой при 7часовом рабочем дне составляет 1731 ч а при 6часовом рабочем дне 1525 ч; правильное чередование смен; соблюдение постоянного...
21759. Алгоритм составления графиков выходов рабочих 23 KB
  Алгоритм составления графиков следующий: определяют число бригад в сутки исходя из недельного режима работы на рабочем месте; определяют явочное число рабочих в каждой смене в соответствии с выполняемыми производственными процессами объёмом работ и обслуживанием; составляют графики выходов: обозначают общевыходной день для участка; обозначают выходные дни для отдельных членов бригады или всей бригады; отмечают номера смен и порядок их ломки; вносят графические обозначения смены обозначаются цифрами а выходные дни – нулями; при...