Menu
Coddy logo textTech

Correspondência de Intervalos

Parte da seção Logic & Flow do Journey de Rust da Coddy — lição 3 de 66.

Quando você precisa verificar se um valor está dentro de um determinado intervalo de números, escrever braços separados para cada valor individual seria tedioso. A expressão match do Rust suporta padrões de intervalo que permitem que você faça a correspondência com um intervalo contínuo de valores usando a sintaxe start..=end.

O operador ..= cria um intervalo inclusivo, o que significa que tanto o valor inicial quanto o final estão incluídos na correspondência. Veja como você pode usar intervalos em braços de match:

let temp = 20;

match temp {
    30..=50 => println!("Hot"),
    10..=29 => println!("Warm"),
    _ => println!("Cold"),
}

Neste exemplo, uma temperatura de 20 corresponderia ao intervalo 10..=29 e imprimiria "Warm". O intervalo 30..=50 inclui tanto 30 quanto 50, portanto, temperaturas de exatamente 30 ou 50 resultariam em "Hot".

challenge icon

Desafio

Fácil

Você receberá uma idade como entrada. Leia a entrada, converta-a para um número inteiro e use uma expressão match com padrões de intervalo (range patterns) para imprimir a categoria de idade apropriada.

Requisitos:

  • Se a idade for 0..=12, imprima "Child"
  • Se a idade for 13..=19, imprima "Teenager"
  • Se a idade for 20..=64, imprima "Adult"
  • Se a idade for 65..=120, imprima "Senior"
  • Para qualquer outra idade, imprima "Invalid age"

Entrada: Um único número inteiro representando a idade

Saída: Imprima a categoria de idade: "Child", "Teenager", "Adult", "Senior", ou "Invalid age"

Folha de consulta

Padrões de intervalo em expressões match permitem que você faça a correspondência com um intervalo contínuo de valores usando a sintaxe start..=end, onde ..= cria um intervalo inclusivo (tanto os valores de início quanto os de fim são incluídos).

let score = 85;

match score {
    90..=100 => println!("Grade: A"),
    80..=89 => println!("Grade: B"),
    70..=79 => println!("Grade: C"),
    60..=69 => println!("Grade: D"),
    _ => println!("Grade: F"),
}

Neste exemplo, uma pontuação de 85 corresponde ao intervalo 80..=89 e imprime "Grade: B". O intervalo 90..=100 inclui tanto 90 quanto 100.

Experimente você mesmo

use std::io;

fn main() {
    // Ler a entrada
    let mut input = String::new();
    io::stdin().read_line(&mut input).expect("Failed to read line");
    let age: i32 = input.trim().parse().expect("Please enter a valid number");
    
    // TODO: Escreva seu código abaixo usando uma expressão match com padrões de intervalo
    
    // Imprimir o resultado
}
quiz iconTeste seus conhecimentos

Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.

Todas as lições de Logic & Flow