Sentencias de repetición Programación. Objetivos Implementar control con repeticiones en un...
-
Upload
lucia-gomez-escobar -
Category
Documents
-
view
255 -
download
0
Transcript of Sentencias de repetición Programación. Objetivos Implementar control con repeticiones en un...
![Page 1: Sentencias de repetición Programación. Objetivos Implementar control con repeticiones en un programa usando sentencias while Implementar control con repeticiones.](https://reader033.fdocuments.ec/reader033/viewer/2022061612/5665b4961a28abb57c926d3a/html5/thumbnails/1.jpg)
Sentencias de repetición
Programación
![Page 2: Sentencias de repetición Programación. Objetivos Implementar control con repeticiones en un programa usando sentencias while Implementar control con repeticiones.](https://reader033.fdocuments.ec/reader033/viewer/2022061612/5665b4961a28abb57c926d3a/html5/thumbnails/2.jpg)
Objetivos• Implementar control con repeticiones en un programa usando sentencias while
• Implementar control con repeticiones en un programa usando sentencias do-while
• Implementar control con repeticiones en un programa usando sentencias for
• Anidar la sentencia de control de repetición de un bucle dentro de otra sentencia de repetición
• Elegir la sentencia de control de repetición adecuada para una tarea determinada
• Preguntar al usuario por una respuesta de tipo si-no usando el AnswerBox
• Formatear los datos de salida usando la clase Format del paquete javabook
![Page 3: Sentencias de repetición Programación. Objetivos Implementar control con repeticiones en un programa usando sentencias while Implementar control con repeticiones.](https://reader033.fdocuments.ec/reader033/viewer/2022061612/5665b4961a28abb57c926d3a/html5/thumbnails/3.jpg)
Introducción
Las sentencias de repetición controlan un bloque de código para que se ejecute un número fijo de veces o hasta que se cumple una determinada condición.
En java existen tres tipos de ciclos:
while, do-while, for
![Page 4: Sentencias de repetición Programación. Objetivos Implementar control con repeticiones en un programa usando sentencias while Implementar control con repeticiones.](https://reader033.fdocuments.ec/reader033/viewer/2022061612/5665b4961a28abb57c926d3a/html5/thumbnails/4.jpg)
La sentencia while
La sintaxis de la sentencia while es:
while (<expresión booleana>)
<sentencias>
int suma = 0, numero = 1;
while (numero <= 20) {
suma = suma + numero;
numero = numero + 1;
}
SentenciaCuerpo del bucle
Expresión booleana
![Page 5: Sentencias de repetición Programación. Objetivos Implementar control con repeticiones en un programa usando sentencias while Implementar control con repeticiones.](https://reader033.fdocuments.ec/reader033/viewer/2022061612/5665b4961a28abb57c926d3a/html5/thumbnails/5.jpg)
Diagrama de flujo
numero<= 20
suma = suma + numero;numero = numero + 1;
int suma = 0; numero = 1;
verdadero
falso
![Page 6: Sentencias de repetición Programación. Objetivos Implementar control con repeticiones en un programa usando sentencias while Implementar control con repeticiones.](https://reader033.fdocuments.ec/reader033/viewer/2022061612/5665b4961a28abb57c926d3a/html5/thumbnails/6.jpg)
Valores de las variables en el ciclo
numero: 1 suma= 1numero: 2 suma= 3numero: 3 suma= 6numero: 4 suma= 10numero: 5 suma= 15numero: 6 suma= 21numero: 7 suma= 28numero: 8 suma= 36numero: 9 suma= 45numero: 10 suma= 55
numero: 11 suma= 66numero: 12 suma= 78numero: 13 suma= 91numero: 14 suma= 105numero: 15 suma= 120numero: 16 suma= 136numero: 17 suma= 153numero: 18 suma= 171numero: 19 suma= 190numero: 20 suma= 210
![Page 7: Sentencias de repetición Programación. Objetivos Implementar control con repeticiones en un programa usando sentencias while Implementar control con repeticiones.](https://reader033.fdocuments.ec/reader033/viewer/2022061612/5665b4961a28abb57c926d3a/html5/thumbnails/7.jpg)
Producto de impares
int producto = 1, numero = 1, contador = 20, ultimoNumero;
ultimoNumero = 2 * contador -1;
while (numero <= ultimoNumero) {
producto = producto * numero;
numero = numero + 2;
}
![Page 8: Sentencias de repetición Programación. Objetivos Implementar control con repeticiones en un programa usando sentencias while Implementar control con repeticiones.](https://reader033.fdocuments.ec/reader033/viewer/2022061612/5665b4961a28abb57c926d3a/html5/thumbnails/8.jpg)
Diagrama de flujo
numero<= ultimoNumero
producto = producto * numero;numero = numero + 2;
int producto = 0; numero = 1;contado = 20;
ultimoNumero = 2*contador -1
verdadero
falso
![Page 9: Sentencias de repetición Programación. Objetivos Implementar control con repeticiones en un programa usando sentencias while Implementar control con repeticiones.](https://reader033.fdocuments.ec/reader033/viewer/2022061612/5665b4961a28abb57c926d3a/html5/thumbnails/9.jpg)
Ciclos controlados por centinela
int edad;
edad = entrada.getInteger("Su edad entre 0 y 130 : ");
while (edad < 0 || edad > 130) {
System.out.pritnln("Se ha introducido una edad inválida.“ +"intentelo de nuevo."); edad = entrada.getInteger("Su edad entre 0 y 130 : ");
}
Lee la edad de una persona entre 0 y 130.
![Page 10: Sentencias de repetición Programación. Objetivos Implementar control con repeticiones en un programa usando sentencias while Implementar control con repeticiones.](https://reader033.fdocuments.ec/reader033/viewer/2022061612/5665b4961a28abb57c926d3a/html5/thumbnails/10.jpg)
Diagrama de flujo
edad < 0 || edad > 130?
verdadero
falso
Se ha introducido una”edad inválida.
inténtelo de nuevo.
edad
edad
![Page 11: Sentencias de repetición Programación. Objetivos Implementar control con repeticiones en un programa usando sentencias while Implementar control con repeticiones.](https://reader033.fdocuments.ec/reader033/viewer/2022061612/5665b4961a28abb57c926d3a/html5/thumbnails/11.jpg)
Ciclos controlados por centinela
int suma = 0, numero;
numero = entrada.getInteger(“Teclee un entero : ");
while (numero >= 0) {
suma = suma + numero;
System.out.println("suma = "+suma);
numero = entrada.getInteger("Teclee un entero : ");
}
Lee enteros y calcula la suma hasta que se teclea un número negativo
![Page 12: Sentencias de repetición Programación. Objetivos Implementar control con repeticiones en un programa usando sentencias while Implementar control con repeticiones.](https://reader033.fdocuments.ec/reader033/viewer/2022061612/5665b4961a28abb57c926d3a/html5/thumbnails/12.jpg)
Tarea
1. Escriba una sentencia while que sume los números del 10 al 50.
2. Escriba un lazo while que sume los cuadrados de los número del 1 al 40.
3. Escriba una sentencia while para calcular el promedio de un conjunto de valores. La entrada de datos deberá terminar con un valor negativo, ¿es un bucle controlado por contador o por centinela? Debe tener un contador del número de valores que se introducen.
![Page 13: Sentencias de repetición Programación. Objetivos Implementar control con repeticiones en un programa usando sentencias while Implementar control con repeticiones.](https://reader033.fdocuments.ec/reader033/viewer/2022061612/5665b4961a28abb57c926d3a/html5/thumbnails/13.jpg)
Ciclos infinitos
Cuando la condición de un ciclo while es siempre verdadera, se tiene un ciclo infinito.
byte contador = 1;
while (contador != 10){
contador++;
contador++;
}
![Page 14: Sentencias de repetición Programación. Objetivos Implementar control con repeticiones en un programa usando sentencias while Implementar control con repeticiones.](https://reader033.fdocuments.ec/reader033/viewer/2022061612/5665b4961a28abb57c926d3a/html5/thumbnails/14.jpg)
float contador = 0.0f;
while (contador != 1.0f)
contador = contador + 0.3333333f;
}
float contador = 0.0f;
while (contador != 1.0f)
contador = contador + 0.33333333f;
}
![Page 15: Sentencias de repetición Programación. Objetivos Implementar control con repeticiones en un programa usando sentencias while Implementar control con repeticiones.](https://reader033.fdocuments.ec/reader033/viewer/2022061612/5665b4961a28abb57c926d3a/html5/thumbnails/15.jpg)
float contador = 0.0f;
while (contador <= 1.0f)
contador = contador + 0.3333333f;
}
float contador = 0.0f;
while (contador <= 1.0f)
contador = contador + 0.25f;
}
![Page 16: Sentencias de repetición Programación. Objetivos Implementar control con repeticiones en un programa usando sentencias while Implementar control con repeticiones.](https://reader033.fdocuments.ec/reader033/viewer/2022061612/5665b4961a28abb57c926d3a/html5/thumbnails/16.jpg)
Error de fuera por uno OBOE
int contador = 1;
while (contador < 10)
...
contador++;
}
int contador = 0;
while (contador <= 10)
...
contador++;
}
![Page 17: Sentencias de repetición Programación. Objetivos Implementar control con repeticiones en un programa usando sentencias while Implementar control con repeticiones.](https://reader033.fdocuments.ec/reader033/viewer/2022061612/5665b4961a28abb57c926d3a/html5/thumbnails/17.jpg)
OBOE corregido
int contador = 0;
while (contador < 10)
...
contador++;
}
int contador = 1;
while (contador <= 10)
...
contador++;
}
![Page 18: Sentencias de repetición Programación. Objetivos Implementar control con repeticiones en un programa usando sentencias while Implementar control con repeticiones.](https://reader033.fdocuments.ec/reader033/viewer/2022061612/5665b4961a28abb57c926d3a/html5/thumbnails/18.jpg)
Comprobaciones en las sentencias de control de repetición
1. Asegúrese de que el cuerpo del bucle contiene una sentencia que hará terminar al bucle en algún momento.
2. Asegúrese de que el bucle se repite exactamente un número correcto de veces.
3. Se quiere ejecutar el cuerpo del bucle N veces, entonces inicie el contador a 0 y use la condición de prueba contador < N o inicie el contador a 1 use la condición de prueba contador <= N.
![Page 19: Sentencias de repetición Programación. Objetivos Implementar control con repeticiones en un programa usando sentencias while Implementar control con repeticiones.](https://reader033.fdocuments.ec/reader033/viewer/2022061612/5665b4961a28abb57c926d3a/html5/thumbnails/19.jpg)
Preguntas rápidas1. ¿Cuál de los siguientes es un bucle infinito?
a. int suma = 0, i = 0; while (i >= 0){ Suma += i; i++; }
b. int suma = 0, i = 100; while (i != 0){ Suma += i; i--; }
![Page 20: Sentencias de repetición Programación. Objetivos Implementar control con repeticiones en un programa usando sentencias while Implementar control con repeticiones.](https://reader033.fdocuments.ec/reader033/viewer/2022061612/5665b4961a28abb57c926d3a/html5/thumbnails/20.jpg)
2. Para cada una de las siguientes sentencias de lazo, determine el valor de la suma después de que se haya ejecutado el lazo. a. int contador = 0,suma = 0; while (contador < 10){ suma += contador; contador++; }b. int contador = 1,suma = 0; while (contador <= 30){ suma += contador; contador += 3; }c. int contador = 0,suma = 0; while (contador < 20){ suma += 3*contador; contador += 2; }
![Page 21: Sentencias de repetición Programación. Objetivos Implementar control con repeticiones en un programa usando sentencias while Implementar control con repeticiones.](https://reader033.fdocuments.ec/reader033/viewer/2022061612/5665b4961a28abb57c926d3a/html5/thumbnails/21.jpg)
La sentencia do-while
La sintaxis de la sentencia do-while es:
do
<sentencias>
while (<expresión booleana>);
int suma = 0, numero = 1;
do {
suma += numero;
numero++;
} while (numero <= 20);
SentenciaCuerpo del bucle
Expresión booleana
![Page 22: Sentencias de repetición Programación. Objetivos Implementar control con repeticiones en un programa usando sentencias while Implementar control con repeticiones.](https://reader033.fdocuments.ec/reader033/viewer/2022061612/5665b4961a28abb57c926d3a/html5/thumbnails/22.jpg)
Diagrama de flujo
numero<= 20
suma += numero;numero++;
int suma = 0; numero = 1;
verdadero
falso
![Page 23: Sentencias de repetición Programación. Objetivos Implementar control con repeticiones en un programa usando sentencias while Implementar control con repeticiones.](https://reader033.fdocuments.ec/reader033/viewer/2022061612/5665b4961a28abb57c926d3a/html5/thumbnails/23.jpg)
Lazo con centinela
int edad;do { edad = entrada.getInteger( "Su edad entre 0 y 130 : "); if(edad < 0 || edad> 130) System.out.prinln("Se ha introducido”+ ” una edad inválida." + "intentelo de nuevo.");
} while (edad < 0 || edad> 130);
![Page 24: Sentencias de repetición Programación. Objetivos Implementar control con repeticiones en un programa usando sentencias while Implementar control con repeticiones.](https://reader033.fdocuments.ec/reader033/viewer/2022061612/5665b4961a28abb57c926d3a/html5/thumbnails/24.jpg)
Condición complejaEl bucle termina cuando se reciba el valor centinela 0, cuando se introduzca un número par o cuando la suma sea mayor que 100.
suma = 0;do { num = entrada.getInteger(“teclee un entero:”); if(num == 0)// centinela mensaje.show(“suma = “+suma); else if(num % 2 ==0)// número par mensaje.show(“Error: número par”); else{ suma += num; if(suma>100)//mayor que 100 mensaje.show(“Suma > 100”); }} while(!(num % 2 == 0 || num == 0 || suma > 100));
![Page 25: Sentencias de repetición Programación. Objetivos Implementar control con repeticiones en un programa usando sentencias while Implementar control con repeticiones.](https://reader033.fdocuments.ec/reader033/viewer/2022061612/5665b4961a28abb57c926d3a/html5/thumbnails/25.jpg)
La condición anterior se puede expresar como sigue haciendo uso de la equivalencia: !(a || b) <==> !a && !b
(num % 2 != 0 && num != 0 && suma <= 100);
![Page 26: Sentencias de repetición Programación. Objetivos Implementar control con repeticiones en un programa usando sentencias while Implementar control con repeticiones.](https://reader033.fdocuments.ec/reader033/viewer/2022061612/5665b4961a28abb57c926d3a/html5/thumbnails/26.jpg)
boolean repetir = true;
suma = 0;do { num = entrada.getInteger(“teclee un entero:”); if(num == 0){ // centinela mensaje.show(“suma = “+suma); repetir = false; } else if(num % 2 ==0){ // número par mensaje.show(“Error: número par”); repetir = false; } else{ suma += num; if(suma>100)//mayor que 100 mensaje.show(“Suma > 100”); repetir = false; }} while(repetir);
![Page 27: Sentencias de repetición Programación. Objetivos Implementar control con repeticiones en un programa usando sentencias while Implementar control con repeticiones.](https://reader033.fdocuments.ec/reader033/viewer/2022061612/5665b4961a28abb57c926d3a/html5/thumbnails/27.jpg)
Preguntas rápidas1. Escriba una sentencia do-while para calcular la suma de los primeros 30 enteros positivos e impares.
2. Reescriba los siguientes bucles while como bucles do-whilea. int contador = 0, suma = 0; while(contador < 10){ suma += contador; contador++; }b. int contador = 1, suma = 0; while(contador <= 30){ suma += contador; contador += 3; }
![Page 28: Sentencias de repetición Programación. Objetivos Implementar control con repeticiones en un programa usando sentencias while Implementar control con repeticiones.](https://reader033.fdocuments.ec/reader033/viewer/2022061612/5665b4961a28abb57c926d3a/html5/thumbnails/28.jpg)
La sentencia forLa sintaxis de la sentencia for es:
for(<inicio>; <expresión booleana>; <incremento>)
<sentencia>
for( i = 0 ; i < 20 ; i++ ){
numero = entrada.getInteger();
suma += numero;
}
inicioExpresión booleana
Incremento
Sentencia
![Page 29: Sentencias de repetición Programación. Objetivos Implementar control con repeticiones en un programa usando sentencias while Implementar control con repeticiones.](https://reader033.fdocuments.ec/reader033/viewer/2022061612/5665b4961a28abb57c926d3a/html5/thumbnails/29.jpg)
Diagrama de flujo
i = 0;
i < 20
numero = entradagetInteger();suma += numero;
i++;
verdadero
falso
<Inicio>
<Expresiónbooelana>
<Sentencia>
<incremento>
![Page 30: Sentencias de repetición Programación. Objetivos Implementar control con repeticiones en un programa usando sentencias while Implementar control con repeticiones.](https://reader033.fdocuments.ec/reader033/viewer/2022061612/5665b4961a28abb57c926d3a/html5/thumbnails/30.jpg)
Cálculo del factorial
SimpleInput entrada = new SimpleInput();
int n, contador;float producto = 1;
n = entrada.getInteger(" Teclee un entero ");
for(contador = 1; contador <= n; contador++) { producto = producto * contador; System.out.println("numero: " + contador + " producto= " + producto);}
System.out.println("El factorial es " + producto);
El factorial de n se define como: n! = 1*2*3...*(n-1)*n
![Page 31: Sentencias de repetición Programación. Objetivos Implementar control con repeticiones en un programa usando sentencias while Implementar control con repeticiones.](https://reader033.fdocuments.ec/reader033/viewer/2022061612/5665b4961a28abb57c926d3a/html5/thumbnails/31.jpg)
Caída libreSe deja caer un objeto desde una altura H, la posición P del objeto en el instante t esta dada por,
P = –16t2 + H
El instante en que toca el suelo se encuentra haciendo P = 0 en la ecuación anterior y es igual a
t = (H/16)
![Page 32: Sentencias de repetición Programación. Objetivos Implementar control con repeticiones en un programa usando sentencias while Implementar control con repeticiones.](https://reader033.fdocuments.ec/reader033/viewer/2022061612/5665b4961a28abb57c926d3a/html5/thumbnails/32.jpg)
Programadouble alturaInicial, posicion,tiempoContacto;SimpleInput entrada = new SimpleInput();
alturaInicial = entrada.getDouble(" Altura inicial: ");tiempoContacto = Math.sqrt(alturaInicial/16.0);System.out.println( " Tiempo t posicion en el instante t ");
for(int instante=0;instante<tiempoContacto;instante++){ posicion = -16.0*instante*instante+alturaInicial; System.out.pritnln(" " + instante+" " + posicion);}System.out.println(tiempoContacto + " 0.00");
![Page 33: Sentencias de repetición Programación. Objetivos Implementar control con repeticiones en un programa usando sentencias while Implementar control con repeticiones.](https://reader033.fdocuments.ec/reader033/viewer/2022061612/5665b4961a28abb57c926d3a/html5/thumbnails/33.jpg)
Declaración dentro del for
El elemento inicio del for se pueden declarar variables:
for(int i = 0; i < 10; i++)
En lugar de
int i
for(i = 0; i < 10; i++)
for(int i=0; i<100; i+=5) // i = 0, 5, 10, ...
for(int j=2; j<40; j*=2) // j = 2, 4, 8, 16, 32
for(int k=100; k>0; k--) // k = 100, 99, 98, ...
Los incrementos pueden ser por cualquier valor.
![Page 34: Sentencias de repetición Programación. Objetivos Implementar control con repeticiones en un programa usando sentencias while Implementar control con repeticiones.](https://reader033.fdocuments.ec/reader033/viewer/2022061612/5665b4961a28abb57c926d3a/html5/thumbnails/34.jpg)
Preguntas rápidas1. Escriba un bucle for para calcular:
a. La suma de 1, 2, ..., 100
b. La suma de 2, 4, ..., 500
c. El producto de 3, 5, 7, ..., 25
2. Reescriba los siguientes bucles while usando sentencias for,
a. int contador = 0, suma = 0; while(contador < 10){ suma += contador; contador++; }b. int contador = 1, suma = 0; while(contador <= 30){ suma += contador; contador += 3; }
![Page 35: Sentencias de repetición Programación. Objetivos Implementar control con repeticiones en un programa usando sentencias while Implementar control con repeticiones.](https://reader033.fdocuments.ec/reader033/viewer/2022061612/5665b4961a28abb57c926d3a/html5/thumbnails/35.jpg)
Preguntas rápidas
Escriba sentencias for, do-while y while para calcular las siguientes sumas y productos
a. 1 + 3 + 7 + ...+ (220 -1)
b. 1 + 1/2 + 1/3 + ... + 1/20
c. 1*2 + 2*3 + 3*4 + ... + 19*20
d. 1 x 2 x 4 x 8 x ... x 220
![Page 36: Sentencias de repetición Programación. Objetivos Implementar control con repeticiones en un programa usando sentencias while Implementar control con repeticiones.](https://reader033.fdocuments.ec/reader033/viewer/2022061612/5665b4961a28abb57c926d3a/html5/thumbnails/36.jpg)
Lazos anidadosEs posible tener una lazo dentro de otro. A esto se le llama anidamiento.
int precio=100;salida.printLine(" 5 10 15 20 25");for(int ancho = 11; ancho <= 20; ancho++) { salida.print(ancho + " "); for(int longitud = 5; longitud <= 25; longitud+=5){ salida.print(" " + precio); } salida.skipLine(1);}
![Page 37: Sentencias de repetición Programación. Objetivos Implementar control con repeticiones en un programa usando sentencias while Implementar control con repeticiones.](https://reader033.fdocuments.ec/reader033/viewer/2022061612/5665b4961a28abb57c926d3a/html5/thumbnails/37.jpg)
Tabla de multimplicarstatic public void main(String[] args){ MainWindow ventana = new MainWindow(); OutputBox salida = new OutputBox(ventana); ventana.show(); salida.setTitle("Tabla de multiplicar"); salida.show(); salida.printLine(" 1 2 3”+ “ 5 6 7 8 9 10"); for(int i = 1; i <= 10; i++) { salida.print(i + " "); for(int j = 1; j <= 10; j++){ salida.print(" " + i*j); } salida.skipLine(1); }}
![Page 38: Sentencias de repetición Programación. Objetivos Implementar control con repeticiones en un programa usando sentencias while Implementar control con repeticiones.](https://reader033.fdocuments.ec/reader033/viewer/2022061612/5665b4961a28abb57c926d3a/html5/thumbnails/38.jpg)
Preguntas rápidas
1. ¿Cuál será la suma después de ejecutar los siguientes for anidados?a. Int suma = 0; for(int i=0; i<5; i++){ suma = suma + i; for(int j=0; i<5; j++){ suma = suma + j; }
b. Int suma = 0; for(int i=0; i<5; i++){ suma = suma + i; for(int j=i; i<5; j++){ suma = suma + j; }
![Page 39: Sentencias de repetición Programación. Objetivos Implementar control con repeticiones en un programa usando sentencias while Implementar control con repeticiones.](https://reader033.fdocuments.ec/reader033/viewer/2022061612/5665b4961a28abb57c926d3a/html5/thumbnails/39.jpg)
El juego alto bajo
Escriba una aplicación que permita jugar Alto-Bajo con el usuario.
Se generarán números secretos aleatorios entre 1 y 100.
Cuando el usuario propone un número, el programa responde Alto o Bajo dependiendo si es mayor o menor que el número secreto.
El número máximo de intentos es 6.
![Page 40: Sentencias de repetición Programación. Objetivos Implementar control con repeticiones en un programa usando sentencias while Implementar control con repeticiones.](https://reader033.fdocuments.ec/reader033/viewer/2022061612/5665b4961a28abb57c926d3a/html5/thumbnails/40.jpg)
algoritmoGenerar número secreto
num
num != secreto &&intentos != 6?
intentos = 0
intentos = intentos + 1
num == secreto?
FalloAcerto
inicio
fin
V V FF
num>secreto?
num<secreto? Alto
Bajo
VF
V
F
![Page 41: Sentencias de repetición Programación. Objetivos Implementar control con repeticiones en un programa usando sentencias while Implementar control con repeticiones.](https://reader033.fdocuments.ec/reader033/viewer/2022061612/5665b4961a28abb57c926d3a/html5/thumbnails/41.jpg)
Tarea1. Escriba un método que devuelva true si el argumento es un número primo.
2. Utilizando el método del problema 1 escriba un método que liste todos los primos entre 1 y N , donde N es tecleado por el usuario.
3. Una terna de números a, b, c es cuadrada perfecta si a2 + b2 = c2. Por ejemplo, 3, 4, 5 es una terna cuadrada perfecta. Escriba un programa para obtener todos las ternas cuadradas perfectas entre 1 y N, donde N es tecleado por el usuario. El programa no deberá repetir ternas, es decir, la terna 3, 4, 5 es la misma que la terna 4, 3, 5, y deberá imprimirse una sola vez.