Laço Aninhado
Parte da seção Fundamentos do Journey de Kotlin da Coddy. Lição 52 de 93.
Você pode colocar um loop dentro de outro loop para criar um loop aninhado. O loop interno é executado completamente a cada iteração do loop externo.
for (i in 1..2) {
for (j in 1..3) {
println("i=$i, j=$j")
}
}
// Saída:
// i=1, j=1
// i=1, j=2
// i=1, j=3
// i=2, j=1
// i=2, j=2
// i=2, j=3Quando i é 1, o loop interno é executado três vezes (j vai de 1 a 3). Então, i se torna 2, e o loop interno é executado mais três vezes. Isso nos dá 2 × 3 = 6 iterações no total.
Loops aninhados são comumente usados para criar padrões ou trabalhar com estruturas semelhantes a grades:
for (row in 1..3) {
for (col in 1..row) {
print("*")
}
println()
}
// Saída:
// *
// **
// ***Aqui, o intervalo do loop interno depende da variável do loop externo, criando um padrão triangular. A função print() exibe o conteúdo sem uma quebra de linha, enquanto println() passa para a próxima linha após cada linha.
Desafio
MédioLeia um inteiro n da entrada. Use loops aninhados para imprimir uma tabela de multiplicação para os números de 1 até n.
Para cada linha i de 1 a n, imprima os produtos i * 1, i * 2, ..., i * n separados por espaços, seguidos por uma nova linha.
Por exemplo, se a entrada for 3, a saída deverá ser:
1 2 3
2 4 6
3 6 9Se a entrada for 4, a saída deverá ser:
1 2 3 4
2 4 6 8
3 6 9 12
4 8 12 16Use print() com um espaço para exibir valores na mesma linha e println() para passar para a próxima linha.
Experimente você mesmo
fun main() {
// Ler a entrada
val n = readLine()!!.toInt()
// TODO: Escreva seu código abaixo
// Use loops aninhados para imprimir a tabela de multiplicação
// Use print() com um espaço para valores na mesma linha
// Use println() para ir para a próxima linha
}Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.
Todas as lições de Fundamentos
4Operadores – Parte 1
Operadores aritméticosOperador móduloAtribuição aumentadaOperadores de comparaçãoRecapitulação – Matemática simples7Entrada e Saída Básicas
Função PrintlnTemplates de StringEntrada com ReadLineConversão de TiposRevisão - Anos até a AposentadoriaRevisão - Verdadeiro ou Falso10Funções
Declare uma funçãoParâmetros e argumentosValores de retornoArgumentos nomeadosValores padrãoFunções de expressão únicaRecapitulação — função SigmaRecapitulação — função de validação2Variáveis
Val vs VarInferência de TiposNúmerosStringBooleanoConvenções de NomenclaturaRecapitulação - Inicializar Variáveis5Operadores – Parte 2
Operadores lógicos – Parte 1Operadores lógicos – Parte 2Operadores lógicos – Parte 3Ternário com expressão ifRecapitulação – Lógica simples8Calculadora de Divisão da Conta
Mensagem de Boas-vindasObtendo a Entrada11FizzBuzz com uma Reviravolta
Visão Geral do JogoA Função FizzBuzz3Nullabilidade
O que é Null SafetyTipos anuláveisOperador de chamada seguraOperador ElvisNoções básicas do desafio de funçõesAsserção de não nuloRecapitulação - Acesso seguro6Tomada de Decisões
Instrução IfIf - ElseIf como ExpressãoExpressão WhenWhen com IntervalosRecapitulação - Calculadora Simples9Laços de Repetição
Laço ForLaço WhileLaço Do-WhileBreakContinueIntervalos em LaçosLaço AninhadoRecapitulação - FatorialRecapitulação - Entrada Dinâmica12Fundamentos de Listas
List vs MutableListAcessando ElementosModificando ListasMétodos de ListaPair e TripleRecapitulação - Lista de ProdutosRecapitulação - Lista Invertida15Rastreador de Despesas Diárias
Visão Geral do ProjetoSair do ProgramaPratique por conta própria: Playground de Kotlin