https://github.com/alphp/qbasm
Utilidad para compilar pseudocódigo a QBasic
https://github.com/alphp/qbasm
Last synced: 2 months ago
JSON representation
Utilidad para compilar pseudocódigo a QBasic
- Host: GitHub
- URL: https://github.com/alphp/qbasm
- Owner: alphp
- License: bsd-3-clause
- Created: 2020-06-13T20:03:39.000Z (over 5 years ago)
- Default Branch: master
- Last Pushed: 2020-06-13T20:03:46.000Z (over 5 years ago)
- Last Synced: 2025-01-19T21:49:38.965Z (about 1 year ago)
- Language: VBA
- Size: 6.84 KB
- Stars: 0
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# QBASM
Utilidad para compilar pseudocódigo a QBasic
## Directivas del pseudocódigo
- TODAS las palabras clave iran en MAYUSCULAS (ENTRAR y no Entrar).
- TODOS los nombres de funciones de usuario indicaran mediante el sufijo correspondiente el tipo de dato que devuelven (PedirNombre$, PedirTelefono&).
- En instrucciones del tipo VISUALIZAR los argumentos iran separados por punto y coma (;) y no por coma (,) (VISUALIZAR "N =";Num;" es primo").
- Las cadenas iran encerradas con comillas (").
- Cada linea de comentario comenzara con apostrofe (').
- NUNCA se acentuaran las palabras reservadas o los nombres de las variables, constantes, funciones o subprocedimientos (LOGICO y no LÓGICO, ultimo y no último).
- NUNCA se utilizara la Ñ en nombres de variables, constantes, funciones o procedimientos (Año, BAÑOS --> nombres no válidos).
- NUNCA se separara el primer parentesis del último caracter de las funciones predefinidas (COS(x) y no COS (x)).
Solo respetando estas directivas se podrá conseguir la máxima compilación posible, lo que significa el mínimo trabajo poscompilación.
## Pseudocódigo
Los corchetes ([]) indican elementos opcionales, \ indica una expresión, \ indica un bloque de instrucciones (puede dejarse vacio), \| indica elección (una u otra opción), \ indica una variable contador y las llaves ({}) indican aclaraciones.
#### Tipos de datos:
|Tipo | Suf | Rango |
|---------|-----|-----------------------------------------------|
|NATURAL | (&) | ± 2.147.483.647 (4b) |
|ENTERO | (&) | ± 2.147.483.647 (4b) |
|REAL | (#) | ± 1,79769313486236E+308 a ± 4,94065E-324 (8b) |
|CADENA | ($) | Hasta 32.767 caracteres (6b + NumCar b) |
|CARACTER | ($) | 1 Caracter (7b) |
|LOGICO | (%) | V = -1; F = 0 (2b) |
#### Declaración de tipos:
DECLARAR [GLOBAL] nomvar[(n HASTA m)] COMO tipo
{GLOBAL hace que una variable sea común a todo el programa, por defecto todas las variables son locales}
#### Declaración de registros:
TIPO nomreg
nomvar COMO tipo
nomvar COMO tipo
FINTIPO
#### Declaración de procedimientos:
ACCION nomacc [(nomvar COMO tipo [, nomvar COMO tipo])]
[TERMINAR ACCION]
FINACCION
#### Declaración de funciones:
FUNCION nomfun [(nomvar COMO tipo [, nomvar COMO tipo])]
nomfun =
[TERMINAR FUNCION]
FINFUNCION
#### Asignación:
nomvar <-- valor
#### Operadores lógicos:
Y, O y NO
#### Operadores aritméticos:
- Suma, resta (o negación): +, -
- Multiplicación, División: *, /
- Exponenciación: ^
- División entera: DIV
- Módulo (resto): MOD
#### Instrucciones de control:
- TERMINAR
- FIN
- IRA
- IRASUBRUTINA
#### Estructuras iterativas:
- Bucle:
ITERAR [MIENTRAS | HASTAQUE ]
[SI ENTONCES TERMINAR ITERAR]
FINITERAR [MIENTRAS | HASTAQUE ]
{La salida del bucle se realizara al principio del mismo o al final, pero no se pueden elegir ambos tipos de salida al mismo tiempo}
- Bucle MIENTRAS:
MIENTRAS
[SI ENTONCES TERMINAR MIENTRAS]
FINMIENTRAS
- Bucle PARA:
PARA <-- HASTA [INCREMENTO ]
[SI ENTONCES TERMINAR PARA]
FINPARA []
{La variable contador del final del bucle es la misma del inicio del bucle, se puede indicar al final para obtener un pseudocódigo más legible}
#### Estructuras alternativas:
- Alternativa simple/doble:
SI ENTONCES
[SINO]
FINSI
- Alternativa múltiple:
CASO ENTONCES
[ENOTROCASOSI ENTONCES]
ENOTROCASO
FINCASO
- Alternativa múltiple ENCASODE:
ENCASODE
SEA
[SEA ]
SEAOTROCASO
FINENCASODE
{SEAOTROCASO es opcional, pero se recomienda indicarla siempre}
#### Funciones:
- ABS, función
- Propósito:
Devolver el valor absoluto de la expresión n.
- Sintaxis:
ABS(n)
- Comentarios:
n tiene que ser una expresión numérica.
- ASC, función
- Propósito:
Devolver el valor numérico correspondiente al código ASCII del primer carácter de la cadena x\$.
- Sintaxis:
ASC(x$)
- Comentarios:
Si x\$ es nulo, se devuelve el error "Llamada ilegal a función". Véase la función CAR para la conversión recíproca de ASCII a cadena.
- ATN, función
- Propósito:
Devolver la arcotangente de x, con x expresado en radianes.
- Sintaxis:
ATN(x)
- Comentarios:
El resultado está en el intervalo -PI/2 a PI/2.
- PITA, instrucción
- Propósito:
Generar un sonido en el altavoz a 800 Hz durante 0.25 segundos.
- Sintaxis:
BEEP
- Comentarios:
PITA, Ctrl-G y VISUALIZA CAR(7) producen el mismo efecto.
- CARGA_BYTE, comando
- Propósito:
Cargar un fichero imagen en una zona cualquiera de la memoria de usuario.
- Sintaxis:
CARGA_BYTE nomfich[,despl]
- Comentarios:
- nomfich es una expresión de cadena válida que contiene el dispositivo y el nombre de fichero.
- despl es una expresión numérica válida comprendida en el intervalo de 0 a 65,535. Este es el desplazamiento relativo el segmento declarado en la última instrucción DEFINE_SEGMENTO, donde se comenzará a cargar el fichero.
Si se omite el desplazamiento, se asume el desplazamiento especificado en SALVA_BYTE, esto es, el fichero se carga en la misma dirección en la que se grabó.
- SALVA_BYTE, comando
- Propósito:
Grabar zonas de la memoria de usuario en el dispositivo especificado.
- Sintaxis:
SALVA_BYTE nomfich,despl,lon
- Comentarios:
- nomfich es una expresión de cadena válida que contiene el nombre del fichero.
- despl es una expresión numérica válida comprendida en el intervalo de 0 a 65,535. Este es el desplazamiento relativo el segmento declarado en la última instrucción DEFINE_SEGMENTO, donde se comenzará a grabar el fichero.
Se debe ejecutar una intrucción DEFINE_SEGMENTO antes de SALVA_BYTE, ya que siempre se utiliza la última dirección de esta instrucción para la grabación.
- lon es una expresión numérica válida en el intervalo de 0 a 65,535 que especifica la longitud de la imagen de memoria que se va a grabar.