XBasic

De Wikipedia, la enciclopedia libre

Xbasic es un entorno de programación gratuito basado en BASIC, para Windows y GNU/Linux. Admite modos de consola y de GUI. Xbasic fue ideado en 1988 por Max Reason para su uso en un entorno Unix/m88k, y adaptado a Windows NT desde 1992. Xbasic es freeware desde 1999.


Diferencias con BASIC estándar, QBASIC y Visual Basic[editar]

Sintaxis[editar]

  1. Xbasic es un Lenguaje de programación estructurado y no usa números de línea. Se aceptan características típicas del basic, como los sufijos de tipo de datos (que se amplían enormemente), pero se evita la verbosidad de instrucciones BASIC como "OPEN ... FOR ... AS ..." en favor de un esquema basado en funciones.
  2. Los programas Xbasic se dividen en tres secciones, al estilo de los programas Pascal: "PROLOG" (declaración de tipos), "Entry()" (función principal) y funciones adicionales.

Variables[editar]

  • A diferencia de ANSI BASIC, pero dentro de lo que es habitual en los BASIC actuales, se aceptan variables con nombres de cualquier longitud.
  • Las constantes se identifican mediante el prefijo "$$"
  • Se

Operadores[editar]

  • A diferencia de ANSI BASIC, QBASIC o Visual Basic, Xbasic posee operadores de desplazamiento para la aritmética binaria, lo que permite mayor compatibilidad con programación a nivel binario, como el cálculo de CRC. También distingue entre operadores lógicos y operadores de aritmética binaria.
  • Xbasic utiliza operadores similares a los del lenguaje C:
    • "**" significa "elevado a"
    • "^" es sinónimo de XOR (no significa "elevado a").
    • "&" es sinónimo de AND (no significa "concatenar").
    • "=" no se usa en las cláusulas IF (o, al menos, eso se supone).
    • "==" se usa (en lugar de "=") en las cláusulas IF

Ramificación y subrutinas[editar]

  • Xbasic, como QBASIC y posteriores, es un lenguaje de programación estructurado.
  • Permite SELECT, DO, DO WHILE y DO UNTIL aparte de GOTO
  • Permite declaraciones de funciones mediante FUNCTION() aparte de GOSUB. A diferencia de QBASIC o Visual Basic, no diferencia entre funciones (que producen una salida) y subrutinas (que no la producen).

Instrucciones de entrada/salida[editar]

  • Xbasic usa su propio conjunto de instrucciones de entrada/salida.
  • INLINE$() sustituye a INPUT, INPUT$, e INPUT#
  • INKEY$ e INP() no se permiten.
  • Los números de archivo se indican con [número] (XBasic) en vez de #número (BASICA/QBASIC/Visual Basic).
  • Xbasic usa numeroarchivo=OPEN(nombrearchivo$, constante_modo) en vez de OPEN Nombrearchivo$ FOR modo AS #numeroarchivo (BASICA/QBASIC/Visual Basic).
  • Se usa READ [numeroarchivo] en vez de GET #numeroarchivo ((BASICA/QBASIC/Visual Basic).
  • Aparte de lo anterior, XBASIC admite entornos gráficos, y por tanto puede aceptar entrada/salida a través de eventos generados por controles situados en ventanas, al estilo de Visual Basic

Resumen[editar]

Los siguientes cuadros comparan XBASIC con un Basic original no estructurado, utilizando el programa de ejemplo que aparece en el artículo de la Wikipedia sobre BASIC:

Ejemplo 1: BASIC original no estructurado (Applesoft BASIC)

 10 INPUT "¿Cuál es su nombre? "; U$
 20 PRINT "Hola "; U$
 30 INPUT "¿Cuántos asteriscos desea? "; N
 35 S$ = ""
 40 FOR I = 1 TO N
 50 S$ = S$ + "*"
 55 NEXT I
 60 PRINT S$
 70 INPUT "¿Desea más asteriscos? "; A$
 80 IF LEN(A$) = 0 GOTO 70
 90 A$ = LEFT(A$, 1)
100 IF (A$ = "S") OR (A$ = "s") THEN GOTO 30
110 PRINT "Adiós ";
120 FOR I = 1 TO 200
130 PRINT U$; " ";
140 NEXT I
150 PRINT

Ejemplo 2: XBasic

FUNCTION  Entry ()
    NombreUsuario$=INLINE$( "¿Cuál es su nombre?")
    PRINT "Hola "; NombreUsuario$
    DO
        NoAsteriscos=SBYTE(INLINE$ ("¿Cuántos asteriscos desea?"))
        Asteriscos$ = ""
        Asteriscos$ = CHR$('*', NoAsteriscos)
        PRINT Asteriscos$
        DO
	    Respuesta$=INLINE$ ("¿Desea más asteriscos?")
        LOOP UNTIL Respuesta$ <> ""
    LOOP WHILE UCASE$(LEFT$(Respuesta$, 1)) = "S"
    PRINT "Adiós";
    FOR I = 1 TO 200
        PRINT NombreUsuario$; " ";
    NEXT I
    PRINT
END FUNCTION

Enlaces externos[editar]