🧩 Exercícios: Funções, Expressões vs Declarações e Escopo Léxico
Spec Sistemas Com Rust • Trilha Progressiva em 4 Níveis
🧭 Navegação Pedagógica
-
📖 Teoria do Capítulo 💻 Exemplos 📊 Slides 🧠 Quiz
🎯 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:
- 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)
- Salve o arquivo como:
Atividade_04_1_SeuNome - 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:
- 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)
- Salve o arquivo como:
Atividade_04_2_SeuNome - 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:
- Demonstrar função divergente com tipo de retorno
!(never) usandopanic!para interrupção de processos críticos.
Resultado Esperado
Função divergente com tipo never tratada pelo compilador.
📤 Instruções de Entrega (Microsoft Teams)
- Salve o arquivo como:
Atividade_04_3_SeuNome - 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:
- 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)
- Salve o arquivo como:
Atividade_04_4_SeuNome - 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 |