Название: Квантовая механика - Учеб. пособие. (Краснопевцев Е. А.)

Жанр: Информатика

Просмотров: 1190


2. теоретические сведения

 

К организации данных в языке Фортран можно отнести: рассмотрение типов данных, способы объявления типов данных и способы инициализации (задание начальных значений) данных.

Объектами данных являются переменные, константы и функции. Термины константы и переменные распространяются на скаляры, массивы, а также на элементы массивов, сечения массивов, подстроки, компоненты структур. Диапазон рассмотрения в данной лабораторной работе ограничен скалярами.

Типы данных разделяются на встроенные и производные (создаваемые пользователем). Производные типы данных будут рассматриваться в дальнейших работах.

Каждый встроенный тип данных характеризуется параметром разновидности KIND. Для числовых типов данных этот параметр описывает точность и диапазон изменения. Для символьного типа данных в FPS (Fortran Power Station) существует только одна разновидность (KIND = 1). Параметр KIND указывается в скобках после имени типа. Каждый встроенный тип имеет стандартную, задаваемую по умолчанию разновидность. Стандартная разновидность, как правило, в скобках не указывается.

Каждой разновидности соответствует число байт памяти, отводимое под объект.

Встроенные типы данных

 

Целый – INTEGER (стандартная разновидность), BYTE, INTEGER(1), INTEGER(2), INTEGER(4).

Число байт памяти под объекты целого типа для перечисленных разновидностей соответственно равно 4, 1, 1, 2, 4.

Вещественный – REAL (стандартная разновидность), REAL(4), REAL(8), DOUBLE PRECISION.

Число байт памяти под объекты вещественного типа для перечисленных разновидностей соответствует значениям 4, 4, 8, 8. При KIND = 8 вещественные данные имеют двойную точность.

Комплексный – COMPLEX (стандартная разновидность), COMPLEX(4), COMPLEX(8).

Число байт памяти, отводимое под комплексные объекты, для перечисленных разновидностей соответственно равно 8, 8, 16. При этом одна половина памяти отводится под реальную часть, а другая – под мнимую.

Логический – LOGICAL (стандартная разновидность), LOGICAL(1), LOGICAL(2), LOGICAL(4).

Число байт памяти, отводимое под логические объекты, для перечисленных разновидностей соответственно равно 4, 1, 2, 4. Первый байт содержит значение либо 0 (.FALSE), либо 1 (.TRUE). Остальные байты имеют значение – null.

Символьный (текстовый) – CHARACTER, CHARAC-TER(n).

Разновидность KIND для символьного типа всегда равна 1. Число байт, отводимое под символьный объект, равно соответственно 1 или n. При этом n принимает значения 1£ n £32767.

Тип данных задается с помощью операторов объявления типов данных. В самом общем виде оператор объявления типа данных может быть представлен как:

имя типа [[[(KIND=значение)][, attrs]::]    list .

Имя типа – один из перечисленных выше типов данных: INTEGER, REAL, REAL(8), COMPLEX, LOGICAL, CHARACTER. KIND – задает значение разновидностей для каждого типа. Слово KIND может быть опущено, при этом в скобках указывается только значение разновидности. Если используется стандартный тип разновидности, то значение разновидности совсем отсутствует.

attrs – один или более атрибут, описывающий представленные в list объекты данных. Если хотя бы один атрибут указан, то должен быть использован разделитель::. Атрибуты определяют дополнительные свойства данных. Возможные атрибуты: ALLOCATABLE, PARAMETR, POINTER, TARGET, DIMENSION, PRIVATE, PUBLIC и др.

list – разделенный запятыми список имен объектов данных (переменных, констант, а также внешних, внутренних, операторных и встроенных функций).

В Фортране допускается не объявлять данные целого и вещественного типа. При этом действует правило по умолчанию: данные, которые начинаются с букв I, J, K, L, M, N, имеют стандартный целый тип, остальные – стандартный вещественный. Это неявный способ задания типа данных. Данные комплексного, логического и символьного типа объявляются только явно (операторами объявления типа данных).

Правило по умолчанию можно отменить с помощью оператора Implicit, который имеет вид:

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

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

letters – список одиночных букв или диапазонов букв.

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

 

Целые константы – целые числа со знаком или без знака. +10, 10, –10_2 (после знака подчеркивания “_“ указано значение разновидности KIND = 2 для константы –10).

 

Вещественные константы могут быть заданы в F-форме, E-форме и D-форме. F-форма задает числа с фиксированной точкой. E-форма и D-форма задают числа с плавающей точкой. Например число –51.234 можно представить в десятичной системе счисления как . Мантисса задает точность пред

                   мантисса  порядок

ставления, а показатель степени задает порядок числа. (F-форма: –51.234, E-форма: –0.51234×Е+2, D-форма: –0.51234D+2).

F- и E-формы могут задавать числа одинарной и двойной точности (4 и 8 байт памяти), например: 3.3_4;  3.3_8;  0.125E-4_8;  0.125E-4.

D-форма задает числа только двойной точности.

Комплексные константы – две целые или вещественные константы (реальная и мнимая часть), заключенные в скобки и разделенные запятой. Реальная и мнимая части могут быть заданы в F-форме, E-форме, D-форме: (2.33, 0.044), (0.233E1, 0.44E-1), (0.233D+1, 0.44D-1).

 

Логические константы – их всего две: .TRUE. и .FALSE. Наличие обрамляющих точек обязательно.

 

Символьные константы – последовательность одного или более символов 8-битового кода, заключенная в апострофы. Символьная строка + латинский символ С образуют СИ-строку. Существующие в СИ эскейп-последовательности можно использовать в FPS, представив их как СИ-строку (пример см. ниже).

 

Именованные константы применяются для защиты данных от изменения в процессе вычислений, т.е. их нельзя изменить в операторах присваивания и READ. Задаются именованные константы с помощью оператора или атрибута PARAMETER (пример см. ниже).

 

Инициализация статических данных в Фортране осуществляется на этапе компиляции программы, а динамических – в процессе выполнения программы. К динамическим данным относятся переменные, объявленные с атрибутом POINTER (ссылки) и атрибутом ALLOCATABLE. Выделение памяти под динамические данные осуществляется либо после его прикрепления к размещенному адресату, либо с помощью оператора ALLOCATE. Освобождение динамической памяти происходит после выполнения оператора DEALLOCATE. (примеры см. ниже).

Возможны два способа инициализации данных:

а) в операторах объявления типа;

б) с помощью оператора DATA, общий формат которого:

          DATA список имен /список значений/.

 

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