CAPÍTULO 4 - OPERADORES E EXPRESSÕES
4.1 - OPERADORES ARITMÉTICOS
Os operadores aritméticos nos permitem fazer as operações matemáticas básicas,
usadas no cálculo de expressões aritméticas. A notação usada para definir os operadores será
um pouco diferente da notação utilizada na matemática para evitar problemas futuros de
ambigüidades. Para exemplificar este tipo de problema, analise a seguinte expressão:
lxb
Matematicamente, poderíamos supor que está se querendo calcular o produto do conteúdo da
variável l com o conteúdo da variável b. Mas computacionalmente, poderíamos interpretar
como sendo uma referência ao identificador lxb. Para evitar esta ambigüidade, utilizaremos
uma simbologia um pouco diferente para representar os operadores aritméticos.
Operador
Significado
+
/
*
**
adição
subtração
divisão real
multiplicação
exponenciação
A seguir exemplificamos a representação de algumas expressões matemáticas.
Expressão matemática
Expressão computacional
2.a+b
a . x2
a
+b
2
2*a+b
a * x **2
a/2+b
Agora, se quisermos representar a expressão
a
, teremos que fazer uso de
2+b
parênteses, ficando da seguinte forma: a / (2 + b).
Isto é devido ao fato dos operadores aritméticos terem prioridades diferentes nos
cálculos de expressões. Note 2 + 3 x 4, pode fornecer dois resultados 2 + 12 = 14 (se
considerarmos a prioridade da adição sobre a multiplicação, logo o segundo resultado está
errado). Assim, se tivermos uma expressão com vários operadores aritméticos, a primeira
parcela a ser resolvida deve ser a do operador de maior prioridade, como mostra a tabela a
seguir:
OPERADORES
ORDEM DE PRIORIDADE
**
*e/
+e-
primeira parcela a ser resolvida
segunda parcela a ser resolvida
terceira parcela a ser resolvida
CAPÍTULO 4 - OPERADORES E EXPRESSÕES
46
Isto quer dizer que, numa expressão em que haja exponenciação, divisão e adição,
devemos calcular primeiro a parcela da exponenciação, depois a da divisão e finalmente a
adição.
b / 2 + p ** 4
R2
Rl
R = resultado da parcela
R3
l, 2, 3 = seqüência de cálculo
R representa o resultado produzido por cada operador, os valores de índices (1, 2, 3, ...)
indicam as prioridades das operações.
Quando houver um empate de prioridade entre duas ou mais parcelas, a prioridade
passa a ser a da parcela mais á esquerda da expressão, cujo operador está em empate de
prioridade.
a+b-c
R1
R2
Somente o uso de parênteses pode quebrar esta ordem de prioridade. Se numa mesma
expressão existir parênteses aninhados (um dentro do outro), a prioridade será do parênteses
mais interno.
a / (a + b) - (2 * (b + c))
R2
R1
R4
R3
R5
4.2 - OPERADORES RELACIONAIS
Os operadores relacionais são utilizados para a comparação entre dois objetos do
mesmo tipo.
O resultado de uma operação relacional será sempre um valor do tipo lógico (falso ou
verdadeiro).
Os operadores relacionais são os seguintes:
CAPÍTULO 4 - OPERADORES E EXPRESSÕES
47
Operador
Significado
Exemplo de uso
>
<
<>
=
<=
>=
maior que
menor que
diferente de
igual a
menor ou igual a
maior ou igual a
A > B, 4 > 3
2 * A < B ** 2
A + B <> C
A=0
B * A <= 0
'a' >= 'h'
Os operadores relacionais são binários, isto é, eles precisam, sempre ter um operando
a sua esquerda e outra a sua direita. O valor da expressão relacional depende da avaliação dos
valores dos operandos e da aplicação do operador. Os únicos resultados possíveis são os
pertencentes ao conjunto lógico ([falso, verdadeiro], [não, sim]).
Para a correta avaliação da expressão relacional devemos, primeiro avaliar o lado
esquerdo da expressão, após o que avaliaremos o lado direito e em seguida aplicamos o
operador sobre o resultado obtido. Assim, se tivermos a seguinte expressão:
A+B>D-B
a prioridade da expressão será:
A+B>D-B
Rl
R2
R3
O resultado R3 representa o valor da terceira parcela da expressão, o qual deverá ser
do tipo lógico, enquanto Rl e R2, deverão ser do tipo numérico (devido a aplicação de
operadores aritméticos).
Quanto à prioridade dos operadores relacionais, padronizamos que os operadores
aritméticos têm maior prioridade, e que não existe prioridade entre os operadores relacionais.
Anteriormente definimos que os operadores relacionais são utilizados para relacionar,
sempre, dois objetos do mesmo tipo, assim, não é possível construirmos relações do tipo:
-3 > X <= 2
Pois nela pretendemos relacionar o objeto com os valores -3 e 2, ou seja, estamos tentando
relacionar três valores em uma única expressão relacional. Matematicamente isto é possível,
pois existe uma semântica definida para esta expressão (queremos um valor de X que seja
maior que -3 e que seja menor ou igual a 2). Note que, existe uma operação (implícita) de
conjunto entre as duas relações, realizada pelo operador lógico E. Estas expressões que
envolvem mais de uma relação são chamadas de expressões lógicas e serão definidas na
seção 4.3.
CAPÍTULO 4 - OPERADORES E EXPRESSÕES
48
Quando avaliamos a expressão relacional:
A>B
Estamos perguntando: o valor de A é maior que o valor de B?
Assim, se o valor de A for maior que a de B, então o resultado produzido pela expressão é
verdadeiro, caso contrário (se o valor de B for maior ou igual ao valor de A) o resultado
produzido será falso.
Quando a relação for entre objetos numéricos, o resultado da comparação será feito
considerando-se a ordem de grandeza que rege estes objetos:
-1 > -2, 3.0001 > 3, 4 >= 4.
Quando a relação for aplicada sobre objetos do conjunto dos caracteres, a ordem de grandeza
será dada pela ordem lexicográfica (ordem alfabética) dos caracteres. Assim,
‘A’ < ‘B’, ‘C’ < ‘D’, ‘E’ < ‘F’, ....
4.3 - OPERADORES LÓGICOS
Os operadores lógicos são utilizados para fazer a conjunção, ou a disjunção, ou a
negação de valores lógicos. Como o próprio nome diz, os operadores lógicos devem utilizar
como operandos expressões ou variáveis que produzam resultados lógicos, as expressões que
se utilizam destes operadores são chamadas de expressões lógicas.
Dentro de um algoritmo os operadores lógicos são largamente empregados nas
tomadas de decisão e nos processos de repetições, que envolvam mais de um critério de
seleção ou de repetição para ser satisfeito o aspecto lógico da solução do problema.
O resultado produzido por uma expressão lógica será sempre do tipo lógico.
Os operadores lógicos são os seguintes:
E - usado na conjunção de proposições
OU - usado na disjunção de proposições
NÃO - usado na negação de proposições
Uma proposição é qualquer tipo de elemento que possa produzir um resultado lógico,
mas no nosso caso, ela poderá ser uma variável lógica, e/ou uma expressão relacional e/ou
uma outra expressão lógica.
Os operadores E e OU são operadores binários, isto é, eles necessitam ter operandos a
sua esquerda e a sua direita:
AEB
A OU B
CAPÍTULO 4 - OPERADORES E EXPRESSÕES
49
O operador E faz a conjunção entre as proposições A e B, isto é, A e B devem
produzir resultados verdadeiros, simultaneamente, para que a expressão A e B seja
verdadeira, qualquer combinação entre A e B, fará com que a expressão produza o valor
falso.
Assim, poderíamos ter as seguintes combinações de valores entre A e B utilizando o
operador E:
possíveis valores de A
possíveis valores de B Valores prod. A E B
falso
falso
verdadeiro
verdadeiro
falso
verdadeiro
falso
verdadeiro
falso
falso
falso
verdadeiro
Já o operador OU faz a disjunção entre as proposições, isto é, ele faz uma escolha
alternativa entre as proposições A e B, e esta escolha, será sempre que possível pelo valor
verdadeiro. Para que o resultado de uma operação lógica que utilize este operador seja
verdadeiro, basta que apenas uma das duas proposições (A ou B) produza o valor verdadeiro.
Para o operador OU teríamos a seguinte tabela:
possíveis valores de A
possíveis valores de B
Valores prod. A OU B
falso
falso
verdadeiro
verdadeiro
falso
verdadeiro
falso
verdadeiro
falso
verdadeiro
verdadeiro
verdadeiro
O operador lógico NÃO é um operador unário, isto é, ele necessita de um operando à
sua direita:
NÃO A
NÃO B
E o mesmo é utilizado na negação da proposição. Se a preposição é verdadeira, o
operador produz o resultado falso, e se a preposição é falsa, ele produz resultado verdadeiro.
possíveis valores de A
valores produzidos por NÃO A
falso
verdadeiro
verdadeiro
falso
Agora, nós temos como representar expressões do tipo:
y <= x < z
Na seguinte forma:
(x >= y) E (x < z)
CAPÍTULO 4 - OPERADORES E EXPRESSÕES
50
Ou seja, para esta expressão produzir o valor verdadeiro, o valor de x deve ser maior ou
igual ao valor de y e ao mesmo tempo ter valor menor que o valor de z.
Entre os operadores lógicos existe uma ordem de prioridade de cálculo em uma
expressão:
Operadores
Ordem de prioridade
NÃO
E
OU
lª.
2ª.
3ª.
Esta ordem de prioridade só pode ser quebrada com o uso de parênteses.
Com relação aos outros tipos de operadores, a ordem de prioridade ficará da seguinte
forma:
Operadores
Ordem de prioridade
NÃO
**
*, /, E
+, -, OU
<, >, =, ...
1ª.
2ª.
3ª.
4ª.
5ª.
Assim, a prioridade de cálculo da expressão:
NÃO ((A > B) OU (A + B < C) E (C < D)) seria:
NÃO ( ( A > B ) OU ( A + B < C ) E ( C < D ) )
R1
R2
R4
R3
R5
R6
R7
Note que, apesar do operador NÃO ter a maior prioridade de cálculo, o mesmo foi
aplicado por último devido ao uso de parênteses.
Os operadores relacionais e lógicos serão largamente empregados nos capítulos 6 e
posteriores.
Download

CAPÍTULO 4 - OPERADORES E EXPRESSÕES 4.1