Информатика: Сегментация программ. Гурьяшова Р.Н - 17 стр.

UptoLike

Пример
Передача сечений массива в подпрограмму.
Программа, Fortran Пояснения
INTERFACE
SUBROUTINE PRINTARR(A)
REAL, DIMENSION (1:) :: A
END SUBROUTINE
END INTERFACE
REAL :: A(6) = (/2,3,1,4,2,48/)
PRINT *,'МАССИВ А - 1-Я ПОЛОВИНА'
CALL PRINTARR(A(1:3))
PRINT *,'МАССИВ А - 2-Я ПОЛОВИНА'
CALL PRINTARR(A(4:6))
END
SUBROUTINE PRINTARR(A)
REAL, DIMENSION (1:) :: A
PRINT *, A
END SUBROUTINE
Блок интерфейса
Исходные данные
Вызов п/п на
сечении A(1:3)
Вызов п/п на
сечении A(4:6)
П/п, параметр -
массив A
Результаты работы:
МАССИВ А - 1-Я ПОЛОВИНА
2. 3. 1.
МАССИВ А - 2-Я ПОЛОВИНА
4. 2. 48.
На Фортране фактическим параметром для массива может быть
его элемент (тогда массив в подпрограмме «начнется» с этого эле-
мента). Это позволяет выполнить передачу части массива проще.
Пример
Формальный параметрмассив, соответствующий фактиче-
ский параметрэлемент массива.
17
   Пример
   Передача сечений массива в подпрограмму.

             Программа, Fortran                 Пояснения
 INTERFACE                                 Блок интерфейса
    SUBROUTINE PRINTARR(A)
       REAL, DIMENSION (1:) :: A
    END SUBROUTINE
 END INTERFACE

 REAL :: A(6) = (/2,3,1,4,2,48/)           Исходные данные

 PRINT *,'МАССИВ А - 1-Я ПОЛОВИНА'         Вызов п/п на
 CALL PRINTARR(A(1:3))                     сечении A(1:3)
 PRINT *,'МАССИВ А - 2-Я ПОЛОВИНА'         Вызов п/п на
 CALL PRINTARR(A(4:6))                     сечении A(4:6)

 END

 SUBROUTINE PRINTARR(A)                    П/п, параметр -
    REAL, DIMENSION (1:) :: A              массив A
    PRINT *, A
 END SUBROUTINE

   Результаты работы:

  МАССИВ А - 1-Я ПОЛОВИНА
  2. 3. 1.
  МАССИВ А - 2-Я ПОЛОВИНА
  4. 2. 48.

    На Фортране фактическим параметром для массива может быть
его элемент (тогда массив в подпрограмме «начнется» с этого эле-
мента). Это позволяет выполнить передачу части массива проще.

   Пример
   Формальный параметр – массив, соответствующий фактиче-
ский параметр – элемент массива.


                                  17