Posible solución al ejemplo 3
Posted by Danny in Ejemplos
Vamos a dar dos posibles soluciones para el problema que se nos plantea, en este e-mail y en el siguiente. Recordemos que el Robot siempre partirá de la posición 1 tal y como indica el enunciado.
Primera solución.-
1.- Si BloqueEncima = "A" entonces
2.- CogerBloque
3.- Sino
4.- MoverDer
5.- Si BloqueEncima = "A" entonces
6.- CogerBloque
7.- Sino
8.- MoverDer
9.- CogerBloque
10.- Fin Si
11.- Fin Si
Explicación del ejemplo.-
1.- Miramos si encima de la primera posición, posición en la que sabemos que se encuentra seguro al iniciar el programa, está el bloque A.
2.- Si es así,
3.- Si no se cumple la
4.- Hacemos desplazar al Robot hacia la derecha. Hecho esto, nos encontramos en la posición 2 de nuestra plataforma.
5.- Miramos si encima de esta posición (segunda posición) está el bloque A.
6.- Si es así,
7.- Si no se cumple la
8.- Hacemos desplazarse el Robot a una posición derecha. Hecho esto, nos encontramos en la posición 3 y última de nuestra plataforma.
9.- Como sabemos seguro que el bloque "A" está en alguna de las 3 posiciones y ya hemos visto que no estaba ni en la 1, ni en la 2. Sin mirar qué bloque hay en esta posición podemos cogerlo.
10.- Fin del segundo Si.
11.- Fin del primer Si.
Observe como dentro de un Si hemos puesto otro Si. Con lo que hemos podido hacer una pregunta después de haber visto que la primera era falsa.
Observe 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 al final conseguiría su objetivo. Cuando veamos que una misma instrucción se repite muchas veces nos deberíamos plantear que puede ser que exista alguna otra solución que sea un poco más corta y con menos líneas repetidas.