Fundamentación


La cultura popular, alimentada por las películas y los libros de ciencia ficción, le da a la computadora una imagen de "cerebro mágico" que todo lo sabe y todo lo puede. La realidad es que las computadoras son máquinas electrónicas, sin capacidad de entender o razonar, que sólo responden a instrucciones simples.

Sin embargo, una inteligente combinación de instrucciones simples, un programa, puede lograr que las computadoras se comporten en la forma pseudointeligente y compleja que conocemos.

Esta actividad está pensada para desmitificar a la computadora por medio de un simple lenguaje de computación que permite resolver laberintos. Este lenguaje, accesible a alumnos del nivel EGB 3 y del Polimodal, permite ver a la computadora como una máquina que sólo obedece órdenes simples, pero, al mismo tiempo, permite escribir un programa que en forma aparentemente inteligente resuelve cualquier laberinto.


Expectativas de logros

Actividad

Es conveniente que el docente realice previamente todos los pasos solo, si nunca antes realizó una actividad de este tipo.

El laberinto es una matriz con celdas que pueden estar vacías (esto significa que se puede pasar a través de ellas) u ocupadas por una pared (lo cual significa que no se puede pasar a través de ellas). Hay una única entrada al laberinto, al menos una salida y al menos un camino de celdas vacías que conecta la entrada con la salida.

El ente tiene como atributos una posición en una celda vacía del laberinto (al comenzar está en la celda de entrada) y una orientación (Norte, Sur, Este u Oeste) hacia la cual puede avanzar. Este ente puede representar una persona, una computadora, una tortuga al estilo del lenguaje LOGO, etc.

Ejemplo de laberinto con una entrada, una salida y, al menos, dos caminos entre ellas, con el ente posicionado en la celda de entrada y orientado hacia el Este:

Ejemplo de laberinto con una entrada,Y


Este lenguaje es simple y está basado en el lenguaje LOGO. Tiene dos instrucciones básicas, las cuales cambian el estado del ente. Es decir, pueden cambiar la posición u orientación del ente:

Estas instrucciones pueden utilizarse para escribir un programa que resuelva el laberinto del ejemplo anterior.

SOLUCIÓN 1:
PASO
PASO
PASO
PASO
DER
DER
DER
PASO
PASO
PASO
PASO
DER
PASO
PASO
FIN

Un programa que resuelva el laberinto del ejemplo anterior

Hay infinitas soluciones a este laberinto, algunas lógicas, otras no. La solución que dimos es la más simple. La siguiente figura muestra otra solución simple. El programa que obtiene esta solución queda como ejercicio para el lector.

Nueva solución


Para que el ente haga un giro hacia la izquierda, el programa debe repetir tres veces la instrucción DER. Podemos utilizar subprogramas para crear nuevas instrucciones a partir de las instrucciones ya existentes, y así poder escribir programas más cortos y legibles.

Un subprograma (al igual que un programa) se crea escribiendo un nombre, dos puntos, una serie de instrucciones y la directiva FIN. Una vez creado un subprograma, su nombre puede ser usado como una instrucción por cualquier otro (sub) programa.

Por ejemplo, crear la instrucción IZQ, que ordena al ente girar a la izquierda, utilizando la instrucción ya existente DER.

Crear una instrucción DOS_PASOS, basada en la instrucción PASO.

IZQ: DOS_PASOS:
DER PASO
DER PASO
DER FIN
FIN

SOLUCIÓN 1:
DOS_PASOS
DOS_PASOS
IZQ
DOS_PASOS
DOS_PASOS
DER
DOS_PASOS
FIN

Este programa va a ejecutar exactamente igual que la primera versión, ya que cuando la computadora lea la instrucción IZQ va a ejecutar el subprograma IZQ, es decir, va a ejecutar la instrucción DER tres veces. Igualmente al encontrar la nueva instrucción DOS_PASOS.

Retomar la primera solución. En vez de indicarle al ente que avance cuatro pasos, escribir un programa que haga avanzar al ente hasta encontrar una pared. Es decir, que le indique al ente ejecutar un PASO repetidamente, hasta que cierta condición deje de cumplirse. Para ello introducir condiciones o predicados lógicos en nuestro lenguaje, e instrucciones que controlen si esas condiciones se verifican o no (son verdaderas o falsas).

AVANZAR:
MIENTRAS NO PARED? HACER
PASO
FIN

Nueva solución

SOLUCIÓN 1:
AVANZAR
IZQ
AVANZAR
DER
DOS_PASOS
FIN

Otra función lógica (o condición) muy útil es ADENTRO?, la cual retorna VERDADERO sólo si el ente está aún adentro del laberinto.


Para evitar tener que escribir un programa para cada laberinto escribir uno que resuelva cualquiera con las características de los presentados aquí: dos dimensiones, una entrada, al menos una salida y al menos un camino entre ellas.
  • Escribir un subprograma que permita al ente "tantear" la pared en una celda a la que recién ingresó, comenzando por su derecha y siguiendo hacia la izquierda hasta encontrar una celda a la que pueda acceder.
    TANTEAR: DER MIENTRAS PARED? HACER IZQ END
  • Escribir un programa que permita al ente ir tanteando por la próxima celda más a su derecha y, cuando encuentra una celda libre, avanzar.
    TANTEAR: DER MIENTRAS PARED? HACER IZQ END
  • Al ejecutar este programa en el laberinto del ejemplo, el ente realizará el siguiente recorrido, que no es el más corto, pero resuelve el problema.



El ente realizará el siguiente recorrido

Notas y sugerencias para realizar la actividad.


  • Durante la primera etapa -pasos 1 a 8- se crean distintos laberintos de diferente complejidad y se escriben programas que los resuelvan. Esta actividad puede hacerse sin computadoras, dibujando los laberintos en hojas cuadriculadas, en el pizarrón o en el suelo, y haciendo que un alumno del grupo responda ciegamente a las instrucciones del programa. Sin embargo, el lenguaje LOGO puede usarse para crear los laberintos y ejecutar los programas. Para ello se puede utilizar el programa MSWLogo y escribir los programas en forma similar a como se han escrito en el archivo laberinto.txt.
  • Se puede coordinar con otras áreas curriculares el estudio de laberintos: en la historia y la mitología, en la literatura, en la arquitectura, en los juegos (incluso en los videojuegos) y su simbología. Análisis, construcción y resolución de otros tipos de laberintos (3D, por ejemplo). Recomendamos la lectura de "La casa de Asterión" y "Abenjacán el Bojarí, muerto en su laberinto", cuentos ambos de Jorge Luis Borges.
  • Hemos visto que la computadora es una máquina electrónica simple que solamente puede obedecer órdenes muy simples. Pero esas órdenes combinadas en un programa pueden resolver problemas complicados. La segunda etapa permite ver cómo una combinación inteligente de estas instrucciones básicas puede hacer que la computadora se comporte de una forma que parezca inteligente.

Software utilizado


mswlogo


Dentro del ambiente de los docentes que enseñan Logo se suele decir que "Logo está lleno de distintos sabores", haciendo alusión a las distintas versiones. Aquí nos encontramos con una de ellas, que tiene la particularidad de consumir poquísimos recursos.
Requerimientos mínimos: Windows 95 con 8 Mb de RAM.
Web del proyecto: http://www.softronix.com/logo.html

Leer Manual Descargar Software

El archivo laberinto.txt contiene un programa que, usando MSWLogo, crea laberintos al azar y los resuelve utilizando el programa visto en esta actividad.