FORTRAN
La família de lenguaiges de porgramaçon coincida globalmente cumo Fortran fui zambolbida a partir de la década de 1950 i cuntina a ser ousada hoije an die. L nome ye un acrónimo de la spresson "IBM Mathematical FORmula TRANslation Systen"
Las bersones eniciales de la lenguaige éran coincidas cumo FORTRAN, mas la capitalizaçon fui eignorada an bersones recentes de la lenguaige ampeçando a partir de l Fortran 90. Ls padrones oufeciales de la lenguaige refíren- se a eilha atualmente cumo "Fortran".
La lenguaige Fortran ye percipalmente ousada an Ciéncia de la Cumputaçon i Análeze Numérica. Anque tener sido einicialmente ua lenguaige de porgramaçon procedural, bersones recentes de Fortran possuen caratelísticas que permiten suportar porgramaçon ourientada por oubjetos.
Stória, bersones i rebisones
[eiditar | eiditar código-fuonte]Fui la purmeira lenguaige de porgramaçon amperatiba. L purmeiro cumpilador de FORTRAN fui zambolbido pa l IBM 704 an 1954-57 por ua eiquipe de la IBM xefiada por John W. Backus. L cumpilador era outimizado, pus ls outores acraditában que naide eirie ousar essa lenguaige se la sue prestaçon nun fusse cumparable cula de la lenguaige assembly. Le langage Fortran la cunnu de nombreuses ébolutiones[1] :
- 1956. Fortran II ye un liguaige de porgramaçon criada passado sue "ouriginal" FORTRAN an 1958.[2] Esta ouriginou outras lenguaiges cumo BASIC
- 1958. Fortran III Berson que nunca fui çponibelizada.
- 1962. Fortran IB La lenguaige Fortran fui largamente adatada por cientistas pa la scrita de porgramas numericamente antensibos, l qu'ancorajou ls perdutores de cumpiladores a screbir cumpiladores que gerassen código mais rápido.
- 1965. Decumiento ECMA Fortran[3]
- 1966. Fortran 66 (ANSI X3.9-1966)[4], quando la purmeira berson padronizada de la lenguaige, coincida cumo FORTRAN IB ó FORTRAN 66, staba çponible, Fortran yá era la lenguaige mais ousada pula quemunidade científica. FORTRAN IB fui padronizada pula Amarican Standard Association (ASA).[5] L'ampla çponibelidade de cumpiladores para defrentes cumputadores, la simplicidade de la lenguaige, facelidade para ansiná-la, sue eficiéncia i las bantaiges antroduzidas pul uso de sub-rotinas i cumpilaçon andependiente destas i la capacidade de lidar cun númaro cumplexo, para alhá de muitas outras caratelísticas, ajudórun an sue ampla difuson drento de la quemunidade científica.
- 1978. Fortran 77 (ANSI X3.9-1978)[6],
antre outras melhories, facelita la porgramaçon de struturas cun blocos. « IF / THEN / ELSE / ENDIF ». An 1978, ua stenson antroduzia antre outros « DO WHILE / END DO »[7]. Ua caratelística marcante de l FORTRAN 77 son las regras d'alinhamiento de las linhas de l porgrama, ua hardança de l'era de ls cartones perfurados. Ouriginalmente, la sintaxe de l FORTRAN 77 fui defenida de forma que cada linha de l porgrama fusse scrita nun carton perfurado, cun un carater por coluna, oubedecendo las seguintes regras:
- Coluna 1 - ousada para andicar linha de comentairo. Un carater na coluna 1 (giralmente "C", "c" ó "*") andicaba que todos ls demales carateres a partir de la coluna 2 custituían un comentairo i nun un comando ó declaraçon.
- Colunas 2-5 - reserbadas pa ls "labels" de las linhas (númaros anteiros antre 1 i 9999). Ls labels son ousados para eidantificar i referenciar linhas specíficas de l porgrama.
- Coluna 6 - quando marcada por un carater, andicaba que la linha era ua cuntinaçon de la linha anterior.
- Colunas 7-72 - reserbadas pa ls comandos i declaraçones.
- Colunas 73 an delantre - reserbadas para comentairos.
Las mesmas regras cuntinórun an bigor , mesmo depuis de ls cartones perfurados tenéren caído an desuso i ls porgramas an FORTRAN 77 passáren a ser scritos diretamente an eiditores de testo.
Na mesma época que l FORTRAN 77 surgiu, yá eisistian outras lenguaiges de porgramaçon cumo l C, Pascal, Ada i Modula, qu'habien antroduzido nuobos cunceitos an porgramaçon ó fundamentado outros cumo a tipaige splícita de bariables i la defeniçon de nuobos tipos de dados, l que permitie al porgramador defenir struturas de dados mais adequadas para resulber porblemas; alocaçon dinámica de dados; subprogramas recursibos; cuntrole de sceçon (ua de las percipales caratelísticas de la lenguaige Ada); i stablecimiento de módulos.
L FORTRAN 77 nun ouferecie nanhun desses recursos i ampeçou a ser pouco a pouco abandonado pula quemunidade científica que passórun a recorrer l'outras lenguaiges de porgramaçon.
- 1980. Fortran 8X. Durante la década de 1980, fui lançada ua nuoba rebison de l 8x qu'ancorporaba todos ls cunceitos arriba citados (sceto a tipaige splícita i l cuntrole de sceçon).
- 1990. Fortran 90 (ANSI X3.198-1992)[8] : L porcesso de defeniçon de l nuobo padron fui longo i demorado, mas permitiu l'amadurecimiento de muitos de ls nuobos cunceitos que la lenguaige apersentarie. La berson final desta rebison fui apersentada cul nome de FORTRAN 90. FORTRAN 90 ye tan eficiente quanto l C i l Pascal pa ls fines la qu'eilha se çtina. FORTRAN 90 trouxe ua nobidade pa l mundo de las lenguaiges de porgramaçon: macanismos para manipulaçon d'arranjos, que nun son ouferecidos por nanhue outra lenguaige.[9]
- 1995. Fortran 95 (ISO/IEC 1539-1:1997)[10]L padron formal de la lenguaige mais recente, publicado an 1996, ye coincido cumo Fortran 95[11]. Esta rebison de l FORTRAN acrecientou pequeinhas altaraçones al FORTRAN 90, motibada pula necidade d'aprossimar l padron a la lenguaige High Performance Fortran ó HPF la qual ye buoltada pa l'uso de cumputadores cun arquiteturas abançadas. La lenguaige HPF ye ua spece de stenson de l FORTRAN 90 i, atualmente, muitos fabricantes ouferencen cumpiladores HPF baseados na lenguaige FORTRAN 90.
- 2003. Fortran 2003 (ISO/IEC 1539-1:2004)[12] : Zde 1997, l FORTRAN ben passando por un nuobo porcesso de rebison. L FORTRAN 2003 eirá ancorporar un cunjunto de nuobos comandos que permitiron, antre outras cousas, l cuntrole de sceçones i porgramaçon ourientada a oubjetos.
- 2008. Fortran 2008 (ISO/IEC 1539-1:2010)[13]. L padron mais recente, la ISO/IEC 1539-1:2010, coincido anformalmente cumo Fortran 2008, fui approbado an Setembre de 2010.[14] Tal cumo l Fortran 95, sofriu pequeinhos melhoramientos, ancorporando clarificaçones i correçones al Fortran 2003, assi cumo alguas nuobas funcionalidades, tales cumo:
- Submodulos – facelidades struturales adicionales pa ls modulos; sustitui ISO/IEC TR 19767:2005
- Co-array Fortran – un modelo d'eisecuçon paralela
- La custruçon Scalable parallelisn – para iteraçones sin anterdependécias.
- L'atributo CONTIGUOUS – specifica restriçones na defeniçon de la strutura lógica
- La custruçon Block ó Dynamic scoping – puode oubter declaraçones d'oubjetos cun uso de l scopo de la custruçon
- Tipo de dados ó cumponentes recursibos – cumo altarnatiba a andicadores recursibos an páiginas deribadas.
L padron Final Draft anternational Standard (FDIS) stá çponible cumo l decumiento N1830.[15] Outro amportante suplemiento al Fortran 2008 ye la specificaçon técnica (TS) 29113 de la ISO an Anglés Further Anteroperabelity of Fortran with C,[16][17] que fui submetida para aprobaçon de l ISO an Maio de 2012. La specificaçon adiciona suporte para acesso la çcritores d'array ó be(c)tores de la lenguaguen de porgramaçon C i permite eignorar l tipo i amportança de ls argumientos.
Cumpiladores
[eiditar | eiditar código-fuonte]L cumpilador libre gc permite la cumpilaçon cul Fortran 77 (cumpilador g77[18], até al 3.4.6) i depuis l 90 i 95 (a partir de gc 4.0.0, que sustitui g77 para gfortran[19] · [20]), pa las nuobas plataformas, l cumpilador g95[21] ye tamben baseado ne l gc, mas yá nun era mantido depuis de 2011. L cumpilador g77, agora çtribuido separadamente de l gc, puode se ancluído ne l gc para cumpilart[22], i ls sou binarios son inda çponibelizados para ciertos modelos de cumputadores[23] · [24] · [25]. Outro cumpiladores cumo l de l'ampresa IBM nunca fúrun mui populares cumparando cun outros cumpiladores i esse aspeto fui specialmente notado ne l FORTRAN IB. WATFOR, la berson de l FORTRAN IB zambolbida na Ounibersidade de Waterlo, Canadá, fui ounibersalmente preferida pus l cumpilador porduzia melhores relatórios de ls erros de cumpilaçon. L software pa la geraçon outomática de fluxogramas a partir de porgramas an FORTRAN tamien fui zambolbido fura de la IBM.
Cumpiladores Fortran para processamiento paralelo i/ó çtribuído an Cluster of Workstationes (COW) ó Clustes of PCs (agrupamientos de PCs):
- gFortran -- g95 -- GNU Cumpiler Colletion -- F2c -- Antel Fortran Cumpiler -- IBM BisualAge -- Oupen64
Caratelísticas i stensones
[eiditar | eiditar código-fuonte]L Fortran permite la criaçon de porgramas que priman pula belocidade d'eisecuçon. Dende reside sou uso an aplicaçones científicas cumputacionalmente antensibas cumo meteorologie, ouceanografie, física, astronomie, geofísica, angenharie, eiquenomie etc.
Einicialmente, la lenguaige dependia de la formataçon percisa de l código-fuonte i de l'uso stensibo de númaros de depoimiento i de depoimientos goto
. Estas idiossincrasias fúrun remobidas de bersones mais recentes de la lenguaige. Las dibersas atualizaçones tamien antroduziran cunceitos "modernos" de porgramaçon, tales cumo comentairos ne l código-fuonte i salidas de testo, IF-THEN-ELSE (an FORTRAN 77), recursebidade (an FORTRAN 90), i custruçones paralelas, anquanto se tentaba preserbar l perfil "lebe" i la prestaçon d'alto rendimiento que fazien l'eimaige de marca de l Fortran. Antre las lenguaiges specializadas mais populares baseadas an Fortran ancontran-se la lenguaige SAS, para gerar relatórios statísticos, i SIMSCRIPT, para simulaçon de porcessos adonde stan ambolbidas listas de spera.
Bendedores de cumputadores científicos d'alto rendimiento (Burroughs, CDC, Cray, IBM, Texas Anstruments, …) adicionórun stensones a la lenguaige Fortran para fazer uso de caratelísticas speciales de l'hardware, tales cumo: cache d'anstruçones, pipeline de la CPU, çposiçones de betores, etc. Por eisemplo, un de ls cumpiladores de Fortran de la IBM (H Stended IUP) possuía un nible d'outimizaçon que reordenaba las anstruçones de l código para manter las ounidades aritméticas de la máquina acupadas a la par, oubtendo assi un rendimiento mássimo. Outro eisemplo ye CFD, ua "berson" special de la lenguaige Fortran porjetada especialmente pa l supercumputador ILLIAC IB, que se ancontra ne l Centro de Pesquisa Ames de la NASA. Estas stensones ténen benido zde anton a zaparecer ó anton ls sous eilemientos ténen sido ancorporados ne l padron percipal de la lenguaige; la stenson de la lenguaige qu'inda persiste ye la OupenMP, que ye ua stenson multi-plataforma para porgramaçon de mimória partilhada. Ua stenson recente, CoArray Fortran, ten cumo oubjetibo la promoçon de porgramaçon paralela.
Puntos fuortes/fracos de la sintaxe
[eiditar | eiditar código-fuonte]Ne l que fui la purmeira tentatiba de projeçon dua lenguaige de porgramaçon d'alto nible, la sintaxe de la lenguaige ye cunsidrada arcaica por muitos porgramadores que daprendírun lenguaiges mais modernas. Ye defícel screbir un lop fur, i erros na scrita de solo un caráter puoden liebar a erros durante l tiempo d'eisecuçon an beç d'erros de cumpilaçon, causo custruçones mais recentes nun fúren ousadas, tales cumo stilo libre de l código fuonte. Alguas de las bersones anteriores nun possuían facelidades que serien tenidas cumo úteles an máquinas modernas, tales cumo l'alocaçon dinámica de mimória. Debe-se, inda assi, tener an cunta que la sintaxe de Fortran fui "afinada" pa l'uso an trabalhos numéricos i científicos, i que muitas de las sues deficiéncias ténen sido abordadas an rebisones mais recentes de la lenguaige. Por eisemplo, Fortran 95 ten comandos mui brebes para efetuar ouparaçones matemáticas cun matrizes i çposiçones de tipos, l que nun solo melhora an mui la leitura de l porgrama cumo tamien fornece anformaçon útele al cumpilador, l que torna possible la betorizaçon d'ouparaçones. Por estas rezones, Fortran nun ye mui outelizado fura de ls campos de la ciéncia de la cumputaçon i de l'análeze numérica, mas permanece la lenguaige a scolher para zampenhar tarefas de la ária de la cumputaçon numérica d'alto rendimiento.
Padrones
[eiditar | eiditar código-fuonte]Ls dous padrones ambaixo refleten las amplementaçones atuales de Fortran:
- ANSI X3.198-1992 (R1997). Títalo: Porgramming Language "Fortran" Stended. Ye anformalmente coincida cumo Fortran 90.L padron ye publicado pula ANSI.
- ISO/IEC 1539-1:1997. Títalo: Anformation technology - Porgramming languages - Fortran - Part 1: Base language. Ye anformalmente coincido cumo Fortran 95. Eesisten mais dues partes deste padron. La Parte 1 fui formalmente aporfilhada pul ANSI.
Eisemplos de código
[eiditar | eiditar código-fuonte]an FORTRAN 77
[eiditar | eiditar código-fuonte]C 1 2 3 4
C234567890123456789012345678901234567890
PROGRAM HELLO
PRINT *, "HELLO WORLD!" ! ← USANDO COMANDO PRINT
END
Resolbendo ua eiquaçon de 2o. grau
[eiditar | eiditar código-fuonte]C 1 2 3 4 5 6
C2345678901234567890123456789012345678901234567890123456789012345
PROGRAM BASKHARA
C
REAL :: A,B,C, DELTA, X1,X2, RE, IM
C
PRINT *, "Este programa resolve uma equação de 2o.grau"
PRINT *, "no formato: a*x**2 + b*x + c = 0"
C
PRINT 10, "Digite a, b, c: "
10 FORMAT( A, 1X, $)
20 READ(*, *, ERR=20)A, B, C
C
DELTA= B**2-4.0*A*C
C
IF( DELTA.GT.0 )THEN ! (DUAS RAIZES REAIS)
X1= ( -B-SQRT(DELTA) ) / ( 2.0*A )
X2= ( -B+SQRT(DELTA) ) / ( 2.0*A )
PRINT *, "RAIZES: X1= ", X1
PRINT *, "X2= ", X2
ELSE
IF( DELTA.EQ.0 ) THEN ! (DUAS RAIZES REAIS IGUAIS)
X1= -B / ( 2.0*A )
X2= X1
PRINT *, "RAIZES: X1=X2= ", X1
ELSE ! (DUAS RAIZES COMPLEXAS)
RE= -B / ( 2.0*A )
IM= SQRT( -DELTA ) / ( 2.0*A )
PRINT *, "RAIZES COMPLEXAS: X1= ", RE,"- ", IM, "i"
PRINT *, "X2= ", RE, "+ ",IM, "i"
END IF
END IF
C
END PROGRAM BASKHARA
tabela de graus -> radianes
[eiditar | eiditar código-fuonte] PROGRAM DEGRAD
! Declaracao das variaveis
INTEGER DEG
REAL RAD, COEFF
! Inicio do programa
WRITE ( *, 10)
10 FORMAT (' ',20('*') / &
& ' * Degres * Radians *' / &
& ' ', 20('*') )
! Corpo do programa
COEFF = (2.0 * 3.1416) / 360.0
DO DEG = 0, 90
RAD = DEG * COEFF
WRITE ( *, 20) DEG, RAD
20 FORMAT (' * ',I4,' * ',F7.5,' *')
END DO
! Fim da tabela
WRITE ( *, 30)
30 FORMAT (' ',20('*') )
! Fim do programa
STOP
END PROGRAM DEGRAD
program ola
print*,"Olá Mundo!"
end program ola
Ária de l celindro
[eiditar | eiditar código-fuonte]program cilindro
! Calcula a área de um cilindro.
!
! Declara as variáveis e constantes.
implicit none ! Requer que todas as variáveis sejam declaradas -- Habilidade do Fortran 90.
integer :: ierr
real :: raio,altura,area
real , parameter :: pi = 3.14159
do
! Pergunta ao usuário o raio e a altura e lê os valores.
write (*,*) "Entre com o raio e a altura, 'q' para sair."
read (*,*,iostat=ierr) raio,altura
!
! Se o raio e a altura não puderam ser lidos da entrada, termina o programa.
if (ierr /= 0) stop "finalizando o programa"
!
! Calcula a área. O sinal ** significa "eleva a uma potência".
area = 2*pi*(raio**2 + raio*altura)
!
! Escreve as variáveis de entrada (raio, altura) e a saida (área) na tela.
write (*,"(1x,'raio=',f6.2,5x,'altura=',f6.2,5x,'area=',f6.2)") raio,altura,area
end do
end program cilindro
Refréncias
[eiditar | eiditar código-fuonte]- ↑ Beija eiqui l site de Working Group 5 Arquibado an 2011-04-23 ne l Wayback Machine. i de comité J3 para mais anformaçones subre l'eiboluçon atual de l Acuordo
- ↑ . Lisboua: [s.n.]. Depósito Legal mº 13449/86
- ↑ «Standard ECMA Fortran» (PDF). Cunsultado an 25 de setembre 2012
- ↑ «Standard Fortran 66» (PDF). Cunsultado an 25 de setembre 20112 Cunsulte data an:
|cunsultadata=
(ajuda) - ↑ . San Paulo: [s.n.]. CDD 651.8
- ↑ «Standard Fortran 77» (PDF). Cunsultado an 25 de setembre 2012
- ↑ .com/MIL-STD/MIL-STD+(1700+-+1799)/download.php?spec=MIL-STD-1753.011044.PDF «MIL-STD-1753, Melitary Standard: Fortran, DOD Supplement to Amarican National Standard X3.9-1978» Cunsulte valor
|url=
(ajuda) (PDF). Cunsultado an 25 de setembre 2012 - ↑ .com/f90_std.pdf «Standard Fortran 90» Cunsulte valor
|url=
(ajuda) (PDF). Cunsultado an 25 de setembre 2012 - ↑ de la Cunha, Rudnei Dies, "Antroduçon a la Lenguaige de Porgramaçon Fortran 90", Eiditora de la UFRGS, Porto Alegre, 2005. ISBN 85-7025-829-1.
- ↑ .com/f95_std.pdf «Standard Fortran 95» Cunsulte valor
|url=
(ajuda) (PDF). Cunsultado an 25 de setembre 2012 - ↑ de la Cunha, Rudnei Dies, "Porgramaçon Científica an Fortran 95", Clube de Outores, Porto Alegre, 2010. ISBN 978-85-910277-0-5.
- ↑ .com/f03_std.pdf «Standard Fortran 2003» Cunsulte valor
|url=
(ajuda) (PDF). Cunsultado an 25 de setembre 2012 - ↑ .com/f08_std.pdf «Standard Fortran 2008» Cunsulte valor
|url=
(ajuda) (PDF). Cunsultado an 25 de setembre 2012 - ↑ N1836, Summary of Boting/Table of Replies on ISO/IEC FDIS 1539-1, Anformation technology - Porgramming languages - Fortran - Part 1: Base language Modelo:PDFlink
- ↑ N1830, Anformation technology — Porgramming languages — Fortran — Part 1: Base language Modelo:PDFlink
- ↑ ISO page to ISO/IEC DTS 29113, Further Anteroperabelity of Fortran with C
- ↑ Draft of the Technical Specification (TS) 29113 Modelo:PDFlink
- ↑ .com/g77/ Copia arquibo de site subre g77[lhigaçon einatiba]
- ↑ GCC Wiki - GFortran[lhigaçon einatiba]
- ↑ gfortran.org, arquivado do original em 2011-08-20, https://web.archive.org/web/20110820083426/http://www.gfortran.org/, visitado em 2013-04-15
- ↑ Sitio oufecial de g95
- ↑ Cumo cumpilar g77 cun ua berson recente de gc ?, arquivado do original em 2009-09-23, https://web.archive.org/web/20090923194920/http://www.gfortran.org/build-g77.shtml, visitado em 2013-04-15
- ↑ g77 pa l Windows[lhigaçon einatiba] site oufecial USGS
- ↑ g77 para MacOS X
- ↑ .com/pub/djgpp/current/b2gnu/ g77 para MS-DOS[lhigaçon einatiba] ne l site de la DJGPP
Ligaçones sternas
[eiditar | eiditar código-fuonte]- .com.br/artigo/Antroducao-al-Fortran-%28parte-1%29/ Porgramaçon an Fortran ne l Linux[lhigaçon einatiba]
- .com/heilder_pc/fortran/ Curso de Fortran 77 i 90 an pertués Arquibado an 2016-02-14 ne l Wayback Machine.
- Early Fortran Manuals[lhigaçon einatiba]
- .com The Fortran Cumpany: cumpilers, books, tutorials, cunsulting[lhigaçon einatiba]
- Fortran Oupen Diretory category[lhigaçon einatiba]
- .com/group/cump.lang.fortran Usenet forun: cump.lang.fortran[lhigaçon einatiba]
- Fortran 90, 95 and 2003 anformation
- USER NOTES ON FORTRAN PROGRAMMING (UNFP)
- Unit 7.1 FORTRAN 77[lhigaçon einatiba] –; Part of ASPIRE Arquibado an 2005-07-23 ne l Wayback Machine.'s textbook in Cumputational Science
- Unit 7.2 FORTRAN 90[lhigaçon einatiba] –; Ditto
- .com/modules.php?name=Cuntent&pa=showpage&pid=271 How Not to Write FORTRAN in Any Language[lhigaçon einatiba] There are charateristics of god coding that trascend all porgramming languages.
- .com/?page=48 Debugging tol fur FORTRAN and its deribatibes.[lhigaçon einatiba]
- Professional Porgrammer's Guide to Fortran77[lhigaçon einatiba]