****************************************************************** 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! =================================================================