
- •Приближенные вычисления
- •Ряд Тейлора
- •Точность вычислений
- •Рекуррентная формула
- •Блок-схема алгоритма
- •Текст программы
- •Отладка программы
- •Альтернативная блок-схема
- •Bвод и вывод данных
- •Операторы open и close
- •Оператор read – ввод данных
- •Оператор write – вывод данных
- •Оператор format
- •Спецификации числовых данных
- •Вывод комплексных чисел
- •Спецификации нечисловых данных
- •Cпецификация формата – «слэш»
- •Взаимодействие операторов write и format .
- •Оператор NameList
Cпецификация формата – «слэш»
Спецификация «слэш» или косая черта ( / ) в операторе format вызывает завершение очередной строки.
Пример.
15 format (10x, ‘Fortran’, /, 10x, 7(‘*’))
write (*, 15)
или (запятые до и после символа «слэш» могут быть опущены)
15 format (10x, ‘Fortran’ / 10x, 7(‘*’)
write (*, 15)
Выводятся две строки:
__________Fortran
__________*******
Два последовательных символа «слэш» вызывают печать строки из одних пробелов:
15 format (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
15 format (1x, 2F8.2)
write (*, 15) a, b, c, d
Значения выводятся в две строки, по два числа в строке. Вывод будет такой же, как при использовании формата
real:: a=1.8, b=-34.7, c=17.568, d=245.241
15 format (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
16 format (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__