Пример выполнения задания лабораторной работы № 4
Тема: Работа с двумерными массивами.
Цель работы: Составление программы для обработки элементов двумерных массивов.
Теория: Краткие сведения из теории ………
Пример варианта задания:
Составить блок-схему (рис 9.) и программу выборки минимального элементаизмассива А (М, N), используя форматный вывод. (М, N≤ 20)
PROGRAM MIN_EL
DIMENSION A (20, 20)
*IrinaI418z
|
READ(5,*) N, M
PRINT *,'ввести элементы массива'
READ (5,*) ((A( I,J ), I = 1, N), J=1,M)
AMIN = A (1,1)
DO 2 I = 1, N
DO 2 J = 1, M
IF (А( I, J).GE. AMIN) GOTO 2
AMIN = A ( I, J ) да
2 CONTINUE
PRINT*, 3, AMIN нет
|
END
Введите N, M
3 3
Введите элементы массива
-2 5 3 1 0 25 7 11 9
Ответ: AMIN -2 Рис. 9
РАЗДЕЛ V.Лабораторная работа № 5
Программные единицы
Все рассмотренные до сих пор программы состояли из одной программной единицы, начинавшейся с оператора PROGRAM. Однако программа на Фортране может состоять из нескольких программных единиц. Такая составная программа всегда содержит главную программную единицу, или главную программу, и одну или несколько подпрограмм.
Главная программа, как следует из названия, является ведущей программной единицей, и обработка всей программы начинается с первого исполняемого оператора главной программы. При записи на диске или на бумаге главную программу обычно располагают в начале всей программы, за главной программой следуют подпрограммы. Порядок следования подпрограмм значения не имеет.
Нередко последовательность команд, выполняющих конкретное вычисление, необходимо повторить в нескольких различных точках программной единицы. Записывать эту последовательность команд несколько раз слишком трудоемко. Существует специальный механизм, позволяющий записать последовательность команд только один раз и выполнить ее в тех точках программы, где это необходимо. Для этого нужная последовательность команд соответствующим образом оформляется, в виде отдельной программной единицы, называемой подпрограммой. Идея подпрограммы оказалась очень плодотворной, стало возможным создание больших библиотек подпрограмм, написанных специалистами, компоновка сложных программ из библиотечных подпрограмм и подпрограмм, написанных программистом. Программист избавлен, таким образом, от необходимости тратить массу времени на написание своих собственных программ, выполняющих стандартные, математические вычисления. Эта идея использована и при построении стандартных функций Фортрана. Например, в операторе Х = - В + SQRT(В*В - 4.0*А*С) находится значение аргумента функции SQRT (т.е. делаются вычисления в скобках). Затем переход ко встроенной функции (т.е. подпрограмме) SQRT, которая выполняет последовательность команд по вычислению квадратного корня. Найденное значение корня возвращается в арифметическое выражение и вычисление значения этого выражения продолжается.
Имеются два основных типа подпрограмм: FUNCTION (подпрограммы – функции) и SUBROUTINE подпрограммы. FUNCTION во многом подобна стандартным функциям языка Фортран, вычисляет единственное значение и возвращает управление в вызывающую программную единицу вместе с вычисленным значением.
SUBROUTINE - подпрограммы позволяют решать более сложные задачи, например, такие как сортировка чисел в массиве, вычислять координаты центра тяжести тел сложной формы, выполнять сложные операции вывода и т.п.
Программная единица, из которой осуществляется вызов подпрограммы, называется вызывающей программной единицей или программным модулем. Часто это главная программа, но вызывающей программной единицей может быть и подпрограмма. В Фортране запрещен вызов подпрограммы из самой себя непосредственно или через другую программную единицу.
5.2. Оператор FUNCTION
Определение подпрограммы - функции всегда начинается с оператора FUNCTION. За ним указывается имя функции, а затем - список аргументов в скобках. Перед ним может быть описатель типа REAL или INTEGER. Таким образом, общая форма оператора определения функции имеет вид: тип FUNCTION имя (список аргументов)
Имя функции дается по общим правилам для имен переменных. Следует избегать употребления в операторе FUNCTION имен стандартных функций. Если выбранное имя функции совпадает с именем стандартной функции, то будет вычисляться значение стандартной функции, за исключением случаев, которые будут рассмотрены позже.
Возвращаемое в вызывающую программную единицу вычисленное значение связано с именем функции, поэтому тип этого значения определяется либо по имени функции в соответствии со стандартным соглашением о типах, либо типом функции, явно указанным в операторе FUNCTION.
Информация, необходимая для вычисления значения функции, передается из вызывающей программной единицы через аргумент функции. Тип аргументов и их количество зависят от назначения функции. В качестве аргументов функции чаще всего используются простые вещественные и целые переменные. Аргументы отделяются друг от друга запятыми. Весь список аргументов заключается в скобки. Скобки обязательно должны быть, даже если аргументов нет. Теперь рассмотрим примеры операторов FUNCTION F(X)Этот оператор определяет функцию с именем F, вычисляющую вещественное значение. Она имеет один вещественный аргумент, обозначенный в определении функции буквой X. Оператор REAL FUNCTION LONG(А, В) определяет функцию с именем LONG, которая вычисляет вещественное значение и имеет два аргумента вещественных, обозначенных буквами А и В. Если бы не был указан тип функции REAL, то функция LONG в соответствии с соглашением о типах вычисляла бы целое значение. При использовании этой функции необходимо в вызывающей программной единице объявить имя - LONG вещественнымпри помощи оператораREAL.
Оператор INTEGER FUNCTION COUNT (I, J, Y) определяет функцию с именем COUNT, которая выдает целое значение и имеет два целых аргумента Iи J и один вещественный аргумент Y.
Оператор FUNCSION NCHEK ( ) определяет функцию с именем NCHEK, которая выдает целое значение и не имеет аргументов, однако скобки в записи оператора опустить нельзя.