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:

  1. 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)

  1. Salve o arquivo como: Atividade_03_1_SeuNome
  2. 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:

  1. Executar laço loop acumulando tentativas e retornar o valor final diretamente no break.

Resultado Esperado

Valor retornado pelo break atribuído diretamente à variável.

📤 Instruções de Entrega (Microsoft Teams)

  1. Salve o arquivo como: Atividade_03_2_SeuNome
  2. 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:

  1. Nomear laço externo com 'externo: loop e interrompê-lo a partir do laço interno com break 'externo;.

Resultado Esperado

Laço externo interrompido com precisão a partir de estrutura aninhada.

📤 Instruções de Entrega (Microsoft Teams)

  1. Salve o arquivo como: Atividade_03_3_SeuNome
  2. 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:

  1. 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)

  1. Salve o arquivo como: Atividade_03_4_SeuNome
  2. 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!();
}