Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву
Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Общие правила работы с файлами на внешних носителяхСодержание книги
Поиск на нашем сайте В системе Турбо-Пролог имеются предикаты для работы с файлами в целом: deletefile(<имя_файла>) - уничтожает файл <имя_файла>;(<имя_файла>) - сохраняет на диске утверждения динамической базы данных; renamefile(<старое_имя_файла>,<новое_имя_файла>) - переименование файла; existfile(<имя_файла>) - тест на наличие файла с данным именем. Предикат успешен в случае, если файл с именем, заданным аргументом <имя_файла>, присутствует в директории;(<файловая_переменная>) - предикат сбрасывает содержимое внутреннего буфера, отведенного для данного устройства записи. disk(<путь>) - выбор дисковода и пути доступа: если параметр <путь> является константой или переменной, которой присвоен корректный путь доступа, то заданный с его помощью каталог становится текущим. Если же переменная <путь> не означена, то данный предикат присваивает ей путь доступа к текущей директории. dir(<путь>,<шаблон>,<имя_файла>) - выдача списка файлов каталога. Переменной <путь> должен быть присвоен корректный путь доступа, текстовая переменная <шаблон> задает шаблон группы файлов, представляющей интерес. Данный предикат выдает каталог имен файлов подходящих под заданный шаблон; вы можете выбрать среди них нужный и нажать Enter. Имя файла будет присвоено переменной <имя_файла>. Так, в приведенном выше примере программы работы с БД в оперативной памяти правило reaction(6) сохранения БД в файле на диске можно заменить (добавив соответствующие описания) следующей группой правил. reaction('6'):-savedb,nl,menu. .:- write("Введите имя файла"), readln(Fname), rwrite(Fname).(""):- disk(Dir),dir(Dir,"*.dba",Fname1),save(Fname1).(Fname):- existfile(Fname), write("Файл с таким именем уже существует. Перезаписать (y/n)?"), nl, readchar(Yes), rwr(Yes, Fname).(Fname):- not(existfile(Fname)), save(Fname).('y',Fname):-save(Fname).('n',_):- write("Enter new filename"), readln(Fname1),(Fname1).('Y',Fname):-rwr('y',Fname).('N',Fname):-rwr('n',Fname). Здесь правило rwrite предназначено для определения имени файла, и сохранения в нем данных из базы. При этом если введено имя уже существующего файла, будет выдан запрос о перезаписи с уничтожением прежней информации (предикат rwr), а если имя файла введено не было, программа предоставит возможность выбора имени из списка (предикат dir). Кроме того, перед созданием новой БД было бы неплохо вывести запрос о сохранении уже имеющихся результатов. Для чего reaction(1) заменяем следующей правил. reaction('1'):- write("Сохранить изменения (y/n)?"), readchar(Yes), nl, savequation1(Yes), nl, deldb,.('n').('N').('y'):-savequation1('Y').('Y'):-savedb.(_):-write("Нажмите, пожалуйста, y или n"),(Yes), nl, savequation1(Yes). Здесь предикат savequation1 задает реакцию на ответ пользователя на запрос о сохранении имеющихся данных. Очевидно, что такой запрос можно включить и в правило reaction(2) перед загрузкой новой БД и в правило reaction(7) перед окончанием работы программы. reaction('2'):- disk(Dir),dir(Dir,"*.dba",Fname),, write("Сохранить изменения (y/n)?"), readchar(Yes),nl, savequation1(Yes), nl,(Fname), menu.('7'):- write("Сохранить изменения (y/n)?"),(Yes), nl, savequation1(Yes),nl. Помимо перечисленных предикатов Турбо-Пролог также поддерживает предикаты чтения информации из файла, записи в файл, модификации файла и тому подобные. Однако для того чтобы использовать в программе такие предикаты, необходимо ее снабдить описанием файлового домена. Описание файлового домена
Описание одного файлового домена с именем datafile выглядит как= datafile Это описание отличается от привычного описания типа= symbol, где name является именем домена, а symbol - стандартным типом доменов Турбо-Пролога. . При описании файловых доменов, стандартный тип домена file задается по левую сторону от знака равенства, а имя домена datafile - по правую. . datafile, хоть и описывается как домен, но используется в программе (при записи правил) как символическое имя файла, то есть идентификатор, который в программе может быть логически отождествлен с любым DOS файлом. Это символическое имя называют также логическим именем файла. В описании file можно указывать несколько символических имен, но само описание должно быть единственным. Если в программе вводится несколько символических имен файлов, то они разделяются между собой точкой с запятой (;). Например, file = datafile1; datafile2; datafile3 Это объявление декларирует три символических имени для последующего их отождествления с реальными DOS файлами.
|
||
|
Последнее изменение этой страницы: 2020-03-14; просмотров: 178; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 216.73.217.21 (0.005 с.) |