ФАЙЛИ: ЗАПИС ТА ЧИТАННЯ
Лекція 5
1. ФАЙЛОВА СИСТЕМА В PROLOG
Файл може бути відкритий:
 для читання;
 для запису;
 для додавання;
 для модифікації.
Файл, відкритий для будь-якої дії, відмінної від читання, повинен бути закритий
після завершення операції. В іншому випадку внесені до файлу зміни можуть бутипісля завершення операції. В іншому випадку внесені до файлу зміни можуть бути
втрачені. Можна відкрити кілька файлів одночасно. При цьому введення і виведення
можуть бути швидко перепризначені між відкритими файлами.
Вбудовані альтернативи домену file:
keyboard Читання з клавіатури (за замовчуванням)
screen Запис в монітор
stdin Читання зі стандартного вводу
stdout Запис в стандартне виведення
stderr Запис на стандартний пристрій для виведення помилок
1. ВІДКРИТТЯ ТА ЗАКРИТТЯ ФАЙЛІВ
Предикат openread / 2
відкриває файл OSFileName для читання, використовуючи формат:
openread (SymbolicFileName, OSFileName) % (i, i)
Prolog звертається до відкритого файлу по символічному імені SymbolicFileName,
оголошеному в домені file. Якщо файл не може бути відкритий, Prolog видасть
повідомлення про помилку.
Предикат openwrite / 2
відкриває файл OSFileName для запису, використовуючи формат:відкриває файл OSFileName для запису, використовуючи формат:
openwritе (SymbolicFileName, OSFileName) % (i, i)
Якщо файл вже існує, то він знищується. В іншому випадку Prolog створює новий
файл і поміщає його у відповідному каталозі. Якщо файл не може бути створений,
Prolog видасть повідомлення про помилку.
Предикат openappend / 2
відкриває файл OSFileName для запису в кінець файлу. При цьому
використовується формат:
openappend (SymbolicFileName, OSFileName) % (i, i)
Якщо файл не може бути відкритий для запису, Prolog повідомить про помилку.
1. ВІДКРИТТЯ ТА ЗАКРИТТЯ ФАЙЛІВ
Предикат openmodify / 2
відкриває файл OSFileName і для запису, і для читання; якщо файл вже існує, він
не буде перезаписаний, openmodify має формат:
openmodify (SymbolicFileName, OSFileName) % (i, i)
Якщо система не може відкрити OSFileName, Prolog повідомить про помилку. Для
заповнення файлу з довільним доступом предикат openmodify може
використовуватися разом зі стандартним предикатом filepos.
Предикат filemode / 2
При відкритті файлу в текстовому режимі предикат filemode встановлює вказанийПри відкритті файлу в текстовому режимі предикат filemode встановлює вказаний
файл в текстовий або двійковий режим, використовуючи формат:
filemode (SymbolicFileName, FileMode) % (i, i)
Якщо FileMode = 0, файл SymbolicFileName встановлюється в двійковий режим;
якщо FileMode = 1, то він встановлюється в текстовий режим. У текстовому режимі
при запису до нових рядків додаються символи "повернення каретки "/" переведення
рядка ", а при читанні ця пара символів інтерпретується як новий рядок.
Carriage return (повернення каретки) = ASCII 13
Line feed (переклад рядка) = ASCII 10
У двійковому режимі ніяких перетворень не проводиться. Для читання двійкового
файлу можна використовувати тільки предикат readchar або предикати для доступу
до двійковим файлів,
1. ВІДКРИТТЯ ТА ЗАКРИТТЯ ФАЙЛІВ
Предикат closefile / 1
закриває вказаний файл; він використовує формат: closefile (SymbolicFileName)
% (i)
Цей предикат завжди завершується успішно, навіть якщо файл не був відкритим.
Предикат readdevice / 1
перевизначає current_read_device (поточний пристрій читання) або повертає
його ім'я. Предикат має формат:
readdevice (SymbolicFileName) % (i), (о)readdevice (SymbolicFileName) % (i), (о)
Предикат readdevice перевизначає поточний пристрій читання, якщо змінна
SymbolicFileName визначена, і файл відкритий для читання. Якщо SymbolicFileName
є вільною змінною, то readdevice присвоїть їй ім'я поточного активного пристрою
читання.
Предикат writedevice / 1
або призначає, або дозволяє отримати ім'я current_write_device (поточного
пристрою запису). Він має формат:
writedevice (SymbolicFileName) % (i), (о)
Предикат writedevice перевизначить пристрій запису, якщо зазначений файл
відкритий для запису або додавання. Якщо змінна SymbolicFileName вільна,
writedevice присвоїть їй ім'я поточного активного пристрою запису.
1. ВІДКРИТТЯ ТА ЗАКРИТТЯ ФАЙЛІВ
2. РОБОТА З ФАЙЛАМИ
Предикат filepos / 3
може керувати позицією, де проводиться читання або запис. Має формат:
filepos (SymbolicFileName, FilePosition, Mode) % (i, i, i), (i, o, i)
Якщо FilePosition - пов'язана змінна, предикат може змінити позицію читання і запису
для файлу з ім'ям SymbolicFileName. Якщо при виклику FilePosition є вільною змінною, то
SymbolicFileName повертає поточну позицію у файлі. Значення SymbolicFileName належить
типу long.
Mode FilePosition
Mode є цілою величиною і вказує, як має інтерпретуватися значення FilePosition:
0 Щодо початку
файлу
1 Щодо поточної
позиції
2 Щодо кінця
файлу (кінець файлу
відповідає
позиції 0)
Коли повертається
FilePosition, то filepos
повертає позицію щодо
початку файлу незалежно
від значення Mode.
2. РОБОТА З ФАЙЛАМИ
2. РОБОТА З ФАЙЛАМИ
Предикат eof / 1
перевіряє, чи є позиція, отримана в процесі читання, кінцем файлу. У цьому випадку
eof успішний. В іншому випадку - неуспіх.
Предикат eof має вигляд:
eof (SymbolicFileName)% (i)
eof видає помилку під час виконання, якщо файл був відкритий з правами тільки на
запис.
Зверніть увагу, що предикат не надає особливого значення символу кінця файла
DOS (комбінація клавіш <Ctrl> + <Z>).DOS (комбінація клавіш <Ctrl> + <Z>).
Приклад, як предикат eof можна
використовувати для визначення
предиката repfile, який корисний при роботі з
файлами, repfile генерує точку овернення до тих
пір, поки не буде досягнуто кінець файлу.
2. РОБОТА З ФАЙЛАМИ
2. РОБОТА З ФАЙЛАМИ
Предикат flush / 1
записує вміст внутрішнього буфера в іменований файл. Має формат:
flush (SymbolicFileName)% (i)
Він же запитує систему "скинути всі буфери".
Предикат existfile / 1
виконується успішно, якщо файл ОSFileName буде знайдений. Формат його наступний:
existfile (OSFileName)% (i)
Предикат OSFileName може містити каталог, а саме ім'я може містити знакиПредикат OSFileName може містити каталог, а саме ім'я може містити знаки
підстановки, як c:  psys  *. cfg. Предикат existfile завершується неуспішно, якщо ім'я
файлу не знайдено в позначеному шляху каталогу. Проте, незважаючи на те, що existfile
знаходить всі файли, включаючи файли з встановленими атрибутами "system“ і "hidden“,
він не знаходить каталоги. Це може бути виконано використанням предикатів пошуку
каталогів.
Для перевірки того, що файл присутній на диску (перш ніж відкривати його), ви
можете скористатися:
2. РОБОТА З ФАЙЛАМИ
Предикат search file / 3
використовується для знаходження файлу в списку шляхів. Він приймає три
аргументи:
searchfile (PathList, Name, FoundName)% (i, i, o)
де PathList - це рядок, що містить один або більше шляхів, розділених «;», Name - ім'я
шуканого файлу. Якщо файл знайдений, FoundName буде пов'язана з повним його
ім'ям, інакше searchfile завершиться неуспішно. Наприклад:
SearchFile (".; ..; С:  ", "autoexec.bat", FoundName),SearchFile (".; ..; С:  ", "autoexec.bat", FoundName),
якщо autoexec.bat розташований в корені диска С:, FoundName встановиться рівним
C:  AUTOEXEC.BAT.
Файл може містити символи підстановки. У цьому випадку FoundName буде
пов'язана з повним ім'ям файлу, що містить символи підстановки, і далі може бути
використана як аргумент для предикатів пошуку каталогів. Наприклад, якщо ім'я
файлу в попередньому прикладі задано як *. bat замість autoexec.bat, FoundName
виявиться пов'язаним з С:  *. ВАТ.
Предикат deletefile / 1
знищує файл, заданий його аргументом, і має формат:
deletefile (OSFileName)% (i)
Предикат deletefile дасть помилку, якщо не зможе видалити файл. OSFileName
3. УПРАВЛІННЯ ТЕРМАМИ
Предикат readterm дозволяє отримати доступ до фактів у файлі. Він може зчитати будь-
які об'єкти, записані предикатом write, і має вигляд: readterm (<name>, TermParam), де
<name> - ім'я домену.
3. УПРАВЛІННЯ ТЕРМАМИ
Visual Prolog створює одну доменну альтернативу для кожного предиката з розділу facts. Пролог
описує кожен предикат бази фактів за допомогою функтора і доменів аргументів цього предиката.
Наприклад, для такого оголошення розділу facts:
Visual Prolog
згенерує:

More Related Content

PPT
Операційна система UNIX
PPTX
+4 faylovi operaciji_u_s2000
PPT
середовище
PPT
PPTX
файлова система
PPT
PPT
ФАЙЛОВА СИСТЕМА LINUX
Операційна система UNIX
+4 faylovi operaciji_u_s2000
середовище
файлова система
ФАЙЛОВА СИСТЕМА LINUX

What's hot (17)

PPT
PPTX
5 клас урок 5
PPTX
Файлова система. Файл
PPTX
Ntfs &amp; fat32
PPTX
Файлові системи NTFS і FAT
PPTX
презентація
PPTX
урок 9. файлова система та її об'єкти
PPSX
Інформатика-6. Урок 10
PPTX
6 клас Урок 9 10-11-12 робота з об'єктами файлової системи
PPTX
5 клас урок 7
PPT
урок2 файли
DOC
лабораторна робота №3
PPT
урок 3
PPTX
5 клас урок 6
PPTX
програмування мовою паскаль
5 клас урок 5
Файлова система. Файл
Ntfs &amp; fat32
Файлові системи NTFS і FAT
презентація
урок 9. файлова система та її об'єкти
Інформатика-6. Урок 10
6 клас Урок 9 10-11-12 робота з об'єктами файлової системи
5 клас урок 7
урок2 файли
лабораторна робота №3
урок 3
5 клас урок 6
програмування мовою паскаль
Ad

Viewers also liked (8)

PDF
Lect 6 prolog
PDF
Lect ai 2 nn
PDF
Lect 2 prolog
PDF
Lect 1 intro
PDF
Lect 3 4 prolog
PDF
Lect аі 2 n net p2
PPTX
PDF
Lect ai 3 ga
Lect 6 prolog
Lect ai 2 nn
Lect 2 prolog
Lect 1 intro
Lect 3 4 prolog
Lect аі 2 n net p2
Lect ai 3 ga
Ad

Similar to Lect 5 prolog (20)

PPTX
Lecture 12 for distance courses "Fundamentals of Informatics"
PPTX
5 клас урок 13
PPT
Лекція №12
PPTX
7Файлові операції у С++.pptx
PPTX
урок 13 файли та папки
PPTX
5 клас урок 13 файли та папки
PPTX
5 клас урок 6
PPTX
5 клас урок 5
PPTX
6 клас урок 9. Поняття файлової системи
PPT
Пошук файлів і папок
PPTX
+4 faylovi operaciji_u_s2000
PPT
файли та папки 6 клас
PPTX
Урок 8. Стиснення і архівування даних
PPTX
стисннення та арх
PPTX
урок 10 6 клас сл ш
PPTX
Razdel14
PPTX
5 клас урок 9 14 робочий стіл та його об'єкти. файли ,папки
PDF
6 клас 10 урок. Опреції над об'єктами файлової системи.
PPT
9 klas urok_9_tema_ss
Lecture 12 for distance courses "Fundamentals of Informatics"
5 клас урок 13
Лекція №12
7Файлові операції у С++.pptx
урок 13 файли та папки
5 клас урок 13 файли та папки
5 клас урок 6
5 клас урок 5
6 клас урок 9. Поняття файлової системи
Пошук файлів і папок
+4 faylovi operaciji_u_s2000
файли та папки 6 клас
Урок 8. Стиснення і архівування даних
стисннення та арх
урок 10 6 клас сл ш
Razdel14
5 клас урок 9 14 робочий стіл та його об'єкти. файли ,папки
6 клас 10 урок. Опреції над об'єктами файлової системи.
9 klas urok_9_tema_ss

More from Halyna Melnyk (9)

PPT
Sql global
PPT
PPT
Sql granting
PPT
Sql view
PPT
Sql select 3
PPT
Sql select 2
PPT
Sql select 1
PPT
Sql dml
PPTX
Sql ddl
Sql global
Sql granting
Sql view
Sql select 3
Sql select 2
Sql select 1
Sql dml
Sql ddl

Recently uploaded (18)

PDF
8_mys_g_2025 - влат пвлтп влт пвлатп лвв
PDF
яво рпядлв опялдыво пялдыв оплядыв оп ояыл
PDF
Заняття 6. Прийняття рішення командиром взводу на бій на основі APSP (Army Pr...
PDF
ы плоывдлпоявлпо яылпояылв по влполвдпо в
PPTX
Презентація 7 клас Урок 1. Комп'ютерні мережі
PDF
Заняття 5. Методика прийняття рішень на основі APSP (Army Problem Solving Pro...
PDF
яалво вдлаопядвл опдлыв ояпвояыр пывора в
PDF
в пявлапо жлваопвлад опявл аопялвдао плва
PPT
Підсумки атестації здобувачів другого (магістерського) рівня вищої освіти 20...
PDF
8_t_h_2025 - ядв пдвлаопялво пядлво плдвв
PDF
"Фах" (аналіз твору) Айзек Азімов (презентація)
PDF
Інформація щодо фактичного використання бюджетних коштів в липні 2025 році
PDF
КНУ, презентація по вступній кампанії_2025
PDF
8_in_b_2025 - лютв лвотп ячлвт плвт ядвл
PDF
akjgaksdj lkaыдуко локж оуыпж оывджл апоыв
PDF
Заняття 6. Прийняття рішення командиром взводу на бій на основі APSP (Army Pr...
PDF
ывла пявдлоп явдла опдвяла опдвла опявлпов
PPTX
Підсумки атестації випускників 2025 року
8_mys_g_2025 - влат пвлтп влт пвлатп лвв
яво рпядлв опялдыво пялдыв оплядыв оп ояыл
Заняття 6. Прийняття рішення командиром взводу на бій на основі APSP (Army Pr...
ы плоывдлпоявлпо яылпояылв по влполвдпо в
Презентація 7 клас Урок 1. Комп'ютерні мережі
Заняття 5. Методика прийняття рішень на основі APSP (Army Problem Solving Pro...
яалво вдлаопядвл опдлыв ояпвояыр пывора в
в пявлапо жлваопвлад опявл аопялвдао плва
Підсумки атестації здобувачів другого (магістерського) рівня вищої освіти 20...
8_t_h_2025 - ядв пдвлаопялво пядлво плдвв
"Фах" (аналіз твору) Айзек Азімов (презентація)
Інформація щодо фактичного використання бюджетних коштів в липні 2025 році
КНУ, презентація по вступній кампанії_2025
8_in_b_2025 - лютв лвотп ячлвт плвт ядвл
akjgaksdj lkaыдуко локж оуыпж оывджл апоыв
Заняття 6. Прийняття рішення командиром взводу на бій на основі APSP (Army Pr...
ывла пявдлоп явдла опдвяла опдвла опявлпов
Підсумки атестації випускників 2025 року

Lect 5 prolog

  • 1. ФАЙЛИ: ЗАПИС ТА ЧИТАННЯ Лекція 5
  • 2. 1. ФАЙЛОВА СИСТЕМА В PROLOG Файл може бути відкритий:  для читання;  для запису;  для додавання;  для модифікації. Файл, відкритий для будь-якої дії, відмінної від читання, повинен бути закритий після завершення операції. В іншому випадку внесені до файлу зміни можуть бутипісля завершення операції. В іншому випадку внесені до файлу зміни можуть бути втрачені. Можна відкрити кілька файлів одночасно. При цьому введення і виведення можуть бути швидко перепризначені між відкритими файлами. Вбудовані альтернативи домену file: keyboard Читання з клавіатури (за замовчуванням) screen Запис в монітор stdin Читання зі стандартного вводу stdout Запис в стандартне виведення stderr Запис на стандартний пристрій для виведення помилок
  • 3. 1. ВІДКРИТТЯ ТА ЗАКРИТТЯ ФАЙЛІВ Предикат openread / 2 відкриває файл OSFileName для читання, використовуючи формат: openread (SymbolicFileName, OSFileName) % (i, i) Prolog звертається до відкритого файлу по символічному імені SymbolicFileName, оголошеному в домені file. Якщо файл не може бути відкритий, Prolog видасть повідомлення про помилку. Предикат openwrite / 2 відкриває файл OSFileName для запису, використовуючи формат:відкриває файл OSFileName для запису, використовуючи формат: openwritе (SymbolicFileName, OSFileName) % (i, i) Якщо файл вже існує, то він знищується. В іншому випадку Prolog створює новий файл і поміщає його у відповідному каталозі. Якщо файл не може бути створений, Prolog видасть повідомлення про помилку. Предикат openappend / 2 відкриває файл OSFileName для запису в кінець файлу. При цьому використовується формат: openappend (SymbolicFileName, OSFileName) % (i, i) Якщо файл не може бути відкритий для запису, Prolog повідомить про помилку.
  • 4. 1. ВІДКРИТТЯ ТА ЗАКРИТТЯ ФАЙЛІВ Предикат openmodify / 2 відкриває файл OSFileName і для запису, і для читання; якщо файл вже існує, він не буде перезаписаний, openmodify має формат: openmodify (SymbolicFileName, OSFileName) % (i, i) Якщо система не може відкрити OSFileName, Prolog повідомить про помилку. Для заповнення файлу з довільним доступом предикат openmodify може використовуватися разом зі стандартним предикатом filepos. Предикат filemode / 2 При відкритті файлу в текстовому режимі предикат filemode встановлює вказанийПри відкритті файлу в текстовому режимі предикат filemode встановлює вказаний файл в текстовий або двійковий режим, використовуючи формат: filemode (SymbolicFileName, FileMode) % (i, i) Якщо FileMode = 0, файл SymbolicFileName встановлюється в двійковий режим; якщо FileMode = 1, то він встановлюється в текстовий режим. У текстовому режимі при запису до нових рядків додаються символи "повернення каретки "/" переведення рядка ", а при читанні ця пара символів інтерпретується як новий рядок. Carriage return (повернення каретки) = ASCII 13 Line feed (переклад рядка) = ASCII 10 У двійковому режимі ніяких перетворень не проводиться. Для читання двійкового файлу можна використовувати тільки предикат readchar або предикати для доступу до двійковим файлів,
  • 5. 1. ВІДКРИТТЯ ТА ЗАКРИТТЯ ФАЙЛІВ Предикат closefile / 1 закриває вказаний файл; він використовує формат: closefile (SymbolicFileName) % (i) Цей предикат завжди завершується успішно, навіть якщо файл не був відкритим. Предикат readdevice / 1 перевизначає current_read_device (поточний пристрій читання) або повертає його ім'я. Предикат має формат: readdevice (SymbolicFileName) % (i), (о)readdevice (SymbolicFileName) % (i), (о) Предикат readdevice перевизначає поточний пристрій читання, якщо змінна SymbolicFileName визначена, і файл відкритий для читання. Якщо SymbolicFileName є вільною змінною, то readdevice присвоїть їй ім'я поточного активного пристрою читання. Предикат writedevice / 1 або призначає, або дозволяє отримати ім'я current_write_device (поточного пристрою запису). Він має формат: writedevice (SymbolicFileName) % (i), (о) Предикат writedevice перевизначить пристрій запису, якщо зазначений файл відкритий для запису або додавання. Якщо змінна SymbolicFileName вільна, writedevice присвоїть їй ім'я поточного активного пристрою запису.
  • 6. 1. ВІДКРИТТЯ ТА ЗАКРИТТЯ ФАЙЛІВ
  • 7. 2. РОБОТА З ФАЙЛАМИ Предикат filepos / 3 може керувати позицією, де проводиться читання або запис. Має формат: filepos (SymbolicFileName, FilePosition, Mode) % (i, i, i), (i, o, i) Якщо FilePosition - пов'язана змінна, предикат може змінити позицію читання і запису для файлу з ім'ям SymbolicFileName. Якщо при виклику FilePosition є вільною змінною, то SymbolicFileName повертає поточну позицію у файлі. Значення SymbolicFileName належить типу long. Mode FilePosition Mode є цілою величиною і вказує, як має інтерпретуватися значення FilePosition: 0 Щодо початку файлу 1 Щодо поточної позиції 2 Щодо кінця файлу (кінець файлу відповідає позиції 0) Коли повертається FilePosition, то filepos повертає позицію щодо початку файлу незалежно від значення Mode.
  • 8. 2. РОБОТА З ФАЙЛАМИ
  • 9. 2. РОБОТА З ФАЙЛАМИ Предикат eof / 1 перевіряє, чи є позиція, отримана в процесі читання, кінцем файлу. У цьому випадку eof успішний. В іншому випадку - неуспіх. Предикат eof має вигляд: eof (SymbolicFileName)% (i) eof видає помилку під час виконання, якщо файл був відкритий з правами тільки на запис. Зверніть увагу, що предикат не надає особливого значення символу кінця файла DOS (комбінація клавіш <Ctrl> + <Z>).DOS (комбінація клавіш <Ctrl> + <Z>). Приклад, як предикат eof можна використовувати для визначення предиката repfile, який корисний при роботі з файлами, repfile генерує точку овернення до тих пір, поки не буде досягнуто кінець файлу.
  • 10. 2. РОБОТА З ФАЙЛАМИ
  • 11. 2. РОБОТА З ФАЙЛАМИ Предикат flush / 1 записує вміст внутрішнього буфера в іменований файл. Має формат: flush (SymbolicFileName)% (i) Він же запитує систему "скинути всі буфери". Предикат existfile / 1 виконується успішно, якщо файл ОSFileName буде знайдений. Формат його наступний: existfile (OSFileName)% (i) Предикат OSFileName може містити каталог, а саме ім'я може містити знакиПредикат OSFileName може містити каталог, а саме ім'я може містити знаки підстановки, як c: psys *. cfg. Предикат existfile завершується неуспішно, якщо ім'я файлу не знайдено в позначеному шляху каталогу. Проте, незважаючи на те, що existfile знаходить всі файли, включаючи файли з встановленими атрибутами "system“ і "hidden“, він не знаходить каталоги. Це може бути виконано використанням предикатів пошуку каталогів. Для перевірки того, що файл присутній на диску (перш ніж відкривати його), ви можете скористатися:
  • 12. 2. РОБОТА З ФАЙЛАМИ Предикат search file / 3 використовується для знаходження файлу в списку шляхів. Він приймає три аргументи: searchfile (PathList, Name, FoundName)% (i, i, o) де PathList - це рядок, що містить один або більше шляхів, розділених «;», Name - ім'я шуканого файлу. Якщо файл знайдений, FoundName буде пов'язана з повним його ім'ям, інакше searchfile завершиться неуспішно. Наприклад: SearchFile (".; ..; С: ", "autoexec.bat", FoundName),SearchFile (".; ..; С: ", "autoexec.bat", FoundName), якщо autoexec.bat розташований в корені диска С:, FoundName встановиться рівним C: AUTOEXEC.BAT. Файл може містити символи підстановки. У цьому випадку FoundName буде пов'язана з повним ім'ям файлу, що містить символи підстановки, і далі може бути використана як аргумент для предикатів пошуку каталогів. Наприклад, якщо ім'я файлу в попередньому прикладі задано як *. bat замість autoexec.bat, FoundName виявиться пов'язаним з С: *. ВАТ. Предикат deletefile / 1 знищує файл, заданий його аргументом, і має формат: deletefile (OSFileName)% (i) Предикат deletefile дасть помилку, якщо не зможе видалити файл. OSFileName
  • 13. 3. УПРАВЛІННЯ ТЕРМАМИ Предикат readterm дозволяє отримати доступ до фактів у файлі. Він може зчитати будь- які об'єкти, записані предикатом write, і має вигляд: readterm (<name>, TermParam), де <name> - ім'я домену.
  • 14. 3. УПРАВЛІННЯ ТЕРМАМИ Visual Prolog створює одну доменну альтернативу для кожного предиката з розділу facts. Пролог описує кожен предикат бази фактів за допомогою функтора і доменів аргументів цього предиката. Наприклад, для такого оголошення розділу facts: Visual Prolog згенерує: