Introdução ao Fortran 90-7

Documentos relacionados
Introdução ao Fortran 90. Aula 3

PROGRAMAÇÃO DE COMPUTADORES

9/24/2014. Prof. André Backes

ESTRUTURA DE DADOS -ARQUIVOS. Prof. Angelo Augusto Frozza, M.Sc.

Faculdade de Computação

CFAC: Programação em FORTRAN - V

Capítulo 10. MATRIZES

Programação estruturada no Fortran 90-1

Python: Entrada e Saída. Claudio Esperança

Linguagem e Técnicas em Programação. Gilson de Souza Carvalho

Linguagens de Programação

Programação estruturada no Fortran 90-2

PROGRAMAÇÃO de COMPUTADORES: LINGUAGEM FORTRAN 90/95

/media/juan/c c/ l5q14.f90 Página 1 de 7 ter 11 jun :23:20-03 module implicit none character dimension allocatable real

Lista de Comandos: Arquivo texto e Binário

UFRJ IM - DCC. Sistemas Operacionais I. Unidade IV Gerência de Recursos Entrada e Saída. 02/12/2014 Prof. Valeria M. Bastos

UNIVERSIDADE ESTADUAL PAULISTA JÚLIO DE MESQUITA FILHO

Capítulo 11 Sistemas de Arquivos

Comandos de Entrada/Saída de Dados

Programação estruturada no Fortran 90-3

Ambiente de desenvolvimento

Introdução ao Fortran 90-3

Introdução ao Fortran 90-1

Câmpus de Bauru Plano de Ensino Curso Ênfase Identificação Disciplina Docente(s) Unidade Departamento Créditos Carga Horária Seriação ideal

Introdução ao Fortran 90-3

Introdução ao Fortran 90-4

Estruturas de Sistemas Operacionais

1. [VETOR][SALA] Cálculo da média aritmética de 10 valores armazenados em um vetor.

Arquivos O QUE É, COMO LER E MANIPULAR

Programação em FORTRAN V. João Manuel R. S. Tavares

MCG126 Programação de Computadores II

SISTEMASDE. SW, APP e SO - 2º trimestre Patrícia Lucas

Prof. Natalia Castro Fernandes Mestrado em Telecomunicações UFF 2º semestre/2012

Organização e Arquitetura de Computadores I

2010 ROLAND CORPORATION

LISTA DE EXERCÍCIOS 15 ( Matrizes (7Cs))

Computação Eletrônica. Aula 12 Arquivos Texto e Binário. Prof: Luciano Barbosa. CIn.ufpe.br

Fundamentos Programação

SISTEMAS OPERACIONAIS. 2ª. Lista de Exercícios Parte 2

Programação I A Linguagem C. Prof. Carlos Alberto

Introdução ao Fortran 90-5

Pascal. -Cabeçalho do programa. - label - const - type - var - procedure - function. - integer - real - byte - boolean - char - string

GEO764 - Programação avançada em Geofísica. Entrada e saída no Fortran 90. Comando OPEN. Comando OPEN: exemplo

ARQUIVO EXTERNO: LEITURA, ESCRITA (sem formato e com formato)

Introdução ao Fortran 90-1

3.1 - Funções para manipular dados de entrada e saída padrão

Arquivos. Introdução à Programação SI1

Capítulo 6: Arquivos

Sabe-se que as unidades de entrada e saída são dos dispositivos que possibilitam a comunicação entre o usuário e o computador.

Programação de Computadores:

11 ª Lista de Exercícios

Programação de Computadores. Primeiro contato

MATRIZES. 1) Faça um programa em Fortran que recebe como parâmetro uma matriz A (nxn) de números reais. Esse programa deve informar

MC-102 Aula 24 Arquivos em C e Parâmetros do Programa

Sistemas Operacionais

Introdução à Programação. Operadores, Expressões Aritméticas e Entrada/Saída de Dados

Computação Eletrônica. Arquivo

Matrizes (Vetores Bidimensionais)

Sistemas Operacionais

FORTRAN 95 - TEXTO LENZI, Orlando ARQUIVO EXTERNO

Sistemas Operacionais Arquivos. Carlos Ferraz Jorge Cavalcanti Fonsêca

Computação 1 - Python Aula 11 - Teórica. programa principal. João Carlos, Carla Delgado, Ana Luisa Duboc 1/ 29

Linguagem de Programação C. Arquivos

CURSO BÁSICO DE PROGRAMAÇÃO AULA 5. Revisão Laços de Repetição

Programação de Computadores:

Lista de Exercícios ICC 1 Ponteiros

Manipulação de Arquivos

Métodos de Programação I Ana Maria de Almeida

Arquivos. Arquivos correspondem a unidades de armazenamento, tipicamente gravados em unidades de memória secundária.

Autor: Rudi Gaelzer IFM/UFPel Impresso: 7 de maio de 2012

Sistema de Arquivos. Introdução

SISTEMAS OPERACIONAIS. 3ª. Lista de Exercícios

CADERNO DE EXERCÍCIOS ALGORITMOS

Entrada e saída. Marco A L Barbosa malbarbo.pro.br. Departamento de Informática Universidade Estadual de Maringá

INTRODUÇÃO A SISTEMAS DE ARQUIVO E GERENCIA DE MEMÓRIA

Introdução ao FORTRAN 90. Aula 4

Modelo de Von Neumann

INTRODUÇÃO AOS SISTEMAS DE ARQUIVO. Prof. Hélio Esperidião

LISTA DE EXERCÍCIOS 2

LISTA DE EXERCÍCIOS: 2ª Unidade Funções

Programação de Computadores II

Tutorial de Turbo Pascal

Estruturas de controle: Estrutura de DECISÃO

Aula Anterior. Decomposição algorítmica (continuação)

Capítulo 13: Sistemas de E/S. Operating System Concepts with Java 7th Edition, Nov 15, 2006

TRABALHANDO COM ARQUIVOS ENTRADAS/SAÍDAS (I/O) DE DADOS

Apostila de Fortran. É uma pseudo-linguagem a qual oferece recursos para que o programador possa codificar e testar os seus algoritmos.

Arquivos de Texto UFOP 1/41

LINGUAGEM C: ARRAYS DE CARACTERES: STRINGS

Introdução ao fortran 90 - Aula 1

LINGUAGEM C: ARQUIVOS

Exercícios de Sistemas Operacionais 3 B (1) Gerência de Dispositivos de Entrada e Saída

Introdução a Programação. Curso: Sistemas de Informação Programação I José R. Merlin

Programação de Microcontroladores II

Linguagem Pascal. Prof. Antonio Almeida de Barros Junior

ESTRUTURA HOMOGÊNEA: VETORES/ARRAYS

Linguagem e Técnicas em Programação. Gilson de Souza Carvalho

Capítulo 11. GRÁFICOS COM WGNUPLOT

Resumo. 1- Introdução. 2- Matrizes e Arquivos Vetores e Matrizes

Programação de Computadores

Transcrição:

Introdução ao Fortran 90-7 Departamento de Física UFPel

O Fortran 90 permite que a entrada (E) e a saída (S) de dados seja feita a partir de um (ou vários) arquivo externo ao programa. Para o acesso E/S em um arquivo externo, é necessário que o programador: Identifique o nome do arquivo a ser usado como dispositivo de E/S Informe o tipo de acesso e uso que será feito do arquivo Associe instruções individuais de E/S com o(s) arquivo(s) em uso Quando as operações de E/S estiverem concluídas, é necessário instruir ao sistema que não é mais necessário acessar o arquivo. O acesso E/S será feito através dos comandos READ ([UNIT=]<unidade>, <lista>) e WRITE ([UNIT=]<unidade>, <lista>)

Abertura de arquivos: comando OPEN Permite que se associe (conecte) um arquivo externo a uma unidade, para realizar um acesso E/S OPEN ([UNIT=] <unidade> [, <op-list>]) <unidade>: número inteiro (entre 1 e 100) que identifica o arquivo externo de E/S a ser aberto evite o uso do número 5, por se tratar da unidade de entrada padrão (teclado) evite o uso do número 6, por se tratar da unidade de saída padrão (monitor) <op-list>: lista opcional de especificadores que caracterizam o arquivo externo a ser aberto FILE = <fln> STATUS = <status> ACTION = <act> ACCESS = <acc> POSITION = <pos> Outros...

Abertura de arquivos: comando OPEN Usando unidades lógicas pré-conectadas OPEN ([UNIT=] <unidade>) Unidades pré-conectadas: 5 (entrada via teclado) e 6 (saída no monitor) r e a l : : b open ( unit =5) read ( 5, ) b! l e i t u r a do t e c l a d o open ( unit =6) write ( 6, ) dado =, b! e s c r i t a no monitor Os comando acima podem ser substituídos por READ*, ou READ (*,*) e PRINT*, ou WRITE (*,*)

Abertura de arquivos: comando OPEN Usando unidades lógicas externas via arquivos de dados OPEN ([UNIT=] <unidade>, FILE= <fln>) <fnl>: expressão de caracteres que fornece o nome do arquivo r e a l : : b open ( unit =10, f i l e = input. dat ) read ( 1 0, ) b! l e i t u r a do arquivo open ( unit =20, f i l e = dados. dat ) write ( 2 0, ) dado =, b! e s c r i t a no arquivo O arquivo de entrada input.dat deve conter a mesma estrutura dos READ do programa 1 0. 0! dado de entrada

Abertura de arquivos: comando OPEN Usando unidades lógicas externas via arquivos de dados OPEN ([UNIT=] <unidade>, FILE= <fln>) <fnl>: expressão de caracteres que fornece o nome do arquivo r e a l : : b open ( unit =10, f i l e = input. dat ) read ( 1 0, ) b! l e i t u r a do arquivo open ( unit =20, f i l e = dados. dat ) write ( 2 0, ) dado =, b! e s c r i t a no arquivo O arquivo de saída dados.dat será criado no diretório onde o programa é executado dado = 10. 0000000

Abertura de arquivos: comando OPEN Usando unidades lógicas externas via arquivos de dados OPEN ([UNIT=] <unidade>, FILE= <fln>) <fnl>: expressão de caracteres que fornece o nome do arquivo, caso o arquivo esteja num diretório distinto do de trabalho r e a l : : b open ( unit =10, f i l e =.. / input. dat )! um d i r e t o r i o abaixo read ( 1 0, ) b! l e i t u r a do arquivo open ( unit =20, f i l e = / home / usuario / t e s t e / dados. dat ) write ( 2 0, ) dado =, b! e s c r i t a no arquivo O arquivo de saída dados.dat será criado no diretório teste indicado no caminho dado = 10. 0000000

Abertura de arquivos: comando OPEN Usando unidades lógicas externas via arquivos de dados OPEN ([UNIT=] <unidade>, FILE= <fln>, STATUS= <status>) <status>: expressão de caracteres que fornece o status do arquivo r e a l : : b open ( unit =10, f i l e = input. dat, s t a t u s= OLD ) read ( 1 0, ) b! l e i t u r a do arquivo open ( unit =20, f i l e = dados. dat, s t a t u s= NEW ) write ( 2 0, ) dado =, b! e s c r i t a no arquivo status OLD: arquivo já existe; se não existir, ocorrerá um erro de execução status NEW: arquivo será criado pelo programa; se já existir, ocorrerá um erro de execução

Abertura de arquivos: comando OPEN Usando unidades lógicas externas via arquivos de dados OPEN ([UNIT=] <unidade>, FILE= <fln>, STATUS= <status>) <status>: expressão de caracteres que fornece o status do arquivo r e a l : : b open ( unit =10, f i l e = input. dat, s t a t u s= OLD ) read ( 1 0, ) b! l e i t u r a do arquivo open ( unit =20, f i l e = dados. dat, s t a t u s= REPLACE ) write ( 2 0, ) dado =, b! e s c r i t a no arquivo status REPLACE: se o arquivo não existe, ele será criado; se já existir, este será eliminado e um novo arquivo é criado com o mesmo nome status SCRATCH: o arquivo é temporário e será deletado quando este for fechado com o comando CLOSE ou na saída da unidade de programa

Abertura de arquivos: comando OPEN Usando unidades lógicas externas via arquivos de dados OPEN ([UNIT=] <unidade>, FILE= <fln>, ACTION= <act>) <act>: expressão de caracteres que indica como o arquivo será usado r e a l : : b open ( unit =10, f i l e = input. dat, s t a t u s= OLD, ACTION= READ ) read ( 1 0, ) b! l e i t u r a do arquivo open ( unit =20, f i l e = dados. dat, ACTION= WRITE ) write ( 2 0, ) dado =, b! e s c r i t a no arquivo action READ : os comandos WRITE, PRINT e FILE não devem ser usados; se usados, uma mensagem de erro de compilação será apresentada action WRITE : o comando READ não pode ser usado; se usado, uma mensagem de erro de compilação será apresentada action READWRITE : não há restrição de uso

Fechamento de arquivos: comando CLOSE Usando unidades lógicas externas via arquivos de dados CLOSE ([UNIT=] <unidade>) Permite que se desassocie um arquivo externo a uma unidade r e a l : : b open ( unit =10, f i l e = input. dat, s t a t u s= OLD ) read ( 1 0, ) b! l e i t u r a do arquivo open ( unit =20, f i l e = dados. dat, s t a t u s= NEW ) write ( 2 0, ) dado =, b! e s c r i t a no arquivo c l o s e ( unit =10) c l o s e ( 2 0 ) Uma vez fechado o arquivo, a unidade que estava sendo usada pode ser associada na abertura de outro arquivo dentro do programa

Fim de arquivo de entrada: opção IOSTAT=<ios> Usado quando não sabemos o número de dados a serem lidos do arquivo de entrada READ ([UNIT=]<unidade>, [FMT=]<formato>, IOSTAT=<ios>) <ios>: variável inteira que armazena o status do processo de leitura <ios> = 0: quando o comando é executado sem erros <ions> > 0: quando ocorre um erro na execução do comando <ios> < 0: quando uma condição de final de arquivo é detectada

Fim de arquivo de entrada: opção IOSTAT=<ios> Tarefa: Considere o arquivo input.dat, com os dados listados em duas colunas: 0. 0 0. 0 1. 0 2. 0 2. 0 4. 0 3. 0 8. 0 Queremos fazer um programa que execute os seguintes passos: Ler o arquivo para saber quantas linhas deverão ser lidas Usar esta identificação para alocar de forma dinâmica os vetores x e y que armazenarão os dados Ler os dados do arquivo Fazer a saída dos dados lidos através do monitor

Fim de arquivo de entrada: opção IOSTAT=<ios> i n t e g e r : : i, ndata, s t a t real, dimension ( : ), a l l o c a t a b l e : : x, y open ( unit =10, f i l e = input. dat, s t a t u s= old, a c t i o n= read ) ndata = 0 do read ( 1 0,, i o s t a t = s t a t ) i f ( s t a t < 0) e x i t ndata = ndata + 1 end do c l o s e ( unit =10) p r i n t, numero de dados =, ndata a l l o c a t e ( x ( ndata ), y ( ndata ) ) open ( unit =10, f i l e = input. dat, s t a t u s= old, a c t i o n= read ) do i = 1, ndata read ( 1 0, ) x ( i ), y ( i ) p r i n t, x ( i ), y ( i ) end do c l o s e ( 1 0 )

Operação com matrizes Tarefa: Considere a Matriz B, com forma (/5,4/), armazenada num arquivo Arquivo matrizb.dat 1 4 0 10 2 4 3 0 B = 5 3 0 11 7 1 2 9 11 1 4 4 1 4 0 10 2 4 3 0 5 3 0 11 7 1 2 9 11 1 4 4 Queremos fazer um programa que execute os seguintes passos: Ler o arquivo matrizb.dat, linha por linha, armazenando os dados nos elementos B(i,j) da matriz Fazer a saída dos dados lidos através do monitor, no formato da matriz B original Fazer a saída dos dados lidos num arquivo, numa forma sequencial

Operação com matrizes integer, parameter : : l i n h a s = 5, colunas = 4 i n t e g e r : : i, j integer, dimension ( linhas, colunas ) : : B open ( unit =10, f i l e = matrizb. dat, s t a t u s= old, a c t i o n= read ) do i = 1, l i n h a s read ( 1 0,, i o s t a t = s t a t ) ( B ( i, j ), j = 1, colunas ) end do do i = 1, l i n h a s p r i n t ( 4 ( I2, 1X ) ), ( B ( i, j ), j = 1, colunas ) end do c l o s e ( unit =10) A saída no monitor será como mostrado abaixo 1 4 0 10 2 4 3 0 5 3 0 11 7 1 2 9 11 1 4 4

Operação com matrizes integer, parameter : : l i n h a s = 5, colunas = 4 i n t e g e r : : i, j integer, dimension ( linhas, colunas ) : : B open ( unit =10, f i l e = matrizb. dat, s t a t u s= old, a c t i o n= read ) do i = 1, l i n h a s read ( 1 0, ) ( B ( i, j ), j = 1, colunas ) end do c l o s e ( unit =10) open ( unit =20, f i l e = dados. dat, s t a t u s= new, a c t i o n= write ) write ( 2 0, (A) ) # Matriz B l i d a : write ( 2 0, ) write ( 2 0, ( 2 0 ( I3, 1 x ) ) ) B c l o s e ( 2 0 ) A saída no arquivo dados.dat será como mostrado abaixo # Matriz B l i d a : 1 2 5 7 11 4 4 3 1 1 0 3 0 2 4 10 0 11 9 4

Operação com matrizes Tarefa: Usando dois vetores a e b, a = 10.0 i + 2.5 j + 0.5 k e a = 4.5 i 10.2 j + 1.5 k, lidos a partir de um arquivo, faça um programa que calcule e imprima o produto vetorial c = a b destes vetores. Para este cálculo, use a convenção para o produto vetorial, 3 3 c i = ε ijk a j b k, j=1 onde c i é a componente i do vetor c, e ε ijk é o tensor de Levi-Civita, que assume os seguintes valores, dependendo das possíveis combinações para os índices (i, j, k), ε ijk = k=1 1 se (1, 2, 3) ou (2, 3, 1) ou (3, 1, 2) 1 se (3, 2, 1) ou (1, 3, 2) ou (2, 1, 3) 0 se i = j ou i = k ou j = k

Operação com matrizes integer, parameter : : dim = 3 r e a l : : a ( dim ), b ( dim ), c ( dim ), e i j k i n t e g e r : : i, j, k open ( unit =10, f i l e = vetores. dat ) read ( 1 0, ( 3 ( F5. 1, 1 x ) ) ) ( a ( i ), i = 1, dim ) read ( 1 0, ( 3 ( F5. 1, 1 x ) ) ) ( b ( i ), i = 1, dim ) write ( 1 0, ( " vetor a : " ) ) write ( 1 0, (5 x, 3 ( F5. 1, 1 x ) ) ) ( a ( i ), i = 1, dim ) write ( 1 0, ( " vetor b : " ) ) write ( 1 0, (5 x, 3 ( F5. 1, 1 x ) ) ) ( b ( i ), i = 1, dim )! (... bloco para produto v e t o r i a l... ) write ( 1 0, ( " produto v e t o r i a l c = a x b : " ) ) write ( 1 0, (5 x, 3 ( F5. 2, 1 x ) ) ) ( c ( i ), i = 1, dim ) c l o s e ( 1 0 )

Operação com matrizes! (... bloco para produto v e t o r i a l... ) c = 0. 0 do i = 1, dim do j = 1, dim do k = 1, dim i f ( ( i == 1. and. j == 2. and. k == 3). or. & ( i == 2. and. j == 3. and. k == 1). or. & ( i == 3. and. j == 1. and. k == 2 ) ) then e i j k = 1. 0 e l s e i f ( ( i == 3. and. j == 2. and. k == 1). or. & ( i == 1. and. j == 3. and. k == 2). or. & ( i == 2. and. j == 1. and. k == 3 ) ) then e i j k = 1.0 e l s e e i j k = 0. 0 end i f c ( i ) = c ( i ) + e i j k a ( j ) b ( k ) end do end do end do (... )

Operação com matrizes A entrada formatada exige que os dados sejam apresentados exatamente como nos formatos descritos no comando READ (... ) read ( 1 0, ( 3 ( F5. 1, 1 x ) ) ) ( a ( i ), i = 1, dim ) read ( 1 0, ( 3 ( F5. 1, 1 x ) ) ) ( b ( i ), i = 1, dim ) (... ) Conteúdo do arquivo vetores.dat Arquivo vetores.dat após a execução do código 10.0 2. 5 0. 5 4. 5 10.2 1. 5 vetor a : 10.0 2. 5 0. 5 vetor b : 4. 5 10.2 1. 5 produto v e t o r i a l c = a x b : 8. 8 5 1 7. 2 5 9 0. 75

TAREFA 5: Considere duas matrizes A e B A = 1 3 0 2 4 2 1 0 1 B = 1 3 4 5 10 2 Construa um programa que faça a leitura formatada das matrizes a partir de um arquivo de entrada, calcula o produto das duas matrizes e apresenta a saída formatada das matrizes originais A e B e do produto delas num outro arquivo. Data limite de entrega: 09/11/2016 (mandar arquivos.f90 e de entrada de dados para email diehl1964@gmail.com)