ВВЕДЕНИЕ В ФОРТРАН
Как пользоваться этим руководством.
Концепция данных Фортрана.
Типы и буквальные константы.
Имена (идентификаторы).
Переменные и константы.
Скаляры и массивы.
Именование данных.
Печать текста и чисел на экран.
Hello World!
Печать целых чисел.
Печать вещественных чисел.
Печать текста.
Когда format предпочтительней.
Арифметические и текстовые выражения.
Арифметические операторы и правила.
Вещественная арифметика.
Целая арифметика.
Смешанная арифметика.
Текстовые выражения.
Инициализация переменных и констант.
Оператор присваивания.
Инициализация скалярных констант.
Инициализация массивов констант.
Ввод данных с клавиатуры.
DATA-инициализация скалярных переменных.
DATA-инициализация массивов переменных.
Условные опреаторы.
Логические выражения.
Оператор IF.
Конструкция IF.
Конструкция CASE.
Циклы.
Цикл с фиксированным числом повторений.
Цикл с выходом по условию.
Пресловутый GOTO.
Неявные циклы.
Процедуры и функции.
Подпрограммы-процедуры.
Подпрограммы-функции.
Комплексный пример: сортировка массива.
Встроенные функции Фортрана.
Работа с внешними файлами.
Файловый ввод/вывод.
Открытие/закрытие файла.
Позиционирование файла.
ВВОД ДАННЫХ С КЛАВИАТУРЫ.
Начльные значения данных могут быть введены с клавиатуры, для этого используется оператор READ, форма записи которого, в точности повторяет форму записи PRINT. После ключевого слова указывается форматная информация или "звездочка", а затем, через запятую, список ввода. Это называется ввод под управлением списка.
Программа RDINP, в числе прочих, демонстрирует возможность так называемого непродвигающего ввода/вывода на примере считывания переменной Z. Обычно перед вводом печатается сообщение о том, какие данные необходимо ввести. Курсор при этом переводится на следующую строку. Чтобы предотвратить перевод строки, в конце формата вывода указывается символ "$" (знак доллара). Такой вариант непродвигающего вывода не задокументирован в стандартах ФОРТРАН-77 и Фортран-90, однако поддерживается многими компиляторами. Вариант, документированный в стандарте Фортран-90 будет рассмотрен в разделе "Работа с внешними файлами".
program RDINP parameter( N = 2) dimension MATRIX(N, N) print'(1x,''введите X,Y'')' read*, X, Y print'(1x,''введите Z = ''$)' read*, Z print*, X, Y, Z print'(1x,''введите матрицу MATRIX построчно:'')' c Для матрицы MATRIX i - номер строки, j - номер столбца read*, ((MATRIX(i,j), j=1, N), i=1,N) print'(1x,''Вывод MATRIX построчно:'')' print'(2(1x,i2))',((MATRIX(i,j), j = 1, N), i=1, N) print'(1x,''Строки и столбцы поменялись!:'')' print'(2(1x,i2))', MATRIX end
Спецификации формата при вводе те же, что и при выводе данных. Формат при вводе не столь актуален, поскольку буквальные константы, отвечающие за представление данных можно вводить в любом допустимом виде. Ввод под управлением списка все "проглотит".
Если в операторе ввода последовательно считывается несколько чисел подряд, то они должны разделяться пробелами или запятыми (безразлично). Можно каждое новое число вводить с новой строки - это тоже допускается, а если вводятся текстовые константы, то именно этот режим ввода предпочтительней. Ввод текстовых данных, пожалуй, единственный случай, когда формат актуален (напомним, что за формат текстовых данных отвечает дескриптор "A", с указанием после него символьной длины текста).
В предыдущем пункте отмечалось, что для печати массива достаточно указать в списке вывода его имя. Однако, следует учитывать, что элементы массивов хранятся в оперативной памяти последовательно, один за другим. Поэтому, если подобным образом печатать матрицу NxN в табличном виде, выводя по N элементов в строке, то столбцы окажутся строками, а строки столбцами.
Дело в том, что при хранении двумерной матрицы, сначала следуют элементы первого столбца, затем второго и т.д., то есть в Фортране матрицы хранятся "по столбцам". Поэтому при выводе необходимо контролировать изменение индексов строк и столбцов используя циклы: явные или неявные, как в программе RDINP.