{"id":5958,"date":"2022-05-23T18:26:40","date_gmt":"2022-05-23T16:26:40","guid":{"rendered":"https:\/\/josedelgado.net\/?page_id=5958"},"modified":"2022-05-23T18:34:07","modified_gmt":"2022-05-23T16:34:07","slug":"cab-7-lenguaje-arduino-estructuras-de-control","status":"publish","type":"page","link":"https:\/\/josedelgado.net\/va\/cab-7-lenguaje-arduino-estructuras-de-control\/","title":{"rendered":"CAB 7. Lenguaje Arduino. Estructuras de Control"},"content":{"rendered":"\n<div style=\"height:25px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<div style=\"height:25px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_87 counter-hierarchy ez-toc-counter ez-toc-grey ez-toc-container-direction\">\n<div class=\"ez-toc-title-container\">\n<p class=\"ez-toc-title\" style=\"cursor:inherit\">\u00cdndice de Contenidos<\/p>\n<span class=\"ez-toc-title-toggle\"><a href=\"#\" class=\"ez-toc-pull-right ez-toc-btn ez-toc-btn-xs ez-toc-btn-default ez-toc-toggle\" aria-label=\"Toggle Table of Content\"><span class=\"ez-toc-js-icon-con\"><span class=\"\"><span class=\"eztoc-hide\" style=\"display:none;\">Toggle<\/span><span class=\"ez-toc-icon-toggle-span\"><svg style=\"fill: #999;color:#999\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" class=\"list-377408\" width=\"20px\" height=\"20px\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z\" fill=\"currentColor\"><\/path><\/svg><svg style=\"fill: #999;color:#999\" class=\"arrow-unsorted-368013\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"10px\" height=\"10px\" viewBox=\"0 0 24 24\" version=\"1.2\" baseProfile=\"tiny\"><path d=\"M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z\"\/><\/svg><\/span><\/span><\/span><\/a><\/span><\/div>\n<nav><ul class='ez-toc-list ez-toc-list-level-1 ' ><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/josedelgado.net\/va\/cab-7-lenguaje-arduino-estructuras-de-control\/#71_Introduccion\" >7.1 Introducci\u00f3n<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/josedelgado.net\/va\/cab-7-lenguaje-arduino-estructuras-de-control\/#72_Estructuras_Condicionales\" >7.2 Estructuras Condicionales<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/josedelgado.net\/va\/cab-7-lenguaje-arduino-estructuras-de-control\/#721_Estructura_if\" >7.2.1 Estructura if<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-4\" href=\"https:\/\/josedelgado.net\/va\/cab-7-lenguaje-arduino-estructuras-de-control\/#722_Estructura_if_%E2%80%93_else\" >7.2.2 Estructura if &#8211; else<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-5\" href=\"https:\/\/josedelgado.net\/va\/cab-7-lenguaje-arduino-estructuras-de-control\/#723_Estructura_switch_%E2%80%93_case\" >7.2.3 Estructura switch &#8211; case<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-6\" href=\"https:\/\/josedelgado.net\/va\/cab-7-lenguaje-arduino-estructuras-de-control\/#73_Estructuras_de_Bucles\" >7.3 Estructuras de Bucles<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-7\" href=\"https:\/\/josedelgado.net\/va\/cab-7-lenguaje-arduino-estructuras-de-control\/#731_Estructura_for\" >7.3.1 Estructura for<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-8\" href=\"https:\/\/josedelgado.net\/va\/cab-7-lenguaje-arduino-estructuras-de-control\/#732_Estructura_while\" >7.3.2 Estructura while<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-9\" href=\"https:\/\/josedelgado.net\/va\/cab-7-lenguaje-arduino-estructuras-de-control\/#733_Estructura_do-while\" >7.3.3. Estructura do-while<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-10\" href=\"https:\/\/josedelgado.net\/va\/cab-7-lenguaje-arduino-estructuras-de-control\/#74_Estructura_Especial_goto\" >7.4 Estructura Especial goto<\/a><\/li><\/ul><\/nav><\/div>\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"71_Introduccion\"><\/span><strong>7.1 Introducci\u00f3n<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Una vez que hemos visto los <a href=\"https:\/\/josedelgado.net\/cab-5-lenguaje-arduino-aspectos-generales\/\">Aspectos Generales<\/a> del Lenguaje Arduino y las estructuras para almacenar los datos en memoria, es decir las <a href=\"https:\/\/josedelgado.net\/cab-6-lenguaje-arduino-variables-y-constantes\/\">Variables y Constantes<\/a>, podemos empezar a implementar los algoritmos que utilizan y operan con esos datos mediante las estructuras de control.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Estas instrucciones nos permitir\u00e1n implementar el flujo algor\u00edtmico y podemos agruparlas en dos grupos<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li><strong>Estructuras Condicionales<\/strong>, con las que se decidir\u00e1 si se ejecuta o no una secuencia de instrucciones dependiendo de si se cumplen o no unas condiciones concretas.<\/li><li><strong>Estructuras de Bucles<\/strong>, que se encargaran de repetir una serie de instrucciones un n\u00famero determinado de veces de forma independiente o dependiente del cumplimiento de una serie de condiciones.<\/li><\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">En los siguientes apartados vamos a ver con m\u00e1s detalle estas estructuras o instrucciones.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"72_Estructuras_Condicionales\"><\/span><strong>7.2 Estructuras Condicionales<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Estas estructuras son las siguientes.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"721_Estructura_if\"><\/span><strong>7.2.1 Estructura if<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Como hemos dicho, <em>if <\/em>es una estructura condicional, cuya sintaxis vemos a continuaci\u00f3n<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>if (condici\u00f3n) {\n   \/\/ Bloque de instrucciones que se ejecutan si la condici\u00f3n es verdadera\n}<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Si la <em>condici\u00f3n <\/em>se cumple, es decir es cierta o verdadera, se ejecutan las instrucciones contenidas entre las llaves<em> { }<\/em> . En caso contrario no se ejecutan y se salta a la instrucci\u00f3n siguiente.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Aclaraciones a tener en cuenta<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>La condici\u00f3n puede ser de diferente tipo pero su evaluaci\u00f3n siempre debe dar como resultado una expresi\u00f3n l\u00f3gica. Ejemplos ser\u00edan   (a &gt; 10), (a != 0), &#8230;<\/li><li>Si el bloque de instrucciones a ejecutar, en caso de cumplirse la condici\u00f3n, es una sola l\u00ednea de c\u00f3digo se puede expresar \u00e9sta sin las <em>{ }<\/em> o con ellas. Mi recomendaci\u00f3n, atendiendo a la legibilidad del c\u00f3digo, es utilizar siempre las <em>{ }<\/em> sea el bloque de instrucciones de una o de varias l\u00edneas. A continuaci\u00f3n un ejemplo de dos instrucciones correctas<\/li><\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>\/\/ Bloque de instrucciones de una sola l\u00ednea entre llaves\nif (a &gt; b) {\n   a = a + 3;\n{\n\n\/\/ Bloque de instrucciones de una sola l\u00ednea sin llaves\nif (a &gt; b)\n   a = a + 3;<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\"><li>Hay que tener en cuenta, si realizamos una comparaci\u00f3n de valores en la <em>condici\u00f3n<\/em>, que es algo muy habitual, no utilizar el = que es un operador de asignaci\u00f3n, sino el == que es uno de comparaci\u00f3n. Este es un error muy habitual al principio en la programaci\u00f3n. Ejemplo correcto a continuaci\u00f3n<\/li><\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>\/\/ Ejemplo de una comparaci\u00f3n de valores en la condici\u00f3n\nif (a == b) {                 \/\/ operador de comparaci\u00f3n\n   a = 0;                     \/\/ operador de asignaci\u00f3n   \n}<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"722_Estructura_if_%E2%80%93_else\"><\/span><strong>7.2.2 Estructura if &#8211; else<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Esta estructura es, una variante o mejor dicho, una <strong>ampliaci\u00f3n<\/strong> de la anterior.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Su sintaxis es<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>if (condici\u00f3n) {\n   \/\/ Bloque de instrucciones que se ejecutan si la condici\u00f3n es verdadera\n}\nelse {\n   \/\/ Bloque de instrucciones que se ejecutan si la condici\u00f3n NO es verdadera\n}<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">En este caso, de forma similar al anterior,  si la <em>condici\u00f3n <\/em>se cumple, es decir es cierta o verdadera, se ejecutan las instrucciones contenidas entre las llaves<em> { }<\/em> .<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Pero, en caso contrario, es decir, si la condici\u00f3n no es cierta osea es falsa, se ejecutan las instrucciones contenidas entre las llaves del <em>else<\/em>. <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Veamos a continuaci\u00f3n, un ejemplo<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\/\/ Ejemplo de la instrucci\u00f3n de control if-else\nif (a &gt; 0){\n   a = a + 1;                \/\/ Se ejecuta si a &gt; 0\n}\nelse {\n   a = a - 1;                \/\/ Se ejecuta si NO a &gt; 0\n}<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"723_Estructura_switch_%E2%80%93_case\"><\/span><strong>7.2.3 Estructura switch &#8211; case<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">La sintaxis de la instrucci\u00f3n o estructura de control condicional <em>switch <\/em>es<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>switch (variable_condici\u00f3n) {\n   case condici\u00f3n_1:\n      \/\/ Bloque de instrucciones que se ejecuta si la condici\u00f3n_1 se cumple\n      break;\n   case condici\u00f3n_2:\n      \/\/ Bloque de instrucciones que se ejecuta si la condici\u00f3n_2 se cumple\n      break;\n\n   ... ...\n\n   case condici\u00f3n_n:\n      \/\/ Bloque de instrucciones que se ejecuta si la condici\u00f3n_n se cumple\n      break;\n   default:\n      \/\/ Bloque de instrucciones que se ejecuta si NINGUNA de las condiciones anteriores se cumple\n      break;\n}<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">En este caso estamos ante una estructura de control condicional que nos permite la comprobaci\u00f3n de m\u00faltiples condiciones.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Realmente seria el equivalente de varios if-else anidados. <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Esta instrucci\u00f3n nos permite evaluar la <em>variable_condici\u00f3n<\/em> y dependiendo de su valor ejecutar el bloque de instrucciones correspondientes.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">A continuaci\u00f3n un ejemplo de su uso que nos clarificar\u00e1 su funcionamiento<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\/\/ d es una variable que contiene el valor de la direcci\u00f3n de una pelota que rebota en pantalla\n\/\/ d = 1 --&gt; direcci\u00f3n de pelota arriba\n\/\/ d = 2 --&gt; direcci\u00f3n de pelota derecha\n\/\/ d = 3 --&gt; direcci\u00f3n de pelota abajo\n\/\/ d = 4 --&gt; direcci\u00f3n de pelota izquierda\n\/\/ (x,y) es la posici\u00f3n x,y del plano de pantalla que ocupa la pelota\n\nswitch (d) {\n   case 1:\n      y = y - 1;   \/\/ desplazamos la pelota un pixel hacia arriba\n      break;\n   case 2:\n      x = x + 1;   \/\/ desplazamos la pelota un pixel hacia la derecha\n      break;\n   case 3:\n      y = y + 1;   \/\/ desplazamos la pelota un pixel hacia abajo\n      break;\n   case 4:\n      x = x - 1;   \/\/ desplazamos la pelota un pixel hacia la izquierda\n      break;\n   default:\n      error(\"Valor d incorrecto\");  \/\/ Mostramos un error, pues la variable d tendr\u00eda un valor incorrecto.\n      break;\n}<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Si la variable que debemos evaluar no tiene un valor evaluado por ning\u00fan <em>case<\/em> entonces se ejecutar\u00e1 el bloque de instrucciones de <em>default<\/em>.<\/p>\n\n\n\n<p class=\"has-background wp-block-paragraph\" style=\"background-color:#f0f0f0\">Es importante destacar y tener en cuenta, como hemos podido observar, que <strong>cada bloque de instrucciones de <\/strong><em><strong>case<\/strong><\/em><strong> debe terminar con la instrucci\u00f3n <\/strong><em><strong>break;<\/strong><\/em>  Esto es as\u00ed para indicar que una vez ejecutado el conjunto de instrucciones correspondientes al bloque <em>case <\/em>el flujo del programa debe terminar y salir de la estructura condicional switch-case y continuar con la siguiente instrucci\u00f3n. En caso contrario podemos generar un comportamiento no esperado en nuestro programa.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"73_Estructuras_de_Bucles\"><\/span><strong>7.3 Estructuras de Bucles<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">A continuaci\u00f3n veremos con m\u00e1s detalle este tipo de estructuras.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"731_Estructura_for\"><\/span><strong>7.3.1 Estructura for<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">La sintaxis de un bucle <em>for<\/em> es la siguiente<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>for (inicializaci\u00f3n; condici\u00f3n; instrucci\u00f3n) {\n   \/\/ Bloque de instrucciones que se ejecutan un n\u00famero finito n de veces\n}<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">En esta definici\u00f3n encontramos varias partes que vamos a explicar brevemente<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li><strong>Inicializaci\u00f3n<\/strong>, se utiliza para inicializar variables que vamos a utilizar dentro del bucle. Durante la ejecuci\u00f3n del bucle, solo se ejecuta una \u00fanica vez al principio.<\/li><li><strong>Condici\u00f3n<\/strong>, nos permite definir cu\u00e1ndo debe terminar el bucle. El bucle se ejecutar\u00e1 hasta que la condici\u00f3n sea 0 o false.<\/li><li><strong>Instrucci\u00f3n<\/strong>, suele utilizarse para incrementar o disminuir variables que intervienen normalmente en la condici\u00f3n.<\/li><\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">En un bucle <em>for <\/em>no siempre estar\u00e1n presentes las tres partes enumeradas: inicializaci\u00f3n, condici\u00f3n e instrucci\u00f3n.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Vamos a ver un ejemplo de bucle <em>for<\/em><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\/\/ Ejemplo de Bucle for\nint ciclo = 0;\n\nfor (i = 0; i &lt; 10; i = i +1){\n   ciclo = ciclo + 1;\n}\n\n\/\/ Al finalizar el bucle for la variable ciclo tendr\u00e1 un valor de 10\n\/\/ ya que el bucle se habr\u00e1 ejecutado 10 veces (valor de i de 0 a 9)<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">En el ejemplo anterior, las partes del <em>for <\/em>ser\u00edan<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>Inicializaci\u00f3n, se asigna el valor 0 a la variable <em>i <\/em>en la primera ejecuci\u00f3n del bucle <em>for<\/em><\/li><li>Condici\u00f3n, cada iteraci\u00f3n o ciclo del bucle se comprueba si se cumple<em> i &lt; 10<\/em>. Si es verdadera se vuelve a ejecutar <em>ciclo = ciclo + 1<\/em>. En caso de ser falsa se ejecutar\u00eda la siguiente instrucci\u00f3n al bucle <em>for<\/em>.<\/li><li>Instrucci\u00f3n, cada iteraci\u00f3n o ciclo del bucle se incrementa la variable <em>i <\/em>en 1 <\/li><\/ul>\n\n\n\n<p class=\"has-background wp-block-paragraph\" style=\"background-color:#f0f0f0\">Un caso especial de finalizaci\u00f3n del bucle <em>for <\/em>anticipadamente se producir\u00eda si se ejecutara una sentencia <em>break <\/em>dentro del bloque de instrucciones del bucle. En ese caso esta instrucci\u00f3n provocar\u00eda la salida inmediata del bucle y la continuaci\u00f3n de la ejecuci\u00f3n de las sentencias o instrucciones siguientes al mismo.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">El bucle <em>for <\/em>es muy vers\u00e1til como ir\u00e1s comprobando con la pr\u00e1ctica y es muy utilizado en la programaci\u00f3n, desde condiciones muy simples hasta bastante complejas que nos permitir\u00e1n aprovechar su gran potencial.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Uno de los usos m\u00e1s habituales de un bucle <em>for <\/em>es para recorrer los elementos de una <em>array<\/em>.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"732_Estructura_while\"><\/span><strong>7.3.2 Estructura while<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Es otra estructura de bucle cuya sintaxis es <\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>while (condici\u00f3n) {\n   \/\/ Bloque de instrucciones que se ejecutan mientras se cumpla la condici\u00f3n\n}<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">En este caso, nos hayamos ante un tipo de bucle cuyo bloque de instrucciones se ejecuta mientras se cumpla la condici\u00f3n.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Se saldr\u00e1 del bucle cuando la condici\u00f3n no se cumpla, es decir que \u00e9sta sea falsa, o cuando se ejecute una instrucci\u00f3n <em>break<\/em>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Las diferencias con el bucle <em>for <\/em>son<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>En el caso del <em>while <\/em>no conocemos el n\u00famero m\u00e1ximo de ejecuciones que pueden realizarse<\/li><li>En el caso del <em>while <\/em>no es necesario que estemos ante un bucle finito, pues puede darse el caso de ejecutarse infinitamente mientras no se apague o se pulse el reset de la placa Arduino.<\/li><\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Por ejemplo un bucle <em>while <\/em>con ejecuci\u00f3n infinita ser\u00eda<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\/\/ Ejemplo de un while que no termina mientras no se apague o resetee Arduino\n\/\/ ya que la condici\u00f3n siempre ser\u00e1 verdadera, siempre se cumple\n\nwhile (true) {\n   \/\/ Instrucciones diversas, menos break\n}<\/code><\/pre>\n\n\n\n<p class=\"has-background wp-block-paragraph\" style=\"background-color:#f0f0f0\">Tanto en el caso del bucle <em>for <\/em>como en el <em>while <\/em>podemos interrumpir la ejecuci\u00f3n de una iteraci\u00f3n y continuar la siguiente mediante la instrucci\u00f3n <em>continue<\/em>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Veamos el funcionamiento de <em>continue <\/em>con un ejemplo, cuya explicaci\u00f3n est\u00e1 en los comentarios del mismo.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\/\/ Ejemplo de instrucci\u00f3n continue\n\/\/ Tambi\u00e9n funcionar\u00eda de forma similar en un bucle for\n\na = 0;\n\nwhile (a &lt; 10) {\n   a = a + 1;\n   if (a % 2 == 0) {   \/\/ Esta condici\u00f3n es a modulo 2, es decir el resto de dividir a por 2\n      continue;        \/\/ Cuando el resto es 0, es decir, el n\u00famero es par se salta el resto de instrucciones\n   }                   \/\/ del bucle y se vuelve al principio del while\n   \n   \/\/ Resto de instrucciones del bucle while\n   \/\/ Pero estas instrucciones solo se ejecutar\u00e1n cuando a es impar\n   \/\/ Ya que cuando es impar el continue devuelve el control al principio del bucle while de nuevo\n}   \n<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"733_Estructura_do-while\"><\/span><strong>7.3.3. Estructura do-while<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">La sintaxis de esta estructura de bucle es<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>do {\n   \/\/ Bloque de instrucciones que se ejecutan mientras se cumpla la condici\u00f3n\nwhile (condici\u00f3n);<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Estamos de una estructura muy similar a la anterior <em>while<\/em>, con una \u00fanica diferencia<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>En el <em>while <\/em>la condici\u00f3n se verifica al iniciar el bucle. Por lo tanto, se debe cumplir \u00e9sta para entrar en el bucle.<\/li><li>Por el contrario en el <em>do-while<\/em> la condici\u00f3n se verifica al finalizar el bucle. Es decir, la primera vez se ejecutar\u00e1 siempre el bloque de instrucciones que est\u00e1n dentro del mismo, tanto si la condici\u00f3n es cierta como si no lo es.<\/li><\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Aunque el matiz es peque\u00f1o, resultan \u00fatiles ambas estructuras, dependiendo de la casu\u00edstica concreta del algoritmo.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Para recordar y simplificando mucho la diferencia principal entre el <em>while <\/em>y el <em>do-while<\/em>, consiste en que <strong>con el <\/strong><em><strong>do-while<\/strong><\/em><strong> nos aseguramos que las instrucciones del bloque interior del mismo se ejecutan siempre al menos una vez.<\/strong><\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"74_Estructura_Especial_goto\"><\/span><strong>7.4 Estructura Especial goto<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">En el caso de <em>goto<\/em> es una instrucci\u00f3n remanente de los primeros lenguajes Basic en los que cada l\u00ednea de c\u00f3digo iba precedida de un n\u00famero que la identificaba.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Un ejemplo sencillo que limpia la pantalla de texto e imprime infinitamente el conocido &#8220;Hola Mundo&#8221; ser\u00eda el siguiente<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>10 REM Ejemplo de programa en lenguaje BASIC\n20 CLS\n30 PRINT(\"HOLA MUNDO\")\n40 GOTO 30<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">En el caso del lenguaje Arduino la instrucci\u00f3n <em>goto <\/em>se comporta de una forma similar. Su sintaxis ser\u00eda<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>etiqueta_1:\n   \/\/ Instrucciones\n   ...\n   \/\/ y mas instrucciones\n\ngoto etiqueta_1;<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Su funcionamiento permite saltar la ejecuci\u00f3n del programa a la parte del c\u00f3digo marcada previamente con el nombre de la etiqueta que utilizamos en la instrucci\u00f3n goto.<\/p>\n\n\n\n<p class=\"has-background wp-block-paragraph\" style=\"background-color:#f0f0f0\">Como he indicado, esta instrucci\u00f3n es meramente residual y <strong>su uso totalmente desaconsejable<\/strong> por hacer el c\u00f3digo lioso, engorroso y poco legible. Esta orden ya creaba y crea situaciones de errores de ejecuci\u00f3n algor\u00edtmica cuanto m\u00e1s se emplea su uso y mayor es el c\u00f3digo del programa.<\/p>\n\n\n\n<section class=\"wp-block-uagb-columns uagb-columns__wrap uagb-columns__background-undefined uagb-columns__stack-mobile uagb-columns__valign-undefined uagb-columns__gap-10 alignundefined uagb-block-3b68dcdf\"><div class=\"uagb-columns__overlay\"><\/div><div class=\"uagb-columns__inner-wrap uagb-columns__columns-2\">\n<div class=\"wp-block-uagb-column uagb-column__wrap uagb-column__background-undefined uagb-block-65868e7a\"><div class=\"uagb-column__overlay\"><\/div><div class=\"uagb-column__inner-wrap\">\n<div class=\"wp-block-buttons is-content-justification-center is-layout-flex wp-container-core-buttons-is-layout-fe48e5de wp-block-buttons-is-layout-flex\">\n<div class=\"wp-block-button\"><a class=\"wp-block-button__link\" href=\"https:\/\/josedelgado.net\/cab-6-lenguaje-arduino-variables-y-constantes\/\">  Anterior &lt;&#8211; CAB 6. Lenguaje Arduino. Variables y Constantes<\/a><\/div>\n<\/div>\n<\/div><\/div>\n\n\n\n<div class=\"wp-block-uagb-column uagb-column__wrap uagb-column__background-undefined uagb-block-f556daae\"><div class=\"uagb-column__overlay\"><\/div><div class=\"uagb-column__inner-wrap\">\n<div class=\"wp-block-buttons is-content-justification-center is-layout-flex wp-container-core-buttons-is-layout-fe48e5de wp-block-buttons-is-layout-flex\">\n<div class=\"wp-block-button\"><a class=\"wp-block-button__link\" href=\"https:\/\/josedelgado.net\/cab-8-lenguaje-arduino-funciones\/\">Siguiente &#8211;&gt; CAB 8. Lenguaje Arduino. Funciones<\/a><\/div>\n<\/div>\n<\/div><\/div>\n<\/div><\/section>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n","protected":false},"excerpt":{"rendered":"<p>7.1 Introducci\u00f3n Una vez que hemos visto los Aspectos Generales del Lenguaje Arduino y las estructuras para almacenar los datos en memoria, es decir las Variables y Constantes, podemos empezar a implementar los algoritmos que utilizan y operan con esos datos mediante las estructuras de control. Estas instrucciones nos permitir\u00e1n implementar el flujo algor\u00edtmico y &#8230; <a title=\"CAB 7. Lenguaje Arduino. Estructuras de Control\" class=\"read-more\" href=\"https:\/\/josedelgado.net\/va\/cab-7-lenguaje-arduino-estructuras-de-control\/\" aria-label=\"Read more about CAB 7. Lenguaje Arduino. Estructuras de Control\">Read more<\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_uag_custom_page_level_css":"","_exactmetrics_skip_tracking":false,"footnotes":""},"class_list":["post-5958","page","type-page","status-publish"],"translation":{"provider":"WPGlobus","version":"3.0.5","language":"va","enabled_languages":["es","va"],"languages":{"es":{"title":true,"content":true,"excerpt":false},"va":{"title":false,"content":false,"excerpt":false}}},"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.4 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>CAB 7. Lenguaje Arduino. Estructuras de Control - Jos\u00e9 Delgado<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/josedelgado.net\/cab-7-lenguaje-arduino-estructuras-de-control\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"CAB 7. Lenguaje Arduino. Estructuras de Control - Jos\u00e9 Delgado\" \/>\n<meta property=\"og:url\" content=\"https:\/\/josedelgado.net\/cab-7-lenguaje-arduino-estructuras-de-control\/\" \/>\n<meta property=\"og:site_name\" content=\"Jos\u00e9 Delgado\" \/>\n<meta property=\"article:modified_time\" content=\"2022-05-23T16:34:07+00:00\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:site\" content=\"@soyjosedelgado\" \/>\n<meta name=\"twitter:label1\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data1\" content=\"10 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/josedelgado.net\\\/cab-7-lenguaje-arduino-estructuras-de-control\\\/\",\"url\":\"https:\\\/\\\/josedelgado.net\\\/cab-7-lenguaje-arduino-estructuras-de-control\\\/\",\"name\":\"CAB 7. Lenguaje Arduino. Estructuras de Control - Jos\u00e9 Delgado\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/josedelgado.net\\\/#website\"},\"datePublished\":\"2022-05-23T16:26:40+00:00\",\"dateModified\":\"2022-05-23T16:34:07+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/josedelgado.net\\\/cab-7-lenguaje-arduino-estructuras-de-control\\\/#breadcrumb\"},\"inLanguage\":\"va-VA\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/josedelgado.net\\\/cab-7-lenguaje-arduino-estructuras-de-control\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/josedelgado.net\\\/cab-7-lenguaje-arduino-estructuras-de-control\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/josedelgado.net\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"CAB 7. Lenguaje Arduino. Estructuras de Control\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/josedelgado.net\\\/#website\",\"url\":\"https:\\\/\\\/josedelgado.net\\\/\",\"name\":\"Jos\u00e9 Delgado\",\"description\":\"Web Personal\",\"publisher\":{\"@id\":\"https:\\\/\\\/josedelgado.net\\\/#\\\/schema\\\/person\\\/d43605ef0d5681c1b27a4ba1fede1cf4\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/josedelgado.net\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"va-VA\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\\\/\\\/josedelgado.net\\\/#\\\/schema\\\/person\\\/d43605ef0d5681c1b27a4ba1fede1cf4\",\"name\":\"Jose Delgado\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"va-VA\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/24a3e726d4af70848eac3efea42f5b3c496c93b62fb83e7a88636e3cde86b617?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/24a3e726d4af70848eac3efea42f5b3c496c93b62fb83e7a88636e3cde86b617?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/24a3e726d4af70848eac3efea42f5b3c496c93b62fb83e7a88636e3cde86b617?s=96&d=mm&r=g\",\"caption\":\"Jose Delgado\"},\"logo\":{\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/24a3e726d4af70848eac3efea42f5b3c496c93b62fb83e7a88636e3cde86b617?s=96&d=mm&r=g\"},\"description\":\"Ingeniero Superior en Inform\u00e1tica de Gesti\u00f3n, UPV 1988-1993 M\u00e1ster en Direcci\u00f3n Comercial y Marketing, Fundesem 2005 M\u00e1ster en Peritaje Inform\u00e1tico e Inform\u00e1tica Forense, EuroInnova 2018 M\u00e1ster en Marketing y Estrategia de Comunicaci\u00f3n Digital, Fundesem 2019 M\u00e1ster en Formaci\u00f3n del Profesorado de Educaci\u00f3n de Secundaria Especialidad de Tecnolog\u00eda,\u00a0UAX\u00a02023\",\"sameAs\":[\"https:\\\/\\\/www.linkedin.com\\\/in\\\/josedelgado\\\/\",\"https:\\\/\\\/x.com\\\/soyjosedelgado\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"CAB 7. Lenguaje Arduino. Estructuras de Control - Jos\u00e9 Delgado","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/josedelgado.net\/cab-7-lenguaje-arduino-estructuras-de-control\/","og_locale":"en_US","og_type":"article","og_title":"CAB 7. Lenguaje Arduino. Estructuras de Control - Jos\u00e9 Delgado","og_url":"https:\/\/josedelgado.net\/cab-7-lenguaje-arduino-estructuras-de-control\/","og_site_name":"Jos\u00e9 Delgado","article_modified_time":"2022-05-23T16:34:07+00:00","twitter_card":"summary_large_image","twitter_site":"@soyjosedelgado","twitter_misc":{"Est. reading time":"10 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/josedelgado.net\/cab-7-lenguaje-arduino-estructuras-de-control\/","url":"https:\/\/josedelgado.net\/cab-7-lenguaje-arduino-estructuras-de-control\/","name":"CAB 7. Lenguaje Arduino. Estructuras de Control - Jos\u00e9 Delgado","isPartOf":{"@id":"https:\/\/josedelgado.net\/#website"},"datePublished":"2022-05-23T16:26:40+00:00","dateModified":"2022-05-23T16:34:07+00:00","breadcrumb":{"@id":"https:\/\/josedelgado.net\/cab-7-lenguaje-arduino-estructuras-de-control\/#breadcrumb"},"inLanguage":"va-VA","potentialAction":[{"@type":"ReadAction","target":["https:\/\/josedelgado.net\/cab-7-lenguaje-arduino-estructuras-de-control\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/josedelgado.net\/cab-7-lenguaje-arduino-estructuras-de-control\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/josedelgado.net\/"},{"@type":"ListItem","position":2,"name":"CAB 7. Lenguaje Arduino. Estructuras de Control"}]},{"@type":"WebSite","@id":"https:\/\/josedelgado.net\/#website","url":"https:\/\/josedelgado.net\/","name":"Jos\u00e9 Delgado","description":"Web Personal","publisher":{"@id":"https:\/\/josedelgado.net\/#\/schema\/person\/d43605ef0d5681c1b27a4ba1fede1cf4"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/josedelgado.net\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"va-VA"},{"@type":["Person","Organization"],"@id":"https:\/\/josedelgado.net\/#\/schema\/person\/d43605ef0d5681c1b27a4ba1fede1cf4","name":"Jose Delgado","image":{"@type":"ImageObject","inLanguage":"va-VA","@id":"https:\/\/secure.gravatar.com\/avatar\/24a3e726d4af70848eac3efea42f5b3c496c93b62fb83e7a88636e3cde86b617?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/24a3e726d4af70848eac3efea42f5b3c496c93b62fb83e7a88636e3cde86b617?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/24a3e726d4af70848eac3efea42f5b3c496c93b62fb83e7a88636e3cde86b617?s=96&d=mm&r=g","caption":"Jose Delgado"},"logo":{"@id":"https:\/\/secure.gravatar.com\/avatar\/24a3e726d4af70848eac3efea42f5b3c496c93b62fb83e7a88636e3cde86b617?s=96&d=mm&r=g"},"description":"Ingeniero Superior en Inform\u00e1tica de Gesti\u00f3n, UPV 1988-1993 M\u00e1ster en Direcci\u00f3n Comercial y Marketing, Fundesem 2005 M\u00e1ster en Peritaje Inform\u00e1tico e Inform\u00e1tica Forense, EuroInnova 2018 M\u00e1ster en Marketing y Estrategia de Comunicaci\u00f3n Digital, Fundesem 2019 M\u00e1ster en Formaci\u00f3n del Profesorado de Educaci\u00f3n de Secundaria Especialidad de Tecnolog\u00eda,\u00a0UAX\u00a02023","sameAs":["https:\/\/www.linkedin.com\/in\/josedelgado\/","https:\/\/x.com\/soyjosedelgado"]}]}},"uagb_featured_image_src":{"full":false,"thumbnail":false,"medium":false,"medium_large":false,"large":false,"1536x1536":false,"2048x2048":false},"uagb_author_info":{"display_name":"Jose Delgado","author_link":"https:\/\/josedelgado.net\/va\/author\/admin\/"},"uagb_comment_info":0,"uagb_excerpt":"7.1 Introducci\u00f3n Una vez que hemos visto los Aspectos Generales del Lenguaje Arduino y las estructuras para almacenar los datos en memoria, es decir las Variables y Constantes, podemos empezar a implementar los algoritmos que utilizan y operan con esos datos mediante las estructuras de control. Estas instrucciones nos permitir\u00e1n implementar el flujo algor\u00edtmico y&hellip;","_links":{"self":[{"href":"https:\/\/josedelgado.net\/va\/wp-json\/wp\/v2\/pages\/5958","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/josedelgado.net\/va\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/josedelgado.net\/va\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/josedelgado.net\/va\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/josedelgado.net\/va\/wp-json\/wp\/v2\/comments?post=5958"}],"version-history":[{"count":2,"href":"https:\/\/josedelgado.net\/va\/wp-json\/wp\/v2\/pages\/5958\/revisions"}],"predecessor-version":[{"id":5967,"href":"https:\/\/josedelgado.net\/va\/wp-json\/wp\/v2\/pages\/5958\/revisions\/5967"}],"wp:attachment":[{"href":"https:\/\/josedelgado.net\/va\/wp-json\/wp\/v2\/media?parent=5958"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}