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