11 diciembre 2012

Programar en BASIC desde Android


Existe alguna alternativa para programar DESDE un dispositivo Android.

Una de ellas es una versión de BASIC llamada "De Re BASIC!", creada por el autor de Atari Basic y de Apple DOS 3.1, de código abierto, y que se puede descargar desde:

http://laughton.com/basic/

En esa página tendremos acceso al fichero ".apk" que podremos instalar en nuestro móvil o tablet (si permitimos la instalación "desde fuentes no fiables"), y que permite editar nuestros programas en BASIC desde el propio dispositivos y lanzarlos también desde él mismo.

Tras instalarlo, en nuestro dispositivo aparecerá una nueva aplicación llamada "BASIC!", con un icono que muestra un telescopio, y al lanzarla veremos un editor que nos permite añadir texto y que inicialmente muestra:

REM Start of BASIC! Program

En esta versión del lenguaje, podemos encontrar las estructuras típicas del lenguaje BASIC, como IF-ELSE, FOR-TO-NEXT, WHILE, GOTO (con etiquetas, no con números de línea), GOSUB e incluso un PRINT para escribir en modo consola. Por ejemplo, para escribir la palabra "hola" podríamos añadir a nuestro esqueleto de programa: print "hola"

REM Start of BASIC! Program
print"hola"

Pero también tenemos acceso a construcciones más avanzadas: desde dibujar en modo gráfico hasta acceso a servicios típicos de un dispositivo Android, como el GPS, la cámara, envío de correo y de SMS, sockets TCP/IP, SQL...

Por ejemplo, el esqueleto de un programa básico que dibujara sería:

REM Start of BASIC! Program
gr.open 255,255,255,255
gr.color 255,0,0,0,0
gr.line n,0,0,100,120
gr.render
do
until 0 

que mostrará una línea desde la esquina superior izquierda de la pantalla hasta el punto de coordenadas 100,120 (en color negro, sobre fondo blanco) y esperará hasta que se pulse el botón de "Retroceso" del dispositivo.

Un ejemplo más detallado podría ser un juego para niños que estén empezando a leer, que escogiera una letra al azar y la mostrara en pantalla; al tocar la pantalla, generaría una nueva letra y así sucesivamente. El fuente completo podría ser algo como

! Letras al azar, de una en una

! Modo grafico con fondo blanco
GR.OPEN 255, 255, 255, 255
! Orientacion vertical
GR.ORIENTATION 1
! Leer ancho y alto del dispositivo
GR.SCREEN ancho,alto

posX = ancho/4

! Color negro para el texto
GR.COLOR 255, 0, 0, 0, 0

! Tamanyo: la mitad del ancho
GR.TEXT.SIZE ancho/2

! Alineacion izquierda
GR.TEXT.ALIGN 1

DO
  GR.CLS
  codigoLetra = 65+RND()*26
  GR.TEXT.DRAW P, posX, alto/2, CHR$(codigoLetra)
  GR.RENDER

  DO
    GR.TOUCH tocado,x,y
  UNTIL tocado

UNTIL 0

! El programa acaba al pulsar ATRAS
! Este ONERROR evita un mensaje de error
! de "graphics not open"
ONERROR:
END 

Aplicaciones como ésta se podrían llegar a "empaquetar" en un fichero ".apk", para distribuir el programa a otras personas que no tengan BASIC! instalado, pero ese es un proceso relativamente laborioso. Existe una aplicación que permite automatizarlo hasta cierto punto, pero que a cambio exige que usemos una versión concreta del Android SDK, que tengamos una cuenta en Google Market, etc. Para un aficionado resulta más sencillo instalar BASIC! junto con nuestro programa en el dispositivo de destino y evitar complicaciones.

Este entorno no permite crear interfaces de usuario usando las funciones nativas de Android, pero sí permite crear páginas web interactivas que se comuniquen con un programa en BASIC... pero esa es otra historia y deberá ser contada en otro momento...