SlideShare una empresa de Scribd logo
1 de 12
Descargar para leer sin conexión
TemariodecursoJavaSE©IñakiMartín
2.- Bifurcaciones
©
Iñaki Martín
1
TEMARIO DE CURSO
PROGRAMACIÓN JAVA SE
CAPÍTULO 2
BIFURCACIONES
© Iñaki Martín
Este obra está bajo una licencia de Creative Commons Reconocimiento-NoComercial-SinObraDerivada 4.0 Internacional.
TemariodecursoJavaSE©IñakiMartín
2.- Bifurcaciones
©
Iñaki Martín
Los textos con este fondo son ejemplos de código.
Las Clases y métodos van en verde y el resto de
codigo con otros colores
COMO SE HAN DE LEER ESTOS APUNTES
• Se pueden leer los diferentes apartados en el orden establecido, y acudir al
documento JYOC-Java-Anexo1-Ejercicios para ir realizando los ejercicios
correspondientes a cada capítulo
• Asimismo, en cada capítulo comienza con una guía resumen, que no es necesario
leer inicialmente, sol ose aporta para posteriores consultas rápidas
• Los contenidos de los documentos están escritos con diferentes formatos, que
atienden a estos modelos;
o Los textos en morado son ejemplos de sintaxis de instrucciones
o Los textos en azul son ejemplos de instrucciones de código java
o Los textos en verde son nombres de Clases, Interfaces o métodos Java
o El texto marcado en rojo significa un concepto al que hay que prestarle
especial atención
Este obra está bajo una licencia de Creative Commons Reconocimiento-NoComercial-SinObraDerivada 4.0 Internacional.
• Los textos enmarcados en un cuadro de fondo violeta son conceptos
avanzados.
• Inicialmente NO es necesario leerlos ni aprenderlos
• Aportan algo más de profundidad sobre la materia que se esté exponiendo,
pero pueden provocar confusión por necesitar mayor nivel del adquirido
para comprenderse (más tarde se verán).
Textos no obligatoriosTemas avanzados
2
Los textos con este fondo son ejemplos de código.
Las Clases y métodos van en verde y el resto de
código con otros colores
TemariodecursoJavaSE©IñakiMartín
2.- Bifurcaciones
©
Iñaki Martín
3
int edad = 21
if / switch: Resumen
IF
if (edad > 17) {
System.out.print("Es mayor de edad");
}
IF ELSE
if (edad > 18) {
System.out.println("Es mayor de edad");
} else {
System.out.println("No es mayor de edad");
}
IF ELSE IF
if (edad > 65) {
System.out.println("Esta jubilado");
} else if (edad > 17) {
System.out.println("Ha acabado el colegio");
} else if (edad > 5) {
System.out.println("Esta en primaria");
} else {
System.out.println("No ha empezado a ir al cole");
}
IF ANIDADOS
SWITCH
if (edad > 15) {
if (edad > 17) {
System.out.println(“Puede ir a la universidad");
} else {
System.out.println("Puede hacer bachillerato");
}
}else{
System.out.println("Aun debe ir al colegio");
}
switch (b) {
case 0: //puede estar vacío
case 1:
case 2:
System.out.print(“< 3);
break;
case 3:
System.out.print("= 3");
break;
default:
System.out.print("> 3");
}
TemariodecursoJavaSE©IñakiMartín
2.- Bifurcaciones
©
Iñaki Martín
4
๏ La instrucción if sirve para ejecutar condicionalmente algunas instrucciones.
๏ Evalúa una condición y, si esta se cumple, se ejecutan las instrucciones especificadas en un bloque, y si no
se cumplen, no se ejecutan.
๏ La instrucción else es complementaria al if y contiene un bloque de instrucciones que sólo se ejecutan si NO
se cumple la condición analizada en el if . Es una instrucción opcional, puede por lo tanto haber un if sin else
Instrucción if (I)
If - then - else
// if (condición) {
// (instrucciones que se ejecutan si la condición es cierta)
// }
// else {
// (instrucciones que se ejecutan si la condición no es cierta)
// }
int a=3, b=6;
if ( a == b) {
System.out.println("a es igual que b")
}
else {
System.out.println("a no es igual que b");
}
TemariodecursoJavaSE©IñakiMartín
2.- Bifurcaciones
©
Iñaki Martín
5
๏ La condición ha de ser una expresión que de un resultado de tipo boolean (true o false)
๏ La instrucción else y su bloque son opcionales
๏ Las llaves no son obligatorias si hay solo una instrucción, aunque son recomendable
๏ Se pueden anidar varios if encadenados
Instrucción if (II)
Reglas de uso de if
int a = 3, b = 6;
if (a <= b) {
if (a == b) {
System.out.println ("a es igual que b");
}
else {
System.out.println ("a es menor que b");
}
}
else {
System.out.println ("a es mayor que b");
}
Cuidado:
Uno de los errores más típicos de un if es evaluar la condición con el operador =,
que es el de asignación, recordar que el operador lógico para comparar es ==
TemariodecursoJavaSE©IñakiMartín
2.- Bifurcaciones
©
Iñaki Martín
6
๏ Si tras un else se desea introducir un nuevo if, se puede hacer uso de la sintaxis else if
Instrucción else if
• El problema del mal uso de == en las evaluaciones booleanas, cuando se usa un operador de asignación = en su lugar, es que no tiene por que dar error si se
usa, y despista bastante
• Una asignación (por ejemplo, b=4) es en si misma una operación …. que también devuelve un valor, exactamente, el valor asignado (4 en este caso)
• Estas lineas imprimen el valor 4, que es lo que se devuelve en la asignación :
• En estas circunstancias, resulta que depende de como se haga la asignación,
puede ser admitida por una instrucción if o no (si la operación devuelve un
boolean, será admitida). Por ejemplo este if da TRUE (el resultado de la asignación)
• Sin embargo, esto no compila directamente, pues la asignación devuelve un int ( 2 )
que como no es un valor booleano, da error al compilar la sentencia if
• Una actividad que suele confundir y se realiza bastante en programas avanzados es
unir una comparación con una asignación, como en el caso de este ejemplo.
En estos casos, es muy importante usar, y usar bien los paréntesis, para permitir más
legibilidad. En este caso, primero se hace una asignación, que devuelve el valor
asignado, que a su vez es comparado con otro valor. En este caso, el if sí se cumple.
Resultado de una asignaciónTemas avanzados
else if
int a = 3, b = 6;
if (a < b) {
System.out.println ("a es menor que b");
}
else if (a == b) {
System.out.println ("a es igual que b");
}
else {
System.out.println ("a es mayor que b");
}
int a = 3, b = 4;
System.out.println (a = b);
boolean x = false, y = true;
if (x = y) {
System.out.println ("Son iguales");
}
int x = 7, y = 2;
if (x = y) {
System.out.println ("Son iguales");
}
int x = 3, y = 8;
if ( (x = y) > 5) {
System.out.println ("Se cumple el if");
}
TemariodecursoJavaSE©IñakiMartín
2.- Bifurcaciones
©
Iñaki Martín
๏ Veamos algún ejemplo del uso del if con else if :
Enunciado: Pedir una nota de 0 a 10 y mostrarla de la forma: Insuficiente, Suficiente, Bien....
Ejemplo de if
Ejemplo de if
Scanner sc = new Scanner(System.in);
System.out.println("Escriba una nota:");
int nota = sc.nextInt();
if (nota < 5) {
System.out.println("Suspenso");
} else if (nota >= 5 && nota < 7) {
System.out.println("Bien");
} else if (nota >=7 && nota < 9) {
System.out.println("Notable");
} else if (nota >=9) {
System.out.println("Sobresaliente");
}
7
TemariodecursoJavaSE©IñakiMartín
2.- Bifurcaciones
©
Iñaki Martín
8Zona de visibilidad de una variable.
Zona de visibilidad de una variable
๏ Ya se comentó anteriormente que, cuando se declara una variable, dicha variable no se puede usar en
cualquier parte del programa. Una variable "es visible", es decir, se puede consultar su valor o cambiarlo,
solo en el bloque en el que ha declarado la variable.
๏ Recordemos que todo el código java se encuentra ubicado en distintos "bloques", y que un bloque se compone
de las lineas escritas entre dos llaves ( { }). Por lo tanto, el contenido de la instrucción if es un bloque en si.
๏ Veamos la aplicación de este concepto de visibilidad de variables al tratar instrucciones if:
class HolaMundo
{
public static void main(String[] args)
{
int a=3, b=6;
if ( a == b)
{
int g=5;
System.out.println("a es igual que b") ;
b=13;
}
System.out.println("el valor de g es " + g) ;
}
}
Bloque que contiene
la clase HolaMundo
Bloque que contiene
al método main
๏ La última instrucción System.out.println da error, pues está intentando usar una variable, g, que no es
visible en esa posición, dado que se declaró en un bloque más interno (el bloque if), y por lo tanto, no es
visible desde fuera del bloque if
Bloque que contiene a
la instrucción if
ERROR !
Variables
declaradas en el
bloque main
Variable
declarada en
el bloque if
TemariodecursoJavaSE©IñakiMartín
2.- Bifurcaciones
©
Iñaki Martín
• Se trata de un operador, no de una instrucción. Como operador que es, devuelve un valor, esto es, realiza una operación que
devuelve un valor, valor que como siempre o se guarda en una variable o se envía a un método como parámetro.
• Este operador evalúa una condición, que si es cierta, devuelve un valor, y si es falsa, devuelve otro distinto
• Formato :
en el ejemplo, evalúa p>10
✴ si la condición es true, el valor resultante es lo de detrás de ? (p*1 en este caso)
✴ si la condición es false, el valor resultante es lo de detrás de : (p-12 en este caso)
• En otro ejemplo comparado con un if normal:
Operador if ( if resumido)Temas avanzados
9Operador if
int w = 3, p = 6, h=0;
// aqui con un if normal
if (w<10) {
h = p ;
}else {
h = a * 10;
}
// este es el if anterior, en formato if abreviado
h = (w<10) ? p : a * 10;
// (condición que se evalúa) ? (valor que se devuelve si la condición es true) : (valor que se devuelve si la condición es false)
int p=6
int res = (p>10) ? p*1 : p-12 ;
TemariodecursoJavaSE©IñakiMartín
2.- Bifurcaciones
©
Iñaki Martín
10
๏ switch permite hacer una ejecución selectiva de instrucciones dependiendo del valor de una expresión
๏ En este caso no se trata de una expresión booleana, sino de una expresión que devuelve un valor.
๏ Se mira el valor de la expresión, y se ejecutan las órdenes del bloque cuyo valor es igual a expresión:
Instrucción switch (I)
switch
๏ No puede haber dos case con el mismo valor
๏ Default se ejecuta si no se ha cumplido algún case, y es optativo.
๏ Inicialmente en Java la expresión que se analiza tenía que ser de tipo numérico entero, int o menor (byte, short), o
bien tipos enumerados. Desde Java7 se permite el uso de cadenas tipo String.
Reglas de uso de switch
// switch (expresión) {
// case valor1:
// instrucciones ;
// break;
// case valor2:
// instrucciones ;
// break;
// default:
// instrucciones ;
// }
int a = 1;
switch ( a ) {
case 1:
System.out.println("a tiene valor 1") ;
break;
case 2:
System.out.println("a tiene valor 2") ;
break;
}
TemariodecursoJavaSE©IñakiMartín
2.- Bifurcaciones
©
Iñaki Martín
11
๏ La sentencia break provoca que se termine inmediatamente la ejecución del resto del switch.
๏ Pero cuidado, que una vez que se cumple un case, si no encuentra un break, se ejecutan todos los case siguientes
¡¡aunque el resultado de la expresión no coincida con el valor indicado en el case!!
๏ Analizar este ejemplo y ver su resultado:
El uso de break en un switch
break
int a=5;
switch (a ) {
case 4:
System.out.println("a es igual a 4");
case 5:
System.out.println("a es igual a 5");
case 6:
System.out.println("a es igual a 6");
case 7:
System.out.println("a es igual a 7");
break;
}
consola
a es igual a 5
a es igual a 6
a es igual a 7
Paso a paso;
• el primer case (case 4) no se cumple,
• se cumple el segundo e imprime "a es igual a 5"
• no ve un break, así que ejecuta el interior del siguiente
case, sin ni siquiera llegar a evaluarlo, por lo que imprime
"a es igual a 6",
• ídem con el siguiente case, que imprime "a es igual a 7",
• encuentra ahora si un break, y se sale del switch.
Si se usa default, no tiene por qué ser la ultima opción del switch, detrás de todos los case. Puede colocarse en cualquier orden. El hecho de que
se cumpla el default no impide que se ejecuten los demás case siguientes, si no hay un break. En realidad, default es como un case más, cuyo
valor es “cualquier valor que no esté en algún otro case” (incluidos los de detrás del propio default)
default desordenadoTemas avanzados
TemariodecursoJavaSE©IñakiMartín
2.- Bifurcaciones
©
Iñaki Martín
12
๏ Se puede poner case sin contenido, y hacer así case combinados:
Ejecución del anterior código:
‣ Si b vale 0, se ejecuta el case 0, y luego el 1 y el 2, y el break
‣ Si b vale 1, se ejecuta el case 1 y el 2 y el brea
‣ Si b vale 2, se ejecuta el case del 2, y el break
‣ Si b vale 3, se ejecuta el case del 3, y el break
‣ y si no, se ejecuta el default
El uso de case combinados o vacíos
case vacíos
switch (b) {
case 0:
case 1:
case 2:
System.out.println (" el valor de b es menor que 3);
break;
case 3:
System.out.println(" el valor de b es igual que 3");
break;
default:
System.out.println(" el valor de b es mayor que 3");
}

Más contenido relacionado

La actualidad más candente

Estructuras de control
Estructuras de controlEstructuras de control
Estructuras de controlSilvia Boscan
 
Estructuras De Control
Estructuras De ControlEstructuras De Control
Estructuras De ControlUPS
 
TEMA Nº 8: CONTROL DE EJECUCIÓN Y MANTENIMIENTO DE SESIÓN
TEMA Nº 8: CONTROL DE EJECUCIÓN Y MANTENIMIENTO DE SESIÓNTEMA Nº 8: CONTROL DE EJECUCIÓN Y MANTENIMIENTO DE SESIÓN
TEMA Nº 8: CONTROL DE EJECUCIÓN Y MANTENIMIENTO DE SESIÓNAnyeni Garay
 
Metodologia para resolver problemas con Programacion orientada a Objetos
Metodologia para resolver problemas con Programacion orientada a ObjetosMetodologia para resolver problemas con Programacion orientada a Objetos
Metodologia para resolver problemas con Programacion orientada a ObjetosWilliam Diaz S
 
Jyoc java-cap04 vectores (arrays)
Jyoc java-cap04 vectores (arrays)Jyoc java-cap04 vectores (arrays)
Jyoc java-cap04 vectores (arrays)Jyoc X
 
Clase 2 Estructuras de Control
Clase 2 Estructuras de ControlClase 2 Estructuras de Control
Clase 2 Estructuras de ControlDesireé mart?ez
 
Tema 3 sentencias de control de java por gio
Tema 3   sentencias de control de java por gioTema 3   sentencias de control de java por gio
Tema 3 sentencias de control de java por gioRobert Wolf
 
Elementos del lenguaje java
Elementos del lenguaje javaElementos del lenguaje java
Elementos del lenguaje javaMarisol Henao
 
Gestión de errores en Java
Gestión de errores en JavaGestión de errores en Java
Gestión de errores en Javaeccutpl
 
TABLA DE COMANDO /SENTENCIAS/PAQUETES
TABLA DE COMANDO /SENTENCIAS/PAQUETESTABLA DE COMANDO /SENTENCIAS/PAQUETES
TABLA DE COMANDO /SENTENCIAS/PAQUETESAnaid03
 
Programación java1
Programación java1Programación java1
Programación java1jbersosa
 
Estructuras de Control en Lenguaje C
Estructuras de Control en Lenguaje CEstructuras de Control en Lenguaje C
Estructuras de Control en Lenguaje CMarvin Romero
 

La actualidad más candente (19)

Estructuras de control
Estructuras de controlEstructuras de control
Estructuras de control
 
Estructuras De Control
Estructuras De ControlEstructuras De Control
Estructuras De Control
 
TEMA Nº 8: CONTROL DE EJECUCIÓN Y MANTENIMIENTO DE SESIÓN
TEMA Nº 8: CONTROL DE EJECUCIÓN Y MANTENIMIENTO DE SESIÓNTEMA Nº 8: CONTROL DE EJECUCIÓN Y MANTENIMIENTO DE SESIÓN
TEMA Nº 8: CONTROL DE EJECUCIÓN Y MANTENIMIENTO DE SESIÓN
 
Metodologia para resolver problemas con Programacion orientada a Objetos
Metodologia para resolver problemas con Programacion orientada a ObjetosMetodologia para resolver problemas con Programacion orientada a Objetos
Metodologia para resolver problemas con Programacion orientada a Objetos
 
Programación básica
Programación básicaProgramación básica
Programación básica
 
Introducción a java
Introducción a javaIntroducción a java
Introducción a java
 
Java básico
Java  básicoJava  básico
Java básico
 
Expo métodos
Expo métodosExpo métodos
Expo métodos
 
Jyoc java-cap04 vectores (arrays)
Jyoc java-cap04 vectores (arrays)Jyoc java-cap04 vectores (arrays)
Jyoc java-cap04 vectores (arrays)
 
Clase 2 Estructuras de Control
Clase 2 Estructuras de ControlClase 2 Estructuras de Control
Clase 2 Estructuras de Control
 
Tema 3 sentencias de control de java por gio
Tema 3   sentencias de control de java por gioTema 3   sentencias de control de java por gio
Tema 3 sentencias de control de java por gio
 
Elementos del lenguaje java
Elementos del lenguaje javaElementos del lenguaje java
Elementos del lenguaje java
 
Gestión de errores en Java
Gestión de errores en JavaGestión de errores en Java
Gestión de errores en Java
 
Semana 1 Estructuras de Control en Java
Semana 1   Estructuras de Control en JavaSemana 1   Estructuras de Control en Java
Semana 1 Estructuras de Control en Java
 
Sentencias de control
Sentencias de controlSentencias de control
Sentencias de control
 
TABLA DE COMANDO /SENTENCIAS/PAQUETES
TABLA DE COMANDO /SENTENCIAS/PAQUETESTABLA DE COMANDO /SENTENCIAS/PAQUETES
TABLA DE COMANDO /SENTENCIAS/PAQUETES
 
Programación java1
Programación java1Programación java1
Programación java1
 
Estructuras de Control en Lenguaje C
Estructuras de Control en Lenguaje CEstructuras de Control en Lenguaje C
Estructuras de Control en Lenguaje C
 
Pl
PlPl
Pl
 

Similar a Jyoc java-cap02 bifurcaciones

métodos procedimimientos estructuras de control java
métodos procedimimientos estructuras de control javamétodos procedimimientos estructuras de control java
métodos procedimimientos estructuras de control javaHenry Upla
 
Scjp Jug Section 2 Flow Control
Scjp Jug Section 2 Flow ControlScjp Jug Section 2 Flow Control
Scjp Jug Section 2 Flow ControlJose Selman
 
sentenciareturnymetodos
sentenciareturnymetodossentenciareturnymetodos
sentenciareturnymetodosLao Tobon
 
Guia demanejodeexcepcionesaserciones
Guia demanejodeexcepcionesasercionesGuia demanejodeexcepcionesaserciones
Guia demanejodeexcepcionesasercionesjbersosa
 
Sentencia if else
Sentencia if elseSentencia if else
Sentencia if elseUVM
 
SCJP, Clase 5: Control de Flujo
SCJP, Clase 5: Control de FlujoSCJP, Clase 5: Control de Flujo
SCJP, Clase 5: Control de Flujoflekoso
 
Taller de Pascal 01.pptx
Taller de Pascal 01.pptxTaller de Pascal 01.pptx
Taller de Pascal 01.pptxMatiasEscobar24
 
TABLA DE COMANDO /SENTENCIAS/PAQUETES
TABLA DE COMANDO /SENTENCIAS/PAQUETESTABLA DE COMANDO /SENTENCIAS/PAQUETES
TABLA DE COMANDO /SENTENCIAS/PAQUETESJosee Olveeda
 
Ejemplo C++
Ejemplo C++Ejemplo C++
Ejemplo C++David
 
Presentación introducción a Matlab y su estructura
Presentación introducción a Matlab y su estructuraPresentación introducción a Matlab y su estructura
Presentación introducción a Matlab y su estructuraJOSUEANIBALCOCHOJILH
 
Clase5 controldeflujo
Clase5 controldeflujoClase5 controldeflujo
Clase5 controldeflujojorg_marq
 

Similar a Jyoc java-cap02 bifurcaciones (20)

Best Practices
Best PracticesBest Practices
Best Practices
 
métodos procedimimientos estructuras de control java
métodos procedimimientos estructuras de control javamétodos procedimimientos estructuras de control java
métodos procedimimientos estructuras de control java
 
Scjp Jug Section 2 Flow Control
Scjp Jug Section 2 Flow ControlScjp Jug Section 2 Flow Control
Scjp Jug Section 2 Flow Control
 
Ejercicios3
Ejercicios3Ejercicios3
Ejercicios3
 
sentenciareturnymetodos
sentenciareturnymetodossentenciareturnymetodos
sentenciareturnymetodos
 
Guia2 java
Guia2 javaGuia2 java
Guia2 java
 
Guia demanejodeexcepcionesaserciones
Guia demanejodeexcepcionesasercionesGuia demanejodeexcepcionesaserciones
Guia demanejodeexcepcionesaserciones
 
Informe tecnico de la unidad 1
Informe tecnico de la unidad 1Informe tecnico de la unidad 1
Informe tecnico de la unidad 1
 
Sentencia if else
Sentencia if elseSentencia if else
Sentencia if else
 
SCJP, Clase 5: Control de Flujo
SCJP, Clase 5: Control de FlujoSCJP, Clase 5: Control de Flujo
SCJP, Clase 5: Control de Flujo
 
Presentación 09 Cajas blanca
Presentación 09 Cajas blancaPresentación 09 Cajas blanca
Presentación 09 Cajas blanca
 
Taller de Pascal 01.pptx
Taller de Pascal 01.pptxTaller de Pascal 01.pptx
Taller de Pascal 01.pptx
 
TABLA DE COMANDO /SENTENCIAS/PAQUETES
TABLA DE COMANDO /SENTENCIAS/PAQUETESTABLA DE COMANDO /SENTENCIAS/PAQUETES
TABLA DE COMANDO /SENTENCIAS/PAQUETES
 
Ejemplo C++
Ejemplo C++Ejemplo C++
Ejemplo C++
 
Documento Margarita
Documento MargaritaDocumento Margarita
Documento Margarita
 
Presentación introducción a Matlab y su estructura
Presentación introducción a Matlab y su estructuraPresentación introducción a Matlab y su estructura
Presentación introducción a Matlab y su estructura
 
5.instrucciones de control en java parte2
5.instrucciones de control en java parte25.instrucciones de control en java parte2
5.instrucciones de control en java parte2
 
Clase5 controldeflujo
Clase5 controldeflujoClase5 controldeflujo
Clase5 controldeflujo
 
4.instrucciones de control en c++
4.instrucciones de control en c++4.instrucciones de control en c++
4.instrucciones de control en c++
 
Comandos de Java
Comandos de JavaComandos de Java
Comandos de Java
 

Más de Jyoc X

Jyoc java-cap22 seguridad
Jyoc java-cap22 seguridadJyoc java-cap22 seguridad
Jyoc java-cap22 seguridadJyoc X
 
Jyoc java-cap20 listas, colas y pilas
Jyoc java-cap20 listas, colas y pilasJyoc java-cap20 listas, colas y pilas
Jyoc java-cap20 listas, colas y pilasJyoc X
 
Jyoc java-cap19 tad (tipos abstractos de datos)
Jyoc java-cap19 tad (tipos abstractos de datos)Jyoc java-cap19 tad (tipos abstractos de datos)
Jyoc java-cap19 tad (tipos abstractos de datos)Jyoc X
 
Jyoc java-cap18 swing y java fx
Jyoc java-cap18 swing y java fxJyoc java-cap18 swing y java fx
Jyoc java-cap18 swing y java fxJyoc X
 
Jyoc java-cap17 persistencia. nio
Jyoc java-cap17 persistencia. nioJyoc java-cap17 persistencia. nio
Jyoc java-cap17 persistencia. nioJyoc X
 
Jyoc java-cap15 persistencia. ficheros xml, j son y pdf
Jyoc java-cap15 persistencia. ficheros xml, j son y pdfJyoc java-cap15 persistencia. ficheros xml, j son y pdf
Jyoc java-cap15 persistencia. ficheros xml, j son y pdfJyoc X
 
Jyoc java-cap14 persistencia. ficheros corrientes
Jyoc java-cap14 persistencia. ficheros corrientesJyoc java-cap14 persistencia. ficheros corrientes
Jyoc java-cap14 persistencia. ficheros corrientesJyoc X
 
Jyoc java-cap13 recursividad
Jyoc java-cap13 recursividadJyoc java-cap13 recursividad
Jyoc java-cap13 recursividadJyoc X
 
Jyoc java-cap11 colecciones
Jyoc java-cap11 coleccionesJyoc java-cap11 colecciones
Jyoc java-cap11 coleccionesJyoc X
 
Jyoc java-cap10 clases complementarias y enumerados
Jyoc java-cap10 clases complementarias y enumeradosJyoc java-cap10 clases complementarias y enumerados
Jyoc java-cap10 clases complementarias y enumeradosJyoc X
 
Jyoc java-cap08 principios poo
Jyoc java-cap08 principios pooJyoc java-cap08 principios poo
Jyoc java-cap08 principios pooJyoc X
 
Jyoc java-cap07 clases y objetos
Jyoc java-cap07 clases y objetosJyoc java-cap07 clases y objetos
Jyoc java-cap07 clases y objetosJyoc X
 
Jyoc java-cap06 la clase string
Jyoc java-cap06 la clase stringJyoc java-cap06 la clase string
Jyoc java-cap06 la clase stringJyoc X
 
Jyoc java-cap01 tipos de datos y entrada-salida
Jyoc java-cap01 tipos de datos y entrada-salidaJyoc java-cap01 tipos de datos y entrada-salida
Jyoc java-cap01 tipos de datos y entrada-salidaJyoc X
 

Más de Jyoc X (14)

Jyoc java-cap22 seguridad
Jyoc java-cap22 seguridadJyoc java-cap22 seguridad
Jyoc java-cap22 seguridad
 
Jyoc java-cap20 listas, colas y pilas
Jyoc java-cap20 listas, colas y pilasJyoc java-cap20 listas, colas y pilas
Jyoc java-cap20 listas, colas y pilas
 
Jyoc java-cap19 tad (tipos abstractos de datos)
Jyoc java-cap19 tad (tipos abstractos de datos)Jyoc java-cap19 tad (tipos abstractos de datos)
Jyoc java-cap19 tad (tipos abstractos de datos)
 
Jyoc java-cap18 swing y java fx
Jyoc java-cap18 swing y java fxJyoc java-cap18 swing y java fx
Jyoc java-cap18 swing y java fx
 
Jyoc java-cap17 persistencia. nio
Jyoc java-cap17 persistencia. nioJyoc java-cap17 persistencia. nio
Jyoc java-cap17 persistencia. nio
 
Jyoc java-cap15 persistencia. ficheros xml, j son y pdf
Jyoc java-cap15 persistencia. ficheros xml, j son y pdfJyoc java-cap15 persistencia. ficheros xml, j son y pdf
Jyoc java-cap15 persistencia. ficheros xml, j son y pdf
 
Jyoc java-cap14 persistencia. ficheros corrientes
Jyoc java-cap14 persistencia. ficheros corrientesJyoc java-cap14 persistencia. ficheros corrientes
Jyoc java-cap14 persistencia. ficheros corrientes
 
Jyoc java-cap13 recursividad
Jyoc java-cap13 recursividadJyoc java-cap13 recursividad
Jyoc java-cap13 recursividad
 
Jyoc java-cap11 colecciones
Jyoc java-cap11 coleccionesJyoc java-cap11 colecciones
Jyoc java-cap11 colecciones
 
Jyoc java-cap10 clases complementarias y enumerados
Jyoc java-cap10 clases complementarias y enumeradosJyoc java-cap10 clases complementarias y enumerados
Jyoc java-cap10 clases complementarias y enumerados
 
Jyoc java-cap08 principios poo
Jyoc java-cap08 principios pooJyoc java-cap08 principios poo
Jyoc java-cap08 principios poo
 
Jyoc java-cap07 clases y objetos
Jyoc java-cap07 clases y objetosJyoc java-cap07 clases y objetos
Jyoc java-cap07 clases y objetos
 
Jyoc java-cap06 la clase string
Jyoc java-cap06 la clase stringJyoc java-cap06 la clase string
Jyoc java-cap06 la clase string
 
Jyoc java-cap01 tipos de datos y entrada-salida
Jyoc java-cap01 tipos de datos y entrada-salidaJyoc java-cap01 tipos de datos y entrada-salida
Jyoc java-cap01 tipos de datos y entrada-salida
 

Último

El uso delas tic en la vida cotidiana MFEL
El uso delas tic en la vida cotidiana MFELEl uso delas tic en la vida cotidiana MFEL
El uso delas tic en la vida cotidiana MFELmaryfer27m
 
ejercicios pseint para aprogramacion sof
ejercicios pseint para aprogramacion sofejercicios pseint para aprogramacion sof
ejercicios pseint para aprogramacion sofJuancarlosHuertasNio1
 
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptxMedidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptxaylincamaho
 
La era de la educación digital y sus desafios
La era de la educación digital y sus desafiosLa era de la educación digital y sus desafios
La era de la educación digital y sus desafiosFundación YOD YOD
 
Redes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfRedes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfsoporteupcology
 
definicion segun autores de matemáticas educativa
definicion segun autores de matemáticas  educativadefinicion segun autores de matemáticas  educativa
definicion segun autores de matemáticas educativaAdrianaMartnez618894
 
KELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento ProtégelesKELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento ProtégelesFundación YOD YOD
 
Plan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docxPlan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docxpabonheidy28
 
SalmorejoTech 2024 - Spring Boot <3 Testcontainers
SalmorejoTech 2024 - Spring Boot <3 TestcontainersSalmorejoTech 2024 - Spring Boot <3 Testcontainers
SalmorejoTech 2024 - Spring Boot <3 TestcontainersIván López Martín
 
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...FacuMeza2
 
R1600G CAT Variables de cargadores en mina
R1600G CAT Variables de cargadores en minaR1600G CAT Variables de cargadores en mina
R1600G CAT Variables de cargadores en minaarkananubis
 
El gusano informático Morris (1988) - Julio Ardita (1995) - Citizenfour (2014...
El gusano informático Morris (1988) - Julio Ardita (1995) - Citizenfour (2014...El gusano informático Morris (1988) - Julio Ardita (1995) - Citizenfour (2014...
El gusano informático Morris (1988) - Julio Ardita (1995) - Citizenfour (2014...JaquelineJuarez15
 
El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.241514949
 
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6    CREAR UN RECURSO MULTIMEDIAActividad integradora 6    CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA241531640
 
dokumen.tips_36274588-sistema-heui-eui.ppt
dokumen.tips_36274588-sistema-heui-eui.pptdokumen.tips_36274588-sistema-heui-eui.ppt
dokumen.tips_36274588-sistema-heui-eui.pptMiguelAtencio10
 
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfPARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfSergioMendoza354770
 
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptxCrear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptxNombre Apellidos
 
tics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptxtics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptxazmysanros90
 
Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024GiovanniJavierHidalg
 
International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)GDGSucre
 

Último (20)

El uso delas tic en la vida cotidiana MFEL
El uso delas tic en la vida cotidiana MFELEl uso delas tic en la vida cotidiana MFEL
El uso delas tic en la vida cotidiana MFEL
 
ejercicios pseint para aprogramacion sof
ejercicios pseint para aprogramacion sofejercicios pseint para aprogramacion sof
ejercicios pseint para aprogramacion sof
 
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptxMedidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
 
La era de la educación digital y sus desafios
La era de la educación digital y sus desafiosLa era de la educación digital y sus desafios
La era de la educación digital y sus desafios
 
Redes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfRedes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdf
 
definicion segun autores de matemáticas educativa
definicion segun autores de matemáticas  educativadefinicion segun autores de matemáticas  educativa
definicion segun autores de matemáticas educativa
 
KELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento ProtégelesKELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento Protégeles
 
Plan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docxPlan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docx
 
SalmorejoTech 2024 - Spring Boot <3 Testcontainers
SalmorejoTech 2024 - Spring Boot <3 TestcontainersSalmorejoTech 2024 - Spring Boot <3 Testcontainers
SalmorejoTech 2024 - Spring Boot <3 Testcontainers
 
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
 
R1600G CAT Variables de cargadores en mina
R1600G CAT Variables de cargadores en minaR1600G CAT Variables de cargadores en mina
R1600G CAT Variables de cargadores en mina
 
El gusano informático Morris (1988) - Julio Ardita (1995) - Citizenfour (2014...
El gusano informático Morris (1988) - Julio Ardita (1995) - Citizenfour (2014...El gusano informático Morris (1988) - Julio Ardita (1995) - Citizenfour (2014...
El gusano informático Morris (1988) - Julio Ardita (1995) - Citizenfour (2014...
 
El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.
 
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6    CREAR UN RECURSO MULTIMEDIAActividad integradora 6    CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA
 
dokumen.tips_36274588-sistema-heui-eui.ppt
dokumen.tips_36274588-sistema-heui-eui.pptdokumen.tips_36274588-sistema-heui-eui.ppt
dokumen.tips_36274588-sistema-heui-eui.ppt
 
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfPARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
 
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptxCrear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
 
tics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptxtics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptx
 
Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024
 
International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)
 

Jyoc java-cap02 bifurcaciones

  • 1. TemariodecursoJavaSE©IñakiMartín 2.- Bifurcaciones © Iñaki Martín 1 TEMARIO DE CURSO PROGRAMACIÓN JAVA SE CAPÍTULO 2 BIFURCACIONES © Iñaki Martín Este obra está bajo una licencia de Creative Commons Reconocimiento-NoComercial-SinObraDerivada 4.0 Internacional.
  • 2. TemariodecursoJavaSE©IñakiMartín 2.- Bifurcaciones © Iñaki Martín Los textos con este fondo son ejemplos de código. Las Clases y métodos van en verde y el resto de codigo con otros colores COMO SE HAN DE LEER ESTOS APUNTES • Se pueden leer los diferentes apartados en el orden establecido, y acudir al documento JYOC-Java-Anexo1-Ejercicios para ir realizando los ejercicios correspondientes a cada capítulo • Asimismo, en cada capítulo comienza con una guía resumen, que no es necesario leer inicialmente, sol ose aporta para posteriores consultas rápidas • Los contenidos de los documentos están escritos con diferentes formatos, que atienden a estos modelos; o Los textos en morado son ejemplos de sintaxis de instrucciones o Los textos en azul son ejemplos de instrucciones de código java o Los textos en verde son nombres de Clases, Interfaces o métodos Java o El texto marcado en rojo significa un concepto al que hay que prestarle especial atención Este obra está bajo una licencia de Creative Commons Reconocimiento-NoComercial-SinObraDerivada 4.0 Internacional. • Los textos enmarcados en un cuadro de fondo violeta son conceptos avanzados. • Inicialmente NO es necesario leerlos ni aprenderlos • Aportan algo más de profundidad sobre la materia que se esté exponiendo, pero pueden provocar confusión por necesitar mayor nivel del adquirido para comprenderse (más tarde se verán). Textos no obligatoriosTemas avanzados 2 Los textos con este fondo son ejemplos de código. Las Clases y métodos van en verde y el resto de código con otros colores
  • 3. TemariodecursoJavaSE©IñakiMartín 2.- Bifurcaciones © Iñaki Martín 3 int edad = 21 if / switch: Resumen IF if (edad > 17) { System.out.print("Es mayor de edad"); } IF ELSE if (edad > 18) { System.out.println("Es mayor de edad"); } else { System.out.println("No es mayor de edad"); } IF ELSE IF if (edad > 65) { System.out.println("Esta jubilado"); } else if (edad > 17) { System.out.println("Ha acabado el colegio"); } else if (edad > 5) { System.out.println("Esta en primaria"); } else { System.out.println("No ha empezado a ir al cole"); } IF ANIDADOS SWITCH if (edad > 15) { if (edad > 17) { System.out.println(“Puede ir a la universidad"); } else { System.out.println("Puede hacer bachillerato"); } }else{ System.out.println("Aun debe ir al colegio"); } switch (b) { case 0: //puede estar vacío case 1: case 2: System.out.print(“< 3); break; case 3: System.out.print("= 3"); break; default: System.out.print("> 3"); }
  • 4. TemariodecursoJavaSE©IñakiMartín 2.- Bifurcaciones © Iñaki Martín 4 ๏ La instrucción if sirve para ejecutar condicionalmente algunas instrucciones. ๏ Evalúa una condición y, si esta se cumple, se ejecutan las instrucciones especificadas en un bloque, y si no se cumplen, no se ejecutan. ๏ La instrucción else es complementaria al if y contiene un bloque de instrucciones que sólo se ejecutan si NO se cumple la condición analizada en el if . Es una instrucción opcional, puede por lo tanto haber un if sin else Instrucción if (I) If - then - else // if (condición) { // (instrucciones que se ejecutan si la condición es cierta) // } // else { // (instrucciones que se ejecutan si la condición no es cierta) // } int a=3, b=6; if ( a == b) { System.out.println("a es igual que b") } else { System.out.println("a no es igual que b"); }
  • 5. TemariodecursoJavaSE©IñakiMartín 2.- Bifurcaciones © Iñaki Martín 5 ๏ La condición ha de ser una expresión que de un resultado de tipo boolean (true o false) ๏ La instrucción else y su bloque son opcionales ๏ Las llaves no son obligatorias si hay solo una instrucción, aunque son recomendable ๏ Se pueden anidar varios if encadenados Instrucción if (II) Reglas de uso de if int a = 3, b = 6; if (a <= b) { if (a == b) { System.out.println ("a es igual que b"); } else { System.out.println ("a es menor que b"); } } else { System.out.println ("a es mayor que b"); } Cuidado: Uno de los errores más típicos de un if es evaluar la condición con el operador =, que es el de asignación, recordar que el operador lógico para comparar es ==
  • 6. TemariodecursoJavaSE©IñakiMartín 2.- Bifurcaciones © Iñaki Martín 6 ๏ Si tras un else se desea introducir un nuevo if, se puede hacer uso de la sintaxis else if Instrucción else if • El problema del mal uso de == en las evaluaciones booleanas, cuando se usa un operador de asignación = en su lugar, es que no tiene por que dar error si se usa, y despista bastante • Una asignación (por ejemplo, b=4) es en si misma una operación …. que también devuelve un valor, exactamente, el valor asignado (4 en este caso) • Estas lineas imprimen el valor 4, que es lo que se devuelve en la asignación : • En estas circunstancias, resulta que depende de como se haga la asignación, puede ser admitida por una instrucción if o no (si la operación devuelve un boolean, será admitida). Por ejemplo este if da TRUE (el resultado de la asignación) • Sin embargo, esto no compila directamente, pues la asignación devuelve un int ( 2 ) que como no es un valor booleano, da error al compilar la sentencia if • Una actividad que suele confundir y se realiza bastante en programas avanzados es unir una comparación con una asignación, como en el caso de este ejemplo. En estos casos, es muy importante usar, y usar bien los paréntesis, para permitir más legibilidad. En este caso, primero se hace una asignación, que devuelve el valor asignado, que a su vez es comparado con otro valor. En este caso, el if sí se cumple. Resultado de una asignaciónTemas avanzados else if int a = 3, b = 6; if (a < b) { System.out.println ("a es menor que b"); } else if (a == b) { System.out.println ("a es igual que b"); } else { System.out.println ("a es mayor que b"); } int a = 3, b = 4; System.out.println (a = b); boolean x = false, y = true; if (x = y) { System.out.println ("Son iguales"); } int x = 7, y = 2; if (x = y) { System.out.println ("Son iguales"); } int x = 3, y = 8; if ( (x = y) > 5) { System.out.println ("Se cumple el if"); }
  • 7. TemariodecursoJavaSE©IñakiMartín 2.- Bifurcaciones © Iñaki Martín ๏ Veamos algún ejemplo del uso del if con else if : Enunciado: Pedir una nota de 0 a 10 y mostrarla de la forma: Insuficiente, Suficiente, Bien.... Ejemplo de if Ejemplo de if Scanner sc = new Scanner(System.in); System.out.println("Escriba una nota:"); int nota = sc.nextInt(); if (nota < 5) { System.out.println("Suspenso"); } else if (nota >= 5 && nota < 7) { System.out.println("Bien"); } else if (nota >=7 && nota < 9) { System.out.println("Notable"); } else if (nota >=9) { System.out.println("Sobresaliente"); } 7
  • 8. TemariodecursoJavaSE©IñakiMartín 2.- Bifurcaciones © Iñaki Martín 8Zona de visibilidad de una variable. Zona de visibilidad de una variable ๏ Ya se comentó anteriormente que, cuando se declara una variable, dicha variable no se puede usar en cualquier parte del programa. Una variable "es visible", es decir, se puede consultar su valor o cambiarlo, solo en el bloque en el que ha declarado la variable. ๏ Recordemos que todo el código java se encuentra ubicado en distintos "bloques", y que un bloque se compone de las lineas escritas entre dos llaves ( { }). Por lo tanto, el contenido de la instrucción if es un bloque en si. ๏ Veamos la aplicación de este concepto de visibilidad de variables al tratar instrucciones if: class HolaMundo { public static void main(String[] args) { int a=3, b=6; if ( a == b) { int g=5; System.out.println("a es igual que b") ; b=13; } System.out.println("el valor de g es " + g) ; } } Bloque que contiene la clase HolaMundo Bloque que contiene al método main ๏ La última instrucción System.out.println da error, pues está intentando usar una variable, g, que no es visible en esa posición, dado que se declaró en un bloque más interno (el bloque if), y por lo tanto, no es visible desde fuera del bloque if Bloque que contiene a la instrucción if ERROR ! Variables declaradas en el bloque main Variable declarada en el bloque if
  • 9. TemariodecursoJavaSE©IñakiMartín 2.- Bifurcaciones © Iñaki Martín • Se trata de un operador, no de una instrucción. Como operador que es, devuelve un valor, esto es, realiza una operación que devuelve un valor, valor que como siempre o se guarda en una variable o se envía a un método como parámetro. • Este operador evalúa una condición, que si es cierta, devuelve un valor, y si es falsa, devuelve otro distinto • Formato : en el ejemplo, evalúa p>10 ✴ si la condición es true, el valor resultante es lo de detrás de ? (p*1 en este caso) ✴ si la condición es false, el valor resultante es lo de detrás de : (p-12 en este caso) • En otro ejemplo comparado con un if normal: Operador if ( if resumido)Temas avanzados 9Operador if int w = 3, p = 6, h=0; // aqui con un if normal if (w<10) { h = p ; }else { h = a * 10; } // este es el if anterior, en formato if abreviado h = (w<10) ? p : a * 10; // (condición que se evalúa) ? (valor que se devuelve si la condición es true) : (valor que se devuelve si la condición es false) int p=6 int res = (p>10) ? p*1 : p-12 ;
  • 10. TemariodecursoJavaSE©IñakiMartín 2.- Bifurcaciones © Iñaki Martín 10 ๏ switch permite hacer una ejecución selectiva de instrucciones dependiendo del valor de una expresión ๏ En este caso no se trata de una expresión booleana, sino de una expresión que devuelve un valor. ๏ Se mira el valor de la expresión, y se ejecutan las órdenes del bloque cuyo valor es igual a expresión: Instrucción switch (I) switch ๏ No puede haber dos case con el mismo valor ๏ Default se ejecuta si no se ha cumplido algún case, y es optativo. ๏ Inicialmente en Java la expresión que se analiza tenía que ser de tipo numérico entero, int o menor (byte, short), o bien tipos enumerados. Desde Java7 se permite el uso de cadenas tipo String. Reglas de uso de switch // switch (expresión) { // case valor1: // instrucciones ; // break; // case valor2: // instrucciones ; // break; // default: // instrucciones ; // } int a = 1; switch ( a ) { case 1: System.out.println("a tiene valor 1") ; break; case 2: System.out.println("a tiene valor 2") ; break; }
  • 11. TemariodecursoJavaSE©IñakiMartín 2.- Bifurcaciones © Iñaki Martín 11 ๏ La sentencia break provoca que se termine inmediatamente la ejecución del resto del switch. ๏ Pero cuidado, que una vez que se cumple un case, si no encuentra un break, se ejecutan todos los case siguientes ¡¡aunque el resultado de la expresión no coincida con el valor indicado en el case!! ๏ Analizar este ejemplo y ver su resultado: El uso de break en un switch break int a=5; switch (a ) { case 4: System.out.println("a es igual a 4"); case 5: System.out.println("a es igual a 5"); case 6: System.out.println("a es igual a 6"); case 7: System.out.println("a es igual a 7"); break; } consola a es igual a 5 a es igual a 6 a es igual a 7 Paso a paso; • el primer case (case 4) no se cumple, • se cumple el segundo e imprime "a es igual a 5" • no ve un break, así que ejecuta el interior del siguiente case, sin ni siquiera llegar a evaluarlo, por lo que imprime "a es igual a 6", • ídem con el siguiente case, que imprime "a es igual a 7", • encuentra ahora si un break, y se sale del switch. Si se usa default, no tiene por qué ser la ultima opción del switch, detrás de todos los case. Puede colocarse en cualquier orden. El hecho de que se cumpla el default no impide que se ejecuten los demás case siguientes, si no hay un break. En realidad, default es como un case más, cuyo valor es “cualquier valor que no esté en algún otro case” (incluidos los de detrás del propio default) default desordenadoTemas avanzados
  • 12. TemariodecursoJavaSE©IñakiMartín 2.- Bifurcaciones © Iñaki Martín 12 ๏ Se puede poner case sin contenido, y hacer así case combinados: Ejecución del anterior código: ‣ Si b vale 0, se ejecuta el case 0, y luego el 1 y el 2, y el break ‣ Si b vale 1, se ejecuta el case 1 y el 2 y el brea ‣ Si b vale 2, se ejecuta el case del 2, y el break ‣ Si b vale 3, se ejecuta el case del 3, y el break ‣ y si no, se ejecuta el default El uso de case combinados o vacíos case vacíos switch (b) { case 0: case 1: case 2: System.out.println (" el valor de b es menor que 3); break; case 3: System.out.println(" el valor de b es igual que 3"); break; default: System.out.println(" el valor de b es mayor que 3"); }