import.css=/download/attachments/327912/newLayout.css |
Operadores ComunsAbrangência
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:
|
| + | Adição |
| - | Subtração |
| * | Multiplicação |
| / | Divisão |
| ** ou ^ | Exponenciação |
| % | Módulo (Resto da Divisã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) |
| < | 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. |
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
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
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
| .And. | E lógico |
| .Or. | OU lógico |
| .Not. ou ! | NÃO lógico |