Implicit type(letters) [, type(letters), …]
type– один из встроенных или производных типов данных
letters– список букв или диапазонов букв.
Пример программы, содержащей явные и неявные описания типов данных:
Program decl !задается наименование программы - decl
Implicit logical (a-c, f) !переменные, имена которых начинаются на a,b,c
!или f, не описанные явно, считаются логическими
Real min,max !объявляются вещественные переменные min, max
f1=.true.; f2=.false. !переменным f1 и f2 логического типа (см. оператор
!implicit) присваиваются значения .true. и .false.
read *,x,y !ввод значений вещественных переменных х и у
!тип определяется неявно по именам переменных)
if (x>y) then !если x>y, логической переменной bool
bool=f1 !присваивается значение «истина», иначе – «ложь»
else
bool=f2
endif
print *, ‘x>y=’,bool !выводится результат – текст «x>y=» и значение
!переменной bool (символ «Т» в случае .true.
!и «F» в случае .false.)
end !конец программы
Буквальные константы служат для задания значений данных соответствующего типа, используются в арифметических и логических выражениях, в операторах вывода и т.д. Возможно задание арифметических (целых, вещественных, комплексных), логических и символьных буквальных констант.
Целые константы– целые числа со знаком или без знака. Примеры: +10, 10, -10_2 (после знака подчеркивания “_“ указано значение разновидности KIND = 2 для константы -10). Целые константы могут также быть заданы в различных системах счисления в видеоснование системы#число, например: 8#21 (число 21 в восьмеричной системе счисления, т.е. 17 в десятичной). Основанием системы счисления может быть любое число от 2 до 36.
Вещественные константымогут быть заданы вF-форме,E-форме,D-форме иQ-форме.F-форма задает числа с фиксированной точкой.E-форма,D-форма иQ-форма задают числа с плавающей точкой. Например число –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 - форма задает числа только двойной точности,Q-форма – расширенной точности.
Комплексные константы– две целые или вещественные константы (реальная и мнимая часть), заключенные в скобки и разделенные запятой. Реальная и мнимая части могут быть заданы вF-форме,E-форме,D-форме иQ-форме: (2.33, 0.044), (0.233E1, 0.44E-1), (0.233D+1, 0.44D-1), (-1.23Q-400,12.34Q4000), (44.36_4,-12.2E16_4).
Логические константы– их всего две: .TRUE. и .FALSE. Наличие обрамляющих точек обязательно. Примеры: .TRUE., .false._4. Логическим величинам можно присваивать и целые значения. При этом положительные значения воспринимаются как равные .true., а отрицательные и равные нулю – как .false.
Символьные константы– последовательность одного или более символов 8-битового кода, заключенная в апострофы или двойные кавычки. Символьная строка, после которой записан латинский символ С, образует СИ-строку (эскейп-последовательность в языке С), служащую для вывода непечатаемых символов (перевод строки, звуковой сигнал и др.). Примеры: ‘rezult=’, “Whatisyourname?”, ‘a’c(вывод звукового сигнала).
Символьные подстроки– непрерывные части текста внутри символьной строки. Строка при этом рассматривается как последовательность пронумерованных слева направо символов, начиная с первого. Общий вид подстроки:
str([n1]:[n2]),
где str – константы или переменной, n1 – номер первого символа подстроки, n2 – номер последнего символа подстроки. Если не задано значение n1, оно считается равным 1, если не задано значение n2, оно считается равным длине строки. Пример:
CHARACTER*25 FIO, name !FIO, name – символьные переменные
FIO = 'Ivanov Petr Andreevich' !присваивается значение переменной FIO
name= FIO(8:11) !значение переменой name - Petr
Константы двоичные, восьмеричные, шестнадцатеричные– не имеют типа данных, он предполагается численным и зависит от их применения. Представляют собой символ, обозначающий основание системы счисления (В – для двоичных, О – для восьмеричных,Z– для шестнадцатеричных), за которым следует число, записанное как символьная строка, т.е. заключенное в апострофы или двойные кавычки. Примеры:B'0101110', О752, Z'A4D'.
Присваивание начальных значений(инициализацию) данных можно выполнить двумя способами:
1) В операторах объявления типа, например:
integer, parameter:: m=4,n=5 !объявлены целые именованные константы
!m и n, которым присвоены значения 4 и 5
!разновидность по умолчанию, 4 байта
integer(2) d1/4/, d2/5/ !объявлены переменные d1, d2 целого
!типа (KIND=2), при такой инициализации
!наличие разделителя :: необязательно
real(8):: a = 2D0, b = 0.35D4 !объявлены и инициализированы
!переменные a, b двойной точности
complex:: C1, C2 = (10.5, 11.3) !объявлены комплексные переменные C1,
!C2 стандартной разновидности KIND = 4;
!C2 присвоено начальное значение
Logical:: m=5 !объявлена логическая переменная m,
!ее значение равно .true.
character(15):: st1=’example’, st2*20/’example_2’/ !объявлены
!и инициализированы две символьные
!переменные st1 длиной 15 символов
!и st2 длиной 20 символов
character(*), parameter:: st = ’example’ !для задания длины используется
!символ * при определении именованной
!константы; в этом случае длина равна
!числу символов константы
б) с помощью оператора DATA, общий формат которого:
DATA список имен /список значений/
Объекты в списке имен и в списке значений перечисляются через запятые и находятся в строгом соответствии слева направо. Пример:
integer d1, d2 !объявлены переменные d1 и d2
!целого типа стандартной разновидности
logical g1, g2 !объявлены логические переменные g1, g2
character bell !объявлена символьная переменная bell
data d1, d2 /34, 100/ !переменные инициализированы оператором
!data, d1=34, d2=100
data g1,g2 /.true., .false./ !логическим переменным g1, g2 с помощью
!оператора data присвоены значения:
!g1=.true., g2=.false.
data bell/'\a'c/ !символьной переменной bell присвоено
!значение Си-константы (звуковой сигнал)