1. UNIVERSIDAD AUTÓNOMA DE TAMAULIPAS
FACULTAD DE INGENIERÍA “ARTURO NARRO SILLER”
INGENIERÍA EN SISTEMAS COMPUTACIONALES
NOMBRE DE LA ASIGNATURA
COMPILADORES
INVESTIGACIÓN
UNIDAD 5
ALGUNOS COMPILADORES
TITULAR DE LA ASIGNATURA
M.S.I. ARMANDO BECERRA DEL ANGEL
NOMBRE DEL ALUMNO
NAHUM VERA HERNANDEZ
17 de noviembre de 2009
2. INDICE
UNIDAD 5. ALGUNOS COMPILADORES
5.1.- COMPILADOR PARA PASCAL 3
• Características únicas
• Implementaciones
5.2.- COMPILADORES PARA C 6
• Características
• Elementos y terminología en C
5.3.- LOS COMPILADORES DE FORTRAN 9
• Principales características
Tipos de datos soportados:
• Control de secuencia
• Subprogramas
• Abstracción y encapsulación. Evaluación del lenguaje
• Ventajas e inconvenientes de su sintaxis
5.4.- COMPILADOR OPTIMIZADOR DE MODULA-2 14
• Descripción
• Dialectos
• Elementos de lengua Palabras reservadas
• Idiomas relacionadas
• MODULA-GM
• Recopiladores continuados
5.5.- COMPILADORES PARA BASIC
• Los ocho principios que rigeron el diseño de BASIC 17
• Madurez
• El Lenguaje Sintaxis
• Procedimientos y Control de Flujo
• Tipos de Datos
• Disponibilidad y variantes del lenguaje
BIBLIOGRFIA
2
3. UNIDAD 5. ALGUNOS COMPILADORES
5.1.- COMPILADOR PARA PASCAL
Pascal fue creado inicialmente por Niklaus Wirth como un lenguaje para la enseñanza de la
programación al final de los años 60. Es un descendiente de Algol y a su vez influyó mucho
en otros lenguajes posteriores, como Ada. Destaca por la claridad del código y por
promover «buenos hábitos» de programación.
Pascal alcanzó una gran popularidad cuando la empresa Borland lanzó Turbo Pascal, un
compilador para IBM-PC rápido y barato, que además introducía mejoras importantes al
lenguaje. Su sucesor, también de gran éxito, es Delphi, una herramienta de programación
visual basada en Object Pascal, una versión de Pascal con objetos.
• Alice Pascal es un viejo (1985) entorno de programación en Pascal con sintaxis dirigida
para MS-DOS y Atari ST. También está disponible el código fuente.
• Autorun Pascal Builder es un entorno para Windows para crear aplicaciones RAD
(presentaciones, tutoriales, álbumes multimedia, etc.) con un lenguaje de Script tipo Pascal
integrado.
• DPas es un compilador gratuito para MS-DOS de 32 bits.
• Free Pascal es un compilador profesional de 32 y 64 bits compatible con Turbo Pascal 7 y
con la mayoría de versiones de Delphi. Hay versiones para muchos sistemas, incluyendo
Linux, Mac OS y Win32. Lazarus es un clon de Delphi basado en Free Pascal. Dev-Pascal
es un entorno para Windows que usa Free Pascal o GNU Pascal.
• GNU Pascal es un compilador de 32/64 bits que funciona en todos los sistemas operativos
soportados por GNU C, incluyendo Linux, FreBSD, DOS (con DJGPP o EMX), Windows
(con Cygwin o mingw32) y OS/2 (con EMX). Soporta Pascal estándar, Pascal extendido,
Turbo Pascal 7.0 y partes de Delphi, Mac Pascal y Pascal-SC.
• Kylix Open Edition es un entorno de desarrollo visual para Linux de Borland compatible
con Delphi. Para hacer la descarga (90,7 Mb) hay que registrarse.
• Nemesis Pascal es un intérprete de Pascal escrito Delphi y Kylix y que funciona en
Windows y Linux.
• Pascal Pro produce código ensamblador para DOS32. Requiere TASM/MASM o NASM
así como TLink32 y WDOSX u otras herramientas para generar los ejecutables. Incluye
casi todos los elementos de Pascal más algunas mejoras.
• Pascal X es un entorno de programación en Pascal para crear aplicaciones de consola de
Windows. Incluye herramientas de ayuda para programadores noveles. Pueden usarse las
palabras clave estándar en inglés o traducidas al portugués.
• Think Pascal es un compilador para Macintosh, desarrollado por Think Technologies (con
el nombre de Lightspeed Pascal), empresa posteriormente absorbida por Symantec. En
1997 dejó de distribuirse pero ahora se puede descargar gratuitamente.
• Turbo Pascal 5.5 es un viejo (1989) compilador para MS-DOS de Borland, ahora
distribuido gratuitamente.
• Vector Pascal es una implementación de Pascal en Java pensada para aprovechar los
juegos de instrucciones SIMD (Single Instruction-stream Multiple Data-stream) de los
3
4. modernos microprocesadores, como los de MMX y AMD 3D Now!. Incluye características
propias de APL y J y extensiones de Turbo Pascal y Pascal 90. Incluye también un entorno
de desarrollo.
• Virtual Pascal es un compilador de 32 bits completamente compatible con Turbo Pascal 7
y en gran parte con Delphi 2. Funciona en Windows y OS/2. Ya no está en desarrollo.
Características únicas
A diferencia de lenguajes de programación descendientes de C, Pascal utiliza el
símbolo:= para la asignación en vez de =. Si bien el segundo es más conciso, la
práctica ha demostrado que muchos usuarios utilizan el símbolo de igualdad para
comparar valores en lugar del comparador de C que es el símbolo ==. Esta
sintaxis conduce a muchos errores o bugs difíciles de rastrear en código C. Dado
que Pascal no permite asignaciones dentro de expresiones y utiliza sintaxis
distinta para asignaciones y comparaciones, no sufre estos errores.
Además sus programas tienen definidas dos partes: declarativa y ejecutiva. En la
primera debe aparecer todo lo que se usará en la segunda, de lo contrario se
detecta como desconocido y evita ciertas incomprensiones como veremos más
adelante. En la parte declarativa se enuncian Unit existentes, procedimientos,
funciones, variables, constantes y nuevos tipos de datos estructurados.
Otra diferencia importante es que en Pascal, el tipo de una variable se fija en su
definición; la asignación a variables de valores de tipo incompatible no están
autorizadas (En C, en cambio, el compilador hace el mejor esfuerzo para dar una
interpretación a casi todo tipo de asignaciones). Esto previene errores comunes
donde variables son usadas incorrectamente porque el tipo es desconocido; y
también evita la necesidad de notación húngara, que vienen a ser prefijos que se
añaden a los nombres de las variables y que indican su tipo.
Implementaciones
Las primeras versiones del compilador de Pascal, entre ellas la más distribuida fue
UCSD Pascal, traducían el lenguaje en código para una máquina virtual llamada
máquina-P. La gran ventaja de este enfoque es que para tener un compilador de
Pascal en una nueva arquitectura de máquina solo hacía falta reimplementar la
máquina-P. Como consecuencia de esto, solo una pequeña parte del interprete
tenía que ser reescrita hacia muchas arquitecturas.
En los años 1980, Anders Hejlsberg escribió el compilador Blue Label Pascal para
la Nascom-2. Más tarde fue a trabajar para Borland y reescribió su compilador que
se convirtió en Turbo Pascal para la IBM PC. Este nuevo compilador se vendió por
$49, un precio orientado a la distribución masiva.
El económico compilador de Borland tuvo una larga influencia en la comunidad de
Pascal que comenzó a utilizar principalmente en el IBM PC. En busca de un
4
5. lenguaje estructurado muchos aficionados al PC reemplazaron el BASIC por este
producto. Dado que Turbo Pascal, solo estaba disponible para una arquitectura,
traducía directamente hacia el código máquina del Intel 8088, logrando construir
programas que se ejecutaban mucho más rápidamente que los producidos en los
esquemas interpretados.
Durante los años 1990, estuvo disponible la tecnología para construir
compiladores que pudieran producir código para diferentes arquitecturas de
hardware. Esto permitió que los compiladores de Pascal tradujeran directamente
al código de la arquitectura en que corrieran.
Con Turbo Pascal versión 5.5, Borland, agregó programación orientada a objetos
a Pascal.
Sin embargo, Borland después decidió mejorar esa extensión del lenguaje
introduciendo su producto Delphi, diseñado a partir de estándar Object Pascal
propuesto por Apple como base. Borland también lo llamó Object Pascal en las
primeras versiones, pero cambio el nombre a lenguaje de programación Delphi en
sus últimas versiones
Ejemplo de código usando la estructura lineal:
program raiz(input, output);
uses crt;
(*
Obtener la raíz cuadrada de un número real x cualquiera.
*)
var x, y: real;
respuesta: string;
begin
writeln('** Calcular la raíz cuadrada de x **');
writeln('Entrar x (> 0): ');
readln(x);
y := sqrt(abs(x)); (* Raíz cuadrada del valor absoluto de x para
evitar raíces imaginarias *)
writeln;
if (x<0) then (* Si x es negativo, el resultado se notifica como
imaginario *)
writeln('La raíz cuadrada de ', x, ' es el número imaginario ',
y,'i');
else
writeln('La raíz cuadrada de ', x, ' es ', y);
writeln;
writeln('** Fin **');
readln; (* Espera a que el usuario pulse enter para salir del programa
*)
end.
5
6. 5.2.- COMPILADORES PARA C
C fue creado en los Bell Telephone Laboratories al principio de los 70, por Dennis
M. Ritchie. Su nacimiento estuvo ligado al del sistema operativo Unix, que se
desarrolló paralelamente. Sus características debían ser: eficiencia (o sea, rapidez
en la ejecución de los programas), potencia (permite explotar a fondo las
posibilidades de la máquina) y portabilidad (el mismo código puede compilarse en
máquinas diferentes). Unix fue reescrito en C, lo cual supuso un gran éxito de este
lenguaje, a partir del cual se convirtió en uno de los más extendidos. La historia
del nacimiento de C, contada por Dennis M. Ritchie, puede leerse en http://cm.bell-
labs.com/cm/cs/who/dmr/chist.html.
A C se le ha criticado que los programas suelen ser poco legibles y propensos a
errores. Por contra, casi nadie le discute su potencia y su gran implantación, que a
menudo lo convierten en la elección inevitable para proyectos colectivos.
A partir de 1979, Bjarne Stroustrup, de AT&T, empezó a trabajar en un
descendiente de C con soporte para orientación a objetos y otras mejoras, que
sería conocido como C++ (la primera versión, interna de AT&T, data de 1983).
• ACC es un compilador de un subconjunto de C que genera código ensamblador
en modo protegido para MS-DOS. El paquete también incluye el ensamblador
A86.
• Tanto el compilador como el depurador de la versión 5.5 de Borland C++Builder
son distribuidos gratuitamente por Borland.
• Ch es un superconjunto de C, interpretado y fácil de usar. Hay una versión
estándar gratuita para todos los usos, y una profesional, sólo gratuita para uso
académico. Está disponible para varios sistemas, incluyendo Windows, Linux y
MacOS X.
• Cilk es un lenguaje para programación paralela multihilo basado en ANSI C. Se
distribuye sólo el código fuente y se ha instalado en varios sistemas POSIX
incluyendo Linux y MacOS X (no les vayas a preguntar si se puede instalar en
Windows NT, que parece que no les gusta).
• CINT es un intérprete de C y C++ que cubre el 95% de ANSI C y el 85% de C++.
Funciona en muchas plataformas, incluyendo Windows, MS-DOS, Linux y MacOS.
Se distribuye el código fuente y un ejecutable para Windows.
• Cyclone es un lenguaje basado en C diseñado para ser seguro. Funciona en
Linux y Windows con Cygwin. Sólo se distribuye el código fuente.
• Digital Mars distribuye en un solo paquete compiladores de C y C++ para DOS16,
DOS32, Win16 y Win32.
• eC es un subconjunto de C++, diseñado para servir como herramienta para
aprender este lenguaje. Está especialmente pensado para que sea fácil la
transición desde Pascal. Se distribuyen en un solo paquete compiladores e
intérpretes para DOS y Windows (y muchos ejemplos).
6
7. • EiC es un C interpretado que puede usarse de forma interactiva. Hay versiones
para varios sistemas Unix, Win32 y DOS con DJGPP. También se distribuye el
código fuente.
• GCC (GNU Compiler Collection) es un paquete GNU que incluye compiladores
de C, C++ y otros lenguajes. Los compiladores de C (gcc, con minúsculas) y C++
(g++) van incluidos en todas las distribuciones de Linux, y sirven como lenguajes
de programación para la mayor parte del trabajo desarrollado en GNU/Linux,
incluyendo el kernel de Linux. Hay también adaptaciones para DOS (DJGPP) y
Win32 (Cygwin y MinGW). Dev-C++ es un entorno de desarrollo que puede usarse
con cualquier versión de GCC para Windows (incluye MinGW).
• LadSoft (David Lindauer) distribuye cc386 (código fuente y ejecutable), un
compilador de ANSI C para Windows y MSDOS con DPMI, y CC68K, un cross-
compiler para Windows de código ejecutable de Motorola 68K (incluye también un
simulador que puede ejecutar el resultado).
• lcc, por Chris Fraser y David Hanson, es un compilador de ANSI C. Se distribuye
el código fuente, así como archivos binarios para Windows. lcc está descrito en el
libro A Retargetable C Compiler: Design and Implementation.
• LCC-Win32 es un compilador de C ampliamente documentado, desarrollado por
Jacob Navia a partir del documento A portable C compiler, de Dave Hanson y
Chris Fraser (supongo que es una versión antigua del libro citado anteriormente).
Es gratuito para uso no comercial.
• Leonardo es un entorno integrado para Macintosh (con PowerPC) basado en
ANSI C, incluyendo también el lenguaje de visualización ALPHA (que se inserta
dentro del código fuente en comentarios especiales). Está indicado para el
aprendizaje de C, la depuración de programas y la programación de «algoritmos
animados». Permite la ejecución hacia atrás (!). Este proyecto ha sido abandonado
en favor de Leonardo Computing Environment (a continuación).
• Leonardo Computing Environment es el sucesor de Leonardo y tiene
características similares. Está siendo desarrollado en Windows, Linux y MacOS.
• Macintosh Programmer's Workshop es un conjunto de herramientas para
programación de Macintosh. Incluye compiladores de C y C++ para micros 68k y
Power PC para sistemas 7.x, 8.x y 9.x.
• Open Watcom C/C++ es el sucesor de código abierto de una famosa versión
comercial de C y C++. Se distribuyen gratuitamente (aunque se solicitan
donaciones) el código fuente y paquetes instalables para Windows y OS/2.
También se distribuye la versión 11.0c de Watcom.
• Pacific C es un compilador gratuito para MS-DOS, distribuido anteriormente como
shareware por HI-TECH. Incluye un entorno de desarrollo integrado.
• Pelles C es un completo kit de desarrollo para Windows y Pocket PC. El
compilador está basado en lcc.
• Sphinx C-- es un lenguaje de medio a bajo nivel para ordenadores con
microprocesadores 80x86, una especie de mezcla entre C y ensamblador. El autor
original, Peter Cellik, abandonó en 1996 su desarrollo, pero otros programadores
han continuado su trabajo. Parece que C-- es un lenguaje más general.
• Small C es un pequeño compilador de C con códigos fuentes para distintas
plataformas, entre ellas MS-DOS y CP/M.
• Tiny C es un compilador para Linux muy pequeño y rápido.
7
8. • Turbo C es el viejo compilador C de Borland para MS-DOS. Borland distribuye
ahora gratuitamente algunas versiones. Aquí se encuentra la 2.01.
• El Visual C++ Toolkit 2003 de Microsoft incluye todas las herramientas
necesarias para compilar y enlazar aplicaciones basadas en C++ para Windows
y .NET Common Language Runtime. Son 32 Mb.
Características
La popularidad del lenguaje C se debe a sus características:
• Compacto: sólo tiene 32 palabras reservadas.
• Estructurado: se basa en el empleo de funciones, que son bloques de
código independientes.
• Portable: los programas ejecutables obtenidos funcionan en cualquier
máquina (utilizando las librerías y funciones estándar). El código fuente
tampoco dependerá del compilador o del sistema operativo utilizado.
• Flexible: tiene pocas restricciones.
• Lenguaje de tipo medio: dispone de potentes sentencias propias de los
lenguajes de alto nivel y características de lenguajes de bajo nivel como el
ensamblador (permite el control de la CPU a nivel de registros, e incluso a
nivel de bits), con plena disponibilidad de la memoria y puertos conectados
a la CPU.
• Extensión: el C es un lenguaje muy extendido. Los compiladores son
relativamente sencillos y reducidos, y cuando surge una nueva máquina o
sistema operativo, es uno de los primeros programas que se diseñan.
Elementos y terminología en C
Esto es solo para introduciros un poco a los elementos que usaremos en nuestros
programas, cada elemento se verá en profundidad en los siguientes capítulos.
Funciones
En C es la unidad básica de programación. Los programas se construyen a base
de funciones que reciben unos valores de entrada y devuelven unos de salida. En
nuestro primer programa hemos visto la función main, que es siempre la primera
que toma el control del programa está en todos los programas.
Variables
Como muchos sabréis, las variables son espacios que guardan un valor que
puede cambiar (variar) a lo largo del programa. Tienen un nombre (etiqueta o
identificador) que identifica a la porción de memoria ocupada por la variable.
Constantes
Como podéis imaginar las constantes, a diferencia de las variables, guardan un
valor que no se puede alterar a lo largo del programa.
8
9. Identificadores o etiquetas
Los identificadores o etiquetas son los nombres que identifican a las variables,
constantes y funciones. Deben respetar las siguientes condiciones:
• Deben empezar con una letra o con la barra baja "_", y pueden construirse
con letras, números y barras bajas.
• IMPORTANTE: el C es sensible a las mayúsculas y minúsculas
(denominado case sensitive), así que no sería lo mismo Variable que
variable.
• No se pueden usar palabras reservadas como identificadores.
• Las funciones creadas por el programador pueden comenzar con
mayúscula para diferenciarla de las funciones definidas en el compilador.
• Las etiquetas o identificadores definidas en el compilador, también llamadas
constantes simbolicas (como por ejemplo FILE), suelen escribirse en
mayúscula.
Sentencias
Una sentencia es un conjunto de identificadores, símbolos, etc., escritos en una
línea. En C las sentencias terminan con punto y coma ";". Las sentencias pueden
ir en una línea cada una como es habitual, o varias en una línea, separadas por
punto y coma.
Operadores
Son todos aquellos símbolos para realizar operaciones aritméticas o lógicas: +,
*, /, etc.
Bloques de sentencias
Son conjuntos de sentencias agrupadas entre llaves "{}" que forman una unidad
inseparable y se evalúan como una única sentencia más compleja.
Comentarios
Los comentarios sirven sólo para aclarar aspectos del código fuente y son
ignorados por el compilador. Son de gran importancia, ya que si el código fuente
debe ser modificado después de un tiempo, o si es pasado de un programador a
otro, los comentarios pueden facilitarle mucho la tarea de entenderlo. Los
comentarios van delimitados por las marcas "/*" y "*/", por ejemplo:
/* Esto es un comentario */
Tabulación o identación
Consiste en estructurar mediante tabulaciones el código del programa para facilitar
su lectura. El criterio general de tabulación es tabular más las sentencias
subordinadas a otras (se verá más adelante en los ejemplos).
Directivas del preprocesador
Son sentencias ubicadas al principio del programa y que indican al compilador
9
10. cómo debe actuar sobre el programa fuente. En el ejemplo de este capítulo hemos
visto la directiva #include. Las directivas del preprocesador no finalizan con punto
y coma.
5.3.- LOS COMPILADORES DE FORTRAN
Fortran (Inglés: Formula Translating System) es un lenguaje características. Está
fuertemente orientado al cálculo y por ende es uno de los de mayor eficiencia en la
ejecución.
Algunas otras versiones subsiguientes fueron:
• FORTRAN IV
• FORTRAN 80
• FORTRAN 77
• FORTRAN 90
de programación de alto nivel y procedural, desarrollado para propósitos generales por
IBM en 1957 para el equipo IBM 704. [1] Fue el primero desarrollado con estas FORTRAN
95
Fortran ha sido ampliamente adoptado por la comunidad científica para escribir
aplicaciones de cálculos intensivos. La inclusión en el lenguaje de la aritmética de
números complejos amplió la gama de aplicaciones para las cuales el lenguaje se adapta
especialmente; muchas técnicas de compilación de lenguajes se han implementado para
mejorar la calidad del código generado por los compiladores de Fortran.
Un sencillo ejemplo
Principales características
El lenguaje fue diseñado teniendo en cuenta que los programas serían escritos en tarjetas
perforadas de 80 columnas. Así por ejemplo, las líneas debían ser numeradas y la única
10
11. alteración posible en el orden de ejecución era producida con la instrucción goto. Estas
características han evolucionado de versión en versión. Las actuales contienen
subprogramas, recursión y una variada gama de estructuras de control.
Tipos de datos soportados:
• Numéricos (enteros, reales, complejos y doble precisión).
• Booleanos (logical)
• Arreglos
• Cadenas de caracteres
• Archivos
FORTRAN 90 ya es estructurado, y no requiere sentencias GOTO. Sólo admite dos
ámbitos para las variables: local y global.
Ejemplo más extenso:
Variables y constantes
• FORTRAN no es sensible a mayúsculas y minúsculas. Los nombre de variables
tienen de 6 a 31 caracteres máximo y deben comenzar por una letra. Los blancos
son significativos.
• Declaración explicita de variables.
• Enteras (I-N), el resto reales. (se modifica con IMPLICIT).
11
12. • Punteros: en los primeros FORTRAN no hay punteros y todas las variables se
almacenan en memoria estática. En FORTRAN 90 se declaran INTEGER,
POINTER::P.
• Para memoria dinámica ALLOCATE y DEALLOCATE
Tipos de datos
• Arrays, pueden tener hasta 7 dimensiones y se guardan por colummnas.
REAL M(20),N(-5:5)
DIMENSION I(20,20) (tipo por nomenclatura implícita)
• Cadenas de caracteres, el primer carácter es el 1, el operador // permite
concatenar cadenas.
CHARACTER S*10, T*25
• Almacenamiento de datos. Se usa COMMON para datos compartidos y
EQUIVALENCE cuando almacenamos una variable con dos posibles tipos en la
misma posición de memoria (como union en C). Se usa DATA para inicializar
datos estáticos.
DATA X/1.0/,Y/3.1416/,K/20/
• Tipos definidos por el usuario, con TYPE <nombre>... END TYPE <nombre>
Control de secuencia
EL conjunto de estructuras de control es limitado:
• Expresiones, prioridad de operadores
• Enunciados
• Asignación, cuando se hace entre cadenas hay ajuste de tamaño con
blancos o truncamiento.
• Condicional. Permite IF ELSE IF... Para selección múltiple SELECT CASE
CASE.....CASE DEFAULT.... END SELECT
• Iteración. DO....END DO
• Nulo, se usa solo para la etiqueta. CONTINUE.
• Control de subprogramas. CALL invoca al subprograma y RETURN devuelve un
valor al programa llamante.
• Construcciones propensas a error: GOTO.
Entrada y salida
• Tipos de archivos:
Secuenciales
De acceso directo
• Comandos: READ, WRITE, PRINT, OPEN , CLASE, INQUIRE (propiedades o
estado del archivo) REWIND y ENDFILE (para ubicar el puntero del fichero).
• Para el tratamiento de excepciones en las sentencias READ/WRITE se puede
introducir la posición de la rutina de dicho tratamiento (ERR=90).
Subprogramas
• Hay tres tipos de subprogramas:
12
13. Function, devuelven un solo valor de tipo numérico, lógico o cadena de
caracteres.
Subroutine, devuelve valores a través de variables no locales COMMON.
Función de enunciado, permite calcular una sola expresión aritmética o
lógica.
• FN(X,Y)=SIN(X)**2-COS(Y)**2
• Gestión de almacenamiento.
Las variables son locales o globales (COMMON)
Recursividad: RECURSIVE FUNCTION FACTORIAL(X)
Parámetros de subprograma. Paso por referencia.
Abstracción y encapsulación. Evaluación del lenguaje
• La abstracción es posible mediante los subprogramas y el uso de variables
COMMON, aunque su uso es propenso a errores.
• FORTRAN sigue siendo utilizado en el ámbito científico y es muy eficiente
realizando cálculos.
La estructura del programa suele ser dificil de entender.
En FORTRAN 90 se incluye la recursividad y la memoria dinámica.
Las etiquetas de las sentencias ya no son necesarias, ni el GOTO, pues se
ha transformado en un lenguaje estructurado.
El aspecto de los programas sigue siendo de procesamiento por lotes
Ventajas e inconvenientes de su sintaxis
Lo que fue la primera tentativa de proyección de un lenguaje de programación de alto
nivel, tiene una sintaxis considerada arcaica por muchos programadores que aprenden
lenguajes más modernos. Es difícil escribir un bucle "for", y errores en la escritura de sólo
un carácter pueden llevar a errores durante el tiempo de ejecución en vez de errores de
compilación, en el caso de que no se usen las construcciones más frecuentes. Algunas de
las versiones anteriores no poseían facilidades que son consideradas como útiles en las
máquinas modernas, como la asignación dinámica de memoria.
Se debe tener en cuenta que la sintaxis de Fortran fue afinada para el uso en trabajos
numéricos y científicos. Muchas de sus deficiencias han sido abordadas en revisiones
recientes del lenguaje. Por ejemplo, Fortran 95 posee comandos mucho más breves para
efectuar operaciones matemáticas con matrices y dispone de tipos. Esto no sólo mejora
mucho la lectura del programa sino que además aporta información útil al compilador.
Por estas razones Fortran no es muy usado fuera de los campos de la informática y el
análisis numérico, pero permanece como el lenguaje a escoger para desempeñar tareas
de computación numérica de alto rendimiento.
13
14. 5.4.- COMPILADOR OPTIMIZADOR DE MODULA-2
Modula-2 es una computadora lenguaje de programación inventado cerca Niklaus
Wirth en ETH alrededor 1978, como sucesor a Modula, una lengua intermedia de
él. Modula-2 fue puesto en ejecución en el an o 80 para Lilith computadora,
comercializada en 1982 por la compañía de lanzamiento DISER (Dato-Imagen-
Sonido-Procesador-y el Emisor-Receptor-Sistema) como MC1 y MC2. DISER
vendió 120 unidades por todo el mundo. La lengua Modula-2 se basa libremente
sobre Lenguaje de programación del Mesa, de Xerox, ese Wirth vio durante su
1976 año sabbatical en Xerox PARC.
Descripción
Modula-2 es fines generales lengua procesal, suficientemente flexible hacer la
programación de sistemas, pero con un uso mucho más amplio. Particularmente,
fue diseñado para apoyar la abstracción separada de la compilación y de los datos
de una manera directa. Mucho del sintaxis se basa en la lengua anterior y mejor-
sabida de Wirth, PASCAL. Modula-2 fue diseñado para ser ampliamente similar al
PASCAL, con algunos elementos quitados y la adición importante del módulo
concepto, y ayuda directa de la lengua para multiprogramación.
El Modula-2 módulo puede ser utilizado encapsulan un sistema de subprogramas
y de estructuras de datos relacionados, y restringen su visibilidad de otras
porciones del programa. El diseño del módulo puso la característica de la
abstracción en ejecución de los datos de Modula-2 de una manera muy limpia. Los
programas Modula-2 se componen de módulos, que se compone de dos
porciones: a módulo de la definición, la porción del interfaz, que contiene
solamente esas partes del subsistema que sean exportado (visible a otros
módulos), y módulo de la puesta en práctica, que contiene el código de trabajo
que es interno al módulo.
La lengua tiene control terminante del alcance. Particularmente el alcance de un
módulo se puede considerar como pared impenetrable: A excepción de
identificadores estándares no hay objeto del mundo externo visible dentro de un
módulo a menos que esté importado explícitamente; no hay objeto interno del
módulo visible del exterior a menos que esté exportado explícitamente.
Dialectos
Hay dos dialectos importantes de Modula-2. El primer es PIM, nombrado después
del libro “que programa en Modula-2” cerca Niklaus Wirth. Había tres ediciones
importantes de PIM, las ediciones del segundo, el tercer (corregido) y el cuarto,
cada las variantes leves que describían de la lengua. El segundo dialecto principal
14
15. es ISO, del esfuerzo de la estandardización por International Organization for
Standardization.
• PIM2 (1983)
o Explícito requerida EXPORTACIÓN cláusula en módulos de la
definición.
• PIM3 (1985)
o Quitó EXPORTACIÓN cláusula de los módulos de la definición por la
observación que todo dentro de un módulo de la definición define el
interfaz a ese módulo, por lo tanto EXPORTACIÓN la cláusula era
redundante.
• PIM4
o El comportamiento del MOD y REM especificaron a los operadores
cuando sus operandos eran negativos.
• ISO
o La ISO Modula-2 resolvió la mayor parte de las ambigüedades en
PIM Modula-2. Agregó los tipos de datos COMPLEJO y
LONGCOMPLEX, excepciones, terminación del módulo
(FINALMENTE cláusula) y una biblioteca completa de la entrada-
salida del estándar. Hay diferencias y clarificaciones de menor
importancia numerosas.
Elementos de lengua Palabras reservadas
PIM3 contuvo las 40 palabras reservadas siguientes:
Y ELSIF LAZO REPITA
EL ARSENAL EXTREMO MOD VUELVA
COMIENZAN SALIDA MÓDULO FIJE
CERCA EXPORTACIÓN NO ENTONCES
CASO PARA DE
A CONST DE O MECANOGRAFÍE
LA DEFINICIÓN SI INDICADOR HASTA
EL DIV EL PROCEDIMIENTO VAR DE LA PUESTA EN PRÁCTICA
IMPORTACIÓN CALIFICADO MIENTRAS QUE
EN EXPEDIENTE CON
Idiomas relacionadas
Aunque Modula-2 es la variante en gran medida el más conocida y más
ampliamente utilizada, hay varias idiomas que se relacionan de un modo u otro: el
la original, y absolutamente diferente, Modula (previsto para la puesta en práctica
de sistemas), Modula-2+, Modula-2* (extensión paralela), ISO Modula-2 OO y
extensiones genéricas, Modula-3 (por la DEC y Olivetti; agregando la colección,
objetos, y generics de la basura), Oberon (diseño otros, más último, de Wirth),
Oberon-2 (Oberon con extensiones de OO), Modula-2 objetivo (un híbrido de
15
16. Modula-2 y Palique) y un número de otros. Éstos no se deben mirar como
“versiones mejores” o “reemplazos” para Modula-2; la mayoría son diversas
idiomas con diversos propósitos, y con fuerzas y debilidades sus el propios.
Modula-2 fue desarrollado como la lengua del sistema para Lilith sitio de trabajo, y
formado el antepasado para Oberon lengua y proyecto del sitio de trabajo
(Sistema Oberon) convertido en ETH Zurich. Muchos lenguajes de programación
actuales han adoptado características de Modula-2.
MODULA-GM
Electrónica de Delco, entonces un subsidiario del GM Hughes Electrónica,
desarrollada una versión de Modula-2 para los sistemas de control encajados que
comienzan en 1985. Delco lo nombró Modula-GM. Era el primer idioma de alto
nivel usado para substituir el código de la terminología de la informática para los
sistemas encajados en las unidades de control de motor de Delco (los ECUs).
Esto era significativo porque Delco producía sobre los 28.000 ECUs por día en
1988 para el GM; éste era entonces el productor más grande del mundo de los
ECUs[1]. El primer uso experimental del Modula-GM en un regulador encajado
estaba en los 1993 Gen-4 el ECU usados por CARRO (Automóvil del campeonato
que compite con a equipos) y IRL (Indy que compite con a liga) equipos[2]. El
primer uso de la producción del Modula-GM era su uso en carros del GM
comenzando con los 1990 años modelo VCM (módulo de control del vehículo)
usados para manejar GM Powertrain Vortec motores. El Modula-GM también fue
utilizado en todos los ECUs para los GM Familia de 90° Buick V6 3800 la serie II
utilizó en el año modelo 1997-2005 Avenida de parque de Buick. Los recopiladores
Modula-GM y las herramientas de gerencia asociadas del software eran sourced
por Delco de Intermetrics.
Modula-2 fue seleccionado como la base para el idioma de alto nivel de Delco
debido a sus numerosos fuerzas sobre otras opciones alternativas de la lengua en
1986. Después de Delco la electrónica fue hecha girar apagado del GM (con otras
divisiones componentes) para formar Delphi en 1997, el sourcing global requirió
que una lengua de alto nivel no propietaria del software esté utilizada. El ECU
encajó el software ahora desarrollado en los compiladores C del anuncio del uso
de Delphi.
Recopiladores continuados
• Prueba patrón Modula-2 para Amiga
• Borland Turbo Modula-2 para CP/M (abandonware)
• Borland Turbo Modula-2 para el MS-DOS (vendido a Jensen y a los socios,
se convirtió TopSpeed Modula-2)
• Logitech tenía una serie de los recopiladores Modula-2
• M2S para Amiga
• Arroyo pedregoso Modula-2
16
17. • TDI Modula-2 para Amiga y Atari ST
• Modula Corporation tenía una serie de los recopiladores Modula-2 para MS-
DOS (M2M-PC), Apple II y Macintosh
5.5.- COMPILADORES PARA BASIC
El lenguaje BASIC fue creado en 1964 por los norteamericanos John Kemeny y
Thomas Kurtz, en el Dartmouth College. Su intención era diseñar un lenguaje
adecuado para principiantes. No tenía, por tanto, pretensiones de gran potencia,
pero era fácil de aprender y permitía abordar pronto pequeños proyectos. BASIC
son las iniciales de Beginner's All-purpose Symbolic Instruction Code.
El BASIC tuvo una gran expansión en los años 80, cuando se impuso como
lenguaje estándar para los microordenadores domésticos de ocho bits. Se usó
ampliamente en la enseñanza y también en la programación profesional. Sin
embargo, era un lenguaje poco estructurado y recibió muchas críticas por
promover malos hábitos de programación. Pero en lugar de desaparecer, fueron
surgiendo versiones nuevas con características más avanzadas. Aún hoy, Visual
Basic y su sucesor, Visual Basic .NET (aunque son variantes ya muy alejadas del
original) son lenguajes de programación muy usados en entorno Windows.
• ACE es un compilador de BASIC para ordenadores Amiga que produce código
fuente ensamblador 68000. Se puede bajar de aminet.
• Alvyn es un intérprete BASIC multiplataforma compatible con AMOS Professional.
La página oficial indica un estado de desarrollo del 40%. Actualmente sólo se
puede descargar una versión de desarrollo para Linux.
• AMOS y STOS fueron exitosas versiones comerciales de BASIC para la creación
de juegos en los ordenadores Amiga y Atari ST. Clickteam (uno de cuyos
fundadores es el autor de AMOS y STOS) distribuye ahora libremente el código
fuente en ensamblador 68000. También permite la distribución de los disquetes
originales de AMOS en forma de ficheros, principalmente dirigidos a la emulación.
• LithiumBasic es un lenguaje tipo Basic para Windows 95/98 ideal para novatos
por su sencillez. Incluye un entorno integrado bastante completo. El sitio oficial
desapareció pero se puede bajar de la página de THE BASICs PAGE
anteriormente enlazada.
• MBasic (de Franck Charlet) es un intérprete para la consola de Windows hecho a
partir de MINI-BASIC (de Sylvain Bizoirre), el cual, a su vez, es una adaptación de
Palo Alto 8080 TINY BASIC (de Li-Chen Wang). Se distribuye también el código
fuente en ensamblador.
• MediaBASIC es un entorno de programación para Windows similar a Visual Basic.
Su desarrollo se detuvo en estado alfa y la página oficial hace tiempo que no
funciona.
• MINI-BASIC, de Sylvain Bizoirre, es un intérprete muy simple para la consola de
Windows basado en Palo Alto 8080 TINY BASIC (de Li-Chen Wang). Se
suministra el ejecutable y el código en ensamblador para MASM32.
• Mole Basic (de Remco Schellekens) es un pequeño intérprete Basic basado en
flex y yacc para Linux y otros sistemas. Se distribuye también el código fuente.
17
18. • Mono es una plataforma de desarrollo libre, patrocinada por Novell, compatible
con .NET de Microsoft. Incluye soporte para bastantes lenguajes de programación,
Visual Basic .NET entre ellos. Funciona en Windows, Mac OS X, Solaris y distintas
versiones de Linux.
• Profan es un lenguaje para Windows con sintaxis tipo Basic, pero con
características de otros lenguajes, como Pascal y dBase III. Creo que la versión
actual es de pago y las antiguas son gratis. Aunque las versiones originales están
en alemán, hay una versión (muy antigua) completamente traducida al inglés y
parches para traducir otras posteriores.
• uBASIC, de Adam Dunkels, es un intérprete de BASIC muy simple y pequeño
creado para servir como lenguaje de script sencillo para aplicaciones con
limitaciones importantes de memoria. Se distribuye el código fuente en C.
• Visual Studio Express es una versión limitada y gratuita del más importante
entorno de programación de Microsoft, para la plataforma .NET. Incluye soporte
para bastantes lenguajes de programación, Visual Basic .NET entre ellos. Para
Windows.
• Visualwindows es un entorno de programación para Windows parecido a Visual
Basic. Debido a la imposibilidad de seguir manteniéndolo y dando soporte a los
usuarios, el autor decidió distribuirlo gratuitamente. La página oficial dejó de
funcionar pero se puede bajar una copia (y leer la reseña) del sitio THE BASICs
PAGE.
• VPBasicFREE (de Ricardo Ponce) es un intérprete y compilador para Windows
dirigido a principiantes. Incluye entorno integrado y documentación en inglés y
español. Existe una versión superior de pago.
• wxBasic (de David Cuny) es un intérprete de Basic estructurado para Linux
(usando controles GTK) y Windows (usando controles nativos), escrito en C y la
biblioteca wxWindows. Su sintaxis es parecida a QBasic. Se distribuyen
ejecutables y código fuente.
• X11-Basic es un intérprete Basic con sintaxis similar al GFA-Basic de Atari-ST y
gráficos para el sistema X Window. Funciona en varios tipos de Unix con
X Window (incluyendo Linux, MacOS X y Windows con Cygwin). También hay una
versión Windows pero está incompleta (no funcionan los gráficos).
• XBasic es un moderno Basic estructurado con un completo entorno de
programación. Hay versiones para Windows y Linux y está disponible el código
fuente.
• XBLite, de David Szafranski, es un compilador para Windows basado en XBasic.
Incluye bastantes mejoras, como más velocidad y controles nativos. Se distribuye
con licencias GPL y LGPL.
• XST 2 es un lenguaje para Windows orientado a videojuegos que incluye un
entorno de desarrollo, un intérprete rápido (también produce ejecutables) y un
traductor a código C (compilable con Visual C 6).
• Yabasic (de Marc-Oliver Ihm) es un intérprete tradicional de BASIC con algunas
mejoras, como subrutinas y bibliotecas. También contiene algunas facilidades
gráficas simples. Funciona en Unix y Windows. Hay también una versión para la
PlayStation 2 que viene en un disco con la videoconsola. Entre otros…
Los ocho principios que rigeron el diseño de BASIC fueron:
1. Ser fácil de usar para los principiantes.
18
19. 2. Ser un lenguaje de propósito general (no orientado).
3. Permitir a los expertos añadir características avanzadas, conservando simple el
lenguaje para los principiantes.
4. Ser interactivo.
5. Proveer mensajes de error claros y amigables.
6. Responder rápido en los programas pequeños.
7. No requerir un conocimiento del hardware de la computadora.
8. Proteger al usuario del sistema operativo.
El lenguaje fue en parte basado en FORTRAN II y parte en Algol 60, con adiciones
para hacerlo apropiado en sistemas de tiempo compartido y con elementos que
facilitaran la operación aritmética de matrices. BASIC fue implementado por
primera vez para la mainframe GE-265, máquina que soportaba múltiples
terminales.
Contrario a la creencia popular, BASIC inicialmente no era un lenguaje
interpretado sino compilado. Casi inmediatamente después de su lanzamiento, los
profesionales de computación comenzaron a alegar que BASIC era muy lento y
simple. Tal argumento, hasta no hace mucho, fue un tema recurrente en la
industria de las computadoras.
Aun así, BASIC se extendió hacia muchas máquinas y plataformas, y se
popularizó moderadamente en las minicomputadoras como las de la serie DEC
PDP y la Data General Nova. En estos casos, el lenguaje era implementado como
intérprete, en vez de un compilador, o alternativamente, en ambas formas de
funcionamiento.
Madurez
En este período se crearon versiones de BASIC nuevas y más poderosas.
Microsoft vendió varias versiones de BASIC para MS-DOS/PC-DOS, incluyendo
BASICA, GW-BASIC (una versión compatible con BASICA que no necesitaba la
ROM de IBM), y Quick BASIC. El fabricante de Turbo Pascal, Borland, publicó
Turbo BASIC 1.0 en 1985 (versiones sucesoras aún se venden bajo el nombre de
PowerBASIC por otra compañía). Aparecieron varias extensiones de BASIC para
computadores caseros, típicamente con capacidad para gráficos, sonido, y
comandos DOS, así como facilidades para Programación estructurada. Hubo
lenguajes que usaron la sintaxis de BASIC como base para otros sistemas
totalmente diferentes, por ejemplo GRASS.
Sin embargo a finales de la década de 1980 las computadoras nuevas eran mucho
más complejas, e incluían características (como la Interfaz gráfica de usuario) que
hacían a BASIC menos apropiado para programarlas. Al mismo tiempo las
computadoras progresaban de ser interés para aficionados a herramientas usadas
principalmente para ejecutar aplicaciones escritas por otros, y la programación en
sí se fue haciendo menos importante para una creciente mayoría de usuarios.
19
20. BASIC comenzó a desvanecerse, aunque numerosas versiones aún estaban
disponibles.
La suerte de BASIC dio un giro nuevamente con la introducción de Visual Basic de
Microsoft. Si bien este lenguaje utiliza prácticamente todas las palabras clave
(sentencias, estructuras de control y funciones intrínsecas) y forma de manejo y
tipo de datos que versiones BASIC anteriores (DOS); VB es abismalmente más
potente y evolucionado; y se ha convertido en uno de los lenguajes más utilizados
en la plataforma Windows; se estima que entre el 70 y el 80% del total de
aplicaciones comerciales son programadas en VB. A partir de 2002, y con la
introducción de la plataforma .NET Framework de Microsoft, VB comienza a
utilizar el paradigma "orientado a objetos", aumentando la potencia del lenguaje y
haciéndolo multiplataforma. Visual Basic for Applications (VBA) fue añadido a
Microsoft Excel 5.0 en 1993 y al resto de la línea de productos de Microsoft Office
en 1997. Windows 98 incluyó un intérprete de VBScript. La versión más reciente
de Visual Basic es llamada VB.NET. Por otra parte, también existe la variante
OpenOffice.org Basic menos poderosa pero similar a VBA de Microsoft.
El Lenguaje 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:
20
21. • 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.
21
22. 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.
Tipos de Datos
BASIC es reconocido por tener muy buenas funciones para manipular cadenas de
caracteres. Los primeros dialectos ya tenían un juego de funciones fundamentales
(LEFT$, MID$, RIGHT$) para extraer y/o reemplazar subcadenas cadenas
fácilmente. Como las cadenas son utilizadas en aplicaciones diarias, esta era una
ventaja considerable sobre otros lenguajes al momento de su introducción.
El Dartmouth BASIC original soportaba únicamente datos de tipo numérico y
cadenas. No había un tipo entero. Todas las variables numéricas eran de punto
flotante. Las cadenas eran de tamaño dinámico. Soportaba arreglos de ambos,
números y cadenas, en una o dos dimensiones.
Cada dialecto moderno de BASIC posee al menos los tipos de datos numérico y
string (cadena). Estos tipos de datos se pueden distinguir usando un posfijo: los
identificadores de cadenas terminan con $ (signo pesos, ejemplo la variable
NOMBRE$), mientras que los numéricos sencillamente no llevan posfijo; a menos
que se requiera indicar y forzar explícitamente qué tipo de numérico es, por
ejemplo A% es entero, A! es real simple precisión y A# es real doble precisión.
En BASIC las variables no necesitan forzosamente ser declaradas antes de
usarse, excepto los arreglos de más de 10 elementos; aunque versiones BASIC
relativamente modernas poseen la opción (considerada buena práctica de
programación) para obligar al programador a declarar toda variable antes de su
uso (una directiva como OPTION EXPLICIT). La declaración de variables en
BASIC se hace usando la palabra clave DIM.
Muchos dialectos también soportan tipos numéricos adicionales, como enteros de
16 y 32 bits (simple y long, respectivamente), además de sus números de punto
flotante. Adicionalmente algunos permiten la utilización de tipos de datos definidos
por el usuario, similar a los "records" de Pascal, o las "structs" de C.
Versiones modernas de BASIC (como VBA) soportan una gran variedad de tipos
de datos primitivos (o intrínsecos), además de los definidos por el usuario.
22
23. La mayoría de los dialectos de BASIC soporta arreglos en todos sus tipos de
datos; es común también el soporte para arreglos mulidimensionales.
Ejemplos:
DIM MatrizDeEnteros(100,100) AS INTEGER
DIM VectorDeEnteros%(30)
DIM ListaDeNombres(50) AS STRING
DIM ListaDeCiudades$(50)
Dependiendo del dialecto de BASIC y del uso del enunciado OPTION BASE, el
primer índice de los arreglos que se declaren será 1, por defecto es cero.
En los ejemplos anteriores, si no se declara previamente "OPTION BASE 1", el
primero es un arreglo en dos dimensiones de enteros 16 bits, con índices que van
desde 0 hasta 100 (matriz de 101 x 101 elementos); en tanto que el segundo es
un arreglo de enteros en una sola dimensión, de 0 a 30 (vector de 31 elementos).
Observar que las dos formas de declaración de enteros son equivalentes,
explicitándolo o con el uso del posfijo %. Análogamente para cadenas o string de
caracteres, que en este caso además son de longitud variable (dinámicas, por
defecto).
Disponibilidad y variantes del lenguaje
BASIC está disponible para casi todas las plataformas y sistemas operativos
existentes. Una implementación gratuita que cumple con estándares y es
multiplataforma es Bywater BASIC (bwBASIC). El intérprete está escrito en C y
viene bajo la licencia GNU. Está diseñado para interfaz de texto o consola (no
gráfica), no incluye soporte para crear interfaces gráficas de usuario (GUI's,
Graphical User Interface). Hay un BASIC gratuito que si incluye soporte para GUI,
es similar a Visual Basic y se ejecuta en Windows y GNU/Linux, es Phoenix Object
BASIC.
Las versiones de intérpretes/compiladores más conocidos son la línea de
productos Quick BASIC y QBASIC, éste último es sólo intérprete, ambos son de
Microsoft. En la actualidad lo es el moderno Visual BASIC, que Microsoft ha
tratado de mantener al menos mínimamente compatible con incluso las primeras
versiones de sus BASIC (en realidad es escasamente compatible).
Otras versiones incluyen PowerBASIC de PowerBASIC, así como TrueBASIC de
TrueBASIC, que cumple con los últimos estándares oficiales de BASIC. (True
BASIC Inc. fue fundada por los creadores originales de Dartmouth BASIC.)
REALbasic es una variante disponible para Mac OS Classic, Mac OS X, Microsoft
Windows y GNU/Linux. Una versión de un dialecto simple de BASIC para la parrot
23
24. virtual machine, muestra como se implementa un intérprete de BASIC en un
lenguaje similar al ensamblador. SmallBASIC es un dialecto que ejecuta en
muchas plataformas (Win32, DOS, GNU/Linux y PalmOS) y viene bajo la licencia
GNU (GPL).
FreeBASIC es un compilador libre, compatible en sintaxis con QuickBASIC.
Ejemplos de código fuente
Ejemplo 1: Simple Saludo
PRINT "Hola mundo"
Ejemplo 2: BASIC original no estructurado (Applesoft BASIC)
10 INPUT "Cuál es su nombre:"; NN$
20 PRINT "Bienvenido al 'asterisquero' ";NN$
25 PRINT
30 INPUT "con cuántos astericos inicia [Cero sale]:"; N
40 IF N<=0 THEN GOTO 200
50 AS$=""
60 FOR I=1 TO N
70 AS$=AS$+"*"
80 NEXT I
90 PRINT "AQUI ESTAN:"; AS$
100 INPUT "Desea más asteriscos:";SN$
110 IF SN$="" THEN GOTO 100
120 IF SN$<>"S" AND SN$<>"s" THEN GOTO 200
130 INPUT "CUANTAS VECES DESEA REPETIRLOS [Cero sale]:"; VECES
140 IF VECES<=0 THEN GOTO 200
150 FOR I=1 TO VECES
160 PRINT AS$;
170 NEXT I
180 PRINT
185 REM A repetir todo el ciclo (comentario)
190 GOTO 25
200 END
BIBLIOGRFIA
• K. N. Rey, Modula-2, un texto comprensivo y claramente escrito, continuamente en
la impresión por ahora cerca de dos décadas, ISBN 0-669-11091-4
• Richard J. Sutcliffe, “Modula-2: Abstracciones para los datos y las estructuras de
programación, “(con Modula-2 ISO-Estándar) edición 2004-2005
24