t5 - construcciones condicionales

20
Tema – 5 Construcciones condicionales

Upload: daniel-santiago-martinez

Post on 23-Jun-2015

1.158 views

Category:

Education


5 download

DESCRIPTION

Construcciones condicionales

TRANSCRIPT

Page 1: T5 - Construcciones condicionales

Tema – 5Construcciones condicionales

Page 2: T5 - Construcciones condicionales

PROGRAMACIÓN – Daniel Santiago 2

5.1. Introducción

• En un programa es usual ejecutar unas instrucciones u otras en función de unas condiciones especificadas en el código. Necesitaremos un mecanismo que nos permita seleccionar unas acciones determinadas dependiendo de cómo se evalúe estas condiciones.

• Java tiene valores booleanos o lógicos (TRUE, FALSE) útiles en evaluaciones condicionales.

Page 3: T5 - Construcciones condicionales

PROGRAMACIÓN – Daniel Santiago 3

5.2. If

• Esta construcción evalúa una condición, y si ésta se evalúa como cierta, se ejecutan las sentencias regidas por el if. En caso contrario, el programa continúa ejecutándose por la siguiente instrucción en orden secuencial después del if.

Page 4: T5 - Construcciones condicionales

PROGRAMACIÓN – Daniel Santiago 4

5.2. If

if (condición){ sentencia(s);

}sentencia(s);

Page 5: T5 - Construcciones condicionales

PROGRAMACIÓN – Daniel Santiago 5

5.2. If

• Ejemplo:public static void main(String args[]){ int a = 24; if(a%2 == 0) a = a+1; System.out.println(“Ahora es impar: ” + a);}

Page 6: T5 - Construcciones condicionales

PROGRAMACIÓN – Daniel Santiago 6

5.2.1. If-else

• En este tipo de construcción se empieza evaluando la condición. Si es cierta, se ejecutan las instrucciones regidas por el if, sino se ejecutan las instrucciones regidas por el else.

Page 7: T5 - Construcciones condicionales

PROGRAMACIÓN – Daniel Santiago 7

5.2.1. If-else

if (condición){ sentencia(s);

}else{

sentencia(s);}

Page 8: T5 - Construcciones condicionales

PROGRAMACIÓN – Daniel Santiago 8

5.2.1. If-else

• Ejemplo:public static void main(String args[]){ int a = 24; if(a%2 == 0) System.out.println(“El número “ + a + “ es par”); else System.out.println(“El número “ + a + “ es

impar”);}

Page 9: T5 - Construcciones condicionales

PROGRAMACIÓN – Daniel Santiago 9

5.2.1. If-else

• El hecho de que la construcción else sea opcional puede causar problemas de ambigüedad.

• Regla: una sentencia else se asocia con el if precedente más cercano siempre y cuando éste no tenga ya asociado otro else.

Page 10: T5 - Construcciones condicionales

PROGRAMACIÓN – Daniel Santiago 10

5.2.1. If-else

• No es lo mismo:

if (n>0)if (a > b)z = a;elsez = b;

if (n>0){if (a > b)z = a;}elsez = b;

Page 11: T5 - Construcciones condicionales

PROGRAMACIÓN – Daniel Santiago 11

5.2.2. If-else-if

• Esta construcción plantea varias condiciones de forma escalonada que se evalúan secuencialmente, de arriba abajo, hasta encontrar una que se cumpla. Entonces se ejecutan las instrucciones regidas por esa condición. Si no se encuentra ninguna condición cierta, se ejecutan las instrucciones regidas por el else.

Page 12: T5 - Construcciones condicionales

PROGRAMACIÓN – Daniel Santiago 12

5.2.2. If-else-ifif (condición 1){

sentencia(s);}else if (condición 2){

sentencia(s);}…else if (condición N){

sentencia(s);}else{

sentencia(s);}

Page 13: T5 - Construcciones condicionales

PROGRAMACIÓN – Daniel Santiago 13

5.2.2. If-else-if

• Ejemplo:public static void main(String args[]){ int hora = 23; if((hora >= 0) && (hora < 12)) System.out.println(“Buenos días”); else if((hora >= 12) && (hora < 18)) System.out.println(“Buenas tardes”); else if((hora >= 18) && (hora < 24)) System.out.println(“Buenas noches”); else System.out.println(“Hora no válida”);}

Page 14: T5 - Construcciones condicionales

PROGRAMACIÓN – Daniel Santiago 14

5.3. Operador condicional “?”

• Es un operador condicional ternario.• Sintaxis:

expresión_1 ? expresión_2: expresión_3– Si la primera expresión se evalúa cierta, toda la

expresión toma el valor de la segunda expresión. Si la primera expresión se evalúa falsa, toda la expresión toma el valor de la tercera expresión.

Page 15: T5 - Construcciones condicionales

PROGRAMACIÓN – Daniel Santiago 15

5.3. Operador condicional “?”

• Ejemplo:public static void main(String args[]){ int a = 5, b = 6, max; max = (a > b) ? a : b; System.out.println(“El máximo es: ” + max);}

Page 16: T5 - Construcciones condicionales

PROGRAMACIÓN – Daniel Santiago 16

5.4. Switch• Equivalente a la estructura If-else-if, pero de forma más compacta, legible y

elegante.• Sintaxis:

switch(expresión){case constante_1:

grupo_de_sentencias_1;break;

case constante_2:grupo_de_sentencias_2;break;

…default:

grupo_de_sentencias_por_defecto;break;

}

Page 17: T5 - Construcciones condicionales

PROGRAMACIÓN – Daniel Santiago 17

5.4. Switch

• La expresión debe ser de tipo entero o carácter, al igual que todas las constantes asociadas a cada case.

• En primer lugar se evalúa la expresión. El resultado se compara con el valor de cada case, y si son iguales, se ejecutan las sentencias asociadas. Si ningún valor coincide con el resultado de la expresión, se ejecutan las sentencias del bloque default.

• La sentencia break hace que la ejecución del switch termine. Se verá más en detalla esta sentencia en el tema 7, estructuras de salto.

Page 18: T5 - Construcciones condicionales

PROGRAMACIÓN – Daniel Santiago 18

5.4. Switch• Ejemplo:

public static void main(String args[]){ int num = 5; switch(num){ case 0:

System.out.println(“CERO”); break;

case 1: System.out.println(“UNO”); break;

… default:

System.out.println(“El número está fuera del rango”); break;

}}

Page 19: T5 - Construcciones condicionales

PROGRAMACIÓN – Daniel Santiago 19

5.4. Switch

• Puede haber algún case vacío, sin sentencias. Este caso es útil cuando se quiere que varias etiquetas case ejecuten un mismo grupo de sentencias.

Page 20: T5 - Construcciones condicionales

PROGRAMACIÓN – Daniel Santiago 20

5.4. Switch• Ejemplo:

public static void main(){ int num = 0; switch(num){ case 0:

case 1: System.out.println(“Es un CERO o un UNO”); break;

… default:

System.out.println(“El número está fuera del rango”); break;

}}