Bloque de Adsense

ads
Mostrando entradas con la etiqueta Ejemplos. Mostrar todas las entradas

Posible solución al ejemplo 3  

Posted by Danny in

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í, verdadera lo cogemos. En este caso, hemos terminado el programa. Ya que continuaría con la línea 3, punto donde se separa la parte de la respuesta a la condición verdadera y falsa, y al haberse cumplido la parte Verdadera saltaríamos hasta la línea 11.

3.- Si no se cumple la puesta en la línea 1, continuamos el programa.

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í, verdadera la cogemos. En este caso, hemos terminado el programa; ya que continuaría con la línea 7, punto donde se separa la parte de la respuesta a la condición verdadera y falsa, y al haberse cumplido la parte Verdadera saltaríamos hasta la línea 10.

7.- Si no se cumple la puesta en la línea 5, continuamos el programa.

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.

Ejemplo 3 - Coger el bloque y moverse  

Posted by Danny in

Ahora que ya sabemos cómo hacer que nuestro Robot se mueva según la posición en la que se encuentra; vamos ha realizar un ejercicio que nos haga lo siguiente: tenemos a nuestro Robot en la plataforma móvil definida anteriormente, pero esta vez con tres posiciones: 1 - 2 - 3. Y encima de una de estas tres posiciones pondremos un bloque (caja) llamada "A". Puede que en alguna de estas posiciones haya un bloque que no se llame "A", si fuera así no deberíamos hacer nada con él.

Lo que queremos que realice nuestro Robot es lo siguiente: el Robot siempre partirá de la posición 1, pero no sabrá dónde está situado el bloque y éste siempre debe estar en una de las 3 posiciones. Nosotros deberemos hacer que nuestro Robot se desplace por la cinta mirando si el bloque se encuentra en esta posición. Si el bloque está en esa posición, debe cogerlo.

Como siempre, vamos a definir las nuevas instrucciones que necesitaremos para solucionar este problema, recuerde que si necesita alguna de las instrucciones definidas anteriormente puede hacerlo. Eso sí, no puede inventarse ninguna instrucción nueva. Es recomendable que vaya haciendo una lista de todas las instrucciones que vamos definiendo.

Nuevas instrucciones:

-BloqueEncima: será el equivalente a hacer que el robot mire arriba y mire el nombre que tiene escrito el bloque.

-CogerBloque: el robot alargará su brazo y cogerá el bloque.

Sería muy recomendable que antes de mirar la solución lo intentara usted solo, para ver si ha comprendido a la perfección todo lo que llevamos de curso.



Ejemplo 2 - Moverse de una posición a otra  

Posted by Danny in

Una vez visto el ejemplo anterior vamos a plantear otros que nos ayudarán a entender y a familiarizarnos con esta estructura condicional. Con la práctica, podrá ver que esta es una de las estructuras que más se utilizan en programación. En casi todos los programas hay que tomar algún tipo de decisión.

Este es un ejemplo un poco tonto pero nos puede servir para acabar de entender cómo funciona esta estructura condicional.

Imagine que tenemos a nuestro Robot trabajando en una cadena de montaje en una plataforma móvil que tiene dos posiciones posibles: la 1 ó la 2 a derecha e izquierda.

Lo que nosotros queremos que haga el Robot es lo siguiente: si el Robot inicialmente se encuentra en la posición 1 deberá moverse a la 2, y si se encuentra en la posición 2 deberá moverse a la 1.

Para este ejemplo definiremos unas nuevas instrucciones que iremos utilizando en futuros ejemplos:

-MoverDer: moverá el robot a la derecha una sola posición.

-MoverIzq: moverá el robot a la izquierda una sola posición.

-Posición: esta instrucción nos servirá para saber en qué posición se encuentra el robot.

Antes de mirar la solución que yo le propongo estudie una posible solución, piense un poco y no tenga miedo en equivocarse con la solución.

Posible solución Ejemplo 2.- Una posible solución a nuestro programa del Robot que se debe mover de una posición a la otra podría ser la siguiente:

Si Posición = 1 entonces
MoverDer

Sino

MoverIzq

Fin Si

Observe que en este ejemplo lo que hacemos es preguntar si el Robot se encuentra en la posición 1. Si la respuesta es Verdadera haremos que se mueva a la derecha "MoverDer" (con lo que se quedará en la posición 2), mientras que si la respuesta fuera Falsa (cosa que querría decir que está en la posición 2) se movería a la izquierda "MoverIzq" (quedando situado el Robot en la posición 1). Así de fácil podemos hacer que nuestro Robot cambie de posición dependiendo de su posición inicial.

Ejemplo 1 - subiendo escaleras hasta el escalón 200  

Posted by Danny in

Ahora veremos cómo podemos utilizar esta estructura condicional dentro del caso que hemos citado anteriormente.

Recordemos el problema: tenemos nuestro pequeño Robot que sube una escalera. En un momento determinado, queremos que tome una decisión según el punto en el que se encuentra. La decisión es la siguiente: si se encuentra en el escalón 200 debe detenerse, mientras que si está en cualquier otro sitio debe continuar subiendo.

Ante un problema así, debemos plantearnos cuál es la estructura que debemos utilizar. En este caso, es fácil ya que sólo hemos estudiado una. Cuando tenemos clara la estructura debemos mirar que es lo que debemos poner en cada lugar y cuáles son las instrucciones que debemos utilizar.

Vamos a definir las instrucciones que nos hacen falta para este ejemplo:

-Escalón: nos servirá para saber en qué número de escalón se encuentra nuestro robot.

-Parar: detiene al robot y lo pone en modo de pausa para que "descanse".

Estas "instrucciones" están hechas a medida porque estamos utilizando un pseudo código, pero podrían ser sustituidas por instrucciones reales en el momento en el que nosotros decidiéramos en qué lenguaje realizar nuestro programa.

Una vez hemos definido las instrucciones y mirado cuál es la estructura que queremos utilizar pasaremos a escribir el código. Quiero decir que al principio puede ser que le cueste un poco encontrar una solución lógica. Pero piense que esto, como la mayoría de las cosas, requiere mucha paciencia, mucha práctica y algo de concentración.

Pasemos a implementar el ejemplo:

Si Escalón = 200 entonces
Parar

Sino

LevantaPieIzquierdo

LevantaPieDerecho

Fin Si

Observe detenidamente la implementación del código y mire cuáles serían los pasos que deberíamos seguir cuando se dieran los dos posibles casos de nuestro problema. Recuerde que para un mismo problema pueden existir diferentes soluciones.