{"id":16675788,"url":"https://github.com/alphp/qbasm","last_synced_at":"2026-03-16T21:32:15.278Z","repository":{"id":85444283,"uuid":"272077712","full_name":"alphp/QBASM","owner":"alphp","description":"Utilidad para compilar pseudocódigo a QBasic","archived":false,"fork":false,"pushed_at":"2020-06-13T20:03:46.000Z","size":7,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-01-19T21:49:38.965Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"VBA","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-3-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/alphp.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2020-06-13T20:03:39.000Z","updated_at":"2020-06-13T20:03:48.000Z","dependencies_parsed_at":"2023-03-13T05:18:11.383Z","dependency_job_id":null,"html_url":"https://github.com/alphp/QBASM","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alphp%2FQBASM","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alphp%2FQBASM/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alphp%2FQBASM/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alphp%2FQBASM/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/alphp","download_url":"https://codeload.github.com/alphp/QBASM/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243339398,"owners_count":20275676,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-10-12T13:07:44.212Z","updated_at":"2025-12-28T01:29:15.066Z","avatar_url":"https://github.com/alphp.png","language":"VBA","funding_links":[],"categories":[],"sub_categories":[],"readme":"# QBASM\n Utilidad para compilar pseudocódigo a QBasic\n\n## Directivas del pseudocódigo\n- TODAS las palabras clave iran en MAYUSCULAS (ENTRAR y no Entrar).\n- TODOS los nombres de funciones de usuario indicaran mediante el sufijo correspondiente el tipo de dato que devuelven (PedirNombre$, PedirTelefono\u0026).\n- En instrucciones del tipo VISUALIZAR los argumentos iran separados por punto y coma (;) y no por coma (,) (VISUALIZAR \"N =\";Num;\" es primo\").\n- Las cadenas iran encerradas con comillas (\").\n- Cada linea de comentario comenzara con apostrofe (').\n- 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).\n- NUNCA se utilizara la Ñ en nombres de variables, constantes, funciones o procedimientos (Año, BAÑOS --\u003e nombres no válidos).\n- NUNCA se separara el primer parentesis del último caracter de las funciones predefinidas (COS(x) y no COS (x)).\n\nSolo respetando estas directivas se podrá conseguir la máxima compilación posible, lo que significa el mínimo trabajo poscompilación.\n\n## Pseudocódigo\nLos corchetes ([]) indican elementos opcionales, \\\u003cexpr\u003e indica una expresión, \\\u003cInstrucciones\u003e indica un bloque de instrucciones (puede dejarse vacio), \\| indica elección (una u otra opción), \\\u003ccont\u003e indica una variable contador y las llaves ({}) indican aclaraciones.\n\n#### Tipos de datos:\n\n|Tipo     | Suf | Rango                                         |\n|---------|-----|-----------------------------------------------|\n|NATURAL  | (\u0026) | ± 2.147.483.647 (4b)                          |\n|ENTERO   | (\u0026) | ± 2.147.483.647 (4b)                          |\n|REAL     | (#) | ± 1,79769313486236E+308 a ± 4,94065E-324 (8b) |\n|CADENA   | ($) | Hasta 32.767 caracteres (6b + NumCar b)       |\n|CARACTER | ($) | 1 Caracter (7b)                               |\n|LOGICO   | (%) | V = -1; F = 0 (2b)                            |\n\n#### Declaración de tipos:\n      DECLARAR [GLOBAL] nomvar[(n HASTA m)] COMO tipo\n{GLOBAL hace que una variable sea común a todo el programa, por defecto todas las variables son locales}\n\n#### Declaración de registros:\n      TIPO nomreg\n          nomvar COMO tipo\n          nomvar COMO tipo\n      FINTIPO\n\n#### Declaración de procedimientos:\n      ACCION nomacc [(nomvar COMO tipo [, nomvar COMO tipo])]\n          \u003cInstrucciones\u003e\n          [TERMINAR ACCION]\n          \u003cInstrucciones\u003e\n      FINACCION\n\n#### Declaración de funciones:\n      FUNCION nomfun [(nomvar COMO tipo [, nomvar COMO tipo])]\n          \u003cInstrucciones\u003e\n          nomfun = \u003cexpr\u003e\n          [TERMINAR FUNCION]\n          \u003cInstrucciones\u003e\n      FINFUNCION\n\n#### Asignación:\n      nomvar \u003c-- valor\n\n#### Operadores lógicos:\n       Y, O y NO\n\n#### Operadores aritméticos:\n  - Suma, resta (o negación): +, -\n  - Multiplicación, División: *, /\n  - Exponenciación: ^\n  - División entera: DIV\n  - Módulo (resto): MOD\n\n#### Instrucciones de control:\n  - TERMINAR\n  - FIN\n  - IRA\n  - IRASUBRUTINA\n\n#### Estructuras iterativas:\n  - Bucle:\n\n        ITERAR [MIENTRAS | HASTAQUE \u003cexpr\u003e]\n            \u003cIntrucciones\u003e\n            [SI \u003cexpr\u003e ENTONCES TERMINAR ITERAR]\n            \u003cInstrucciones\u003e\n        FINITERAR [MIENTRAS | HASTAQUE \u003cexpr\u003e]\n    {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}\n\n  - Bucle MIENTRAS:\n\n        MIENTRAS \u003cexpr\u003e\n            \u003cInstrucciones\u003e\n            [SI \u003cexpr\u003e ENTONCES TERMINAR MIENTRAS]\n            \u003cInstrucciones\u003e\n        FINMIENTRAS\n\n  - Bucle PARA:\n\n        PARA \u003ccont\u003e \u003c-- \u003cexpr\u003e HASTA \u003cexpr\u003e [INCREMENTO \u003cexpr\u003e]\n            \u003cInstrucciones\u003e\n            [SI \u003cexpr\u003e ENTONCES TERMINAR PARA]\n        FINPARA [\u003ccont\u003e]\n  {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}\n\n#### Estructuras alternativas:\n  - Alternativa simple/doble:\n\n        SI \u003cexpr\u003e ENTONCES\n            \u003cInstrucciones\u003e\n        [SINO]\n            \u003cInstrucciones\u003e\n        FINSI\n\n  - Alternativa múltiple:\n\n        CASO \u003cespr\u003e ENTONCES\n            \u003cInstrucciones\u003e\n        [ENOTROCASOSI \u003cexpr\u003e ENTONCES]\n            \u003cInstrucciones\u003e\n        ENOTROCASO\n            \u003cInstrucciones\u003e\n        FINCASO\n\n  - Alternativa múltiple ENCASODE:\n\n        ENCASODE \u003cespr\u003e\n            SEA \u003cespr\u003e\n                \u003cInstrucciones\u003e\n            [SEA \u003cespr\u003e]\n                \u003cInstrucciones\u003e\n            SEAOTROCASO\n                \u003cInstrucciones\u003e\n        FINENCASODE\n      {SEAOTROCASO es opcional, pero se recomienda indicarla siempre}\n\n#### Funciones:\n- ABS, función\n  - Propósito:\n    Devolver el valor absoluto de la expresión n.\n  - Sintaxis:\n\n          ABS(n)\n  - Comentarios:\n    n tiene que ser una expresión numérica.\n\n- ASC, función\n  - Propósito:\n    Devolver el valor numérico correspondiente al código ASCII del primer carácter de la cadena x\\$.\n  - Sintaxis:\n\n        ASC(x$)\n  - Comentarios:\n    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.\n\n- ATN, función\n  - Propósito:\n    Devolver la arcotangente de x, con x expresado en radianes.\n  - Sintaxis:\n\n        ATN(x)\n  - Comentarios:\n    El resultado está en el intervalo -PI/2 a PI/2.\n\n- PITA, instrucción\n  - Propósito:\n    Generar un sonido en el altavoz a 800 Hz durante 0.25 segundos.\n  - Sintaxis:\n        BEEP\n  - Comentarios:\n    PITA, Ctrl-G y VISUALIZA CAR(7) producen el mismo efecto.\n\n- CARGA_BYTE, comando\n  - Propósito:\n    Cargar un fichero imagen en una zona cualquiera de la memoria de usuario.\n  - Sintaxis:\n\n        CARGA_BYTE nomfich[,despl]\n  - Comentarios:\n    - nomfich es una expresión de cadena válida que contiene el dispositivo y el nombre de fichero.\n    - 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.\n    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ó.\n\n- SALVA_BYTE, comando\n  - Propósito:\n    Grabar zonas de la memoria de usuario en el dispositivo especificado.\n  - Sintaxis:\n\n        SALVA_BYTE nomfich,despl,lon\n  - Comentarios:\n    - nomfich es una expresión de cadena válida que contiene el nombre del fichero.\n    - 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.\n    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.\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.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Falphp%2Fqbasm","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Falphp%2Fqbasm","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Falphp%2Fqbasm/lists"}