Le fortran, dont le nom provient de (FORmula TRANslator), est le premier langage de programmation de haut niveau
écrit par John Backus dans la fin des années 1950.
Présenté en 1954, la version Fortran I est sortie en 1957. Ce langage est toujours utilisé dans les milieux scientifiques, des
mathématiques, astronomie, de la recherche etc, car on y trouve des milliers de librairies écrites par les chercheurs et étudiants.
Les versions fortran II, III, IV et V puis fortran 66, fortran 77, fortran 90, fortran 95, fortran 2003 et fortran 2008
ont accompagné les étudiants, les scientifiques at autres chercheurs sur plusieurs générations !
Le FORTRAN est un langage compilé, ce qui signifie que les programmes écrits en FORTRAN doivent être traduits en
langage machine avant d'être exécutés. Depuis sa création, FORTRAN a connu plusieurs évolutions avec de
nouvelles fonctionnalités et améliorations.
Le FORTRAN est particulièrement adapté aux simulations numériques et aux modèles mathématiques utilisés en astronomie,
tels que les simulations de formation des galaxies, les modèles de dynamique stellaire, la modélisation des
atmosphères planétaires et la génération de données d'observation.
En résumé, le FORTRAN est un langage de programmation important en mathématique, sciences et astronomie, car il est bien
adapté pour la résolution de problèmes numériques complexes dans ces domaines scientifique.
Edition & compilation Syntaxe |
Trucs Fichiers |
Liens |
Plusieurs versions du fortran circulent encore, mais les fichiers sources sont en principe révélateurs de ces versions
avec leur extensions, par exemple: sinus .f ou .for ou sinus.f90 ou sinus.f95
Vous pouvez utiliser votre éditeur préféré tel que vi, nano, joe, emacs ou 'Visual Studio Code'...
En effet on travail souvent en mode console pour ces applications de calcul.
$ joe sinus.f95 |
Voici un exemple d'appel depuis la console pour l'édition du fichier source sinus.f95 |
sinus2.f95 Row 13 Col 1 10:27 Ctrl-K H for help program sinus implicit none double precision val = 45.0 double precision, parameter :: pi = 3.14159265359d0 print *, 'Sinus de ',val,' = ', sin(val*(pi/180.0)) end program sinus | Avec l'éditeur de texte sous console "joe" |
Pour vos merveilles, pas de problème sous Linux avec "gfortran"
$ gfortran -o sinus sinus.f95
Vous pouvez exécuter après la compilation votre programme dans le répertoire de travail .
Ne pas oublier de changer le mode du fichier avec la commande
$ chmod +x sinus
Pour ce faire il suffit de lancer la commande en spécifiant d'où doit être exécuté le programme de la manière suivante :
$ ./sinus
Si vous souhaitez produire des fichiers objets .o avec les fichiers .f95 par exemple, il suffit de tapper la commande
$ gfortran -c fraction.f95
le résultat de cet opération donnera un fichier "fraction.o" dans le répertoire.
Un programme est un module souvent composé de plusieurs modules internes ou externes.
!-prog principal---------------------- program calcul ... call affiche ... contains !-subroutines-------------------------- subroutine affiche ... ... return end subroutine affiche !-fonctions----------------------------- function sinus(val) ... ... end function sinus end program calcul !--------------------------------------
La déclaration des variables est facultative en Fortran.
Sans déclaration, les variables sont par défaut de type REAL sauf pour les variables dont le nom commence
par une les lettres I, J, K, L, M ou N. Elles sont alors de type INTEGER par défaut.
jp@URANUS:~/progra/fortran$ cat var.f95 ! ! Travail avec des variables non définies ! ! Jean-Pierre Perroud, mai 2010 ! ! debut du programme program var ! boucle d'écriture avec i non définit do i = 1,5 print 10,'Valeur de i = ', i end do ! assignation de valeur aux variables non définies juste = 44 somme = 12.0 print 10,'Var juste = ',juste print 20,'Var Somme = ',somme ! formats de mise en page 10 format (a,i4) 20 format (a,f4.1) end program var ! fin du programme jp@URANUS:~/progra/fortran$
Ce qui donne en faisant tourner le programme ...
jp@URANUS:~/progra/fortran$ ./var Valeur de i = 1 Valeur de i = 2 Valeur de i = 3 Valeur de i = 4 Valeur de i = 5 Var juste = 44 Var Somme = 12.0 jp@URANUS:~/progra/fortran$
On voit bien que la variable "i" qui n'étant pas définie dans le programme, est bien de type "integer" .
On note aussi que "juste" qui commence par un "j" est bien aussi de type "integer",
alors que "Somme" qui n'est pas définie et ne comporte pas une première lettre dans la liste
i,j,k,l,m et n est bien un variable de type "real", cqfd !
En résumé, même si la déclaration des variables n'est pas obligatoire, je trouve plus intéressant
de définir toutes celles que nous utiliserons.
Sur des programmes plus gros, cela simplifie tout de même le debuguage de ceux-ci et nous oblige
à plus de rigueur.
Il est a noter que l'on peut modifier la liste des variables implicites en modifiant ou ajutant des définitions.
implicit real*8 (S)
Ce qui va donner que toutes les variables utilisées commençant pas "S" seront de type real double précision.
Regardons maintenant comment créer un fichier puis comment lirce fichier
Un bout de code pour créer un fichier
program creation_fichier implicit none integer :: file_unit character(len=30) :: nom_fichier = "mon_fichier.txt" character(len=100) :: texte = "Contenu du fichier" ! Ouvrir le fichier open(newunit=file_unit, file=nom_fichier, status="new") ! Écrire dans le fichier write(file_unit,*) texte ! Fermer le fichier close(file_unit) end program creation_fichier
Ce programme crée un nouveau fichier nommé "mon_fichier.txt" dans le répertoire de travail avec le contenu "Contenu du fichier".
La commande "newunit" dans la commande OPEN indique que Fortran doit choisir un numéro de fichier disponible pour vous.
Vous pouvez également spécifier un numéro de fichier avec le paramètre "unit" si vous préférez utiliser un numéro spécifique.
Notez que les noms de fichier et les chemins d'accès peuvent varier selon votre système d'exploitation.
Assurez-vous de spécifier le nom et le chemin de votre fichier correctement pour qu'il soit créé dans le bon répertoire.
Voici un exemple de programme pour ouvrir un fichier.
program ouverture_de_fichier implicit none ! Déclaration des variables character(len=100) :: nom_fichier integer :: statut, unit ! Demande le nom du fichier à ouvrir write(*,*) 'Entrez le nom du fichier à ouvrir :' read(*,*) nom_fichier ! Ouvre le fichier en mode lecture seule open(unit=unit, file=nom_fichier, status='old', action='read', iostat=statut) ! Vérifie si l'ouverture du fichier s'est bien passée if (statut /= 0) then write(*,*) 'Erreur lors de l''ouverture du fichier.' stop else write(*,*) 'Le fichier a été ouvert avec succès.' end if ! Ferme le fichier close(unit=unit) end program ouverture_de_fichier
Dans ce code, nous demandons à l'utilisateur de saisir le nom du fichier à ouvrir, par exemple "mon_fichier.txt" ou un autre.
Puis nous ouvrons le fichier en utilisant la commande open Nous vérifions également si l'ouverture du fichier
s'est bien passée en vérifiant le code de statut renvoyé par open.
Enfin, nous fermons le fichier en utilisant la commande close.
Jean-Pierre Perroud