Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Логическое программирование. Turbo Prolog 2.0.doc
Скачиваний:
72
Добавлен:
04.06.2015
Размер:
1.59 Mб
Скачать

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

  1. В чем отличие языка Пролог от традиционных алгоритмических языков программирования?

  2. Назовите основные конструкции логического программирования.

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

  4. Что такое правило в логическом программировании?

8.3 Управление выполнением программы на языке Пролог. Оконный интерфейс (4 часа)

Цель

Требуется написать программу и реализовать ее на одной из версий языка Пролог

Задачи

  1. Сформулировать постановку задачи.

  2. Написать текст программы.

  3. Сделать подробное описание назначения и использования всех правил, определенных в программе.

  4. Составить несколько контрольных примеров, исчерпывающе отражающих правильность работы программы.

  5. Составить и оформить протоколы работы программы по каждому контрольному примеру.

Ход работы

Реализовать один из вариантов меню, показанных на рисунке. Для управления курсором использовать клавиши: «»– курсор на одну позицию вверх, «»– вниз, «»– влево, «»– вправо, «Enter»– выход из меню с выбором текущей позиции курсора, «Esc»– выход из меню без выбора. Для выбора варианта меню в качестве ключа используйте первую букву своей фамилии:

а, б, в,

Царь

к, л, м

г, д, е,

Царевич

н, о, п,

Царь

Королевич

ж, з, и,

Король

р, с, т

Царевич

Сапожник

й)

Королевич

у)

Король

Портной

Сапожник

Портной

ф, х, ц, ч, ш, щ, э, ю, я)

Царь

Царевич

Король

Королевич

Сапожник

Портной

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

  1. Назовите правила сопоставления переменных.

  2. Что такое механизм отката?

  3. В чем состоит алгоритм унификации?

  4. Что такое отсечение?

8.4 Рекурсивные структуры данных. Списки (4 часа)

Цель

Требуется написать программу и реализовать ее на одной из версий языка Пролог

Задачи

  1. Сформулировать постановку задачи.

  2. Написать текст программы.

  3. Сделать подробное описание назначения и использования всех правил, определенных в программе.

  4. Составить несколько контрольных примеров, исчерпывающе отражающих правильность работы программы.

  5. Составить и оформить протоколы работы программы по каждому контрольному примеру.

Ход работы

Из предлагаемого ниже списка, используя свою фамилию, имя и отчество в качестве ключа, выберете задания и определите соответствующие правила обработки списков:

сложение двух списков:

а) concat_lists_1([a, b, c, d], [a, b, l, m, k], [a, b, c, d, a, b, l, m, k]).

б) concat_lists_2([a, b, c, d], [a, b, l, m, k], [a, b, c, d, l, m, k]).

в) concat_lists_3([a, b, c, d], [a, b, l, m, k], [a, a, b, b, c, l, d, m, k]).

г) concat_lists_4([a, b, c, d], [a, b, l, m, k], [a, a, b, b, c, l, d, m]).

по парное сложение элементов списков

д) add_lists([4, 7, 12, 10, 5], [3, 6, 8, 3], [7, 13, 20, 13, 5]).

е) add_lists([4, 7, 12, 10, 5], [3, 6, 8, 3], [7, 13, 20, 13]).

замена списка на обратный

ж) revers_list([1, 4, 9, 0, 5], [5, 0, 9, 4, 1]).

сортировка элементов списка

з) sorting_1([5, 3, 8, 4, 1], [1, 3, 4, 5, 8]).

и) sorting_2([5, 3, 8, 4, 1], [1, 3, 4, 5, 8]).

подсчет количества элементов списка

й) quant_1([a, b, y, b, k, d], 6).

подсчет количества различных значений элементов списка

к) quant_2([a, b, y, b, k, y, d], 5).

подсчет количества уникальных элементов списка

л) quant_3([a, b, y, b, k, y, d], 3).

подсчет количества неуникальных элементов списка

м) quant_4([a, b, y, b, k, y, d], 2).

проверка вхождения элемента в список с определением позиции вхождения

н) member_1(c, [a, b, c, d, f, c], 3).

о) member_3(c, [a, b, c, d, f, c], 6).

п) member_1(c, [a, b, c, d, f, c], [3, 6]).

удаление указанного элемента из списка

р) delete_element_1(c, [a, b, c, d, f, c], [a, b, d, f, c]).

с) delete_element_2(c, [a, b, c, d, f, c], [a, b, d, f,]).

т) delete_element_3(c, [a, b, c, d, f, c], [a, b, c, d, f]).

удаление элемента из списка по номеру

у) erase_element_1(2, [a, b, c, d, f, c], [a, c, d, f, c]).

ф) erase_element_2(2, [a, b, c, d, f, c], [a, b, c, d, c]).

удаление неуникальных элементов списка

х) erase_element_3([a, b, c, d, f, c, b], [a, c, d, f]).

замена указанного элемента на другой

ц) change_element(c, f, [a, b, c, d, f, c], [a, b, f, d, f, c]).

ч) change_element(c, f, [a, b, c, d, f, c], [a, b, c, d, f, f]).

ш) change_element(c, f, [a, b, c, d, f, c], [a, b, f, d, f, f]).

щ) change_element(c, f, [a, b, c, d, f, c], [a, b, f, d, c, f]).

ы) change_element(c, f, [a, b, c, d, f, c], [a, b, f, d, f, c]).

добавление элемента к списку

э) add_element_1(a, [e, a, b, c, a, d], [a, e, a, b, c, a, d]).

ю) add_element_2(a, [e, a, b, c, a, d], [e, a, b, c, a, d, a]).

нахождение совпадающих элементов в двух списках

я) compare_list([a, b, c, d, e, k], [a, c, b, d, k, k], [a, d, k]).