En este módulo, aprenderemos sobre las funciones y subrutinas en REXX, que son fundamentales para escribir código modular y reutilizable. Las funciones y subrutinas permiten dividir el código en bloques más pequeños y manejables, facilitando la lectura, el mantenimiento y la depuración del código.
- ¿Qué es una Función?
Una función es un bloque de código que realiza una tarea específica y puede devolver un valor. Las funciones en REXX pueden ser integradas (built-in) o definidas por el usuario.
1.1. Sintaxis de una Función
La sintaxis básica para definir una función en REXX es la siguiente:
1.2. Ejemplo de una Función
A continuación, se muestra un ejemplo simple de una función que suma dos números:
/* Definición de la función */ sumar: procedure parse arg num1, num2 resultado = num1 + num2 return resultado /* Llamada a la función */ resultado = sumar(5, 3) say "La suma es:" resultado
Explicación:
sumar: proceduredefine la funciónsumar.parse arg num1, num2toma los argumentos de entradanum1ynum2.resultado = num1 + num2realiza la suma de los dos números.return resultadodevuelve el resultado de la suma.resultado = sumar(5, 3)llama a la funciónsumarcon los argumentos5y3.say "La suma es:" resultadoimprime el resultado de la suma.
- ¿Qué es una Subrutina?
Una subrutina es similar a una función, pero no devuelve un valor. Se utiliza para realizar tareas específicas dentro de un programa.
2.1. Sintaxis de una Subrutina
La sintaxis básica para definir una subrutina en REXX es la siguiente:
2.2. Ejemplo de una Subrutina
A continuación, se muestra un ejemplo simple de una subrutina que imprime un mensaje:
/* Llamada a la subrutina */ call imprimirMensaje exit /* Definición de la subrutina */ imprimirMensaje: say "Este es un mensaje desde la subrutina." return
Explicación:
call imprimirMensajellama a la subrutinaimprimirMensaje.exitfinaliza el programa principal.imprimirMensaje:define la subrutinaimprimirMensaje.say "Este es un mensaje desde la subrutina."imprime un mensaje.returnfinaliza la subrutina.
- Diferencias entre Funciones y Subrutinas
| Característica | Función | Subrutina |
|---|---|---|
| Devuelve un valor | Sí | No |
| Uso | Realizar cálculos y devolver resultados | Realizar tareas específicas sin devolver resultados |
| Llamada | resultado = miFuncion(args) |
call miSubrutina |
- Ejercicios Prácticos
Ejercicio 1: Crear una Función para Calcular el Factorial
Descripción: Escribe una función llamada factorial que calcule el factorial de un número dado.
Código:
factorial: procedure
parse arg num
if num = 0 then return 1
resultado = 1
do i = 1 to num
resultado = resultado * i
end
return resultado
/* Llamada a la función */
numero = 5
resultado = factorial(numero)
say "El factorial de" numero "es:" resultadoEjercicio 2: Crear una Subrutina para Imprimir una Tabla de Multiplicar
Descripción: Escribe una subrutina llamada imprimirTabla que imprima la tabla de multiplicar de un número dado.
Código:
/* Llamada a la subrutina */
call imprimirTabla 7
exit
/* Definición de la subrutina */
imprimirTabla:
parse arg num
do i = 1 to 10
say num "x" i "=" num * i
end
return
- Retroalimentación y Consejos
Errores Comunes
- No devolver un valor en una función: Asegúrate de usar
returnpara devolver el resultado. - No usar
procedureen la definición: Esto puede causar problemas de alcance de variables.
Consejos
- Usa nombres descriptivos: Tanto para funciones como para subrutinas, usa nombres que describan claramente su propósito.
- Mantén el código modular: Divide el código en funciones y subrutinas para mejorar la legibilidad y el mantenimiento.
Conclusión
En esta sección, hemos aprendido sobre las funciones y subrutinas en REXX, cómo definirlas y utilizarlas, y las diferencias clave entre ellas. Practicar con funciones y subrutinas te ayudará a escribir código más limpio y eficiente. En el próximo módulo, exploraremos las funciones integradas en REXX y cómo pueden simplificar aún más tu programación.
Curso de Programación REXX
Módulo 1: Introducción a REXX
- ¿Qué es REXX?
- Configuración del Entorno REXX
- Hola Mundo en REXX
- Sintaxis y Estructura Básica
- Variables y Tipos de Datos
Módulo 2: Conceptos Básicos de Programación
- Operadores y Expresiones
- Estructuras de Control: IF/THEN/ELSE
- Bucles: DO y LEAVE
- Entrada y Salida
- Manipulación Básica de Cadenas
Módulo 3: Programación Intermedia en REXX
- Funciones y Subrutinas
- Funciones Integradas
- Manejo de Errores
- Operaciones de Entrada/Salida de Archivos
- Trabajando con Arreglos
Módulo 4: Programación Avanzada en REXX
- Manipulación Avanzada de Cadenas
- Técnicas de Análisis
- Interfaz con Programas Externos
- Macros en REXX
- Optimización del Rendimiento
