Taller de
Programación
Imagen obtenida de: https://www.pixelstalk.net/wp-content/uploads/images6/Abstract-Wallpaper-HD-Free-download.png
Dudas de la clase anterior
Bucle for
Bucle for vs while
vs do-while
¿Cuándo usar
cada una?
2
Dudas de la clase anterior
Bucle for
Bucle for vs while
vs do-while
¿Cuándo usar
cada una?
3
Dudas de la clase anterior
Bucle for
Bucle for vs while
vs do-while
¿Cuándo usar
cada una?
4
Estructura Repetitiva
for (II)
Semana 08 - Sesión 16
Conocimientos previos
Observa e indica cuál final int _NUMERO_LINEAS_ = 8;
int valor = 1;
de las siguientes es la
for (int i = 1; i <= _NUMERO_LINEAS_; i++) {
salida del programa System.out.printf("%" + _NUMERO_LINEAS_ + "d\n",
mostrado. valor);
valor = valor * 10 + 1;
}
Justificar respuesta.
1 1 1
11 11 111
111 111 11111
1111 1111 1111111
11111 11111 111111111
111111 111111 11111111111
1111111 1111111 1111111111111
11111111 11111111 111111111111111
A. B. C.
6
Logro de aprendizaje
Al finalizar la sesión, el
estudiante desarrolla
programas con la estructura
repetitiva do-while utilizando
un IDE Java para resolver
problemas sencillos que
requieren acciones que se
ejecuten repetidamente.
Imagen obtenida de:
https://img.freepik.com/free-vector/clever-man-student-standing-books-stack-with-flag-self-learning-personal-improvement-knowledge-obtaining-educational-achievement_335657-3461.jpg
7
Utilidad
Observa y responde:
• ¿Qué se muestra en la imagen?
• ¿Algo se repite?
• ¿Hay algún contador o
acumulador?
• ¿Se conoce el número de cuotas?
• ¿Cómo te puede ayudar el uso de
la estructura for en la
elaboración de programa Java?
Desarrollar programas utilizando
la estructura repetitiva for en
Java.
Imagen obtenida de: https://www.philscomputerlab.com/uploads/3/7/2/3/37231621/6532844_orig.png 8
contenido 1
Estructura repetitiva
for (repaso)
2
Bucles anidados
3
Práctica
9
contenido 1
Estructura repetitiva
for (repaso)
2
Bucles anidados
3
Práctica
10
1
Estructura repetitiva
for (repaso)
Bucle for Expresión de inicialización
• Generalmente, permite
ejecutar acciones un número condición
false
conocido de veces.
• Consta de 3 partes: true
for (inicialización; condición; iteración)
{ Cuerpo del bucle
// instrucciones;
}
• Su variable de control Expresión de iteración
(contador interno) puede ser
progresivo o regresivo. fin de bucle
11
contenido 1
Estructura repetitiva
for (repaso)
2
Bucles anidados
3
Práctica
12
2
Bucles anidados
Bucle anidado
Bucle externo
• Se denomina bucle anidado al
bucle que se encuentra dentro
de otro bucle.
Bucle interno
• Cualquiera de las estructuras
repetitivas conocidas (while,
do-while, for) puede anidarse
dentro de otra.
• No existe límite en el nivel de
anidamiento, pero se
recomienda no tener
demasiados. 13
2
Bucles anidados
Anidamiento
¿Cómo se pueden
anidar las
estructuras while
repetitivas?
do-
for
while
14
2
Bucles anidados
Bucle anidado. Ejemplo.
Salida:
El ejemplo Semana 1
int semanas = 3; Día 1
muestra un Día 2
bucle que itera int dias = 7; Día 3
Día 4
3 veces String expresion1, expresion2; Día 5
Día 6
(semanas) y Día 7
Semana 2
dentro de éste, for (int i = 1; i <= semanas; i++) { Día 1
Día 2
otro bucle que expresion1 = String.format("Semana %d\n", i);
Día 3
System.out.println(expresion1); Día 4
itera 7 veces Día 5
(días) for (int j = 1; j <= dias; j++) { Día 6
Día 7
expresion2 = String.format("\tDía %d\n", j); Semana 3
Día 1
System.out.println(expresion2); Día 2
Se hace uso de Día 3
String.format() para } Día 4
Día 5
formatear la salida } Día 6
antes de enviarla a Día 7
la pantalla.
15
2
Bucles anidados
Bucle anidado. Ejemplo.
int semanas = 3, dias = 7, i = 1, j; int semanas = 3, dias = 7, i = 1, j;
El ejemplo
while (i <= semanas) { do { anterior,
System.out.println("Semana " + i++); System.out.println("Semana " + i++);
j = 1; j = 1;
expresado con
while (j <= dias) { do { otras estructuras
System.out.println("\tDía " + j+ System.out.println("\tDía " + j+ repetitivas
+); +);
} } while (j <= dias);
anidadas.
} } while (i <= semanas);
La salida es la
int semanas = 3, dias = 7, j;
misma en todos
int semanas = 3, dias = 7, i = 1;
los casos.
while (i <= semanas) { for (int i = 1; i <= semanas; i++) {
System.out.println("Semana " + i++); System.out.println("Semana " + i);
for (int j = 1; j <= dias; j++) { j = 1;
System.out.println("\tDía " + j); do {
} System.out.println("\tDía " + j+
} +);
} while (j <= dias);
} 16
2
Bucles anidados
Anidamiento
Recuerda:
Todas las estructuras, ya sean condicionales o
repetitivas pueden anidarse entre sí, de forma
combinada, según se requiera y sin límite de
anidamiento.
Estructura Estructura
condicional repetitiva
Imagen obtenida de: https://creazilla-store.fra1.digitaloceanspaces.com/cliparts/32933/business-man-advise-clipart-xl.png 17
contenido 1
Estructura repetitiva
for (repaso)
2
Bucles anidados
3
Práctica
18
3
Práctica
Ejercicio 1
Elaborar un programa que permita ingresar
mediante un menú la información de un
empleado, su salario y sus boletas emitidas
.
Opcion1: Se debe pedir el nombre y el tipo
de empleado (contratado o nombrado)
Opción2: Se debe ingresar el salario
mensual, número de boletas emitidas y
número de mes en curso.
Opción 3: Elaborar el reporte ASCII (validar
que los datos hayan sido ingresados)
Utilizar String.format para generar el
reporte. Almacene el reporte en una
variable String.
19
3
Práctica
Ejercicio 2
Escribir un programa para 1, 1, 2, 3, 5, 8, 13, 21, 34, …
generar los N primeros números
de la serie de Fibonacci, donde
N es un valor entero positivo
ingresado por el usuario (validar)
Mostrar además al final, la suma
de los números mostrados.
Utilizar String.format para
acumular en una cadena la serie
de números a mostrar.
Imagen obtenida de:
https://www.mathsisfun.com/numbers/images/fibonacci-spiral.svg 20
3
Práctica
Ejercicio 3
Escribir un programa para recoger los
votos de 10 personas que elegirán un
color para una campaña publicitaria.
Los colores son: celeste, morado y
turquesa.
Mostrar al final, cuántos votos obtuvo
cada color, su porcentaje y qué color
resultó elegido.
Todo el reporte debe generarse y
almacenarse en una cadena utilizando
String.format
21
Tarea grupal
Implementar 5 programas en Java para:
1. Resolver un problema que utilice una estructura Indicaciones
for con un contador interno progresivo.
• Grupos: 3 integrantes
2. Resolver un problema que utilice una estructura (máximo)
for con un contador adicional y un acumulador. • Entregables: a). Video de
3 minutos (máximo)
3. Elaborar un programa que genere un reporte
explicando las
ASCII utilizando la estructura repetitiva for. soluciones propuestas;
4. Resolver un problema que utilice anidamiento b). Archivo ZIP
conteniendo el Proyecto
entre estructuras repetitivas.
java con las soluciones.
5. Resolver un problema que utilice anidamiento • Los integrantes
entre estructuras condicionales y repetitivas. aparecerán en el video
explicando los ejercicios.
Recuerda revisar en la
Nota: Los programas 1,2,3 deben incluir alguna
plataforma la rúbrica de la
estructura de control revisada en clases previas. tarea grupal.
22
Resumen de la sesión
• Mencione 3 características del
bucle for.
• ¿Qué es anidamiento?
• ¿Qué estructuras repetitivas
pueden anidarse?
• ¿Qué ventajas tiene el uso de
estructuras anidadas?
• ¿Qué es un reporte ASCII?
Imagen obtenida de: 23
https://dpemfoco.com.br/wp-content/uploads/2019/08/Departamento-de-Pessoal-em-Foco-Checklist-Check-list-Checklists.png
Bibliografía
• Tanenbaum & Van Steen (2008). Algoritmos y
Estructuras de Datos - Principios y Paradigmas,
2da Edición. Pearson Education.
• Khalid A. Mughal & Rolf W. Rasmussen (2017). A
Programmer’s guide to Java SE 8 Oracle Certified
Associate.
• Schildt, Herbert (2019). A Java Beginner’s Guide
Eighth Edition. Oracle Press.
• Schildt, Herbert (2019). Java The Complete
Reference Eleventh Edition. Oracle Press.
Imagen obtenida de: 24
https://pngimg.com/d/book_PNG51088.png