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.

  1. ¿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:

myFunction: procedure
  /* Código de la función */
  return result

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ón sumar.
  • parse arg num1, num2 toma los argumentos de entrada num1 y num2.
  • 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ón sumar con los argumentos 5 y 3.
  • say "La suma es:" resultado imprime el resultado de la suma.

  1. ¿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:

call mySubroutine
exit

mySubroutine:
  /* Código de la subrutina */
  return

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 subrutina imprimirMensaje.
  • exit finaliza el programa principal.
  • imprimirMensaje: define la subrutina imprimirMensaje.
  • say "Este es un mensaje desde la subrutina." imprime un mensaje.
  • return finaliza la subrutina.

  1. Diferencias entre Funciones y Subrutinas

Característica Función Subrutina
Devuelve un valor No
Uso Realizar cálculos y devolver resultados Realizar tareas específicas sin devolver resultados
Llamada resultado = miFuncion(args) call miSubrutina

  1. 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

  1. 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.

© Copyright 2024. Todos los derechos reservados