Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методические указания по ИИС.doc
Скачиваний:
2
Добавлен:
01.07.2025
Размер:
3.88 Mб
Скачать

Контрольные задания:

Напишите программу, которая передаёт ту же информацию, что и следующие факты и предложения, на языке Пролог согласно варианту, выданному преподавателем:

Вариант 1. Вычислить сумму 1+2+3+…+N.

Вариант 2. Подсчитать сумму ряда целых четных чисел от 2 до N.

Вариант 3. Вычислить сумму ряда целых нечетных чисел от 1 до n.

Вариант 4. Найти значение произведения: 2*4*6*...*26.

Вариант 5. Найти значение произведения: 1*3*5*...*11.

Вариант 6. Используя базу данных и правило предок, составить правило для определения всех предков-дедушек.

Вариант 7. Используя базу данных и правило предок, составить правило для определения всех предков-бабушек.

Вариант 8. Используя базу данных и правило предок, составить правило для определения всех потомков-мужчин.

Вариант 9. Используя базу данных и правило предок, составить правило для определения всех потомков-женщин.

Контрольные вопросы:

  1. Что такое рекурсивная процедура?

  2. Из каких частей состоит рекурсия, охарактеризуйте их?

  3. Что такое граничное условие?

  4. Где обычно применяется рекурсия?

  5. Назовите преимущества рекурсии.

  6. В чем недостаток рекурсии?

  7. Что называют оптимизацией обратной рекурсии?

Лабораторная работа №12.

СПИСКИ И РЕКУРСИЯ.

Цель работы: изучение возможностей представления и обработки данных в программах на языке Пролог с использованием списков.

Используемое программное обеспечение: Visual Prolog 5.2.

Теоретические сведения

Обработка списков - объектов, которые содержат произвольное число элементов - мощная техника в Прологе.

В Прологе, список - объект, который содержит произвольное число других объектов в пределах этого. Списки соответствуют массивам на других языках, но, в отличие от массива, не требуют объявления размерности.

Есть другие способы объединить несколько объектов в один. Если число объектов, которые будут объединены, известно заранее, Вы можете делать их параметрами отдельной составной структуры данных. И даже если число объектов непредсказуемо, Вы можете использовать рекурсивную составную структуру данных, типа дерева. Но списки являются обычно более легкими для использования, потому что язык обеспечивает краткое примечание для них.

Список, который содержит числа 1, 2, и 3, написан как [1, 2, 3].

Чтобы формировать структуру данных списка, Вы отделяете элементы списка запятыми и заключаете их в квадратные скобки.

Объявление списков

Для объявления домена для списка целых чисел необходимо:

DOMAINS

integerlist = integer*

Звездочка означает «список чего-то», т.е. integer* означает «список целых чисел».

Обратите внимание, что список слов не имеет никакого специального значения в Лабораторная работа № 1.

Элементы в списке могут быть чем-нибудь, включая другие списки. Однако, все элементы в списке должны принадлежать тому же самому домену, и в дополнение к объявлению домена списка должно быть объявление domains для элементов:

DOMAINS

elementlist = elements*

elements = ...

Здесь элементы должны быть приравнены к одному типу домена (например: integer, real, или symbol) или к набору альтернатив, отмеченных с различными функторами. Лабораторная работа № 1 не позволяет смешать стандарт списков. Например, следующие объявления должным образом не указали бы список, составленный из целых чисел, вещественных чисел и символов:

elementlist = elements*

elements = integer; real; symbol

Способ объявлять список, составленный из целых чисел, вещественных чисел и символов состоит в том, чтобы определить один домен, включающий все три типа с функторами.