|
Bucles.
Introducción al concepto de bucle.
Un bucle no es más que una
serie de instrucciones que se repiten.
Podemos tener dos tipos de
bucles según lo que nos interese comprobar. Tenemos un bucle
que se repite mientras se cumple una
condición determinada, y otro que se realiza hasta
que se cumple la condición que marcamos. En esta
lección nos encargaremos del primer tipo.
A la hora de utilizar un
bucle, sea del tipo que sea, debemos ir con cuidado y pensar
cuando debe acabar ya que si no tuviéramos en cuenta esto
podríamos entrar en un bucle sin fin, osea que iríamos
repitiendo las mismas líneas teniendo que abortar la
aplicación, para poderla finalizar. Por esto es de suma
importancia que pensemos, antes de hacer nada, en que
momento, como, donde y porque debe acabar el bucle.
Estructura básica.
En nuestro curso esta
estructura básica de un bucle Mientras se
representará de la siguiente manera:

Explicaremos
línea a línea este bucle:
Primera línea: |
En esta línea pondremos
la <condición> que se debe dar para que se ejecute el bucle.
En el momento que la condición sea Falsa se terminará el bucle y se
continuará con las siguientes instrucciones. |
Segunda línea: |
Línea o líneas donde pondremos
las instrucciones a efectuar en caso de que la condición sea VERDADERA. |
Tercera línea: |
Fin del bucle Mientras.
De aquí se pasa a la primera línea del bucle para volver a mirar la
condición. |
En esta estructura no tenemos
ninguna línea que sea opcional.
Funcionamiento.
Ahora veremos cuales son los
pasos que se sigue cuando se utiliza esta estructura.

Recuerda que estas líneas se
irán repitiendo hasta que la condición se cumpla.
Ejemplo
1.
(Situarse en la última posición de nuestra plataforma).
Ahora haremos un pequeño
ejemplo para ver exactamente como funciona esta nueva
estructura.
Imagina que
tenemos a nuestro Robot en la plataforma móvil que definimos
en la lección anterior.

Nuestro Robot
lo podemos tener situado en la primera o segunda posición y
nosotros queremos que se desplace hasta la tercera
posición.
Antes de hacer nada vamos a
pensar que instrucciones utilizaremos y donde las pondremos.
Recuerda que instrucciones tenemos definidas hasta el momento.
Pasemos a implementar el
ejemplo:
Mientras
Posición <> 3 hacer
MoverDer
Fin Mientras
Observa detenidamente la
implementación del código. Vamos a seguir paso a paso como
miraríamos si hemos realizado bien la implementeción del
código en los dos posibles casos: en el caso de que el Robot
se encuentre en la posición 1 o en la
posición 2.
- Tenemos el Robot en la
posición 1
- Miraríamos la
primera línea, la que marca la condición. La
condición nos dice que entremos en el bucle
mientras no estemos en la posición 3
(Mientras Posición <> 3 hacer).
Como en este caso no estamos en la posición
indicada ya sabemos lo que nos toca.
- Nos movemos una
posición a la derecha (MoverDer).
- Vamos a la última
línea del bucle. (Fin Mientras).
- Volvemos a mirar si
se cumple la condición. Como todavía no se
cumple, ya que nos encontramos en la posición 2,
entraríamos otra vez dentro del bucle.
- Nos volveríamos a
desplazar una posición a la derecha.
- Volveríamos al final
del bucle donde nos mandaría otra vez a la
primera línea de este.
- Ahora como ya nos
encontramos en la posición deseada NO
entraríamos dentro de nuestro bucle y seguiremos
con la instrucción que encontrásemos después
de (Fin Mientras).
- Tenemos el Robot en la
posición 2
- Miramos la condición
que nos pone la estructura Mientras,
como no nos encontramos en la posición 3,
entramos en el bucle.
- Nos movemos una
posición hacia la derecha (MoverDer).
- Vamos a la última
línea del bucle. (Fin Mientras).
- Volvemos a mirar si
se cumple la condición. Vemos que ya nos
encontramos en la tercera posición. Ya no hace
falta que entremos en el bucle. Ya podemos seguir
con las instrucciones que tenemos después del
bucle.
A este proceso que acabamos de
realizar le llamaremos Traza. La traza,
realizar paso por paso un código, es muy importante en el
momento de poder detectar posibles errores en nuestra
implementación del código, ya que nos podemos dar cuenta si
nuestro código falla o realiza alguna acción que no
deseamos. Es muy importante que al realizar la traza hagamos
todos y cada uno de los pasos indicados y no demos nada por
supuesto. En el momento de realizar la traza debemos actuar
como si nosotros fuéramos la máquina que realizará el
código.
Ejemplo
2.
(Bucle infinito).
Vamos a ver un pequeño
ejemplo en el que el bucle sería infinito, con lo que nos
podría provocar un error en el momento de ejecutar el
programa.
Imagina que tenemos el
siguiente código. (Este código no tiene enunciado)
Mientras
Posición > 1 hacer
MoverDer
Fin Mientras
Fíjate que si nuestro Robot
en un principio estuviera situado en la posición 2,
¿que pasaría?. Pues que comenzaría a desplazarse hacia la
derecha y como a partir de este momento todas las posiciones
son mayores de 1, él siempre
se movería una posición a la derecha con el peligro de
salirse del raíl en el que está trabajando, produciendo
así un ERROR. Si realizáramos la traza
correspondiente a nuestro código veríamos cual es el error
y como lo podríamos solucionar.
Ejemplo
3.
(Bloque sobre la plataforma).
En este ejemplo vamos a
utilizar las dos estructuras que hemos visto hasta este
momento.
El enunciado sería el
siguiente: Tenemos,
otra vez, a nuestro Robot montado en la plataforma móvil
pero un poco ampliada ya que esta vez tenemos 5 posiciones.
Nosotros inicialmente podemos encontrar el Robot en una de
las 4 posiciones iniciales y un bloque llamado A
en una de estas 4 posiciones. (La colocación del Robot y del
bloque será aleatoria). El bloque siempre estará situado en
alguna posición. Nosotros queremos encontrar ese bloque,
esté donde esté y llevarlo hasta la quinta posición.
Antes de mirar la solución
intenta encontrar una solución correcta. Una vez la tengas
realiza una traza para ver si los pasos que has pensado
realizan lo que queremos. Mira la lista
de instrucciones por
si no recuerdas alguna.

Ejercicio.
Ahora te ha llegado el momento
de demostrar todo lo que has aprendido hasta el momento, ya
que te vamos a plantear un ejercicio que deberás solucionar
y enviar su solución para que yo vea lo que has aprendido.
Inténtalo hacer lo mejor que puedas en breve te enviaré un
comentario y una posible respuesta al ejercicio.

|