Sobre el contenido …
v El contenido de este blog tiene como fuente el curso Fundamentos de programaci贸n de Oracle.
v Con algunos agregados del autor "EL INFORMATICO IBERO"馃懛
Creaci贸n de bucles while
El bucle While repite la ejecuci贸n de un bloque de c贸digo, mientras
que el resultado de la evaluaci贸n while resulte verdadero o TRUE.Sintaxis :
脴 Todos los bucles tienen los
siguientes componentes:
o expresi贸n_booleana es una expresi贸n
que s贸lo puede dar como resultado verdadero o falso ( TRUE o FALSE). Esta expresi贸n se
procesa antes de cada iteraci贸n del bucle.
o bloque_c贸digo representa las l铆neas
de c贸digo que se ejecutan si la expresi贸n_booleana es verdadero o TRUE.
脴 El bucle while repite la ejecuci贸n
del bloque de c贸digo de cero a muchas veces. La parte de la
expresi贸n_booleana se procesa antes que el cuerpo del bucle y, si el primer
resultado de la evaluaci贸n es false, el cuerpo del bucle no se procesa en
absoluto. Por ejemplo:
Entonces en el codigo se ejecutaria Hola Tom谩s 5 veces en la pantalla, imprimiendo de 0 a 4, porque la expresion es I sea menos que 5, es decir 0;1;2;3 y 4.脴 El siguiente ejemplo de c贸digo
muestra un m茅todo setFloor con un bucle while que hace que el ascensor suba o
baje hasta el piso deseado.El El m茅todo setFloor de la clase
Elevator utiliza un bucle while para determinar si el ascensor se encuentra en el piso elegido. Si el valor de currentFloor no es igual que el de la variable
desiredFloor, el ascensor continuar谩 su recorrido hasta el piso elegido. de lo contrario no realizara ninguna tarea.
Bucles while anidados
Piense lo que necesitar铆a para
dibujar un rect谩ngulo como el que se muestra a continuaci贸n introduciendo los
caracteres de uno en uno:
Podr铆a utilizar un bucle while
para dibujar una fila del rect谩ngulo y colocar ese bucle dentro de otro bucle
para dibujar tres filas. El segundo bucle es un bucle anidado.
El siguiente ejemplo de c贸digo
imprime en la pantalla un rect谩ngulo de caracteres “@” compuesto de 10 columnas
y 3 filas (3 filas formadas por 10 caracteres “@”). La escritura de cada fila
se realiza mediante el bucle interno. El bucle externo imprime el resultado de
ese c贸digo tres veces.
El segundo bucle (interno)
escribe en la pantalla una fila de caracteres “@” hasta que se alcanza el valor
de la variable que indica la anchura, width. El primer bucle (externo)
comprueba si se ha alcanzado el valor de la variable que indica la altura,
height. Si no se ha alcanzado la altura, se crea una fila m谩s utilizando el
bucle interno. De lo contrario, el rect谩ngulo estar谩 completo.
Desarrollo de un bucle for
El bucle for permite al programa
repetir una secuencia de sentencias un n煤mero predeterminado de veces. Este
bucle funciona exactamente de la misma manera que el bucle while, incluido el
hecho de que repite la ejecuci贸n de cero a muchas veces, pero tiene una
estructura m谩s pensada para recorrer un rango de valores.
La sintaxis del bucle for es como
sigue:
Ejemplo:
La parte
inicializar[,inicializar] de la construcci贸n for contiene sentencias que
inicializan las variables (por ejemplo, los contadores del bucle) utilizadas a
lo largo del bucle. Esta parte del c贸digo se procesa una vez, antes que ninguna
otra parte del bucle. Las diferentes variables deben separarse mediante comas.
expresi贸n_booleana es una
expresi贸n que s贸lo puede dar como resultado true o false. Esta expresi贸n se
procesa antes de cada iteraci贸n o repetici贸n del bucle.
La secci贸n
actualizar[,actualizar] es donde se incrementa o decrementa el valor de las
variables (contadores del bucle). Esta secci贸n se procesa despu茅s del cuerpo
pero antes de cada vez que se repite la evaluaci贸n de la expresi贸n_booleana.
Las diferentes variables deben separarse mediante comas.
bloque_c贸digo representa las
l铆neas de c贸digo que se ejecutan si la expresi贸n_booleana es true.
El bucle for tambi茅n repite la
ejecuci贸n del c贸digo de cero a muchas veces. La parte del bucle que contiene la
expresi贸n booleana se procesa antes del cuerpo del bucle y, si se eval煤a
inmediatamente como false, el cuerpo del bucle no se procesa.
El ejemplo siguiente muestra un
m茅todo setFloor que contiene un bucle for.
En este ejemplo, el valor de la
variable currentFloor se compara con el de la variable desiredFloor para
determinar si el ascensor deber铆a subir o bajar. Dos bucles for llaman a los
m茅todos goDown o goUp el n煤mero de veces necesarias hasta que el valor de la
variable desiredFloor sea igual que el de la variable currentFloor.
Bucles for anidados
El siguiente ejemplo de c贸digo imprime en la pantalla un
rect谩ngulo de caracteres “@” compuesto de 10 columnas de anchura y 3 filas de
altura (3 filas formadas por 10 caracteres “@”). El bucle interno imprime cada
fila y el bucle externo imprime el resultado de ese c贸digo tres veces.
El segundo bucle (interno)
escribe en la pantalla una fila de caracteres “@” hasta que se alcanza el valor
de la variable width (l铆neas de la 10 a la 12).
El primer bucle (externo) comprueba si se ha alcanzado el valor de
altura, height (l铆nea 9). En caso negativo, se crea una fila m谩s utilizando el
bucle interno. De lo contrario, el rect谩ngulo estar谩 completo.
Codificaci贸n de un bucle do/while
El bucle do/while repite la
ejecuci贸n del bloque de c贸digo de una a muchas veces: la condici贸n se sit煤a al
final del bucle y se procesa despu茅s del cuerpo del bloque. Por tanto, el
cuerpo del bucle se procesa al menos una vez. Si quiere que la sentencia o
sentencias del cuerpo se procesen al menos una vez, utilice un bucle do/while
en lugar de los bucles while o for.
La sintaxis del bucle do/while es
como sigue:
bloque_c贸digo representa las
l铆neas de c贸digo que se ejecutan m谩s de una vez si la expresi贸n_booleana es
true.
expresi贸n_booleana es una
expresi贸n que da como resultado true o false. La expresi贸n_booleana se procesa
despu茅s de cada iteraci贸n del bucle.
El signo de punto y coma despu茅s
de la expresi贸n_booleana es obligatorio porque dicha expresi贸n se sit煤a al
final del bucle. Por el contrario, no es preciso usar el punto y coma al final de
los bucles while porque la expresi贸n_booleana se sit煤a al principio del bucle y
va seguida de un bloque_c贸digo que finaliza con una llave de cierre.
El siguiente ejemplo de c贸digo
muestra un m茅todo setFloor con un bucle do/while que hace que el ascensor suba
o baje.
El m茅todo setFloor de la clase
Elevator utiliza un bucle do/while para determinar si el ascensor se encuentra
en el piso elegido. Si el valor de la variable currentFloor no es igual al de
la variable desiredFloor, el ascensor contin煤a subiendo o bajando.
Bucles do/while anidados
El siguiente c贸digo imprime en la
pantalla un rect谩ngulo de caracteres “@” compuesto de 10 columnas de anchura y
3 filas de altura (3 filas formadas por 10 caracteres “@”). La escritura de
cada fila se realiza mediante el bucle interno. El bucle externo imprime el
resultado del c贸digo tres veces.
El segundo bucle (interno)
escribe en la pantalla una fila de caracteres “@” hasta que se alcanza el valor
de la variable width. Al menos se
imprime un car谩cter “@” antes de comprobar el valor de la variable width.
El primer bucle (externo)
comprueba si se ha alcanzado el valor de la variable de altura, height. Si no
se ha alcanzado el valor de height, se crea una fila m谩s utilizando el bucle
interno. De lo contrario, el rect谩ngulo estar谩 completo. Al menos se crea una
fila antes de comprobar el valor de la variable height.
Comparaci贸n de las construcciones en bucle
Los bucles for, while y do/while
funcionan de forma muy similar. No
obstante, en determinadas situaciones, una construcci贸n ser谩 probablemente
mejor que la otra. Utilice las directrices siguientes para determinar cu谩l de
ellas utilizar:
- Utilice el bucle while para
recorrer las sentencias indefinidamente y ejecutarlas cero o m谩s veces.
- Utilice el bucle do/while para
recorrer las sentencias indefinidamente y ejecutarlas una o m谩s veces.
- Utilice el bucle for para
recorrer las sentencias un n煤mero predefinido de veces. Este tipo de bucle es
m谩s compacto y f谩cil de leer que while porque est谩 pensado para contabilizar un
rango finito de valores.