SlideShare una empresa de Scribd logo
1 de 60
Clase 6
Clase 6: Sentencias de
 Repetición
Después de haber estudiado este capítulo usted podrá:



          Implementar sentencias de repetición en su programa utilizando
           while, do-while y for.
          Implementar sentencias de repetición utilizando: while, do-while y
           for.
          Implementar sentencias de control genéricas
          Realizar sentencias de repetición anidadas
          Elegir la sentencia de repetición adecuada según el problema
          Generar números aleatorios
          Lograr que el usuario interactúe con la máquina en una sesión
           SI-NO para continuar ejecutando el programa

                                                                        2
Definición
   Las sentencias de repetición son un bloque de
    código que son ejecutadas por un cierto número de
    veces hasta que se cumpla una condición.

   Repeticiones controladas por contador: terminan la
    ejecución del bloque después que este ha sido
    ejecutado por un número de veces determinado

   Repeticiones controladas por centinela: termina la
    ejecución del bloque después que un valor diseñado
    como centinela ha sido encontrado.

   Las sentencias de repetición son llamadas LOOP o
    BUCLE.
                                                         3
Sentencia while
//este programa realiza la suma de los 100 primeros
números


int sum = 0, number = 1;


while ( number <= 100 ) {


    sum      =   sum + number;
                                           Estas sentencias son
                                            Estas sentencias son
                                           ejecutadas mientras que
                                            ejecutadas mientras que
                                           la variable number sea
                                            la variable number sea
    number = number + 1;                   menor ooigual que 100
                                            menor igual que 100


}
System.out.print(“La Suma es: “ + suma);


                                                                      4
Sintaxis para la sentencia while
               while ( <expresión booleana> ) {

                         <sentencia 1>
                         <sentencia 1>
                         <sentencia n>           }
                                                     Expresión Booleana
                                                     Expresión Booleana


               while (       number <= 100       ) {

                   sum       =   sum + number;
Sentencias
 Sentencias
(loop body)
 (loop body)       number = number + 1;
               }



                                                                   5
Flujo de Control while

       int sum = 0, number = 1
        int sum = 0, number = 1




                                                                 number = number + 1;
                                          sum = sum + number;

                                                                number = number + 1;
                                         sum = sum + number;
         number <= 100 ?
          number <= 100 ?




        false
                                  true




                                                                                        6
Mas Ejemplos
                                        Sigue sumando
1
1   int sum = 0, number = 1;             Sigue sumando
                                        números 1, 2, 3, …
                                         números 1, 2, 3, …
                                        hasta que la variable
                                         hasta que la variable
    while ( sum <= 1000000 ) {          sum sea mayor aa
                                         sum sea mayor
                                        1,000,000.
                                         1,000,000.
        sum      =    sum + number;
        number = number + 1;
    }


2
2   int producto = 1, numero = 1,       Calcula el producto de
                                         Calcula el producto de
       contador   = 20, ultimoNumero;
                                        los 20 primeros enteros
                                         los 20 primeros enteros

    ultimoNumero = 2 * contador - 1;


    while (numero <= ultimoNumero) {
        producto = producto * numero;
        numero       = numero + 2;
    }
                                                                   7
Encontrando el Maximo Comun Divisor
      public int
          mcdBruteforce(int m, int n) {
          // assume m, n >= 1

          int menor = Math.min(m, n);
          int mcd;
          int i = 1;

          while (i <= menor) {

              if (m%i == 0 && n%i == 0) {
                  mcd = i;
              }

              i++;
          }

          return mcd;
      }

                                            8
                Aproximación directa
Encontrando el Maximo Comun Divisor
        public int gcd(int m, int n) {
            //   no importa si n o m
            //   es mayor, este metodo;
            //   trabaja bien
            //
            //   assume m, n >= 1

            int r = n % m;

            while (r != 0) {

                  n = m;
                  m = r;
                  r = n % m;
            }

            return m;
        }

                                          9
            Solución mas eficiente
Ejemplo: Probando datos de ingreso
String inputStr;
                                                            Primera lectura
                                                            Primera lectura
int       edad;

inputStr = JOptionPane.showInputDialog(null,“Su edad (entre 18 y 90):");
edad        = Integer.parseInt(inputStr);


while (edad < 18 || edad > 90) {
       JOptionPane.showMessageDialog(null,
           “Se ingreso una edad no valida. Por favor vuelva a intentarlo");


       inputStr = JOptionPane.showInputDialog(null,“Su edad (entre 18 y 90):");

       edad = Integer.parseInt(inputStr);
}

                                                              Segunda lectura
                                                              Segunda lectura


                                                                              10
Operadores cortos utiles
suma = suma + numero;   Es equivalente a     suma += numero;




         Operador           Uso            Significado
             +=         a += b;            a = a + b;
             -=         a -= b;            a = a – b;
             *=         a *= b;            a = a * b;
             /=         a /= b;            a = a / b;
             %=         a %= b;            a = a % b;

                                                           11
Tenga cuidado con los errores
 1.   Cuidado con el error “por uno”

 2.   Asegúrese que el cuerpo del loop contiene
      sentencias que eventualmente harán que el loop
      finalice

 3.   Si quiere ejecutar el cuerpo del loop N veces,
      entonces inicialice el contador en 0 y utilice una
      condicion que evalue contador <N, o inicialice el
      contador en 1 y evalue contador <=N



                                                           12
Loop Error #1 - Loop Infinito
                                             Error
                                             Error
 1
 1   int producto = 0;               Estas sentencias se
                                      Estas sentencias se
                                     ejecutaran por siempre.
                                      ejecutaran por siempre.
                                     La expresion boolena
                                      La expresion boolena
     while ( producto < 500000 ) {   nunca será falsa.
                                      nunca será falsa.
                                     Para solucionar el
                                      Para solucionar el
         product = product * 5;      problema producto debe
                                      problema producto debe
     }                               inicializarse en 11
                                      inicializarse en




 2
 2   int contador = 1;
                                              Error
                                              Error
     while ( contador != 10 ) {      La expresión boolena
                                      La expresión boolena
                                     nunca sera falsa.
                                      nunca sera falsa.
         contador = contador + 2;    Para solucionar el
                                      Para solucionar el
                                     problema count debe ser
                                      problema count debe ser
     }                               inicializado en 11
                                      inicializado en




                                                           13
Loop Error #2 – error por uno
       Objetivo : Ejecute el cuerpo del loop 10 veces
1
1       count = 1;                       2
                                         2   count = 1;
        while ( count < 10 ){                while ( count <= 10 ){
            . . .                                . . .
            count++;                             count++;
        }                                    }



3
3       count = 0;                       4
                                         4   count = 0;
        while ( count <= 10 ){               while ( count < 10 ){
            . . .                                . . .
            count++;                             count++;
        }                                    }



        1 y
        1           3 exiben el error por uno.
                    3
                                                                      14
La sentencia do-while
  int sum = 0, number = 1;


  do {

                             Estas sentencias son
                              Estas sentencias son
    sum = sum + number;      ejecutadas hasta que la
                              ejecutadas hasta que la
                             variable sum sea menor
                              variable sum sea menor
    number++;                ooigual que 100
                                igual que 100




  } while ( sum <= 100 );



                                                        15
Sintaxis do-while
      do
              <sentencias>
      while ( <expresion booleana> ) ;


      do {


           sum = sum + number;           Sentencias
                                          Sentencias
           number++;                     (loop body)
                                          (loop body)


      } while (   sum <= 100     );

      Expresion booleana
      Expresion booleana



                                                16
Flujo de Control do-while

      int sum = 0, number = 1
       int sum = 0, number = 1




      sum = sum + number
       sum = sum + number
      number++;
       number++;




                                 true
       sum <= 100
        sum <= 100


       false
                                        17
Bucle y Control de Media Repetición
   Bucle y Control de Media Repeticiόn puede ser
    utilizado para evaluar la condicion de terminacion
    de un bucle en medio del cuerpo del bucle.

   Es implementado utilizando las palabras
    reservadas while, if, and break.




                                                     18
Ejemplo: Bucle-y-MedioControl
String name;

while (true){

    name = JOptionPane.showInputDialog(null, “Tu nombre");

    if (name.length() > 0) break;

    JOptionPane.showMessageDialog(null, "Ingreso no
        valido." + “Debe ingresar al menos un caracter.");
}




                                                         19
Errores en Bucles-y-MedioControl
   Ponga atenciόn en dos cosas cuando utilice
    Bucles-y-MedioControl:
     El peligro de un bucle infinito. La expresión booleana
      del while es true, la cual siempre evaluará a true. Si
      olvidamos incluir una sentencia if para romper el
      bucle, terminaremos en un bucle infinito.
     Multiple  exit points. It is possible, although complex, to
      write a correct control loop with multiple exit points
      (breaks). It is good practice to enforce the one-entry
      one-exit control flow.


                                                              20
Bucle: Sentencia break (1/4)
 int i = 1;
 int sum = 0;
                                        sum is 21
 while (sum < 20) {
   sum += i;                            i is 7
   ++i;
 }
 System.out.println("sum is " + sum);
 System.out.println("i is " + i);

 int i = 1;
 int sum = 0;
 while (sum < 20) {
   sum += i;                            sum is 6
   if (sum % 2 == 0) break;             i is 3
   ++i;
 }
 System.out.println("sum is " + sum);
 System.out.println("i is " + i);
                                                    21
Bucle: Sentencia break (2/4)
 int i = 1;
 int sum = 0;
                                        sum es 15
 while ( true ) {
   sum += i;                            i es 5
   if (sum > 10) break;
                                        Note: Sin el break, es
   ++i;                                 un bucle infinito!
 }
 System.out.println("sum is " + sum);
 System.out.println("i is " + i);

 int i = 0;
 int sum = 0;                             Trate de
 while (sum <= 10) {                      evitar el uso
   ++i;                                   de break, a
   sum += i;                              menos que
 }                                        sea
 System.out.println("sum is " + sum);     necesario.
 System.out.println("i is " + i);

                                                            22
Bucle: Sentencia break (3/4)
 Random number = new Random();
 int i;
                                         i   is   43
 while (true) {                          i   is   2
   i = number.nextInt(100);              i   is   12
   System.out.println("i is " + i);      i   is   95
   if (i >= 80) break;
 }

 Random class will be discussed later.




                                                       23
Bucle: Sentencia break (4/4)
   break causa que el control salga del bucle mas interno
    en el que esta contenido..

     int a = 1;
     while (a < 5) {                         a   is   1,   b   is   1
       int b = 1;                            a   is   1,   b   is   2
       while (b < 5) {                       a   is   2,   b   is   1
         System.out.println("a is " + a
                                             a   is   2,   b   is   2
                     + ", b is " + b);
                                             a   is   3,   b   is   1
          if (b == 2) break;                 a   is   3,   b   is   2
          ++b;                               a   is   4,   b   is   1
         }
         ++a;                                a   is   4,   b   is   2
     }



                                                                        24
Bucle: Sentencia continue (1/2)
   Algunas veces podríamos querer ir inmediatamente a
    la siguiente iteracion, sin ejecutar el resto de las
    sentencias en el cuerpo del bucle.

   Esto puede ser realizado utilizando continue.

   Como break, continue solo causa que el control
    vaya a la siguiente iteracion en el bucle mas interno
    que lo contiene.




                                                            25
Bucle: Sentencia continue(2/2)
 int i = 0;                             i   is   1
                                        i   is   2
 while (i <= 6) {
   ++i;                                 i   is   4
   if (i == 3) continue;                i   is   5
   System.out.println("i is " + i);     i   is   6
 }                                      i   is   7

 int i = 1;
 int sum = 0;
 while (sum < 20) {
   sum += i;                            sum is 23
   if (sum % 2 == 0) continue;          i is 6
   ++i;
 }
 System.out.println("sum is " + sum);
 System.out.println("i is " + i);
                                                     26
Random Numbers (1/2)
   Random number generation is discussed in section 3.8 of
    your textbook.
   We learn another way here, using the Random class.
   Notes:
     Need to import java.util.*;
     Random( ): constructs a new random number generator
      Random whose seed is based on the current time.
     int nextInt(int n): returns the next pseudo-random, from the
      interval [0, 1, … n-1], uniformly distributed value of a Random
      object.
     Refer to the API specification for the complete description of class
      Random.



                                                                       27
Random Numbers (2/2)
import java.util.*;

public class Random1 {
  public static void main(String[] args) {

        Random num = new Random();

        for (int i=0; i<5; i++) {
          System.out.println("Next random number is "
                              + num.nextInt(100));
        }
    }                     Next   random   number   is   48
}                         Next   random   number   is   14
                          Next   random   number   is   89
                          Next   random   number   is   7
                          Next   random   number   is   44

                                                             28
Diálogo de Confirmación
   dialogo de confirmación puede ser utilizado para que el
    usuario elija si quiere seguir con la ejecución del programa
    o no.
     JOptionPane.showConfirmDialog(null,
            /*prompt*/         "Play Another Game?",
            /*dialog title*/    "Confirmation",
            /*button options*/ JOptionPane.YES_NO_OPTION);




                                                             29
Ejemplo: Diálogo de Confirmación
 boolean sigaJugando = true;
 int     seleccion;

 while (sigaJugando){

    //codigo que realiza un juego viene aqui
    // . . .

    seleccion = JOptionPane.showConfirmDialog(null,
                           “Quiere volver a jugar?",
                           "Confirmacion",
                           JOptionPane.YES_NO_OPTION);

    sigaJugando = (seleccion ==
 JOptionPane.YES_OPTION);
 }


                                                         30
Adicional

Preguntas de Examen
Considere el siguiente código
int i = 1;
while (i <= n) {
   if (i % n == 0) {
      ++i;
   }
}
  System.out.println(i);
(a) Cual es la salida si n es 0?
(b) Cual es la salida si n es 1?
(c) Cual es la salida si n es 3?


                                   32
Que retorna el siguiente método,
asumiendo que n es 12345?
           public static int metodoX(int n) {
             int sum = 0;
             while (n > 0) {
               sum += n % 100;
               n /= 100;
             }
             return sum;
           }
A.   9
B.   15
C.   69
D.   123
E.   168
                                                33
La sentencia for
   int i, sum = 0, number;


   for (i = 0; i < 20; i++) {


       number = scanner.nextInt( );
       sum = sum + number;


   }
                                                 Estas sentencias son
                                                  Estas sentencias son
                                                 ejecutadas 20 veces
                                                  ejecutadas 20 veces
                                                 ((i i= 0, 1, 2, … , ,19).
                                                       = 0, 1, 2, … 19).
   Utilizamos for cuando sabemos cuantas veces
   se va a realizar la repetición



                                                                             34
Syntax sentencia for
for ( <inicializacion>; <expresion booleana>; <incremento>   ){


                          <sentencias>
}
                              Expresión
                              Expresión
Inicializacion
 Inicializacion                                        Incremento
                                                        Incremento
                              Booleana
                               Booleana


    for (         i = 0   ;     i < 20    ;    i++           ) {


        number = scanner.nextInt();                  Sentencias
                                                      Sentencias
        sum = sum + number;                          (loop body)
                                                      (loop body)


    }

                                                                    35
false

                   true
                                        i i= 0;
                                           = 0;



                            i i< 20 ?
                               < 20 ?




 ber =
ber = . .. .. .; ;
 = sum + number;
                                                  Control Flow of for




= sum + number;




             ++;
          i i++;
  36
i++ or ++i?

for ( i = 0; i < 20; i++ ) {
    ...
}

                               Alguna diferencia?


for ( i = 0; i < 20; ++i ) {
    ...
                                   Aqui es lo mismo…
}                                  Solo cuando es parte
                                   de una expresion..si
                                   son diferentes



                                                          37
Compare for y while

  for ( Init ; Expression ; Increment )
      Action


  Init                    Si realmente odian utilizar WHILE
                          por alguna razon….
  while ( Expression )    pueden reescribirla
  {
      Action
      Increment
  }
                                                              38
Sentencia while

   //este programa realiza la suma de los 100
   primeros numeros


   int sum = 0, number = 1;


   while ( number <= 100 ) {


       sum    =   sum + number;


       number = number + 1;
   }



                                                39
Seguimiento de la ejecución (1/12)
                                     i   0
for (int i = 0; i < 3; ++i) {
  System.out.println("i es " + i);
}

System.out.println(“terminamos");




                                             40
Seguimiento de la ejecución(2/12)
                                      i   0
 for (int i = 0; i < 3; ++i) {
   System.out.println("i es " + i);
 }

 System.out.println(“terminamos");




                                              41
Seguimiento de la ejecución(3/12)
                                         i     0
for (int i = 0; i < 3; ++i) {
  System.out.println("i es " + i);
}

System.out.println(“terminamos");
                                     Output:

                                     i es 0




                                                   42
Seguimiento de la ejecución(4/12)
                                         i     1
for (int i = 0; i < 3; ++i) {
  System.out.println("i es " + i);
}

System.out.println(“terminamos");
                                     Output:

                                     i es 0




                                                   43
Seguimiento de la ejecución(5/12)
                                         i     1
for (int i = 0; i < 3; ++i) {
  System.out.println("i es " + i);
}

System.out.println(“terminamos");
                                     Output:

                                     i es 0




                                                   44
Seguimiento de la ejecución(6/12)
                                          i    1
for (int i = 0; i < 3; ++i) {
  System.out.println("i es " + i);
}

System.out.println(“terminamo");
                                     Output:

                                     i es 0
                                     i es 1




                                                   45
Seguimiento de la ejecución(7/12)
                                         i     2
for (int i = 0; i < 3; ++i) {
  System.out.println("i es " + i);
}

System.out.println(“terminamos");
                                     Output:

                                     i es 0
                                     i es 1




                                                   46
Seguimiento de la ejecución(8/12)
                                         i     2
for (int i = 0; i < 3; ++i) {
  System.out.println("i es " + i);
}

System.out.println(“terminamos");
                                     Output:

                                     i es 0
                                     i es 1




                                                   47
Seguimiento de la ejecución(9/12)
                                         i     2
for (int i = 0; i < 3; ++i) {
  System.out.println("i es " + i);
}

System.out.println(“terminamos");
                                     Output:

                                     i es 0
                                     i es 1
                                     i es 2




                                                   48
Seguimiento de la ejecución(10/12)
                                         i     3
for (int i = 0; i < 3; ++i) {
  System.out.println("i es " + i);
}

System.out.println(“terminamos");
                                     Output:

                                     i es 0
                                     i es 1
                                     i es 2




                                                   49
Seguimiento de la ejecución(11/12)
                                         i     3
for (int i = 0; i < 3; ++i) {
  System.out.println("i es " + i);
}

System.out.println(“terminamos");
                                     Output:

                                     i es 0
                                     i es 1
                                     i es 2




                                                   50
Seguimiento de la ejecución(12/12)
                                               3
for (int i = 0; i < 3; ++i) {
  System.out.println("i es " + i);
}

System.out.println(“terminamos");
                                     Output:

 Utilzar siempre i dentro del loop   i es 0
                                     i es 1
                                     i es 2
                                     terminamos




                                                   51
Mas ejemplos
   1
   1   for (int i = 0; i < 100; i += 5)

                             i i= 0, 5, 10, … ,,95
                                = 0, 5, 10, … 95



   2
   2   for (int j = 2; j < 40; j *= 2)

                             j j= 2, 4, 8, 16, 32
                                = 2, 4, 8, 16, 32




   3
   3   for (int k = 100; k > 0; k--) )

                       k = 100, 99, 98, 97, ..., 1
                        k = 100, 99, 98, 97, ..., 1


                                                      52
Factorial
    Definition:
                      1      if n = 0
           n!= 
               1 × 2 ×  × n if n ≥ 1


     int nFactorial = 1;
     for (int i = 2; i <= n; ++i) {
         nFactorial *= i;
     }




                                         53
Alcance de Variable
   Considere:

    int valorActual = 2;

    for (int i = 0; i < 5; ++i) {
        System.out.println(valorActual);
        valorActual = valorActual* 2;
    }
    System.out.println("i is " + i);


 Que muestra valor actual al final?
 Que muestra i?
                                           54
For anidados
   Es cuando utilizamos un for dentro de otro for.




                                                      55
56
Generando la Tabla
        int precio;
        for (int ancho = 11; ancho <=20, ancho++){

                for (int largo = 5, largo <=25, largo+=5){
        INNER
OUTER




                    precio = ancho * largo * 19; //$19 x metro cuadrado
                    System.out.print (" " + precio);
                }
                //finalizada una fila se va a la siguiente
                System.out.println("");
        }




                                                                   57
For anidados (1/2)
                                              i is   0
for (int i = 0; i < 3; ++i) {
                                                 j   is   0
                                                 j   is   1
    System.out.println("i is " + i);
                                                 j   is   2
                                                 j   is   3
    for (int j = 0; j < 4; ++j) {
                                              i is   1
        System.out.println("   j is " + j);
                                                 j   is   0
    }
                                                 j   is   1
                                                 j   is   2
}
                                                 j   is   3
                                              i is   2
                                                 j   is   0
                                                 j   is   1
                                                 j   is   2
                                                 j   is   3
                                                              58
For anidados (2/2)
for (int i = 0; i < 3; ++i) {

    System.out.println("i is " + i);

    for (int j = 0; j < i; ++j) {
        System.out.println("   j is " + j);
    }

}



Cual es la salida?



                                              59
Fin Clase 6




              60

Más contenido relacionado

La actualidad más candente

Ordenamiento con árbol binario
Ordenamiento con árbol binarioOrdenamiento con árbol binario
Ordenamiento con árbol binarioMauricio Solano
 
Estructura de control repetitiva
Estructura de control repetitivaEstructura de control repetitiva
Estructura de control repetitivavillandri pachco
 
Alfabetos-Lenguajes y Automatas 1
Alfabetos-Lenguajes y Automatas 1Alfabetos-Lenguajes y Automatas 1
Alfabetos-Lenguajes y Automatas 1Osiris Mirerus
 
Enfoque de la ingeniería dentro de la informática
Enfoque de la ingeniería dentro de la informáticaEnfoque de la ingeniería dentro de la informática
Enfoque de la ingeniería dentro de la informáticaSamantha Arguello Valdes
 
Arboles mate discreta
Arboles mate discretaArboles mate discreta
Arboles mate discretaJunior Soto
 
Ejemplos de Algoritmos
Ejemplos de AlgoritmosEjemplos de Algoritmos
Ejemplos de AlgoritmosPepe Xdsasda
 
Lenguajes de programacion tema 2_compiladores e interpretes
Lenguajes de programacion tema 2_compiladores e interpretesLenguajes de programacion tema 2_compiladores e interpretes
Lenguajes de programacion tema 2_compiladores e interpretesIsrael Castillo Cruz
 
Tipos de datos C#
Tipos de datos C#Tipos de datos C#
Tipos de datos C#alex28Xx
 
Metodología Incremental
Metodología IncrementalMetodología Incremental
Metodología Incrementalandreilouis
 
EJERCICIOS DE ALGORITMOS
EJERCICIOS DE ALGORITMOSEJERCICIOS DE ALGORITMOS
EJERCICIOS DE ALGORITMOS1002pc3
 
2 1 vistas arquitectonicas
2 1 vistas arquitectonicas2 1 vistas arquitectonicas
2 1 vistas arquitectonicaslandeta_p
 
Portafolio unidad 2 [Lenguajes y autómatas]- Expresiones y lenguajes regulares
Portafolio unidad 2 [Lenguajes y autómatas]- Expresiones y lenguajes regularesPortafolio unidad 2 [Lenguajes y autómatas]- Expresiones y lenguajes regulares
Portafolio unidad 2 [Lenguajes y autómatas]- Expresiones y lenguajes regularesHumano Terricola
 

La actualidad más candente (20)

Ordenamiento con árbol binario
Ordenamiento con árbol binarioOrdenamiento con árbol binario
Ordenamiento con árbol binario
 
Estructura de control repetitiva
Estructura de control repetitivaEstructura de control repetitiva
Estructura de control repetitiva
 
Como Documentar Casos De Uso
Como Documentar Casos De UsoComo Documentar Casos De Uso
Como Documentar Casos De Uso
 
Alfabetos-Lenguajes y Automatas 1
Alfabetos-Lenguajes y Automatas 1Alfabetos-Lenguajes y Automatas 1
Alfabetos-Lenguajes y Automatas 1
 
Casos uso uml
Casos uso umlCasos uso uml
Casos uso uml
 
Enfoque de la ingeniería dentro de la informática
Enfoque de la ingeniería dentro de la informáticaEnfoque de la ingeniería dentro de la informática
Enfoque de la ingeniería dentro de la informática
 
Arboles mate discreta
Arboles mate discretaArboles mate discreta
Arboles mate discreta
 
Ejemplos de Algoritmos
Ejemplos de AlgoritmosEjemplos de Algoritmos
Ejemplos de Algoritmos
 
Apuntadores y listas
Apuntadores y listasApuntadores y listas
Apuntadores y listas
 
Lenguajes de programacion tema 2_compiladores e interpretes
Lenguajes de programacion tema 2_compiladores e interpretesLenguajes de programacion tema 2_compiladores e interpretes
Lenguajes de programacion tema 2_compiladores e interpretes
 
Ejercicios uml
Ejercicios umlEjercicios uml
Ejercicios uml
 
Tipos de datos C#
Tipos de datos C#Tipos de datos C#
Tipos de datos C#
 
Metodología Incremental
Metodología IncrementalMetodología Incremental
Metodología Incremental
 
Metodología Rup
Metodología RupMetodología Rup
Metodología Rup
 
7.arreglos en java
7.arreglos en  java7.arreglos en  java
7.arreglos en java
 
EJERCICIOS DE ALGORITMOS
EJERCICIOS DE ALGORITMOSEJERCICIOS DE ALGORITMOS
EJERCICIOS DE ALGORITMOS
 
2 1 vistas arquitectonicas
2 1 vistas arquitectonicas2 1 vistas arquitectonicas
2 1 vistas arquitectonicas
 
Omega Up
Omega UpOmega Up
Omega Up
 
Portafolio unidad 2 [Lenguajes y autómatas]- Expresiones y lenguajes regulares
Portafolio unidad 2 [Lenguajes y autómatas]- Expresiones y lenguajes regularesPortafolio unidad 2 [Lenguajes y autómatas]- Expresiones y lenguajes regulares
Portafolio unidad 2 [Lenguajes y autómatas]- Expresiones y lenguajes regulares
 
Metodo burbuja
Metodo burbujaMetodo burbuja
Metodo burbuja
 

Destacado

Sentencias de repetición en Java
Sentencias de repetición en JavaSentencias de repetición en Java
Sentencias de repetición en JavaJdcaste
 
Estructuras de repetición en programacion
Estructuras de repetición en programacionEstructuras de repetición en programacion
Estructuras de repetición en programacionSERCOMPFAST
 
Bucles de Control Repetitivo Ciclos For
Bucles de Control Repetitivo  Ciclos ForBucles de Control Repetitivo  Ciclos For
Bucles de Control Repetitivo Ciclos ForRichard Robalino
 
Clase 2 3 estructuras de control
Clase 2 3 estructuras de controlClase 2 3 estructuras de control
Clase 2 3 estructuras de controlBoOriz Hero
 
Estructuras repetitivas - pseudocodigo
Estructuras repetitivas - pseudocodigoEstructuras repetitivas - pseudocodigo
Estructuras repetitivas - pseudocodigoRosbelia Balza
 
Estructuras de Control y Repetición
Estructuras de Control y RepeticiónEstructuras de Control y Repetición
Estructuras de Control y Repeticiónrcad
 
ESTRCTURAS DE REPETICION
ESTRCTURAS DE REPETICIONESTRCTURAS DE REPETICION
ESTRCTURAS DE REPETICIONlesviagarcia
 
Generación del midlet HolaMundo utilizando el JWTK
Generación del midlet HolaMundo utilizando el JWTKGeneración del midlet HolaMundo utilizando el JWTK
Generación del midlet HolaMundo utilizando el JWTKJorge Iván Meza Martínez
 
Operadores lógicos
Operadores lógicosOperadores lógicos
Operadores lógicosDiego RoJas
 
Sentencias de selección en Java
Sentencias de selección en JavaSentencias de selección en Java
Sentencias de selección en JavaJdcaste
 
Estructuras de repetición (1)
Estructuras de repetición (1)Estructuras de repetición (1)
Estructuras de repetición (1)Fredy Torres
 
ESTRUCTURAS DE CONTROL: BUCLES EN C++
ESTRUCTURAS DE CONTROL: BUCLES EN C++ESTRUCTURAS DE CONTROL: BUCLES EN C++
ESTRUCTURAS DE CONTROL: BUCLES EN C++die_dex
 
ORDENAMIENTO POR INTERCAMBIO
ORDENAMIENTO POR INTERCAMBIOORDENAMIENTO POR INTERCAMBIO
ORDENAMIENTO POR INTERCAMBIOWilmer Quintero
 
Introducción A Las Estructuras De Seleccion En C
Introducción A Las Estructuras De Seleccion En CIntroducción A Las Estructuras De Seleccion En C
Introducción A Las Estructuras De Seleccion En Cpainni
 
Estructuras de control
Estructuras de controlEstructuras de control
Estructuras de controlLic_Vera
 
Estructuras de ciclo: while,for,do while
Estructuras de  ciclo: while,for,do whileEstructuras de  ciclo: while,for,do while
Estructuras de ciclo: while,for,do whileAlfredo Huamani Escobar
 
ventajas y desventajas de programas informaticos
ventajas y desventajas de programas informaticosventajas y desventajas de programas informaticos
ventajas y desventajas de programas informaticosIrving Muñoz
 
Estructuras de control selectivas
Estructuras de control selectivasEstructuras de control selectivas
Estructuras de control selectivasmarigelcontreras
 

Destacado (20)

Sentencias de repetición en Java
Sentencias de repetición en JavaSentencias de repetición en Java
Sentencias de repetición en Java
 
Estructuras de repetición en programacion
Estructuras de repetición en programacionEstructuras de repetición en programacion
Estructuras de repetición en programacion
 
Bucles de Control Repetitivo Ciclos For
Bucles de Control Repetitivo  Ciclos ForBucles de Control Repetitivo  Ciclos For
Bucles de Control Repetitivo Ciclos For
 
Clase 2 3 estructuras de control
Clase 2 3 estructuras de controlClase 2 3 estructuras de control
Clase 2 3 estructuras de control
 
Estructuras repetitivas - pseudocodigo
Estructuras repetitivas - pseudocodigoEstructuras repetitivas - pseudocodigo
Estructuras repetitivas - pseudocodigo
 
Estructuras de Control y Repetición
Estructuras de Control y RepeticiónEstructuras de Control y Repetición
Estructuras de Control y Repetición
 
ESTRCTURAS DE REPETICION
ESTRCTURAS DE REPETICIONESTRCTURAS DE REPETICION
ESTRCTURAS DE REPETICION
 
Generación del midlet HolaMundo utilizando el JWTK
Generación del midlet HolaMundo utilizando el JWTKGeneración del midlet HolaMundo utilizando el JWTK
Generación del midlet HolaMundo utilizando el JWTK
 
Operadores lógicos
Operadores lógicosOperadores lógicos
Operadores lógicos
 
Sentencias de selección en Java
Sentencias de selección en JavaSentencias de selección en Java
Sentencias de selección en Java
 
Estructuras de repetición (1)
Estructuras de repetición (1)Estructuras de repetición (1)
Estructuras de repetición (1)
 
ESTRUCTURAS DE CONTROL: BUCLES EN C++
ESTRUCTURAS DE CONTROL: BUCLES EN C++ESTRUCTURAS DE CONTROL: BUCLES EN C++
ESTRUCTURAS DE CONTROL: BUCLES EN C++
 
ORDENAMIENTO POR INTERCAMBIO
ORDENAMIENTO POR INTERCAMBIOORDENAMIENTO POR INTERCAMBIO
ORDENAMIENTO POR INTERCAMBIO
 
Introducción A Las Estructuras De Seleccion En C
Introducción A Las Estructuras De Seleccion En CIntroducción A Las Estructuras De Seleccion En C
Introducción A Las Estructuras De Seleccion En C
 
Estructuras de control
Estructuras de controlEstructuras de control
Estructuras de control
 
Funciones de entrada y salida
Funciones de entrada y salidaFunciones de entrada y salida
Funciones de entrada y salida
 
Estructuras de ciclo: while,for,do while
Estructuras de  ciclo: while,for,do whileEstructuras de  ciclo: while,for,do while
Estructuras de ciclo: while,for,do while
 
ventajas y desventajas de programas informaticos
ventajas y desventajas de programas informaticosventajas y desventajas de programas informaticos
ventajas y desventajas de programas informaticos
 
ESTRUCTURAS REPETITIVAS
ESTRUCTURAS REPETITIVASESTRUCTURAS REPETITIVAS
ESTRUCTURAS REPETITIVAS
 
Estructuras de control selectivas
Estructuras de control selectivasEstructuras de control selectivas
Estructuras de control selectivas
 

Similar a Sentencias de Repeticion (20)

Exposicion
ExposicionExposicion
Exposicion
 
Exposicion
ExposicionExposicion
Exposicion
 
Sentencia de control
Sentencia de controlSentencia de control
Sentencia de control
 
Estructura repetitiva
Estructura repetitivaEstructura repetitiva
Estructura repetitiva
 
Factorial en C++
Factorial en C++Factorial en C++
Factorial en C++
 
UsodelasestructurasrepetitivasRivera &G
UsodelasestructurasrepetitivasRivera &GUsodelasestructurasrepetitivasRivera &G
UsodelasestructurasrepetitivasRivera &G
 
Estructura
EstructuraEstructura
Estructura
 
01 diagramas nassi-schneiderman
01 diagramas nassi-schneiderman01 diagramas nassi-schneiderman
01 diagramas nassi-schneiderman
 
Algunos algoritmos1
Algunos algoritmos1Algunos algoritmos1
Algunos algoritmos1
 
Algoritmos
AlgoritmosAlgoritmos
Algoritmos
 
Estructura Repetitivas
Estructura RepetitivasEstructura Repetitivas
Estructura Repetitivas
 
Estructuras repetitivas
Estructuras repetitivasEstructuras repetitivas
Estructuras repetitivas
 
Progra hojas
Progra hojas Progra hojas
Progra hojas
 
Tutorial C++
Tutorial C++Tutorial C++
Tutorial C++
 
Jyoc java-cap13 recursividad
Jyoc java-cap13 recursividadJyoc java-cap13 recursividad
Jyoc java-cap13 recursividad
 
Pr109 while
Pr109 whilePr109 while
Pr109 while
 
ESTRUCTURAS CONDICIONALES PARA. PSEINT
ESTRUCTURAS CONDICIONALES PARA. PSEINTESTRUCTURAS CONDICIONALES PARA. PSEINT
ESTRUCTURAS CONDICIONALES PARA. PSEINT
 
Sesión 09 Fund Programación
Sesión 09 Fund ProgramaciónSesión 09 Fund Programación
Sesión 09 Fund Programación
 
Clase 6
Clase 6Clase 6
Clase 6
 
Laboratorios1
Laboratorios1Laboratorios1
Laboratorios1
 

Último

Hernandez_Hernandez_Practica web de la sesion 11.pptx
Hernandez_Hernandez_Practica web de la sesion 11.pptxHernandez_Hernandez_Practica web de la sesion 11.pptx
Hernandez_Hernandez_Practica web de la sesion 11.pptxJOSEMANUELHERNANDEZH11
 
Presentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidadPresentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidadMiguelAngelVillanuev48
 
FloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptxFloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptx241522327
 
definicion segun autores de matemáticas educativa
definicion segun autores de matemáticas  educativadefinicion segun autores de matemáticas  educativa
definicion segun autores de matemáticas educativaAdrianaMartnez618894
 
Arenas Camacho-Practica tarea Sesión 12.pptx
Arenas Camacho-Practica tarea Sesión 12.pptxArenas Camacho-Practica tarea Sesión 12.pptx
Arenas Camacho-Practica tarea Sesión 12.pptxJOSEFERNANDOARENASCA
 
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptxEl_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptxAlexander López
 
El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.241514949
 
Plan Sarmiento - Netbook del GCBA 2019..
Plan Sarmiento - Netbook del GCBA 2019..Plan Sarmiento - Netbook del GCBA 2019..
Plan Sarmiento - Netbook del GCBA 2019..RobertoGumucio2
 
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.ppt
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.pptTEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.ppt
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.pptJavierHerrera662252
 
dokumen.tips_36274588-sistema-heui-eui.ppt
dokumen.tips_36274588-sistema-heui-eui.pptdokumen.tips_36274588-sistema-heui-eui.ppt
dokumen.tips_36274588-sistema-heui-eui.pptMiguelAtencio10
 
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfPARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfSergioMendoza354770
 
El uso delas tic en la vida cotidiana MFEL
El uso delas tic en la vida cotidiana MFELEl uso delas tic en la vida cotidiana MFEL
El uso delas tic en la vida cotidiana MFELmaryfer27m
 
GonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptxGonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptx241523733
 
La era de la educación digital y sus desafios
La era de la educación digital y sus desafiosLa era de la educación digital y sus desafios
La era de la educación digital y sus desafiosFundación YOD YOD
 
Segunda ley de la termodinámica TERMODINAMICA.pptx
Segunda ley de la termodinámica TERMODINAMICA.pptxSegunda ley de la termodinámica TERMODINAMICA.pptx
Segunda ley de la termodinámica TERMODINAMICA.pptxMariaBurgos55
 
R1600G CAT Variables de cargadores en mina
R1600G CAT Variables de cargadores en minaR1600G CAT Variables de cargadores en mina
R1600G CAT Variables de cargadores en minaarkananubis
 
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6    CREAR UN RECURSO MULTIMEDIAActividad integradora 6    CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA241531640
 
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptxMedidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptxaylincamaho
 
Google-Meet-como-herramienta-para-realizar-reuniones-virtuales.pptx
Google-Meet-como-herramienta-para-realizar-reuniones-virtuales.pptxGoogle-Meet-como-herramienta-para-realizar-reuniones-virtuales.pptx
Google-Meet-como-herramienta-para-realizar-reuniones-virtuales.pptxAlexander López
 
El uso de las tic en la vida ,lo importante que son
El uso de las tic en la vida ,lo importante  que sonEl uso de las tic en la vida ,lo importante  que son
El uso de las tic en la vida ,lo importante que son241514984
 

Último (20)

Hernandez_Hernandez_Practica web de la sesion 11.pptx
Hernandez_Hernandez_Practica web de la sesion 11.pptxHernandez_Hernandez_Practica web de la sesion 11.pptx
Hernandez_Hernandez_Practica web de la sesion 11.pptx
 
Presentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidadPresentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidad
 
FloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptxFloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptx
 
definicion segun autores de matemáticas educativa
definicion segun autores de matemáticas  educativadefinicion segun autores de matemáticas  educativa
definicion segun autores de matemáticas educativa
 
Arenas Camacho-Practica tarea Sesión 12.pptx
Arenas Camacho-Practica tarea Sesión 12.pptxArenas Camacho-Practica tarea Sesión 12.pptx
Arenas Camacho-Practica tarea Sesión 12.pptx
 
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptxEl_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
 
El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.
 
Plan Sarmiento - Netbook del GCBA 2019..
Plan Sarmiento - Netbook del GCBA 2019..Plan Sarmiento - Netbook del GCBA 2019..
Plan Sarmiento - Netbook del GCBA 2019..
 
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.ppt
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.pptTEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.ppt
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.ppt
 
dokumen.tips_36274588-sistema-heui-eui.ppt
dokumen.tips_36274588-sistema-heui-eui.pptdokumen.tips_36274588-sistema-heui-eui.ppt
dokumen.tips_36274588-sistema-heui-eui.ppt
 
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfPARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
 
El uso delas tic en la vida cotidiana MFEL
El uso delas tic en la vida cotidiana MFELEl uso delas tic en la vida cotidiana MFEL
El uso delas tic en la vida cotidiana MFEL
 
GonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptxGonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptx
 
La era de la educación digital y sus desafios
La era de la educación digital y sus desafiosLa era de la educación digital y sus desafios
La era de la educación digital y sus desafios
 
Segunda ley de la termodinámica TERMODINAMICA.pptx
Segunda ley de la termodinámica TERMODINAMICA.pptxSegunda ley de la termodinámica TERMODINAMICA.pptx
Segunda ley de la termodinámica TERMODINAMICA.pptx
 
R1600G CAT Variables de cargadores en mina
R1600G CAT Variables de cargadores en minaR1600G CAT Variables de cargadores en mina
R1600G CAT Variables de cargadores en mina
 
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6    CREAR UN RECURSO MULTIMEDIAActividad integradora 6    CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA
 
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptxMedidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
 
Google-Meet-como-herramienta-para-realizar-reuniones-virtuales.pptx
Google-Meet-como-herramienta-para-realizar-reuniones-virtuales.pptxGoogle-Meet-como-herramienta-para-realizar-reuniones-virtuales.pptx
Google-Meet-como-herramienta-para-realizar-reuniones-virtuales.pptx
 
El uso de las tic en la vida ,lo importante que son
El uso de las tic en la vida ,lo importante  que sonEl uso de las tic en la vida ,lo importante  que son
El uso de las tic en la vida ,lo importante que son
 

Sentencias de Repeticion

  • 2. Clase 6: Sentencias de Repetición Después de haber estudiado este capítulo usted podrá:  Implementar sentencias de repetición en su programa utilizando while, do-while y for.  Implementar sentencias de repetición utilizando: while, do-while y for.  Implementar sentencias de control genéricas  Realizar sentencias de repetición anidadas  Elegir la sentencia de repetición adecuada según el problema  Generar números aleatorios  Lograr que el usuario interactúe con la máquina en una sesión SI-NO para continuar ejecutando el programa 2
  • 3. Definición  Las sentencias de repetición son un bloque de código que son ejecutadas por un cierto número de veces hasta que se cumpla una condición.  Repeticiones controladas por contador: terminan la ejecución del bloque después que este ha sido ejecutado por un número de veces determinado  Repeticiones controladas por centinela: termina la ejecución del bloque después que un valor diseñado como centinela ha sido encontrado.  Las sentencias de repetición son llamadas LOOP o BUCLE. 3
  • 4. Sentencia while //este programa realiza la suma de los 100 primeros números int sum = 0, number = 1; while ( number <= 100 ) { sum = sum + number; Estas sentencias son Estas sentencias son ejecutadas mientras que ejecutadas mientras que la variable number sea la variable number sea number = number + 1; menor ooigual que 100 menor igual que 100 } System.out.print(“La Suma es: “ + suma); 4
  • 5. Sintaxis para la sentencia while while ( <expresión booleana> ) { <sentencia 1> <sentencia 1> <sentencia n> } Expresión Booleana Expresión Booleana while ( number <= 100 ) { sum = sum + number; Sentencias Sentencias (loop body) (loop body) number = number + 1; } 5
  • 6. Flujo de Control while int sum = 0, number = 1 int sum = 0, number = 1 number = number + 1; sum = sum + number; number = number + 1; sum = sum + number; number <= 100 ? number <= 100 ? false true 6
  • 7. Mas Ejemplos Sigue sumando 1 1 int sum = 0, number = 1; Sigue sumando números 1, 2, 3, … números 1, 2, 3, … hasta que la variable hasta que la variable while ( sum <= 1000000 ) { sum sea mayor aa sum sea mayor 1,000,000. 1,000,000. sum = sum + number; number = number + 1; } 2 2 int producto = 1, numero = 1, Calcula el producto de Calcula el producto de contador = 20, ultimoNumero; los 20 primeros enteros los 20 primeros enteros ultimoNumero = 2 * contador - 1; while (numero <= ultimoNumero) { producto = producto * numero; numero = numero + 2; } 7
  • 8. Encontrando el Maximo Comun Divisor public int mcdBruteforce(int m, int n) { // assume m, n >= 1 int menor = Math.min(m, n); int mcd; int i = 1; while (i <= menor) { if (m%i == 0 && n%i == 0) { mcd = i; } i++; } return mcd; } 8 Aproximación directa
  • 9. Encontrando el Maximo Comun Divisor public int gcd(int m, int n) { // no importa si n o m // es mayor, este metodo; // trabaja bien // // assume m, n >= 1 int r = n % m; while (r != 0) { n = m; m = r; r = n % m; } return m; } 9 Solución mas eficiente
  • 10. Ejemplo: Probando datos de ingreso String inputStr; Primera lectura Primera lectura int edad; inputStr = JOptionPane.showInputDialog(null,“Su edad (entre 18 y 90):"); edad = Integer.parseInt(inputStr); while (edad < 18 || edad > 90) { JOptionPane.showMessageDialog(null, “Se ingreso una edad no valida. Por favor vuelva a intentarlo"); inputStr = JOptionPane.showInputDialog(null,“Su edad (entre 18 y 90):"); edad = Integer.parseInt(inputStr); } Segunda lectura Segunda lectura 10
  • 11. Operadores cortos utiles suma = suma + numero; Es equivalente a suma += numero; Operador Uso Significado += a += b; a = a + b; -= a -= b; a = a – b; *= a *= b; a = a * b; /= a /= b; a = a / b; %= a %= b; a = a % b; 11
  • 12. Tenga cuidado con los errores 1. Cuidado con el error “por uno” 2. Asegúrese que el cuerpo del loop contiene sentencias que eventualmente harán que el loop finalice 3. Si quiere ejecutar el cuerpo del loop N veces, entonces inicialice el contador en 0 y utilice una condicion que evalue contador <N, o inicialice el contador en 1 y evalue contador <=N 12
  • 13. Loop Error #1 - Loop Infinito Error Error 1 1 int producto = 0; Estas sentencias se Estas sentencias se ejecutaran por siempre. ejecutaran por siempre. La expresion boolena La expresion boolena while ( producto < 500000 ) { nunca será falsa. nunca será falsa. Para solucionar el Para solucionar el product = product * 5; problema producto debe problema producto debe } inicializarse en 11 inicializarse en 2 2 int contador = 1; Error Error while ( contador != 10 ) { La expresión boolena La expresión boolena nunca sera falsa. nunca sera falsa. contador = contador + 2; Para solucionar el Para solucionar el problema count debe ser problema count debe ser } inicializado en 11 inicializado en 13
  • 14. Loop Error #2 – error por uno  Objetivo : Ejecute el cuerpo del loop 10 veces 1 1 count = 1; 2 2 count = 1; while ( count < 10 ){ while ( count <= 10 ){ . . . . . . count++; count++; } } 3 3 count = 0; 4 4 count = 0; while ( count <= 10 ){ while ( count < 10 ){ . . . . . . count++; count++; } } 1 y 1 3 exiben el error por uno. 3 14
  • 15. La sentencia do-while int sum = 0, number = 1; do { Estas sentencias son Estas sentencias son sum = sum + number; ejecutadas hasta que la ejecutadas hasta que la variable sum sea menor variable sum sea menor number++; ooigual que 100 igual que 100 } while ( sum <= 100 ); 15
  • 16. Sintaxis do-while do <sentencias> while ( <expresion booleana> ) ; do { sum = sum + number; Sentencias Sentencias number++; (loop body) (loop body) } while ( sum <= 100 ); Expresion booleana Expresion booleana 16
  • 17. Flujo de Control do-while int sum = 0, number = 1 int sum = 0, number = 1 sum = sum + number sum = sum + number number++; number++; true sum <= 100 sum <= 100 false 17
  • 18. Bucle y Control de Media Repetición  Bucle y Control de Media Repeticiόn puede ser utilizado para evaluar la condicion de terminacion de un bucle en medio del cuerpo del bucle.  Es implementado utilizando las palabras reservadas while, if, and break. 18
  • 19. Ejemplo: Bucle-y-MedioControl String name; while (true){ name = JOptionPane.showInputDialog(null, “Tu nombre"); if (name.length() > 0) break; JOptionPane.showMessageDialog(null, "Ingreso no valido." + “Debe ingresar al menos un caracter."); } 19
  • 20. Errores en Bucles-y-MedioControl  Ponga atenciόn en dos cosas cuando utilice Bucles-y-MedioControl:  El peligro de un bucle infinito. La expresión booleana del while es true, la cual siempre evaluará a true. Si olvidamos incluir una sentencia if para romper el bucle, terminaremos en un bucle infinito.  Multiple exit points. It is possible, although complex, to write a correct control loop with multiple exit points (breaks). It is good practice to enforce the one-entry one-exit control flow. 20
  • 21. Bucle: Sentencia break (1/4) int i = 1; int sum = 0; sum is 21 while (sum < 20) { sum += i; i is 7 ++i; } System.out.println("sum is " + sum); System.out.println("i is " + i); int i = 1; int sum = 0; while (sum < 20) { sum += i; sum is 6 if (sum % 2 == 0) break; i is 3 ++i; } System.out.println("sum is " + sum); System.out.println("i is " + i); 21
  • 22. Bucle: Sentencia break (2/4) int i = 1; int sum = 0; sum es 15 while ( true ) { sum += i; i es 5 if (sum > 10) break; Note: Sin el break, es ++i; un bucle infinito! } System.out.println("sum is " + sum); System.out.println("i is " + i); int i = 0; int sum = 0; Trate de while (sum <= 10) { evitar el uso ++i; de break, a sum += i; menos que } sea System.out.println("sum is " + sum); necesario. System.out.println("i is " + i); 22
  • 23. Bucle: Sentencia break (3/4) Random number = new Random(); int i; i is 43 while (true) { i is 2 i = number.nextInt(100); i is 12 System.out.println("i is " + i); i is 95 if (i >= 80) break; } Random class will be discussed later. 23
  • 24. Bucle: Sentencia break (4/4)  break causa que el control salga del bucle mas interno en el que esta contenido.. int a = 1; while (a < 5) { a is 1, b is 1 int b = 1; a is 1, b is 2 while (b < 5) { a is 2, b is 1 System.out.println("a is " + a a is 2, b is 2 + ", b is " + b); a is 3, b is 1 if (b == 2) break; a is 3, b is 2 ++b; a is 4, b is 1 } ++a; a is 4, b is 2 } 24
  • 25. Bucle: Sentencia continue (1/2)  Algunas veces podríamos querer ir inmediatamente a la siguiente iteracion, sin ejecutar el resto de las sentencias en el cuerpo del bucle.  Esto puede ser realizado utilizando continue.  Como break, continue solo causa que el control vaya a la siguiente iteracion en el bucle mas interno que lo contiene. 25
  • 26. Bucle: Sentencia continue(2/2) int i = 0; i is 1 i is 2 while (i <= 6) { ++i; i is 4 if (i == 3) continue; i is 5 System.out.println("i is " + i); i is 6 } i is 7 int i = 1; int sum = 0; while (sum < 20) { sum += i; sum is 23 if (sum % 2 == 0) continue; i is 6 ++i; } System.out.println("sum is " + sum); System.out.println("i is " + i); 26
  • 27. Random Numbers (1/2)  Random number generation is discussed in section 3.8 of your textbook.  We learn another way here, using the Random class.  Notes:  Need to import java.util.*;  Random( ): constructs a new random number generator Random whose seed is based on the current time.  int nextInt(int n): returns the next pseudo-random, from the interval [0, 1, … n-1], uniformly distributed value of a Random object.  Refer to the API specification for the complete description of class Random. 27
  • 28. Random Numbers (2/2) import java.util.*; public class Random1 { public static void main(String[] args) { Random num = new Random(); for (int i=0; i<5; i++) { System.out.println("Next random number is " + num.nextInt(100)); } } Next random number is 48 } Next random number is 14 Next random number is 89 Next random number is 7 Next random number is 44 28
  • 29. Diálogo de Confirmación  dialogo de confirmación puede ser utilizado para que el usuario elija si quiere seguir con la ejecución del programa o no. JOptionPane.showConfirmDialog(null, /*prompt*/ "Play Another Game?", /*dialog title*/ "Confirmation", /*button options*/ JOptionPane.YES_NO_OPTION); 29
  • 30. Ejemplo: Diálogo de Confirmación boolean sigaJugando = true; int seleccion; while (sigaJugando){ //codigo que realiza un juego viene aqui // . . . seleccion = JOptionPane.showConfirmDialog(null, “Quiere volver a jugar?", "Confirmacion", JOptionPane.YES_NO_OPTION); sigaJugando = (seleccion == JOptionPane.YES_OPTION); } 30
  • 32. Considere el siguiente código int i = 1; while (i <= n) { if (i % n == 0) { ++i; } } System.out.println(i); (a) Cual es la salida si n es 0? (b) Cual es la salida si n es 1? (c) Cual es la salida si n es 3? 32
  • 33. Que retorna el siguiente método, asumiendo que n es 12345? public static int metodoX(int n) { int sum = 0; while (n > 0) { sum += n % 100; n /= 100; } return sum; } A. 9 B. 15 C. 69 D. 123 E. 168 33
  • 34. La sentencia for int i, sum = 0, number; for (i = 0; i < 20; i++) { number = scanner.nextInt( ); sum = sum + number; } Estas sentencias son Estas sentencias son ejecutadas 20 veces ejecutadas 20 veces ((i i= 0, 1, 2, … , ,19). = 0, 1, 2, … 19). Utilizamos for cuando sabemos cuantas veces se va a realizar la repetición 34
  • 35. Syntax sentencia for for ( <inicializacion>; <expresion booleana>; <incremento> ){ <sentencias> } Expresión Expresión Inicializacion Inicializacion Incremento Incremento Booleana Booleana for ( i = 0 ; i < 20 ; i++ ) { number = scanner.nextInt(); Sentencias Sentencias sum = sum + number; (loop body) (loop body) } 35
  • 36. false true i i= 0; = 0; i i< 20 ? < 20 ? ber = ber = . .. .. .; ; = sum + number; Control Flow of for = sum + number; ++; i i++; 36
  • 37. i++ or ++i? for ( i = 0; i < 20; i++ ) { ... } Alguna diferencia? for ( i = 0; i < 20; ++i ) { ... Aqui es lo mismo… } Solo cuando es parte de una expresion..si son diferentes 37
  • 38. Compare for y while for ( Init ; Expression ; Increment ) Action Init Si realmente odian utilizar WHILE por alguna razon…. while ( Expression ) pueden reescribirla { Action Increment } 38
  • 39. Sentencia while //este programa realiza la suma de los 100 primeros numeros int sum = 0, number = 1; while ( number <= 100 ) { sum = sum + number; number = number + 1; } 39
  • 40. Seguimiento de la ejecución (1/12) i 0 for (int i = 0; i < 3; ++i) { System.out.println("i es " + i); } System.out.println(“terminamos"); 40
  • 41. Seguimiento de la ejecución(2/12) i 0 for (int i = 0; i < 3; ++i) { System.out.println("i es " + i); } System.out.println(“terminamos"); 41
  • 42. Seguimiento de la ejecución(3/12) i 0 for (int i = 0; i < 3; ++i) { System.out.println("i es " + i); } System.out.println(“terminamos"); Output: i es 0 42
  • 43. Seguimiento de la ejecución(4/12) i 1 for (int i = 0; i < 3; ++i) { System.out.println("i es " + i); } System.out.println(“terminamos"); Output: i es 0 43
  • 44. Seguimiento de la ejecución(5/12) i 1 for (int i = 0; i < 3; ++i) { System.out.println("i es " + i); } System.out.println(“terminamos"); Output: i es 0 44
  • 45. Seguimiento de la ejecución(6/12) i 1 for (int i = 0; i < 3; ++i) { System.out.println("i es " + i); } System.out.println(“terminamo"); Output: i es 0 i es 1 45
  • 46. Seguimiento de la ejecución(7/12) i 2 for (int i = 0; i < 3; ++i) { System.out.println("i es " + i); } System.out.println(“terminamos"); Output: i es 0 i es 1 46
  • 47. Seguimiento de la ejecución(8/12) i 2 for (int i = 0; i < 3; ++i) { System.out.println("i es " + i); } System.out.println(“terminamos"); Output: i es 0 i es 1 47
  • 48. Seguimiento de la ejecución(9/12) i 2 for (int i = 0; i < 3; ++i) { System.out.println("i es " + i); } System.out.println(“terminamos"); Output: i es 0 i es 1 i es 2 48
  • 49. Seguimiento de la ejecución(10/12) i 3 for (int i = 0; i < 3; ++i) { System.out.println("i es " + i); } System.out.println(“terminamos"); Output: i es 0 i es 1 i es 2 49
  • 50. Seguimiento de la ejecución(11/12) i 3 for (int i = 0; i < 3; ++i) { System.out.println("i es " + i); } System.out.println(“terminamos"); Output: i es 0 i es 1 i es 2 50
  • 51. Seguimiento de la ejecución(12/12) 3 for (int i = 0; i < 3; ++i) { System.out.println("i es " + i); } System.out.println(“terminamos"); Output: Utilzar siempre i dentro del loop i es 0 i es 1 i es 2 terminamos 51
  • 52. Mas ejemplos 1 1 for (int i = 0; i < 100; i += 5) i i= 0, 5, 10, … ,,95 = 0, 5, 10, … 95 2 2 for (int j = 2; j < 40; j *= 2) j j= 2, 4, 8, 16, 32 = 2, 4, 8, 16, 32 3 3 for (int k = 100; k > 0; k--) ) k = 100, 99, 98, 97, ..., 1 k = 100, 99, 98, 97, ..., 1 52
  • 53. Factorial  Definition:  1 if n = 0 n!=  1 × 2 ×  × n if n ≥ 1 int nFactorial = 1; for (int i = 2; i <= n; ++i) { nFactorial *= i; } 53
  • 54. Alcance de Variable  Considere: int valorActual = 2; for (int i = 0; i < 5; ++i) { System.out.println(valorActual); valorActual = valorActual* 2; } System.out.println("i is " + i);  Que muestra valor actual al final?  Que muestra i? 54
  • 55. For anidados  Es cuando utilizamos un for dentro de otro for. 55
  • 56. 56
  • 57. Generando la Tabla int precio; for (int ancho = 11; ancho <=20, ancho++){ for (int largo = 5, largo <=25, largo+=5){ INNER OUTER precio = ancho * largo * 19; //$19 x metro cuadrado System.out.print (" " + precio); } //finalizada una fila se va a la siguiente System.out.println(""); } 57
  • 58. For anidados (1/2) i is 0 for (int i = 0; i < 3; ++i) { j is 0 j is 1 System.out.println("i is " + i); j is 2 j is 3 for (int j = 0; j < 4; ++j) { i is 1 System.out.println(" j is " + j); j is 0 } j is 1 j is 2 } j is 3 i is 2 j is 0 j is 1 j is 2 j is 3 58
  • 59. For anidados (2/2) for (int i = 0; i < 3; ++i) { System.out.println("i is " + i); for (int j = 0; j < i; ++j) { System.out.println(" j is " + j); } } Cual es la salida? 59

Notas del editor

  1. CS1101X Programming Methodology
  2. CS1101X Programming Methodology
  3. CS1101X Programming Methodology
  4. CS1101X Programming Methodology
  5. CS1101X Programming Methodology
  6. CS1101X Programming Methodology
  7. CS1101X Programming Methodology
  8. CS1101X Programming Methodology
  9. CS1101X Programming Methodology
  10. CS1101X Programming Methodology
  11. CS1101X Programming Methodology
  12. CS1101X Programming Methodology
  13. CS1101X Programming Methodology
  14. CS1101X Programming Methodology
  15. CS1101X Programming Methodology
  16. CS1101X Programming Methodology
  17. CS1101X Programming Methodology
  18. CS1101X Programming Methodology
  19. CS1101X Programming Methodology
  20. CS1101X Programming Methodology
  21. CS1101X Programming Methodology
  22. CS1101X Programming Methodology
  23. CS1101X Programming Methodology
  24. CS1101X Programming Methodology
  25. CS1101X Programming Methodology
  26. CS1101X Programming Methodology
  27. CS1101X Programming Methodology
  28. CS1101X Programming Methodology
  29. CS1101X Programming Methodology
  30. CS1101X Programming Methodology
  31. CS1101X Programming Methodology
  32. CS1101X Programming Methodology
  33. CS1101X Programming Methodology
  34. CS1101X Programming Methodology
  35. CS1101X Programming Methodology
  36. CS1101X Programming Methodology
  37. CS1101X Programming Methodology
  38. CS1101X Programming Methodology
  39. CS1101X Programming Methodology
  40. CS1101X Programming Methodology
  41. CS1101X Programming Methodology
  42. CS1101X Programming Methodology
  43. CS1101X Programming Methodology
  44. CS1101X Programming Methodology
  45. CS1101X Programming Methodology