buscador

Visita

jueves, 7 de julio de 2016

📍 Actividad 6: Uso de operadores 👷 y construcciones de toma de decisiones ⇦⇧⇨ en Java

Bienvenido al Blog, en esta oportunidad desarrollaremos un tema de introducción al desarrollo de programación orientado a objetos, para entender sobre cómo desarrollar un sistema con el lenguaje java veremos acerca del uso de operadores y construcciones de toma de decisiones en Java.

 Sobre el contenido …

v  El contenido de este blog tiene como fuente el curso Fundamentos de programación de Oracle.

v  Con algunos agregados del autor "EL INFORMATICO IBERO"👷

Un programa siempre tiene que realizar operaciones y tomar decisiones, estas decisiones previamente están estructuras en condiciones, es decir si cumple tal condición que ejecute tal tarea, sino cumple la condición que realiza una tarea distinta.


Uso de operadores relacionales y condicionales

Ø  Una de las tareas que suelen realizar los programas es evaluar una condición y, en función del resultado, ejecutar diferentes bloques o “ramales” de código.

Ø  Por ejemplo, su programa podría comprobar si el valor de una variable es igual que el valor de otra variable y, en caso afirmativo, realizar una acción o tarea.

Ø  En la figura siguiente se ilustra un tipo de decisión que las personas toman cada día.

Ø  Además de los operadores aritméticos, como los de suma (+) e incremento (++), el lenguaje Java proporciona diferentes operadores relacionales y condicionales que incluyen < y > para expresar los conceptos menor que y mayor que, y && para expresar unión (AND).

Ø  Estos operadores se utilizan cuando se quiere que los programas ejecuten diferentes bloques o partes del código en función de distintas condiciones como, por ejemplo, comprobar si el valor de dos variables es el mismo.

Ø  Cada uno de estos operadores se utiliza en el contexto de una construcción de toma de decisiones del tipo if o if/else.

Ejemplo de un ascensor

Ø  Ejemplo de un ascensor

    o   Un ascensor tiene muchas funciones. Las funciones que se citan  son:

ü  Las puertas del ascensor pueden abrirse.
ü  Las puertas del ascensor pueden cerrarse.
ü  El ascensor puede ascender un piso.
ü  El ascensor puede descender un piso.

o   A lo largo de este módulo y los módulos sucesivos tendrá ocasión de ver diferentes variaciones de esta clase Elevator, en algunas de las cuales se ilustra el uso de construcciones de toma de decisiones.Ø  Ejemplo de un ascensor

o   Un ascensor tiene muchas funciones. Las funciones que se citan en este curso son:

ü  Las puertas del ascensor pueden abrirse.

ü  Las puertas del ascensor pueden cerrarse.

ü  El ascensor puede ascender un piso.

ü  El ascensor puede descender un piso.

o    A lo largo de este módulo y los módulos sucesivos tendrá ocasión de ver diferentes variaciones de esta clase Elevator, en algunas de las cuales se ilustra el uso de construcciones de toma de decisiones.

    • Una clase de prueba similar a la siguiente somete el código del ascensor a diferentes comprobaciones.


Ø  Operadores relacionales

o   Los operadores relacionales comparan dos valores para determinar su relación.

o   En la tabla siguiente figuran las distintas condiciones que pueden comprobarse utilizando este tipo de operadores.

o   El resultado de todos los operadores relacionales es un valor boolean. Los valores booleanos pueden ser true o false. Por ejemplo, todos los ejemplos de la tabla anterior dan como resultado el valor true.

o El signo igual (=) se utiliza para realizar asignaciones, no para realizar comparaciones. Para realizar comparaciones recuerde utilizar el doble igual (==).

Ø  Comprobación de la igualdad entre dos secuencias de caracteres

o   Si se utiliza el operador == para comparar diferentes referencias a objetos String, el operador comprueba si la dirección contenida en dichas referencias es la misma, no su contenido.

o   ¿Son iguales todas las referencias a objetos String siguientes? ¿Qué se imprimirá en la pantalla?

    • Si quiere verificar la equivalencia entre secuencias de caracteres, por ejemplo, para averiguar si el nombre “Fred Smith” es igual que “Joseph Smith” utilice el método equals de la clase String. La clase siguiente contiene dos nombres de empleados y un método para compararlos.

Ø  Operadores condicionales

o   También necesitará tener la posibilidad de tomar una sola decisión en función de varias condiciones. En tales circunstancias, puede utilizar los operadores condicionales para evaluar condiciones complejas como un todo.

o   En la tabla siguiente figuran los operadores condicionales comunes del lenguaje Java. Por ejemplo todos los ejemplos de la tabla dan como resultado el valor booleano false.

    • ¿Qué operadores relacionales y condicionales se reflejan en el párrafo siguiente?

ü  Si el juguete es rojo, lo compraré. Sin embargo, si el juguete es amarillo y cuesta menos que uno rojo, también lo adquiriré. Si el juguete es amarillo y cuesta lo mismo o más que otro artículo rojo, no lo compraré. Por último, si el juguete es verde, no lo compraré.


Creación de construcciones if e if / else

Ø  Construcción if

o   Una sentencia o construcción if es aquella que ejecuta un bloque de código si una expresión es true.

o   Existen diferentes variantes de la construcción if básica. No obstante, la más sencilla es:

o   Donde:

ü  La expresión_booleana es una combinación de operadores relacionales, operadores condicionales y valores que da como resultado el valor true o false.

ü  bloque_código representa las líneas de código que se ejecutan si (if) la expresión es true.

    • En primer lugar se evalúa la expresión_booleana. Si la expresión es true, se ejecuta bloque_código. Si la expresión_booleana no es true, el programa salta directamente a la llave que marca el fin del bloque de código de la construcción if.
    • La clase ElevatorTest comprueba un objeto Elevator efectuando llamadas a sus métodos. Uno de los primeros métodos a los que llama la clase ElevatorTest es goDown.

    • Llamar al método goDown antes de que el ascensor haya comenzado a subir genera un problema porque el ascensor empieza en el primer piso y no hay otros pisos por debajo (la constante MIN_FLOORS indica que el primer piso es la planta baja). Cuando se ejecuta, la clase ElevatorTest muestra lo siguiente:
    • Dos sentencias if pueden solucionar este problema. El método goDown siguiente contiene dos construcciones if que determinan si el ascensor debería descender o mostrar un error.:
    • Si el valor de la variable currentFloor es igual que el de la constante MIN_FLOORS, aparecerá en la pantalla un mensaje de error y el ascensor no descenderá. Si el valor de la variable currentFloor es mayor que el de la constante MIN_FLOORS, el ascensor baja. Cuando se ejecuta, la clase ElevatorTest muestra lo siguiente:

Ø  Sentencias if anidadas

o   En ocasiones, puede ser necesario ejecutar una sentencia if como parte de otra sentencia if. En el ejemplo siguiente se muestra cómo usar sentencias if anidadas para comprobar los valores de dos variables.:

o   Si el valor de la variable currentFloor es igual que el de la constante MIN_FLOORS, aparecerá en la pantalla un mensaje de error y el ascensor no descenderá.

o   Si el valor de la variable currentFloor es mayor que el de la constante MIN_FLOORS y las puertas están cerradas, el ascensor baja.

o   No utilice las construcciones if/else con demasiada frecuencia porque pueden ser complicadas de depurar.

Ø  Construcción if/else

o   A menudo sucede que se quiere ejecutar un bloque de código si la expresión es true y otro bloque de código cuando la expresión es false.

o   Para estos casos, puede utilizar una construcción if para ejecutar un bloque de código si la expresión es true junto con una construcción else que sólo se ejecute en caso de que la expresión sea false.

o   La sintaxis de las construcciones if/else es como sigue:

o   Donde:

Ø  expresión_booleana es una combinación de operadores relacionales, operadores condicionales y valores que dan como resultado el valor true o false.

Ø  bloque_código1 representa las líneas de código que se ejecutan si la expresión es true y bloque_código2 representa las líneas de código que se ejecutan si la expresión es false.

o   Puede utilizar una sentencia if/else para corregir el problema del ascensor que se dirige a una planta no válida. El método goDown siguiente contiene una construcción if que determina si el ascensor debería descender o mostrar un error.

o   Si el valor de la variable currentFloor es igual que el de la constante MIN_FLOORS, aparecerá en la pantalla un mensaje de error y el ascensor no descenderá. En caso contrario (else), se considerará que el valor de currentFloor es mayor que el de la constante MIN_FLOORS y el ascensor bajará de planta. Cuando se ejecuta, la clase ElevatorTest muestra lo siguiente:

 

Ø Construcciones if/else encadenadas

o   Es posible encadenar varias construcciones if y else para evaluar sucesivas expresiones que den lugar a diferentes salidas en función del resultado. La sintaxis de las construcciones if/else encadenadas es como sigue:

Ejemplo:

o   Donde:

ü  expresión_booleana es una combinación de operadores relacionales, operadores condicionales y valores que da como resultado el valor true o false.

ü  bloque_código1 representa las líneas de código que se ejecutan si la expresión es true. bloque_código2 representa las líneas de código que se ejecutan si la expresión es false y la condición del segundo if es true. bloque_código3 representa las líneas de código que se ejecutan si la expresión del segundo if también se evalúa como false.

o   A continuación se muestra una clase Fechas con varias construcciones if/else encadenadas que determinan cuántos días tiene un mes.

o   El método calcularNumDias encadena tres sentencias if/else para determinar el número de días que tiene un mes. Aunque el código es sintácticamente correcto, el encadenamiento de sentencias if/else puede dar como resultado un código algo confuso y debería evitarse.

        Uso de la construcción switch

Ø  Otra palabra clave utilizada para tomar decisiones en el programa es switch. La construcción switch ayuda a evitar confusiones en la programación porque simplifica la organización de los distintos bloques de código que pueden ejecutarse.

Ø  La sintaxis de la construcción switch es:

Ejemplo:

Ø  Donde:

Ø  La palabra clave switch indica una sentencia switch.

Ø  variable es la variable cuyo valor se quiere verificar. La variable sólo puede ser de los tipos char, byte, short o int.

Ø  La palabra clave case indica un valor que se está comprobando. La combinación de la palabra case y un valor_literal se conoce como etiqueta case.

Ø  El valor_literal es cualquier valor válido que pueda contener una variable. Es posible tener una etiqueta case por cada valor que se quiera evaluar. Los valores literales no pueden ser ni variables, ni expresiones ni llamadas a métodos. Sí pueden ser constantes (variables finales como MAX_NUMBER, definida anteriormente), literales (como ’A’ o 10) o ambas cosas.

Ø  La sentencia [break;] es una palabra clave opcional que provoca la salida inmediata de la sentencia switch durante la ejecución. Sin esta sentencia, se ejecutarán todas las sentencias de bloque_código que sigan a la sentencia case aceptada (hasta llegar a una sentencia break o al final de la construcción switch).

Ø  La palabra clave default indica un bloque_código predeterminado que se ejecuta si no se cumple ninguna de las otras condiciones. La etiqueta default es similar a la construcción else de las sentencias if/else. La palabra clave default es opcional.

Ejemplo Case

Ø  El método calcularNumDias de la clase Fechas utiliza una sentencia switch para bifurcar el código en función del valor de la variable month. Si la variable month es igual a 1, 3, 5, 7, 8, 10 o 12, el código salta hasta la etiqueta case adecuada y desciende para ejecutar la línea que imprime en la pantalla el mensaje “Ese mes tiene 31 días”.

Ø  Cuándo usar construcciones switch

Ø  La construcción switch sólo se utiliza para verificar igualdades, no para comprobar si los valores son mayores o menores que otro valor. No es posible usar switch para realizar comprobaciones con respecto a varios valores y sólo puede utilizarse con tipos enteros.

Ø  La construcción switch puede considerarse como una opción válida para:

Ø  Pruebas de igualdad

Ø  Pruebas con respecto a un solo valor, como customerStatus

Ø  Pruebas con respecto al valor de un tipo int, short, byte o char

Ø   Es posible anidar otras construcciones, como if/else, dentro de las sentencias switch.

No hay comentarios.:

Publicar un comentario

Raul Tamani A. ©. Imágenes del tema de fpm. Con tecnología de Blogger.

Adblock Detectado

Apoya este sitio desactivando el Adblock para seguir navegando. ¡Gracias!

¡Ya Desactive el Adblock!