Web Analytics
Privacy Policy Cookie Policy Terms and Conditions Fortran - Wikipédia

Fortran

Origem: Wikipédia, a enciclopédia livre.

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 Translator" (ou "Translation").

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 actualmente como "Fortran".

A linguagem Fortran é principalmente usada em ciências da computação e análise numérica. Apesar de ter sido inicialmente uma linguagem de programação processual, versões recentes de Fortran possuem características que permitem suportar programação orientada por objectos.

Índice

[editar] História, versões e revisões

Foi a primeira linguagem de programação imperativa. O primeiro compilador de FORTRAN foi desenvolvido para o IBM 704 em 1954-57 por uma equipa da IBM chefiada por John W. Backus. O compilador era optimizado, pois os autores acreditavam que ninguém iria usar essa linguagem se a sua prestação não fosse comparável com a da linguagem assembly

A linguagem Fortran foi largamente adoptada por cientistas para a escrita de programas numericamente intensivos, o que encorajou os produtores de compiladores a escrever compiladores que gerassem código mais rápido. A inclusão de um tipo de dados de número complexo na linguagem tornou a linguagem Fortran particularmente apta para a computação científica. Actualmente existem muitos vendedores de compiladores de Fortran de alto rendimento. Muitos avanços na teoria e na projecção de compiladores foram motivados pela necessidade de gerar código para programas de Fortran. Ao longo dos tempos foram-se dando algumas revisões da linguagem. Entre elas encontram-se:

  • FORTRAN IV (também conhecida como FORTRAN 66)
  • FORTRAN 77, 90, 95

O padrão formal da linguagem mais recente, publicado em 1997, é conhecido como Fortran 95. As versões da IBM nunca foram muito populares comparando com outros compiladores e esse aspecto foi especialmente notado no FORTRAN IV. 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. O software para a geração automática de flow charts a partir de programas em FORTRAN também foi desenvolvido fora da IBM.

Compiladores Fortran para processamento paralelo e/ou distribuído em Cluster of Workstations (COW) ou Clustes of PCs (agrupamentos de PCs):

[editar] Características e extensões

O Fortran permite a criação de programas que primam pela velocidade de execução. Daí reside seu uso em aplicações científicas computacionalmente intensivas como meteorologia, física, astronomia, geofísica, engenharia etc.

Inicialmente, a linguagem dependia da formatação precisa do código-fonte e do uso extensivo de números de depoimento e de depoimentos goto. Estas idiossincrasias foram removidas de versões mais recentes da linguagem. As diversas actualizações também introduziram conceitos "modernos" de programação, tais como comentários no código-fonte e saídas de texto, IF-THEN-ELSE (em FORTRAN 77), recursividade (em FORTRAN 90), e construcções paralelas, enquanto se tentava preservar o perfil "leve" e a prestação de alto rendimento que faziam a imagem de marca do Fortran. Entre as linguagens especializadas mais populares baseadas em Fortran encontram-se a linguagem SAS, para gerar relatórios estatísticos, e SIMSCRIPT, para simulação de processos onde estão envolvidas listas de espera. Vendedores de computadores científicos de alto rendimento (Burroughs, CDC, Cray, IBM, Texas Instruments, ...) adicionaram extensões à linguagem Fortran para fazer uso de características especiais do hardware, tais como: cache de instrucções, pipeline da CPU, disposições de vectores, etc. Por exemplo, um dos compiladores de Fortran da IBM (H Extended IUP) possuía um nível de optimização que reordenava as instrucções do código para manter as unidades aritméticas da máquina ocupadas simultaneamente, obtendo assim um rendimento máximo. Outro exemplo é CFD, uma "versão" especial da linguagem Fortran projectada especialmente para o supercomputador ILLIAC IV, que se encontra no Centro de Pesquisa Ames da NASA. Estas extensões têm vindo desde então a desaparecer ou então os seus elementos têm sido incorporados no padrão principal da linguagem; a extensão da linguagem que ainda persiste é a OpenMP, que é uma extensão multi-plataforma para programação de memória partilhada. Uma extensão recente, CoArray Fortran, tem como objectivo a promoção de programação paralela.

[editar] Pontos fortes/fracos da sintaxe

No que foi a primeira tentativa de projecção de uma linguagem de programação de alto nível, a sintaxe da linguagem é considerada arcaica por muitos programadores que aprenderam linguagens mais modernas. É difícil escrever um loop for, e erros na escrita de apenas um carácter podem levar a erros durante o tempo de execução em vez de erros de compilação, caso construcções mais recentes não forem usadas, tais como estilo livre do código fonte. Algumas das versões anteriores não possuíam facilidades que seriam tidas como úteis em máquinas modernas, tais como a alocação dinâmica de memória. Deve-se, no entanto, ter em conta que a sintaxe de Fortran foi "afinada" para o uso em trabalhos numéricos e científicos, e que muitas das suas deficiências têm sido abordadas em revisões mais recentes da linguagem. Por exemplo, Fortran 95 possui comandos muito breves para efectuar operações matemáticas com matrizes e disposições de tipos, o que não só melhora em muito a leitura do programa como também fornece informação útil ao compilador, o que torna possível a vectorização de operações. Por estas razões, Fortran não é muito utilizado fora dos campos da ciência da computação e da análise numérica, mas permanece a linguagem a escolher para desempenhar tarefas da área da computação numérica de alto rendimento.

[editar] Padrões

Os dois padrões abaixo reflectem as implementações actuais de Fortran:

  • ANSI X3.198-1992 (R1997). Título: Programming Language "Fortran" Extended. É informalmente conhecida como Fortran 90.O padrão é publicado pela ANSI.
  • ISO/IEC 1539-1:1997. Título: Information technology - Programming languages - Fortran - Part 1: Base language. É informalmente conhecido como Fortran 95. Existem mais duas partes deste padrão. A Parte 1 foi formalmente adoptada pelo ANSI.

[editar] Exemplos de código

[editar] Olá Mundo

program hello
print*,"Hello World!"
end program hello

[editar] Área do cilindro

program cylinder
! Calculate the area of a cylinder.
!
! Declare variables and constants.
implicit none ! Require all variables to be declared -- Fortran 90 feature.
integer            :: ierr
real               :: radius,height,area
real   , parameter :: pi = 3.14159
do
   ! Prompt the user for radius and height and read them.
   write (*,*) "Enter radius and height, 'q' to end."
   read (*,*,iostat=ierr) radius,height
   ! 
   ! If radius and height could not be read from input, terminate program.
   if (ierr /= 0) stop "ending program"
   !
   ! Compute area. The ** means "raise to a power".
   area = 2*pi*(radius**2 + radius*height)
   !
   ! Write the input variables (radius, height) and output (area) to the screen.
   write (*,"(1x,'radius=',f6.2,5x,'height=',f6.2,5x,'area=',f6.2)") radius,height,area
end do
end program cylinder

[editar] Links externos


THIS WEB:

aa - ab - af - ak - als - am - an - ang - ar - arc - as - ast - av - ay - az - ba - bar - bat_smg - be - bg - bh - bi - bm - bn - bo - bpy - br - bs - bug - bxr - ca - cbk_zam - cdo - ce - ceb - ch - cho - chr - chy - closed_zh_tw - co - cr - cs - csb - cu - cv - cy - da - de - diq - dv - dz - ee - el - eml - en - eo - es - et - eu - fa - ff - fi - fiu_vro - fj - fo - fr - frp - fur - fy - ga - gd - gl - glk - gn - got - gu - gv - ha - haw - he - hi - ho - hr - hsb - ht - hu - hy - hz - ia - id - ie - ig - ii - ik - ilo - io - is - it - iu - ja - jbo - jv - ka - kg - ki - kj - kk - kl - km - kn - ko - kr - ks - ksh - ku - kv - kw - ky - la - lad - lb - lbe - lg - li - lij - lmo - ln - lo - lt - lv - map_bms - mg - mh - mi - mk - ml - mn - mo - mr - ms - mt - mus - my - mzn - na - nah - nap - nds - nds_nl - ne - new - ng - nl - nn - no - nov - nrm - nv - ny - oc - om - or - os - pa - pag - pam - pap - pdc - pi - pih - pl - pms - ps - pt - qu - rm - rmy - rn - ro - roa_rup - roa_tara - ru - ru_sib - rw - sa - sc - scn - sco - sd - se - searchcom - sg - sh - si - simple - sk - sl - sm - sn - so - sq - sr - ss - st - su - sv - sw - ta - te - test - tet - tg - th - ti - tk - tl - tlh - tn - to - tokipona - tpi - tr - ts - tt - tum - tw - ty - udm - ug - uk - ur - uz - ve - vec - vi - vls - vo - wa - war - wo - wuu - xal - xh - yi - yo - za - zea - zh - zh_classical - zh_min_nan - zh_yue - zu

Static Wikipedia 2008 (no images)

aa - ab - af - ak - als - am - an - ang - ar - arc - as - ast - av - ay - az - ba - bar - bat_smg - bcl - be - be_x_old - bg - bh - bi - bm - bn - bo - bpy - br - bs - bug - bxr - ca - cbk_zam - cdo - ce - ceb - ch - cho - chr - chy - co - cr - crh - cs - csb - cu - cv - cy - da - de - diq - dsb - dv - dz - ee - el - eml - en - eo - es - et - eu - ext - fa - ff - fi - fiu_vro - fj - fo - fr - frp - fur - fy - ga - gan - gd - gl - glk - gn - got - gu - gv - ha - hak - haw - he - hi - hif - ho - hr - hsb - ht - hu - hy - hz - ia - id - ie - ig - ii - ik - ilo - io - is - it - iu - ja - jbo - jv - ka - kaa - kab - kg - ki - kj - kk - kl - km - kn - ko - kr - ks - ksh - ku - kv - kw - ky - la - lad - lb - lbe - lg - li - lij - lmo - ln - lo - lt - lv - map_bms - mdf - mg - mh - mi - mk - ml - mn - mo - mr - mt - mus - my - myv - mzn - na - nah - nap - nds - nds_nl - ne - new - ng - nl - nn - no - nov - nrm - nv - ny - oc - om - or - os - pa - pag - pam - pap - pdc - pi - pih - pl - pms - ps - pt - qu - quality - rm - rmy - rn - ro - roa_rup - roa_tara - ru - rw - sa - sah - sc - scn - sco - sd - se - sg - sh - si - simple - sk - sl - sm - sn - so - sr - srn - ss - st - stq - su - sv - sw - szl - ta - te - tet - tg - th - ti - tk - tl - tlh - tn - to - tpi - tr - ts - tt - tum - tw - ty - udm - ug - uk - ur - uz - ve - vec - vi - vls - vo - wa - war - wo - wuu - xal - xh - yi - yo - za - zea - zh - zh_classical - zh_min_nan - zh_yue - zu -

Static Wikipedia 2007:

aa - ab - af - ak - als - am - an - ang - ar - arc - as - ast - av - ay - az - ba - bar - bat_smg - be - bg - bh - bi - bm - bn - bo - bpy - br - bs - bug - bxr - ca - cbk_zam - cdo - ce - ceb - ch - cho - chr - chy - closed_zh_tw - co - cr - cs - csb - cu - cv - cy - da - de - diq - dv - dz - ee - el - eml - en - eo - es - et - eu - fa - ff - fi - fiu_vro - fj - fo - fr - frp - fur - fy - ga - gd - gl - glk - gn - got - gu - gv - ha - haw - he - hi - ho - hr - hsb - ht - hu - hy - hz - ia - id - ie - ig - ii - ik - ilo - io - is - it - iu - ja - jbo - jv - ka - kg - ki - kj - kk - kl - km - kn - ko - kr - ks - ksh - ku - kv - kw - ky - la - lad - lb - lbe - lg - li - lij - lmo - ln - lo - lt - lv - map_bms - mg - mh - mi - mk - ml - mn - mo - mr - ms - mt - mus - my - mzn - na - nah - nap - nds - nds_nl - ne - new - ng - nl - nn - no - nov - nrm - nv - ny - oc - om - or - os - pa - pag - pam - pap - pdc - pi - pih - pl - pms - ps - pt - qu - rm - rmy - rn - ro - roa_rup - roa_tara - ru - ru_sib - rw - sa - sc - scn - sco - sd - se - searchcom - sg - sh - si - simple - sk - sl - sm - sn - so - sq - sr - ss - st - su - sv - sw - ta - te - test - tet - tg - th - ti - tk - tl - tlh - tn - to - tokipona - tpi - tr - ts - tt - tum - tw - ty - udm - ug - uk - ur - uz - ve - vec - vi - vls - vo - wa - war - wo - wuu - xal - xh - yi - yo - za - zea - zh - zh_classical - zh_min_nan - zh_yue - zu

Static Wikipedia 2006:

aa - ab - af - ak - als - am - an - ang - ar - arc - as - ast - av - ay - az - ba - bar - bat_smg - be - bg - bh - bi - bm - bn - bo - bpy - br - bs - bug - bxr - ca - cbk_zam - cdo - ce - ceb - ch - cho - chr - chy - closed_zh_tw - co - cr - cs - csb - cu - cv - cy - da - de - diq - dv - dz - ee - el - eml - en - eo - es - et - eu - fa - ff - fi - fiu_vro - fj - fo - fr - frp - fur - fy - ga - gd - gl - glk - gn - got - gu - gv - ha - haw - he - hi - ho - hr - hsb - ht - hu - hy - hz - ia - id - ie - ig - ii - ik - ilo - io - is - it - iu - ja - jbo - jv - ka - kg - ki - kj - kk - kl - km - kn - ko - kr - ks - ksh - ku - kv - kw - ky - la - lad - lb - lbe - lg - li - lij - lmo - ln - lo - lt - lv - map_bms - mg - mh - mi - mk - ml - mn - mo - mr - ms - mt - mus - my - mzn - na - nah - nap - nds - nds_nl - ne - new - ng - nl - nn - no - nov - nrm - nv - ny - oc - om - or - os - pa - pag - pam - pap - pdc - pi - pih - pl - pms - ps - pt - qu - rm - rmy - rn - ro - roa_rup - roa_tara - ru - ru_sib - rw - sa - sc - scn - sco - sd - se - searchcom - sg - sh - si - simple - sk - sl - sm - sn - so - sq - sr - ss - st - su - sv - sw - ta - te - test - tet - tg - th - ti - tk - tl - tlh - tn - to - tokipona - tpi - tr - ts - tt - tum - tw - ty - udm - ug - uk - ur - uz - ve - vec - vi - vls - vo - wa - war - wo - wuu - xal - xh - yi - yo - za - zea - zh - zh_classical - zh_min_nan - zh_yue - zu