Utilizando switch no PHP Aula 7 com exercicios

Propaganda
Tec. Prog. Internet II
ADVANCEPG
Prof. Andrea Garcia
O switch no PHP
O switch funciona como uma série de if juntos, mais sobre as estruturas de controle if, else e
elseif podem ser encontradas no artigo anterior, testando valores para uma variável ou
expressão. No entanto o switch trabalha basicamente com o operador de igualdade. Então
em casos que devemos testar se nossa variável, ou expressão, é igual a uma série de valores,
o switch é uma boa saída. Vamos agora ver um problema para entendermos melhor o switch.
Problema
Em um programa de televisão o expectador deve escolher números de 1 a 5 para um sorteio
de prêmios, em que cada número representa um prêmio. Então faremos:
1. Ler a entrada, o número que o expectador escolheu
2. De acordo com o número que o expectador escolheu retornar um prêmio
3. Se escolher um número que não seja de 1 a 5 retornar uma mensagem de erro.
O diagrama de blocos
Observe como seria a representação do nosso problema no diagrama de blocos.
Tec. Prog. Internet II
ADVANCEPG
Prof. Andrea Garcia
O símbolo de início e entrada de dados não são novidades afinal foram abordados no
artigo sobre o algoritmo e diagrama de blocos no PHP, no entanto o símbolo seguinte
nos diz que iremos comparar o valor contido nele com os símbolos de decisões
seguintes. E como já foi falado no artigo anterior utilizamos as setas para indicar a
direção do processamento. Como você pode observar no diagrama será testado cada
um dos valores se não for verdadeiro o próximo será testado até o último, chegando
no ultimo se nem o último for verdadeiro executamos o default, equivalente a um else.
No PHP
O nosso problema poderia ser resolvido apenas utilizando as estruturas de controle if,
else e elseif que aprendemos no artigo anterior. Antes de ver o código abaixo tente
resolver o nosso problema apenas com as estruturas de controle que aprendemos até
este ponto. Conseguiu? Veja um exemplo de como poderia ser resolvido utilizando
apenas if, else e elseif:
Não foi muito difícil de resolver né? No entanto observe o código comparamos sempre
a variável $numero a um valor de 1 a 5 e retornávamos uma $mensagem, e se não fosse
de 1 a 5 retornaríamos que ele não ganhou nada. Se estamos sempre comparando
uma variável, ou expressão se são iguais a uma série de valores talvez seja à hora de
trocarmos de estrutura de controle.
Ao utilizarmos o switch informamos a variável ou expressão que será testada em cada
uma das cláusulas (case) até que seja encontrada uma cláusula em que seja
verdadeira. Quando isto ocorre às instruções dentro do bloco de código da estrutura
case é executado até encontrar a instrução break, falaremos mais sobre break quando
chegarmos aos loops no PHP, se nenhuma cláusula for verdadeira a
instrução default será executada.
Tec. Prog. Internet II
ADVANCEPG
Prof. Andrea Garcia
Voltaremos a falar sobre a instrução break posteriormente, no entanto até este
momento você só deve ter em mente que se ela não for inserida seria como se não
fechássemos a instrução case. Observe o exemplo abaixo mesmo passando um valor
e ele for verdadeiro todas as expressões abaixo do valor escolhido são executadas e
como atribuímos um valor a variável o que prevalece é da ultima, odefault, por este
motivo devemos sempre utilizar a instrução break.
Agora que sabemos o porquê do break, podemos o aproveitar de uma maneira, por
exemplo, se em nosso problema caso a pessoa escolhesse 2 ou 3 o prêmio seria o
Tec. Prog. Internet II
ADVANCEPG
Prof. Andrea Garcia
mesmo. Poderíamos apenas mudar o valor da variável mensagem para eles ficarem
iguais, no entanto estaríamos nos repetindo o que não é legal, pois sempre que
tivéssemos que alterar em um teríamos que lembrar de alterar no outro por isso. O
melhor mesmo é fazer da seguinte forma:
Como o valor que seria mantido era o da cláusula 3 apenas retiramos as instruções da
2 e não colocamos break na cláusula 2 sendo assim ela seria a mesma que a 3 esta
sim tendo a instrução break como as demais.
Em relação a estrutura de controle switch:










A variável ou expressão a ser avaliada é declarada no inicio do switch
Expressões são realizadas por operadores lógicos e operadores de comparação
O bloco de código referente a estrutura de controle deve ser delimitado por
chaves {}
Endente o código referente ao bloco em 4 espaços por questões de legibilidade, a
como configurar o seu editor de texto para transformar Tabs em espaços
Cada cláusula (case) possui um valor a ser comparado e logo após o valor são
adicionado 2 pontos (:) dando inicio a clausula
Após os 2 pontos o bloco de código que devera ser executado para aquela cláusula
Finalizamos a cláusula com o break
Caso tenhamos 2 ou mais valores que executarão o mesmo bloco de código não
definimos o break apenas no ultimo em que for inserido o bloco de código, ver o
exemplo anterior
Após todas as cláusulas podemos adicionar uma cláusula default que será
executada caso todas as outras não tenham sido verdadeiras
A cláusula default não necessita de break, afinal ela é inserida após todas as
outras
Tec. Prog. Internet II
ADVANCEPG
Prof. Andrea Garcia
Exercício
1. O cardápio de uma casa de lanches é dado pela tabela abaixo:
Código
100
101
102
103
104
105
Produto
Cachorro quente
Bauru Simples
Bauru com ovo
Hamburguer
Cheeseburguer
Refrigerante
Preço Unitário (R$)
R$ 1,70
R$ 2,30
R$ 2,60
R$ 2,40
R$ 2,50
R$ 1,00
Escreva um programa que leia o código do item adquirido pelo consumidor e a quantidade,
calculando e mostrando o valor a pagar. Não será necessário exibir o produto e o valor,
somente o valor final.
2. Um determinado clube de futebol pretende classificar seus atletas em categorias e para isto
ele contratou um programador para criar um programa que executasse esta tarefa. Para isso o
clube criou uma tabela que continha a faixa etária do atleta e sua categoria. A tabela está
demonstrada abaixo:
IDADE CATEGORIA
De 05 a 10 Infantil
De 11 a 15 Juvenil
De 16 a 20 Junior
De 21 a 25 Profissional
Construa um programa que solicite o nome e a idade de um atleta e imprima a sua categoria.
3. Leia o código de um determinado produto e mostre sua classificação. Utilize a
seguinte tabela como referência:
Código
1
2,3 ou 4
5 ou 6
7
8 até 15
Qualquer outro código
Classificação
Alimento não-perecível
Alimento perecível
Vestuário
Higiene Pessoal
Limpeza e Utensílios Domésticos
Código inválido
Download