22 abril 2011

Operadores Aritméticos - Programação #11

Operadores Aritméticos

Os operadores aritméticos estão implementados na generalidade das linguagens de programa, ainda que possam ter algumas ligeiras variações em alguns casos.

Os operadores podem subdividir-se em:
  • Operadores unários - por envolverem apenas um operador
  • Operadores binários - por envolverem dois operadores
  • Operadores de atribuição - por permitirem a atribuição de um valor a uma variável
  • Operadores especiais - existentes em algumas linguagens como a C e C++

Operadores unários (de sinal)
Operador
menos
mais
Símbolo
-
*
Exemplo
- x
+ x
Operação
negação de x
valor do operando
.
O operador de sinal não deve ser confundido com o operador subtracção e soma, pois apesar de utilizarem o mesmo símbolo, são operadores diferentes.

Assim nos seguintes exemplo:
supondo que m = 5
então  -m será igual a -5.

supondo a expressão j = 3 - - x
esta será interpretada como sendo J = 3 - ( -x )

Operadores binários
Operador
multiplicação
divisão
soma
subtracção
Símbolo
*
/
+
-
Exemplo
x * y
x / y
x + y
x - y
Operação
multiplica x por y
divide x por y
soma x a y
de x subtrai y


Em relação aos operadores de atribuição, a generalidade das linguagens implementa o operador igual, sendo que a linguagem C e C++ implementam outros que veremos posteriormente aquando do estudo das linguagens.

Operador de atribuição
Operador
igual
Símbolo
=
Exemplo
x = y
Operação
atribui o valor de Y a x



Operador especial

Algumas linguagens dispõem ainda de um operador ou função que permite calcular o resto da divisão inteira de dois números, .que representaremos por agora por resto(x,y).

assim por exemplo o resto(9,5) é 4

Veremos posteriormente algumas aplicações deste operador.


Expressões aritméticas

Uma das capacidades mais importante do computador é a facilidade de manipulação de expressões matemáticas mais ou menos complexas, pelo que é de importância capital a compreensão da forma como estas são tratadas.

Um programa depois de escrito passa, como vimos,  por um processo de compilação antes da sua execução efectiva.  No processo de compilação são executadas, entre outras tarefas a interpretação das declarações do programa e o estabelecimento da sequência de operações a serem executadas a propósito de cada uma delas.
No caso das expressões aritméticas este processo é executado tendo em atenção duas propriedades fundamentais, a precedência e a associação.  Estas propriedades afectam a forma como os operadores são aos operadores.
  • precedência - estabelece que os operadores de maior precedência têm os seus operandos atribuídos antes dos de menor precedência, independentemente da ordem em que surjam na expressão.
Considere os seguintes exemplos:

2 + 3 * 4
3 * 4 + 2

Em ambos os casos a expressão é avaliada em 14.   Isto acontece porque primeiro é executada a multiplicação por ter maior precedência e só depois a soma.
  • associação - estabelece, no caso dos operadores terem a mesma precedência, a ordem pela qual os operandos serão agrupado, da esquerda para a direita ou da direita para a esquerda.  Esta propriedade é estabelecida para cada operador. 
Considere o seguinte exemplo:
a + b - c

Esta expressão será agrupada da esquerda para a direita, de acordo com as suas propriedades de associação, pelo que a ordem será primeiro a soma e só depois a subtracção.

São também utilizados os parêntesis curvos para a criação de expressões matemáticas, que impõem uma determinada ordem de agrupamento.

Considere os seguintes exemplos:

( 2 - 3 ) * 4
2 - ( 2 * 4)

No primeiro exemplo seria avaliado primeiro o parêntesis ( 2 - 3 ) e só depois seria efectuada a multiplicação.
No segundo exemplo os parêntesis seriam desnecessários já que a multiplicação tem precedência relativamente à subtracção.  No entanto, é uma boa prática que, mesmo que irrelevantes sejam utilizados os parêntesis mesmo nas expressões mais simples.

No caso de expressões com parêntesis encaixados, a ordem de agrupamento é do mais interior ao mais exterior, sendo aplicada a propriedade da associatividade correspondente aos operadores envolvidos.

Assim na seguinte expressão  1 + ( ( 3 + 1 ) / ( 8 - 4 ) - 5 )  a ordem de agrupamento será:

1 + ( ( 3 + 1 ) / ( 8 - 4 ) - 5 )
1 + ( 4 / ( 8 - 4 ) - 5 )
1 + (4 / - 5)
1 + ( 1 - 5 )
1 + - 4
- 3


Regras de Precedência e Associação

Classe do operador
unários
multiplicativo
aditivo
relacionais
igualdade
AND
OR
atribuição
Operadores da classe
-    +   !
 *    /    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.