8. Funciones y Subrutinas

    Funciones

        answer = functionname (argumentl, argument2, . . .

PRINT*, ABS (T) El compilador evalúa el valor absoluto de T y lo escribe.
Y = SIN (X) + 45

El compilador calcula el valor del seno de x, añade 45 y luego pone el reultado en la variable y.

M=MAX(a,b,c,d)

El compilador averigua el valor máximo de entre a,b,c y d y lo asigna a la variable M.

C=SQRT ( a* * 2 +b* * 2 ) El compilador evalúa, a**2+b**2, envía el resultado a la función raiz cuadrada y pone el resultado en la variable C.

 

    Funciones Externas

  1. Las funciones y cualquier otro subprograma se coloca después de la instrucción END del programa principal.
  2. Comienzan con una linea que incluye el tipo de valor de la función que devolverá, el nombre de la función y la lista de argumentos que usará como inputs.
  3. Todas las variables que usa la función, incluidos los argumentos, deben de ser declarados inmediatamente después de la línea 2. El nombre de la función NO se declara dentro de la función.
  4. El nombre de la función se utiliza como la variable de asignación del resultado de las operaciones del subprograma. Ese valor será el que el compilador devolverá al programa principal.
  5. Una función debe de finalizar con un RETURN y un END.

 

      PROGRAM FUNDEM
C     Declarations for main program
      REAL A,B,C
      REAL AV, AVSQ1, AVSQ2
      REAL AVRAGE
C     Enter the data
      DATA A,B,C/5.0,2.0,3.0/

C     Calculate the average of the numbers
      AV = AVRAGE(A,B,C)
      AVSQ1 = AVRAGE(A,B,C) **2
   	  AVSQ2 = AVRAGE(A**2,B**2,C**2)

	  PRINT *,'Statistical Analysis'
      PRINT *,'The average of the numbers is:',AV
      PRINT *,'The average squared of the numbers: ',AVSQl
      PRINT *,'The average of the squares is: ', AVSQ2
      END

     REAL FUNCTION AVRAGE(X,Y,Z)
     REAL X,Y,Z,SUM
     SUM = X + Y + Z
     AVRAGE = SUM /3.0
     RETURN
     END

    Subrutinas

	PROGRAM SUBDEM 
        REAL A,B,C,SUM,SUMSQ 
        CALL INPUT(A,B,C)
   	CALL CALC(A,B,C,SUM,SUMSQ)
   	CALL OUTPUT(SUM,SUMSQ)
   	END

   	SUBROUTINE INPUT(X, Y, Z)
   	REAL X,Y,Z
   	PRINT *,'ENTER THREE NUMBERS => '
 	READ *,X,Y,Z
 	RETURN
 	END

 	SUBROUTINE CALC(A,B,C, SUM,SUMSQ)
   	REAL A,B,C,SUM,SUMSQ
   	SUM = A + B + C
   	SUMSQ = SUM **2
   	RETURN
   	END

   	SUBROUTINE OUTPUT(SUM,SUMSQ)
   	REAL SUM, SUMSQ
   	PRINT *,'The sum of the numbers you entered are: ',SUM
   	PRINT *,'And the square of the sum is:',SUMSQ
   	RETURN
   	END

Ahora ir a los ejercicios y realizarlos.


| Programas | Variables | Operaciones Aritmeticas | Input y Output | Bucles en Programas | Vectores en Programas | Decisiones | Subprogramas y funciones |