******************************************************************
                Instru��es sobre:
******************************************************************

 1. Como criar um arquivo com dados de entrada.

 2. Como executar o seu programa (j� compilado) fazendo a leitura
    dos dados a partir de um  arquivo de dados. 

 3. Como salvar a saida (as mensagens e os valores especificados nos
    comandos printf de seu programa) num arquivo de saida.

******************************************************************


1. Como criar um arquivo com dados de entrada.
   ===========================================

 Para criar um arquivo de dados, proceda normalmente, como se fosse
 criar um arquivo que cont�m um programa em c.

 Voc� escolhe a op��o de criar um file, que v. pode chamar por
 exemplo, entrada.txt

 Nesse arquivo (entrada.txt) voc� digita os dados. Por exemplo, no
 caso do ep2, voc� pode digitar:

19
v  70.00   3.2   15
p 850.05   3.2   15
n 850.05  70.0  3.2 
j 850.05  70.0   15
v  70  1  15
p 980.26 1  15
n 980.25 70.0  1
j 980.25 70.0  15
v  90 50 2
p 150 50 2
n 150 90 50
j 150 90 2
v 1000 200 10
p 1499.97 200 10
n 1499.97 1000 200
j 1499.97 1000 10
n 1200 100 10
n 20810 1000 5
n 20805.8 1000 5

 Salve esse arquivo normalmente (v. pode especificar em qual
 subdiretorio v. quer armazen�-lo). 

Dicas sobre o ep2:

 Neste exemplo, o primeiro valor 19 corresponde ao n�mero de op��es a
 serem tratadas (este valor deve ser lido logo no inicio).  Depois,
 vao seguir os c�digos das op��es e os correspondentes dados.

 O seu programa dever� ser concebido de forma a ir lendo os dados
 nessa ordem: primeiro o c�digo (vari�vel tipo 'char', a ser lido com
 o formato %1s), e depois os valores correspondentes a essa op��o.  Ou
   ===========
 seja, se o c�digo lido � 'v', ent�o v. sabe que os pr�ximos valores
 correspondem ao valor da presta��o, valor dos juros e o n�mero de
 meses.
 
 Neste caso, como v. nao vai ficar entrando com cada dado, 
 v. n�o precisa (e nem deve) ter comandos do tipo

 printf("Entre o total de op��es ");
 
 Para ler o seu primeiro dado, o total de op��es, voc� s� coloca o
 comando:

 scanf("%d", &total);
 
 Depois, como v. vai querer imprimir essa informa��o, coloque um
 comando do tipo:

 printf("Numero de op��es = %d\n", total);

 O programa fica do jeito que v. tem feito normalmente. Se v. vai
 receber os dados de um arquivo de dados, v. n�o deve ficar
 solicitando dados pelo teclado. Ou seja, comandos do tipo
 printf("De o proximo dado:") devem ser omitidos.

-----------------------------------------------------------------

 2. Como executar o seu programa (j� compilado) fazendo a leitura
    dos dados a partir de um arquivo de dados, chamado entrada.txt.
    =============================================================

 Compile normalmente o seu programa. O seu programa execut�vel ficar�
 armazenado no subdiret�rio do respectivo projeto, por ex. em
 subdiretorios chamados lcc1, lcc2,...(depende se v. ja' tem outros
 programas).

 Para executar o seu programa, v. deve fazer o seguinte:

  -- V� para o subdiret�rio onde est� o seu programa execut�vel.  

     Como fazer isso: se v. usa o Windows, entre em "Programas",
     "Acessorios" e "MS-DOS prompt". A partir da unidade C, na linha de
     comando, va' especificando em qual diretorio v. quer entrar, ate'
     chegar no diretorio onde se encontra o seu programa execut�vel
     (que se chama, por exemplo, ep2.exe).

     O comando 'dir' (sem as aspas) lista os diretorios e arquivos do
     diretorio corrente. Para mudar de diretorio, use o comando
     'cd <nome do diretorio>'. Com isso, alterando os comandos 'dir'
     e 'cd ....', v. chega no diretorio desejado.

     Se v. ja' sabe qual e' o diretorio desejado, basta fazer, por ex:

     cd diretorio1/diretorio2/diretorio3/lcc1
   
    
 --- Estando no diretorio (digamos lcc1) onde ficou armazenado o seu
     programa execut�vel, se o arquivo de dados chamado entrada.txt
     estiver nesse mesmo diretorio, na linha de comando execute o seu
     programa, digamos ep2, dando o seguinte comando:

     ep2 < entrada.txt  

    Voc� ver� na tela as mensagens correspondentes aos printf que v. tem
    no seu programa. Caso v. queira salvar essa saida num arquivo (para
    ver com calma), v. pode fazer isso tamb�m (veja o pr�ximo item).

    OBS: Se o seu programa execut�vel ep2.exe est� no subdiretorio  
         lcc1, mas o arquivo entrada.txt nao est� nesse subdiretorio,
         v. deve copiar entrada.txt para esse mesmo subdiretorio lcc1,
         e s� depois dar o comando  ep2 < entrada.txt. 

         Ou entao, v. deve especificar onde est� o arquivo
         entrada.txt, por exemplo fazendo:

         ep2 < /diretorio1/diretorio2/diretorio3/entrada.txt

         Ou, v. pode copiar ep2.exe no diretorio onde est� o arquivo 
         entrada.txt e dai dar o comando ep2 < entrada.txt.
 
         O fato � que, se v. nao especifica os diretorios, assume-se
         que os arquivos estao no diretorio corrente.

--------------------------------------------------------------------

 3. Como salvar a saida (as mensagens e os valores especificados nos
    comandos printf de seu programa) num arquivo de saida.
    ===============================================================

 As mensagens e os valores, que normalmente sairiam na tela, podem ser
 salvos num arquivo de saida.  Para isso, v. deve escolher um nome
 que v. ainda n�o usou para outro arquivo (desse mesmo diret�rio), por
 exemplo, saida.txt, e dar o seguinte comando:

 ep2 < entrada.txt  > saida.txt

 Neste caso, a leitura � feita do arquivo "entrada.txt" (como
 explicamos no item anterior), e a saida � salva no arquivo de nome
 saida.txt. O arquivo saida.txt, inexistente at� ent�o passar� a
 existir depois da execu��o do comando acima. Note a dire��o dos sinais.  

 Ap�s a execu��o do programa, voc� pode ver o que h� nesse arquivo: �
 exatamente a saida que v. veria na tela. 

 Varia��es:

 Caso v. queira entrar com os dados pelo teclado, e queira salvar a
 saida no arquivo "saida.txt", basta fazer:

 ep2 > saida.txt

 Note que os simbolos < e > indicam a direcao:

 Resumindo:

 ep2 < entrada.txt 
   (Neste caso, os dados que estao em entrada.txt s�o direcionados
   para ep2)

 ep2 > saida.txt
   (Neste caso, a saida de ep2 � direcionada para o arquivo
   saida.txt)

 ep2 < entrada  > saida.txt
  (Neste caso, os dados que estao em entrada.txt sao direcionados
   para ep2, e a saida de ep2 � direcionada para o arquivo
   saida.txt)

 Claramente, voc� pode escolher outros nomes para os seus arquivos de
 entrada e os de sa�da.  Caso voc� j� tenha executado o programa e
 gravado a saida num arquivo chamado "saida.txt", ao executar
 novamente mandando salvar nesse mesmo arquivo, isso n�o � feito. Voc�
 ser� avisado de que nao pode 'overwrite a existing file'). Assim,
 voc� deve ir escolhendo nomes distintos a cada vez, ou ent�o ir
 removendo aquele cujo nome v. quer usar de novo.
 
 Para testar se v. entendeu, fa�a um teste com um porgrama bem
 simples. Por exemplo, pegue o programa fatorial.c, tire o comando que
 pede o valor de n (j� que v. n�o vai fornecer pelo teclado). crie um
 arquivo, por exemplo dado.txt, e salve nele apenas um n�mero inteiro,
 por exemplo, 5.
 
 Pegue o novo programa fatorial.c e compile-o. Entre no subdiret�rio
 correspondente ao projeto que abriga o programa fatorial e execute-o
 dando o seguinte comando:

 fatorial < dado.txt > resposta.txt

 Veja depois se no arquivo "resposta.txt" est� o valor 120 (que � o
 fatorial de 5).

 Se tiver d�vidas, contate os monitores de MAC-115, ou compare�a no
 hor�rio do plant�o desses monitores. Veja na p�gina principal ou em 
 http://www.ime.usp.br/~yw/fisica2001/mac115/plantao.html

 Boa sorte!

 =================================================================