🧩 Exercícios: Controle de Fluxo: if/else, loop, while e for
Spec Sistemas Com Rust • Trilha Progressiva em 4 Níveis
🎯 Nível 1: Fundamentos
Problema 03.1 — if como Expressão (Atribuição Condicional)
Contexto: if como Expressão (Atribuição Condicional) no contexto de Controle de Fluxo: if/else, loop, while e for.
Requisitos de Execução:
- Atribuir resultado diretamente com
let status = if condicao { 'OK' } else { 'ERRO' };.
Resultado Esperado
Expressão condicional avaliada e atribuída à variável imutável.
📤 Instruções de Entrega (Microsoft Teams)
- Salve o arquivo como:
Atividade_03_1_SeuNome - Envie na tarefa:
Atividade Cap 03 - Controle de Fluxo: if/else, loop, while e for
🔑 Gabarito de Código & Solução Comentada
// if_expressao.rs
fn main() {
let score = 85;
let resultado = if score >= 70 { "APROVADO" } else { "REPROVADO" };
println!("Avaliacao: {}", resultado);
}
🔍 Nível 2: Prática
Problema 03.2 — loop Infinito com Retorno de Valor via break valor
Contexto: loop Infinito com Retorno de Valor via break valor no contexto de Controle de Fluxo: if/else, loop, while e for.
Requisitos de Execução:
- Executar laço
loopacumulando tentativas e retornar o valor final diretamente nobreak.
Resultado Esperado
Valor retornado pelo break atribuído diretamente à variável.
📤 Instruções de Entrega (Microsoft Teams)
- Salve o arquivo como:
Atividade_03_2_SeuNome - Envie na tarefa:
Atividade Cap 03 - Controle de Fluxo: if/else, loop, while e for
🔑 Gabarito de Código & Solução Comentada
// loop_retorno.rs
fn main() {
let mut contador = 0;
let resultado = loop {
contador += 1;
if contador == 5 {
break contador * 10;
}
};
println!("Resultado retornado pelo loop: {}", resultado);
}
⚡ Nível 3: Integração
Problema 03.3 — Rótulos de Loops (Loop Labels) para Interrupção em Laços Aninhados
Contexto: Rótulos de Loops (Loop Labels) para Interrupção em Laços Aninhados no contexto de Controle de Fluxo: if/else, loop, while e for.
Requisitos de Execução:
- Nomear laço externo com
'externo: loope interrompê-lo a partir do laço interno combreak 'externo;.
Resultado Esperado
Laço externo interrompido com precisão a partir de estrutura aninhada.
📤 Instruções de Entrega (Microsoft Teams)
- Salve o arquivo como:
Atividade_03_3_SeuNome - Envie na tarefa:
Atividade Cap 03 - Controle de Fluxo: if/else, loop, while e for
🔑 Gabarito de Código & Solução Comentada
// loop_labels.rs
fn main() {
'externo: for i in 1..=3 {
for j in 1..=3 {
if i * j == 4 {
println!("Interrompendo no par ({}, {})", i, j);
break 'externo;
}
}
}
}
🏆 Nível 4: Desafio Corporativo
Problema 03.4 — Iteração com Ranges e Métodos .step_by() e .rev()
Contexto: Iteração com Ranges e Métodos .step_by() e .rev() no contexto de Controle de Fluxo: if/else, loop, while e for.
Requisitos de Execução:
- Iterar em contagem regressiva de passos pares utilizando
(0..=10).rev().step_by(2).
Resultado Esperado
Iterador de range percorrido de forma reversa e espaçada.
📤 Instruções de Entrega (Microsoft Teams)
- Salve o arquivo como:
Atividade_03_4_SeuNome - Envie na tarefa:
Atividade Cap 03 - Controle de Fluxo: if/else, loop, while e for
🔑 Gabarito de Código & Solução Comentada
// ranges.rs
fn main() {
for n in (0..=10).rev().step_by(2) {
print!("{} ", n);
}
println!();
}