En este módulo, aprenderemos sobre las funciones en Fortran, un concepto fundamental para escribir programas modulares y reutilizables. Las funciones permiten encapsular bloques de código que realizan tareas específicas y pueden ser invocadas desde diferentes partes del programa.

Contenido

Definición de Funciones

Una función en Fortran es un bloque de código que realiza una tarea específica y devuelve un valor. Las funciones son útiles para dividir un programa en partes más pequeñas y manejables, lo que facilita la lectura, el mantenimiento y la reutilización del código.

Sintaxis de una Función

La sintaxis básica de una función en Fortran es la siguiente:

FUNCTION nombre_funcion(argumentos)
    IMPLICIT NONE
    ! Declaraciones de variables
    ! Cuerpo de la función
    nombre_funcion = valor_de_retorno
END FUNCTION nombre_funcion
  • nombre_funcion: Es el nombre de la función.
  • argumentos: Son los parámetros que la función recibe.
  • IMPLICIT NONE: Es una declaración que desactiva la declaración implícita de variables, obligando a declarar todas las variables explícitamente.
  • nombre_funcion = valor_de_retorno: Es la asignación del valor que la función devolverá.

Ejemplo de una Función Simple

A continuación, se muestra un ejemplo de una función que calcula el cuadrado de un número:

PROGRAM ejemplo_funcion
    IMPLICIT NONE
    REAL :: numero, resultado

    ! Solicitar al usuario que ingrese un número
    PRINT *, 'Ingrese un número:'
    READ *, numero

    ! Llamar a la función cuadrado
    resultado = cuadrado(numero)

    ! Mostrar el resultado
    PRINT *, 'El cuadrado de', numero, 'es', resultado
END PROGRAM ejemplo_funcion

FUNCTION cuadrado(x)
    IMPLICIT NONE
    REAL :: x, cuadrado

    ! Calcular el cuadrado del número
    cuadrado = x * x
END FUNCTION cuadrado

Explicación del Código

  1. Declaración del Programa Principal: El programa principal ejemplo_funcion solicita al usuario que ingrese un número.
  2. Llamada a la Función: La función cuadrado es llamada con el número ingresado como argumento.
  3. Definición de la Función: La función cuadrado toma un número x como argumento y devuelve su cuadrado.

Funciones con Argumentos

Las funciones pueden recibir múltiples argumentos. Aquí hay un ejemplo de una función que calcula la suma de dos números:

PROGRAM ejemplo_suma
    IMPLICIT NONE
    REAL :: a, b, resultado

    ! Solicitar al usuario que ingrese dos números
    PRINT *, 'Ingrese el primer número:'
    READ *, a
    PRINT *, 'Ingrese el segundo número:'
    READ *, b

    ! Llamar a la función suma
    resultado = suma(a, b)

    ! Mostrar el resultado
    PRINT *, 'La suma de', a, 'y', b, 'es', resultado
END PROGRAM ejemplo_suma

FUNCTION suma(x, y)
    IMPLICIT NONE
    REAL :: x, y, suma

    ! Calcular la suma de los dos números
    suma = x + y
END FUNCTION suma

Explicación del Código

  1. Declaración del Programa Principal: El programa principal ejemplo_suma solicita al usuario que ingrese dos números.
  2. Llamada a la Función: La función suma es llamada con los dos números ingresados como argumentos.
  3. Definición de la Función: La función suma toma dos números x y y como argumentos y devuelve su suma.

Funciones Recursivas

Una función recursiva es una función que se llama a sí misma. Aquí hay un ejemplo de una función recursiva que calcula el factorial de un número:

PROGRAM ejemplo_factorial
    IMPLICIT NONE
    INTEGER :: numero, resultado

    ! Solicitar al usuario que ingrese un número
    PRINT *, 'Ingrese un número:'
    READ *, numero

    ! Llamar a la función factorial
    resultado = factorial(numero)

    ! Mostrar el resultado
    PRINT *, 'El factorial de', numero, 'es', resultado
END PROGRAM ejemplo_factorial

FUNCTION factorial(n)
    IMPLICIT NONE
    INTEGER :: n, factorial

    ! Calcular el factorial de manera recursiva
    IF (n == 0) THEN
        factorial = 1
    ELSE
        factorial = n * factorial(n - 1)
    END IF
END FUNCTION factorial

Explicación del Código

  1. Declaración del Programa Principal: El programa principal ejemplo_factorial solicita al usuario que ingrese un número.
  2. Llamada a la Función: La función factorial es llamada con el número ingresado como argumento.
  3. Definición de la Función: La función factorial calcula el factorial de n de manera recursiva.

Ejercicios Prácticos

Ejercicio 1: Función para Calcular el Promedio

Escribe una función que reciba tres números y devuelva su promedio.

PROGRAM ejercicio_promedio
    IMPLICIT NONE
    REAL :: a, b, c, resultado

    ! Solicitar al usuario que ingrese tres números
    PRINT *, 'Ingrese el primer número:'
    READ *, a
    PRINT *, 'Ingrese el segundo número:'
    READ *, b
    PRINT *, 'Ingrese el tercer número:'
    READ *, c

    ! Llamar a la función promedio
    resultado = promedio(a, b, c)

    ! Mostrar el resultado
    PRINT *, 'El promedio de', a, ',', b, 'y', c, 'es', resultado
END PROGRAM ejercicio_promedio

FUNCTION promedio(x, y, z)
    IMPLICIT NONE
    REAL :: x, y, z, promedio

    ! Calcular el promedio de los tres números
    promedio = (x + y + z) / 3.0
END FUNCTION promedio

Ejercicio 2: Función para Calcular la Potencia

Escribe una función recursiva que calcule la potencia de un número dado una base y un exponente.

PROGRAM ejercicio_potencia
    IMPLICIT NONE
    REAL :: base, resultado
    INTEGER :: exponente

    ! Solicitar al usuario que ingrese la base y el exponente
    PRINT *, 'Ingrese la base:'
    READ *, base
    PRINT *, 'Ingrese el exponente:'
    READ *, exponente

    ! Llamar a la función potencia
    resultado = potencia(base, exponente)

    ! Mostrar el resultado
    PRINT *, base, ' elevado a la potencia de ', exponente, ' es ', resultado
END PROGRAM ejercicio_potencia

FUNCTION potencia(b, e)
    IMPLICIT NONE
    REAL :: b, potencia
    INTEGER :: e

    ! Calcular la potencia de manera recursiva
    IF (e == 0) THEN
        potencia = 1.0
    ELSE
        potencia = b * potencia(b, e - 1)
    END IF
END FUNCTION potencia

Conclusión

En esta sección, hemos aprendido sobre las funciones en Fortran, incluyendo su definición, sintaxis, y cómo utilizarlas con argumentos. También hemos explorado las funciones recursivas y hemos practicado con algunos ejercicios. Las funciones son una herramienta poderosa para escribir código modular y reutilizable, y son esenciales para cualquier programador de Fortran.

En el próximo módulo, profundizaremos en el uso de subrutinas, que son similares a las funciones pero no devuelven un valor. ¡Sigue practicando y nos vemos en el siguiente módulo!

© Copyright 2024. Todos los derechos reservados