|
|
Posible
solución Ejemplo 3
Vamos a dar dos posibles soluciones para el problema que se
nos plantea de coger un bloque que tenemos colocado en una de
las tres posiciones. Antes de nada recordemos que el Robot
siempre partirá de la posición 1.
Pasaremos a ver y comentar la primera de las dos soluciones:
| Si BloqueEncima = "A" entonces |
Miramos si
encima de la primera posición está el bloque A.
|
|
CogerBloque |
Si es verdad
lo cogemos. En este caso hemos terminado el programa. |
| Sino
|
Si no está
el bloque A, continuamos el programa. |
|
MoverDer |
Nos movemos
una posición a la derecha, ahora estamos en la
plataforma 2. |
|
Si BloqueEncima = "A" entonces |
Miramos si
encima de la segunda posición está el bloque A. |
|
CogerBloque |
Si es verdad
lo cogemos. En este caso terminaríamos el programa. |
| Sino |
Si no está
el bloque A, continuamos el programa. |
|
MoverDer |
Nos movemos
una posición a la derecha, ahora estamos en la
plataforma 3. |
|
CogerBloque |
Como no queda
otra posible colocación, cogemos el bloque. |
| Fin
Si |
Fin del
segundo Si. |
| Fin Si |
Fin del
primer Si. |
Observa como dentro de un Sino hemos puesto
otro Si, con lo que hemos podido hacer una
pregunta después de haber realizado una instrucción.
Observa que para este ejemplo hemos necesitado 11 líneas y
muchas de estas líneas están repetidas varias veces. Esto
no quiere decir que no funcionaría, ya que hemos visto en la
traza, (ejecución del programa línea a línea), que el
Robot conseguiría su objetivo. Cuando veamos que una misma
instrucción se repite muchas veces nos deberíamos pensar
que puede ser que exista alguna otra solución que sea un
poco más corta y con menos repetición de instrucciones. No
pienses que esto siempre es así, ya que puede haber casos en
los que la repetición de instrucciones no se pueda evitar.
Ahora veremos un ejemplo en el que solo se utilizan 7 líneas
y que en ellas solo se repite una instrucción 2 veces.
| Si BloqueEncima <> "A" entonces |
Preguntamos
si el bloque es diferente de A. Si fuera
A saldríamos del Si. |
| MoverDer |
Si fuera
diferente de A nos moveríamos una
posición a la derecha. Posición 2. |
|
Si BloqueEncima <> "A" entonces |
Preguntamos
si el bloque es diferente de A. Si fuera
A saldríamos del Si. |
|
MoverDer |
Si fuera
diferente de A nos moveríamos una
posición a la derecha. Posición 3. |
|
Fin Si |
Terminamos el
segundo Si. |
| Fin Si |
Terminamos el
primer Si. |
| CogerBloque |
Nos
encontrásemos en la situación que fuese cogeríamos el
bloque. |
Si te fijas en
este ejemplo la instrucción CogerBloque está fuera del Si ya
que lo que hemos conseguido, con todas las instrucciones que
tenemos dentro de nuestra estructura condicional, a sido
situar el Robot en la posición en la que se encuentra el
bloque A. Observa que en este caso desde un
principio preguntamos por diferente (<>) y no por igual
(=) con lo que conseguimos que la forma de plantearnos el
código sea un poco diferente. Mira la lista
de operadores lógicos.

Volver
|