Variables, tipos, ámbito y expresiones

Una expresión es una secuencia de uno o más operandos y cero o más operadores que se pueden evaluar para obtener un valor único.
Los operandos pueden ser variables, constantes o invocaciones de funciones.
Ejemplo:

Variables

Deben iniciar con una letra y pueden contener cualquier combinación de letras, números (A-Z, a-z, 0-9) y el guion bajo (_).
• A
• Variable_Numerica

Los identificadores de variables distinguen entre mayúsculas y minúsculas.
A no es la misma variable de a.

Tipos

DKL es un lenguaje de tipado estático, es decir que si una variable se declara de un tipo no podrá cambiarlo durante toda la vida del programa.

Formalmente existen únicamente dos tipos valor: numéricos y cadenas.

Internamente los valores numéricos se almacenan en tipos valor decimal de Net Framework o Net Core.

Los resultados de evaluaciones lógicas se consideran numéricos también, siendo 1 para resultados verdaderos y 0 para resultados falsos.

Los tipos de cadena internamente se almacenan como Cadena de Net Framework o Net Core.

Tipos de referencia

Las referencias son el mecanismo para acceder a objetos, internamente son el índice de una tabla de objetos que persiste durante todo el tiempo de ejecución del programa.

DKL utiliza el método de conteo de referencias para administrar la memoria asignada.

Las variables de referencia deben declararse con la palabra reservada ref.

Una variable de referencia es una variable numérica marcada como tal, por lo tanto, es posible asignar el contenido de variables de referencia a variables numéricas y viceversa.

Es importante considerar que, si no existe ninguna referencia apuntando a un objeto en la tabla de objetos interna, se eliminará de la memoria.

Siempre que utilice objetos, use variables de referencia.
Ejemplo:

Declaración de variables

Las variables numéricas y de cadena para declararse únicamente deben asignarse por primera vez.
Ejemplos:

Adicionalmente, las variables pueden tener atributos de validación que permiten controlar y prevenir los datos que almacenan.

Atributos de variables

Para variables numéricas puede establecer los atributos: min, max indican los valores de Frontera de la variable numérica, round la cantidad de decimales a la que se redondea automáticamente y format la presentación con que se muestra como cadena, se usan los mismos caracteres de control de C#.

Para variables de cadena puede establecer los atributos: min y max (que sirven para controlar la cantidad de caracteres que puede contener la variable únicamente).
Ejemplos:

La declaración anterior indica que la variable no puede almacenar valores por debajo de cero ni por encima de 100 y que todos serán redondeados a dos decimales, adicionalmente en el contexto declarativo se insertarán con el formato de dinero.

La declaración anterior define que la variable no puede contener cadenas con menos de 1 carácter ni con más de 40 de extensión.

Plantillas de variables

Los atributos de una variable pueden heredarse a otra en su declaración.

Ámbito de las variables

Las variables en un programa DKL pueden ser globales o locales.

Las variables globales están disponibles para todas las partes del programa y deben declararse con el carácter @ arroba al principio.
Por ejemplo:

Por otra parte, las variables locales están disponibles únicamente en el ámbito donde se declaran.

Los ámbitos existentes son el programa principal y el cuerpo de las funciones definidas por el usuario.

Una variable local declarada fuera del cuerpo de una función está disponible únicamente fuera de las funciones, mientras que una variable declarada dentro de una función, únicamente está disponible dentro de la función.

Constantes

Numéricas

Inician con un número, un signo menos (negativo) o un punto, los caracteres subsecuentes pueden ser solo números, el punto decimal (carácter punto) es flotante.
• 10
• 10.58
• 0.58
• 0.69
• -5
• -0.25
• -0.58

De cadena

Están delimitadas por comillas dobles y pueden contener cualquier carácter imprimible (no se admiten secuencias de control o escape).
• “Hola mundo”
• “Esto es una cadena de caracteres”

Operadores

Aritméticos

• + Suma
• - Resta
• * Multiplicación
• / División

Lógicos

• < Menor qué
• > Mayor qué
• <= Menor o igual qué
• >= Mayor o igual qué
• == Igual
• != Desigualdad
• && Y lógico (and)
• || O lógico (or)

Nota acerca del operador NOT: En DKL no existe un operador de negación como tal, por tanto debe utilizar la función incorporada NOT(valor).

Prioridad de operadores

Las operaciones aritmético lógicas se realizan según el siguiente orden en una expresión:

1. Operaciones lógicas (<>!=<=…)
2. Multiplicaciones (*) y divisiones (/)
3. Sumas (+) y restas (-)

Para modificar esta prioridad deben utilizarse agrupadores, es decir parejas de paréntesis ().

Ejemplo:
4+5*3 es igual a 19
(4+5)*3 es igual a 27

Concatenación de cadenas

La concatenación de cadenas se realiza mediante el operador +, por lo que “hola ”+”mundo” da como resultado la cadena “holamundo”.

Funciones en expresiones

Siguen las mismas reglas para las variables, pero deben ser seguidas de una pareja de paréntesis que encierre los parámetros existan o no. Si hubiese parámetros, deberán delimitarse con una coma.
o F()
o Funcion(10,25.5,”hola”)

Los identificadores (nombres) de funciones no distinguen entre mayúsculas y minúsculas.
Funcion1(10) es la misma función que FunCION(10).