QB64
QB64 | |
---|---|
Surgido em | 2007 |
Última versão | (07/11/2021) |
Criado por | Galleon, QB64 Team |
Dialetos | BASIC |
Influenciada por | QuickBASIC, QBasic |
Licença | MIT |
Página oficial | https://www.qb64.com/ |
QB64 (originalmente QB32[1]) é um compilador BASIC auto-hospedado para Microsoft Windows, OS X e Linux, desenhado para ser compatível com o Microsoft QBasic e QuickBASIC. QB64 é um emissor C++, integrado com um compilador C++ que providencia a compilação do código C++ otimizado com GCC.[2]
Essa versão implementa a maioria das expressões do QBasic, e permite executar muitos de seus programas, incluindo os clássicos jogos Gorillas e Nibbles. Além do mais, QB64 foi desenhado para ter um IDE semelhante ao do QBasic. O programa estende a linguagem de programação do QBasic para incluir tipos de dados de 64 bits, assim como melhor suporte a sons e gráficos.
Desde a versão 2.0, o QB64 oferece funções para depurar o código do usuário em tempo real, com o novo metacomando $DEBUG.[3]
História
[editar | editar código-fonte]QB64 foi originalmente compilado com QuickBASIC 4.5. Após um desenvolvimento significativo, Galleon, o programador, teve alguma dificuldade devido aos limites de memória e mudou para o Microsoft BASIC PDS 7.1, que lhe resolveu essa dificuldade durante um curto espaço de tempo. Após a versão 0.63, QB64 adquiriu a capacidade de compilar a si próprio, pelo que o limite da memória convencional já não se aplicava.
Sintaxe
[editar | editar código-fonte]A sintaxe do QB64 é projetada para ser completamente retrocompatível com o QuickBASIC. Números de linha não são obrigatórios, e os comandos são terminados com uma nova linha ou com dois pontos :
.
Um Programa Olá Mundo simples:
PRINT "Olá, mundo!"
Um exemplo da emulação de memória VGA implementada no QB64 para compatibilidade:
CLS
S$ = "Olá, mundo!"
DEF SEG = &HB800 'aponta para a memória de vídeo
FOR I = 1 TO LEN(S$)
POKE 160 + (I - 1) * 2, ASC(MID$(S$, I, 1))'caractere
NEXT
DEF SEG 'redefine o segmento para o padrão
Um exemplo do uso de arquivos de áudio com o QB64:
som& = _SNDOPEN("som.wav") 'WAV, OGG ou MP3
_SNDPLAY som&
Um exemplo do uso de arquivos de imagem com o QB64:
SCREEN _NEWIMAGE(800, 600, 32) 'cria uma tela de 32bit
imagem& = _LOADIMAGE("arquivoDeImagem.png") 'BMP, JPG, PNG, etc.
_PUTIMAGE (0, 0), imagem&
_FREEIMAGE imagem& 'libera a memória utilizada pela imagem
Exemplo de como o QB64 utiliza múltiplos timers:
t1 = _FREETIMER
t2 = _FREETIMER
ON TIMER(t1, 1) GOSUB Timer.Trap 'o código que vem após o label Timer.Trap será executado a cada 1 segundo
ON TIMER(t2, .5) mySub 'QB64 também pode executar uma SUB com TIMER;
' neste caso, mySUB será executada a cada 500 milisegundos
'ativa os timers:
TIMER(t1) ON
TIMER(t2) ON
DO 'entra em loop até a janela ser fechada
_LIMIT 1 'executa o loop em 1 ciclo por segundo, demonstrando que timers não são afetados
LOOP
Timer.Trap:
PRINT "1s; ";
RETURN
SUB mySub
PRINT "500ms; ";
END SUB
Extensões ao QuickBASIC
[editar | editar código-fonte]Os comandos adicionais do QB64 começam por um underscore (traço inferior) de forma a evitar conflitos com nomes já existentes no QuickBASIC. A partir da versão 1.4, o metacomando $NOPREFIX foi introduzido, a fim de que as instruções modernas possam ser utilizadas sem o prefixo (_)[4]. Adicionalmente, novos tipos de dados existem no QB64, incluindo _BIT
, _BYTE
, e _INTEGER64
assim como tipos de dados sem sinal. Os novos tipos de dados têm um sufixo tal como nos tipos de dados tradicionais do BASIC. QB64 também inclui uma biblioteca de audio que permite tocar os formatos mais usuais, incluindo ficheiros MP3, Ogg Vorbis, e WAV, assim como bibliotecas que permitem ao utilizador utilizar resoluções gráficas superiores a 640*480 (máximo permitido pelo QuickBASIC[5]), utilização de variadas fontes de texto, e inserção de imagens em formato BMP, PNG e JPEG. Permite igualmente a utilização de cores a 32 bits. As bibliotecas são incluídas automaticamente pelo QB64, pelo que o programador não necessita de as especificar. E tal como no QuickBASIC, o programador pode incluir suas próprias bibliotecas através do comando $INCLUDE. Bibliotecas externas são suportadas por meio do comando DECLARE LIBRARY, podendo utilizar extensões escritas em C e DLLs diretamente.
Bibliotecas
[editar | editar código-fonte]Atualmente, QB64 utiliza a biblioteca OpenGL para os modos gráficos e modos de texto.
Referências
- ↑ Stephane Richard (16 de novembro de 2007). «In The News». PCOPY! Issue #50. Consultado em 17 de agosto de 2008. Arquivado do original em 21 de dezembro de 2009
- ↑ E.K.Virtanen (26 de maio de 2008). «Interview With Galleon». PCOPY! Issue #70. Consultado em 14 de julho de 2008. Arquivado do original em 21 de agosto de 2008
- ↑ https://www.qb64.org/portal/changelog-for-v2-0/
- ↑ «Changelog for v1.4 – QB64.org» (em inglês). Consultado em 13 de fevereiro de 2020
- ↑ «QB Advisor: Screen Modes 11, 12, and 13». Microsoft Corporation. 1988. Consultado em 25 de julho de 2008
Ligações externas
[editar | editar código-fonte]