Материал: Аверянов Введение в оператсионные системы и основы программирования 2015

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам

gfortran -o vector_test vector_arithmetic.f95 vector_test.f95

Дело в том, что компилятор обрабатывает файлы последовательно и для успешной компиляции файла vector_test.f95, использующего модуль, требуется наличие файла vector_arithmetic.mod, а он появляется только после обработки файла vector_arithmetic.f95. Поэтому если переставить файлы:

gfortran -o vector_test vector_test.f95 vector_arithmetic.f95

то возникает ошибка компилятора, связанная с невозможностью открыть файл модуля: vector_arithmetic.mod.

3.3.КОНЦЕПЦИЯ ДАННЫХ ЯЗЫКА ФОРТРАН

3.3.1.Имена (идентификаторы)

Императивные языки программирования, к числу которых относится Фортран (а также Паскаль, Си, Бейсик и др.), в различной степени являются абстракцией компьютерной архитектуры фон Неймана. Две основные компоненты этой архитектуры − память и процессор. Ячейки памяти служат для хранения данных и команд, а процессор – для изменения состояния памяти.

Простейшими абстракциями ячеек памяти компьютера в императивных языках программирования являются переменные и константы. По существу, переменные и константы – ячейки машинной памяти (машинными словами измеряемыми, как правило, в байтах), адресация которых в программе осуществляется не по физическому адресу, а через имя (идентификатор). При этом для константы существует ограничение, связанное с запретом изменения ее значения. Адресация таких более сложных конструкций, как массивы и структуры данных (по сути состоящих из переменных и констант), также осуществляется через их имена. Имеют свои названия типы данных и программные компоненты (главная программа подпрограммы и модули).

Имя объекта – это выстроенная по определенным правилам последовательность символов алфавита языка. В Фортране 90/95 действуют следующие правила записи имен.

136

1.Строчные и прописные (большие и маленькие) буквы в Фортране не различаются.

2.Символьная длина имени не должна превышать 31 символ.

3.Имя может состоять из алфавитно-цифровых символов (букв и цифр) и символа подчеркивания – «_».

4.Первым символом имени обязательно должна быть буква.

Допустимые имена:

X ALFA Beta2S This_Is_Very_Long_Name (допустимо в Фортране 90/95)

Недопустимые имена:

2SBETA (первый символ не буква);

AL&FA (содержит недопустимый символ: «&»);

IT IS Impossible (содержит пробелы).

В языке Фортран 77, который является подмножеством языка Фортран 90/95, не допускаются имена длиннее шести алфавитноцифровых (A-Z, a-z, 0-9) символов (никакие подчеркивания и иные специальные символы из алфавита Фортрана не допускаются). При этом первым символом обязана быть буква.

Для имен (идентификаторов) и связанных с ними объектами данных в Фортране существует правило неявного определения типов (п. 3.3.2). Если в программе используется именованный объект данных (скаляр или массив – пп. 3.3.5, 3.3.6), тип которого не определен явно, то объект данных считается:

1)целым (INTEGER), стандартной разновидности целого типа (п. 3.3.4), если первым символом его имени будет одна из букв: 'I', 'J', 'K','L','M' или 'N', например: J, IND, LSTREAM и т.д.;

2)вещественным (REAL), стандартной разновидности вещественного типа (п. 3.3.4), если первым символом его имени будет любая другая буква, например: X, DIN, EPSILON.

Умолчаний по неявному определению других типов в Фортране не существует.

137

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

Строгий контроль типов необходим при разработке конечного программного продукта, но излишне загромождает программу, и тормозит работу при выполнении небольших оценочных и предварительных расчетов. Неявное определение типов легко отключить при помощи инструкции IMPLICIT NONE (пример 3.20).

Пример 3.20. Инициализация именованных констант с запретом неявного определения типа

program CONSTINIT5

implicit none ! Запрет неявного определения типа real (kind=8) PI, E

integer MIN, MAX

parameter (PI= 3.1415926535897931_8, E= 2.7182818284590451_8) parameter (MIN = 0, MAX = 100)

print*, PI, E, MIN, MAX end

3.3.2. Понятие типа

Фортран, как императивный язык программирования, имеет дело с числовыми символьными и логическими данными, т.е. с данными различных типов.

Тип данных в императивных языках определяется:

1)правилами записи (символьного представления) значений;

2)диапазоном допустимых значений;

3)набором действий и операций над данными этого типа. Например, значения целого типа (INTEGER) имеют привычное символьное представление в виде целых чисел, где целое число –

138

это последовательность цифр со знаком или без знака: «–123», «+98» или «4567», а также целый нуль, который может быть записан со знаком или без знака: «–0», «+0» или просто «0».

Диапазон допустимых значений целых чисел обычно лежит в пределах ±2147483647, в зависимости от параметра разновидности типа (п. 3.3.3). Для объектов данных целого типа определены стандартные арифметические действия: сложение, вычитание, умножение и деление.

ВФортране 90/95 определено пять встроенных типов данных, на основании которых могут быть созданы производные типы данных. Встроенные типы данных отражают характерные особенности организации памяти большинства компьютеров (архитектура фон Неймана) и наиболее распространенные способы хранения данных. Встроенные типы можно использовать непосредственно, без предварительных описаний и подключения каких-либо библиотек.

Такими типами являются:

INTEGER (целые числа);

REAL (вещественные числа);

COMPLEX (комплексные числа);

CHARACTER (текстовые символы и строки);

LOGICAL (ИСТИНА или ЛОЖЬ).

ВФортране 90/95 существуют средства создания производных типов данных на основе встроенных типов.

При написании программ на языке Фортран 77 можно также использовать специфический вещественный тип (не рекомендованный к использованию в Фортране 90/95): DOUBLE PRECSION (вещественные числа двойной точности).

Для объектов числовых типов определены стандартные арифметические действия и операции, для логического типа – логические операции, а для текстового типа – только операция конкатенации, т.е. слияния текстовых строк. Проблема точности (количества зна-

чащих цифр) решается через механизм разновидности типа

(п. 3.3.3).

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

139

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

Одно и то же число может иметь множество вариантов представления, например число «четыре» может быть записано как:

IV − римская символика;

4 − арабская символика, десятичное представление; 100 − арабская символика, двоичное представление и т.д.

Применительно к Фортрану (как и другим языкам программирования) необходимо понимать, что буквальная константа (или литералы в Си или Паскале) – это, прежде всего, способ его записи,

т.е. способ видимого представления этого числа.

Буквальные константы целого типа (INTEGER) представ-

ленные в десятичной системе – обычные целые числа (в том числе

нуль) со знаком или без знака:

 

 

0

+0

–0

12

+345 –675_8

423_K4

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

Иногда для различных задач удобно представлять положительные целые числа в двоичной, восьмеричной или шестнадцатеричной форме. Для числовых констант без знака в Фортране 90/95 предусмотрены следующие формы записи (например, для десятичного числа «1234»):

B‘10011010010’ – двоичное представление (основание 2); O‘2322’ – восьмеричное представление (основание 8); Z‘4D2’ – шестнадцатеричное представление (основание 16).

Буквальные константы вещественного типа (REAL) имеют стандартную форму записи с плавающей точкой, которая состоит из целой части со знаком или без знака, десятичной точки, дробной части и степенной части. Степенная часть состоит из буквы «E» (без относительно регистра) и целой части со знаком или без знака.

Если дробная (или целая) часть равна нулю, то ее можно не записывать, но десятичная точка обязательна:

0.0–.12 34. 5.64 –98.7E+10 +2.E–100_16

3.21E+99_LONG

140

Источник: https://studfile.net/preview/16708824/