ЛАБОРАТОРНЫЙ ПРАКТИКУМ: «ПРОГРАММИРОВАНИЕ НА ФОРТРАНЕ»
СТРУКТУРА ПРАКТИКУМА
ВВЕДЕНИЕ
ВАЖНАЯ ИНФОРМАЦИЯ
1. ПРАВИЛА ЗАПИСИ ПРОГРАММЫ
1. Набор символов Фортрана
2. Форматы записи программы
3. Фиксированный формат
4. Свободный формат
2. ТРАНСЛЯЦИЯ ПРОГРАММЫ
1. Программа в одном исходном файле
2. Трансляция исходного файла
3. Трансляция нескольких исходных файлов
4. Трансляция модулей
3. КОНЦЕПЦИЯ ДАННЫХ ЯЗЫКА ФОРТРАН
1. Имена (идентификаторы)
2. Понятие типа
3. Буквальные константы
4. Разновидности типов и диапазоны значений
5. Скалярные переменные и константы
6. Массивы
7. Производные типы данных
4. ВЫРАЖЕНИЯ И ПРЕОБРАЗОВАНИЕ ТИПОВ
1. Скалярное присваивание
2. Арифметика Фортрана
3. Логические выражения
4. Работа с текстовыми строками
5. Операции с массивами
5. УПРАВЛЯЮЩИЕ ОПЕРАТОРЫ
1. Условный оператор и конструкция IF
2. Оператор варианта – конструкция CASE
3. Циклы – разновидности конструкции DO
4. Оператор GO TO
6. ВВОД/ВЫВОД ДАННЫХ
1. Простейшие операции ввода/вывода
2. Форматный ввод/вывод данных
3. Ввод/вывод массивов в неявных циклах
4. Файловый ввод/вывод
7. ПРОГРАММНЫЕ КОМПОНЕНТЫ И ЭЛЕМЕНТЫ ООП
1. Структура программных компонентов
2. Внешние подпрограммы
3. Внутренние подпрограммы
4. Модули как библиотеки производных типов
5. Встроенные функции Фортрана
ЗАДАЧИ ДЛЯ ПРОГРАММИРОВАНИЯ
3.5. Скалярные переменные и константы
Все данные, используемые при программировании на Фортране, подразделяются на константы и переменные. Значение переменной может изменяться во время работы программы, а значение константы не может быть изменено.
Переменная всегда имеет имя (или идентификатор – п.3.1), а константы подразделяются на буквальные константы (п.3.3) и именованные константы (т.е. константы, имеющие идентификатор). Язык программирования Фортран 90/95 оперирует со скалярными переменными и константами, а так же с массивами.
Скаляр – это единичный (не являющийся массивом) объект данных (переменная или константа) одного типа.
Массив представляет собой индексированный (определенным образом пронумерованный) набор скаляров одного типа. Обращение к элементу массива осуществляется через имя массива и индекс элемента. Элементы массива могут быть либо только переменными, либо только константами.
Переменные и именованные константы описываются в начале программы, до первого исполнимого оператора.
Объявление именованных констант в Фортране 90/95 имеет следующий вид:
тип ([KIND=K]), PARAMETER :: Ик1=БК, Ик2=ИК, Ик3=ВЫР…
где тип – название (идентификатор типа), K – параметр разновидности типа в виде буквальной или именованной константы либо как целое арифметическое выражение.
Атрибут PARAMETER указывает, на то, что объекты данных, перечисленные через запятую после разделителя «::» (двойное двоеточие), являются именованными константами (с именами Ик1, Ик2, Ик3 и т.д.), которые могут быть инициализированы (инициализация – это присвоение первоначального значения) тремя способами:
- посредством буквальных констант – БК;
- через ранее определенные именованные константы – ИК;
- путем вычисления значения выражения соответствующего типа – ВЫР.
Во всех трех случаях необходимо, чтобы именованные константы были инициализированы значениями соответствующей разновидности типа: KIND=K. При этом значение параметра разновидности типа K может быть задано в виде целой константы (буквальной или ранее определенной именованной) или целого арифметического выражения.
Приведенные ниже примеры (Пример 3.7, 3.8, 3.9 и 3.10) иллюстрируют три способа инициализации именованных констант.
Пример 3.7. Инициализация именованных констант стандартной разновидности (параметр KIND не обязателен) через буквальные константы
program CONSTINIT1 real, parameter:: PI= 3.1415927, E= 2.7182817 print*, PI, E end
Пример 3.8. Инициализация именованных констант нестандартной разновидности. Параметр разновидности типа обязателен.
program CONSTINIT2 real (kind=8), parameter:: PI= 3.1415926535897931_8 real (8), parameter:: E= 2.7182818284590451_8 print*, PI, E end
Пример 3.9. Инициализация именованных констант через выражения, содержащие ранее определенные именованные константы.
program CONSTINIT3 real, parameter:: PI= 3.1415927, R=1., L= 2.*PI*R real, parameter:: S= PI*R**2. print*, PI, R, L, S end
Пример 3.10. Инициализация именованных констант с использованием математических функций.
program CONSTINIT4 real(8), parameter:: PI = acos(–1._8), E = exp(1._8) print *, PI, E end
Именованных константы могут быть инициализированы в стиле ФОРТРАН 77, в том числе, в соответствии с правилами неявного определения типов (Пример 3.11 и 3.12).
Пример 3.11. Инициализация именованных констант с запретом неявного определения типа.
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.12. Инициализация именованных констант с неявным определением типа (только для стандартной разновидности типа).
program CONSTINIT6 parameter (PI= 3.1415927, MIN = 0) parameter (E= 2.7182817, MAX =100) print*, PI, E, MIN, MAX end
Объявление и инициализация скалярных переменных в Фортране 90/95, аналогично объявлению именованных констант, за исключением атрибута PARAMETER, используемого только при объявлении констант.
тип ([KIND=K]) :: Пер1=БК, Пер2=ИК, Пер3=ВЫР…
Объекты данных, перечисленные через запятую после разделителя «::» (двойное двоеточие), являются переменными (с именами Пер1, Пер2, Пер3 и т.д.), которые, как и именованные константы могут быть инициализированы тремя способами:
- посредством буквальных констант – БК;
- через ранее определенные именованные константы – ИК;
- путем вычисления значения выражения ВЫР.
Во всех трех случаях переменные следует инициализировать значениями соответствующей разновидности типа: KIND=K.
Далее (Примеры 3.13 ÷ 3.16) приводятся примеры, иллюстрирующие объявление переменных в Фортране 90/95.
Пример 3.13. Инициализация переменных стандартной разновидности (параметр KIND не обязателен) через буквальные константы
program VARINIT1 real :: PI= 3.1415927, E= 2.7182817 print*, PI, E end
Пример 3.14. Инициализация переменных нестандартной разновидности. Параметр разновидности типа обязателен.
program VARINIT2 real (kind=8):: PI= 3.1415926535897931_8 real (8):: E= 2.7182818284590451_8 print*, PI, E end
Пример 3.15. Инициализация переменных через выражения, содержащие ранее определенные именованные константы.
program VARINIT3 real, parameter:: PI= 3.1415927, R=1. real:: L= 2.*PI*R, S= PI*R**2. print*, PI, R, L, S end
Пример 3.16. Инициализация переменных с использованием математических функций.
program VARINIT4 real(8):: PI = acos(–1._8), E = exp(1._8) print *, PI, E end
Пример 3.17. Инициализация переменных с запретом неявного определения типа.
program VARINIT5 implicit none ! Запрет неявного определения типа real (kind=8) PI, E integer MIN, MAX PI= 3.1415926535897931_8; E= 2.7182818284590451_8; MIN = 0; MAX = 100 print*, PI, E, MIN, MAX end
Переменные могут быть объявлены (в смысле типа) и инициализированы в стиле ФОРТРАН 77, в том числе, в соответствии с правилами неявного определения типов. При этом можно использовать свободный формат записи программы.
Пример 3.18. Инициализация переменных с неявным определением типа (только для стандартной разновидности типа).
program VARINIT6 PI= 3.1415927; E= 2.7182817; MIN = 0; MAX =100 print*, PI, E, MIN, MAX end