{"id":1473,"date":"2018-01-29T16:00:54","date_gmt":"2018-01-29T21:00:54","guid":{"rendered":"https:\/\/manualjavaoracle.wordpress.com\/?p=1473"},"modified":"2018-02-09T13:39:00","modified_gmt":"2018-02-09T18:39:00","slug":"sentencia-while","status":"publish","type":"post","link":"https:\/\/www.manualjava.net\/?p=1473","title":{"rendered":"Sentencia &#8211; while"},"content":{"rendered":"<p><img decoding=\"async\" loading=\"lazy\" class=\"wp-image-1483 alignnone\" src=\"https:\/\/www.manualjava.net\/wp-content\/uploads\/2018\/01\/java14.png\" alt=\"\" width=\"253\" height=\"138\" \/><\/p>\n<p><span style=\"color: #000000;\">Uno de los conceptos m\u00e1s fundamentales en cualquier lenguaje de programaci\u00f3n es el de bucle (lazo, loop). Un bucle es un conjunto de sentencia (puede no tener sentencias, bucle vac\u00edo) que se ejecutan repetidamente hasta que se cumple una determinada condici\u00f3n o bien se alcanza un n\u00famero fijo de iteraciones o repeticiones de todas las sentencias\u00a0<strong>while, do-while y for\u00a0<\/strong>son las sentencias t\u00edpicas de realizaci\u00f3n de bucles.<\/span><!--more--><\/p>\n<p><span style=\"color: #000000;\">El bucle while es un bucle pre-test (pre-condici\u00f3n) donde la condici\u00f3n que debe cumplirse en el bucle para su continuaci\u00f3n se comprueba antes de cada parada (iteraci\u00f3n) del bucle. Generalmente esta sentencia se utiliza en situaciones en donde desconocemos la cantidad de ciclos que se deben ejecutar para producir un resultado.<\/span><\/p>\n<h2><span style=\"color: #000000;\"><strong>Sintaxis<\/strong><\/span><\/h2>\n<ul>\n<li><span style=\"color: #000000;\"> while(condicion)<\/span><br \/>\n<span style=\"color: #000000;\">\u00a0 \u00a0 \u00a0 \u00a0 sentencia<\/span><\/li>\n<li><span style=\"color: #000000;\"> while(condicion)<\/span><br \/>\n<span style=\"color: #000000;\"> {<\/span><br \/>\n<span style=\"color: #000000;\">\u00a0 \u00a0 \u00a0 \u00a0 sentencia_1<\/span><br \/>\n<span style=\"color: #000000;\">\u00a0 \u00a0 \u00a0 \u00a0 sentencia_2<\/span><br \/>\n<span style=\"color: #000000;\">\u00a0 \u00a0 \u00a0 \u00a0 .<\/span><br \/>\n<span style=\"color: #000000;\">\u00a0 \u00a0 \u00a0 \u00a0 .<\/span><br \/>\n<span style=\"color: #000000;\">\u00a0 \u00a0 \u00a0 \u00a0 .<\/span><br \/>\n<span style=\"color: #000000;\">\u00a0 \u00a0 \u00a0 \u00a0 sentencia_n<\/span><br \/>\n<span style=\"color: #000000;\"> }<\/span><\/li>\n<\/ul>\n<p><span style=\"color: #000000;\">Por lo tanto, la sentencia while eval\u00faa condici\u00f3n y si es verdadera se ejecuta la\/s sentencia\/s. La diferencia con if es que while repite la operaci\u00f3n una y otra vez hasta que condici\u00f3n es falsa. La variable que representa la condici\u00f3n del bucle se denomina tambi\u00e9n\u00a0<strong>variable de control del bucle\u00a0<\/strong>a que su valor determina si las sentencias o instrucciones del bucle se repite. La variable de control del bucle debe ser: 1) inicializada, 2) comprobada, y 3) actualizada para que el bucle se ejecute adecuadamente.<\/span><\/p>\n<h3><span style=\"color: #000000;\"><strong>Ejemplo<\/strong><\/span><\/h3>\n<p><span style=\"color: #000000;\">\u00a0 \u00a0 \u00a0 while(saldo&lt;objetivo)<\/span><br \/>\n<span style=\"color: #000000;\">\u00a0 \u00a0 \u00a0 {<\/span><br \/>\n<span style=\"color: #000000;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 a\u00f1os++;<\/span><br \/>\n<span style=\"color: #000000;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 double interes = saldo*tasa\/100;<\/span><br \/>\n<span style=\"color: #000000;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 saldo = saldo+interes;<\/span><br \/>\n<span style=\"color: #000000;\">\u00a0 \u00a0 \u00a0 }<\/span><br \/>\n<span style=\"color: #000000;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 System.out.println(a\u00f1os + \u00ab, a\u00f1os.\u00bb);<\/span><\/p>\n<p><span style=\"color: #000000;\">Recordemos que en un bucle\u00a0<strong>while\u00a0<\/strong>realiza la comprobaci\u00f3n en la parte superior del bucle; por consiguiente, puede presentarse alguna situaci\u00f3n en la cual el bucle no se ejecutar\u00e1. Si se desea asegurar la ejecuci\u00f3n del bloque al menos una vez, se necesitar\u00e1 desplazar la condici\u00f3n o expresi\u00f3n l\u00f3gica al final del bloque. Esta caracter\u00edstica se realiza en el bucle\u00a0<strong>do-while.<\/strong><\/span><\/p>\n<h2><span style=\"color: #000000;\"><strong>Sentencias break y continue<\/strong><\/span><\/h2>\n<p><span style=\"color: #000000;\">Dos sentencias se pueden utilizar en los bucles para romper la secuencia normal de los mismos: break (ya utilizada en la sentencia switch) y continue. La sentencia break se utiliza, a veces, para realizar una terminaci\u00f3n anormal del bucle. Dicho de otro modo, una terminaci\u00f3n antes de lo previsto. La sentencia continue se utiliza para terminar la iteraci\u00f3n en curso del bloque de sentencias del bucle. Las sentencias anteriores se pueden utilizar con cualquiera de las sentencias del bucle de Java.<\/span><\/p>\n<h3><span style=\"color: #000000;\"><strong>Ejemplo de break<\/strong><\/span><\/h3>\n<p><span style=\"color: #000000;\">\u00a0 \u00a0 \u00a0 \u00a0while(mes&lt;=100)<\/span><br \/>\n<span style=\"color: #000000;\">\u00a0 \u00a0 \u00a0 \u00a0{<\/span><br \/>\n<span style=\"color: #000000;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0saldo = saldo+cuota;<\/span><br \/>\n<span style=\"color: #000000;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0double interes = saldo*tasaInteres\/100;<\/span><br \/>\n<span style=\"color: #000000;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0saldo += interes;<\/span><br \/>\n<span style=\"color: #000000;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0if(saldo&gt;=objetivo) break;<\/span><br \/>\n<span style=\"color: #000000;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0mes++;<\/span><br \/>\n<span style=\"color: #000000;\">\u00a0 \u00a0 \u00a0 \u00a0}<\/span><\/p>\n<h3><span style=\"color: #000000;\"><strong>Consejo de programaci\u00f3n<\/strong><\/span><\/h3>\n<p><span style=\"color: #000000;\">El uso de break es una sentencia no recomendable ya que puede hacer dif\u00edcil la compresi\u00f3n del comportamiento del programa. En particular, suele hacer muy dif\u00edcil verificar los invariantes de los bucles. Por otra parte suele ser f\u00e1cil la reescritura de los bucles sin la sentencia break.\u00a0\u00a0<\/span><\/p>\n<p><span style=\"color: #000000;\">A diferencia de C++, Java ofrece una sentencia break etiqueta que permite romper el flujo de control de bucles anidados.<\/span><\/p>\n<h3><span style=\"color: #000000;\"><strong>Ejemplo de break etiqueta<\/strong><\/span><\/h3>\n<p><span style=\"color: #000000;\">\u00a0 \u00a0 \u00a0 bucleExterno:\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \/\/ etiqueta<\/span><br \/>\n<span style=\"color: #000000;\">\u00a0 \u00a0 \u00a0 do<\/span><br \/>\n<span style=\"color: #000000;\">\u00a0 \u00a0 \u00a0 {<\/span><br \/>\n<span style=\"color: #000000;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0. . .<\/span><br \/>\n<span style=\"color: #000000;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0while(siguiente&gt;=0)<\/span><br \/>\n<span style=\"color: #000000;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0{<\/span><br \/>\n<span style=\"color: #000000;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0if(siguiente&lt;-599)<\/span><br \/>\n<span style=\"color: #000000;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 break bucleExterno;<\/span><br \/>\n<span style=\"color: #000000;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0. . .<\/span><br \/>\n<span style=\"color: #000000;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0}<\/span><br \/>\n<span style=\"color: #000000;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0. . .<\/span><br \/>\n<span style=\"color: #000000;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0problema = . . .<\/span><br \/>\n<span style=\"color: #000000;\">\u00a0 \u00a0 \u00a0 }while(problema.equalsIgnoreCase(\u00absi\u00bb));<\/span><\/p>\n<p><span style=\"color: #000000;\">En el ejemplo anterior bucleExterno etiqueta el bucle externo, que es un bucle do. Si el valor de la variable siguiente es menor que -559, entonces se ejecuta la sentencia break y termina el bucle do.<\/span><\/p>\n<h3><span style=\"color: #000000;\"><strong>Nota<\/strong><\/span><\/h3>\n<p><span style=\"color: #000000;\">Es posible aplicar una etiqueta a cualquier sentencia, incluso en una sentencia if o en un bloque.<\/span><\/p>\n<p><span style=\"color: #000000;\">\u00a0 \u00a0 \u00a0 etiqueta:<\/span><br \/>\n<span style=\"color: #000000;\">\u00a0 \u00a0 \u00a0 {<\/span><br \/>\n<span style=\"color: #000000;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0. . .<\/span><br \/>\n<span style=\"color: #000000;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0if(condicion) break etiqueta;\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \/\/ salida del bloque<\/span><br \/>\n<span style=\"color: #000000;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0. . .<\/span><br \/>\n<span style=\"color: #000000;\">\u00a0 \u00a0 \u00a0 }<\/span><\/p>\n<h3><span style=\"color: #000000;\"><strong>Ejemplo de continue<\/strong><\/span><\/h3>\n<p><span style=\"color: #000000;\">\u00a0 \u00a0 \u00a0 Scanner entrada = new Scanner(System.in);<\/span><br \/>\n<span style=\"color: #000000;\">\u00a0 \u00a0 \u00a0 for(int contador = 1; contado&lt;=500; contador++)<\/span><br \/>\n<span style=\"color: #000000;\">\u00a0 \u00a0 \u00a0 {<\/span><br \/>\n<span style=\"color: #000000;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 System.out.print(\u00abIntroduzca un n\u00famero positivo: \u00ab);<\/span><br \/>\n<span style=\"color: #000000;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 int n;<\/span><br \/>\n<span style=\"color: #000000;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 n = entrada.nextInt();<\/span><br \/>\n<span style=\"color: #000000;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 if(n&lt;0) continue;<\/span><br \/>\n<span style=\"color: #000000;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 suma += n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0\/\/ no se ejecuta si n&lt;0 <\/span><br \/>\n<span style=\"color: #000000;\">\u00a0 \u00a0 \u00a0 }<\/span><\/p>\n<h2><span style=\"color: #000000;\"><strong>M\u00e9todo exit()<\/strong><\/span><\/h2>\n<p><span style=\"color: #000000;\">La sentencia break termina un bucle o a la sentencia switch, pero no termina el programa; en caso de desear terminar el programa, Java tiene m\u00e9todo exit definido en la clase System (clase predefinida que se incorpora autom\u00e1ticamente) que termina un programa tan pronto se invoca.<\/span><\/p>\n<h3><span style=\"color: #000000;\"><strong>Ejemplo<\/strong><\/span><\/h3>\n<p><span style=\"color: #000000;\">\u00a0 \u00a0 \u00a0 System.out.print(\u00abIntroduzca un numero negativo: \u00ab);<\/span><br \/>\n<span style=\"color: #000000;\">\u00a0 \u00a0 \u00a0 int numero = entrada.nextInt();<\/span><br \/>\n<span style=\"color: #000000;\">\u00a0 \u00a0 \u00a0 if(numero&gt;=0) <\/span><br \/>\n<span style=\"color: #000000;\">\u00a0 \u00a0 \u00a0 {<\/span><br \/>\n<span style=\"color: #000000;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0System.out.println(numero + \u00abno es negativo\u00bb);<\/span><br \/>\n<span style=\"color: #000000;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0System.out.println(\u00abprograma abortado\u00bb);<\/span><br \/>\n<span style=\"color: #000000;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0System.exit(0);<\/span><br \/>\n<span style=\"color: #000000;\">\u00a0 \u00a0 \u00a0 }<\/span><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Uno de los conceptos m\u00e1s fundamentales en cualquier lenguaje de programaci\u00f3n es el de bucle (lazo, loop). Un bucle es un conjunto de sentencia (puede no tener sentencias, bucle vac\u00edo) que se ejecutan repetidamente hasta que se cumple una determinada condici\u00f3n o bien se alcanza un n\u00famero fijo de iteraciones o repeticiones de todas las &hellip; <\/p>\n<p><a class=\"more-link btn\" href=\"https:\/\/www.manualjava.net\/?p=1473\">Seguir leyendo<\/a><\/p>\n","protected":false},"author":1,"featured_media":1483,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[6],"tags":[],"_links":{"self":[{"href":"https:\/\/www.manualjava.net\/index.php?rest_route=\/wp\/v2\/posts\/1473"}],"collection":[{"href":"https:\/\/www.manualjava.net\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.manualjava.net\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.manualjava.net\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.manualjava.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1473"}],"version-history":[{"count":2,"href":"https:\/\/www.manualjava.net\/index.php?rest_route=\/wp\/v2\/posts\/1473\/revisions"}],"predecessor-version":[{"id":2096,"href":"https:\/\/www.manualjava.net\/index.php?rest_route=\/wp\/v2\/posts\/1473\/revisions\/2096"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.manualjava.net\/index.php?rest_route=\/wp\/v2\/media\/1483"}],"wp:attachment":[{"href":"https:\/\/www.manualjava.net\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1473"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.manualjava.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=1473"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.manualjava.net\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=1473"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}