Retornos antecipados, break, continue e goto
Reestruture condicionais aninhadas com retornos antecipados e use break, continue e goto com critério
Retornos antecipados, break, continue e goto é uma aula grátis de C++ Academy no CoddyKit. Esta é a aula 4 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 C++ Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de C++ Academy inclui 4 aulas no total.
A pirâmide da desgraça
Condicionais profundamente aninhadas são difíceis de ler. Retornos antecipados simplificam drasticamente a estrutura.
// Pyramid
int process(int n) {
if (n >= 0) {
if (n < 100) {
if (isValid(n)) {
return compute(n);
}
}
}
return -1;
}Refatorando com retornos antecipados
Saia assim que uma pré-condição falhar. Cada cláusula de guarda é uma instrução curta e independente.
int process(int n) {
if (n < 0) return -1;
if (n >= 100) return -1;
if (!isValid(n)) return -1;
return compute(n);
}Cláusulas de guarda
Uma cláusula de guarda rejeita entradas inválidas no início de uma função. Isso torna evidente o fluxo principal.
break em laços
Saia de um laço quando encontrar o que procura ou quando um erro tornar inútil continuar.
continue: pular o restante
Use continue para pular casos que não se aplicam, sem aninhar o restante do corpo.
for (auto& item : items) {
if (item.skipped) continue;
process(item);
}Saindo de laços aninhados
break sai de apenas um nível. Para sair de vários níveis, use uma variável de controle, extraia a lógica para uma função ou use goto como último recurso.
bool found = false;
for (int i = 0; i < n && !found; ++i) {
for (int j = 0; j < m; ++j) {
if (grid[i][j] == target) {
found = true;
break;
}
}
}A instrução goto
O C++ herdou goto da linguagem C. O código moderno raramente precisa dele — mas há um uso legítimo: sair de laços aninhados ou de caminhos de erro.
for (int i = 0; i < n; ++i) {
for (int j = 0; j < m; ++j) {
if (error_condition) goto cleanup;
}
}
cleanup:
free_resources();Por que goto é desencorajado
Eliminando goto com refatoração
A maioria dos usos de goto pode ser substituída por:
- Extrair o bloco interno para uma função
- Usar uma variável de controle
- Lançar e capturar uma exceção
return em destrutores
Você não pode retornar antecipadamente de um destrutor usando return; no início — destrutores não retornam valores. Mas pode estruturá-los com condições antecipadas para pular operações.
O estilo de saída única (antigo)
Códigos antigos às vezes usavam um único return no final e uma variável de resultado. O C++ moderno favorece vários retornos antecipados para manter a clareza. RAII cuida da limpeza automaticamente.
Verificação rápida
Qual técnica de fluxo de controle substitui com mais clareza cadeias de if-else aninhadas em uma função?
Recapitulação
Use retornos antecipados como cláusulas de guarda, break e continue com moderação para deixar a intenção clara, e goto apenas para raras saídas de laços aninhados ou caminhos de limpeza. O objetivo é ter um fluxo de controle legível e simples.
Perguntas Frequentes
A aula “Retornos antecipados, break, continue e goto” é grátis?
Sim — o texto completo de “Retornos antecipados, break, continue e goto” é 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 C++ Academy, atualize para CoddyKit PRO. O curso de C++ Academy inclui 4 aulas no total.
O que vou aprender em “Retornos antecipados, break, continue e goto”?
Reestruture condicionais aninhadas com retornos antecipados e use break, continue e goto com critério Você pratica C++ 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 C++ Academy?
Nenhuma experiência prévia é necessária. C++ 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 4 de 4.
Quanto tempo leva a aula “Retornos antecipados, break, continue e goto”?
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 C++ Academy?
Sim. Cada aula de C++ 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
- Ramificações: if-else, ternário, switch-case
- Padrões de ciclos: for, while, do-while
- Ciclo for baseado em intervalos com contentores
- Retornos antecipados, break, continue e goto