Break
Parte da seção Fundamentos do Journey de R da Coddy — lição 40 de 78.
Às vezes, você precisa sair de um loop antecipadamente, antes que ele termine todas as suas iterações. A instrução break permite que você pare um loop imediatamente quando uma condição específica é atendida.
for (i in 1:10) {
if (i == 5) {
break
}
print(i)
}Saída:
[1] 1
[1] 2
[1] 3
[1] 4O loop foi configurado para rodar de 1 a 10, mas quando i atingiu 5, a instrução break interrompeu o loop inteiramente. Observe que o 5 nunca foi impresso porque o break sai imediatamente.
Isso é especialmente útil com loops while ao procurar por algo:
num <- 1
while (TRUE) {
if (num * num > 20) {
break
}
num <- num + 1
}
print(num)Saída:
[1] 5Aqui, while (TRUE) normalmente rodaria para sempre, mas break o interrompe assim que encontramos o primeiro número cujo quadrado excede 20. Este padrão é comum quando você precisa pesquisar até que uma condição seja satisfeita.
Desafio
FácilLeia um número limit da entrada. Use um loop for para iterar de 1 até limit, mas interrompa o loop antecipadamente usando break quando encontrar o primeiro número que seja divisível por 3 e 7 ao mesmo tempo.
Imprima cada número antes de verificar a condição. Quando encontrar um número divisível por 3 e 7, imprima esse número e, em seguida, saia do loop.
Após o término do loop, imprima "Loop ended" usando print().
Por exemplo, se a entrada for 30, a saída deve ser:
[1] 1
[1] 2
[1] 3
[1] 4
[1] 5
[1] 6
[1] 7
[1] 8
[1] 9
[1] 10
[1] 11
[1] 12
[1] 13
[1] 14
[1] 15
[1] 16
[1] 17
[1] 18
[1] 19
[1] 20
[1] 21
[1] "Loop ended"O loop para em 21 porque é o primeiro número divisível por 3 e 7 (21 = 3 × 7).
Folha de consulta
A instrução break interrompe imediatamente um loop quando uma condição específica é atendida:
for (i in 1:10) {
if (i == 5) {
break
}
print(i)
}Saída:
[1] 1
[1] 2
[1] 3
[1] 4O loop termina quando i atinge 5. O valor 5 nunca é impresso porque o break sai imediatamente.
Usando break com while (TRUE) para busca:
num <- 1
while (TRUE) {
if (num * num > 20) {
break
}
num <- num + 1
}
print(num)Saída:
[1] 5Este padrão encontra o primeiro número cujo quadrado excede 20 e, em seguida, interrompe o loop infinito.
Experimente você mesmo
# Ler entrada
con <- file("stdin", "r")
limit <- as.integer(suppressWarnings(readLines(con, n = 1)))
# TODO: Escreva seu código abaixo
# Use um laço for de 1 até limit
# Imprima cada número antes de verificar a condição
# Interrompa (break) quando encontrar um número divisível por 3 e 7 ao mesmo tempo
# Dica: Use o operador %% para verificar a divisibilidade
# Imprimir "Loop ended" após o laço
print("Loop ended")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 2
Operadores Lógicos (AND, OR)Operadores Lógicos Parte 2 (NOT)Recapitulação - Lógica SimplesLógica Vetorizada Parte 1Lógica Vetorizada Parte 27Calculadora de Divisão de Conta
Mensagem de Boas-vindasObtendo a Entrada do Usuário10FizzBuzz com um Toque Especial
Visão Geral do JogoA Função FizzBuzz2Variáveis e Tipos de Dados
Tipo de Dado NuméricoTipo de Dado InteiroTipo de Dado CaractereTipo de Dado LógicoVerificando Tipos de DadosConvenções de NomenclaturaValores Ausentes: NARecapitulação - Criação de Variáveis8Laços de Repetição
Laço ForLaço WhileBreakNext (Continue)Recapitulação - FatorialGeração de Sequências (seq, :)Laços AninhadosRecapitulação - Entrada Dinâmica3Operadores Parte 1
Operadores AritméticosDivisão Inteira e MóduloOperadores de AtribuiçãoRecapitulação - Matemática SimplesOperadores de Comparação6IO Básico
Saída com PrintCat para SaídaSaída com VariáveisLendo Entrada com readline()Básico de Conversão de TiposRecapitulação - Calculadora de IdadeRecapitulação - Verdadeiro ou Falso9Funções
Declarando uma FunçãoArgumentos de FunçãoValores de RetornoRecapitulação - Função SigmaRecapitulação - Função de ValidaçãoValores de Parâmetro Padrão