Яким типом даного може бути голова списку і яким типом може бути хвіст списку?

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.

Схема читання файлу:

1) Відкрити файл для читання.

2) Назначити вхідний потік на файл.

3) Перевірити на кінець файлу. По кінцю закрити файл.

4) Якщо не кінець файлу читати число.

5) Вивести число на екран.

6) Повторити дії 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.

Схема утворення файлу послідовним методом:

1) Відкрити файл для запису.

2) Назначити вихідний потік на файл.

3) Читати число з клавіатури.

4) Перевірити чи введено число. Якщо число не введено, то закрити файл.

5) Якщо число введено записати число в файл.

6) Перевести покажчик у файлі на новий рядок.

Кінець вводу чисел з клавіатури визначається по клавіші ESC. При цьому предикат readint невірний і виконується факт go.