Curso de Basic
Introdução
Você está em: MarMSX >> Cursos >> BASIC
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:
- Ser fácil, principalmente para iniciantes.
- Ser uma linguagem de uso geral.
- Permitir a inclusão de rotinas avançadas, sem tornar a linguagem mais complicada.
- Ser interativa.
- Fornecer mensagens de erro claras e amigáveis.
- Responder rapidamente para programas pequenos.
- Não exigir o conhecimento do hardware do computador.
- 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!" ↵
Olá Mundo
Ok
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 ↵
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:
- AUTO - Cria automaticamente número de linhas, sempre que o "enter" é pressionado. Começa pelo número 10 e possui incremento de 10.
- DELETE - Apaga uma determinada linha.
- LIST - Lista o programa.
- NEW - Apaga todo o programa.
- RENUM - Renumera o programa, acertando os números de linha para ter distribuição uniforme. O default é começar por 10 e incrementar de 10.
- RUN - Executa o programa.
No modo programado, o programa não executa imadiatamente.
10 A=5 ↵
20 PRINT A ↵
É necessário utilizar o comando direto "RUN" para executar o programa.
RUN ↵
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
Ok
Literais
Tantos as literais como as variáveis em Basic são classificadas em alfanuméricas (ou strings) e numéricas.
Literais são os valores fixos empregados no código fonte de um programa de computador, seja para atribuição de valor ou como argumento para uma função. Por exemplo, na expressão
PRINT "Olá Mundo!"
A expressão "Olá Mundo" é uma literal.
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².
Nota: no livro do Expert [2], os autores chamam as literais de "constantes". Entretanto, na Ciência de Computação, as constantes possuem um identificador e armazenam valores na memória como as variáveis, mas somente podem ter seu valor atribuído uma única vez, ou seja, não pode ter seu valor alterado.
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 ↵
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:
- Constante numérica
- Constante string
- Variável numérica
- Variável string
- Operador
Tipo de separadores:
- Vírgula (,) - Apresenta o dado a partir da coluna 0 ou 14.
- Ponto e vírgula (;) - Apresenta o dado logo após a última posição do cursor.
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
Ok
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 ↵
Qual o valor de A? 5
Qual o valor de B? 3
A média entre 5 e 3 é: 4
Ok
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 ↵
Qual a nota? 6
Recuperação
Ok
3. Criar um programa que escreva "MSX" 10 vezes na tela.
10 FOR I=1 TO 10
20 PRINT "MSX"
30 NEXT I
RUN ↵
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 ↵
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.