viernes, 14 de octubre de 2011

LENGUAJE BASIC


BASIC




En la programación de computadoras, el BASIC, siglas de Beginner's All-purpose Symbolic InstructionCode, es una familia de lenguajes de programación dealto nivel. El BASIC original, el Dartmouth BASIC, fue diseñado en 1964 por John George Kemeny y Thomas Eugene Kurtz en el Dartmouth College en New HampshireUSA, como un medio para facilitar programar computadores a estudiantes (y profesores) que no fueran de ciencias. En ese tiempo, casi todo el uso de los computadores requería codificar software hecho a la medida, lo cual era algo bastante restringido a personas con formación como científicosmatemáticos. BASIC originalmente fue desarrollado como una herramienta de enseñanza. El lenguaje y sus variantes llegaron a estar ampliamente disponibles en los microcomputadores a finales de los años 1970 y en los años 1980. El BASIC sigue siendo popular hasta el día de hoy en un puñado de dialectos altamente modificados, y en nuevos lenguajes, influenciados por BASIC tales comoMicrosoft Visual Basic o Gambas en Gnu/Linux. Por el año 2006, el 59% de los desarrolladores para la plataforma .NET usaban Visual Basic .NET como su único lenguaje




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:
  • 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 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.
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 yQBASIC, é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), si bien existeFreeBASIC que es un compilador libre, compatible en sintaxis con QBASIC/QuickBASIC.
Otras versiones comerciales incluyen PowerBASIC de PowerBASIC, PureBasic de Fantaisie Software, 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, comercializada por los actuales propietarios de Rapid-Q, otra implementación inicialmente libre de BASIC actualmente abandonada. Una versión de un dialecto simple de BASIC para la parrot virtual machine, muestra cómo 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).
Existen muchas implementaciones de BASIC freeware o GNU, como BCXYaBasicHBasicXBasic,Gambas o Just BASIC, entre otras.

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 asteriscos 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
DEFINT I-N 'Declara entera toda variable que comience con letras I a N

Ejemplo 3: Equivalente en BASIC estructurado (Quick BASIC)

   iTrue = -1        'Flag en Verdadero
   INPUT "¿Cuál es su nombre"; NombreUsuario$
   PRINT "Bievenido al 'asterisquero',"; NombreUsuario$
   DO
      PRINT
      INPUT "¿Con cuántos asteriscos inicia [Cero sale]:"; NroAsteriscos
      IF NroAsteriscos<=0 THEN EXIT DO
      Asteriscos$ = ""
      FOR I=1 TO NroAsteriscos
         Asteriscos$=Asteriscos$ + "*"
      NEXT I
      PRINT "AQUI ESTAN: "; Asteriscos$
      DO
         INPUT "Desea más asteriscos:";SN$
      LOOP UNTIL SN$<>""
      IF SN$<>"S" AND SN$<>"s" THEN EXIT DO      'Salida
      INPUT "CUANTAS VECES DESEA REPETIRLOS [Cero sale]:";iVeces
      IF iVeces<=0 THEN EXIT DO    'Salida
      FOR I = 1 TO iVeces
         PRINT Asteriscos$;
      NEXT I
      PRINT
   LOOP WHILE iTrue
   END







FUENTE: WIKI

No hay comentarios:

Publicar un comentario

HAZ TUS PUBLICACIONES AQUI

Hemos Evolucionado...

Ahora puedes dar aportaciones de temas nuevos, añadir imágenes, dar tus opiniones o aportar un tema nuevo solo sigue los pasos que indica el formulario y listo ....

gracias por su aportación

Powered byEMF HTML Form
Report Abuse