Está en la página 1de 1

En una secuencia de instrucciones hay decisiones?

Hemos trabajado con secuencias de instrucciones. Conocemos dos tipos instrucciones: asignación,
impresión por consola (efecto colateral). Ha sido fácil porque leemos y ejecutamos de arriba hacia
abajo, siguiendo la regla de cómo leer una asignación y las reglas de evaluación matemática.

Pero no siempre la secuencia es simple, pueden existir bifurcaciones. Las bifurcaciones nos permiten
ejecutar de manera excluyente uno de dos grupos de instrucciones.

Un ejemplo es el caso del Fechero de días: el valor tiene un rango, y el comportamiento nos muestra
que el rango de valores es como una ruleta (están escritos en un circulo y después del último está el
primero!). Las matemáticas no permiten ese comportamiento: 31 + 1 es 32, y en este caso
esperamos un 1!

Podemos preguntar si el estado (el valor) es el límite superior: 31 (Nota que la pregunta siempre
tiene sólo dos posibles respuestas SI o NO), si es así no ejecutamos una suma (incrementar en 1),
vamos a cambiar el estado a 1:

es el valor 31? si es verdad el valor ahora es 1, sino el valor será incrementado en 1

Hay tres secciones: la azul que es la pregunta, la verde que representa la accíón (o acciones) a tomar
cunado la respuesta a la pregunta es SI (VERDAD), caso contrario se toman las acciones en naranja.

En Java escribiremos:

if ( valor > 31 ) {
valor = 1;
} else {
valor = valor + 1;
}

Nota que la sección verde y la sección naranja son MUTUAMENTE EXCLUYENTES. La instrucción IF-
THEN-ELSE permite con una pregunta decidir entre dos alternativas; y siempre se ejecuta sólo una
de estas dos secciones de acuerdo a si la respuesta es VERDAD o FALSO.

La pregunta es una expresión booleana que se evalúa a Verdadero, ó Falso.

Algo similar sucede cuando creamos un objeto de ésta clase. Es posible que al inicializar el estado
con un parámetro tenemos que decidir si el objeto va a comenzar con un valor válido.

public NumeroFechero( int valorInicial ){


if (valorInicial >= 1 && valorInicial <= 31){
valor = valorInicial
} else {
valor = 1;
}

Hay que practicar expresiones booleanas. Nada mejor que revisar el Algebra de Bool.

También podría gustarte