Організація
роботи з файлами в системі "ТУРБО-ПРОЛОГ" h2>
1.
Визначення файлів. H2>
В П.
використовуються традиційне для інших мов програмування визначення файлу.
Для вказівки порядку роботи з конкретними файлами в пр-ме, исп-ся символічне
назва файлу. У системі прийняті слід. станд. імена файлів, з кіт. м. працювати в
програмах без попереднього. опису. p>
1.Входной з
екрана дисплея keyboard p>
2.Виходная
форма на екран screen p>
3.Вих. ф-ма на
пристрій друку printer p>
4. - "- На
порт com1 p>
За замовчуванням
наз-ся файли (1) і (2). Для перевизначення стандартних файлів і файлів
користувача исп-ся станд. предикати p>
readdevice p>
(<
символьне ім'я файлу>) p>
(file): (i) p>
writedevice p>
ПРИКЛАД p>
readdevice (printer), p>
write ( "Робота завершена "), p>
readdevice
(screen), p>
... p>
Файли
користувача в П. м. представляти собою як Д. так і факти у вигляді предикатів,
при цьому 1-а запис файлу д. відповідати 1-му предикату-факту. p>
2. Порядок
роботи з файлами користувача в програмах наступні: h2>
1.Визначення
символьного імені файлу p>
2.Откритіе
відповідного виду доступу p>
3.Определеніе
або перевизначення уст-ва, що використовується для обробки файлу p>
4.Закритіе
файлу після обробки з можливим перевизначення пристроїв введення-виводу p>
Для визначення
символьного імені в П. використовується стандартний домен file, визначений у
розділі domaines. p>
символьне ім'я
м. збігатися, а м. не збігатися з його ім'ям в ОС. Символьне ім'я діє
також у межах тієї пр-ми, кот. його описує. Залежно від порядку роботи
з файлом, його відкриття м проводитися за допомогою слід. стан. предикатів: p>
OPENWRITE (<
сим. назва файлу>, <ім'я файлу в ОС>) p>
(file,
string): (i, i) p>
- відкриває
файл із вказаною ім'ям для операції запису. Якщо він реально існує
під вказаною ім'ям в середовищі ОС, то він знищується. p>
OPENREAD (<
сим. назва файлу>, <ім'я файлу в ОС>) p>
(file,
string): (i, i) p>
- відкриває
файл із вказаною ім'ям для читання p>
OPENAPPEND () (file, string): (i, i) p>
- відкриває
файл для дозапису. Якщо при використанні предиката OPENREAD і OPENAPPEND файл
не знайдено, то це Інтерпром. як помилка. Якщо при використанні предикатів
OPENWRITE і OPENMOCLIFY файл не знайдений, то відбувається створення нового файлу.
Для перевірки наявності файлу в П. є слід. стан. предикат: p>
EXISTEFILE () p>
(string): (i) p>
Якщо файл з
зазначеним ім'ям не сущ., то предикат приймає значення. t., якщо ні-брехня.
Перевизначення пристроїв для роботи з файлами користувача проводиться за
допомогою readdevice і writedevice p>
FILE_STR (<
назва файлу в ОС>, <рядок>) p>
(string, string): (i, 0) (i, i) p>
- читає знаки
до 64кб з файлу в перем. пам'яті, якщо задано (i, 0). Якщо задано (i, i), то
знаки з пер.памяті ю-ся у файл. Читання та запис припиняється, якщо зустрітися
ознака кінця файлу. Цей предикат працює без визначення символьного імені
файлу. p>
READTERM
(, <Терм>) p>
(<
ім'я області "," терм>): (i, 0) p>
Після відкриття
файлу цей предикат читає факти з нього. Перший аргумент предиката д.б.н. описаний
у розділі domains програми p>
EOF (<
символьне ім'я файлу>) p>
(file): (i) p>
Предикат має
значення "Істина", якщо покажчик файлів позиції встановлений на кінці файлу p>
FILEPOS (<
сим. назва файлу "," позиція "," режим>) p>
(file, real, integer): (i, i, i)
(i, 0, i) p>
RENAME (<
ім'я файла1 в ОС "," ім'я файла2 в ОС>) - пере. файлу p>
(string, string)
: (I, i) p>
DELETE (<
назва файлу в ОС>) - видалення файлу p>
(string): (i) p>
DISK (<маршрут>) p>
(string): (i) (0) - встановлює, якщо
(1) або повертає, якщо задана (0) дисковод або тих. каталог, підкаталог ... p>
CLOSEFILE (<
сим. назва файлу>) p>
(file): (i) p>
3.
Стандартні предикати обробки файлів і техніка їх використання. H2>
Техніка роботи
з файлами в програмах p>
1.Созданіе файлу p>
domains p>
file = ff p>
P2 = integer p>
Pole, Pole1 =
string p>
predicates p>
vvod p>
put p>
clouses p>
put if p>
write ( "Введіть ознака продовження "), p>
readint (Pr), p>
Pr = 0 p>
vvod p>
vvod if p>
write ( "Введіть рядок "), p>
readln (Pole),
nl, p>
write (Pole), p>
concat (Pole,
"N", Pole1), p>
openappend
(ff, "text") p>
writedevice
(ff), p>
write (pole1), p>
closefile
(ff), p>
writedevice
(screen), p>
write ( "Рядок", Pole1, "на диск
записана ") p>
У полі м.б.
введенозначеніе предиката-факту, з кіт. надалі м. працювати як СР-вами
обробки файлу, так і ср-вами динам. фаз фактів. Припустимо, що в цьому
прикладі користувач ввів значення предиката-факту tmc p>
tmc (Post, Kod, Kol, Cena) p>
2.Обработка
фактів з файлу p>
domains p>
file = ff p>
data = tmc (
Post, Kod, Kol, Cena) p>
Post, Kod = string p>
Kol,
Cena = integer p>
predicates p>
put p>
spr p>
clouses p>
put if p>
not (eof
(ff )), p>
spr. p>
put if p>
eof (ff), nl, p>
write ( "Робота закінчена "), p>
closefile (ff) p>
spr if p>
readterm
(data, tmc (Post, Kod, Kol, Cena), nl, p>
write (post),
nl, p>
put. p>
goal p>
openread (ff,
"Text "), p>
readdevice
(ff), p>
spr. p>
3.Модіфікація
даних файлу p>
domains p>
file = ff p>
Pr = integer p>
Pole, Pole1 =
string p>
K = real p>
predicaes p>
put p>
mod p>
clouses p>
put if p>
( "Введіть ознака продовження "), p>
readint
(P2), p>
p2 = 0, p>
mod. p>
mod if p>
write ( "Введіть номер запису"), nl, p>
readreal (K), nl, p>
K1 = K * 12, p>
openmodify (ff, "text "), p>
readdevice (ff), p>
48 p>
filepos (ff, K1, 0) p>
readln (Pole), p>
write ( "Старе значення", pole), nl, p>
writedevice (ff), p>
filepos
(ff, K1, 0), p>
write (Pole1, "n "), p>
closefile (ff), p>
writedevice (screen), p>
write ( "Нове значення", Pole1), nl, p>
readdevice
(keybord), p>
put p>
goal p>
mod p>
Засоби
модульного ПРГ-а в ТП h2>
ТП, будучи
прообразом мови парал. обчислень, підтримує стиль модульного
проектування. p>
Засоби ТП для
підтримки мод. прог-а наступні: p>
1.Междумольная інформаційний зв'язок в П. реалізується
кака і в інших мовах прог-а, через загальні змінні. Для цього в пов'язуваних
модулях після розділу domains, у якій описує прийоми, кот. описуються в
різних модулях. p>
2.Актуалізація кожного модуля проводиться
шляхом виклику відповідного правила, кот. д.б.н. відомо в усіх зв'язують
модулях у роздiлi global predicates. p>
3.Ср-ва обр-ки модульних програм. p>
3.1.Іспользованіе предиката include "ім'я
програмного файлу ". p>
include --
використовується в тому випадку, коли до поточній програмі на рівні програмного
модуля. p>
Ланцюжок модулів
м.б. як завгодно довгою, але не д.б.н. циклів. p>
"ім'я прогр.
файлу "м. містити маршрут знайти файл на диску. p>
4.project "ім'я файлу-проекту" p>
Ця дірректіва
д.б.н. записана 1-й в тих модулях, кот. необхідно об'єднати в 1-й завантажувальний
модуль з ім'ям файлу-проекту. За аналогам з розробками Borland, всі модулі,
об'їду. в проект, компілюється окремо, а зв'язок відбувається на рівні об'єктних
модулів. p>
Список
літератури h2>
Для підготовки
даної роботи були використані матеріали з сайту http://www.parny.by.ru/
p>