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

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

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

ВВЕДЕНИЕ

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

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

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

5.4. Оператор GO TO

Большинство критиков Фортрана внушают своим слушателям, что программы на этом языке состоят сплошь из операторов с метками и безусловных переходов GO TO между ними. Читатель, ознакомленный с предыдущим материалом, может по достоинству оценить подобных «специалистов» с их представлениями о Фортране, соответствующими 60-м годам прошлого столетия. При программировании на современных языках высокого уровня (с высоким уровнем абстракции данных) скачкообразные переходы между блоками программы используются крайне редко, можно сказать только в экстренных случаях – но все-таки они необходимы.

В Фортране 90/95 оператор GO TO или (GOTO) имеет вид:

GO TO метка

где метка это метка оператора, соответствующая правилам записи программы в свободном формате (см. Пример 5.1).

Одним из немногих случаев, в которых необходим GO TO – это выход из внутреннего цикла в конструкции из нескольких вложенных циклов. Например, при обнаружении искомого элемента в многомерном массиве CUBE, следует прекратить поиск – что означает выход из структуры вложенных циклов (Пример 5.15).


unix-workdir

Пример 5.15. Поиск элемента в трехмерном массиве.

program FINDELM
integer , parameter ::N=3
integer, dimension(N, N, N):: CUBE=RESHAPE((/( I, I = 1, N*N*N)/), (/N, N, N/))
read*, ELM		!Введите целое число от 1 до 27
do I = 1, N
	do J = 1, N
		do K = 1, N
			if (CUBE(I, J, K) .eq. ELM) goto 10
		enddo
	enddo
enddo
10 continue
print*, I, J, K
end
		

Оператор EXIT позволяет выйти только из внутреннего цикла в предшествующий цикл, поэтому в данном случае логично воспользоваться оператором GO TO.