QB64: diferenças entre revisões

Conteúdo apagado Conteúdo adicionado
Exemplos da wikipedia em inglês adaptados (conferidos no compilador).
bot: revertidas edições de 168.205.156.193 ( modificação suspeita : -35), para a edição 51443597 de 168.205.156.182
Linha 28:
 
== Sintaxe ==
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 <code>:</code>.
 
A sintaxe do QB64 foi desenhada para ser totalmente compatível com o QuickBASIC. A numeração das linhas é opcional, e as expressões são terminadas por uma "[[nova linha]]" ou por [[dois pontos]] (<code>:</code>). Tal como no QuickBASIC, as operações de lógica e [[operação binária|binárias]] são combinadas, e "verdadeiro" é representado por um negativo.
Um [[Programa Olá Mundo]] simples:
 
Um exemplo do programa [[Olá Mundo]] seria:
<source lang="qbasic">
PRINT "Olá, mundo!"
</source>
 
Um exemplo da emulação de memória VGA implementada no QB64 para compatibilidade:
<source lang="qbasic">
10 PRINT "Olá, mundoMundo!"
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
</source>
 
Um exemplo do uso de arquivos de áudio com o QB64:
<source lang="qbasic">
som& = _SNDOPEN("som.wav") 'WAV, OGG ouMP3
_SNDPLAY som&
</source>
 
Um exemplo do uso de arquivos de imagem com o QB64:
<source lang="qbasic">
SCREEN _NEWIMAGE(800, 600, 32) 'cria uma tela de 32bit
imagem& = _LOADIMAGE("arquivoDeImagem.png") 'BMP, JPG, PNG, etc.
_PUTIMAGE (0, 0), imagem&
_FREEIMAGE imagem& 'release assigned memory
</source>
 
Exemplo de como o QB64 utiliza múltiplos timers:
<source lang="qbasic">
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
 
20 GOTO 10
SUB mySub
PRINT "500ms; ";
END SUB
</source>