Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
22-28(29).docx
Скачиваний:
7
Добавлен:
27.09.2019
Размер:
72.89 Кб
Скачать

25. Форматный вывод таблиц

Форматный вывод

Форматный вывод дает исчерпывающие возможности по оформлению текстов. Форматный вывод так хорошо продуман, что за 50-летнюю историю Фортрана существенно не изменился. Форматный вывод сложнее вывода стандартных текстов, поэтому изложим его описание неформально и формально.

Правило таблицы

Правило таблицы работает автоматически, если об этом не знать могут быть неприятные сюрпризы.

Когда автоматически включается в работу правило таблицы?  Если много объектов – мало дескрипторов  write (*,мало)  много, то

            Format позволяет оформлять таблицы по следующим правилам

  • малое число дескрипторов  - это число колонок таблицы

  • много объектов - это общее количество чисел в таблице

  • много / мало - это число строк в таблице

  • все или часть дескрипторов на участке сканирования просматриваются многократно, потенциально бесконечно

  • участок сканирования заключается в скобки

  • несколько write, ссылаясь на один и тот же Format с разным количеством чисел, порождают таблицы с разным числом строк, но с одинаковым количеством колонок

По расположению участка сканирования и полученному результату различают

  • таблицу без заголовка, порождаемую Format(   .. ) , в котором нет никаких скобок, кроме скобок формата - эти скобки формата ==  и дают участок сканирования

  • таблицу с заголовком, порождаемую форматом, в котором сколько угодно скобок, кроме скобок формата Format( ....=заголовок=>….(==> )  ) заголовок просматривается однократно                  == участок сканирования- это последняя пара скобок непосредственно внутри формата

Пример

Не изменяя format, можно получить два заполненных бланка

write (*,2000) ‘Звягин В.Ф’, Серебристый’,4,  212.57, ‘Cавин Ю.А.’,’Невский пр.’, 2 , 1314.37

2000 format(‘ФИО абонента’,4x,’название улицы’/ a, 4x,a/  ‘200’ ,i1/ 15x,’всего’ , F7.2)

26. Атрибуты и новая форма описания объектов в современном Фортране. Массивы в раннем фортран -77 и современном Фортране. Конформные массивы.

Атрибуты и операторы в Фортране-77 и в Фортране –90

В Фортране-77 атрибутов нет, есть только операторы.  В MS-Фортране 5.1 в опережение стандарта Фортран–90 появились атрибуты, которые писали в квадратных скобках после имени объекта,  например, real*8 Dlina [ allocatable ] ( -2:2, ) Основу описаний в Фортране-90 составляют атрибуты, но для преемственности сохраняется форма оператора.

Атрибут

Назначение

Фортран-77

Фортран –90

DATA

Начальные значения объектов

Оператор

Как атрибут не пишется, однако инициализация всегда возможна.  Как оператор сохранен.

PARAMETER

Именованная константа

Оператор

Атрибут/оператор

ALLOCATABLE

Динамический объект

В MS-Фортране 5.1 [Атрибут] в квадратных скобках после имени

Атрибут

SAVE

Сохраняемый объект (вне стека)

В MS-Фортране 5.1 [Атрибут] в квадратных скобках после имени

Атрибут

INTENT

Тип связи параметра:  (IN)-входной,  (OUT)- выходной,  (INOUT) – вход-выходной

Нет

Атрибут

OPTIONAL

Необязательный параметр процедуры

Нет

Атрибут

PUBLIC

Общедоступный объект модуля

Нет

Атрибут

PRIAVITE

Локальный объект модуля

Нет

Атрибут

POINTER

Указатель

Нет

Атрибут

TARGET

Объект ссылки

Нет

Атрибут/оператор

В Фортран –90 лучше писать атрибуты, а не операторы, потому что:

  • все свойства объекта собраны в одном определении

  • переменные с одними и тем же набором свойств (атрибутов) идут общим списком

Новый принцип описания объектов в Фортране-90

Новый принцип описания объектов совмещает полное объявление типа и размерности, а также всех прочих атрибутов массива. Важно, что все собрано в одном описании. Если несколько массивов имеют одинаковый набор свойств, то они идут одним списком. Именно такой способ рекомендован как основной в обновленном языке Фортран-90, изобилующем многими уточняющими атрибутами. Например, вполне понятно описание в стиле Фортран-90 Integer*1dimension (1:5), parameter :: CHET=(/ 0,2,4,6,8 /), NECHET=(/ 1,3,5,7,9 /)  в  этом описании имеется

  • знак двойного двоеточия "::" в середине строки говорит о том, что по определению набор атрибутов (свойств), перечисленных слева от "::", относится ко всем объектам, указанным справа от "::"

  • в примере справа от "::" два вектора CHET, NECHET, что свидетельствует о совпадении их свойств, при разных значениях  

  • атрибут integer*1, нужен, чтобы указать целый тип элементов, компактно упакованных, каждый в 1 байт

  • атрибут dimension, чтобы отличить массив от простой переменной и дать размерностные характеристики массива

  • атрибут parameter, чтобы указать, что всё это константы

  • составной знак (/  .. ..  /) - это конструктор массива, в данном примере целые числа из диапазона 0:9 подразделены на четные CHET и нечетные NECHET

В Фортране-90 атрибут dimension может иметь не только массив, но и функция.

В Фортране-77 Real и dimension являются не атрибутами, а операторами, допускается совмещать описания dimension X(60) и Real X, опуская dimension. Такой “экономный” способ описания не вполне согласуется с требованием явного полного перечисления свойств объектов, он не стал основным в Фортране-90

В Фортране-77 допускается писать одно описание

Вместо двух описаний

Real X(60)

Real X dimension X(60)

MS в опережение стандарта также разрешила применение некоторых атрибутов, которые по их предложению в MS Ф5.1 записывались в квадратных скобках после имени объекта, например, RealMatrix [allocatable](:,:)  Написание атрибутов в квадратных скобках не принято в Фортране-90.

Конформные массивы - одинаковы по форме, – это ключевое понятие в параллельном программировании. Параллелизация начинается с описания конформныхмассивов, но это лишь база.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]