5.4.1. Запись в файлы
5.4.1. Запись в файлы
Для записи в файлы термов и литер могут быть использованы в точности те же самые предикаты, что обсуждались ранее Единственное различие состоит в том, что когда мы хотим записать данные в файл, то нам надо сменить текущий выходной поток данных так, чтобы им являлся файл, в который мы будем записывать данные, а не дисплей терминала. Текущий выходной поток данных изменяется с помощью предиката tell. Если X конкретизирована именем файла, которое должно быть атомом, то целевое утверждение tell(X) переключает текущий выходной поток данных таким образом, что любая операция записи (выполняемая с помощью write, put и других подобных предикатов) будет производиться в этот файл, а не на дисплей терминала. Целевое утверждение tell(X) можно согласовать лишь один раз. Точно так же при выполнении Прологом возврата за целевое утверждение tell не происходит восстановления прежнего текущего выходного потока данных. Наряду со сменой текущего выходного потока данных предикат tell в зависимости от ситуации выполняет также другие операции. В первый раз, когда программа обращается к tell с конкретным именем файла X, Пролог считает, что необходимо завести новый файл с этим именем. Поэтому если X конкретизирована некоторым именем файла и файл с таким именем уже существует, то все литеры, уже содержащиеся в этом файле, удаляются. Напротив, если файла с именем, являющимся значением X, не существует, то файл с таким именем будет создан. В обоих случаях файл считается открытым (для записи в него). Это значит, что каждая последующая запись в этот файл будет добавлять литеры в конец файла до тех пор, пока не появится явное указание, что запись в файл полностью завершена (пока файл не будет закрыт). С данного момента если будет сделана новая попытка записи в этот файл, то Пролог, как и прежде, будет считать, что необходимо писать новую версию этого файла. При попытке выполнить tell(X), когда переменная X не имеет конкретного значения или ее значение не является именем файла, возникает ошибка. Реакция Пролог-системы на возникающие ошибки зависит от конкретной реализации.
Предикат telling используется для определения имени файла, служащего текущим выходным потоком данных. Целевое утверждение telling(X) считается согласованным, если X имеет своим значением имя файла текущего выходного потока данных. Как вы, наверное, догадываетесь, если X неконкретизировано, то telling конкретизирует X атомом (именем файла), делающим это целевое утверждение верным.
Когда запись в файл полностью завершена, то выполнение предиката told оформит конец файла и закроет его (для вывода). Кроме того, в результате его выполнения текущим выходным потоком данных снова станет дисплей терминала. Таким образом, типичная последовательность целевых утверждений для записи в файл некоторой совокупности литер имеет вид
… tеll(фред), write(X), told,…
Если текущий выходной поток данных переключается на другой файл без использования told, то прежний файл не будет закрыт и останется доступным для записи в него. Это позволяет делать записи в файл с перерывами, как в следующем примере;
…tell (X), write(A), tell(user),write(B), tell(X), write(C), told.
Более 800 000 книг и аудиокниг! 📚
Получи 2 месяца Литрес Подписки в подарок и наслаждайся неограниченным чтением
ПОЛУЧИТЬ ПОДАРОКЧитайте также
Чтение и запись
Чтение и запись freadЧитает из открытого файла определенное количество символов.Синтаксис:string fread(int $f, int $numbytes)Читает из файла $f $numbytes символов и возвращает строку этих символов. После чтения указатель файла продвигается к следующему после прочитанного блока позициям. Если
18.3. Чтение и запись
18.3. Чтение и запись Создав маршрутизирующий сокет, процесс может отправлять ядру команды путем записи в этот сокет и считывать из него информацию от ядра. Существует 12 различных команд маршрутизации, 5 из которых могут быть запущены процессом. Они определяются в
19.2. Чтение и запись
19.2. Чтение и запись Все сообщения в сокете управления ключами должны иметь одинаковые заголовки, соответствующие листингу 19.1[1]. Сообщение может сопровождаться различными расширениями в зависимости от наличия дополнительной информации или необходимости ее
Запись
Запись Вставьте чистый компакт-диск для однократной или многократной записи в привод компакт-дисков. Щелкните мышью на кнопке Запись, расположенной на панели задач проигрывателя (рис. 3.23). Для записи компакт-диска можно составить свой список, а можно воспользоваться
5.4. Чтение файлов и запись в файлы
5.4. Чтение файлов и запись в файлы Предикаты, обсуждавшиеся в этой главе ранее, использовались для ввода (чтения) и вывода (записи) данных при обмене лишь с терминалом, но они могут быть использованы и в более общих ситуациях. В Пролог-системе определяется текущий входной
R.1.2 Запись синтаксиса
R.1.2 Запись синтаксиса В записи синтаксиса языка в этом руководстве синтаксические понятия обозначаются курсивом, а литеральные слова и символы шрифтом постоянной ширины. Варианты перечисляются на отдельных строках, за исключением тех немногих случаев, когда длинный
Запись макросов
Запись макросов К счастью, записывать макросы так же просто, как ложиться в постель. Тем более, что я собираюсь разложить здесь вам все по полочкам. Запуск средства записи макросов Запустить средство записи макросов можно одним из следующих способов.* Выбрать из меню
Запись макроса
Запись макроса Когда подготовительная работа завершена, переходите к записи макроса. После того как вы закроете окна назначения макроса кнопке панели быстрого доступа или клавишам, программа перейдет в режим записи макроса. Указатель при этом примет вид а кнопка в
Исходные файлы и выполняемые файлы
Исходные файлы и выполняемые файлы Наша замечательная программа, несмотря на свою лаконичность и простоту, для компьютера является совершенно бессмысленным набором символов, так как он "не понимает" директив типа #include или printf. Он понимает только специальный язык,
12.2. Запись информации в файлы и считывание информации из файлов
12.2. Запись информации в файлы и считывание информации из файлов Постановка задачи Требуется сохранить на диске информацию (например, текст, данные, изображения и
12.4. Запись CD/DVD из консоли
12.4. Запись CD/DVD из консоли Научиться использовать программы Brasero и Nautilus вы смогли бы и без моих наставлений. Так что же, место, занимаемое в книге этой главой, потрачено впустую? Нет, поскольку сейчас мы рассмотрим программы, предназначенные для записи CD/DVD-дисков из консоли.
3. Запись Синтаксиса
3. Запись Синтаксиса По используемым в данном руководстве синтаксическим првилам записи синтаксические категории выделяются курсивом а литеральные слова и символы шрифтом постоянной ширины. Алтернативные категории записываются на разных строках. Необзательный
Запись музыки
Запись музыки Музыкальные диски бывают, как правило, трех форматов:AudioCD — в качестве носителя данных выступает CD-диск. На диск можно записать до 80 минут аудиоинформации. Учитывая, что на AudioCD поместится около 20 песен (всего!), то предпочтительнее записывать на диск
Многоканальная запись
Многоканальная запись Суть метода многоканальной последовательной записи заключается в том, что ансамбль записывается частями (например, сначала только аккомпанемент, а затем солист). Делается это так: после записи аккомпанемента его воспроизводят, подавая сигнал на