Operadores Comuns
Abrangência
Versão 5.07 | Versão 5.08 | Versão 6.09 | Versão 7.10 | Versão 8.11 |
Versões Anteriores |
Na documentação sobre variáveis há uma breve demonstração de como atribuir valores a uma variável da forma mais simples. O AdvPl amplia significativamente a utilização de variáveis através do uso de expressões e funções. Uma expressão é um conjunto de operadores e operandos cujo resultado pode ser atribuído a uma variável ou então analisado para a tomada de decisões. Por exemplo:
Local nSalario := 1000, nDesconto := 0.10 Local nAumento, nSalLiquido nAumento := nSalario * 1.20 nSalLiquido := nAumento * (1-nDesconto)
Neste exemplo são utilizadas algumas expressões para calcular o salário líquido após um aumento. Os operandos de uma expressão podem ser uma variável, uma constante, um campo de arquivo ou uma função.
Operadores Matemáticos
Os operadores utilizados em AdvPl para cálculos matemáticos são:+ | Adição |
- | Subtração |
* | Multiplicação |
/ | Divisão |
** ou ^ | Exponenciação |
% | Módulo (Resto da Divisão) |
Operadores de String
Os operadores utilizados em AdvPl para tratamento de caracteres são:+ | Concatenação de strings (união) |
- | Concatenação de strings com eliminação dos brancos finais das strings intermediárias |
$ | Comparação de Substrings (contido em) |
Operadores Relacionais
Os operadores utilizados em AdvPl para operações e avaliações relacionais são:< | Comparação Menor |
> | Comparação Maior |
= | Comparação Igual |
== | Comparação Exatamente Igual (para caracteres) |
<= | Comparação Menor ou Igual |
>= | Comparação Maior ou Igual |
<> ou != | Comparação Diferente (*) (*) O operador '#' foi mantido por compatibilidade no AdvPL para indicar comparação por diferença, mas seu uso é obsoleto. |
Informações Adicionais
- Caso as expressões comparadas sejam de tipos diferentes, a operação de comparação gera um erro de execução "Type Mismatch on Compare"
- NIL é considerado como uma expressão sem tipo, logo qualquer expressão pode ser comparada com NIL, utilizando-se dos operadores de igualdade ou diferença.
Igualdade entre Strings - Operadores "=" e "=="
A comparação de igualdade com strings (=) considera duas string de tamanho diferente como iguais, caso todos os caracteres da string da direita do operador de comparação sejam iguais aos caracteres da string do lado esquerdo. Logo, se a string do lado esquerdo for maior que a do lado direito, mas todos os caracteres da string do lado direito forem iguais àos do lado esquerdo, elas serão consideradas iguais.
User Function TSTEQ() cVar1 := "ABC" cVar2 := "ABCD" conout( cVar1 = cVar2 ) // Falso conout( cVar2 = cVar1 ) // Verdadeiro conout( cVar2 == cVar1 ) // Falso Return
Diferença entre strings
Para a comparação de igualdade, existe o operador "==" ( exatamente igual, coniderando tamanho das strings envolvidas). Porém, a operação de diferença ( '<>' e/ou '!=' ) é exatamente o contrário da operação de igualde simples ( '=' ). Se você precisa saber se duas strings são diferentes, sem considerar o comportamento de "aproximação de igualdade" do operador "=", você deve comparar as strings com o operador de igualdede exata '==' entre parenteses, e inverter o resultado com o operador '.NOT.' ou '!', vide exemplo abaixo:
User Function TSTEQ() cVar1 := "ABC" cVar2 := "ABCD" conout( cVar2 != cVar1 ) // Falso conout( !(cVar2 == cVar1) ) // Verdadeiro Return
Igualdade e/ou diferença entre Números – Operadores = , == , != e <>
Por default, a comparação de valores numéricos (tipo 'N') do AdvPL considera dois números como iguais, qundo a diferença entre eles seja menor ou igual a 0.00000005 ( cinco centésimos de milionésimos, ou 5e-8 ). Este comportamento pode ser aumentado para a precisão máxima de 15 digitos, quando utilizada a configuração FloatingPointPrecise
Operadores Lógicos
.And. | E lógico |
.Or. | OU lógico |
.Not. ou ! | NÃO lógico |