MSXInício
Capítulo 4Disponível

Operadores e expressões

Uma expressão é uma receita para calcular um valor. Vamos aprender os ingredientes.

Operadores aritméticos

Os clássicos das contas. Funcionam exatamente como na matemática:

  • + (soma): 10 + 3 = 13
  • - (subtração): 10 - 3 = 7
  • * (multiplicação): 10 * 3 = 30
  • / (divisão inteira): 10 / 3 = 3
  • MOD (resto da divisão): 10 MOD 3 = 1

ATENÇÃO

Divisão é sempre inteira

CSX trabalha apenas com números inteiros (não há ponto flutuante neste volume). 10 / 3 dá 3, e o resto vai para o MOD. Se você precisar saber o resto, use os dois operadores: o quociente é a parte inteira, e MOD é o que sobrou.

Operadores de comparação

Comparam dois valores e produzem um resultado BOOL (TRUE se a comparação é verdadeira, FALSE caso contrário):

  • = (igual a): 5 = 5 (TRUE)
  • <> (diferente de): 5 <> 7 (TRUE)
  • < (menor que): 3 < 5 (TRUE)
  • <= (menor ou igual a): 5 <= 5 (TRUE)
  • > (maior que): 10 > 5 (TRUE)
  • >= (maior ou igual a): 5 >= 5 (TRUE)

DICA

Diferente é <>

Diferente de muitas linguagens modernas, CSX usa <> (menor maior) para "diferente". É herança do BASIC clássico. Não use != nem == — vai dar erro.

Operadores lógicos

Combinam valores BOOL para formar condições mais complexas:

  • AND — verdadeiro só se ambos os lados forem verdadeiros.
  • OR — verdadeiro se pelo menos um for verdadeiro.
  • NOT — inverte: NOT TRUE vira FALSE.
  • XOR — verdadeiro se exatamente um for verdadeiro.
USES SCREEN 1

DIM idade AS BYTE = 18
DIM tem_carteira AS BOOL = TRUE

' Pode dirigir se tem 18 anos OU MAIS E tem carteira
DIM pode AS BOOL
pode = (idade >= 18) AND tem_carteira

Precedência: quem vem primeiro

Em 2 + 3 * 4 o resultado é 14, não 20. É a regra clássica: multiplicação e divisão antes da soma e subtração. A ordem completa, do que vem primeiro para o que vem depois:

  1. () parênteses (mais alto)
  2. NOT negação
  3. *, /, MOD, AND (bit-a-bit)
  4. +, -, OR, XOR (bit-a-bit)
  5. =, <>, <, <=, >, >=
  6. AND, OR (lógicos - mais baixo)

DICA

Na dúvida, use parênteses

Não tente memorizar a tabela inteira. Quando a expressão ficar complexa, use parênteses generosamente: (a + b) * (c - d) é muito mais legível que a + b * c - d, mesmo que o compilador entenda os dois.

Operações bit-a-bit

Em jogos para MSX1, é comum manipular bits diretamente — para máscaras de cor, leitura de teclas, controle do VDP. CSX oferece operadores específicos:

  • AND bit-a-bit — apaga bits selecionados (máscara).
  • OR bit-a-bit — acende bits selecionados.
  • XOR bit-a-bit — inverte bits selecionados.
  • SHL n — desloca para a esquerda (multiplica por 2 cada vez).
  • SHR n — desloca para a direita (divide por 2 cada vez).
USES SCREEN 1

DIM cor AS BYTE = 15         ' branco (1111)
DIM mascara AS BYTE = 12     ' (1100)

DIM r1 AS BYTE
r1 = cor AND mascara         ' = 12 (1100): só bits altos sobram
r1 = cor OR 16               ' = 31 (11111): acende o bit 5
r1 = cor XOR 15              ' = 0 : inverte todos os bits baixos
r1 = 1 SHL 4                 ' = 16 (10000): 1 deslocado 4 posições

ATENÇÃO

AND/OR têm dois sentidos!

Quando os dois lados de AND são BOOL, ele faz comparação lógica. Quando os dois lados são BYTE/WORD/INT, ele faz operação bit-a-bit. É o tipo dos operandos que decide. Se você misturar, o compilador vai promover ambos para o tipo maior e fazer bit-a-bit.

Exercícios

  • 4.1 — Calcule e mostre o resultado de (7 * 6) MOD 5.
  • 4.2 — Sem usar a calculadora, qual o valor de 2 SHL 8? Confirme rodando.
  • 4.3 — Crie duas variáveis BYTE com valores 12 e 10. Mostre o resultado dos operadores: AND, OR, XOR, +, -.

Resumo do capítulo

  • Aritméticos: + - * / MOD (divisão sempre inteira).
  • Comparação: = <> < <= > >= (resultam em BOOL).
  • Lógicos: AND / OR / NOT / XOR (em BOOL ou bit-a-bit).
  • Bit-a-bit: AND OR XOR + SHL/SHR para deslocar.
  • Use parênteses sem medo — clareza vale mais que economia.
Comunidade

Discussão · Operadores e expressões

Curta, marque como lido e comente o que achou deste capítulo.

0 comentários
Entre para participar
Crie uma conta ou faça login para curtir, marcar como lido e comentar.

Carregando comentários…