Introducció
En aquest tema, explorarem els estàndards de Fortran i com assegurar la portabilitat del codi. La portabilitat és crucial per garantir que el codi escrit en Fortran pugui ser executat en diferents plataformes i compiladors sense necessitat de modificacions significatives.
Estàndards de Fortran
Fortran ha evolucionat significativament des de la seva creació, amb diverses versions estandarditzades. A continuació, es presenten els principals estàndards de Fortran:
- Fortran 66 (ANSI X3.9-1966): La primera versió estandarditzada de Fortran.
- Fortran 77 (ANSI X3.9-1978): Introducció de noves estructures de control i millores en la gestió de cadenes.
- Fortran 90 (ISO/IEC 1539:1991): Introducció de programació modular, arrays dinàmics, i altres característiques modernes.
- Fortran 95 (ISO/IEC 1539-1:1997): Millores en la programació paral·lela i altres refinaments.
- Fortran 2003 (ISO/IEC 1539-1:2004): Suport per a programació orientada a objectes i interoperabilitat amb C.
- Fortran 2008 (ISO/IEC 1539-1:2010): Millores en la programació paral·lela amb coarrays.
- Fortran 2018 (ISO/IEC 1539-1:2018): Millores addicionals en la programació paral·lela i altres característiques.
Taula de Comparació d'Estàndards
| Estàndard | Any | Característiques Clau |
|---|---|---|
| Fortran 66 | 1966 | Primera versió estandarditzada |
| Fortran 77 | 1978 | Estructures de control, millores en cadenes |
| Fortran 90 | 1991 | Programació modular, arrays dinàmics |
| Fortran 95 | 1997 | Millores en programació paral·lela |
| Fortran 2003 | 2004 | Programació orientada a objectes, interoperabilitat amb C |
| Fortran 2008 | 2010 | Programació paral·lela amb coarrays |
| Fortran 2018 | 2018 | Millores en programació paral·lela i altres característiques |
Portabilitat del Codi
Bones Pràctiques per a la Portabilitat
- Adherir-se als Estàndards: Utilitza característiques estandarditzades de Fortran per assegurar la compatibilitat entre diferents compiladors.
- Evitar Extensions del Compilador: Les extensions específiques del compilador poden no ser compatibles amb altres compiladors.
- Proves en Diversos Compiladors: Prova el teu codi en diversos compiladors per assegurar la seva portabilitat.
- Documentació Clara: Documenta clarament el codi, incloent les dependències i les versions de Fortran utilitzades.
- Utilitzar Mòduls: Els mòduls ajuden a organitzar el codi i milloren la seva portabilitat.
Exemple Pràctic
A continuació, es presenta un exemple de codi que segueix les bones pràctiques per a la portabilitat:
module math_operations
implicit none
contains
function add(a, b)
real, intent(in) :: a, b
real :: add
add = a + b
end function add
function subtract(a, b)
real, intent(in) :: a, b
real :: subtract
subtract = a - b
end function subtract
end module math_operations
program main
use math_operations
implicit none
real :: x, y, result
x = 5.0
y = 3.0
result = add(x, y)
print *, 'Sum: ', result
result = subtract(x, y)
print *, 'Difference: ', result
end program mainExplicació del Codi
- Mòdul
math_operations: Defineix un mòdul que conté dues funcions,addisubtract, per sumar i restar dos nombres reals. - Funcions
addisubtract: Cada funció pren dos arguments reals i retorna el resultat de l'operació. - Programa Principal
main: Utilitza el mòdulmath_operationsper realitzar operacions de suma i resta, i imprimeix els resultats.
Exercicis Pràctics
Exercici 1: Crear un Mòdul de Multiplicació i Divisió
- Crea un mòdul anomenat
advanced_mathque contingui funcions per multiplicar i dividir dos nombres reals. - Escriu un programa principal que utilitzi aquest mòdul per realitzar operacions de multiplicació i divisió.
Solució
module advanced_math
implicit none
contains
function multiply(a, b)
real, intent(in) :: a, b
real :: multiply
multiply = a * b
end function multiply
function divide(a, b)
real, intent(in) :: a, b
real :: divide
if (b /= 0.0) then
divide = a / b
else
print *, 'Error: Division by zero'
divide = 0.0
end if
end function divide
end module advanced_math
program main
use advanced_math
implicit none
real :: x, y, result
x = 6.0
y = 2.0
result = multiply(x, y)
print *, 'Product: ', result
result = divide(x, y)
print *, 'Quotient: ', result
end program mainExercici 2: Provar el Codi en Diversos Compiladors
- Prova el codi de l'exercici anterior en almenys dos compiladors diferents (per exemple, gfortran i ifort).
- Documenta qualsevol problema de compatibilitat i com es va resoldre.
Conclusió
En aquesta secció, hem explorat els estàndards de Fortran i com assegurar la portabilitat del codi. Seguint les bones pràctiques i utilitzant característiques estandarditzades, podem escriure codi que sigui compatible amb diversos compiladors i plataformes. La portabilitat és essencial per al desenvolupament de programari robust i mantenible.
Curs de Programació en Fortran
Mòdul 1: Introducció a Fortran
- Introducció a Fortran
- Configuració de l'Entorn de Desenvolupament
- Sintaxi i Estructura Bàsiques
- Escrivint el teu Primer Programa en Fortran
Mòdul 2: Conceptes Bàsics
- Variables i Tipus de Dades
- Operadors i Expressions
- Entrada i Sortida
- Estructures de Control: Sentències If
- Estructures de Control: Bucles
Mòdul 3: Arrays i Cadenes
Mòdul 4: Procediments i Funcions
Mòdul 5: Estructures de Dades Avançades
Mòdul 6: Gestió de Fitxers
Mòdul 7: Temes Avançats
Mòdul 8: Millors Pràctiques i Optimització
- Tècniques d'Optimització de Codi
- Depuració i Perfilat
- Escrivint Codi Mantenible
- Estàndards i Portabilitat de Fortran
