El Lenguaje
Procedimiento
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 desde sus primeros
tiempos. |