Control de flujo II – while, do…while, break y continue

En la primera parte de esta bilogía dedicada al control de flujo pudimos ver las sentencias if, if…else y for. En esta segunda parte aumentaremos la familia de los bucles, esas sentencias cuya función es repetir un bloque de código siempre que una condición se cumpla, con los bucles while y do…while. Además, veremos formas de alterar el comportamiento natural de los bucles con las sentencias break y continue.

while

Con while aumentamos la familia de los bucles para el control de flujo de un programa, ya que ejecuta de forma continua un bloque de código mientras la condición de cabecera se cumpla. Al igual que pasaba con el bucle for, la condición se evalúa con cada repetición del bloque de código hasta que se deje de cumplir, continuando entonces con el código que haya después del bucle while.

Podemos realizar la misma impresión de los números enteros desde el 0 hasta el 9 por el puerto serie que hacíamos con el bucle for, esta vez haciendo uso de un bucle while:

do…while

Terminamos los bucles con una modificación del bucle while en el que la condición se evalúa al final del bloque de código entre llaves. Por tanto, el bule do…while no deja de ser un bucle while que se va a ejecutar al menos una vez.

Para no variar, implementemos el ejemplo que estamos utilizando a lo largo del post con el bucle do…while, imprimiendo los enteros que van desde el 0 hasta el 9:

“Control” del control de flujo – Sentencias break y continue

Como ya comentamos en la primera parte dedicada al control de flujo de un sketch Arduino, hay situaciones en las cuales necesitamos de alguna herramienta extra, bien para evitar acorralar nuestro sketch en un bucle infinito, o bien para añadir algo de complejidad a nuestro sketch.

La sentencia break aborta cualquier instrucción de control de flujo vista hasta ahora. Cuando nuestro programa ejecuta, por ejemplo, un bucle for, y llegado a un punto necesita abandonarlo, sea por la razón que sea, incluiremos una sentencia break, y el programa continuará su ejecución justo después del bloque donde la hemos incluido.

Podemos verlo claro con un ejemplo rescatado de la primera parte. El código del que partíamos era tal que así:

Nuestro código va a imprimir por el puerto serie lo deseado, pero el bucle seguirá ejecutándose de forma infinita hasta producirse un overflow, y volverá a empezar de cero. Para evitarlo, podemos colocar una sentencia break en el momento en el que la condición se deje de cumplir:

La sentencia continue, por su parte, aborta la ejecución actual dentro de un bucle de control de flujo. A diferencia de break, el bucle no se abandona, sino que se seguirá ejecutando mientras la condición se cumpla.

Imaginemos que vamos a imprimir, como antes, los números enteros desde el 0 hasta el 9, pero solo queremos imprimir aquellos que son divisibles por 2. Podemos incluir, en este caso, una sentencia continue, siempre que el número correspondiente a una ejecución del bucle no sea divisible por 2:

Como veis, el lenguaje nos ofrece multitud de herramientas para simplificar y variar la ejecución de parte de un sketch, de manera que podemos adaptar nuestro código a nuestras necesidades y dar un rodeo a los problemas que se nos plantean.

Esperamos queeste artículo os sirva de ayuda a la hora de escribir vuestros programas.


Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Uso de cookies

Este sitio web utiliza cookies para que usted tenga la mejor experiencia de usuario. Si continúa navegando está dando su consentimiento para la aceptación de las mencionadas cookies y la aceptación de nuestra política de cookies, pinche el enlace para mayor información.plugin cookies

ACEPTAR
Aviso de cookies