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


 

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

32525. БЛОЧНО-МОДУЛЬНАЯ СТРУКТУРА ДЕЯТЕЛЬНОСТИ УЧАЩЕГОСЯ В ТЕХНОЛОГИИ ПРМЕНЕНИЯ ПРОГРАММНЫХ СРЕДСТВ 41 KB
  ППС и методика их использования БЛОЧНОМОДУЛЬНАЯ СТРУКТУРА ДЕЯТЕЛЬНОСТИ УЧАЩЕГОСЯ В ТЕХНОЛОГИИ ПРМЕНЕНИЯ ПРОГРАММНЫХ СРЕДСТВ. Блочномодульная структура деятельности учащегося в технологии применения ПС Необходимо отметить два направления к которым ведет использование средств информационных технологий. Усложнение технических средств влечет за собой обогащение форм деятельности. Можно утверждать что внедрение средств новых информационных технологий влияет на духовную эмоциональную коммутативную и деятельностную сферы жизни человека.
32526. КРИТЕРИИ ЭФЕКТИВНОСТИ ТЕХНОЛОГИИ ПРИМЕНЕНИЯ ПРОГРАММНЫХ СРЕДСТВ 37.5 KB
  Технология применения ПС в учебном процессе имеет специфику в том что в качестве основного средства обучения используются программные средства это частнодидактическая технология имеющая приложения для всех общеобразовательных дисциплин в школе. В качестве критериев оценки технологии применения ПС отобраны следующие: 1 критерии среды обучения оценивались по соответствию педагогическим условиям реализации технологии применения ПС эмоциональному фону урока и общению между учителем и учащимися; 2 критерии эффективности программных средств...
32527. РОЛЬ И МЕСТО ИНФОРМАТИЗАЦИИ ПРОЦЕССА ОБУЧЕНИЯ В ШКОЛЕ. СВЯЗИ МЕТОДИКИ ПРЕПОДАВАНИЯ ИНФОРМАТИКИ С ДРУГИМИ ПРЕДМЕТАМИ 69.5 KB
  СВЯЗИ МЕТОДИКИ ПРЕПОДАВАНИЯ ИНФОРМАТИКИ С ДРУГИМИ ПРЕДМЕТАМИ Роль и место информатизации процесса обучения в школе В стандартах по информатике [11] были определены следующие педагогические функции образовательной области связанной с информатикой: Формирование основ научного мировоззрения. В современной психологии отмечается значительное влияние изучения информатики и использования компьютеров в обучении на развитие у школьников теоретического творческого мышления а также формирование нового типа мышления так называемого операционного...
32528. ДИАЛЕКТИЧЕСКИЙ ХАРАКТЕР ВНЕДРЕНИЯ СРЕДСТВ ИНФОРМАЦИОННЫХ ТЕХНОЛОГИЙ В УЧЕБНЫЙ ПРОЦЕСС. ВНЕШНИЕ И ВНУТРЕННИЕ ФАКТОРЫ ИЗМЕНЕНИЙ ТЕХНОЛОГИЙ ОБУЧЕНИЯ С ИСПОЛЬЗОВАНИЕМ СРЕДСТВ ИНФОРМАЦИОННЫХ ТЕХНОЛОГИЙ 61 KB
  ВНЕШНИЕ И ВНУТРЕННИЕ ФАКТОРЫ ИЗМЕНЕНИЙ ТЕХНОЛОГИЙ ОБУЧЕНИЯ С ИСПОЛЬЗОВАНИЕМ СРЕДСТВ ИНФОРМАЦИОННЫХ ТЕХНОЛОГИЙ. Чтобы осознать влияние средств информационных технологий на процесс обучения необходимо выявить движущие силы педагогического процесса в условиях применения программных средств необходимо вскрыть диалектический характер развития педагогических технологий при использовании программных средств. Влияние программных средств информационных технологий на диалектические закономерности процесса обучения Влияние СИТ на существующие...
32529. ОБЩЕДИДАКТИЧЕСКИЕ ПРИНЦИПЫ ИСПОЛЬЗОВАНИЯ ПРОГРАММНЫХ СРЕДСТВ В УЧЕБНОМ ПРОЦЕССЕ. ЧАСТНО_МЕТОДИЧЕСКИЕ ПРИНЦИПЫ, ОТРАЖАЮЩИЕ ОСОБЕННОСТИ ПРИМЕНЕНИЯ ПРОГРАММНЫХ СРЕДСТВ В УЧЕБНОМ ПРОЦЕССЕ 54 KB
  ЧАСТНО_МЕТОДИЧЕСКИЕ ПРИНЦИПЫ ОТРАЖАЮЩИЕ ОСОБЕННОСТИ ПРИМЕНЕНИЯ ПРОГРАММНЫХ СРЕДСТВ В УЧЕБНОМ ПРОЦЕССЕ Дидактические принципы применения программных средств в процессе обучения Общедидактические принципы использовании ПС в процессе обучения. Для достижения стабильных и высоких результатов в обучении педагог должен следовать принципам обучения основным нормативным положениям которыми следует руководствоваться чтобы обучение было эффективным. Для совершенствования психологических характеристик учащихся существуют специальные развивающие...
32530. ИСПОЛЬЗОВАНИЕ ЭЛЕКТРОННЫХ ТАБЛИЦ В ДЕЯТЕЛЬНОСТИ УЧИТЕЛЯ-ПРЕДМЕТНИКА 1.2 MB
  ППС и методика их использования ИСПОЛЬЗОВАНИЕ ЭЛЕКТРОННЫХ ТАБЛИЦ В ДЕЯТЕЛЬНОСТИ УЧИТЕЛЯПРЕДМЕТНИКА Использование электронных таблиц на уроках физики: Законы отражения и преломления света Рисованные объекты. Или угол падения равен углу преломления или угол преломления равен углу отражения или вообще все углы равны или наоборот между ними разница в 90 градусов. Но вот отразится и преломится свет в точке падения обозначенной буквой S совсем не так как указывают ему направления SB и SC поскольку проведены они с нарушением обоих...
32531. ИСПОЛЬЗОВАНИЕ ВЕКТОРНЫХ ГРАФИЧЕСКИХ РЕДАКТОРОВ НА УРОКАХ ГЕОМЕТРИИ 378 KB
  Паркет называется правильным если он составлен из равных правильных многоугольников.3 Примеры правильных паркетов дают заполнения плоскости: а квадратами рисунок 1; б равносторонними треугольниками рисунок 2; в правильными шестиугольниками рисунок 3. Докажем что других правильных паркетов не существует. Действительно углы правильного гаугольника равны 180 Заполним таблицу состоящую из углов  правильных n угольников.
32532. ИСПОЛЬЗОВАНИЕ ЭЛЕКТРОННЫХ ТАБЛИЦ В ДЕЯТЕЛЬНОСТИ УЧИТЕЛЯ-ПРЕДМЕТНИКА 1.5 MB
  Для отображения даты подходящей будет ориентация текста под углом в 90 градусов для всей третьей строки и горизонтальное и вертикальное выравнивание по центру а для ячейки S3 ещё и с переносом по словам. Вообще полученный список имеет смысл запомнить на будущее поскольку он наверное потребуется ещё не раз и в других таблицах связанных с классом. Поскольку сдвиг будет производиться вертикально вниз то во всех фигурирующих в формуле адресах цифровая составляющая увеличится на единицу для следующей строки затем ещё на единицу для...
32533. Использование графического редактора для решения задач на разрезание 351 KB
  Рассмотрим линии разбивающие фигуру Ф на части из которых можно составить фигуру Ф' и кроме того линии разбивающие фигуру Ф на части из которых можно составить фигуру Ф . Те и другие линии разбивают фигуру Ф на более мелкие части из которых можно составить как фигуру Ф' так и Ф . Доказанная теорема позволяет в принципе разрезать один из двух равновеликих многоугольников на части и сложить из них другой многоугольник. Фигура будет разрезана на две части вдоль прямой линии.