Tal como se as declarações, que dão ao seu programa a capacidade de tomar decisões, pudessem ser usadas para infundir um pouco de inteligência em qualquer programa. De facto, uma declaração de mudança é essencialmente uma versão especializada de uma declaração de if que de outra forma teria uma quantidade excessiva de ELSE IF declarações de tipo.

Vamos ver porque são utilizadas.

Por vezes, ao infundir lógica nos seus programas, deparar-se-á com uma situação em que, dado o valor de um determinado dado, irá querer fazer algo diferente. Normalmente, isto poderia ser coberto com uma declaração de if, mas e se quiser responder por 5, 10 , mesmo 20 situações possíveis?

Utilizando uma declaração de if, o seu programa tornar-se-ia rapidamente uma confusão de sintaxe de declaração de if, e não seria muito legível ou claro o que se está a passar. Os programadores aperceberam-se disto e, assim, as declarações de troca nasceram!

Switch Statement Structure

Uma declaração de troca toma um único valor, depois compara-o com um monte de outros valores usando uma expressão booleana. Quando uma destas expressões booleanas é verdadeira, então uma peça específica de código será executada.

Esta estrutura permite mapear facilmente um valor para um pedaço de código que deve ser executado. Dê uma vista de olhos a uma simples declaração de mudança abaixo para ter uma ideia sobre a sintaxe em Ruby:

Copymy_grade = "A "case my_grade when "A" puts "You Pass" when "F" puts "You fail" else puts "Invalid grade "end

Como pode ver acima, começamos com um valor myGrade. Essencialmente queremos imprimir se o estudante passou ou reprovou dada a sua nota (A ou F).

Em vez de recorrer a uma declaração de se podemos empregar a mudança. Ao contrário das declarações que precisam de expressões booleanas dentro dos seus parênteses, com a declaração de mudança vamos apenas passar num valor. Neste caso, vamos passar em myGrade.

Agora que temos o nosso valor, queremos criar uma série de declarações de caso. Estas declarações de casos são essencialmente o lado certo de uma expressão booleana para a igualdade. Ruby irá comparar myGrade a cada um dos valores das afirmações do caso (‘A’ e ‘F’) para a igualdade. Se houver uma correspondência, então o código directamente abaixo da instrução do caso será executado.

Breaks

Uma coisa que é importante ter em mente com as instruções de troca é que, por defeito, Ruby tentará verificar todos eles para igualdade, mesmo que obtenha uma correspondência. Isto é diferente de uma estrutura ELSE IF onde uma vez que uma condição é verdadeira, deixa de verificar as que se encontram abaixo.

porque Ruby verificará automaticamente cada caso, não importa o quê, precisamos de uma forma de o evitar (a maior parte das vezes quer evitar isto). No caso de uma correspondência, quero que a declaração de mudança deixe de verificar os outros casos.

É aí que entra a palavra-chave break. A palavra-chave break diz a Ruby que terminámos a declaração de mudança, e que esta deve sair dela e seguir em frente.

Pessoalmente encontrei a minha quota-parte de erros em programas que escrevi por me ter esquecido de colocar as declarações de interrupção. Por isso, mantenha isto no fundo da sua mente.

Default

Se examinar a declaração de mudança acima, também notará a palavra-chave default. Esta palavra-chave age muito como um ELSE numa estrutura de declaração de if. Qualquer código abaixo da declaração padrão será executado se nenhum dos outros casos obtiver uma correspondência. Note-se também que não precisamos de uma declaração de quebra dentro da declaração padrão.

Geralmente, quando se tem uma situação em que se está a utilizar uma mudança, a declaração padrão apenas apanhará quaisquer situações que não se queira especificar numa declaração de caso.

No caso do programa acima está a imprimir Invalid Grade para qualquer nota que não seja um A ou um F.

A maior parte do tempo, quererá incluir uma declaração por defeito.

Ambrulhando-a

Na prática, a declaração de mudança é usada com muito menos frequência do que se as declarações forem feitas. A razão é que há muito menos situações em que uma declaração de mudança é apropriada do que uma declaração de if. Uma boa regra geral é que se for necessário verificar um valor em relação a um conjunto de outros valores para a igualdade, então poderá ser necessária uma mudança!

Deixe uma resposta

O seu endereço de email não será publicado. Campos obrigatórios marcados com *