Definir tipos de expressão diferentes

Concluído

Uma expressão é uma fórmula que especifica como gerar um valor desejado e, em seguida, é avaliada como um valor. Uma expressão usa termos e um operador, que pode ser unário ou binário.

Com um operador unário, o operador afeta o termo que o segue diretamente. Um operador binário afeta ambos os lados do operador.

Você pode categorizar os operadores em um dos seguintes tipos de operador:

  • Unário

  • Cadeia de caracteres

  • Aritmético

  • Relacional

  • Lógico

Operadores unários

Um operador unário afeta somente o termo que segue diretamente o operador. Estes são valores do operador unário:

  • +

  • -

  • NOT

Quando você usa o sinal de menos (-), é gerado um valor negativo do termo que vem após esse sinal. Portanto, ele afeta apenas o termo que segue o operador.

var
    CustomerExists: Boolean;
    MyBoolean: Boolean;
begin
    CustomerExists := true;
    MyBoolean := NOT CustomerExists;
    // Will result in MyBoolean: false
end;

Os operadores seguintes são todos binários, que afetam os termos de cada lado do operador.

Operadores de cadeia de caracteres

O único operador de cadeia de caracteres é o sinal de mais (+), que é um operador binário porque afeta os termos em cada lado do operador. O operador de cadeia de caracteres concatena duas cadeias de caracteres.

Exemplo de uso de um operador de cadeia de caracteres em AL.

Operadores aritméticos

Os operadores aritméticos são usados em expressões numéricas. Uma expressão numérica é uma fórmula que resulta em um valor numérico.

Os seguintes operadores aritméticos estão disponíveis:

  • Mais (+)

  • Menos (-)

  • Vezes (*)

  • Dividir (/)

  • Divisão inteira (DIV)

  • Módulo (MOD)

var
    MyExpression: Integer;
begin
    MyExpression:= 5 + 2 * 3;
    // Will result in MyExpression: 11
end;

Dependendo dos tipos de dados usados com operadores aritméticos, você poderá obter outros tipos de dados como resultado.

17/8 = 2.125
17/9 = 1.88

O operador dividir, ou divisão, é a divisão matemática normal com a qual você está acostumado a trabalhar. Se você dividir dois valores inteiros, sempre terminará com um valor Decimal.

O operador divisão inteira (DIV) retorna o quociente inteiro da divisão inteira. É um operador binário que resulta em um valor inteiro. Você pode calcular o resultado de uma divisão inteira removendo todos os decimais do resultado.

17 DIV 8 = 2   The decimal portion 125 is dropped
17 DIV 9 = 1   The decimal portion 88 is dropped

O operador de módulo (MOD) encontra o restante da divisão de um número por outro número. O operador de módulo é muito usado para validar números, como números de contas bancárias.

5 MOD 2 = 1   5 = (2x2) + 1
17 MOD 9 = 8   17 = (9x1) + 8

Se você comparar os operadores, estes serão os resultados:

5 / 2 = 2.5
5 DIV 2 = 2
5 MOD 2 = 1

A ordem em que os operadores são aplicados pode ter um efeito que pode influenciar significativamente os resultados dos cálculos.

  • Nível mais alto:

    Operador unário

  • Segundo nível:

    * , / , DIV, MOD

  • Nível mais baixo:

    + , - (binário)

Você pode alterar os efeitos de precedência do operador usando SubExpressions (). SubExpressions são sempre avaliadas primeiro, e você pode usá-las adicionando parênteses ().

5 + 3 * 6 – 2 DIV -2 = ?

First Level:
5 + 3 * 6 – 2 DIV -2

Second Level:
5 + 3 * 6 – 2 DIV -2
= 5 + 18 – (-1)

Lowest Level:
+ and –
23 -(-1) = 24

Expressões relacionais

As seguintes expressões relacionais estão disponíveis:

  • = (igual a)

  • < (menor que)

  • > (maior que)

  • <= (menor ou igual a)

  • >= (maior ou igual a)

  • <> (diferente de)

  • IN (incluir no conjunto)

Os operadores relacionais têm a menor precedência de todos os operadores. Com expressões relacionais, você pode comparar valores em termos de menor ou maior, igual, menor que ou maior que. Você pode usar operadores relacionais nas seguintes situações:

  • Comparações numéricas - Comparações numéricas são claras; elas comparam o valor numérico.

  • Comparações de cadeia de caracteres - Cadeias de caracteres são comparadas com a data Unicode para determinar qual valor vem primeiro.

  • Comparações de data e hora - O calendário é usado para determinar o valor que vem primeiro.

  • Comparações boolianas - O valor false virá antes do valor true.

A Inclusão do Conjunto (com o operador IN) é uma lista de valores, conforme mostrado neste exemplo:

[2,4,6,8,10]
[1..9,11..19]

O operador IN verifica se um valor específico está incluído em um conjunto ou não.

5 IN [2,4,6,8,10] is FALSE
5 IN [1..9,11..19] is TRUE
5 IN [2,4..6,8,10] is TRUE
10 IN [1..9,11..19] is FALSE
'M' IN ['A'..'Z'] is TRUE

Expressões lógicas

As seguintes expressões Lógicas estão disponíveis:

  • AND

  • OR

  • XOR

  • NOT

Os operadores lógicos também são avaliados em valores true e false (resultam em valores boolianos). Os operadores lógicos não comparam valores regulares como cadeias de caracteres, números ou datas; eles comparam valores boolianos, enquanto os operadores relacionais comparam valores baseados em diferenças nos valores.

O exemplo a seguir mostra uma comparação entre os diferentes operadores lógicos.

Tabelas com as diferenças entre os operadores lógicos.

  • Com o operador NOT, todos os valores lógicos são revertidos. NOT True resulta em Falso e NOT False resulta em Verdadeiro.

  • Com o operador OR, um dos valores deve ser True para resultar em True; caso contrário, o valor será False.

  • Com o operador AND, ambos os valores devem ser True para resultar em True; caso contrário, o valor será False.

  • Com o operador XOR (Exclusive OR), somente um valor pode ser True para o resultado ser True; caso contrário, o valor será False.

O exemplo a seguir coloca todos os operadores juntos.

Exemplo dos efeitos ao preceder o operador.

Expressões boolianas

Ao programar ou usar a linguagem de aplicativo, você também encontrará expressões boolianas. Uma expressão booliana é uma expressão que resulta em um valor booliano e, para isso, você pode usar uma variável booliana ou uma constante. Normalmente, as expressões relacionais e lógicas são avaliadas em valores boolianos.