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