Взаимодействие операторов write и format

1. Оператор write
write
(номер устройства, ссылка на формат) список вывода
пояснения:

- куда выводить – направление вывода в виде номера устройства;

- что выводить – в списке вывода перечислены выводимые данные, этот список просматривается однократно;

- как выводить – данные из списка вывода запрашиваются по мере просмотра СД оператора format.

2. Оператор format описывает, как выводить данные, интерпретируя список дескрипторов
метка format(список дескрипторов)
пояснения:

- по дескриптору данных запрашивается и выводится элемент списка вывода; если дескриптор данных не подходит элементу списка вывода, то сообщается expected descriptor об ожидавшихся дескрипторах;

- по другим дескрипторам выводятся надписи, пробелы, переносы;

- по концу СД – просмотр повторяется на участке сканирования.

Длина списка вывода может быть равной, больше или меньше длины СД. Когда список вывода длиннее, чем СД, просмотр автоматически зацикливается на участке сканирования, который определяется однозначно:

- оператор format без внутренних скобок

1format ( .. .. )

­____¥___| – повторение по скобкам формата ;

- оператор format с внутренними скобками

2format((..)..(..(..)..)..)

­____¥________|

повторение по последней паре скобок внутри оператора format .

Принцип сканирования реализуется по следующим правилам:

- каждый новый оператор write начинает вывод с новой строки, устанавливает начало списка вывода и начало списка дескрипторов;

- если встретился дескриптор данных, запрашивается и превращается в текст очередной элемент списка вывода;

- попутно исполняются встретившиеся оформительские дескрипторы: по дескриптору «X» вставляются пробелы, вносятся текстовые константы, по дескриптору «/» переносятся строки;

- участок сканированияциклически просматривается и интерпретируется до тех пор, пока не будут обработаны все элементы списка вывода;

- при возврате к началу участка сканирования вывод продолжается с новой строки;

- по концу списка вывода продолжится просмотр и исполнение оформительских дескрипторов до ближайшего дескриптора данных или до дескриптора «:» .

Пример 1 – на понимание процесса сканирования.
Вывести два целых по формату с одним числовым полемi2.

integer::x=12,y=100

Open (2, file=’Out.txt’)

write(1,33) x, y ! x, y – список вывода

33format(i3) ! (i3) – участок сканирования

Поскольку длина списка вывода больше длины списка дескрипторов, возникает сканирование, то есть повторение формата и перенос строки. Повторяется весь список дескрипторов, так как внутри формата скобок нет. В файл Out.txt выведется две строки, начинающиеся с пробела – дескриптор (символ «˜» означает пробел)

˜12

Формат пригоден для вывода любого количества целых чисел из диапазона [-99 , 999], которые вмещаются в 3 позиции.

Пример 2 – число не помещается в отведенное поле.
Вывести два целых по формату с одним числовым полемi2.

integer::x=12,y=100

Open (2, file=’Out.txt’)

write(1,33) x, y ! x, y – список вывода

33format(1x, i2) ! (1x, i2) – участок сканирования

Поскольку длина списка вывода больше длины списка дескрипторов, повторяется весь список дескрипторов, так как внутри формата скобок нет. В файл Out.txt выведется две строки, начинающиеся с пробела – дескриптор (символ «˜» означает пробел)

˜12

˜**

Формат пригоден для вывода любого количества целых чисел из диапазона [-9 , 99]. Вместо трехзначного числа 100 выведется «**», поскольку ширина поля вывода равна 2 (дескриптор i2).

Пример 3 – бесконечно глупый вывод.
Вывести целое по формату, в котором нет дескрипторов данных.

write(1,33)12 ! целое 12 бесконечно ищет дескриптор i в 33 format()

33format('ищем целый дескриптор, а его нет')

Внимание: просмотр фактически зациклился !

 

Массивы








Дата добавления: 2016-02-13; просмотров: 2381;


Поиск по сайту:

При помощи поиска вы сможете найти нужную вам информацию.

Поделитесь с друзьями:

Если вам перенёс пользу информационный материал, или помог в учебе – поделитесь этим сайтом с друзьями и знакомыми.
helpiks.org - Хелпикс.Орг - 2014-2024 год. Материал сайта представляется для ознакомительного и учебного использования. | Поддержка
Генерация страницы за: 0.006 сек.