Saltar navegación

Activa JavaScript para disfrutar de los vídeos de la Mediateca.

5.Bucle While.Que es y cómo utilizarlo

Ajuste de pantalla

El ajuste de pantalla se aprecia al ver el vídeo en pantalla completa. Elige la presentación que más te guste:

Subido el 5 de febrero de 2026 por Victoriano G.

3 visualizaciones

Descargar la transcripción

En este capítulo aprenderás a utilizar la estructura iterativa while para conseguir 00:00:00
que el código se ejecute cíclicamente. Asimismo te presentaré las funciones de tiempo necesarias 00:00:20
que deberás de utilizar para conseguir no sobrecargar al ordenador o cualquier dispositivo 00:00:26
que esté ejecutando tu programa. Por último verás cómo crear túneles para entrada y 00:00:31
salida de datos en los bucles while. Mi nombre es Obrero Cadenas y sin más, esto empieza ya. 00:00:36
Cuando se está programando, en muchas ocasiones se necesita ejecutar un determinado código durante un número de veces, 00:00:45
o que un determinado código se repita mientras se cumplan determinadas condiciones. 00:00:52
Para dar solución a esto, tienes disponibles las llamadas estructuras, 00:00:56
un tipo particular de nodo que permite controlar la ejecución de un determinado código de programa. 00:01:00
LabVIEW dispone, entre otras, de las estructuras iterativas como es el bucle WHILE, 00:01:06
que permite ejecutar un determinado código mientras se cumpla una condición 00:01:12
y el bucle FOR que permite la ejecución de un determinado código un cierto número de veces. 00:01:17
En el diagrama de bloques, haz clic con el botón derecho y despliega la paleta de funciones 00:01:24
y selecciona Programming, Estructuras, selecciona el bucle Y, 00:01:30
luego haz clic con el botón izquierdo del ratón y arrastra un rectángulo de selección alrededor de 00:01:36
la sección de código del diagrama de bloques que quieras incluir en el bucle cuando sueltes 00:01:43
el ratón aparecerá el marco que delimita la sección que ha seleccionado el bucle white 00:01:48
te permite repetir el código que se encuentra dentro del marco hasta que se cumpla una condición 00:01:54
Por lo tanto usarás la estructura while loop cuando necesites que un determinado código de programa se repita mientras una determinada condición sea cierta o falsa 00:02:00
El código dentro del marco while siempre se ejecuta al menos una vez 00:02:11
Como puedes ver en el flujo grama, primero se ejecuta el código dentro del marco while 00:02:16
Luego se mira a ver si se cumple la condición 00:02:22
si no se cumple la condición de fin se vuelve a ejecutar el código. En el caso de que se cumpla 00:02:25
la condición de fin el bucle while termina. Esta estructura iterativa del bucle while tiene dos 00:02:32
terminales. El terminal de interacción es el terminal de salida que va contando desde i igual 00:02:38
a cero el número de veces que va repitiendo la ejecución del bucle y por otro lado el terminal 00:02:45
condicional que es un terminal de entrada booleana que define la condición que permite la ejecución 00:02:50
del código contenido dentro de la estructura. El bucle while comprobará el estado de este 00:02:57
terminal al final de cada iteración. Haciendo clic derecho con el ratón encima de este terminal 00:03:02
condicional aparecerá un menú desplegable donde podrás elegir cómo quieres que se detenga la 00:03:08
ejecución del bucle while. Si seleccionas la condición stop if true el bucle while se detiene 00:03:14
si el terminal recibe un valor verdadero. En cambio si seleccionas la condición continue if true el 00:03:21
bucle while continúa si este terminal recibe un valor verdadero o lo que es lo mismo el bucle 00:03:29
while se detiene si este terminal recibe el valor falso. Cuando un bucle termina la ejecución de 00:03:35
una iteración inmediatamente empieza a ejecutarse la siguiente. Esto supone para el procesador del 00:03:42
equipo donde se está ejecutando estar prácticamente dedicado a ejecutar esta tarea y por lo tanto no 00:03:49
tendrá tiempo para ejecutar otras tareas. Así pues hay que introducir dentro de los bucles while 00:03:55
una función de tiempo de espera que haga que el VI se desactive durante un cierto tiempo y de esa 00:04:01
forma el procesador pueda abordar otras tareas durante el tiempo de espera. Coloca una función 00:04:09
de espera dentro del ciclo while para permitir que el VI se duerma por un cierto tiempo. Esto 00:04:14
permite que el procesador atienda otras tareas, como te estoy diciendo, durante el tiempo de 00:04:20
espera. Las funciones de espera utilizan el reloj de milisegundos del sistema operativo. Dos son las 00:04:25
funciones utilizadas. La función wait. Si configuras un tiempo de 10 milisegundos como 00:04:32
puedes ver en el gráfico cuando termina de ejecutarse el código dentro del bucle while 00:04:39
se espera estos 10 milisegundos y al concluir comienza de nuevo la ejecución del código y así 00:04:43
sucesivamente. Como verás a veces el código tarda más o menos tiempo en ejecutarse. Unas veces puede 00:04:50
tardar 4 milisegundos otras veces puede tardar 6 milisegundos etcétera la otra función es la 00:04:57
función wait until next si configuras un tiempo de 10 milisegundos como puedes ver en el gráfico 00:05:05
si el código inicialmente tarda 4 milisegundos en ejecutarse el tiempo de espera o descanso de 00:05:12
la cpu será de 6 milisegundos ya que el tiempo programado es de 10 milisegundos en cambio en 00:05:19
el segundo ciclo el código tarda en ejecutarse 8 milisegundos. Solo estará en espera 2 milisegundos 00:05:26
como puedes ver. Evidentemente para que esta función sea efectiva el tiempo que tarda en 00:05:33
ejecutarse el código deberá ser inferior al tiempo especificado para esta función. Como puedes 00:05:39
observar cuando se ejecuta un VI utilizando la ejecución cíclica mediante el icono de la barra 00:05:46
de herramientas, la CPU del equipo donde se está ejecutando está el 70% del tiempo atendiendo a 00:05:52
esta tarea, teniendo poco tiempo para realizar otras tareas. Cuando se ejecuta cíclicamente un 00:05:59
programa pero utilizamos un bloque while sin función de espera dentro del bucle, la CPU es 00:06:04
utilizada el 51% del tiempo por este recurso. Y por último, cuando se ejecuta cíclicamente un 00:06:10
programa utilizando un bloque while donde hemos introducido una función de espera dentro 00:06:17
del bucle, la CPU es utilizada solamente el 1% del tiempo por ese recurso. 00:06:22
Bien, vamos a realizar un ejercicio donde vas a ver la utilidad del bucle while. 00:06:29
Este ejercicio consiste en que nos va a mostrar la temperatura actual en grados centígrados, 00:06:34
Vamos a modificar aquí, vamos a ponerle grados centígrados y nos va a permitir que introduzcamos un valor máximo y un valor mínimo. 00:06:41
De tal manera que cuando la temperatura sea mayor del valor máximo, aparezca en este indicador de texto una advertencia y diga, por ejemplo, advertencia de golpe de calor. 00:06:52
En cambio, cuando la temperatura actual sea menor que la temperatura mínima, se muestra aquí en un texto y diga, por ejemplo, advertencia de congelación. 00:07:02
Si la temperatura actual está comprendida entre el valor máximo y el valor mínimo, entonces mostrará sin advertencia. 00:07:13
Siempre que haya una advertencia se encenderá este LED. 00:07:21
Bien, el VI que ves es este. 00:07:25
aquí tendríamos el control para introducir la temperatura actual 00:07:27
el control para introducir la temperatura mínima 00:07:31
y el control para introducir la temperatura máxima 00:07:34
además necesitamos la función de selección que ya conoces 00:07:37
también tendríamos una función de comparación 00:07:42
x es menor o igual a y 00:07:46
y una función también de comparación mayor o igual que 00:07:49
esta entrada mayor o igual que esta entrada 00:07:52
Si se cumple, esto será verdadero. 00:07:56
Bien, vamos entonces a empezar por aquí. 00:07:58
Metemos por aquí la temperatura actual y la estamos comparando. 00:08:01
Y estamos preguntando, ¿la temperatura actual es mayor o igual que la temperatura máxima? 00:08:03
Si es verdadero, este texto va a salir en esta salida. 00:08:09
Si es falso, este texto va a salir en esta salida. 00:08:16
Por otro lado, aquí en esta otra comparación comparamos la temperatura actual con el valor mínimo 00:08:20
Y decimos, la temperatura actual es menor o igual que la mínima 00:08:26
Si es verdadero, lo que tenemos aquí saldrá aquí 00:08:31
Si es falso, lo que tendremos aquí, el texto que tendremos aquí 00:08:36
Que es el resultado de esta otra comparación, lo tendremos en la salida 00:08:40
¿Sí? 00:08:44
Advertencia, este sería este led de aquí 00:08:47
cuando se enciende este led esta función dice que cuando estas dos entradas son distintas este led 00:08:49
se enciende esta salida sería verdadera por lo tanto este led se enciende cuando lo que tengo 00:08:57
aquí es distinto de este texto sin advertencias y no se enciende este led cuando lo que sale por 00:09:03
aquí es el texto sin advertencias bien cómo conseguir este indicador este es un indicador 00:09:10
que no hemos visto es un indicador de texto de string botón derecho encima del panel frontal 00:09:19
vas a string control para introducir texto e indicador para visualizar texto en este caso 00:09:25
necesitamos un indicador y este sería el indicador que tendríamos que colocar aquí hay una clara 00:09:35
diferencia de símbolos y esto es debido a que yo puedo convertir este formato si 00:09:42
le quitó aquí ver como un icono pues me queda así en pequeño vale y ocupa menos 00:09:49
espacio también pasa lo mismo con él con el led 00:09:55
en el led no podemos también poner como un icono y lo veríamos así de acuerdo 00:10:00
bien por último sólo me queda comentarte que esto es una constante de texto para 00:10:07
conseguir la botón derecho vamos a string y aquí abajo tenemos constante de texto 00:10:14
las locas y aquí puedes escribir el texto que quieras y luego ya conectarías con la entrada 00:10:23
que corresponda bien vamos a ejecutar este v y lo vamos a ejecutar cíclicamente con esta 00:10:33
función si bien lo está ejecutando cíclicamente vamos a hacer control al suprimir y seleccionar 00:10:42
el administrador de tareas el seleccionado rendimiento y estoy viendo que la cpu tiene 00:10:50
una ocupación del 48 49 por ciento está ocupada ese porcentaje si podemos abrir el monitor de 00:10:56
recursos vale y aquí tendrías el mi procesador del ordenador de la computadora tiene cuatro 00:11:05
núcleos estos serían los cuatro núcleos y tiene una ocupación bueno el núcleo cpu 3 casi casi 00:11:12
al 100% bien esto es lo que ocurre cuando estamos ejecutando cíclicamente con esta función vamos a 00:11:19
parar y vamos a introducir el buque wild hacemos botón derecho en extracta wild loop ahora pincho 00:11:27
y arrastro y voy a crear aquí un control botón derecho create control muy bien este sería el 00:11:37
botón para detener el v vamos a ejecutarlo no ahora cíclicamente si no vamos a ejecutarlo 00:11:49
una vez pero como tenemos el bucle white eso está ahí ejecutándose una y otra vez que estamos 00:11:55
observando que prácticamente bajo algo ahora son unos 47 tal bajo algo la ocupación de la cpu pero 00:12:01
bueno todavía está bastante sobrecargada bien por último vamos a parar vamos a introducir aquí una 00:12:10
función de tiempo de espera botón derecho en timing wait y vamos a ponerle por ejemplo 00:12:19
una constante cread constant de 10 milisegundos con 10 milisegundos de espera vamos a ver qué 00:12:28
efecto conseguimos ejecutamos y miramos aquí la cpu y sorprendentemente bajo considerablemente 00:12:37
Ahora tenemos la CPU ocupada, 11, 12, 14, 11, ha disminuido mucho el recurso que estamos utilizando de la computadora. 00:12:46
Esta es una de las ventajas de ejecutar cíclicamente utilizando una función while, pero siempre acuérdate de poner una función de espera, aunque sea tan poco como 10 milisegundos. 00:13:00
Cuando deseemos introducir datos dentro de un bucle while o sacar datos de un bucle while 00:13:12
debemos utilizar los túneles 00:13:20
Estos alimentan datos desde y hacia la estructura while 00:13:23
El túnel aparece como un bloque sólido en el borde del ciclo while como estás viendo 00:13:27
El bloque es del color del tipo de datos cableado al túnel 00:13:32
En este caso el color es de naranja que representa datos con decimales. 00:13:37
Cuando un túnel pasa datos a un ciclo, el ciclo se ejecuta solamente después de que los datos lleguen al túnel. 00:13:42
En el ejemplo hay un control, un número elegido del 1 al 10, que entra en el túnel y una vez haya pasado al bucle, 00:13:50
éste comienza a ejecutarse no volviendo a leer dicho valor del control. 00:14:00
Los datos salen fuera del ciclo después de que el ciclo haya terminado 00:14:05
En el ejemplo de la imagen el terminal de iteración está conectado a un túnel 00:14:10
El valor en el túnel pasa al indicador de iteraciones cuando termine de ejecutarse el ciclo while 00:14:15
El túnel de salida como ves aparece también en color del tipo de datos cableado 00:14:21
En este caso es un dato de tipo entero 00:14:27
Los túneles permiten suministrar datos hacia dentro solo antes del inicio del bucle y hacia fuera del bucle while, solo después del final del bucle. 00:14:30
Los ciclos infinitos son un error común de programación que involucra un ciclo que nunca se detiene. 00:14:42
Si el terminal condicional es STOPIFTRUE y le conectas un control booleano fuera del ciclo WHILE 00:14:49
Ocurrirá que si el control es falso, cuando comienza el ciclo a ejecutarse provocará un ciclo infinito 00:14:57
Recuerda, el valor del control STOP solamente es leído antes de que inicie el ciclo WHILE 00:15:06
Por tanto, si al inicio valía falso, aunque el control de stop tome el valor verdadero una vez se haya iniciado el bucle while, no detiene el ciclo infinito, ya que el valor en el terminal condicional sigue siendo falso y no se puede detener accionando el control stop. 00:15:13
Para detener un ciclo infinito, debes abortar el VI al hacer clic en el botón de abortar en la barra de ejecución. 00:15:33
Por lo tanto, para poder usar un control para detener un ciclo while, debes colocar siempre el terminal dentro del bucle while como ves en la imagen. 00:15:43
El VI que ves en la pantalla determina el número de iteraciones que debe hacer el bucle while para generar un número entero entre 0 y 10 que coincida con el número seleccionado en el terminal. 00:15:53
Bien, para realizar un túnel de entrada, simplemente vamos a conectar este terminal, este control, pinchamos, arrastramos y conectamos con esta función de igualdad y ya se generó aquí el túnel. 00:16:05
Para hacer un túnel de salida, pues lo mismo, pinchamos, arrastramos y conectamos a este indicador que nos va a determinar el número de iteraciones que va a realizar el UI. 00:16:21
Vamos a ver cómo funcionaría esto. 00:16:34
Aquí tenemos una función que os presento y que se trata de la función que genera un número aleatorio entre 0 y 1. 00:16:36
Aquí puedes ver, produce un número de doble precisión, un número de tipo TBL entre 0 y 1. 00:16:45
Aleatoriamente. 00:16:53
Lo multiplico por 10, por lo tanto estoy generando un número decimal entre 0 y 10. 00:16:54
con esta otra función lo que estoy haciendo es redondeando al entero más próximo al número decimal que tengo aquí 00:17:00
por ejemplo si tengo 2 con 4 redondea a 2, si tengo 2 con 8 redondea a 3 00:17:09
bien, ese número sería mostrado una vez ejecutamos el programa sería mostrado en este indicador de aquí 00:17:14
sería el número que va generando este VI 00:17:21
este bucle se va repitiendo y generaría un número 00:17:23
parecería aquí, ese número lo comparamos 00:17:28
con el número que hemos introducido previamente 00:17:31
antes de iniciar el bucle while 00:17:34
si son iguales, esto sería verdadero 00:17:36
esto sería una función o 00:17:39
la función o funciona de la siguiente manera 00:17:42
la salida es verdadera o bien cuando esta entrada sea verdadera 00:17:44
o cuando esta otra entrada sea verdadera 00:17:48
o cuando las dos entradas sean verdaderas 00:17:51
este terminal de interacción, esta es una salida 00:17:53
y este número va contando el número de interacciones 00:17:56
empezaría en 0, 1, 2, 3 00:17:59
es decir que se ejecuta todo esto 00:18:01
si aquí es falso 00:18:03
se vuelve otra vez a ejecutar 00:18:06
pero antes esperaría 500 milisegundos 00:18:08
espera 500 milisegundos y otra vez vuelve a ejecutarse 00:18:11
¿Coinciden estos valores? No 00:18:15
¿Has pulsado el botón de stop? No 00:18:17
por lo tanto aquí tendríamos falso 00:18:21
y se vuelve otra vez a repetir 00:18:23
es decir, cuando no pulso, cuando no acciono este pulsador 00:18:25
pues es falso lo que está devolviendo 00:18:30
bien, vamos a ejecutarlo, aquí selecciono el número 1 00:18:33
voy a ejecutarlo, y se detiene 00:18:38
a las dos iteraciones, solo hizo dos iteraciones, solo lo repitió esto dos veces 00:18:44
y ya generó el número 1, vamos a poner por ejemplo 00:18:48
el número 6, ejecutamos otra vez 00:18:51
mientras se está ejecutando se puede cambiar este número a 4 00:18:54
¿cuándo se detuvo? cuando coincidió con el 6 00:19:01
porque yo a pesar de haber cambiado esto 00:19:04
el bucle while recordar 00:19:08
este dato que está aquí en el túnel 00:19:10
es al iniciarse el bucle while 00:19:12
que era 6 00:19:15
aunque lo cambie y le ponga 4 00:19:17
él sigue con el dato que está introducido en este túnel 00:19:19
que sería 6 00:19:23
y tuvo que realizar 11 iteraciones 00:19:24
vamos con un numerito más 00:19:27
por ejemplo vamos a 00:19:30
poner el número 8 00:19:31
damos aquí 00:19:33
y si quiero detener el UI 00:19:35
pulso 00:19:37
pulso 00:19:38
tengo que mantener un tiempo más de 500 milisegundos 00:19:40
porque si hago una pulsación corta 00:19:44
no se detiene 00:19:45
por ejemplo mirad 00:19:47
una pulsación corta no, pero una pulsación de más de medio segundo 00:19:48
pues si se detiene 00:19:51
Bien eso es todo, espero que el video tutorial te haya gustado 00:19:53
Si es así por favor dale al me gusta, pulgar arriba 00:19:59
Y si quieres estar informado de próximos video tutoriales que vaya subiendo 00:20:02
Anímate y suscríbete a mi canal a cadenas 00:20:05
En caso de que no te haya gustado puedes ponerme en comentarios en la parte de abajo del video 00:20:07
Que es lo que no te ha gustado para que la próxima vez pueda mejorar en la explicación 00:20:12
Gracias, hasta luego 00:20:16
Etiquetas:
Robótica
Subido por:
Victoriano G.
Licencia:
Todos los derechos reservados
Visualizaciones:
3
Fecha:
5 de febrero de 2026 - 17:43
Visibilidad:
Público
Centro:
IES JULIO VERNE
Duración:
20′ 20″
Relación de aspecto:
1.79:1
Resolución:
1104x616 píxeles
Tamaño:
84.86 MBytes

Del mismo autor…

Ver más del mismo autor


EducaMadrid, Plataforma Educativa de la Comunidad de Madrid

Plataforma Educativa EducaMadrid