Condicionales

Tipo boolean

El tipo de dato primitivo boolean admite dos estados: true y false. En general, todas las cantidades numéricas iguales a cero se consideran false y en caso contrario true; por ello, el valor por defecto es false si no se inicializa con ningún valor.

Las constantes true y false, las variables declaradas como datos primitivos a partir de boolean o expresiones de comparación que pueden regresar valores de falso y verdadero se consideran «expresiones booleanas» y nos sirven para indicar estados dicotómicos y para establecer decisiones sobre alternativas de flujo de información que pueden tomar los programas.

Tomando en cuenta que los programas de computadora son secuenciales y estructurados; sabemos que las operaciones se ejecutan desde un inicio hasta culminar en algún punto del programa. Por ello, se seguirá la convención de que las operaciones en dónde el programa avanza, las líneas del flujo del programa irán hacia abajo; pero en el caso de requerir un cambio de rumbo, la línea para avanzar o brincar sentencias se irá por el lado derecho, mientras que para regresar a un punto previo será por el lado izquierdo.

Necesita “brincar” instrucciones hacia adelante

esquema

Necesita regresar a un punto previo del programa esquema

Gracias a esta convención, es posible encontrar estructuras de control en los lenguajes de programación. Java es un lenguaje orientado a objetos, pero tiene una base en lenguajes estructurados (condicionales, cíclicas y llamadas a procedimientos). Por ello, se preferirá un diagrama de flujo similar al siguiente:

Observa que hay cuatro preguntas que la línea roja sale hacia la derecha (flujo que avanza) y una en la que sale a la izquierda (flujo que regresa).

Ejercicio de escritura

Con base en el diagrama anterior, contesta las siguientes preguntas:

¿En qué pregunta(s) la respuesta avanza?

¿Funciona?, ¿Lo has tocado?, ¿Lo sabe alguien?, ¿Dará problemas?


¿En qué pregunta(s) la respuesta regresa?

¿Puedes culpar a otro?


¿Hacia qué dirección salen las flechas rojas cuando avanza?

A la derecha y hacia abajo

¿Hacia qué dirección salen las flechas rojas cuando regresa?

A la izquierda y luego hacia arriba


¿En qué esquina del rombo llega el flujo de instrucciones?

En la esquina de arriba


¿Hacia dónde sigue el flujo de instrucciones de las flechas verdes?

Hacia abajo

En esta sección revisaremos el tipo de instrucciones en los que ambos flujos desde la toma de la decisión avanzan y no hay retorno. Estas sentencias son estructuras de control condicionales (no-iterativas, o que no contienen ciclos).

Condiciones o expresiones booleanas

Recordando los operadores lógicos y relacionales, estos nos permiten obtener expresiones cuya respuesta es falso o verdadero.

Operadores lógicos

Negación ! not
Paréntesis ( ) permite agrupar
Operadores lógicos && and lógico o booleano
|| or lógico o booleano
^ xor lógico o booleano

Operadores relacionales

Comparación == igual
!< distinto
< Menor que
<= Menor o igual que
> mayor que
>= Mayor o igual que
Ejercicio de escritura

Completa las sentencias con el operador lógico o relacional adecuado para cada problema planteado. Observa el ejemplo:

La base y la altura de un triángulo deben ser números positivos.

(base > 0) && (altura > 0)

Las cantidades mayores a cero son positivas. El operador && representa al AND para expresiones booleanas.

Problema 1

La edad de una persona no puede superar los 120 años.

(edad <= 120)

La edad es de hasta 120, por lo tanto es un intervalo cerrado y se aplica <=.

Problema 2

Un adulto (en México) debe tener al menos 18 años.

(edad >= 18)

La edad debe ser mayor o igual a 18.

Problema 3

Puede ocurrir una división entre cero, porque genera una “indefinición” o una “indeterminación”; normalmente en los lenguajes de programación provocan que un programa finaliza de manera intempestiva.

(x <> 0)

Para verificar que sea distinto de cero, $\neq$ se representa con el signo de menor que seguido de mayor que (sin espacios).

Problema 4

Los días de la semana son siete y están ordenados, (DOMINGO, LUNES, MARTES, … SÁBADO). Para determinar si un día se encuentra entre los días laborables (de lunes a viernes):

(dia >= LUNES) &&(dia && VIERNES)

El día debe ser mayor o igual al LUNES y menor o igual a VIERNES.

Sentencias nulas, simples y compuestas

Recuerda el uso de distintos tipos de sentencias, ya que cuando se indica la palabra “sentencia” dentro de una estructura, podría tratarse de una sentencia de ejecución nula, simple o compuesta:

La sentencia nula no ejecuta ninguna acción y no es neceario escribir nada para indicar que se ejecute algo.

esquema

Es común encontrarla en bloque de sentencias que inician y cierran sin hacer nada { }, así como colocarla de manera equivocada en medio de una estructura de control como if(), else, for() o while().

  • Asignación.
  • Llamada a métodos.
  • Otras estructuras de control (if-else, switch, for, while, do-while).
esquema

También se conocen como «bloques de sentencias» o simplemente «bloque» su sintaxis se describe en el siguiente diagrama sintáctico, iniciando con una llave de apertura y finalizando con una llave de cierre y no se terminan con punto y coma.

esquema

De acuerdo con la definición, se pueden tener sentencias como:

{} (sentencia múltiple con sentencia nula en el bloque).

{ sentencia simple; }

{

sentencia simple;

sentencia simple;

// …

sentencia simple;

}