PHP - Estrutura de Decisão


Após a introdução ao PHP onde foi ensinado como como se fazia a instalação do WampServer que irá fazer a interpretação do nosso código, hoje iremos iniciar a explicação do PHP por estruturas de decisão.


O que seria a estrutura de decisão? A estrutura decisão é uma estrutura que se faz uma pergunta e ela irá retornar um dos valores booleanos: true ou false (verdadeiro ou falso). E através do retorno de um desses valores a estrutura tomará uma decisão.

Exemplo:
Um avião é um meio de transporte? SE for verdadeiro, ele é um meio de transporte. SE NÃO, ele não é um meio de transporte.
Antes de entrar na estrutura de decisão, vamos falar dos operadores de comparação e lógicos.
Os operadores condicionais e lógicos são:
Operadores de Condicionais
Operador
Representação
Significado
Igual
==
Compara de duas variáveis ou valores são iguais.
Diferente
!=
Compara de duas variáveis ou valores são distintas.
Maior Que
>
Compara se a primeira variável ou valor é maior que a(o) segunda(o).
Menor Que
<
Compara se a primeira variável ou valor é menor que a(o) segunda(o).
Maior ou Igual
>=
Compara se a primeira variável ou valor é maior ou igual que a(o) segunda(o).
Menor ou Igual
<=
Compara se a primeira variavel ou valor é menor ou igual que a(o) segunda(o).
Negação
!
Nega um determinado valor. 

Operadores Lógicos
Operador
Representação
Utilização
E
&&
Utilizada onde duas ou mais comparações necessitam ser verdadeiras.
OU
||
Utilizada onde apenas uma das condições necessita ser verdadeira.

Para entendermos os operadores lógicos, primeiramente precisamos entender a forma como eles funcionam. E para isso irei utilizar para a explicação a tabela verdade para um melhor entendimento.

Vamos iniciar a tabela verdade pelo operador "E". A condição "E"  funciona apenas quando todos os valores são verdadeiros.
Tabela "E"
Valor 1
Valor 2
Resultado
VERDADEIRO
VERDADEIRO
VERDADEIRO
VERDADEIRO
FALSO
FALSO
FALSO
VERDADEIRO
FALSO
FALSO
FALSO
FALSO

Diferentemente da tabela "E" a tabela "OU" os resultados são verdadeiros quando apenas uma das condições assumem o valor verdadeiro.
Tabela "OU"
Valor 1
Valor 2
Resultado
VERDADEIRO
VERDADEIRO
VERDADEIRO
VERDADEIRO
FALSO
VERDADEIRO
FALSO
VERDADEIRO
VERDADEIRO
FALSO
FALSO
FALSO


Essa foi uma pequena introdução para entendermos como funciona as estruturas de decisões. A partir disso podemos começar a falar das estruturas em si, o PHP possui duas estruturas condicionais. São elas o IF e o SWITCH, cada uma possui a sua particularidade e sintaxeVamos iniciar falando do IF e sua sintaxe.

Em tradução direta o IF se traduz SE, então ele funciona da seguente forma:
Se(condição)faça
...

Ele possui também mais dois comandos que funciona caso a função IF não atenda a condição, ele é o ELSE  e o ELSE IF que em tradução direta se torna SE NÃO e SE NÃO SE. Então irei mostrar como fica a utilização do SE e o SE NÃO e depois o SE, SE NÃO e SE NÃO SE e logo em seguida a sintaxe dos mesmos em linguagem PHP. As estruturas ficam da seguinte forma: 
Se(condição)faça
... 
Se Não
... 

Se(condição)faça
... 
Se Não Se(condição)faça
... 
Se Não
... 

Já sua estrutura em PHP fica da seguinte forma:
if(codição){
...
}else if(condição){
...
}else{
...
}
Não necessariamente é preciso das chaves para apenas um comando, caso haja apenas uma linha de código dentro da condição. Irei da um exemplo para cada operador condicional citado a cima em um algoritmo que tenha que exibir uma mensagem. E cada algoritmo será escrito de duas formas tanto com chave quanto sem chave e os dois últimos algoritmos serão com os operadores lógicos.

Exemplo:
Operador Igual

if(15 == 20){
 echo"Números Iguais";
}else{
 echo"Números Diferentes";
}

if(15 == 20)
 echo"Números Iguais";
else
 echo"Números Diferentes";

Resultado: Números Diferentes
Esse algoritmo pode ser escrito tanto de uma forma quanto de outra por ter apenas uma informação dentro da condição.

Operador Diferente

if(15 != 20){
 echo"Números Diferentes";
}else{
 echo"Números Iguais";
}

if(15 != 20)
 echo"Números Diferentes";
else
 echo"Números Iguais";

Resultado: Números Diferentes

Maior Que
$var1 = 15;
$var2 = 20;

if($var1 > $var2){
 echo"var1 maior que var2";
}else{
 echo"var1 menor que var2";
 $var1 = 5;
}

if($var1 > $var2)
 echo"var1 maior que var2";
else{
 echo"var1 menor que var2";
 $var1 = 5;
}

Resultado: var1 menor que var2
Nesse caso em especifico o ELSE do segundo exemplo possui chave, mas ele possui porque ele tem dois comandos a ser executados após a condição dele ser atendida.

Menor Que
$var1 = 15;
$var2 = 20;

if($var1 < $var2){
 echo"var1 menor que var2";
}else{
 echo"var1 maior que var2";
}

if($var1 < $var2)
 echo"var1 menor que var2";
else
 echo"var1 maior que var2";

Resultado: var1 menor que var2

Maior Igual
$var1 = 20;
$var2 = 20;

if($var1 >= $var2){
 echo"$var1 maior ou igual $var2";
else
 echo"$var1 menor que $var2";
}

if($var1 >= $var2)
 echo"$var1 maior ou igual $var2";
else
 echo"$var1 menor que $var2";

Resultado: 20 maior ou igual 20
Nesse caso estou imprimindo o valor armazenado nas variáveis.

Menor Igual
$var1 = 19;
$var2 = 20;

if($var1 <= $var2){
 echo"$var1 menor ou igual $var2";
else
 echo"$var1 maior que $var2";
}

if($var1 <= $var2)
 echo"$var1 menor ou igual $var2";
else
 echo"$var1 maior que $var2";

Resultado: 19 menor ou igual 20

Negação
$var1 = 20;
$var2 = 20;

if(!($var1 == $var2)){
 echo"$var1 igual $var2";
else
 echo"$var1 diferente $var2";
}

if(!($var1 == $var2))
 echo"$var1 igual $var2";
else
 echo"$var1 diferente $var2";

Resultado: 20 diferente 20


Utilizando o ELSE IF

$var1 = 3;

if($var1==2){
 echo"1";
}else if($var1==3){
 echo"2";
}else if($var1==3){
 echo"3";
}else{
 echo"4";
}

Resultado: 3
O que acontece acontece aqui é que eu sair comparando a variável $var1 todos os números postos para comparação a fim de achar o número que fosse igual ao da minha variável, como eu não acho na primeira comparação, continuo verificando com as outras opções e é para isso que o ELSE IF serve, para adicionar outras possibilidades para a comparação.
Caso o valor da minha variável fosse maior que todos os números postos lá para a verificação, ele entraria no ELSE, pois ele serve ali como ultima opção caso não satisfaça nenhuma condição.

Utilizando agora os operadores lógicos:
Operador "E"

if(1==1 && 2==2){
 echo"Verdadeiro";
}else{
 echo"falso";
}

Resultado: Verdadeiro

if(1!=1 && 2==2){
 echo"Verdadeiro";
}else{
 echo"Falso";
}

Resultado: Falso
Na primeiro IF as duas operações são true quando 1 é igual a 1 e 2 igual a 2, isso resulta na impressão do Verdadeiro, sendo que o "E" ele só é VERDADEIRO quando todas as operações são verdadeiras.

Operador "OU"

if(1==1 || 2==2){
 echo"Verdadeiro";
}else{
 echo"falso";
}

Resultado: Verdadeiro

if(1!=1 || 2==2){
 echo"Verdadeiro";
}else{
 echo"Falso";
}

Resultado: Verdadeiro
Diferente do "E", se ele possui uma operação verdadeira o resultado da impressão vai ser Verdadeiro, mesmo se tivesse muitas operações que o resultado fosse false.

Operador "E" e "OU"

if((1==1 && 2==2) || 3==3){
 echo"Verdadeiro";
}else{
 echo"falso";
}

Resultado: Verdadeiro

if((1==1 && 2==3) || 3==3)){
 echo"Verdadeiro";
}else{
 echo"Falso";
}

Resultado: Verdadeiro

if((1==1 && 2==3) || 3==4)){
 echo"Verdadeiro";
}else{
 echo"Falso";
}

Resultado: Falso
No primeiro caso o resultado é verdadeiro porque as duas primeiras operações então ligadas pelo operador lógico "E" e o retorno delas duas que só serão true se todas as duas forem verdadeiras e esse retorno será comparado pelo operador lógico "OU" com a terceira operação, como a primeira já é verdadeira, não seria mais necessário a comparação porque para o operador "OU" basta apenas uma condição ser verdadeira para o retorno ser verdadeiro independentemente das outras operações. 
No segundo caso as duas primeira operação ligadas pelo "E" retorna false, já a terceira retorna verdadeiro, como a operação é com o "OU" é como dito anteriormente basta uma operação ser verdadeira para o resultado ser verdadeiro. 
Já no terceiro caso as duas primeiras ligadas pelo "E" retornam false e a terceira também retorna false como não há nenhuma verdadeira, a impressão na tela será Falso.


Agora iremos começar a falar do SWITCH, possui uma grande semelhança com o IF em relação ao casos, quando o IF possui mais de duas possibilidades sem ser uma generalizada utilizamos o comando ELSE IF, já o SWITCH possui a estrutura CASE que são para CASOS específicos. Vamos entender como funciona a estrutura do SWITCH e logo depois colocamos em linguagem PHP.
Como ele trabalha apenas com casos específicos, ele só ira trabalhar com igualdade onde o que você quer deverá ser igual a algum caso especificado em seu algoritmo. Por exemplo:
 PEGUE S VARIAVEL($var1) E COMPARE
     CASO FOR IGUAL A "1" FAÇA
          ...
          PARE
     CASO FOR IGUAL A "2" FAÇA
          ...
          PARE
     SE NÃO IR IGUAL A NENHUMA FAÇA
          ...
          PARE
Essa é a estrutura onde ele irá verificar todas as situações que ele poderá ir que será informada pelo desenvolvedor.

Agora vamos ver a estrutura em PHP e logo em seguida irei explicar a estrutura.
$var1 = 12;

switch($var1){
 case 3: acho"valor: 3";
       break;
 case 6: acho"valor: 6";
       break;
 case 12: acho"valor: 12";
       break;
 default: echo"Não identificado!";
}

Resultado: valor: 12
Nesse exemplo que dei ele vai pegar a variável $var1 que possui o valor 12 e vai comparar, CASO o valor seja 3, ele irá imprimir na tela: "valor: 3", CASO seja 6: "valor: 6", CASO seja 12: "valor: 12" e CASO ele não possua nenhum dos valores postos pelo desenvolvedor, ele vai entrar em uma exceção e imprime na tela: "Não identificado".
Porque se utiliza o BREAK? É utilizado para que ele interrompa a execução do SWITCH, caso não utilize o BREAK, após ele encontrar o valor desejado continuará percorrendo verificando todas as possibilidades, isso é ruim porque atrasa o tempo de execução e caso o SWITCH possua o DEFAULT além da execução do que é englobado pelo valor que deveria ser encontrado, ele também irá executar tudo que se encontra no DEFAULT.

E aqui finalizamos a parte de Estrutura de Decisão. Todos os códigos PHP postados aqui, vocês podem coloca-los no WampServer e está executando para ver como será o retorno dos resultados. Continuem ligados no TURIMLAB para mais posts sobre PHP e tudo sobre tecnologia.

Dicas e sugestões podem colocar nos comentários!

0 comentários:

Postar um comentário