fundamentos de programaciónpepe/doc/fprg/01-bucles.ppt.pdf13.10.2010 variables de control...
TRANSCRIPT
![Page 1: Fundamentos de Programaciónpepe/doc/fprg/01-bucles.ppt.pdf13.10.2010 variables de control importante Lo que se declara en el “for”, sólo existe en el bucle, por lo tanto su valor](https://reader036.vdocumento.com/reader036/viewer/2022081405/5f0849527e708231d421424d/html5/thumbnails/1.jpg)
Fundamentos de Programación
Bucles
José A. Mañas <[email protected]> Dpto. de Ingeniería de Sistemas Telemáticos
http://www.dit.upm.es/~pepe/doc/fprg/ 13.10.2010
![Page 2: Fundamentos de Programaciónpepe/doc/fprg/01-bucles.ppt.pdf13.10.2010 variables de control importante Lo que se declara en el “for”, sólo existe en el bucle, por lo tanto su valor](https://reader036.vdocumento.com/reader036/viewer/2022081405/5f0849527e708231d421424d/html5/thumbnails/2.jpg)
bucles
for-each para cada término en la colección
for número fijo de vueltas
while cero o más vueltas
do-while una o más vueltas
iterador variante del bucle while
13.10.2010 2
![Page 3: Fundamentos de Programaciónpepe/doc/fprg/01-bucles.ppt.pdf13.10.2010 variables de control importante Lo que se declara en el “for”, sólo existe en el bucle, por lo tanto su valor](https://reader036.vdocumento.com/reader036/viewer/2022081405/5f0849527e708231d421424d/html5/thumbnails/3.jpg)
while
13.10.2010
secuencia; ¿condición?
false true
while (haceSol()) {! meBaño();!}!
3
![Page 4: Fundamentos de Programaciónpepe/doc/fprg/01-bucles.ppt.pdf13.10.2010 variables de control importante Lo que se declara en el “for”, sólo existe en el bucle, por lo tanto su valor](https://reader036.vdocumento.com/reader036/viewer/2022081405/5f0849527e708231d421424d/html5/thumbnails/4.jpg)
do-while
13.10.2010
secuencia;
¿condición?
false
true
do {! nota = examen();!} while (nota < 5.0)!
4
![Page 5: Fundamentos de Programaciónpepe/doc/fprg/01-bucles.ppt.pdf13.10.2010 variables de control importante Lo que se declara en el “for”, sólo existe en el bucle, por lo tanto su valor](https://reader036.vdocumento.com/reader036/viewer/2022081405/5f0849527e708231d421424d/html5/thumbnails/5.jpg)
for
13.10.2010
inicialización
¿condición?
false
true
for (int i= 0; i < 10; i++) {! System.out.print(i);!}!
sentencia;
actualización
5
![Page 6: Fundamentos de Programaciónpepe/doc/fprg/01-bucles.ppt.pdf13.10.2010 variables de control importante Lo que se declara en el “for”, sólo existe en el bucle, por lo tanto su valor](https://reader036.vdocumento.com/reader036/viewer/2022081405/5f0849527e708231d421424d/html5/thumbnails/6.jpg)
patrón
13.10.2010
for (int i= 0; i < lista.size(); i++) {
procesamos el término n-ésino de la lista }
6
![Page 7: Fundamentos de Programaciónpepe/doc/fprg/01-bucles.ppt.pdf13.10.2010 variables de control importante Lo que se declara en el “for”, sólo existe en el bucle, por lo tanto su valor](https://reader036.vdocumento.com/reader036/viewer/2022081405/5f0849527e708231d421424d/html5/thumbnails/7.jpg)
13.10.2010
variables de control
importante Lo que se declara en el “for”, sólo existe en el
bucle, por lo tanto su valor no podrá ser usado fuera visibilidad limitada al bucle
Si estaba declarada antes, al acabar el “for” queda con el valor final
Ídem si se declaran cosas dentro del “while” o el “do while”
7
![Page 8: Fundamentos de Programaciónpepe/doc/fprg/01-bucles.ppt.pdf13.10.2010 variables de control importante Lo que se declara en el “for”, sólo existe en el bucle, por lo tanto su valor](https://reader036.vdocumento.com/reader036/viewer/2022081405/5f0849527e708231d421424d/html5/thumbnails/8.jpg)
13.10.2010
elección de estructura
1. Si nº fijo de veces, elegir for 2. Si 1 ó más veces, elegir do { } while (); 3. Si 0 ó más veces, elegir while () {}
se trata de elegir la que mejor se ajuste al concepto para mejorar la legibilidad
8
![Page 9: Fundamentos de Programaciónpepe/doc/fprg/01-bucles.ppt.pdf13.10.2010 variables de control importante Lo que se declara en el “for”, sólo existe en el bucle, por lo tanto su valor](https://reader036.vdocumento.com/reader036/viewer/2022081405/5f0849527e708231d421424d/html5/thumbnails/9.jpg)
13.10.2010
bucles sin fin while (true) {
se repite sin fin; }
do { se repite sin fin; } while (true);
for ( ; ; ) { se repite sin fin; }
9
![Page 10: Fundamentos de Programaciónpepe/doc/fprg/01-bucles.ppt.pdf13.10.2010 variables de control importante Lo que se declara en el “for”, sólo existe en el bucle, por lo tanto su valor](https://reader036.vdocumento.com/reader036/viewer/2022081405/5f0849527e708231d421424d/html5/thumbnails/10.jpg)
13.10.2010
Ruptura
Los bucles se pueden romper antes de que acaben normalmente: saltos (break)
bucle parcial (continue)
se acabó y nos vamos (return)
Comentario conviene evitar estas rupturas de programa
pues dificultan la legibilidad del código
10
![Page 11: Fundamentos de Programaciónpepe/doc/fprg/01-bucles.ppt.pdf13.10.2010 variables de control importante Lo que se declara en el “for”, sólo existe en el bucle, por lo tanto su valor](https://reader036.vdocumento.com/reader036/viewer/2022081405/5f0849527e708231d421424d/html5/thumbnails/11.jpg)
13.10.2010
break
Vámonos directamente a la salida rompe la lógica del bucle, saliéndonos útil en bucles que se hacen “n + ½” veces
Utilizable en while, do/while, for switch
11
![Page 12: Fundamentos de Programaciónpepe/doc/fprg/01-bucles.ppt.pdf13.10.2010 variables de control importante Lo que se declara en el “for”, sólo existe en el bucle, por lo tanto su valor](https://reader036.vdocumento.com/reader036/viewer/2022081405/5f0849527e708231d421424d/html5/thumbnails/12.jpg)
13.10.2010
bucles n+1/2 public static void main(String[] args) { System.out.println("Lee líneas hasta punto final."); Scanner teclado = new Scanner(System.in); int cuenta = 0; while (true) { String linea = teclado.next(); if (linea.equals(".")) { break; } cuenta = cuenta + 1; System.out.println(cuenta + ": " + linea); } }
12
![Page 13: Fundamentos de Programaciónpepe/doc/fprg/01-bucles.ppt.pdf13.10.2010 variables de control importante Lo que se declara en el “for”, sólo existe en el bucle, por lo tanto su valor](https://reader036.vdocumento.com/reader036/viewer/2022081405/5f0849527e708231d421424d/html5/thumbnails/13.jpg)
13.10.2010
continue
La secuencia continue, dentro de un bucle, comienza inmediatamente la siguiente iteración del ciclo útil para limpiar el código condicional: legibilidad
for (int i= 0; i < 1000; i++) { A; if (c1) { B; if (c2) { C; } } }
for (int i= 0; i < 1000; i++) { A; if (! c1) continue; B; if (! c2) continue; C; }
≡
13
![Page 14: Fundamentos de Programaciónpepe/doc/fprg/01-bucles.ppt.pdf13.10.2010 variables de control importante Lo que se declara en el “for”, sólo existe en el bucle, por lo tanto su valor](https://reader036.vdocumento.com/reader036/viewer/2022081405/5f0849527e708231d421424d/html5/thumbnails/14.jpg)
13.10.2010
return
Si dentro de un bucle aparece un “return” el método termina sin contemplaciones
int buscaPunto (String s) { for (int p= 0; p < s.length(); p++) { char c= s.charAt(p); if (c == ‘.’) return p; } return –1; }
ver String
14
![Page 15: Fundamentos de Programaciónpepe/doc/fprg/01-bucles.ppt.pdf13.10.2010 variables de control importante Lo que se declara en el “for”, sólo existe en el bucle, por lo tanto su valor](https://reader036.vdocumento.com/reader036/viewer/2022081405/5f0849527e708231d421424d/html5/thumbnails/15.jpg)
13.10.2010
errores frecuentes
Hacer una vez de más o de menos Equivocarse en caso inicial o final
hay que probar casos extremos: condición que no se satisface, sólo se satisface una vez,...
No comprobar que las variables están correctamente inicializadas
Poner condiciones exactas: (mejor, por exceso) while (i != 10) ... while (i < 10) ... // por si acaso poner condiciones == o != sobre reales
15
![Page 16: Fundamentos de Programaciónpepe/doc/fprg/01-bucles.ppt.pdf13.10.2010 variables de control importante Lo que se declara en el “for”, sólo existe en el bucle, por lo tanto su valor](https://reader036.vdocumento.com/reader036/viewer/2022081405/5f0849527e708231d421424d/html5/thumbnails/16.jpg)
ejemplo
imprimir los números enteros entre -5 y +5, ambos inclusive
13.10.2010 16
![Page 17: Fundamentos de Programaciónpepe/doc/fprg/01-bucles.ppt.pdf13.10.2010 variables de control importante Lo que se declara en el “for”, sólo existe en el bucle, por lo tanto su valor](https://reader036.vdocumento.com/reader036/viewer/2022081405/5f0849527e708231d421424d/html5/thumbnails/17.jpg)
ejemplo
imprimir los números enteros positivos menores que 100
13.10.2010 17
![Page 18: Fundamentos de Programaciónpepe/doc/fprg/01-bucles.ppt.pdf13.10.2010 variables de control importante Lo que se declara en el “for”, sólo existe en el bucle, por lo tanto su valor](https://reader036.vdocumento.com/reader036/viewer/2022081405/5f0849527e708231d421424d/html5/thumbnails/18.jpg)
ejemplo
imprimir los números enteros positivos menores que 100 que sean múltiplos de 2 y de 3
13.10.2010 18
![Page 19: Fundamentos de Programaciónpepe/doc/fprg/01-bucles.ppt.pdf13.10.2010 variables de control importante Lo que se declara en el “for”, sólo existe en el bucle, por lo tanto su valor](https://reader036.vdocumento.com/reader036/viewer/2022081405/5f0849527e708231d421424d/html5/thumbnails/19.jpg)
ejemplo
dada una serie aritmética empezando por a0 y con incremento k > 0, imprimir los números de la serie menores que MAX
13.10.2010 19
![Page 20: Fundamentos de Programaciónpepe/doc/fprg/01-bucles.ppt.pdf13.10.2010 variables de control importante Lo que se declara en el “for”, sólo existe en el bucle, por lo tanto su valor](https://reader036.vdocumento.com/reader036/viewer/2022081405/5f0849527e708231d421424d/html5/thumbnails/20.jpg)
ejemplo
calcular el producto de los números 1..n factorial(n) = 1 * 2 * ... * n
13.10.2010 20
![Page 21: Fundamentos de Programaciónpepe/doc/fprg/01-bucles.ppt.pdf13.10.2010 variables de control importante Lo que se declara en el “for”, sólo existe en el bucle, por lo tanto su valor](https://reader036.vdocumento.com/reader036/viewer/2022081405/5f0849527e708231d421424d/html5/thumbnails/21.jpg)
ejemplo
escriba un método que recibe como argumento la altura de la pirámide y pinta esto: *!***!*****!*******!*********!
13.10.2010 21
![Page 22: Fundamentos de Programaciónpepe/doc/fprg/01-bucles.ppt.pdf13.10.2010 variables de control importante Lo que se declara en el “for”, sólo existe en el bucle, por lo tanto su valor](https://reader036.vdocumento.com/reader036/viewer/2022081405/5f0849527e708231d421424d/html5/thumbnails/22.jpg)
ejemplo
escriba un método que imprima la tabla de multiplicar!
13.10.2010 22
![Page 23: Fundamentos de Programaciónpepe/doc/fprg/01-bucles.ppt.pdf13.10.2010 variables de control importante Lo que se declara en el “for”, sólo existe en el bucle, por lo tanto su valor](https://reader036.vdocumento.com/reader036/viewer/2022081405/5f0849527e708231d421424d/html5/thumbnails/23.jpg)
ejemplo
escriba un método para calcular PI con precisión de p decimales usando la fórmula PI/4 = 1 - 1/3 + 1/5 - 1/7 + ...
= Suma(n = 0, infinito){(-1)^n/(2n+1)}!
13.10.2010 23
![Page 24: Fundamentos de Programaciónpepe/doc/fprg/01-bucles.ppt.pdf13.10.2010 variables de control importante Lo que se declara en el “for”, sólo existe en el bucle, por lo tanto su valor](https://reader036.vdocumento.com/reader036/viewer/2022081405/5f0849527e708231d421424d/html5/thumbnails/24.jpg)
ejemplo
escriba un método que calcule si un número n es primo, probando si es divisible por algún entero entre 2 y la raíz cuadrada de n
escriba un método que imprima los números primos entre 1 y N!
13.10.2010 24
![Page 25: Fundamentos de Programaciónpepe/doc/fprg/01-bucles.ppt.pdf13.10.2010 variables de control importante Lo que se declara en el “for”, sólo existe en el bucle, por lo tanto su valor](https://reader036.vdocumento.com/reader036/viewer/2022081405/5f0849527e708231d421424d/html5/thumbnails/25.jpg)
ejemplo
escriba un método que calcule la integral S de Rieman de una función f(x)
lo haremos sumando las áreas de rectángulos internos
=
xi = a + i * dx
13.10.2010 25