Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
МУ к лаб. раб. Візуальне прог..doc
Скачиваний:
8
Добавлен:
07.02.2016
Размер:
198.66 Кб
Скачать
    1. Зміст звіту

Звіт з лабораторної роботи повинен містити

  1. Тему та мету роботи.

  2. Завдання до лабораторної роботи відповідного варіанту (за списком групи).

  3. Текст програми.

  4. Результати роботи програми.

    1. Контрольні питання

  1. Яка процедура називається рекурсивною?

  2. Дати означення висхідного методу рекурсії.

  3. Як порівнюються рядкові дані. Наведіть приклади.

  4. Які ви знаєте стандартні предикати обробки рядків. Перелічите режими їх роботи.

  5. Які існують предикати перетворення типів даних. Наведіть приклади.

3 ЛАБОРАТОРНА РОБОТА № 3

ОБРОБКА СПИСКІВ В VISUAL PROLOG. НИЗХІДНА РЕКУРСІЯ.

    1. Мета роботи

Мета роботи - одержання знань і навиків необхідних для обробки списків, використовуючи низхідну рекурсію

    1. Вказівки до виконання лабораторної роботи

3.2.1 Перед виконанням завдання треба ознайомитися з нижче поданими прикладами, скопіювати по черзі приклади в текстовий редактор оболонки Visual Prolog та виконати їх.

Приклад 3_1. Перетворити список, елементами якого є цілі числа, інвертуючи знак елементів списку, тобто позитивні числа перетворити в негативні, а негативні в позитивні, для нульових значень ніяких дій не робити. Залишити порядок елементів списку.

domains

list=integer*

predicates

inverting (list, list) /* вхідний список, вихідний список */

processing (integer, integer) /*вхідний елемент, вихідний елемент*/

clauses

inverting ([], []):- !.

inverting ([H | T], [Inv_H | Inv_T]):- inverting (T, Inv_T),!,processing (H, Inv_H).

processing (0, 0):- !.

processing (H, Inv_H):- Inv_H=-H.

goal

inverting ([-2, -1, 0, 3, 4], Inv_List), write("Результат Inv_List=", Inv_List),nl.

Вивід: [2,1,0,-3,-4].

Обробка порожнього списку дає той же порожній список: гранична умова.

Якщо список не порожній, відокремлюється голова списку і рекурсивно викликається ця процедура з хвостом списку. Голова зберігається у стеку.

Дії повторюються до тих пір поки вхідний список не стане порожнім. Тоді вихідний список теж порожній.

Після цього зі стеку вибирається елемент списку, оброблюється вказаним у завданні способом і додається до вихідного списку як його голова.

Предикат processing виконує дії по обробці елемента списка в залежності від його знака, предикат має два твердження, тому що треба розглянути два варіанта: не нульове і нульове значення.

Перший рядок виводить програма. Другий рядок виводить Visual Prolog.

    1. Завдання до лабораторної роботи

  1. Ввести з клавіатури список цілих чисел. Отримати новий список, вилучивши з початкового усі члени з максимальним значенням.

  2. Ввести з клавіатури список дійсних чисел. Якщо у ньому від'ємні та додатні члени чергуються [ +, –, +, –, …], список залишити без змін . В іншому випадку залишити у списку тільки від'ємні члени списку, зберігаючи їх порядок.

  3. Ввести з клавіатури список цілих чисел і № елементу m. Поміняти місцями у списку найбільший член та член з номером m.

  4. Ввести з клавіатури список дійсних чисел. Якщо у списку перше число парне, то побудувати список з усіх від'ємних членів списку. Інакше побудувати список з усіх додатних членів списку.

  5. Ввести з клавіатури список цілих чисел. Поміняти у списку місцями найбільший та найменший члени.

  6. Ввести з клавіатури список дійсних чисел. Поміняти у списку місцями найбільший та останній члени.

  7. Ввести з клавіатури список цілих чисел. Найменший член списку замінити середнім арифметичним усіх членів, інші члени залишити без зміни.

  8. Ввести з клавіатури список дійсних чисел. Отримати новий список замінюючи нулями члени з максимальним значенням та замінюючи одиницею всі інші.

  9. Ввести з клавіатури список цифр. Визначити скільки різних цифр зустрічається у списку. Наприклад. У списку [3, 1, 2, 5, 1, 2] зустрічається 4 різних цифри.

  10. Ввести з клавіатури список дійсних чисел. Переставити усі члени списку так, щоб спочатку йшли усі додатні члени, 0, а потім від'ємні. Порядок у групах повинен зберігатися.

  11. Ввести з клавіатури список дійсних чисел. 3алишити без зміни список, якщо його впорядковано за зростанням, інакше вилучити зі списку ті члени, порядкові номери яких парні, зберігаючи порядок залишених членів.

  12. Ввести з клавіатури дві множини X і Y у формі списків цілих чисел (множина не має однакових елементів). Побудувати перетин двох множин Z = X&Y.

  13. Ввести з клавіатури дві множини X і Y у формі списків цілих чисел (множина не має однакових елементів). Побудувати об'єднання двох множин Z = ХVY.

  14. Ввести з клавіатури дві множини X і Y у формі списків цілих чисел (множина не має однакових елементів). Перевірте, що усі члени множини X, входять у множину Y ?

  15. Ввести з клавіатури дві множини X і Y у формі списків цілих чисел (множина не має однакових елементів). Перевірте тотожність двох множин X і Y.

  16. Ввести з клавіатури список цілих чисел. Отримати множину з елементів числового списку (множина не має однакових елементів).

  17. Ввести з клавіатури список цілих чисел. Знайти скільки чисел входять у числовий список більше ніж один раз.

  18. Ввести з клавіатури список цілих чисел. Вилучити зі списку усі числа, які зустрічаються більше двох разів.

  19. Ввести з клавіатури список цілих чисел. 3амінити усі числа, що повторюються у списку, на 0.