User Tools

Site Tools


expressoes_aritmeticas

São expressões aritméticas:

  • Constantes;
  • Variáveis dos tipos ordinal e real;
  • Funções cujo tipo de retorno sejam ordinais ou reais.

Se E_1 e E_2 são duas expressões aritiméticas, então as seguintes também são:

  • E_1 + E_2
  • E_1 - E_2
  • E_1 * E_2
  • E_1 / E_2
  • E_1 div E_2
  • E_1 mod E_2
  • (E_1)

Somente são expressões aritméticas as que podem ser construídas com as regras acima.

Os símbolos +, -, ∗, /, div, mod, são operadores aritméticos binários, isto é, operam sobre dois operandos para produzir um resultado. A tabela abaixo explica cada um destes símbolos.

operador significado
+ adição
- subtração
multiplicação
/ divisão real
div divisão inteira
mod resto de divisão inteira

O tipo do retorno depende do tipo dos operandos e dos operadores. Em geral, as operações de adição e subtração e multiplicação retornam o mesmo tipo dos operandos. Se estiverem sendo operados um real e um inteiro, o resultado é do tipo real.

Para as operações de divisão inteira (div) e resto de divisão inteira (mod) o resultado é inteiro, mas os operandos também devem ser inteiros. As operações com a divisão real (/) resultam sempre em tipo real, mesmo que um ou mais operandos sejam do tipo inteiro.

A tabela abaixo resume esta explicação.

operador tipo dos operandos tipo do resultado
+ inteiros inteiro
reais real
real e inteiro real
- inteiros inteiro
reais real
real e inteiro real
inteiros inteiro
reais real
real e inteiro real
/ inteiros real
real e inteiro real
reais real
div inteiros inteiro
real e inteiro ERRO
reais ERRO
mod inteiros inteiro
real e inteiro ERRO
reais ERRO

Observamos que, nas operações de divisão real ou inteira, o segundo operando não pode ser nulo, o que acarretará erro de execução.

São exemplos de expressões aritméticas bem formadas:

  • 2 ∗ 9 - 8 / 4
  • 2 ∗ (9 - 8 / 4)
  • cos (x/(y+1)) + ln (exp(y)) / sqrt (2.376 ∗ x - PI)
  • 9 mod 5 + 2 ∗ 7
  • (9 mod (5 + 2)) ∗ 7
  • 6.45 + 5.0 ∗ 2.01
  • (6 + 5) ∗ 2

As funções cos, ln, exp e sqrt são pré-definidas pelo compilador e retornam, respectivamente, o cosseno, logaritmo, exponencial e raiz quadrada do argumento.

Ordem de precedência

Em uma expressão complexa, o compilador executa cada operação separadamente segundo uma ordem pré-estabelecida. Isto é conhecido como ordem de precedência dos operadores.

Em outras palavras, suponha a expressão: 5 + 4 ∗ 2

Sem maiores informações, é uma expressão ambígua, pois $5+4=9$ e $9*2=18$, mas por outro lado, $4*2=8$ e $5+8=13$. Isto reflete a diferença entre as expressões:

  • (5 + 4) ∗ 2
  • 5 + (4 ∗ 2)

Em Free Pascal as operações são realizadas segundo a ordem de precedência seguinte:

  • operações entre parênteses ocorrem primeiro;
  • em seguida, as de multiplicação ou divisão, seja real ou inteira;
  • em seguida, as de adição ou subtração;
  • finalmente, realiza operações segundo cálculos de otimização realizado pelo compilador, para as operações de mesma precedência.

Assim, no exemplo acima $5 + 4 ∗ 2$, significa que a multiplicação será feita em primeiro lugar, e o resultado será 13.

Exemplos:

Expressão Resultado
2 ∗ 9 - 8 / 4 16
2 ∗ (9 - 8 / 4) 14
(2 ∗ 9) - 8 / 4 16
9 mod 5 + 2 ∗ 7 18
(9 mod (5 + 2)) ∗ 7} 14
6 + 5 ∗ 2 16
(6 + 5) ∗ 2

As expressões podem ser utilizadas nos seguintes casos:

em comandos de atribuição (ver seção Comando de atribuição); expressões lógicas (ver seção Expressões lógicas); como argumento de funções ou procedimentos (ver seção Seção de declaração de procedimentos e funções).

expressoes_aritmeticas.txt · Last modified: 2019/04/24 11:34 by castilho