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