Você está na página 1de 7

Estructuras de control en Javascript

Enviado por admin el Dom, 23/03/2014 - 14:56


Las estructuras de control en javascript y en la mayora de los lenguajes de
programacin se utilizan en los para definir el flujo de instrucciones que se van
ejecutando. Si no fuera por las estructuras de control lo nico que podramos hacer es
ejecutar una instruccin tras otra y no tendriamos forma de aplicar unas funciones u
otras en segn las condiciones que nosotros queramos establecer.
Un ejemplo prctico muy tpico para comprender la importancia de las estructuras de
control es el siguiente: Cuando nosotros pedimos a un usuario que introduzca su usaurio
y contrasea pueden ocurrir dos cosas. En primer lugar que los datos sean correctos y
por consiguiente debemos dejarle logear o por el contrario que la pareja usuario/clave
sea errnea y por tanto debemos denegarle la entrada y volver a pedir los credenciales.
Como vis; en base a si los credenciales son correctos o no debemos realizar unas
acciones u otras. Esto es justamente lo que nos permiten las estructuras de control.
Para los hackers el conocer cmo funionan estas estructuras es de vital importancia ya
que un tipo de intrusin; ya sea en un entorno virtual de pentesting o en un entorno real
consiste en modificar el comportamiento de las estructuras de control para poder
manipular el comportamiento del programa o script y as lograr que por ejemplo te de
acceso al sistema sin proporcionar una clave vlida.

Tipos de estructuras de control en javascript


En javascript disponemos de 2 tipos de estructuras de control:

Estructuras condicionales. Este tipo de estructura de control tiene como


objetivo realizar una bifurcacin del flujo de instrucciones. Cuando el programa
llega a un punto, nosotros establecemos una condicin en en funcin de la
misma el programa seguir ejecutando unas instrucciones u otras; tal y como
hemos visto en el anterior ejemplo cuando veamos un caso de control de acceso

sencillo.

Estructuras de repeticin. Este tipo de estructuras de control tambin


conocidas como bucles se utilizan para realizar de forma repetida varias
acciones. Con un bucle podemos por ejemplo mostrar en pantalla todos los
nmeros del 1 al 100 sin tener que escribir 100 veces la instruccin alert ya vista
en el curso bsico de javascript. Otro ejemplo muy fcil de comprender
relaccionado con la seguridad informtica se da cuando en formularios html de
control de acceso se piden una y otra vez los credenciales de acceso hasta que el
usuario proporciona una pareja usuario/clave vlida y accede al sistema. Tu
como programador no sabes cantas veces vas a tener que pedir la clave al
usuario, puede que la introduzca bien a la primera, a la segunda, a la tercer o
quiz nunca. Para estos casos los bucles son la solucin. Con un bucle puedes
pedir de forma reiterada los credenciales de acceso hasta que o bien proporciona
unos vlidos y accede o bien llega a un nmero mximo de intentos y se le
deniega incluso el derecho a seguir probando contraseas por un tiempo.

Estructuras de control de errores. Estas estructuras son clave en el mundo de


la seguridad informtica. Son aquellas que permiten controlar los errores que
el usuario final comete de forma fortuita o intencionada y poder seguir

trabando de forma normal. Los errores ms tpicos a tener en cuenta se producen


cuando pedimos al usuario que introduzca un nmero pero el usuario nos
introduce una letra. Esto producir un error en nuestro program y har que se
comporte de forma inadecuada si no hemos controlado mediante una estructura
de control de errores este caso.
A continuacin pasamos a ver en detalle la sintxis de cada una de las estructuras de
control javascript con ejemplos prcticos.

Estructura de control javascript condicional (IF ELSE)


Las estructuras condicionales en javascript nos sirven para tomar decisiones en
funcin de una condicin que nosotros establecemos. Su sintxis es as:
if (condicion)
{
instrucciones que se ejecutarn si se cumple la condicin
}
else
{
instrucciones que se ejecutarn si NO se cumple la condicin
}
"If" es una sentencia que significa si condicional. La idea es que si sucede tal cosa, (si
la condicin es verdadera) se debe ejecutar la sentencia que le sigue, es decir la misma
slo se ejecutara en caso de que la expresin de tipo Boolean sea verdadera. Si es falsa,
el interprete pasar a la parte "else" que signfica "sino"; y ejecutar las instrucciones
que existen dicha parte. La parte "else" no es obligatoria, pero aqu la mostramos para
que sepis que podemos ejecutar unas instrucciones en caso de que se cumpla la
condicin u otras en caso contrario. Os dejamos con un ejemplo prctico en el que
solicitamos la edad al visitante y le dejamos entrar o no en base a su mayora de edad:
<script>
var edad = prompt("Dime tu edad");
if (num >17) {
alert('Eres mayor de edad, puedes acceder');
}else {
alert('Eres menor de edad; NO puedes acceder');
}
</script>

Estructura de control javascript condicional


(SWITCH)
No en todos los casos nos es suficiente una estructura de control que nos permita
realizar una accin si se cumple una condicin u otra accin si no se cumple. A veces
nos ocurrir que debemos hacer unas acciones si una variables tiene un valor, otras si
tiene un valor distinto y otras si tiene otro valor distinto al anterior. Es el caso tpico de
los mens de eleccin de opciones. En funcin de la opcin elegida por el usuario

nosotros debemos hacer lo que nos pide. Para estos casos entre otros muchos se crearon
las estructuras de control SWITCH; cuya sintxis es as:
switch (expresion){
case valor1: sentencia1;
break;
case valor2: sentencia2;
break;
...
case valorN: sentenciaN;
break;
default: sentenciaFinal;
break;
}
Como vis segn el valor de la expresin se ejecutarn unas sentencias u otras y en el
caso de que la expresin de un valor distinto a aquellos que tenemos previstos se
ejecutar aquello que tengamos en la parte final (default). Vamos a ver un ejemplo
mediante el cual nosotros convertimos un mes dado en formto numrico (del 0 al 11)
en formato texto (enero, febrero....diciembre):
<script>
var hoy = new Date()
var nombremes
var mes=hoy.getMonth()
switch (mes) {
case 0 :
nombremes=" Enero"
break
case 1 :
nombremes=" Febrero"
break
case 6 :
nombremes=" Julio"
break
case 9 :
nombremes=" Setiembre"
break
default : nombremes= "... no se el mes"
}
alert("Estamos en el mes llamado" + nombremes)
</script>
Faltaran aadir los 12 meses, pero para no extender mucho el ejemplo te dejamos a ti la
tarea de completar los meses que faltan y as probar el ejemplo completo en tu
ordenador. Como habrs podido observar podras haber logrado el mismo
objetivo creado 12 "IFs" y habras obtenido el mismo resultado pero esa solucin a parte
de denotar que no conoces la estructura de control SWITCH solo consegura alargar tu
cdigo; hacerlo menos legible y por ende ms difcil de mantener.

Estructura de control javascript bucle WHILE


Pasamos a ver la primera estructura de repeticin en javascript; el bucle WHILE. La
idea principal con la que se han creado estos bucles es: MIENTRAS se cumpla la
condicin REALIZAR estas acciones. Cuando la condicin deje de cumplirse salimos
del bucle y contina el flujo del programa. Su sintxis es:
while (expresionBooleana) {
sentencia;
}
Una caracterstica a tener muy en cuenta a la hora de decidirse a utilizar este tipo de
bucles es que la condicin es lo primero que se evalua. En el siguiente ejemplo vamos
a mostrar los nmeros del 1 al 9 haciendo uso del bucle WHILE:
<script>
var i = 0;
while (i<9) {
alert (i);
i++;
}
alert('"Salimos" del while porque i vale: ' +i)
</script>

Estructura de control javascript bucle DO WHILE


Este bucle es exactamente igual que el anterior pero con la diferencia de que la
condicin se comprueba al final. Este tipo de bucles son muy utilizados cuando
creamos un men de opciones; mientras el usuario no elija la opcin de salir del
programa seguiremos trabajando con el. Por ello necesitamos comprobar la opcin que
el usuario a elegido al final del programa, ya que al principio an no sabemos la opcin
que ha escogido. Vamos a ver un ejemplo de cmo podemos calcular el factorial de un
nmero con el uso de este bucle:
<script>
var resultado = 1;
var numero = 5;
do {
resultado = resultado * numero;
numero--;
} while(numero > 0);
alert(resultado);
</script>

Estructura de control javascript bucle FOR

En los bucles vistos hasta ahora nosotros no conociamos el nmero de iteraciones que se
daran en el bucle, ya que continuar dentro del bucle o salir es algo que depende de una
condicin (elegir una opcin de un men, introducir una contrasea vlida....). Pero a
veces nosotros sabemos exactamente el nmero de iteraciones que queremos hacer; no
dependen de una condicin. Para estos casos existe el bucle "FOR" cuya sintxis es as:
for (inicio; test; incremento)
{
sentencia;
}
Estos bucles son muy utilizados para recorrer listas de objetos. Si nosotros tenemos una
lista de 10 variables y queremos hacer algo sobre cada una de las variables podemos
hacer un bucle for que har las 10 iteraciones que necestiamos. En el siguiente ejemplo
a reescribir ejemplo anterior que mostraba los 10 primeros nmeros con un blucle
WHILE pero esta vez con un bucle FOR:
<script>
for (i=0; i<10; i++)
{
alert (i);
}
</script>
Por qu hemos reescrito el mismo ejemplo? Por una sencilla razn. No hay bucles
mejores ni bucle peores, cada uno tiene sus caractersticas y se adaptan mejor o peor en
cada caso en base a nuestras necesidades. Es muy fcil convertir un bucle en otro y que
el programa siga manteniendo intacto su comportamiento. Un buen programador sabr
en cada caso qu bucle utilizar. Sabr si necesita comprobar la condicin al inicio o al
final, si sabe el nmero de iteraciones que debe realizar es fijo o depende de una
condicin... etc.

Estructura de control de errores javascript TRY


CATCH
Estas sentencias se utilizan para ejecutar cdigo de forma segura, ya que en el caso de
que existan excepciones, podremos capturarlas y seguir ejecutando normalmente el
cdigo, Una excepcin es un error que se produce por algn motivo determinado
durante la ejecucin de un script, ese error comnmente es mostrado al usuario, en
este caso ser lanzado para "afuera", en donde la siguiente sentencia (match) lo
capturar, impidindole salir de la manera nativa al usuario, permitindonos trabajar con
el error o bien mostrar un mensaje ms amigable y claro a los ojos del mismo. Veamos
un ejemplo de uso de esta estructura de control:
<script>
try
{
document.write(10/variable1) ; //Variable insegura del usuario (puede introducir un 0)
}catch(e)

{
alert(e.message); // Mensaje en caso de error
}
</script>
Todas las instrucciones que tengamos en la seccin TRY se ejecutarn de forma segura;
si el usuario mete un 0 variable1 valdr 0 y el programa intentar dividir por 0. Como
esto no es posible si no hubieramos hecho esta instruccin dentro del TRY el program
fallara y dejara de funcionar. Como hemos tenido la precaucin de utilizar el TRY solo
se producir una excepcin que se recoger dentro del apartado CATCH y se mostrar
el error permitiendo al programa trabajar de forma de forma normal.
Ahora te recomendamos que hagas distintos ejemplos en los que puedas utilizar y ganar
experiencia en el uso de todas un cada una de las estructuras de control javascript.

Você também pode gostar