Cours Fortran Tome1 PDF
Cours Fortran Tome1 PDF
Cours Fortran Tome1 PDF
TOME 1
PROGRAMMER EN FORTRAN
COURS
Edition 2002
Cours de Fortran
Dr E. BOUDAIA
CHAPITRE I
GENERALITES
Dans ce premier chapitre nous dcrivons les lments syntaxiques de FORTRAN.
1. ALPHABET FORTRAN
Il est compos de caractres alphanumriques et spciaux.
1.1. CARACTERES ALPHANUMERIQUES
Ce sont les 26 lettres de lalphabet latin, majuscules et minuscules ainsi que les 10 chiffres
A B C .......Z a b c .....z 0 1 2 ......9
1.2. CARACTERES SPECIAUX
Ce sont = + - * / : ( ) . $ et lespace blanc.
2. STRUCTURE GENERALE DUN PROGRAMME FORTRAN
Un programme FORTRAN est constitu de :
- Mots : ils sont forms par des lettres, des chiffres et des caractres spciaux. Ces mots
forment leurs tours des constantes, des identificateurs, des tiquettes et des oprateurs. En
appliquant certaines rgles nous formons les lments syntaxique du langage FORTRAN.
- Instructions : une instruction est une suite dlments syntaxiques Il existe 2 types :
excutable et non excutable.
- Programme : est un ensemble dinstructions et de commentaires. Nous dsignons deux types
: les programmes principaux et les sous-programmes qui commencent par lune des
instructions FUNCTION ou SUBROUTINE.
Un programme FORTRAN peut avoir la structure suivante :
instructions de dclaration
instructions excutables et non excutables
END
3. STRUCTURE DUNE LIGNE FORTRAN
Chaque ligne contient 80 caractres et est dcoupe en 4 zones :
- Zone A (colonnes 1 5) : elle contient un nombre entier qui sert reprer une instruction;
cest la zone ETIQUETTE.
- Zone B (colonnes 7 72) : elle contient linstruction FORTRAN proprement dite.
1
Cours de Fortran
Dr E. BOUDAIA
- Zone C (colonnes 73 80) : gnralement elle est utilise pour numrotes les lignes du
*programme, elle est ignore par le compilateur.
- Zone D (colonnes 6) : si elle contient un caractre quelconque autre que le zro, elle spcifie
une ligne suite. En effet, si une instruction ne peut tre crite sur une ligne, nous pouvons la
faire suivre de 9 lignes au maximum.
Remarques :
- les lignes comportant le caractre C en colonne 1 sont dites lignes commentaires et sont
ignores du compilateur.
- la premire ligne dun programme FORTRAN contient un blanc en colonne 6.
4. OPERANDES
Ils sont dfinis par lutilisateur en respectant certaines rgles.
4.1. ETIQUETTES
Cest un nombre sans signe de 1 5 chiffres. Elles peuvent apparatre soit en zone A, soit en
zone B.
4.2. CONSTANTES
Cest une quantit dont la valeur numrique est fixe et ne peut plus tre modifie pendant
lexcution du programme. Les constantes que nous tudierons sont :
4.2.1. CONSTANTES ENTIERES
Elles scrivent avec 1 N chiffres dcimaux (N dpend de lordinateur utilis). Elles sont
prcdes ou non dun signe + ou - . Aucun espace ou point nest autoris entre les chiffres
composant cette constante.
- exemples : + 6
- 231
12689
4.2.2. CONSTANTES REELLES SIMPLE PRECISION
Deux formes sont possibles, avec exposant (ou point flottant) et sans exposant (ou point fixe).
a- Point fixe : Elles scrivent avec 1 N chiffres dcimaux avec un point dcimal
marquant la sparation entre la partie entire et fractionnaire. Cette constante peut tre
prcde ou non dun signe.
- exemples : + 11.6
-23.12
12.
125.
b- Point flattant : Dans ce cas la constante possde une mantisse ayant 1 N chiffres
dcimaux spars ou non par un point dcimal suivie dun exposant ( base 10 ) ayant pour
symbole la lettre E. Le nombre qui suit E est un entier sign (nous pouvons omettre le signe
+).
- exemples : -17.E+2
115.5E-55
.13E8
2
Cours de Fortran
Dr E. BOUDAIA
+.13
-1.665D-5
F(x)
.TRUE.
Rponse :
Constantes entires : 1220
Constantes relles simple prcision en point fixe : -200.,+.13
Constantes relles simple prcision en point flottant : 1.52E+3
Constantes complexes : (5.E-2,0.01)
Constante logique : .TRUE.
Constantes doubles prcision : 12.3D+7, -1.665D-5
Constantes caractre : FALSE., F(x)
4.3. VARIABLES
Le nom de variable est form de 1 6 caractres alphanumriques dont le premier est
obligatoirement alphabtique.
- exemples : ALPHA FMIN RMAX BETTA MATRIC
Chaque variable possde un type qui dfinit la nature des informations que nous voulons y
placer. Nous distinguons les variables relles, entires, complexes, logiques et doubles
prcisions.
3
Cours de Fortran
Dr E. BOUDAIA
Les variables relles et entires peuvent tre dclares implicitement : si une variable
commence par lune des lettres suivantes I, J, K, L, M, N, elle est du type entier, sinon elle est
du type rel.
Pour les autres types de variables, la dclaration explicite est obligatoire.
4.3.1. DECLARATION EXPLICITE
Les variables de type double prcision, logique et complexe sont dclares selon la syntaxe
suivante :
DOUBLE PRECISION
COMPLEX
Var1[ , Var2,............,VarN ]
LOGICAL
Remarques : Nous pouvons utiliser la mme syntaxe pour dclarer une variable de type rel
en entier, et inversement.
Exemples :
INTEGER result, solut
REAL masse, long, nul
Cours de Fortran
Dr E. BOUDAIA
avec :
DOUBLE PRECISION, LOGICAL et COMPLEX : mots-cls.
Tab1.............Tabp : variables indices.
ii , ........, mi : constantes entires positives reprsentant les dimensions des variables indices.
Remarque : Nous pouvons utiliser la mme syntaxe pour dclarer une variable indice de
type rel en entier, et inversement.
La syntaxe de dclaration dune variable indice de type caractre, est identique celle de
dclaration des variables simples, en remplaant
Var1,............, Varp par des variables indices.
LOPERATOIRE DE CONCATENATION :
Il a pour rle la cration dune chane de cratres nouvelle partir des caractres des chanes
dj existantes.
Exemples :
1- INFOR// MATIQUE donnera INFORMATIQUE
2- CHARACTER X*2, Y *4
Si nous donnons X la valeur PR et Y la valeur ENOM, alors X // Y donnera
PRENOM, par contre Y // X donnera ENOMPR.
4.3.3. DIMENSION DUNE VARIABLE INDICEE
La dclaration de la dimension dune variable indice est obligatoire. Elle se fait par la
syntaxe suivante :
DIMENSION VI1, (DIM1) [ , VI2 (DIM2), ........., Vip (DIMp)]
avec :
5
Cours de Fortran
Dr E. BOUDAIA
DIMENSION : mot-cl
VI1, VI2, ...........Vip : noms de variables indices
DIM1, DIM2,....... DIMp : Liste des dimensions, avec DIMi (1 i N) peut tre reprsent
comme suit :
DIMi = inf 1 : sup1, inf 2,........, infN : supn avec infi et supi respectivement bornes infrieures
et suprieures, de la ime dimension (1 i N). Elles sont gnralement des constantes
entires positives, nulles ou ngatives.
Exemples :
DIMENSION V (-2:1), MATR (2:5)
V et MATR sont des vecteurs respectivement de 4 et 5 lments numrots de -2 1 pour v et
de 2 6 pour MATR. Le premier est rel, le second est entier.
Remarques :
a - Lorsque INFi = 1, il faut se limiter la reprsentation de
SUPi :
DIMi = sup1, sup2, ................, supN
Exemple :
DIMENSION V(5), MATR (4,6)
b - La dclaration de variables indices chanes de caractres se fait dans la dclaration
CHARACTER.
Exemple :
CHARACTER*2 C, CH (1:8)*3
est quivalent :
CHARACTER*2C, CH*3
DIMENSION C(8), CH(1:8)
c - Remise zro dune variable indice par DATA
DIMENTION V(5), MATR (4,6)
DATA V, MATR / 29*0./
avec 29 = 5 + 4 *6
d - Linstruction DATA (MATR (1,2), = 1,4)/4*0./ initialise les 4 lments de la 2 me colonne
de MATR zro.
4.3.4. INSTRUCTION DE DECLARATION IMPLICIT
Sa syntaxe est : IMPLICIT Type 1 (Liste1) [, Type 2 (Liste2),......, TypeN (ListeN)]
avec Type1, Type2,...........TypeN : instructions de dclaration; elles peuvent tre INTEGER,
REAL, LOGICAL, COMPLEX, CHARACTER, DOUBLE PRECISION.
Liste 1, Liste2,............Liste N : Liste de variables simples ou indices.
La premire lettre de chaque liste indique toutes les variables dbutant par cette lettre sont du
mme type, sauf spcification contraire.
Exemple :
IMPLICIT COMPLEX (w-z)
Toutes les variables dbutant par W, X, Y, Z sont de type complexe
6
Cours de Fortran
Dr E. BOUDAIA
5. EXPRESSIONS
5.1. EXPRESSIONS ARITHMETIQUES
Nous construisons une expression arithmtique partir :
- des constantes, des variables simples ou indices, des fonctions, des oprateurs arithmtiques
(+, -, /, *, **) et des parenthses.
Lvaluation dune expression arithmtique se fait selon lordre tablit suivant :
1) Les appels de fonctions.
2) Les parenthses : nous commenons par les plus internes.
3) Les oprateurs arithmtiques :
3.1) lexponnentiation : priorit gale, nous commenons de droite gauche.
3.2) la multiplication et la division.
3.3) la soustraction et laddition.
Pour 3.2 et 3.3 priorit gale, nous commenons de gauche droite.
5.2. EXPRESSIONS LOGIQUES
Une expression logique est une expression qui peut tre vraie ou fausse. Cest une
comparaison entre expressions arithmtiques (gnralement de mme type) laide
doprateurs de relation (.OR., NOT., AND., EQV., NEQV.).
Remarque : Loprateur .NOT. ne sapplique qu une seule expression de relation Lordre
dvaluation des expressions logiques est le suivant :
1) Les appels de fonctions.
2) Les parenthses : nous commenons par les plus internes
3) Les oprateurs arithmtiques (voir les expressions arithmtiques).
4) Les oprateurs de concatnation //.
5) Les oprateurs de relations : selon lordre dapparition.
6) Les oprateurs logiques : selon lordre suivant : .NOT., .AND., .OR. puis .EQV. et .NEQV.
ont la mme priorit.
Exercice 1 : crire les expressions arithmtiques suivantes en FORTRAN :
R = T/C Ln (0 / )
)/R3
C = U/(Rv (E2-U2)1/2
V = 4 R3/3
G = S(R1 - R2
Rponse :
R = T/C*ALOG (ALPHAO/ALPHA)
C = U/(W*Rv*(E**2-U**2)**(1/2.))
V = 4./3*PI*R**3 avec PI connu
G = S*(R1-R2)/R3
Exercice 2 : Ecrire les expressions logiques suivantes en FORTRAN
A B ; X<Y et Z >W ; X#Y ; X2 0 ou Y< 0 ; (X-Y)2 1.2
Rponse :
A.GE.B ; X.LT.Y.AND.Z.GT.W ; X.NE.Y ; X**2.GE.0.OR.Y.LT.0 ; (X-Y)**2.LE.1.2
7
Cours de Fortran
Dr E. BOUDAIA
CHAPITRE II
Cours de Fortran
Dr E. BOUDAIA
Cours de Fortran
Dr E. BOUDAIA
Si condition
Alors instruction (s) 1
Sinon instruction (s) 2
Fsi
Le(s) instruction(s) 1 sont excutes lorsque la condition est vrifie, dans le cas contraire, ce
sont le(s) instruction(s) 2 qui le seront
En FORTRAN
IF condition THEN
Instruction 1
ELSE
Instruction (s) 2
ENDIF
Exemple 2 : Calculons la prime de lemploy en sachant que sil a moins de 10 ans
danciennet, il a 2% du salaire, dans le cas contraire, il a 4%.
Dbut
Lire Mat, S, A
Si A<10
Alors P = S * 0.02
Sinon P = s * 0.04
Fsi
Imprimer Mat, P
Fin
Remarque : nous pouvons avoir la forme gnrale suivante :
IF condition 1 THEN
Instruction 1
ELSE
IF condition2 THEN
Instruction(s) 2
......................
ENDIF
3. INSTRUCTIONS ITERATIVES
3.1. ITERATIONS CONTROLEES PAR DES CONDITIONS
Lexcution dune ou dun ensemble dinstructions est rpte tant que la condition pose est
vrifie.
Tant que condition
Faire
Instruction(s)
Fait
10
Cours de Fortran
Dr E. BOUDAIA
La condition est une expression logique qui prendra pour valeur : vrai ou faux.
Ces instructions peuvent ne jamais tre excutes si la condition a pour valeur : faux, ds le
dpart.
De plus, les instructions peuvent tre rptes indfiniment, si parmi elles, il nen existe pas
une qui modifie la condition.
Exemple :
crire un algorithme qui calcule la valeur de S donne par : S = 1/ (N2 + 1)
La condition darrt sera lorsque S est infrieure E donn.
Dbut
Lire E, N
S=0
Tant que S E
Faire
S = S + 1/ (N2 + 1)
Fait
Ecrire S
Fin
Une autre forme ditration contrle est la boucle :
Rpter
Instruction(s)
Jusqu condition
Les instructions seront rptes tant que, nous aurons la formulation suivante :
Tant que non - condition
Faire
Instruction(s)
Fait
Cette manire dcrire na pas dquivalent en FORTRAN.
3.2. ITERATIONS CONTROLEES PAR DES INDICES
Lorsque nous avons tester la valeur dun compteur dans une instruction itrative, nous
pouvons utiliser la forme suivante :
Pour compteur de VI VF pas N
Faire
Instruction(s)
Fait
Dans ce cas, il faut connatre les valeurs entires de dpart VI et darrive VF du compteur
ainsi que la valeur entire N du pas.
Si VI est la valeur minimale du compteur, VF doit tre maximale et le pas est alors positif.
11
Cours de Fortran
Dr E. BOUDAIA
Si VI est la valeur maximale du compteur, VF doit tre minimale et le pas est alors ngatif.
Si N = 1 le pas est facultatif.
En FORTRAN, cela serait reprsent par :
DO tiq compteur = val1, val2, pas
Instruction(s)
tiq instruction excutable
Remarque : Linstruction excutable ne peut pas tre un DO, STOP ou IF.
Exemple : Calculer la prime de 50 employs avec la forme : P = S * 0.04. Posons P : prime
de lemploy; D : son salaire; Mat : son matricule.
Dbut
Pour I de 1 50 pas 1
Faire
Lire Mat, S
P = S * 0.04
Ecrire Mat, P
Fait
Fin
Remarque : Le Pour peut tre remplac par Tant que :
Exemple :
Dbut
I=1
Tant que I 50
Faire
Lire Mat, S
P = S * 0.04
Ecrire Mat, P
I=I+1
Fait
Fin
II. ORGANIGRAMMES
Une seconde description de la solution dun problme pos peut tre donne en utilisant la
notion dorganigrammes.
Un organigramme utilise les schmas suivants :
Cours de Fortran
Dr E. BOUDAIA
1. INSTRUCTIONS SEQUENTIELLES
Les instructions sont excutes dans lordre, lune aprs lautre. Reprenons lexemple donn
dans la partie algorithmique, dans le mme paragraphe :
Dbut
Lire C
S = C*C
P = 4*C
crire C
Fin
2. INSTRUCTIONS CONDITIONNELLES
2.1 PREMIER CAS
Cours de Fortran
Dr E. BOUDAIA
Condition
Instruction(s) 1
instruction(s) 2
A<10
P = S* 0.02
P = S* 0.04
Ecrire, Mat, P
Fin
condition
Instructions
instructions
N
condition
14
Cours de Fortran
Dr E. BOUDAIA
Dbut
Dbut
I=1
I=1
I 50
Lire S, Mat
P = S* 0.04
Lire S, Mat
P = S* 0.04
Ecrire Mat, P
Fin
Ecrire Mat, P
I=I+1
I 50
Fin
I=I+1
Remarque : Nous pouvons retrouver des instructions conditionnelles dans une instruction
itrative.
Exemple : Calculer la prime de 50 employs en sachant quelle est de 3% si lanciennet est
infrieure 10 ans, sinon de 4%.
Algorithmes
Dbut
I=1
Tant que I 50
Faire
Lire Mat, A, S
Si A< 10
Alors
P = S* 0.03
Sinon
P = S* 0.04
Fsi
Imprimer Mat, P
I=I+1
Fait
Fin
Dbut
Pour I de 1 50
Faire
Lire Mat, A, S
Si A < 10
Alors
P = S* 0.03
Sinon
P = S*0.04
Fsi
Imprimer Mat, p
Fait
Fin
15
Cours de Fortran
Dr E. BOUDAIA
Organigramme
Dbut
I=1
I 50
Lire S, Mat, A
A< 10
P = S * 0.04
P = S* 0.03
Ecrire Mat. P
I=I+1
Fin
16
Cours de Fortran
Dr E. BOUDAIA
CHAPITRE III
INSTRUCTIONS DE FORTRAN 77
1. INSTRUCTIONS DAFFECTATION
1.1. INSTRUCTIONS DAFFECTATION ARITHMETIQUES
Sa syntaxe est :
Var = expr
avec :
Var : variable numrique simple ou indice.
expr : expression arithmtique qui est value puis convertie au type de Var
Remarques :
1- La hirarchie des types de variables numriques est
a - complexe
b - double prcision
c - rel
d - entier
Pour une opration entre deux oprandes de types diffrents, loprande de type le plus faible
est converti au plus fort, sauf dans le cas de lexponnentiation quand lexposant est entier, le
rsultat est toujours du type de la base.
2 - Il faut viter de mixer les types complexes et double prcision, un confit de prcision est
trs possible.
1.2. AFFECTATION ENTRE CHAINES DE CARACTERES
1.2.1. SOUS - CHAINES
Prenons une variable chane Var de m caractres :
CHARACTER*m Var
Pour accder une partie de la chane Var, nous pouvons procder de 3 faons :
a - accs aux caractres i j inclus avec 1 j m : V (i :j)
b - accs aux j premiers caractres : Var (: j)
c - accs la partie finale dbutant par le p me caractre : Var (p : m)
Exemples : Si la variable BIT vaut SCIENCES, nous aurons:
BIT (4 : 5) vaut EN
BIT (6 : 8) vaut CES
BIT ( : 3) vaut SCI
17
Cours de Fortran
Dr E. BOUDAIA
Var = expcar
Cours de Fortran
Dr E. BOUDAIA
I=2
J=2
K=2
L=5
END
Son rle est darrter la compilation du programme, elle est donc obligatoire. Elle ne doit tre
suivie daucune instruction.
6. INSTRUCTIONS DE TEST
Ce sont des instructions dexcution conditionnelles.
6.1. INSTRUCTION IF ARITHMETIQUE
Cette instruction effectue un test sur une expression arithmtique dont le signe renvoie 3
reprsentations possibles : positive, ngative ou nulle. Elle est dite aussi test 3 sorties.
Sa syntaxe est :
IF (ExpArit) tiq1, tiq2, tiq3
Avec :
ExpArit : expression arithmtique
tiq1, tiq2, tiq3 : tiquettes numriques correspondant respectivement ExpArit ngative,
ExpArit nulle, ExpArit positive.
19
Cours de Fortran
Dr E. BOUDAIA
Exemple
DELTA = B*B - 4. * A* C
IF (DELTA) 10, 20, 30
Nous pouvons la reprsenter comme suit :
10
DELTA
30
20
Explog
INstExc
Suite
Remarque :
Linstruction InstExc doit tre absolument diffrente des instructions IF, DO, et
END.
6.3. INSTRUCTION IF.......THEN .......ELSE / ENDIF
Contrairement aux IF prcdents qui conditionnaient une instruction simple, celle-ci
conditionne une squence, cest dire une suite dinstructions.
Sa syntaxe est :
IF (condition) THEN
Traitement -1
ELSE
Traitement -2
ENDIF
20
Cours de Fortran
Dr E. BOUDAIA
Si la condition est vraie -, alors seulement le traitement -1 est excut, sinon cest dire si la
condition est fausse, alors seulement le traitement -2 est excut.
7. INSTRUCTIONS DE BRANCHEMENT
Ces instructions sont utilises gnralement avec les instructions de test prcdentes. Elles ont
pour rle dindiquer le traitement prendre lors du choix. Pour cela, un numro qui est une
tiquette dsigne linstruction correspondante au traitement.
Il existe deux types dinstructions de branchement :
7.1. INSTRUCTION DE BRANCHEMENT INCONDITIONNEL (GOTO)
Sa syntaxe est :
GOTO tiq
avec :
tiq : tiquette de linstruction ou le branchement doit se faire pour viter lexcution en
squence.
Remarque : linstruction GOTO ne doit pas tre tiquete.
7.2. INSTRUCTION DE BRANCHEMENT CALCULEE
Sa syntaxe est :
tiq GOTO (tiq1, tiq2, ......., tiqN) [ , ] I
avec :
tiq : tiquette de linstruction GOTO.
tiq1, tiq2,.....,tiqN : tiquettes dinstructions excutables.
I : variable entire positive.
Lexcution de linstruction GOTO provoque un branchement tiq k si la valeur de I est K
avec I K N, cest dire :
Ltiquette tiq1 si I = 1
Ltiquette tiq2 si I = 2
....................................
Ltiquette tiq N si I = N
8. INSTRUCTIONS DE REPETITIONS (LES BOUCLES DO)
8.1. BOUCLE DO
Sa syntaxe est :
DO tiq VE = I, F, P
avec :
tiq : ltiquette dune instruction excutable de fin de boucle qui suit linstruction
CONTINUE (elle est diffrente de GOTO, IF, END, STOP et DO).
VE : variable entire simple qui fait le contrle de la boucle.
I : valeur initiale entire positive, ngative ou nulle de la variable VE.
21
Cours de Fortran
Dr E. BOUDAIA
tiq
DO tiq VE = I, F, P
Traitement excuter
instruction excutable
Remarques :
1 - si I > F avec P > 0 ou I < F avec P < 0, nous ne pouvons accder la boucle ; dans ce cas la
variable VE aura pour valeur I
2 - si P = 1 ou -1, nous pouvons omettre de le mentionner, il sera pris par dfaut.
3 - il est possible dimbriquer les boucles, cest dire dutiliser des boucles lintrieur des
autres condition quelles soient contrles par des variables diffrentes.
4 - il ne faut jamais modifier la valeur de la variable VE lintrieur de la boucle.
5 - il est interdit de se brancher directement lintrieur dune boucle DO
Exemples :
S=0
DO 100 = 1, 10, 2
100 S = S + V(1)
Y=1
DO50 J = 10, 1, -1
Y = Y+2J
50 CONTINUE
8.2. BOUCLE DO ....... WHILE
Cette instruction existe sur beaucoup de compilateurs actuels malgr quelle nait pas t
prvue par la norme ANSI.
Sa syntaxe est :
DO [tiq [ , ] ] WHILE explog
avec :
tiq : tiquette de la manire instruction excutable de la boucle.
Explog : expression logique.
Tant que explog est vraie, un bloc dinstructions compris entre DO WHILE et ltiquette tiq
sera excut. ENDDO dlimite le traitement rpt.
Nous rpt.
Nous programmons cette instruction de la sorte :
DO (tiq (,)) WHILE condition
Bloc dinstructions
ENDDO
22
Cours de Fortran
Dr E. BOUDAIA
9. INSTRUCTION CONTINUE
Sa syntaxe est :
[tiq]CONTINUE
Cette instruction est surtout utilise avec la boucle DO. Elle na aucun effet, mais elle est
excutable.
10. INSTRUCTIONS DENTREE / SORTIE
Nous distinguons deux types doprations dE / S en FORTRAN :
a - les E / S en format libre.
b - les E / S contrles par un format.
Lopration dE / S est caractrise par :
- le type daccs (squentiel ou direct)
- le sens (entre ou sortie)
- le nom du priphrique ou de lunit
- la liste des variables imprimer
- le format des variables
Dans la ralisation dune E / S, 4 instructions sont utilises :
PRINT : impression des rsultats sur le terminal
READ : lecture des donnes tapes partir du clavier vers la mmoire centrale.
WRITE : sortie des donnes de la mmoire centrale vers un priphrique.
FORMAT : avec lequel les variables doivent tre transmises.
Il est utilis par les instructions prcdentes.
10.1. INSTRUCTION PRINT
a - Sa syntaxe avec format libre :
PRINT*[ , liste ]
avec :
Liste : liste des donnes. Les donnes peuvent tre des variables de nimporte quel type ou des
constantes chanes de caractres.
Exemples :
PRINT * le rsultat est =
PRINT* , I, J, F
PRINT*
b - Sa syntaxe avec format impos :
PRINT tiq, liste
avec :
tiq : ltiquette dune instruction FORMAT
liste : liste de rsultats
23
Cours de Fortran
Dr E. BOUDAIA
Cours de Fortran
Dr E. BOUDAIA
b - DEUXIEME SYNTAXE
READ (u, ef [ , ERR = tiq 1, END = tiq2 ])liste
avec :
ef : tiquette de linstruction FORMAT.
Exemples :
READ 10, A, B, C, D
110 FORMAT (descripteurs)
2READ (5,25) (X(I), I = 1, 10)
25 FORMAT (descripteurs)
Les descripteurs seront explicits par la suite.
10.3. INSTRUCTION WRITE
a - Sa syntaxe en format libre est :
WRITE (u, *[ , ERR = tiq ] )[ liste ]
avec :
Liste : liste de variables simples ou indices, de chanes de caractres ou dexpressions.
U, tiq : voir les dfinitions faites prcdemment pour linstruction READ avec format libre.
Exemple :
WRITE (10,*) les solutions sont gales a :, I, J, K
b - Sa syntaxe en format impos est :
WRITE (u, ef [ , ERR = tiq ]) liste
avec :
u : numro dunit logique
ef : tiquette de linstruction FORMAT
liste : liste de variables
Exemple:
15
Cours de Fortran
Dr E. BOUDAIA
I =21
WRITE (3,10)I
10 FORMAT (15)
INTGER U, V
DATA U,V/ - 21, 125 /
WRITE (4, 15) U, V
15 FORMAT (216)
Ldition donnera : trois blancs suivi de 21 suivi de trois blancs suivi de 125
3-
Cours de Fortran
Dr E. BOUDAIA
b - descripteur F
Il est utilis pour la reprsentation des nombres de type rel en point fixe simple prcision.
Sa forme gnrale est :
[m] Fn.d
avec :
m : rptiteur
n : reprsente la longueur totale occupe par le nombre entrer ou imprimer.
d : nombre de position quoccupe la partie fractionnaire (d < n).
Pour ne pas avoir de dpassement de capacit, la relation suivante doit tre satisfaite :
n=d+p+2
avec :
n et d comme prcdemment.
P : nombre de caractres de la partie entire.
Exemples :
20
Soit lire : un blanc suivi de 324.5 suivi de quatre blancs suivi de 93.24
Nous obtenons :
X = un blanc suivi de 324.5
Y = 93.24
Remarques :
1 - Certains nombres rels trs grands ou trs petits (cela dpend de lordinateur) ne peuvent
pas tre reprsents par le descripteur E
2 - Lors de limpression, le signe + est remplac par un blanc.
c - descripteur E
Il est utilis pour la reprsentation des nombres de type rel en point flottant simple prcision
avec exposant en entre - sortie.
Sa forme gnrale est :
[m] En. d
avec :
m : rptiteur
n : reprsente la longueur totale occupe par le nombre lire ou imprimer.
d : reprsente le nombre de chiffres de la partie fractionnaire, avec d < n.
Exemples :
1 - reprsenter 125.13 sous la forme E 10.4 : 0.1251E + 03
27
Cours de Fortran
Dr E. BOUDAIA
25
U = - 2.25267
WRITE (3,5) U
FORMAT (E11.3)
10
LOGICAL I, J
I = TRUE.
J = FALSE
WRITE (*,10) I, J
FORMAT (L2, L3)
Cours de Fortran
Dr E. BOUDAIA
Si X a pour valeur MATH, il sera dit comme suit : un blanc suivi de MATH. Le premier
blanc sera ignor.
2 - Soit lire LA SCIENCE EST NOTE ISSUE en utilisant le format suivant :
4
READ (*,4)X,Y,Z
FORMAT (A10, A5, A11)
Cours de Fortran
Dr E. BOUDAIA
Exemple:
WRITE (3.5) R.P
4 FORMAT (1X, F8, 7, 5X, E14.7)
Ldition donnera : un blanc qui sera ignor ldition suivi de 8 positions pour la valeur de
R, suivi de cinq blancs suivi de 14 positions pour la valeur de P.
b - descripteur
Il permet ldition de caractres non interprts en sortie.
Exemple :
WRITE (3, 9) R
9 FORMAT (5X. La valeur de R est : , F8.7)
A ldition, nous aurons la valeur de R est : suivis de la valeur numrique de R sur 8
positions.
c - descripteur / (slach)
Il permet le passage lenregistrement suivant. Pour sauter plusieurs enregistrements, il faut
rpter le / autant de fois.
Exemple:
51
Ldition donnera :
U = suivi de la valeur numrique de U
V = suivi de la valeur numrique de V
d - descripteur H (HOLLERITH)
Il permet dditer un texte.
Sa forme gnrale est : n H
avec :
n : indique le nombre de caractre du texte diter aprs le H.
Exemple:
WRITE (1 , 5)
5 FORMAT (1X, 8HRESULTAT, / , 1H, 10 (1H=))
Ldition donnera :
RESULTAT
Remarque importante :
Le premier caractre est rserv au positionnement, donc il est recommand de toujours
commencer un FORMAT par le descripteur X. Ceci est trs utile pour ne pas se retrouver avec
des rsultats dpourvus du premier caractre.
30
Cours de Fortran
Dr E. BOUDAIA
CHAPITRE IV
Cours de Fortran
Dr E. BOUDAIA
2.2. EXEMPLES
crire les fonctions suivantes sous forme de fonctions formules
a - produit des cubes de deux variables x et y :
PROCUB (X,Y) = X**3*Y**3
b - module de 3 variables :
MODULE (X,Y,Z) = SQRT (X**2+Y**2+Z**2)
3. SOUS-PROGRAMMES FUNCTION ET SUBROUTINE
3.1. SYNTAXE DE FUNCTION
La syntaxe de dfinition de FUNCTION est :
[dclaration] FUNCTION nomfct (arg1[ , arg2, ......argn ] )
avec :
dclaration : instruction de dclaration explicite de type autre que CHARACTER (voir plus
loin); sil est absent, la dclaration est implicite.
Nomfct : nom de fonction qui doit tre diffrent de celui des fonctions de la bibliothque de
FORTRAN (voir annexe). Ce nom doit apparatre au moins une fois dans un sous-programme.
arg1, arg2, ........argn : arguments, ce sont des noms de variables simples ou indices, de sousprogrammes ou de fonctions. Au moins un argument doit y figurer.
La syntaxe de dclaration des fonctions valeur de chanes de caractres, diffre un peu de
celle donne :
CHARACTER [*m] FUNCTION nomft (pf1 [ ,......., ])
avec :
m : longueur de la chane de caractres.
Pft,........, : paramtres de la fonction.
Dans lappel de la fonction de ce type, il faut prciser la longueur exacte de la chane de
caractres.
3.1.1. APPEL DE FUNCTION DANS UN PROGRAMME PRINCIPAL
Lappel se fait en crivant dans nimporte quelle expression mathmatique la syntaxe suivante
nomftct ( par1[ , par2,......, parn ])
avec :
nomft : nom de fonction.
par1, par2,.........parn : paramtres effectifs.
32
Cours de Fortran
Dr E. BOUDAIA
Cours de Fortran
Dr E. BOUDAIA
avec :
nomsub : voir prcdemment
par1, par2,........., parn : paramtres effectifs, qui peuvent tres des constantes, des noms de
variables simples ou indices, des expressions arithmtiques, des noms de sous - programmes.
De mme que pour linstruction SUBROUTINE, les paramtres effectifs peuvent tre
facultatifs.
3.2.2. SOUS-PROGRAMME SUBROUTINE
Les sous - programmes dfinis par linstruction SUBROUTINE permettent dcrire des
squences dinstructions diffrentes de celles du programme principal.
La structure gnrale est :
SUBROUTINE nomfct [(arg1, arg2,......arg)]
dclarations
instructions excutables
END
La dernire instruction excutable est linstruction RETURN.
3.2.3. EXEMPLE
Ecrire un sous-programme SUBROUTINE calculant le produit des lments positifs et la
somme des lments ngatifs dun tableau A (50).
10
Cours de Fortran
Dr E. BOUDAIA
Cette instruction doit comporter au moins un nom effectif. Elle doit tre crire au dbut du
programme avant toute instruction excutable. Elle est ncessaire quand un sous - programme
figure parmi les arguments dun autre sous-programme.
Pour mieux comprendre son rle, prenons un exemple :
Soit un sous - programme dbutant par : SUBROUTINE DIF (A, B, C, SOM).
Nous supposons que SOM est un sous - programme. Lors de la compilation, le compilateur ne
fera pas de distinction entre les variables A, B, C et SOM.)
Appelons DIF dans un programme principal : CALL DIF (A, B, C, SOM).
Lors de lexcution, SOM aura une adresse mmoire contenant une variable. Pour que le
compilateur puisse distinguer SOM dune variable, nous devons faire la dclaration suivante :
EXTERNAL SON
Cours de Fortran
Dr E. BOUDAIA
Cours de Fortran
Dr E. BOUDAIA
37
Cours de Fortran
Dr E. BOUDAIA
CHAPITRE V
LES FICHIERS
1. NOTION DE FICHIERS
Un fichier est compos dun ensemble denregistrements. Chacun de ces enregistrements est
form dun ou plusieurs champs.
Il existe deux sortes de fichiers :
- Les fichiers accs squentiel
- Les fichiers accs direct
Un fichier squentiel est un fichier constitu dun ensemble denregistrements ou darticles, et
o laccs ces enregistrements se fait faut passer par les (i-1) mes enregistrements prcdents.
Un fichier accs direct a des enregistrements de longueur fixe et comme son nom lindique,
laccs un enregistrement donn se fait dune manire directe : pour lire lenregistrement i, il
nest pas ncessaire de passer par ceux qui le prcde.
2. DESIGNATION DUN FICHIER
Un fichier est dsign par un nombre entier naturel, appel numro dunit logique par
opposition lunit physique, support de fichier.
Un lien est prdtermin entre ces units logiques et physiques en utilisant linstruction
OPEN.
3. INSTRUCTION DOUVERTURE DUN FICHIER
OPEN
(unit [, liste ] )
avec :
Unit : constante ou variable entire, reprsentant le numro dunit logique du fichier.
Liste : suite doptions du genre mot-cl = expression spares par les virgules. Lordre entre
ces options est indiffrent.
Les options sont les suivants :
3.1. FILE = nom
Le programmeur donne son fichier un nom. Ce nom est une chane de caractres sous forme
dune constante ou dune variable.
Exemple :
OPEN ( 5, File = fich.dat )
38
Cours de Fortran
Dr E. BOUDAIA
Cours de Fortran
Dr E. BOUDAIA
3.5. RECL = m
Cette option est utilise en accs direct, et m indique la taille fixe des enregistrements du
fichier.
3.6. ERR = tiq
tiq est une tiquette dune instruction excutable en cas derreurs.
4. INSTRUCTION DE FERMETURE DUN FICHIER
CLOSE (unit)
Cette instruction permet de rompre le lien entre lunit logique et le fichier physique associ
en provoquant une dconnections de lunit logique et une fermeture du fichier physique.
Sil sagit dun fichier temporaire, il est dtruit par :
CLOSE (unit, STATUS = DELETE )
5. INSTRUCTION DE REINITIALISATION DUN FICHIER
REWIND (unit)
Cette instruction provoque un retour en tte du fichier ; donc aprs son excution, cest
toujours le premier enregistrement du fichier qui est prt tre trait.
6. INSTRUCTION DE RECUL DANS UN FICHIER
BACKSPACE (unit)
Cette instruction permet de passer lenregistrement prcdent lenregistrement courant dans
un fichier squentiel.
7. INSTRUCTION DE FIN DE FICHIER
ENDFILE (unit)
Utilise dans un fichier squentiel, cette instruction, crit un enregistrement fin de fichier
8. ENTREES-SORTIES DANS UN FICHIER A ACCES DIRECT
8.1. ECRITURE DANS UN FICHIER A ACCES DIRECT
La syntaxe dcriture dans un fichier accs direct est :
READ (unit, tf, REC = m[ ,ERR = tiq ]) listVar
40
Cours de Fortran
Dr E. BOUDAIA
avec :
unit : unit logique
tf : tiquette dun FORMAT ou * pour un format libre
LisVar : liste de variables
8.2. LECTURE DANS FICHIER A ACCES DIRECT
La syntaxe de lecture dans un fichier accs direct est :
WRITE (unit, tf, REC = m[ , ERR = tiq ] ) listDon
avec : ListDon : liste de donnes
9. ENTREES-SORTIE DANS UN FICHIER BINAIRE SEQUENTIEL
La syntaxe dcriture est :
WRITE (unit) ListDon
Cet ordre dcriture najoute quun seul enregistrement au fichier dont la longueur est
dtermine par LisDon.
La syntaxe de lecture est :
DEAD (unit [ , END = tiq ] ) LisVar
Cet ordre de lecture lit un seul enregistrement. La longueur de LisVar ne doit pas tre
suprieure celle de denregistrement lire.
41
Cours de Fortran
Dr E. BOUDAIA
Tome I :
CHAPITRE I
COURS
GENERALITES
CHAPITRE II
I. ALGORITHMES.................................................................................................................................8
1. INSTRUCTIONS SEQUENTIELLES ...............................................................................................8
2. INSTRUCTIONS CONDITIONNELLES...........................................................................................9
2.1. PREMIER CAS............................................................................................................................9
2.2. DEUXIEME CAS ........................................................................................................................9
3. INSTRUCTIONS ITERATIVES.......................................................................................................10
3.1. ITERATIONS CONTROLEES PAR DES CONDITIONS.......................................................10
3.2. ITERATIONS CONTROLEES PAR DES INDICES ...............................................................11
II. ORGANIGRAMMES .......................................................................................................................12
1. INSTRUCTIONS SEQUENTIELLES ..............................................................................................13
2. INSTRUCTIONS CONDITIONNELLES.........................................................................................13
2.1 PREMIER CAS...........................................................................................................................13
2.2. DEUXIEME CAS ......................................................................................................................13
3. INSTRUCTIONS ITERATIVES (BOUCLES).................................................................................14
42
Cours de Fortran
CHAPITRE III
Dr E. BOUDAIA
CHAPITRE IV
1. LES SOUS-PROGRAMMES............................................................................................................31
2. FONCTIONS FORMULES...............................................................................................................31
2.1. SYNTAXE .................................................................................................................................31
2.2. EXEMPLES ...............................................................................................................................32
3. SOUS-PROGRAMMES FUNCTION ET SUBROUTINE...............................................................32
3.1. SYNTAXE DE FUNCTION......................................................................................................32
3.1.1. APPEL DE FUNCTION DANS UN PROGRAMME PRINCIPAL ...............................32
3.1.2. SOUS-PROGRAMME FUNCTION ..............................................................................33
3.1.3. EXEMPLE .......................................................................................................................33
3.2. SYNTAXE DE SUBROUTINE................................................................................................33
3.2.1. APPEL DE SUBROUTINE DANS UN PROGRAMME PRINCIPALE .......................33
3.2.2. SOUS-PROGRAMME SUBROUTINE .........................................................................34
3.2.3. EXEMPLE .......................................................................................................................34
3.3. INSTRUCTION DE DECLARATION EXTERNAL ...............................................................34
43
Cours de Fortran
Dr E. BOUDAIA
CHAPITRE V
LES FICHIERS
44