Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
современный фортран , Бортеньев.pdf
Скачиваний:
242
Добавлен:
26.03.2015
Размер:
2.34 Mб
Скачать

О. В. Бартеньев. Современный ФОРТРАН

разновидность стандартного логического типа данных LOGICAL можно изменить с 4 на 2, задав опцию компилятора /4I2 или директиву $INTEGER:2.

Пример:

logical, allocatable :: flag1(:), flag2(:) logical(2), save :: doit, dont = .false._2 logical switch

! Эквивалентное объявление с использованием операторов вместо атрибутов logical flag1, flag2

logical(2) :: doit, dont = .false._2 allocatable flag1(:), flag2(:) save doit, dont

Логические величины (переменные, выражения) могут быть использованы в арифметических операторах и могут быть присвоены целым переменным.

Пример:

integer :: a = 2

logical :: fl = .true., g = .false.

write(*, *) a * fl, a * g ! 2 0 end

Правда, там, где требуются арифметические величины, например в спецификаторе UNIT оператора OPEN, применение логических величин недопустимо. Смешение логических и целых величин также недопустимо, если используется опция компилятора /4Ys.

3.3. Правила умолчания о типах данных

В Фортране допускается не объявлять объекты данных целого и вещественного типов. При этом тип данных объекта будет установлен в соответствии с существующими правилами умолчания: объекты данных, имена которых начинаются с букв i, j, k, l, m и n или с букв I, J, K, L, M и N, имеют по умолчанию стандартный целый тип (INTEGER); все остальные объекты имеют по умолчанию стандартный вещественный тип (REAL). Заметим, что на часть встроенных функций это правило не распространяется. Задаваемую по умолчанию разновидность типа данных можно изменить, задав для целого типа при компиляции опцию /4I2 или директиву $INTEGER:2 и для вещественного типа - опцию компилятора

/4R8 или директиву $REAL:8 [1].

Пример:

integer :: x = 5

! Целочисленная переменная

y = 2 * x

! y - переменная типа REAL

54

риложение3. Организация данных

3.4. Изменение правил умолчания

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

Синтаксис оператора: IMPLICIT NONE

или

IMPLICIT type(letters) [, type(letters), ...]

type - один из встроенных или производных типов данных.

letters - список одинарных букв или диапазонов букв. Диапазон букв задается первой и последней буквой диапазона, разделенными знаком тире, например c - f. Буквы и диапазоны букв в списке разделяются запятыми, например:

implicit integer(4) (a, c - f), character(10) (n)

После такого задания все объекты данных, имена которых начинаются с букв a и A и с букв из диапазона c - f и C - F, будут по умолчанию иметь тип INTEGER(4), а объекты, имена которых начинаются с букв n и N, по умолчанию будут иметь тип CHARACTER(10).

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

Оператор не меняет типа встроенных функций.

Явное задание типа имеет более высокий приоритет, чем тип, указываемый оператором IMPLICIT. Задание

IMPLICIT NONE

означает, что все используемые в программе имена должны быть введены явно (через операторы объявления типов данных). Невведенные имена приводят к возникновению ошибки на этапе компиляции. Никакие другие операторы IMPLICIT не могут указываться в программной единице, содержащей оператор IMPLICIT NONE. Ясно, что задание IMPLICIT NONE позволяет полностью контролировать типы всех объектов данных.

Пример:

implicit integer(a - b), character(len = 10) (n), type(feg)(c - d)

type feg

 

integer e, f

 

real g, h

 

end type

! age - переменная типа INTEGER

age = 10

name = 'Peter'

! name - переменная типа CHARACTER(10)

55