Инструменты пользователя

Инструменты сайта


examination:flp:question53

Содержание

eof

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

 eof(SymbolicFileName) % (i)

eof выдает ошибку во время выполнения, если файл был открыт с правами только на запись. Обратите внимание, что предикат не придает особого значения символу конца файла DOS (комбинация клавиш Ctrl+Z).

Пример, как предикат eof можно использовать для определения предиката repfile, который полезен при работе с файлами, repfile генерирует точку возврата до тех пока не будет достигнут конец файла.

   
 predicates
    repfile(FILE)
 clauses
    repflie(_). 
    repfile(F) :-
       not(eof(F)),
       repfile(F).
   Следующая программа преобразует один файл в другом все буквы которого являются заглавными. 
 domains
    file=input; output
 predicates
    convert_file
    repfile(FILE)
 clauses
    convert_file:-
       repfile(input),
       readln(Ln), % Перевод букв строки в заглавные
       upper_lower(LnInUpper,Ln) ,
       write(LnInUpper),nl,
       fail.
   convert_file.
   repfile(_).
   repfile(F):-
      not(eof(F)),
      repfile(F).
 goal
   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).
  

existfile

Предикат existfile выполняется успешно, если файл OSFileName будет найден. Формат его следующий:

 existfile(OSFileName) % (i)

Предикат OSFileName может содержать каталог, а само имя может содержать знаки подстановки, как c:\psys\*.cfg. Предикат existfile завершается неуспешно, если имя файла не найдено в обозначенном пути каталога. Однако, заметьте, несмотря на то, что existfile находит все файлы, включая файлы с установленными атрибутами «system» (Системный) и «hidden» (Скрытый), он не находит каталоги.

Для проверки того, что файл присутствует на диске (прежде чем открывать его), вы можете воспользоваться:

 open(File, Name):-
    existfile(Name), 
    !,
    openread(File,Name).
 open(_, Name):-
    writeName("Error: the file",Name," is not found").

exp

Функция ехр возвращает значение е в степени значения, с которым связано X.

 ехр(Х) % (i)

Выражение Z=ехр(Х) ставит в соответствие Z (если оно свободно) результат, или возвратит успех/неуспех, если Z уже определено. Например:

 Z=ехр(2.5) %  Z будет равно  12.182493961
examination/flp/question53.txt · Последние изменения: 2014/01/15 08:17 (внешнее изменение)