- •3.9. Ввод-вывод
- •Виды ввода-вывода данных
- •Управляемый списком ввод-вывод
- •Форматный ввод-вывод
- •3.10. Подпрограммы и функции
- •Структуры процедур
- •Вызов процедуры Вызов процедуры-подпрограммы осуществляется отдельным оператором следующего вида:
- •Упражнения
- •3.11. Массивы
- •Объявление динамических массивов
Упражнения
1. Составить программу вычисления площади кольца по значениям внутреннего и внешнего радиусов, используя процедуру вычисления площади круга (2 варианта: с подпрограммой и с функцией).
2. По координатам вершин треугольника вычислить его периметр, используя процедуру вычисления длины отрезка между двумя точками.
3. Даны три целых числа. Определить, у которого из них больше сумма цифр. Подсчет суммы цифр организовать через процедуру.
4. Определить площадь выпуклого четырехугольника по заданным координатам вершин. Использовать функцию вычисления длины отрезка и подпрограмму вычисления площади треугольника по формуле Герона.
5. Описать рекурсивную функцию pow(x, n) от вещественного x (x 0) и целого n, которая вычисляет величину xn согласно формуле
6. Даны натуральные числа n и m; найти НОД(n,m). Использовать программу, включающую рекурсивную функцию вычисления НОД, основанную на соотношении НОД(n, m) = НОД(m, r), где r –– остаток от деления n на m.
3.11. Массивы
Массив – это поименованное конечное множество однотипных элементов. Массив имеет имя. Каждый элемент массива имеет свой номер – индекс либо несколько индексов. Количество индексов определяется размерностью массива:
имя массива (индекс) – одномерный массив, например a(i);
имя массива (индекс1, индекс2) – двумерный массив, например a(i1, i2);
имя массива (индекс1,…, индекс n) – n-мерный массив, например a(i1,…, in).
Из сказанного выше следует, что массив характеризуется размерностью (числом измерений) или рангом. В Фортране ранг массива не может быть более семи. Массив ранга 1 обычно называют вектором, ранга 2 – матрицей. Скалярные величины имеют нулевой ранг.
Другая характеристика массива – размер. Размер определяет объем занимаемой памяти. Размер – это число элементов массива.
Тип массива – это общий тип всех его элементов. В Фортране допускается использование массивов всех встроенных типов.
По способу размещения в оперативной памяти массивы делятся на статические и динамические. Статические массивы размещаются в памяти во время компиляции. Под динамические массивы память выделяется во время исполнения программы. Динамические массивы могут иметь переменный размер, тогда как размер статических массивов в процессе выполнения программы изменяться не может.
Объявление статических массивов
Границы значений индекса массива могут задаваться в интервальной форме или одним значением верхнего индекса:
ТИП ИМЯ([нижний_индекс :] верхний_индекс)
Для статических массивов границы индекса задаются константами. Например:
real G(-10:5) – одномерный вещественный массив, индексы элементов которого могут принимать целые значения от -10 до 5. Размер массива равен 16. Другой вариант:
integer D(100) – одномерный массив целого типа, состоящий из 100 элементов. Нижнее значение индекса по умолчанию принимается равным 1.
Примеры описания двумерных массивов (матриц):
integer A(0:3,0:4) – целая матрица размером 20 (4×5);
integer A(3,4) – целая матрица размером 12 (3×4).
В описаниях массивов может использоваться ключевое слово DIMENSION. Примеры:
real, dimension(10) X - здесь dimension – атрибут размерности;
dimension X(10) – оператор описания массива; тип определяется по умолчанию.
При описании статических массивов можно использовать именованные константы. Например:
integer, parameter:: m = 3, n = 4
integer x(m, n) ! или x(1:m, 1:n)
integer,dimension(m, n) :: y
При объявлении статического массива может быть выполнена его иници-ализация:
integer а(10) /1,2,3,4,4,4,5,5,5,5/
или с использованием коэффициента повторения:
integer а(10) /1, 2, 3, 3*4, 4*5/.
Элементы двумерного массива располагаются в оперативной памяти в последовательности по столбцам. Например, в программе описан двумерный массив: integer g(3,3). В последовательной цепочке ячеек памяти компьютера его элементы расположатся в следующем порядке:
g(1,1), g(2,1), g(3,1), g(1,2), g(2,2), g(3,2), g(1,3), g(2,3), g(3,3).
При выводе массива с помощью оператора:
print *,g
его элементы расположатся на экране в указанном выше порядке.
Исходные значения многомерных массивов удобнее всего задавать с помощью файлов. Например, записать исходный массив в текстовый файл с помощью программы Блокнот, а затем в программе считать массив в оперативную память.