🧩 Exercícios: Structs, Tuplas e Métodos com impl
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 09.1 — Declaração de Struct com Campos Nomeados e Instanciação
Contexto: Declaração de Struct com Campos Nomeados e Instanciação no contexto de Structs, Tuplas e Métodos com impl.
Requisitos de Execução:
- Criar struct
Usuariocom camposnome,emaileativo.
Resultado Esperado
Struct instanciada e acessada no escopo principal.
📤 Instruções de Entrega (Microsoft Teams)
- Salve o arquivo como:
Atividade_09_1_SeuNome - Envie na tarefa:
Atividade Cap 09 - Structs, Tuplas e Métodos com impl
🔑 Gabarito de Código & Solução Comentada
// structs.rs
struct Usuario {
nome: String,
email: String,
ativo: bool,
}
fn main() {
let u = Usuario {
nome: String::from("Carlos"),
email: String::from("carlos@empresa.com"),
ativo: true,
};
println!("Usuario: {} ({})", u.nome, u.email);
}
🔍 Nível 2: Prática
Problema 09.2 — Implementação de Métodos e Funções Associadas (impl e Construtores ::new)
Contexto: Implementação de Métodos e Funções Associadas (impl e Construtores ::new) no contexto de Structs, Tuplas e Métodos com impl.
Requisitos de Execução:
- Implementar método construtor
Retangulo::new(l, a)e método de instânciaarea(&self).
Resultado Esperado
Métodos associados e construtor idiomático invocados com sucesso.
📤 Instruções de Entrega (Microsoft Teams)
- Salve o arquivo como:
Atividade_09_2_SeuNome - Envie na tarefa:
Atividade Cap 09 - Structs, Tuplas e Métodos com impl
🔑 Gabarito de Código & Solução Comentada
// struct_methods.rs
struct Retangulo { largura: u32, altura: u32 }
impl Retangulo {
fn new(largura: u32, altura: u32) -> Self {
Self { largura, altura }
}
fn area(&self) -> u32 {
self.largura * self.altura
}
}
fn main() {
let ret = Retangulo::new(10, 4);
println!("Area: {} m2", ret.area());
}
⚡ Nível 3: Integração
Problema 09.3 — Tuplas Estruturadas (Tuple Structs) e Structs Unitárias
Contexto: Tuplas Estruturadas (Tuple Structs) e Structs Unitárias no contexto de Structs, Tuplas e Métodos com impl.
Requisitos de Execução:
- Criar tuple struct
Cor(u8, u8, u8)e struct unitáriaMarcadorAuditoria.
Resultado Esperado
Tipagem forte de tuplas estruturadas garantindo semântica de tipos.
📤 Instruções de Entrega (Microsoft Teams)
- Salve o arquivo como:
Atividade_09_3_SeuNome - Envie na tarefa:
Atividade Cap 09 - Structs, Tuplas e Métodos com impl
🔑 Gabarito de Código & Solução Comentada
// tuple_structs.rs
struct Cor(u8, u8, u8);
struct MarcadorAuditoria;
fn main() {
let preto = Cor(0, 0, 0);
println!("RGB: ({}, {}, {})", preto.0, preto.1, preto.2);
}
🏆 Nível 4: Desafio Corporativo
Problema 09.4 — Padrão Builder para Construção Fluente de Objetos Complexos
Contexto: Padrão Builder para Construção Fluente de Objetos Complexos no contexto de Structs, Tuplas e Métodos com impl.
Requisitos de Execução:
- Implementar
ServidorBuilderpermitindo encadeamento fluente de métodos.host().porta().build().
Resultado Esperado
Padrão Builder fluente construindo configuração de servidor com validação final.
📤 Instruções de Entrega (Microsoft Teams)
- Salve o arquivo como:
Atividade_09_4_SeuNome - Envie na tarefa:
Atividade Cap 09 - Structs, Tuplas e Métodos com impl
🔑 Gabarito de Código & Solução Comentada
// builder_pattern.rs
struct Servidor { host: String, porta: u16 }
struct ServidorBuilder { host: String, porta: u16 }
impl ServidorBuilder {
fn new() -> Self { Self { host: "127.0.0.1".into(), porta: 8080 } }
fn porta(mut self, p: u16) -> Self { self.porta = p; self }
fn build(self) -> Servidor { Servidor { host: self.host, porta: self.porta } }
}
fn main() {
let srv = ServidorBuilder::new().porta(9000).build();
println!("Servidor rodando em {}:{}", srv.host, srv.porta);
}
| ⬅️ Voltar ao Índice de Exercícios | 📚 Sumário de Tópicos |