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 = 5então -m será igual a -5.
supondo a expressão j = 3 - - xesta 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.
- A 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.
- A 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 / 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