Ferrugem - Tomada de Decisão
Estruturas de tomada de decisão requerem que o programador especifique uma ou mais condições a serem avaliadas ou testadas pelo programa, juntamente com uma instrução ou instruções a serem executadas se a condição for determinada como verdadeira e, opcionalmente, outras instruções a serem executadas se o condição é determinada como falsa.
Abaixo, é mostrada a forma geral de uma estrutura típica de tomada de decisão encontrada na maioria das linguagens de programação -
Sr. Não | Declaração e descrição |
---|---|
1 | if statement Uma instrução if consiste em uma expressão booleana seguida por uma ou mais instruções. |
2 | if...else statement Uma instrução if pode ser seguida por uma instrução else opcional , que é executada quando a expressão booleana é falsa. |
3 | else...if and nested ifstatement Você pode usar uma instrução if ou else if dentro de outra instrução if ou else if . |
4 | match statement Uma declaração de correspondência permite que uma variável seja testada em relação a uma lista de valores. |
Declaração If
A construção if… else avalia uma condição antes que um bloco de código seja executado.
Sintaxe
if boolean_expression {
// statement(s) will execute if the boolean expression is true
}
Se a expressão booleana for avaliada como verdadeira, o bloco de código dentro da instrução if será executado. Se a expressão booleana for avaliada como falsa, o primeiro conjunto de código após o final da instrução if (após a chave de fechamento) será executado.
fn main(){
let num:i32 = 5;
if num > 0 {
println!("number is positive") ;
}
}
O exemplo acima irá imprimir number is positive pois a condição especificada pelo bloco if é verdadeira.
declaração if else
A if pode ser seguido por um opcional elsequadra. O bloco else será executado se a expressão booleana testada pela instrução if for avaliada como falsa.
Sintaxe
if boolean_expression {
// statement(s) will execute if the boolean expression is true
} else {
// statement(s) will execute if the boolean expression is false
}
FlowChart
o ifbloco guarda a expressão condicional. O bloco associado à instrução if é executado se a expressão booleana for avaliada como verdadeira.
O bloco if pode ser seguido por uma instrução else opcional. O bloco de instruções associado ao bloco else é executado se a expressão for avaliada como falsa.
Ilustração - Simples se ... mais
fn main() {
let num = 12;
if num % 2==0 {
println!("Even");
} else {
println!("Odd");
}
}
O exemplo acima imprime se o valor em uma variável é par ou ímpar. O bloco if verifica a divisibilidade do valor por 2 para determinar o mesmo. Aqui está a saída do código acima -
Even
Aninhado se
o else…ifescada é útil para testar várias condições. A sintaxe é mostrada abaixo -
Sintaxe
if boolean_expression1 {
//statements if the expression1 evaluates to true
} else if boolean_expression2 {
//statements if the expression2 evaluates to true
} else {
//statements if both expression1 and expression2 result to false
}
Ao usar as instruções if ... else ... if e else, há alguns pontos a serem considerados.
- Um if pode ter zero ou um else e deve vir depois de qualquer else..if.
- Um if pode ter de zero a muitos else..if e eles devem vir antes do else.
- Depois que um else..if for bem-sucedido, nenhum dos outros else..if or else será testado.
Exemplo: senão ... se escada
fn main() {
let num = 2 ;
if num > 0 {
println!("{} is positive",num);
} else if num < 0 {
println!("{} is negative",num);
} else {
println!("{} is neither positive nor negative",num) ;
}
}
O snippet exibe se o valor é positivo, negativo ou zero.
Resultado
2 is positive
Declaração de correspondência
A instrução match verifica se um valor atual está correspondendo a uma lista de valores, isso é muito semelhante à instrução switch na linguagem C. Em primeiro lugar, observe que a expressão após a palavra-chave match não precisa ser colocada entre parênteses.
A sintaxe é mostrada abaixo.
let expressionResult = match variable_expression {
constant_expr1 => {
//statements;
},
constant_expr2 => {
//statements;
},
_ => {
//default
}
};
No exemplo abaixo, state_code corresponde a uma lista de valores MH, KL, KA, GA- se qualquer correspondência for encontrada, um valor de string é retornado ao estado variável . Se nenhuma correspondência for encontrada, o caso padrão _ corresponde e o valor Desconhecido é retornado.
fn main(){
let state_code = "MH";
let state = match state_code {
"MH" => {println!("Found match for MH"); "Maharashtra"},
"KL" => "Kerala",
"KA" => "Karnadaka",
"GA" => "Goa",
_ => "Unknown"
};
println!("State name is {}",state);
}
Resultado
Found match for MH
State name is Maharashtra