Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Java

520 views

Published on

curso de java

Published in: Education
  • Be the first to comment

  • Be the first to like this

Java

  1. 1. Representación de Datos y Aplicaciones Representació Tema 6 Estructuras de control (I) Natividad Martínez Madrid Martí nati@it.uc3m.es 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ónTema 6: Estructuras de control (I)Representación de Datos y Aplicaciones © Natividad Martínez Madrid 2 1
  2. 2. 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últipleTema 6: Estructuras de control (I)Representación de Datos y Aplicaciones © Natividad Martínez Madrid 3 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)Tema 6: Estructuras de control (I)Representación de Datos y Aplicaciones © Natividad Martínez Madrid 4 2
  3. 3. Secuenciación de sentencias sentencia1 sentencia2 sentencia3Tema 6: Estructuras de control (I)Representación de Datos y Aplicaciones © Natividad Martínez Madrid 5 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() { void metodo() { int n; int n; ... ... { int k; { int k; ... int n; Error } ... ... } } ... }Tema 6: Estructuras de control (I)Representación de Datos y Aplicaciones © Natividad Martínez Madrid 6 3
  4. 4. 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 resultantesTema 6: Estructuras de control (I)Representación de Datos y Aplicaciones © Natividad Martínez Madrid 7 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 switchTema 6: Estructuras de control (I)Representación de Datos y Aplicaciones © Natividad Martínez Madrid 8 4
  5. 5. Sentencia if● La sentencia if es la sentencia básica de selección if (condición) { bloque de sentencias }● donde ― condición es una expresión booleana ― sentencias representa un bloque de sentencias o una sentencia única Si es una sentencia única, se pueden quitar las llavesTema 6: Estructuras de control (I)Representación de Datos y Aplicaciones © Natividad Martínez Madrid 9 Diagrama de la sentencia ifEste tipo de diagramas se llaman organigramas yrepresentan el flujo de control de una parte del programa condición false true sentenciasTema 6: Estructuras de control (I)Representación de Datos y Aplicaciones © Natividad Martínez Madrid 10 5
  6. 6. 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 © Natividad Martínez Madrid 11 Ejemplo: Sentencia if 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; } } ¿Cuál sería el organigrama de este constructor?Tema 6: Estructuras de control (I)Representación de Datos y Aplicaciones © Natividad Martínez Madrid 12 6
  7. 7. Sentencia if - else● Opcionalmente, se puede añadir una parte else a la sentencia if● Indica otro bloque de sentencia a ejecutar si la condición es falsa if (condición) { sentencias1 } else { sentencias2 }Tema 6: Estructuras de control (I)Representación de Datos y Aplicaciones © Natividad Martínez Madrid 13 Diagrama de la sentencia if - else false true condición sentencias2 sentencias1Tema 6: Estructuras de control (I)Representación de Datos y Aplicaciones © Natividad Martínez Madrid 14 7
  8. 8. Ejemplo: Sentencia if - else public 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 © Natividad Martínez Madrid 15 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étodoTema 6: Estructuras de control (I)Representación de Datos y Aplicaciones © Natividad Martínez Madrid 16 8
  9. 9. 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 © Natividad Martínez Madrid 17 Ejemplo: Sentencia if anidada if (i == 10) { if (j < 20) a = b; if (k > 100) c = d; else a = c; } ¿A qué ifs pertenencen? else a = d;Tema 6: Estructuras de control (I)Representación de Datos y Aplicaciones © Natividad Martínez Madrid 18 9
  10. 10. Sentencia if-else-if● Habitual cuando hay más de una condición ― Basada en los if anidados, se anidan en la parte del else if (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 © Natividad Martínez Madrid 19 Diagrama de la sentencia if-else-if true condición1 false sentencias1 true condición2 false sentencias2 condición3 true false sentenciasElse sentencias3Tema 6: Estructuras de control (I)Representación de Datos y Aplicaciones © Natividad Martínez Madrid 20 10
  11. 11. Ejemplo: Sentencias if-else-if class Meses { private int mes; public String dameEstacion() { String estacion if (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 © Natividad Martínez Madrid 21 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 Ciudadano necesariosTema 6: Estructuras de control (I)Representación de Datos y Aplicaciones © Natividad Martínez Madrid 22 11
  12. 12. 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 entera switch (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 © Natividad Martínez Madrid 23 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ónTema 6: Estructuras de control (I)Representación de Datos y Aplicaciones © Natividad Martínez Madrid 24 12
  13. 13. Ejemplo sentencia switch public class DiasDelMes public 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.”); } }Tema 6: Estructuras de control (I)Representación de Datos y Aplicaciones © Natividad Martínez Madrid 25 13

×