Anda di halaman 1dari 11

1

Informe No.2

PROGRAMACIÓN ESTRUCTURADA EN LabVIEW

Resumen— Esta práctica busca desarrollar los a. De las estructuras iterativas while y for
conceptos básicos de la programación estructurada en LabVIEW, ¿Cuál se ejecuta por lo
en LabVIEW. Se proponen una serie de ejercicios menos una vez?
para ser implementados en LabVIEW y en C, de tal
manera que se logre interpretar algunas funciones Dada la diferencia entre las estructuras while y for
básicas de los programas mencionados. en LabVIEW, y en general en cualquier programa
computacional, en donde en la estructura while el
Palabras clave—Estructuras iterativas, registros de ciclo se repite hasta que una condición determinada
desplazamiento, acciones mecánicas, control se cumpla, por esta razón en esta estructura la
booleano, switch, latch, tipos de datos, estructura ejecución se realizara al menos una vez, de tal
manera que se pueda evaluar la condición dada.
iterativa.
b. Explique cómo se adicionan uno o más
Abstract—This practice seeks to develop the basic registros de desplazamiento en las
concepts of structured programming in LabVIEW. estructuras While y For. ¿Para qué
A series of exercises are proposed to be sirven?
implemented in LabVIEW and C, in order to
interpret some basic functions of the mentioned Una forma de adicionar un registro de
programs. desplazamiento en las estructuras While y For es:
Keywords—iterative structures, displacement
registers, mechanical actions, Boolean control,  Dada cualquiera de las estructuras
switch, latch, data types, iterative structure. mencionadas, se da click derecho en
cualquier parte alrededor de los lados
INTRODUCCIÓN verticales, como se observa en la siguiente
figura.
LabVIEW es un lenguaje de programación gráfico
que comparte algunas características con lenguajes
de programación no gráficos como lo son C, Pascal,
entre otros, y algunos aspectos de lenguajes de
definición de hardware como VHDL y Verilog. Este
combina la generalidad y el poder de estructuras de
datos de programación tradicionales tales como
bucles y operadores aritméticos con la capacidad de
los lenguajes de definición de hardware para realizar
múltiples tareas simultáneamente.
 Aparecerá un menú, en donde se selecciona
Add Shift Register.
1. RESPUESTAS A LAS PREGUNTAS
PROPUESTAS
2

Con esta acción mecánico los controles booleanos


se comportan de una forma similar a un interruptor
Una vez se ha selecciona Add Shift Register tal como lo conocemos, por ejemplo el de un
aparecerán los siguientes símbolos laterales, y de bombillo de nuestra casa, en donde la variable
esta manera se habrá agregado esta importante booleana cambia de estado precisamente en el
herramienta. momento en el cual el control es presionado por el
usuario.

El registro de desplazamiento se utiliza para pasar


datos entre iteraciones de la estructura, de esta
manera se puede tener acceso a datos desde Con esta acción la variable booleana cambia de
iteraciones anteriores, los cuales pueden ser estado en momento en el cual el control booleano
utilizados dada la necesidad del usuario. es liberado.

c. ¿Cuáles son las acciones mecánicas que se


pueden aplicar a un control booleano?
Explique cada una de ellas.
d.

Las acciones mecánicas a un control booleano


permite que los paneles frontales de los
instrumentos virtuales se acerquen más en
apariencia al instrumento físico que representan, de
Con eta acción la variable booleana cambia en el
esta manera se puede tener un mayor control sobre
preciso momento que es accionada y cuando se
las tareas a desarrollar, estas acciones mecánicas se
libera retorna al estado inicial, en otras palabras la
dividen en dos tipos:
variable cambiara de estado mientras permanezca
presionado el control (ratón).
 Tipo Switch En los esquemas anteriormente presentados m
representa el comportamiento del control (ratón
. 3

cuando se da clic), v representa el comportamiento


de la variable booleana.

 Tipo Latch

Con este mecanismo la variable booleana cambia


Cuando el control es presionado, este valor se
retiene hasta que el VI (instrumento virtual) lo lee o
el usuario lo libera.

En este tipo de mecanismos, m y v representan lo


mismo que en los mecanismos tipo switch, y RD
Cuando el control es presionado, este permanecerá muestra las lecturas que el VI hace a la variable
presionado hasta que LabVIEW lea el valor del booleana.
control, una vez esto sucede retorna al estado que se
encontraba. e. ¿Cuál es la diferencia entre la función
wait y la función Tick Count?
El valor del control cambiara cuando este sea
presionado, luego cuando LabVIEW lea el valor, La función de tiempo wait en una estructura
volverá a su estado predeterminado. iterativa permite que se haga una espera de un
tiempo especificado por el usuario en milisegundos
Esta acción es especial para truncar la acción de un (reloj interno del sistema operativo que se esté
While loop. utilizando) para ejecutarse la próxima iteración, es
decir si una iteración toma 10 ms y se ha
especificado en la función time 100 ms, se tendrá
una espera de 90 ms para la ejecución de la próxima
iteración, teniéndose con esta función la
posibilidad de obtener el dato del temporizador
interno en milisegundos.

Con la función de tiempo Tick Count se puede


únicamente acceder al temporizador interno del
sistema operativo con el que estemos trabajando.
El funcionamiento de este mecanismo es idéntico
al anteriormente presentado, con la diferencia que
el control actúa cuando el usuario libera el control f. ¿Para qué sirve la estructura sequence
(click del ratón). de LabVIEW?
También es muy utilizado para detener ciclos while La ejecución de los subprogramas en LabVIEW se
y para botones de cuadro de dialogo. realizan de forma paralela por defecto, en algunas
ocasiones es oportuno, o se requiere que esto no sea
así, teniéndose la necesidad de definir un orden en
la ejecución de los subprogramas, para lo cual se
utiliza la estructura sequence.
4

h. ¿Qué función de LabVIEW permite


En otras palabras la estructura sequence permite la realizar estructuras tipo if?
ejecución de subprogramas de forma ordenada y
controlada. El equivalente en LabVIEW de la estructura if es la
estructura Case, la cual por defecto tiene un
formato de True o False.
g. ¿Cuáles son los tipos de datos que se
pueden representar en LabVIEW y i. ¿Para qué sirve la estructura case?
cuáles son sus rangos de valores máximos
y mínimos? Una estructura case es un mecanismo de control de
ramificación que permite diferentes ejecuciones
 Datos tipo numéricos dependiendo del valor de la etiqueta. La estructura
case es análoga al bloque case en Java o C ++ en el
Los cuales se subdividen, según el siguiente cuadro que, sobre la base de que el valor del caso dado
dado el tipo de número y el rango o el número de coincide con la variable de entrada de tal manera
bits que utiliza para almacenar el dato. que se ejecute el código asignado.

Se clasifican a través de un color específico.


2. REPORTE DE LA PRÁCTICA
REALIZADA

A partir de la lectura de los capítulos 1 y 2 del


documento guía [1], se realza el siguiente
procedimiento durante la práctica en el laboratorio:

2.1. Conceptos básicos

a. ¿Cuáles son las partes de un programa de


computador?

Dado un conjunto de instrucciones en un programa


de computación, se evidencian por su función,
localización y delimitación tres partes
fundamentales.

 Entrada de datos:

Lo componen todas aquellas instrucciones que


toman información (datos) de un dispositivo
externo, almacenándolos en la memoria central para
que puedan ser procesados.

 Datos tipo string  Proceso o algoritmo:

 Datos tipo Booleano Está formado por las instrucciones que modifican
los objetos a partir de su estado inicial hasta el
 Datos tipo Dinámico estado final, dejando estos disponibles en la
memoria central.
. 5

i. ¿Cuáles son las dos formas de realizar


 Salida de resultados: Type Casting en C/C++? Muestre un
ejemplo de cada una.
Conjunto de instrucciones que toman los datos
finales de la memoria central y los envía a los  (tipo) expresión.
dispositivos externos.

b. ¿Cuáles son los tipos de datos escalares Por ejemplo:


más comunes en C/C++? float a = 10.2;
int b, c = 5;
Tipo entero: b = (int)(a + c); // convierte a int por truncamiento. Asigna a b
el valor 15
c = int (a); // asigna a c el valor 10
Representa números enteros con o sin signo, que
estarán compuestos por los dígitos del 0 al 9, Si en las instrucciones anteriores no realizamos el
pudiendo ser precedidos por los signos + o -, type casting el compilador avisará de la pérdida de
ejemplo: 1, 15, -12, etc. Para ser definido en C se precisión y no nos dejará realizar la compilación.
debe anteponer la palabra reservada del tipo al
identificador de la variable, en este caso la palabra
reservada es int.  tipo(expresión)
Tipo carácter:
Por ejemplo. Dadas las variables:
Se utiliza para representar un carácter int i = 7;
perteneciente a un determinado código utilizado por float f = 8.5;
el ordenador (normalmente el código ASCII), la
palabra reservada para este tipo de dato es char. La expresión (i + f) % 4 no es válida, ya que (i + f)
produce un resultado en coma flotante.
Tipo real: Esto se puede solucionar con un casting:
((int) (i + f)) % 4.
Utilizado para representar números reales con
decimales, la palabra reservada es:
Sea ahora la expresión ((int) f) % 3, es una
float: representa números en coma flotante (32 expresión válida, que da como resultado el valor 2,
bits). pero debemos tener en cuenta que lo que se
convierte en entero es el valor de f, y sólo para esta
double: representa números con coma flotante de expresión, ya que después f sigue teniendo el valor
doble precisión (64 bits). 8.5.
c. ¿Qué es Type Casting?
ii. ¿Cómo se convierte un dato tipo int al
El type casting es una forma de hacer que un tipo de tipo double en C/C++?
variable, se convierta en otro tipo, por ejemplo, si
se desea almacenar un valor tipo long, en un entero
simple, se puede hacer el type cast de long a int. Para convertir un dato tipo int al tipo double se
En general, el uso del casting es obligatorio cuando antepone (doublé) a la variable tipo int.
se hacen asignaciones con pérdida de precisión
6

iii. ¿Cómo se convierte un dato tipo char al  While,


tipo int en C/C++?
Dicha estructura repite una serie de acciones
Todos los dígitos numéricos son a la vez caracteres mientras se cumpla una condición.
ASCII, por ejemplo el valor del carácter „0‟ (cero)
es 48. Sintaxis
Siendo n un digito numérico y c un carácter
numérico, para pasar de carácter a número: while ( expresión )
Int n = (int) (c - 48). {
sentencia (s);
2.2.Conceptos de programación }

a. ¿Qué es una estructura iterativa? Tipos, ejemplo


Sintaxis, Ejemplos.
#include <iostream>
Las estructuras iterativas son bucles o repeticiones using namespace std;
void main()
que permiten ejecutar una o más líneas de código {
tantas veces sea necesario. int nro=1;
while(nro <= 10 )
Los tipos son: {
cout<<"9 * "<<nro<<" = "<<nro*9;
nro++;
 For }
}
Esta estructura de repetición es más utilizada
cuando sabemos el número de repeticiones que  do….While
deseamos ejecutar.
Esta estructura de control es muy parecida a la
Sintaxis estructura while lo que la hace diferente es que
siempre ejecuta por lo menos una vez el cuerpo de
for (condición de inicio; expresión ; acción después la estructura, por eso el do, y luego valida una
de cada iteración ) expresión y en función a este resultado vuelve a
{ iterar o no.
sentencia
} Sintaxis

Ejemplo do
{
#include <iostream> sentencias o instrucciones
using namespace std; }
void main()
{ while ( expresión );
int i;
for( i = 1 ; i<=10 ; i++) Ejemplo
{
cout<<i<<" elefante(s) se balanceaba(n) sobre la tela de una #include <iostream>
araña\n”; using namespace std;
cout<<”como veía(n) que resistía(n) fueron a llamar a otro
elefante\n "; void main()
} {
} char nom[20]; //Cadena que puede contener 20 caracteres
. 7
int rpta=0; Ejemplo
do
{ If (num<44)
cout<<"Ingrese el nombre de un estudiante \n"; Cout<<”esta dentro del rango”;
cin>>nom; Else
cout<<"Desea continuar ingresando nombres: para salir '0'"; Cout<<”esta fuera del rango”;
cin>>rpta;
}
while(rpta != 0); }  If else anidadas

b. ¿Qué es una estructura de decisión? La sentencia que sigue de la palabra else puede ser
Tipos, Sintaxis, Ejemplos. cualquiera, incluso otra sentencia de este mismo
tipo. Cuando una o más sentencias siguen otra
Las estructuras de decisión permiten dirigir el curso sentencia, se dice que dicha sentencia esta anidada.
del programa a diferentes destinos según se
cumplan determinadas condiciones. Una sentencia if anidada se puede utilizar para
construir decisiones con diferentes alternativas.
Los tipos son:
Sintaxis
 If
if (condición)
Dado que las expresiones lógicas toman el valor sentencia;
verdadero o falso, se necesita una sentencia de else if (condición)
control que dirija a las computadoras para ejecutar sentencia;
una sentencia si la expresión es verdadera, en caso else if (condición)
contrario no se toma ninguna acción. sentencia;

Sintaxis Ejemplo:

if (condición) sentencia; If (num<=56)


Cout<<”Esta dentro del rango”;
Else
Ejemplo If (num>=115)
Cout<<”Esta fuera del rango”;
If (num<20) Else
Cout<<”el valor está dentro del rango”; If (num<=0)
Cout<<”Valor no Valido”;
 if else

La sentencia if/else ejecuta una acción cuando toma  Switch case


un valor de verdad y cuando el valor es falso o no
cumple con la condición cumple con otra acción. La sentencia múltiple switch ( ) está formada por
una serie de etiquetas case que solamente cumplen
Sintaxis con una condición determinada y un caso
opcional default en el que están contemplados todos
if (condición) los valores que no se encuentran en los case.
sentencia;
else
sentencia;
8

Sintaxis

switch (expresion)
{
case constante1:
sentencia1;
break;
case constante2:
sentencia2;
break;
case constante_n:
sentencia_n;
break;
default:
sentencias;
break;
El resultado que se obtiene de este código no es el
esperado, ya que no coincide con la respuesta de la
Ejemplo:
operación matemática.
Switch (confiabilidad_del_producto) {
Case A: Se hace uso de Type Casting (cambio de un tipo de
Cout<<”perfecta”; variable a otro tipo) en el código, definiendo la
Break; operación de 4/3 como un tipo de dato float o
Case B: double, anteponiendo el tipo de dato entre
Cout<<”Muy Buena”;
Break; paréntesis a la operación dada, de esta manera el
Case C: resultado obtenido es el adecuado.
Cout<<”Regular”;
Default:
Cout<<”Fuera de rango”;
Break ;

2.3. Programa en C

Se procede con la realización en el lenguaje de


programación C bajo el entorno de desarrollo para
windows Dec C++ del siguiente seudocódigo:

El cual se refleja con las siguientes líneas de


código.
. 9

2.4. implementación de los siguientes  x se encuentra dentro del rango definido


ejercicios en LabVIEW y en C. para cualquiera de las ecuaciones dadas.

En este caso evalúa el valor de x, y presenta el


Para la implementación del ejercicio a se tiene el resultado de f(x).
siguiente panel de diagramas:
 para el segundo rango, la ecuación es una
raíz cuadrada donde existe un semi-intervalo
para 0,5 < x < 1 en donde el argumento del
radical será negativo, presentándose un
error, en este caso el mensaje se presentara
como:

“Operación no definida en los números reales”

En este se evalúan tres situaciones:

 x no se encuentra dentro de los rangos


propuestos para las dos ecuaciones.

Para la realización del punto b se requiere realizar


una operación matemática donde y es una
constante, cuyo valor se puede observar en la
siguiente imagen:

En este caso nos presenta un aviso de “función no


definida para el valor de x dado” .
10

Este valor de y se obtuvo con el siguiente programa


en G

El ejercicio d pide realizar la misma sumatoria del


punto anterior con la estructura for-loop, este
procedimiento es bastante parecido al anterior, lo
cual se evidencia en las siguientes imagines:

En el punto c se pide realizar una sumatoria con


While-loop, esta se obtiene con el siguiente
programa:

En las gráficas anteriores se evidencia que para


unos valores de Vdc =100 V y f=50 Hz , se obtiene
los mismos resultados que se obtuvieron en la
Para efectos de visualización se utiliza la implementación del ejercicio con la estructura
herramienta wait, de tal manera que se evidencie el While-loop.
cambio de valor entre una iteración y la otra, fue
pertinente además generar dos indicadores Se utilizan también dos indicadores, uno para el
numéricos, en los cuales se puede observar la conteo de la iteración dada, y otro que almacena
iteración y el valor parcial de la sumatoria. parcialmente el valor de la sumatoria, se utiliza la
ayuda de la función wait, de tal manera que el
cambio pueda ser observado.
. 11

Para el circuito resistivo la operación fue un poco


2.5. Este punto no se realiza, por instrucción más sencilla, dado que las operaciones se hacen con
de la profesora durante la práctica. números reales.

2.6. Implementación del ejercicio 1 CONCLUSIONES


correspondiente a la practica 1 con la
estructura nodo de formula. LabVIEW es una herramienta muy poderosa para la
implementación de diferentes sistemas en donde es
En este ejercicio se presenta una dificultad, dado importante representar los diferentes elementos lo
que en el nodo de formula no se realizan más parecido posible a su forma física.
operaciones con números complejos, este problema
se resuelve haciendo una conversión a polar para el Interpretar correctamente las diferentes funciones
voltaje y una conversión a rectangular de las que tiene LabVIEW, así como las diferentes
impedancias, ya que era necesario la suma de estas, estructuras permite realizar códigos con menor
una vez se logra lo anterior, se determinan las carga computacional.
funciones para la magnitud y para el ángulo de la
corriente requerida en el nodo de fórmula, cuando
se han establecido estos valores para la corriente se REFERNCIAS
convierten a forma rectangular para ser presentados
en el panel frontal a través del visualizador
numérica asignado a la corriente. [1] Germán A Holguín L, Alvaro A Orozco G,
Sandra M Pérez L. CURSO BÁSICO DE
Lo anterior se evidencia en las siguientes imágenes: LabVIEW 6i. Editorial Publicaciones Universidad
Tecnológica de Pereira, 2002.

[2]https://www.ecured.cu/Estructura_general_de_u
n_programa.

[3] http://www.ni.com/documentation/en/labview-
comms/1.0/node-ref/complex-to-polar/.

Anda mungkin juga menyukai