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