X-спецификация формата

Символы пробела могут быть выведены символьной строкой, состоящей только из пробелов, например такой, как ‘ ‘.

Для вывода пробелов также предназначена X- спецификация формата. Общая форма этой спецификации имеет вид:

wX.

Она задает вывод w символов пробела. X- спецификация обычно используется для улучшения внешнего вида выводимой информации.

Пример.

14format(3x, I4, I4)

write (*, 14) 7812, 12

При выполнении оператора write выведенная строка начинается с трех пробелов:

___7812__12

Cпецификация формата – «слэш»

Спецификация «слэш» или косая черта ( / ) в операторе format вызывает завершение очередной строки.

Пример.

15format(10x, ‘Fortran’, /, 10x, 7(‘*’))

write (*, 15)

или (запятые до и после символа «слэш» могут быть опущены)

15format(10x, ‘Fortran’ / 10x, 7(‘*’)

write (*, 15)

Выводятся две строки:

__________Fortran

__________*******

Два последовательных символа «слэш» вызывают печать строки из одних пробелов:

15format(10x, ‘Fortran’ // 10x, 7(‘*’))

write (*, 15)

Выводятся три строки:

__________Fortran

_________________

__________*******

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

Управление расположением выводимых данных осуществляется спецификациями формата и зависит от элементов списка вывода. Необходимо строго согласовывать спецификации выводимых данных с их типом, нарушение этого правила приводит к ошибкам вывода, фиксируемым на экране монитора (ошибки выполнения).

Взаимодействие операторов formatи write, подчиняется следующим правилам:

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

- Для каждой спецификации выбирается, представляется в виде текста и добавляется к строке вывода соответствующий элемент списка вывода. Попутно обрабатываются оформительские спецификации (такие как «Х», «слэш», символьные строки).

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

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

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

Поясним сказанное, воспользовавшись схемой оператора format.

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

Жирным шрифтом и цветом выделены скобки: последняя внутренняя закрывающая и соответствующая ей открывающая. В рамку заключены повторяющиеся спецификации формата.

Пример1 (без внутренних скобок).

real:: a=1.8, b=-34.7, c=17.568, d=245.241

15format(1x, 2F8.2)

write (*, 15) a, b, c, d

Значения выводятся в две строки, по два числа в строке. Вывод будет такой же, как при использовании формата

real:: a=1.8, b=-34.7, c=17.568, d=245.241

15format(1x, 2F8.2/1x, 2F8.2)

write (*, 15) a, b, c, d

Результирующие строки

____1.80__-34.70

___17.57__245.24

Пример2.

real:: a=1.8, b=-34.7, c=17.568, d=245.241

16format(1x, 2(F8.2, 2x))

write (*, 16) A, B, C, D

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

real:: a=1.8, b=-34.7, c=17.568, d=245.241

16 format (1x, 2(F8.2, 2x)/ 2(F8.2, 2x))

write (*, 16) A, B, C, D

Результирующие строки

____1.80__-34.70__

__17.57__245.24__

Сдвиг влево нижней строки относительно верхней произошел за счет того, что в верхней строке есть спецификация «1х», которая не вошла в нижнюю строку.

Оператор nameList

Оператор namelistсвязывает с набором переменных общее имя, поэтому он иногда называется именованным списком. Это групповое имя можно использовать в операторах ввода-вывода. Оператор namelistимеет вид:

namelist/имя NameList/ список ввода-вывода

Это неисполняемый оператор, он помещается в программе среди описаний до первого исполняемого оператора.

Здесь имя NameList – групповое имя, составленное по правилам Фортрана, список ввода-вывода – список переменных. Переменные, которые связаны с групповым именем, могут быть любого типа. Групповое имя используется операторами ввода-вывода вместо списка ввода-вывода:

write(*, имя NameList)

При этом выводится имя NameList, а затем имена и значения элементов списка вывода оператораnamelist.

Пример

namelist/result/ a, sina

a=2.0; sina=sin(a)

write(*,result)

При выполнении этого фрагмента программы на экран выводятся строки:

&RESULT

A = 2.000000

SINA = 9.092974E-01

/








Дата добавления: 2017-09-19; просмотров: 462;


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

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

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

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