22 abril 2011

Operadores Lógicos e Relacionais - Programação #12

Os operadores lógicos e relacionais são elementos que é fundamental conhecer dada a sua importância na elaboração de um programa.  Em todos os programas são utilizadas expressões relacionais e lógicas para a tomada de decisões e consequente  desvio do fluxo do programa.  Recorde as estruturas de programação.

Trataremos então dos seguintes aspectos:
  • Operadores Relacionais
  • Operadores lógicos
  • Expressões lógicas e relacionais
Em termos de nomenclatura, considera-se que o valor lógico Verdadeiro é representado por 1 e o valor lógico Falso por 0.  Por outro lado, o símbolo utilizada para a representação dos operadores varia de linguagem para linguagem, pelo que se apresentam aqui uma representação normalizada a utilizar apenas na elaboração de algoritmos, sendo apresentada posteriormente toda a simbologia referente àslinguagens de programação em estudo.


Operadores Relacionais

Apresenta-se de seguida uma tabela com todos os operadores relacionais.

Operador
maior
menor
maior ou igual
menor ou igual
igual
diferente
Símbolo
>
<
>=
<=
=
¹
Exemplo
a > b
a < b
a >= b
a <= b
a = b
¹ b
Resultado
1 se a maior que b, senão 0
1 se a menor que b, senão 0
1 se a maior ou igual a b, senão 0
1 se a menor ou igual a b, senão 0
1 se igual a b, senão 0
1 se diferente de b, senão 0


de notar que, em termos de precedência e associabilidade,  estes operadores têm uma precedência menor do que os operadores aritméticos. 

Nota importante
Não é eficaz comparar valores do tipo real com os operadores de igualdade em virtude da representação em virgula flutuante ser inexacta em alguns números.  Os exemplos que se seguem, sendo algebricamente verdadeira, são avaliadas como falsas na maioria dos computadores.

(1.0 / 3.0) + (1.0 / 3.0) + (1.0 / 3.0) = 1

Esta expressão é avaliada como falsa devido ao facto de 1.0 / 3.0 ter como resultado um valor  que contém número infinito de casas decimais (3.3333333...)  O computador é apenas capaz de capaz de utilizar um número finito de casas decimais e que portanto é feito um arredondamento do valor de 1/3 em cada ocorrência.
Para evitar os erros causados pela representação inexacta de valores reais, deve-se evitar utilizar as comparações de igualdade com números reais.




Operadores Lógicos

Operador
And
Or
Negação
Símbolo
Ù
Ú
~
Exemplo
Ù b
Ú b
~a
Resultado
1 se a e b forem não nulos, senão 0
1 se a ou b forem não nulos, senão 0
1 se a for zero, senão 0


Reveja as tabelas de verdade destes operadores

Operador AND - verdadeiro apenas se A e B forem verdadeiras


Operador Or - Verdadeiro se pelo menos um dos elementos for verdadeiro


Operador Not (negação) - Inversão do valor



Expressões Lógicas e Relacionais

Na maioria das linguagens de programação, os operandos das operações lógicas e relacionais podem ser valores inteiros ou reais, ou mesmo caracters pois são tratados como inteiros.

Os operadores lógicos e relacionais são geralmente os únicos operadores cuja ordem de avaliação dos operandos está definida, avaliando a expressão da esquerda para a direita

As expressões lógicas e relacionais complexas são usualmente utilizadas nas estruturas de selecção e repetição.  Nas estruturas de selecção, a utilização do operador AND é equivalente à utilização de estruturas Se  (if)  embutidas como no exemplo que se segue:

A expressão:

Se ( ( a < b ) AND ( b < C ) )
     declaração

è equivalente a:

Se ( a < B )
     Se ( b < c )
            declaração

Isto é verdade se não for utilizada a declaração senão. No exemplo que se segue a interpretação é feita de forma diferente:

Se ( ( a < b ) AND ( b < C ) )
     declaração 1
Senão
     declaração 2

não é o mesmo que:

Se ( a < B )
     Se ( b < c )
            declaração 1
Senão
            declaração 2

Para obter uma declaração equivalente deveríamos ter:

Se ( a < B )
     Se ( b < c )
            declaração 1
     Senão
            declaração 2
Senão
            declaração 2






Classes de operadores e respectivas precedências

Classe do operador
unários
multiplicativo
aditivo
relacionais
igualdade
AND
OR
atribuição
Operador
-    +   !
 *    /    Resto()
+   -
<   <=  >   >=
=   ¹
&&
||
=
Associatividade
direita / esquerda
Esquerda / direita
esquerda  / direita
esquerda / direita
esquerda / direita
esquerda / direita
esquerda / direita
direita / esquerda
Precedência
maior

menor


0 comentários:

Postar um comentário

Cadastre-se

Receba atualizações por email .

Copyright © 2011 PortalTecch.net, Todos os direitos reservados.