Читайте также: |
|
Все переменные, использованные в программе, должны иметь ассоциированные с ними типы данных, такие как REAL, INTEGER или COMPLEX, которые обычно идентифицированы в начале прогаммы. Они называются объявлениями или спецификациями переменных, например:
REAL:: temperature, pressure
INTEGER:: count, hours, minutes
Объявляет 5 переменных, две их которых имеют значения, являющиеся вещественными числами, и три имеют целые значения.
Оператор объявления переменных может быть использован для присваивания начальных значений объявленным переменным. Если начальное значение не задано переменной, она не может быть принимать никаких значений до тех пор, пока не будет присвоено с помощью оператора присваивания.
REAL:: temperature=96.4
INTEGER:: days=365, months=12, weeks=52
В общей форме объявление переменной:
тип [,атрибуты...]:: список переменных
где тип один из встроенных типов данных:
INTEGER
REAL
COMPLEX
CHARACTER
LOGICAL
А атрибут... необязательный список "ключевых слов", каждое отделяется запятой, ключевые слова используются для определения свойств переменных:
ALLOCATABLE INTENT(...) PARAMETER PUBLIC
DIMENSION(...) INTRINSIC POINTER SAVE
EXTERNAL OPTIONAL PRIVATE TARGET
CHARACTER и LOGICAL типы данных, обсуждаемые в отдельном разделе. Атрибуты введены как требуемые к ним заметки.
Параметры (Parameters)
Термин параметр в Фортране вводит в некоторое заблуждение. Он относится к значению, которое будет заменено во время выполнения программы. Например, программист может хотеть значение pi сделать неизменяемым программой. Тогда pi может объявлено:
REAL, PARAMETER:: pi=3.141592
REAL специфицирует тип данного; атрибут PARAMETER в дальнейшем определяет переменную pi. Всем параметрам должны быть даны значения в операторе их объявления (в нашем случае 3.141592). Параметры могут быть определены для других типов данных, например:
INTEGER, PARAMETER:: maxvalue=1024
INTEGER, PARAMETER:: repeatcount=1000
Считается ошибкой попытка переопределения значения параметра в ходе выполнения программы.
Неявные объявления
Фортран 90 разрешает тип переменных real и integer объявлять неявно без соответсвующего оператора объявления. Это свойство неявного объявления обеспечивает преемственность с более ранними определениями языка Фортран, но может создавать проблему программирования при неосторожности. Можно отключить это свойство с помощью оператора:
IMPLICIT NONE
В начале каждой программы. Это заставит программиста объявлять все переменные, которые использованы в программе, чтобы не приводить к ошибкам во время компиляции.
Явное объявление типов позволяет вместе с определениями типов задавать начальные значения. При неявном описании начальная буква имени определяет тип целый для имен, начинающихся на буквы I, J, K, L, M и N; и тип вещественный для имен, начинающихся на буквы от A до H и от O до Z.
KIND
Каждый тип данных имеет одно или более значений параметра типа KIND, связанного с ним. Типы данных с различными значениями KIND используют различное число байтов для запоминания информации. Это означает, что числовые типы данных с различными параметрами типом KIND имеют различный диапазон допустимых значений и/или различного уровня числовой точности.
Например, компилятор NAG F90 использован для развития этого курса, обеспечившего три значения параметра типа KIND для типа INTEGER (KIND=1, 2 или 3); 3 являлось по умолчанию. Другие компиляторы или компилятор NAG F90 в различных системах могут поддерживать различные значения KIND. Переменные объявлены с желаемой точностью с помощью использования атрибута KIND:
тип (KIND = kind_type_value) [, атрибуты...]:: список переменных
Например:
INTEGER:: a! по умолчанию KIND=3
INTEGER(KIND=3):: b! по умолчанию
INTEGER(KIND=1):: c! ограниченная точность -127 <= c <= 127
INTEGER(2):: d! KIND= необязательное
INTEGER:: e=1_2! e=1 и тип kind 2
Оба типа данных INTEGER, и LOGICAL имеют некоторые возможные значения типа KIND, каждый из которых использует меньше памяти, чем по умолчанию (которая в случае типа INTEGER приводит к меньшему диапазону возможных значений - так что остерегайтесь!). Эти альтернативные значения KIND обычно использованы только, когда память данных выше номинала.Для типа CHARACTER обычне имеется одно значение KIND.
Типы REAL (и COMPLEX) имеют два значения KIND. По умолчанию (KIND=1) дается более низкий уровень точности, чем (KIND=2). (Аналогично этим значениям KIND в Fortran 77 имеется одиночная и двойная точности переменных.) Обычно можно использовать REAL с KIND=2, чтобы хранить более высокую точность и/или когда предполагается большой диапазон значений, как показано ниже:
REAL:: a! по умолчанию KIND=1
REAL(KIND=2):: b, c! большой диапазон и / или точность
COMPLEX(KIND=2):: d! большой диапазон и / или точность
Точный уровень точности значений может быть проверен с помощью встроенных функций. Встроенные функции RANGE(), HUGE(), PRECISION(), и др. Все дают информацию о пределах (ограничениях) KIND для переменных различных типов. Ниже примеры из компилятора NAG F90:
INTEGER:: a! по умолчанию KIND=3
INTEGER(KIND=2):: b
REAL:: c! по умолчанию KIND=1
REAL(KIND=2):: d! большой диапазон и / или точность
HUGE(b)! наибольшее число = 32767
HUGE(c)! наибольшее число = 3.4028235E+38
HUGE(d)! наибольшее число = 1.7976931348623157*10**308
RANGE(a)! наибольшая степень = 9
RANGE(d)! наибольшая степень = 307
PRECISION(c)! точность (в цифрах) = 6
PRECISION(d)! точность (в цифрах) = 15
Дата добавления: 2015-11-14; просмотров: 58 | Нарушение авторских прав
<== предыдущая страница | | | следующая страница ==> |
Более подробная информация | | | Тип Character |