Lições do módulo (1/2)
Condicionais e Loops
O fluxo de controle no Rust gira em torno de duas construções principais: expressões condicionais para decidir qual caminho de execução seguir e construções de loop para repetir instruções.
Condicionais: if como uma expressão
Em Rust, a instrução if é uma expressão, o que significa que retorna um valor. Podemos usar if para atribuir diretamente um valor a uma variável:
let condition = true;
let number = if condition { 5 } else { 6 }; // if/else as an expressionLoops e Iterações
Rust fornece três tipos de loops nativos: loop, while e for.
1. loop (Loop Infinito)
A palavra-chave loop cria um loop infinito que continua até que você diga explicitamente para parar de usar break:
let mut count = 0;
loop {
count += 1;
if count == 10 {
break; // Exit the loop
}
}Além disso, você pode retornar um valor de loop colocando-o logo após break:
let result = loop {
count += 1;
if count == 10 {
break count * 2; // Returns 20
}
};2. while (Loop Condicional)
Executa um bloco de código enquanto uma condição booleana permanecer verdadeira:
let mut number = 3;
while number != 0 {
println!("{}!", number);
number -= 1;
}3. for (Iteração sobre coleções e intervalos)
O loop for é a ferramenta mais comum e segura para iterar elementos em uma coleção ou intervalo de números:
// Iterates over numbers 1 through 3 (excluding 4)
for number in 1..4 {
println!("Valore: {}", number);
}
// Iterates including the right boundary using '='
for number in 1..=3 {
println!("Valore: {}", number); // Prints 1, 2 and 3
}Etiquetas de loop
Ao lidar com loops aninhados, as instruções break e continue se aplicam ao loop mais interno por padrão. Rust permite que você use um rótulo de loop (escrito como 'label_name:) para encerrar ou continuar explicitamente um loop externo:
let mut count = 0;
'outer: loop {
loop {
if count == 5 {
break 'outer; // Exits the outer loop directly
}
count += 1;
}
}Experimente você mesmo
Declare uma variável chamada número com um valor de 7. Em seguida, use uma expressão if/else para atribuir o valor 'maior' à variável mensagem se o número for maior que 5, ou 'menor' caso contrário. Finalmente, imprima a mensagem usando println!.
Mostrar dica
Escreva `let message = if number > 5 { 'greater' } else { 'smaller' };` e passe para `println!`.
Solução disponível após 3 tentativas
Escreva um loop for que imprima os números de 1 a 5 inclusive (ou seja, 1, 2, 3, 4, 5) usando println! em cada iteração.
Mostrar dica
Use a sintaxe de intervalo inclusivo `for i in 1..=5` e execute `println!('{}', i);` dentro do bloco.
Solução disponível após 3 tentativas
Escreva um loop que incremente um contador de variável mutável começando em 0. Quando o contador atingir 10, saia do loop retornando o contador multiplicado por 5 usando a instrução break para atribuir esse valor a um resultado de variável imutável. Finalmente, imprima o resultado.
Mostrar dica
Use `deixe resultado = loop { ... };`. Dentro do loop incremente `counter` e adicione a condição `if counter == 10 { break counter * 5; }`.
Solução disponível após 3 tentativas