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

UptoLike

! Функция вычисления суммы SUM
REAL FUNCTION SUM(C,L,M)
REAL :: C(M),S
INTEGER :: I,L,M
S = 0
DO I = L,M
S = S + TAN(C(I)**2)
ENDDO
SUM = S
END FUNCTION
Функция SUM
Цикл
Вычисление суммы
Результаты работы программы представлены ниже (п. 5).
Примечания. 1. В Фортране имеется встроенная функция SUM (для ра-
боты с массивами). Для того чтобы использовать собственную функцию с тем же
именем, необходимо описать ее как EXTERNAL (внешний).
2. Для вычисления максимума можно использовать встроенную функцию
MAX (табл. 6.1):
Z = MAX(S2, S3) + S1
3. Ввод данных в программе можно «поручить» датчику случайных чисел
(табл. 6.1). Тогда фрагмент программы, осуществляющий ввод-вывод массивов,
может выглядеть следующим образом (обратите внимание на операции над мас-
сивом «целиком»):
Код исходного модуля Пояснения
DIMENSION A(4), B(3)
N = 4; K = 3
CALL RANDOM_SEED()
CALL RANDOM_NUMBER(A)
A=FLOOR(A*5.0)
CALL RANDOM_NUMBER(B)
B=FLOOR(B*5.0)
PRINT 2, N,K,A,B
2 FORMAT(' ИСХОДНЫЕ ДАННЫЕ '/ &
2X,'N = ',I1,' K = ',I1/ &
1X,' МАССИВ A: ',4(F3.0,2X)/&
1X,' МАССИВ B: ',3(F3.0,2X))
END
Заполнение
массива А
Заполнение
массива B
Вывод
данных
49
 ! Функция вычисления суммы SUM
    REAL FUNCTION SUM(C,L,M)                         Функция SUM
       REAL :: C(M),S
       INTEGER :: I,L,M
       S = 0
       DO I = L,M                                    Цикл
          S = S + TAN(C(I)**2)                       Вычисление суммы
       ENDDO
       SUM = S
    END FUNCTION

     Результаты работы программы представлены ниже (п. 5).
    П р и м е ч а н и я . 1. В Фортране имеется встроенная функция SUM (для ра-
боты с массивами). Для того чтобы использовать собственную функцию с тем же
именем, необходимо описать ее как EXTERNAL (внешний).
    2. Для вычисления максимума можно использовать встроенную функцию
MAX (табл. 6.1):
  Z = MAX(S2, S3) + S1
    3. Ввод данных в программе можно «поручить» датчику случайных чисел
(табл. 6.1). Тогда фрагмент программы, осуществляющий ввод-вывод массивов,
может выглядеть следующим образом (обратите внимание на операции над мас-
сивом «целиком»):


                 Код исходного модуля                         Пояснения
      DIMENSION A(4), B(3)
      N = 4; K = 3

      CALL RANDOM_SEED()
      CALL RANDOM_NUMBER(A)                              Заполнение
      A=FLOOR(A*5.0)                                     массива А

      CALL RANDOM_NUMBER(B)                              Заполнение
      B=FLOOR(B*5.0)                                     массива B

      PRINT 2, N,K,A,B                                   Вывод
 2    FORMAT(' ИСХОДНЫЕ ДАННЫЕ '/ &                      данных
       2X,'N = ',I1,' K = ',I1/    &
       1X,' МАССИВ A: ',4(F3.0,2X)/&
       1X,' МАССИВ B: ',3(F3.0,2X))

  END


                                      49