Introduction au langage Fortran
Introduction au langage Fortran
(Base)
Anne Fouilloux
Patrick Corde
[email protected]
[email protected]
26 mai 2015
Langage Fortran(Base)
26 mai 2015
1 / 266
Introduction
Historique
bibliographie
documentation
Gnralits
Bases de numration
Reprsentation des donnes
Reprsentation
Reprsentation
Reprsentation
Reprsentation
Reprsentation
des
des
des
des
des
entiers
rels
complexes
logiques
caractres
Jeu de caractres
Notion dunit de programme
lments syntaxiques
Format libre
Commentaires
3
Dclarations
Identificateurs
Diffrents types
Syntaxe
Le type CHARACTER
Instruction IMPLICIT NONE
Constantes littrales
Constantes entires
Constantes relles simple prcision
Langage Fortran(Base)
26 mai 2015
2 / 266
Initialisation
Linstruction DATA
Le symbole =
Constantes symboliques
Instruction EQUIVALENCE
4
Oprateurs et expressions
Oprateurs arithmtiques
Oprateurs relationnels
Oprateurs logiques
Oprateur de concatnation
Oprateur daffectation
Priorit des Oprateurs
Structures de contrle
Les tests
Le bloc IF
Le bloc SELECT-CASE
Les itrations
Linstruction GOTO
Les bloucles DO
6
Tableaux
Dclaration
Dfinitions (rang, profil, tendue)
Langage Fortran(Base)
26 mai 2015
3 / 266
Manipulation de tableaux
Expressions de type tableau
Sections de tableaux
7
Entres-Sorties
Introduction
Accs squentiel
Fichier binaire squentiel
Fichier texte squentiel
Accs direct
Fichier binaire accs direct
Fichier texte accs direct
Fichier temporaire
Destruction dun fichier
Fichier interne
Instructions de positionnement
Instruction INQUIRE
Formats BOZ
Units standards
Instruction FORMAT
Mots-cls END=, ERR=
8
Procdures
Arguments
Langage Fortran(Base)
26 mai 2015
4 / 266
Common
Linstruction COMMON
Common blanc
Common tiquet
Initialisation : BLOCK DATA
Instruction SAVE et COMMON
Rgles et restrictions
10
Include
La directive INCLUDE
Langage Fortran(Base)
26 mai 2015
5 / 266
Introduction
Introduction
Historique
bibliographie
documentation
Gnralits
Dclarations
Oprateurs et expressions
Structures de contrle
Tableaux
Entres-Sorties
Procdures
Common
10
Include
Langage Fortran(Base)
26 mai 2015
6 / 266
Introduction
Historique
quasi compatible :
aucune itration des boucles nulles (DO I=1,0)
Nouveauts principales :
type caractre ;
IF-THEN-ELSE ;
E/S accs direct et OPEN.
Langage Fortran(Base)
26 mai 2015
7 / 266
Introduction
Historique
Langage Fortran(Base)
26 mai 2015
8 / 266
Introduction
bibliographie
Adams, Brainerd, Hendrickson, Maine, Martin, Smith, The Fortran 2003 Handbook, Springer,
ISBN 0-262-51096-0 ;
Brainerd, Goldberg, Adams, Programmers guide to Fortran 90, 3e dit. Unicomp, 1996, (408 pages),
ISBN 0-07-000248-7 ;
Arjen Markus, Modern Fortran in Practice, Cambridge University Press, juin 2012, (272 pages),
ISBN 978-1-10760-347-9 ;
Chamberland Luc, Fortran 90 : A Reference Guide, Prentice Hall, ISBN 0-13-397332-8 ;
Delannoy Claude, Programmer en Fortran 90 Guide complet, Eyrolles, 1997, (413 pages),
ISBN 2-212-08982-1 ;
Dubesset M., Vignes J., Les spcificits du Fortran 90, ditions Technip, 1993, (400 pages),
ISBN 2-7108-0652-5 ;
Ellis, Phillips, Lahey, Fortran 90 Programming, Addisson-Wesley, 1994, (825 pages),
ISBN 0-201-54446-6 ;
Hahn B.D., Fortran 90 for the Scientist & Engineers, Edward Arnold, London, 1994, (360 pages),
ISBN 0-340-60034-9 ;
Langage Fortran(Base)
26 mai 2015
9 / 266
Introduction
bibliographie
Kerrigan James F., Migrating to Fortran 90, OReilly & Associates Inc., 1994, (389 pages),
ISBN 1-56592-049-X ;
Lignelet P., Fortran 90 : approche par la pratique, ditions Studio Image (srie informatique), 1993,
ISBN 2-909615-01-4 ;
Lignelet P., Manuel complet du langage Fortran 90 et Fortran 95, calcul intensif et gnie logiciel, Col.
Langage Fortran(Base)
26 mai 2015
10 / 266
Introduction
bibliographie
Olagnon Michel, Traitement de donnes numriques avec Fortran 90, Masson, 1996, (364 pages),
ISBN 2-225-85259-6 ;
Redwine Cooper, Upgrading to Fortran 90,
Langage Fortran(Base)
26 mai 2015
11 / 266
Introduction
documentation
Langage Fortran(Base)
26 mai 2015
12 / 266
Gnralits
Introduction
Gnralits
Bases de numration
Reprsentation des donnes
Reprsentation
Reprsentation
Reprsentation
Reprsentation
Reprsentation
des
des
des
des
des
entiers
rels
complexes
logiques
caractres
Jeu de caractres
Notion dunit de programme
lments syntaxiques
Format libre
Commentaires
3
Dclarations
Oprateurs et expressions
Structures de contrle
Tableaux
Entres-Sorties
Langage Fortran(Base)
26 mai 2015
13 / 266
Gnralits
Procdures
Common
10
Include
Langage Fortran(Base)
26 mai 2015
14 / 266
Gnralits
Bases de numration
Pp
i=0
ui b i
Les ordinateurs ne savent calculer quen base 2, de ce fait les donnes stockes dans la mmoire le sont sous la
forme dune suite de chiffres binaires 0 et 1 appels bits abrviation de binary digits. Un ensemble de 8 bits
sappelle un octet.
Lcriture des donnes en base 2 se rvle fastidieuse. Par commodit, on adopte plutt la base 8 (base octale)
ou la base 16 (hexadcimale) pour les dfinir.
Langage Fortran(Base)
26 mai 2015
15 / 266
Gnralits
Bases de numration
=
=
=
=
Langage Fortran(Base)
26 mai 2015
16 / 266
Gnralits
Dans la mmoire de lordinateur, les donnes numriques sont reprsentes laide dun motif binaire de
longueur 32, 64 voire 128 bits.
La reprsentation en machine dun nombre entier positif correspond son criture en base 2. Pour lobtenir, il
suffit de procder des divisions successives par 2.
Les nombres entiers ngatifs sont reprsents en complment vrai ou complment 2 qui consiste, partir du
motif binaire du nombre positif, inverser tous les bits puis dajouter 1.
De ce fait, sur n bits, les nombres reprsentables sont les suivants :
2n1 i 2n1 1
Exemple
+510
-510
-510
-510
=
=
=
=
000000000000000000000000000001012
111111111111111111111111111110102 + 1
111111111111111111111111111110112
FFFFFFFB16
Langage Fortran(Base)
26 mai 2015
17 / 266
Gnralits
son signe ;
sa mantisse.
Langage Fortran(Base)
26 mai 2015
18 / 266
Gnralits
Langage Fortran(Base)
26 mai 2015
19 / 266
Gnralits
Langage Fortran(Base)
26 mai 2015
20 / 266
Gnralits
Langage Fortran(Base)
26 mai 2015
20 / 266
Gnralits
104
10
Langage Fortran(Base)
26 mai 2015
20 / 266
Gnralits
104
10
52
5
Langage Fortran(Base)
26 mai 2015
20 / 266
Gnralits
104
10
52
5
1101002
1012
Langage Fortran(Base)
26 mai 2015
20 / 266
Gnralits
104
10
52
5
1101002
1012
101
Langage Fortran(Base)
26 mai 2015
20 / 266
Gnralits
104
10
52
5
1101002
1012
101
1
Langage Fortran(Base)
26 mai 2015
20 / 266
Gnralits
104
10
52
5
1101002
1012
101
1
Langage Fortran(Base)
26 mai 2015
20 / 266
Gnralits
104
10
52
5
1101002
1012
101
10
Langage Fortran(Base)
26 mai 2015
20 / 266
Gnralits
104
10
52
5
1101002
1012
101
10
Langage Fortran(Base)
26 mai 2015
20 / 266
Gnralits
104
10
52
5
1101002
1012
101
101
Langage Fortran(Base)
26 mai 2015
20 / 266
Gnralits
104
10
52
5
1101002
1012
101
101
Langage Fortran(Base)
26 mai 2015
20 / 266
Gnralits
104
10
52
5
1101002
1012
101
1010
Langage Fortran(Base)
26 mai 2015
20 / 266
Gnralits
104
10
52
5
1101002
1012
101
1010,
Langage Fortran(Base)
26 mai 2015
20 / 266
Gnralits
104
10
52
5
1101002
1012
101
1010,0
Langage Fortran(Base)
26 mai 2015
20 / 266
Gnralits
104
10
52
5
1101002
1012
101
1010,0
Langage Fortran(Base)
26 mai 2015
20 / 266
Gnralits
104
10
52
5
1101002
1012
101
1010,01
Langage Fortran(Base)
26 mai 2015
20 / 266
Gnralits
104
10
52
5
1101002
1012
101
1010,01
Langage Fortran(Base)
26 mai 2015
20 / 266
Gnralits
104
10
52
5
1101002
1012
101
1010,011
Langage Fortran(Base)
26 mai 2015
20 / 266
Gnralits
104
10
52
5
1101002
1012
101
1010,0110011
Langage Fortran(Base)
26 mai 2015
20 / 266
Gnralits
104
10
52
5
1101002
1012
101
1010,01100110011
Langage Fortran(Base)
26 mai 2015
20 / 266
Gnralits
104
10
52
5
1101002
1012
101
1010,011001100110011
Langage Fortran(Base)
26 mai 2015
20 / 266
Gnralits
104
10
52
5
1101002
1012
101
1010,0110011001100110011...
Langage Fortran(Base)
26 mai 2015
20 / 266
Gnralits
104
10
52
5
1101002
1012
101
1010,0110011001100110011...
Langage Fortran(Base)
26 mai 2015
20 / 266
Gnralits
104
10
52
5
1101002
1012
101
1010,0110011001100110011...
Langage Fortran(Base)
26 mai 2015
20 / 266
Gnralits
104
10
52
5
1101002
1012
101
1010,0110011001100110011...
Langage Fortran(Base)
26 mai 2015
20 / 266
Gnralits
104
10
52
5
1101002
1012
101
1010,0110011001100110011...
Langage Fortran(Base)
26 mai 2015
20 / 266
Gnralits
104
10
52
5
1101002
1012
101
1010,0110011001100110011...
exposant 130
Langage Fortran(Base)
26 mai 2015
20 / 266
Gnralits
104
10
52
5
1101002
1012
101
1010,0110011001100110011...
mantisse (23bits)
Langage Fortran(Base)
26 mai 2015
20 / 266
Gnralits
104
10
52
5
1101002
1012
101
1010,0110011001100110011...
mantisse (23bits)
Langage Fortran(Base)
26 mai 2015
20 / 266
Gnralits
Pour le codage de ce rel sur 64 bits il suffit de prolonger son criture binaire dautant. On obtient :
10,410 = 1010,0110011001100110011001100110011001100110011001100...
= 1,0100110011001100110011001100110011001100110011001100...23
= 1,0100110011001100110011001100110011001100110011001100...21026-1023
Langage Fortran(Base)
26 mai 2015
21 / 266
Gnralits
Pour le codage de ce rel sur 64 bits il suffit de prolonger son criture binaire dautant. On obtient :
10,410 = 1010,0110011001100110011001100110011001100110011001100...
= 1,0100110011001100110011001100110011001100110011001100...23
= 1,0100110011001100110011001100110011001100110011001100...21026-1023
Langage Fortran(Base)
26 mai 2015
21 / 266
Gnralits
Pour le codage de ce rel sur 64 bits il suffit de prolonger son criture binaire dautant. On obtient :
10,410 = 1010,0110011001100110011001100110011001100110011001100...
= 1,0100110011001100110011001100110011001100110011001100...23
= 1,0100110011001100110011001100110011001100110011001100...21026-1023
Langage Fortran(Base)
26 mai 2015
21 / 266
Gnralits
Pour le codage de ce rel sur 64 bits il suffit de prolonger son criture binaire dautant. On obtient :
10,410 = 1010,0110011001100110011001100110011001100110011001100...
= 1,0100110011001100110011001100110011001100110011001100...23
= 1,0100110011001100110011001100110011001100110011001100...21026-1023
Langage Fortran(Base)
26 mai 2015
21 / 266
Gnralits
Pour le codage de ce rel sur 64 bits il suffit de prolonger son criture binaire dautant. On obtient :
10,410 = 1010,0110011001100110011001100110011001100110011001100...
= 1,0100110011001100110011001100110011001100110011001100...23
= 1,0100110011001100110011001100110011001100110011001100...21026-1023
mantisse (52bits)
Langage Fortran(Base)
26 mai 2015
21 / 266
Gnralits
Pour le codage de ce rel sur 64 bits il suffit de prolonger son criture binaire dautant. On obtient :
10,410 = 1010,0110011001100110011001100110011001100110011001100...
= 1,0100110011001100110011001100110011001100110011001100...23
= 1,0100110011001100110011001100110011001100110011001100...21026-1023
mantisse (52bits)
4024CCCCCCCCCCCC16
Langage Fortran(Base)
26 mai 2015
21 / 266
Gnralits
Pour le codage de ce rel sur 64 bits il suffit de prolonger son criture binaire dautant. On obtient :
10,410 = 1010,0110011001100110011001100110011001100110011001100...
= 1,0100110011001100110011001100110011001100110011001100...23
= 1,0100110011001100110011001100110011001100110011001100...21026-1023
mantisse (52bits)
4024CCCCCCCCCCCC16
Remarque :
En vrit, le motif en mmoire est 4024CCCCCCCCCCCD car lors de la troncature le 1er bit perdu a pour valeur
1.
Sur 32 bits ce ntait pas le cas car le bit perdu a pour valeur 0.
Langage Fortran(Base)
26 mai 2015
21 / 266
Gnralits
Un nombre complexe est une paire de nombres rels, simple ou double prcision, correspondant aux parties relle
et imaginaire.
Soit le nombre complexe : 1.5-1.5i
Sa reprsentation en simple prcision ncessite 2 rels sur 32 bits :
Partie relle
Partie imaginaire
0 01111111 1000...0002
1 01111111 1000...0002
=
=
3FC0000016
BFC0000016
Langage Fortran(Base)
=
=
+1.510
-1.510
26 mai 2015
22 / 266
Gnralits
Il est reprsent en gnral sur 32 bits (4 octets). Il peut exister des variantes codes sur 1, 2 voire 8 octets.
Tous les bits sont positionns 0 sauf le bit le plus droite qui pour la valeur .TRUE. est positionn 1.
Langage Fortran(Base)
26 mai 2015
23 / 266
Gnralits
Un caractre est cod sur 1 octet. Sa reprsentation interne respecte un codage appel codage ASCII.
Il existe 128 caractres diffrents dont les reprsentations sont indiques dans une table dite table ASCII.
Dans cette table les caractres numriques ainsi que les caractres alphabtiques (majuscules et minuscules) sont
rangs conscutivement et en ordre croissant.
On appelle chane de caractres une suite de caractres rangs de faon conscutive en mmoire.
Langage Fortran(Base)
26 mai 2015
24 / 266
Gnralits
Table 1:
Caract.
C-@ (NUL)
C-a (SOH)
C-b (STX)
C-c (ETX)
C-d (EOT)
C-e (ENQ)
C-f (ACK)
C-g (BEL)
C-h (BS)
C-i (HT)
C-j (LF)
C-k (VT)
C-l (FF)
C-m (CR)
C-n (SO)
C-o (SI)
C-p (DLE)
C-q (DC1)
C-r (DC2)
C-s (DC3)
C-t (DC4)
C-u (NAK)
C-v (SYN)
C-w (ETB)
C-x (CAN)
C-y (EM)
C-z (SUB)
C-[ (ESC)
C-\ (FS)
C-] (GS)
C-$ (RS)
C-_ (US)
dc.
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
hex
0x00
0x01
0x02
0x03
0x04
0x05
0x06
0x07
0x08
0x09
0x0a
0x0b
0x0c
0x0d
0x0e
0x0f
0x10
0x11
0x12
0x13
0x14
0x15
0x16
0x17
0x18
0x19
0x1a
0x1b
0x1c
0x1d
0x1e
0x1f
oct.
000
001
002
003
004
005
006
007
010
011
012
013
014
015
016
017
020
021
022
023
024
025
026
027
030
031
032
033
034
035
036
037
Caract.
espace
!
"
#
$
%
&
(
)
*
+
,
.
/
0
1
2
3
4
5
6
7
8
9
:
;
<
=
>
?
Langage Fortran(Base)
dc.
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
hex
0x20
0x21
0x22
0x23
0x24
0x25
0x26
0x27
0x28
0x29
0x2a
0x2b
0x2c
0x2d
0x2e
0x2f
0x30
0x31
0x32
0x33
0x34
0x35
0x36
0x37
0x38
0x39
0x3a
0x3b
0x3c
0x3d
0x3e
0x3f
oct.
040
041
042
043
044
045
046
047
050
051
052
053
054
055
056
057
060
061
062
063
064
065
066
067
070
071
072
073
074
075
076
077
26 mai 2015
25 / 266
Gnralits
Table 2:
Caract.
@
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
Z
[
\
]
dc.
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
hex
0x40
0x41
0x42
0x43
0x44
0x45
0x46
0x47
0x48
0x49
0x4a
0x4b
0x4c
0x4d
0x4e
0x4f
0x50
0x51
0x52
0x53
0x54
0x55
0x56
0x57
0x58
0x59
0x5a
0x5b
0x5c
0x5d
0x5e
0x5f
oct.
100
101
102
103
104
105
106
107
110
111
112
113
114
115
116
117
120
121
122
123
124
125
126
127
130
131
132
133
134
135
136
137
Caract.
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
z
{
|
}
C-?
dc.
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
hex
0x60
0x61
0x62
0x63
0x64
0x65
0x66
0x67
0x68
0x69
0x6a
0x6b
0x6c
0x6d
0x6e
0x6f
0x70
0x71
0x72
0x73
0x74
0x75
0x76
0x77
0x78
0x79
0x7a
0x7b
0x7c
0x7d
0x7e
0x7f
oct.
140
141
142
143
144
145
146
147
150
151
152
153
154
155
156
157
160
161
162
163
164
165
166
167
170
171
172
173
174
175
176
177
Langage Fortran(Base)
26 mai 2015
26 / 266
Gnralits
Jeu de caractres
!
(
%
?
+
>
.
Jeu de caractres
26 lettres de lalphabet ;
chiffres 0 9 ;
caractres spciaux :
*
=
/
"
)
:
&
<
;
,
$
le caractre espace ;
le caractre _ (underscore).
Remarque :
les caractres minuscules sont convertis en majuscules par le compilateur
Langage Fortran(Base)
26 mai 2015
27 / 266
Gnralits
Un programme source Fortran est compos de parties indpendantes appeles units de programme (scoping
unit ).
Chaque partie est compile de faon indpendante. Chacune admet son propre environnement. Il sera cependant
possible que ces parties communiquent entre elles.
Les diffrentes units de programme sont :
1
2
le programme principal ;
les sous-programmes :
de type subroutine ;
de type function.
les modules ;
Chaque unit comprend une partie dclarative (dclaration des variables locales, ...) suivie dune partie
comportant des instructions excutables parmi lesquelles peut apparatre linstruction STOP qui provoque
linterruption du programme.
Langage Fortran(Base)
26 mai 2015
28 / 266
Gnralits
lments syntaxiques
lments syntaxiques
Dans le mode format libre les lignes peuvent tre de longueur quelconque concurrence de 132 caractres.
Il est galement possible de coder plusieurs instructions sur une mme ligne en les sparant avec le caractre ; .
Exemple
print * , " Entrez une valeur : " ; read * , n
Une instruction peut tre code sur plusieurs lignes : on utilisera alors le caractre & .
Exemple
print * , " Montant HT : " , montant_ht ,
"
TVA : " , tva
,
" Montant TTC : " , montant_ttc
&
&
Langage Fortran(Base)
26 mai 2015
29 / 266
Gnralits
lments syntaxiques
Lors de la coupure dune chane de caractres la suite de la chane doit obligatoirement tre prcde du
caractre & .
Exemple
print * , " Entrez un nombre entier &
& compris entre 100 & 199 "
Remarque : il existe aussi le Format fixe , considr maintenant comme obsolte dont la structure dune
ligne est :
1
Langage Fortran(Base)
26 mai 2015
30 / 266
Gnralits
lments syntaxiques
Le caractre ! rencontr sur une ligne indique que ce qui suit est un commentaire. On peut videmment crire
une ligne complte de commentaires : il suffit pour cela que le 1er caractre non blanc soit le caractre ! .
Exemple
if ( n < 100 . or . n > 199) ! Test cas d erreur
. . . .
! On lit l exposant
read * , x
! On lit la base
read * , y
if ( y <= 0) then
! Test cas d erreur
print * , " La base doit tre un nombre > 0 "
else
z = y ** x
! On calcule la puissance
end if
Remarque :
En format fixe, les lignes qui commencent par C, c, * ou ! en colonne 1 sont des commentaires.
Langage Fortran(Base)
26 mai 2015
31 / 266
Dclarations
Introduction
Gnralits
Dclarations
Identificateurs
Diffrents types
Syntaxe
Le type CHARACTER
Instruction IMPLICIT NONE
Constantes littrales
Constantes
Constantes
Constantes
Constantes
Constantes
entires
relles simple prcision
relles double prcision
complexes
chanes de caractres
Initialisation
Linstruction DATA
Le symbole =
Constantes symboliques
Instruction EQUIVALENCE
4
Oprateurs et expressions
Structures de contrle
Langage Fortran(Base)
26 mai 2015
32 / 266
Dclarations
Tableaux
Entres-Sorties
Procdures
Common
10
Include
Langage Fortran(Base)
26 mai 2015
33 / 266
Dclarations
Identificateurs
compteur
Compteur
fin_de_fichier
montant_annee_1993
Langage Fortran(Base)
26 mai 2015
34 / 266
Dclarations
Diffrents types
Types prdfinis
Mot-cl
INTEGER
CHARACTER
LOGICAL
REAL
DOUBLE PRECISION
COMPLEX
:
:
:
:
:
:
Type
entier
caractre
deux valeurs .TRUE., .FALSE.
rel simple prcision
rel double prcision
complexe simple prcision
Remarque :
la prcision dun rel simple est de 7 chiffres dcimaux significatifs alors que celle dun
double est de 15.
Langage Fortran(Base)
26 mai 2015
35 / 266
Dclarations
Diffrents types
Attributs
:
:
:
:
:
Signification
constante symbolique
taille dun tableau
objet statique
procdure externe
procdure intrinsque
Langage Fortran(Base)
26 mai 2015
36 / 266
Dclarations
Syntaxe
Langage Fortran(Base)
26 mai 2015
37 / 266
Dclarations
Le type CHARACTER
Le type CHARACTER
Pour dclarer une chane de caractres on prcise de plus sa longueur. Si elle nest pas indique elle est gale 1 :
CHARACTER(len=n) ch_car
CHARACTER c
Lancienne syntaxe suivante est toujours disponible mais dclare obsolte :
CHARACTER*n ch_car
Exemple
PROGRAM declaration
CHARACTER ( LEN =11) chaine1
CHARACTER *11
chaine2
...
END PROGRAM declaration
Langage Fortran(Base)
26 mai 2015
38 / 266
Dclarations
Par dfaut, les variables dont lidentificateur commence par les caractres I N sont de type INTEGER.
Toutes les autres sont de type REAL.
Linstruction IMPLICIT NONE change cette rgle car elle impose lutilisateur la dclaration de chaque
variable.
Cette instruction est vivement recommande car elle permet la dtection dun certain nombre derreurs la
compilation.
IMPLICIT NONE se place avant les dclarations des variables,
Linstruction ne sapplique qu lunit de programme qui la contient.
Langage Fortran(Base)
26 mai 2015
39 / 266
Dclarations
Constantes littrales
Remarque :
Les constantes crites en base 2, 8 ou 16 sappellent des constantes BOZ. Elles ne peuvent
figurer que dans les instructions dinitialisation de type DATA.
Langage Fortran(Base)
26 mai 2015
40 / 266
Dclarations
Constantes littrales
Pour les nombres crits 0.xxxxx, on peut omettre le 0 avant le point dcimal.
Exemple
0.
1.0
1.
3.1415
31415E -4
1.6E -19
1E12
.001
-36.
Langage Fortran(Base)
26 mai 2015
41 / 266
Dclarations
Constantes littrales
Une constante double precision doit obligatoirement tre crite en virgule flottante, le E tant remplac par un D.
Exemple
0D0
0.D0
1.D0
1d0
3.1415d0
31415d -4
1.6D -19
1d12
-36.d0
Langage Fortran(Base)
26 mai 2015
42 / 266
Dclarations
Constantes littrales
Une constante de type COMPLEX est obtenue en combinant deux constantes relles entre parenthses spares par
une virgule : 2.5+i scrira (2.5,1.)
Exemple
(0. ,0.)
(1. , -1.)
(1.34 e -7 , 4.89 e -8)
Langage Fortran(Base)
26 mai 2015
43 / 266
Dclarations
Constantes littrales
Une constante chanes de caractres est une suite de caractres encadre par le dlimiteur ou bien " .
Si parmi la suite des caractres figure le caractre dlimiteur, il devra tre doubl.
Exemple
La somme des n premiers entiers est :
l tendue dsire est :
"l tendue dsire est : "
partir dune variable chane de caractres on peut extraire une suite de caractres contigus. Pour cela on
spcifie le nom de la variable suivi entre parenthses dun couple dentiers n:m indiquant les rangs de dbut et
de fin dextraction.
Exemple
CHARACTER ( LEN =10) :: ch
ch = " Bonjour " ; ch (4:7) = " soir "
Langage Fortran(Base)
26 mai 2015
44 / 266
Dclarations
Initialisation
Linstruction DATA
Langage Fortran(Base)
26 mai 2015
45 / 266
Dclarations
Initialisation
Exemple
REAL
INTEGER
LOGICAL
DATA
DATA
DATA
a, b, c
n, m
arret
a , b , n /1.0 , 2.0 , 17/
c /2.6/ , m /3/
arret /. FALSE ./
Remarques :
cette instruction peut apparatre aprs des instructions excutables, mais la norme F95 a dclar cette
REAL
INTEGER
LOGICAL
a /3.14/ , b /2.718/
n /1/ , m /4/
arret /. false ./
Langage Fortran(Base)
26 mai 2015
46 / 266
Dclarations
Initialisation
Fortran permet dinitialiser une variable lors de sa dclaration laide du symbole = . Dans ce contexte, les
caractres :: sont obligatoires :
TYPE[, attributs] :: v1 =c1 [, ..., vi =ci , ...]
o vi est le nom de la variable initialiser et ci sa valeur.
Exemple
PROGRAM ini tialisat ion
INTEGER :: debut
= 100
REAL
:: valeur = 76.3
LOGICAL :: drapeau = . TRUE .
...
END PROGRAM initiali sation
Note : ces variables hritent alors de lattribut SAVE, ce qui implique que leur emplacement mmoire est
permanent. Pour plus de dtails, se reporter page 238 du support.
Langage Fortran(Base)
26 mai 2015
47 / 266
Dclarations
Constantes symboliques
Constantes symboliques
Langage Fortran(Base)
26 mai 2015
48 / 266
Dclarations
Instruction EQUIVALENCE
Instruction EQUIVALENCE
Linstruction EQUIVALENCE permet des variables de partager la mme zone mmoire au sein dune unit de
programme ;
il ny a pas de conversion de type ;
chaque variable garde les proprits de son type ;
le type CHARACTER ne peut pas tre associ dautres types.
Syntaxe gnrale :
EQUIVALENCE(v1 , v2 )[,..., (vi1 , vi ),...]
o les vi sont des scalaires (variables simples ou lments de tableaux).
Langage Fortran(Base)
26 mai 2015
49 / 266
Dclarations
Instruction EQUIVALENCE
Exemple
PROGRAM cor responda nce
COMPLEX
cmplx (2)
REAL
temp (4)
EQUIVALENCE ( temp (1) , cmplx (1))
...
END PROGRAM correspo ndance
Agencement en mmoire :
|--------cmplx(1)-------|--------cmplx(2)-------|
|-----------|-----------|-----------|-----------|
|--temp(1)--|--temp(2)--|--temp(3)--|--temp(4)--|
Langage Fortran(Base)
26 mai 2015
50 / 266
Dclarations
Instruction EQUIVALENCE
Exemple
PROGRAM cor responda nce
CHARACTER ( LEN =4)
:: A , B
CHARACTER ( LEN =3)
:: C (2)
CHARACTER ( LEN =10)
:: chaine
CHARACTER ( LEN =1) , DIMENSION (10) :: tab_car
EQUIVALENCE
(A , C (1)) ,( B , C (2))
EQUIVALENCE
( chaine , tab_car (1))
...
END PROGRAM correspo ndance
Agencement en mmoire :
| 01 | 02 | 03 | 04 | 05 | 06 | 07 |
|---------A---------|
|-----C(1)-----|-----C(2)-----|
|---------B---------|
| 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 |
|-------------------- chaine ---------------------|
|
|
|--> tab_car(1)
|--> tab_car(7)
Langage Fortran(Base)
26 mai 2015
51 / 266
Oprateurs et expressions
Introduction
Gnralits
Dclarations
Oprateurs et expressions
Oprateurs arithmtiques
Oprateurs relationnels
Oprateurs logiques
Oprateur de concatnation
Oprateur daffectation
Priorit des Oprateurs
Structures de contrle
Tableaux
Entres-Sorties
Procdures
Common
Langage Fortran(Base)
26 mai 2015
52 / 266
Oprateurs et expressions
10
Include
Langage Fortran(Base)
26 mai 2015
53 / 266
Oprateurs et expressions
Oprateurs arithmtiques
Table 3:
Symbole
+
+
*
/
**
Oprateurs arithmtiques
Expression
o1 + o2
+ o1
o1 - o2
- o1
o1 * o2
o1 / o2
o1 **o2
Interprtation
ajoute o2 o1
gal o1
soustrait o2 o1
inverse le signe de o1
multiplie o1 par o2
o1 divis par o2
lve o1 la puissance o2
Langage Fortran(Base)
26 mai 2015
54 / 266
Oprateurs et expressions
Oprateurs arithmtiques
Exemple
3.14159
K
(A + B) * (C + D)
-1.0 / X + Y / Z ** 2
-2.0 * 3.14159 * RADIUS
Langage Fortran(Base)
26 mai 2015
55 / 266
Oprateurs et expressions
Oprateurs arithmtiques
si les 2 oprandes sont du mme type alors lexpression arithmtique rsultante sera de ce type.
si les deux oprandes ne sont pas du mme type alors lexpression arithmtique sera value dans le type le
plus fort relativement la hirarchie suivante :
INTEGER < REAL < DOUBLE PRECISION < COMPLEX
Langage Fortran(Base)
26 mai 2015
56 / 266
Oprateurs et expressions
Oprateurs arithmtiques
si les 2 oprandes sont du mme type alors lexpression arithmtique rsultante sera de ce type.
si les deux oprandes ne sont pas du mme type alors lexpression arithmtique sera value dans le type le
plus fort relativement la hirarchie suivante :
INTEGER < REAL < DOUBLE PRECISION < COMPLEX
Expression
Valeur
Type du rsultat
99/100
INTEGER
7/3
(100*9)/5
(9/5)*100
99./100
99./100d0
(1.,2.)+1
Langage Fortran(Base)
26 mai 2015
56 / 266
Oprateurs et expressions
Oprateurs arithmtiques
si les 2 oprandes sont du mme type alors lexpression arithmtique rsultante sera de ce type.
si les deux oprandes ne sont pas du mme type alors lexpression arithmtique sera value dans le type le
plus fort relativement la hirarchie suivante :
INTEGER < REAL < DOUBLE PRECISION < COMPLEX
Expression
Valeur
Type du rsultat
99/100
INTEGER
7/3
(100*9)/5
(9/5)*100
99./100
99./100d0
(1.,2.)+1
Langage Fortran(Base)
26 mai 2015
56 / 266
Oprateurs et expressions
Oprateurs arithmtiques
si les 2 oprandes sont du mme type alors lexpression arithmtique rsultante sera de ce type.
si les deux oprandes ne sont pas du mme type alors lexpression arithmtique sera value dans le type le
plus fort relativement la hirarchie suivante :
INTEGER < REAL < DOUBLE PRECISION < COMPLEX
Expression
Valeur
Type du rsultat
99/100
INTEGER
7/3
INTEGER
(100*9)/5
(9/5)*100
99./100
99./100d0
(1.,2.)+1
Langage Fortran(Base)
26 mai 2015
56 / 266
Oprateurs et expressions
Oprateurs arithmtiques
si les 2 oprandes sont du mme type alors lexpression arithmtique rsultante sera de ce type.
si les deux oprandes ne sont pas du mme type alors lexpression arithmtique sera value dans le type le
plus fort relativement la hirarchie suivante :
INTEGER < REAL < DOUBLE PRECISION < COMPLEX
Expression
Valeur
Type du rsultat
99/100
INTEGER
7/3
INTEGER
(100*9)/5
180
(9/5)*100
99./100
99./100d0
(1.,2.)+1
Langage Fortran(Base)
26 mai 2015
56 / 266
Oprateurs et expressions
Oprateurs arithmtiques
si les 2 oprandes sont du mme type alors lexpression arithmtique rsultante sera de ce type.
si les deux oprandes ne sont pas du mme type alors lexpression arithmtique sera value dans le type le
plus fort relativement la hirarchie suivante :
INTEGER < REAL < DOUBLE PRECISION < COMPLEX
Expression
Valeur
Type du rsultat
99/100
INTEGER
7/3
INTEGER
(100*9)/5
180
INTEGER
(9/5)*100
99./100
99./100d0
(1.,2.)+1
Langage Fortran(Base)
26 mai 2015
56 / 266
Oprateurs et expressions
Oprateurs arithmtiques
si les 2 oprandes sont du mme type alors lexpression arithmtique rsultante sera de ce type.
si les deux oprandes ne sont pas du mme type alors lexpression arithmtique sera value dans le type le
plus fort relativement la hirarchie suivante :
INTEGER < REAL < DOUBLE PRECISION < COMPLEX
Expression
Valeur
Type du rsultat
99/100
INTEGER
7/3
INTEGER
(100*9)/5
180
INTEGER
(9/5)*100
100
99./100
99./100d0
(1.,2.)+1
Langage Fortran(Base)
26 mai 2015
56 / 266
Oprateurs et expressions
Oprateurs arithmtiques
si les 2 oprandes sont du mme type alors lexpression arithmtique rsultante sera de ce type.
si les deux oprandes ne sont pas du mme type alors lexpression arithmtique sera value dans le type le
plus fort relativement la hirarchie suivante :
INTEGER < REAL < DOUBLE PRECISION < COMPLEX
Expression
Valeur
Type du rsultat
99/100
INTEGER
7/3
INTEGER
(100*9)/5
180
INTEGER
(9/5)*100
100
INTEGER
99./100
99./100d0
(1.,2.)+1
Langage Fortran(Base)
26 mai 2015
56 / 266
Oprateurs et expressions
Oprateurs arithmtiques
si les 2 oprandes sont du mme type alors lexpression arithmtique rsultante sera de ce type.
si les deux oprandes ne sont pas du mme type alors lexpression arithmtique sera value dans le type le
plus fort relativement la hirarchie suivante :
INTEGER < REAL < DOUBLE PRECISION < COMPLEX
Expression
Valeur
Type du rsultat
99/100
INTEGER
7/3
INTEGER
(100*9)/5
180
INTEGER
(9/5)*100
100
INTEGER
99./100
0.99
99./100d0
(1.,2.)+1
Langage Fortran(Base)
26 mai 2015
56 / 266
Oprateurs et expressions
Oprateurs arithmtiques
si les 2 oprandes sont du mme type alors lexpression arithmtique rsultante sera de ce type.
si les deux oprandes ne sont pas du mme type alors lexpression arithmtique sera value dans le type le
plus fort relativement la hirarchie suivante :
INTEGER < REAL < DOUBLE PRECISION < COMPLEX
Expression
Valeur
Type du rsultat
99/100
INTEGER
7/3
INTEGER
(100*9)/5
180
INTEGER
(9/5)*100
100
INTEGER
99./100
0.99
REAL
99./100d0
(1.,2.)+1
Langage Fortran(Base)
26 mai 2015
56 / 266
Oprateurs et expressions
Oprateurs arithmtiques
si les 2 oprandes sont du mme type alors lexpression arithmtique rsultante sera de ce type.
si les deux oprandes ne sont pas du mme type alors lexpression arithmtique sera value dans le type le
plus fort relativement la hirarchie suivante :
INTEGER < REAL < DOUBLE PRECISION < COMPLEX
Expression
Valeur
Type du rsultat
99/100
INTEGER
7/3
INTEGER
(100*9)/5
180
INTEGER
(9/5)*100
100
INTEGER
99./100
0.99
REAL
99./100d0
0.99d0
(1.,2.)+1
Langage Fortran(Base)
26 mai 2015
56 / 266
Oprateurs et expressions
Oprateurs arithmtiques
si les 2 oprandes sont du mme type alors lexpression arithmtique rsultante sera de ce type.
si les deux oprandes ne sont pas du mme type alors lexpression arithmtique sera value dans le type le
plus fort relativement la hirarchie suivante :
INTEGER < REAL < DOUBLE PRECISION < COMPLEX
Expression
Valeur
Type du rsultat
99/100
INTEGER
7/3
INTEGER
(100*9)/5
180
INTEGER
(9/5)*100
100
INTEGER
99./100
0.99
REAL
99./100d0
0.99d0
DOUBLE PRECISION
(1.,2.)+1
Langage Fortran(Base)
26 mai 2015
56 / 266
Oprateurs et expressions
Oprateurs arithmtiques
si les 2 oprandes sont du mme type alors lexpression arithmtique rsultante sera de ce type.
si les deux oprandes ne sont pas du mme type alors lexpression arithmtique sera value dans le type le
plus fort relativement la hirarchie suivante :
INTEGER < REAL < DOUBLE PRECISION < COMPLEX
Expression
Valeur
Type du rsultat
99/100
INTEGER
7/3
INTEGER
(100*9)/5
180
INTEGER
(9/5)*100
100
INTEGER
99./100
0.99
REAL
99./100d0
0.99d0
DOUBLE PRECISION
(1.,2.)+1
(2.,2.)
Langage Fortran(Base)
26 mai 2015
56 / 266
Oprateurs et expressions
Oprateurs arithmtiques
si les 2 oprandes sont du mme type alors lexpression arithmtique rsultante sera de ce type.
si les deux oprandes ne sont pas du mme type alors lexpression arithmtique sera value dans le type le
plus fort relativement la hirarchie suivante :
INTEGER < REAL < DOUBLE PRECISION < COMPLEX
Expression
Valeur
Type du rsultat
99/100
INTEGER
7/3
INTEGER
(100*9)/5
180
INTEGER
(9/5)*100
100
INTEGER
99./100
0.99
REAL
99./100d0
0.99d0
DOUBLE PRECISION
(1.,2.)+1
(2.,2.)
COMPLEX
Langage Fortran(Base)
26 mai 2015
56 / 266
Oprateurs et expressions
Oprateurs arithmtiques
Attention
Soit lexpression d = 1.d0+5.**0.5 avec la variable d dclare en DOUBLE PRECISION. La sous-expression
5.**0.5 est value dans le type REAL car les oprandes de loprateur ** le sont. Le reste de lvaluation
seffectuera ensuite dans le type DOUBLE PRECISION, le rsultat tant finalement stock dans la variable d.
Mais cette variable d bien que du type DOUBLE PRECISION hrite dun calcul qui a commenc dans le type REAL,
do une perte de prcision.
Cela peut induire par la suite des comportements inattendus lors de lvaluation dexpressions dans lesquelles
figurent cette variable (problme de convergence dans des processus itratifs comme dans lexercice 3).
En conclusion, lors de lcriture dexpressions avec prsence de constantes relles que lon dsire valuer en
DOUBLE PRECISION, il est impratif dcrire ces constantes dans ce type. Ce qui donne pour lexpression
prcdente :
d = 1.d0+5.d0**0.5d0
Langage Fortran(Base)
26 mai 2015
57 / 266
Oprateurs et expressions
Oprateurs relationnels
Table 4:
Oprateur
.LT. ou <
.LE. ou <=
.EQ. ou ==
.NE. ou /=
.GT. ou >
.GE. ou >=
Oprateurs relationnels
Opration
strictement plus petit
infrieur ou gal
gal
non gal
strictement plus grand
suprieur ou gal
Ces oprateurs admettent des oprandes de type INTEGER, REAL ou CHARACTER. Seuls les oprateurs ==, /=
peuvent sappliquer des expressions de type COMPLEX.
Exemple
N .GE. 0
X .LT. Y
Z /= 3.7
( B**2 - 4* A * C ) .GT. 0.
Langage Fortran(Base)
26 mai 2015
58 / 266
Oprateurs et expressions
Oprateurs logiques
Les oprandes des oprateurs logiques doivent tre des expressions de type LOGICAL.
Table 5:
Oprateur
.NOT.
.AND.
.OR.
.EQV.
.NEQV.
Oprateurs logiques
Opration
ngation logique
conjonction logique
disjonction inclusive
quivalence logique
non-quivalence logique
Table 6:
Oprateur de ngation
l
.true.
.false.
Table 7:
l1
.true.
.true.
.false.
.false.
l2
.true.
.false.
.true.
.false.
l1 .AND.l2
.true.
.false.
.false.
.false.
.NOT.l
.false.
.true.
Autres oprateurs
l1 .OR.l2
.true.
.true.
.true.
.false.
Langage Fortran(Base)
l1 .EQV.l2
.true.
.false.
.false.
.true.
l1 .NEQV.l2
.false.
.true.
.true.
.false.
26 mai 2015
59 / 266
Oprateurs et expressions
Oprateur de concatnation
Oprateur de concatnation
Interprtation
concatne c1 avec c2
Exemple
CHARACTER ( LEN =10) :: ch
ch
ch
ch
ch
=
=
=
=
Remarques :
1
lorsque la chane rceptrice est plus grande que celle affecte, elle est complte laide du caractre espace ;
reportez-vous la page 284 pour plus dinformations concernant la procdure TRIM utilise dans lexemple
ci-dessus.
Langage Fortran(Base)
26 mai 2015
60 / 266
Oprateurs et expressions
Oprateur daffectation
Oprateur daffectation
variable = expression
o expression est une expression arithmtique, logique ou relationnelle.
une valeur de type CHARACTER ne peut pas tre affecte une variable numrique ou vice-versa,
une valeur de type INTEGER peut tre affecte une variable de type REAL,
une valeur de type REAL peut galement tre affecte une variable de type INTEGER. Mais dans ce cas, la
Langage Fortran(Base)
26 mai 2015
61 / 266
Oprateurs et expressions
Oprateur daffectation
Oprateur daffectation
variable = expression
o expression est une expression arithmtique, logique ou relationnelle.
une valeur de type CHARACTER ne peut pas tre affecte une variable numrique ou vice-versa,
une valeur de type INTEGER peut tre affecte une variable de type REAL,
une valeur de type REAL peut galement tre affecte une variable de type INTEGER. Mais dans ce cas, la
Interprtation
x = 5
n = 0.9999
m = -1.9999
Langage Fortran(Base)
26 mai 2015
61 / 266
Oprateurs et expressions
Oprateur daffectation
Oprateur daffectation
variable = expression
o expression est une expression arithmtique, logique ou relationnelle.
une valeur de type CHARACTER ne peut pas tre affecte une variable numrique ou vice-versa,
une valeur de type INTEGER peut tre affecte une variable de type REAL,
une valeur de type REAL peut galement tre affecte une variable de type INTEGER. Mais dans ce cas, la
Interprtation
x = 5
x = 5.0
n = 0.9999
m = -1.9999
Langage Fortran(Base)
26 mai 2015
61 / 266
Oprateurs et expressions
Oprateur daffectation
Oprateur daffectation
variable = expression
o expression est une expression arithmtique, logique ou relationnelle.
une valeur de type CHARACTER ne peut pas tre affecte une variable numrique ou vice-versa,
une valeur de type INTEGER peut tre affecte une variable de type REAL,
une valeur de type REAL peut galement tre affecte une variable de type INTEGER. Mais dans ce cas, la
Interprtation
x = 5
x = 5.0
n = 0.9999
n = 0
m = -1.9999
Langage Fortran(Base)
26 mai 2015
61 / 266
Oprateurs et expressions
Oprateur daffectation
Oprateur daffectation
variable = expression
o expression est une expression arithmtique, logique ou relationnelle.
une valeur de type CHARACTER ne peut pas tre affecte une variable numrique ou vice-versa,
une valeur de type INTEGER peut tre affecte une variable de type REAL,
une valeur de type REAL peut galement tre affecte une variable de type INTEGER. Mais dans ce cas, la
Interprtation
x = 5
x = 5.0
n = 0.9999
n = 0
m = -1.9999
m = -1
Langage Fortran(Base)
26 mai 2015
61 / 266
Oprateurs et expressions
Table 8:
Oprateur
**
* et /
+ et - (unaire)
+ et - (binaire)
//
<, <=, ==
/=, >, >=
.NOT.
.AND.
.OR.
.EQV. et .NEQV.
Associativit
DG
GD
///////
GD
GD
GD
///////
GD
GD
GD
Langage Fortran(Base)
26 mai 2015
62 / 266
Oprateurs et expressions
Table 8:
Oprateur
**
* et /
+ et - (unaire)
+ et - (binaire)
//
<, <=, ==
/=, >, >=
.NOT.
.AND.
.OR.
.EQV. et .NEQV.
Associativit
DG
GD
///////
GD
GD
GD
///////
GD
GD
GD
Interprtation
2**3**2
5.+4.*9.**2
e.OR.f.AND.g
a**b+c.GT.d.AND.e
Langage Fortran(Base)
26 mai 2015
62 / 266
Oprateurs et expressions
Table 8:
Oprateur
**
* et /
+ et - (unaire)
+ et - (binaire)
//
<, <=, ==
/=, >, >=
.NOT.
.AND.
.OR.
.EQV. et .NEQV.
Associativit
DG
GD
///////
GD
GD
GD
///////
GD
GD
GD
Interprtation
2**3**2
2**(3**2) = 512
5.+4.*9.**2
e.OR.f.AND.g
a**b+c.GT.d.AND.e
Langage Fortran(Base)
26 mai 2015
62 / 266
Oprateurs et expressions
Table 8:
Oprateur
**
* et /
+ et - (unaire)
+ et - (binaire)
//
<, <=, ==
/=, >, >=
.NOT.
.AND.
.OR.
.EQV. et .NEQV.
Associativit
DG
GD
///////
GD
GD
GD
///////
GD
GD
GD
Interprtation
2**3**2
2**(3**2) = 512
5.+4.*9.**2
5.+(4.*(9.**2)) = 329.
e.OR.f.AND.g
a**b+c.GT.d.AND.e
Langage Fortran(Base)
26 mai 2015
62 / 266
Oprateurs et expressions
Table 8:
Oprateur
**
* et /
+ et - (unaire)
+ et - (binaire)
//
<, <=, ==
/=, >, >=
.NOT.
.AND.
.OR.
.EQV. et .NEQV.
Associativit
DG
GD
///////
GD
GD
GD
///////
GD
GD
GD
Interprtation
2**3**2
2**(3**2) = 512
5.+4.*9.**2
5.+(4.*(9.**2)) = 329.
e.OR.f.AND.g
e.OR.(f.AND.g)
a**b+c.GT.d.AND.e
Langage Fortran(Base)
26 mai 2015
62 / 266
Oprateurs et expressions
Table 8:
Oprateur
**
* et /
+ et - (unaire)
+ et - (binaire)
//
<, <=, ==
/=, >, >=
.NOT.
.AND.
.OR.
.EQV. et .NEQV.
Associativit
DG
GD
///////
GD
GD
GD
///////
GD
GD
GD
Interprtation
2**3**2
2**(3**2) = 512
5.+4.*9.**2
5.+(4.*(9.**2)) = 329.
e.OR.f.AND.g
e.OR.(f.AND.g)
a**b+c.GT.d.AND.e
(((a**b)+c).GT.d).AND.e
Langage Fortran(Base)
26 mai 2015
62 / 266
Structures de contrle
Introduction
Gnralits
Dclarations
Oprateurs et expressions
Structures de contrle
Les tests
Le bloc IF
Le bloc SELECT-CASE
Les itrations
Linstruction GOTO
Les bloucles DO
6
Tableaux
Entres-Sorties
Procdures
Common
Langage Fortran(Base)
26 mai 2015
63 / 266
Structures de contrle
10
Include
Langage Fortran(Base)
26 mai 2015
64 / 266
Structures de contrle
Les tests
Le bloc IF
nom_bloc une tiquette facultative : si elle est prsente elle doit figurer au niveau de linstruction END
En labsence de clause ELSE lorsque bloc1 est rduit une seule instruction, la structure IF se simplifie en :
IF (exp) instruction
Langage Fortran(Base)
26 mai 2015
65 / 266
Structures de contrle
Les tests
Exemple
PROGRAM structure_if
REAL A ,B , SUM
...
IF ( A . LT . B ) THEN
SUM = SUM + A
IF ( SUM > 0.) PRINT * , SUM
END IF
...
END PROGRAM structure_if
Exemple
PROGRAM structure_if
REAL A , HRS
...
IF ( HRS . LE .40.0) THEN
A = HRS *150.0
ELSE IF ( HRS . LE .50.) THEN
A = ( HRS - 4 0 . 0 ) * 1 5 0 . 0 * 1. 5
ELSE
A = ( HRS - 5 0 . 0 ) * 1 5 0 . 0 * 2. 0
END IF
END PROGRAM structure_if
Langage Fortran(Base)
26 mai 2015
66 / 266
Structures de contrle
Les tests
Linstruction SELECT CASE permet des branchements multiples qui dpendent de la valeur dune expression
scalaire de type entier, logique ou chane de caractres.
Langage Fortran(Base)
26 mai 2015
67 / 266
Structures de contrle
Les tests
Exemple
PROGRAM str ucture_c ase
integer :: mois , nb_jours
logical :: annee_bissext
...
SELECT CASE ( mois )
CASE (4 , 6 , 9 , 11)
nb_jours = 30
CASE (1 , 3 , 5 , 7:8 , 10 , 12)
nb_jours = 31
CASE (2)
! ---------------------------------fevrier : select case ( annee_bissext )
case (. true .)
nb_jours = 29
case (. false .)
nb_jours = 28
end select fevrier
! ---------------------------------CASE DEFAULT
print * , " Numro de mois invalide "
END SELECT
END PROGRAM structur e_case
Langage Fortran(Base)
26 mai 2015
68 / 266
Structures de contrle
Les itrations
Cet exemple peut tre remplac par une boucle itrative de type DO WHILE.
Langage Fortran(Base)
26 mai 2015
69 / 266
Structures de contrle
Les itrations
Langage Fortran(Base)
26 mai 2015
70 / 266
Structures de contrle
Les itrations
Langage Fortran(Base)
26 mai 2015
71 / 266
Structures de contrle
Les itrations
pour pouvoir sortir de la boucle, il faut que expression puisse prendre la valeur .FALSE. dans le bloc.
Langage Fortran(Base)
26 mai 2015
72 / 266
Structures de contrle
Sommation de la srie
courante :
P
n1
Les itrations
1/n2 jusqu ce que le terme gnral soit infrieur fois la somme partielle
Exemple
PROGRAM it er at i on _w hi l e
INTEGER
DOUBLE PRECISION
DOUBLE PRECISION , PARAMETER
LOGICAL
::
::
::
::
n
terme , somme
epsilon = 1. d -3
fini
! Initial isation
n =0
somme =0. d0
fini =. FALSE .
DO WHILE (. not . fini )
n = n +1
terme = 1 d0 / n **2
somme = somme + terme
fini =( terme . LT . epsilon * somme )
END DO
print * , " Nombre d itrations : " , n
print * , " Somme = " , somme
END PROGRAM i te ra ti o n_ wh il e
Langage Fortran(Base)
26 mai 2015
73 / 266
Structures de contrle
Les itrations
3re forme : DO
Ce sont des boucles DO sans contrle de boucle. Pour en sortir, on utilise une instruction conditionnelle avec
une instruction EXIT.
Le corps de boucle bloc se prsente comme suit :
bloc1
IF ( expression ) EXIT
bloc2
avec :
expression une expression de type LOGICAL ;
bloci des squences de code Fortran.
Notons que la condition IF peut tre remplace par une instruction de type SELECT CASE.
Langage Fortran(Base)
26 mai 2015
74 / 266
Structures de contrle
Les itrations
Exemple
PROGRAM ite ration_e xit
REAL
:: valeur
REAL
:: x , xlast
REAL , PARAMETER :: tolerance = 1.0 e -6
valeur = 50.
x = 1.0
DO
xlast = x
x = 0.5 * ( xlast + valeur / xlast )
IF ( ABS (x - xlast )/ x < tolerance ) EXIT
END DO
END PROGRAM iteratio n_exit
Langage Fortran(Base)
26 mai 2015
75 / 266
Structures de contrle
Les itrations
Instruction CYCLE
Le corps dune boucle peut contenir une instruction CYCLE laquelle permet dabandonner le traitement de
litration courante et de passer la suivante. Celle-ci sera excute, dune manire gnrale, suite une
condition, comme par exemple :
IF (expression) CYCLE
Remarque : linstruction IF peut bien videmment, comme prcdemment, tre remplace par une instruction
de type SELECT CASE.
Exemple
PROGRAM it er at i on _c yc l e
INTEGER :: annee
DO
READ (* ,*) annee
IF ( annee . LE . 0) EXIT
! On limine les annes bissextiles .
IF ( (( annee /4*4
. EQ . annee ) . AND . &
( annee /100*100 . NE . annee )) . OR . &
( annee /400*400 . EQ . annee ) ) CYCLE
PRINT * , " Traitement des annes non - bissextiles "
...
END DO
END PROGRAM i te ra ti o n_ cy cl e
Langage Fortran(Base)
26 mai 2015
76 / 266
Tableaux
Introduction
Gnralits
Dclarations
Oprateurs et expressions
Structures de contrle
Tableaux
Dclaration
Dfinitions (rang, profil, tendue)
Initialisation
Le symbole "="
Le constructeur de vecteurs
Linstruction DATA
Manipulation de tableaux
Expressions de type tableau
Sections de tableaux
7
Entres-Sorties
Procdures
Langage Fortran(Base)
26 mai 2015
77 / 266
Tableaux
Common
10
Include
Langage Fortran(Base)
26 mai 2015
78 / 266
Tableaux
Dclaration
deux expressions entires de la forme expr1 :expr2 avec expr1 <= expr2 .
liste_tab est une liste de tableaux.
Remarques :
1
si la dclaration est faite au sein du programme principal ces expressions doivent tre construites laide de
constantes entires (littrales ou symboliques) ;
si celle-ci est effectue lintrieur dune procdure celles-ci peuvent tre variables.
Langage Fortran(Base)
26 mai 2015
79 / 266
Tableaux
Dclaration
Exemple
INTEGER , PARAMETER
:: lda = 6
REAL , DIMENSION (0: lda -1)
:: Y
REAL , DIMENSION (1+ lda * lda ,10) :: Z
REAL , DIMENSION (100)
:: R
REAL , DIMENSION (1:5 ,1:5 , 1:5) :: S
REAL , DIMENSION ( -10: -1)
:: X
Remarque : les dimensions dun tableau peuvent aussi tre spcifies sans lattribut DIMENSION :
Exemple
REAL :: T (10 ,10) , U (4 ,2) , G ( -1:10 ,4:9 ,1:3)
Langage Fortran(Base)
26 mai 2015
80 / 266
Tableaux
dimension correspondante.
La taille (size) dun tableau est le produit des lments du vecteur correspondant son profil.
Deux tableaux sont dits conformants sils ont le mme profil.
Langage Fortran(Base)
26 mai 2015
81 / 266
Tableaux
Exemple
REAL , DIMENSION (15)
:: X
REAL , DIMENSION (1:5 ,1:3) :: Y
REAL , DIMENSION ( -1:3 ,0:2) :: Z
Langage Fortran(Base)
26 mai 2015
82 / 266
Tableaux
En mmoire la notion de tableau nexiste pas : les lments sont rangs les uns la suite des autres.
Pour accder ces lments, dans lordre mmoire, Fortran fait dabord varier le premier indice, puis le second et
ainsi de suite.
Par exemple, les lments dun tableau deux dimensions sont ordonns comme suit :
REAL, DIMENSION(5,3) :: C C(1,1),C(2,1),...,C(5,1),C(1,2),C(2,2),...,C(5,3)
C(1,1)
C(1,3)
C(5,1)
C(5,3)
Langage Fortran(Base)
26 mai 2015
83 / 266
Tableaux
Initialisation
Langage Fortran(Base)
26 mai 2015
84 / 266
Tableaux
Initialisation
Un constructeur de vecteur est un vecteur de scalaires dont les valeurs sont encadres par les caractres
(/ et /) (ou bien [ et ] depuis la norme Fortran 2008) :
1
Langage Fortran(Base)
26 mai 2015
85 / 266
Tableaux
Initialisation
Exemple
IMPLICIT NONE
REAL , DIMENSION (4)
:: heights =
(/ 5.10 , 5.6 , 4.0 , 3.6 /)
&
Langage Fortran(Base)
&
26 mai 2015
86 / 266
Tableaux
Initialisation
Linstruction DATA
Comme pour les variables simples, on peut utiliser linstruction DATA pour initialiser les tableaux lors de leur
dclaration. Elle permet dinitialiser tout ou partie de tableaux laide dune liste de constantes encadre par le
caractre / (la notation n*valeur peut tre employe pour rpter une mme valeur).
Les lments initialiser peuvent tre spcifis au moyen dune boucle DO implicite : (tab(i), i =
m1 ,m2 [,m3 ]).
Exemple
IMPLICIT NONE
INTEGER
:: i , j
REAL ,
DIMENSION (20)
INTEGER , DIMENSION (10)
REAL ,
DIMENSION (2 ,3)
:: A , B
:: ints
:: MAT
DATA
DATA
DATA
DATA
Langage Fortran(Base)
26 mai 2015
87 / 266
Tableaux
Manipulation de tableaux
Les tableaux peuvent tre utiliss en tant quoprandes dans une expression :
les oprateurs intrinsques sont applicables des tableaux conformants,
les fonctions lmentaires sappliquent lensemble du tableau.
Dans ces cas, les fonctions ou oprateurs sont appliqus chaque lment du tableau (log, sqrt, ...).
Exemple
REAL , DIMENSION ( -4:0 ,0:2) :: B
REAL , DIMENSION (5 ,3)
:: C
REAL , DIMENSION (0:4 ,0:2) :: D
...
B = C * D - B **2
B = SIN ( C )+ COS ( D )
Langage Fortran(Base)
26 mai 2015
88 / 266
Tableaux
Manipulation de tableaux
Les sections rgulires de tableaux sont obtenus en faisant varier le ou les indices laide dun triplet de la
forme :
[limite1 ]:[limite2 ][:pas]
cette notation est quivalente une pseudo-boucle ;
une section de tableau est aussi un tableau ;
le rang dune section de tableau est infrieur ou gal celui du tableau global ;
un tel triplet indique que lindice correspondant dbute avec la valeur limite1 et se termine une valeur
limite2 ;
pas est lincrment de lindice.
Langage Fortran(Base)
26 mai 2015
89 / 266
Tableaux
Manipulation de tableaux
Exemple
A (:)
A (3:9)
A (3:9:1)
A(m:n)
A(m:n:k)
A (8:3: -1)
A (8:3)
A ( m :)
A (: n )
A (::2)
A(m:m)
A(m)
!
!
!
!
!
!
!
!
!
!
!
!
!
Le tableau global
A (3) A (9) par pas de 1
Idem
A(m) A(n)
A ( m ) A ( n ) par pas de k
A (8) A (3) par pas de -1
A (8) A (3) , pas de 1 = > taille nulle
de A ( m ) la borne suprieure de A
de la borne infrieure de A A ( n )
borne inf . de A borne sup . , pas de 2
section constitue de 1 lment
( ce n est pas un scalaire !)
section quivalente un scalaire
Langage Fortran(Base)
26 mai 2015
90 / 266
Tableaux
Manipulation de tableaux
REAL, DIMENSION(1:6,1:8) :: P
P(1:3,1:4)
P(2:6:2,1:7:3)
P(2:5,7), P(2:5,7:7)
P(1:6:2,1:8:2)
Attention, P(2:5,7) est une section 1D tandis que P(2:5,7:7) est une section 2D : ces 2 tableaux ne sont
donc pas conformants.
Anne Fouilloux Patrick Corde ( [email protected] [email protected] )
Langage Fortran(Base)
26 mai 2015
91 / 266
Entres-Sorties
Introduction
Gnralits
Dclarations
Oprateurs et expressions
Structures de contrle
Tableaux
Entres-Sorties
Introduction
Accs squentiel
Fichier binaire squentiel
Fichier texte squentiel
Accs direct
Fichier binaire accs direct
Fichier texte accs direct
Fichier temporaire
Destruction dun fichier
Fichier interne
Instructions de positionnement
Instruction INQUIRE
Langage Fortran(Base)
26 mai 2015
92 / 266
Entres-Sorties
Formats BOZ
Units standards
Instruction FORMAT
Mots-cls END=, ERR=
8
Procdures
Common
10
Include
Langage Fortran(Base)
26 mai 2015
93 / 266
Entres-Sorties
Introduction
Introduction
Langage Fortran(Base)
26 mai 2015
94 / 266
Entres-Sorties
Introduction
Lexploitation dun fichier au sein dun programme ncessite au pralable son ouverture qui, en Fortran, est faite
au moyen de linstruction OPEN.
Cette instruction permet notamment :
de connecter le fichier un numro dunit logique : cest celui-ci que lon indiquera par la suite pour
Si louverture du fichier est fructueuse, des lectures-critures pourront tre lances laide des instructions
READ/WRITE par lintermdiaire du numro dunit logique.
Une fois le traitement du fichier termin, on le fermera au moyen de linstruction CLOSE.
Langage Fortran(Base)
26 mai 2015
95 / 266
Entres-Sorties
Accs squentiel
Accs squentiel
On dit quun fichier est squentiel lorsquil est ncessaire davoir trait les enregistrements prcdant celui auquel
on dsire accder.
Pour un fichier en lecture le paramtre IOSTAT de linstruction READ permet notamment de grer la fin de
fichier ; celui-ci fait rfrence une variable entire qui est valorise lissue de la lecture comme suit :
0 si la lecture sest bien droule ;
une valeur positive si une erreur sest produite ;
une valeur ngative si la fin de fichier ou une fin denregistrement a t rencontre.
On prendra soin de tester la valeur de cette variable immdiatement aprs chaque lecture.
Pour une analyse plus fine des erreurs de lecture se reporter la page 217.
Langage Fortran(Base)
26 mai 2015
96 / 266
Entres-Sorties
Accs squentiel
On appelle fichier binaire un fichier dans lequel on stocke les informations telles quelles sont reprsentes en
mmoire.
Cest au moment de louverture du fichier que lon indique le type de fichier trater.
Exemple
real , dimension (100)
integer
real
integer
::
::
::
::
tab
i
r
ios
OPEN ( UNIT =1 ,
FILE = " data_bin_seq " , &
FORM = " unformatted " , ACCESS = " sequential " , &
ACTION = " read " ,
POSITION = " rewind " ,
&
IOSTAT = ios )
if ( ios /= 0 ) stop " Problme l ouverture "
READ ( UNIT =1 , IOSTAT = ios ) tab , i , r
do while ( ios == 0 )
...
READ ( UNIT =1 , IOSTAT = ios ) tab , i , r
end do
CLOSE ( UNIT =1 )
Langage Fortran(Base)
26 mai 2015
97 / 266
Entres-Sorties
Accs squentiel
On demande louverture du fichier dont le nom est data_bin_seq. Cest un fichier binaire squentiel (unformatted,
sequential) que lon dsire lire depuis le dbut (rewind).
Ce fichier est connect lunit logique dont le numro est 1. Cest ce numro que lon indique au moment de la lecture
des variables (tab, i, r), ainsi qu la fermeture du fichier.
En cas derreur lors de louverture dun fichier, en labsence du mot-cl IOSTAT le programme sinterrompt avec dition
dun message rsumant lerreur. Ici ce mot-cl est prcis. Il permet de personnaliser le traitement en cas derreur. Il fait
rfrence une variable entire (ici la variable ios) laquelle, lissue de lOPEN, est valorise de la faon suivante :
zro si tout sest bien pass ;
une valeur non nulle si une erreur sest produite.
Il faudra videmment la tester avant dentreprendre toute opration dentre-sortie sur le fichier.
Ce mme mot-cl est prcis au sein de linstruction READ. Il rfrence la mme variable (ios) qui refltera ltat de la
lecture une fois celle-ci effectue. Elle est utilise pour notamment grer la fin de fichier.
Langage Fortran(Base)
26 mai 2015
98 / 266
Entres-Sorties
Accs squentiel
Dans un fichier texte les donnes sont stockes sous forme de caractres. De ce fait :
lors dune lecture, elles sont converties en binaire avant dtre ranges en mmoire ;
lors dune criture, elles sont converties en caractres avant dtre crites dans le fichier.
NML=).
Langage Fortran(Base)
26 mai 2015
99 / 266
Entres-Sorties
Accs squentiel
Formats ddition
Pour que la conversion puisse tre faite, il est ncessaire de connatre le type de la donne convertir.
Pour cela le format ddition contient des descripteurs :
descripteur I pour le type INTEGER ;
descripteurs F, E pour le type REAL ;
descripteur L pour le type LOGICAL ;
descripteur A pour le type CHARACTER.
Langage Fortran(Base)
26 mai 2015
100 / 266
Entres-Sorties
Accs squentiel
Exemple
PROGRAM t e x t e _ s e q u e n ti e l
real , dimension (10) ::
integer
::
real
::
integer
::
tab
i
r
ios
OPEN ( UNIT =1 ,
FILE = " data_txt_seq " ,
FORM = " formatted " , ACCESS = " sequential " ,
STATUS = " old " ,
ACTION = " write " ,
POSITION = " rewind " , IOSTAT = ios )
if ( ios /= 0 ) then ! Problme l ouverture
...
else
WRITE ( UNIT =1 , FMT = " (10 F8 .4 , I3 , F6 .3) " ) tab ,
...
endif
...
CLOSE ( UNIT =1 )
END PROGRAM t e x t e _ s e q u e n t i e l
Langage Fortran(Base)
&
&
&
i, r
26 mai 2015
101 / 266
Entres-Sorties
Accs squentiel
Dans cet exemple, on demande louverture du fichier dont le nom est data_txt_seq. Cest un fichier texte
squentiel (formatted, sequential) existant (old) que lon dsire craser (rewind).
Comme prcdemment, lissue de lOPEN on teste la valeur de retour contenue dans lentier ios .
Si louverture sest bien passe on lance, laide de linstruction WRITE, lcriture en caractres dun
enregistrement comportant un tableau de rels (tab) suivi dun entier puis dun rel (i, r).
Le format ddition spcifi sous la forme dune constante chane de caractres ((10F8.4,I3,F6.3)) permet
de convertir en caractres les variables ci-dessus :
10F8.4 : criture des 10 lments du tableau tab . Chacun a un gabarit de 8 caractres avec 4 chiffres en
partie dcimale ;
I3 : criture de lentier i sur 3 caractres ;
F6.3 : criture du rel r sur 6 caractres avec 3 chiffres en partie dcimale.
Langage Fortran(Base)
26 mai 2015
102 / 266
Entres-Sorties
Accs squentiel
Langage Fortran(Base)
26 mai 2015
103 / 266
Entres-Sorties
Accs squentiel
Dans ce qui suit le caractre ^ reprsente lespace. Les diffrentes entres prsentes sont supposes figurer dans
un fichier texte squentiel connect lunit 1 aprs un OPEN.
Exemple
INTEGER i , j
...
READ ( UNIT =1 , FMT = " ( I5 , I4 ) " ) i , j
...
Entres
^^45^^^9^
^-24^10^^
Affectations
i=45, j=9
i=-24, j=10
Langage Fortran(Base)
26 mai 2015
104 / 266
Entres-Sorties
Accs squentiel
Entres
^3.1-3.141
^123^^5678
Affectations
x=3.1, y=-3.141
x=12.3, y=56.78
Langage Fortran(Base)
26 mai 2015
105 / 266
Entres-Sorties
Accs squentiel
Exemple
REAL x
...
READ ( UNIT =1 , FMT = " ( E12 .6) " ) x
! ou bien
READ ( UNIT =1 , FMT = " ( F12 .6) " ) x
...
Entres
2.718281^^^^
2718281^^^^^
27.18281d-1^
.2718281e+1^
.2718281^e^1
^^^^^2718281
^^2^7^18^281
^^^^^^^^^271
Affectations
x=2.718281
x=2.718281
x=2.718281
x=2.718281
x=2.718281
x=2.718281
x=2.718281
x=0.000271
Langage Fortran(Base)
26 mai 2015
106 / 266
Entres-Sorties
Accs squentiel
Entres
.true..false.
^^^^t..FACILE
t^^^^^F^^^^^^
Affectations
l1=.TRUE., l2=.FALSE.
l1=.TRUE., l2=.FALSE.
l1=.TRUE., l2=.FALSE.
Langage Fortran(Base)
26 mai 2015
107 / 266
Entres-Sorties
Accs squentiel
indiquera le nombre de caractres lire. Si la fin de lenregistrement est atteinte avant la fin de la lecture, la
chane est complte par des blancs.
Langage Fortran(Base)
26 mai 2015
108 / 266
Entres-Sorties
Accs squentiel
Exemple
CHARACTER ( len =7) :: ch1 , ch2
...
READ ( UNIT =1 , FMT = " ( A6 , A8 ) " ) ch1 , ch2
READ ( UNIT =1 , FMT = " ( A6 , A8 ) " ) ch1 , ch2
READ ( UNIT =1 , FMT = " (A , A ) "
) ch1 , ch2
...
Entres
Affectations
BACH^^^^BACH^^
MOZARTHAENDEL^
MOZARTHAENDEL^
ch1="BACH^^^",ch2="^BACH^^"
ch1="MOZART^",ch2="AENDEL^"
ch1="MOZARTH",ch2="AENDEL^"
Langage Fortran(Base)
26 mai 2015
109 / 266
Entres-Sorties
Accs squentiel
Iw [.d ] permet ldition dune variable de type INTEGER sur w caractres. Sil est prsent d indique le
Langage Fortran(Base)
26 mai 2015
110 / 266
Entres-Sorties
Accs squentiel
Exemple
INTEGER i , j , k
i = -125
j = 1756
k = 1791
WRITE ( UNIT =1 , FMT = " ( I4 , I4 , I4 ) " ) i , j , k
WRITE ( UNIT =1 , FMT = " ( I5 , I6 , I6 ) " ) i , j , k
WRITE ( UNIT =1 , FMT = " ( I6 .5 , I6 .6 , I6 .6) " ) i , j , k
Sorties
-12517561791
^-125^^1756^^1791
-00125001756001791
Langage Fortran(Base)
26 mai 2015
111 / 266
Entres-Sorties
Accs squentiel
Exemple
REAL x , y , z
x = 3.14159
y = -15.137
z = 799.7432
WRITE ( UNIT =1 , FMT = " ( F7 .5 , F8 .3 , F9 .4) " ) x , y , z
WRITE ( UNIT =1 , FMT = " ( F6 .2 , F9 .4 , F10 .5) " ) x , y , z
Sorties
3.14159^-15.137^799.7432
^^3.14^-15.1370^799.74323
Langage Fortran(Base)
26 mai 2015
112 / 266
Entres-Sorties
Accs squentiel
En ce qui concerne les formats 1 dcriture I, B, O, Z et F, lorsque le gabarit de la zone rceptrice est
insuffisant celle-ci est remplie par le caractre *. Depuis la norme Fortran 95 il est possible dviter cela en
indiquant 0 comme largeur de zone.
Exemple
PROGRAM gabarit
INTEGER I
REAL
R
I = 129876
R = -2345.78
WRITE ( UNIT =1 , FMT = " ( I4 , F6 .3) " ) I , R
WRITE ( UNIT =1 , FMT = " ( I0 , F0 .3) " ) I , R
END PROGRAM gabarit
Sorties
**********
129876-2345.780
Langage Fortran(Base)
26 mai 2015
113 / 266
Entres-Sorties
Accs squentiel
Langage Fortran(Base)
26 mai 2015
114 / 266
Entres-Sorties
Accs squentiel
Exemple
REAL x , y , z
DOUBLE PRECISION xd , yd , zd
x = 3.14159;
y = -15.137;
z = 799.74328;
WRITE ( UNIT =1 ,
WRITE ( UNIT =1 ,
WRITE ( UNIT =1 ,
WRITE ( UNIT =1 ,
xd = 3.14159 d0
yd = -15.137 d0
zd = 799.74328 d0
FMT = " ( D12 .6 , E13 .5 , E15 .8) " ) x , y , z
FMT = " (4 P , D12 .6 , E13 .5 ,0 P , E10 .3) " ) x , y , z
FMT = " ( D12 .6 , E13 .5 , E15 .8) " ) xd , yd , zd
FMT = " (4 P , D12 .6 , E13 .5 ,0 P , E15 .8) " ) xd , yd , zd
Sorties
0.314159D+01^-0.15137E+02^0.79974329E+03
3141.590D-03^-1513.70E-02^0.800E+03
0.314159D+01^-0.15137E+02^0.79974328E+03
3141.590D-03^-1513.70E-02^0.79974328E+03
Langage Fortran(Base)
26 mai 2015
115 / 266
Entres-Sorties
Accs squentiel
Il existe deux variantes du format E qui correspondent aux descripteurs EN et ES. Le facteur dchelle k P ne peut
tre appliqu dans ce contexte.
Le descripteur EN permet la sortie dun rel en notation dite ingnieure . Dans ce type de reprsentation, la
valeur absolue de la partie entire est suprieure ou gale 1 et infrieure 1000 et lexposant est divisible par 3.
Exemple
REAL x , y , z , t
x = 6.421
y = -.5
z = .00217
t = 4721.3
WRITE ( UNIT =1 , FMT = " ( EN12 .3 , EN12 .3 , EN12 .3 , EN12 .3) " ) x , y , z , t
Sorties
^^^6.421E+00-500.000E-03^^^2.170E-03^^^4.721E+03
Langage Fortran(Base)
26 mai 2015
116 / 266
Entres-Sorties
Accs squentiel
Le descripteur ES permet la sortie dun rel en notation dite scientifique . Dans ce type de reprsentation, la
valeur absolue de la partie entire est suprieure ou gale 1 et infrieure 10.
Exemple
REAL x , y , z , t
x = 6.421
y = -.5
z = .00217
t = 4721.3
WRITE ( UNIT =1 , FMT = " ( ES12 .3 , ES12 .3 , ES12 .3 , ES12 .3) " ) x , y , z , t
Sorties
^^^6.421E+00^^-5.000E-01^^^2.170E-03^^^4.721E+03
Langage Fortran(Base)
26 mai 2015
117 / 266
Entres-Sorties
Accs squentiel
Par dfaut, la prsence du signe + pour les donnes numriques positives dpend du compilateur. Il existe des
descripteurs permettant de forcer sa prsence ou bien de le supprimer :
SS (sign suppress ) : le signe + napparat pas ;
SP (sign print ) : le signe + prcde la donne ;
S : restauration du mode par dfaut.
Exemple
INTEGER i , j
REAL x , y
i = 1756
j = -69
x = 6.421
y = .00217
WRITE ( UNIT =1 , FMT = " ( SP , F7 .3 , SS , ES12 .3 , I4 , SP , I6 ) " ) x , y , j , i
Sorties
^+6.421^^^2.170E-03^-69^+1756
Langage Fortran(Base)
26 mai 2015
118 / 266
Entres-Sorties
Accs squentiel
Sorties
^^^^^T^^^^^^F
Langage Fortran(Base)
26 mai 2015
119 / 266
Entres-Sorties
Accs squentiel
Le format A[w ] permet la sortie de chanes de caractres. La valeur w est facultative. Si elle est prcise, elle
indique la largeur de la zone rceptrice.
si la valeur de w est plus grande que la longueur l de la chane, en sortie celle-ci apparatra prcde de w -l
blancs ;
si elle est plus petite, seuls les w caractres les plus gauche de la chane seront crits ;
si la valeur w est absente, cest la longueur de la chane spcifie la dclaration qui indique la largeur du
champ en sortie.
Langage Fortran(Base)
26 mai 2015
120 / 266
Entres-Sorties
Accs squentiel
Exemple
CHARACTER ( len =9) :: ch1 , ch2 , ch3
...
ch1 = " BEETHOVEN "
ch2 = " PUCCINI "
ch3 = " VERDI "
WRITE ( UNIT =1 , FMT = " ( A9 , A8 , A6 , A ) " ) ch1 , ch2 , ch3 , ch3
WRITE ( UNIT =1 , FMT = " ( A10 ) " ) ch3
ch1 = " Ludwig "
ch2 = " Van "
ch3 = " BEETHOVEN "
WRITE ( UNIT =1 , FMT = " (A ,A ,A , A ) " ) trim ( ch1 ) , trim ( ch2 ) , " " , ch3
...
Sorties
BEETHOVENPUCCINI^VERDI^VERDI^^^^
^VERDI^^^^
Ludwig^Van^BEETHOVEN
Langage Fortran(Base)
26 mai 2015
121 / 266
Entres-Sorties
Accs squentiel
Si une constante littrale de type chane de caractres est spcifie dans un format, celle-ci est reproduite telle
quelle en sortie.
Exemple
CHARACTER ( len =9) :: ch1 , ch2 , ch3
...
ch1 = " Ludwig "
ch2 = " Van "
ch3 = " BEETHOVEN "
WRITE ( UNIT =1 , FMT = " ( NOM : ,A , , PRNOM : ,A , A ) " ) &
ch3 , trim ( ch1 ) , trim ( ch2 )
...
Sortie
NOM^:^BEETHOVEN,^PRNOM^:^Ludwig^Van
Langage Fortran(Base)
26 mai 2015
122 / 266
Entres-Sorties
Accs squentiel
Descripteurs de contrle
descripteurs de positionnement :
n X : ignore (en entre), saute (en sortie) les n caractres suivants ;
Tc : permet de se positionner au caractre de rang c ;
TLn : permet de se positionner au caractre situ n positions gauche par rapport la position courante ;
TRn : permet de se positionner au caractre situ n positions droite par rapport la position courante.
descripteurs de gestion des blancs dans les champs numriques en entre :
BN (Blank Null ) : ignore les blancs ;
BZ (Blank Zero ) : interprte le caractre blanc comme un 0.
Langage Fortran(Base)
26 mai 2015
123 / 266
Entres-Sorties
Accs squentiel
Exemple
INTEGER i , j , k , l
...
READ ( UNIT =1 , FMT = " ( I4 ,3 X , I2 , T12 , I3 , TL4 , I1 ) " ) i , j , k , l
...
Entres
1901^1254^4361
Affectations
i=1901,j=54,k=361,l=4
Exemple
INTEGER i , j , k
...
READ ( UNIT =1 , FMT = " ( I3 , BZ , I2 , BN , I3 ) " ) i , j , k
...
Entres
^8^2^4^^
Affectations
i=8,j=20,k=4
Langage Fortran(Base)
26 mai 2015
124 / 266
Entres-Sorties
Accs squentiel
Entres
1756^1254
1791
Affectations
i=1756,j=1791
Sortie
NOM^^^^:^BEETHOVEN
PRNOM^:^Ludwig^Van
Langage Fortran(Base)
26 mai 2015
125 / 266
Entres-Sorties
Accs squentiel
Facteur de rptition
Lorsquune liste de descripteurs identiques figure dans un format il est possible de les regrouper au moyen dun
facteur de rptition indiqu sous la forme dune constante littrale entire.
Exemple
INTEGER i , j , k
INTEGER t (3)
...
READ ( UNIT =1 , FMT = " ( I4 , I4 , I4 ) " ) i , j , k
READ ( UNIT =1 , FMT = " (3 I4 ) " ) t
...
WRITE (6 , " (3(1 X , I4 )) " ) t
Entres
^^45^^^9^^10
^-24^10^^^99
Affectations
i=45, j=9, k=10
t(1)=-24, t(2)=10, t(3)=99
Sortie
^^-24^^^10^^^99
Langage Fortran(Base)
26 mai 2015
126 / 266
Entres-Sorties
Accs squentiel
Lensemble des variables spcifies dans une instruction READ/WRITE sappelle la liste dentre-sortie. Chaque
lment de cette liste est associ un descripteur du format.
si le nombre de descripteurs correspond au nombre de variables de la liste, ceux-ci sappliquent aux lments
Conclusion
En Fortran la liste dentre-sortie est toujours satisfaite.
Langage Fortran(Base)
26 mai 2015
127 / 266
Entres-Sorties
Accs squentiel
dbut ;
sinon, la rexploration est faite partir du groupe de niveau 1 le plus droite. Sil est prcd dun facteur
Langage Fortran(Base)
26 mai 2015
128 / 266
Entres-Sorties
Accs squentiel
Exemple
INTEGER :: i =100 , j =200 ! depuis Fortran 90.
INTEGER :: k , l
DATA
k /300/ , l /400/ ! ancienne forme
! d init ialisati on .
REAL
t (3 ,4)
DATA
t / 1. ,
4. ,
9. , &
16. , 25. , 36. , &
49. , 64. , 81. , &
100. , 121. , 144. /
WRITE (6 , " ( 4 i5 , ( t25 ,4 f8 .2) ) " ) i , j , k , l , &
(( t (i , j ) , j =1 ,4) , i =1 ,3)
Sorties
^^100^^200^^300^^400^^^^^^^^1.00^^^16.00^^^49.00^^100.00
^^^^^^^^^^^^^^^^^^^^^^^^^^^^4.00^^^25.00^^^64.00^^121.00
^^^^^^^^^^^^^^^^^^^^^^^^^^^^9.00^^^36.00^^^81.00^^144.00
Langage Fortran(Base)
26 mai 2015
129 / 266
Entres-Sorties
Accs squentiel
Format libre
caractres appels sparateurs. Cest le type des variables auxquelles ces valeurs vont tre affectes qui
dtermine la conversion effectuer. Les caractres interprts comme des sparateurs sont :
la virgule ( , ) si lors de lOPEN le mot-cl DECIMAL a pour valeur POINT (valeur par dfaut) ;
le point-virgule ( ; ) si lors de lOPEN le mot-cl DECIMAL a pour valeur COMMA ;
le blanc (espace).
une chane de caractres contenant un caractre sparateur doit tre dlimite soit par des quotes () soit
Langage Fortran(Base)
26 mai 2015
130 / 266
Entres-Sorties
Accs squentiel
une fin denregistrement (newline ) a le mme effet quun blanc. Elle peut apparatre :
au sein dune chane de caractres (dlimite par des quotes () ou par des guillemets (")) ;
entre la partie relle et la virgule ou entre la virgule et la partie imaginaire dune constante complexe.
si une chane de caractres a t dclare avec une longueur plus petite que celle de la valeur lue alors seuls
les caractres les plus gauche de la valeur seront stocks dans la chane. Sinon, celle-ci est complte par
des blancs ;
si dans lenregistrement en entre apparaissent deux virgules la suite (ventuellement avec des blancs
forme n*valeur ;
la prsence du caractre / parmi les donnes en entre interrompt la lecture : les variables restantes au
Langage Fortran(Base)
26 mai 2015
131 / 266
Entres-Sorties
Accs squentiel
Exemple
INTEGER :: i =100 , j =200 , k =300
REAL
:: t (6)
DATA t /6*1./
COMPLEX c
CHARACTER ( len =18) ch
...
READ ( UNIT =1 , FMT =* ) i , j , k , t , c , ch
WRITE ( UNIT =2 , FMT =* ) i , j , k , c , ch (1:8)
WRITE ( UNIT =2 , FMT =* ) t
Entres
150
260,,
3*2.718
2* 3.14
( 2.
, 3. )
Wolfgang
Amadeus Mozart
Affectations
i=150
j=260
t(1)=t(2)=t(3)=2.718
t(4)=t(5)=1., t(6)=3.14
c=(2.,3.)
ch=Wolfgang Amadeus M
Langage Fortran(Base)
26 mai 2015
132 / 266
Entres-Sorties
Accs squentiel
Affectations
i=150
j=260
t(1)=t(2)=t(3)=2.718
t(4)=t(5)=1., t(6)=3.14
c=(2.,3.)
ch=Wolfgang Amadeus M
Langage Fortran(Base)
26 mai 2015
133 / 266
Entres-Sorties
Accs squentiel
Autre exemple
INTEGER
:: dates (2)
character ( len =15) :: nom
REAL , DIMENSION (6) :: t =1.
...
read ( unit =1 , fmt =* ) dates , nom
write ( unit =2 , fmt =* ) dates , trim ( nom )
read ( unit =1 , fmt =* ) t ; write ( unit =2 , fmt =* ) t
read ( unit =1 , fmt =* ) t ; write ( unit =2 , fmt =* ) t
read ( unit =1 , fmt =* ) t ; write ( unit =2 , fmt =* ) t
Entres
1944 1971
Jim Morisson
2.718 / 2*2.718
8* 3.14
6*9.81
1944
2.718000
2.718000
9.810000
Affectations
dates(1)=1944, dates(2)=1971
nom=Jim Morisson
t(1)=2.718, t(2:6)=1.
t(1)=2.718, t(2:6)=1.
t(:)=9.81
Langage Fortran(Base)
1.000000
1.000000
9.810000
26 mai 2015
134 / 266
Entres-Sorties
Accs squentiel
namelist
On peut regrouper les variables que lon dsire lire ou crire au sein dune liste laquelle on donne un nom.
Ce regroupement seffectue au moyen de linstruction NAMELIST :
NAMELIST/nom_liste/liste_variables
nom_liste est le nom de la NAMELIST ;
liste_variables est une liste de variables prcdemment dclares.
Remarques :
1
au niveau de linstruction READ/WRITE la namelist remplace le format ainsi que la liste de variables qui,
dans ce contexte, devient inutile ;
Langage Fortran(Base)
26 mai 2015
135 / 266
Entres-Sorties
Accs squentiel
La liste daffectations concerne les variables de la namelist qui peuvent apparatre dans nimporte quel ordre,
certaines pouvant tre omises. Les diffrentes affectations sont spares par des caractres sparateurs (, ou
blancs).
Le caractre / indique la fin de la namelist . En entre, les ventuels caractres qui suivent sont ignors.
En entre les chanes de caractres doivent tre dlimites laide du caractre ou ".
En sortie celles-ci apparaissent par dfaut sans dlimiteur. Cest le paramtre DELIM= de linstruction OPEN qui
permet de le dfinir.
Dans linstruction READ/WRITE, la namelist est indique laide du paramtre NML= ( la place de FMT=).
Lutilisation des namelist est un moyen trs commode deffectuer des entres-sorties sans avoir dfinir de
format.
Langage Fortran(Base)
26 mai 2015
136 / 266
Entres-Sorties
Accs squentiel
Exemple
INTEGER
:: i =100 , j =200 , k =300
INTEGER
:: t (3)
CHARACTER ( len =11) :: ch
NAMELIST / LISTE /i ,j ,k ,t , ch
...
READ ( UNIT =1 , NML = liste )
WRITE ( UNIT =2 , NML = liste )
...
Entres
&LISTE t=3*2,i=1, k=4 ch="Rythm&Blues" /
Affectations
i=1,k=4,t(1)=t(2)=t(3)=2,ch="Rythm&Blues"
Sorties
^&LISTE
^I=1,^J=200,^K=4,^T=2,^2,^2,^CH=Rythm&Blues
^/
Langage Fortran(Base)
26 mai 2015
137 / 266
Entres-Sorties
Accs direct
Accs direct
la diffrence dun fichier squentiel, il est possible daccder un enregistrement dun fichier accs direct
sans avoir trait les prcdents.
Chaque enregistrement est repr par un numro qui est son rang dans le fichier. Leur taille est fixe.
Au sein de linstruction OPEN :
le paramtre RECL= est obligatoire, sa valeur indique la taille des enregistrements (en caractres pour les
Le rang de lenregistrement que lon dsire traiter doit tre spcifi laide du paramtre REC= de linstruction
READ/WRITE. Un enregistrement ne peut pas tre dtruit mais par contre il peut tre rcrit. Dans ce contexte,
les namelist ainsi que le format libre sont interdits.
Langage Fortran(Base)
26 mai 2015
138 / 266
Entres-Sorties
Accs direct
Exemple
real , dimension (100) :: tab
integer ios , n
OPEN ( UNIT =1 ,
FILE = " da t a_ bi n_ d ir ec t " , &
ACCESS = " direct " , ACTION = " read " ,
&
STATUS = " old " ,
RECL =400 )
OPEN ( UNIT =2 ,
FILE = " data_txt_seq " , &
ACTION = " read " , STATUS = " old " )
...
READ ( UNIT =2 , FMT =* ) n
READ ( UNIT =1 , REC =n , IOSTAT = ios ) tab
if ( ios > 0 ) then
print " (a , i0 ,/ , a ) " , " Erreur lors du traitement de &
&l enregist rement de rang " , rang , &
"
== > peut - tre un problme d existence . "
stop 4
end if
...
CLOSE ( UNIT =2 )
CLOSE ( UNIT =1 )
Langage Fortran(Base)
26 mai 2015
139 / 266
Entres-Sorties
Accs direct
Le fichier dont le nom est data_bin_direct est connect lunit logique numro 1. Cest un fichier binaire
accs direct (ACCESS="direct" et paramtre FORM absent donc considr gal unformatted ). Chaque
enregistrement fait 400 octets (RECL=400).
On accde lenregistrement de rang n , valeur pralablement lue dans le fichier texte squentiel de nom
data_txt_seq connect lunit logique numro 2. Le paramtre IOSTAT de linstruction READ permet de
rcuprer ltat de la lecture dans lentier ios : une valeur non nulle positive signale une erreur du type
enregistrement inexistant par exemple.
Langage Fortran(Base)
26 mai 2015
140 / 266
Entres-Sorties
Accs direct
Exemple
real , dimension (100) :: tab
integer ios , n
OPEN ( UNIT =1 ,
FILE = " d at a _t xt _d i re ct " , &
FORM = " formatted " , ACCESS = " direct " ,
&
ACTION = " read " ,
STATUS = " old " ,
&
RECL =800 )
OPEN ( UNIT =2 ,
FILE = " data_txt_seq " , &
ACTION = " read " , STATUS = " old " )
READ ( UNIT =2 , FMT =* ) n
READ ( UNIT =1 , REC =n , IOSTAT = ios , FMT = " (100 F8 .4) " ) tab
if ( ios > 0 ) then
print " (a , i0 ,/ , a ) " , " Erreur lors du traitement de &
&l enregist rement de rang " , rang , &
"
== > peut - tre un problme d existence . "
stop 4
end if
...
CLOSE ( UNIT =2 ); CLOSE ( UNIT =1 )
Langage Fortran(Base)
26 mai 2015
141 / 266
Entres-Sorties
Accs direct
On a adapt lexemple prcdent un fichier texte accs direct : le paramtre FORM="formatted" a donc t
prcis.
La valeur du paramtre RECL correspond la taille en caractres de chacun des enregistrements qui correspond
ici au format indiqu au niveau de linstruction READ (100*8=800).
Notes :
il nest pas permis de lire un fichier texte accs direct au moyen dun format libre ;
un fichier dans lequel on crit un seul enregistrement de rang n, contiendra en ralit n enregistrements avec
les n-1 premiers ayant un contenu indtermin. Lors de la lecture dun tel enregistrement, se pose le
problme de la reconnaissance de la nature de celui-ci. On pourra rsoudre ce problme en adjoignant aux
donnes une marque sous la forme dune variable logique par exemple.
Langage Fortran(Base)
26 mai 2015
142 / 266
Entres-Sorties
Accs direct
Dans lexemple suivant des enregistrements de rang alatoire sont crs. Pour les reprer on ajoute en tte des
donnes une variable logique flag .
Exemple
program dir
implicit none
integer , parameter
::
real , dimension (n , m ) ::
real , dimension ( n )
::
integer i ,j , rang , ios ,
logical flag
n = 100 , m = 1000
matrice
vec
size
Langage Fortran(Base)
26 mai 2015
143 / 266
Entres-Sorties
Accs direct
Exemple (suite)
do
print * , " Entrez un rang : "
read ( * , * , iostat = ios ) rang
if ( ios < 0 ) exit
if ( ios > 0 ) then
print * , " Erreur de saisie . Veuillez recommencer . "
cycle
end if
read ( unit =1 , rec = rang , iostat = ios ) flag , vec
if ( ios > 0 ) then
print " (a , i0 ,/ , a ) " , " Erreur lors du traitement de &
&l enregistrement de rang " , rang , &
"
== > peut - tre un problme d existence . "
cycle
end if
if ( flag ) then
print * , " vec (1) = " , vec (1) , " vec ( n ) = " , vec ( n )
else
print * , " Enregistrement " , rang , " indfini . "
end if
end do
close (1)
end program dir
Langage Fortran(Base)
26 mai 2015
144 / 266
Entres-Sorties
Accs direct
Notes :
linstruction INQUIRE( iolength=size ) ... permet de rcuprer dans lentier size la taille de la liste de
variables fournies qui servira renseigner, par la suite, le paramtre RECL de linstruction OPEN. Comme
cette valeur est exprime dans une unit dpendant du compilateur (pour les fichiers binaires en accs
direct), cette nouvelle forme de linstruction INQUIRE 2 , introduite par la norme Fortran 90, permet de la
calculer en saffranchissant de lunit ;
linstruction call random_number( matrice ) fait appel la procdure intrinsque RANDOM_NUMBER
(introduite par la norme Fortran 90) qui valorise le tableau transmis laide de nombres alatoires gnrs
dans lintervalle [0.,1.].
Langage Fortran(Base)
26 mai 2015
145 / 266
Entres-Sorties
Fichier temporaire
Fichier temporaire
Si louverture dun fichier on positionne le mot-cl STATUS la valeur "scratch" alors celui-ci sera temporaire
et dtruit sa fermeture. Un tel fichier est anonyme : le paramtre FILE de linstruction OPEN ne doit donc pas
tre spcifi dans ce contexte.
Exemple
OPEN ( UNIT =1 ,
FORM = " formatted " ,
ACCESS = " direct " ,
ACTION = " write " ,
STATUS = " scratch " ,
RECL =1200 )
...
CLOSE ( UNIT =1 )
&
&
&
&
&
Langage Fortran(Base)
26 mai 2015
146 / 266
Entres-Sorties
Linstruction CLOSE admet le paramtre mot-cl STATUS qui par dfaut (pour un fichier non temporaire) prend
la valeur "KEEP" permettant ainsi de conserver le fichier aprs fermeture. Si on dsire le supprimer il suffira de
prciser la valeur "DELETE" pour ce paramtre.
Exemple
logical condition
OPEN ( UNIT =1 ,
&
FILE = " data_seq " , &
ACTION = " read " ,
&
STATUS = " old " )
...
if ( condition ) then
CLOSE ( UNIT =1 , STATUS = " delete " )
else
CLOSE ( UNIT =1 )
end if
Langage Fortran(Base)
26 mai 2015
147 / 266
Entres-Sorties
Fichier interne
Fichier interne
On appelle fichier interne un fichier dont les enregistrements sont en mmoire. Ce type de fichier induit des
changes entre zones de la mmoire et non plus entre un support externe et la mmoire.
Ces fichiers sont pr-connects : il ny a donc aucune ouverture ni fermeture effectuer.
Dans les instructions READ/WRITE, la place du numro dunit logique on indique une variable de type chane
de caractres. Cest celle-ci qui fait rfrence lenregistrement en mmoire.
Seul laccs squentiel format est permis dans ce cas. Les namelist sont interdites.
Lors dune criture il faut sassurer que la chane de caractres rceptrice est de taille suffisante.
Lors dune lecture, la fin de fichier est atteinte lorsquon essaie daccder aux caractres situs au-del de la
chane qui fait rfrence lenregistrement.
Langage Fortran(Base)
26 mai 2015
148 / 266
Entres-Sorties
Fichier interne
Fichier interne
Exemple
INTEGER , PARAMETER
REAL , DIMENSION (n , m )
CHARACTER ( LEN =8)
INTEGER
::
::
::
::
n = 4, m = 6
tab
format = " ( F8 .3) "
i, j
Dans un format le facteur de rptition doit obligatoirement tre prcis laide dune constante littrale. Cet
exemple montre comment le gnrer dynamiquement en utilisant un fichier interne.
Langage Fortran(Base)
26 mai 2015
149 / 266
Entres-Sorties
Fichier interne
Voici un autre exemple dans lequel on trate une centaine de fichiers dont les noms sont de la forme FILExxx
avec xxx prenant les valeurs de 001 100.
Exemple
PROGRAM gr ou pe _ fi ch ie r s
implicit none
character ( len =7) :: nom_fichier = " FILExxx "
integer i
do i =1 ,100
write ( nom_fichier (5:7) , " ( i3 .3) " ) i ! et non pas "( i3 )".
open ( unit =1 , file = nom_fichier , ... )
...
close ( unit =1 )
end do
END PROGRAM g ro up e_ f ic hi er s
Langage Fortran(Base)
26 mai 2015
150 / 266
Entres-Sorties
Fichier interne
Exemple
PROGRAM f i ch i er _interne
CHARACTER ( len =80) enreg
INTEGER
ios
REAL
x, y, z
NAMELIST / liste /x , y , z
OPEN ( UNIT =1 ,
FILE = " data_txt_seq " , &
FORM = " formatted " , ACTION = " read " ,
&
STATUS = " old " ,
POSITION = " rewind " )
DO
READ ( UNIT =1 , FMT = " ( a ) " , IOSTAT = ios ) enreg
if ( ios /= 0 ) exit
IF ( VERIFY ( enreg , " ,+ -0123456789. eEdD " ) == 0 ) THEN
READ ( enreg , FMT =* , iostat = ios ) x , y , z
! ---------------------------------------WRITE ( UNIT =* , NML = liste )
END IF
END DO
if ( ios > 0 ) stop " Erreur lors de la lecture . "
CLOSE ( UNIT =1 )
...
END PROGRAM f ichier_interne
Dans cet exemple on lit un fichier en ne traitant que les enregistrements constitus de rels et en ignorant tous
les autres.
Langage Fortran(Base)
26 mai 2015
151 / 266
Entres-Sorties
Instructions de positionnement
Instructions de positionnement
Toute opration de lecture-criture dans un fichier est effectue par rapport la position courante dans ce
fichier. louverture celle-ci peut tre prcise laide du paramtre POSITION. Dans un fichier squentiel toute
lecture-criture dun enregistrement de rang n implique le positionnement lenregistrement de rang n+1.
Trois instructions BACKSPACE, REWIND et ENDFILE permettent de modifier la position :
BACKSPACE force la position au dbut de lenregistrement prcdent ;
REWIND force la position au dbut du fichier ;
ENDFILE crit un enregistrement de type fin de fichier. Il est alors ncessaire dexcuter ensuite lune des
Langage Fortran(Base)
26 mai 2015
152 / 266
Entres-Sorties
Instructions de positionnement
Exemple
program troncature
REAL , dimension (100) :: tab
INTEGER
:: ios
LOGICAL
:: flag = . false .
OPEN ( UNIT =1 ,
FILE = " data_txt_seq " ,
ACTION = " readwrite " ,
POSITION = " append " ,
STATUS = " old " )
&
&
&
&
Le fichier dont le nom est data_txt_seq est ouvert avec un positionnement en fin de fichier
(POSITION="append"). Aprs criture dun enregistrement, on se repositionne en tte (REWIND).
Langage Fortran(Base)
26 mai 2015
153 / 266
Entres-Sorties
Instructions de positionnement
Exemple (suite)
READ ( UNIT =1 , FMT = " (100 F6 .3) " , IOSTAT = ios ) tab
DO WHILE ( ios == 0 )
if ( flag ) then
BACKSPACE ( UNIT =1 )
ENDFILE ( UNIT =1 )
BACKSPACE ( UNIT =1 )
END IF
...
READ ( UNIT =1 , FMT = " (100 F6 .3) " , IOSTAT = ios ) tab
END DO
CLOSE ( UNIT =1 )
end program troncature
Ensuite on relit le fichier et si la variable flag contient la valeur .TRUE. on le tronque avant le dernier
enregistrement lu. (Instructions BACKSPACE et ENDFILE).
Langage Fortran(Base)
26 mai 2015
154 / 266
Entres-Sorties
Instruction INQUIRE
Instruction INQUIRE
Langage Fortran(Base)
26 mai 2015
155 / 266
Entres-Sorties
Instruction INQUIRE
Exemple (suite)
if ( existe ) then
OPEN ( UNIT =1 ,
FILE = " data_txt_seq " , &
POSITION = " rewind " , ACTION = " read " ,
&
IOSTAT = ios )
if ( ios /= 0 ) then ! erreur l ouverture
...
else
INQUIRE ( UNIT =1 ,
&
FORMATTED =form, &
ACCESS = acces )
end if
...
CLOSE ( UNIT =1 )
end if
end program inquire
Dans les variables caractres form et acces on rcupre respectivement les valeurs "YES" et "SEQUENTIAL" (si le
fichier data_txt_seq existe).
Langage Fortran(Base)
26 mai 2015
156 / 266
Entres-Sorties
Formats BOZ
Formats BOZ
Les spcificateurs de format Bw [.d ], Ow [.d ] et Zw [.d ] permettent la conversion de donnes entires sous forme binaire,
octale et hexadcimale respectivement.
Exemple
PROGRAM boz
INTEGER I , J , K
I = 1415; J = 1515; K = 1715
WRITE ( UNIT = 1 , &
FMT = " ( B32 .32 , | , O11 .11 , | , Z8 .8) " ) I , J , K
I = -1415; J = -1515; K = -1715
WRITE ( UNIT = 1 , FMT = " ( B32 .32) " ) I
WRITE ( UNIT = 1 , FMT = " ( O11 .11) " ) J
WRITE ( UNIT = 1 , FMT = " ( Z8 .8) "
) K
END PROGRAM boz
Sorties
00000000000000000000010110000111|00000002753|000006B3
11111111111111111111101001111001
37777775025
FFFFF94D
Langage Fortran(Base)
26 mai 2015
157 / 266
Entres-Sorties
Units standards
Units standards
Les fichiers associs au clavier et lcran dune session interactive sont pr-connects en gnral aux numros
dunits logiques 5 et 6 respectivement : en lecture pour le premier, en criture pour le second.
Dans un souci de portabilit, on prfrera utiliser dans les instructions READ/WRITE le caractre * la place
du numro de lunit logique pour rfrencer lentre standard (READ) ou la sortie standard (WRITE). Cest
la valeur par dfaut du paramtre UNIT. Linstruction PRINT remplace linstruction WRITE dans le cas o celui-ci
nest pas prcis.
Exemple
CHARACTER ( LEN =8)
:: ft = " ( F8 .3) "
READ ( UNIT =5 , FMT = ft ) ...
READ ( UNIT =* , FMT = ft ) ...
READ ft , ...
...
WRITE ( UNIT =6 , FMT = ft ) ...
WRITE ( UNIT =* , FMT = ft ) ...
PRINT ft , ...
Langage Fortran(Base)
26 mai 2015
158 / 266
Entres-Sorties
Instruction FORMAT
Instruction FORMAT
Le format ddition peut tre dfini en dehors des instructions dentres-sorties READ/WRITE. Dans ce cas le
paramtre FMT= est positionn un numro (tiquette) renvoyant une instruction de dfinition de format
(FORMAT).
Exemple
REAL , DIMENSION (5 ,6) :: tab
INTEGER n , i
CHARACTER ( len =10) :: ch
...
PRINT " ( I4 ,A ,( T20 , F8 .3) ) " , n , ch , ( tab (i ,:) , i =1 ,5)
PRINT 100 , n , ch , ( tab (i ,:) , i =1 ,5)
100 FORMAT ( I4 ,A ,( T20 , F8 .3) )
En Fortran louverture dun fichier squentiel est facultative. dfaut, louverture du fichier est faite
implicitement lors de lexcution de la premire instruction dentre-sortie. Le compilateur attribue au fichier un
nom de la forme fort.i (i tant le numro de lunit logique indiqu dans linstruction READ/WRITE).
Louverture est faite en mode formatted ou unformatted suivant quun format a t ou non prcis.
Langage Fortran(Base)
26 mai 2015
159 / 266
Entres-Sorties
Le paramtre END de linstruction READ offre un autre moyen de tester une fin de fichier pour un accs squentiel.
On lui indique le numro (tiquette) de linstruction laquelle on dsire poursuivre le traitement. Ce paramtre
nest pas valide dans le cas dun fichier accs direct.
De mme, le paramtre ERR permet de se dbrancher une instruction dans le cas dune erreur de lecture
(problme de format pour un fichier format, enregistrement inexistant pour un fichier accs direct ...).
Exemple
2
1
INTEGER :: date
DO
PRINT * , " Saisie d une date : "
READ ( * , " ( i4 ) " , END =1 , ERR =2 ) date
PRINT " ( i4 ) " , date
CYCLE
PRINT * , " Saisie invalide . Veuillez recommencer . "
END DO
PRINT * , " Arrt de la saisie . "
Remarque : au clavier, la saisie du caractre Ctrl-D aprs le caractre newline (touche Enter ) indique une fin
de fichier.
Langage Fortran(Base)
26 mai 2015
160 / 266
Entres-Sorties
Lors dune lecture, lorsquune erreur se produit (problme de format sagissant dun fichier texte, dtection dune
fin de fichier ...) un traitement par dfaut est activ par le compilateur, lequel traitement peut fournir des
informations prcieuses quant la nature de lerreur. Lutilisation du paramtre IOSTAT dsactive ce traitement,
ce qui peut tre considr comme un inconvnient. De ce fait, pour tester une fin de fichier il peut tre prfrable
dutiliser le mot-cl END. Celui-ci a lavantage de ne pas masquer le traitement par dfaut concernant les erreurs
ventuelles.
Exemple
PROGRAM lecture
INTEGER date
OPEN ( UNIT =1 , FILE = " data " , ACTION = " read " )
DO
READ ( UNIT =1 , FMT = " ( i4 ) " , END =1 ) date
PRINT * , date
END DO
1 CLOSE ( UNIT =1 )
END PROGRAM lecture
Langage Fortran(Base)
26 mai 2015
161 / 266
Entres-Sorties
Exemple
Contenu du fichier " data "
1685
1756
17 a1
Sorties produites
1685
1756
" lecture . f90 " , line 11: 1525 -097 A READ statement
using decimal base input found the invalid digit
a in the input file . The program will recover
by assuming a zero in its place .
1701
Langage Fortran(Base)
26 mai 2015
162 / 266
Entres-Sorties
Exemple
PROGRAM lecture
INTEGER date , ios
OPEN ( UNIT =1 , FILE = " data " , ACTION = " read " )
DO
READ ( UNIT =1 , FMT = " ( i4 ) " , IOSTAT = ios ) date
if ( ios /= 0 ) exit
PRINT * , date
END DO
CLOSE ( UNIT =1 )
if ( ios < 0 ) print * , " Fin de fichier atteinte "
if ( ios > 0 ) print * , " Erreur de lecture dtecte "
END PROGRAM lecture
Sorties produites
1685
1756
Erreur de lecture dtecte
Langage Fortran(Base)
26 mai 2015
163 / 266
Procdures
Introduction
Gnralits
Dclarations
Oprateurs et expressions
Structures de contrle
Tableaux
Entres-Sorties
Procdures
Arguments
Subroutines
Fonctions
Arguments de type chane de caractres
Arguments de type tableau
Arguments de type procdure
Procdures internes
Dure de vie et visibilit des identificateurs
Procdures intrinsques
Langage Fortran(Base)
26 mai 2015
164 / 266
Procdures
Common
10
Include
Langage Fortran(Base)
26 mai 2015
165 / 266
Procdures
Arguments
Arguments
Trs souvent, dans un programme, on a besoin deffectuer un mme traitement plusieurs fois avec des valeurs
diffrentes. La solution est de dfinir ce traitement une seule fois laide dune unit de programme de type
procdure (SUBROUTINE ou FUNCTION).
Les units de programmes dsirant effectuer ce traitement feront appel cette procdure en lui transmettant des
valeurs via des variables appeles arguments dappel (actual-arguments). La procdure appele rcupre les
valeurs quon lui a transmises via des variables appeles arguments muets (dummy-arguments).
En Fortran le passage de ces valeurs seffectue par rfrence ;
les adresses des arguments dappel sont transmises la procdure appele,
dans la procdure appele, les arguments muets sont des alias des arguments dappel.
Langage Fortran(Base)
26 mai 2015
166 / 266
Procdures
Arguments
Procdure
appelante
Procdure
appele
arguments dappel
arguments muets
real t(100)
integer m
real
y
100
real :: tab(100)
18
integer :: i
32.
real
:: x
Stack
Adresse du tableau tab
Adresse de lentier i
Adresse du rel
Langage Fortran(Base)
26 mai 2015
167 / 266
Procdures
Subroutines
Subroutines
Lappel dune procdure de type SUBROUTINE seffectue laide de linstruction CALL suivie du nom de la
procdure appeler avec la liste des arguments dappels entre parenthses. Au sein de celle-ci linstruction
return permet de forcer le retour la procdure appelante.
Exemple
REAL , DIMENSION (100) :: tab
REAL
:: moyenne , maximum
...
CALL SP ( tab , moyenne , maximum )
PRINT * , moyenne , maximum
END
SUBROUTINE SP ( t , moy , max )
REAL , DIMENSION (100) :: t
REAL
:: moy , max
INTEGER
:: i
max = t (1); moy = t (1)
DO i =2 ,100
IF ( t ( i ) > max ) max = t ( i )
moy = moy + t ( i )
END DO
moy = moy /100
END SUBROUTINE SP
Langage Fortran(Base)
26 mai 2015
168 / 266
Procdures
Fonctions
Fonctions
Un autre moyen de transmettre des valeurs une unit de programme est lutilisation dune procdure de type
FUNCTION.
la diffrence dune SUBROUTINE, une FUNCTION retourne une valeur ; celle-ci est donc type. De plus, son appel
seffectue en indiquant uniquement son nom suivi entre parenthses de la liste des arguments dappels.
Au sein de la fonction linstruction return sert transmettre la procdure appelante la valeur retourner.
Celle-ci nest ncessaire que dans le cas o on dsire effectuer ce retour avant la fin de la dfinition de la fonction.
Dans la procdure appelante lexpression correspondant lappel de la fonction est remplace par la valeur
retourne.
Langage Fortran(Base)
26 mai 2015
169 / 266
Procdures
Fonctions
Fonctions
Exemple
REAL , DIMENSION (100) :: tab
REAL
:: moyenne , maximum
REAL
:: maxi
...
maximum = maxi ( tab , moyenne )
PRINT * , moyenne , maximum
...
END
FUNCTION maxi ( t , moy )
REAL , DIMENSION (100) :: t
REAL
:: moy , maxi
INTEGER
:: i
maxi = t (1); moy = t (1)
DO i =2 ,100
IF ( t ( i ) > maxi ) maxi = t ( i )
moy = moy + t ( i )
END DO
moy = moy /100
END FUNCTION maxi
Langage Fortran(Base)
26 mai 2015
170 / 266
Procdures
Lorsquune chane de caractres est transmise en argument, Fortran passe galement sa longueur de faon
implicite.
Dans la procdure appele, celle-ci peut tre rcupre laide de la fonction intrinsque LEN.
La dclaration de la chane de caractres au sein de la procdure appele est faite en spcifiant le caractre *
la place de la longueur.
La procdure appele fait alors rfrence une chane de caractres taille implicite (assumed-size string).
Langage Fortran(Base)
26 mai 2015
171 / 266
Procdures
Dans lexemple ci-dessous les fonctions IACHAR/ACHAR permettent de mettre en relation un caractre et son rang
dans la table des caractres ASCII.
Exemple
program arg_chaine
implicit none
character ( len =10) :: ch
read ( a ) , ch
call conv ( ch )
print * , ch
end program arg_chaine
subroutine conv ( chaine )
implicit none
character ( len =*) :: chaine
integer i , j
do i =1 , len ( chaine )
if ( iachar ( chaine ( i : i ) ) < 97 . or . &
iachar ( chaine ( i : i ) ) > 122 ) cycle
j = iachar ( chaine ( i : i ) ) - 32
chaine ( i : i ) = achar ( j )
end do
end subroutine conv
Langage Fortran(Base)
26 mai 2015
172 / 266
Procdures
Langage Fortran(Base)
26 mai 2015
173 / 266
Procdures
Lorsquun tableau est pass en argument cest ladresse de son premier lment qui est transmise.
La procdure appele doit possder les informations lui permettant dadresser les diffrents lments de ce
tableau.
De faon gnrale, supposons que lon dispose dun tableau tab 2 dimensions constitu de n lignes et m
colonnes. Ladresse de llment tab(i,j) est :
@tab(i,j) = @tab(1,1) + [n(j-1)+(i-1)]taille(lment)
Le nombre de colonnes m nintervient pas dans ce calcul.
Souvent en Fortran, lors de lappel dune procdure seule la premire dimension dun tableau 2 dimensions est
transmise.
Dans la procdure appele celui-ci est dclar en indiquant le caractre * la place de la deuxime
dimension. On fait alors rfrence un tableau taille implicite (assumed-size array ).
Dans un tel cas, il faut faire preuve dune certaine prudence car dans la procdure appele on ne matrise pas
lespace mmoire total occup par le tableau.
Langage Fortran(Base)
26 mai 2015
174 / 266
Procdures
Exemple
program t a i l l e _implicite
implicit none
integer , parameter
:: n = 5 , m = 6
real , dimension (n , m ) :: tab
real
:: somme , som
read * , tab
somme = som ( tab , n )
print * , somme
end program t a i lle_implicite
real function som ( t , lda )
implicit none
integer
:: lda
real , dimension ( lda ,*) :: t
integer
:: i , j
som = 0.
do i =1 , lda
do j =1 , lda
som = som + t (i , j )
end do
end do
end function som
Langage Fortran(Base)
26 mai 2015
175 / 266
Procdures
Une procdure peut tre transmise une autre procdure. Il est ncessaire de la dclarer dans la procdure
appelante avec lattribut EXTERNAL ou INTRINSIC si elle est intrinsque.
Exemple
program arg_proc
implicit none
double precision b_inf , b_sup , aire
double precision integrale
integer pas
double precision , external :: carre
b_inf = 1.
b_sup = 6.
pas = 200000
aire = integrale ( b_inf , b_sup , pas , carre )
print " ( Aire : , f11 .6) " , aire
end program arg_proc
Langage Fortran(Base)
26 mai 2015
176 / 266
Procdures
Exemple
function integrale ( borne_i , borne_s , pas , f )
implicit none
double precision borne_i , borne_s
double precision integrale
integer
pas , i
double precision h , f
h = ( borne_s - borne_i )/ pas
integrale = 0.
do i =0 , pas -1
integrale = integrale + h * f ( borne_i + i * h )
end do
end function integrale
function carre ( x )
implicit none
double precision x
double precision carre
carre = x * x
end function carre
Langage Fortran(Base)
26 mai 2015
177 / 266
Procdures
Procdures internes
Procdures internes
En Fortran une procdure peut en contenir dautres. Ces procdures sont appeles procdures internes. Elles
ne peuvent tre appeles que depuis la procdure les contenant.
Les dfinitions des procdures internes sont faites dans la procdure les incluant aprs linstruction CONTAINS.
Il ny a pas dimbrications possibles : une procdure interne ne peut pas elle-mme en contenir.
Exemple
program proc_interne
implicit none
character ( len =10) :: ch
read " ( a ) " , ch
call conversion ( ch )
print * , ch
end program proc_interne
Langage Fortran(Base)
26 mai 2015
178 / 266
Procdures
Procdures internes
Procdures internes
Exemple
subroutine conversion ( chaine )
implicit none
character ( len =*) :: chaine
integer i
do i =1 ,len( chaine )
if ( ichar ( chaine ( i : i ) ) < 97 . or .
ichar ( chaine ( i : i ) ) > 122 ) cycle
chaine ( i : i ) = car_majuscule ( chaine ( i : i ) )
end do
CONTAINS
function car_majuscule ( c )
character ( len =1) :: c , car_majuscule
integer
:: i
i = ichar ( c ) - ( ichar ( " a " ) - ichar ( " A " ))
car_majuscule = achar ( i )
end function car_majuscule
end subroutine conversion
Langage Fortran(Base)
26 mai 2015
179 / 266
Procdures
Procdures internes
Procdures internes
Dans une procdure interne, toute variable dclare dans lunit de programme qui la contient est accessible,
moins quelle nait fait lobjet dune redclaration.
Exemple
program visibilite
implicit none
integer i , j
i = 10; j = 20
call sub
print " ( i = , i3 , , j = , i3 ) " , i , j
contains
subroutine sub
integer j
! masque le " j " de l appelant
j = 100; i = i + 1
end subroutine sub
end program visibilite
Sortie
i^=^11,^j^=^20
Langage Fortran(Base)
26 mai 2015
180 / 266
Procdures
On appelle dure de vie dun identificateur le temps pendant lequel il existe en mmoire. Il est visible sil existe
en mmoire et est accessible, car il peut exister mais tre masqu par un autre de mme nom (c.f. procdure
interne).
Par dfaut, une variable a une dure de vie limite celle de lunit de programme dans laquelle elle a t
dfinie ;
lattribut SAVE permet de prolonger la dure de vie celle de lexcutable : on parle alors de variable
permanente ou statique ;
dans une unit de programme linstruction SAVE sans spcification de liste de variables indique que toutes
(norme 2008) ;
une compilation effectue en mode static force la prsence de linstruction SAVE dans toutes les units de
Langage Fortran(Base)
26 mai 2015
181 / 266
Procdures
Exemple
program newton
double precision :: valeur = 50. d0
double precision :: tolerance
double precision :: racine , x
tolerance = 1.0 d -1
x = racine ( valeur , tolerance )
print " ( Racine de , f5 .1 , = , d16 .8) " , valeur , x
tolerance = 1.0 d -6
x = racine ( valeur , tolerance )
print " ( Racine de , f5 .1 , = , d16 .8) " , valeur , x
end program newton
function racine ( valeur , tol )
double precision :: valeur , tol
double precision :: racine
double precision :: x = 1.0 d0 , x_prev
integer
:: nb_iterations
nb_iterations = 0
do
nb_iterations = nb_iterations + 1
x_prev = x
x = 0.5 * ( x_prev + valeur / x_prev )
if ( abs (x - x_prev )/ x < tol ) exit
end do
print * , " Nombre d itrations = " , nb_iterations
racine = x
end function racine
Langage Fortran(Base)
26 mai 2015
182 / 266
Procdures
Procdures intrinsques
Procdures intrinsques
Le compilateur Fortran dispose dune bibliothque de procdures couvrant diffrents domaines : mathmatique,
conversion de type, manipulation de chanes de caractres, comparaison de chanes de caractres, . . .
Pour une procdure donne, le nom dappel diffre suivant le type des arguments transmis. Un nom gnrique
permet de saffranchir de ces types : cest la solution fortement conseille car elle facilite la portabilit.
Par exemple un appel la procdure gnrique ABS, retournant la valeur absolue de son argument, est transform
par le compilateur en un appel la procdure :
IABS pour un argument entier,
ABS pour un argument rel simple prcision,
DABS pour un argument rel double prcision,
CABS pour un argument complexe.
Langage Fortran(Base)
26 mai 2015
183 / 266
Common
Introduction
Gnralits
Dclarations
Oprateurs et expressions
Structures de contrle
Tableaux
Entres-Sorties
Procdures
Common
Linstruction COMMON
Common blanc
Common tiquet
Initialisation : BLOCK DATA
Instruction SAVE et COMMON
Rgles et restrictions
Langage Fortran(Base)
26 mai 2015
184 / 266
Common
10
Include
Langage Fortran(Base)
26 mai 2015
185 / 266
Common
Linstruction COMMON
Linstruction COMMON
Linstruction COMMON permet le regroupement de zones mmoires pouvant tre partages par diffrentes units de
programme (fonctions, procdures).
La syntaxe dune instruction COMMON est la suivante :
COMMON [/[nom_common]/] liste_variables
Le COMMON est dit tiquet si nom_common est prcis. Sil na pas de nom on lappelle COMMON blanc.
Les diffrentes zones regroupes au sein du bloc COMMON sont adresses via des variables dont les noms sont
indiqus dans la partie liste_variables de linstruction COMMON. Pour quune unit de programme ait accs
ces zones, il est ncessaire quelle contienne linstruction COMMON les rfrenant.
Langage Fortran(Base)
26 mai 2015
186 / 266
Common
Common blanc
Common blanc
Lors de la dclaration dun COMMON blanc nom_common est omis et les deux slashes "/" sont alors optionnels.
Ses particularits sont :
un COMMON blanc est permanent (il hrite de lattribut SAVE),
les variables apparaissant dans un COMMON blanc ne peuvent pas tre initialises lors de leur dclaration. Ce
un COMMON blanc peut ne pas avoir la mme taille dune unit de programme une autre, cest alors la taille
Langage Fortran(Base)
26 mai 2015
187 / 266
Common
Common blanc
Common blanc
Exemple
PROGRAM common_blanc
INTEGER
:: i
INTEGER , DIMENSION (6) :: itab
LOGICAL , DIMENSION (3) :: ltab
COMMON
itab , ltab
DO i =1 ,6
itab ( i ) = i
END DO
ltab (1) = . true .
ltab (2) = . false .
ltab (3) = . true .
CALL sub
END PROGRAM common_blanc
! *************************************
SUBROUTINE sub
INTEGER , DIMENSION (6) :: itab
LOGICAL , DIMENSION (3) :: ltab
COMMON
itab , ltab
PRINT * , " Tableau entier = " , itab
PRINT * , " Tableau logique = " , ltab
END SUBROUTINE sub
Langage Fortran(Base)
26 mai 2015
188 / 266
Common
Common tiquet
Common tiquet
Un COMMON est dit tiquet lorsque nom_common est prcis entre caractres /.
Ses particularits sont :
il peut tre initialis par lintermdiaire dune unit de programme de type BLOCK DATA,
un bloc COMMON dfini dans le programme principal reoit implicitement lattribut SAVE. Sil ne lest pas,
Langage Fortran(Base)
26 mai 2015
189 / 266
Common
Common tiquet
BLOCK DATA est une unit de programme qui permet dinitialiser des objets dclars dans des COMMONs tiquets :
BLOCK DATA [nom_block_data]
bloc_init
END BLOCK DATA [nom_block_data]
nom_block_data est le nom du BLOCK DATA
bloc_init est une suite :
de dclarations de type (INTEGER, REAL, ...),
de dclarations de zones communes (COMMON),
dinitialisations statiques (DATA).
Langage Fortran(Base)
26 mai 2015
190 / 266
Common
Common tiquet
Exemple
BLOCK DATA INIT
REAL
:: A , B , C , D
REAL , DIMENSION (10 ,15) :: MATRICE
INTEGER , DIMENSION (20) :: VECTEUR
COMMON / BLOC1 / MATRICE , A , B
COMMON / BLOC2 / VECTEUR , C , D
DATA A / -1./ , B /3.14/ , C /0./ , D /7.1/
DATA MATRICE /150 * 50.0/ , VECTEUR /20 * 4/
END BLOCK DATA INIT
Langage Fortran(Base)
26 mai 2015
191 / 266
Common
Common tiquet
Les valeurs des variables dun COMMON tiquet deviennent indfinies quand une procdure se termine (retour
lunit appelante) sauf sil existe une autre unit de programme active le rfrenant.
Le cas chant, on lui appliquera linstruction SAVE pour conserver son contenu :
SAVE /nom_common/
Un COMMON qui reoit lattribut SAVE dans une fonction ou procdure devra toujours tre dclar avec ce
Langage Fortran(Base)
26 mai 2015
192 / 266
Common
Common tiquet
Exemple
PROGRAM common_save
call first
call second
END PROGRAM common_save
! *************************************
SUBROUTINE first
REAL , DIMENSION (6)
:: rtab
LOGICAL
:: drapeau
COMMON / BLOC / rtab , drapeau
SAVE / BLOC /
CALL random_number ( rtab )
PRINT * , " Afficher le tableau ( true / false ) "
READ (* ,*) drapeau
END SUBROUTINE first
! *************************************
SUBROUTINE second
REAL , DIMENSION (6)
:: rtab
LOGICAL
:: drapeau
COMMON / BLOC /
rtab , drapeau
SAVE
/ BLOC /
IF ( drapeau ) PRINT * , " Tableau de rels
END SUBROUTINE second
= " , rtab
Langage Fortran(Base)
26 mai 2015
193 / 266
Common
Rgles et restrictions
Rgles et restrictions
fois : les diffrentes listes de variables sont alors ajoutes les unes aux autres.
Langage Fortran(Base)
26 mai 2015
194 / 266
Common
Rgles et restrictions
Rgles et restrictions
un bloc COMMON peut tre dcoup diffremment dune unit de programme une autre, cest--dire
rfrenc laide de variables de types diffrents condition que ce dcoupage soit cohrent (les zones
numriques doivent correspondre des zones numriques et de mme pour les zones caractres),
une instruction EQUIVALENCE ne peut pas :
associer des variables dclares dans des blocs COMMON diffrents,
avoir pour effet de prolonger le COMMON sa gauche. Dans lexemple suivant, on ne peut pas associer la variable
! INVALIDE
! VALIDE
Langage Fortran(Base)
26 mai 2015
195 / 266
Common
Rgles et restrictions
Rgles et restrictions
Exemple
program common_mixte
complex , dimension (10) :: c
character ( len =100)
:: chaine
COMMON / MIXTE /c , chaine
. . .
call sub
end program common_mixte
subroutine sub
real , dimension (20)
:: tab_reels
character ( len =1) , dimension (100) :: tab_car
COMMON / MIXTE / tab_reels , tab_car
. . .
! impression des parties relles
print * , tab_reels (1:20:2)
print * , tab_car (1) , tab_car (10)
end subroutine sub
Recommandations :
1
il est prfrable de dclarer un bloc COMMON de la mme faon dans les diffrentes units de programme et
donc demployer la technique de lexemple prcdent avec modration,
Langage Fortran(Base)
26 mai 2015
196 / 266
Include
Introduction
Gnralits
Dclarations
Oprateurs et expressions
Structures de contrle
Tableaux
Entres-Sorties
Procdures
Common
10
Include
La directive INCLUDE
Langage Fortran(Base)
26 mai 2015
197 / 266
Include
La directive INCLUDE
La directive INCLUDE
Langage Fortran(Base)
26 mai 2015
198 / 266
Include
La directive INCLUDE
La directive INCLUDE
Exemple
SUBROUTINE sub
IMPLICIT NONE
INCLUDE " inclusion . inc "
PRINT * , " Tableau rels
= " , rtab
PRINT * , " Tableau logique = " , ltab
END SUBROUTINE sub
Remarques :
Linclusion du contenu du fichier se fait l o est place la directive INCLUDE,
Il est possible dimbriquer plusieurs directives INCLUDE. Le nombre dimbrications possible dpend du compilateur.
La localisation du fichier inclure peut tre prcise laide de loption -I du systme
de compilation.
Langage Fortran(Base)
26 mai 2015
199 / 266
11
12
13
14
15
Annexe E : exercices
Langage Fortran(Base)
26 mai 2015
200 / 266
Instruction OPEN
OPEN ( [ UNIT =] u ,
IOSTAT = ios ,
FILE = filename ,
STATUS = st ,
ACCESS = acc ,
FORM = mode ,
RECL = reclen
POSITION = pos ,
ACTION = act ,
BLANK = blk ,
DELIM = del ,
PAD = padding )
&
&
&
&
&
&
&
&
&
&
&
!
!
!
!
!
!
!
!
!
!
!
!
entier
entier
chane
chane
chane
chane
entier
chane
chane
chane
chane
chane
de
de
de
de
caractres
caractres
caractres
caractres
de
de
de
de
de
caractres
caractres
caractres
caractres
caractres
Langage Fortran(Base)
26 mai 2015
201 / 266
Instruction OPEN
Langage Fortran(Base)
26 mai 2015
202 / 266
Instruction OPEN
squentiel. Lunit de longueur est le caractre pour les fichiers textes et dpend du processeur pour les
fichiers binaires,
POSITION : positionnement dans le fichier aprs ouverture,
ASIS : positionnement inchang si le fichier est dj connect, indfini sinon,
REWIND : positionnement en tte de fichier,
APPEND : positionnement en fin de fichier pour extension,
Langage Fortran(Base)
26 mai 2015
203 / 266
Instruction OPEN
BLANK : indique la faon dont les blancs sont interprts lors dune opration dentre-sortie,
NULL : ils sont ignors,
ZERO : ils sont interprts comme des zros,
DELIM : indique le caractre dlimiteur utilis pour les constantes chanes de caractres crites en format
Langage Fortran(Base)
26 mai 2015
204 / 266
Instruction READ
READ ( [ UNIT =] u ,
[ FMT =] label | ch ,
[ NML =] nom ,
ADVANCE = ad ,
END = label ,
EOR = label ,
ERR = label ,
IOSTAT = st ,
REC =n ,
SIZE = n )
&
&
&
&
&
&
&
&
&
!
!
!
!
!
!
!
!
!
!
entier
label ou bien chane de caractres
chane de caractres
chane de caractres
label
label
label
entier
entier
entier
Langage Fortran(Base)
26 mai 2015
205 / 266
Instruction READ
valeur positive indique une erreur. Une valeur ngative signale une fin de fichier dans le cas dun accs
squentiel et labsence denregistrement du rang spcifi si laccs est direct,
REC : numro de lenregistrement traiter pour un fichier accs direct,
SIZE : entier rcuprant le nombre de caractres traits si la fin denregistrement a t atteinte.
Langage Fortran(Base)
26 mai 2015
206 / 266
Instruction WRITE
WRITE ( [ UNIT =] u ,
[ FMT =] label | ch ,
[ NML =] nom ,
ADVANCE = ad ,
ERR = label ,
IOSTAT = st ,
REC = n )
&
&
&
&
&
&
!
!
!
!
!
!
!
entier
label ou bien chane de caractres
chane de caractres
chane de caractres
label
entier
entier
Langage Fortran(Base)
26 mai 2015
207 / 266
Instruction WRITE
Langage Fortran(Base)
26 mai 2015
208 / 266
Instruction INQUIRE
INQUIRE ( [ UNIT =] u ,
ACCESS = acc ,
ACTION = act ,
BLANK = bl ,
DELIM = del ,
DIRECT = dir ,
ERR = label ,
EXIST = ex ,
FILE = file ,
FORM = form ,
FORMATTED = form ,
IOSTAT = ios ,
NAME = name ,
NAMED = named ,
NEXTREC = next ,
NUMBER = num ,
OPENED = op ,
PAD = pad ,
POSITION = pos ,
READ =r ,
READWRITE = rw ,
RECL =n ,
SEQUENTIAL = seq ,
UNFORMATTED = un ,
WRITE = wr )
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
entier
chane de
chane de
chane de
chane de
chane de
label
logique
chane de
chane de
chane de
entier
chane de
logique
entier
entier
logique
chane de
entier
chane de
chane de
entier
chane de
chane de
chane de
caractres
caractres
caractres
caractres
caractres
caractres
caractres
caractres
caractres
caractres
caractres
caractres
caractres
caractres
caractres
Langage Fortran(Base)
26 mai 2015
209 / 266
Instruction INQUIRE
BLANK :
NULL si les blancs sont ignors,
ZERO si les blancs sont interprts comme des 0,
UNDEFINED si le fichier nest pas connect en mode format ou bien nest pas connect du tout,
Langage Fortran(Base)
26 mai 2015
210 / 266
Instruction INQUIRE
DELIM : dlimiteur pour les chanes de caractres en sortie en format libre ou via namelist
APOSTROPHE dlimiteur ",
QUOTE dlimiteur ,
UNDEFINED si le fichier nest pas connect en mode format ou bien nest pas connect du tout,
Langage Fortran(Base)
26 mai 2015
211 / 266
Instruction INQUIRE
FORMATTED :
YES si le traitement du fichier en mode format est valide
NO si le traitement du fichier en mode format nest pas valide,
UNKNOWN lorsque le compilateur ne sait pas si le traitement du fichier en mode format est permis ou non,
Langage Fortran(Base)
26 mai 2015
212 / 266
Instruction INQUIRE
NAMED :
.true. si le fichier a un nom,
.false. si le fichier est anonyme,
NEXTREC :
renvoie le numro du prochain enregistrement traiter si le fichier est ouvert en accs direct (1 si aucun
enregistrement na dj t trait,
renvoie une valeur indfinie si le fichier na pas t ouvert en accs direct,
NUMBER : renvoie le numro de lunit logique sur laquelle le fichier est connect (-1 sil ne lest pas),
OPENED :
.true. si le fichier est ouvert,
.false. si le fichier nest pas ouvert,
PAD :
NO le fichier a t ouvert avec le paramtre PAD="NO",
YES le fichier a t ouvert avec le paramtre PAD="YES" ou bien le fichier nest pas connect,
Langage Fortran(Base)
26 mai 2015
213 / 266
Instruction INQUIRE
POSITION :
READ :
YES un accs en lecture est permis,
NO un accs en lecture nest pas permis,
UNKNOWN le compilateur ne sait pas si un accs en lecture est permis ou non,
READWRITE :
YES un accs en lecture/criture est permis,
NO un accs en lecture/criture nest pas permis,
UNKNOWN le compilateur ne sait pas si un accs en lecture/criture est permis ou non,
RECL : renvoie la taille de lenregistrement logique maximum ou une valeur indfinie si le fichier nexiste pas,
Langage Fortran(Base)
26 mai 2015
214 / 266
Instruction INQUIRE
SEQUENTIAL :
YES laccs squentiel est un mode daccs permis,
NO laccs squentiel nest pas un mode daccs permis,
UNKNOWN le compilateur ne sait pas si laccs squentiel est permis ou non,
UNFORMATTED :
YES si le traitement du fichier en mode binaire est valide
NO si le traitement du fichier en mode binaire nest pas valide,
UNKNOWN lorsque le compilateur ne sait pas si le traitement du fichier en mode binaire est permis ou non,
WRITE :
YES un accs en criture est permis,
NO un accs en criture nest pas permis,
UNKNOWN le compilateur ne sait pas si un accs en criture est permis ou non.
Langage Fortran(Base)
26 mai 2015
215 / 266
Instruction CLOSE
CLOSE ( [ UNIT =] u ,
IOSTAT = ios ,
STATUS = st )
&
&
sinon,
STATUS : tat du fichier aprs fermeture,
DELETE : le fichier est dtruit aprs fermeture. Cest la valeur par dfaut si louverture a t faite avec le
paramtre STATUS="scratch",
KEEP : le fichier est conserv aprs fermeture. Cest la valeur par dfaut si louverture a t faite avec le
paramtre STATUS diffrent de "scratch".
Langage Fortran(Base)
26 mai 2015
216 / 266
Exemple
integer ios
...
OPEN ( UNIT =1 ,
&
FILE = " donnees " ,
&
FORM = " unformatted " , &
ACTION = " read " ,
&
POSITION = " rewind " , &
IOSTAT = ios )
if ( ios /= 0 ) ! Problme l ouverture
...
CLOSE ( UNIT =1 )
OPEN ( UNIT =2 ,
&
FORM = " formatted " , &
ACCESS = " direct " ,
&
STATUS = " scratch " , &
ACTION = " write " ,
&
LRECL =9600 ,
&
IOSTAT = ios )
if ( ios /= 0 ) ! Problme l ouverture
...
CLOSE ( UNIT =2 )
Langage Fortran(Base)
26 mai 2015
217 / 266
11
12
13
14
15
Annexe E : exercices
Langage Fortran(Base)
26 mai 2015
218 / 266
ABS : retourne la valeur absolue de son argument. Pour un complexe, retourne sa norme :
x 2 + y 2.
ACHAR : retourne le caractre de la table ASCII dont le rang est transmis en argument.
ACHAR(88) = X; ACHAR(42) = *
ADJUSTL : cadre gauche la chane passe en argument : supprime les blancs en tte ; complte droite par
des blancs.
ADJUSTL(^^Fortran) = Fortran^^
ADJUSTR : cadre droite la chane passe en argument : supprime les blancs en fin ; complte gauche par
des blancs.
ADJUSTR(Fortran^^) = ^^Fortran
Langage Fortran(Base)
26 mai 2015
219 / 266
ANINT : retourne, sous forme dun rel, lentier le plus proche du rel transmis.
ANINT(2.783) = 3.0; ANINT(-2.783) = -3.0
BIT_SIZE : retourne le nombre de bits utiliss pour la reprsentation de lentier pass en argument.
BIT_SIZE(1) = 32
Langage Fortran(Base)
26 mai 2015
220 / 266
BTEST : permet de tester la valeur dun bit dun entier : lentier ainsi que la position du bit tester sont
passs en argument.
BTEST(8,3) = .true.; BTEST(10,2) = .false.
CMPLX : retourne un complexe dont les parties relle et imaginaire sont transmises en argument.
CMPLX(-3.) = -3.0+0.i; CMPLX(2,4.) = 2.0+4.0i
Langage Fortran(Base)
26 mai 2015
221 / 266
IAND : retourne lentier dont la reprsentation binaire est obtenue en combinant laide dun "et logique"
IBCLR : permet de forcer zro un bit dun entier : lentier ainsi que la position du bit forcer sont passs
en argument.
IBCLR(14,1) = 12
IBCLR((/ 1,2,3,4 /), 31) = (/ 29,27,23,15 /)
Langage Fortran(Base)
26 mai 2015
222 / 266
IBITS : permet lextraction dune squence de bits dun entier. Lentier suivi de la position ainsi que la
IBSET : permet de forcer 1 un bit dun entier : lentier ainsi que la position du bit forcer sont passs en
argument.
IBSET(12,1) = 14
IBSET((/ 1,2,3,4 /), 0) = (/ 1,3,3,5 /)
IEOR : retourne lentier dont la reprsentation binaire est obtenue en combinant laide dun "ou exclusif"
INDEX : retourne la position dune sous-chane dans une chane. La chane suivie de la sous-chane et du
Langage Fortran(Base)
26 mai 2015
223 / 266
IOR : retourne lentier dont la reprsentation binaire est obtenue en combinant laide dun "ou logique" les
ISHFT : permet deffectuer un dcalage des bits de lentier pass en premier argument. Le deuxime
argument indique le nombre de bits dcaler : son signe indique le sens du dcalage (positif = gauche,
ngatif = droite). Les bits sortants sont perdus, les positions vacantes sont mises zro.
ISHFT(3,1) = 6; ISHFT(3,-1) = 1
ISHFTC : idem ISHFT la diffrence que le dcalage est circulaire et seffectue sur les n bits de droite de
lentier , n tant fourni en troisime argument (sil est absent il est considr gal au nombre de bits de
lentier).
ISHFT(3,2,3) = 5; ISHFT(3,-2) = -1073741824
Langage Fortran(Base)
26 mai 2015
224 / 266
LEN_TRIM : retourne la longueur de la chane de caractres transmise en argument sans considrer les blancs
de fin.
LEN_TRIM(^^FORTRAN^^^) = 9; LEN_TRIM(^^^) = 0
LGE : compare les deux chanes de caractres transmises en argument : retourne .true. si la premire
LGT : compare les deux chanes de caractres transmises en argument : retourne .true. si la premire
LLE : compare les deux chanes de caractres transmises en argument : retourne .true. si la premire
LLT : compare les deux chanes de caractres transmises en argument : retourne .true. si la premire
Langage Fortran(Base)
26 mai 2015
225 / 266
MOD : retourne le reste de la division effectue laide des deux arguments fournis.
MOD(3.0,2.0) = 1.0; MOD(-8,5) = -3
NOT : retourne lentier dont la reprsentation binaire est obtenue en inversant les bits de lentier transmis en
argument.
NOT(10) = -11
SCAN : retourne la position du premier caractre dune chane figurant parmi un ensemble de caractres
Langage Fortran(Base)
26 mai 2015
226 / 266
SIGN : retourne le nombre dont la valeur absolue est celle du premier argument et le signe celui du deuxime.
SIGN(-3.0,2.0) = 3.0
VERIFY : retourne la position du premier caractre dune chane ne figurant pas parmi un ensemble de
caractres donn. La recherche peut tre faite dans les deux sens.
VERIFY(RENOIR,OI) = 1
VERIFY(RENOIR,OI,BACK=.true.) = 6
Langage Fortran(Base)
26 mai 2015
227 / 266
11
12
13
14
15
Annexe E : exercices
Langage Fortran(Base)
26 mai 2015
228 / 266
Aspects obsoltes
Langage Fortran(Base)
26 mai 2015
229 / 266
Aspects obsoltes
==>
CHARACTER(7),DIMENSION(4)::C
I = 2; C(2) = (F9.2)
PRINT C(I),TRUC
Langage Fortran(Base)
26 mai 2015
230 / 266
Aspects obsoltes
RETURN multiples :
CALL SP1(X,Y,*10,*20)
...
10
...
...
20
...
...
SUBROUTINE SP1(X1,Y1,*,*)
...
RETURN 1
...
RETURN 2
...
Langage Fortran(Base)
26 mai 2015
231 / 266
Langage Fortran(Base)
26 mai 2015
232 / 266
11
12
13
14
15
Annexe E : exercices
Langage Fortran(Base)
26 mai 2015
233 / 266
Systme de compilation
Langage Fortran(Base)
26 mai 2015
234 / 266
Systme de compilation
Le compilateur suppose que le source est crit avec le format fixe si le fichier est suffix par .f et avec le format libre si le
fichier est suffix par .f90 . Ce format dcriture peut tre explicit au moyen dune option indpendamment du suffixe
employ.
Les fichiers correspondant aux modules objets sont suffixs par .o .
Par dfaut le module excutable est stock dans un fichier de nom a.out quil est possible de renommer laide de
loption -o nom_excutable_dsir .
Loption -c permet de conserver le ou les modules objets produits par le compilateur et dinhiber ltape du loader.
Cest la technique employe par lutilitaire make qui, automatiquement, lance les compilations des diffrents fichiers source
constituant lapplication. Les modules objets obtenus sont in fine fournis au systme de compilation pour la production du
module excutable.
Exemple
$ f90 -c source1 . f90
$ f90 -c source2 . f90
...
$ f90 -c sourcen . f90
$ f90 *. o -o a . exe
Langage Fortran(Base)
26 mai 2015
235 / 266
Systme de compilation
Il est possible darchiver les fichiers *.o laide de lutilitaire ar dans le but de les regrouper dans un seul fichier dont le
nom est de la forme libxxx.a .
Cela permet la constitution de bibliothques de modules objets lesquelles sont transmises la composante loader laide
des options -L et -l permettant de spcifier lendroit o celles-ci sont stockes et leur noms.
Exemple
$ f90 -c source1 . f90
$ f90 -c source2 . f90
...
$ f90 -c sourcen . f90
$ ar - rv libexemple . a *. o
$ mv libexemple . a $HOME / lib
$ f90 - L$HOME / lib - lexemple -o a . exe
Langage Fortran(Base)
26 mai 2015
236 / 266
Annexe E : exercices
11
12
13
14
15
Annexe E : exercices
Langage Fortran(Base)
26 mai 2015
237 / 266
Annexe E : exercices
noncs
Exercice 1
u1 x + v1 y = w1
u2 x + v2 y = w2
crire un programme permettant de calculer les racines du trinme du 2nd degr : ax 2 + bx + c. On sassurera que a est non nul. Les
racines, si elles existent, pourront tre imprimes laide de linstruction :
PRINT *, X1 = , X1, , X2 = , X2
Exercice 3
crire un programme calculant le nombre dOr. Celui-ci peut tre obtenu partir de la suite de Fibonnacci un dfinie par :
u0 = 1
u1 = 1
...
un+1 = un + un1
La suite (
un+1
un
Langage Fortran(Base)
26 mai 2015
238 / 266
Annexe E : exercices
noncs
Exercice 4
crire un programme permettant de dterminer les nombres premiers dans lintervalle [1,n] laide du crible dratosthne. Il consiste former une table avec tous
les entiers naturels compris entre 2 et n et rayer (mise zro), les uns aprs les autres, les entiers qui ne sont pas premiers de la manire suivante : ds que lon
trouve un entier qui na pas encore t ray, il est dclar premier, et on raye tous les multiples de celui-ci.
la fin du procd, les nombres non barrs sont des nombres premiers.
On tiendra compte du fait quun nombre donn peut dj avoir t limin
en tant que multiple de nombres prcdents dj tests.
Par ailleurs, on sait
que lon peut rduire la recherche aux nombres de 2 n (si un entier non premier est strictement suprieur n alors il a au moins un
diviseur infrieur n et aura donc dj t ray).
Exercice 5
crire un programme permettant de trier un vecteur de nombres en ordre croissant puis dcroissant. On sappuiera sur lalgorithme appel tri bulle qui consiste
comparer 2 lments conscutifs et les intervertir si ncessaire.
Si aprs avoir termin lexploration du tableau au moins une interversion a t effectue, on renouvelle lexploration, sinon le tri est termin.
Exercice 6
crire un programme permettant deffectuer le produit de 2 matrices A et B. Leurs profils seront dfinis laide de constantes symboliques. La matrice rsultat C
sera imprime lcran ligne par ligne avec linstruction PRINT puis stocke dans un fichier binaire que lon nommera exo6.matrice .
Exercice 7
Le fichier texte squentiel musiciens est constitu de plusieurs enregistrements, chacun contenant un nom de musicien suivi de ses annes de naissance et de
mort.
crire un programme dont le but est de lire le fichier musiciens et de stocker les enregistrements lus dans un fichier texte accs direct que lon nommera
musiciens.txt .
Langage Fortran(Base)
26 mai 2015
239 / 266
Annexe E : exercices
noncs
Exercice 8
Imprimer lenregistrement du fichier musiciens dont le rang est entr au clavier. Son extraction sera effectue partir dun fichier texte temporaire accs
direct, image du prcdent.
On permettra la saisie de plusieurs rangs.
Exercice 9
Les enregistrements des fichiers squentiels
index_naissance.dat et index_deces.dat sont constitus dune date de naissance (ou de dcs) dun musicien suivi de son rang dans le fichier
musiciens.txt cr lexercice 7.
crire un programme permettant dimprimer le ou les musiciens dont la date de naissance ou de mort est saisie au clavier. Le type de date dsire sera
pralablement dtermin.
La slection des enregistrements rpondant aux choix spcifis, seffectuera par lintermdiaire du fichier dindex correspondant au type de date.
On offrira la possibilit deffectuer plusieurs recherches.
Exercice 10
Le but de cet exercice est de transformer la matrice stocke dans le fichier binaire exo6.matrice . Cette transformation consiste modifier chaque lment
laide dune fonction paramtrable de la forme y = f (x ).
On dfinira plusieurs fonctions de ce type. La valeur dun entier lu dans une namelist indiquera la fonction transmettre en argument de la procdure charge
deffectuer la transformation.
Exercice 11
Trier les vecteurs lignes puis les vecteurs colonnes dune matrice en utilisant lalgorithme tri bulle et la matrice stocke dans le fichier binaire exo6.matrice .
On se dfinira une procdure effectuant le tri (croissant ou dcroissant) des diffrents vecteurs au moyen dune procdure interne.
Langage Fortran(Base)
26 mai 2015
240 / 266
Annexe E : exercices
Corrig de lexercice 1
program systeme
implicit none
real u1 , u2
real v1 , v2
real w1 , w2
real delta , delta_x , delta_y
real x , y
! Valorisation des coefficients .
u1 = 2; u2 = 4
v1 = 5; v2 = 11
w1 = 7; w2 = 6
! Calcul du dterminant principal .
delta = u1 * v2 - u2 * v1
if ( delta == 0. ) then
print * , " Le systme n a pas de solution unique . "
stop 4
end if
! Calcul du dterminant en x .
delta_x = w1 * v2 - w2 * v1
! Calcul du dterminant en y .
delta_y = u1 * w2 - u2 * w1
! calcul des solutions .
x = delta_x / delta
y = delta_y / delta
! Impression des solutions .
print * , " x = " , x , " , y = " , y
end program systeme
Langage Fortran(Base)
26 mai 2015
241 / 266
Annexe E : exercices
Corrig de lexercice 2
program trinome
implicit none
real a , b , c
real delta , r_delta , x1 , x2
! Valorisation des coefficients .
a = 3.; b = 7.; c = -11.
! a doit tre non nul .
if ( a == 0. ) stop " a doit tre non nul . "
! calcul du dterminant .
delta = b * b - 4* a * c
! cas du dterminant ngatif .
if ( delta < 0. ) stop " Pas de racine relle . "
! cas du dterminant nul .
if ( delta == 0. ) then
x1 = -b /(2* a ); x2 = x1
else
! cas du dterminant positif .
r_delta = sqrt ( delta )
x1 = ( - b - r_delta )/(2* a ); x2 = ( - b + r_delta )/(2* a )
end if
! Impression des racines .
print * , " x1 = " , x1 , " , x2 = " , x2
end program trinome
Langage Fortran(Base)
26 mai 2015
242 / 266
Annexe E : exercices
program trinome
implicit none
real
a, b, c
real
delta , expr1 , expr2
complex x1 , x2
! Valorisation des coefficients .
a = 1.4; b = 2.7; c = 2.9
! a doit tre non nul .
if ( a == 0. ) stop " a doit tre non nul . "
! calcul du dterminant .
delta = b * b - 4* a * c
expr1 = -b /(2* a )
expr2 = abs ( delta )**0.5 d0 /(2* a )
if ( delta < 0. ) then ! racines complexes
x1 = cmplx ( expr1 , expr2 )
x2 = cmplx ( expr1 , - expr2 )
print * , " Les racines sont complexes = > x1 = " , x1 , " x2 = " , x2
else
! racines relles
x1 = expr1 + expr2
x2 = expr1 - expr2
print * , " Les racines sont relles = > x1 = " , real ( x1 ) , " x2 = " , real ( x2 )
end if
end program trinome
Langage Fortran(Base)
26 mai 2015
243 / 266
Annexe E : exercices
racines complexes
= expr2 ! norme 2008
= - expr2 ! norme 2008
sont complexes = > x1 = " , x1 , " x2 = " , x2
racines relles
Langage Fortran(Base)
26 mai 2015
244 / 266
Annexe E : exercices
Corrig de lexercice 3
program nombre_dor
implicit none
real , parameter ::
real
::
real
::
real
::
real
::
epsilon = 1. e -5
u_prec , u_cour
v_prec , v_cour
somme
nombre_or
Langage Fortran(Base)
26 mai 2015
245 / 266
Annexe E : exercices
program nombre_dor
implicit none
double precision , parameter :: epsilon = 1. d -11
double precision
:: u_prec , u_cour
double precision
:: v_cour
double precision
:: somme
double precision
:: nombre_or
! Attention : une partie de l expression suivante est
! --------value en simple prcision . Ce qui fait
!
diverger le calcul itratif qui suit !
! nombre_or = (1. d0 + 5.**0.5)/2. d0
nombre_or = (1. d0 + 5. d0 **0.5 d0 )/2. d0
u_prec = 1. d0 ; u_cour = 1. d0
do
somme = u_cour + u_prec
u_prec = u_cour
u_cour = somme
v_cour = u_cour / u_prec
if ( abs ( ( v_cour - nombre_or ) < epsilon ) exit
end do
print * , " Limite de la suite ( vn ) : " , v_cour , &
" Nombre d or : " , nombre_or
end program nombre_dor
Langage Fortran(Base)
26 mai 2015
246 / 266
Annexe E : exercices
Corrig de lexercice 4
program eratosthene
implicit none
integer , parameter
:: n = 1000
integer , dimension ( n ) :: tab_nombres
integer
:: imax , i
tab_nombres (:) = (/ (i , i =1 , n ) /)
imax = int ( sqrt ( real ( n )))
do i =2 , imax
if ( tab_nombres ( i ) /= 0 ) tab_nombres (2* i : n : i ) = 0
end do
print * , " Les nombres premiers entre 1 et " , n , " sont : "
do i =2 , n
if ( tab_nombres ( i ) /= 0 ) print * , tab_nombres ( i )
end do
end program eratosthene
Langage Fortran(Base)
26 mai 2015
247 / 266
Annexe E : exercices
program eratosthene
implicit none
integer , parameter
:: n = 1000
logical , dimension ( n ) :: tab_nombres
integer
:: imax , i
tab_nombres (:) = . true .
imax = n **0.5
do i =2 , imax
if ( tab_nombres ( i ) ) tab_nombres (2* i : n : i ) = . false .
end do
print * , " Les nombres premiers entre 1 et " , n , " sont : "
do i =2 , n
if ( tab_nombres ( i ) ) print * , i
end do
end program eratosthene
Langage Fortran(Base)
26 mai 2015
248 / 266
Annexe E : exercices
Corrig de lexercice 5
program triabulle
implicit none
integer , parameter :: croissant =1 , decroissant =2 , n =10
real , dimension ( n ) :: tab
real
:: temp
logical
:: tri_termine , expr1 , expr2
integer
:: sens , i
! Valorisation du vecteur
data tab /0.76 , 0.38 , 0.42 , 0.91 , 0.25 , &
0.13 , 0.52 , 0.69 , 0.76 , 0.98/
do sens = croissant , decroissant
! Sens du tri
do
! Tri
tri_termine = . true .
do i =2 , n
expr1 = sens == croissant
. and . tab (i -1) > tab ( i )
expr2 = sens == decroissant . and . tab (i -1) < tab ( i )
if ( expr1 . or . expr2 ) then
tri_termine = . false .
temp = tab (i -1); tab (i -1) = tab ( i ); tab ( i ) = temp
end if
end do
if ( tri_termine ) exit
end do
! Impression du vecteur tri
if ( sens == croissant )
print * , " Tri croissant "
if ( sens == decroissant ) print * , " Tri dcroissant "
print * , tab
end do
end program triabulle
Langage Fortran(Base)
26 mai 2015
249 / 266
Annexe E : exercices
program triabulle
implicit none
integer , parameter :: croissant =1 , decroissant =2 , n =10
real , dimension ( n ) :: tab
real
:: temp
logical
:: expr1 , expr2
integer
:: sens , i , j
! Valorisation du vecteur .
data tab /0.76 , 0.38 , 0.42 , 0.91 , 0.25 , &
0.13 , 0.52 , 0.69 , 0.76 , 0.98/
do sens = croissant , decroissant
! sens du tri
do i =n -1 ,1 , -1
! tri
do j =1 , i
expr1 = sens == croissant
. and . tab ( j +1) > tab ( j )
expr2 = sens == decroissant . and . tab ( j +1) < tab ( j )
if ( expr1 . or . expr2 ) then
temp
= tab ( j +1)
tab ( j +1) = tab ( j )
tab ( j )
= temp
end if
end do
end do
! Impression du vecteur tri .
if ( sens == croissant )
print * , " Tri croissant "
if ( sens == decroissant ) print * , " Tri dcroissant "
print (*( f5 .2)) , tab
! format fortran 2008
end do
end program triabulle
Langage Fortran(Base)
26 mai 2015
250 / 266
Annexe E : exercices
Corrig de lexercice 6
program p r od u it _matrice
implicit none
integer , parameter
::
real , dimension (n , m ) ::
real , dimension (m , p ) ::
real , dimension (n , p ) ::
integer
::
data
n = 10 , m = 5 , p = 3
a
b
c
i ,j , k
data (( b (i , j ) , j =1 , p ) , i =1 , m )/
0.76 , 0.16 , 0.9047 ,
0.47 , 0.48 , 0.5045 ,
0.23 , 0.89 , 0.5163 ,
0.27 , 0.90 , 0.3190 ,
0.35 , 0.06 , 0.9866/
A et B
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
Langage Fortran(Base)
26 mai 2015
251 / 266
Annexe E : exercices
! Produit de matrice .
do i =1 , n
do j =1 , p
c (i , j ) = 0.
do k =1 , m
c (i , j ) = c (i , j ) + a (i , k ) * b (k , j )
end do
end do
end do
! Impression de la matrice c .
do i =1 , n
print * , c (i ,:)
end do
! criture de la matrice c dans un fichier .
open ( unit =1 ,
file = " exo6 . matrice " , &
status = " replace " , form = " unformatted " , &
action = " write " )
write ( unit =1 ) c
close ( unit =1 )
end program p ro duit_matrice
Langage Fortran(Base)
26 mai 2015
252 / 266
Annexe E : exercices
Corrig de lexercice 7
program e c r i t u r e _ mu s i ci e ns
integer , parameter
character ( len = taille_max )
integer
integer
::
::
::
::
taille_max =80
mus
ios_mus
numrec
Langage Fortran(Base)
26 mai 2015
253 / 266
Annexe E : exercices
Corrig de lexercice 8
program musiciens
implicit none
integer , parameter
character ( len = lrecl )
integer
integer
::
::
::
::
lrecl =80
mus
ios_mus , ios_stdin
numrec , rang
!
!
!
!
&
&
&
&
Langage Fortran(Base)
26 mai 2015
254 / 266
Annexe E : exercices
Langage Fortran(Base)
26 mai 2015
255 / 266
Annexe E : exercices
Corrig de lexercice 9
Langage Fortran(Base)
26 mai 2015
256 / 266
Annexe E : exercices
subroutine r e c he r ch e _ mu s ic i e n
implicit none
integer , parameter :: EOF = -1
character ( len =50) :: prompt_date , message
character ( len =4)
:: date_saisie , date_lue
integer
:: unite_index
do
! Type de date : naissance ou dcs
if ( choix_date () == EOF ) exit
! Lecture d une date .
if ( lecture_date () == EOF ) exit
! Recherche du ou des musiciens
if ( . not . musicien_trouve () ) &
print * , " Aucun musicien ne rpond la demande "
print *
end do
contains
Langage Fortran(Base)
26 mai 2015
257 / 266
Annexe E : exercices
Langage Fortran(Base)
26 mai 2015
258 / 266
Annexe E : exercices
Langage Fortran(Base)
26 mai 2015
259 / 266
Annexe E : exercices
function lecture_date ()
integer lecture_date
integer ios_stdin
do
print " (/ , a ) " , trim ( prompt_date )
read (* , * , IOSTAT = ios_stdin ) date_saisie
if ( ios_stdin < 0 ) then
lecture_date = EOF
return
else if ( ios_stdin > 0 ) then
print " (/ ,a ,/) " , " Date errone ! "
else
message = trim ( message )// " " // date_saisie
exit
end if
end do
lecture_date = 0
end function lecture_date
Langage Fortran(Base)
26 mai 2015
260 / 266
Annexe E : exercices
function m us icien_trouve ()
logical m u sicien_trouve
! Dclarations locales
character ( len =80) :: musicien
character ( len =11) :: fmt = " (/ ,a ,/ , a ) "
integer
:: i , taille_message , numrec
tai lle_ message = len_trim ( message )
write ( fmt(8:9) , " ( i2 ) " ) taille_message
print fmt, message , ( " -" ,i =1 , taille_message )
mus i ci e n_ t rouve = . false .
do
read ( unit = unite_index , fmt =* , END =1 ) date_lue , numrec
if ( date_lue == date_saisie ) then
! On lit l enregistrement correspondant .
m us i ci e n_trouve = . true .
read ( unit =3 , fmt = ( a ) , rec = numrec ) musicien
print " (2 a ) " ," - " , trim ( musicien )
end if
end do
1
return
end function musicien_trouve
end subroutine r ec h er c h e_ m us i c ie n
Langage Fortran(Base)
26 mai 2015
261 / 266
Annexe E : exercices
Corrig de lexercice 10
program mat_transf
implicit none
integer , parameter
:: n = 10 , m = 3
real , dimension (n , m ) :: mat
integer
:: choix_methode , ios , num_ligne
real , external
:: carre , identite , logarithme
real , intrinsic
:: sqrt
namelist / methode / choix_methode
! Ouverture du fichier contenant la matrice .
open ( unit =1 ,
file = " exo6 . matrice " , &
form = " unformatted " , action = " read " ,
&
status = " old " ,
position = " rewind " ,
&
iostat = ios )
if ( ios /= 0) &
stop " Erreur l ouverture du fichier exo6 . matrice "
! Lecture de la matrice .
read (1) mat
close (1)
! Ouverture du fichier contenant
! la namelist " methode ".
open ( unit =1 ,
file = " exo10 . namelist " , &
form = " formatted " , action = " read " ,
&
status = " old " ,
position = " rewind " ,
&
iostat = ios )
if ( ios /= 0) &
stop " Erreur l ouverture du fichier exo10 . namelist "
read ( unit =1 , nml = methode )
close ( unit =1 )
Langage Fortran(Base)
26 mai 2015
262 / 266
Annexe E : exercices
Langage Fortran(Base)
26 mai 2015
263 / 266
Annexe E : exercices
! Procdure de transformation .
subroutine transform ( t , n , m , f )
implicit none
integer
:: n , m , i , j
real , dimension (n , m ) :: t
real
:: f
do i =1 , n
do j =1 , m
t (i , j ) = f ( t (i , j ))
end do
end do
end subroutine transform
! Dfinitions des fonctions de transformation .
function identite ( x )
implicit none
real x , identite
identite = x
end function identite
function carre ( x )
implicit none
real x , carre
carre = x * x
end function carre
function logarithme ( x )
implicit none
real x , logarithme
logarithme = log ( x )
end function logarithme
Langage Fortran(Base)
26 mai 2015
264 / 266
Annexe E : exercices
Corrig de lexercice 11
program tri_matrice
implicit none
integer , parameter
real , dimension (n , m )
integer
character ( len =8)
::
::
::
::
n =10 , m =3
mat
i, j
format = " (
F7 .3) "
Langage Fortran(Base)
26 mai 2015
265 / 266
Annexe E : exercices
! Procdure de tri .
subroutine tri ( mat , n , m )
implicit none
! Dclaration des arguments
integer
:: n , m
real , dimension (n , m ) :: mat
! Dclaration des variables locales
integer
:: i , j
do i =1 , n
! Tri des lignes .
call tri_vecteur ( mat (i ,:) , m )
end do
do j =1 , m
! Tri des colonnes .
call tri_vecteur ( mat (: , j ) , n )
end do
contains ! Procdure de tri d un vecteur .
subroutine tri_vecteur ( v , nb_elts )
integer
:: nb_elts
real , dimension ( nb_elts ) :: v
integer
:: i , j
do i = nb_elts -1 ,1 , -1
do j =1 , i
if ( v ( j ) > v ( j +1) ) then
! Utilisation de sections rgulires pour effectuer l interversion .
v ( j : j +1) = v ( j +1: j : -1)
end if
end do
end do
end subroutine tri_vecteur
end subroutine tri
Langage Fortran(Base)
26 mai 2015
266 / 266
Annexe E : exercices
Symboles
assumed-size array . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 231
assumed-size string . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 228
A
accs
direct . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 195, 196, 198
exemple . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 200
squentiel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153, 154, 156
ANSI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
ar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 293
argument
chane de caractres . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .228
procdure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 233
tableau . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 230, 231
argument procdure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 234
arguments dappel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 223, 225, 226
arguments muets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 223
ASA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
assign . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 287
attribut . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71
DIMENSION . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136
B
BACKSPACE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 209
base
hexadcimale . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
octal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
bases de numration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
bibliographie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
bibliothque . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 293
bloc . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 151
Block data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 247
exemple . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 248
buffer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 151
C
CALL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 225
caractre
reprsentation en mmoire . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
table ASCII . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
Anne Fouilloux Patrick Corde ( [email protected] [email protected] )
Langage Fortran(Base)
26 mai 2015
266 / 266
Annexe E : exercices
CHARACTER* . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 289
CLOSE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152
exemple . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 274
IOSTAT= . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 273
STATUS= . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .273
UNIT= . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .273
code source
jeu de caractres . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
Common . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 243253
tiquet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 246
attribut save . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .249, 250
initialisation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 247, 248
blanc . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 243, 244
exemple . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 245
initialisation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 244
rgles et restrictions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 251253
syntaxe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 243
compilateur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 291
complexe
reprsentation en mmoire . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
constantes
chanes de caractres . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
complexes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78
entires . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .75
littrales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7579
relles double prcision . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77
relles simple prcision . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76
symboliques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83
CONTAINS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 235
D
dclaration
attribut PARAMETER . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83
character . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73
implicit none . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .74
initialisation avec = . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82
instruction equivalence . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84
exemple . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85, 86
syntaxe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72
tableau . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136
DATA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 289
DELIM= . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .193
descripteurs de format . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 157
Anne Fouilloux Patrick Corde ( [email protected] [email protected] )
Langage Fortran(Base)
26 mai 2015
266 / 266
Annexe E : exercices
Dure de vie et visibilit des identificateurs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 238
E
ENDFILE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 209
enregistrement logique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 151
entier
reprsentation en mmoire . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
entre standard . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .215
equivalence . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .84
exercices
noncs
exercice 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 295
exercice 10 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 297
exercice 11 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 297
exercice 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 295
exercice 3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 295
exercice 4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 296
exercice 5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 296
exercice 6 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 296
exercice 7 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 296
exercice 8 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 297
exercice 9 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 297
corrigs
exercice 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 298
exercice 10 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 319
exercice 11 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 322
exercice 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 299301
exercice 3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 302
exercice 3 (autre solution) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 303
exercice 4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 304
exercice 4 (autre solution) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 305
exercice 5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 306
exercice 5 (autre solution) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 307
exercice 6 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 308
exercice 7 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 310
exercice 8 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 311
exercice 9 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 313
EXTERNAL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .233
F
fichier
binaire . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .154, 196
Anne Fouilloux Patrick Corde ( [email protected] [email protected] )
Langage Fortran(Base)
26 mai 2015
266 / 266
Annexe E : exercices
destruction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 204
interne . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 205
temporaire . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 203
texte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 156, 198
FMT= . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 156
fonction
statement function . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 289
format
Litteral string . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 179
BOZ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 214
descripteur A en criture . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 177
descripteur A en lecture . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 165
descripteur EN en criture . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 173
descripteur ES en criture . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 174
descripteur F en criture . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 169
descripteur I en criture . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 168
descripteur I en lecture . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161
descripteur L en criture . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 176
descripteur L en lecture . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 164
descripteurs
en criture . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 167
en lecture . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 160
descripteurs / . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .182
descripteurs de contrle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 180
descripteurs E, D en criture . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 171
descripteurs F en lecture . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162
descripteurs F, E, D en lecture . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162, 163
descripteurs SS,SP,S . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 175
facteur de rptition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 183
gabarit indfini . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 170
instruction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 216
libre . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 187, 188
rexploration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 184
format fixe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 289
format libre . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 289
formats ddition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 157
Fortran
documentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
fortran 2003 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
fortran 2008 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
fortran 66 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
fortran 77 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
fortran 90 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
Anne Fouilloux Patrick Corde ( [email protected] [email protected] )
Langage Fortran(Base)
26 mai 2015
266 / 266
Annexe E : exercices
fortran 95 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
fortran IV . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
fortran V . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
Fortran 95
aspects obsoltes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 287289
FUNCTION . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 226, 227
G
GO TO calcul . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 289
I
identificateur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
identificateurs
dure de vie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 238
visibilit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 238
INCLUDE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 255
initialisation
instruction DATA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .80, 81
INQUIRE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 212
ACCESS= . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 267
ACTION= . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 267
BLANK= . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 267
DELIM= . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 268
DIRECT= . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 268
ERR= . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .268
EXIST= . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .268
FILE= . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 268
FORM= . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 269
FORMATTED= . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 269
IOSTAT= . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 269
NAME= . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 269
NAMED= . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 270
NEXTREC= . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .270
NUMBER= . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 270
OPENED= . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 270
PAD= . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 270
POSITION= . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 271
READ= . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 271
READWRITE= . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 271
RECL= . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 271
SEQUENTIAL= . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 272
syntaxe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 266
Anne Fouilloux Patrick Corde ( [email protected] [email protected] )
Langage Fortran(Base)
26 mai 2015
266 / 266
Annexe E : exercices
UNFORMATTED= . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 272
UNIT= . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .267
WRITE= . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 272
inquire
iolength= . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 202
instruction
GO TO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126
include . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 255
instructions
positionnement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 209
INTRINSIC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 233
IOSTAT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153
L
LEN= . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 228
loader . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 291
logique
reprsentation en mmoire . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58
M
make . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 292
module excutable . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 291
module objet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 291
N
NAMELIST . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 156, 192, 193
NML= . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 156, 193
O
oprateurs
arithmtiques
conversion implicite . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91104
concatnation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108
daffectation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109113
logiques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107
relationnels . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106
table des priorits . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114119
OPEN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152, 154
ACCESS= . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 259
Anne Fouilloux Patrick Corde ( [email protected] [email protected] )
Langage Fortran(Base)
26 mai 2015
266 / 266
Annexe E : exercices
ACTION= . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 260
BLANK= . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 261
DELIM= . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 261
exemple . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 274
FILE= . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 258
FORM= . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 260
IOSTAT= . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 258
PAD= . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 261
POSITION= . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 260
RECL= . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 260
STATUS= . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .259
syntaxe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 258
UNIT= . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .258
P
prprocesseur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 291
PRINT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 215
procdure
fonction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 226
interne . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 235
intrinsque . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 240
subroutine . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 225
procdures intrinsques
ABS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 276
ACHAR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 229, 276
ACOS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 276
ADJUSTL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 276
ADJUSTR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .276
AIMAG . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .277
AINT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 277
ANINT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 277
ASIN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 277
ATAN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 277
BIT_SIZE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 277
BTEST . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 278
CEILING . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 278
CMPLX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 278
CONJG . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 278
COS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 278
COSH . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 278
DBLE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 279
EXP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 279
FLOOR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 279
Anne Fouilloux Patrick Corde ( [email protected] [email protected] )
Langage Fortran(Base)
26 mai 2015
266 / 266
Annexe E : exercices
IACHAR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 229, 279
IAND . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 279
IBCLR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 279
IBITS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 280
IBSET . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 280
IEOR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 280
INDEX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 280
INT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 281
IOR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 281
ISHFT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 281
ISHFTC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 281
LEN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 282
LEN_TRIM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 282
LGE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .282
LGT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 282
LLE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 282
LLT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 282
LOG . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 283
LOG10 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 283
MAX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 283
MIN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 283
MOD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 283
NOT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 283
REAL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 283
REPEAT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 283
SCAN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 283
SIGN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 284
SIN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 284
SINH . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .284
SQRT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 284
TAN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 284
TANH . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .284
TRIM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 284
VERIFY . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 284
R
rel
prcision . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
reprsentation en mmoire . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
READ
ADVANCE= . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 263
END= . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 217, 218, 263
EOR= . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 263
Anne Fouilloux Patrick Corde ( [email protected] [email protected] )
Langage Fortran(Base)
26 mai 2015
266 / 266
Annexe E : exercices
ERR= . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 217, 263
FMT= . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 262
IOSTAT= . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 220, 263
NML= . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 262
REC= . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 263
SIZE= . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 263
syntaxe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 262
UNIT= . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .262
REC= . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .195, 196, 198
reprsentation en mmoire
des caractres . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .59
des complexes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
des entiers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
des logiques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58
des rels . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
return . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 225, 226
REWIND . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 209
S
scratch . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 203
sortie standard . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 215
structures de contrle
DO
syntaxe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127
DO indx . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128
DO WHILE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129
DO/CYCLE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133
DO/EXIT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131
IF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122
SELECT CASE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124
syntaxe
commentaire . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
format fixe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
format libre . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64
T
tableau
tendue . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138
agencement en mmoire . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 140
conformance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138
constructeur de vecteur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142
dclaration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136
Anne Fouilloux Patrick Corde ( [email protected] [email protected] )
Langage Fortran(Base)
26 mai 2015
266 / 266
Annexe E : exercices
expression . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145
initialisation
instruction DATA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 144
symbole = . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141
profil . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138
rang . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138
section rgulire . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 146
tampon . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 151
tests
IF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122
SELECT CASE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124
Types prdfinis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
U
UNIT=* . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 215
unit logique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152
units de programme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
V
variable
type . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
W
WRITE
ADVANCE= . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 265
ERR= . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .265
FMT= . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 264
IOSTAT= . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 265
NML= . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 264
REC= . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 265
syntaxe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 264
UNIT= . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .264
Langage Fortran(Base)
26 mai 2015
266 / 266