daniel ruschel dutrarns/astroprog/f90_daniel.pdf · open(50,file=’meuarquivo.dat’) formato uma...
TRANSCRIPT
![Page 1: Daniel Ruschel Dutrarns/astroprog/f90_daniel.pdf · OPEN(50,file=’meuarquivo.dat’) Formato Uma string que define a forma de ler ou escrever. ’(3f9.3)’ !3 floats de 9 d´ıgitos,](https://reader034.vdocuments.mx/reader034/viewer/2022050302/5f6b6cfc89f5414a7a6c8876/html5/thumbnails/1.jpg)
Fortran 90 e suas aplicacoes astronomicas
Daniel Ruschel Dutra
UFRGS
21 de maio de 2010
Daniel Ruschel Dutra (UFRGS) Fortran 90 21 de maio de 2010 1 / 16
![Page 2: Daniel Ruschel Dutrarns/astroprog/f90_daniel.pdf · OPEN(50,file=’meuarquivo.dat’) Formato Uma string que define a forma de ler ou escrever. ’(3f9.3)’ !3 floats de 9 d´ıgitos,](https://reader034.vdocuments.mx/reader034/viewer/2022050302/5f6b6cfc89f5414a7a6c8876/html5/thumbnails/2.jpg)
Visao geral do Fortran 90
Linguagem de baixo nıvel
Facil aprendizagemFacilidade para trabalhar com vetores e matrizesRelativamente rapido para calculos numericos
Daniel Ruschel Dutra (UFRGS) Fortran 90 21 de maio de 2010 2 / 16
![Page 3: Daniel Ruschel Dutrarns/astroprog/f90_daniel.pdf · OPEN(50,file=’meuarquivo.dat’) Formato Uma string que define a forma de ler ou escrever. ’(3f9.3)’ !3 floats de 9 d´ıgitos,](https://reader034.vdocuments.mx/reader034/viewer/2022050302/5f6b6cfc89f5414a7a6c8876/html5/thumbnails/3.jpg)
Visao geral do Fortran 90
Linguagem de baixo nıvelFacil aprendizagem
Facilidade para trabalhar com vetores e matrizesRelativamente rapido para calculos numericos
Daniel Ruschel Dutra (UFRGS) Fortran 90 21 de maio de 2010 2 / 16
![Page 4: Daniel Ruschel Dutrarns/astroprog/f90_daniel.pdf · OPEN(50,file=’meuarquivo.dat’) Formato Uma string que define a forma de ler ou escrever. ’(3f9.3)’ !3 floats de 9 d´ıgitos,](https://reader034.vdocuments.mx/reader034/viewer/2022050302/5f6b6cfc89f5414a7a6c8876/html5/thumbnails/4.jpg)
Visao geral do Fortran 90
Linguagem de baixo nıvelFacil aprendizagemFacilidade para trabalhar com vetores e matrizes
Relativamente rapido para calculos numericos
Daniel Ruschel Dutra (UFRGS) Fortran 90 21 de maio de 2010 2 / 16
![Page 5: Daniel Ruschel Dutrarns/astroprog/f90_daniel.pdf · OPEN(50,file=’meuarquivo.dat’) Formato Uma string que define a forma de ler ou escrever. ’(3f9.3)’ !3 floats de 9 d´ıgitos,](https://reader034.vdocuments.mx/reader034/viewer/2022050302/5f6b6cfc89f5414a7a6c8876/html5/thumbnails/5.jpg)
Visao geral do Fortran 90
Linguagem de baixo nıvelFacil aprendizagemFacilidade para trabalhar com vetores e matrizesRelativamente rapido para calculos numericos
Daniel Ruschel Dutra (UFRGS) Fortran 90 21 de maio de 2010 2 / 16
![Page 6: Daniel Ruschel Dutrarns/astroprog/f90_daniel.pdf · OPEN(50,file=’meuarquivo.dat’) Formato Uma string que define a forma de ler ou escrever. ’(3f9.3)’ !3 floats de 9 d´ıgitos,](https://reader034.vdocuments.mx/reader034/viewer/2022050302/5f6b6cfc89f5414a7a6c8876/html5/thumbnails/6.jpg)
Conceitos gerais
Formato quase livre, 132 caracteres por linha
Para continuar uma linha basta colocar um ”&”no finalEx:Lorem ipsum dolor sit amet, consectetur&adipisicing elit, sed do eiusmod tempor incididunt”!”denota um comentario, pode estar no meio de uma linhaOs rotulos, comuns no 77, sao desnecessariosVarios comandos podem ser colocados em uma mesma linhaEx: DO i=1,10; WRITE(*,*) vec(i); ENDDO
Daniel Ruschel Dutra (UFRGS) Fortran 90 21 de maio de 2010 3 / 16
![Page 7: Daniel Ruschel Dutrarns/astroprog/f90_daniel.pdf · OPEN(50,file=’meuarquivo.dat’) Formato Uma string que define a forma de ler ou escrever. ’(3f9.3)’ !3 floats de 9 d´ıgitos,](https://reader034.vdocuments.mx/reader034/viewer/2022050302/5f6b6cfc89f5414a7a6c8876/html5/thumbnails/7.jpg)
Conceitos gerais
Formato quase livre, 132 caracteres por linhaPara continuar uma linha basta colocar um ”&”no finalEx:Lorem ipsum dolor sit amet, consectetur&adipisicing elit, sed do eiusmod tempor incididunt
”!”denota um comentario, pode estar no meio de uma linhaOs rotulos, comuns no 77, sao desnecessariosVarios comandos podem ser colocados em uma mesma linhaEx: DO i=1,10; WRITE(*,*) vec(i); ENDDO
Daniel Ruschel Dutra (UFRGS) Fortran 90 21 de maio de 2010 3 / 16
![Page 8: Daniel Ruschel Dutrarns/astroprog/f90_daniel.pdf · OPEN(50,file=’meuarquivo.dat’) Formato Uma string que define a forma de ler ou escrever. ’(3f9.3)’ !3 floats de 9 d´ıgitos,](https://reader034.vdocuments.mx/reader034/viewer/2022050302/5f6b6cfc89f5414a7a6c8876/html5/thumbnails/8.jpg)
Conceitos gerais
Formato quase livre, 132 caracteres por linhaPara continuar uma linha basta colocar um ”&”no finalEx:Lorem ipsum dolor sit amet, consectetur&adipisicing elit, sed do eiusmod tempor incididunt”!”denota um comentario, pode estar no meio de uma linha
Os rotulos, comuns no 77, sao desnecessariosVarios comandos podem ser colocados em uma mesma linhaEx: DO i=1,10; WRITE(*,*) vec(i); ENDDO
Daniel Ruschel Dutra (UFRGS) Fortran 90 21 de maio de 2010 3 / 16
![Page 9: Daniel Ruschel Dutrarns/astroprog/f90_daniel.pdf · OPEN(50,file=’meuarquivo.dat’) Formato Uma string que define a forma de ler ou escrever. ’(3f9.3)’ !3 floats de 9 d´ıgitos,](https://reader034.vdocuments.mx/reader034/viewer/2022050302/5f6b6cfc89f5414a7a6c8876/html5/thumbnails/9.jpg)
Conceitos gerais
Formato quase livre, 132 caracteres por linhaPara continuar uma linha basta colocar um ”&”no finalEx:Lorem ipsum dolor sit amet, consectetur&adipisicing elit, sed do eiusmod tempor incididunt”!”denota um comentario, pode estar no meio de uma linhaOs rotulos, comuns no 77, sao desnecessarios
Varios comandos podem ser colocados em uma mesma linhaEx: DO i=1,10; WRITE(*,*) vec(i); ENDDO
Daniel Ruschel Dutra (UFRGS) Fortran 90 21 de maio de 2010 3 / 16
![Page 10: Daniel Ruschel Dutrarns/astroprog/f90_daniel.pdf · OPEN(50,file=’meuarquivo.dat’) Formato Uma string que define a forma de ler ou escrever. ’(3f9.3)’ !3 floats de 9 d´ıgitos,](https://reader034.vdocuments.mx/reader034/viewer/2022050302/5f6b6cfc89f5414a7a6c8876/html5/thumbnails/10.jpg)
Conceitos gerais
Formato quase livre, 132 caracteres por linhaPara continuar uma linha basta colocar um ”&”no finalEx:Lorem ipsum dolor sit amet, consectetur&adipisicing elit, sed do eiusmod tempor incididunt”!”denota um comentario, pode estar no meio de uma linhaOs rotulos, comuns no 77, sao desnecessariosVarios comandos podem ser colocados em uma mesma linhaEx: DO i=1,10; WRITE(*,*) vec(i); ENDDO
Daniel Ruschel Dutra (UFRGS) Fortran 90 21 de maio de 2010 3 / 16
![Page 11: Daniel Ruschel Dutrarns/astroprog/f90_daniel.pdf · OPEN(50,file=’meuarquivo.dat’) Formato Uma string que define a forma de ler ou escrever. ’(3f9.3)’ !3 floats de 9 d´ıgitos,](https://reader034.vdocuments.mx/reader034/viewer/2022050302/5f6b6cfc89f5414a7a6c8876/html5/thumbnails/11.jpg)
Buenas, mundo!
PROGRAM buenasWRITE(*,*)’Buenas, mundo!’END PROGRAM buenas
Daniel Ruschel Dutra (UFRGS) Fortran 90 21 de maio de 2010 4 / 16
![Page 12: Daniel Ruschel Dutrarns/astroprog/f90_daniel.pdf · OPEN(50,file=’meuarquivo.dat’) Formato Uma string que define a forma de ler ou escrever. ’(3f9.3)’ !3 floats de 9 d´ıgitos,](https://reader034.vdocuments.mx/reader034/viewer/2022050302/5f6b6cfc89f5414a7a6c8876/html5/thumbnails/12.jpg)
Declaracao de variaveis
EstruturaPROGRAM nome do programatipo 1 :: variavel 1,variavel 2(dimensoes)tipo 2 :: variavel 3comandosEND PROGRAM
Tipos de variaveisTipo Extensao Exemplo
integer ±2bits/2 -25643character > 107 caracteres ivoviuauva
logical .true. , .false. .true.
real ate 15 decimais e10200 3.14159274101257324E+157
complex dois reais ( 5.0000000 , 6.0000000 )
Daniel Ruschel Dutra (UFRGS) Fortran 90 21 de maio de 2010 5 / 16
![Page 13: Daniel Ruschel Dutrarns/astroprog/f90_daniel.pdf · OPEN(50,file=’meuarquivo.dat’) Formato Uma string que define a forma de ler ou escrever. ’(3f9.3)’ !3 floats de 9 d´ıgitos,](https://reader034.vdocuments.mx/reader034/viewer/2022050302/5f6b6cfc89f5414a7a6c8876/html5/thumbnails/13.jpg)
Declaracao de variaveis
EstruturaPROGRAM nome do programatipo 1 :: variavel 1,variavel 2(dimensoes)tipo 2 :: variavel 3comandosEND PROGRAM
Tipos de variaveisTipo Extensao Exemplo
integer ±2bits/2 -25643character > 107 caracteres ivoviuauva
logical .true. , .false. .true.
real ate 15 decimais e10200 3.14159274101257324E+157
complex dois reais ( 5.0000000 , 6.0000000 )
Daniel Ruschel Dutra (UFRGS) Fortran 90 21 de maio de 2010 5 / 16
![Page 14: Daniel Ruschel Dutrarns/astroprog/f90_daniel.pdf · OPEN(50,file=’meuarquivo.dat’) Formato Uma string que define a forma de ler ou escrever. ’(3f9.3)’ !3 floats de 9 d´ıgitos,](https://reader034.vdocuments.mx/reader034/viewer/2022050302/5f6b6cfc89f5414a7a6c8876/html5/thumbnails/14.jpg)
READ e WRITE
WRITE( 50 , ’(3f9.3)’ ) vetor
Unidade Logica
FormatoVariavel
Unidade LogicaA maneira como o fortran opera arquivos:OPEN(50,file=’meuarquivo.dat’)
FormatoUma string que define a forma de ler ou escrever.’(3f9.3)’→ 3 floats de 9 dıgitos, com 3 decimais
Daniel Ruschel Dutra (UFRGS) Fortran 90 21 de maio de 2010 6 / 16
![Page 15: Daniel Ruschel Dutrarns/astroprog/f90_daniel.pdf · OPEN(50,file=’meuarquivo.dat’) Formato Uma string que define a forma de ler ou escrever. ’(3f9.3)’ !3 floats de 9 d´ıgitos,](https://reader034.vdocuments.mx/reader034/viewer/2022050302/5f6b6cfc89f5414a7a6c8876/html5/thumbnails/15.jpg)
READ e WRITE
WRITE( 50 , ’(3f9.3)’ ) vetor
Unidade LogicaFormato
Variavel
Unidade LogicaA maneira como o fortran opera arquivos:OPEN(50,file=’meuarquivo.dat’)
FormatoUma string que define a forma de ler ou escrever.’(3f9.3)’→ 3 floats de 9 dıgitos, com 3 decimais
Daniel Ruschel Dutra (UFRGS) Fortran 90 21 de maio de 2010 6 / 16
![Page 16: Daniel Ruschel Dutrarns/astroprog/f90_daniel.pdf · OPEN(50,file=’meuarquivo.dat’) Formato Uma string que define a forma de ler ou escrever. ’(3f9.3)’ !3 floats de 9 d´ıgitos,](https://reader034.vdocuments.mx/reader034/viewer/2022050302/5f6b6cfc89f5414a7a6c8876/html5/thumbnails/16.jpg)
READ e WRITE
WRITE( 50 , ’(3f9.3)’ ) vetor
Unidade LogicaFormatoVariavel
Unidade LogicaA maneira como o fortran opera arquivos:OPEN(50,file=’meuarquivo.dat’)
FormatoUma string que define a forma de ler ou escrever.’(3f9.3)’→ 3 floats de 9 dıgitos, com 3 decimais
Daniel Ruschel Dutra (UFRGS) Fortran 90 21 de maio de 2010 6 / 16
![Page 17: Daniel Ruschel Dutrarns/astroprog/f90_daniel.pdf · OPEN(50,file=’meuarquivo.dat’) Formato Uma string que define a forma de ler ou escrever. ’(3f9.3)’ !3 floats de 9 d´ıgitos,](https://reader034.vdocuments.mx/reader034/viewer/2022050302/5f6b6cfc89f5414a7a6c8876/html5/thumbnails/17.jpg)
READ e WRITE
WRITE( 50 , ’(3f9.3)’ ) vetor
Unidade LogicaFormatoVariavel
Unidade LogicaA maneira como o fortran opera arquivos:OPEN(50,file=’meuarquivo.dat’)
FormatoUma string que define a forma de ler ou escrever.’(3f9.3)’→ 3 floats de 9 dıgitos, com 3 decimais
Daniel Ruschel Dutra (UFRGS) Fortran 90 21 de maio de 2010 6 / 16
![Page 18: Daniel Ruschel Dutrarns/astroprog/f90_daniel.pdf · OPEN(50,file=’meuarquivo.dat’) Formato Uma string que define a forma de ler ou escrever. ’(3f9.3)’ !3 floats de 9 d´ıgitos,](https://reader034.vdocuments.mx/reader034/viewer/2022050302/5f6b6cfc89f5414a7a6c8876/html5/thumbnails/18.jpg)
READ e WRITE
WRITE( 50 , ’(3f9.3)’ ) vetor
Unidade LogicaFormatoVariavel
Unidade LogicaA maneira como o fortran opera arquivos:OPEN(50,file=’meuarquivo.dat’)
FormatoUma string que define a forma de ler ou escrever.’(3f9.3)’→ 3 floats de 9 dıgitos, com 3 decimais
Daniel Ruschel Dutra (UFRGS) Fortran 90 21 de maio de 2010 6 / 16
![Page 19: Daniel Ruschel Dutrarns/astroprog/f90_daniel.pdf · OPEN(50,file=’meuarquivo.dat’) Formato Uma string que define a forma de ler ou escrever. ’(3f9.3)’ !3 floats de 9 d´ıgitos,](https://reader034.vdocuments.mx/reader034/viewer/2022050302/5f6b6cfc89f5414a7a6c8876/html5/thumbnails/19.jpg)
READ e WRITE
WRITE( 50 , ’(3f9.3)’ ) vetor
Unidade LogicaFormatoVariavel
Unidade LogicaA maneira como o fortran opera arquivos:OPEN(50,file=’meuarquivo.dat’)
FormatoUma string que define a forma de ler ou escrever.’(3f9.3)’→ 3 floats de 9 dıgitos, com 3 decimais
Daniel Ruschel Dutra (UFRGS) Fortran 90 21 de maio de 2010 6 / 16
![Page 20: Daniel Ruschel Dutrarns/astroprog/f90_daniel.pdf · OPEN(50,file=’meuarquivo.dat’) Formato Uma string que define a forma de ler ou escrever. ’(3f9.3)’ !3 floats de 9 d´ıgitos,](https://reader034.vdocuments.mx/reader034/viewer/2022050302/5f6b6cfc89f5414a7a6c8876/html5/thumbnails/20.jpg)
Condicional
Relacoes
Matematica < 6 = 6= > >Fortran 90 < <= == /= >= >Fortran 77 .lt. .le. .eq. .ne. .ge. .gt.
Exemplo 1IF(flux < 0) flux=0
Exemplo 2IF(lambda == lambda0)THENALLOCATE(spectro(lambda:lambda f))READ(10,*)spectroENDIF
Daniel Ruschel Dutra (UFRGS) Fortran 90 21 de maio de 2010 7 / 16
![Page 21: Daniel Ruschel Dutrarns/astroprog/f90_daniel.pdf · OPEN(50,file=’meuarquivo.dat’) Formato Uma string que define a forma de ler ou escrever. ’(3f9.3)’ !3 floats de 9 d´ıgitos,](https://reader034.vdocuments.mx/reader034/viewer/2022050302/5f6b6cfc89f5414a7a6c8876/html5/thumbnails/21.jpg)
Condicional
Relacoes
Matematica < 6 = 6= > >Fortran 90 < <= == /= >= >Fortran 77 .lt. .le. .eq. .ne. .ge. .gt.
Exemplo 1IF(flux < 0) flux=0
Exemplo 2IF(lambda == lambda0)THENALLOCATE(spectro(lambda:lambda f))READ(10,*)spectroENDIF
Daniel Ruschel Dutra (UFRGS) Fortran 90 21 de maio de 2010 7 / 16
![Page 22: Daniel Ruschel Dutrarns/astroprog/f90_daniel.pdf · OPEN(50,file=’meuarquivo.dat’) Formato Uma string que define a forma de ler ou escrever. ’(3f9.3)’ !3 floats de 9 d´ıgitos,](https://reader034.vdocuments.mx/reader034/viewer/2022050302/5f6b6cfc89f5414a7a6c8876/html5/thumbnails/22.jpg)
Condicional
Relacoes
Matematica < 6 = 6= > >Fortran 90 < <= == /= >= >Fortran 77 .lt. .le. .eq. .ne. .ge. .gt.
Exemplo 1IF(flux < 0) flux=0
Exemplo 2IF(lambda == lambda0)THENALLOCATE(spectro(lambda:lambda f))READ(10,*)spectroENDIF
Daniel Ruschel Dutra (UFRGS) Fortran 90 21 de maio de 2010 7 / 16
![Page 23: Daniel Ruschel Dutrarns/astroprog/f90_daniel.pdf · OPEN(50,file=’meuarquivo.dat’) Formato Uma string que define a forma de ler ou escrever. ’(3f9.3)’ !3 floats de 9 d´ıgitos,](https://reader034.vdocuments.mx/reader034/viewer/2022050302/5f6b6cfc89f5414a7a6c8876/html5/thumbnails/23.jpg)
Condicional
Exemplo 3IF(x/2 = int(x/2))THENWRITE(*,*)’x e par’ELSEWRITE(*,*)’x e ımpar’ENDIF
Daniel Ruschel Dutra (UFRGS) Fortran 90 21 de maio de 2010 8 / 16
![Page 24: Daniel Ruschel Dutrarns/astroprog/f90_daniel.pdf · OPEN(50,file=’meuarquivo.dat’) Formato Uma string que define a forma de ler ou escrever. ’(3f9.3)’ !3 floats de 9 d´ıgitos,](https://reader034.vdocuments.mx/reader034/viewer/2022050302/5f6b6cfc89f5414a7a6c8876/html5/thumbnails/24.jpg)
Loops
Loop contadoDO n=1,10,2WRITE(*,*) n/2 → 0 1 2 3 4ENDDO
Loop indefinidoDOREAD(50,*,iostat=stat)xIF(stat /= 0)EXITn=n+1ENDDO
Daniel Ruschel Dutra (UFRGS) Fortran 90 21 de maio de 2010 9 / 16
![Page 25: Daniel Ruschel Dutrarns/astroprog/f90_daniel.pdf · OPEN(50,file=’meuarquivo.dat’) Formato Uma string que define a forma de ler ou escrever. ’(3f9.3)’ !3 floats de 9 d´ıgitos,](https://reader034.vdocuments.mx/reader034/viewer/2022050302/5f6b6cfc89f5414a7a6c8876/html5/thumbnails/25.jpg)
Loops
Loop contadoDO n=1,10,2WRITE(*,*) n/2 → 0 1 2 3 4ENDDO
Loop indefinidoDOREAD(50,*,iostat=stat)xIF(stat /= 0)EXITn=n+1ENDDO
Daniel Ruschel Dutra (UFRGS) Fortran 90 21 de maio de 2010 9 / 16
![Page 26: Daniel Ruschel Dutrarns/astroprog/f90_daniel.pdf · OPEN(50,file=’meuarquivo.dat’) Formato Uma string que define a forma de ler ou escrever. ’(3f9.3)’ !3 floats de 9 d´ıgitos,](https://reader034.vdocuments.mx/reader034/viewer/2022050302/5f6b6cfc89f5414a7a6c8876/html5/thumbnails/26.jpg)
Arrays
DeclaracaoINTEGER :: matriz(5,5)
INTEGER, DIMENSION(10) :: matriz 1, matriz 2, matriz 3REAL, ALLOCATABLE :: matriz(:,:),vetor(:)...ALLOCATE(matriz(colunas,linhas))...ALLOCATE(vetor(dimensoes))Os ındices sao arbitrarios desde que inteirosREAL :: espectro(4500:8000)
Daniel Ruschel Dutra (UFRGS) Fortran 90 21 de maio de 2010 10 / 16
![Page 27: Daniel Ruschel Dutrarns/astroprog/f90_daniel.pdf · OPEN(50,file=’meuarquivo.dat’) Formato Uma string que define a forma de ler ou escrever. ’(3f9.3)’ !3 floats de 9 d´ıgitos,](https://reader034.vdocuments.mx/reader034/viewer/2022050302/5f6b6cfc89f5414a7a6c8876/html5/thumbnails/27.jpg)
Arrays
DeclaracaoINTEGER :: matriz(5,5)INTEGER, DIMENSION(10) :: matriz 1, matriz 2, matriz 3
REAL, ALLOCATABLE :: matriz(:,:),vetor(:)...ALLOCATE(matriz(colunas,linhas))...ALLOCATE(vetor(dimensoes))Os ındices sao arbitrarios desde que inteirosREAL :: espectro(4500:8000)
Daniel Ruschel Dutra (UFRGS) Fortran 90 21 de maio de 2010 10 / 16
![Page 28: Daniel Ruschel Dutrarns/astroprog/f90_daniel.pdf · OPEN(50,file=’meuarquivo.dat’) Formato Uma string que define a forma de ler ou escrever. ’(3f9.3)’ !3 floats de 9 d´ıgitos,](https://reader034.vdocuments.mx/reader034/viewer/2022050302/5f6b6cfc89f5414a7a6c8876/html5/thumbnails/28.jpg)
Arrays
DeclaracaoINTEGER :: matriz(5,5)INTEGER, DIMENSION(10) :: matriz 1, matriz 2, matriz 3REAL, ALLOCATABLE :: matriz(:,:),vetor(:)...ALLOCATE(matriz(colunas,linhas))...ALLOCATE(vetor(dimensoes))
Os ındices sao arbitrarios desde que inteirosREAL :: espectro(4500:8000)
Daniel Ruschel Dutra (UFRGS) Fortran 90 21 de maio de 2010 10 / 16
![Page 29: Daniel Ruschel Dutrarns/astroprog/f90_daniel.pdf · OPEN(50,file=’meuarquivo.dat’) Formato Uma string que define a forma de ler ou escrever. ’(3f9.3)’ !3 floats de 9 d´ıgitos,](https://reader034.vdocuments.mx/reader034/viewer/2022050302/5f6b6cfc89f5414a7a6c8876/html5/thumbnails/29.jpg)
Arrays
DeclaracaoINTEGER :: matriz(5,5)INTEGER, DIMENSION(10) :: matriz 1, matriz 2, matriz 3REAL, ALLOCATABLE :: matriz(:,:),vetor(:)...ALLOCATE(matriz(colunas,linhas))...ALLOCATE(vetor(dimensoes))Os ındices sao arbitrarios desde que inteirosREAL :: espectro(4500:8000)
Daniel Ruschel Dutra (UFRGS) Fortran 90 21 de maio de 2010 10 / 16
![Page 30: Daniel Ruschel Dutrarns/astroprog/f90_daniel.pdf · OPEN(50,file=’meuarquivo.dat’) Formato Uma string que define a forma de ler ou escrever. ’(3f9.3)’ !3 floats de 9 d´ıgitos,](https://reader034.vdocuments.mx/reader034/viewer/2022050302/5f6b6cfc89f5414a7a6c8876/html5/thumbnails/30.jpg)
Arrays - Operando
AritmeticaDefinindo um vetor constante: vetor=(/ 1,2,3,4,5 /)
Soma e subtracao como escalaresc=a+b→ c(n)=a(n)+b(n)Produto escalar entre cada um dos elementosc=a*b→ c(n)=a(n)*b(n)Operacoes entre vetores e escalares tambem valemc=a*d→ c(n)=a(n)*d
Como diria o Jack Estripador...
E possıvel operar sobre uma secao de um vetorc(10:20)=c(10:20)*fatorou toda uma linha de uma matrizmatriz(2,:)=matriz(2,:)*fator
Daniel Ruschel Dutra (UFRGS) Fortran 90 21 de maio de 2010 11 / 16
![Page 31: Daniel Ruschel Dutrarns/astroprog/f90_daniel.pdf · OPEN(50,file=’meuarquivo.dat’) Formato Uma string que define a forma de ler ou escrever. ’(3f9.3)’ !3 floats de 9 d´ıgitos,](https://reader034.vdocuments.mx/reader034/viewer/2022050302/5f6b6cfc89f5414a7a6c8876/html5/thumbnails/31.jpg)
Arrays - Operando
AritmeticaDefinindo um vetor constante: vetor=(/ 1,2,3,4,5 /)Soma e subtracao como escalaresc=a+b→ c(n)=a(n)+b(n)
Produto escalar entre cada um dos elementosc=a*b→ c(n)=a(n)*b(n)Operacoes entre vetores e escalares tambem valemc=a*d→ c(n)=a(n)*d
Como diria o Jack Estripador...
E possıvel operar sobre uma secao de um vetorc(10:20)=c(10:20)*fatorou toda uma linha de uma matrizmatriz(2,:)=matriz(2,:)*fator
Daniel Ruschel Dutra (UFRGS) Fortran 90 21 de maio de 2010 11 / 16
![Page 32: Daniel Ruschel Dutrarns/astroprog/f90_daniel.pdf · OPEN(50,file=’meuarquivo.dat’) Formato Uma string que define a forma de ler ou escrever. ’(3f9.3)’ !3 floats de 9 d´ıgitos,](https://reader034.vdocuments.mx/reader034/viewer/2022050302/5f6b6cfc89f5414a7a6c8876/html5/thumbnails/32.jpg)
Arrays - Operando
AritmeticaDefinindo um vetor constante: vetor=(/ 1,2,3,4,5 /)Soma e subtracao como escalaresc=a+b→ c(n)=a(n)+b(n)Produto escalar entre cada um dos elementosc=a*b→ c(n)=a(n)*b(n)
Operacoes entre vetores e escalares tambem valemc=a*d→ c(n)=a(n)*d
Como diria o Jack Estripador...
E possıvel operar sobre uma secao de um vetorc(10:20)=c(10:20)*fatorou toda uma linha de uma matrizmatriz(2,:)=matriz(2,:)*fator
Daniel Ruschel Dutra (UFRGS) Fortran 90 21 de maio de 2010 11 / 16
![Page 33: Daniel Ruschel Dutrarns/astroprog/f90_daniel.pdf · OPEN(50,file=’meuarquivo.dat’) Formato Uma string que define a forma de ler ou escrever. ’(3f9.3)’ !3 floats de 9 d´ıgitos,](https://reader034.vdocuments.mx/reader034/viewer/2022050302/5f6b6cfc89f5414a7a6c8876/html5/thumbnails/33.jpg)
Arrays - Operando
AritmeticaDefinindo um vetor constante: vetor=(/ 1,2,3,4,5 /)Soma e subtracao como escalaresc=a+b→ c(n)=a(n)+b(n)Produto escalar entre cada um dos elementosc=a*b→ c(n)=a(n)*b(n)Operacoes entre vetores e escalares tambem valemc=a*d→ c(n)=a(n)*d
Como diria o Jack Estripador...
E possıvel operar sobre uma secao de um vetorc(10:20)=c(10:20)*fatorou toda uma linha de uma matrizmatriz(2,:)=matriz(2,:)*fator
Daniel Ruschel Dutra (UFRGS) Fortran 90 21 de maio de 2010 11 / 16
![Page 34: Daniel Ruschel Dutrarns/astroprog/f90_daniel.pdf · OPEN(50,file=’meuarquivo.dat’) Formato Uma string que define a forma de ler ou escrever. ’(3f9.3)’ !3 floats de 9 d´ıgitos,](https://reader034.vdocuments.mx/reader034/viewer/2022050302/5f6b6cfc89f5414a7a6c8876/html5/thumbnails/34.jpg)
Arrays - Operando
AritmeticaDefinindo um vetor constante: vetor=(/ 1,2,3,4,5 /)Soma e subtracao como escalaresc=a+b→ c(n)=a(n)+b(n)Produto escalar entre cada um dos elementosc=a*b→ c(n)=a(n)*b(n)Operacoes entre vetores e escalares tambem valemc=a*d→ c(n)=a(n)*d
Como diria o Jack Estripador...
E possıvel operar sobre uma secao de um vetorc(10:20)=c(10:20)*fatorou toda uma linha de uma matrizmatriz(2,:)=matriz(2,:)*fator
Daniel Ruschel Dutra (UFRGS) Fortran 90 21 de maio de 2010 11 / 16
![Page 35: Daniel Ruschel Dutrarns/astroprog/f90_daniel.pdf · OPEN(50,file=’meuarquivo.dat’) Formato Uma string que define a forma de ler ou escrever. ’(3f9.3)’ !3 floats de 9 d´ıgitos,](https://reader034.vdocuments.mx/reader034/viewer/2022050302/5f6b6cfc89f5414a7a6c8876/html5/thumbnails/35.jpg)
Arrays - Operando
AritmeticaDefinindo um vetor constante: vetor=(/ 1,2,3,4,5 /)Soma e subtracao como escalaresc=a+b→ c(n)=a(n)+b(n)Produto escalar entre cada um dos elementosc=a*b→ c(n)=a(n)*b(n)Operacoes entre vetores e escalares tambem valemc=a*d→ c(n)=a(n)*d
Como diria o Jack Estripador...
E possıvel operar sobre uma secao de um vetorc(10:20)=c(10:20)*fator
ou toda uma linha de uma matrizmatriz(2,:)=matriz(2,:)*fator
Daniel Ruschel Dutra (UFRGS) Fortran 90 21 de maio de 2010 11 / 16
![Page 36: Daniel Ruschel Dutrarns/astroprog/f90_daniel.pdf · OPEN(50,file=’meuarquivo.dat’) Formato Uma string que define a forma de ler ou escrever. ’(3f9.3)’ !3 floats de 9 d´ıgitos,](https://reader034.vdocuments.mx/reader034/viewer/2022050302/5f6b6cfc89f5414a7a6c8876/html5/thumbnails/36.jpg)
Arrays - Operando
AritmeticaDefinindo um vetor constante: vetor=(/ 1,2,3,4,5 /)Soma e subtracao como escalaresc=a+b→ c(n)=a(n)+b(n)Produto escalar entre cada um dos elementosc=a*b→ c(n)=a(n)*b(n)Operacoes entre vetores e escalares tambem valemc=a*d→ c(n)=a(n)*d
Como diria o Jack Estripador...
E possıvel operar sobre uma secao de um vetorc(10:20)=c(10:20)*fatorou toda uma linha de uma matrizmatriz(2,:)=matriz(2,:)*fator
Daniel Ruschel Dutra (UFRGS) Fortran 90 21 de maio de 2010 11 / 16
![Page 37: Daniel Ruschel Dutrarns/astroprog/f90_daniel.pdf · OPEN(50,file=’meuarquivo.dat’) Formato Uma string que define a forma de ler ou escrever. ’(3f9.3)’ !3 floats de 9 d´ıgitos,](https://reader034.vdocuments.mx/reader034/viewer/2022050302/5f6b6cfc89f5414a7a6c8876/html5/thumbnails/37.jpg)
Arrays - Lendo
Jeito direto: exige uniformidade12000.0 .213246E-1212001.0 .213368E-1212002.0 .213490E-1212003.0 .213611E-12
...
READ(unity,’(8x,1e11.6)’) espectro
mas nao muitoREAD(unity,*)lixo(:,:)
Atraves de loop: mais controleDO i=inicio,fim,passoREAD(unity,format) lambda(i),fluxo(i)ENDDO
Daniel Ruschel Dutra (UFRGS) Fortran 90 21 de maio de 2010 12 / 16
![Page 38: Daniel Ruschel Dutrarns/astroprog/f90_daniel.pdf · OPEN(50,file=’meuarquivo.dat’) Formato Uma string que define a forma de ler ou escrever. ’(3f9.3)’ !3 floats de 9 d´ıgitos,](https://reader034.vdocuments.mx/reader034/viewer/2022050302/5f6b6cfc89f5414a7a6c8876/html5/thumbnails/38.jpg)
Arrays - Lendo
Jeito direto: exige uniformidade12000.0 .213246E-1212001.0 .213368E-1212002.0 .213490E-1212003.0 .213611E-12
...
READ(unity,’(8x,1e11.6)’) espectro
mas nao muitoREAD(unity,*)lixo(:,:)
Atraves de loop: mais controleDO i=inicio,fim,passoREAD(unity,format) lambda(i),fluxo(i)ENDDO
Daniel Ruschel Dutra (UFRGS) Fortran 90 21 de maio de 2010 12 / 16
![Page 39: Daniel Ruschel Dutrarns/astroprog/f90_daniel.pdf · OPEN(50,file=’meuarquivo.dat’) Formato Uma string que define a forma de ler ou escrever. ’(3f9.3)’ !3 floats de 9 d´ıgitos,](https://reader034.vdocuments.mx/reader034/viewer/2022050302/5f6b6cfc89f5414a7a6c8876/html5/thumbnails/39.jpg)
Arrays - Lendo
Jeito direto: exige uniformidade12000.0 .213246E-1212001.0 .213368E-1212002.0 .213490E-1212003.0 .213611E-12
...
READ(unity,’(8x,1e11.6)’) espectro
mas nao muitoREAD(unity,*)lixo(:,:)
Atraves de loop: mais controleDO i=inicio,fim,passoREAD(unity,format) lambda(i),fluxo(i)ENDDO
Daniel Ruschel Dutra (UFRGS) Fortran 90 21 de maio de 2010 12 / 16
![Page 40: Daniel Ruschel Dutrarns/astroprog/f90_daniel.pdf · OPEN(50,file=’meuarquivo.dat’) Formato Uma string que define a forma de ler ou escrever. ’(3f9.3)’ !3 floats de 9 d´ıgitos,](https://reader034.vdocuments.mx/reader034/viewer/2022050302/5f6b6cfc89f5414a7a6c8876/html5/thumbnails/40.jpg)
Arrays - Escrevendo
Direto (loop implıcito)WRITE(unity,’(5(1f7.1,3x))’)(matriz(i,:),i=1,100)
Mais direto (tudo implıcito)WRITE(unity,*)matriz
Com loopDO i=1,10WRITE(*,*)vetor(i)ENDDO
Daniel Ruschel Dutra (UFRGS) Fortran 90 21 de maio de 2010 13 / 16
![Page 41: Daniel Ruschel Dutrarns/astroprog/f90_daniel.pdf · OPEN(50,file=’meuarquivo.dat’) Formato Uma string que define a forma de ler ou escrever. ’(3f9.3)’ !3 floats de 9 d´ıgitos,](https://reader034.vdocuments.mx/reader034/viewer/2022050302/5f6b6cfc89f5414a7a6c8876/html5/thumbnails/41.jpg)
Arrays - Escrevendo
Direto (loop implıcito)WRITE(unity,’(5(1f7.1,3x))’)(matriz(i,:),i=1,100)
Mais direto (tudo implıcito)WRITE(unity,*)matriz
Com loopDO i=1,10WRITE(*,*)vetor(i)ENDDO
Daniel Ruschel Dutra (UFRGS) Fortran 90 21 de maio de 2010 13 / 16
![Page 42: Daniel Ruschel Dutrarns/astroprog/f90_daniel.pdf · OPEN(50,file=’meuarquivo.dat’) Formato Uma string que define a forma de ler ou escrever. ’(3f9.3)’ !3 floats de 9 d´ıgitos,](https://reader034.vdocuments.mx/reader034/viewer/2022050302/5f6b6cfc89f5414a7a6c8876/html5/thumbnails/42.jpg)
Arrays - Escrevendo
Direto (loop implıcito)WRITE(unity,’(5(1f7.1,3x))’)(matriz(i,:),i=1,100)
Mais direto (tudo implıcito)WRITE(unity,*)matriz
Com loopDO i=1,10WRITE(*,*)vetor(i)ENDDO
Daniel Ruschel Dutra (UFRGS) Fortran 90 21 de maio de 2010 13 / 16
![Page 43: Daniel Ruschel Dutrarns/astroprog/f90_daniel.pdf · OPEN(50,file=’meuarquivo.dat’) Formato Uma string que define a forma de ler ou escrever. ’(3f9.3)’ !3 floats de 9 d´ıgitos,](https://reader034.vdocuments.mx/reader034/viewer/2022050302/5f6b6cfc89f5414a7a6c8876/html5/thumbnails/43.jpg)
Arrays - Algumas funcoes especiais
WHERE(matriz < 0)matriz=01 -2 3 45 6 -7 89 10 11 -12
1 0 3 45 6 0 89 10 11 0
SUM e COUNTmedia=SUM(a)/COUNT(a /= 0)desvpad=SUM(SQRT((a-media)**2))/COUNT(a /= 0)
Daniel Ruschel Dutra (UFRGS) Fortran 90 21 de maio de 2010 14 / 16
![Page 44: Daniel Ruschel Dutrarns/astroprog/f90_daniel.pdf · OPEN(50,file=’meuarquivo.dat’) Formato Uma string que define a forma de ler ou escrever. ’(3f9.3)’ !3 floats de 9 d´ıgitos,](https://reader034.vdocuments.mx/reader034/viewer/2022050302/5f6b6cfc89f5414a7a6c8876/html5/thumbnails/44.jpg)
Arrays - Algumas funcoes especiais
WHERE(matriz < 0)matriz=01 -2 3 45 6 -7 89 10 11 -12
1 0 3 45 6 0 89 10 11 0
SUM e COUNTmedia=SUM(a)/COUNT(a /= 0)desvpad=SUM(SQRT((a-media)**2))/COUNT(a /= 0)
Daniel Ruschel Dutra (UFRGS) Fortran 90 21 de maio de 2010 14 / 16
![Page 45: Daniel Ruschel Dutrarns/astroprog/f90_daniel.pdf · OPEN(50,file=’meuarquivo.dat’) Formato Uma string que define a forma de ler ou escrever. ’(3f9.3)’ !3 floats de 9 d´ıgitos,](https://reader034.vdocuments.mx/reader034/viewer/2022050302/5f6b6cfc89f5414a7a6c8876/html5/thumbnails/45.jpg)
Subrotinas
PROGRAM exemploREAL :: vetor(3)READ(*,*) vetorCALL modulo(vetor,mod)WRITE(*,*) modEND PROGRAM exemplo
SUBROUTINE modulo(v,n)REAL :: v(3)n=SQRT(v(1)**2+v(2)**2+v(3)**2)END SUBROUTINE modulo
Daniel Ruschel Dutra (UFRGS) Fortran 90 21 de maio de 2010 15 / 16
![Page 46: Daniel Ruschel Dutrarns/astroprog/f90_daniel.pdf · OPEN(50,file=’meuarquivo.dat’) Formato Uma string que define a forma de ler ou escrever. ’(3f9.3)’ !3 floats de 9 d´ıgitos,](https://reader034.vdocuments.mx/reader034/viewer/2022050302/5f6b6cfc89f5414a7a6c8876/html5/thumbnails/46.jpg)
Algumas funcoes intrınsecas
MINLOC(a,mask) - localiza o valor mınimo do array a para o quala mascara mask tem valor T
MINVAL(a,mask) - similar ao anterior mas retorna o proprio valorTRIM(str) - remove os espacos em branco da string strINDEX(str1,str2) - retorna a posicao que a string str2 ocupa nastring str1
Daniel Ruschel Dutra (UFRGS) Fortran 90 21 de maio de 2010 16 / 16
![Page 47: Daniel Ruschel Dutrarns/astroprog/f90_daniel.pdf · OPEN(50,file=’meuarquivo.dat’) Formato Uma string que define a forma de ler ou escrever. ’(3f9.3)’ !3 floats de 9 d´ıgitos,](https://reader034.vdocuments.mx/reader034/viewer/2022050302/5f6b6cfc89f5414a7a6c8876/html5/thumbnails/47.jpg)
Algumas funcoes intrınsecas
MINLOC(a,mask) - localiza o valor mınimo do array a para o quala mascara mask tem valor TMINVAL(a,mask) - similar ao anterior mas retorna o proprio valor
TRIM(str) - remove os espacos em branco da string strINDEX(str1,str2) - retorna a posicao que a string str2 ocupa nastring str1
Daniel Ruschel Dutra (UFRGS) Fortran 90 21 de maio de 2010 16 / 16
![Page 48: Daniel Ruschel Dutrarns/astroprog/f90_daniel.pdf · OPEN(50,file=’meuarquivo.dat’) Formato Uma string que define a forma de ler ou escrever. ’(3f9.3)’ !3 floats de 9 d´ıgitos,](https://reader034.vdocuments.mx/reader034/viewer/2022050302/5f6b6cfc89f5414a7a6c8876/html5/thumbnails/48.jpg)
Algumas funcoes intrınsecas
MINLOC(a,mask) - localiza o valor mınimo do array a para o quala mascara mask tem valor TMINVAL(a,mask) - similar ao anterior mas retorna o proprio valorTRIM(str) - remove os espacos em branco da string str
INDEX(str1,str2) - retorna a posicao que a string str2 ocupa nastring str1
Daniel Ruschel Dutra (UFRGS) Fortran 90 21 de maio de 2010 16 / 16
![Page 49: Daniel Ruschel Dutrarns/astroprog/f90_daniel.pdf · OPEN(50,file=’meuarquivo.dat’) Formato Uma string que define a forma de ler ou escrever. ’(3f9.3)’ !3 floats de 9 d´ıgitos,](https://reader034.vdocuments.mx/reader034/viewer/2022050302/5f6b6cfc89f5414a7a6c8876/html5/thumbnails/49.jpg)
Algumas funcoes intrınsecas
MINLOC(a,mask) - localiza o valor mınimo do array a para o quala mascara mask tem valor TMINVAL(a,mask) - similar ao anterior mas retorna o proprio valorTRIM(str) - remove os espacos em branco da string strINDEX(str1,str2) - retorna a posicao que a string str2 ocupa nastring str1
Daniel Ruschel Dutra (UFRGS) Fortran 90 21 de maio de 2010 16 / 16