Ir al contenido principal

Grupos de mando

Los siguientes grupos de comandos son las construcciones básicas del Texto Estructurado y pueden combinarse y anidarse entre sí de forma flexible.

Enlaces booleanos

Los enlaces booleanos se utilizan para el enlace binario de variables.

| Símbolo | Operación lógica | Ejemplo | | --- | | --- | |NOT | Negación binaria | a := NOT b;| | AND| AND lógico | a := b AND c;| | OR | OR lógico | a := b OR c;| | XOR| OR exclusivo | a := b XOR c;|

La tabla de verdad de los enlaces booleanos tiene el siguiente aspecto:

EntradaYO XOR
0 0000
0 1011
1 0011
1 1110

Operaciones aritméticas

El texto estructurado contiene operaciones aritméticas básicas para su uso. Las prioridades deben respetarse durante la ejecución.

SímboloOperación aritméticaEjemplo
:= Asignacióna := b;
+Adicióna := b + c;
-Restaa := b - c;
*Multiplicacióna := b * c;
/Divisióna := b / c;
MODModulo, resto entero de la división a := b MOD c;

El tipo de datos de las variables y los valores es siempre determinante para su cálculo.

| Expresión / Sintaxis | Var1 | Var2 | Var3 | Resultado | | --- | | | --- | -- | | Var 1 := 10 / 4; | INT | INT | 2 | | Var1 := 10 / 4; | REAL | INT | 2.0 | | Var1 := 10.0 / 4; | REAL | REAL | INT | 2.5 |

Operadores de comparación

Símbolo Expresión comparadaEjemplo 
=AnonIF a = b THEN
<>DesigualIF a <> b THEN 
>Mayor queIF a > b THEN 
>=Mayor o igual queIF a >= b THEN
<Más pequeño queIF a < b THEN
<=Inferior o igual aIF a <= b THEN

Decisiones

IF a > b THEN // 1. Comparación
c := 1; // Instrucción si 1. Comparación TRUE
ELSIF a > d THEN // 2. Comparación
e := 1; // Instrucción if 2. Comparación TRUE
ELSE // Rama alternativa, sin comparación TRUE
f := 1; // Enunciado de la rama alternativa
END_IF // Fin de la decisión

Declaración IF - ELSE

Instrucción IF - ELSIF

Declaración CASE

La sentencia CASE se utiliza para agrupar varias sentencias condicionales con la misma variable condicional.

CASE newCase OF // Inicio del caso         
1,5: // para 1 y 5
StateDescription := "Stopped";
2: // para 2
Statedescription := "Running";
3, 4, 6 ... 8: // para 3, 4, 6, 7, 8
Statedescription := "Failed";
ELSE // Rama alternativa
(* .. *)
END_CASE // Fin del caso

En un ciclo de programa, sólo se procesa un paso de la instrucción CASE a la vez. La variable de paso debe ser de tipo entero.

Rectificado

Los bucles se procesan repetidamente dentro de un ciclo. El código se ejecuta hasta que se cumple una condición de finalización definida.

Para evitar bucles sin fin, siempre se debe proporcionar una ruta que termine el bucle después de un cierto número de repeticiones.

Los bucles controlados por el cabezal (FOR, WHILE) comprueban la condición de finalización antes de la ejecución, bucles controlados por el pie (REPEAT) al final.

Declaración FOR

La instrucción FOR se utiliza para ejecutar un determinado número de repeticiones de una parte del programa.

Sum := 0;
FOR Index := 0 TO 3 DO
Sum := Sum + Values[ Index ];
END_FOR;

Declaración WHILE

La instrucción WHILE no tiene contador de bucle. Se llama hasta que una condición o expresión es FALSE.

WHILE Índice < 10 DO
Suma := Suma + Valores[ Índice ];
Índice := Índice + 1;
END_WHILE;

Declaración REPEAT

La condición de terminación se comprueba en el bucle REPEAT sólo después de la ejecución.

Índice := 0;
Suma := 0;
REPEAT
Suma := Suma + Valores[ Índice ];
Índice := Índice + 1;
UNTIL Índice >= 10 END_REPEAT;

Declaración EXIT

Puede utilizarse con todo tipo de bucles y conduce a la terminación inmediata.

REPEAT
IF Exit = TRUE THEN
EXIT;
END_IF
UNTIL Index >5
END_REPEAT