Вы находитесь на странице: 1из 15

4.4.

Otras estructuras de control


Las estructuras de control de flujo que se han visto ( if, else, for) y las
sentencias que modifican su comportamiento (break, continue) no son
suficientes para realizar algunas tareas complejas y otro tipo de repeticiones.
Por ese motivo, JavaScript proporciona otras estructuras de control de flujo
diferentes y en algunos casos ms eficientes.

4.4.1. Estructura while


La estructura while permite crear bucles que se ejecutan ninguna o ms veces,
dependiendo de la condicin indicada. Su definicin formal es:
while(condicion) {
...
}

El funcionamiento del bucle while se resume en: "mientras se cumpla la


condicin indicada, repite indefinidamente las instrucciones incluidas dentro del
bucle".
Si la condicin no se cumple ni siquiera la primera vez, el bucle no se ejecuta.
Si la condicin se cumple, se ejecutan las instrucciones una vez y se vuelve a
comprobar la condicin. Si se sigue cumpliendo la condicin, se vuelve a
ejecutar el bucle y as se contina hasta que la condicin no se cumpla.
Evidentemente, las variables que controlan la condicin deben modificarse
dentro del propio bucle, ya que de otra forma, la condicin se cumplira siempre
y el bucle while se repetira indefinidamente.
El siguiente ejemplo utiliza el bucle while para sumar todos los nmeros
menores o iguales que otro nmero:
var resultado = 0;
var numero = 100;
var i = 0;

while(i <= numero) {


resultado += i;

i++;
}

alert(resultado);

El programa debe sumar todos los nmeros menores o igual que otro dado. Por
ejemplo si el nmero es 5, se debe calcular: 1 + 2 + 3 + 4 + 5 = 15
Este tipo de condiciones "suma nmeros mientras sean menores o iguales que
otro nmero dado") se resuelven muy fcilmente con los bucles tipo while,
aunque tambin se podan resolver con bucles de tipo for.
En el ejemplo anterior, mientras se cumpla la condicin, es decir, mientras que
la variable i sea menor o igual que la variable numero, se ejecutan las
instrucciones del bucle.
Dentro del bucle se suma el valor de la variable i al resultado total
(variable resultado) y se actualiza el valor de la variable i, que es la que
controla la condicin del bucle. Si no se actualiza el valor de la variable i, la
ejecucin del bucle continua infinitamente o hasta que el navegador permita al
usuario detener el script.

4.4.2. Estructura do...while


El bucle de tipo do...while es muy similar al bucle while, salvo que en este
caso siempre se ejecutan las instrucciones del bucle al menos la primera vez.
Su definicin formal es:
do {
...
} while(condicion);

De esta forma, como la condicin se comprueba despus de cada repeticin, la


primera vez siempre se ejecutan las instrucciones del bucle. Es importante no
olvidar que despus del while() se debe aadir el carcter ; (al contrario de lo
que sucede con el bucle while simple).
Utilizando este bucle se puede calcular fcilmente el factorial de un nmero:
var resultado = 1;
var numero = 5;

do {
resultado *= numero; // resultado = resultado * numero
numero--;
} while(numero > 0);

alert(resultado);

En el cdigo anterior, el resultado se multiplica en cada repeticin por el valor


de la variable numero. Adems, en cada repeticin se decrementa el valor de
esta variable numero. La condicin del bucledo...while es que el valor
de numero sea mayor que 0, ya que el factorial de un nmero multiplica todos
los nmeros menores o iguales que l mismo, pero hasta el nmero 1 (el
factorial de 5 por ejemplo es 5 x 4 x 3 x 2 x 1 = 120).
Como en cada repeticin se decrementa el valor de la variable numero y la
condicin es que numerosea mayor que cero, en la repeticin en la
que numero valga 0, la condicin ya no se cumple y el programa se sale del
bucle do...while.

4.4.3. Estructura switch


La estructura if...else se puede utilizar para realizar comprobaciones mltiples y
tomar decisiones complejas. Sin embargo, si todas las condiciones dependen
siempre de la misma variable, el cdigo JavaScript resultante es demasiado
redundante:
if(numero == 5) {
...
}
else if(numero == 8) {
...
}
else if(numero == 20) {
...
}

else {
...
}

En estos casos, la estructura switch es la ms eficiente, ya que est


especialmente diseada para manejar de forma sencilla mltiples condiciones
sobre la misma variable. Su definicin formal puede parecer compleja, aunque
su uso es muy sencillo:
switch(variable) {
case valor_1:
...
break;
case valor_2:
...
break;
...
case valor_n:
...
break;
default:
...
break;
}

El anterior ejemplo realizado con if...else se puede rehacer mediante switch:


switch(numero) {
case 5:
...
break;
case 8:
...

break;
case 20:
...
break;
default:
...
break;
}

La estructura switch se define mediante la palabra reservada switch seguida,


entre parntesis, del nombre de la variable que se va a utilizar en las
comparaciones. Como es habitual, las instrucciones que forman parte
del switch se encierran entre las llaves { y }.
Dentro del switch se definen todas las comparaciones que se quieren realizar
sobre el valor de la variable. Cada comparacin se indica mediante la palabra
reservada case seguida del valor con el que se realiza la comparacin. Si el
valor de la variable utilizada por switch coincide con el valor indicado por case,
se ejecutan las instrucciones definidas dentro de ese case.
Normalmente, despus de las instrucciones de cada case se incluye la
sentencia break para terminar la ejecucin del switch, aunque no es obligatorio.
Las comparaciones se realizan por orden, desde el primer case hasta el ltimo,
por lo que es muy importante el orden en el que se definen los case.
Qu sucede si ningn valor de la variable del switch coincide con los valores
definidos en los case? En este caso, se utiliza el valor default para indicar las
instrucciones que se ejecutan en el caso en el que ningn case se cumpla para
la variable indicada.
Aunque default es opcional, las estructuras switch suelen incluirlo para definir
al menos un valor por defecto para alguna variable o para mostrar algn
mensaje por pantalla.

Bucles WHILE y DO WHILE


Por Miguel Angel lvarez

18 de octubre de 2001

13 Comentarios

Manuales de Javascript

Descripcin y diferentes usos de los dos tipos de bucles


WHILE que se encuentran disponibles en Javascript, con
algunos ejemplos prcticos.
Estamos tratando acerca de las distintas estructuras de control que existen en el
lenguaje Javascript y en concreto viendo los distintos tipos de bucles que podemos
implementar en este lenguaje de programacin. En artculos anteriores del Manual de
Javascript vimos ya el primero de los bucles que debemos conocer, elbucle for y ahora
vamos a tratar sobre los otros dos tipos de estructuras de control para hacer
repeticiones. As pues, veamos ahora los dos tipos de bucles WHILE que podemos
utilizar en Javascript y los usos de cada uno.

Bucle WHILE
Estos bucles se utilizan cuando queremos repetir la ejecucin de unas sentencias un
nmero indefinido de veces, siempre que se cumpla una condicin. Se ms sencillo de
comprender que el bucle FOR, pues no incorpora en la misma lnea la inicializacin de
las variables su condicin para seguir ejecutndose y su actualizacin. Slo se indica,
como veremos a continuacin, la condicin que se tiene que cumplir para que se
realice una iteracin.
while (condicin){
//sentencias a ejecutar
}
Un ejemplo de cdigo donde se utiliza este bucle se puede ver a continuacin.
var color = ""
while (color != "rojo"){

color = prompt("dame un color (escribe rojo para salir)","")


}
Este es un ejemplo de lo ms sencillo que se puede hacer con un bucle while. Lo que
hace es pedir que el usuario introduzca un color y lo hace repetidas veces, mientras
que el color introducido no sea rojo. Para ejecutar un bucle como este primero
tenemos que inicializar la variable que vamos utilizar en la condicin de iteracin del
bucle. Con la variable inicializada podemos escribir el bucle, que comprobar para
ejecutarse que la variable color sea distinto de "rojo". En cada iteracin del bucle se
pide un nuevo color al usuario para actualizar la variable color y se termina la iteracin,
con lo que retornamos al principio del bucle, donde tenemos que volver a evaluar si lo
que hay en la variable color es "rojo" y as sucesivamente mientras que no se haya
introducido como color el texto "rojo".
Nota: Hemos utilizado en este ejemplo la funcin prompt de Javascript, que no hemos visto todava
en este manual. Esta funcin sirve para que mostrar una caja de dilogo donde el usuario debe
escribir un texto. Esta funcin pertenece al objeto window de Javascript y la comentamos en el
artculo Mtodos de window en Javascript.

Bucle DO...WHILE
El bucle do...while es la ltima de las estructuras para implementar repeticiones de las
que dispone en Javascript y es una variacin del bucle while visto anteriormente. Se
utiliza generalmente cuando no sabemos cuantas veces se habr de ejecutar el bucle,
igual que el bucle WHILE, con la diferencia de que sabemos seguro que el bucle por lo
menos se ejecutar una vez.
Este tipo de bucle se introdujo en Javascript 1.2, por lo que no todos los navegadores
los soportan, slo los de versin 4 o superior. En cualquiuer caso, cualquier cdigo que
quieras escribir con DO...WHILE se puede escribir tambin utilizando un bucle WHILE,
con lo que en navegadores antiguos debers traducir tu bucle DO...WHILE por un
bucle WHILE.
La sintaxis es la siguiente.
do {
//sentencias del bucle
} while (condicin)

El bucle se ejecuta siempre una vez y al final se evala la condicin para decir si se
ejecuta otra vez el bucle o se termina su ejecucin.
Veamos el ejemplo que escribimos para un bucle WHILE en este otro tipo de bucle.
var color
do {
color = prompt("dame un color (escribe rojo para salir)","")
} while (color != "rojo")
Este ejemplo funciona exactamente igual que el anterior, excepto que no tuvimos que
inicializar la variable color antes de introducirnos en el bucle. Pide un color mientras
que el color introducido es distinto que "rojo".

Ejemplo de uso de los bucles while


Vamos a ver a continuacin un ejemplo ms prctico sobre cmo trabajar con un bucle
WHILE. Como resulta muy difcil hacer ejemplos prcticos con lo poco que sabemos
sobre Javascript, vamos a adelantar una instruccin que aun no conocemos.
En este ejemplo vamos a declarar una variable e inicializarla a 0. Luego iremos
sumando a esa variable un nmero aleatorio del 1 al 100 hasta que sumemos 1.000 o
ms, imprimiendo el valor de la variable suma despus de cada operacin. Ser
necesario utilizar el bucle WHILE porque no sabemos exactamente el nmero de
iteraciones que tendremos que realizar (depender de los valores aleatorios que se
vayan obteniendo).
var suma = 0
while (suma < 1000){
suma += parseInt(Math.random() * 100)
document.write (suma + "<br>")
}
Suponemos que por lo que respecta al bucle WHILE no habr problemas, pero donde
si que puede haberlos es en la sentencia utilizada para tomar un nmero aleatorio. Sin
embargo, no es necesario explicar aqu la sentencia porque lo tenemos planeado
hacer ms adelante. De todos modos, si lo deseas, puedes ver este artculo que habla

sobre nmeros aleatorios en Javascript.


Podemos ver una pgina con el ejemplo en funcionamiento.

Con esto ya hemos conocido todos los tipos de bucles que existen en
Javascript, no obstante aun vamos a dedicar un artculo para explicar
las sentencias break y continue que nos sirven para alterar el funcionamiento
normal de los bucles en dos sentidos.

Estructuras de control
En lenguajes de programacin, las estructuras de control permiten modificar el flujo de
ejecucin de las instrucciones de un programa.
Con las estructuras de control se puede:

De acuerdo a una condicin, ejecutar un grupo u otro de sentencias (If-Then-Else)

De acuerdo al valor de una variable, ejecutar un grupo u otro de sentencias


(Select-Case)

Ejecutar un grupo de sentencias mientras se cumpla una condicin (Do-While)

Ejecutar un grupo de sentencias hasta que se cumpla una condicin (Do-Until)

Ejecutar un grupo de sentencias un nmero determinado de veces (For-Next)

Todas las estructuras de control tienen un nico punto de entrada y un nico punto de
salida. Las estructuras de control se puede clasificar en : secuenciales, iterativas y de
control avanzadas. Esto es una de las cosas que permite que la programacin se rija por
los principios de la programacin estructurada.
Los lenguajes de programacin modernos tienen estructuras de control similares.
Bsicamente lo que vara entre las estructuras de control de los diferentes lenguajes es su
sintaxis, cada lenguaje tiene una sintaxis propia para expresar la estructura.
Otros lenguajes ofrecen estructuras diferentes, como por ejemplo los comandos
guardados.

ndice
[ocultar]

1 Tipos de estructura de control


o

1.1 Antecedentes

1.2 Ejecucin secuencial

1.3 Transferencia de control

1.4 De seleccin

1.4.1 Estructura de control

1.4.2 Seleccin if simple

1.4.3 Select-Case
1.5 Estructuras de control iterativas

1.5.1 Do-While

1.5.2 Do-Until

1.5.3 For-Next
2 Estructuras anidadas

2.1 Estructura For-Next dentro de una estructura If-Then-Else

2.2 Estructura If-Then-Else dentro de estructura For-Next

2.3 Estructura For-Next que est dentro de estructura Do-While

3 Vase tambin

4 Referencias

Tipos de estructura de control[editar]


Algunas estructuras de control en el lenguaje Java

Antecedentes[editar]

El trmino "estructuras de control", viene del campo de la ciencia computacional. Cuando


se presentan implementaciones de Java para las estructuras de control, nos referimos a
ellas con la terminologa de la Especificacin del lenguaje Java, que se refiera a ella como
instrucciones modernas .

Ejecucin secuencial[editar]
Pero por lo general las instrucciones se ejecutan una despus de la otra, en el orden en
que estn escritas, es decir, en secuencia. Este proceso se conoce como ejecucin
secuencial.

Transferencia de control[editar]
En Java, como en otros lenguajes de programacin por excelencia como C y C++, el
programador puede especificar que las siguientes instrucciones a ejecutarse tal vez no sea
la siguiente en secuencia. Esto se conoce como transferencia de control. Hay que tener en
cuenta que la instruccin goto es una palabra reservada pero no se utiliza ni se
recomienda. Un programa bien estructurado no necesita de esta instruccin. 1

De seleccin[editar]
Las estructuras de control de seleccin, ejecutan un bloque de instrucciones u otro, o
saltan a un subprograma o subrutina segn se cumpla o no una condicin.
Estructura de control[editar]
Las estructuras de control, denominadas tambin sentencias de control, permiten tomar
decisiones y realizar un proceso repetidas veces. Se trata de estructuras muy importantes,
ya que son las encargadas de controlar el flujo de un programa, segn los requerimientos
del mismo.
Seleccin if simple[editar]
Artculo principal: Sentencias if
Se trata de una estructura de control que permite redirigir un curso de accin segn la
evaluacin de una condicin simple, sea falsa o verdadera.
Si la condicin es verdadera, se ejecuta el bloque de sentencias 1, de lo contrario, se
ejecuta el bloque de sentencias 2.
IF (Condicin) THEN
(Bloque de sentencias 1)
ELSE
(Bloque de sentencias 2)
END IF
Se pueden plantear mltiples condiciones simultneamente, si se cumple la (Condicin 1),
se ejecuta (Bloque de sentencias 1) en caso contrario se comprueba la (Condicin 2), si es

cierta se ejecuta (Bloque de sentencias 2), y as sucesivamente hasta n condiciones, si


ninguna de ellas es cumple se ejecuta (Bloque de sentencias else).
IF (Condicin 1) THEN
(Bloque de sentencias 1)
ELSEIF (Condicin 2) THEN
(Bloque de sentencias 2)
.....
ELSEIF (Condicin n) THEN
(Bloque de sentencias n)
ELSE
(Bloque de sentencias ELSE)
END IF
Select-Case[editar]
Artculo principal: Sentencia Select-Case
Esta sentencia permite ejecutar una de entre varias acciones en funcin del valor de una
expresin. Es una alternativa a if then else cuando se compara la misma expresin con
diferentes valores.

Se evala la expresin, dando como resultado un nmero.

Luego, se recorren los "Case" dentro de la estructura buscando que el nmero


coincida con uno de los valores.

Es necesario que coincidan todos sus valores.

Cuando se encuentra la primera coincidencia, se ejecuta el bloque de sentencias


correspondiente y se sale de la estructura Select-Case.

Si no se encuentra ninguna coincidencia con ningn valor, se ejecuta el bloque de


sentencias de la seccin "Case Else".
SELECT (Expresin)
CASE Valor1
(Bloque de sentencias 1)
CASE Valor2
(Bloque de sentencias 2)
CASE Valor n
(Bloque de sentencias n)
CASE ELSE
(Bloque de sentencias "Else")
END SELECT

Estructuras de control iterativas[editar]

Las estructuras de control iterativas o de repeticin, inician o repiten un bloque de


instrucciones si se cumple una condicin o mientras se cumple una condicin.
Do-While[editar]
Artculo principal: Bucle do
Mientras la condicin sea verdadera, se ejecutarn las sentencias del bloque.
DO WHILE (Condicin)
(Bloque de sentencias)
LOOP
que tambin puede expresarse:
WHILE (Condicin)
(Bloque de sentencias)
WEND
Do-Until[editar]
Se ejecuta el bloque de sentencias, hasta que la condicin sea verdadera
DO
(Bloque de sentencias)
LOOP UNTIL (Condicin)
For-Next[editar]
Artculo principal: Bucle for
La sentencia For da lugar a un lazo o bucle, y permite ejecutar un conjunto de
sentencias cierto nmero de veces.

Primero, se evalan las expresiones 1 y 2, dando como resultado dos nmeros.

La variable del bucle recorrer los valores desde el nmero dado por la expresin 1
hasta el nmero dado por la expresin 2.

El bloque de sentencias se ejecutar en cada uno de los valores que tome la


variable del bucle.
FOR (Variable) = (Expresin1) TO (Expresin2) STEP (Salto)
(Bloque de sentencias)
NEXT

Estructuras anidadas[editar]
Las estructuras de control bsicas pueden anidarse, es decir pueden ponerse una dentro
de otra.

Estructura For-Next dentro de una estructura If-Then-Else [editar]

IF A > B THEN
FOR X = 1 TO 5
(Bloque de sentencias 1)
NEXT
ELSE
(Bloque de instrucciones 2)
END IF

Estructura If-Then-Else dentro de estructura For-Next [editar]


FOR x = 10 TO 20 STEP 2
IF A == C THEN
(Bloque de instrucciones)
ELSE
(Bloque de instrucciones)
END IF
NEXT

Estructura For-Next que est dentro de estructura Do-While [editar]


DO WHILE A > 0
FOR X = 1 TO 10
(Bloque de instrucciones)
NEXT
A = A - 1
LOOP

Vase tambin[editar]

Teorema del programa estructurado

Programacin estructurada

Diagrama Nassi-Shneiderman

Dinmica de sistemas

Bloque de cdigo

Bucle (programacin)

Bucle for

Bucle while

Bucle repetir

Bucle infinito
Lenguaje de programacin

Referencias[editar]
1.

Volver arriba Edsger Dijkstra (marzo de 1968). Go To Statement Considered


Harmful. Communications of the ACM (PDF) 11 (3): 147148. doi:10.1145/362929.362947.
The unbridled use of the go to statement has as an immediate consequence that it
becomes terribly hard to find a meaningful set of coordinates in which to describe the
process progress. ... The go to statement as it stands is just too primitive, it is too much an
invitation to make a mess of one's program.

Вам также может понравиться