Lazos
Lección
4
Introducción
Existen
dos partes principales para JavaScript: la sintaxis del lenguaje
y su biblioteca de objetos. En la lección 2, la cual
fue una introducción para la sintaxis, vimos las variables,
sentencias y cláusulas if-then, que son partes de todos
los lenguajes de programación. Ahora es tiempo de aprender
el resto de la sintaxis JavaScript.
Existen
sólo tres aspectos principales de la sintaxis de JavaScript
que aún tenemos que cubrir: lazos, arreglos y funciones.
Lazos
A
veces quiere hacer la misma cosa una y otra vez. Digamos, por
ejemplo, que quiere obtener una contraseña de alguien
y quiere quedarse preguntando hasta que le ha dado la contraseña
correcta. Si sólo quiere darle dos posibilidades, podría
hacer algo como:
var
the_password = "pass the wrench";
var
answer = prompt("What's the woyd?","");
if
(answer != the_password) {
answer
= prompt("What's the woyd?","");
if
(answer != the_password) {
document.write("You
lose!<p>");
}
else {
document.write("That's
right!<p>");
}
}
else {
document.write("That's
right!<p>");
}
Desafortunadamente,
esta clase de cosas no funciona si quiere seguir preguntando
hasta que ingrese la correcta. Y es bastante desagradable, imagine
que quiere preguntar cuatro veces en lugar de sólo dos.
Tendría cuatro niveles de cláusulas if-then, lo
cual no es una buena cosa.
La
mejor forma de hacer algo similar, es usar un lazo. En este
caso, puede usar un lazo preguntando una y otra vez hasta que
la persona desista. Veamos un ejemplo con un lazo en acción.
La contraseña es: pass the wrench.
Contraseña
en un lazo
Ejemplo22_0.html
<html>
<head>
<title>Pedido
de contraseña</title>
<script
language="JavaScript">
var password="salto y gracia";
var answer;
while (answer != password)
{
answer = prompt("¿Cuál es la contraseña?","");
if ( answer == null) break;
document.writeln(answer);
}
</script>
</head>
<body>
Esto
es todo
</body>
</html>
Veamos este ejemplo línea por línea.
La
declaración típica de variables:
var
password="salto y gracia";
var
answer;
Aquí
definimos la contraseña como una tira y declaramos una
variable llamada answer. Verá porque tenemos que declarar
answer en un segundo. Las siguientes líneas son las importantes:
while
(answer != password)
answer =
prompt("¿Cuál
es la contraseña?","");
if (
answer ==
null)
break;
document.writeln(answer);
}
Este
es el lazo while. La forma general de un lazo
while tiene la forma:
while (algún test es verdadero)
{
hacer algo dentro de las llaves
}
Por
lo tanto las líneas de arriba dicen, "Mientras la
respuesta no sea igual a la contraseña y no haya presionado
el botón cancelar, ejecute la orden prompt".
Hemos
tenido que declarar answer porque efectuar un test como (answer
!= password) sobre una variable no declarada dará
error en algún navegador. Por lo tanto la primera vez
no tendrá valor alguno, al definirla antes le estamos
asignando el valor nulo. Si presiona el botón cancelar
le está asignando el valor nulo, como luego verifica
si answer tiene nulo, de ser así abortará y seguirá
ejecutándose el programa. Pero si no ingresa nada y presiona
el botón aceptar, el programa continúa, esto es
debido a que en ese caso la variable vale blanco, lo cual es
distinto de nulo.