Estructuras de control i
Transcript of Estructuras de control i
1
NatividadNatividad MartMartíínez Madridnez [email protected]@it.uc3m.es
TemaTema 66Estructuras de control (I)
RepresentaciRepresentacióónn de de DatosDatos y y AplicacionesAplicaciones
Tema 6: Estructuras de control (I)Representación de Datos y Aplicaciones 2© Natividad Martínez Madrid
Objetivos del tema 6
● Aprender a diseñar algoritmos sencillos para la solución de problemas
● Aprender a representar de forma abstracta los algoritmos en forma de organigrama
● Conocer las estructuras de control de tipo selección proporcionadas por Java y saber aplicarlas correctamente
● Ser capaces de elegir la estructura de selección adecuada a cada situación
2
Tema 6: Estructuras de control (I)Representación de Datos y Aplicaciones 3© Natividad Martínez Madrid
Contenido del tema 6
● Conceptos básicos del flujo de control● Secuenciación de sentencias● Sentencia simple y sentencia compuesta● Estructuras de selección simple y múltiple
Tema 6: Estructuras de control (I)Representación de Datos y Aplicaciones 4© Natividad Martínez Madrid
Conceptos básicos del flujo de control
● Dentro del cuerpo de los métodos se ejecutan sentencias (instrucciones) que determinan el comportamiento del programa
● Dichas sentencias se ejecutan en secuencia―Cada sentencia termina con un punto y coma
● Las sentencias que hemos visto hasta ahora eran sencillas (asignación o return)
3
Tema 6: Estructuras de control (I)Representación de Datos y Aplicaciones 5© Natividad Martínez Madrid
Secuenciación de sentencias
sentencia1
sentencia2
sentencia3
Tema 6: Estructuras de control (I)Representación de Datos y Aplicaciones 6© Natividad Martínez Madrid
void metodo() {int n;...{ int k;
int n;...
}...}
Bloque de sentencias
● Un bloque de sentencias (o sentencia compuesta) es un número de sentencias Java simples rodeadas por llaves―Los bloques definen un ámbito de variables―Los bloques pueden anidarse
void metodo() {int n;...{ int k;
...}
...}
Error
4
Tema 6: Estructuras de control (I)Representación de Datos y Aplicaciones 7© Natividad Martínez Madrid
Sentencias de control
● Los lenguajes de programación proporcionan sentencias de control que permiten―Ejecución opcional de un bloque de sentencias―Ejecución repetida de un bloque de sentencias
● De esta forma, se pueden implementar algoritmos para calcular los valores resultantes
Tema 6: Estructuras de control (I)Representación de Datos y Aplicaciones 8© Natividad Martínez Madrid
Estructuras de selección
● Las estructuras de selección permiten, en función del valor lógico de un selector, ejecutar un bloque de sentencias u otro
● Tipos de sentencias de selección:― Sentencia if / if-else
―Sentencia switch
5
Tema 6: Estructuras de control (I)Representación de Datos y Aplicaciones 9© Natividad Martínez Madrid
Sentencia if
● La sentencia if es la sentencia básica de selecciónif (condición) {
bloque de sentencias
}
● donde ―condición es una expresión booleana―sentencias representa un bloque de sentencias o
una sentencia únicaSi es una sentencia única, se pueden quitar las llaves
Tema 6: Estructuras de control (I)Representación de Datos y Aplicaciones 10© Natividad Martínez Madrid
Diagrama de la sentencia if
sentencias
condición
true
false
Este tipo de diagramas se llaman organigramas y representan el flujo de control de una parte del programa
6
Tema 6: Estructuras de control (I)Representación de Datos y Aplicaciones 11© Natividad Martínez Madrid
Significado de la sentencia if
● Si la condición es cierta (si el valor de la expresión es true) se ejecutará el bloque de sentencias asociado
● Si la condición es falsa, dicho bloque de sentencias no se ejecutará
Tema 6: Estructuras de control (I)Representación de Datos y Aplicaciones 12© Natividad Martínez Madrid
public class Alumno {String nombre;int año;String grupo;
public Alumno (String nombre, int año) throws Exception {if (nombre == null)
throw new Exception (“Nombre vacío”);if (año < 0)
throw new Exception (“Año incorrecto”); this.nombre = nombre;this.año = año;
}}
Ejemplo: Sentencia if
¿Cuál sería el organigrama de este constructor?
7
Tema 6: Estructuras de control (I)Representación de Datos y Aplicaciones 13© Natividad Martínez Madrid
Sentencia if - else
● Opcionalmente, se puede añadir una parte elsea la sentencia if
● Indica otro bloque de sentencia a ejecutar si la condición es falsaif (condición) {
sentencias1
} else {
sentencias2
}
Tema 6: Estructuras de control (I)Representación de Datos y Aplicaciones 14© Natividad Martínez Madrid
Diagrama de la sentencia if - else
sentencias1
condicióntruefalse
sentencias2
8
Tema 6: Estructuras de control (I)Representación de Datos y Aplicaciones 15© Natividad Martínez Madrid
Ejemplo: Sentencia if - elsepublic class IfElse {
public void pruebaIfElse (int a, int b) {if (a>b) {System.out.println(“El número mayor es “ + a);
} else {System.out.println(“El número mayor es “ + b);
}}public static void main (String[] args) {IfElse ie = new IfElse();ie.pruebaIfElse(3,7);ie.pruebaIfElse(7,6);
}}
Tema 6: Estructuras de control (I)Representación de Datos y Aplicaciones 16© Natividad Martínez Madrid
Ejercicio: if-else
● Escribid un método:boolean aprueba (float nota)
que, dada una nota, determine si el examen estáaprobado o no―Pintad primero el organigrama―Después codificad el método
9
Tema 6: Estructuras de control (I)Representación de Datos y Aplicaciones 17© Natividad Martínez Madrid
Sentencia if anidada
● Las sentencias if se pueden anidar―También las otras sentencias de control que veremos
a continuación
● Dentro del bloque de sentencias del if (o de los bloques de if-else) puede encontrarse otra sentencia if
● Importante―A qué if corresponde cada else―Cuál es el estado del programa en cada punto― ¡Una buena indentación!
Tema 6: Estructuras de control (I)Representación de Datos y Aplicaciones 18© Natividad Martínez Madrid
Ejemplo: Sentencia if anidada
if (i == 10) {if (j < 20) a = b;
if (k > 100) c = d;
else a = c;
}
else a = d;¿A qué ifs pertenencen?
10
Tema 6: Estructuras de control (I)Representación de Datos y Aplicaciones 19© Natividad Martínez Madrid
Sentencia if-else-if
● Habitual cuando hay más de una condición― Basada en los if anidados, se anidan en la parte del elseif (condición1) {
sentencias1
} else if (condición2) {
sentencias2
} else if (condición3) {
sentencias3
}
...
else {
sentenciasElse
}
Tema 6: Estructuras de control (I)Representación de Datos y Aplicaciones 20© Natividad Martínez Madrid
Diagrama de la sentencia if-else-if
sentencias1
condición1 true
false
condición2
condición3
sentenciasElse
false
false
sentencias2
sentencias3
true
true
11
Tema 6: Estructuras de control (I)Representación de Datos y Aplicaciones 21© Natividad Martínez Madrid
Ejemplo: Sentencias if-else-if
class Meses {private int mes;
public String dameEstacion() {String estacionif (mes == 12 || mes == 1 || mes == 2) estacion = “Invierno”;
else if (mes == 3 || mes == 4 || mes == 5) estacion = “Primavera”;
else if (mes == 6 || mes == 7 || mes == 8) estacion = “Verano”;
else if (mes == 9 || mes == 10 || mes == 11) estacion = “Otoño”;
return estacion;}...
}
● ¿Cómo se puede mejorar el método?
Tema 6: Estructuras de control (I)Representación de Datos y Aplicaciones 22© Natividad Martínez Madrid
Ejercicio: Sentencia if-else-if
● Se desea escribir un método en la clase Ciudadano que calcule si una persona cumple las condiciones para ser residente en España. Suponed que, para ser residente, se debe cumplir al menos una de las siguientes condiciones:― Ser de nacionalidad española― Ser estudiante matriculado en algún estudio oficial― Ser menor de 18 años y que al menos uno de los padres sea
residente― Ser ciudadano de la EU y tener trabajo o que el cónyuge sea
residente― Ser extranjero y que el cónyuge sea residente
● Podéis diseñar los atributos de la clase Ciudadanonecesarios
12
Tema 6: Estructuras de control (I)Representación de Datos y Aplicaciones 23© Natividad Martínez Madrid
Sentencia switch
● Estructura de selección múltiple● Selección de bloques de sentencias entre múltiples casos
― Dependiendo del valor de una expresión enteraswitch (expresion) {
case valor1:sentencias;break;
case valor2:case valor3:sentencias;break;
…default:sentencias;break;
}
Tema 6: Estructuras de control (I)Representación de Datos y Aplicaciones 24© Natividad Martínez Madrid
Caraterísticas switch
● Puede haber default o no● Si un bloque contiene un break, se continua con
la sentencia siguiente al switch● Si no, continúa comprobando los siguientes
valores, o va al default● Los valores tienen que ser una expresión
constante―Conocida en tiempo de ejecución
13
Tema 6: Estructuras de control (I)Representación de Datos y Aplicaciones 25© Natividad Martínez Madrid
Ejemplo sentencia switch
public class DiasDelMespublic static void main (String[] args) {
int dias;int mes; = 8;switch (mes) {
case 4:case 6:case 8:case 10:
dias = 30;break;
case 2:dias = 28;break;
default;días = 31;break;
}System.out.println(“El mes “ + mes +
“ tiene “ + dias + “ días.”); }
}