Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
W-10_Fort_68_стр_10г..doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
1 Мб
Скачать
☆

6.2 Правила установления соответствия между формальными и фактическими аргументами при обращении к подпрограммам

Соблюдение следующих правил является обязательным при использовании подпрограмм FUNCTION и SUB­ROUTINE.

  1. Необходимо, чтобы количество, тип и порядок сле­дования фактических аргументов в указателе функции или в операторе CALL соответствовали количеству, типу и порядку следования формальных аргументов, ука­занных в операторе FUNCTION или SUBROUTINE. Например, к подпрограмме

SUBROUTINE SUM (А, В, К, N)

В = А**К

N = N + K

можно обратиться с помощью следующего оператора

CALL SUM (С, REZ, 5, L)

  1. Между формальными и фактическими аргументами должно быть установлено следующее соответствие (Табл. №12):

Таблица №12

Формальный аргумент

Фактический аргумент

Переменная

Константа

Переменная

Элемент массива

Выражение

Массив

Массив

Элемент массива

Имя внешней подпрограммы

Имя внешней подпрограммы

3. Если формальный аргумент является массивом, то соответствующий фактический аргумент должен быть либо массивом, либо элементом массива. В этом случае массивы в вызывающей и вызываемой программах должны быть объявлены таким образом, чтобы размер массива или части массива, используемого в качестве фактического аргумента, был не меньше размера масси­ва, используемого в качестве формального аргумента. Количество и величины измерений фактического и фор­мального массивов могут не совпадать. Пример.

DIMENSION A (10)

…

CALL Sl (A)

…

SUBROUTINE S1 (В)

DIMENSION B (5)

…

Вызывающая программа

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

В этом случае между элементами массивов А и В ус­танавливается соответствие, начиная с первых элементов:

А (1) А (2) А (3) А (4) А (5) А (6) А (7) А (8) ...

В (1) В (2) В (3) В (4) В (5)

Если обращение к подпрограмме S1 осуществляется с помощью оператора

CALL S1 (A (3))

то соответствие будет следующим:

А (1) А (2) А (3) А (4) А (5) А (6) А (7) А (8) ...

В (1) В (2) В (3) В (4) В (5)

Пример.

Вызывающая программа

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

DIMENSION A (7)

…

CALL S2 (A)

…

SUBROUTINE S2 (В)

DIMENSION B (3,2)

…

В этом случае между элементами массивов А и В устанавливается следующее соответствие:

А (1) А (2) А (3) А (4) А (5) А (6) А (7)

В (1,1) В (2,1) В (3,1) В (1,2) В (2,2) В (3,2)

Необходимо помнить, что элементы двухмерного мас­сива хранятся в памяти ЭВМ по столбцам.

4. Формальный аргумент — массив может быть опи­сан в подпрограмме

оператором DIMENSION с макси­мальными значениями всех измерений, заданными целы­ми переменными, например

SUBROUTINE S3 (X, N, М)

DIMENSION X (N, M)

…

В этом случае значения переменных N и М должны быть определены в подпрограмме как формальные аргументы. Они также не должны превышать максимальных зна­чений измерений массива — фактического аргумента. Об­ращение к подпрограмме S3 может быть таким:

DIMENSION A (4, 2)

…

CALL S3 (А, 4, 2)

…Формальные аргументы N и М получат значения 4 и 2, и между элементами массивов A (4, 2) и X (4, 2) будет полное соответствие, так как количество и величины их измерений совпадают.

При обращении к подпрограмме S3 оператором

CALL S3 (А, 2, 2)

элементам формального массива X (2, 2) ставятся в соот­ветствие элементы фактического массива А (4, 2) следую­щим образом:

А (1,1) А (2,1) А (3,1) А (4,1) А (1,2) А (2,2) ... Х (1,1) X(2,1) Х (1,2) Х (2,2)

5. Константа, выражение и имя подпрограммы могут быть использованы в

качестве фактического аргумента только в том случае, если в подпрограмме соответствую­щему формальному аргументу не присваивается значе­ние.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]