lunes, 22 de agosto de 2022

OOo Basic. Estructuras.

Bifurcación condicional.

Vistos los principales tipos de datos (y variables) y de operadores, aunque cabe la opción de avanzar explicando las funciones con las que trabajar con los anteriores, dada la complejidad de ese contenido y su amplitud, he considerado más adecuado estudiar las estructuras fundamentales con las que nos podemos encontrar en un algoritmo.



Tres son las formas en que se desarrolla un algoritmo: sucesión lineal (que es la que deriva de lo que hasta ahora sabemos), bifurcación e iteración. Para el desarrollo de la primera es suficiente con el uso de variables y su tratamiento con operadores, pero para las otras dos se necesita contar con estructuras (instrucciones) específicas. Concretamente, para la bifurcación necesitamos estructuras condicionales, que son las que trataremos en este apartado de la sección en la que nos encontramos.

Una definición de bifurcación en programación es la ruptura condicionada del orden lineal del desarrollo del algoritmo; algo así, y en su forma más simple, como un punto en el que se presentan varias opciones de solución/desarrollo por las que hay que optar en función del cumplimiento o no de determinada condición. El cumplimiento o no de la condición (la cual puede ser simple o compleja) determina que se desarrollen unas opciones u otras. Una vez superado ese punto de decisión, el algoritmo puede seguir su curso lineal, hasta que se vuelva a presentar una nueva posibilidad de opción, o quedar todo el condicionado a la decisión previa, siendo esto secundario para lo que ahora nos ocupa.

La forma en la que en OOo Basic se trata la bifurcación es mediante diferentes estructuras condicionales, desde formulaciones (y representaciones) simple a otras más complejas, incluyendo dentro de las segundas el uso de condicionales dentro de condicionales (condicionales anidados). De todos ellos hablaremos en las entradas que se tratan dentro de esta sección. Ahora las presentaré en síntesis, para adelantar contenido y facilitar la comprensión del conjunto y de las partes.

La estructura condicional más simple (SI condicional) permite responder V/F a la validez del enunciado al que se refiere: Si vA = x es V (True), entonces conjunto de proposiones -> Fin del condicional; pero Si aV = x es F (False), entonces (directamente) Fin del condicional. Este razonamiento se expresa gráficamente mediante este flujograma:

Una segunda formulación del condicional incluye la alternativa para el caso en que la proposición valorada resulte ser falsa, la cual cumple la función de opción por defecto. 

Se desarrolla como sigue: SI vA = x es V Entonces Proposiciones A -> Fin del condicional; en caso contrario (ELSE) (vA = x es F), entonces Proposiciones alternativas por defecto B -> Fin del condicional. La representación mediante flujograma es la siguiente:

Aunque aparentemente hayamos considerado la existencia de una única proposición, lo que en el flujograma se denomina Bloque puede estar compuesto por un amplio conjunto de proposiciones, sin que esta complejidad afecte a la estructura condicional. Tampoco se ve afectada por el grado de complejidad que pueda presentar la condición, aunque aquí, por simplificar, la hayamos expresado de la forma más simple posible (aV = x).

Ahora bien, conforme vayamos analizando un número mayor de opciones condicionales, esa estructura se va haciendo más compleja, por lo que es necesario disponer de sintaxis condicionales adaptadas a esta complejidad. Esto es posible mediante el anidamiento de condicionales simples y/o mediante condicionales múltiples.

El anidamiento consiste en la inclusión de un condicional (o varios) dentro de otro condicional. Su forma más simple sería la que representamos en este flujograma que nos da idea, no obstante, de la complejidad que puede llegar a alcanzar una estructura de opcionalidad basada en condicionales anidados.


Los condicionales múltiples se basan en la posibilidad de que la condicional inicial pueda ser múltiple (no dicotómica), por lo que no es suficiente con las instrucciones If y Else. Para ello contamos con la instrucción ElseIf (Else If también es válido), que funciona como alternativa  a If inicial y también concreta (al igual que éste) una condición específica en oposición a Else, que funciona como opción por defecto; de hecho ElseIf requiere tanto la condición como la sintaxis condicional completa (ElseIf vA > x Then).

El siguiente flujograma representa una estructura condicional múltiple.


En algunos lenguajes (OOo Basic, por ejemplo), además de la opción If...ElseIf...Else, también existen otras estructuras específicas (Select Case/Switch case) que responden al flujograma anterior, pero otros lenguajes (Python, por ejemplo) no cuentan con estas instrucciones alternativas sin que se vea reducida la funcionalidad del algoritmo.

No hay comentarios:

Publicar un comentario

Comenta esta entrada