Para Sinclair QL recursos en castellano
Agosto 2004
A raíz de algunos mensajes en el foro de QL se ha puesto de relieve, entre otras cosas, que el SuperBASIC es mucho más completo que cualquier otro BASIC de la época. Aquí paso a indicar alguna de sus ventajas partiendo de un simple programa de ejemplo.
Lo primero a destacar es sin duda el hecho de que SuperBASIC es un lenguaje estructurado que se olvida del GOTO y GOSUB (que incorpora a modo de compatibilidad). Va el ejemplo:
100 REMark ejemplo 110 n=100 120 FOR i=1 to n : hola 130 : 140 DEFine PROCedure hola 150 PRINT "Hola Mundo" 160 END DEFine
Este programa imprime por pantalla 100 veces la frase "Hola Mundo"
Vemos que algunos comandos mezclan mayúsculas y minúsculas. El SuperBASIC permite escribir sentencias cortas y el mismo se encarga de completarlas, como en el caso de REMark o DEFine PROCedure que pueden introducirse como REM o DEF PROC.
en la línea 110 vemos que no es necesario usar la sentencia LET para asignar un valor a una variable, aunque dicha sentencia está soportada.
La línea 120 habitualmente requeriría de un "NEXT i" más adelante (o un "END FOR i" en el mismo SuperBASIC), pero como en una misma línea podemos incluir varias sentencias separadas por ":", el SuperBASIC entiende que esa misma línea cierra el FOR, lo que hace innecesario el empleo de NEXT. Lo mismo ocurre con otras sentencias de cierre como por ejemplo IF.
El empleo de ":" no se limita a sentencias que requieren cierre, sino que podemos emplearla para poner varias sentencias en cualquier línea o bien aparecer sola como en la línea 130. En este caso sirve como lo haría un REM sin texto a continuación, es decir, separar visualmente partes del listado aportando mayor comprensión de lectura.
No es necesario poner un STOP después de la línea 130 para que termine el programa. Los PROCedures no son ejecutados en tanto no se les llame desde dentro del programa, como en el caso de la línea 120, por lo que el programa pasará de estas líneas y terminará solo.
Los PROCedure, al igual que los DEFine FuNction (DEF FN), independientemente de la posición que ocupen en el programa, son los primeros que el SuperBASIC toma en cuenta y pueden emplearse de la misma forma que los comandos y Funciones estándar de SuperBASIC, ya que, una vez se ejecute el programa, estos PROC y FN son conectados al SuperBASIC y pueden ser llamados desde la misma línea de comandos. Si después de ejecutar el programa escribimos en la línea de comandos CLS:hola veremos como se limpia la pantalla y aparece una línea con el mensaje "Hola Mundo".
El empleo de PROCedure y FuNction, los dos puntos ":", y dejar de lado las sentencias GOTO y GOSUB aportan tal flexibilidad, que un programa puede escribirse completamente sin números de líneas mediante un editor y salvarse con un aspecto parecido a esto:
n=100:FOR i=1 to n:hola:END FOR i:DEFine PROCedure hola:PRINT "Hola Mundo":END DEFine
Aquí si es necesario emplear "END FOR i" para que el intérprete no crea que el bucle FOR incluye el resto del programa, ya que no hay números de línea que indiquen a FOR el final de sentencia.
Por último, destacar en este ejemplo el hecho de que podemos emplear espacios en blanco para visualizar mejor las líneas, como en el caso de la línea 150, pudiendo tabular las sentencias al estilo de cualquier moderno lenguaje de programación.