Bucle anidado
Parte de la sección Fundamentos del Journey de Kotlin de Coddy. Lección 52 de 93.
Puedes colocar un bucle dentro de otro bucle para crear un bucle anidado. El bucle interno se ejecuta por completo en cada iteración del bucle externo.
for (i in 1..2) {
for (j in 1..3) {
println("i=$i, j=$j")
}
}
// Salida:
// i=1, j=1
// i=1, j=2
// i=1, j=3
// i=2, j=1
// i=2, j=2
// i=2, j=3Cuando i es 1, el bucle interno se ejecuta tres veces (j va de 1 a 3). Después, i se convierte en 2 y el bucle interno se ejecuta tres veces más. Esto nos da 2 × 3 = 6 iteraciones en total.
Los bucles anidados se utilizan habitualmente para crear patrones o trabajar con estructuras similares a cuadrículas:
for (row in 1..3) {
for (col in 1..row) {
print("*")
}
println()
}
// Salida:
// *
// **
// ***Aquí, el rango del bucle interno depende de la variable del bucle externo, lo que crea un patrón triangular. La función print() muestra la salida sin un salto de línea, mientras que println() pasa a la siguiente línea después de cada fila.
Desafío
IntermedioLee un entero n de la entrada. Usa bucles anidados para imprimir una tabla de multiplicar para los números del 1 al n.
Para cada fila i del 1 al n, imprime los productos i * 1, i * 2, ..., i * n separados por espacios, seguidos de un salto de línea.
Por ejemplo, si la entrada es 3, la salida debería ser:
1 2 3
2 4 6
3 6 9Si la entrada es 4, la salida debería ser:
1 2 3 4
2 4 6 8
3 6 9 12
4 8 12 16Usa print() con un espacio para mostrar los valores en la misma línea y println() para pasar a la siguiente fila.
Pruébalo tú mismo
fun main() {
// Leer la entrada
val n = readLine()!!.toInt()
// TODO: Escribe tu código debajo
// Usa bucles anidados para imprimir la tabla de multiplicar
// Usa print() con un espacio para los valores en la misma línea
// Usa println() para pasar a la siguiente fila
}Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.
Todas las lecciones de Fundamentos
4Operadores, parte 1
Operadores aritméticosOperador móduloAsignación aumentadaOperadores de comparaciónRepaso: matemáticas simples7Entrada y salida básicas
Función PrintlnPlantillas de cadenasEntrada con ReadLineConversión de tiposRepaso - Años hasta la jubilaciónRepaso - Verdadero o falso10Funciones
Declarar una funciónParámetros y argumentosValores de retornoArgumentos con nombreValores predeterminadosFunciones de una sola expresiónRepaso - Función SigmaRepaso - Función de validación2Variables
Val frente a VarInferencia de tiposNúmerosCadenaBooleanoConvenciones de nomenclaturaRepaso: inicializar variables5Operadores Parte 2
Operadores lógicos Parte 1Operadores lógicos Parte 2Operadores lógicos Parte 3Ternario con expresión ifRepaso: lógica simple8Calculadora para dividir la cuenta
Mensaje de bienvenidaObtención de datos11FizzBuzz con un giro
Descripción general del juegoLa función FizzBuzz3Nullabilidad
Qué es la seguridad frente a valores nulosTipos anulablesOperador de llamada seguraOperador ElvisConceptos básicos de retos de funcionesAfirmación de no nulidadRepaso: acceso seguro6Toma de decisiones
Sentencia ifIf - ElseIf como expresiónExpresión whenWhen con rangosRepaso - Calculadora simple9Bucles
Bucle ForBucle WhileBucle Do-WhileBreakContinueRangos en buclesBucle anidadoRepaso - FactorialRepaso - Entrada dinámicaPractica por tu cuenta: Playground de Kotlin