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_funcionnombre_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 cuadradoExplicación del Código
- Declaración del Programa Principal: El programa principal
ejemplo_funcionsolicita al usuario que ingrese un número. - Llamada a la Función: La función
cuadradoes llamada con el número ingresado como argumento. - Definición de la Función: La función
cuadradotoma un númeroxcomo 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 sumaExplicación del Código
- Declaración del Programa Principal: El programa principal
ejemplo_sumasolicita al usuario que ingrese dos números. - Llamada a la Función: La función
sumaes llamada con los dos números ingresados como argumentos. - Definición de la Función: La función
sumatoma dos númerosxyycomo 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 factorialExplicación del Código
- Declaración del Programa Principal: El programa principal
ejemplo_factorialsolicita al usuario que ingrese un número. - Llamada a la Función: La función
factoriales llamada con el número ingresado como argumento. - Definición de la Función: La función
factorialcalcula el factorial dende 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 promedioEjercicio 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 potenciaConclusió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!
Curso de Programación en Fortran
Módulo 1: Introducción a Fortran
- Introducción a Fortran
- Configuración del Entorno de Desarrollo
- Sintaxis y Estructura Básica
- Escribiendo tu Primer Programa en Fortran
Módulo 2: Conceptos Básicos
- Variables y Tipos de Datos
- Operadores y Expresiones
- Entrada y Salida
- Estructuras de Control: Sentencias If
- Estructuras de Control: Bucles
Módulo 3: Arreglos y Cadenas
- Introducción a los Arreglos
- Arreglos Multidimensionales
- Manejo de Cadenas
- Operaciones con Arreglos y Cadenas
Módulo 4: Procedimientos y Funciones
Módulo 5: Estructuras de Datos Avanzadas
Módulo 6: Manejo de Archivos
- Lectura de Archivos
- Escritura de Archivos
- Posicionamiento de Archivos
- Operaciones con Archivos Binarios
Módulo 7: Temas Avanzados
Módulo 8: Mejores Prácticas y Optimización
- Técnicas de Optimización de Código
- Depuración y Perfilado
- Escribiendo Código Mantenible
- Estándares y Portabilidad de Fortran
