Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Grupo 51
EL CICLO FOR
El ciclo for es una estructura de control utilizada en la gran mayoría
de los lenguajes de programación, que permite establecer el número
mínimo de iteraciones. Sus elementos son la variable de control,
inicialización de la variable de control, condición de control,
incremento, y cuerpo. La variable de control es la variable con la que
el bucle va a trabajar, esta misma es la que se inicializa para
establecer un valor predeterminado con el que va a iniciar la
iteración. Su uso se orienta a vectores, permite agregar, modificar o
eliminar datos según el índice.
FOR CONDICIONAL
Se dice que un ciclo for es condicional cuando éste tiene una
terminal de paro, se trata de una terminal a donde se puede conectar
un botón de stop o una condición para que el programa se detenga
en determinado momento sin importar que no se hayan ejecutado el
número de repeticiones establecidas. Esta terminal de paro se puede
agregar dando clic derecho sobre el ciclo for y posteriormente clic en
conditional terminal.
EL CICLO WHILE
A diferencia del For, el ciclo While ejecuta determinada acción hasta
que el programa termine su función o hasta que el usuario decida
detener el programa. Si el programa no tiene un fin determinado, el
programa se ejecutará infinitamente o hasta que el usuario lo
detenga. El ciclo While no funciona si no se conecta un botón de stop
o una condición de paro a la terminal de stop, si no ocurre esto, será
imposible ejecutar el programa.
Entonces una forma simple de resolverlo, es usando la función
square, que eleva al cuadrado cualquier número que se le conecte,
entonces, se usan dos, uno para cada lado del triángulo. Éstos se
suman y se le saca raíz cuadrada al resultado, usando la función
square root. Ambas funciones se encuentran en el menú Numeric. El
resultado se imprime en el indicador numérico. Nótese que el ciclo
while tiene un botón de stop conectado a la terminal de paro, sin
esto, el programa no se ejecuta. Hasta aquí todo va bien, pero hay
un pequeño error, que en este programa puede no causar problemas,
pero al trabajar con programas grandes, puede ocasionar muchos
problemas. Es necesario colocar un Wait.
DISABLE STRUCTURE
Estas estructuras también han aparecido recientemente, se usaron
por primera vez en la versión 8.0. Sirven para comentar el código,
por lo que son muy útiles en la depuración de programas. Hay dos
tipos de estructuras de deshabilitación: la incondicional y la
condicional. La incondicional es una estructura que, como CASE,
STACKED SEQUENCE o EVENT se compone de varios subdiagramas.
Uno de ellos estará habilitado y el resto estarán deshabilitados,
lógicamente el habilitado será el único que se ejecute y el resto no
llegarán a compilarse. Para cambiar el subdiagrama habilitado hay
que hacer uso del menú contextual de la estructura.
La condicional funciona de la misma forma que la anterior, sólo que
el diagrama habilitado se selecciona de forma automática
dependiendo del valor de unos símbolos asociados al proyecto.
Algunos símbolos predefinidos son OS y CPU. También se pueden
definir nuevos símbolos en la ventana de propiedades del proyecto
correspondiente.
FORMULA NODE:
La estructura FORMULA NODE puede encontrarse tanto en el menú
Programming > Structures como en Mathematics > Scripts &
Formulas.
A diferencia de las anteriores, FORMULA NODE no controla el flujo de
ejecución, sino que evalúa una expresión matemática escrita como
texto con una sintaxis parecida al lenguaje C. El texto consistirá en
una serie de sentencias finalizadas por el símbolo «;». Las sentencias
normalmente son asignaciones que usan operadores o funciones,
aunque también pueden ser declaraciones de variables, bucles o
sentencias de condición. También pueden insertarse comentarios de
la misma manera que en C.
Casi todas las funciones que se pueden usar dentro de un FORMULA
NODE tienen su equivalente como VI. Éstas son: abs(x), acos(x),
acosh(x), asin(x), asinh(x), atan(x), atan2(x,y), atanh(x), ceil(x),
ci(x), cos(x), cosh(x), cot(x), csc(x), exp(x), expm1(x), floor(x),
getexp(x), gamma(x), getman(x), int(x), intrz(x), ln(x), lnp1(x),
log(x), log2(x), max(x,y), min(x,y), mod(x,y), pow(x,y), rand( ),
rem(x,y), si(x), sec(x), sign(x), sin(x), sinc(x), sinh(x),
sizeOfDim(array,dim), spike(x), sqrt(x), step(x), tan(x), tanh(x).
Las estructuras son: If (condición) sentencias1 else sentencias2 do
sentencias while (condición) while (condición) sentencias for
(asignación; condición; sentencia) sentencias switch (condición) lista
de casos Otras palabras reservadas son: break, case, continue,
default, pi. Para más información puede consultarse la ayuda.
Presionando el botón secundario en los bordes de la estructura
pueden crearse variables de entrada o de salida.
En el ejemplo dado por la figura 2-24 se tiene la fórmula de Herón
para calcular la superficie de un triángulo a partir de sus lados, en
ella hay tres entradas (a, b, c) que corresponden a la longitud de los
lados del triángulo, un resultado intermedio que se trata como una
salida más (p) y una salida que es la superficie (S).
Tipos de datos:
En el Panel Frontal se pueden colocar controles e indicadores. Como
se ha dicho en capítulos anteriores, los controles son el punto de
entrada de información al VI y los indicadores de salida. Los controles
e indicadores tendrán su representación en el Diagrama de Bloques,
donde podrán ser cableados para leer o escribir su valor. En el
Diagrama de Bloques además se podrán tener también constantes.
En el menú contextual de estos elementos hay opciones para cambiar
de un tipo a otro, en la figura 3-1 se ha marcado la opción para
cambiar un control de tipo string a un indicador del mismo tipo.
Dependiendo del tipo de datos y del tipo de terminal se tendrán unas
opciones u otras, las más importantes para cada tipo de datos son:
En los controles de tipo booleano se tiene la opción de Mechanical
Action que les permite actuar como pulsadores (latch) o interruptores
(switch).
Bolean:
Los datos de este tipo sólo pueden tener dos posibles valores:
verdadero (TRUE) o falso (FALSE). Debido a esto suelen usarse en
controles con forma de botón o pulsador. Cada dato booleano se
almacena en memoria en un byte completo, si este byte tiene todos
sus bits a cero, el dato tendrá el valor FALSE y cualquier otro valor
del byte hará que el dato pase a TRUE.
En los controles booleanos se puede seleccionar su Mechanical
Action, como mostraba la figura 3-2. Ya se dijo que los switch son
equivalentes a interruptores y los latch a pulsadores. En los dibujos
que representn cada acción hay unas letras a la izquierda: «m», «v»
y «RD». La primera de ellas («m») simboliza la acción mecánica que
hace el usuario sobre el control. La segunda («v») representa el
cambio de estado que sufre el control. Finalmente, la tercera («RD»)
sólo se puede ver en los de tipo latch y alude al momento en que,
desde el Diagrama de Bloques, el valor del control es leído. Como se
puede ver en los iconos tipo latch, el control tiene un “estado
estable” y uno “aestable”, cuando se activa el control se pasa del
estado estable al aestable durante un tiempo, y vuelve al estable
inmediatamente después de que el valor del control sea leído.
Numeric:
Al trabajar con datos numéricos hay que distinguir entre números
enteros, números racionales y complejos.
Los números enteros tienen asociado el color azul y puede elegirse su
tamaño (8, 16, 32 o 64 bits), si se emplea un bit de signo (signed o
unsigned) y su representación (binario, octal, decimal, hexadecimal).
Los controles de tipo Enum y Ring también son numéricos. Se trata
de listas que asocian una cadena de caracteres a un valor numérico.
Mediante su menú contextual se puede acceder a Edit Item para
definir la lista de valores. La principal diferencia entre estos dos tipos
es que en los enum el texto se considera también parte del control,
por lo que para conectar un control o constate enum a un indicador
enum se necesita que ambos tengan ítems con los mismos nombres,
mientras que con los ring no es necesario.
En la figura 3-7 pueden verse dos constantes, el símbolo que
aparece a su izquierda (una letra «d» o «x») es su representación,
este ítem puede activarse con la opción radix en el menú contextual
Visible Items; la primera constante es decimal y la segunda
hexadecimal. La primera está conectada a un indicador que visualiza
datos con signo de 32 bits (I32) mientras que la segunda a un
indicador sin signo de 16 bits (U16).
Sting:
Los strings son cadenas de caracteres. LabVIEW asocia el color rosa a
este tipo de datos. En memoria se almacenan como un puntero a
cuatro bytes que indican el tamaño y a continuación los valores de
los caracteres, un byte por cada uno, así el texto «hola» se
almacenará como «0000 0004 686F 6C61», siendo 4 el tamaño y
68h, 6Fh, 6Ch y 61h los códigos ASCII de cada una de las letras del
texto anterior.
Los strings son cadenas de caracteres. LabVIEW asocia el color rosa a
este tipo de datos. En memoria se almacenan como un puntero a
cuatro bytes que indican el tamaño y a continuación los valores de
los caracteres, un byte por cada uno, así el texto «hola» se
almacenará como «0000 0004 686F 6C61», siendo 4 el tamaño y
68h, 6Fh, 6Ch y 61h los códigos ASCII de cada una de las letras del
texto anterior.
Transformaciones número-texto:
Las transformaciones de números a texto y viceversa son muy
usadas en LabVIEW. Muchos VIs trabajan con datos de tipo texto
(strings) como por ejemplo los de GPIB, sin embargo, puede ser que
los datos que se envían o reciben sean números y necesiten
convertirse para realizar algún cálculo con ellos. En la paleta
Programming > String > String/Number Conversion se encuentran
varios VIs para realizar estas transformaciones.
En la primera fila se encuentran las funciones para pasar de número
a texto, la segunda fila es para pasar de texto a número. El formato
de los números puede ser entero o de coma flotante, decimal,
hexadecimal u octal. Los dos VIs de la derecha son Format Value y
Scan Value, estos VIs tienen un terminal llamado format string en el
que se puede especificar el formato de la conversión; para más
información sobre la sintaxis de este string consultar la ayuda de
LabVIEW.
En el menú string también aparecen dos funciones llamadas Scan
From String y Format Into String. Estos VIs realizan funciones de
escaneo, transformaciones y concatenación. Básicamente son una
herramienta configurable con la que transformar números y textos a
otro formato. Todos los VIs de esta “familia” trabajan de forma
parecida a la función sprintf del lenguaje C; tienen un terminal
común, el format string que sirve para configurar esa transformación
mediante unos códigos precedidos del símbolo «%», los códigos más
habituales son «%s» para strings, «%f» para números en coma
flotante, «%. xf» para indicar el número de decimales de los números
flotantes, «%d» para enteros decimales, etc.
Path:
Los path sirven para indicar rutas relativas o absolutas a directorios o
ficheros tanto de la máquina local como de otra en red.
Path Al guardarse en memoria se almacena un puntero a una
estructura que se forma del número de partes que contiene la ruta
(subdirectorios), después cada parte de la ruta se guarda como un
string, de esta forma se consigue que la ruta sea independiente de la
plataforma, es decir, la misma ruta podría ser entendida por
LabVIEW funcionando sobre Windows, Unix o MacOS.
Type cast:
Hay dos tipos de conversión: la coercion (implícita) y la cast
(explícita). La primera la hace automáticamente el compilador. Para
realizar la segunda hay que utilizar alguna instrucción, antes se han
visto varias para transformar de un tipo concreto a otro tipo también
concreto. Type Cast es la función más genérica para transformar
datos de un tipo a otro, viene dada por la figura 3-26.
El terminal x es el dato a convertir y type el tipo al que será
convertido, por defecto lo considera string, pero se pueden conectar
otros. Esta función no realiza ningún tipo de comprobación, así que al
usarla hay que tener en cuenta que las entradas type y x sean
compatibles, sino el resultado puede no ser el esperado.
Por ejemplo, este VI podría sustituir a String To Byte Array si en el
terminal type se conecta un array de enteros de ocho bits.
Variables locales:
Para llevar un dato desde/hacia un control/indicador se han usado
cables. A veces no se puede realizar el cableado, como en bucles
funcionando en paralelo y otras veces sencillamente se quiere escribir
en un control o leer de un indicador. Para todas estas situaciones
sirven las variables locales.
Las variables locales están asociadas a los controles e indicadores
presentes en el Panel Frontal de un VI. Mediante ellas se puede leer y
escribir el valor de ese control o indicador.
Para crear una variable local se puede ir a la paleta Programming >
Structures > Local Variable, después asociar esa variable a uno de
los controles o indicadores que existen mediante el menú contextual
> Select Item.
https://www.youtube.com/watch?v=7n0sB83Q3Is
https://www.youtube.com/watch?v=05dJ-6AbSs4
https://www.youtube.com/watch?v=WgdESU_CTK0
Colaborativo
Iván Alexis Gonzales
El usuario
decide mover la
casilla vacía en
las posiciones
El usuario
selecciona el tipo
de armado
Se muestra los
Matriz generada y actualizada
movimientos que
con los movimientos Se le da las gracias
realizo y la
al usuario por usar
puntuación
el programa
obtenida
REFERENCIAS BIBLIOGRAFICAS