шаблон_лаб_1

advertisement
Министерство образования и науки РФ
Федеральное государственное бюджетное образовательное учреждение
высшего профессионального образования
Самарский государственный архитектурно-строительный университет
Факультет информационных систем и технологий
Кафедра прикладной математики и вычислительной техники
Осенний семестр 2013/14 учебного года
Лабораторная работа 1
по дисциплине «Интеллектуальные информационные системы»
Выполнил: студент группы ГИП-109
Демин В.Н.
Проверила: д.т.н., профессор
Прохорова О.В.
Оценка______________
Дата __ ____________
Самара 2013 г.
1
Оглавление
Постановка задачи проектирования .......................................................................................3
1. Аналитическая часть ...........................................................................................................4
2. Алгоритмическая часть .......................................................................................................6
3. Конструкторская часть ........................................................................................................7
4. Тестирование кода .............................................................................................................8
Библиографический справочник ............................................................................................9
2
Постановка задачи проектирования
Задачи лабораторной работы:
A. Написать и отладить код функции, которая вводит два числа.
Если это числа, то функция печатает их сумму и разность, иначе печатает nil.
B. Написать и отладить код функции, которая будет брать один
аргумент, являющийся положительным целым числом и возвращать сумму
всех чисел между 1 и этим числом.
3
1. Аналитическая часть
Пролог (фр. Programmation en Logique) — язык и система логического
программирования, основанные на языке предикатов математической логики
дизъюнктов Хорна, представляющей собой подмножество логики предикатов
первого порядка.
Основными понятиями в языке Пролог являются факты, правила логического
вывода и запросы, позволяющие описывать базы знаний, процедуры
логического вывода и принятия решений.
Факты в языке Пролог описываются логическими предикатами с
конкретными значениями. Правила в Прологе записываются в форме правил
логического вывода с логическими заключениями и списком логических
условий.
Факты в базах знаний на языке Пролог представляют конкретные сведения
(знания). Обобщённые сведения и знания в языке Пролог задаются
правилами логического вывода (определениями) и наборами таких правил
вывода (определений) над конкретными фактами и обобщёнными
сведениями.
В Прологе выполняются следующие операции: +, -, *, /, mod - остаток от
целочисленного деления.
Чтобы
арифметическое
выражение
рассчитывалось,
необходимо
использовать встроенный оператор is, который заставляет выполнять
арифметические операции.
Встроенные предикаты – предикаты, определенные в Прологе, для которых
не существует процедур в базе данных.
4
Когда интерпретатор встречает цель, которая сравнивается с встроенным
предикатом, он вызывает встроенную процедуру.
Встроенные предикаты обычно выполняют функции, не связанные с
логическим выводом.
Встроенные
предикаты
обеспечивают
возможности
ввода-вывода
информации:
1. write/1 - этот предикат всегда успешен. Когда он вызывается,
побочным эффектом будет вывод значения аргумента на экран.
2. nl/0 - этот предикат всегда успешен. Когда он вызывается, то побочным
эффектом будет перевод на следующую строку.
3. tab/1 - этот предикат всегда успешен. Когда он вызывается, то
побочным эффектом будет печать количества пробелов, заданное
аргументом. Аргумент должен быть целым.
4. read/1 - этот предикат читает терм, который вводится с клавиатуры и
заканчивается точкой. Этот терм сопоставляется с аргументом.
Пролог имеет несколько предикатов для обработки символов.
Рассмотрим предикаты, которые дают положительный ответ в случае
соответствия переменной ее назначению:

atom(X) - да, если X-атом.

integer(X) - да, если X-целое.

float(X) – да, если X – действительное.

atomic(X) - да, если X-целое или атом.

var(X) - да, если X-не конкретизированная переменная.

nonvar(X) - да, если X- терм, отличный от переменной, или уже
конкретизированная переменная.
5
2. Алгоритмическая часть
Алгоритм решения задачи А:
Н1. [Сумма] Создание правила для нахождения суммы двух переменных
X и Y.
Н2. [Разность] Создание правила для нахождения разности и суммы двух
переменных X и Y.
Н3. [nil] Проверка введенных X и Y на то, что они являются числом,
если хотя бы одно не число – печать nil.
Н4. [Вывод] Вывод суммы и разности.
Н6. Конец алгоритма.
Алгоритм решения задачи Б:
Н1.[Цикл] Создание правила цикла.
Н2. [p] Объявление хранилища данных для хранения накопленной
суммы, вызов цикла от 1 до N (I – возвращаемое значение счетчика),
вызов данных из хранилища, суммирование счетчика и суммы из
хранилища, сохранность данных в хранилище.
Н3. [Вывод] Получение данных из хранилища, вывод суммы.
Н4. Конец алгоритма.
6
3. Конструкторская часть
Вопрос
?-f1.
Ответ системы пролог
Первое число = 3
Второе число = 6
3+6=9
3 - 6 = -3
Вопрос
?-f1(8).
Ответ системы пролог
36
7
4. Тестирование кода
А.
Б.
8
Библиографический справочник
1. Братко И. Алгоритмы искусственного интеллекта на языке PROLOG.
Изд.:
Вильямс, 2004
2. Ездаков А.Л. Функциональное и логическое программирование. Изд.:
Бином,
2009
3. http://www.mari-el.ru/mmlab/home/prolog/study_l.html
4. http://www. uztest.ru/abstracts/?idabstract=58
9
Related documents
Download