Информационные системы ускорителей

ЛАБОРАТОРНЫЙ ПРАКТИКУМ:
«ПРОГРАММИРОВАНИЕ НА ФОРТРАНЕ»

СТРУКТУРА ПРАКТИКУМА

ВВЕДЕНИЕ

ВАЖНАЯ ИНФОРМАЦИЯ

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. Встроенные функции Фортрана

ЗАДАЧИ ДЛЯ ПРОГРАММИРОВАНИЯ

4. ВЫРАЖЕНИЯ И ПРЕОБРАЗОВАНИЕ ТИПОВ

4.1. Скалярное присваивание

Если с точки зрения элементарной математики запись X=X+1, констатирующая равенство левой и правой части не имеет смысла, ввиду отсутствия значения X, удовлетворяющего такому уравнению, то для программирования такая запись имеет важный практический смысл. Символ «=» (знак равенства в математике) используется в таких языках, как Фортран, Си и ряде других, для того, чтобы записать значение выражения X+1 (вычисленного для текущего значения переменной) в ячейку памяти X. Тем самым текущее значение переменной X заменяется новым, равным величине текущего значения X, увеличенного на единицу или, как говорят, переменной X, посредством оператора присваивания «=», присваивается новое значение, равное X+1.

Действие оператора присваивания наглядно иллюстрируется Примером 4.1. После инициализации вещественной переменной X нулем ее значение три раза подряд инкрементируется (увеличивается на единицу). То есть берется текущее значение X, к нему добавляется единица и получившееся значение записывается в переменную X посредством оператора присваивания. С помощью этого оператора можно присваивать значения переменным и именованным константам всех встроенных типов Фортрана.


Пример 4.1. Иллюстрация работы оператора присваивания

program ASSIGN
real :: X=0; print*, X
X=X+1; print*, X
X=X+1; print*, X
X=X+1; print*, X
end
	

Рассмотрим общую форму скалярного числового присваивания, она имеет вид: ПЕР = ВЫР, и подразумевает, что переменной ПЕР присваивается значение, полученное в результате вычисления выражения ВЫР (под выражением может подразумевается не только какая либо вычислительная формула но и переменная, а также именованная или буквальная константа).

Идеальный и наиболее быстрый, с точки зрения работы программы, вариант, когда переменная слева от оператора присваивания (ПЕР) и объект, справа от него (ВЫР) являются данными одного типа, с одним значением параметра разновидности типа KIND. В противном случае автоматически будет произведена процедура преобразования типа в соответствии с Таблицей 4.1. Т.е. результат вычисления выражения преобразуется к типу переменной, с соответствующим параметром разновидности KIND, с использованием стандартных функций Фортрана: INT, REAL, CMPLX и KIND, приведенных в Приложении 1.


Таблица 4.1. Преобразование типов при выполнении присваивания.

Тип переменнойПреобразование выражения
INTEGER INT( ВЫР, KIND=KIND(ПЕР))
REAL REAL( ВЫР, KIND=KIND(ПЕР))
COMPLEX CMPLX(ВЫР, KIND=KIND(ПЕР))

Вывод в отношении вышесказанного и дальнейших пунктов этого параграфа довольно простой – необходимо следить за соответствием типов при написании выражений и присваиваний.