- •Лекция 3
- •3. Алгоритмический язык фортран /3,5,11/
- •3.1. Историческая справка
- •1978 Г., Фортран 77.
- •3.2. Элементы языка Фортран
- •3.2.1. Алфавит, форматы записи программы
- •3.2.2. Имена, объекты данных, атрибуты
- •3.2.4. Программные единицы
- •3.3. Порядок следования операторов и метакоманд в программной единице
- •3.4. Организация данных
- •3.4.1. Типы данных
- •3.4.2. Описание несимвольных типов данных
- •3.4.3. Буквальные (неименованные) константы
- •3.4.4. Задание именованных констант
- •3.4.5. Задание начальных значений переменных
- •3.4.6. Символьные данные
- •3.5. Выражения, операции и присваивания
- •3.5.1. Арифметическое выражение
- •Integer(2)
- •Integer(4)
- •3.5.2. Выражения отношения и логические выражения
- •3.5.3. Правила вычисления выражений
- •3.5.4. Константные и описательные выражения
- •3.6. Управляющие операторы и конструкции
- •3.6.2. Конструкция select case
- •1 Continue
- •3.6.5. Операторы pause, stop, end
- •3.7. Форматный ввод-вывод
- •3.7.1. Вводный комментарий
- •3.7.2. Оператор format
- •3.7.3. Дескрипторы данных
- •3.7.4. Дескрипторы управления
- •3.7.5. Задание формата в операторах ввода-вывода
- •20 Format (f5.0, 2p, 2f5.0, 3p, f5.0)
- •21 Format (1x, 2p, e10.3, 3x, 3p, f10.3)
- •3.7.6. Списки ввода-вывода
- •3.7.7. Управляемый списком ввод-вывод
- •Namelist / имя списка b/b / список переменных &
- •24.000000 Qwertyuiop sub
- •3.8. Массивы
- •3.8.1. Описание размерности статических массивов
- •3.8.2. Сечение массива
- •3.8.3. Присваивание значений элементам массива
- •Where (логическое выражение - массив) присваивание массива
- •3.8.4. Динамические массивы
- •Integer n, m, kp
- •Integer I
- •Interface
- •3.8.5. Массивы – формальные параметры процедур
- •Integer n, m, j
- •Integer n, I, j
- •Interface
- •3.9. Файлы Фортрана
- •3.9.1. Основные понятия
- •3.9.2. Операции над внешними файлами
- •3.9.3.Операторы передачи данных
- •Endfile u
- •3.9.4. Порядок выполнения передачи данных
- •3.9.5. Операторы подсоединения устройств к файлам
- •24.000000 Qwertyuiop sub
- •3.9.6. Операторы позиционирования файла
- •3.10. Встроенные функции и процедуры
3.2.2. Имена, объекты данных, атрибуты
Имя (идентификатор) – это непустая последовательность букв, цифр, символа $ или знака “подчерк”, начинающаяся с буквы или символа $. В зависимости от метакоманды компилятор идентифицирует имя по 6 или 31 символу. Регистр букв не является значащим.
Объектами данных в фортран-программе являются константы, переменные и массивы.
Пример расположения в памяти ВМ массива .
a111 a211 a311 a121 a221 a321 a112 a212 a312 a122 a222 a322
a113 a213 a313 a123 a223 a323 a114 a214 a314 a124 a224 a324
Атрибут – это признак (неотъемлемое свойство).
3.2.3. Выражения, операции, оператор присваивания
выражения бывают: арифметического, логического, символьного и производного типов.
Оператор присваивания обозначается знаком равенства (=) и записывается в виде:
ИмяПеременной = выражение
3.2.4. Программные единицы
Программные единицы:
головная программа,
модули,
внешние процедуры,
внутренние процедуры,
программные единицы BLOCK DATA.
Головная программа PROGRAM имя-программы
3.3. Порядок следования операторов и метакоманд в программной единице
Таблица 3.1
Последовательность операторов и метакоманд FPS
$INTEGER, $REAL, $[NO]SRICT, $OPTIMIZE |
$ATTRIBUTES |
||
BLOCK DATA, FUNCTION, MODULE, PROGRAM, SUBROUTINE |
$[NO]DEBUG $[NO]DECLARE $DEFINE, $UNDEFINE $IF, $IF DEFINED $ELSE, $ELSEIF, $ENDIF $FIXFORMLINESIZE $[NO]FREEFORM $INCLUDE, $LINE $LINESIZE, $[NO]LIST $MESSAGE $OBJCOMMENT, $PACK $PAGE, $PAGESIZE $SUBTITLE, $TITLE |
||
USE-операторы |
|||
IMPLICIT NONE |
PARAMETER
DATA |
ENTRY
FORMAT |
|
IMPLICIT |
|||
Определения производных типов Интерфейсные блоки Операторы объявления типа Операторы объявления Операторные функции |
|||
Исполняемые операторы |
|
||
CONTAINS Внутренние и модульные процедуры END |
Таблица 3.2.
Операторы программных компонентов
Операторы |
Головная программа |
Модуль
|
BLOCK DATA |
Внешняя процедура |
Модульная процедура |
Внутренняя процедура |
Тело интерфейса |
USE |
Да |
Да |
Да |
Да |
Да |
Да |
Да |
ENTRY |
Нет |
Нет |
Нет |
Да |
Да |
Нет |
Нет |
FORMAT |
Да |
Нет |
Нет |
Да |
Да |
Да |
Нет |
Объявления |
Да |
Да |
Да |
Да |
Да |
Да |
Да |
DATA |
Да |
Да |
Да |
Да |
Да |
Да |
Нет |
Определения производных типов |
Да |
Да |
Да |
Да |
Да |
Да |
Да |
Интерфейсные блоки |
Да |
Да |
Нет |
Да |
Да |
Да |
Да |
Операторные функции |
Да |
Нет |
Нет |
Да |
Да |
Да |
Нет |
Исполняемые операторы |
Да |
Нет |
Нет |
Да |
Да |
Да |
Нет |
CONTAINS |
Да |
Да |
Нет |
Да |
Да |
Нет |
Нет |
Пример простейшей программы, иллюстрирующей присваивание, ввод с клавиатуры и вывод на экран.
program t1 ! t1 – имя программы
real a, b, c ! описание перемененных вещественного типа
print *, ‘Input а’ ! вывод на экран сообщения: Input а
read *, a ! ввод значения в переменную а (допустим 2)
b=3. ! присваивания переменной b значения 3
c=a*b+b ! вычисления значения переменной с
print *, ‘b=’, b ! вывод на экран значения переменной: b= 3
print *, ‘c=’, c ! вывод на экран результата: с= 9
end program t1 ! end – обязательный оператор завершения программы