QB64
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óriaQB64 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. SintaxeA 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 QuickBASICOs 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 BibliotecasAtualmente, QB64 utiliza a biblioteca OpenGL para os modos gráficos e modos de texto. Referências
Ligações externas
Information related to QB64 |