
- •Кафедра «Информационные системы и технологии» методические указания к лабораторным работам
- •230100.62 «Информатика и вычислительная техника»
- •Рабочая программа обсуждена на заседании кафедры
- •Дерево родства
- •1. Использование специального пакета программного обеспечения Fuzzy logic в среде matlab.
- •2. Исследование способов формирования нечетких множеств и выполнение операций над ними.
- •3. Моделирование системы нечеткого логического вывода.
- •Содержание отчета
- •Список литературы
- •Оглавление
Дерево родства
Иван(i) |
|
Сидор(s) |
Яков (y) |
Макар(m) |
Платон (p) |
Программа «Родство» Пролог- программа |
Программа «Родство» TURBO PROLOG 2.0 |
Отец (Иван, Сидор). Отец (Иван, Яков). Отец (Сидор, Макар). Отец (Яков, Платон). Брат(X, Y):- Отец (Z ,X), Отец ( Z, Y). ? Брат(Сидор, X)
|
|
Пример 2.
Описания автомобиля, для которого указаны марка, цвет, выпуск и стоимость
domains
model, color = symbol
age = integer
price = real
predicates
car (model,color,age,price)
Пример 3.
Описание информации о марках автомобиля с ценой меньше 10000:
car (model, _,_, price) and price<10000
Задание 1.
Описать группу людей и их пристрастия к различным видам спорта.
Составить программу, отвечающую на различные запросы. Выяснить соответствуют ли различные факты и правила истине. Примерные вопросы:
Любит ли Билл футбол? Кто любит теннис? Что любит Билл?
Рассмотреть два варианта программы с внешними и внутренними целями.
Известны следующие факты:
Элен любит теннис
Боб любит футбол
Джон любит теннис
Майкл любит волейбол
Билл любит Х, если Джон любит Х
Задание 2.
Написать программу, реализующую нахождение синонимов и антонимов для слов из некоторого словаря. Словарь должен состоять не менее чем из четырех слов, плюс к нему синонимы и антонимы.
Задание 3.
Составные цели.
Программа содержит данные об учениках, указывается имя и возраст. Составить таблицу для игры в теннис (по две игры на каждую пару) при условии что возраст участников 9 лет.
Известны следующие факты:
pupl(bob,9).
pupl(tom,10).
pupl(cris,9).
pupl(mark,9).
Задание 4.
Известны следующие факты:
Диана любит Теда
Ричард любит Лиз
Джон любит Глорию
Лиз любит Ричард
Глория любит Джона
Лиз любит Джека
Роберт любит Глорию
Тед любит Диану
Брак считается возможным, если любовь взаимная и только к этому человеку.
Составить программу, отвечающую на вопросы:
1.Кого любит Тед?
2. Подобрать все возможные сочетания брачных пар.
Рассмотреть два варианта программы с внешними и внутренними целями.
Задание 5.
Известна система родственных связей с отношением РОДИТЕЛЬ. Имена в ней не повторяются. Разработать программу логического вывода, позволяющую определить, кто кому приходится отцом, матерью, братом, сестрой, дядей, тетей, дедушкой, бабушкой. Рассмотреть два варианта программы с внешними и внутренними целями.
Задание 6.
Известны следующие факты:
1. программирует(Иванов).
2. программирует( Пушков).
3. читал (Иванов, Достоевский).
4. читал (Пушков, Смешарики).
5. книга (Достоевский, программирование).
6. книга (Смешарики, детская).
7. сдавал (Иванов).
8. сдавал (Пушков).
9. сдавал (X), программирует (X), знает (X)→ экзамен (X,5).
10. сдавал (X), программирует (X), → экзамен (X,4).
11. сдавал (X)→ экзамен (X,3).
12. читал (X,Y), книга (Y , программирование)→знает (X).
13. ?-экзамен (Пушков,Z)
Составить программу, отвечающую на запрос: Какую оценку получил Пушков на экзамене? Рассмотреть два варианта программы с внешними и внутренними целями.
Задание 7.
Составить программу, которая по заданному набору параметров подбирала бы достойную кандидатуру. Кандидат-мужчина. Параметры оценки: спортсмен, вегетарианец, курильщик.
Информация о кандидатах будет храниться в базе данных. Использовать предикат с четырьмя параметрами.
Задание 8.
Составить программу, отвечающую на различные запросы:
Кем работает Марта?
Имеет ли Сем высшее образование?
Кто имеет высшее образование?
Закончила ли Диана аспирантуру?
Может ли инженер быть преподавателем ВУЗа?
Известны следующие факты:
Преподаватель и учитель имеют высшее образование.
Преподаватель ВУЗа имеет высшее образование и аспирантуру.
Джон работает дворником.
Диана работает учителем.
Джек – продавец.
Сем – преподаватель ВУЗа.
Билл – инженер.
Мери – учитель.
Марта – инженер.
Задание 9.
Написать программу, реализующую четыре основные арифметические операции, для целых и действительных чисел.
Лабораторная работа №6. (2 часа)
Тема: Повторение и рекурсия на Прологе.
В программах часто требуется выполнить одну и ту же операцию несколько раз. Во многих языках программирования имеются операторы цикла, реализующие повторение фрагментов программы, но в Прологе подобные операторы отсутствуют, поэтому рассматриваются другие возможности реализации повторяющихся действий. Существуют четыре основных метода:
- метод отката после неудачи;
- отсечения и отката;
- правило повтора определяемое пользователем;
- обобщенное рекурсивное правило.
Существует два способа реализации правил, выполняющих одну и ту же операцию многократно: повторение и рекурсия.
Задание 1.
Имеется информация о сотрудниках предприятия: фамилия, пол и зарплата. Написать программу получающую информацию обо всех мужчинах используя «метод отката после неудачи».
Задание 2.
Задан список имен, необходимо выдавать имена из списка, пока не встретится имя Екатерина, тогда выдачу имен прервать. Написать программу для решения задачи используя «отсечения и отката».
Задание 3.
Написать программу «эхо», которая считывает строку и дублирует ее на экран. Работа завершается после ввода строки stop. Использовать метод правило повтора определяемое пользователем.
Задание 4.
Написать программу для нахождения факториала заданного числа. Использовать метод обобщенного правила рекурсий.
Задание 5.
Написать программу для нахождения значения y.
,
a
и n
вводятся с клавиатуры
Задание 6.
Написать программу для нахождения суммы:
y=
,
n
вводится с клавиатуры.
Задание 7.
Написать программу для нахождения суммы:
y=
,
n
вводится с клавиатуры.
Лабораторная работа №7. (2 часа)
Тема: Списки, их представление и обработка. Решение типовых задач со списками, используя принципы логического программирования.
Задания на выполнение практических работ:
Варианты заданий:
Дан список из 10 элементов. Упорядочить его в порядке возрастания или убывания.
Дан список из 10 элементов. Получить список, циклически сдвинутый на один элемент влево, например, исходный список -[1,2,3,4,5], результат- [2,3,4,5,1].
Перевести список чисел от 1 до 12 в соответствующие названия месяцев.
Дан список из 10 элементов. Найти максимальный элемент списка.
Дан список из 10 элементов. Выделить все одинаковые элементы списка в отдельный список.
Дан список из произвольного числа элементов. Установить является ли количество элементов четным или нет.
Дан список из 5 элементов. Установить, является ли список палиндромом: т.е. читается ли он одинаково, как справа налево, так и слева направо, например, [a,b,c,b,a].
Дан список из 10 элементов. Подсчитать количество положительных и отрицательных элементов в списке.
Дан список из 10 элементов. Найти сумму элементов в списке.
Дан список из 10 элементов. Найти количество элементов в списке, принадлежащих заданному диапазону.
Лабораторная работа №8. (2 часа)
Тема: Работа со строками.
Лабораторная работа №9. (2 часа)
Тема: Работа с файлами.
Лабораторная работа №10. (2 часа)
Тема: Создание динамических баз данных.
Лабораторная работа №11. (2 часа)
Тема: Создание экспертных систем.
Лабораторная работа №12. (2 часа)
Тема: Моделирование работы Машины Тьюринга и использованием Пролога.
Задания
A – алфавит Машины Тьюринга
A = {0,1}. Считая непустое слово P записью двоичного числа, удалить из него незначащие нули, если таковые есть
A = {0,1}. Для непустого слова P определить, является ли оно степенью двойки (1, 2, 4, 8, ...) в двоичной системе счисления. Ответ: слово 1 (является) или слово 0 (не является).
A = {0, 1, 2, 3}. Считая непустое слово P записью числа в четверичной системе счисления, определить, является ли оно чётным числом или нет. Ответ: 1 (да) или 0 (нет).
A = {0,1}. Считая непустое слово P записью числа в двоичной системе, получить двоичное число, равное учетверённому числу P.
A = {0,1}. Считая непустое число P записью числа в двоичной системе, получить двоичное число, равное неполному частному от деления числа P на 2.
A = {a, b, c}. Если P – слово чётной длины (0, 2, 4, …), то выдать ответ a, иначе пустое слово.
A = {0, 1 ,2}. Считая непустое слово P записью числа в троичной системе счисления, определить, является ли оно чётным или нет. Ответ: 1 (да) или 0 (нет). Замечание: в чётном троичном числе должно быть чётное количество цифр 1.
A = {a, b, c}. Пусть P имеет нечётную длину. Оставить в P только средний символ.
A = {a, b, c}. Пусть P имеет чётную длину. Оставить в нём только левую половину.
A = {a, b}. Для непустого слова P определить, входит ли в него ещё раз первый символ. Ответ: a (да) или пустое слово.
A={a,b}. В непустом слове P поменять местами его первый и последний символы.
A={a,b}. Определить, является P палиндромом (перевёртышем, симметричным словом) или нет. Ответ: a (да) или пустое слово.
A={a,b}. Заменить в P каждое вхождение a на bb.
A={a,b,c}. Заменить в P каждое вхождение ab на c.
A={a,b}. Удвоить слово P (например: abb → abbabb).
A={a,b}. Удвоить каждый символ слова P (например: bab → bbaabb).
A={a,b}. Перевернуть слово P (например: abb → bba).
A={0,1}. Считая непустое слово P записью двоичного числа, получить это же число, но в четверичной системе. (Замечание: учесть, что в двоичном числе может быть нечётное количество цифр.)
A={0,1,2,3}. Считая непустое слово P записью числа в четверичной системе счисления, получить запись этого числа в двоичной системе.
A={0,1,2}. Считая непустое слово P записью положительного числа в троичной системе счисления, уменьшить это число на 1.
A={a,b,0,1}. Определить, является ли слово P записью числа в двоичной системе счисления (непустым словом, состоящем только из цифр 0 и 1). Ответ: слово 1 (да) или слово 0.
Лабораторная работа №13. (2 часа)
Тема: Решение задач нечеткой логики в среде MATLAB.