Calculadora de números complejos en PSeInt

Más ejercicios resueltos

Si deseas revisar más ejercicios resueltos, haz click en el siguiente botón. 

El diseño de una calculadora de números complejos es un ejercicio básico que permite entender el funcionamiento de las condicionales anidadas y selectivas múltiples. En este artículo analizamos con bastante detalle este ejercicio poniendo énfasis en la lógica de programación y en la estructura selectiva anidada y múltiple empleando como herramienta PSeInt. Si deseas conocer con más detalle el enunciado del ejercicio calculadora de números complejos, haz click en el siguiente enlace.

El análisis de este ejercicio se encuentra sintetizado en el vídeo «Selectivas Anidadas en PSeInt» en nuestro canal de YouTube. Te invitamos a que lo visites.

Lectura de datos

Como siempre, lo primero a realizar, es la lectura de los datos de entrada. Primero realizamos la lectura de la operación. Para esto usamos la instrucción \texttt{Leer} asignando la lectura en la variable \texttt{operacion}. El siguiente paso es la lectura de los números complejos.

Pero, ¿cómo hacemos para leer números complejos? Pues no existe un tipo número complejo en PSeInt. Para poder resolver este problema deberemos leer, por separado, la parte real y la parte imaginario de cada número.  Los datos leídos, para el primer número complejo se almacenarán en \texttt{par\_real1}, \texttt{par\_imag1}. Para el segundo número complejo usaremos las variables \texttt{par\_real2}, \texttt{par\_imag2}.

pseudocódigo calculadora complejo v1
Lectura de datos

Control de flujo para las operaciones aritméticas

Una vez que se han leído los datos de entrada, procedemos a realizar el control de flujo para las operaciones aritméticas. La estructura algorítmica selectiva múltiple tiene un uso muy reducido a cierto tipo de situaciones. Justamente los menús de opciones son una de estas situaciones en donde se puede operar con esta estructura.

Como tenemos 4 operaciones aritméticas, necesitamos 4 caminos diferentes. Como en este caso la calculadora funciona como un menú de opciones, podemos usar la selectiva múltiple en este problema. El selector será la variable \texttt{operacion}

¿Cómo funciona este selectiva múltiple? El selector \texttt{operacion} posee un valor que ha sido leído previamente. Según el valor de esta variable, se ejecutará un flujo diferente. ¿Cómo se sabe que flujo se ejecutará? Para saber qué flujo se ejecutará, los bloques de instrucciones se etiquetan con los valores que el selector reconoce. En la imagen que se presenta a continuación, puede observarse como se han etiquetado los 4 flujos que vamos a considerar. Puede notarse claramente las etiquetas \texttt{+}, \texttt{-}, \texttt{*} y \texttt{/}. Por ejemplo, cuando el selector tenga el valor \texttt{*}, el flujo se dirige hacia el conjunto de instrucciones etiquetadas con \texttt{‘*’:}.

pseudocódigo calculadora complejo v5
Control de flujo para las oparaciones

Calculando el resultado

Una vez que se ha diseñado el control de flujo para las operaciones aritméticas, se procede a realizar los cálculos de cada una de ellas. Cada una de las operaciones calculará el resultado según su operación y las almacenará en las variables \texttt{par\_real} y \texttt{par\_imag}. En este paso, básicamente, se aplican las fórmulas indicadas previamente.

4pseudocódigo calculadora complejo v4
Calculando el resultado

Validando la operación leída

El siguiente paso es validar si la operación leída es válida o no, es decir si la reconocemos y podemos operar en base a ella. Debemos identificar si es que la operación que ha ingresado el usuario no es la que esperábamos. Para esto, la selectiva múltiple en PSeInt posee una sección específica para ello denominada \texttt{De\ otro\ modo}. En este sección debemos colocar el código para el tratamiento de esta validación.

Y, ¿cómo validamos la operación leída? El comportamiento que tendrá nuestro algoritmo será el siguiente: no presentará el resultado en caso se ingrese una operación no reconocida, en su lugar presentará un mensaje descriptivo. ¿Cómo hacemos esto? Usaremos una variable que se comportará como una bandera o flag. Asumimos inicialmente que la operación es válida y cuando, la instrucción selectiva múltiple detecte que no es reconocida, a esta variable se le indica que la operación es inválida. En nuestro algoritmo, podemos ver en la línea 14 la variable \texttt{operacion\_valida}, la cual está inicializada con el valor \texttt{verdadero}. Esto significa que, inicialmente asumimos que las operaciones son válidas. Luego, podemos apreciar cuando se baja dicha bandera. En la línea 32 a la variable \texttt{operacion\_valida} se le asigna el valor de \texttt{falso}. Esto significa que no se ha leído una operación válida. ¿Y dónde usamos esta bandera? Usamos esta bandera al momento de imprimir el resultado. Si la operación es válida, se procede a realizar la impresión. Puede verse esta lógica en las líneas 35–37.

pseudocódigo calculadora complejo v3
Validando la operación

Validando división entre cero

Finalmente procedemos a realizar la validación de división entre cero. En la definición del problema nos indican que no es posible operar la división si es que el divisor es cero. Pero, ¿cómo hacemos esta validación? Pues en la división, todos los componentes del número real se dividen entre el módulo de la parte real más el módulo de la parte compleja. Entonces lo que haremos en esta parte es calcular este denominador y verificar que no sea cero. Usaremos para el control del mensaje, una bandera también. 

La validación se puede apreciar entre las líneas 26–34 en la siguiente imagen. Y la bandera \texttt{division\_por\ cero} se usa al momento de la impresión del resultado tal como se puede observar entre las líneas 39–45.

pseudocódigo calculadora complejo v2
Validando división entre cero

Diseño algorítmico en diagrama de flujo​​

A continuación se presenta la solución propuesta en diagrama de flujo. Como podrá apreciar, el diagrama de flujo es un excelente artefacto para visualizar los flujos de un algoritmo. Pero para problemas medianos en complejidad, se torna complicada su visualización. Imagine si el problema tuviera 6 o 7 caminos.

diagrama de flujo calculadora complejo
Solución en diagrama de flujo

Conclusión

Hemos presentado en este artículo, una alternativa de solución al problema de la calculadora de números complejos. Se ha utilizado para el control de flujo estructuras selectivas múltiples. Podrá descargar la solución propuesta en el repositorio GitHub de iterando++ a través del siguiente enlace

Hemos preparado otros artículos adicionales en donde describimos al detalle la implementación de este problema en lenguajes de programación. Te invitamos a leer los siguientes artículos de iterando++

Si te interesa profundizar más sobre diseño algorítmico, te recomendamos el libro Foundations of Programming Languages de Kent D. D. Lee. En este libro encontrarás además información detallada sobre la programación orientada a objetos, funcional y lógica.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *