Operadores são elementos de programação utilizados para combinar valores, variáveis e expressões em uma expressão ou instrução mais complexa. A tabela abaixo mostra os operadores que o IDL tem suporte, sua precedência, e mostra alguns exemplos de uso destes operadores.
| PRIORIDADE |
OPERADORES |
DESCRIÇÃO |
EXEMPLOS |
| Primeiro |
( ) |
Parênteses para agrupar. |
IDL> print, 3*2+1, 3*(2+1) 7 9 |
| [ ] |
Colchetes para concatenar matrizes ou vetores. |
IDL> a = indgen (3) IDL> print, [a, -17] 0 1 2 -17 |
|
| Segundo |
( ) |
Parênteses em uma chamada de função. |
IDL> print, indgen (3)*2 0 2 4 |
| [ ] |
Colchetes para sobrescrever matrizes ou vetores. |
IDL> a = indgen (5) IDL> print, a[3]*2 6 |
|
| . |
Referência a estruturas. |
IDL> s = {val :5} IDL> print, s.val*2 10 |
|
| Terceiro |
* |
Referência a ponteiros. |
IDL> p = ptr_new(1) IDL> print, *p 1 |
| ++ |
Incrementar. |
IDL> a = 5 IDL> print, a++, a, ++a 5 7 7 |
|
| -- |
Decrementar. |
IDL> print, a--, a, --a 7 5 5 |
|
| ^ |
Exponenciação. |
IDL> print, a^2, a^(-2) 25.0000 0.0400000 |
|
| Quarto |
# e ## |
Multiplicação de matrizes. |
(veja logo a frente "Multiplicação de Matrizes") |
| * |
Multiplicação. |
IDL> print, 5*2 10 |
|
| / |
Divisão. |
IDL> print, 5/2, 5/2. 2 2.50000 |
|
| mod |
Módulo. |
IDL> print, 5mod2 1 |
|
| Quinto |
+ |
Adição / Concatenação de strings. |
IDL> print, 5+2 7 IDL> print, 'Dave'+' Stern' Dave Stern |
| - |
Subtração / Negação unária. |
IDL> print, 5-2, -5 3 -5 |
|
< |
Mínimo. |
IDL> print, 5 < 2 2 |
|
> |
Máximo. |
IDL> print, 5 > 2 5 |
|
| not |
Complemento Bit a Bit. |
DL> print, not 5 -6 |
|
| Sexto |
eq |
Igual á. |
IDL> print, 5eq2, 2.0eq2 0 1 |
| ne |
Diferente de. |
IDL> print, 5ne2, 2.0ne2 1 0 |
|
| le |
Igual ou menor que: |
IDL> print, 5 le 2, 2.0 le 2 0 1 |
|
| lt |
Menor que: |
IDL> print, 5 lt 2, 2.0 lt 2 0 0 |
|
| ge |
Maior ou igual que: |
IDL> print, 5 ge 2, 2.0ge2 1 1 |
|
| gt |
Maior que: |
IDL> print, 5 gt 2, 2.0gt2 1 0 |
|
| Sétimo |
and |
E Bit a Bit. |
IDL> print, 5 and 6 4 |
| or |
OU Bit a Bit. |
IDL> print, 5 or 6 7 |
|
| xor |
XOR Bit a Bit. |
IDL> print, 5 xor 6 3 |
|
| Oitavo |
&& |
E Lógico. |
IDL> print, 5 && 6 1 |
| || |
OU Lógico. |
IDL> print, 5 || 6 1 |
|
| ~ |
Negação Lógica. |
IDL> print, ~5 0 |
Quando operadores do mesmo nível de precedência são usados sem serem agrupados em uma expressão, eles são avaliados da esquerda para direita. Por exmplo:
IDL> print, 5 mod 2 * 7
7
Os operadores do IDL podem ser usados com matrizes ou vetores da mesma forma que são usados na escalar.
Por exemplo:
IDL> print, indgen(5) mod 2
0 1 0 1 0Aqui, o operador modulo (MOD) é aplicado em cada elemento retornado da função INDGEN.
IDL> print, indgen(5) > 2
2 2 2 3 4
IDL> print, indgen(5) gt 2
0 0 0 1 1Neste caso, os operadores são aplicados em cada elemento do vetor.
O IDL começou a ter suporte a estes operadores a partir da versão 6.0 . Os operadores válidos estão listados na tabela abaixo.
| *= | <= | eq= | mod= |
| ##= | ^= | ge= | #= |
| xor= | gt= | -= | or= |
| le= | += | and= | lt= |
| /= | >= | ne= |
Estes operadores compostos podem ser combinados com outros operadores. Uma instrução como essa
a op = expressão
é equivalente á
a = temporário (a) op (expressão)
onde op é um operador do IDL podendo ser combinado para formar um dos operadores compostos da lista acima, e expressão é qualquer expressão do IDL, o resultado será o mesmo que da primeira instrução.
Por exemplo:
IDL> a = 3
IDL> a += 5 * !pi
IDL> print, a
18.7080O valor final é o valor inicial mais 5 vezes pi.