Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь КАТЕГОРИИ: АрхеологияБиология Генетика География Информатика История Логика Маркетинг Математика Менеджмент Механика Педагогика Религия Социология Технологии Физика Философия Финансы Химия Экология ТОП 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; просмотров: 95; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 52.14.253.170 (0.005 с.) |