En este módulo, profundizaremos en las estructuras de control avanzadas en MUMPS. Estas estructuras permiten a los programadores manejar flujos de control más complejos y escribir código más eficiente y legible.

Contenido

Estructuras de Control Condicionales Avanzadas

IF-ELSEIF-ELSE

En MUMPS, además de las estructuras básicas IF y ELSE, podemos utilizar ELSEIF para manejar múltiples condiciones.

IF condition1 DO
. WRITE "Condition 1 is true",!
ELSEIF condition2 DO
. WRITE "Condition 2 is true",!
ELSE DO
. WRITE "Neither condition 1 nor condition 2 is true",!

SELECT-CASE

La estructura SELECT-CASE es útil cuando se necesita evaluar una variable contra múltiples valores posibles.

SET var = 2
SELECT var
CASE 1:
. WRITE "Value is 1",!
CASE 2:
. WRITE "Value is 2",!
CASE 3:
. WRITE "Value is 3",!
OTHERWISE
. WRITE "Value is not 1, 2, or 3",!
ENDSELECT

Bucles Anidados

Los bucles anidados permiten iterar sobre múltiples niveles de datos. En MUMPS, podemos anidar FOR y WHILE para lograr esto.

Ejemplo de Bucles Anidados

FOR i=1:1:3 DO
. FOR j=1:1:2 DO
. . WRITE "i=", i, " j=", j,!

En este ejemplo, el bucle interno se ejecuta completamente para cada iteración del bucle externo.

Estructuras de Control de Excepción

TRY-CATCH

MUMPS no tiene una estructura TRY-CATCH como otros lenguajes, pero podemos manejar errores utilizando ZTRAP y ZQUIT.

SET $ZTRAP="ERROR^LABEL"
DO
. ; Código que puede causar un error
. SET x=1/0 ; Esto causará un error de división por cero
QUIT

ERROR
WRITE "An error occurred",!
QUIT

En este ejemplo, si ocurre un error, el control se transfiere a la etiqueta ERROR.

Ejercicios Prácticos

Ejercicio 1: Estructura IF-ELSEIF-ELSE

Escribe un programa que lea un número del usuario y determine si es positivo, negativo o cero.

READ "Enter a number: ", num
IF num>0 DO
. WRITE "The number is positive",!
ELSEIF num<0 DO
. WRITE "The number is negative",!
ELSE DO
. WRITE "The number is zero",!

Ejercicio 2: Bucles Anidados

Escribe un programa que imprima una tabla de multiplicar del 1 al 5.

FOR i=1:1:5 DO
. FOR j=1:1:5 DO
. . WRITE i, " * ", j, " = ", i*j,!
. . WRITE !

Ejercicio 3: Manejo de Errores

Escribe un programa que intente dividir dos números y maneje cualquier error de división por cero.

SET $ZTRAP="ERROR^DIVISION"
READ "Enter numerator: ", num
READ "Enter denominator: ", den
SET result=num/den
WRITE "Result: ", result,!
QUIT

DIVISION
WRITE "Error: Division by zero is not allowed",!
QUIT

Conclusión

En este módulo, hemos explorado estructuras de control avanzadas en MUMPS, incluyendo IF-ELSEIF-ELSE, SELECT-CASE, bucles anidados y manejo de excepciones. Estas herramientas son esenciales para escribir código más robusto y eficiente. Asegúrate de practicar los ejercicios para consolidar tu comprensión y estar preparado para los siguientes módulos.

© Copyright 2024. Todos los derechos reservados