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

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

c%e = 1

! c%e - целочисленный компонент типа feg

$j = 5.0

! $j - Переменная типа REAL

3.5. Буквальные константы

В Фортране различают именованные и буквальные константы. Буквальные константы (далее - просто константы) используются в выражениях и операторах Фортрана. Возможно задание арифметических,

логических и символьных буквальных констант.

3.5.1. Целые константы

Целые константы в десятичной системе счисления - целые числа (со знаком или без знака), например:

+2 2 -2

Константа может быть задана с указанием разновидности типа, значение которой указывается после значения константы и символа _ , например:

integer i*2, j*1

 

 

 

 

integer, parameter :: is = 1

 

 

 

 

i = -123_2

! Разновидность типа KIND = 2

j = +123_is

! Разновидность типа KIND = 1

write(*, *) i, j, kind(123_is)

!

-123

123

1

Для указания разновидности может быть использована ранее определенная именованная константа (в примере is) стандартного целого типа.

Целые константы по произвольному основанию задаются так: [знак] [[основание] #] константа [_kind]

Знак это + или -. Для положительных констант знак может быть опущен. Основание может быть любым целым числом в диапазоне от 2 до 36. Если основание опущено, но указан символ #, то целое интерпретируется как число, заданное в шестнадцатеричной системе счисления. Если опущены и основание и символ #, то целое интерпретируется как имеющее основание 10. В системах счисления с основаниями от 11 до 36 числа с основанием 10, значения которых больше девяти, представляются буквами от A до Z. Регистр букв не является значащим. Константа может быть задана с указанием разновидности типа.

Пример. Представить десятичную константу 12 типа INTEGER(1) в системах счисления с основаниями 2, 10 и 16.

2#1100_1 12_1 или 10#12_1#C_1 или 16#C_1

По умолчанию буквальные целые константы имеют стандартный целый тип.

Помимо названных возможностей, в операторе DATA беззнаковые целые константы могут быть представлены в двоичной, восьмеричной

56

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

или шестнадцатеричной форме с указанием системы счисления в виде символа, предшествующего значению константы (соответственно B или b, O или o, Z или z для двоичной, восьмеричной или шестнадцатеричной систем счисления). Сама же константа обрамляется апострофами (') или двойными кавычками. При этом константа должна использоваться для инициализации целой скалярной переменной.

integer i, j, k

 

data i /b'110010'/

! Двоичное представление десятичного числа 50

data j /o'62'/

! Восьмеричное представление числа 50

data k /z'32'/

! Шестнадцатеричное представление числа 50

3.5.2. Вещественные константы

Вещественные константы используются для записи действительных чисел. Вещественные константы одинарной REAL(4) и двойной REAL(8) точности могут быть представлены в F-форме или в Е-форме. Помимо этого, вещественные константы двойной точности могут быть представлены и в D-форме. Память, занимаемая вещественной константой одинарной точности, равна 4 байтам, а двойной точности - 8 байтам.

Вещественные константы в F-форме записываются в виде: [+]|- [целая часть] . [дробная часть] [_разновидность типа]

Целая или дробная часть в F-форме может быть опущена, но не обе одновременно.

Пример:

+2.2

2.2_4

2.0_8

2.

-0.02_knd

-.02

Замечание. knd - ранее определенная константа стандартного целого типа

(knd = 4 или knd = 8).

Константы в Е-форме и D-форме имеют вид:

[+]|- [мантисса] E | e [+]|- порядок [_разновидность типа] [+]|- [мантисса] D | d [+]|- порядок

Мантисса - число в F-форме или целое число.

Порядок - однозначное или двузначное целое положительное число.

Пример 1:

Е- и D-формы числа 18.2*1011

:

+18.2E11

18.2e+11_8

18.2D11

Е- и D-формы числа -0.18*10-5

:

-.18E-05

-.18e-5

-.18d-5

Пример 2:

real(8) :: a*4 = +18.2E11, b = 18.2e+11_8, c /18.2D11/ ! a - переменная одинарной, b и c - двойной точности print *, a, b, c

57

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

Результат:

1.820000E+12 1.820000000000000E+012 1.820000000000000E+012

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

Вещественные константы одинарной точности могут представлять числа

вдиапазоне изменения значений типа REAL(4) (разд. 3.2.2). Дробная часть может содержать до шести десятичных знаков.

Вещественные константы двойной точности могут представлять числа

вдиапазоне изменения значений типа REAL(8) (разд. 3.2.2). Дробная часть может содержать до 15 десятичных знаков.

3.5.3. Комплексные константы

Комплексные константы используются для представления комплексных чисел и имеют вид:

[знак](действительная часть[_разновидность],

&

мнимая часть[_разновидность])

 

Если знак задан, то он применяется как для действительной, так и для мнимой части. Задание общего знака при инициализации комплексной переменной в операторах DATA и объявлениях типов недопустимо.

Действительная (мнимая) часть - целая или вещественная константы. Буквальные комплексные константы могут быть одинарной COMPLEX(4) и двойной COMPLEX(8) точности. В комплексных константах одинарной точности мнимая и действительная части занимают по 4 байта памяти; в комплексных константах двойной точности - по 8 байт. Поэтому комплексная константа одинарной точности занимает 8 байт памяти, а двойной - 16. При задании компонентов комплексной константы можно использовать одновременно для действительного и мнимого компонента константы Е-, D- и F-формы. В случае одновременного использования одинарной и двойной точности при задании комплексной константы компилятор выполнит преобразование типов в соответствии с рангом типов арифметических операндов: комплексная константа будет иметь двойную точность, а компонент одинарной точности будет

преобразован в форму с двойной точностью.

Пример 1. Число 36.8 - 263.3i в виде комплексной константы:

(36.8, -2.633E2)

или

(36.8, -263.3)

или

(36.8_4, -2.633E2_4)

58

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

Пример 2. D-форма числа 3.8*10-5 - 2.6*10-2i задает комплексную константу двойной точности:

(3.8D-5, -2.6D-2)

3.5.4. Логические константы

Логические константы используются для записи логических значений истина (.TRUE.) или ложь (.FALSE.). Отсутствие хотя бы одной обрамляющей точки в записи буквальной логической константы является ошибкой.

По умолчанию буквальные логические константы занимают в памяти ЭВМ 4 байта. Разновидность типа буквальной логической константы может быть задана явно, подобно тому, как это выполняется для буквальных целых констант. Например: .true._1 или .false._2.

Пример задания именованных логических констант:

logical(1), parameter :: fl = .true._1 logical(2) gl

parameter (gl = .false.)

3.5.5. Символьные константы

Символьные константы - последовательность одного или более символов 8-битового кода. Далее последовательность символов мы будем называть строкой. Символьные константы могут быть записаны с указателем длины и без него.

Символьные константы с указателем длины, называемые также

холлеритовскими константами, имеют вид: nHпоследовательность символов,

где n - целая константа без знака, задающая число символов в строке (ее длину); H (h) - буква, являющаяся разделителем между n и строкой. Число символов в последовательности символов должно быть равно n.

Пример:

18hthis is a constant

 

st = 16hthis is a string

! Константа как элемент выражения

Символьная константа без указателя длины - это строка, заключенная в ограничители, апострофы или двойные кавычки. Ограничители вместе со строкой не сохраняются. Если строка должна содержать ограничитель, то она либо заключается в ограничители другого вида, либо ограничитель должен быть указан в строке дважды.

Пример:

'Это константа' или "Это константа" "It's a constant" или 'It''s a constant'

59

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

Замечание. Символьные константы с указателем длины относятся к устаревшим свойствам Фортрана и не рекомендуются для применения.

Можно задать СИ-строковую константу. Для этого к стандартной строковой константе Фортрана необходимо прибавить латинские буквы C или c. Как известно, CИ-строки заканчиваются нулевым символом, имеющим в таблице ASCII код 0.

Пример СИ-константы: 'Это константа'с

В СИ-строке символы могут быть представлены в восьмеричном или шестнадцатеричном коде, которые указываются при задании констант после обратной наклонной черты. Например, '\62'c и '\x32'c задают символ '2' в восьмеричном и шестнадцатеричном кодах (ASCII-код символа '2'

равен 50).

Также

в СИ существует

специальная запись приведенных

в табл. 3.2 часто используемых управляющих символов.

Таблица 3.2. Управляющие символы

 

 

 

 

 

 

 

Символ

 

 

ASCII-код

 

Значение

 

 

 

 

 

 

\0

 

0

 

 

Нулевой символ (null)

 

 

 

 

 

 

\a

 

7

 

 

Сигнал

 

 

 

 

 

 

\b

 

8

 

 

Возврат на шаг ("забой")

 

 

 

 

 

 

\t

 

9

 

 

Горизонтальная табуляция

 

 

 

 

 

 

\n

 

10

 

 

Новая строка

 

 

 

 

 

 

\v

 

11

 

 

Вертикальная табуляция

 

 

 

 

 

 

\f

 

12

 

 

Перевод страницы

 

 

 

 

 

 

\r

 

13

 

 

Возврат каретки

\"

 

34

 

 

Двойная кавычка

 

 

 

 

 

 

\'

 

39

 

 

Апостроф

 

 

 

 

 

 

\?

 

63

 

 

Знак вопроса

 

 

 

 

 

 

\\

 

92

 

 

Обратная наклонная черта

\ooo

 

 

 

 

Восьмеричная константа

 

 

 

 

 

 

\xhh

 

 

 

 

Шестнадцатеричная константа

 

 

 

 

 

 

Пример:

 

 

 

 

 

character :: bell = '\a'c

! или '\007'c,

или '\x07'c

character(20) :: st = '1\a\a\t1-1\n\r2'c

 

write(*, *) bell

 

 

! Звуковой сигнал

write(*, *) st

 

 

 

 

 

60