Programación Estructurada

Download Report

Transcript Programación Estructurada

PROGRAMACIÓN
ESTRUCTURADA
INTRODUCCIÓN
Introducción
• A la hora de programar, muchas veces es
necesario ejecutar un mismo conjunto de
sentencias un número determinado de veces, o
que éstas se repitan mientras se cumplan
ciertas condiciones.
• También puede ocurrir que queramos ejecutar
una u otra sentencia dependiendo de las
condiciones fijadas o simplemente forzar que
unas se ejecuten siempre antes que otras.
Introducción
• Las estructuras son representaciones
gráficas de las expresiones de los lazos y
casos los lenguajes de programación
basados en texto.
• Use las estructuras en el diagrama de
bloques para repetir bloques de código y
ejecutar código condicionalmente o en un
orden específico.
Introducción
• Al igual que los otros nodos, las
estructuras tienen terminales que los
conectan con otros nodos de diagrama, se
ejecutan automáticamente cuando los
datos de entrada están disponibles, y
proveen datos de salida cuando la
ejecución se completa
Introducción
• La sección del bloque de diagrama dentro
de la estructura es llamada subdiagrama.
• Las terminales que alimentan datos de
entrada o de salida son llamadas túneles.
• Un túnel es un punto de conexión en el
borde de la estructura.
Introducción
• Para ello LabVIEW dispone de estructuras
fácilmente diferenciables por su apariencia
y disponibles en la opción STRUCTURES
del menú FUNCTIONS de la ventana
DIAGRAM
Programación estructurada
•
•
•
•
•
For Loop
While Loop
Case structure
Sequence structure
Formula Node.
Programación estructurada
• For Loop — Ejecuta un subdiagrama un
determinado número de veces.
• While Loop — Ejecuta un subdiagrama
hasta que una condición es encontrada.
Programación estructurada
• Case structure — Contiene múltiples
subdiagramas, solamente uno de los
cuales se ejecuta dependiendo del valor
de entrada para la estructura.
• Sequence structure — Contiene uno o
mas subdiagramas, los cuales se ejecutan
en un orden secuencial.
Programación estructurada
• Formula Node — Realiza una operación
matemática basada en una entrada
numérica.
PROGRAMACIÓN
ESTRUCTURADA
ESTRUCTURAS INTERACTIVAS
Estructuras interactivas
• FOR LOOP
• WHILE LOOP
FOR LOOP
• Un FOR LOOP ejecuta un subdiagrama
un determinado número de veces.
• Su equivalente en lenguaje convencional
es:
FOR i=0 TO N-1
Ejecuta programa.
FOR LOOP
• Al colocar un FOR LOOP en la ventana
DIAGRAM observamos que tiene dos
terminales:
• Terminal contador
• Terminal de iteración
FOR LOOP
• Terminal contador: Indica el número de
veces que se ha repetido el subdiagrama
creado en el interior de la estructura. El
valor del contador se fijará externamente.
FOR LOOP
• Terminal de iteración: Indica el número de
veces que se ha ejecutado la estructura:
Cero durante la primera iteración, uno
durante la segunda y así sucesivamente
hasta N-1.
WHILE LOOP
• Similar al ciclo Haga (Do) o al ciclo Repitahasta (Repeat-Until) en lenguajes de
programación basados en texto, un ciclo
Mientras, ejecuta un subdiagrama hasta
que la condición sea cumplida.
DO Ejecutar subdiagrama
WHILE condición es TRUE (o FALSE)
WHILE LOOP
La estructura WHILE LOOP tiene dos
terminales:
• Terminal condicional
• Terminal de iteración
WHILE LOOP
• Por defecto, el comportamiento y
apariencia es CONTINUE IF TRUE.
Significa que se ejecuta el subdiagrama
hasta que recibe un valor FALSE.
WHILE LOOP
• Se puede cambiar el comportamiento y la
apariencia a STOP IF TRUE. Esto es, el
subdiagrama se ejecuta hasta que recibe
un valor TRUE.
WHILE LOOP
• Dado que el VI checa la terminal
condicional al menos una vez, el WHILE
LOOP se ejecutará al menos una vez.
Pasos para crear LOOP’s
1. Seleccionar el ciclo
2. Encerrar código que va a ser repetido
3. Arrastrar nodos adicionales y luego cablear
Túneles
• Son puntos de acceso para entrada o
salida de datos.
• Pueden ser de dos tipos:
– Indexado
– Simple
Túneles
• Ejemplo de Indexado
– Genera N valores
Túneles
• Ejemplo de No Indexado
– Genera el último valor, dato N
PROGRAMACIÓN
ESTRUCTURADA
REGISTROS DE
DESPLAZAMIENTO
SHIFT REGISTERS IN LOOPS
• Los registros de desplazamiento son
variables locales disponibles tanto en
el FOR LOOP como en el WHILE
LOOP, que permiten transferir los
valores del final de una iteración al
principio de la siguiente.
SHIFT REGISTERS IN LOOPS
• Inicialmente el SHIFT REGISTER
tiene un par de terminales colocados
a ambos lados del LOOP:
SHIFT REGISTERS IN LOOPS
• El terminal de la derecha almacena el
valor final de la iteración hasta que una
nueva hace que este valor se desplace al
terminal de la izquierda quedando en el de
la derecha el nuevo valor.
SHIFT REGISTERS IN LOOPS
• Un mismo registro de desplazamiento
puede tener más de una terminal en el
lado izquierdo, para añadirlo, escogemos
la opción ADD SHIFT REGISTER por
medio del botón derecho del ratón.
• Cuantos más terminales tengamos en el
lado izquierdo más valores de iteraciones
podremos almacenar.
SHIFT REGISTERS IN LOOPS
• Un mismo LOOP puede tener varis registros de
desplazamientos siendo conveniente
inicializarlos, para que los terminales de la
izquierda tengan el valor deseado cuando se
produzca la primera iteración.
• Al finalizar la ejecución de todas las iteraciones
el último valor quedará en el terminal de la
derecha; uniéndolo a un indicador obtendremos
su valor
Actividades
• Realice las actividades 3-1 a la 3-4
PROGRAMACIÓN
ESTRUCTURADA
ESTRUCTURAS DE CONTROL
Estructuras de control
• Este tipo de estructuras se diferencia de
las iterativas en que puede tener múltiples
subprogramas, de los cuales solamente
uno es visible a la vez.
Estructuras de control
• En la parte superior de cada estructura
existe una pequeña ventana que muestra
el identificador del subprograma que se
esta mostrando.
Estructuras de control
• A ambos lados de esta ventana existen
dos botones que decrementan o
incrementan el identificador de forma que
podamos ver el resto de subdiagramas.
CASE
• La estructura CASE consta de un terminal
llamado selector y un conjunto de
subdiagramas, cada uno de los cuales
está adentro de un CASE o suceso y
etiquetado por un identificador del mismo
tipo que el selector.
CASE
• En este caso la estructura CASE engloba dos
sentencias diferentes de otros lenguajes
convencionales:
1. IF condición TRUE THEN ejecutar CASE TRUE
ELSE ejecutar CASE FALSE
2. CASE SELECTOR OF
1: ejecutar CASE 1;
…
n: ejecutar CASE n
END
CASE
• CASE no cuenta con los registros de
desplazamiento de las estructuras
iterativas pero sí podemos crear túneles
para sacar o introducir datos.
• Si un CASE o suceso proporciona un dato
de salida a una determinada variable será
necesario que todos los demás también lo
hagan; si no ocurre de esta manera será
imposible ejecutar el programa.
CASE
• Si el tipo de selector es boleano, la
estructura tiene un caso TRUE y un caso
FALSE.
• Si el terminal selector es un entero, la
estructura puede tener muchos casos
CASE
• En cualquier caso siempre hemos de
cubrir todo el rango posible de valores, y
al menos ha de haber un CASE por
defecto, el cual se ejecutará en caso que
el selector no corresponda a ninguno de
los previstos.
CASE
CASE
Seleccionando el
CASE, y dando
click con el
derecho,
encontramos las
siguiente opciones:
Estructuras de Secuencia
• En la subpaleta de control de ejecución (Execution
Control) de la paleta de funciones.
• Ejecuta diagramas secuencialmente.
• Presionar botón derecho del mouse para agregar un
nuevo cuadro (frame).
Estructuras de Secuencia
• En un lenguaje basado en texto ,las
declaraciones del programa se ejecutan
en el orden en que aparecen.
• En un flujo de datos, un nodo se ejecuta
cuando los datos están disponibles en
todas sus terminales de entrada.
Estructuras de Secuencia
• Algunas veces es difícil determinar el
orden exacto de ejecución. A menudo,
ciertos eventos deben suceder antes que
otros.
• Cuando usted necesite controlar el orden
de la ejecución del código en su diagrama
de bloques, usted puede utilizar una
Sequence Structure (estructura de
secuencia).
Estructuras de Secuencia
• Una estructura SEQUENCE contiene uno o mas
subprogramas o FRAMES, los cuales ejecuta en
orden secuencial.
• LA etiqueta del FRAME en la parte superior de
la estructura es similar a la etiqueta de la
estructura CASE. La etiqueta del FRAME
contiene un número de FRAME en el centro y
flechas a los lados para incrementa o
decrementar los FRAMES disponibles.
Estructuras de Secuencia
• Por ejemplo, en el selector de secuencia,
0 es el número de FRAME actual y [0..2]
es el rango de FRAMES.
Estructuras de Secuencia
• Cada subprograma estará contenido en
un FRAME o marco y éstos se ejecutarán
en orden de aparición: Primero el FRAME
0, luego el 1 y así sucesivamente hasta el
último.
Estructuras de Secuencia
• Si un FRAME aporta un dato de salida a
una variable los demás no tendrán porque
hacerlo.
• Pero tendremos que tener en cuenta que
el dato estará disponible cuando se
ejecute el último FRAME y no cuando se
ejecute el FRAME que transfiere el dato.
Estructuras de Secuencia
• Para pasar datos de un FRAME a
cualquier FRAME subsiguiente, use un
terminal local de secuencia.
Estructuras de Secuencia
Una flecha señalando hacia fuera aparece
en el terminal local de secuencia del
FRAME que contiene el dato fuente.
La terminal en FRAMES subsiguientes
contienen una flecha señalando hacia
adentro, indicando que la terminal es un
dato fuente para ese FRAME.
Estructuras de Secuencia
Estructuras de Secuencia
Seleccionando la
SEQUENCE, y
dando click con el
derecho,
encontramos las
siguiente opciones:
PROGRAMACIÓN
ESTRUCTURADA
INTRODUCCIÓN DE FÓRMULAS
Nodos de Formula
• Algunas veces es preferible programar
expresiones matemáticas con funciones
basadas en texto, en lugar de hacerlo con
iconos (los que pueden tomar mucho
espacio en el diagrama).
Nodos de Formula
• Nodo de Formula:
Nos permite implementar ecuaciones
complicadas usando instrucciones
basadas en texto.
• Localizada en la subpaleta de Structures
(estructuras).
Nodos de Formula
– La cajas pueden cambiar de tamaño para
introducir formulas algebraicas directamente
a los diagramas de bloque.
– Para agregar variables, se presiona el botón
derecho del mouse y se escoge la opción de
agregar entrada (Add Input) o agregar salida
(Add Output). Hay que nombrar las variables
de la misma manera en que serán usadas en
la formula. (Los nombres son sensibles a
capitalización)
Nodos de Formula
Nodos de Formula
– Las declaraciones deben terminar con un
punto y coma (;)
– Al usar varias formulas en un solo nodo de
formula, cada variable asignada (las que
aparecen en la parte izquierda de cada
formula) deben de tener una terminal de
salida en el nodo de formula. Sin embargo,
estas terminales de salida no necesitan ser
cableadas
•
•
•
•
Nodos de Formula
En la subpaleta de Estructuras (Structures).
Implementa ecuaciones complicadas.
Variables creadas en los márgenes
Nombres de variables son sensibles
(mayúsculas/minúsculas)
• Cada declaración debe de terminar con un punto y coma(;)
• La ventana de ayuda muestra las funciones disponibles.
Note el Punto y coma
PROGRAMACIÓN
ESTRUCTURADA
VARIABLES
LOCALES Y GLOBALES
Introducción
• Las variables son imprescindibles en cualquier
tipo de problemas, ya que permiten almacenar
la información necesaria para su resolución.
• En LabVIEW todos los controles introducidos en
el panel frontal que generan una terminal en la
ventana Diagrama van a ser variables,
identificables por el nombre asignado en la
etiqueta.
Introducción
• Puede ocurrir que se quiera utilizar el valor de
cierta variable en otro subprograma o en otro VI
o, simplemente, que queramos guardar un
resultado intermedio.
• La forma más sencilla de hacerlo es generando
variables locales y/o globales dependiendo de
su aplicación.
Variables Locales
• En las variables locales los datos se
almacenan en algunos de los controles o
indicadores existentes en el panel frontal
del VI creado.
Variables Locales
• Con una variable local se puede escribir o
leer uno de los controles o indicadores del
panel frontal del VI creado.
• Escribir a una variable local tiene el mismo
resultado de pasar un dato a la terminal,
excepto que se puede escribir aún si es
control, o leerlo aún si es un indicador.
Variables Locales
• Las variables locales
están disponibles en
el menú
STRCTURES de la
paleta de funciones.
Variables Locales
• Una variable local
nueva tiene un nodo
como el siguiente.
Variables Locales
• Las variables locales
disponen del
siguiente menú
Variables Locales
• VISIBLE ITEMS: Oculta o visualiza la
etiqueta de identificación de la estructura.
• FIND: Permite encontrar el control y
terminal del cual procede la variable local.
• CHANGE TO READ/TO WRITE: Permite
escoger entre leer o escribir al control
• SELECT ITEM: Visualiza una lista con el
nombre de todos los controles existentes
en el panel frontal.
Variables Locales
• DESCRIPTION AND TIP: Permite añadir
comentarios
• SET BREAK POINT: Pone un punto de
ruptura para depuración
• CREATE: Crea un control, indicador o
constante conectados a esa local
• REPLACE: Sustituye la variable local por
cualquier otra función.
Variables Locales
• Como ejemplo si se tienen las siguientes variables
• Para cada variable local, seleccionamos un ítem.
Variables Locales
• La siguiente
ilustración muestra
como múltiples
variables locales
acceden al mismo
control, cada uno
tiene un diferente
sentido, tanto leer
como escribir.
Variables Locales
• La variable AGE se
usa dos veces en el
diagrama, una para
escribir y otra para
leer de ella.
Variables Globales
• Las variables globales son un tipo
especial de VI, que únicamente dispone
de panel frontal, en el cual se define el
tipo de dato de la variable y el nombre de
identificación imprescindible para después
poderse referir a ella.
Variables Globales
• Cuando escogemos
la función GLOBAL
del menú
STRUCTURE,
creamos un nuevo
terminal en el
diagrama
Variables Globales
• El terminal que
aparece corresponde
a un VI que
inicialmente no
contiene ninguna
variable
Variables Globales
• Para colocar las variables, se hace doble clic en
el ícono
Variables Globales
• Para usar la variable global en un diagrama de
bloques, habrá que asociarla a un control
previamente definido el panel de control.
Actividades
• Realice las actividades 3-5 a la 3-8
Ejercicio complementario 3.1
• Hacer un programa que permita encender
secuencialmente doce LED’s.
• Apóyese en la guía del libro LabVIEW 6i
Ejercicio complementario 3.2
• Construya un VI que funcione como calculadora.
El panel frontal debe tener dos controles para
introducir los datos, otro para indicar el tipo de
operación (suma, resta multiplicación y división)
y un indicador que muestre el resultado