Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Глава 3_1.doc
Скачиваний:
60
Добавлен:
13.03.2016
Размер:
358.91 Кб
Скачать

Разновидности числовых типов данных

Тип и разновидность

Диапазон изменения

Число байт

Целый

INTEGER(1)

От-128 до+127

1

INTEGER(2)

От –32 768 _до +32 7б7_

2

INTEGER(4)

от –2 147 483 648 до +2 147 483 647

4

Вещественный

REAL(4)

Отрицательные числа:

от -3.4028235E+38 до -1.1754944E-38

Число 0

Положительные числа:

от +1.1754944E-38 до +3.4028235E+38

Дробная часть может содержать до 6

десятичных знаков

4

REAL(8)

Отрицательные числа:

от -1.797693134862316D+308

до -2.225073858507201D-308

Число 0.

Положительные числа:

от +2.225073858507201D-308

до + 1.797693134862316D+308

Дробная часть может содержать до 15

десятичных знаков

8

Комплексный

COMPLEX(4)

То же, что и COMPLEX. Состоит из пары вещественных чисел REAL(4), задающих действительную и мнимую часть комплексного числа

8

COMPLEX(8)

Состоит из пары вещественных чисел двойной точности REAL(8)

16

Логический тип данных

Величина логического типа принимает два значения: .TRUE. – ис­тина и .FALSE. – ложь. Переменные величины стандартного логического типа объявляются оператором LOGICAL или LOGICAL(4), например:

logical flag

logical(4) flag

Для логической величины 4 байта – сильно избыточный объем памяти. Используя указание на разновидность, можно сократить этот объем до 2-х или до 1-го байта:

logical(2) flag или logical(kind = 1) flag

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

Константы бывают буквальными (неименованными) иименованными.

Примеры буквальных целых констант: 1 0 666 -44811 +36.

Формат записи целых констант:

[знак] [[основание] #] константа [_разновидность типа]

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

Константа Тип (разновидность)

12_1 INTEGER(1)

12_2 INTEGER(2)

12_4 INTEGER(4)

Целые константы можно задавать в различных системах счисления (2, 8, 10, 16). Если константа десятичная, то основание обычно не указывается. Если используется символ # и не указано основание, это означает, что константа шестнадцатеричная.

Пример.Запишем представление десятичного числа 50 в форме целой константы стандартной разновидности в других системах счисления:

двоичная система: 2#110010

восьмеричная система: 8#62

шестнадцатеричная система: #32 или 16#32

Вещественные буквальные константы состоят из целой части числа со знаком или без знака, десятичной точки, дробной части и степенной ча­сти. Например: 1.0 0.01 1е-6 6.76е3.

Вещественные константы одинарной и двойной точности могут быть представлены в F- форме, E- форме, D- форме.

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

Например: +3.71 1.3_4 13.0_8 167. –0.3 –.01

В E- и D- форме: [мантисса]E [знак]порядок[_разновидность типа]

В записи константы двойной точности разделитель E заменяется на D и разновидность типа не указывается. Например, pi=3.141592653589793D+00.

Комплексная константа записывается в виде пары буквальных констант целого или вещественного типа, разделенных запятой и заключенных в скобки. Например: (2.5, 0.75).

Текстовые литералы состоят из строки произвольных символов, заключенных в кавычки либо апострофы (пример: 'Рога и копыта'). Кавычка или апостроф, являющиеся частью строки, должны быть удвоены: '0''Henry'. Заметим, что длина последней строки считается равной семи.

Логических констант две: . true. и . false. (" истина" и "ложь" соответственно).

Описания

Величины разных типов (прежде всего целые и вещественные) принципиально по-разному представляются на машинном уровне (внутреннее представление данных), и однотипные действия над ними (например сложение) программируются с помощью различных команд. Для выполнения компиляции необходимо задать свойства операндов, т.е. указать их типы. Эти указания даются в операторах описания, которые влияют только на процесс компиляции и потому не считаются выполняемыми операторами.

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

Оператор описания в любом случае начинается с указания свойства или списка свойств. Далее (при нескольких атрибутах – обязательно после сдвоенного двоеточия) перечисляются имена обладающих этими атрибутами величин. Одна величина может упоминаться в нескольких описаниях, но ей не могут присваиваться повторяющиеся или противоречащие друг другу свойства. Оператор описания в общем случае имеет вид

имя_типа [,атрибуты ::] список_переменных

Примеры описания переменных встроенных типов:

integer k

real :: x,y

double precision :: z complex :: voltage

character(len=20):: heading logical test

dimension :: x(30), y(0:4,0:5)

Переменная heading имеет дополнительным атрибутом описателя длину строки. Опера­тор dimension дополнительно к ранее назначенным типам значений х и у указывает структуру упомянутых объектов: это массивы с определяемой граничными парами нумерацией компонент (х – вектор, у – матрица).

Комплексные константы записываются парой чисел, заключенных в круглые скобки. Вещественная и мнимая части комплексной переменной, объявленной как complex, получают атрибут real. При указании double complex они будут представлены с двойной точностью.

Инициализация переменной. Инициализация – это определение начального значения переменной, совмещенное с описанием ее типа. Например:

real:: delta=1.0e-10

integer (4)::index=1, g=100

Употребление двойного двоеточия здесь обязательно. Инициализированное значение переменной присваивается на стадии компиляции. Затем в процессе исполнения программы это значение может быть изменено.

Правила умолчания типа. Фортран 90 не принадлежит к языкам со строгой типизацией. Если тип некоторого объекта не задан, он определяется по умолчанию: объекты с именами, начинаю­щимися на i, j, k, l, m, n, относятся к стандартному целому типу, остальные к вещественному.

Правила умолчания, применяемые в данной программной единице, можно изменить и/или дополнить оператором implicit вида

implicit real (k,n,m), complex (p-t)

После этого все переменные, имена которых начинаются с букв k, n, m, будут иметь вещественный тип, а имена, начинающиеся с буквp, r, s, t, будут относиться к величинам комплексного типа.

Случайная описка в имени порождает подменяющую нужный объект новую переменную, что приводит к трудно диагностируемым ошибкам периода выпол­нения программы. Полезную возможность полной отмены умолчаний предоставляет оператор implicit none. При его использовании любая ссылка на неописанную переменную будет воспри­ниматься как синтаксическая ошибка.

Бывает трудно составить исчерпывающий список объектов программы до то­го, как записаны ее операторы. Обычно программирование начинают с минимума описаний и, составляя программу, дополняют этот список по мере необходимости. Завершив программу, окончательно оформляют описания – объединяют по типам, упорядочивают имена по алфавиту, комментируют описания отдельных объектов или их групп, задают начальные значения.

Именованные константы. Часто употребляемые константы для защиты от случайных изменений удобно именовать, указывая тип константы, атрибут parameter и значение константы. Например:

real, parameter :: с=299792.458 ! скорость света в км/с

Далее ссылка на константу будет происходить по имени. Любая попытка изменить значение именованной константы будет блокирована. В одном операторе можно указать через запятую несколько констант, причем последующие могут определяться выражениями через предыдущие.

Метки. Перед любым оператором, не являющимся частью составного оператора, можно поставить (через пробел) метку. Метка задается целым числом не более чем из 5 цифр, начальные нули незначимы. Ссылаться по меткам можно только на выполняемые операторы и операторы format. Примеры использования меток:

10 read x,y

255 format(f10.4)