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?


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


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

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


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


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

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)

Problema 2

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

(edad 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)

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)

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;

}