    Curso de scripvox - Aula 12 (Por Fabiano Ferreira)
    Trabalhando com arquivos - Parte II

    Dando continuidade ao assunto iniciado na aula anterior, hoje vamos
ver como ler informaes gravadas em um arquivo.
    Como vimos na aula anterior, para se trabalhar com um arquivo,
devemos abr-lo e   associar seu nome a um nmero de 0 a 9.


    A forma de abrir um arquivo para leitura  praticamente igual a
forma de abertura para gravao.
Basta no colocar o smbolo & (e comercial) ao fim da linha.
    Vejamos um exemplo:

Abre #1 "meu arquivo.txt"

    No exemplo acima, 'meu arquivo.txt' ser aberto para leitura.
Obviamente que, o arquivo deve existir, caso contrrio, o programa acusar erro.
    Na prxima aula, vamos aprender a verificar se um determinado
arquivo existe.
Isso ser bastante importante para evitar erros desse tipo.
    Mas, o que devemos fazer depois de abrir o arquivo para leitura?
    Como acessamos as informaes l gravadas?
    A forma de acessar um arquivo no scripvox  lendo linha por linha.
    Para isso, utilizamos o comando L, o mesmo que utilizamos para
armazenar dados do teclado. Inserindo-se o nome lgico do arquivo a ser
lido aps o
comando l, uma linha do arquivo  copiada para a varivel.
    A leitura  feita da primeira para a ltima linha do arquivo.

    Vejamos um exemplo prtico:
    Primeiro, vou gravar um arquivo texto com o seguinte contedo:

    Oi, isso  um teste.
    Ser que vai dar certo?
Espero que sim!

    Vou salvar esse arquivo como teste.txt.
    Agora, vou montar um programa em scripvox para ler as linhas desse
arquivo e jogar na tela.

Abre #1 "teste.txt"
L #1 l
Escreve l
L #1 l
Escreve l
L #1 l
Escreve l
Fecha #1
Termina mudo

    O programa acima pega as trs linhas do arquivo texto e joga na
tela.
    A varivel que recebe as linhas do arquivo  a varivel l.

    Mas... ainda falta alguma coisa!
    Este cdigo est muito repetitivo, no?
    Quer dizer que se o arquivo tiver 1000 linhas, vou ter de escrever
1000 vezes o trecho
L #1 l
Escreve l...?
    Poderia usar o comando repete, ou enquanto, mas... como vou saber
quantas linhas tem o arquivo?
    Conto num editor de texto e depois implemento esse programa de
acordo com o nmero de linhas do arquivo?
    Pode ser, mas se esse arquivo sofrer alteraes... A eu vou ter de
alterar meu cdigo!

    Para evitar tudo isso, existe o comando checa.
    Sua forma de utilizao :
checa, um espao e uma varivel.
    A varivel selecionada pode receber dois valores:
0 - indica que o arquivo ainda no acabou.
1 - indica que o arquivo chegou ao fim.

    Utilizando esse comando juntamente com um bloco de repetio,
podemos construir um programa que leia um arquivo, independente do seu
nmero de linhas e escreva as linhas na tela.
    Vejamos:

Escreve "Qual o nome do arquivo a ler:"
L a
Abre #1 a

L #1 l
checa c
enquanto c=0
Escreve l
L #1 l
Checa c
Fim enquanto
Fecha #1
Termina mudo

    O exemplo acima l continuamente um arquivo e escreve as linhas
lidas na tela.
O fim da repetio acontece quando o comando checa retornar o valor 1,
indicando fim do arquivo.

    Para finalizar, gostaria apenas de acrescentar uma informao que
acabou sendo deixada de fora na aula anterior:
    Podemos abrir e manipular mais  de um arquivo ao mesmo tempo, sendo cada um
associado a um nmero diferente, por exemplo:

Abre #1 "arq1.txt"
Abre #2 "arq2.txt"&

    O exemplo acima, abre arq1.txt para leitura e arq2.txt para escrita.
    Nessas condisses, podemos fazer:
L #1 l
Escreve #2 l

    Algum saberia dizer o que essas duas linhas de cdigo
fazem?
    Quero ver quem mata essa!
    Assim terminamos a aula11

    Exerccio:

    Faa um programa que informe o nmero de caracteres de um arquivo texto.
O nome do arquivo deve ser passado pelo usurio.
    Para realizar esse exerccio com sucesso,  importante rever
comandos visto em aulas passadas, como, por exemplo, comando soma,
funo tamanho, blocos de repetio, desvio de execusso e outros
conceitos que podem ser utilizados na construo desse programa.

*Prazo de entrega at o dia 05/11 (devido a complexidade do trabalho
para quem est ainda com dificuldades de assimilar o contedo ), enviando a resposta para o endereo
sanfersite@uol.com.br

    Boa sorte!
