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: procedure
define la funciónsumar
.parse arg num1, num2
toma los argumentos de entradanum1
ynum2
.resultado = num1 + num2
realiza la suma de los dos números.return resultado
devuelve el resultado de la suma.resultado = sumar(5, 3)
llama a la funciónsumar
con los argumentos5
y3
.say "La suma es:" resultado
imprime 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 imprimirMensaje
llama a la subrutinaimprimirMensaje
.exit
finaliza el programa principal.imprimirMensaje:
define la subrutinaimprimirMensaje
.say "Este es un mensaje desde la subrutina."
imprime un mensaje.return
finaliza 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:" resultado
Ejercicio 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
return
para devolver el resultado. - No usar
procedure
en 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