Resumen: Entrega nº32 del curso "Tutorial básico del programador web: JavaScript desde cero".
Codificación aprenderaprogramar.com: CU01132E

 

 

BUCLE CON INSTRUCCIÓN WHILE EN JAVASCRIPT. EJEMPLO USO DE BREAK.

El bucle while presenta ciertas similitudes y ciertas diferencias con el bucle for. La repetición en este caso se produce no un número predeterminado de veces, sino mientras se cumpla una condición. Conceptualmente el esquema más habitual es el siguiente:

 

logo javascript

 

while javascript

 

 

La sintaxis en general es: while (condición) { instrucciones a ejecutarse } donde condición es una expresión que da un resultado true o false en base al cual el bucle se ejecuta o no. Escribe y prueba el siguiente código, donde además vemos un ejemplo de uso de la instrucción break;.

<!DOCTYPE html>

<html><head><title>Ejemplo aprenderaprogramar.com</title><meta charset="utf-8">

<style type="text/css">

body {background-color:white; font-family: sans-serif;}

.boton{padding:15px; width: 200px;  text-align:center; clear:both;

color: white; border-radius: 40px; background: rgb(202, 60, 60);}

</style>

<script type="text/javascript">

function ejemploWhile() {

var i = 0; var msg = '';

while (true) { i++;

msg = msg + '\t'+ i + '\n';

if (i==9) {break;}

}

alert ('Bucle con while: \n'+ msg);

}

</script>

</head>

<body>

<h1>Portal web aprenderaprogramar.com</h1>

<h2>Didáctica y divulgación de la programación</h2>

<h3 class="boton" onclick="ejemploWhile()">Pulsa aquí</h3>

</body>

</html>

 

 

El resultado esperado es que se muestre lo siguiente:

Bucle con while:
1
2
3
4
5
6
7
8
9

 

En este código hemos hecho algo un poco extraño. Como condición a evaluar hemos puesto “true”. Esto significa que la condición es siempre verdadera, lo que en teoría daría lugar a un bucle infinito y a un bloqueo del ordenador. Sin embargo, utilizamos un contador auxiliar que inicializamos en cero y en cada repetición del bucle aumentamos en una unidad. A su vez, introducimos una condición dentro del bucle según la cual cuando el contador alcanza el valor 9 se ejecuta la instrucción break.

Este ejemplo debe valernos solo como tal: en general la condición de entrada al bucle será una expresión a evaluar como (i < 10 ó a >= 20 ó reductor < compresor) y no un valor true. Y en general la salida a un bucle se realizará de forma natural mediante la evaluación de la condición y no mediante una instrucción break;.

 

 

BUCLE CON INSTRUCCIÓN DO … WHILE. EJEMPLO DE USO.

El bucle do … while es muy similar al bucle while. La diferencia radica en cuándo se evalúa la condición de salida del ciclo. En el bucle while esta evaluación se realiza antes de entrar al ciclo, lo que significa que el bucle puede no llegar ejecutarse. En cambio, en un bucle do … while, la evaluación se hace después de la primera ejecución del ciclo, lo que significa que el bucle obligatoriamente se ejecuta al menos en una ocasión. Después de la condición del while debemos escribir punto y coma. Por ejemplo while (contador < 10);

A modo de ejercicio, escribe este código y comprueba los resultados que se obtienen con él:

<!DOCTYPE html>

<html><head><title>Ejemplo aprenderaprogramar.com</title><meta charset="utf-8">

<style type="text/css">body {background-color:white; font-family: sans-serif;}

.boton{padding:15px; width: 200px;  text-align:center; clear:both;

color: white; border-radius: 40px; background: rgb(202, 60, 60);}

</style>

<script type="text/javascript">

function ejemploDoWhile() {

var contador = 0;var msg = '';

do { msg = msg + '\t Contando... '+ (contador+1) + '\n';

contador +=1;

} while (contador < 10);

alert ('Bucle con do ... while: \n'+ msg);

}

</script>

</head>

<body>

<h1>Portal web aprenderaprogramar.com</h1>

<h2>Didáctica y divulgación de la programación</h2>

<h3 class="boton" onclick="ejemploDoWhile()">Pulsa aquí</h3>

</body></html>

 

 

El resultado esperado es que se muestre lo siguiente:

Bucle con do ... while:
Contando... 1
Contando... 2
Contando... 3
Contando... 4
Contando... 5
Contando... 6
Contando... 7
Contando... 8
Contando... 9
Contando... 10

 

 

BUCLES ETIQUETADOS O CON NOMBRE. SENTENCIA CONTINUE

En JavaScript las sentencias pueden llevar un nombre o etiqueta que los identifique y que sirvan para hacer referencia a ellos en algún momento. Por ejemplo los bucles podemos etiquetarlos como vemos en el siguiente ejemplo:

msg = msg + 'Bucles etiquetados: \n'

bucleExterior: for(var i=0; i<2; i++) {

                bucleInterior: for (var j=0; j<5; j++){

                msg = msg + 'i vale ' + i + ', j vale ' + j + ', i*j =  ' + (i*j) +'\n';

                }

}

 

 

La sentencia continue da lugar a que se salte a la siguiente iteración del bucle sin ejecutar las instrucciones existentes después de la sentencia continue. Si escribimos continue; la sentencia afecta al bucle más próximo a donde se encuentre la sentencia. Si escribimos continue nombreDeLaEtiquetaDelBucle; la sentencia afecta a aquel bucle que hayamos referenciado.

El siguiente código nos muestra ejemplos de uso de continue en bucles etiquetados y sin etiquetar:

<!DOCTYPE html>

<html><head><title>Ejemplo aprenderaprogramar.com</title><meta charset="utf-8">

<style type="text/css">

body {background-color:white; font-family: sans-serif;}

.boton{padding:15px; width: 200px;  text-align:center; clear:both;

color: white; border-radius: 40px; background: rgb(202, 60, 60);}

</style>

<script type="text/javascript">

function ejemploBuclesConContinue() {

var contador = 0;

var msg = 'Bucle do con ejemplo de continue: \n';

do {

if (contador>5 && contador < 12) {contador +=1; continue;}

msg = msg + '\t Contando... '+ (contador+1) + '\n';

//Otras instrucciones aquí...

contador +=1;

} while (contador < 20);

msg = msg + 'Bucles etiquetados y uso de continue referenciado: \n'

bucleExterior: for(var i=0; i<2; i++) {

                bucleInterior: for (var j=0; j<5; j++){

                comprobarSijvale2: if (j==2) {continue bucleExterior;}

                msg = msg + 'i vale ' + i + ', j vale ' + j + ', i*j =  ' + (i*j) +'\n';

                }

}

msg = msg + 'Bucles sin etiquetar y continue sin referenciar: \n'

bucleExterior: for(var i=0; i<2; i++) {

                bucleInterior: for (var j=0; j<5; j++){

                if (j==2) {continue;}

                msg = msg + 'i vale ' + i + ', j vale ' + j + ', i*j =  ' + (i*j) +'\n';

                }

}

alert (msg);

}

</script>

</head>

<body>

<h1>Portal web aprenderaprogramar.com</h1>

<h2>Didáctica y divulgación de la programación</h2>

<h3 class="boton" onclick="ejemploBuclesConContinue()">Pulsa aquí</h3>

</body>

</html>

 

 

El resultado esperado de ejecución es el siguiente. Compruébalo y razona el por qué de este resultado:

Bucle do con ejemplo de continue:
Contando... 1
Contando... 2
Contando... 3
Contando... 4
Contando... 5
Contando... 6
 Contando... 13
 Contando... 14
 Contando... 15
 Contando... 16
 Contando... 17
 Contando... 18
 Contando... 19
 Contando... 20
Bucles etiquetados y uso de continue referenciado:
i vale 0, j vale 0, i*j =  0
i vale 0, j vale 1, i*j =  0
i vale 1, j vale 0, i*j =  0
i vale 1, j vale 1, i*j =  1
Bucles sin etiquetar y continue sin referenciar:
i vale 0, j vale 0, i*j =  0
i vale 0, j vale 1, i*j =  0
i vale 0, j vale 3, i*j =  0
i vale 0, j vale 4, i*j =  0
i vale 1, j vale 0, i*j =  0
i vale 1, j vale 1, i*j =  1
i vale 1, j vale 3, i*j =  3
i vale 1, j vale 4, i*j =  4

 

 

EJERCICIO

1) Crea una función que pida una palabra al usuario y usando un bucle while y el método charAt, muestre cada una de las letras que componen la entrada. Por ejemplo si se introduce “ave” debe mostrar:

Letra 1: a             Letra 2: v             Letra 3: e

 

Puedes comprobar si tus respuestas son correctas consultando en los foros aprenderaprogramar.com.

 

 

 

 

 

 

Para acceder a la información general sobre este curso y al listado completo de entregas pulsa en este link:  Ver curso completo.

Para  hacer un comentario o consulta utiliza los foros aprenderaprogramar.com, abiertos a cualquier persona independientemente de su nivel de conocimiento.

 

Descargar archivo: