arquivos - instituto de computação - ufftneves/programacao/aula7.pdf · exercício faça um ......
TRANSCRIPT
![Page 1: Arquivos - Instituto de Computação - UFFtneves/programacao/aula7.pdf · Exercício Faça um ... Muitas vezes é necessário formatar a saída de ... .5)" formato de ponto flutuante](https://reader033.vdocuments.pub/reader033/viewer/2022052610/5bf3122309d3f2f85f8b9b22/html5/thumbnails/1.jpg)
Arquivos
● Um arquivo é um conjunto de dados organizados de um modo particular
● Podem ser mantidos em memória principal ou secundária
![Page 2: Arquivos - Instituto de Computação - UFFtneves/programacao/aula7.pdf · Exercício Faça um ... Muitas vezes é necessário formatar a saída de ... .5)" formato de ponto flutuante](https://reader033.vdocuments.pub/reader033/viewer/2022052610/5bf3122309d3f2f85f8b9b22/html5/thumbnails/2.jpg)
Arquivos
● open(descritor, file=“nomeArquivo”) habilita o →acesso ao arquivo descrito em “nomeArquivo” para uso através do descritor. Caso o arquivo ainda não exista ele será criado
● Após o nome do arquivo podem ser especificadas diversas opções como Action, que especifica o tipo de ação (leitura/escrita), Acces, que determina o tipo de acesso (sequencial/direto), entre vários outros
![Page 3: Arquivos - Instituto de Computação - UFFtneves/programacao/aula7.pdf · Exercício Faça um ... Muitas vezes é necessário formatar a saída de ... .5)" formato de ponto flutuante](https://reader033.vdocuments.pub/reader033/viewer/2022052610/5bf3122309d3f2f85f8b9b22/html5/thumbnails/3.jpg)
Arquivos
● Close(descritor) fecha o arquivo indicado por →descritor
● Este comando informa que o arquivo associado ao descritor não é mais necessário
![Page 4: Arquivos - Instituto de Computação - UFFtneves/programacao/aula7.pdf · Exercício Faça um ... Muitas vezes é necessário formatar a saída de ... .5)" formato de ponto flutuante](https://reader033.vdocuments.pub/reader033/viewer/2022052610/5bf3122309d3f2f85f8b9b22/html5/thumbnails/4.jpg)
Exemplo
program testeArqv
implicit none
real::a,b,c
a=10.0/3.0
b=sqrt(2.0)
c=sin(0.645)
open(10,file="data.txt")
write(10,*)a,b,c
close(10)
end program testeArqv
![Page 5: Arquivos - Instituto de Computação - UFFtneves/programacao/aula7.pdf · Exercício Faça um ... Muitas vezes é necessário formatar a saída de ... .5)" formato de ponto flutuante](https://reader033.vdocuments.pub/reader033/viewer/2022052610/5bf3122309d3f2f85f8b9b22/html5/thumbnails/5.jpg)
Exercício
● Faça um programa que salve em um arquivo os valores de um vetor
![Page 6: Arquivos - Instituto de Computação - UFFtneves/programacao/aula7.pdf · Exercício Faça um ... Muitas vezes é necessário formatar a saída de ... .5)" formato de ponto flutuante](https://reader033.vdocuments.pub/reader033/viewer/2022052610/5bf3122309d3f2f85f8b9b22/html5/thumbnails/6.jpg)
Exercício
● Faça um programa que salve em arquivo os elementos de uma matriz. O nome do arquivo e os valores da matriz devem ser informados pelo usuário
![Page 7: Arquivos - Instituto de Computação - UFFtneves/programacao/aula7.pdf · Exercício Faça um ... Muitas vezes é necessário formatar a saída de ... .5)" formato de ponto flutuante](https://reader033.vdocuments.pub/reader033/viewer/2022052610/5bf3122309d3f2f85f8b9b22/html5/thumbnails/7.jpg)
exercício
● Faça um programa que leia de um arquivo os valores de um vetor. O nome do arquivo deve ser informado pelo usuário
![Page 8: Arquivos - Instituto de Computação - UFFtneves/programacao/aula7.pdf · Exercício Faça um ... Muitas vezes é necessário formatar a saída de ... .5)" formato de ponto flutuante](https://reader033.vdocuments.pub/reader033/viewer/2022052610/5bf3122309d3f2f85f8b9b22/html5/thumbnails/8.jpg)
Exercício
● Faça um programa que leia uma matriz no formato descrito abaixo
1 2 3
4 5 6
7 8 9
![Page 9: Arquivos - Instituto de Computação - UFFtneves/programacao/aula7.pdf · Exercício Faça um ... Muitas vezes é necessário formatar a saída de ... .5)" formato de ponto flutuante](https://reader033.vdocuments.pub/reader033/viewer/2022052610/5bf3122309d3f2f85f8b9b22/html5/thumbnails/9.jpg)
Formatos
● Muitas vezes é necessário formatar a saída de modo somente alguns dígitos sejam considerados
● Exemplo: pi = 3.141592
● Desejase imprimir apenas 3.14
![Page 10: Arquivos - Instituto de Computação - UFFtneves/programacao/aula7.pdf · Exercício Faça um ... Muitas vezes é necessário formatar a saída de ... .5)" formato de ponto flutuante](https://reader033.vdocuments.pub/reader033/viewer/2022052610/5bf3122309d3f2f85f8b9b22/html5/thumbnails/10.jpg)
Exemplo
program precisao
real::b
b=sqrt(5.0)/1000
write(*,*)b
write(*,"(f7.5)")b
write(*,"(e10.3)")b
end program precisao
![Page 11: Arquivos - Instituto de Computação - UFFtneves/programacao/aula7.pdf · Exercício Faça um ... Muitas vezes é necessário formatar a saída de ... .5)" formato de ponto flutuante](https://reader033.vdocuments.pub/reader033/viewer/2022052610/5bf3122309d3f2f85f8b9b22/html5/thumbnails/11.jpg)
● "(f7.5)" formato de ponto flutuante f com 7 →dígitos totais (. e sinal são contados) sendo 5 casas decimais
● "(e10.3)" formato de notação científica com →10 digitos totais (. , sinal e o “e” são contados) sendo 3 para as casas decimais
![Page 12: Arquivos - Instituto de Computação - UFFtneves/programacao/aula7.pdf · Exercício Faça um ... Muitas vezes é necessário formatar a saída de ... .5)" formato de ponto flutuante](https://reader033.vdocuments.pub/reader033/viewer/2022052610/5bf3122309d3f2f85f8b9b22/html5/thumbnails/12.jpg)
● "(I10.5)" formato de inteiros i com 10 dígitos →totais (sinal é contado) sendo 5 digitos no mínimo
● “(E20.7E2)” Notação científica com total de →20 dígitos (0, .,e,sinais contam), sendo 7 para o número normalizado e 2 para o expoente
![Page 13: Arquivos - Instituto de Computação - UFFtneves/programacao/aula7.pdf · Exercício Faça um ... Muitas vezes é necessário formatar a saída de ... .5)" formato de ponto flutuante](https://reader033.vdocuments.pub/reader033/viewer/2022052610/5bf3122309d3f2f85f8b9b22/html5/thumbnails/13.jpg)
● Pi=3.141592● Write(*, “(E12.5)”)pi● Write(*, “(E12.3E4)”)pi● Write(*, “(E12.7E1)”)pi
![Page 14: Arquivos - Instituto de Computação - UFFtneves/programacao/aula7.pdf · Exercício Faça um ... Muitas vezes é necessário formatar a saída de ... .5)" formato de ponto flutuante](https://reader033.vdocuments.pub/reader033/viewer/2022052610/5bf3122309d3f2f85f8b9b22/html5/thumbnails/14.jpg)
Variantes
● ES similar ao E só que com pelo menos uma →casa inteira
● EN – Similar ao E, expoentes são sempre múltiplos de 3
![Page 15: Arquivos - Instituto de Computação - UFFtneves/programacao/aula7.pdf · Exercício Faça um ... Muitas vezes é necessário formatar a saída de ... .5)" formato de ponto flutuante](https://reader033.vdocuments.pub/reader033/viewer/2022052610/5bf3122309d3f2f85f8b9b22/html5/thumbnails/15.jpg)
● “(L3)” Descritor lógico que indica que o valor →lógico deve ser escrito com 3 dígitos
● “(A3)” Descritor de texto que indica que o →texto deve ser escrito usando 3 caractéres
![Page 16: Arquivos - Instituto de Computação - UFFtneves/programacao/aula7.pdf · Exercício Faça um ... Muitas vezes é necessário formatar a saída de ... .5)" formato de ponto flutuante](https://reader033.vdocuments.pub/reader033/viewer/2022052610/5bf3122309d3f2f85f8b9b22/html5/thumbnails/16.jpg)
Múltiplos Padrões
● Mais de um padrão pode ser usado em um formato
● Exemplo: write(*, “(I5,f7.3)”) a,b
imprime a usando I5 e b usando f7.3
● Separar os múltiplos padrões por virgulas
![Page 17: Arquivos - Instituto de Computação - UFFtneves/programacao/aula7.pdf · Exercício Faça um ... Muitas vezes é necessário formatar a saída de ... .5)" formato de ponto flutuante](https://reader033.vdocuments.pub/reader033/viewer/2022052610/5bf3122309d3f2f85f8b9b22/html5/thumbnails/17.jpg)
Repetição de padrões
● “(2I5)” equivalente à “(I5,I5)”→
● “(I5,2f7.3,2I5)” “(I5,f7.3,f7.3,I5,I5)” →
![Page 18: Arquivos - Instituto de Computação - UFFtneves/programacao/aula7.pdf · Exercício Faça um ... Muitas vezes é necessário formatar a saída de ... .5)" formato de ponto flutuante](https://reader033.vdocuments.pub/reader033/viewer/2022052610/5bf3122309d3f2f85f8b9b22/html5/thumbnails/18.jpg)
Controle horizontal
● X indica um espaço em branco→
● rX r espaços em branco→
● Exemplo
INTEGER :: a
REAL :: b
CHARACTER(1) :: c
READ(*,"(2X,I4,3X,F5.2,2X,A)") a, b, c
write(*,*)a,b,c
![Page 19: Arquivos - Instituto de Computação - UFFtneves/programacao/aula7.pdf · Exercício Faça um ... Muitas vezes é necessário formatar a saída de ... .5)" formato de ponto flutuante](https://reader033.vdocuments.pub/reader033/viewer/2022052610/5bf3122309d3f2f85f8b9b22/html5/thumbnails/19.jpg)
Tabulação
● tc salta para a posição c→
● tlc movimenta c casas para a esquerda→
● trc movimenta c casas para a direita→
![Page 20: Arquivos - Instituto de Computação - UFFtneves/programacao/aula7.pdf · Exercício Faça um ... Muitas vezes é necessário formatar a saída de ... .5)" formato de ponto flutuante](https://reader033.vdocuments.pub/reader033/viewer/2022052610/5bf3122309d3f2f85f8b9b22/html5/thumbnails/20.jpg)
Controle vertical
● / e r/ ● Entrada: A linha atual é pulada e o restante das
informações não lidas ignoradas. O processo de leitura recomeça na primeira posição da próxima linha
● Saída: A linha atual é impressa e o próximo item é impresso na próxima linha
● Virgulas não são necessárias para separar múltiplos caracteres. Ex: //=/,/
![Page 21: Arquivos - Instituto de Computação - UFFtneves/programacao/aula7.pdf · Exercício Faça um ... Muitas vezes é necessário formatar a saída de ... .5)" formato de ponto flutuante](https://reader033.vdocuments.pub/reader033/viewer/2022052610/5bf3122309d3f2f85f8b9b22/html5/thumbnails/21.jpg)
Exercício
● Faça um programa que leia um vetor a partir de um arquivo e imprima um relatório de acordo com o formato abaixo
Pos valor
=== ======
1 100.00
2 231.00
...
14 250.00
15 379.00
Media = 1.7860001E+02
![Page 22: Arquivos - Instituto de Computação - UFFtneves/programacao/aula7.pdf · Exercício Faça um ... Muitas vezes é necessário formatar a saída de ... .5)" formato de ponto flutuante](https://reader033.vdocuments.pub/reader033/viewer/2022052610/5bf3122309d3f2f85f8b9b22/html5/thumbnails/22.jpg)
...
Average = Average / ActualSize
WRITE(*,"(A, A)") " ", " Pos Valor "
WRITE(*,"(A, A)") " ", "=== ======"
DO i = 1, size
WRITE(*,"(I4, F7.2)") i, vet(i)
END DO
WRITE(*,*)
WRITE(*,"(A,A,ES15.7)") " ", "Media = ", Average
...