|
Bucles (II).
Recapitulemos.
Como hemos visto hasta este
momento los bucles son una de las instrucciones más
utilizadas dentro del mundo de la programación, ya que
muchos de los problemas con los que nos encontramos y
queremos que resuelva un ordenador suelen ser rutinas
repetitivas. Hasta este momento hemos visto la instrucción Mientras...
Fin Mientras, pero esta nos puede traer un pequeño
problema que deberíamos solucionar con líneas adicionales
fuera del bucle, veamos esto con un ejemplo.
Tenemos al Robot,
que al final le tendremos que poner nombre (si se te ocurre
algún nombre puedes decirlo), subido en una plataforma con 10
posiciones, en algunas de estas posiciones tendremos puestos
diferentes bloques, incluidas la primera y última posición.
El Robot, para facilitar la cosa siempre
partirá de la primera posición. El Robot
deberá recorrer cada una de las posiciones mirando si hay un
bloque llamado A en ella. Al llegar al final
y después de mirar si hay bloque en la posición en la que
se encuentra nos deberá decir cuantos bloques ha encontrado
por el camino. Recordemos que el Robot nunca
podrá salir de las 10 posiciones indicadas.
Utilizando las instrucciones
que hemos visto hasta el momento tendríamos que realizar un
código parecido a este:
| NumBloques: Número |
| NumBloques = 0 |
| Mientras Posición <> 10 hacer |
Si BloqueEncima = "A" entonces
|
NumBloque = NumBloque + 1
|
Fin Si
|
MoverDer
|
| Fin mientras |
| Si BloqueEncima = "A" entonces |
NumBloque = NumBloque + 1
|
| Fin si |
| Mostrar NumBloque |
Mira detenidamente el código
anterior. Fíjate que las instrucciones que tenemos dentro
del Mientras, hacen que el brazo se mueva de
la posición 1 a la 10,
pero solo miran los bloques que hay en las posiciones de la 1
a la 9, ya que cuando llega a la posición 10
la condición ya es VERDADERA con lo que no
entra. Por eso hemos tenido que añadir las tres líneas
antes de mostrar el número de bloques. Ya que sabemos seguro
que el Robot se encuentra en la posición 10
pero no hemos mirado si en esta posición encontramos bloque
A o no.
Nueva
estructura de bucles.
Ahora vamos a ver
el mismo ejemplo que hemos puesto antes pero utilizando una
nuevas estructura repetitiva. Primero veamos la estructura y
después como la podemos aplicar.
| Repetir |
<instrucciones>
|
| Hasta
que <condición> |
Esta
es otra estructura de bucle pero tiene un pequeño matiz que
la hace diferente a la ya estudiada anteriormente. Tanto una
como la otra se utilizan, pero cada una de ellas va bien para
según que caso ya que ese matiz pueden hacer su uso muy
diferente
Observa que esta
estructura primero ejecutaría las instrucciones y después
miraría si se cumple o no la condición, con lo que tenemos
que tener mucho cuidado ya que las instrucciones como mínimo
se ejecutarán una vez (las veces restantes ya dependerán de
la condición). La condición se evalúa después de realizar
las instrucciones y no antes como pasaba en el caso del Mientras.
Ejemplo.
Vamos a aplicar
esta estructura al ejemplo del principio de la lección:
| NumBloque: Número |
| NumBloque = 0 |
| Repetir |
Si BloqueEncima = "A" entonces
|
NumBloque = NumBloque + 1
|
Fin Si
|
MoverDer
|
| Hasta que
Posición
= 10 |
| Mostrar NumBloque |
Observa
detenidamente las líneas en las que aparece la nueva
estructura. Observa que en un principio, después de crear la
variable e inicializarla a 0 lo único que
ve el programa es que entra en una estructura repetitiva pero
no lleva a cabo ninguna verificación de ningún tipo,
con lo que ejecuta las dos instrucciones que tiene dentro.
Cuando llega a la línea Hasta que... es
cuando el programa mira a su alrededor para ver si se
encuentra en la posición 10. Observa
también como en este caso es necesario preguntar por si la
posición es IGUAL (=) y no DIFERENTE
(<>) como en el caso de la estructura Mientras.
Por lo que, cuándo nuestro Robot se
encuentra en la posición 10 terminará de
ejecutarse el bucle, pero con la diferencia, de que aquí ya
habrá mirado si existe algún bloque A en
la última posición y no necesitaremos volver a preguntar si
en esa posición existe un bloque llamado A.
¡¡Verdad que es fácil!!.
Ahora te toca a
ti demostrar todo lo que has aprendido hasta este momento.
Inténtalo hacer todo lo bien que sepas, envíame la
respuesta y en breve te enviaré un pequeño comentario del
ejercicio.

|