Curso de Basic
Introdução


  O Basic (Beginner's All-purpose Symbolic Intruction Code) é uma linguagem criada com fins didáticos pelos professores John George Kemeny e Thomas Eugene Kurtz em 1964, que é do tipo interpretada e não estruturada.
  Um programa em Basic tem normalmente suas linhas numeradas com valores de 10 em 10, com o objetivo de facilitar a introdução de linhas intermediarias, caso necessário.
  Geralmente, cada linha contém uma instrução. Ex:
10 PRINT A
  Entretanto, podem ser adicionadas mais de uma instrução por linha, separadas por dois pontos ":". Ex:
10 A=1+2 : PRINT A -- Instrução 2
     |
     +-- Instrução 1
  Assim, o programa:
10 A=1+2 : PRINT A
  Equivale a:
10 A=1+2
20 PRINT A

  Os comandos são poucos, simples e facilmente compreensíveis da lingua inglesa como INPUT, READ, PRINT, IF, RUN, CIRCLE etc.

  Os oito princípios do Basic são:
  1. Ser fácil, principalmente para iniciantes.
  2. Ser uma linguagem de uso geral.
  3. Permitir a inclusão de rotinas avançadas, sem tornar a linguagem mais complicada.
  4. Ser interativa.
  5. Fornecer mensagens de erro claras e amigáveis.
  6. Responder rapidamente para programas pequenos.
  7. Não exigir o conhecimento do hardware do computador.
  8. Proteger o sistema operacional do usuário.
  A aprendizagem da linguagem Basic é simples, porém ela pode trazer um efeito colateral: o de não seguir as regras tradicionais de programação estruturada e outros cuidados.

  Fonte: adaptado de http://pt.wikipedia.org/wiki/Basic


  A linguagem Basic é nativa no MSX, ou seja, o interpretador Basic está incluído na ROM do sistema. Dessa forma, ela está pronta para o uso quando o MSX é ligado.
  Há dois modos de programação Basic: o direto e o programado.
  No modo direto, o comando é digitado sem ser precedido por um número de linha. Ele entra em execução ao teclar-se "enter" (). Ex:
PRINT "Olá Mundo!" 
  A instrução não é retida na memória, entretanto o resultado de uma expressão é armazenado na memória. A instrução só permanecerá disponível enquanto ela estiver escrita na tela. Ex:
A=5 
PRINT A 
  Saída:
  5
  Ok

  Esse programa armazena o resultado da expressão "A=5" na memória e imprime o resultado na tela.
  Podemos retornar com o cursor para a linha do comando "PRINT A" e executar essa instrução mais uma vez. Até mesmo podemos apagar a linha com a instrução "A=5", que a resposta será a mesma, uma vez que o resultado da expressão "A=5" já havia sido armazenado na memória. Entretanto, se apagarmos toda a tela, o programa é perdido e será necessário digitar o comando "PRINT A" novamente para obter o resultado na tela.

  No modo programado, cada linha é precedida por um número único e as linhas são armazenadas na memória, ordenadas de forma crescente, formando uma lista de comandos. Mesmo ao apagarmos a tela, a instrução permanece na memória. Ex:
10 A=5
20 PRINT A
  Comandos Basic para manipulação de programas:   No modo programado, o programa não executa imadiatamente. É necessário utilizar o comando direto "RUN" para isso.
10 A=5
20 PRINT A
RUN 
  Saída:
  5
  Ok

  Exemplo de como renumerar as linhas automaticamente, começando de 10 e saltanto de 10 em 10:
10 A=5
15 A=A+1
20 PRINT A
RENUM 
Ok
LIST 
10 A=5
20 A=A+1
30 PRINT A


  Constantes

  Tantos as constantes como as variáveis em Basic são classificadas em alfanuméricas (ou strings) e numéricas.
  As constantes são valores fixos, ou seja, não podem ter seus valores alterados. Por exemplo, na expressão
PRINT "Olá Mundo!"
  a constante "Olá Mundo" não pode ter seu valor alterado.

  Tipos:

Tipo Sub-tipo Descrição Exemplo
String - Seqüência de até 255 caracteres, digitados entre aspas. "MSX"
Numérico Inteiro Números inteiros entre -32768 a 32767. 123
Numérico Ponto-fixo Número real. 1.23
Numérico Ponto-flutuante Número real representado na forma exponencial (notação científica). 4E10
Numérico Hexadecimal Número em hexadecimal precedido por &H. &HA0
Numérico Octal Número em octal precedido por &O. &O71
Numérico Binário Número em binário precedido por &B. &B1010

  Obs: a expressão em ponto flutuante 4E2 equavale a 4x10².


  Variáveis

  A variável é um nome associado a algum dado armazenado na memória, que diferentemente da constante, pode ter seu conteúdo modificado. Os nomes de variáveis podem ter no máximo 2 caracteres, sempre começando por uma letra.

  Tipos:

Tipo Sub-tipo Descrição Exemplo
String - Seqüência de até 255 caracteres. N$ = "MSX"
Numérico Inteiro Números inteiros entre -32768 a 32767. Ocupa 2 bytes. A = 123%
Numérico Precisão simples Número real de 6 dígitos significativos. Ocupa 4 bytes. A = 1.23!
Numérico Precisão dupla Número real de 14 dígitos significativos. Ocupa 8 bytes. A = 1.23#

  A atribuição de uma dado à variável é feita através do sinal de igual. No caso, a variável pode receber tanto um dado de uma constante como de outra variável. Ex:
10 A=7
20 B=A
30 PRINT A
40 PRINT B
RUN 
  Saída:
  7
  7
  Ok

  Nota importante: As variáveis cujo nome terminam em "$" são sempre do tipo string. Quando não possuir esse símbolo, ela é do tipo numérica.


  Entrada e Saída de dados

  A entrada de dados no MSX é feita através dos comandos INPUT e LINE INPUT. Já a saída de dados é feita através do comando PRINT.

  Sintaxe do comando PRINT:
PRINT expressão [separador expressão separador ...]
  O comando PRINT apresenta na tela os dados definidos pelas expressões.

  Tipos de expressões aceitas:   Tipo de separadores:   Exemplos:
PRINT "Olá" 
Olá
Ok

PRINT 10E3 
10000
Ok

A=15
PRINT A 
15
Ok

T$="MSX"
PRINT T$ 
MSX
Ok

PRINT 5+4 
9
Ok

PRINT 5<4 
0
Ok

  Conforme visto na sinatxe do comando PRINT, podemos ter diversas expressões, separadas por vírgula ou ponto e vírgula. Ex:
10 H$="Paulo" : IH=25
20 M$="Kátia" : IM=30
30 PRINT H$;" tem";IH";"anos. Já ";M$;" tem";IM;"anos."
RUN 
Paulo tem 25 anos. Já Kátia tem 30 anos.
Ok

  Obs 1: o comando PRINT pode ser substituído pelo símbolo "?". Ex:
? "Olá"
  Equivale a:
PRINT "Olá"

  Obs 2: diferentemente das strings, a expressões numéricas são impressas com um espaço em branco antes e depois do valor. Ex:
PRINT "**";4;"**" 
** 4 **
Ok

PRINT "**";"A";"**" 
**A**
Ok

  Sintaxe do INPUT:
INPUT ["mensagem";] variável [, variável] ...
  O comando INPUT recebe dados do usuário e os armazena em variáveis. Ele coloca automaticamente um ponto de interrogação logo após a mensagem digitada.
  Esse comando aceita variáveis do tipo numérica e string. Já o comando LINE INPUT só aceita variáveis do tipo string. Além disso o comando LINE INPUT não coloca o ponto de interrogação após a mensagem.

  Exemplos:
INPUT "Preço ";P 
Preço ? 1.5 
Ok

PRINT P 
1.5
Ok
INPUT "Notas prova 1 e 2 "; P1, P2 
Notas prova 1 e 2 ? 7,8 
Ok

PRINT P1,P2 
7             8

  Observe nesse último exemplo que é possível inserir mais de um dado ao mesmo tempo, separados por vírgulas. Nesse caso, foram introduzidas duas notas, onde a variável P1 recebe o valor 7 e a variável P2 recebe o valor 8.


  Funções

  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.
  A função deverá sempre retornar seu valor a uma variável ou outra função compatível com o tipo de dado retorno. Dessa forma, não é possível chamar uma função sozinha. Ex:
PRINT ABS(-1) 
1
Ok

N$ = HEX$(12) 

SIN(1.2) 
Syntax Error
Ok
  Assim como as variáveis, as funções cujo nome terminem em "$" retornam string, enquanto que sem o símbolo retornam um valor numérico.


  Primeiros exemplos

  1. Criar um programa em Basic para calcular a média entre dois números digitados pelo usuário.
10 INPUT"Qual o valor de A"; A
20 INPUT"Qual o valor de B"; B
30 M = (A+B) / 2
40 PRINT "A média entre";A;"e";B;"é:";M
RUN 
  Saída:
  Qual o valor de A? 5
  Qual o valor de B? 3
  A média entre 5 e 3 é: 4


  2. Criar um programa que entra com uma nota e verifica se: entre 0 e 5 = reprovado; entre 5 e 7 = recuperação; e entre 7 e 10 = aprovado.
10 INPUT"Qual a nota";n
20 IF N<5 THEN PRINT "Reprovado"
30 IF N>=5 and N<7 THEN PRINT "Recuperação"
40 IF N>=7 THEN PRINT "Aprovado"
RUN 
  Saída:
  Qual a nota? 6
  Recuperação


  3. Criar um programa que escreva "MSX" 10 vezes na tela.
10 FOR I=1 TO 10
20 PRINT "MSX"
30 NEXT I
RUN 
  Saída:
  MSX
  MSX
  MSX
  MSX
  MSX
  MSX
  MSX
  MSX
  MSX
  MSX

  Nota: o comando "PRINT" vai para a próxima linha automaticamente. Para não saltar para a proxima linha, acrescente o caractere ";" ao final da instrução. Ex:
10 FOR I=1 TO 10
20 PRINT "MSX";
30 NEXT I
RUN 
  Saída:
  MSX MSX MSX MSX MSX MSX MSX MSX MSX MSX



  Referências:

  [1] - Livro: Dominando o Expert, editora Aleph, 5a. Edição, 1987.
  [2] - Livro: Linguagem Basic MSX, editora Aleph, 5a. Edição, 1987.


MARMSX/CURSOS/Basic