Curso de Basic
Operadores
Você está em: MarMSX >> Cursos >> BASIC
Os operadores agem sobre constantes e variáveis contidas numa expressão, de maneira a produzir um valor único como resultado. Eles podem ser divididos em quatro categorias [1]:
- Aritméticos
- Relacionais
- Lógicos
- Funcionais
Aritméticos
Operadores aritiméricos em ordem de prioridade:
Operador |
Operação |
Exemplo |
^ |
Exponenciação |
A^B |
- |
Mudança de sinal |
-A |
* e / |
Multiplicação e divisão |
A*B, A/B |
\ |
Divisão inteira |
A\B |
MOD |
Resto da divisão |
A MOD B |
+ e - |
Adição e subtração |
A+B, A-B |
Obs: para mudar a ordem de prioridade dos operadores, deve-se utilizar parêntesis. Ex:
PRINT 4+3/2 ↵
5.5
Ok
A primeira conta a ser feita é a divisão de 3/2, que dá 1.5. Então, a soma de 4 + 1.5 é feita, totalizando 5.5.
Mudando a prioridade:
PRINT (4+3)/2 ↵
3.5
Ok
Agora a conta 4+3 é feita primeiro, totalizando 7. Depois, a conta 7/2 é feita, resultando em 3.5.
Outra coisa que deve ser observada é que o operador "+" serve também para concatenar (juntar) strings. Ex:
"Mar" + "MSX" = "MarMSX"
Relacionais
Operadores relacionais:
Operador |
Operação |
Exemplo |
= |
Igual |
A=B |
<> |
Diferente |
A<>B |
< |
Menor |
A<B |
> |
Maior |
A>B |
<= |
Menor ou igual |
A<=B |
>= |
Maior ou igual |
A>=B |
O resultado dos operadores relacionais é sempre uma valor "verdadeiro" ou "falso". Ex:
A=21
IF A>10 THEN PRINT"Maior que 10" ELSE "Menor ou igual a 10" ↵
Maior que 10
Ok
O resultado para a expressão "A>10", quando "A" possui o valor igual a 21, é verdadeiro.
Lógicos
São os seguintes operadores lógicos:
- NOT - Inverte a entrada.
- AND - Compara duas entradas e retorna verdadeiro, se ambas forem verdadeiras.
- OR - Compara duas entradas e retorna verdadeiro, se pelo menos uma delas for verdadeira.
- XOR - Compara duas entradas e retorna verdadeiro, se ambas forem diferentes.
- EQV - Compara duas entradas e retorna verdadeiro, se ambas forem iguais.
- IMP - Compara duas entradas e retorna falso, se a primeira for verdadeira e a segunda for falsa.
Convenção: o valor 0 equivale a falso e o valor 1 equivale a verdadeiro.
Quando o teste lógico é aplicado à cláusula IF, ele resulta em uma saída de tamanho igual a 1 bit, ou seja, possui valor igual a 0 ou 1. Ex:
10 A=1
20 B=2
30 IF A=1 EQV B=2 THEN PRINT"Ou ambos os testes são verdadeiros ou falsos"
ELSE "Um teste é verdadeiro e outro é falso"
No primeiro teste, "A=1" é verdadeiro. No segundo teste, "B=2" também é veradeiro. A expressão "verdadeiro EQV verdadeiro" é verdadeira. No caso de um dos teste der falso, a resposta da expressão A EQV B será falsa.
Quando o teste lógico é aplicado a valores (variável ou constante), ele realiza operação lógica bit a bit em um número de 16 bits, resultando em um número inteiro de 16 bits.
Exemplos:
PRINT NOT 0 ↵
-1
Ok
PRINT 1 AND 1 ↵
1
Ok
PRINT 1 EQV 0 ↵
-2
Ok
Operação bit a bit da primeira conta: NOT &B0000000000000000 = &B1111111111111111
PRINT &B1111111111111111 ↵
-1
Ok
Operação bit a bit da segunda conta: &B0000000000000001 AND &B0000000000000001 = &B0000000000000001
PRINT &B0000000000000001 ↵
1
Ok
Operação bit a bit da terceira conta: &B0000000000000001 EQV &B0000000000000000 = &B1111111111111110
PRINT &B1111111111111110 ↵
-2
Ok
Obs: o mesmo esquema "bit a bit" ocorre para os operadores relacionais, quando aplicado a valores. Ex:
A=21 ↵
PRINT A>10 ↵
-1
Ok
O resultado da expressão "A>10" quando convertida para um número inteiro, resulta no numéro binário de 16 bits &B1111111111111111.
O curso de pascal possui uma explicação completa sobre os operadores lógicos. Clique aqui para acessá-lo.
Funcionais
As funções são sub-rotinas que tem como objetivo executar uma determinada tarefa e retornar uma resposta ao usuário. Elas podem ou não receber parâmetros e são de dois tipos no Basic: nativas e criadas pelo usuário.
As funções nativas são aquelas que já fazem parte do Basic. Exemplos: ABS, ASC, CHR$, SIN, VAL.
As funções criadas pelo usuário são definidas através do comando DEF FN e são limitadas a expressões e não possuem comandos.
Este curso possui um capítulo especial que aborda as funções.
Referências:
[1] - Livro: Linguagem Basic MSX, editora Aleph, 5a. Edição, 1987.