DATA, READ e RESTORE (ou "como incluir muitos dados em um programa")
 

Você usa a instrução DATA para incluir DADOS (informações, valores de variáveis, números, etc.) em seu programa.
Quando precisamos trabalhar com poucas variaveis, é fácil, nós podemos fazer um programa do tipo:

a = 3
b = 4
c$ = "Alo Mundo"

Mas vamos supor que nós precisamos trabalhar com muitas informações. Imagine que você tem uma array/matriz (veja tutorial sobre DIM) com os nomes dos seus vizinhos:

DIM nome$(1 TO 50)

Voce tem uma lista com os nomes de todos os vizinhos, basta entao informar isso ao programa. Você poderia fazer algo do tipo:

nome$(1) = "Maria"
nome$(2) = "Joao"
nome$(3) = "Joaquim"
.
.
.

Mas isso seria meio trabalhoso, e dá a impressão de que você nao sabe programar direito.
Uma saída melhor é usando o DATA. Com ele, você faz uma lista dos nomes dos vizinhos, e com 3 linhas de programação você carrega tudo para as variáveis. Bem fácil.

A sintaxe do DATA (maneira de usar) seria algo do tipo:

DATA dado1,dado2,dado3,...

Ou seja, você coloca DATA e depois os dados, separados por vírgulas. Algo do tipo:

DATA "Maria","Joao","Joaquim"

Ou ainda:

DATA "Maria"
DATA "Joao"
DATA "Joaquim"

Legal, mas isso ainda não faz nada. Você vai precisar do comando READ para ler isso e passar para as variaveis.
A sintaxe seria:

READ variavel-que-vai-receber-o-dado

Cada vez que você executa o READ, ele lê o próximo dado da lista.

Vamos para o primeiro exemplo:
 
READ x$    'isso vai ler o primeiro dado e colocar
           'na variavel x$. Nesse momento,
           'x$ = "Primeiro"
PRINT x$   'escreve
READ y$    'isso vai ler o dado seguinte (2o) e colocar
           'na variavel y$. Nesse momento,
           'y$ = "Segundo"
PRINT y$   'escreve
READ z$    'isso vai ler o dado seguinte (3o) e colocar
           'na variavel z$. Nesse momento,
           'z$ = "Terceiro"
PRINT z$   'escreve

DATA "Primeiro","Segundo","Terceiro"

Na verdade você pode também fazer o READ ler vários dados de uma só vez. Basta especificar várias variáveis. Sendo que ele vai ler um dado para cada variável. O nosso exemplo acima ficaria bem mais simples assim:

READ x$, y$, z$
PRINT x$
PRINT y$
PRINT z$
DATA "Primeiro","Segundo","Terceiro"

Eu falei que é possível carregar toda a lista de nomes de vizinhos com apenas 3 linhas de programação, certo? Abaixo vai um exemplo:

'So 6 dessa vez :-)
DIM nome$(1 TO 6)

'As 3 linhas vao agora:
FOR i = 1 TO 6
READ nome$(i)
NEXT i

DATA "Maria","Joao","Joaquim","Janete","Paulo","Ana"

É, nada que um bom FOR não resolva. Para finalizar, vamos ver o RESTORE. Lembre-se que o READ vai lendo os dados progressivamente. Mas pode acontecer de você já ter lido todos os dados e querer voltar para alguma parte da lista. RESTORE resolve o problema.

Usando o RESTORE sem parametro nenhum, a lista vai voltar para o início.

Mas você pode colocar um label (aqueles nomes que voce coloca e usa o GOTO para se deslocar) ou um número de linha entre as instruções DATA. Algo do tipo:

cidades:
DATA "Salvador","Belo Horizonte"
DATA "São Paulo","Curitiba"

estados:
DATA "Bahia","Minas Gerais"
DATA "São Paulo","Paraná"

E aí você pode usar o RESTORE para voltar para uma dessas partes. A sintaxe fica:

RESTORE label

(Lembrando, usando apenas RESTORE, sem o label, a leitura retorna para o começo da lista)

Exemplo:
 

READ $
RESTORE estados
READ estado$

cidades:
DATA "Salvador","Belo Horizonte"
DATA "São Paulo","Curitiba"

estados:
DATA "Bahia","Minas Gerais"
DATA "São Paulo","Paraná" 1