
- •Міністерство освіти і науки,
- •Передмова
- •1 Лабораторна робота № 1 пошук з поверненням. Використання динамічної бази фактів
- •Мета роботи
- •Вказівки до виконання лабораторної роботи
- •Завдання до лабораторної роботи
- •Зміст звіту
- •Завдання до лабораторної роботи
- •Зміст звіту
- •Завдання до лабораторної роботи
- •Зміст звіту
- •Контрольні питання
- •Література
- •Додаток а Середовище Visual Prolog
- •Додаток б Стандартні предикати
Зміст звіту
Звіт з лабораторної роботи повинен містити
Тему та мету роботи.
Завдання до лабораторної роботи відповідного варіанту (за списком групи).
Текст програми.
Результати роботи програми.
Контрольні питання
Основні секції програми; їх призначення.
Змінні. Анонімні змінні. Конкретизація змінних.
Типи тверджень; їх розташування в програмі.
Статична та динамічна бази фактів. Чим відрізняється їх опис?
Стандартні предикати роботи з динамічними фактами.
Механізм звороту. Управління пошуком рішень за допомогою предиката fail.
2 ЛАБОРАТОРНА РОБОТА № 2
ОБРОБКА РЯДКІВ В VISUAL PROLOG. ВИСХІДНА РЕКУРСІЯ. ВІДСІК.
Мета роботи
Мета роботи - одержання знань і навиків, необхідних для обробки рядків, використовуючи висхідну рекурсію та предикат – відсік(!).
Вказівки до виконання лабораторної роботи
2.2.1 Перед виконанням завдання треба ознайомитися з нижче поданими прикладами, скопіювати по черзі приклади в текстовий редактор оболонки Visual Prolog та виконати їх.
Приклад 2_1. Знайти в рядку кількість слів з першою буквою а.
predicates
кіл_слів(string,integer,integer) /*Рядок, Кількість слів з першою буквою ‘a’, Результат */
clauses
кіл_слів("",N,N).
кіл_слів(S,N,R):-fronttoken(S,W,S_ost), frontchar(W,'a',_), N1=N+1,!,
кіл_слів(S_ost,N1,R);
fronttoken(S,_,S_ost),кіл_слів(S_ost,N,R).
goal
readln(S), кіл_слів(S,0,Res), write(Res).
В програмі вказана англійська буква ‘a’.
Перша гілка правила працює, якщо перша буква поточного слова – ‘a’. Друга гілка правила працює, якщо перша буква поточного слова не ‘a’.
Завдання до лабораторної роботи
Ввести рядок з клавіатури. Підрахувати кількість букв "а" в останньому слові рядка.
Ввести рядок з клавіатури. Підрахувати кількість слів у рядку, в яких перший і останній символи однакові.
Ввести рядок з клавіатури. Перетворити його так, щоб всі склади "ЦЕ" було замінено на "ТО".
Ввести рядок з клавіатури. Знайти довжину найдовшого слова речення.
Ввести рядок з клавіатури. Вилучити з даного рядку всі символи, що належать до цифр та пропуски.
Ввести рядок з клавіатури. Замінити в ньому всі малі букви однойменними великими, не використовуючи стандартний предикат.
Ввести рядок з клавіатури. Вилучити з нього всі символи, що належать до цифр, та замінити всі крапки на знак оклику.
Ввести речення з клавіатури. Замінити у реченні усі прийменники "і" на "та", якщо попереднє слово закінчується на "і".
Ввести рядок з клавіатури. Підрахувати найбільшу кількість пропусків, що йдуть підряд.
Ввести рядок з клавіатури. Підрахувати кількість входжень в рядок груп букв „abc” і „aba”.
Ввести рядок з клавіатури. Вилучити з даного рядку символи, що розташовані між дужками, разом з дужками. Припускається, що в середині кожної пари дужок немає інших дужок.
Ввести рядок з клавіатури. Вставити між словами, що починаються з тієї ж букви, на яку закінчується попереднє слово, символ '*'.
Ввести рядок з клавіатури. Вивести на екран слово, в якому буква 'а' зустрічається у найбільшій кількості.
Ввести з клавіатури рядок чисел, які розділяються пропусками. Одержати з нього новий рядок, вилучивши числа, які знаходяться на парних місцях, а числа, які знаходяться на місцях з непарними номерами збільшити удвічі.
Ввести рядок з клавіатури. Перевірити, чи входять в рядок всі букви слова "then".
Ввести рядок з клавіатури. Замінити пари букв "nо" на "on" і навпаки.
Ввести з клавіатури рядок чисел, які розділяються пропусками. Одержати з даного рядку чисел суму цих чисел і додати цю суму в кінець рядка.
Ввести рядок з клавіатури. Вилучити з нього усі слова з непарними порядковими номерами та записати усі слова з парними номерами в зворотному порядку. Наприклад, якщо № слова "then" парний, то слово перетворюється у слово "neht".
Ввести рядок з клавіатури. Одержати з даного рядка новий, слова в якому записані в зворотному порядку, а порядок слів той же.