Студопедия
Случайная страница | ТОМ-1 | ТОМ-2 | ТОМ-3
АрхитектураБиологияГеографияДругоеИностранные языки
ИнформатикаИсторияКультураЛитератураМатематика
МедицинаМеханикаОбразованиеОхрана трудаПедагогика
ПолитикаПравоПрограммированиеПсихологияРелигия
СоциологияСпортСтроительствоФизикаФилософия
ФинансыХимияЭкологияЭкономикаЭлектроника

Спецификации или объявления

Материал взят из проекта Lahey: http://www.lahey.com/index.html, http://www.lahey.com/other.htm). | Возможности расширения языка | Вид семейства | Управление программой | Выражения для массивов | Секция (вырезка) массива | Модули и процедуры | Логические выражения | Массивы и производные типы | Оператор и конструкция IF |


Читайте также:
  1. Доступные спецификации метаданных
  2. Занятие. Настройка кампаний через ЯД Коммандер, запуск целевого трафика и прохождение модерации. Результат: Готовые к запуску кампании с объявлениями.
  3. НАДПИСИ И ОБЪЯВЛЕНИЯ
  4. НАДПИСИ И ОБЪЯВЛЕНИЯ
  5. НАДПИСИ И ОБЪЯВЛЕНИЯ
  6. НАДПИСИ И ОБЪЯВЛЕНИЯ
  7. ОБЪЯВЛЕНИЯ И ЖЕСТЫ РЕФЕРИ

Все переменные, использованные в программе, должны иметь ассоциированные с ними типы данных, такие как 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

mybiblioteka.su - 2015-2024 год. (0.008 сек.)