Curso de PHP – Operadores Lógicos

0
354

Depois de alguns meses sem postar, estou aqui de volta abordando os operadores lógicos doPHP, para poder principalmente comparar informações nesta linguagem. Está curioso de como fazer isso?

Aqui estão os Operadores lógicos:
AND, && — se lê: “e”.
OR, || — se lê: “ou”.
! — não é.
XOR — se lê: “ou” exclusivo.

Vamos a explicação de cada um:
AND, && — Serve para juntar afirmações, para caso verdadeiras façam algo. Vejamos:

$a = 2;
$b = 5;
if($a == 2 && $b != 2){ echo "verdadeiro"; }

Vamos entender isso em lógica de programação:
Se $a for igual a 2 e $b for diferente de 2, escreva verdadeiro.

PS: Pode-se usar AND ou &&, mas eu tenho uma preferência que seja && por ser mais prático.

Podemos ver aqui o e, juntando as duas afirmações, assim caso as 2 sejam verdadeiras, a comparação será verdadeira, assim escrevendo “verdadeiro”, mas se uma delas for falsa, a comparação será também falsa, não escrevendo nada.

OR, || — Serve para dizer que caso uma ou mais afirmações forem verdadeiras façam algo. Vejamos:

$a = 2;
$b = 5;
if($a == 2 || $b != 2){ echo "verdadeiro"; }

Vamos entender isso em lógica de programação também:
Se $a for igual a 2 ou $b for diferente de 2, escreva verdadeiro.

PS: mesma coisa do anterior, pode-se usar OR, mas prefiro || pela praticidade.

Podemos ver que o ou fez uma grande diferença, já que na anterior estava condicionando aos dois serem verdadeiros, agora caso um deles for verdadeiros, será escrito verdadeiro, assim fazendo que todas as afirmações sejam falsas para a comparação ser falsa, não escrevendo nada.

! — Serve para inverter a afirmação. Vejamos:

$a = 2;
$b = 5;
if(!($a == 2) && !($b != 2)){ echo "verdadeiro"; }

Vamos entender isso em lógica de programação também:
Se $a não for igual a 2 e $b não for diferente de 2, escreva verdadeiro.
também podemos entender da seguinte forma:
Se $a for diferente de 2 e $b for igual a 2, escreva verdadeiro.

Podemos ver que o nosso ponto de exclamação (!) mudou o sentido da afirmação, fazendo que em cada afirmação mudasse (se fosse “igual a” foi transformado para “diferente de” e vice-versa), e fazendo que a comparação, que seria verdadeira, e agora é falsa, não escrevendo nada ao usuário.

Mas como você pode ver, utilizei parenteses, isso é para que a afirmação fosse invertida e não para que verificasse se a variável $a e a $b tivessem sido declaradas. Veja:

if(!$a && !$b){ echo "verdadeiro"; }

Vamos entender em lógica de programação:
Se $a não for declarado e $b não for declarado escreva verdadeiro.

Nesse caso, não estamos declarando nenhuma das variáveis, assim, tornando essa comparação verdadeira, escrevendo verdadeiro, mas caso ela fosse falsa, ou seja, uma dessas variáveis fossem declaradas, não seria escrito nada, já que não tem o comando else para fazer algo caso essa comparação seja falsa.

XOR — Nesse caso, ele afirma que a comparação será verdadeira apenas se uma das afirmações forem. Veja:

$a = 2;
$b = 5;
if($a == 2 XOR $b != 2){ echo "verdadeiro"; }

Vamos entender isso em lógica de programação também:
Se $a for igual a 2 ou $b for diferente de 2, escreva verdadeiro.

Nesse caso, o ou tem um sentido diferente que em OR ou em ||, ele informa que essa comparação será verdadeira apenas se uma das afirmações forem verdadeiras.

Aqui já dei uma explicada sobre alguns Operadores de Comparação, mas ainda não explicarei todos, apenas para deixar um gostinho da próxima aula para vocês, meus alunos(afinal estamos em um curso, não é verdade?).

Bom, chegamos a um dos momentos mais esperados dessa aula, quando você “bota a mão na massa”.

Bom, nessa aula vou propor o seguinte: Quero que leia um argumento que está sendo informado na url em a com o comando $_GET[“x”] (sendo x o nome do argumento contido na url) e escreva caso esse número é par e divisível por 3 “Comparação 1: Verdadeira.”, caso falso, escreva “Comparação 1: Falsa”, e faça mais uma comparação para caso um número informado na url em b seja igual a 5 ou a for diferente de 2(sendo esse ou utilizando XOR) escreva “Comparação 2: Verdadeira” e caso falsa escreva que a comparação seja falsa. Vamos lá?

Primeiramente vamos começar a escrever o código, escrevendo a abertura das tags do PHP:

<?php

Agora pegamos os dados informados na url em a e b e colocamos nas variáveis $a e $b, respectivamente:

<?php
$a = $_GET["a"];
$b = $_GET["b"];

Agora faremos a primeira comparação, comparando se $a é par e divisível por 3.

Vamos fazer primeiramente o módulo(que é o resto da divisão no PHP(PS: no PHP isso é módulo, na física por exemplo, módulo tem outro significado…)) de $a por 2 para caso for 0, significa que é par(já que todo número divisível por 2 que não sobra nada no resto da divisão é par), e o módulo de $a por 3, para caso for 0, significa que é divisível por 3, e colocamos em $m_a e em $m_b, respectivamente.

<?php
$a = $_GET["a"];
$b = $_GET["b"];
$m_a = $a % 2;
$m_b = $a % 3;

Agora faremos a primeira comparação, utilizando if, para comparar se $a for par e divisível por 3, assim afirmados que se $m_a for igual a 0 e $m_b for igual a 0, escreva “Comparação 1: Verdadeiro”.

<?php
$a = $_GET["a"];
$b = $_GET["b"];
$m_a = $a % 2;
$m_b = $a % 3;
if($m_a == 0 && $m_b == 0){ echo "Comparação 1: Verdadeiro."; }

Agora colocamos else para caso a comparação for falsa escrever “Comparação 1: Falsa”.

<?php
$a = $_GET["a"];
$b = $_GET["b"];
$m_a = $a % 2;
$m_b = $a % 3;
if($m_a == 0 && $m_b == 0){ echo "Comparação 1: Verdadeiro."; }else{ echo "Comparação 1: Falsa."; }

Vamos escrever uma quebra de linha para entender melhor o resultado, então mandamos o echo(que usamos em todos os posts do curso…) escrever “”.

<?php
$a = $_GET["a"];
$b = $_GET["b"];
$m_a = $a % 2;
$m_b = $a % 3;
if($m_a == 0 && $m_b == 0){ echo "Comparação 1: Verdadeiro."; }else{ echo "Comparação 1: Falsa."; }
echo "
";

Agora faremos a comparação 2, que pergunta se $b for igual a 5 ou(usando XOR) $a for diferente de 2, e se isso for verdadeiro, escrever “Comparação 2: Verdadeiro”.

<?php
$a = $_GET["a"];
$b = $_GET["b"];
$m_a = $a % 2;
$m_b = $a % 3;
if($m_a == 0 && $m_b == 0){ echo "Comparação 1: Verdadeiro."; }else{ echo "Comparação 1: Falsa."; }
echo "
";
if($b == 5 XOR $a != 2){ echo "Comparação 2: Verdadeiro."; }

Agora utilizaremos o “else” para caso a comparação seja falsa, escrever “Comparação 2: Falsa.”.

<?php
$a = $_GET["a"];
$b = $_GET["b"];
$m_a = $a % 2;
$m_b = $a % 3;
if($m_a == 0 && $m_b == 0){ echo "Comparação 1: Verdadeiro."; }else{ echo "Comparação 1: Falsa."; }
echo "
";
if($b == 5 XOR $a != 2){ echo "Comparação 2: Verdadeiro."; }else{ echo "Comparação 2: Falsa."; }

e assim fechamos a tag do php com ?>

<?php
$a = $_GET["a"];
$b = $_GET["b"];
$m_a = $a % 2;
$m_b = $a % 3;
if($m_a == 0 && $m_b == 0){ echo "Comparação 1: Verdadeiro."; }else{ echo "Comparação 1: Falsa."; }
echo "
";
if($b == 5 XOR $a != 2){ echo "Comparação 2: Verdadeiro."; }else{ echo "Comparação 2: Falsa."; }
?>

E salvamos como operadoreslogicos.php em c:/wamp/www/cursophp/. Agora vamos executar ele, com o Wamp Server ligado, acessando http://localhost/cursophp/operadoreslogicos.php e vamos ter o seguinte resultado:

Comparação 1: Verdadeiro.
Comparação 2: Verdadeiro.

Como não está sendo informado nenhum número, é considerado como 0, e assim, passa pela primeira comparação, já que $m_a e $m_b serão 0 e $a será diferente de 2, e $b não será igual a 5, assim fazendo as suas comparações verdadeiras.
PS: Pode ser que no Wamp server ocorra algum erro, por causa que $a e $b não estão declarados, mas podem ser resolvidos com o próximo link.
PS2: Pode ter alguns caracteres com problemas, como no resultado anterior, isso é culpa da codificação, que não foi declarada no arquivo em html, assim o navegador pode não interpretar corretamente, e ocorre isto em caracteres especiais.

Mas isso pode ser mudado acessando http://localhost/cursophp/operadoreslogicos.php?a=x&b=z (mudando x e z nessa url, onde estamos informando os números para a e b…)
Vamos declarar a com 3 e b com 6, resultando o seguinte:

Comparação 1: Falsa.
Comparação 2: Verdadeiro.

Como isso acontece?

Vamos declarar a com 3 e b com 6, como no último exemplo.

Bom, primeiramente é criada uma variável “a”, onde recebe o valor informado na url em “a”, assim é lido e colocado na variável a, como a informação “a” que está na url vale 3, ele pega e armazena.

a

3

Depois disso, acontece o mesmo em $b, só que com a informação “b” que está na url, que vale 6, novamente pega e armazena na variável.

a b

3 6

Agora ele faz o módulo de $a por 2, bom, 3 dividido por 2, da 1 e sobra 1, então o módulo é 1. ele pega e armazena em m_a.

a b m_a

3 6 1

Agora ele faz o módulo de $a por 3, 3 dividido por 3, da 1 e sobra 0, então o módulo é 0. ele pega e armazena em m_b.

a b m_a m_b

3 6 1 0

Agora ele compara, ele pega o valor de m_a e m_b e compara: m_a == 0? Não, falso. m_b == 0? Sim, verdadeiro. Ele quer que seja os dois verdadeiros, ou será falso. Como um dos dois é falso, a condição é falsa, assim passa direto para o else(senão), onde ele escreve “Condição 1: Falsa”.

Agora ele compara novamente, ele pega os valores em a e b e compara: b == 5? Não. a != 2? Sim. Como estamos utilizando o XOR, onde precisa que apenas uma das afirmações sejam verdadeiras para a comparação ser também, então a comparação é verdadeira, então ele executa o que está entre chaves({}) do if, ou seja, escrever “Condição 2: Verdadeira”.

Depois disso o apache para de executar o documento já que fechamos a tag.

Então, essa foi a a sexta aula do curso de PHP, então fiquem na espera da próxima!

RECEBA NOSSAS ATUALIZAÇÕES GRÁTIS
Enviamos nossos novos posts por e-mail para que você não perca nenhuma novidade!