Domains

in = file

GOAL: openread(in,"file.txt ").

Поскольку символ "\", обычно используемый для разделения имен каталогов, применяется в Турбо-Прологе для записи кодов символов, требуется использовать вместо одного обратного слэша два ("\\"). Например, чтобы указать путь "C:\Prolog\BIN", нужно записать строку "C:\\Prolog\\BIN".

Пример. Предложить замену для стандартного предиката openread.

Предикат, имеющий два аргумента, должен открывать существующий файл на чтение, в противном случае выводить сообщение о том, что файл с таким именем не найден. Первый аргумент - внутреннее символическое имя файла, второй — строка, представляющая внешнее дисковое имя файла. Новая модификация предиката должна быть корректной и завершаться успехом в любом случае, вне зависимости от того, наличествует открываемый файл или отсутствует.

openFile(F,N):– existfile(N),!, /* проверяем

существование файла с именем N */

openread(F,N). /* связать внешний файл с именем N\

с файловой переменной F и открыть на чтение */

openFile(_,N):– write("Файл с именем ",N," не найден!").

/* выдать сообщение, если предикат existfile не выполнился */

Аналогичным образом можно модифицировать предикаты openappend и openmodify. Предикат openwrite можно модифицировать таким образом, чтобы при попытке открыть существующий файл на запись предикат вначале выдавал бы предупреждение о том, что содержимое этого файла будет уничтожено.

Пример. Предикат, выводящий содержимое произвольного файла на экран.

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

DOMAINS

file = f /* f — внутреннее имя файла */

PREDICATES

Write_file(file)

WriteFile(string)

GOAL

write("Введите имя файла: "),readln(F_N),

/* считать название файла в переменную F_N */

WriteFile(F_N).

CLAUSES

write_file(f):– not(eof(f)),!, /* если файл f еще не закончился */

readchar(C), /* читать символ из файла */

write(C," "), /* вывод символа на экран*/

write_file(f). /* продолжить процесс */


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: