martes, 10 de noviembre de 2009

JC5 - Operadores Logicos en Java y C#

Cada una de las instrucciones if, if...else, while, do...while, y for requieren de una condicion para determinar como continuar el flujo de control de un programa, las condiciones simples se expresan en los terminos de los operadores relacionales >, <, >=, <=, ==, !=, y cada decision evalua una condicion. Para evaluar multiples condiciones necesitamos de los operadores logicos que son:
  • && (AND CONDICIONAL)
  • (OR CONDICIONAL)
  • & (AND LOGICO BOOLEANO)
  • (OR ICLUYENTE LOGICO BOOLEANO)
  • ! (NOT LOGICO, TAMBIEN LLAMADO NEGACION LOGICA)
  • ^ (OR EXCLUYENTE LOGICO BOOLEANO)

AND CONDICIONAL (&&)

La condicion And solo es verdadera si ambas expresiones a evaluer son verdaderas en caso contrario son falsas.

OR CONDICIONAL ()

La condicion Or es falsa solo cuando ambas expresiones a evaluar son falsas en los demas casos es verdadero.

Las partes de una expresion que contiene && u se evaluan solo hasta que se sabe si la condicion es verdadera o falsa y se evaluan de izquierda a derecha. Por lo tanto la evaluacion de la expresion:

genero == FEMENINO && edad >= 65

se detienen inmediatamente si genero no es igual a FEMENINO(es decir toda la expresion es falsa) y continua si genero es igual a FEMENINO(es decir, toda la expresion podria aun ser true si la condicion edad >= 65 es true). Esta caracteristica se conoce como evaluacion en corto circuito


Los Operadores logicos booleanos (& y ) funcionan de manera identica a los operadores condicionales (&& y ) con una excepcion: los operadores logicos booleanos siempre evaluan ambos de sus operandos(es decir, no realiza una evaluacion por corto circuito). Por lo tanto la expresion:

genero == 1 & edad >= 65

evalua edad >= 65 sin importar que genero sea igual o no a 1, esto es util si el operando derecho del operador AND logico booleano u OR logico booleano tiene un efecto secundario requerido: la modificacion del valor de la variable. Por ejemplo la expresion:

cumpleanios == true ++edad >= 65

garantiza que la condicion ++edad >= 65 se evalue. Por lo tanto la variable edad se incrementa en la expresion anterior, sin importar que la expresion total sea true o false.


A continuacion se muestran las tablas de verdad de los operadores logicos.


A continuación muestro el código de un ejemplo en C# y su salida.


No hay comentarios: