Республикасы білім жəне ғылым министрлігі



жүктеу 1,43 Mb.
Pdf просмотр
бет25/28
Дата04.01.2020
өлшемі1,43 Mb.
#25855
1   ...   20   21   22   23   24   25   26   27   28

 

62

Бұл (stdout ) writedeviceнiң терминалының перделерiн үндеу бойынша stdoutт 



енгiзу құрылымымен тағайындайды  

 



 

stderr  Стандарттык  шығару  қателер    файл    болып  келеді,    тек  қана 

жазу    үшiнге  қол  жететiн.  Үндеу  бойынша  бұл  терминалдын  экраны. 

Writedevice  (stderr)    қателерi  туралы  stderr.шығару  үшiн  құрылымен 

тағайындайды. 

 

Файлдармен  жұмыс  істеу 



Бұл  бөлiмде  файлдармен    жұмыс  істеу    үшiн  бiрнеше  басқа  предикаттар 

сипаттаймыз  Бұл  келесі  предикаттар  filepos,  eof,  flush,  existfile,  deletefile, 

renamefile, disk и copyfile. 

 

Мысалдардың бірнешеуін келтірейік

1.    Келесі  кіріспе  тізбегіне  somefile.pro  файлға  Text  мəні  жазып 

алынады(myfile  сияқты  айналып  жатыр),  100  позициядан  бастап  файлдын 

бастауынан бойынша. 

Text = "A text to be written in the file",  

 

openmodifу(myfile,   "somefile.pro"),  



writedevice(myfile), 

filepos(myfile,   100,   0),  

write(Text),  

closeflie(myfile). 

Листинг  бағдарламасында  бұл  істеп  жасалынғандарды,  байттың 

артында  байт  файлдың  ішіндегісін  қолданып  filepos  тексеруге  болады.  Бұл 

бағдарлама  файлдың  атын  сұрайды,  файлдың  позициялардың  ішіндегісін 

содан  соңын  көрсетіп  отыр,  позициялардың  нөмерлері  клавиатурамен 

жүргізіліп отырады. 

2 листинг. ch12e09.pro бағдарламасы 

 

domains 


  file = input 

 

predicates 



  inspect_positions(file) - determ (i) 

 

clauses 



  inspect_positions(UserInput):- 

 

readdevice(UserInput), 



 

nl,write("Position No? "), 

 

readln(X), 



 

term_str(ulong,Posn,X), 

 

readdevice(input), 



 

filepos(input,Posn,0), 




 

63

 



readchar(Y),nl, 

 

write("Char is: ",Y), 



 

inspect_positions(UserInput). 

 

goal 


  write("Which file do you want to work with ?"),nl, 

  readln(FileName), 

  openread(input, FileName), 

  readdevice(UserInput), 

  inspect_positions(UserInput).  

 

Eof/1 предикаты 

eof  перидикатын  тексеріп  жатыр,  процессте  алған  оқуларға  файлдың 

соңымен  позиция  келіп  жатыр.    Мұндай    жағдайда  eof  табысты  болады. 

Қарсы  жағдайда  ол  жағымсыз  жағдайға  да  шыдайды.  Eof  перидикатының 

түрлері:. 

eof(SymbolicFileName)      % (i) 

Егер  файл  құқықтармен  орындаулар  уақыты  тек  қана  жазуға  ашық 

болса    қатені  eof  беріп  береді.  Назар  аудараыыңыз,  предикат  (  +   

комбинациялы пернелер) DOS файлдың аяқталуының нышанына ерекше мəн 

туғызбайды. 

Предикат  пайдалы  файлдармен  жұмыс  істеуінде    предикатты  анықтау 

үшін  қолдануға  пайдалы,  мысалы,  файлдың  аяғына  жете  болмайтын  кезде 

Вile нүктені сол мезгілдерге дейін қайтарады.  

Предикат repfile predicates файлдармен жұмыста  

repfile(FILE) 

clauses 

repfile(_).  

repfile(F):-not (eof (F)), repfile(F). 

 

Келесі  бағдарламада  басқа  біреу  файл  өзгертеді,  барлық  əріптер 



бастапқы болып  келеді. Листинг 3. Программа ch12e11.pro 

omains 


  file = input; output 

predicates 

  convert_file - procedure () 

  repfile(FILE) - nondeterm (i) 

  run - determ () 

clauses 


  convert_file :- 

 

repfile(input), 



 

readln(Ln), 

 

upper_lower(LnInUpper,Ln),          /* converts the string to uppercase */ 



 

write(LnInUpper),nl, 

 

fail. 



 

64

  convert_file. 



  repfile(_). 

  repfile(F):- 

 

not(eof(F)), 



 

repfile(F). 

  run:- 

 

write("Which file do you want convert ?"), 



 

readln(InputFileName),nl, 

 

write("What is the name of the output file ?"), 



 

readln(OutputFileName),nl, 

 

openread(input, InputFileName), 



 

readdevice(input), 

 

openwrite(output, OutputFileName), 



 

writedevice(output), 

 

convert_file, 



 

closefile(input), 

 

closefile(output). 



goal 

  run. 


 

Предикат flush/1 

Передикат    аталған  файлға  ішкі  буферлер  flush  ішіндегісін  жазып 

отырады. 

flush(SymbolicFileName) 

%   (i) 


Ол буфер  «барлық құлату жүйесін» сұрап жатыр. 

 

Предикат existtile/1 



Егер      передикат  existfile  программасын  табысты  орындаса,  онда 

OSFileName    файлы  табылады.  Предикат  OSFileName  тізбе  бола  алады,  ал  

сияқты,  \psys\ *.cfg аты  алмастырулар  таңбалары  бола  алады:  Егер  файлдың 

аты  тізбеге  белгі  қойылған  жолда  емес  предикат  жетіспеушілігі  existfile  те 

бітіп  жатыр.  Бірақ,  байқаң,  "system"  (Жүйелік)  қойылған  атрибуттармен 

барлық  файлдарды,  файлдарды  қоса  existfile  де  табады,  жəне  "hidden"  де 

(Бүркеме),  ол  тізбелерді  таппайды.  Суреттеп  айтылған  төмендегі  тізбелерді 

іздестірулер предикаттардың қолдануымен істелінген болу мүмкін. 

Тексеру  үшін    файл  дискіде  болған  жағдайда  ғана  (оны  ашпастан 

алдын) пайдалана аласыз open(File, Name) :- 

existfile(Name), 

openread(File, Name).  

open(_, Name) :- 

write("Error: the file ", Name," is not found"). 

 

Предикат searchfile/3 



Предикат тізім жолдарында файлды табу үшін searchfile қолданылады. 


жүктеу 1,43 Mb.

Достарыңызбен бөлісу:
1   ...   20   21   22   23   24   25   26   27   28




©g.engime.org 2025
әкімшілігінің қараңыз

    Басты бет
рсетілетін қызмет
халықаралық қаржы
Астана халықаралық
қызмет регламенті
бекіту туралы
туралы ережені
орталығы туралы
субсидиялау мемлекеттік
кеңес туралы
ніндегі кеңес
орталығын басқару
қаржы орталығын
қаржы орталығы
құрамын бекіту
неркәсіптік кешен
міндетті құпия
болуына ерікті
тексерілу мемлекеттік
медициналық тексерілу
құпия медициналық
ерікті анонимді
Бастауыш тәлім
қатысуға жолдамалар
қызметшілері арасындағы
академиялық демалыс
алушыларға академиялық
білім алушыларға
ұйымдарында білім
туралы хабарландыру
конкурс туралы
мемлекеттік қызметшілері
мемлекеттік әкімшілік
органдардың мемлекеттік
мемлекеттік органдардың
барлық мемлекеттік
арналған барлық
орналасуға арналған
лауазымына орналасуға
әкімшілік лауазымына
инфекцияның болуына
жәрдемдесудің белсенді
шараларына қатысуға
саласындағы дайындаушы
ленген қосылған
шегінде бюджетке
салығы шегінде
есептелген қосылған
ұйымдарға есептелген
дайындаушы ұйымдарға
кешен саласындағы
сомасын субсидиялау