Mudanças entre as edições de "Fortran"
(→Código Teste) |
m (→Compiladores) |
||
(10 revisões intermediárias pelo mesmo usuário não estão sendo mostradas) | |||
Linha 12: | Linha 12: | ||
;Visual Fortran : versão comercializada primeiramente pela Digital e depois pela Compaq. Uma evolução da versão da Microsoft. | ;Visual Fortran : versão comercializada primeiramente pela Digital e depois pela Compaq. Uma evolução da versão da Microsoft. | ||
− | ;[http://www.g95.org/ g95] : | + | ;[http://www.g95.org/ 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: |
+ | |||
+ | ==Fortran 2003== | ||
+ | Veja quais características do Fortran 2003 são implementadas pelos principais compiladores em http://fortranwiki.org/fortran/show/Fortran+2003+status | ||
+ | |||
+ | Em particular note a TR 15581 (Technical Report 15581: permite alocação dinâmica de arrays em tipos definidos pelo usuário). | ||
==Código Teste== | ==Código Teste== | ||
− | Alguns compiladores possuem um ambiente gráfico e um | + | 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. | * Crie um arquivo novo clicando em New. Escolha ''Free Format''. Uma janela de texto deve abrir. | ||
Linha 26: | Linha 33: | ||
* 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== | ||
Um exemplo de como medir o tempo em Fortran. | Um exemplo de como medir o tempo em Fortran. | ||
− | program | + | program teste |
use portlib | use portlib | ||
real*8, dimension(10000) :: x,y,s | real*8, dimension(10000) :: x,y,s | ||
real*4 :: tempo | real*4 :: tempo | ||
integer :: k,i | integer :: k,i | ||
− | + | ||
do i=1,100 | do i=1,100 | ||
x(i)=i | x(i)=i | ||
y(i)=0.d0 | y(i)=0.d0 | ||
end do | end do | ||
− | + | ||
print *,"Comecei..." | print *,"Comecei..." | ||
− | + | ||
tempo = SECNDS(0.0) | tempo = SECNDS(0.0) | ||
do k=1,100000 | do k=1,100000 | ||
Linha 49: | Linha 101: | ||
end do | end do | ||
end do | end do | ||
− | + | ||
tempo = SECNDS(tempo) | tempo = SECNDS(tempo) | ||
print *,"Tempo (s): ",tempo | print *,"Tempo (s): ",tempo | ||
− | + | ||
end | end | ||
Linha 58: | Linha 110: | ||
*[http://en.wikipedia.org/wiki/Fortran] | *[http://en.wikipedia.org/wiki/Fortran] | ||
*[http://pt.wikipedia.org/wiki/Fortran] | *[http://pt.wikipedia.org/wiki/Fortran] | ||
+ | * Manual do Fortran interessante, inclusive com Ponto Flutuante em http://www.ibiblio.org/pub/languages/fortran/unfp.html#section-4 |
Edição atual tal como às 16h32min de 9 de maio de 2012
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:
Fortran 2003
Veja quais características do Fortran 2003 são implementadas pelos principais compiladores em http://fortranwiki.org/fortran/show/Fortran+2003+status
Em particular note a TR 15581 (Technical Report 15581: permite alocação dinâmica de arrays em tipos definidos pelo usuário).
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
Ver também
- [1]
- [2]
- Manual do Fortran interessante, inclusive com Ponto Flutuante em http://www.ibiblio.org/pub/languages/fortran/unfp.html#section-4