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; просмотров: 479;