
- •Лабораторна робота 7
- •1. План виконання лабораторної роботи
- •2. Основні теоретичні відомості
- •2.1. Основні стандартні предикати Прологу, призначені для обробки рядків символів
- •2.2. Приклад 1 обробки рядків символів
- •2.3. Приклад 2 обробки рядків символів
- •3. Методичні рекомендації до опрацьовування контрольних питань і виконання контрольних завдань лабораторної роботи
- •4. Контрольні питання
- •5. Завдання для самоперевірки
- •6. Контрольні завдання
- •6.1. Контрольне завдання 1
- •6.2. Контрольне завдання 2
- •7. Література
- •Вимоги до оформлення та захисту лабораторної роботи
- •Зразок оформлення титульного аркуша звіту про виконання лабораторної роботи
МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ | |||
ХЕРСОНСЬКИЙ НАЦІОНАЛЬНИЙ ТЕХНІЧНИЙ УНІВЕРСИТЕТ | |||
Кафедра інформацiйних технологій | |||
| |||
|
| ||
| |||
|
МЕТОДИЧНІ РЕКОМЕНДАЦІЇ |
| |
|
та контрольні завдання до виконання лабораторних робіт |
| |
|
з дисципліни „Логічне програмування” |
| |
|
для студентів третього курсу |
| |
|
для напряму підготовки 6.050102 “Комп’ютерна інженерія” |
| |
|
за професійним спрямуванням “Комп’ютерні системи та мережі” |
| |
|
галузі знань 0501 “Інформатика та обчислювальна техніка” |
| |
|
факультету кібернетики |
| |
| |||
ЛАБОРАТОРНА РОБОТА 7 | |||
| |||
Херсон – 2012 р. |
Методичні рекомендації та контрольні завдання до виконання лабораторних робіт з дисципліни „Логічне програмування” для студентів третього курсу напряму підготовки 6.050102 “Комп’ютерна інженерія” (за професійним спрямуванням “Комп’ютерні системи та мережі”) галузі знань 0501 “Інформатика та обчислювальна техніка” факультету кібернетики. Лабораторна робота 7. | |
| |
Укладач: Веселовська Г.В., доцент кафедри інформаційних технологій ХНТУ, к.т.н., доцент, кількість сторінок 12. | |
| |
Рецензент: Кибалко І.І., доцент кафедри інформаційних технологій ХНТУ, к.т.н. | |
| |
|
Затверджено |
|
на засіданні кафедри інформаційних технологій ХНТУ, |
|
протокол № 1 від 31.08.2012 р. |
|
Завідувач кафедри інформаційних технологій ХНТУ, д.т.н., професор, заслужений діяч науки і техніки України |
|
____________________ В.Є.Ходаков |
| |
Відповідальний за випуск В.Є.Ходаков, завідувач кафедри інформаційних технологій ХНТУ, д.т.н., професор, заслужений діяч науки і техніки України. |
Лабораторна робота 7
Тема: Робота з рядками символів у процесі логічного програмування мовою Пролог.
Мета: набуття знань, умінь і навичок роботи з основними стандартними предикатами обробки рядків символів у логічних програмах, створених засобами мови Пролог.
1. План виконання лабораторної роботи
1. Вивчити основні теоретичні відомості до лабораторної роботи.
2. Ознайомитися з методичними вказівками для самостійної роботи студентів до лабораторної роботи 7.
3. Дати відповіді на контрольні питання.
4. Виконати завдання для самоперевірки.
5. Виконати контрольні завдання.
6. Оформити та захистити звіт з лабораторної роботи (вимоги до оформлення та захисту лабораторної роботи знаходяться в Додатку А, а зразок оформлення титульного аркуша звіту про виконання лабораторної роботи знаходиться в Додатку Б).
2. Основні теоретичні відомості
2.1. Основні стандартні предикати Прологу, призначені для обробки рядків символів
PDC Prolog підтримує різноманітні стандартні предикати для обробки рядків символів, визначення синтаксису та семантики яких спирається на поняття лексеми.
Лексемою називають послідовність символів, яка відповідає одній із наступних умов: являє собою деяке ім'я (згідно з синтаксисом Прологу); є числом; є деяким символом, відмінним від пробілу.
Основними предикатами для обробки рядків символів, які працюють за аналогічною схемою, є наступні предикати:
– предикат frontchar (надає можливість відокремити від рядка символів один перший символ);
– предикат fronttoken (надає можливість відокремити від рядка символів лексему).
Предикат frontchar (String, Char, StringRest) дозволяє розділити початковий цілісний рядок символів String на наступні дві частини:
1) перший символ рядка Char;
2) залишок рядка StringRest.
Предикат fronttoken (String, Lexeme, StringRest) дозволяє розділити початковий цілісний рядок символів String на наступні дві частини:
1) лексему Lexeme;
2) залишок рядка StringRest.
Більш детально стандартні предикати для роботи з рядками символів можна переглянути в файлі Prolog.hlp, у наступних розділах:
– "STRING HANDLING";
– "CONVERSIONS".
Наведемо далі приклад перетворення початкового цілісного рядка символів на список окремих символов за допомогою методу рекурсії, що реалізується в двох варіантах, які відрізняються один від одного граничною умовою припинення циклу рекурсії:
1) зупинка рекурсії стається в тому випадку, коли від поточного рядка буде відокремлено останній символ (тобто поточний рядок перетвориться на порожній рядок);
2) зупинка рекурсії стається в момент спроби відокремлення від порожнього рядка чергового символу, що, природно, зробити не вдається, після чого здійснюється відкат до другого речення рекурсивного логічного правила.
2.2. Приклад 1 обробки рядків символів
У наведеному далі лістингу (Sheet 7_1) представлено приклад Пролог-програми, що здійснює перетворення початкового цілісного рядка символів на список окремих символів за допомогою методу рекурсії.
Зупинка циклу рекурсії стається в тому випадку, коли від поточного рядка символів буде відокремлено останній символ (тобто тоді, коли поточний рядок символів перетвориться на порожній рядок).
Результат роботи програми (список символів) має наступний вигляд:
List = ['a', 'b', 'c', 'd', 'e']
% Sheet 7_1. Primer 1 on the processing for strings of symbols
DOMAINS
charlist = char*
PREDICATES
string2charlist (string, charlist)
CLAUSES
string2charlist ("", [ ]):- !.
string2charlist (Str, [H|T]):-
frontchar (Str, H, Str_Rest),
string2charlist (Str_Rest, T).
GOAL
string2charlist ("abcde", List),
write ("List =", List).