Texto estructurado (ST)

Documentos relacionados
LENGUAJE ST. (Structured Text) ST (Structured Text): 5to lenguaje definido en la norma IEC

Automatización mediante control en PC usando el software TwinCAT de Beckhoff

Operadores. Java es un lenguaje rico en operadores, que son casi idénticos a los de C/C++.

Estructuras de Control

Laboratorio de Arquitectura de Redes. Sentencias de control en lenguaje C

Estructura de un programa en Java. Tipos de datos básicos. class miprimerprograma{ // comentario, no es parte del programa

Informática Ingeniería en Electrónica y Automática Industrial

Fundamentos PHP. El término puntuación nos referimos a la sintaxis usada en PHP para la terminación de una línea de código (;)

Contenido de la Presentación

CÓMO FUNCIONA UN PLC Control Combinacional Programación del PLC

TEMA 4: Programación estructurada

ESTRUCTURAS DE CONTROL

CONTROLADORES Control Lógico Programable (PLC)

Estructuras de control

Palabras reservadas de C++ y C. Una palabra reservada no puede declararse como un identificador, esto haría un conflicto entre conectores y funciones.

Sentencias iterativas

TEMA 5. CONTROL DE FLUJO DEL PROGRAMA. Sentencia Instrucción Expresión Operadores + Operandos Sintaxis: Sentencia ;

Centro Asociado Palma de Mallorca. Antonio Rivero Cuesta

TEMA 5. ESTRUCTURAS DE CONTROL: BUCLES.

Curso de Java Introducción a la Programación III

Sentencias de Procesamiento Iterativo: while y do-while

Operadores aritméticos

Programación 1 Tema 5. Instrucciones simples y estructuradas

FUNDAMENTOS DE INFORMÁTICA

Dobles: Es el caso de la instrucción if-else (punto 1.2).

Algoritmos. Medios de expresión de un algoritmo. Diagrama de flujo

PYTHON. Programación estructurada

Capítulo 4. Control de flujo. Continuar

Objetivos de la práctica: - Trabajar las estructuras de control repetitivas en la realización de programas.

Archivo ASM. Es el documento que contiene el código fuente del programa.

Tema 4. Control de flujo. Programación Programación - Tema 4: Control de Flujo

Ciclos. Recordando Estructuras de Control Básicas: SELECCIÓN (condición) SECUENCIAL

Tema 1 INTRODUCCIÓN A LOS LENGUAJES DE PROGRAMACIÓN

Operadores y Expresiones

Unidad Didáctica 3. Tipos genéricos. Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos

ESTRUCTURA SECUENCIAL ESTRUCTURA SELECTIVA

Estructuras de control: Las variables: Fuertemente tipado: Tipado dinámico: Variables booleanas: Qué son las estructuras de control?

PROGRAMACIÓN CON VBA: MACROS EXCEL Manual de Referencia para usuarios. Salomón Ccance CCANCE WEBSITE

Programación: Estructuras de Control

Fundamentos de Programación

11/02/2009 IEC de febrero de 2009 Antonio Cambronero, Product Engineer OMRON Electronics Iberia S.A.U. IEC ( Programación en ST )

Todo programa en 'C' consta de una o más funciones, una de las cuales se llama main.

Apunte Laboratorio ALPI - El lenguaje de programación Pascal

ELEMENTOS BÁSICOS PARA LA PROGRAMACIÓN DE FUNCIONES TIPOS DE DATOS. Constantes

Programación 1 Tema 5. Instrucciones simples y estructuradas

Programcaión Básica. Secuencias de Control y Repetición. Arturo Vega González.

Curso Completo de Visual Basic 6.0

1. Detalle de los Comandos:

Lección 3 Sentencias de control

3.2. Programación estructurada. Principal. Modulo 1 Modulo 2 Modulo 3 Modulo 4. Modulo Modulo Modulo 3 1 Modulo 4 1 Modulo 4 2. Pág.

Programación en Mathematica

Programación. Test Autoevaluación Tema 4

FUNDAMENTOS PARA LA CONSTRUCCIÓN DEL CÓDIGO A PARTIR DEL ALGORITMO

TECNICO SUPERIOR EN INFORMÁTICA EMPRESARIAL MÓDULO INTRUCCIONAL

Algoritmo, Estructuras y Programación I Ing. Marglorie Colina

JavaScript Básico. Elementos Básicos: Comentarios: Literales: Valores que puede tomar una variable o una constante.

Guía práctica de estudio 06: Estructuras de repetición

La resolución de problemas es una tarea únicamente humana comprobable en todos los casos con los mismos resultados.

ALGORÍTMICA. Dpto. Ingeniería de Sistemas y Automática Facultad de Ciencias Universidad de Valladolid.

Conceptos Programa Programa objeto Pseudocódigo Algoritmos y Diagramas de flujo 1) Finitud 2) Definición 3) Entrada

Es ambigua, ya que la división y la multiplicación tienen el mismo grado de precedencia, qué parte de la expresión se realiza primero?

Módulo. = Asignación = = Comp. de igualdad!= Com. de desigualdad <= Comp. menor o igual >= Comp. mayor o igual AND lógico OR lógica.

FACULTAD DE INGENIERIA

Control de Flujo. Estructuras de Control! Experiencia Educativa de Algorítmica CONTROL DE FLUJO

Sentencias de control de flujo

Una expresión es una combinación de uno o más operandos y operadores para obtener un resultado.

Programación n Orientada a Objetos Sentencias Java Parte I. Ing. Julio Ernesto Carreño o Vargas MsC.

Tema 06: Estructuras y sentencias de control en C

PHP: Lenguaje de programación

4. Operadores Operador asignación

Programación Orientada a Objetos Sentencias Java Parte I Ing. Julio Ernesto Carreño Vargas MsC.

Informática. JavaScript: Lenguaje de programación. Fco J. Martín Mateos Carmen Graciani

Tema 3. Estructuras de Datos

El lenguaje C. 1. Identificadores, constantes y variables

Control de Flujo. Estructuras de Control! Experiencia Educativa de Algorítmica CONTROL DE FLUJO

Esquemas repetitivos en Fortran 90. Esquemas repetitivos en Fortran 90. Esquemas repetitivos en Fortran 90. Tipos de Esquema

Ejercicios resueltos

Listas y Recursión. Taller de Álgebra I. Primer Cuatrimestre de 2015

Estructura de datos y Programación

Tema 3. Estructuras de control

Estructuras de Control. Secuencia y Selección

REFERENCIA DEL LENGUAJE

FUNDAMENTOS DE OBJECT PASCAL

GENERACIÓN DE CÓDIGO ORIENTADO A OBJETOS

TEMA 2. LENGUAJE C. CONCEPTOS BÁSICOS Y PROGRAMACIÓN ELEMENTAL.

Expresiones y Operadores

Esquemas repetitivos en Fortran 90

LENGUAJES DE PROGRAMACIÓN. Solución al Ejercicio de Autocomprobación 1

Transcripción:

17 Texto estructurado (ST) El texto estructurado se compone de una serie de instrucciones que se pueden ejecutar, como sucede con los lenguajes superiores, de forma condicionada ("IF..THEN..ELSE") o en bucles secuenciales (WHILE..DO). IF value < 7 THEN WHILE value < 8 DO value := value + 1; END_WHILE; Expresiones Una expresión es una construcción que devuelve un valor después de su evaluación. Las expresiones se componen de operadores y operandos. Un operando puede ser una constante, una variable, una llamada a funciones u otra expresión. Evaluación de expresiones La evaluación de una expresión se realiza mediante la ejecución de los operadores según determinadas reglas de enlace. El operador con el enlace más fuerte se ejecuta primero, después el operador que le sigue en intensidad de enlace, etc., hasta que se hayan ejecutado todos los operadores. Los operadores con la misma fuerza de enlace comienzan a ejecutarse desde la izquierda hacia la derecha. A continuación se muestra una tabla con los operadores ST por orden de fuerza de enlace. Operación Símbolo Fuerza de enlace Entre paréntesis (expresión) Enlace más fuerte Llamada a funciones Nombre de función (lista de parámetros) Potenciar ** Negar - Formación de complemento NOT Multiplicar * Dividir / Módulo MOD Sumar + Restar - Comparar <,>,<=,>= Igualdad = Desigualdad <> Bool AND AND Bool XOR XOR Bool OR OR Enlace más débil A continuación se indican las siguientes instrucciones en ST ordenadas en forma de tabla y con un ejemplo: Tipo de instrucción Asignación Llamada a un Bloque de Funciones y uso de la salida FB RETURN IF CASE Ejemplo A:=B; CV := CV + 1; C:=SIN(X); CMD_TMR(IN := %IX5, PT := 300);A:=CMD_TMR.Q; RETURN; IF D:=B*B;IF D<0.0 THEN C:=A;ELSIF D=0.0 THEN C:=B;ELSE C:=D; CASE INT1 OF1: BOOL1 := TRUE;2: BOOL2 := TRUE;ELSE BOOL1 := FALSE; BOOL2 := FALSE;END_CASE;

18 FOR WHILE EXIT Instrucción vacía ; FOR J:=101;FOR I:=1 TO 100 BY 2 DO IF ARR[I] = 70 THEN J:=I; EXIT; END_FOR; WHILE J<= 100 AND ARR[J] <> 70 DO J:=J+2;END_WHILE; J:=J+2;UNTIL J= 101 OR ARR[J] = 70END_; EXIT; Instrucciones en el lenguaje de texto estructurado Tal como el nombre lo indica, el texto estructurado está concebido para la programación estructurada; es decir, que para determinadas construcciones de uso frecuente, tales como bucles secuenciales, el lenguaje ST ofrece estructuras establecidas para la programación. Esto proporciona la ventaja de reducir la probabilidad de errores y conferir mayor claridad al programa. Comparemos, por ejemplo, dos secuencias de programa con idéntico significado en los lenguajes IL y ST: Un bucle secuencial para el cálculo de segundas potencias en lenguaje IL: bucle secuencial: LD Zaehler EQ 0 JMPC ende LD Var1 MUL 2 ST Var1 LD Zaehler SUB 1 ST Zaehler JMP schleife ende: LD Var1 ST Erg El mismo bucle secuencial programado en lenguaje ST se presentaría como sigue: WHILE Zaehler<>0 DO Var1:=Var1*2; Zaehler:=Zaehler-1; END_WHILE Erg:=Var1; Como se puede observar, la programación en el lenguaje ST del bucle secuencial no sólo es más breve, sino también considerablemente más fácil de leer, sobre todo si nos imaginamos bucles secuenciales entrelazados en construcciones de mayor envergadura. Las distintas estructuras en lenguaje ST tienen el siguiente significado: Operador de asignación En el lado izquierdo de una asignación se encuentra un operando (variable, dirección) al cual se asigna el valor de la expresión del lado derecho junto con el operador de asignación := Var1 := Var2 * 10; Después de la ejecución de esta línea, Var1 tiene un valor diez veces superior a Var2. Llamada a Bloques de Funciones en el lenguaje ST Una llamada a un Bloque de Funciones en lenguaje ST se realiza escribiendo el nombre de la instancia del Bloque de Funciones y asignando a continuación, y entre paréntesis, los valores que desee de los parámetros. En el siguiente ejemplo se llama a un temporizador con asignaciones para los parámetros IN y PT. A continuación, se asigna la variable de resultado Q a la variable A. La variable de resultado se activa, como en el lenguaje IL, con el nombre del Bloque de Funciones seguido de un punto y del nombre de la variable:

19 CMD_TMR(IN := %IX5, PT := 300); A:=CMD_TMR.Q Instrucción RETURN La instrucción RETURN se puede utilizar para terminar una función que, por ejemplo, es dependiente de una condición. Instrucción IF Con la instrucción IF se puede comprobar una condición y ejecutar instrucciones en función de esta condición. IF <Boolscher_Ausdruck1> THEN <IF_Anweisungen> {ELSIF <Boolscher_Ausdruck2> THEN <ELSIF_Anweisungen1>.. ELSIF <Boolscher_Ausdruck n> THEN <ELSIF_Anweisungen n-1> ELSE <ELSE_Anweisungen>} La parte entre llaves {} es opcional. Si el valor de < Boolscher_Ausdruck1> es TRUE, sólo se ejecuta <IF_Anweisungen>, ninguna de las demás instrucciones. De lo contrario, las expresiones de Bool, empezando por < Boolscher_Ausdruck2>, se evalúan sucesivamente hasta que una de las expresiones tenga el valor TRUE. De ese modo, sólo se evalúan las instrucciones que se encuentran detrás de esta expresión de Bool y delante del siguiente ELSE o ELSIF. Si ninguna de las expresiones de Bool tiene el valor TRUE, se evalúa únicamente <ELSE_Anweisungen>. IF temp<17 THEN heizung_an := TRUE; ELSE heizung_an := FALSE; En este caso, la calefacción se enciende cuando la temperatura baja de los 17 grados; de lo contrario permanece apagada. Instrucción CASE Con la instrucción CASE se pueden reunir varias instrucciones condicionadas con la misma variable de condición en una sola construcción. CASE <Var1> OF <Wert 1>: <Anweisung 1> <Wert 2>: <Anweisung 2>... <Wert n>: <Anweisung n> ELSE <ELSE-Anweisung> END_CASE; Una instrucción CASE se ejecuta según el siguiente esquema: Si la variable en <Var1> tiene el valor <Wert i>, se ejecuta la instrucción <Anweisung i>. Si <Var 1> no tiene ninguno de los valores indicados, se ejecuta <ELSE-Anweisung>.

20 Si ha de ejecutarse la misma instrucción para varios valores de la misma variable, estos valores se pueden escribir uno tras otro, separados por comas, condicionando así la instrucción común. CASE INT1 OF 1, 5: BOOL1 := TRUE; BOOL3 := FALSE; 2: BOOL2 := FALSE; BOOL3 := TRUE; ELSE BOOL1 := NOT BOOL1; BOOL2 := BOOL1 OR BOOL2; END_CASE; Bucle secuencial FOR Con el bucle secuencial FOR se pueden programar procesos repetidos. INT_Var :INT; FOR <INT_Var> := <INIT_WERT> TO <END_WERT> {BY <Schrittgröße>} DO END_FOR; La parte entre llaves {} es opcional. se ejecutará mientras el contador <INT_Var> no sea superior a <END_WERT>. Esto se comprueba antes de la ejecución de, de modo que no se ejecuta nunca si <INIT_WERT> es superior a <END_WERT>. Siempre que se haya ejecutado, <INT_Var> aumenta en <Schrittgröße>. El tamaño de paso puede tener cualquier valor entero. Si falta éste, se ajusta a 1. Por lo tanto, el bucle secuencial se tiene que terminar, ya que <INT_Var> sólo se hace más grande. FOR Zaehler:=1 TO 5 BY 1 DO Var1:=Var1*2; END_FOR; Erg:=Var1; Supongamos que la variable Var1 se haya establecido por defecto con el valor 1; en este caso, después del bucle secuencial FOR, tendrá el valor 32. Bucle secuencial WHILE El bucle secuencial WHILE se puede utilizar igual que el bucle secuencial FOR, con la diferencia de que la condición de cancelación puede ser cualquier expresión de Bool. Esto significa que se indica una condición que, en caso de cumplirse, produce la ejecución del bucle secuencial. WHILE <Boolscher Ausdruck> DO END_WHILE; La ejecución de se repite mientras <Boolscher Ausdruck> sea TRUE. Si <Boolscher Ausdruck> tiene el valor FALSE desde la primera evaluación, no se ejecuta nunca. Si <Boolscher Ausdruck> no tiene nunca el valor FALSE, se repite de forma infinita, con lo cual se produce un error de tiempo de funcionamiento. Nota: el programador ha de asegurarse de que no se produzca ningún bucle secuencial infinito y, para ello, tendrá que modificar la condición en la parte de instrucción del bucle secuencial, por ejemplo, aumentando o reduciendo el conteo de un contador.

21 WHILE Zaehler<>0 DO Var1 := Var1*2; Zaehler := Zaehler-1; END_WHILE Los bucles secuenciales WHILE y son, en cierto sentido, más potentes que el bucle secuencial FOR, ya que no es necesario saber antes de la ejecución el número de pasos del bucle secuencial. En ciertos casos, sólo podrá trabajar con estos dos tipos de bucles secuenciales. No obstante, si el número de pasos de bucle secuencial está claro, se dará preferencia a un bucle secuencial FOR, ya que no se permiten los bucles secuenciales infinitos. Bucle secuencial El bucle secuencial se distingue de los bucles secuenciales WHILE por el hecho de que la condición de cancelación se comprueba solamente después de la ejecución del bucle secuencial, de modo que el bucle secuencial se ejecuta por lo menos una vez, independientemente de la condición de cancelación. UNTIL <Boolscher Ausdruck> END_; se ejecuta hasta que <Boolscher Ausdruck> es TRUE. Si <Boolscher Ausdruck> es TRUE desde la primera evaluación, se ejecuta exactamente una vez. Si a <Boolscher Ausdruck> no se le asigna nunca el valor TRUE, se repite de forma infinita, con lo cual se produce un error de tiempo de funcionamiento. Nota: el programador ha de asegurarse de que no se produzca ningún bucle secuencial infinito y, para ello, tendrá que modificar la condición en la parte de instrucción del bucle secuencial, por ejemplo, aumentando o reduciendo el conteo de un contador. Var1 := Var1*2; Zaehler := Zaehler-1; UNTIL Zaehler=0 END_ Instrucción EXIT Si la instrucción EXIT se encuentra en un bucle secuencial FOR, WHILE o, el bucle secuencial interior se termina, independientemente de la condición de cancelación.