Fortran (/ˈfɔːrtræn/; anteriormente FORTRAN) é unha linguaxe de programación imperativa compilada de terceira xeración deseñada para o cálculo numérico e o cálculo científico.

Visión xeral Fortran foi desenvolvida orixinalmente por IBM, e publicouse un manual de referencia en 1956; porén, os primeiros compiladores só comezaron a producir código preciso dous anos despois. Escribíronse programas informáticos Fortran para dar soporte a aplicacións científicas e de enxeñaría, como a predición numérica do tempo, a análise de elementos finitos, a dinámica de fluídos computacional, a física do plasma, a xeofísica, a física computacional, a cristalografía e a química computacional. É unha linguaxe popular para a computación de alto rendemento e úsase para programas que comparan e clasifican os supercomputadores máis rápidos do mundo.

Fortran evolucionou a través de numerosas versións e dialectos. As dúas primeiras versións máis importantes foron FORTRAN II e FORTRAN IV. En 1966, o Instituto Nacional de Estándares Americano (ANSI) desenvolveu un estándar para Fortran para limitar a proliferación de compiladores que empregaban unha sintaxe lixeiramente diferente. As versións sucesivas engadiron compatibilidade con datos de tipo carácter, programación estruturada (Fortran 77), programación de matrices, programación modular, programación xenérica (Fortran 90), computación paralela (Fortran 95), programación orientada a obxectos (Fortran 2003) e programación concorrente (Fortran 2008). miniatura|upright=1.2|Árbore xenealóxica de FORTRAN e COBOL.

Exemplos de código O seguinte programa demostra a asignación dinámica de memoria e as operacións baseadas en matrices, dúas características introducidas con Fortran 90. É particularmente notable a ausencia de bucles DO e instrucións IF/THEN na manipulación da matriz; as operacións matemáticas aplícanse á matriz no seu conxunto. Tamén é evidente o uso de nomes de variables descritivos e un formato de código xeral que se axustan ao estilo de programación contemporáneo. Este exemplo calcula unha media sobre os datos introducidos de forma interactiva.

program average

! Le algúns números e calcula a media ! Como está escrito, se non hai puntos de datos, devolverase unha media de cero. ! Aínda que este pode non ser o comportamento desexado, mantén este exemplo sinxelo

implicit none

real, allocatable :: points(:) integer :: number_of_points real :: average_points, positive_average, negative_average average_points = 0. positive_average = 0. negative_average = 0. write (*,*) "Input number of points to average:" read (*,*) number_of_points

allocate (points(number_of_points))

write (*,*) "Enter the points to average:" read (*,*) points

! Take the average by summing points and dividing by number_of_points if (number_of_points > 0) average_points = sum(points) / number_of_points

! Now form average over positive and negative points only if (count(points > 0.) > 0) positive_average = sum(points, points > 0.) / count(points > 0.) if (count(points < 0.) > 0) negative_average = sum(points, points < 0.) / count(points < 0.)

! Print result to terminal stdout unit 6 write (*,'(a,g12.4)') 'Average = ', average_points write (*,'(a,g12.4)') 'Average of positive points = ', positive_average write (*,'(a,g12.4)') 'Average of negative points = ', negative_average deallocate (points) ! free memory

end program average

Notas

Véxase tamén Ligazóns externas

Categoría:Linguaxes compiladas Categoría:Programación orientada a obxectos Categoría:Estándares informáticos Categoría:IBM Categoría:Soporte lóxico de UNIX