59
Visual Prolog file домен хабарандырылған, SymbolicFileName
бейнелі түрде аты бойынша ашық файлға айналады. Егер файл ашылмаса,
Visual Prolog қателек туралы хабарландырады
Предикат openwrite/2
Предикат openwrite жазу үшін OSFileName файл ашады, келсі
формат қолдана:
openwrite(SymbolicFileName, OSFileName) % (i, i)
Егер файл болса, онда оны жояды. Басқа жағдайда Visual Prolog жаңа
файлды құрады жəне оның тиiстi тiзбесiнде сыйғызып салады. Егер файл
жасалмаса, Visual Prolog қателiк туралы хабарды бередi.
Предикат openappend/2
Предикат openappend файлдың соңына жазу үшін OSFileName файл
ашады
Сонымен бiргекелесі формат қолданылады:
openappend(SymbolicFileName, OSFileName) % (i, i)
Егер файл жазуға ашыла алмаса, Visual Prolog қателiк туралы
хабарландырады.
Предикат openmodify/2
Предикат openmodify жазу мен оқу үшін OSFileName ашады, Егер
файл болса, ол қайта жазылмайды, openmodify келесі формат:
openmodify (SymbolicFileName, OSFileName) % (i, i)
Егер жүйе OSFileName аша алмаса, Visual Prolog қателiк туралы
хабарландырады. Оpenmodify
Предикат кез келген рұқсаты бар файлының толтырулары үшiн
стандарттық filepos.
предикатпен бiрге қолданыла алады
Предикат filemode/2
предикат filemode мəтіндік режимде файлды ашқан кезде предикат
filemode мəтiндiк немесе екiлiк режимде көрcетiлген файлды орнатады,
келесі формат қолдана:
filemode(SymbolicFileName, FileMode) % (i, i)
Если FileMode = 0, SymbolicFileName файл екiлiк режимге келеді
если FileMode = 1, онда ол мəтіндік режимге келеді.
Мəтіндік режимде жазғанда жана жөлдарға "Келесi жолға өту" /
"Енгiзу пернесi" символдар қосылады , ал оқығанда бұл екі символдар
жаңа жол сияқты түсiндiрiледі
Carriage return (возврат каретки) = ASCII 13
Line feed (перевод строки) = ASCII 10
Екілік режимде ешқандай да өзгерістер болмайды
60
Екілік файлды оқу үшін сəз тек қана readchar немесе екiлiк
файлдарға рұқсат үшiн предикаттар. кқолданады
.
Предикат closefile/1
closefile предикат белгіленген файлды жабады, ол келесі
форматты қолданады:
closefile(SymbolicFileName) % (i)
Егер файлы ашық болмаса бұл предикатты əрдайым ойдағыдай бiтедi
Предикат readdevice/1
readdevice предикат readdevice current_read_device (оқудын ағымды
құрылымы) қайта анықтайды немесе оған атын қайтарады .
Предикаттың форматы
readdevice(SymbolicFileName)
% (i), (о)
Предикат writedevice/1
readdevice предикат оқудын ағымды құрылымын қайта анықтайды,
егер SymbolicFileName айнымалысы анықталса жəне файл оқуға ашық
болса. Егер SymbolicFileName айнымалысы бос болса, онда readdevice
оқудын белсенді ағымды құрылымның атын береді
Предикат writedevice/1
writedevice предикат не тағайындайды немесе current write_device
(жазудың ағымды құрылымы) ат алуға рұқсат береді. Оның форматты
writedevice(SymbolicFileName)
% (i), (о)
Егер көрcетiлген файл жазғанға немесе қосқанға ашылса, writedevice
предикат жазу құрылымын қайта анықтайды. Егер SymbolicFileName
айнымалысы бос болса, онда writedevice жазудың белсенді ағымды
құрылымның атын береді.
Файлды жабуының, файлға жазуы жəне файлды ашуы үлгілер
1. Келесi тiзбектігі жазу үшiн MYDATA.FILнiң файлды ашады,
writedeviceнiң
екi
предикаттарының
арасындағы
тудырылатыны
операторлармен,содан соң барлық шығаруды ы MYDATA.FILнiң файлға бұл
destinationнiң file доменiнiң сипаттама пайда болатын бейнелi түрде атына
сəйкес келетіне бағыттайды,
domains
file = destination
goal
openwrite(destination, "MYDATA.FIL"),
writedevice(OldOut),
%Шығарудын ағымды құрылымы аламыз
writedevice(destination), % Файлға шығаруды қайта жібереміз
writedevice(OldOut), %Шығарудын ағымды құрылымын налпына келтiремiз
2.
Бағдарлама ch2е09.рго (листинг 1) символдарды тіркелген
клавиатурада TRYFILE.ONE файлға ағымдағы дисктегі салады, read и
write стандарттык предикаттарды қолданады
61
Тіркелген символдар дисплейдің экранына шығарылмайды. Сiздере
жақсы жаттығу болады, егер осы символдарды экранға шығару
бағдарламаны жазғанда. Клавишаны басқанда файл жабылады.
Бағдарлама ch12e09.pro
domains
file = myfile
predicates
readloop - procedure ()
run - procedure ()
clauses
readloop:-
readchar(X),
X<>'#',!,
write(X),
readloop.
readloop.
run:-
write("This program reads your input and writes it to"),nl,
write("tryfile.one\n"),
write("For stop press #"),nl,
openwrite(myfile,"tryfile.one"),
writedevice(myfile),
readloop,
closefile(myfile),
writedevice(screen),
write("Your input has been transferred to the file tryfile.one"),nl.
goal
run.
Стандарттык еңгізу/ шығару ды қайта анықтауы
file доменда stdin, stdout, stderr үш қосымша опциялар бар. Бұл
файлдық ағындарының артықшылығы келесіде: сiз командалық жолында
стандарттык еңгізу / шығару қайта тағайындауға болады (кесте2)
Кесте
2. Файлдық
ағындар
мен
сипаттамалар
•
stdin Стандарттык енгiзу, файл болып келеді, тек қана оқу үшiн. Бұл
(stdin ) readdeviceнiң клавиатуралары үндемеу бойынша stdin енгiзу
құрылымымен тағайындайды
•
. stdout Стандарттык шығару файл болып келеді, тек қана жазу үшiн.