Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Дескрипторы данных




Дескрипторы данных определяют размер и форму полей ввода-вывода, в которых размещаются текстовые представления данных. При форматном вводе-выводе каждому элементу списка ввода-вывода соответствует дескриптор данных. Элементы списка ввода-вывода и дескрипторы данных должны быть согласованы по типам. Если в списке ввода-вывода присутствует несколько элементов, то каждый элемент выбирает один дескриптор данных из списка дескрипторов преобразований. Правило выбора такое: i -й элемент списка ввода-вывода выбирает i -й дескриптор данных. Заметим, что данное правило (первое правило) работает, если количество дескрипторов данных не меньше числа элементов в списке ввода-вывода.

Последовательность одинаковых дескрипторов данных можно записать, использовав коэффициент повторения (повторитель), – задаваемую перед дескриптором данных буквальную константу без знака или задаваемое в угловых скобках (<...>) целочисленное выражение. Коэффициент повторения может быть применен и для группы дескрипторов преобразований. Общий вид записи повторяющейся группы дескрипторов преобразований:

N[(] группа дескрипторов преобразований [)]

Круглые скобки можно опустить, если группа дескрипторов преобразований включает лишь один дескриптор данных. В группу дескрипторов преобразований могут входить как дескрипторы данных, так и дескрипторы управления. Использование коэффициента повторения перед дескриптором управления или строкой возможно лишь в том случае, когда дескриптор заключен в скобки.

Если число дескрипторов данных в спецификации формата меньше числа элементов в списке ввода-вывода и их число равно m. Тогда первые m элементов списка ввода-вывода выберут дескрипторы данных по первому правилу, сформулированному ранее. Далее начнется следующая запись (следующая строка текстового файла), и последующие m элементов списка ввода-вывода вновь выберут те же дескрипторы данных, следуя первому правилу, и так далее до исчерпания списка ввода-вывода. Это второе правило.

Данное правило работает в том случае, когда один или несколько дескрипторов данных не заключены в круглые скобки.

Если формат содержит заключенные в скобки дескрипторы данных, то в случае, если он будет исчерпан, в файле возьмется новая запись и управление форматом вернется к левой скобке, соответствующей предпоследней правой скобке, или к соответствующему коэффициенту повторения, если он имеется. Это правило называется реверсией формата.

Перечень основных дескрипторов данных представлен в таблице 1.14.1, где использованы следующие обозначения: w – длина поля, отведенного под представление элемента ввода-вывода; d – число цифр после десятичной точки (d<w).

Таблица 1.14.1. Основные дескрипторы преобразования данных.

Дескриптор Тип аргумента Внешнее представление
Iw целый целое число
Fw.d вещественный вещественное число в F-форме
Ew.d Вещественный вещественное число в E-форме
Dw.d Вещественный вещественное число двойной точности
Lw логический T и F, T. и F., TRUE и FALSE
A символьный строка символов
Gw.d любой зависит от типа данных

Основные правила преобразования числовых данных:

· внешним представлением элемента ввода-вывода является строка символов;

· при вводе поле, полностью состоящее из пробелов «по умолчанию», всегда интерпретируется как ноль;

· при вводе знак + может быть опущен;

· при вводе с дескрипторами F, E, G и D число цифр после запятой определяется положением десятичной точки, а при ее отсутствии – значением параметра d;

· при выводе символы выравниваются по правой границе поля и при необходимости добавляются ведущими пробелами;

· если при выводе число полученных в результате преобразования символов превосходит длину поля w, то все поле заполняется звездочками (вместе с тем, следует отметить, что стандарт Fortran 95 позволяет задать значение w, равное нулю, и в этом случае длина поля определяется значением выводимого числа);

· если вещественное число содержит больше цифр после десятичной точки, чем предусмотрено параметром d, то отображается округленное до d знаков после десятичной точки значение числа;

· при работе с комплексными числами необходимо применять одновременно два дескриптора вида F, E, G или D: первый – для действительной, второй – для мнимой части комплексного числа.

Дескриптор I. При использовании дескриптора Iw в списке вывода операторов PRINT и WRITE могут присутствовать элементы только целого типа, иное приведет к ошибке.

В качестве пояснения приведем следующий фрагмент программы:

integer(4):: k1=124, k2 print *,’ Vvedite k2’ read 1,k2! Введем: -124 1 format(i4) print 2,k1,k2! Ø124ØØØØ-124 2 format(1x,i3,i8)

Дескриптор F. Дескриптор Fw.d обеспечивает вывод вещественных чисел. Вывод выполняется на поле длиной в w символов. Один символ отводится под десятичную точку. При выводе отрицательного числа еще один символ будет отведен под знак. Из оставшихся w-1 или w-2 символов d символов будут отведены под числа, следующие после десятичной точки числа. Оставшиеся символы будут либо пробелами, либо цифрами, расположенными слева от десятичной точки. Выводимое число при преобразовании во внешнее представление при необходимости округляется.

При вводе с дескриптором Fw.d передача данных осуществляется с поля длиной в w символов, на котором можно разместить целочисленные или вещественные числа в F-форме или E-форме (со знаком или без знака). Если десятичная точка отсутствует, то число десятичных знаков вводимого вещественного числа будет равно d. При наличии во внешнем представлении десятичной точки число десятичных знаков вводимой величины определяется положением десятичной точки и может отличаться от значения d. Пробелы между десятичными цифрами или между десятичной точкой и цифрами игнорируются или, при необходимости, интерпретируются как нули. Рассмотрим пример:

real x x=-1.24 print 1,x! Ø-1.240 1 format(f8.3)

Число -1.24 расположится на поле длиной в 8 символов. Поскольку d=3, а в числе только две цифры после десятичной точки, то последним символом будет 0, далее последуют символы 4, 2, десятичная точка, 1 и знак «–». Первыми двумя символами в отведенном под число поле будут пробелы.

Если выводимое значение не может быть размещено в отдельном поле, то результатом вывода будут звездочки.

Дескриптор E. Дескриптор преобразования вещественных чисел Ew.d

Форма выходного поля, длина которого равна w, представляет собой: знак минус (в случае отрицательного числа), далее десятичная точка, затем строка из d цифр, затем поле под показатель степени (порядок).

Приведем пример:

real(8):: a=1.23D+205 real(4):: b=0.0000123445, c=-.123445, d=1.23 print 1,a!.12300000+206 1 format(1x,e15.8) print 2,b,c! -.12344E-04Ø-.12344E+00 2 format(1x,2e12.5) print 3,d! Ø.12300E+01 3 format(1x,e11.5)

Рассмотрим здесь механизм преобразования числа 1.23 при выводе на примере дескриптора e11.5. Число 1.23 расположится на поле длиной в 11 символов. При выводе все цифры отображаются после десятичной точки, т. е. на выходе мы получим число 0.123*101. Поскольку в дескрипторе после десятичной точки предусмотрено 5 символов (d=5), то после вывода.123 будут добавлены два нуля, а затем уже последует показатель степени Е+01. Результатом преобразований будет строка Ø.12300E+01.

Дескриптор D. лементы списка вывода, ассоциируемые с дескриптором преобразования двойной точности Dw.d, должны иметь вещественный тип. Все правила и параметры, применимые к дескриптору E, также применимы и к дескриптору D.

Дескриптор L. При передаче данных логического типа используется дескриптор Lw. В результате преобразования значения логического типа будет выведено: w-1 пробелов, а затем буква T или буква F.

Пример

logical:: fl1=.true., fl2=.false. write(*,1)fl1, fl2! ØØØTØØØØF 1 format(1x,2L5)

Дескриптор A. Дескриптор A используется в основном при вводе-выводе данных символьного типа. Выводимые с применением дескриптора A данные выравниваются по правой границе поля, завершающие пробелы сохраняются.

Дескриптор G. Обобщающий дескриптор Gw.d может быть использован с данными любого встроенного типа. Для целочисленных данных дескриптор Gw.d имеет такое же действие, как и дескриптор Iw.m (чтобы целое число заполнило w-позиций, оно справа дополняется нулями). Для логических данных Gw.d действует так же, как и Lw. Для символьных данных Gw.d действует так же, как и Aw.

integer(4):: k = 355 logical:: fl =.true. character(10):: st = ' string' write(*,1)k,fl,st! 00355 T string 1 format(1x,3g10.5)

Для вещественных данных дескриптор Gw.d автоматически переключается с формата F на формат E в зависимости от величины передаваемых данных.




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


Дата добавления: 2014-12-07; Просмотров: 1642; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.018 сек.