SlideShare una empresa de Scribd logo
Tema 8. Estructuras de
control: Selecci´on
Introducci´on a la Inform´atica y a la Programaci´on (IIP)
Curso 2011/2012
Departamento de Sistemas Inform´aticos y Computaci´on
´Indice
1 Introducci´on y motivaci´on 3
2 Revisi´on de condicionales 5
3 Instrucciones condicionales 7
• Instrucci´on if-else
• Instrucci´on switch
4 El operador ternario condicional 18
22 de octubre de 2011 IIP - Curso 2011/2012 Page 8.2
Introducci´on y motivaci´on
Hasta ahora hemos considerado el c´odigo simplemente como una secuencia
de instrucciones.
Sin embargo, la mayor parte de los problemas reales necesitan tomar deci-
siones seg´un la situaci´on, y con ello elegir entre distintas subsecuencias de
instrucciones.
Las estructuras de control permiten cambiar el flujo simple de instrucciones
para conseguir estas caracter´ısticas.
En un m´etodo, las decisiones se toman generalmente en funci´on de los datos
de entrada. La secuencia de instrucciones puede cambiar dependiendo de los
datos de entrada o los datos intermedios generados durante la ejecuci´on.
En este tema presentaremos los mecanismos que ofrece el lenguaje Java para
tomar decisiones.
22 de octubre de 2011 IIP - Curso 2011/2012 Page 8.3
Introducci´on y motivaci´on
Las instrucciones condicionales pueden ser sencillas o anidadas:
if (temp>100)
System.out.println("Temperatura mayor que 100");
else System.out.println("Temperatura menor o igual que 100");
//.....
if (temp>100)
System.out.println("Mayor que 100");
else if (temp>50)
System.out.println("Mayor que 50, menor o igual que 100");
else System.out.println("Menor o igual que 50");
System.out.println("Continuamos aqui");
. . ...
22 de octubre de 2011 IIP - Curso 2011/2012 Page 8.4
Revisi´on de condicionales
La mayor´ıa de las estructuras de decisi´on dependen de expresiones l´ogicas
(boolean).
Las expresiones l´ogicas se construyen a partir de expresiones num´ericas
empleando operadores relacionales y a partir de otras expresiones l´ogicas
usando operadores l´ogicos.
Una expresi´on l´ogica es toda aquella expresi´on que se eval´ua a cierto
(true) o falso (false).
Operadores condicionales
Operador Operaci´on
== Igual a
!= Diferente a
> Mayor que
>= Mayor o igual que
< Menor que
<= Menor o igual que
Operadores l´ogicos
Operador Operaci´on
! NOT
& AND
| OR
^ XOR
&& AND cortocircuitado
|| OR cortocircuitado
22 de octubre de 2011 IIP - Curso 2011/2012 Page 8.5
Revisi´on de condicionales
Tabla de verdad
x y x && y x || y x ^ y !x
x & y x | y
false false false false false true
false true false true true true
true false false true true false
true true true true false false
if ((temp>=15) && (temp<=20)) .....
if ((temp>15) || (temp==15)) .....
// similar a (temp>=15)
if ((temp>=0) ^ (temp<=100)) .....
// similar a (temp>100) || (temp<0)
22 de octubre de 2011 IIP - Curso 2011/2012 Page 8.6
Instrucci´on condicional: if
El condicional m´as simple de Java presenta
esta estructura:
if (B) S
B es una condici´on.
S es cualquier instrucci´on o bloque de ins-
trucciones.
Ejecuci´on:
1. Se eval´ua B.
2. Si B es cierto, se ejecuta S.
3. Se contin´ua con la instrucci´on que sigue al
condicional.
22 de octubre de 2011 IIP - Curso 2011/2012 Page 8.7
Instrucci´on condicional: if
Ejemplo: clase Circulo, m´etodo setRadio:
/** actualiza radio del Circulo a nuevoRadio
solo si nuevoRadio es positivo o cero. */
public void setRadio(double nuevoRadio) {
if (nuevoRadio >= 0)
radio = nuevoRadio;
}
Ejemplo: datos m´edicos, seg´un el sexo, se pregunta si la persona est´a embarazada
Humano h = new Humano();
// ...
System.out.print("Que edad tiene? ");
// ...
if (h.getSexo()==’M’) {
System.out.print("Esta embarazada? ");
// ...
}
System.out.print("Es alergico a algun medicamento? ");
// ...
22 de octubre de 2011 IIP - Curso 2011/2012 Page 8.8
Instrucci´on condicional: if-else
Su forma general es:
if (B) S1 else S2
B es una condici´on.
S1 y S2 son cualquier instrucci´on o conjunto
de instrucciones.
Ejecuci´on:
1. Se eval´ua B.
2. Si B es cierto, se ejecuta S1.
3. Si B es falso, se ejecuta S2.
4. Se contin´ua con la instrucci´on que sigue al
condicional.
22 de octubre de 2011 IIP - Curso 2011/2012 Page 8.9
Instrucci´on condicional: if-else
Ejemplo: seg´un la temperatura, en-
cender o apagar el aire acondiciona-
do:
Habitacion h = new Habitacion();
AireAcon a = new AireAcon();
// ...
if (h.getTemp()>26.0)
a.encender();
else
a.apagar();
// ...
Ejemplo: seg´un la intensidad solar, re-
gular la intensidad de las luces:
DetectorSolar d = new DetectorSolar();
Bombilla b1 = new Bombilla();
Bombilla b2 = new Bombilla();
// ...
if (d.getIntensidad()<100) {
b1.incrIntens();
b2.incrIntens();
}
else {
b1.decrIntens();
b2.decrIntens();
}
// ...
22 de octubre de 2011 IIP - Curso 2011/2012 Page 8.10
Instrucci´on condicional: if-else
En cualquiera de las formas de las instrucciones condicionales if ...else ...,
los bloques de instrucciones pueden incluir otras instrucciones condicionales:
instrucciones condicionales anidadas.
Ejemplos:
if (B1)
if (B2) S1;
else S2;
if (B1)
if (B2) S1;
else S2;
if (B1)
if (B2) S1;
else S2;
else
if (B3) S3;
else S4;
22 de octubre de 2011 IIP - Curso 2011/2012 Page 8.11
Instrucci´on condicional: if-else
Ejemplo: gestor de multas de tr´afico:
// ...
if (vehic.getVel()>carr.getMaxVel()) {
System.out.println("Velocidad maxima sobrepasada");
if (vehic.getVel()>1.2*carr.getMaxVel())
vehic.crearMultaEspecial();
else
vehic.crearMultaNormal();
}
else {
if (vehic.getVel()<carr.getMinVel())
vehic.crearMultaNormal();
}
// ...
22 de octubre de 2011 IIP - Curso 2011/2012 Page 8.12
Instrucci´on condicional: if-else
Una instrucci´on if-else se di-
ce m´ultiple cuando cada uno de
los else tiene asociado un nuevo
if-else (excepto el ´ultimo).
if (B1) S1
else if (B2) S2
else if (B3) S3
...
else if (Bn) Sn
else Sn+1
22 de octubre de 2011 IIP - Curso 2011/2012 Page 8.13
Instrucci´on condicional: if-else
Ejemplo completo de uso de condicionales: validar una fecha (m´etodo validar)
public class Fecha {
int dd, mm, aa; // Dia, mes, anyo
// ...
public boolean bisiesto() { return ((aa%4)==0 && (aa%100)!=0) || (aa%400)==0; }
public boolean validar() {
int numdd=31; // Numero de dias del mes
if ((mm<=0) || (mm>12)) return false; // Examina rango del mes
// Determinar rango de dias
if ((mm==4) || (mm==6) || (mm==9) || (mm==11)) numdd=30;
else if (mm==2)
if (bisiesto()) numdd=29; else numdd=28;
if ((dd<=0) || (dd>numdd)) return false; // Examina rango del dia
return true;
}
// ...
}
22 de octubre de 2011 IIP - Curso 2011/2012 Page 8.14
Instrucci´on condicional: switch
switch (expresion) {
case val1: [SC1] [break;]
case val2: [SC2] [break;]
...
...
case valn: [SCn] [break;]
[default: [SCn+1] [break;]]
}
expresion debe evaluarse a un tipo primitivo (excepto float o double) o
a String (desde la versi´on 7.0 de Java).
val1, val2, . . . , valn son valores cuyo tipo de datos es compatible con el
de expresion.
SC1, SC2, . . . , SCn+1 son cualquier secuencia de instrucciones.
Los componentes que aparecen entre corchetes ([]) son opcionales.
22 de octubre de 2011 IIP - Curso 2011/2012 Page 8.15
Instrucci´on condicional: switch
Ejecuci´on:
1. Se eval´ua expresion.
2. Se compara su valor con todos los
valores en los case.
3. Cuando es igual a alguno de ellos,
ejecutar las instrucciones desde ese
punto incluyendo el c´odigo asocia-
do a otras etiquetas case hasta:
que se encuentre un break, o
que se finaliza el bloque switch,
4. Si no es igual a ning´un valor, se
ejecutan las instrucciones asociadas
a la etiqueta default (si las hay)
hasta el fin del bloque switch.
5. Se contin´ua con la instrucci´on que
sigue al bloque switch.
22 de octubre de 2011 IIP - Curso 2011/2012 Page 8.16
Instrucci´on condicional: switch
Un ejemplo completo: escribir el nombre del mes a partir de su n´umero:
public class Fecha {
int dd, mm, aa; // Dia, mes, anyo
// ...
public String nomMes() {
String mn;
switch(mm) {
case 1: mn=new String("Enero"); break;
case 2: mn=new String("Febrero"); break;
case 3: mn=new String("Marzo"); break;
case 4: mn=new String("Abril"); break;
// ...
case 12: mn=new String("Diciembre"); break;
default: mn=new String("Desconocido");
}
return mn;
}
// ...
}
22 de octubre de 2011 IIP - Curso 2011/2012 Page 8.17
El operador ternario o condicional
Java, al igual que C y C++, posee un operador ternario con un comportamiento
semejante a una instrucci´on condicional.
boolexpr ? expr1 : expr2
donde boolexpr es una expresi´on l´ogica y expr1 y expr2 son expresiones
cualquiera, pero del mismo tipo de datos.
Ejecuci´on:
1. Se eval´ua boolexpr.
2. Si boolexpr es cierta (true), la expresi´on completa se eval´ua a expr1.
3. En otro caso (boolexpr es falsa), la expresi´on completa se eval´ua a expr2.
22 de octubre de 2011 IIP - Curso 2011/2012 Page 8.18
El operador ternario o condicional
Ejemplo: validaci´on de fecha usando operador ternario
public class Fecha {
int dd, mm, aa; // Dia, mes, anyo
// ...
public boolean bisiesto() { return ((aa%4)==0 && (aa%100)!=0) || (aa%400)==0; }
public boolean validar() {
int numdd=31; // Numero de dias del mes
if ((mm<=0) || (mm>12)) return false; // Examina rango de mes
// Determinar rango de dia
if ((mm==4) || (mm==6) || (mm==9) || (mm==11)) numdd=30;
else if (mm==2) numdd=(bisiesto())?29:28; // Aqui se usa el operador ternario
if ((dd<=0) || (dd>numdd)) return false; // Examina rango de dia
return true;
}
// ...
}
22 de octubre de 2011 IIP - Curso 2011/2012 Page 8.19

Más contenido relacionado

PDF
Resumen java
PPTX
Java básico
PDF
Estructuras de control
PPTX
Video 1 metodos y arreglos
PDF
Pasos metodo simplex
PDF
Programación Java
DOC
Programación lineal
 
PDF
09 método simple-dual
Resumen java
Java básico
Estructuras de control
Video 1 metodos y arreglos
Pasos metodo simplex
Programación Java
Programación lineal
 
09 método simple-dual

La actualidad más candente (20)

PDF
Método simplex
PDF
Clase11 Método Mle y momentos
PDF
Taller de repaso de metodos y arreglos
PDF
Arreglo unidimensionales y bidimensionales
PDF
Matematica final3
PDF
Derive 5(funciones de varias variables)
PPTX
Método simplex
PDF
Mas ejercicios para la resolución de modelos aplicando el método simplex
ODP
Tema 12.2
PPS
Metodo simplex
PPT
Modulo 3: Las Preferencias y la Utilidad (Parte 2)
DOCX
maximos y minimos
PDF
Ud 11 derivada
PPTX
Metodo simplex maxgallagher
DOCX
Programacion ii
PPTX
Maximos y minimos funcion de varias variables
PPTX
Método simplex1
PDF
Clase2 El modelo de regresión simple
DOCX
Metodo Simplex
PDF
Tarea3 09 sol
Método simplex
Clase11 Método Mle y momentos
Taller de repaso de metodos y arreglos
Arreglo unidimensionales y bidimensionales
Matematica final3
Derive 5(funciones de varias variables)
Método simplex
Mas ejercicios para la resolución de modelos aplicando el método simplex
Tema 12.2
Metodo simplex
Modulo 3: Las Preferencias y la Utilidad (Parte 2)
maximos y minimos
Ud 11 derivada
Metodo simplex maxgallagher
Programacion ii
Maximos y minimos funcion de varias variables
Método simplex1
Clase2 El modelo de regresión simple
Metodo Simplex
Tarea3 09 sol
Publicidad

Destacado (12)

PDF
Introducción a la programación y la informática. Tema 4
PDF
Introducción a la programación y la informática. Tema 9
PDF
Introducción a la programación y la informática. Tema 5
PDF
Introducción a la programación y la informática. Tema 6
PDF
Introducción a la programación y la informática. Tema 7
PDF
Introducción a la programación y la informática. Tema 2
PDF
Introducción a la programación y la informática. Tema 3
PDF
Introducción a la programación y la informática. Tema 1
PPTX
User Interface Testing | Best Practices
PDF
UI Testing Best Practices - An Expected Journey
PDF
Introducción a la programación y la informática. Tema 10
PPTX
Presentacion 1.10
Introducción a la programación y la informática. Tema 4
Introducción a la programación y la informática. Tema 9
Introducción a la programación y la informática. Tema 5
Introducción a la programación y la informática. Tema 6
Introducción a la programación y la informática. Tema 7
Introducción a la programación y la informática. Tema 2
Introducción a la programación y la informática. Tema 3
Introducción a la programación y la informática. Tema 1
User Interface Testing | Best Practices
UI Testing Best Practices - An Expected Journey
Introducción a la programación y la informática. Tema 10
Presentacion 1.10
Publicidad

Similar a Introducción a la programación y la informática. Tema 8 (20)

PDF
Clase No CONCEPTOS DE POO PARA JAVA.04.pdf
PPTX
Taller de programación-programación orientada a objetos
PDF
Cap3 algoritmos
PPTX
Introducción a java
DOCX
métodos procedimimientos estructuras de control java
PDF
Tipos basicos de java
PDF
Semana 1 Estructuras de Control en Java
PDF
Condicionales
DOCX
TABLA DE COMANDO /SENTENCIAS/PAQUETES
DOCX
TABLA DE COMANDO /SENTENCIAS/PAQUETES
PDF
ESTRUCTURAS DE SELECCIÓN SENTENCIAS IF Y SWITCH EN C++
PDF
Clase 6
DOCX
Estructuras de control
PDF
D6 b sentencias de control de flujo
PPT
Wilfreddy barco
PPT
Estructuras de control en android
PPTX
Tema 9 - Estatutos condicionales
DOCX
Estructuras de control unidad 1 semestre 2
DOCX
Estructuras de controlm
Clase No CONCEPTOS DE POO PARA JAVA.04.pdf
Taller de programación-programación orientada a objetos
Cap3 algoritmos
Introducción a java
métodos procedimimientos estructuras de control java
Tipos basicos de java
Semana 1 Estructuras de Control en Java
Condicionales
TABLA DE COMANDO /SENTENCIAS/PAQUETES
TABLA DE COMANDO /SENTENCIAS/PAQUETES
ESTRUCTURAS DE SELECCIÓN SENTENCIAS IF Y SWITCH EN C++
Clase 6
Estructuras de control
D6 b sentencias de control de flujo
Wilfreddy barco
Estructuras de control en android
Tema 9 - Estatutos condicionales
Estructuras de control unidad 1 semestre 2
Estructuras de controlm

Último (20)

PDF
Como usar el Cerebro en las Aulas SG2 NARCEA Ccesa007.pdf
PDF
Texto Digital Los Miserables - Victor Hugo Ccesa007.pdf
PDF
TOMO II - LITERATURA.pd plusenmas ultras
PDF
Modelo Educativo SUB 2023versión final.pdf
PDF
ACERTIJO EL CONJURO DEL CAZAFANTASMAS MATEMÁTICO. Por JAVIER SOLIS NOYOLA
PDF
Aqui No Hay Reglas Hastings-Meyer Ccesa007.pdf
PDF
La Formacion Universitaria en Nuevos Escenarios Ccesa007.pdf
PDF
Como Potenciar las Emociones Positivas y Afrontar las Negativas Ccesa007.pdf
PDF
Los hombres son de Marte - Las mujeres de Venus Ccesa007.pdf
DOC
Manual de Convivencia 2025 actualizado a las normas vigentes
PDF
Telos 127 Generacion Al fa Beta - fundaciontelefonica
PDF
5°-UNIDAD 5 - 2025.pdf aprendizaje 5tooo
PDF
Escuelas Desarmando una mirada subjetiva a la educación
PPTX
T2 Desarrollo del SNC, envejecimiento y anatomia.pptx
PPTX
Clase 3 del silabo-gestion y control financiero
PDF
MATERIAL DIDÁCTICO 2023 SELECCIÓN 1_REFORZAMIENTO 1° BIMESTRE.pdf
PDF
LIBRO 2-SALUD Y AMBIENTE-4TO CEBA avanzado.pdf
PDF
La lluvia sabe por qué: una historia sobre amistad, resiliencia y esperanza e...
PDF
Cronograma de clases de Práctica Profesional 2 2025 UDE.pdf
PDF
Tomo 1 de biologia gratis ultra plusenmas
Como usar el Cerebro en las Aulas SG2 NARCEA Ccesa007.pdf
Texto Digital Los Miserables - Victor Hugo Ccesa007.pdf
TOMO II - LITERATURA.pd plusenmas ultras
Modelo Educativo SUB 2023versión final.pdf
ACERTIJO EL CONJURO DEL CAZAFANTASMAS MATEMÁTICO. Por JAVIER SOLIS NOYOLA
Aqui No Hay Reglas Hastings-Meyer Ccesa007.pdf
La Formacion Universitaria en Nuevos Escenarios Ccesa007.pdf
Como Potenciar las Emociones Positivas y Afrontar las Negativas Ccesa007.pdf
Los hombres son de Marte - Las mujeres de Venus Ccesa007.pdf
Manual de Convivencia 2025 actualizado a las normas vigentes
Telos 127 Generacion Al fa Beta - fundaciontelefonica
5°-UNIDAD 5 - 2025.pdf aprendizaje 5tooo
Escuelas Desarmando una mirada subjetiva a la educación
T2 Desarrollo del SNC, envejecimiento y anatomia.pptx
Clase 3 del silabo-gestion y control financiero
MATERIAL DIDÁCTICO 2023 SELECCIÓN 1_REFORZAMIENTO 1° BIMESTRE.pdf
LIBRO 2-SALUD Y AMBIENTE-4TO CEBA avanzado.pdf
La lluvia sabe por qué: una historia sobre amistad, resiliencia y esperanza e...
Cronograma de clases de Práctica Profesional 2 2025 UDE.pdf
Tomo 1 de biologia gratis ultra plusenmas

Introducción a la programación y la informática. Tema 8

  • 1. Tema 8. Estructuras de control: Selecci´on Introducci´on a la Inform´atica y a la Programaci´on (IIP) Curso 2011/2012 Departamento de Sistemas Inform´aticos y Computaci´on
  • 2. ´Indice 1 Introducci´on y motivaci´on 3 2 Revisi´on de condicionales 5 3 Instrucciones condicionales 7 • Instrucci´on if-else • Instrucci´on switch 4 El operador ternario condicional 18 22 de octubre de 2011 IIP - Curso 2011/2012 Page 8.2
  • 3. Introducci´on y motivaci´on Hasta ahora hemos considerado el c´odigo simplemente como una secuencia de instrucciones. Sin embargo, la mayor parte de los problemas reales necesitan tomar deci- siones seg´un la situaci´on, y con ello elegir entre distintas subsecuencias de instrucciones. Las estructuras de control permiten cambiar el flujo simple de instrucciones para conseguir estas caracter´ısticas. En un m´etodo, las decisiones se toman generalmente en funci´on de los datos de entrada. La secuencia de instrucciones puede cambiar dependiendo de los datos de entrada o los datos intermedios generados durante la ejecuci´on. En este tema presentaremos los mecanismos que ofrece el lenguaje Java para tomar decisiones. 22 de octubre de 2011 IIP - Curso 2011/2012 Page 8.3
  • 4. Introducci´on y motivaci´on Las instrucciones condicionales pueden ser sencillas o anidadas: if (temp>100) System.out.println("Temperatura mayor que 100"); else System.out.println("Temperatura menor o igual que 100"); //..... if (temp>100) System.out.println("Mayor que 100"); else if (temp>50) System.out.println("Mayor que 50, menor o igual que 100"); else System.out.println("Menor o igual que 50"); System.out.println("Continuamos aqui"); . . ... 22 de octubre de 2011 IIP - Curso 2011/2012 Page 8.4
  • 5. Revisi´on de condicionales La mayor´ıa de las estructuras de decisi´on dependen de expresiones l´ogicas (boolean). Las expresiones l´ogicas se construyen a partir de expresiones num´ericas empleando operadores relacionales y a partir de otras expresiones l´ogicas usando operadores l´ogicos. Una expresi´on l´ogica es toda aquella expresi´on que se eval´ua a cierto (true) o falso (false). Operadores condicionales Operador Operaci´on == Igual a != Diferente a > Mayor que >= Mayor o igual que < Menor que <= Menor o igual que Operadores l´ogicos Operador Operaci´on ! NOT & AND | OR ^ XOR && AND cortocircuitado || OR cortocircuitado 22 de octubre de 2011 IIP - Curso 2011/2012 Page 8.5
  • 6. Revisi´on de condicionales Tabla de verdad x y x && y x || y x ^ y !x x & y x | y false false false false false true false true false true true true true false false true true false true true true true false false if ((temp>=15) && (temp<=20)) ..... if ((temp>15) || (temp==15)) ..... // similar a (temp>=15) if ((temp>=0) ^ (temp<=100)) ..... // similar a (temp>100) || (temp<0) 22 de octubre de 2011 IIP - Curso 2011/2012 Page 8.6
  • 7. Instrucci´on condicional: if El condicional m´as simple de Java presenta esta estructura: if (B) S B es una condici´on. S es cualquier instrucci´on o bloque de ins- trucciones. Ejecuci´on: 1. Se eval´ua B. 2. Si B es cierto, se ejecuta S. 3. Se contin´ua con la instrucci´on que sigue al condicional. 22 de octubre de 2011 IIP - Curso 2011/2012 Page 8.7
  • 8. Instrucci´on condicional: if Ejemplo: clase Circulo, m´etodo setRadio: /** actualiza radio del Circulo a nuevoRadio solo si nuevoRadio es positivo o cero. */ public void setRadio(double nuevoRadio) { if (nuevoRadio >= 0) radio = nuevoRadio; } Ejemplo: datos m´edicos, seg´un el sexo, se pregunta si la persona est´a embarazada Humano h = new Humano(); // ... System.out.print("Que edad tiene? "); // ... if (h.getSexo()==’M’) { System.out.print("Esta embarazada? "); // ... } System.out.print("Es alergico a algun medicamento? "); // ... 22 de octubre de 2011 IIP - Curso 2011/2012 Page 8.8
  • 9. Instrucci´on condicional: if-else Su forma general es: if (B) S1 else S2 B es una condici´on. S1 y S2 son cualquier instrucci´on o conjunto de instrucciones. Ejecuci´on: 1. Se eval´ua B. 2. Si B es cierto, se ejecuta S1. 3. Si B es falso, se ejecuta S2. 4. Se contin´ua con la instrucci´on que sigue al condicional. 22 de octubre de 2011 IIP - Curso 2011/2012 Page 8.9
  • 10. Instrucci´on condicional: if-else Ejemplo: seg´un la temperatura, en- cender o apagar el aire acondiciona- do: Habitacion h = new Habitacion(); AireAcon a = new AireAcon(); // ... if (h.getTemp()>26.0) a.encender(); else a.apagar(); // ... Ejemplo: seg´un la intensidad solar, re- gular la intensidad de las luces: DetectorSolar d = new DetectorSolar(); Bombilla b1 = new Bombilla(); Bombilla b2 = new Bombilla(); // ... if (d.getIntensidad()<100) { b1.incrIntens(); b2.incrIntens(); } else { b1.decrIntens(); b2.decrIntens(); } // ... 22 de octubre de 2011 IIP - Curso 2011/2012 Page 8.10
  • 11. Instrucci´on condicional: if-else En cualquiera de las formas de las instrucciones condicionales if ...else ..., los bloques de instrucciones pueden incluir otras instrucciones condicionales: instrucciones condicionales anidadas. Ejemplos: if (B1) if (B2) S1; else S2; if (B1) if (B2) S1; else S2; if (B1) if (B2) S1; else S2; else if (B3) S3; else S4; 22 de octubre de 2011 IIP - Curso 2011/2012 Page 8.11
  • 12. Instrucci´on condicional: if-else Ejemplo: gestor de multas de tr´afico: // ... if (vehic.getVel()>carr.getMaxVel()) { System.out.println("Velocidad maxima sobrepasada"); if (vehic.getVel()>1.2*carr.getMaxVel()) vehic.crearMultaEspecial(); else vehic.crearMultaNormal(); } else { if (vehic.getVel()<carr.getMinVel()) vehic.crearMultaNormal(); } // ... 22 de octubre de 2011 IIP - Curso 2011/2012 Page 8.12
  • 13. Instrucci´on condicional: if-else Una instrucci´on if-else se di- ce m´ultiple cuando cada uno de los else tiene asociado un nuevo if-else (excepto el ´ultimo). if (B1) S1 else if (B2) S2 else if (B3) S3 ... else if (Bn) Sn else Sn+1 22 de octubre de 2011 IIP - Curso 2011/2012 Page 8.13
  • 14. Instrucci´on condicional: if-else Ejemplo completo de uso de condicionales: validar una fecha (m´etodo validar) public class Fecha { int dd, mm, aa; // Dia, mes, anyo // ... public boolean bisiesto() { return ((aa%4)==0 && (aa%100)!=0) || (aa%400)==0; } public boolean validar() { int numdd=31; // Numero de dias del mes if ((mm<=0) || (mm>12)) return false; // Examina rango del mes // Determinar rango de dias if ((mm==4) || (mm==6) || (mm==9) || (mm==11)) numdd=30; else if (mm==2) if (bisiesto()) numdd=29; else numdd=28; if ((dd<=0) || (dd>numdd)) return false; // Examina rango del dia return true; } // ... } 22 de octubre de 2011 IIP - Curso 2011/2012 Page 8.14
  • 15. Instrucci´on condicional: switch switch (expresion) { case val1: [SC1] [break;] case val2: [SC2] [break;] ... ... case valn: [SCn] [break;] [default: [SCn+1] [break;]] } expresion debe evaluarse a un tipo primitivo (excepto float o double) o a String (desde la versi´on 7.0 de Java). val1, val2, . . . , valn son valores cuyo tipo de datos es compatible con el de expresion. SC1, SC2, . . . , SCn+1 son cualquier secuencia de instrucciones. Los componentes que aparecen entre corchetes ([]) son opcionales. 22 de octubre de 2011 IIP - Curso 2011/2012 Page 8.15
  • 16. Instrucci´on condicional: switch Ejecuci´on: 1. Se eval´ua expresion. 2. Se compara su valor con todos los valores en los case. 3. Cuando es igual a alguno de ellos, ejecutar las instrucciones desde ese punto incluyendo el c´odigo asocia- do a otras etiquetas case hasta: que se encuentre un break, o que se finaliza el bloque switch, 4. Si no es igual a ning´un valor, se ejecutan las instrucciones asociadas a la etiqueta default (si las hay) hasta el fin del bloque switch. 5. Se contin´ua con la instrucci´on que sigue al bloque switch. 22 de octubre de 2011 IIP - Curso 2011/2012 Page 8.16
  • 17. Instrucci´on condicional: switch Un ejemplo completo: escribir el nombre del mes a partir de su n´umero: public class Fecha { int dd, mm, aa; // Dia, mes, anyo // ... public String nomMes() { String mn; switch(mm) { case 1: mn=new String("Enero"); break; case 2: mn=new String("Febrero"); break; case 3: mn=new String("Marzo"); break; case 4: mn=new String("Abril"); break; // ... case 12: mn=new String("Diciembre"); break; default: mn=new String("Desconocido"); } return mn; } // ... } 22 de octubre de 2011 IIP - Curso 2011/2012 Page 8.17
  • 18. El operador ternario o condicional Java, al igual que C y C++, posee un operador ternario con un comportamiento semejante a una instrucci´on condicional. boolexpr ? expr1 : expr2 donde boolexpr es una expresi´on l´ogica y expr1 y expr2 son expresiones cualquiera, pero del mismo tipo de datos. Ejecuci´on: 1. Se eval´ua boolexpr. 2. Si boolexpr es cierta (true), la expresi´on completa se eval´ua a expr1. 3. En otro caso (boolexpr es falsa), la expresi´on completa se eval´ua a expr2. 22 de octubre de 2011 IIP - Curso 2011/2012 Page 8.18
  • 19. El operador ternario o condicional Ejemplo: validaci´on de fecha usando operador ternario public class Fecha { int dd, mm, aa; // Dia, mes, anyo // ... public boolean bisiesto() { return ((aa%4)==0 && (aa%100)!=0) || (aa%400)==0; } public boolean validar() { int numdd=31; // Numero de dias del mes if ((mm<=0) || (mm>12)) return false; // Examina rango de mes // Determinar rango de dia if ((mm==4) || (mm==6) || (mm==9) || (mm==11)) numdd=30; else if (mm==2) numdd=(bisiesto())?29:28; // Aqui se usa el operador ternario if ((dd<=0) || (dd>numdd)) return false; // Examina rango de dia return true; } // ... } 22 de octubre de 2011 IIP - Curso 2011/2012 Page 8.19