Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
57
Добавлен:
02.05.2014
Размер:
527.87 Кб
Скачать

If(y1(1).Gt.Y1(2)) write(*,*)'Максимум на левой границе

* отрезка=',Y1(1)

DO 8 I=2,99

  1. IF(Y1(I).GT.Y1(I-1).AND.Y1(I).GT.Y1(I+1))WRITE(*,*)'Локальный

* максимум=',Y1(I)

If(y1(100).Gt.Y1(99)) write(*,*)'Максимум на правой границе

* отрезка=',Y1(100)

25. Подпрограмма subroutine.

Общий вид записи подпрограммы SUBROUTINE:

SUBROUTINE имя (список формальных параметров)

RETURN

END

Вызов подпрограммы SUBROUTINEосуществляется при помощи оператораCALL:

CALL имя (список фактических параметров)

Отличия подпрограммы SUBROUTINEот подпрограммы-функции:

  • имя подпрограммы SUBROUTINEне имеет значения типа;

  • результатом работы подпрограммы SUBROUTINEмогут быть одно или несколько чисел, массив, несколько массивов. Эти результаты могут передаваться в головную программу, а могут и не передаваться.

  • список формальных параметров может отсутствовать вообще.

Подпрограмма типа SUBROUTINE– основной объект программирования на языке ФОРТРАН. Любая большая задача разбивается на подпрограммы, эти программы отлаживаются и тестируются по отдельности. Головная программа служит лишь для ввода исходных данных, поочерёдного обращения к различным подпрограммам, записи и обработки полученных результатов. В программировании признан рациональным модульный принцип построения программ (разбиением на подпрограммы).

Правила соответствия формальных и фактических параметров:

Так же, как и в подпрограмме-функции, эти параметры должны соответствовать:

  • по количеству;

  • очереди следования;

  • по типу данных;

  • массивы должны соответствовать по размерности.

Формальными параметрами подпрограммы могут быть:

  • переменные

  • имена массивов

  • имена функций

  • символ ‘ * ’, обозначающий метку.

При обращении к подпрограмме с помощью оператора CALLнеобходимо указать имя подпрограммы и список фактических параметров.

Фактическими параметрами могут быть:

  • константы;

  • арифметические выражения;

  • переменные;

  • массивы;

  • имена функций;

  • номера меток.

В списке фактических (формальных) параметров должны быть величины, которые служат как исходными данными для работы подпрограммы, так и величины, которые являются результатами работы подпрограммы.

Результатом работы подпрограммы могут быть:

  • одно число;

  • несколько чисел;

  • массивы данных.

При выполнении оператора CALLголовной программы управление передаётся в подпрограмму, где происходят все вычислительные действия. При достижении оператораRETURN, осуществляется выход из подпрограммы и управление передаётся в головную программу к оператору, следующему после оператораCALL.

Примечания:

Списки имён переменных и имена меток каждой подпрограммы независимы друг от друга и могут повторяться.

Вычислительный процесс каждой подпрограммы также независим от головной программы.

Одна подпрограмма может обращаться к нескольким другим подпрограммам и может содержать оператор-функции.

Стыковка между подпрограммами осуществляется только через список формальных – фактических параметров или посредством оператора COMMON.

Задача:

Найти значение из выражения:

При составлении программы использовать подпрограмму SUBROUTINEдля вычисления: максимального элемента массива, минимального элемента массива, суммы квадратов элементов массива.

С Подпрограмма MAMIS

SUBROUTINE MAMIS(A,N,SUM2,MAX,MIN)

Хотя имя подпрограммы и начинается на букву М, в подпрограммах SUBROUTINE первая буква подпрограммы не задает типа функции (целого или вещественного). В списке формальных параметров: А – имя массива; N – размерность массива; SUM2, MAX, MIN – значения суммы квадратов элементов массива, максимального элемента массива, минимального элемента массива (эти данные из подпрограммы передадутся в головную программу).

REAL MAX,MIN

Описываются переменные MAX, MIN как вещественного типа, так как действует правило имён переменных языка ФОРТРАН (I, J, K, L, M, N), иначе эти переменные получатся целого типа.

DIMENSION A(N)

Динамическое описание массива (см. выше)

SUM2=A(1)**2

MAX=A(1)

MIN=A(1)

DO 3 I=2,N

SUM2=SUM2+A(I)**2

IF(A(I).GT.MAX) MAX=A(I)

3 MIN=AMIN1(A(I),MIN)

RETURN Осуществляется выход из подпрограммы в головную программу. Управление будет предано оператору, следующему после CALL.

END

С Головная программа

DIMENSION A(10), B(20), C(15)

READ (5,*) A,B,C

CALL MAMIS(A,10,ASUM,AMA,AMI)

Здесь и далее в подпрограмму MAMIS посылаем в качестве фактических параметров: имя массива – А; количество элементов этого массива – N=10; обратно получим сумму квадратов элементов засланного массива – ASUM; максимальный элемент массива – АМА; минимальный элемент массива – AMI. Значения ASUM, AMA, AMI мы можем использовать далее в головной программе. Например: рассчитать первое слагаемое.

BET=SIN(ASUM/(AMAAMI))

CALL MAMIS(B,20,BSUM,BMA,BMI)

CALL MAMIS(C,15,CSUM,CMA,CMI)

BET=BET+COS(BSUM/(CMA+CMI))**2–2.*SQRT(CSUM/CMA)

Отметим, что переменные BMA, BMI в головной программе не используются. Но при обращении к подпрограмме их необходимо указать, чтобы не нарушить правила соответствия формальных и фактических параметров.

WRITE (6,*) BET

PAUSE

STOP

END

Соседние файлы в папке Программирование на Фортране