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 a ¹ 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 a Ù b a Ú 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