Notas
Presentación
Esquema
1
Estructuras de control
  • Operadores lógicos y relacionales
2
¿Para qué sirven los operadores relacionales o de comparación?
  • Estos operadores permiten evaluar relaciones entre valores.  Por ejemplo:
    • ¿Es el valor A mayor que el valor B?
  • El resultado de estas operaciones es un valor de tipo booleano.
  • Estos operadores se utilizan para escribir expresiones que permitan controlar el flujo de ejecución de un programa.
3
¿Con cuáles operadores relacionales o de comparación cuenta Java?
4
¡Cuidado!
El igual no es igual al igual igual
  • Note que para asignar valores a una variable se usa el =.  Pero para comparar dos valores y obtener un valor verdadero o falso como resultado se utiliza el operador ==.
  • Ejemplos:
    • x = 10; // Guarda un 10 dentro de x.
    • (x == 10) // Compara el valor que está
  • // dentro de x para ver si es igual a 10.
  • // Lo anterior va a producir un valor // booleano (true o false).
5
¿Cuál es la prioridad entre los operadores de comparación?
  • La precedencia entre estos operadores es la siguiente:
    • Los operadores: <, >, <=, y  >=,  tienen prioridad.
    • Luego siguen los de igualdad y desigualdad: ==, !=
  • Si existen varios operadores del mismo tipo al mismo nivel, se evalúan de izquierda a derecha.
  • Todos los operadores aritméticos preceden a los relacionales.
6
¿Cómo se pueden representar relaciones lógicas más complejas?
  • Mediante expresiones booleanas con operadores lógicos.
  • Estos operadores lógicos permiten realizar operaciones con valores booleanos.
  • Mediante ellos es posible escribir en una sola expresión la verificación para múltiples condiciones booleanas separadas.
  • El resultado de estas operaciones es un valor único de tipo booleano.
7
¿Cuáles son las operaciones lógicas fundamentales?
  • La operaciones lógicas básicas son:
    • Y (AND).
    • O inclusivo (OR).
    • O exclusivo (XOR).
    • Negación (NOT).
8
¿Para qué sirve el Y (AND)?
  • El  Y sirve para combinar expresiones booleanas y saber si ambas se cumplen a la vez.
  • Por ejemplo:
  • Suponga que usted puede saber si una computadora o un televisor están encendidos o apagados de manera individual.  El Y puede servir para saber en una sola expresión si están encendidos el televisor y la computadora a la vez.
9
¿Cuál es el resultado de aplicar el Y (AND) sobre dos operandos?
  • El resultado del Y lógico entre dos operandos es verdadero solamente cuando ambos valores son verdaderos.
  • Observe en la matriz de correlación que cuando alguno de los operandos es falso, el resultado del Y siempre es falso.
10
¿Cuál es la sintaxis del Y en Java?
  • El Y en Java se representa por el símbolo &&.
  • Por ejemplo:
    • (true && false) produce false.
11
¿Para qué sirve el O (OR)?
  • El  O sirve para combinar expresiones booleanas y saber si al menos alguna de las dos se cumple.
  • Por ejemplo:
  • Suponga que usted puede saber si una computadora o un televisor están encendidos o apagados de manera individual.  El O puede servir para saber en una sola expresión si alguno de los dos (televisor o computadora) están encendidos.
12
¿Cuál es el resultado de aplicar el O inclusivo (OR) sobre dos operandos?
  • El resultado del O entre dos operandos es verdadero siempre que alguno de los dos operandos es verdadero.
  • Observe en la matriz de correlación que solamente cuando ambos valores son falsos, el resultado del O puede ser falso.


13
¿Cuál es la sintaxis del O en Java?
  • El O en Java se representa por el símbolo | |.
  • Por ejemplo:
    • (true || false) produce true.
14
¿Para qué sirve el O exclusivo (XOR)?
  • El  XOR sirve para combinar expresiones booleanas y saber si se cumple exactamente una de las dos.
  • Por ejemplo:
  • Suponga que usted puede saber si una computadora o un televisor están encendidos o apagados de manera individual.  El XOR puede servir para saber en una sola expresión si alguno de los dos (Televisor o la Computadora) están encendidos pero que ambos no están encendidos a la vez.
15
¿Cuál es el resultado de aplicar el O exclusivo (XOR) sobre dos operandos?
  • El resultado del XOR (O exclusivo) entre dos operandos es verdadero solamente cuando exactamente uno de los dos operandos es verdadero.
  • En otras palabras, solamente es verdadero cuando un operando es verdadero y el otro es falso.
16
¿Cuál es la sintaxis del XOR en Java?
  • El O exclusivo (XOR) en Java se representa por el símbolo ^.
  • Por ejemplo:
    • (true ^ false) produce true.
17
¿Para qué sirve la negación o (NOT)?
  • El  NOT sirve para saber si se cumple exactamente lo contrario a la expresión evaluada.
  • Por ejemplo:
  • Suponga que usted puede saber si un televisor está encendido o apagado.  El NOT puede servir para saber si el Televisor no está encendido, que en este caso es lo mismo que estar apagado.
18
¿Cuál es el resultado de aplicar la negación?
  • La negación se aplica sobre un único operando booleano y permite obtener su valor opuesto.
  • La negación de un operando produce un valor verdadero solamente cuando el operando es falso y viceversa.
19
¿Cuál es la sintaxis de la negación en Java?
  • La negación o NOT en Java se representa por el símbolo ! precediendo al operando booleano.
  • Por ejemplo:
    • !(true) produce false.
20
En síntesis . . .
  • Todos los operadores antes vistos (aritméticos, relacionales y lógicos) deben tener un orden de precedencia unificado, que permita evaluar expresiones complejas.
  • Este orden se define en la siguiente tabla de precedencia de operadores.
21
Tabla de precedencia de operadores
22
EJEMPLO 1 – Utilización de operadores relacionales
  • Ir al ejemplo
23
EJERCICIO 1 - Utilización de operadores relacionales
  • Ir al ejercicio
24
Estructuras de control
  • Introducción a las estructuras de control
25
¿Cómo se puede controlar el orden de ejecución de un programa?
  • Los programas ejecutan sus instrucciones de manera secuencial, en otras palabras, una después de la otra.
  • Los lenguajes de programación proveen estructuras de control que permiten alterar el orden de ejecución cuando se dan ciertas condiciones.
26
¿Qué son las estructuras de control?
  • Las estructuras de control manejan el flujo del programa.
  • Se pueden clasificar en tres grupos:
    • Estructuras de secuencia.
    • Estructuras de selección.
    • Estructuras de repetición.
27
¿Cuáles son las estructuras de secuencia?
  • La única estructura de control de secuencia es el bloque de instrucciones.
  • Un bloque de instrucciones es una serie de instrucciones que se agrupan para que se comporten como una macro instrucción.
  • Un bloque de instrucciones se puede utilizar como si fuera una instrucción independiente.
28
¿Qué se puede hacer con un bloque de instrucciones?
  • Dentro de un bloque de instrucciones se pueden definir variables.
  • Las variables declaradas dentro de un bloque solo tienen alcance dentro del mismo.
  • Las instrucciones dentro de un bloque son ejecutadas de manera secuencial.
  • Dentro de un bloque de instrucciones pueden haber tanto instrucciones simples como otros bloques.
29
¿Cómo se define un bloque de instrucciones en Java?
  • Un bloque de instrucciones en Java está encerrado por llaves { }.
  • En cualquier punto donde se pueda colocar una instrucción también se puede colocar un bloque.
  • {
  • instruccion1;
  • instruccion2;
  • instruccion3;
  • // instrucciones...
  • }
30
¿Para qué sirven las estructuras de selección?
  • Las estructuras de selección permiten elegir entre ejecutar distintos grupos de instrucciones según una condición.
  • Existen 3 tipos básicos de estructuras de selección:
    • Estructura “if”.
    • Estructura “if / else”.
    • Estructura “switch”.
31
¿Cómo funciona la estructura “if”?
  • La estructura “if” indica que una instrucción o bloque de instrucciones se debe ejecutar solamente “si” cierta condición se cumple.
  • En caso contrario, ninguna instrucción es ejecutada.
32
¿Cómo se escribe un “if” en Java?
  • En Java, un “if” se codifica de la siguiente manera:
  • if (condición) {
  • // Las instrucciones se escriben dentro del // bloque.
  • }
33
¿Cómo funciona la estructura “if / else” ?
  • Es una extensión del “if”.
  • Si la condición se cumple, un bloque es ejecutado.
  • En caso contrario, otro bloque de instrucciones es ejecutado.
34
¿Cómo se escribe un “if / else” en Java?
  • En Java, un “if / else” se codifica de la siguiente manera:
  • if (condición){
  • // bloque A si la condición es true
  • }
  • else {
  • // bloque B si la condición es falsa
  • }
35
EJEMPLO 2 – Utilización de “if/else”
  • Ir al ejemplo
36
EJERCICIO 2 – Utilización de “if-else”
  • Ir al ejercicio
37
¿Cómo funciona la estructura “switch”?
  • La estructura “switch” permite elegir entre múltiples grupos de instrucciones, dependiendo del valor de una variable.
  • En cada caso, la variable se compara contra un valor específico. Si coincide, se ejecuta el grupo de instrucciones asociado.
  • Opcionalmente se puede colocar un último caso que se ejecuta si todos los anteriores no coinciden.
38
¿Cómo se escribe un “switch” en Java?
  • En Java, un “switch” se codifica de la siguiente manera:
      • switch (variable){
      • case valor1:
      • // instrucciones si variable == valor1
      • break;
      • case valor2:
      • // instrucciones si variable == valor2
      • break;
      • // ...
      • default: // si ningún caso se cumple.
      • // instrucciones.
      • // Note que el último caso no requiere break.
      • }
39
EJEMPLO 3 – Utilización de “switch”

  • Ir al ejemplo
40
EJERCICIO 3 – Utilización de “switch”
  • Ir al ejercicio
41
¿Para qué sirven las estructuras de repetición?
  • Las estructuras de repetición permiten ejecutar un bloque de código de manera cíclica, dependiendo de una condición dada.
  • Existen 3 tipos de estructuras de repetición:
    • Estructura “while”.
    • Estructura “do / while”.
    • Estructura “for”.
42
¿Cómo funciona la estructura “while”?
  • El “while” permite ejecutar un bloque una y otra vez “mientras que” la condición sea verdadera.
  • La condición se evalúa antes de ingresar al bloque.
  • En el bloque debe existir alguna instrucción que altere la condición del “while” para evitar que el programa se “encicle”.
43
¿Cómo se escribe la estructura “while” en Java?
  • En Java, un “while” se codifica de la siguiente manera:
  • while (condición){
  • // bloque ejecutado hasta que la
  • // condición se haga falsa
  • }
44
¿Qué es enciclarse?
  • Cuando en un ciclo la condición nunca llega a tener el valor necesario para salir de éste, se dice que el programa se ha enciclado.
  • El bloque de instrucciones se ejecutaría hasta que el programa sea terminado por medios externos de manera abrupta.
45
¿Cuáles son los casos típicos de “enciclamiento”?
  • Un caso común es la omisión del incremento en un contador.
  • Otro caso típico ocurre cuando la condición para salir de un ciclo nunca llega a ser verdadera, tal y como se ilustra a continuación utilizando.
  • Ambos casos se muestran en el siguiente ejemplo.
46
EJEMPLO 4 – Utilización de “while”
  • Ir al ejemplo
47
EJERCICIO 4 – Utilización de “while”
  • Ir al ejercicio
48
¿Cómo funciona la estructura “do / while”?
  • El “do / while” permite ejecutar un bloque una y otra vez “hasta que” la condición sea falsa.
  • La condición se evalúa después de ejecutar el bloque.
  • El bloque de un “do / while” siempre es ejecutado al menos una vez.
49
¿Cómo se escribe la estructura “do / while” en Java?
  • En Java, un “do / while” se codifica de la siguiente manera:
  • do {
  • // bloque ejecutado mientras que
  • // la condición sea verdadera
  • } while (condición);
50
EJEMPLO 5 – Utilización de “do/while”
  • Ir al ejemplo
51
EJERCICIO 5 – Utilización de “do/while”
  • Ir al ejercicio
52
¿Cómo funciona la estructura “for”?
  • El “for” tiene una sintaxis más compacta y separa los elementos de una estructura de control de repetición según su significado.
  • El encabezado del “for” se divide en tres secciones específicas.
    • Inicialización
    • Condición
    • Actualización de la condición
  • Se recomienda usar el “for” cuando se tienen ciclos controlados por un contador.
53
¿Cómo funciona la estructura “for”? (continuación)
54
¿En qué orden se ejecutan las partes de una estructura “for”?
  • La expresión de inicialización se evalúa solamente una vez al inicio del ciclo “for”.
  • Si la condición es verdadera, se ejecuta el bloque de instrucciones.
  • Posteriormente, se evalúa la expresión de actualización, donde normalmente se modifican variables que hacen que la condición cambie.
  • A partir de este punto, el ciclo continúa con el paso 2.
55
¿Cómo se escribe una estructura “for” en Java?
  • En Java, un “for” se codifica de la siguiente manera:
  •   for (inicialización ; condición ; actualización){
  • // bloque que se ejecuta mientras que la // condición sea verdadera
  • }
56
 ¿En qué se diferencian el “for” y el “while”?
  • La estructura “for” equivale a una estructura “while” como la siguiente:
  • // inicialización
  • while(condición){
  • // bloque
  • // actualización
  • }
57
¿Existen otras instrucciones para control de flujo?
  • Sí. Existen instrucciones para interrumpir ciclos. Estas son el “break” y el “continue”.
  • Estas instrucciones se pueden colocar en cualquier parte del bloque de una estructura de control de repetición.
  • El “break” se sale del bloque de la estructura de repetición y continúa ejecutando la instrucción siguiente al bloque.
  • El “continue” ignora las instrucciones siguientes dentro del bloque del ciclo pero regresa al punto de evaluación de la condición.
  • El uso de “break” y “continue” no es recomendado.
58
EJEMPLO 6 – Utilización de “for”
  • Ir al ejemplo
59
EJERCICIO 6 – Utilización de “for”
  • Ir al ejercicio
60
¿Cómo evitar errores al utilizar estructuras de control?
  • Utilice bloques siempre que escriba estructuras de control.
  • Aunque las llaves no son necesarias cuando el bloque de una estructura de control contiene una sola instrucción, no se recomienda hacer esto ya que esto hace que el código sea más difícil de leer y mantener, en especial cuando se quiere agregar instrucciones a la estructura.
  • Lo siguiente funciona correctamente pero no es recomendado:
  • if (nota >= 6.75)
  • System.out.println(“Ganó el curso”);
  • Siempre es conveniente poner las llaves:
  • if (nota >= 6.75) {
  • System.out.println(“Ganó el curso”);
  • }
61
EJEMPLO 7 – Utilización de estructuras de control para la resolución de problemas
  • Ir al ejemplo
62
EJEMPLO 8 – Utilización de “for” para resolución de problemas
  • Ir al ejemplo
63
EJERCICIO 7 – Utilización de estructuras de control para resolución de problemas
  • Ir al ejercicio