Variáveis e tipos numéricos
Tudo o que um programa faz se resume a guardar valores e fazer contas com eles.
Uma variável é como uma gaveta com etiqueta: você dá um nome a ela, guarda um valor dentro, e depois pode tirar o valor de volta ou trocá-lo. Em CSX, cada gaveta tem um tipo — uma indicação de que tamanho de valor cabe nela.
DICA
A partir daqui, sempre USES no topo
Todos os programas deste manual começam com uma linha USES declarando os módulos do runtime que serão utilizados. Nos capítulos de fundamentos usaremos USES SCREEN 1 (para exibir texto na tela). O CSX Variable Inspector, na aba direita da IDE, mostra o valor de cada DIM em tempo real — mantenha-o aberto enquanto estuda este capítulo.
Os quatro tipos numéricos
CSX tem quatro tipos básicos para guardar números e valores lógicos. Use a tabela abaixo como referência:
- BYTE (1 byte): 0 a 255. Contadores pequenos, coordenadas X, cores.
- WORD (2 bytes): 0 a 65535. Endereços, pontuações, contadores grandes.
- INT (2 bytes): -32768 a +32767. Quando precisar de números negativos.
- BOOL (1 byte): TRUE / FALSE. Bandeiras (ligado/desligado, vivo/morto).
Declarando uma variável: DIM
O comando DIM (de DIMension, herança do BASIC) cria uma variável. A forma completa é:
DIM nomeDaVariavel AS TIPO = valorInicial
As partes AS TIPO e = valor são opcionais. Veja todas as variantes válidas:
DIGITE E VEJA
Programa 3.1 — Quatro maneiras de declarar
Digite e rode. Você ainda não vai ver nada na tela, mas o programa compila.
USES SCREEN 1
SCREEN 1
CLS
DIM idade AS BYTE = 25
DIM pontos AS WORD = 5000
DIM saldo AS INT = -150
DIM jogando AS BOOL = TRUE
PRINT "VARIAVEIS CRIADAS!"
Quando o tipo é opcional
Se você omitir o AS TIPO, o compilador deduz o tipo a partir do valor inicial. As regras são simples:
- Número positivo até 255 → vira BYTE.
- Número positivo de 256 a 65535 → vira WORD.
- Número negativo → vira INT.
- TRUE ou FALSE → vira BOOL.
DIM x = 100 ' x vira BYTE (cabe em 1 byte)
DIM y = 1000 ' y vira WORD (passa de 255)
DIM t = -5 ' t vira INT (negativo)
DIM ok = TRUE ' ok vira BOOL
DICA
Quando explicitar o tipo
Mesmo quando o compilador acerta a dedução, escrever AS TIPO deixa seu programa mais claro para outros leitores (e para o você do futuro). Dica de ouro: use AS BYTE sempre que souber que o valor não vai passar de 255 — economiza um byte de RAM por variável, e RAM é luxo no MSX1.
Mostrando valores com PRINT
O comando PRINT aceita misturar texto e variáveis. Use vírgula para separar:
DIGITE E VEJA
Programa 3.2 — Mostrando os valores
Modifique o Programa 3.1 acrescentando estas linhas no fim:
PRINT "IDADE = ", idade
PRINT "PONTOS = ", pontos
PRINT "SALDO = ", saldo
TELA ESPERADA
O que aparece
VARIAVEIS CRIADAS!
IDADE = 25
PONTOS = 5000
SALDO = -150
Note como o compilador escolhe sozinho a forma de imprimir cada valor: BYTE em até 3 dígitos, WORD em até 5, INT com sinal de menos quando negativo. Isso é mágica do compilador — você não precisa pensar nisso.
Mudando o valor de uma variável
Depois de criada, basta usar o sinal de igual para trocar o valor:
DIM contador AS BYTE = 0
contador = contador + 1 ' agora vale 1
contador = contador + 10 ' agora vale 11
contador = 100 ' agora vale 100
ATENÇÃO
Cuidado com estouros (overflow)
Um BYTE só vai até 255. Se você fizer contador = 250 + 10, o resultado não será 260 — será 4 (porque 260 não cabe em BYTE e os bits extras se perdem). Se você precisa de valores grandes, use WORD.
Promoção automática de tipos
Quando uma expressão mistura tipos diferentes, CSX promove automaticamente o menor para o maior, evitando perda de informação:
DIM b AS BYTE = 100
DIM w AS WORD = 1000
DIM resultado AS WORD
resultado = b + w ' b vira WORD temporariamente, soma dá 1100
CURIOSIDADE
Por que existem tantos tipos?
No mundo dos computadores antigos, cada byte conta. O Z80 trabalha naturalmente com 8 bits (BYTE) e tem instruções especiais para 16 bits (WORD/INT). Usar BYTE quando dá é mais rápido e ocupa metade da RAM. Linguagens modernas escondem isso de você, mas o preço é gastar 4 ou 8 bytes para guardar um valor que caberia em 1.
Exercícios
- 3.1 — Declare três variáveis BYTE chamadas x, y, cor e mostre cada uma com PRINT.
- 3.2 — Crie um INT com valor -32000. Some 100 e mostre. Agora some 1000. O que aconteceu?
- 3.3 — Sem usar AS, declare três variáveis com valores 50, 500 e -50. Use PRINT para mostrá-las. O compilador escolheu os tipos certos?
Resumo do capítulo
- Variáveis são gavetas com etiqueta e tipo.
- Quatro tipos: BYTE (0-255), WORD (0-65535), INT (±32K), BOOL (TRUE/FALSE).
- DIM declara; = atribui; AS TIPO é opcional mas recomendado.
- PRINT escolhe o formato certo para cada tipo automaticamente.
- Cuidado com overflow em BYTE; promoção automática evita problemas em mistos.
LET: a forma clássica da atribuição
Quem vem do BASIC antigo pode escrever a palavra LET antes de uma atribuição. Ela é opcional e não muda nada no programa gerado:
DIM vidas AS BYTE = 3
LET vidas = vidas - 1
vidas = vidas - 1 ' exatamente a mesma coisa