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
- Declaración del Programa Principal: El programa principal
ejemplo_funcion
solicita al usuario que ingrese un número. - Llamada a la Función: La función
cuadrado
es llamada con el número ingresado como argumento. - Definición de la Función: La función
cuadrado
toma un númerox
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
- Declaración del Programa Principal: El programa principal
ejemplo_suma
solicita al usuario que ingrese dos números. - Llamada a la Función: La función
suma
es llamada con los dos números ingresados como argumentos. - Definición de la Función: La función
suma
toma dos númerosx
yy
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
- Declaración del Programa Principal: El programa principal
ejemplo_factorial
solicita al usuario que ingrese un número. - Llamada a la Función: La función
factorial
es llamada con el número ingresado como argumento. - Definición de la Función: La función
factorial
calcula el factorial den
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!
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