Java
Prof. Francisco Castillo
Prof. Francisco Castillo
Estructuras repetitivas
Prof. Francisco Castillo
(bucles)
• Los ordenadores se diseñaron inicialmente para
realizar tareas sencillas y repetitivas. El ser humano
es de lo más torpe acometiendo tareas repetitivas:
pronto le falla la concentración y comienza a tener
descuidos. Los computadores programables, en
Prof. Francisco Castillo
cambio, pueden realizar la misma tarea muchas
veces por segundo durante años y nunca se aburren.
• La estructura repetitiva, por tanto, reside en la
naturaleza misma de los computadores y consiste,
simplemente, en repetir varias veces un conjunto de
instrucciones. Las estructuras repetitivas también se
llaman bucles, lazos, iteraciones o loops.
• Los bucles tienen que repetir un conjunto de instrucciones un número finito de
veces. Sino, nos encontraremos con un bucle infinito y el algoritmo no
funcionará.
• El bucle infinito es un peligro que acecha constantemente a los programadores.
• Para conseguir que el bucle se repita sólo un número finito
de veces, tiene que existir una condición de salida del mismo, es decir, una
Prof. Francisco Castillo
situación en la que ya no sea necesario seguir repitiendo las instrucciones.
• Por tanto, los bucles se componen, básicamente, de dos elementos:
1. un cuerpo del bucle o conjunto de instrucciones que se ejecutan repetidamente.
2. una condición de salida para dejar de repetir las instrucciones y continuar con el resto del
algoritmo .
Inicialización
• La inicialización consiste en la asignación del valor inicial a una variable contador
(por ejemplo, i).
• La primera vez que se ejecutan las acciones del cuerpo del bucle, la variable i
Prof. Francisco Castillo
tendrá el valor especificado en la inicialización. En la siguiente repetición, la
variable contador se incrementará según lo expresado en la sección incremento
(por ejemplo, i = i + 1, o bien i++), y así sucesivamente.
• El bucle se repetirá mientras que se cumpla la condición.
• Asociadas a los bucles se encuentran a
menudo algunas variables auxiliares.
Contadores,
acumuladores, • Estas variables se utilizan como siempre
conmutadores de la misma manera que cualquier
Prof. Francisco Castillo
variable común, la diferencia radica en
que las llamamos con un nombre propio:
contador, acumulador, conmutador, pero
hay que dejar claro que no son más que
variables comunes, aunque se usan de un
modo especial.
Contadores
• Un contador es una variable (casi siempre de tipo entero) cuyo valor
se incrementa o decrementa en cada repetición de un bucle. Es
habitual llamar a esta variable "cont" (de contador) o, con más
Prof. Francisco Castillo
frecuencia, "i" (de índice).
• El contador suele usarse de este modo:
1. Se inicializa antes de que comience el bucle, es decir, se le da un valor
inicial. Por ejemplo: i = 5;
2. Se modifica dentro del cuerpo del bucle. Lo más habitual es que se
incremente su valor en una unidad. Por ejemplo: i = i + 1;
3. Se utiliza en la condición de salida del bucle. Normalmente, se compara con
el valor máximo (o mínimo) que debe alcanzar el contador para dejar de
repetir las instrucciones del bucle.
• El uso de contadores es casi omnipresente en bucles while y for,
aunque es posible crear bucles que funcionen sin contadores.
Prof. Francisco Castillo
• Recuerde que siempre hay que asignar al contador un valor inicial
para la primera ejecución del bucle (por ejemplo i=1) e ir
incrementándolo (o decrementándolo, según el algoritmo) en cada
repetición con una instrucción del tipo i = i + 1 o i++ en el cuerpo del
bucle. De lo contrario habremos escrito un bucle infinito.
Acumuladores
• Las variables acumuladoras tienen la misión de almacenar resultados
sucesivos, es decir, de acumular resultados, de ahí su nombre.
• Las variables acumuladores también debe ser inicializadas. Si llamamos
"acum" a un acumulador, escribiremos antes de iniciar el bucle algo como
Prof. Francisco Castillo
esto:
• acum = 0;
• Por supuesto, el valor inicial puede cambiar, dependiendo de la naturaleza
del problema. Más tarde, en el cuerpo del bucle, la forma en la que nos la
solemos encontrar es:
• acum = acum + n;
• ...siendo n otra variable.
Conmutadores
• Un conmutador (o interruptor) es una variable que sólo puede tomar
dos valores. Pueden ser, por tanto, de tipo booleano, aunque también
pueden usarse variables enteras o de tipo carácter.
Prof. Francisco Castillo
• La variable conmutador recibirá uno de los dos valores posibles antes
de entrar en el bucle. Dentro del cuerpo del bucle, debe cambiarse
ese valor bajo ciertas condiciones. Utilizando el conmutador en la
condición de salida del bucle, puede controlarse el número de
repeticiones.
• En muchas ocasiones se conoce de
antemano el número de veces que se
Bucle: desean ejecutar las acciones del cuerpo del
for bucle. Cuando el número de repeticiones es
fijo, lo más cómodo es usar un bucle “for",
Prof. Francisco Castillo
aunque sería perfectamente posible
sustituirlo por uno “while".
• La estructura “for" repite las acciones del
bucle un número prefijado de veces e
incrementa automáticamente una variable
contador ( i ) en cada repetición. Su forma
general es:
Sintaxis:
for (inicialización ; condición ; incremento) {
acciones;
}
Prof. Francisco Castillo
• El bucle while o, simplemente, "mientras",
es una estructura que se repite mientras
una condición sea verdadera. La condición,
Bucle: en forma de expresión lógica, se escribe en
while la cabecera del bucle, y a continuación
aparecen las acciones que se repiten
Prof. Francisco Castillo
(cuerpo del bucle):
while (condición) {
acciones (cuerpo del bucle);
}
• Cuando se llega a una instrucción while, se evalúa la condición. Si es verdadera,
Prof. Francisco Castillo
se realizan las acciones y al terminar el bloque de acciones, se regresa a la
instrucción while (he aquí el bucle o lazo). Se vuelve a evaluar la condición y, si
sigue siendo verdadera, vuelve a repetirse el bloque de acciones. Y así, sin parar,
hasta que la condición se haga falsa.
• El bucle de tipo “do... while"
(hacer….mientras)es muy similar al bucle
“while", con la salvedad de que la condición
Bucle: de salida se evalúa al final del bucle, y no al
do…while principio. Todo bucle “do... while“ puede
escribirse como un bucle “while", pero al
revés no siempre sucede.
Prof. Francisco Castillo
• La forma de la estructura “do... while" es la
que sigue:
do {
acciones (cuerpo del bucle);
}while (condición);
• Cuando el computador encuentra un bucle de este tipo, ejecuta las acciones
escritas entre { y } y, después, evalúa la condición, que debe ser de tipo lógico. Si
el resultado es falso, se vuelven a repetir las acciones. Si el resultado es
Prof. Francisco Castillo
verdadero, el bucle se repite. Si es falso, se sale del bucle y se continúa
ejecutando la siguiente instrucción.
• Existe, pues, una diferencia fundamental con respecto al bucle “while": la
condición se evalúa al final. Por lo tanto, las acciones del cuerpo de un bucle
“do... while" se ejecutan al menos una vez, cuando en un bucle “while" es posible
que no se ejecuten ninguna (si la condición de salida es falsa desde el principio)