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

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

Решите задачу согласно варианту, выданному преподавателем:

Вариант 1. Запишите предикат, названный sum_of, который работает точно подобно length_of, за исключением того, что требуется список чисел и их сумма. Например, sum_of([1, 2, 3, 4], S) должен связать S с 10.

Вариант 2. Запишите предикат oddlist, который берет два параметра. Первый параметр - список целых чисел, в то время как второй параметр возвращает список всех нечетных чисел, найденных в первом списке.

Вариант 3. Запишите предикат real_average, который вычисляет среднее значение всех элементов в списке вещественных чисел.

Вариант 4. Запишите предикат, который берет составной список как его первый параметр и возвращает второй параметр, который является списком со всеми удаленными подсписками. Этот предикат обычно известен, как flatten, поскольку это сглаживает список списков в один список. Например, на запрос который является первоначальным сглаженным списком

flatten([s(ed), i(3), l([r(3.9), l([s(sally)])])], r(4.21), X)

Пролог ответит

X = [s(ed), i(3), r(3.9), s(sally), r(4.21)]

1 Solution

Вариант 5. Сформировать список [2, 4, 6, 8, 10] и удалить из него введенное число.

Вариант 6. Сформировать списки [1, 3, 5, 7, 9] и [2, 4, 6, 8, 10] и объединить их в один.

Вариант 7. Сформировать список [3, 6, 9, 12, 15, 18] и вставить в него введенное число.

Вариант 8. Сформировать список из N натуральных чисел, начиная с 10. Каждое следующее на 5 больше предыдущего.

Вариант 9. Сформировать список [3, 6, 9, 12, 15] и найти сумму его элементов.

Вариант 10. Сформировать список [6, 5, 4, 3, 2] и найти сумму его элементов.

Вариант 11. Сформировать список [7, 5, 3, 1] и найти произведение его элементов.

Вариант 12. Сформировать список из N последовательных натуральных чисел, начиная с 10. Найти сумму его элементов.

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

  1. Что такое список?

  2. В чем отличие списка от массива?

  3. Как выглядит список, содержащий числа?

  4. Каким образом объявляется домен для списка целых чисел?

  5. Из чего состоит список?

  6. Дайте понятие головы и хвостовой части списка?

  7. Что такое хвост списка?

  8. Какую структуру имеют списки?

  9. Каким знаком можно отделить голову от хвостовой части списка?

  10. Дайте понятие составного списка?

  11. Как объявить домен для составного списка?

Лабораторная работа №13. Секция фактов Лабораторная работа № 1.

Цель работы: объявление секции фактов и изменение ее содержания.

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

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

Секция фактов состоит из фактов, которые вы можете добавить и удалить непосредственно из вашей программы в период её исполнения. Вы можете объявить предикаты в секции фактов вашей программы, и использовать их, так же как если бы они были объявлены в секции предикатов.

В Visual Prolog можно использовать, предикаты assert, asserta, assertz чтобы добавить новые факты в секцию фактов, и предикаты retract и retractall, чтобы удалить существующие факты. Вы можете изменить содержание вашей секции фактов удалением первого факта и затем добавлением новой версии этого факта (или вообще другого факта). Предикат consult считывает факты из файла и добавляет их к внутренним фактам, а предикат save сохраняет содержание внутренней секции фактов в файл.

Visual Prolog обрабатывает факты, принадлежащие секции фактов, совсем не так, как он обрабатывает нормальные предикаты. Факты для предикатов секции фактов сохранены в таблицах, которые можно легко менять, в то время как нормальные предикаты компилируются в двоичный код для обеспечения максимальной скорости.