SlideShare une entreprise Scribd logo
1  sur  13
Télécharger pour lire hors ligne
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

Contenu connexe

En vedette

Smbd equipo 2
Smbd equipo 2Smbd equipo 2
Smbd equipo 2rttvip
 
Smdb Equipo11
Smdb Equipo11Smdb Equipo11
Smdb Equipo11antori
 
950900425008 cc80550007c
950900425008 cc80550007c950900425008 cc80550007c
950900425008 cc80550007cEmiliy02
 
Verantwoording Rekenwonders
Verantwoording RekenwondersVerantwoording Rekenwonders
Verantwoording RekenwondersLionel Kole
 
Simplifiez votre activité grâce au traitement documentaire intelligent
Simplifiez votre activité grâce au traitement documentaire intelligentSimplifiez votre activité grâce au traitement documentaire intelligent
Simplifiez votre activité grâce au traitement documentaire intelligentXerox Global
 
Manual de cadena de custodia
Manual de cadena de custodiaManual de cadena de custodia
Manual de cadena de custodiaMona Beautifull
 
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
 
Indicadores e quantificação da degradação ambiental em áreas mineradas, Ubatu...
Indicadores e quantificação da degradação ambiental em áreas mineradas, Ubatu...Indicadores e quantificação da degradação ambiental em áreas mineradas, Ubatu...
Indicadores e quantificação da degradação ambiental em áreas mineradas, Ubatu...Maria José Brollo
 
Advances in Automatic Speech Recognition: From Audio-Only To Audio-Visual Sp...
Advances in Automatic Speech Recognition: From Audio-Only  To Audio-Visual Sp...Advances in Automatic Speech Recognition: From Audio-Only  To Audio-Visual Sp...
Advances in Automatic Speech Recognition: From Audio-Only To Audio-Visual Sp...IOSR Journals
 
Tema 5 la nutrición de los animales i
Tema 5 la nutrición de los animales iTema 5 la nutrición de los animales i
Tema 5 la nutrición de los animales ipacozamora1
 
Gestores de base de datos
Gestores de base de datosGestores de base de datos
Gestores de base de datosaclle
 
Termo de adjudicação e homologação ssec alimentação escolar 01
Termo de adjudicação e homologação ssec alimentação escolar 01Termo de adjudicação e homologação ssec alimentação escolar 01
Termo de adjudicação e homologação ssec alimentação escolar 01Carlos França
 
Modelo Cmmi 7
Modelo Cmmi 7Modelo Cmmi 7
Modelo Cmmi 7Su Vivian
 

En vedette (20)

Smbd equipo 2
Smbd equipo 2Smbd equipo 2
Smbd equipo 2
 
Subredes
SubredesSubredes
Subredes
 
Smdb Equipo11
Smdb Equipo11Smdb Equipo11
Smdb Equipo11
 
Smdb Equipo11
Smdb Equipo11Smdb Equipo11
Smdb Equipo11
 
950900425008 cc80550007c
950900425008 cc80550007c950900425008 cc80550007c
950900425008 cc80550007c
 
Verantwoording Rekenwonders
Verantwoording RekenwondersVerantwoording Rekenwonders
Verantwoording Rekenwonders
 
Simplifiez votre activité grâce au traitement documentaire intelligent
Simplifiez votre activité grâce au traitement documentaire intelligentSimplifiez votre activité grâce au traitement documentaire intelligent
Simplifiez votre activité grâce au traitement documentaire intelligent
 
Sist. gestión de calidad
Sist. gestión de calidadSist. gestión de calidad
Sist. gestión de calidad
 
Manual de cadena de custodia
Manual de cadena de custodiaManual de cadena de custodia
Manual de cadena de custodia
 
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
 
Indicadores e quantificação da degradação ambiental em áreas mineradas, Ubatu...
Indicadores e quantificação da degradação ambiental em áreas mineradas, Ubatu...Indicadores e quantificação da degradação ambiental em áreas mineradas, Ubatu...
Indicadores e quantificação da degradação ambiental em áreas mineradas, Ubatu...
 
Advances in Automatic Speech Recognition: From Audio-Only To Audio-Visual Sp...
Advances in Automatic Speech Recognition: From Audio-Only  To Audio-Visual Sp...Advances in Automatic Speech Recognition: From Audio-Only  To Audio-Visual Sp...
Advances in Automatic Speech Recognition: From Audio-Only To Audio-Visual Sp...
 
6994930 ejercicios-inversion
6994930 ejercicios-inversion6994930 ejercicios-inversion
6994930 ejercicios-inversion
 
Tema 5 la nutrición de los animales i
Tema 5 la nutrición de los animales iTema 5 la nutrición de los animales i
Tema 5 la nutrición de los animales i
 
Aleitamento
AleitamentoAleitamento
Aleitamento
 
Gestores de base de datos
Gestores de base de datosGestores de base de datos
Gestores de base de datos
 
Termo de adjudicação e homologação ssec alimentação escolar 01
Termo de adjudicação e homologação ssec alimentação escolar 01Termo de adjudicação e homologação ssec alimentação escolar 01
Termo de adjudicação e homologação ssec alimentação escolar 01
 
Modelo Cmmi 7
Modelo Cmmi 7Modelo Cmmi 7
Modelo Cmmi 7
 

Similaire à Estructuras de control ii

Similaire à Estructuras de control ii (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
 

Plus 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
 

Estructuras de control ii

  • 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