Spec Sistemas Com Rust • Trilha Progressiva em 4 Níveis


🧭 Navegação Pedagógica


🎯 Nível 1: Fundamentos

Problema 04.1 — Função com Retorno Implícito (Expressão sem Ponto e Vírgula)

Contexto: Função com Retorno Implícito (Expressão sem Ponto e Vírgula) no contexto de Funções, Expressões vs Declarações e Escopo Léxico.

Requisitos de Execução:

  1. Escrever função retornando valor na última linha sem a palavra-chave return.

Resultado Esperado

Função pura retornando expressão avaliada.

📤 Instruções de Entrega (Microsoft Teams)

  1. Salve o arquivo como: Atividade_04_1_SeuNome
  2. Envie na tarefa: Atividade Cap 04 - Funções, Expressões vs Declarações e Escopo Léxico
🔑 Gabarito de Código & Solução Comentada
// funcoes.rs
fn calcular_area(largura: u32, altura: u32) -> u32 {
    largura * altura // Retorno implicito
}

fn main() {
    println!("Area do retangulo: {} m2", calcular_area(10, 5));
}

🔍 Nível 2: Prática

Problema 04.2 — Blocos de Expressão como Valores em Escopo Léxico

Contexto: Blocos de Expressão como Valores em Escopo Léxico no contexto de Funções, Expressões vs Declarações e Escopo Léxico.

Requisitos de Execução:

  1. Atribuir resultado de um bloco { let a = 5; a * 2 } a uma variável.

Resultado Esperado

Bloco escopado avaliado e atribuído.

📤 Instruções de Entrega (Microsoft Teams)

  1. Salve o arquivo como: Atividade_04_2_SeuNome
  2. Envie na tarefa: Atividade Cap 04 - Funções, Expressões vs Declarações e Escopo Léxico
🔑 Gabarito de Código & Solução Comentada
// blocos.rs
fn main() {
    let y = {
        let x = 3;
        x + 1 // Expressao que define o valor de y
    };
    println!("Valor de y: {}", y);
}

⚡ Nível 3: Integração

Problema 04.3 — Retorno Prévio Explícito com return e Tipo Never (!)

Contexto: Retorno Prévio Explícito com return e Tipo Never (!) no contexto de Funções, Expressões vs Declarações e Escopo Léxico.

Requisitos de Execução:

  1. Demonstrar função divergente com tipo de retorno ! (never) usando panic! para interrupção de processos críticos.

Resultado Esperado

Função divergente com tipo never tratada pelo compilador.

📤 Instruções de Entrega (Microsoft Teams)

  1. Salve o arquivo como: Atividade_04_3_SeuNome
  2. Envie na tarefa: Atividade Cap 04 - Funções, Expressões vs Declarações e Escopo Léxico
🔑 Gabarito de Código & Solução Comentada
// tipo_never.rs
fn abortar_missao(codigo: u32) -> ! {
    panic!("Aborto critico acionado com codigo: {}", codigo);
}

fn main() {
    let ok = true;
    if !ok {
        abortar_missao(999);
    }
    println!("Sistema operando normalmente.");
}

🏆 Nível 4: Desafio Corporativo

Problema 04.4 — Ponteiros de Função Primitivos (fn(T) -> R)

Contexto: Ponteiros de Função Primitivos (fn(T) -> R) no contexto de Funções, Expressões vs Declarações e Escopo Léxico.

Requisitos de Execução:

  1. Passar funções puras como argumentos para orquestrador utilizando o tipo primitivo fn.

Resultado Esperado

Ponteiro de função primitivo executado com 0 overhead de closures.

📤 Instruções de Entrega (Microsoft Teams)

  1. Salve o arquivo como: Atividade_04_4_SeuNome
  2. Envie na tarefa: Atividade Cap 04 - Funções, Expressões vs Declarações e Escopo Léxico
🔑 Gabarito de Código & Solução Comentada
// function_pointers.rs
fn operacao_dobro(x: i32) -> i32 { x * 2 }

fn executar(f: fn(i32) -> i32, val: i32) -> i32 {
    f(val)
}

fn main() {
    let res = executar(operacao_dobro, 21);
    println!("Resultado: {}", res);
}

⬅️ Voltar ao Índice de Exercícios 📚 Sumário de Tópicos