Sintaxis
La sintaxis mínima de BASIC sólo necesita los comandos LET,
INPUT, PRINT, IF y GOTO. Un intérprete que ejecuta programas con
esta sintaxis mínima no necesita una
pila. Algunas de las primeras implementaciones eran así de
simples. Si se le agrega una pila, se pueden agregar también ciclos
FOR anidados y el comando GOSUB. Un intérprete de BASIC con estas
características necesita que el código tenga números de línea.
Los números de línea fueron un aspecto muy distintivo del BASIC
clásico. Sin embargo, el uso de números de línea tiene la desventaja
de requerir que el programador estime cuántas líneas ocupará la
parte del programa que escribe. Este requerimiento se cumple
generalmente incrementando los números de línea en un intervalo
regular, como 10, pero esto lleva a problemas a la hora que el
código después agregado exceda el espacio disponible entre las
líneas originales. Para aliviar este problema de los primeros
intérpretes de BASIC, los usuarios expertos pronto escribieron sus
propios programas utilitarios para renumerar sus programas, después
del ingreso inicial. Más tarde aparecieron intérpretes de BASIC que
incluían un comando específico RENUMBER, el que permitía renumerar
rápidamente (y las veces que se quisiera) todo el código nuevamente,
con cualquier intervalo entre líneas indicado y a partir de un
número entero dado; eliminando así el principal problema de la
numeración de líneas obligatoria.
En los dialectos modernos de BASIC MIUN ya no es necesario incluir
números de línea (aunque son permitidos), y la mayoría (o todos) han
añadido
control de flujo estructurado y los constructores de declaración
de datos similares a los de otros lenguajes, tales como
C y
Pascal:
-
- do
- loop
- while
- until
- exit
- on... goto
- gosub
- select ... case
Variantes recientes como
Visual Basic han introducido algunas características orientadas
a objetos, y hasta
herencia en la última versión. La administración de memoria es
más fácil que con muchos otros lenguajes de programación
procedurales por el uso de un
Recolector de basura (y a costas de la velocidad de ejecución).

|
Procedimientos y Control de Flujo
BASIC no tiene una biblioteca externa estándar como otros
lenguajes como C. En cambio, el intérprete (o compilador) contiene
una biblioteca incorporada de procedimientos intrínsecos. Estos
procedimientos incluyen la mayoría de las herramientas que un
programador necesita para aprender a programar y escribir
aplicaciones sencillas, así como funciones para realizar cálculos
matemáticos, manejar cadenas, entrada desde la consola, gráficos y
manipulación de archivos.
Viejos dialectos de BASIC no permitían a los programadores
escribir sus propios procedimientos. Los programadores en cambio
debían escribir sus programas con un gran número de enunciados GOTO
para hacer las derivaciones de flujo y retorno del programa. Esto
podía producir un código fuente muy confuso (la mayoría de las veces
era así), comúnmente conocido como
Código espagueti; el cual era sumamente difícil de mantener,
mucho menos por programadores ajenos al desarrollo del software.
Con la inclusión posterior de enunciados GOSUB (Go-Subroutine) se
ramificaba el programa a especies de subrutinas, sin parámetros o
variables locales. Ellas proveen una forma de implementar una suerte
de procedimientos (realmente no lo son, sencillamente es un "salto y
retorno") y estructurar más el programa, evitando bastante la
utilización de la dañina sentencia GOTO.
La mayoría de las versiones de BASIC más modernas, como Microsoft
QuickBASIC (1985-1988) y BASIC PDS (Profesional Developmen
System - 1990) añadieron soporte completo para subrutinas, funciones
y
programación estructurada. Esta es otra área donde BASIC difiere
de muchos lenguajes de programación. Sin embargo la primitiva GOSUB
se ha mantenido hasta las versiones actuales, por razones
compatibilidad.
BASIC, como Pascal, hace una distinción entre un procedimiento
que no devuelve un valor (llamado subrutina) y un procedimiento que
lo hace (llamado función). Muchos otros lenguajes (como C) no hacen
esa distinción y consideran todo como una función (algunas que
devuelven un valor “void” [vacío]).
Mientras que las funciones que devuelven un valor son una adición
relativamente reciente a los dialectos de BASIC, muchos de los
primeros sistemas soportaban la definición de funciones matemáticas
en línea, con DEF FN (“DEFine FunctioN” [DEFinir FuncióN]).
El Dartmouth BASIC original también soportaba funciones al estilo de
Algol, así como subrutinas

|