SlideShare una empresa de Scribd logo
1 de 13
Descargar para leer sin conexión
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
  correctamente
Tema 7: Estructuras de control (II)
Representación de Datos y Aplicaciones      © Natividad Martínez Madrid   2




                                                                              1
Contenido del tema 7

● Concepto de bucle
● Estructuras de repetición
● Anidamiento de estructuras de control
● Estructuras de salto
● Criterios de utilización




Tema 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 repeticiones




Tema 7: Estructuras de control (II)
Representación de Datos y Aplicaciones   © Natividad Martínez Madrid                4




                                                                                        2
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 programa
Tema 7: Estructuras de control (II)
Representación de Datos y Aplicaciones           © Natividad Martínez Madrid                5




                      Diagrama del bucle while




                                                          true
                          condición                                            sentencias

                                         false




Tema 7: Estructuras de control (II)
Representación de Datos y Aplicaciones           © Natividad Martínez Madrid                6




                                                                                                3
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 bucle




Tema 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 bucle
Tema 7: Estructuras de control (II)
Representación de Datos y Aplicaciones   © Natividad Martínez Madrid   8




                                                                           4
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 bucle

Tema 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
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
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 vez

Tema 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


                                               false




Tema 7: Estructuras de control (II)
Representación de Datos y Aplicaciones          © Natividad Martínez Madrid   14




                                                                                   7
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 pantalla




Tema 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 n




Tema 7: Estructuras de control (II)
Representación de Datos y Aplicaciones             © Natividad Martínez Madrid   16




                                                                                      8
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ón

Tema 7: Estructuras de control (II)
Representación de Datos y Aplicaciones    © Natividad Martínez Madrid   18




                                                                             9
Diagrama del bucle for


                                inicialización




                                                        true
                                  condición

                                                                   sentencias
                                         false


                                                                 actualización




Tema 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
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 absoluto
Tema 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
         almacenamiento
Tema 7: Estructuras de control (II)
Representación de Datos y Aplicaciones   © Natividad Martínez Madrid   22




                                                                               11
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 bucle




Tema 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
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
  uso




Tema 7: Estructuras de control (II)
Representación de Datos y Aplicaciones   © Natividad Martínez Madrid     26




                                                                              13

Más contenido relacionado

Destacado

Waardig Organiseren Artikel
Waardig Organiseren ArtikelWaardig Organiseren Artikel
Waardig Organiseren ArtikelAlbert Jan Stam
 
Verantwoording Rekenwonders
Verantwoording RekenwondersVerantwoording Rekenwonders
Verantwoording RekenwondersLionel Kole
 
Sims 2 100 Baby Challenge
Sims 2 100 Baby ChallengeSims 2 100 Baby Challenge
Sims 2 100 Baby Challengeguestc83ec0
 
Estrategias competitivas básicas
Estrategias competitivas básicasEstrategias competitivas básicas
Estrategias competitivas básicasLarryJimenez
 
Estructuras de control ii
Estructuras de control iiEstructuras de control ii
Estructuras de control iiWhaleejaa Wha
 
Aula tme (blog) isolamento absoluto
Aula tme (blog)  isolamento absolutoAula tme (blog)  isolamento absoluto
Aula tme (blog) isolamento absolutoCharles Pereira
 
Javascript Security
Javascript SecurityJavascript Security
Javascript Securityjgrahamc
 
Quimica para todos - La enseñanza de la química al alcance de todos
Quimica para todos - La enseñanza de la química al alcance de todosQuimica para todos - La enseñanza de la química al alcance de todos
Quimica para todos - La enseñanza de la química al alcance de todosmniebuhr
 
estructuras de repeticion
estructuras de repeticionestructuras de repeticion
estructuras de repeticionadark
 
Data Spss Analisis Faktor Hidayatullah Al Azis
Data Spss Analisis Faktor Hidayatullah Al AzisData Spss Analisis Faktor Hidayatullah Al Azis
Data Spss Analisis Faktor Hidayatullah Al Azisguest3bd5cca
 
Constitución política
Constitución políticaConstitución política
Constitución políticaElena Tapias
 
Guia aprendizaje
Guia aprendizaje Guia aprendizaje
Guia aprendizaje Liceth024
 
Instructivo aprendiz sena
Instructivo aprendiz senaInstructivo aprendiz sena
Instructivo aprendiz senajepasi
 
Php Loop
Php LoopPhp Loop
Php Looplotlot
 

Destacado (20)

Waardig Organiseren Artikel
Waardig Organiseren ArtikelWaardig Organiseren Artikel
Waardig Organiseren Artikel
 
Verantwoording Rekenwonders
Verantwoording RekenwondersVerantwoording Rekenwonders
Verantwoording Rekenwonders
 
Sims 2 100 Baby Challenge
Sims 2 100 Baby ChallengeSims 2 100 Baby Challenge
Sims 2 100 Baby Challenge
 
C:\Fakepath\Christie
C:\Fakepath\ChristieC:\Fakepath\Christie
C:\Fakepath\Christie
 
Estrategias competitivas básicas
Estrategias competitivas básicasEstrategias competitivas básicas
Estrategias competitivas básicas
 
Estructuras de control ii
Estructuras de control iiEstructuras de control ii
Estructuras de control ii
 
4
44
4
 
Aula tme (blog) isolamento absoluto
Aula tme (blog)  isolamento absolutoAula tme (blog)  isolamento absoluto
Aula tme (blog) isolamento absoluto
 
Miguel
MiguelMiguel
Miguel
 
Javascript Security
Javascript SecurityJavascript Security
Javascript Security
 
Factores En El Proceso De Organizar
Factores En El Proceso De OrganizarFactores En El Proceso De Organizar
Factores En El Proceso De Organizar
 
Quimica para todos - La enseñanza de la química al alcance de todos
Quimica para todos - La enseñanza de la química al alcance de todosQuimica para todos - La enseñanza de la química al alcance de todos
Quimica para todos - La enseñanza de la química al alcance de todos
 
Sudham
SudhamSudham
Sudham
 
estructuras de repeticion
estructuras de repeticionestructuras de repeticion
estructuras de repeticion
 
Pausas activas[1]
Pausas activas[1]Pausas activas[1]
Pausas activas[1]
 
Data Spss Analisis Faktor Hidayatullah Al Azis
Data Spss Analisis Faktor Hidayatullah Al AzisData Spss Analisis Faktor Hidayatullah Al Azis
Data Spss Analisis Faktor Hidayatullah Al Azis
 
Constitución política
Constitución políticaConstitución política
Constitución política
 
Guia aprendizaje
Guia aprendizaje Guia aprendizaje
Guia aprendizaje
 
Instructivo aprendiz sena
Instructivo aprendiz senaInstructivo aprendiz sena
Instructivo aprendiz sena
 
Php Loop
Php LoopPhp Loop
Php Loop
 

Similar a EstructurasControlII

Similar a EstructurasControlII (20)

3
33
3
 
Estructuras de control i
Estructuras de control iEstructuras de control i
Estructuras de control i
 
Java
JavaJava
Java
 
Tdd
TddTdd
Tdd
 
Adt
AdtAdt
Adt
 
Iniciacion a-la-programacion-ii
Iniciacion a-la-programacion-iiIniciacion a-la-programacion-ii
Iniciacion a-la-programacion-ii
 
Taller Python
Taller PythonTaller Python
Taller Python
 
Dprn3 u3 a1_beda
Dprn3 u3 a1_bedaDprn3 u3 a1_beda
Dprn3 u3 a1_beda
 
Clase 5 -_interbloqueo
Clase 5 -_interbloqueoClase 5 -_interbloqueo
Clase 5 -_interbloqueo
 
Curso online-cnet-lw
Curso online-cnet-lwCurso online-cnet-lw
Curso online-cnet-lw
 
Unidad ii controles en informatica
Unidad ii controles en informaticaUnidad ii controles en informatica
Unidad ii controles en informatica
 
Enclausulamiento java
Enclausulamiento javaEnclausulamiento java
Enclausulamiento java
 
Node al limite con Nest
Node al limite con NestNode al limite con Nest
Node al limite con Nest
 
Estructuras y caracteristicas de la simulacion de eventos discretos
Estructuras y caracteristicas de la simulacion de eventos discretosEstructuras y caracteristicas de la simulacion de eventos discretos
Estructuras y caracteristicas de la simulacion de eventos discretos
 
Desarrollo de habilidades de pensamiento.pdf
Desarrollo de habilidades de pensamiento.pdfDesarrollo de habilidades de pensamiento.pdf
Desarrollo de habilidades de pensamiento.pdf
 
Desarrollo de habilidades de pensamiento.pdf
Desarrollo de habilidades de pensamiento.pdfDesarrollo de habilidades de pensamiento.pdf
Desarrollo de habilidades de pensamiento.pdf
 
Desarrollo de habilidades de pensamiento.pdf
Desarrollo de habilidades de pensamiento.pdfDesarrollo de habilidades de pensamiento.pdf
Desarrollo de habilidades de pensamiento.pdf
 
Desarrollo de habilidades de pensamiento.docx
Desarrollo de habilidades de pensamiento.docxDesarrollo de habilidades de pensamiento.docx
Desarrollo de habilidades de pensamiento.docx
 
Desarrollo de habilidades de pensamiento.pdf
Desarrollo de habilidades de pensamiento.pdfDesarrollo de habilidades de pensamiento.pdf
Desarrollo de habilidades de pensamiento.pdf
 
Desarrollo de habilidades de pensamiento.pdf
Desarrollo de habilidades de pensamiento.pdfDesarrollo de habilidades de pensamiento.pdf
Desarrollo de habilidades de pensamiento.pdf
 

Más de Whaleejaa Wha (20)

Windows 7
Windows 7Windows 7
Windows 7
 
Windows 7 avanzado
Windows 7 avanzadoWindows 7 avanzado
Windows 7 avanzado
 
Virtualizacion con vm ware
Virtualizacion con vm wareVirtualizacion con vm ware
Virtualizacion con vm ware
 
Unity
UnityUnity
Unity
 
Ubuntu
UbuntuUbuntu
Ubuntu
 
Tecnico windows
Tecnico windowsTecnico windows
Tecnico windows
 
Tecnico hardware desde cero
Tecnico hardware desde ceroTecnico hardware desde cero
Tecnico hardware desde cero
 
Soluciones pc desde cero
Soluciones pc desde ceroSoluciones pc desde cero
Soluciones pc desde cero
 
Silverlight
SilverlightSilverlight
Silverlight
 
Servicio tecnico notebooks
Servicio tecnico notebooksServicio tecnico notebooks
Servicio tecnico notebooks
 
Seguridad pc desde cero
Seguridad pc desde ceroSeguridad pc desde cero
Seguridad pc desde cero
 
Seguridad informatica
Seguridad informaticaSeguridad informatica
Seguridad informatica
 
Routers y switches cisco
Routers y switches ciscoRouters y switches cisco
Routers y switches cisco
 
Robotica
RoboticaRobotica
Robotica
 
Redes wireless
Redes wirelessRedes wireless
Redes wireless
 
Redes wifi
Redes wifiRedes wifi
Redes wifi
 
Proteus vsm
Proteus vsmProteus vsm
Proteus vsm
 
Produccion musical
Produccion musicalProduccion musical
Produccion musical
 
Php avanzado
Php avanzadoPhp avanzado
Php avanzado
 
Overclocking
OverclockingOverclocking
Overclocking
 

EstructurasControlII

  • 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 correctamente Tema 7: Estructuras de control (II) Representación de Datos y Aplicaciones © Natividad Martínez Madrid 2 1
  • 2. Contenido del tema 7 ● Concepto de bucle ● Estructuras de repetición ● Anidamiento de estructuras de control ● Estructuras de salto ● Criterios de utilización Tema 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 repeticiones Tema 7: Estructuras de control (II) Representación de Datos y Aplicaciones © Natividad Martínez Madrid 4 2
  • 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 programa Tema 7: Estructuras de control (II) Representación de Datos y Aplicaciones © Natividad Martínez Madrid 5 Diagrama del bucle while true condición sentencias false Tema 7: Estructuras de control (II) Representación de Datos y Aplicaciones © Natividad Martínez Madrid 6 3
  • 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 bucle Tema 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 bucle Tema 7: Estructuras de control (II) Representación de Datos y Aplicaciones © Natividad Martínez Madrid 8 4
  • 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 bucle Tema 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. 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. 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 vez Tema 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 false Tema 7: Estructuras de control (II) Representación de Datos y Aplicaciones © Natividad Martínez Madrid 14 7
  • 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 pantalla Tema 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 n Tema 7: Estructuras de control (II) Representación de Datos y Aplicaciones © Natividad Martínez Madrid 16 8
  • 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ón Tema 7: Estructuras de control (II) Representación de Datos y Aplicaciones © Natividad Martínez Madrid 18 9
  • 10. Diagrama del bucle for inicialización true condición sentencias false actualización Tema 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. 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 absoluto Tema 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 almacenamiento Tema 7: Estructuras de control (II) Representación de Datos y Aplicaciones © Natividad Martínez Madrid 22 11
  • 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 bucle Tema 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. 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 uso Tema 7: Estructuras de control (II) Representación de Datos y Aplicaciones © Natividad Martínez Madrid 26 13