
- •2.1 Мета роботи 23
- •3.1 Мета роботи 29
- •4.1 Мета роботи 39
- •Література 51
- •Передмова
- •1 Лабораторна робота № 1 елементарні програми на пролозі. Робота з твердженнями програми за допомогою механізму звороту
- •1.1 Мета роботи
- •1.2 Методичні вказівки до виконання лабораторної роботи
- •1.3 Завдання на лабораторну роботу
- •Дан набір фактів, які мають такі відомості про книги: прізвище автора, назву книги і рік видання. Знайти і вивести на екран по кожному автору назви його книг і їх кількість.
- •1.5 Контрольні питання
- •2 Лабораторна робота № 2 робота з рядками методом висхідної рекурсії
- •2.1 Мета роботи
- •2.2 Методичні вказівки до виконання лабораторної роботи
- •2.3 Завдання на лабораторну роботу
- •2.5 Контрольні запитання
- •3 Лабораторна робота № 3 робота зі списками методом низхідної рекурсії
- •3.1 Мета роботи
- •3.2 Методичні вказівки до виконання лабораторної роботи
- •3.3 Завдання на лабораторну роботу
- •3.5 Контрольні запитання
- •3.5.2 Яким типом даного може бути голова списку і яким типом може бути хвіст списку?
- •4 Лабораторна робота № 4 предикати вводу-виводу.Робота з файлами
- •4.1 Мета роботи
- •4.2 Методичні вказівки до виконання лабораторної роботи
- •4.3 Завдання на лабораторну роботу
- •4.5 Контрольні запитання
- •Додаток а підготовка та виконання програми в середовищі visual prolog 5.2
- •1. Утворення нового проекту в середовищі Visual Prolog 5.2
- •На вкладці General ввести:
- •На вкладці Target обрати:
- •2.Опції компілятору
- •8. Обробка помилок
- •9. Текстовий редактор Visual Prolog
- •Література
3.5 Контрольні запитання
3.5.1 Яка основна операція на списках? В яких режимах може працювати основна операція на списках?
3.5.2 Яким типом даного може бути голова списку і яким типом може бути хвіст списку?
3.5.3 Що таке однодоменні списки?
3.5.4 Як залежить від завдання цілі робота стандартної процедури Append? Задайте цілі до цієї процедури різними способами.
3.5.5 Поясніть роботу процедури Append при з'єднанні списків.
3.5.6 "Поясніть роботу процедури Append у випадку роз'єднання списку на два певних списки.
3.5.7 Поясніть роботу процедури delete для випадків:
а) вилучити перший вказаний елемент;
б) вилучити усі вказані елементи.
4 Лабораторна робота № 4 предикати вводу-виводу.Робота з файлами
4.1 Мета роботи
Мета роботи:
навчитись керувати логічними пристроями вводу-виводу у програмах на Пролозі;
навчитися писати програми, які використовують файли.
4.2 Методичні вказівки до виконання лабораторної роботи
4.2.1 Виконайте програми, які подано нижче у прикладах. Переконайтеся, що ви розумієте, як переключають потоки вводу - виводу на файли або пристрої.
З’ясуйте як працюють з файлами послідовним і прямим методами доступу.
При роботі з файлами не використовуйте інструкцію include "<Ім’я проекту>.inc". Файл з розширенням inc містить домен file, а в програмі може бути тільки один домен file. При побудові програми, яка виконується(.exe), треба include "<Ім’я проекту>.inc". Тому, відкоригуйте цей файл.
Приклад 1
Вивести на екран компоненти файлу цілих чисел. Кожне число розташовано у файлі окремим рядком.
domains
file = a
Predicates
nondeterm go
Goal
openread (a, ”H.d”), readdevice (a), go, closefile(a).
Clauses
go:– eof(a);
readint(M), write(M) ,nl, !, go.
Схема читання файлу:
Відкрити файл для читання.
Назначити вхідний потік на файл.
Перевірити на кінець файлу. По кінцю закрити файл.
Якщо не кінець файлу читати число.
Вивести число на екран.
Повторити дії 3-5.
У ціль виносять ті предикати, які виконуються не в циклі: відкриття файлу, призначення потоку, якщо воно виконується один раз, закриття файлу.
Приклад 2
Утворити файл цілих чисел. Кожне число розташуйте у файлі окремим рядком.
domains
file = a
Predicates
nondeterm go
Goal
disk("D:\\ira\\program\\prolog\\v"),openwrite (a,”A.d”), writedevice (a), go, closefile(a).
Clauses
go:– readint(M), write(M),nl, !,go.
go.
Схема утворення файлу послідовним методом:
Відкрити файл для запису.
Назначити вихідний потік на файл.
Читати число з клавіатури.
Перевірити чи введено число. Якщо число не введено, то закрити файл.
Якщо число введено записати число в файл.
Перевести покажчик у файлі на новий рядок.
Кінець вводу чисел з клавіатури визначається по клавіші ESC. При цьому предикат readint невірний і виконується факт go.
Приклад 3
Нехай є текстовий файл з компонентами, в яких вказано відомості про підприємства галузі: код підприємства, назва підприємства. Компоненти відсортовані по коду підприємства. Написати програму, яка читає компоненти файлу за кодом підприємства, і їх вміст виводить на екран.
Утворимо текстовим редактором файл “ F.d”, з компоненти які мають фіксовану довжину 9 байт:
01АвтоЗАЗ
02АвтоУАЗ
...
Після кожної компоненти такого файлу знаходиться символ <ПС> (1 байт).
Domains
file = f
Predicates
do
Goal
openmodify(f,”F.d”), do, closefile(f).
Clauses
do:-write(“Код підприємства ? ”),
readdevice(keyboard),
readint(N),
N1=(N-1)*11+2,
readdevice(f),
filepos(f, N1, 0),
readln(K),
write(K), nl, do.
do.
Файл відкривається для прямого доступу. Програма вводить код підприємства з клавіатури, а дані з файлу. Тому вхідний потік назначається то на клавіатуру, то на файл.
Для читання компоненти файлу покажчик встановлюється на компоненту за формулою.
Вихід з програми за клавішею ESC.
4.2.2 Виконайте завдання свого варіанту за № в журналі.
Використовуйте в програмі типові схеми роботи з файлами, які подано у прикладах читання та запису файлів.
Пам’ятайте, що для вводу даних з різних файлів або пристроїв, треба перемикати логічний пристрій. Виконуйте аналогічні дії при виводі у файл.
Увід-вивід з пристроїв, виконується тими ж предикатами, як і увід-вивід з файлів.
Утворюйте за допомогою текстового редактору файли необхідні для роботи вашої програми, якщо такі потрібні. Налагодьте вашу програму, використовуючи утворені файли.