São expressões aritméticas:
Se E_1 e E_2 são duas expressões aritiméticas, então as seguintes também são:
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:
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:
Em Free Pascal as operações são realizadas segundo a ordem de precedência seguinte:
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).