0Pricing
Swift Academy · Aula

Saindo de Laços Aninhados

Use rótulos para sair de vários níveis de laços.

Saindo de Laços Aninhados é uma aula grátis de Swift Academy no CoddyKit. Esta é a aula 3 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de Swift Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de Swift Academy inclui 4 aulas no total.

O problema dos laços aninhados

Um break comum dentro de um laço aninhado sai apenas do laço interno, deixando o laço externo em execução.

for i in 1...3 {
    for j in 1...3 {
        if j == 2 { break }
        print(i, j)
    }
}

break com label resolve o problema

Adicione um label ao laço externo e use break outer para sair dos dois laços de uma só vez.

outer: for i in 1...3 {
    for j in 1...3 {
        if i == 2 && j == 2 { break outer }
        print(i, j)
    }
}
print("escaped")

Pesquisando uma grade 2D

break com label é perfeito para interromper uma pesquisa em 2D assim que o target é encontrado.

let grid = [[1, 2, 3], [4, 5, 6]]
var position = (-1, -1)
find: for r in 0..<grid.count {
    for c in 0..<grid[r].count {
        if grid[r][c] == 5 {
            position = (r, c)
            break find
        }
    }
}
print(position)

Sem labels: uma Flag

Uma alternativa sem labels usa uma Flag booleana, mas é mais verbosa e sujeita a erros.

var stop = false
for i in 1...3 {
    for j in 1...3 {
        if i + j == 4 { stop = true; break }
        print(i, j)
    }
    if stop { break }
}

Labels são mais limpos

Em comparação com Flags, break com label expressa a intenção diretamente e evita verificações extras após o laço interno.

outer: for i in 1...3 {
    for j in 1...3 {
        if i + j == 4 { break outer }
        print(i, j)
    }
}

Três níveis de aninhamento

Os labels funcionam em três ou mais níveis; direcione o laço do qual você precisa sair.

top: for a in 1...2 {
    for b in 1...2 {
        for c in 1...2 {
            if c == 2 { break top }
            print(a, b, c)
        }
    }
}

continue com label em aninhamentos

Use continue label para passar à próxima iteração de um laço externo a partir de dentro de um aninhamento profundo.

rows: for r in 1...3 {
    for c in 1...3 {
        if c == 2 { continue rows }
        print(r, c)
    }
}

Combinando os dois

Você pode combinar break e continue com labels na mesma estrutura aninhada para obter um controle preciso.

scan: for i in 1...3 {
    for j in 1...3 {
        if j == 1 { continue }
        if i == 3 { break scan }
        print(i, j)
    }
}

Desempenho da saída antecipada

Sair assim que a resposta é encontrada evita iterações desperdiçadas em grandes conjuntos de dados.

let data = Array(1...100)
var firstBig = -1
loop: for chunk in stride(from: 0, to: data.count, by: 10) {
    for k in chunk..<min(chunk + 10, data.count) {
        if data[k] > 25 {
            firstBig = data[k]
            break loop
        }
    }
}
print(firstBig)

Retornando de uma função

Dentro de uma função, return é outra maneira simples de sair de todos os laços de uma só vez.

func findPair(_ target: Int) -> (Int, Int)? {
    for i in 1...5 {
        for j in 1...5 {
            if i * j == target { return (i, j) }
        }
    }
    return nil
}
print(findPair(12) ?? (-1, -1))

Escolhendo uma abordagem

Prefira break com label para sair de laços aninhados no próprio local, ou return quando estiver dentro de uma função e quiser sair completamente.

outer: for x in 1...3 {
    for y in 1...3 {
        if x * y >= 4 { break outer }
        print(x, y)
    }
}

Verificação rápida

Teste o controle de laços aninhados.

Recapitulação

Um break comum sai apenas do laço mais interno. Identifique o laço externo com um label e use break label para escapar de todos os níveis de uma só vez, o que é mais limpo do que usar uma Flag booleana. Dentro de uma função, return também sai de tudo.

outer: for i in 1...3 {
    for j in 1...3 {
        if j == 2 { break outer }
        print(i, j)
    }
}

Perguntas Frequentes

A aula “Saindo de Laços Aninhados” é grátis?

Sim — o texto completo de “Saindo de Laços Aninhados” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de Swift Academy, atualize para CoddyKit PRO. O curso de Swift Academy inclui 4 aulas no total.

O que vou aprender em “Saindo de Laços Aninhados”?

Use rótulos para sair de vários níveis de laços. Você pratica Swift Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.

Preciso ter experiência prévia para começar Swift Academy?

Nenhuma experiência prévia é necessária. Swift Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 3 de 4.

Quanto tempo leva a aula “Saindo de Laços Aninhados”?

A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.

Posso escrever e executar código nesta aula de Swift Academy?

Sim. Cada aula de Swift Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.

Todas as aulas deste curso

  1. Noções Básicas de break e continue
  2. Instruções Rotuladas
  3. Saindo de Laços Aninhados
  4. Controle de Laços no Contexto de switch
← Voltar para Swift Academy