Mudanças entre as edições de "Fortran"
m (→Compiladores) |
m (→Código Teste) |
||
Linha 28: | Linha 28: | ||
* No menu ''Build'', clique em ''Start Run'' para rodar o programa. Salve o programa com o nome ''teste.f90''. Deverá abrir uma janela de comando e aparecer a mensagem | * No menu ''Build'', clique em ''Start Run'' para rodar o programa. Salve o programa com o nome ''teste.f90''. Deverá abrir uma janela de comando e aparecer a mensagem | ||
Ola mundo | Ola mundo | ||
+ | |||
+ | ==Subrotinas== | ||
+ | |||
+ | |||
+ | program principal | ||
+ | real*8 :: x,y,m,S | ||
+ | real*8,dimension(50) :: u | ||
+ | real*8 :: norm | ||
+ | |||
+ | x=10.D0 | ||
+ | y=20.D0 | ||
+ | |||
+ | call norma2( u, norm ) | ||
+ | |||
+ | call media( x,y, m ) | ||
+ | print *," Media ",m | ||
+ | |||
+ | S=soma(x,y) | ||
+ | |||
+ | end program | ||
+ | !------------------------------ | ||
+ | subroutine norma2( v, saida ) | ||
+ | real*8,dimension(5) :: u | ||
+ | real*8 :: saida | ||
+ | |||
+ | saida=...... | ||
+ | |||
+ | end subroutine | ||
+ | !------------------------------ | ||
+ | |||
+ | subroutine media( a,b,m ) | ||
+ | real*8 :: a,b | ||
+ | real*8 :: m | ||
+ | |||
+ | m=(a+b)/2.D0 | ||
+ | |||
+ | end subroutine | ||
+ | !------------------------------ | ||
+ | function soma( x, y)result( s ) | ||
+ | real*8 :: x,y | ||
+ | real*8 :: s | ||
+ | |||
+ | s=x+y | ||
+ | |||
+ | end function | ||
==Medindo o tempo== | ==Medindo o tempo== |
Edição das 15h21min de 25 de agosto de 2010
A família de linguagens de programação conhecida globalmente como Fortran foi desenvolvida a partir da década de 1950 e continua a ser usada hoje em dia. O nome tem como origens a expressão "FORmula TRANslation" (ou "Translator").
As versões iniciais da linguagem eram conhecidas como FORTRAN, mas a capitalização foi ignorada em versões recentes da linguagem começando a partir do Fortran 90. Os padrões oficiais da linguagem referem-se a ela atualmente como "Fortran".
A linguagem Fortran é principalmente usada em Ciência da Computação e Análise Numérica. Apesar de ter sido inicialmente uma linguagem de programação procedural, versões recentes de Fortran possuem características que permitem suportar programação orientada por objetos.
Compiladores
- WATFOR
- a versão do FORTRAN IV desenvolvida na Universidade de Waterloo, Canadá, foi universalmente preferida pois o compilador produzia melhores relatórios dos erros de compilação.
- Fortran Powerstation 4.0
- comercializado pela Microsoft.
- Visual Fortran
- versão comercializada primeiramente pela Digital e depois pela Compaq. Uma evolução da versão da Microsoft.
- g95
- Grátis, código aberto, compilador Fortran 95 para Linux.
- Fortran em Linux
- Veja como rodar programa em Linux.
- Fortran 95 Silverfrost
- um compilador grátis que pode ser obtido na internet:
Código Teste
Alguns compiladores possuem um ambiente gráfico e um editor de textos para digitar os programas. No compilador Silverfrost:
- Crie um arquivo novo clicando em New. Escolha Free Format. Uma janela de texto deve abrir.
- Digite o código fonte abaixo.
program ola print *,"Ola mundo" end
- No menu Build, clique em Start Run para rodar o programa. Salve o programa com o nome teste.f90. Deverá abrir uma janela de comando e aparecer a mensagem
Ola mundo
Subrotinas
program principal real*8 :: x,y,m,S real*8,dimension(50) :: u real*8 :: norm
x=10.D0 y=20.D0
call norma2( u, norm )
call media( x,y, m ) print *," Media ",m
S=soma(x,y)
end program !------------------------------ subroutine norma2( v, saida ) real*8,dimension(5) :: u real*8 :: saida
saida=......
end subroutine !------------------------------
subroutine media( a,b,m ) real*8 :: a,b real*8 :: m
m=(a+b)/2.D0
end subroutine !------------------------------ function soma( x, y)result( s ) real*8 :: x,y real*8 :: s
s=x+y
end function
Medindo o tempo
Um exemplo de como medir o tempo em Fortran.
program teste use portlib real*8, dimension(10000) :: x,y,s real*4 :: tempo integer :: k,i do i=1,100 x(i)=i y(i)=0.d0 end do print *,"Comecei..." tempo = SECNDS(0.0) do k=1,100000 do i=1,10000 s(i)=x(i)+y(i) end do end do tempo = SECNDS(tempo) print *,"Tempo (s): ",tempo end