operadores logicos

07-10-2010 17:24

operadores logicos 

Os operadores lógicos são utilizados para unir um ou mais resultados lógicos, ou transformar um resultado em outro. Existem os operadores binários, que necessitam de dois ou mais testes lógicos, e o operador unário, que necessita de pelo menos um teste.

! - not

O operador not (!) é um operador unário, que só precisa de um teste lógico. Sua função é inverter o valor do teste lógico, ou seja, se um teste lógico retornar true, o operador not transforma-o em false, e se um teste lógico retornar false, o operador not transforma-o em true. Veja:

<?php

$nota = 10;

if ($nota >= 8) {

    echo 'Muito boa';

} else {

    echo 'Precisa melhorar';

}

?>


No código acima, a variável $nota é maior que 8, portanto o teste lógico retorna o valor true, e será impresso a frase "Nota Boa!".

Para usar o operador not (!), invertendo o resultado do teste, é só escrevê-lo antes do teste:

<?php

$nota = 10;

if (!$nota >= 8) {

    echo 'Muito boa';

} else {

    echo 'Precisa melhorar';

}

?>


Veja que a única alteração foi o ponto de exclamação dentro do if e antes do teste, e como resultado obteremos a frase "Precisa Melhorar!". O teste e os valores não modificaram. O teste ainda continua retornando true, porém, o operador not antes do teste, inverte esse valor para false, o que faz que os comandos do else sejam executados.

|| - or

O operador OR (||) é um operador binário, que necessita de dois testes lógicos. Esse operador retorna true se pelo menos um dos testes retornar true. E só retorna false se os dois testes juntos retornarem falso. Veja:

<?php

$nota1 = 10;

$nota2 = 10;

if ($nota1 >= 8 || $nota2 >= 8) {

    echo 'Passou de ano';

} else {

    echo 'Precisa melhorar';

}

?>


No código acima, misturamos dois testes em um mesmo if. Para isso, utilizamos o operador ||. Nesse caso, o resultado vai ser "Passou de ano". Pois, o primeiro teste retorna true. Como já dito, o operador or retorna true se pelo menos um dos valores retornar true, sendo o primeiro teste verdadeiro, não há necessidade de efetuar os demais testes. Se você alterar a $nota1 para 5, o primeiro teste do if será falso, então o operador or vai realizar o segundo teste, que retorna true, portanto, o or também retorna true. Se você alterar o valor da $nota1 para 5 e o valor da $nota2 para 4, o primeiro teste retornará false, então o or executará o segundo teste que também retornará false, e então ele retorna false para o if, o que resulta na execução do else com a frase "Precisa melhorar".

Obs.: O sinal de OR é o símbolo pipe (|) escrito duas vezes.

&& - and

O operador AND (&&) é um operador binário que necessita de dois testes lógicos. Esse operador só retorna true se os dois testes retornarem true. Se um dos testes realizados retornarem false, o operaor AND retorna false. Veja:

<?php

$nota1 = 10;

$nota2 = 10;

if ($nota1 >= 8 && $nota2 >= 8) {

    echo 'Passou de ano';

} else {

    echo 'Precisa melhorar';

}

?>


No código acima será impresso a frase "Passou de ano", pois, os dois testes retornam true. Se você alterar o valor de $nota1 para 7, o primeiro teste retornará false e o operador and retornará false também, fazendo o PHP executar o else, imprimindo a frase "Precisa melhorar". O mesmo acontece se você alterar o valor de $nota2 para 6.

Na próxima aula darei continuidade na explicação dos operadores lógicos.

Na aula de Operadores lógicos - Parte 1 foram apresentados os operadores mais utilizados nas operações lógicas.

Nesta aula o assunto continua, apresentando o operador xor e sua tabela verdade, o uso dos parênteses e a precedência de operadores, e para finalizar o uso dos operadores and e or ao invés de && e ||.

Xor

O operadore lógico xor é um operador binário que retorna true se um dos testes realizados retornarem true e o outro teste obrigatoriamente retornar false, não importando a ordem. Se os dois testes retornarem false, o operador retornará false. Se os dois testes retornarem true, o operador também retorna false. Esse operador também é conhecido como "or exclusivo". Veja na prática:

<?php

$carro = 'sim';

$casa = 'sim';

if ($carro == 'sim' xor $casa == 'sim') {

    echo 'Você ganhou o prêmio';

} else {

    echo 'Você não ganhou o prêmio';

}

?>


No código acima existe dois testes e uma ligação pelo operador xor. Imagine a cena em que você foi sorteado e você tem que escolher ou uma casa ou um carro. No código acima você não iria ganhar nenhum prêmio, pois, o primeiro teste é verdadeiro, e o segundo também, porém, o xor só retorna verdadeiro se apenas um deles for verdadeiro. Para você ganhar a casa o primeiro teste teria que ser verdadeiro e o segundo falso. Para você ganhar o carro o primeiro teste teria que ser falso e o segundo verdadeiro. E se os dois testes dorem falsos você também não leva nenhum prêmio para casa.

Parênteses

Os parênteses, assim como em uma expressão aritmética, altera a ordem que os testes são realizados. A precendência normal de execução dos testes são:

1.     ! - not

2.     && - and

3.     || - or

4.     xor - xor



Essa listagem reflete a ordem de execução de testes. Primeiro o not, depois o and, depois o or e por último o xor. Porém, se existir um parênteses no teste, e dentro dele existir um or, esse or será executado antes de qualquer outro teste.

and e or

Novamente and e or? Não. No post Operadores lógicos - Parte 1, os operadores utilizadas na relação and e or na verdade eram os símbolos && e || respectivamente. O funcionamento daqueles operadores e esses são realmente iguais, a única diferença é a precedência. Esses são executados após os outros, ou seja, tem menor precedência. Então a orderm de precedência é alterada para:

1.     ! - not

2.     && - and

3.     || - or

4.     and - and

5.     xor - xor

6.     or - or



Esses são os operadores lógicos que são utilizados principalmente nos testes lógicos. É muito importante memorizar a precedência dos operadores, pois, alguns erros de lógicas podem resultar em execuções inesperadas.

© 2010 Todos os direitos reservados.

Crie o seu site grátisWebnode