Representación de Datos y Aplicaciones                            Representació                 Tema 7        Estructuras ...
Contenido del tema 7● Concepto de bucle● Estructuras de repetición● Anidamiento de estructuras de control● Estructuras de ...
Bucle while● Sintaxis:       while (condición) {          sentencias       }● Donde       ― condición es una expresión boo...
Características del bucle while● Si la condición es falsa desde un principio,  entonces el bucle nunca se ejecuta       ― ...
Ejercicio: Bucle while● Escribir un programa que calcule si un número  es primo             1 2 3 4 . . . n/2 . . .       ...
Ejercicio: Bucle while       public class Primo {           public static void main (String[] args) {             int nume...
Bucle do-while● Sintaxis:       do {          sentencias       } while (condición);● Sentencia muy parecida a while       ...
Ejemplo: Bucle do-while● Escribid un programa que pida al usuario  introducir un número entero entre 1 y 100       ― Hasta...
Ejemplo: Bucle do-while       import java.io.*;       public class PedirNumero {           public static void main (String...
Diagrama del bucle for                                inicialización                                                      ...
Ejercicio: Bucle do-while● Escribid un programa que calcule una  aproximación a la raíz cuadrada de un número n  mediante ...
Estructuras de salto● Sentencia break       ― Termina la ejecución de una sentencia de repetición o         de un switch  ...
Ejemplo: Sentencia continue     public class Letras {           public static void main (String[] args) {               St...
Próxima SlideShare
Cargando en…5
×

4

200 visualizaciones

Publicado el

0 comentarios
0 recomendaciones
Estadísticas
Notas
  • Sé el primero en comentar

  • Sé el primero en recomendar esto

Sin descargas
Visualizaciones
Visualizaciones totales
200
En SlideShare
0
De insertados
0
Número de insertados
3
Acciones
Compartido
0
Descargas
2
Comentarios
0
Recomendaciones
0
Insertados 0
No insertados

No hay notas en la diapositiva.

4

  1. 1. Representación de Datos y Aplicaciones Representació Tema 7 Estructuras de control (II) Natividad Martínez Madrid Martí nati@it.uc3m.es Objetivos del tema 7● 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 repetición proporcionadas por Java y saber aplicarlas correctamente● Conocer las estructuras de control de salto proporcionadas por Java y saber aplicarlas correctamenteTema 7: Estructuras de control (II)Representación de Datos y Aplicaciones © Natividad Martínez Madrid 2 1
  2. 2. Contenido del tema 7● Concepto de bucle● Estructuras de repetición● Anidamiento de estructuras de control● Estructuras de salto● Criterios de utilizaciónTema 7: Estructuras de control (II)Representación de Datos y Aplicaciones © Natividad Martínez Madrid 3 Bucles● Bloque de sentencias se repite hasta que deja de cumplirse una condición● Son también llamadas sentencias de repetición o de iteración● Tipos de bucles: ― Bucle while Número indeterminado de repeticiones ― Bucle do-while ― Bucle for Número determinado de repeticionesTema 7: Estructuras de control (II)Representación de Datos y Aplicaciones © Natividad Martínez Madrid 4 2
  3. 3. Bucle while● Sintaxis: while (condición) { sentencias }● Donde ― condición es una expresión booleana que se evalúa al principio del bucle y antes de cada iteración de las sentencias ― Si la condición es verdadera, se ejecuta el bloque de sentencias, y se vuelve al principio del bucle ― Si la condición es falsa, no se ejecuta el bloque de sentencias, y se continúa con la siguiente sentencia del programaTema 7: Estructuras de control (II)Representación de Datos y Aplicaciones © Natividad Martínez Madrid 5 Diagrama del bucle while true condición sentencias falseTema 7: Estructuras de control (II)Representación de Datos y Aplicaciones © Natividad Martínez Madrid 6 3
  4. 4. Características del bucle while● Si la condición es falsa desde un principio, entonces el bucle nunca se ejecuta ― Por eso se dice que el bucle while se ejecuta cero o más veces● Si la condición nunca llega a ser falsa, tenemos un bucle infinito● La condición se denomina invariante del bucleTema 7: Estructuras de control (II)Representación de Datos y Aplicaciones © Natividad Martínez Madrid 7 Ejemplo: Bucle while● Bucle tipo contador int i = 0; while (i < 10) { System.out.println (i); i++; } ― Contador de bucle ― Valor inicial del contador de bucle ― Incremento (o decremento) del contador en el cuerpo del bucle ― Condición de final de bucleTema 7: Estructuras de control (II)Representación de Datos y Aplicaciones © Natividad Martínez Madrid 8 4
  5. 5. Ejercicio: Bucle while● Escribir un programa que calcule si un número es primo 1 2 3 4 . . . n/2 . . . . . n ― Empezando desde 2, comprobamos si cada número es un divisor entero de n ― Sólo hace falta repetirlo hasta n/2 ― O hasta que encontremos un divisor entero ― Para esto utilizaremos un centinela Variable booleana a la que asignaremos valores y que nos ayudará en el control del bucleTema 7: Estructuras de control (II)Representación de Datos y Aplicaciones © Natividad Martínez Madrid 9 Ejercicio: Diagrama del bucle while divisor = 2 esPrimo = true divisor < n / 2 false && esPrimo true n % divisor == 0 true esPrimo = false false divisor++Tema 7: Estructuras de control (II)Representación de Datos y Aplicaciones © Natividad Martínez Madrid 10 5
  6. 6. Ejercicio: Bucle while public class Primo { public static void main (String[] args) { int numero; int divisor; boolean esPrimo; numero = 101; divisor = 2; esPrimo = true; while ((divisor < numero /2) && esPrimo) { if (numero % divisor == 0) esPrimo = false; divisor++; } System.out.println(“El numero “ +numero); if (esPrimo) System.out.println(“ es primo.”); else System.out.println(“ no es primo.”); } }Tema 7: Estructuras de control (II)Representación de Datos y Aplicaciones © Natividad Martínez Madrid 11 Ejemplo: Bucle while int factorial (int n) { int fact = 1; while (n < 0) { fact = fact * n; } return fact; }● ¿Qué problema tiene este código?Tema 7: Estructuras de control (II)Representación de Datos y Aplicaciones © Natividad Martínez Madrid 12 6
  7. 7. Bucle do-while● Sintaxis: do { sentencias } while (condición);● Sentencia muy parecida a while ― El bloque de sentencias se repite mientras se cumpla una condición ― La condición se comprueba después de ejecutar el bloque de sentencias ― El bloque se ejecuta siempre al menos una vezTema 7: Estructuras de control (II)Representación de Datos y Aplicaciones © Natividad Martínez Madrid 13 Diagrama del bucle do-while sentencias true condición falseTema 7: Estructuras de control (II)Representación de Datos y Aplicaciones © Natividad Martínez Madrid 14 7
  8. 8. Ejemplo: Bucle do-while● Escribid un programa que pida al usuario introducir un número entero entre 1 y 100 ― Hasta que el número introducido sea efectivamente mayor que 1 y menor que 100● Y después lo imprima en pantallaTema 7: Estructuras de control (II)Representación de Datos y Aplicaciones © Natividad Martínez Madrid 15 Ejemplo: Bucle do-while leer n de teclado n<0 false || n > 100 true imprimir nTema 7: Estructuras de control (II)Representación de Datos y Aplicaciones © Natividad Martínez Madrid 16 8
  9. 9. Ejemplo: Bucle do-while import java.io.*; public class PedirNumero { public static void main (String[] args) throws IOException{ int numero; String linea; BufferedReader teclado = new BufferedReader( new InputStreamReader(System.ini)); do { System.out.println(“Introduce un número entre 1 y 100:”); linea = teclado.readLine(); numero = Integer.parseInt(linea); } while (numero < 1 || numero > 100); System.out.println(“El numero introducido es: “ + numero); } }Tema 7: Estructuras de control (II)Representación de Datos y Aplicaciones © Natividad Martínez Madrid 17 Bucle for● Sintaxis for (inicialización ; condición ; actualización) { sentencias }● Donde ― La inicialización se realiza sólo una vez, antes de la primera iteración ― La condición se comprueba cada vez antes de entrar al bucle. Si es cierta, se entra. Si no, se termina ― La actualización se realiza siempre al terminar de ejecutar la iteración, antes de volver a comprobar la condiciónTema 7: Estructuras de control (II)Representación de Datos y Aplicaciones © Natividad Martínez Madrid 18 9
  10. 10. Diagrama del bucle for inicialización true condición sentencias false actualizaciónTema 7: Estructuras de control (II)Representación de Datos y Aplicaciones © Natividad Martínez Madrid 19 Ejemplo: Bucle for public class ListaCaracteres { public static void main (String[] args) { for (char c = 0; c < 128; c++) { if (c != 26) // caracter para borrar pantalla System.out.println(“Valor: “ + (int)c + “t Carácter: “ + c); } }Tema 7: Estructuras de control (II)Representación de Datos y Aplicaciones © Natividad Martínez Madrid 20 10
  11. 11. Ejercicio: Bucle do-while● Escribid un programa que calcule una aproximación a la raíz cuadrada de un número n mediante un método iterativo ― Cada nuevo valor aproximado se computa a partir del anterior según la fórmula: n x+ x = x 2 n ― El valor inicial de la secuencia de aproximaciones es 2 ― Terminar el cálculo cuando la diferencia entre las dos últimas aproximaciones sea menor que 10-4 Usar double Math.abs(double n) para el valor absolutoTema 7: Estructuras de control (II)Representación de Datos y Aplicaciones © Natividad Martínez Madrid 21 Criterios de utilización de bucles● while ― Si hay casos en los que el bucle no se ejecute● do-while ― Si la parte de ejecución del bucle se ha de hacer al menos una vez● for ― Si se sabe el número de veces que se ha de repetir el bucle ― Si utilizar la inicialización y actualización del bucle permite escribir el código de forma más clara ― Si se realiza un recorrido en una esrtuctura de almacenamientoTema 7: Estructuras de control (II)Representación de Datos y Aplicaciones © Natividad Martínez Madrid 22 11
  12. 12. Estructuras de salto● Sentencia break ― Termina la ejecución de una sentencia de repetición o de un switch ― Continua con la siguiente instrucción● Sentencia continue ― Sólo en estructuras de repetición ― Se termina la ejecución de ese paso de repetición y se vuelve a evaluar la condición del bucleTema 7: Estructuras de control (II)Representación de Datos y Aplicaciones © Natividad Martínez Madrid 23 Ejemplo: Sentencia break public class Primo { public static void main (String[] args) { int numero; int divisor; boolean esPrimo; numero = 101; divisor = 2; esPrimo = true; while (divisor < numero /2) { if (numero % divisor == 0) { esPrimo = false; break; } divisor++; } System.out.println(“El numero “ +numero); if (esPrimo) System.out.println(“ es primo.”); else System.out.println(“ no es primo.”); } }Tema 7: Estructuras de control (II)Representación de Datos y Aplicaciones © Natividad Martínez Madrid 24 12
  13. 13. Ejemplo: Sentencia continue public class Letras { public static void main (String[] args) { String texto = “En un lugar de la mancha, de cuyo ...”; for (int I = 0; I < texto.length(); i++) { if (!Character.isLetter(texto.charAt(i))) { continue; } System.out`print(texto.charAt(i)); } } }Tema 7: Estructuras de control (II)Representación de Datos y Aplicaciones © Natividad Martínez Madrid 25 Utilización de estructuras de salto● Habitualmente, no ofrecen grandes mejoras respecto a no usarlo● Para un principiante, se recomienda evitar su usoTema 7: Estructuras de control (II)Representación de Datos y Aplicaciones © Natividad Martínez Madrid 26 13

×