CAPÍTULO 03
Estructuras de flujo
y repetición
Controla decisiones y ciclos mediante las estructuras IF, FOR y WHILE de Calpian Logic Language.
CAPÍTULO 03
Estructuras de flujo
y repetición
Controla decisiones y ciclos mediante las estructuras IF, FOR y WHILE de Calpian Logic Language.
Evalúa condiciones en orden y ejecuta únicamente el primer bloque cuya condición resulte verdadera.
Utiliza ELSEIF para comprobar alternativas y ELSE para definir una acción predeterminada. Ambos bloques son opcionales; toda estructura debe finalizar con ENDIF.
SINTAXIS GENERAL
IF <condición> THEN
<acciones>
ELSEIF <otra condición> THEN
<acciones alternativas>
ELSE
<acción predeterminada>
ENDIF
EJEMPLO // DECISIÓN CON IF
IF SS01.AI_00000.Mag >= 100 AND SS01.BI_00000.stVal THEN
BD01.AI_00000.Mag = ((100 + 25) / 10) * 24;
ELSEIF SS01.AI_00000.Mag == 100 THEN
BD01.AI_00000.Mag = 100;
ELSE
BD01.AI_00000.Mag = 0;
ENDIF
Repite un bloque dentro de un rango definido mediante una variable iteradora.
La variable recibe un valor inicial y se actualiza después de cada iteración. Si no se especifica STEP, el incremento predeterminado es una unidad. Un valor negativo permite recorrer el rango de forma descendente.
Qué modifica STEP
STEP modifica el valor sumado o restado a la variable iteradora. No controla la velocidad temporal de ejecución del ciclo.
EJEMPLO // CICLO FOR
FOR BD01_DNP.AI_00000.Mag = 0 TO 10
BD01_DNP.AI_00001.Mag = BD01_DNP.AI_00000.Mag;
NEXT
Repite un bloque mientras la condición evaluada al inicio de cada iteración permanezca verdadera.
La condición puede incluir variables booleanas, comparaciones u operadores lógicos. El ciclo finaliza cuando la condición cambia a FALSE y la ejecución continúa después de WEND.
Evita ciclos infinitos
La condición debe poder cambiar dentro del bloque o como resultado de la operación del sistema. Verifica siempre una ruta de salida antes de ejecutar la lógica.
EJEMPLO // CICLO WHILE
BD01_DNP.BI_00000.stVal = TRUE;
BD01_DNP.AI_00000.Mag = 0;
WHILE BD01_DNP.BI_00000.stVal
BD01_DNP.AI_00000.Mag = BD01_DNP.AI_00000.Mag + 1;
IF BD01_DNP.AI_00000.Mag > 1000 THEN
BD01_DNP.BI_00000.stVal = FALSE;
ENDIF
WEND
IF Cuando necesitas elegir entre acciones.
FOR Cuando conoces el rango o número de repeticiones.
WHILE Cuando la repetición depende de una condición dinámica.