Definiciones

Declaración.

Es una línea de código con las instrucciones para realizar una acción, también conocido como algoritmo.

Mensaje ("Hola mundo")

Obs. generalmente cada declaración debe de ir en una línea. Sin embargo, en el caso de funciones se puede utilizar más líneas, con la condición que la función abra con “(” y en la última línea de la declaración cierre con “)”. Con excepción en las estructuras condicionales.

 DlgBusqueda(Datos:Clientes,
                 Campos:Codigo,Nombre)

 DlgBusqueda(Datos:Producto,
                 Campos:Codigo,Descripcion
                 )

También se puede utiliza al final de la linea un guión bajo, precedido de un espacio ” _”

Correcto!! 
Sql = "SELECT Code, Name FROM Customers _
                 WHERE Type = 'A' "


Incorrecto!! 
Sql = "SELECT Code, Name FROM Customers_
                 WHERE Type = 'A' "

Debe de haber un espacio después de la ultima palabra/caracter del guión bajo.
Variables

Las variables son espacios de memoria que se ocupan durante el funcionamiento de la Aplicación

Existen dos tipos de variables:
> Variables Locales que solo existen en el procedimiento en donde se declaran
> Variables Globales que existen hasta que cierra la aplicación

Se utiliza el comando LET o VAR para declarar las variables y se pueden inicializar con un valor
Grazie reconoce cuatro tipos de valor para las variables:

  • Numérico
  • Texto
  • Booleano (Verdadero/Falso)
  • Array / Lista

Variables de fecha se utilizan como texto y se interpretan con funciones integradas.

 Ejemplos: 
      var n, t, b, a                  <- Se pueden inicializar sin valor

      var n=0, t = "Texto", b = True <- Se pueden inicializar con valor

      opción de usar paréntesis y/o ":" en lugar de "="

      var(n:0, t="Texto", b=True)

 Como asignar una variable array:
      a = [1,2,3,”Texto”]


 IMPORTANTE
 Se pueden declarar una o mas variables en una solo linea
      Var variable = "xx", numero = 10

 Para asignarle un valor a la variable se utilizan los simbolos "=" ó ":"
      mivariable = “Grazie”
      ó
      mivariable : "Grazie"

 Para obtener el valor de una variable dentro de un Texto usar el signo $
      mivariable = "Grazie"
      Mensaje “Bienvenido $mivariable "

Existen propiedades de las variables para convertir a las mismas
      mitexto = "100"
      minumero = 200
      miresultado = mitexto.aNumero() + minumero
      mivalor = 100
      miitexto = "El resultado es "
      miresultado = mitexto + mivalor.aTexto

Obs. Grazie no reconoce el valor tipo “colores”, para usar este tipo en variables se debe usar como texto

Operadores Matemáticos
OPERADORDESCRIPCIONEJEMPLORESULTADO
  +Adiciónn = 100 + 300
t = “Text 1 ” + “Data x”
t = “Text ” + ” + “1” + ” + ” Data x”
400
“Text 1 Data x”
“Text ‘1’ Data x”
Substracciónn = 300 -50 250
*Multiplicaciónn = 30 * 3 90
  / div Divisiónn = 100 / 2
n = 100 / 3
Importante:
Si queremos hacer la operación y que considere decimales
n = 100 / 3.0
50
33


 33.3333333
  mod RestanteDa el resto de una cociente de una división:
26/6=4   (6*4=24  26-24=2)
Solo regresa valores enteros
n = 26 mod 6
     


2
   ++  IncrementoLet n = 1, i = 0
n++
i = n++ + 100 + n++
Let i = 1
while i < 5     
Mensaje i     
i++
.while  
  2
105 {n=4}



  – –  DecrementoLet n = 10, i = 0
n- –
i = n- –

  9
8
  ++ – –Usando los dos
operadores en la misma
linea

Let i = 2, n = 0
n = i++ + 300 + i- –        
 
        305 {i=2}
Operadores de comparación
a <> b 	   a es distinto que b
a >  b 	   a es mayor que b
a <  b 	   a es menor que b
a =  b 	   a es igual que b
a >= b 	   a es mayor o igual que b
a <= b 	   a es menor o igual que b
Operadores lógicos

IMPORTANTE. Las sentencias deben ir entre ( ) por lo tanto es obligatorio usar la estructura condicional con ( )

OR      a OR b  => Devuelve true si alguna de las dos es true

	if( ( 4 = 4) OR ( 5 = 3) ) 
		Mensaje True
	else
		Mensaje False
	.if

AND     a AND b => Devuelve true únicamente si las dos son true
	if( (4 = 4) AND (8 = 8) ) 
		Mensaje True
	else
		Mensaje False
	.if

NOT     Niega una sentencia.
	if( NOT (2 = 2) ) 
		Mensaje False
	else
		Mensaje True
	.if

	Var b = False
	if Not b
		Mensaje b   {False}
	else
		Mensaje b   {True}
	.if
Estructura condicionales

Actualmente Grazie soporta solo dos estructura condicionales suficientes para darle flujo a la aplicación.

IF / ELSE-IF / ELSE / .IF

La sentencia condicional if se usa para tomar decisiones, este evalú básicamente una operación lógica, es decir una expresión que de como resultado True o False , y ejecuta la pieza de código siguiente siempre y cuando el resultado sea verdadero.

if ( condition )
    // Execute this block code if condition is Tru
else-if ( condition )
    // Execute this block code if condition is True and prior condition is false
else
    // Execute this block code if teh conditions are false
.if 


Si ( condición )
    // Ejecuta estas lineas si la condición es Verdadera
Osi (
    // Ejecuta estas lineas si la condición es Verdadera y la condición anterior es falsa
SiNo ( condicion )
    // Ejecuta estas lineas si las condiciones son falsas
.Si


Observaciones:

Si la condición es simple los paréntesis son opcionales:
if 500 > 900
      // Block of code
.if


En caso de condiciones mas complejas son obligatorios los paréntesis:
if (  (country="Canada") OR (country="USA") )
      // Block of code
.if

=> MATCH / AS / .AS / .MATCH


match ( variable to be evaluated )
        as value1
                // Execute this Block of code if the variable is equal to value1
        as value2
                // Execute this Block of code if the variable is equal to value2
        as value3, value4  // Checking for a collection of values
                // Execute this Block of code if the variable is equal to value3 or value4
        .as     // Optional
                // Execute this Block of code if prior cases are not match
.match

// Example
country = "Usa"
match country
        as "Canada", "Mexico"    // collection of values
                // Execute this Block of code if country is Canada or Mexico
        as "Argentina"
                // Execute this Block of code if country is Argentina
        .as     // Optional
                // Execute this Block of code if prior cases are not match
.match


Note:
    "as" can be used to assign a range.

Salary = 45000
match Salary
        as 1000..10000
                // Execute this Block of code if salary is between 1000 and 10000
        as 10001..50000
                // Execute this Block of code if salary is between 10001 and 50000
        .as     // Optional
                // Execute this Block of code if prior cases are not match
.match



ELEGIR / CASO / .CASO / .ELEGIR

elegir ( variable a ser evaluada )
        caso valor1
                // Ejecuta este bloque si la variable es igual a valor1
        caso valor2
                // Ejecuta este bloque si la variable es igual a valor2
        caso valor3, valor4  // Checar colección de 
                // Ejecuta este bloque si la variable es igual a valor3 o valor4
        .caso   // Opcional
                // Ejecuta este bloque si las variables anteriores no coinciden
.elegir

// Ejemplo
pais = "Usa"
elegir pais
        caso "Canada", "Mexico"    // colección de valores
                // Ejecuta este bloque si pais es igual a Canada o Mexico
        caso "Argentina"
                // Ejecuta este bloque si pais es igual a Argentina
        .caso   // Opcional
                // Ejecuta este bloque si pais no es igual los anteriores
.elegir


Note:
    "caso" Se puede asignar como rango

Sueldo = 45000
elegir Sueldo
        caso 1000..10000
                // Ejecuta este bloque si sueldo esta entre 1000 y 10000
        caso 10001..50000
                // Ejecuta este bloque si sueldo esta entre 10001 y 50000
        .caso     // Opcional
                // Ejecuta este bloque si sueldo no esta entre los anteriores
.elegir
Ciclos / Loops
MIENTRAS / SALIR-MIENTRAS / .MIENTRAS ________ WHILE / BRAKE-WHILE / .WHILE

Es la estructura en que el cuerpo del bucle se repite mientras se cumple una determinada condición. Cuando se ejecuta la instrucción mientras/while, lo primero que ocurre es evaluar la condición (una expresión booleana). Si la condición se evalúa falsa, no se entra al ciclo y se sigue con el flujo normal del código Si la condición es verdadera, entonces se entra al ciclo y se ejecuta el cuerpo del bucle (instrucciones dentro del mientras), después se evalúa de nuevo la expresión booleana. Este proceso se repite una y otra vez mientras la condición sea verdadera.

While ( condition ) 
     //Block of code
   
.while

//Example

let num = 1
while num < 10
    // Block of code
    if num = 6
         break-while
    .if
    num++       <= Increase num 
.while


// Español
Mientras ( condition ) 
     //Block of code
.mientras

//Example

let num = 1
mientras num < 10
    // Block of code
    si num = 6
         salir-mientras
    .si
    num++       <= Incrementa num 
.mientras
DESDE / SALIR-DESDE / .DESDE ______________ FOR / BREAK-FOR / .FOR

El ciclo FOR es uno de los más utilizados en programación debido a que permite repetir varias instrucciones (pasos) un cierto número de ocasiones (por ejemplo, 10 veces).
Consta de tres partes incluidas para definir cómo deseamos que se realicen las repeticiones.
La primera parte es la inicialización, que se ejecuta solamente al comenzar la primera iteración del ciclo. En esta parte se suele colocar la variable que utilizaremos para llevar la cuenta de las veces que se ejecuta el ciclo. NO es necesario declarar la variable ya que lo hace automáticamente.
La segunda parte es la condición, que se evaluará cada vez que comience una iteración del ciclo. Contiene una expresión para decidir cuándo se ha de detener el bucle, o mejor dicho, la condición que se debe cumplir para que continúe la ejecución del bucle.
La tercer parte es la actualización, que sirve para indicar los cambios que queramos ejecutar en las variables cada vez que termina la iteración del ciclo, antes de comprobar si se debe seguir ejecutando.


for i:1, i < 10, 1
        // Block of code
        if i = 5
                break-for
        .if

.for


desde i:1, i < 10, 1
        // Block of code
        si i = 5
                salir-desde
        .si

.desde