viernes, 7 de agosto de 2009

PythonTurtle, un entorno para enseñar programación a los niños (y a los mayores :-)

Hace un par de días descubrí PythonTurtle, un intérprete de Python que proporciona un entorno gráfico con el que explorar la programación de ordenadores a través de la denominada geometría de la tortuga, un sistema de creación de gráficos vectoriales por ordenador característico del lenguage Logo.

PythonTurtle viene acompañado de un breve tutorial gráfico donde se explican nociones elementales de Python a través de múltiples ejemplos.

Lo bueno es que a los pocos minutos uno ya está explorando y pintando con la cosa. Después de dibujar unas cuantas espirales

for i in range(10,200,5):
go(i)
turn(90)

for i in range(10,200,5):
go(i)
turn(120)

for i in range(10,200,5):
go(i)
turn(95)


y estrellas
def estrella(lados,long):
for i in range(lados):
turn(-60)
go(long)
turn(120)
go(long)
turn((360./lados)-60)

for i in range(10):
estrella(3+i,10*i)

me animé y con un poco de recursión saqué estos tres fractalillos: un árbol un tanto robótico que habría que aderezar con un par de randoms...
def arbol(lado):
go(lado)
if lado>5:
turn(-45)
arbol(lado/2.)
turn(180)
go(lado/2.)
turn(-90)
arbol(lado/2.)
turn(180)
go(lado/2.)
turn(135)

arbol(100)

un copito de Koch...
def copo(long):
if long>20:
copo(long/3.)
turn(-60)
copo(long/3.)
turn(120)
copo(long/3.)
turn(-60)
copo(long/3.)
else:
go(long)

copo(100)
turn(120)
copo(100)
turn(120)
copo(100)


y una curva de Hilbert
def hilbert_L(n):
if n>1:
turn(90)
hilbert_R(n-1)
go(10)
turn(-90)
hilbert_L(n-1)
go(10)
hilbert_L(n-1)
turn(-90)
go(10)
hilbert_R(n-1)
turn(90)

def hilbert_R(n):
if n>1:
turn(-90)
hilbert_L(n-1)
go(10)
turn(90)
hilbert_R(n-1)
go(10)
hilbert_R(n-1)
turn(90)
go(10)
hilbert_L(n-1)
turn(-90)

hilbert_R(4)

Por cierto, que traducir para los chavales las órdenes de la tortuga al español es tan sencillo como
def avanza(unidades):
go(unidades)

def gira(angulo):
turn(angulo)

Podeis encontrar más enlaces sobre Python es este post que escribí el año pasado. ¡A pasarlo bien!

Nota importante: No quiero dar una impresión equivocada acerca de Python con este post. Aunque es el lenguaje ideal para un chaval, Python es también un lenguaje completo, "serio", que es usado por empresas y organizaciones del calibre de la NASA, ILM, Google o Ironport (Cisco).

PythonTurtle se puede descargar aquí (de momento sólo para Windows). Como siempre, gracias por venir. Si te gustó el post puedes apuntarte a través del correo electrónico o por medio del feed RSS (más información acerca del RSS). También puedes seguirme a través de mis elementos compartidos. Durante la redacción de este post no se han maltratado tortugas.

3 comentarios:

javcasta dijo...

Me recuerda a Logo, un lenguaje de hace años con su tortuga, enfocado a la educación. Pero habia gente tan friki que hasta se programaban un editor de textos en logo.
Hay gente para todo.
Respecto a los gráficos y dibujos programados es ideal para despertar la afición en un chaval. Recuerdo que en basic-mallard hace años llegue ha hacer represntaciones alucinantes cuando descubrí las funciones trigonométricas (sin, cos,...), pena que por aquella época no supiera lo que era un fractal

Anónimo dijo...

Me encanta la estrella, y geniales esos fractales :D

Wan Link Sniper dijo...

¡Exacto! Aquellos BASIC con los que muchos nos iniciámos en toda esta movida. Otras alternativas muy majas para inciarse en la programación mediante medios gráficos son pyGame, Procesing y Alice.