Download Falso
Document related concepts
no text concepts found
Transcript
Estructuras de control Operadores lógicos y relacionales ¿Para qué sirven los operadores relacionales o de comparación? Estos operadores permiten evaluar relaciones entre valores. Por ejemplo: – 2 ¿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. Autor: Edgar Casasola M. Diseño: Jorge Villalobos S. ¿Con cuáles operadores relacionales o de comparación cuenta Java? Operador 3 Ejemplo Significado == X == Y ¿ es X igual a Y? != X != Y ¿ es X distinto de Y? > X>Y ¿ es X mayor que Y? < X<Y ¿ es X menor que Y? >= X >= Y ¿ es X mayor o igual que Y? <= X <= Y ¿ es X menor o igual que Y? Autor: Edgar Casasola M. Diseño: Jorge Villalobos S. ¡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). 4 Autor: Edgar Casasola M. Diseño: Jorge Villalobos S. ¿Cuál es la prioridad entre los operadores de comparación? La precedencia entre estos operadores es la siguiente: 1. 2. 5 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. Autor: Edgar Casasola M. Diseño: Jorge Villalobos S. ¿Cómo se pueden representar relaciones lógicas más complejas? 6 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. Autor: Edgar Casasola M. Diseño: Jorge Villalobos S. ¿Cuáles son las operaciones lógicas fundamentales? La operaciones lógicas básicas son: – – – – 7 Y (AND). O inclusivo (OR). O exclusivo (XOR). Negación (NOT). Autor: Edgar Casasola M. Diseño: Jorge Villalobos S. ¿Para qué sirve el Y (AND)? 8 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. Autor: Edgar Casasola M. Diseño: Jorge Villalobos S. ¿Cuál es el resultado de aplicar el Y (AND) sobre dos operandos? 9 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. Y Verdadero Falso Verdadero Verdadero Falso Falso Falso Falso Autor: Edgar Casasola M. Diseño: Jorge Villalobos S. ¿Cuál es la sintaxis del Y en Java? El Y en Java se representa por el símbolo &&. Por ejemplo: – 10 (true && false) produce false. Autor: Edgar Casasola M. Diseño: Jorge Villalobos S. ¿Para qué sirve el O (OR)? 11 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. Autor: Edgar Casasola M. Diseño: Jorge Villalobos S. ¿Cuál es el resultado de aplicar el O inclusivo (OR) sobre dos operandos? 12 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. OR Verdadero Falso Verdadero Verdadero Verdadero Falso Verdadero Falso Autor: Edgar Casasola M. Diseño: Jorge Villalobos S. ¿Cuál es la sintaxis del O en Java? El O en Java se representa por el símbolo | |. Por ejemplo: – 13 (true || false) produce true. Autor: Edgar Casasola M. Diseño: Jorge Villalobos S. ¿Para qué sirve el O exclusivo (XOR)? 14 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. Autor: Edgar Casasola M. Diseño: Jorge Villalobos S. ¿Cuál es el resultado de aplicar el O exclusivo (XOR) sobre dos operandos? 15 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. XOR Verdadero Falso Verdadero Falso Falso Verdadero Verdadero Falso Autor: Edgar Casasola M. Diseño: Jorge Villalobos S. ¿Cuál es la sintaxis del XOR en Java? El O exclusivo (XOR) en Java se representa por el símbolo ^. Por ejemplo: – 16 (true ^ false) produce true. Autor: Edgar Casasola M. Diseño: Jorge Villalobos S. ¿Para qué sirve la negación o (NOT)? 17 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. Autor: Edgar Casasola M. Diseño: Jorge Villalobos S. ¿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. NOT Verdadero Falso 18 Falso Verdadero Autor: Edgar Casasola M. Diseño: Jorge Villalobos S. ¿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: – 19 !(true) produce false. Autor: Edgar Casasola M. Diseño: Jorge Villalobos S. En síntesis . . . 20 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. Autor: Edgar Casasola M. Diseño: Jorge Villalobos S. Tabla de precedencia de operadores 21 Orden Tipo Operadores Asociatividad 1 Posfijos ( ) var++ var-- Izquierda a derecha. 2 Unarios ++var --var Izquierda a derecha. 3 Multiplicativos * / % Izquierda a derecha. 4 Aditivos + - Izquierda a derecha. 5 Relacionales < > <= >= Izquierda a derecha. 6 Igualdad == != Izquierda a derecha. 7 AND lógico && Izquierda a derecha. 8 OR lógico || Izquierda a derecha. 9 Asignación = += -= /= %= Derecha a izquierda. Autor: Edgar Casasola M. Diseño: Jorge Villalobos S. EJEMPLO 1 – Utilización de operadores relacionales Ir al ejemplo EJERCICIO 1 - Utilización de operadores relacionales Ir al ejercicio Estructuras de control Introducción a las estructuras de control ¿Cómo se puede controlar el orden de ejecución de un programa? 25 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. Autor: Edgar Casasola M. Diseño: Jorge Villalobos S. ¿Qué son las estructuras de control? Las estructuras de control manejan el flujo del programa. Se pueden clasificar en tres grupos: – – – 26 Estructuras de secuencia. Estructuras de selección. Estructuras de repetición. Autor: Edgar Casasola M. Diseño: Jorge Villalobos S. ¿Cuáles son las estructuras de secuencia? 27 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. Autor: Edgar Casasola M. Diseño: Jorge Villalobos S. ¿Qué se puede hacer con un bloque de instrucciones? 28 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. Autor: Edgar Casasola M. Diseño: Jorge Villalobos S. ¿Cómo se define un bloque de instrucciones en Java? 29 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... } Autor: Edgar Casasola M. Diseño: Jorge Villalobos S. ¿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: – – – 30 Estructura “if”. Estructura “if / else”. Estructura “switch”. Autor: Edgar Casasola M. Diseño: Jorge Villalobos S. ¿Cómo funciona la estructura “if”? 31 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. Falso condición Verdadero bloque Autor: Edgar Casasola M. Diseño: Jorge Villalobos S. ¿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. } 32 Autor: Edgar Casasola M. Diseño: Jorge Villalobos S. ¿Cómo funciona la estructura “if / else” ? 33 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. Verdadero bloque A condición Falso bloque B Autor: Edgar Casasola M. Diseño: Jorge Villalobos S. ¿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 } 34 Autor: Edgar Casasola M. Diseño: Jorge Villalobos S. EJEMPLO 2 – Utilización de “if/else” Ir al ejemplo EJERCICIO 2 – Utilización de “if-else” Ir al ejercicio ¿Cómo funciona la estructura “switch”? 37 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. caso 1 instrucciones caso 2 instrucciones ... caso N instrucciones Autor: Edgar Casasola M. Diseño: Jorge Villalobos S. ¿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. } 38 Autor: Edgar Casasola M. Diseño: Jorge Villalobos S. EJEMPLO 3 – Utilización de “switch” Ir al ejemplo EJERCICIO 3 – Utilización de “switch” Ir al ejercicio ¿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: – – – 41 Estructura “while”. Estructura “do / while”. Estructura “for”. Autor: Edgar Casasola M. Diseño: Jorge Villalobos S. ¿Cómo funciona la estructura “while”? 42 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”. Verdadero condición bloque Falso Autor: Edgar Casasola M. Diseño: Jorge Villalobos S. ¿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 } 43 Autor: Edgar Casasola M. Diseño: Jorge Villalobos S. ¿Qué es enciclarse? 44 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. Autor: Edgar Casasola M. Diseño: Jorge Villalobos S. ¿Cuáles son los casos típicos de “enciclamiento”? 45 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. Autor: Edgar Casasola M. Diseño: Jorge Villalobos S. EJEMPLO 4 – Utilización de “while” Ir al ejemplo EJERCICIO 4 – Utilización de “while” Ir al ejercicio ¿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. bloque condición Verdadero Falso 48 Autor: Edgar Casasola M. Diseño: Jorge Villalobos S. ¿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); 49 Autor: Edgar Casasola M. Diseño: Jorge Villalobos S. EJEMPLO 5 – Utilización de “do/while” Ir al ejemplo EJERCICIO 5 – Utilización de “do/while” Ir al ejercicio ¿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. – – – 52 Inicialización Condición Actualización de la condición Se recomienda usar el “for” cuando se tienen ciclos controlados por un contador. Autor: Edgar Casasola M. Diseño: Jorge Villalobos S. ¿Cómo funciona la estructura “for”? (continuación) inicialización condición Verdadero bloque actualización Falso 53 Autor: Edgar Casasola M. Diseño: Jorge Villalobos S. ¿En qué orden se ejecutan las partes de una estructura “for”? 1. 2. 3. 4. 54 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. Autor: Edgar Casasola M. Diseño: Jorge Villalobos S. ¿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 } 55 Autor: Edgar Casasola M. Diseño: Jorge Villalobos S. ¿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 } 56 Autor: Edgar Casasola M. Diseño: Jorge Villalobos S. ¿Existen otras instrucciones para control de flujo? 57 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. Autor: Edgar Casasola M. Diseño: Jorge Villalobos S. EJEMPLO 6 – Utilización de “for” Ir al ejemplo EJERCICIO 6 – Utilización de “for” Ir al ejercicio ¿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”); } 60 Autor: Edgar Casasola M. Diseño: Jorge Villalobos S. EJEMPLO 7 – Utilización de estructuras de control para la resolución de problemas Ir al ejemplo EJEMPLO 8 – Utilización de “for” para resolución de problemas Ir al ejemplo EJERCICIO 7 – Utilización de estructuras de control para resolución de problemas Ir al ejercicio