1991 Fortran 90 quelques facilités de la programmation objets, le calcul matriciel, le contrôle de la précision numérique, 2000 Fortran 95, introduction de
Previous PDF | Next PDF |
[PDF] COURS DE FORTRAN 90 - Institut de Mathématiques de Bordeaux
Le langage fortran évolue réguli`erement, mais la véritable évolution a été faite en passant du fortran 77 au fortran 90 Les nouvelles normes fortran 95 (puis
[PDF] Cours de Fortran 90 - COURSES
langage informatique (pour nous, le fortran 90 (f90)) → ce fichier constitue le programme ; → c'est une suite d'opérations sur des variables, et éventuellement
[PDF] Fortran - CNRS
Depuis Fortran 90, on oublie le format fixe On peut coder plusieurs instructions sur la même ligne en les séparant avec « ; » On peut coder une instruction sur
[PDF] Les Evolutions du Fortran 90/95
1991 Fortran 90 quelques facilités de la programmation objets, le calcul matriciel, le contrôle de la précision numérique, 2000 Fortran 95, introduction de
[PDF] Fortran 90 & Programmation Numérique Notes de Cours
7 fév 2018 · En fortran 90, les instructions sont écrites dans un fichier dont l'extension est “f90” , (par exemple : toto f90), la commande de compilation sur un
[PDF] Fortran 90/95
Opérations sur les tableaux En fortran 90, les opérateurs arithmétiques s' appliquent aussi aux tableaux: Initialisation grâce à = : Opérations terme à terme :
[PDF] 1 Exercices de base - Institut de Mathématiques de Bordeaux
Licence Mathématiques et Applications 3eannée : Mathématiques Pour l' Ingénierie Programmation - Correction des TP de Fortran 90 1 Exercices de base
[PDF] Elements de programmation Fortran
Si on suit le format fortran 77, on nommera le fichier program f Si on suit le fortran 95, program f90 Dans tous les cas, la compilation s'effectuera avec la même
[PDF] Fortran 90/95 et C - Index of
1991 : fortran 90 (évolution majeure mais un peu tardive) format libre, fonctions tableaux, allocation dynamique, structures, modules ⇒ ne plus écrire de fortran
[PDF] fortran 90 example
[PDF] fortran 90 function
[PDF] fortran 90 handbook pdf
[PDF] fortran 90 pi
[PDF] fortran 90 programming pdf
[PDF] fortran 90 read
[PDF] fortran 90 standard pdf
[PDF] fortran 90 textbook
[PDF] fortran 90 textbook pdf
[PDF] fortran 90 tutorial pdf
[PDF] fortran 90 write format
[PDF] fortran 90/95 pdf
[PDF] fortran 95 compiler
[PDF] fortran 95 continuation line
Les Evolutions du Fortran 90/95.
B. Nkonga,
Projet ScAlApplixINRIAFuturs, Universit´e Bordeaux 1Cours a Yaound, 15-25 Juillet 2007 - p.1
PlanIntroduction
Déclaration des variables
Les pointeurs
Les schémas de décision et les schémas itératifs Maintenabilité + Réutilisabilité = ModularitéLes interfaces
Visibilité
Vers le Fortran 95/2000/2003
Cours a Yaound, 15-25 Juillet 2007 - p.2
Introduction
Cours a Yaound, 15-25 Juillet 2007 - p.3
Un peu d'histoire
1954IBM avecJohn Backuspublie la description d'un
système deFORmulation mathématiqueTRANsposée.1956Premier manuel de référence qui défini le
Fortran I.
1957Fortran II avec l'apparition des procédures et la
compilation séparée.1962Fortran IV (Fortran III est resté interne à IBM)
introduit le type explicite. Il sera rebatisé Fortran 66.1978Fortran 77 (l'ère moderne) propose une avancée
significative dans les entrés sorties avec le format libre et l'instruction OPEN.Cours a Yaound, 15-25 Juillet 2007 - p.4
...Un peu d'histoire1991Fortran 90 quelques facilités de la programmation
objets, le calcul matriciel, le contrôle de la précision numérique, ...2000Fortran 95, introduction de notion de parallélisme
de données200XFortran 2000, programmation orienté objets
Cours a Yaound, 15-25 Juillet 2007 - p.5
Introduction au génie logiciel (ou rappels)
La généricité: C'est le fait pour un objet de pouvoir être utilisé tel quel dans différents contextes (ou même indépendamment du contexte). Outils: INTERFACE, MODULE PROCEDURE, OPTIONAL, POINTER La modularité: La partie la plus importante de l'écriture de programmes consiste à les structurer pour les présenter comme un assemblage de briques qui s'emboitent naturellement. Ce problème est fondamental dûà la taille conséquente des programmes. La modularité est le fait de structurer un programme en modules indépendants réduisant le coût de la compilation séparée etde la reconstruction incrémentale, tout en maintenant des possibilités d'évolutions. Outils: MODULE, CONTAINS, les types dérivés, structures, dépendances. L'encapsulation: L'encapsulation consiste à rassembler des données et/ou des objets au sein d'une structure en masquant l'implémentation de l'objet. Il permet aussi de garantir l'intégrité des données contenues dans l'objet.Outils: PUBLIC, PRIVATE, ONLY, USE, =>
Cours a Yaound, 15-25 Juillet 2007 - p.6
Introduction au génie logiciel
Le polymorphisme: signifie que les différentes méthodes d'une opération ont la même signature. Lorsque une opération est invoquée sur unobjet, celui-ci connait sa classe et par conséquent est capable d'invoquer automatiquement la méthode correspondante. Pour qu'une nouvelle classe supporte une opération existante il lui suffit de fournir la méthode correspondante sans avoir à se soucier des autres méthodes déjà définies.Outils: INTERFACE, "MODULE PROCEDURE", OPTIONAL
La recurcivité: C'est le fait pour un objet (programme ou une procédure) de s'appeler au moins une fois lui-même. Il permet de résoudre de façon élégante certains problèmes, soit par l'implémentation, soit par lesimple fait de penser le problème en terme de récursivité.Outils : RECURSIVE, RESULT, les pointeurs.
Cours a Yaound, 15-25 Juillet 2007 - p.7
Introduction au génie logiciel : le moduleUn module est un élément de petite taille (en général un ou quelques sous-programmes) qui
sert, par assemblage, à la construction de logiciels. Un module doit être cohérent et autonome. Un module rend des services ou effectue des traitements. Pour exploiter unmodule dans un logiciel, il est nécessaire d'avoir une description précise de ce qu'il fait, ce
qui, dans la pratique se traduit par le passage d'information à travers son interface. De ce point de vue, on peut dire qu'un module est défini par son interface. D'où les principes de la modularité: Définir des interfaces explicites chaque fois que deux modules échangent des informations. Masquer le plus d'information possible. Seules les informations qui servent à la communication avec d'autres modules doivent être publiques (visibles de l'extérieur du module). Un module doit communiquer avec aussi peu d'autres modules que possible. Unités linguistiques modulaires : les modules doivent correspondre à des unités syntaxiques du langage.Cours a Yaound, 15-25 Juillet 2007 - p.8
Structuration d'un programme en F90/95.La nécessité de décomposer un programme en plusieurs parties est maintenant admise. En
Fortran 90/95 chacune de ces parties, appelée unité de programmation, est compilable séparément mais en respectant les dépendances.Il existe trois unités de programmation :
Le programme principal
PROGRAM Toto
CONTAINS
END PROGRAM Toto
La procédure externeSUBROUTINE Titi(les args)CONTAINSEND SUBROUTINE TitiFUNCTION Titi(les args)CONTAINSEND FUNCTION Titi
Cours a Yaound, 15-25 Juillet 2007 - p.9
Le module
MODULE Tata
CONTAINS
END MODULE Tata
Un programme contient au moins l'unité "programmeprincipal». programme?=fichier unité de progammation?=fichierCours a Yaound, 15-25 Juillet 2007 - p.10
Le cadre de programmation : Format libre
La ligne de programme comporte au plus 132 caractères. Les caractères blancs sont significatifs, sauf en début de ligneIF (LaVar.eq.0) THENetI F (La Var.eq.0) TH EN
Une ligne de programme peut décrire plusieurs instructionssi celles-ci sont séparées par; a=3 ; b=4 c=8 ; write( *,*) a*b*c Une instruction peut être décrite sur plusieurs lignes (39 au plus) finissant par "&", sauf la dernière a=38+c & d+b Dans le passage à la ligne dans l'expression d'une chaîne de caractère la suite de la chaîne doit être précédée par "&"MaString=''bonjour&
& la formation est bien?``MaString=''bonjour&& la formation est bien? ``Cours a Yaound, 15-25 Juillet 2007 - p.11
Le cadre de programmation : Format libre
le caractère!marque le début d'un commentaire qui se termine toujours à lafin de la ligne. Il n'y a pas de restriction sur les caractères utilisés dans un commentaire car ceux-ci sont sans effets. Par conséquent, un commentaire ne peut avoir de suite, un commentaire ne peut être intercalé entre des lignes suites. ! on affecte 3 a la variable A A=3B=4 ! on affecte 4 a la variable B
Cours a Yaound, 15-25 Juillet 2007 - p.12
l'AlphabetLes 37 caractères alphanumériques
(26 lettres, 10 chiffres et le souligneur) : a b c d e f g h i j k l m n o p q r s t u v w x y z0 1 2 3 4 5 6 7 8 9 _
Il y a équivalence entre minuscule et majusculeLes 21 caractères spéciaux :
: ' ! " % & ; ? blanc $Cours a Yaound, 15-25 Juillet 2007 - p.13
Les éléments lexicauxIls sont composés d'au plus 31 caractèresalphanumériques dont le premier doit être une lettre.
Les mots clefs : Ce sont lesnoms communsdu langageDO END WHILE MODULE INTEGER MINVAL
Les identificateurs : Ce sont lesnoms propreschoisis par le programmeur pour désigner les entités de son programme de variables, de programmes, de procédures, de modules, de types dérivés, d'interfaces génériques, etc.Cours a Yaound, 15-25 Juillet 2007 - p.14
Les Opérateurs
Opérateurs arithmétiques
*/**a = b + c*b**2Opérateurs de comparaison
== /= IF (a==3) THENOpérateurs d'ordre (uniquement numérique)
< > <= >= IF (a<=3) THENOpérateurs logiques
.NOT. .AND. .OR. .EQV. .NEQV.IF (.NOT.(a==3).AND.(MyString/=''bonjour'')) THEN
Opérateur de concaténation// print*, "Bon" // "jour"Cours a Yaound, 15-25 Juillet 2007 - p.15
Séparateurs et délimiteurs
les séparateursREAL :: x, Pi, Tab(5)
les délimiteursTab(1:5) = (/1, 4, 200, 300, 3/)
Cours a Yaound, 15-25 Juillet 2007 - p.16
Les étiquettesLes étiquettes sont utilisées pour référencer une instruction ou un bloc d'instructions. Pour référencer une instruction, l'étiquette est composée d'au plus 5 chiffres située en début de l'instruction.100 FORMAT( E15.8 )
Pour référencer un bloc d'instruction, l'étiquette est composée d'un identificateur en début de bloc suivie du séparateur:puis du bloc d'instruction.MaBoucle : DO i = 1, 10
T(i) = i
END DO MaBoucle
Cours a Yaound, 15-25 Juillet 2007 - p.17
Les instructions exécutables
[etiquette] mot-cl´e [corps]L'affectation
ObjetFinal = expression_evaluable
l'appel à une procédureCALL MyProcedure(les arguments)
les I/OWRITE(6,*) SinPi(x)
les formats100 FORMAT( E15.8 )
RETURN,STOP
Cours a Yaound, 15-25 Juillet 2007 - p.18
Les "Atomes"
Les types intrinsèques
Numériques :INTEGER, REAL, COMPLEX
Booléens :LOGICAL
Chaînes de caractères :CHARACTER
Les opérateurs intrinsèques
Scalaires+, -,*,**, /, ==, >, <, >=, <=,
Booléens.AND. , .OR. , .NOT.
Chaînes de caractères//, ==
Affectation=
Quelques attributs :PARAMETER, DIMENSION(:,:), ALLOCATABLE, POINTER, TARGET, SAVE, SEQUENCE, INTENT(IN/OUT/INOUT),PUBLIC, PRIVATE, EXTERNAL, INTRINSIC
Quelques Mots clefs:
PROGRAM, SUBROUTINE, FUNCTION, MODULE, USE, CALL, CONTAINS, PUBLIC , PRIVATE, PURE, ELEMENTAL, END, DO, ELSE, IF, SELECT,CASE, EXIT, CYCLE, WHILE
Cours a Yaound, 15-25 Juillet 2007 - p.19
Les "Organes"
Les fonctions intrinsèques
Scalaires:MAX, MIN, EXP, SIN, COS, MOD
Tableaux:MAX, MIN, EXP, SIN, COS, SUM, MATMUL
Booléens:PRESENT, ASSOCIATED
Chaînes de caractères:TRIM, LEN, TRIM_LEN
Les procédures utilisateur,
Les fonctions utilisateur,
Les modules utilisateur.
Cours a Yaound, 15-25 Juillet 2007 - p.20
Déclaration des variables
Cours a Yaound, 15-25 Juillet 2007 - p.21
F90/95 : Déclaration des variablestype [les attributs] :: liste des objetsTYPENUM[(param
etres)], [les attributs] :: liste des varsLOGICAL, [les attributs] :: liste des vars
CHARACTER(taille[,param
etres]), [les attributs] :: liste des varsExemples:
INTEGER , PARAMETER :: Ns=100, Nt=200
REAL(8) , PRIVATE :: pi = 3.14
REAL(4) , TARGET, SAVE :: x
REAL(8) , INTENT(IN) :: Z
COMPLEX(8), DIMENSION(Ns,3):: ChampsI, ChampsR
LOGICAL , DIMENSION(Nt) :: Bol
CHARACTER(LEN=10), PUBLIC :: VigieName, NetCdfName CHARACTER(10,KIND(1)) :: VigieName2, NetCdfName2 ! jeu asciiCours a Yaound, 15-25 Juillet 2007 - p.22
Définitions de quelques attributsPARAMETERDéfinit des constantes symbol- iquesDIMENSIONDéfinit la forme (explicite ou im-
plicite), la taille (explicite, implicite ou différée) et le rang d'un tableauPOINTERDéfinit les objets dynamiques.
PUBLICDonne l'accessibilité des com-
posantes d'un Module aux unités qui lui font appel par l'instructionUSE.OPTIONALpermet de définir des arguments
optionnels à l'appel d'une procédure.SAVEDéfinit des variables rémanentes
dans une procédure. La zone mé- moire réservée à cette variable est préservée d'un appel à l'autre.ALLOCATABLEDiffère la réservation de l'espace mémoire à l'utilisation de l'instructionALLOCATETARGETDéfinition des variables cibles po-
tentiels d'objets dynamiques.SEQUENCEinterdit de changer l'ordre des
composantes d'une structure.PRIVATELimite l'accessibilité des com-
posantes d'un module à lui même.INTENTProtège l'accès aux arguments
d'une procédure en leur donnant une vocation :IN, OUT, INOUT.EXTERNALIdentifie les noms de procé-
dures externes transmis comme argu- ments à une procédure.Cours a Yaound, 15-25 Juillet 2007 - p.23
F90/95 : Maîtrise de la précision NumériqueTYPENUM(KIND=Param`etre) :: les variables TYPENUMest la notation génériques pour les types intrinsèques numériques :INTEGER, REAL, COMPLEX. Le paramètre est un entier qui peut s'obtenir en utilisant des fonctions intrinsèques. SELECTED_INT_KIND(R):fonction qui donne la valeur du paramètre du type entier permettant de représenter une entier, X, avec|X|<10r SELECTED_REAL_KIND(P,R):fonction qui donne la valeur du paramètre du type réel permettant de représenter un réel,X, avecpchiffres significatifs et|X|<10r KIND(X):fonction qui donne la valeur du paramètre du type X.Cours a Yaound, 15-25 Juillet 2007 - p.24
F90/95 : Maîtrise de la précision NumériqueExemples de déclaration
déclaration d'un entier d'au moins 10 chiffres : INTEGER, PARAMETER :: MyIntg0 = SELECTED_INT_KIND(10)INTEGER(MyIntg0) :: I
déclaration d'un réel compris entre-1020et1020avec 7 chiffres décimaux : INTEGER, PARAMETER :: MyReal0 = SELECTED_REAL_KIND(P=7,R=20)REAL(MyReal0) :: X
déclaration de la précision des réels et des entiers INTEGER, PARAMETER :: MyReal=KIND(1.D0), MyIntg=KIND(1)INTEGER(MyIntg) :: I
REAL(MyReal) :: X
déclaration des complexes avec la même précision que pour les réels REAL(KIND=MyReal) :: X; COMPLEX(KIND=MyReal) :: CxCours a Yaound, 15-25 Juillet 2007 - p.25
F90/95 : Maîtrise de la précision Numérique accès aux limites de précision EPSILON(X)écart relatif maximal entre deux réels de typeX:X(1-?)> X < X(1 +?)
HUGE(X)plus grande valeur représentable dans le typeX TINY(X)plus petite valeur représentable dans le typeXIInfini = HUGE(1_MyInt); RInfini = HUGE(1_MyReal)
REps = EPSILON(1_MyReal)
Cours a Yaound, 15-25 Juillet 2007 - p.26
F90/95 : Maîtrise de la précision NumériquePROGRAM PrecisionS INTEGER, PARAMETER :: MyReal=KIND(1.0), MyIntg=KIND(1) INTEGER, PARAMETER :: MyReal4=KIND(1.E0),MyReal8=KIND(1.D0) INTEGER, PARAMETER :: MyRealM=SELECTED_REAL_KIND(19,90) PRINT *, " Infini Entier =", HUGE(1_MyIntg) PRINT *, "*****************REAL par defaut******************" PRINT *, " Infini Reel =", HUGE(1.0_MyReal) PRINT *, " Eps Relatif Reel =", EPSILON(1.0_MyReal) PRINT *, " Zero Reel =", TINY(1.0_MyReal) PRINT *, " Precision 10-E =", PRECISION(1.0_MyReal) PRINT *, "*****************REAL par defaut 1.E0******************" PRINT *, " Infini Reel =", HUGE(1.0_MyReal4) PRINT *, " Eps Relatif Reel =", EPSILON(1.0_MyReal4) PRINT *, " Zero Reel =", TINY(1.0_MyReal4) PRINT *, " Precision 10-E =", PRECISION(1.0_MyReal4)Cours a Yaound, 15-25 Juillet 2007 - p.27
F90/95 : Maîtrise de la précision Numérique PRINT*, "*****************REAL par defaut 1.D0******************" PRINT *, " Infini Reel =", HUGE(1.0_MyReal8) PRINT *, " Eps Relatif Reel =", EPSILON(1.0_MyReal8) PRINT *, " Zero Reel =", TINY(1.0_MyReal8) PRINT *, " Precision 10-E =", PRECISION(1.0_MyReal8) PRINT *, "*****************REAL SELECTED_REAL_KIND(6,70)************" PRINT *, " Infini Reel =", HUGE(1.0_MyRealM) PRINT *, " Eps Relatif Reel =", EPSILON(1.0_MyRealM) PRINT *, " Zero Reel =", TINY(1.0_MyRealM) PRINT *, " Precision 10-E =", PRECISION(1.0_MyRealM)END PROGRAM PrecisionS
Cours a Yaound, 15-25 Juillet 2007 - p.28
F90/95 : Maîtrise de la précision NumériqueRésulats obtenus avec le programme précédent sur un ES45