logo
TurboProlog / Документация / TOM_1

Предикат eof/1

Предикат eof проверяет является ли позиция, полученная в процессе

чтения, концом файла. В этом случае eof успешна. В противном случае он

терпит неудачу. eof имеет вид:

eof (SymbolicFileName) /* (i) */

Пример

Предикат eof можно использовать для определения предиката repfile,

который полезен при работе с файлами. repfile генерирует точку возврата

до тех пор, пока не будет достигнут конец файла.

predicates

repfile(FILE)

clauses

repfile(_).

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

Следующая программа преобразует один файл в другой, все буквы кото-

рого являются прописными.

/* Program CH12EX11.PRO */

domains

file = input; output

predicates

convertfille

repfile(FILE)

goal

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

readln(InputFileName),

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

readln(OutputFileName),

openread (input,InputFileName),

readdevice(input),

openwrite (output,OutputFileName),

writedevice(output),

convertfile,

closefile(input),

closefile(output).

clauses

convertfile:-

repfile(input),

readln(Ln),

upper_lower(LnInUpper,Ln), /* перевод букв строки

в заглавные */

write(LnInUpper),nl,

fail.

convertfile.

repfile(_)

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