SlideShare une entreprise Scribd logo
1  sur  14
Télécharger pour lire hors ligne
ФАЙЛИ: ЗАПИС ТА ЧИТАННЯ
Лекція 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
згенерує:

Contenu connexe

Tendances (17)

6 10
6 106 10
6 10
 
5 клас урок 5
5 клас урок 55 клас урок 5
5 клас урок 5
 
Файлова система. Файл
Файлова система. ФайлФайлова система. Файл
Файлова система. Файл
 
Ntfs &amp; fat32
Ntfs &amp; fat32Ntfs &amp; fat32
Ntfs &amp; fat32
 
Файлові системи NTFS і FAT
Файлові системи NTFS і FATФайлові системи NTFS і FAT
Файлові системи NTFS і FAT
 
презентація
презентаціяпрезентація
презентація
 
урок 9. файлова система та її об'єкти
урок 9. файлова система та її об'єктиурок 9. файлова система та її об'єкти
урок 9. файлова система та її об'єкти
 
Інформатика-6. Урок 10
Інформатика-6. Урок 10Інформатика-6. Урок 10
Інформатика-6. Урок 10
 
6 клас Урок 9 10-11-12 робота з об'єктами файлової системи
6 клас Урок 9 10-11-12 робота з об'єктами файлової системи6 клас Урок 9 10-11-12 робота з об'єктами файлової системи
6 клас Урок 9 10-11-12 робота з об'єктами файлової системи
 
5 клас урок 7
5 клас урок 75 клас урок 7
5 клас урок 7
 
урок2 файли
урок2 файли урок2 файли
урок2 файли
 
лабораторна робота №3
лабораторна робота №3лабораторна робота №3
лабораторна робота №3
 
урок 3
урок 3урок 3
урок 3
 
5 клас урок 6
5 клас урок 65 клас урок 6
5 клас урок 6
 
урок 8
урок 8урок 8
урок 8
 
програмування мовою паскаль
програмування мовою паскальпрограмування мовою паскаль
програмування мовою паскаль
 
13 2
13 213 2
13 2
 

En vedette (8)

Lect 6 prolog
Lect 6 prologLect 6 prolog
Lect 6 prolog
 
Lect ai 2 nn
Lect ai 2 nnLect ai 2 nn
Lect ai 2 nn
 
Lect 2 prolog
Lect 2 prologLect 2 prolog
Lect 2 prolog
 
Lect 1 intro
Lect 1 introLect 1 intro
Lect 1 intro
 
Lect 3 4 prolog
Lect 3 4 prologLect 3 4 prolog
Lect 3 4 prolog
 
Lect аі 2 n net p2
Lect аі 2 n net p2Lect аі 2 n net p2
Lect аі 2 n net p2
 
Sql db
Sql dbSql db
Sql db
 
Lect ai 3 ga
Lect ai 3  gaLect ai 3  ga
Lect ai 3 ga
 

Similaire à Lect 5 prolog

5 клас урок 13
5 клас урок 135 клас урок 13
5 клас урок 13Tkachov1957
 
7Файлові операції у С++.pptx
7Файлові операції у С++.pptx7Файлові операції у С++.pptx
7Файлові операції у С++.pptxssuser3b34ba
 
урок 13 файли та папки
урок 13 файли та папкиурок 13 файли та папки
урок 13 файли та папкиHelen Pat
 
5 клас урок 13 файли та папки
5  клас урок 13 файли та папки 5  клас урок 13 файли та папки
5 клас урок 13 файли та папки Helen Pat
 
5 клас урок 5
5 клас урок 55 клас урок 5
5 клас урок 5pupilsShostka
 
6 клас урок 9. Поняття файлової системи
6 клас урок 9. Поняття файлової системи6 клас урок 9. Поняття файлової системи
6 клас урок 9. Поняття файлової системиЮлія Артюх
 
Пошук файлів і папок
Пошук файлів і папокПошук файлів і папок
Пошук файлів і папокTamara Emec
 
файли та папки 6 клас
файли та папки 6 класфайли та папки 6 клас
файли та папки 6 класIllariya
 
стисннення та арх
стисннення та архстисннення та арх
стисннення та архAnn Eres
 
урок 10 6 клас сл ш
урок 10 6 клас сл шурок 10 6 клас сл ш
урок 10 6 клас сл шHelen Pata
 
Razdel14
Razdel14Razdel14
Razdel14navihc
 
5 клас урок 9 14 робочий стіл та його об'єкти. файли ,папки
5 клас урок 9 14 робочий стіл та його об'єкти. файли ,папки5 клас урок 9 14 робочий стіл та його об'єкти. файли ,папки
5 клас урок 9 14 робочий стіл та його об'єкти. файли ,папкиkissoli
 
6 клас 10 урок. Опреції над об'єктами файлової системи.
6 клас 10 урок. Опреції над об'єктами файлової системи.6 клас 10 урок. Опреції над об'єктами файлової системи.
6 клас 10 урок. Опреції над об'єктами файлової системи.StAlKeRoV
 

Similaire à Lect 5 prolog (20)

5 клас урок 13
5 клас урок 135 клас урок 13
5 клас урок 13
 
Лекція №12
Лекція №12Лекція №12
Лекція №12
 
7Файлові операції у С++.pptx
7Файлові операції у С++.pptx7Файлові операції у С++.pptx
7Файлові операції у С++.pptx
 
урок 13 файли та папки
урок 13 файли та папкиурок 13 файли та папки
урок 13 файли та папки
 
5 клас урок 13 файли та папки
5  клас урок 13 файли та папки 5  клас урок 13 файли та папки
5 клас урок 13 файли та папки
 
5 клас урок 6
5 клас урок 65 клас урок 6
5 клас урок 6
 
5 клас урок 5
5 клас урок 55 клас урок 5
5 клас урок 5
 
6 клас урок 9. Поняття файлової системи
6 клас урок 9. Поняття файлової системи6 клас урок 9. Поняття файлової системи
6 клас урок 9. Поняття файлової системи
 
2 9
2 92 9
2 9
 
Пошук файлів і папок
Пошук файлів і папокПошук файлів і папок
Пошук файлів і папок
 
+4 faylovi operaciji_u_s2000
+4 faylovi operaciji_u_s2000+4 faylovi operaciji_u_s2000
+4 faylovi operaciji_u_s2000
 
файли та папки 6 клас
файли та папки 6 класфайли та папки 6 клас
файли та папки 6 клас
 
Урок 8. Стиснення і архівування даних
Урок 8. Стиснення і архівування данихУрок 8. Стиснення і архівування даних
Урок 8. Стиснення і архівування даних
 
стисннення та арх
стисннення та архстисннення та арх
стисннення та арх
 
урок 10 6 клас сл ш
урок 10 6 клас сл шурок 10 6 клас сл ш
урок 10 6 клас сл ш
 
Razdel14
Razdel14Razdel14
Razdel14
 
5 клас урок 9 14 робочий стіл та його об'єкти. файли ,папки
5 клас урок 9 14 робочий стіл та його об'єкти. файли ,папки5 клас урок 9 14 робочий стіл та його об'єкти. файли ,папки
5 клас урок 9 14 робочий стіл та його об'єкти. файли ,папки
 
6 клас 10 урок. Опреції над об'єктами файлової системи.
6 клас 10 урок. Опреції над об'єктами файлової системи.6 клас 10 урок. Опреції над об'єктами файлової системи.
6 клас 10 урок. Опреції над об'єктами файлової системи.
 
9 klas urok_9_tema_ss
9 klas urok_9_tema_ss9 klas urok_9_tema_ss
9 klas urok_9_tema_ss
 
Razdel14
Razdel14Razdel14
Razdel14
 

Plus de Halyna Melnyk (9)

Sql global
Sql globalSql global
Sql global
 
Sql pl
Sql plSql pl
Sql pl
 
Sql granting
Sql grantingSql granting
Sql granting
 
Sql view
Sql viewSql view
Sql view
 
Sql select 3
Sql select 3Sql select 3
Sql select 3
 
Sql select 2
Sql select 2Sql select 2
Sql select 2
 
Sql select 1
Sql select 1Sql select 1
Sql select 1
 
Sql dml
Sql dmlSql dml
Sql dml
 
Sql ddl
Sql ddlSql ddl
Sql ddl
 

Dernier

Роберт Шеклі. Біографія письменника-фантаста
Роберт Шеклі. Біографія письменника-фантастаРоберт Шеклі. Біографія письменника-фантаста
Роберт Шеклі. Біографія письменника-фантастаAdriana Himinets
 
Проєкт «ІТ.UA: народжені в Україні». Єгор Анчишкін
Проєкт «ІТ.UA: народжені в Україні». Єгор Анчишкін Проєкт «ІТ.UA: народжені в Україні». Єгор Анчишкін
Проєкт «ІТ.UA: народжені в Україні». Єгор Анчишкін НБУ для дітей
 
Критерії самоцінювання Іноземні мови.pdf
Критерії самоцінювання  Іноземні мови.pdfКритерії самоцінювання  Іноземні мови.pdf
Критерії самоцінювання Іноземні мови.pdfolha1koval
 
критерії сооцінювання і взаємооцінюваннятехнології.pdf
критерії сооцінювання і взаємооцінюваннятехнології.pdfкритерії сооцінювання і взаємооцінюваннятехнології.pdf
критерії сооцінювання і взаємооцінюваннятехнології.pdfolha1koval
 
освітня програма 2023-2024 .
освітня програма  2023-2024                    .освітня програма  2023-2024                    .
освітня програма 2023-2024 .zaskalko111
 
ПОРТУГАЛІЯ ТА ІСПАНІЯ В ПЕРШІЙ ТРЕТИНІ хх СТ.pptx
ПОРТУГАЛІЯ ТА ІСПАНІЯ В ПЕРШІЙ ТРЕТИНІ хх СТ.pptxПОРТУГАЛІЯ ТА ІСПАНІЯ В ПЕРШІЙ ТРЕТИНІ хх СТ.pptx
ПОРТУГАЛІЯ ТА ІСПАНІЯ В ПЕРШІЙ ТРЕТИНІ хх СТ.pptxAlexanderSholk
 
Kryterii otciniuvannia navchalnykh dosiahnen
Kryterii otciniuvannia navchalnykh dosiahnenKryterii otciniuvannia navchalnykh dosiahnen
Kryterii otciniuvannia navchalnykh dosiahnenolha1koval
 
Презентація роботи Осипенківської ЗОШ 2023-2024.pptx
Презентація роботи Осипенківської ЗОШ 2023-2024.pptxПрезентація роботи Осипенківської ЗОШ 2023-2024.pptx
Презентація роботи Осипенківської ЗОШ 2023-2024.pptxssuserc6cee7
 
Луцький центр ПТО соціальний проєкт .pptx
Луцький центр ПТО соціальний проєкт .pptxЛуцький центр ПТО соціальний проєкт .pptx
Луцький центр ПТО соціальний проєкт .pptxhome
 
Автомат.звука с.інтегровані ігри для дітейpptx
Автомат.звука с.інтегровані ігри для дітейpptxАвтомат.звука с.інтегровані ігри для дітейpptx
Автомат.звука с.інтегровані ігри для дітейpptxvitalina6709
 
Черкаський художньо-технічний коледж оголошує про день відкритих дверей
Черкаський художньо-технічний коледж оголошує про день відкритих дверейЧеркаський художньо-технічний коледж оголошує про день відкритих дверей
Черкаський художньо-технічний коледж оголошує про день відкритих дверейvitaliyinformatik
 

Dernier (14)

Роберт Шеклі. Біографія письменника-фантаста
Роберт Шеклі. Біографія письменника-фантастаРоберт Шеклі. Біографія письменника-фантаста
Роберт Шеклі. Біографія письменника-фантаста
 
Проєкт «ІТ.UA: народжені в Україні». Єгор Анчишкін
Проєкт «ІТ.UA: народжені в Україні». Єгор Анчишкін Проєкт «ІТ.UA: народжені в Україні». Єгор Анчишкін
Проєкт «ІТ.UA: народжені в Україні». Єгор Анчишкін
 
Критерії самоцінювання Іноземні мови.pdf
Критерії самоцінювання  Іноземні мови.pdfКритерії самоцінювання  Іноземні мови.pdf
Критерії самоцінювання Іноземні мови.pdf
 
критерії сооцінювання і взаємооцінюваннятехнології.pdf
критерії сооцінювання і взаємооцінюваннятехнології.pdfкритерії сооцінювання і взаємооцінюваннятехнології.pdf
критерії сооцінювання і взаємооцінюваннятехнології.pdf
 
17.04.2024.2.docx17.04.2024.2.docx17.04.2024.2.docx
17.04.2024.2.docx17.04.2024.2.docx17.04.2024.2.docx17.04.2024.2.docx17.04.2024.2.docx17.04.2024.2.docx
17.04.2024.2.docx17.04.2024.2.docx17.04.2024.2.docx
 
освітня програма 2023-2024 .
освітня програма  2023-2024                    .освітня програма  2023-2024                    .
освітня програма 2023-2024 .
 
ПОРТУГАЛІЯ ТА ІСПАНІЯ В ПЕРШІЙ ТРЕТИНІ хх СТ.pptx
ПОРТУГАЛІЯ ТА ІСПАНІЯ В ПЕРШІЙ ТРЕТИНІ хх СТ.pptxПОРТУГАЛІЯ ТА ІСПАНІЯ В ПЕРШІЙ ТРЕТИНІ хх СТ.pptx
ПОРТУГАЛІЯ ТА ІСПАНІЯ В ПЕРШІЙ ТРЕТИНІ хх СТ.pptx
 
Kryterii otciniuvannia navchalnykh dosiahnen
Kryterii otciniuvannia navchalnykh dosiahnenKryterii otciniuvannia navchalnykh dosiahnen
Kryterii otciniuvannia navchalnykh dosiahnen
 
17.04.2024.1.docx17.04.2024.1.docx17.04.2024.1.docx
17.04.2024.1.docx17.04.2024.1.docx17.04.2024.1.docx17.04.2024.1.docx17.04.2024.1.docx17.04.2024.1.docx
17.04.2024.1.docx17.04.2024.1.docx17.04.2024.1.docx
 
Презентація роботи Осипенківської ЗОШ 2023-2024.pptx
Презентація роботи Осипенківської ЗОШ 2023-2024.pptxПрезентація роботи Осипенківської ЗОШ 2023-2024.pptx
Презентація роботи Осипенківської ЗОШ 2023-2024.pptx
 
Луцький центр ПТО соціальний проєкт .pptx
Луцький центр ПТО соціальний проєкт .pptxЛуцький центр ПТО соціальний проєкт .pptx
Луцький центр ПТО соціальний проєкт .pptx
 
Віртуальна виставка «Аграрна наука України у виданнях: історичний аспект»
Віртуальна виставка «Аграрна наука України у виданнях: історичний аспект»Віртуальна виставка «Аграрна наука України у виданнях: історичний аспект»
Віртуальна виставка «Аграрна наука України у виданнях: історичний аспект»
 
Автомат.звука с.інтегровані ігри для дітейpptx
Автомат.звука с.інтегровані ігри для дітейpptxАвтомат.звука с.інтегровані ігри для дітейpptx
Автомат.звука с.інтегровані ігри для дітейpptx
 
Черкаський художньо-технічний коледж оголошує про день відкритих дверей
Черкаський художньо-технічний коледж оголошує про день відкритих дверейЧеркаський художньо-технічний коледж оголошує про день відкритих дверей
Черкаський художньо-технічний коледж оголошує про день відкритих дверей
 

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 згенерує: