Exercícios
Pratique o que aprendeu nos conteúdos e exemplos de código.
Como usar
Seção intitulada “Como usar”- Leia o enunciado do exercício
- Tente resolver por conta própria antes de buscar ajuda
- Revise as notas de Fundamentos se precisar relembrar algum conceito
- Rode
cargo fmtecargo clippyna sua solução antes de considerar o exercício concluído - Compare sua solução com a de outras pessoas da comunidade
Exercício 01 - Olá, Rust
Seção intitulada “Exercício 01 - Olá, Rust”Nível: iniciante
Objetivo: Criar um projeto com Cargo e executar o primeiro programa Rust.
Instrução:
- Crie um projeto com
cargo new ola-rust - Altere o
main.rspara imprimirOlá, Caramelo Tech! - Execute com
cargo rune depois gere o binário otimizado comcargo build --release
Critérios de sucesso:
- O projeto tem
Cargo.tomlesrc/main.rs -
cargo runimprime a mensagem corretamente - O binário em
target/release/imprime a mesma mensagem
Exercício 02 - Variáveis e Mutabilidade
Seção intitulada “Exercício 02 - Variáveis e Mutabilidade”Nível: iniciante
Objetivo: Entender variáveis imutáveis, mut e shadowing.
Instrução:
- Declare uma variável com seu nome (
&str) e outra com sua idade (u32) - Declare uma constante
ALTURA: f64com sua altura em metros - Declare um contador com
let mut, some 1 a ele e imprima o resultado - Use shadowing para converter a idade em texto:
let idade = idade.to_string(); - Imprima uma frase combinando nome, idade e altura
Saída esperada:
Meu nome é Ana, tenho 25 anos e meço 1.68m.Critérios de sucesso:
- Usa
let,let muteconstpelo menos uma vez cada - Usa shadowing pelo menos uma vez
- Formata a altura com duas casas decimais (
{:.2}) - O programa compila sem avisos
Exercício 03 - FizzBuzz
Seção intitulada “Exercício 03 - FizzBuzz”Nível: iniciante
Objetivo: Praticar laços e match.
Instrução:
Imprima os números de 1 a 100. Para múltiplos de 3, imprima Fizz no lugar do número; para múltiplos de 5, Buzz; para múltiplos de ambos, FizzBuzz.
Critérios de sucesso:
- Usa um laço
forcom range (1..=100) - Usa
matchsobre a tupla(n % 3, n % 5)em vez de váriosif - A saída está correta para 3, 5, 15 e 100
Exercício 04 - Divisão Segura
Seção intitulada “Exercício 04 - Divisão Segura”Nível: iniciante
Objetivo: Usar Option e Result para representar falhas.
Instrução:
Crie a função dividir(a: f64, b: f64) -> Result<f64, String> que retorna Err quando b for zero. No main, chame a função com valores válidos e inválidos e trate os dois casos com match.
Critérios de sucesso:
- A função retorna
Errcom uma mensagem clara quandob == 0.0 - O
maintrataOkeErrcommatchouif let - O programa não usa
unwrap()em valores que podem falhar
Exercício 05 - Contador de Palavras
Seção intitulada “Exercício 05 - Contador de Palavras”Nível: intermediário
Objetivo: Praticar String, &str, iteradores e HashMap.
Instrução:
Escreva a função contar_palavras(texto: &str) -> HashMap<String, usize> que conta quantas vezes cada palavra aparece (ignorando maiúsculas e minúsculas). Imprima as palavras em ordem alfabética com suas contagens.
Critérios de sucesso:
- Usa
split_whitespaceeto_lowercase - Usa a API
entrydoHashMap(*mapa.entry(palavra).or_insert(0) += 1) - Ordena as chaves antes de imprimir
- Tem ao menos um teste com
#[test]validando a contagem