Vous êtes sur la page 1sur 46

Tome I : Cours de Fortran

Pr. E. BOUDAIA

TABLE DES MATIERES

CHAPITRE I

GENERALITES

1. Alphabet fortran ........................................................................................................................ 4


1.1. Caracteres alphanumeriques .............................................................................................. 4
1.2. Caracteres speciaux ............................................................................................................ 4
2. Structure generale dun programme fortran .............................................................................. 4
3. Structure dune ligne en fortran ................................................................................................ 4
4. Operandes.................................................................................................................................. 5
4.1. Etiquettes............................................................................................................................. 5
4.2. Constantes ........................................................................................................................... 5
4.2.1. Constantes entieres ...................................................................................................... 5
4.2.2. Constantes reelles simple precision ............................................................................ 5
4.2.3. Constantes doubles precision ...................................................................................... 5
4.2.4. Constantes complexes ................................................................................................. 6
4.2.5. Constantes logiques..................................................................................................... 6
4.2.6. Constantes caracteres .................................................................................................. 6
4.3. Variables ............................................................................................................................. 6
4.3.1. Declaration explicite .................................................................................................... 7
4.3.2. Variables indicees (tableau) ......................................................................................... 8
4.3.3. Dimension dune variable indicee................................................................................ 8
4.3.4. Instruction de declaration implicit ............................................................................... 9
5. Expressions ............................................................................................................................. 10
5.1. Expressions arithmetiques................................................................................................ 10
5.2. Expressions logiques ........................................................................................................ 10

CHAPITRE II

NOTIONS SUR LES ALGORITHMES


ET LES ORGANIGRAMMES

I. Algorithmes ............................................................................................................................ 11
1. Instructions sequentielles .................................................................................................. 11
2. Instructions conditionnelles ............................................................................................... 12
2.1. Premier cas ................................................................................................................... 12
2.2. Deuxieme cas ............................................................................................................... 12
3. Instructions iteratives ......................................................................................................... 13
3.1. Iterations controlees par des conditions ....................................................................... 13
3.2. Iterations controlees par des indices ............................................................................ 14
II. Organigrammes ...................................................................................................................... 15
1. Instructions sequentielles ................................................................................................... 16
2. Instructions conditionnelles ............................................................................................... 16
2.1 premier cas .................................................................................................................... 16
2.2. Deuxieme cas ............................................................................................................... 17
3. Instructions iteratives (boucles) ......................................................................................... 17
1

Tome I : Cours de Fortran

CHAPITRE III

Pr. E. BOUDAIA

LES INSTRUCTIONS DE FORTRAN 77

1. Instructions daffectation ........................................................................................................ 20


1.1. Instructions daffectation arithmetiques .......................................................................... 20
1.2. Affectation entre chaines de caracteres............................................................................ 20
1.2.1. Sous - chaines.......................................................................................................... 20
1.2.2. Affectation entre sous - chaines .............................................................................. 21
2. Instruction parameter .............................................................................................................. 21
3. Instruction dinitialisastion des variables (data) ..................................................................... 21
4. Instruction darret dexecution (stop) ..................................................................................... 22
5. Instruction darret de compilation (end) ................................................................................. 22
6. Instructions de test .................................................................................................................. 22
6.1. Instruction if arithmetique ................................................................................................ 22
6.2. Instruction if logique ........................................................................................................ 23
6.3. Instruction if...then ...else / endif ..................................................................................... 23
7. Instructions de branchement .................................................................................................. 24
7.1. Instruction de branchement inconditionnel (goto) .......................................................... 24
7.2. Instruction de branchement calculee .............................................................................. 24
8. Instructions de repetitions (les boucles do) ............................................................................ 24
8.1. Boucle do ........................................................................................................................ 24
8.2. Boucle do ... while .......................................................................................................... 25
9. Instruction continue................................................................................................................ 26
10. Instructions dentree / sortie................................................................................................. 26
10.1. Instruction print ............................................................................................................ 26
10.2. Instruction read ............................................................................................................ 27
10.2.1. Syntaxe de linstruction read avec format libre ................................................... 27
10.2.2. Syntaxes de linstruction read avec format impose.............................................. 27
10.3. Instruction write ........................................................................................................... 28
10.4. Instruction format ......................................................................................................... 28
10.5. Descripteurs ................................................................................................................. 29
10.5.1. Descripteurs de traitement des variables ............................................................... 29
10.5.2. Descripteurs de mise en page et dedition ............................................................ 32
CHAPITRE IV

LES SOUS-PROGRAMMES ET LES


INSTRUCTIONS DEFFICACITE DE PROGRAMMATION

I. Les sous-programmes .............................................................................................................. 34


2. Fonctions formules ............................................................................................................... 34
2.1. Syntaxe ........................................................................................................................... 34
2.2. Exemples ........................................................................................................................ 35
3. Sous-programmes function et subroutine ............................................................................. 35
3.1. Syntaxe de function ........................................................................................................ 35
3.1.1. Appel de function dans un programme principal ..................................................... 35
3.1.2. Sous-programme function ........................................................................................ 36
3.1.3. Exemple ................................................................................................................... 36
3.2. Syntaxe de subroutine ..................................................................................................... 36
2

Tome I : Cours de Fortran

Pr. E. BOUDAIA

3.2.1. Appel de subroutine dans un programme principale ............................................... 36


3.2.2. Sous-programme subroutine .................................................................................... 37
3.2.3. Exemple ................................................................................................................... 37
3.3. Instruction de declaration external .................................................................................. 37
II. Instructions defficacite de programmation ........................................................................... 38
1. Instruction common ............................................................................................................ 38
1.1. Common blanc ............................................................................................................ 38
1.2. Common etiquette ....................................................................................................... 39
2. Instruction equivalence ...................................................................................................... 39
3. Instruction block data .......................................................................................................... 40
CHAPITRE

LES FICHIERS

1. Notion de fichiers .................................................................................................................... 41


2. Designation dun fichier ......................................................................................................... 41
3. Instruction douverture dun fichier ........................................................................................ 41
3.1. File = nom ........................................................................................................................ 41
3.2. Status = expression ........................................................................................................ 42
3.3. Acces = expression ........................................................................................................ 42
3.4. Form = expression ......................................................................................................... 42
3.5. Recl = m ........................................................................................................................... 43
3.6. Err = tiq .......................................................................................................................... 43
4. Instruction de fermeture dun fichier ...................................................................................... 43
5. Instruction de reinitialisation dun fichier............................................................................... 43
6. Instruction de recul dans un fichier ......................................................................................... 43
7. Instruction de fin de fichier ..................................................................................................... 43
8. Entrees-sorties dans un fichier a acces direct ......................................................................... 43
8.1. Ecriture dans un fichier a acces direct ............................................................................. 44
8.2. Lecture dans fichier a acces direct ................................................................................... 44
9. Entrees-sortie dans un fichier binaire sequentiel .................................................................... 44
ANNEXE

FONCTIONS ARITHMETIQUES

1. Fonctions de conversions ........................................................................................................ 45


2. Reste dune division ................................................................................................................ 45
3. Valeur absolue......................................................................................................................... 45
4. Racine carree ........................................................................................................................... 45
5. Exponnentielle ........................................................................................................................ 45
6. Logarithmes ............................................................................................................................ 46
7. Trigonometrie.......................................................................................................................... 46
8. Trigonometrie inverse ............................................................................................................. 46
9. Maximum ................................................................................................................................ 46
10. Minimum ............................................................................................................................... 46
11. Parties reelles et imaginaire dun complexe ......................................................................... 46
3

Tome I : Cours de Fortran

Pr. 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 syntaxiques 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 EN 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 (colonne 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.
4

Tome I : Cours de Fortran

Pr. E. BOUDAIA

- Zone C (colonnes 7 72) : elle contient linstruction FORTRAN proprement dite.


- Zone D (colonnes 73 80) : gnralement elle est utilise pour numroter les lignes du
programme, elle est ignore par le compilateur.
Remarques :
- Les lignes comportant le caractre C ou * 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
4.2.3. CONSTANTES DOUBLES PRECISION
Elles scrivent en utilisant la forme avec exposant, la lettre E devient D.
5

Tome I : Cours de Fortran

Exemples : 55.159874D-5

Pr. E. BOUDAIA

-5D+6

4.2.4. CONSTANTES COMPLEXES


Elles sont constitues dun couple de constantes simple prcision (avec ou sans exposant) entre
parenthses et spares par une virgule.
Exemples : (3.1, -1.12) (-12., 5.E+2) (2.E-1, 2.5E + 4)
4.2.5. CONSTANTES LOGIQUES
Elles sont boolennes (vrai ou faux). Nous les reprsentons comme suit : .TRUE. ou
.FALSE.
NB : Les deux points entourant les mots TRUE et FALSE sont obligatoires.
4.2.6. CONSTANTES CARACTERES
Cest une suite de caractres alphanumriques ou spciaux encadrs par deux apostrophes.
Lapostrophe lintrieur dune chane de caractres est double.
Exemples : INFORmatique

lectronique

llment

Exercice : Donner le type des constantes suivantes :


1220 1.52E+3 -200. +.13 (5.E-2, 0.01) 12.3D+7 -1.665D-5 F(x) .TRUE. FALSE.
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.
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.
6

Tome I : Cours de Fortran

Pr. E. BOUDAIA

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

avec : DOUBLE PRECISION, LOGICAL ET COMPLEX : mots-cls.


Var1, Var2,..., VarN: variables.
Exemples :

LOGICAL debut, fin


COMPLEX imag, compl
DOUBLE PRECISION max
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

Les variables de type caractres ont une syntaxe lgrement diffrente :


CHARACTER [*m] Var1 [[*m1], Var2 [*m2 ]............, Varp [*mp]]
avec : m, m1, ....., mp : constantes entires positives, reprsentant la longueur des chanes de
caractres des variables.
Var1, Var2,..., varp : variables chanes de caractres.
Remarque : Dans toutes les syntaxes des instructions, les entits se trouvant entre crochets sont
facultatives.
Exemples :
CHARACTER*5 NOTE1, NOTE2, MOYENNE*3, NOTE 3.
La longueur des variables chane, NOTE1, NOTE 2 ET NOTE 3, est de 5, mais MOYENNE est
de 3.
CHARACTER ADRESSE*30, PROFESSION*15.
La longueur des variables chanes ADRESSE et PROFESSION est respectivement de 30 et 15.
7

Tome I : Cours de Fortran

Pr. E. BOUDAIA

4.3.2. VARIABLES INDICEES (TABLEAU)


Une variable indice est un ensemble de variables simples, de mme type. Un vecteur, une
matrice, un polynme constituent des variables indices. Le nombre dindices tolrs est au
maximum de 3. Toutefois certains compilateurs proposent 7.Une variable indice est dclare
avant toute utilisation. Si le nom de ces variables commence par lune des lettres I, J, K, L, M,
N, elles sont dites entires, sinon elles sont relles : dclaration IMPLICITE.
Les autres variables indices de types doubles prcision, complexe, logique et caractre sont
dclares explicitement. La syntaxe de dclaration pour les 3 premiers types est :

DOUBLE PRECISION
COMPLEX
Tabi (i1[ , i2, i3 ]) [ ,........, Tab p (m1 [ ,m2, m3 ])]
LOGICAL
avec :
DOUBLE PRECISION, LOGICAL et COMPLEX : mots-cls.
Tabi.............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 (ENCHANEMENT) :
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 :
DIMENSION : mot-cl
VI1, VI2, ...........Vip : noms de variables indices
8

Tome I : Cours de Fortran

Pr. E. BOUDAIA

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 (-3:1), MATR (2:5)
V et MATR sont des vecteurs respectivement de 5 et 4 lments numrots de -3 1 pour V et
de 2 5 pour MATR. Le premier est rel, le second est entier.
Remarques :
a - Lorsque la borne INFi = 1, il faut se limiter la reprsentation de la borne 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*2 C, 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 2me 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
9

Tome I : Cours de Fortran

Pr. 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) lexponentiation : 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 / )

C = U/(Rv (E2-U2)1/2

V = 4 R3/3

G = S(R1 - R2 )/R3

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
10

Tome I : Cours de Fortran

Pr. E. BOUDAIA

CHAPITRE II

NOTIONS SUR LES ALGORITHMES


ET LES ORGANIGRAMMES
Avant dcrire un programme en langage volu comme le FORTRAN, il est prfrable, et
mme conseill de donner une description dtaille de la marche suivre afin de rsoudre un
problme pos.
Cette description peut tre faite en utilisant deux formules : les algorithmes et les
organigrammes
I. ALGORITHMES
Lalgorithme est une manire de formaliser la solution dun problme pos. Suivant la solution
propose, plusieurs cas peuvent se prsenter.
1. INSTRUCTIONS SEQUENTIELLES
Lalgorithme est dlimit par :
Dbut : qui indique le dbut de lalgorithme.
Fin : qui dfinit sa fin.
Entre ces deux mots est crire la solution sous forme dinstruction.
Dbut
Enchanement dinstructions
Fin
Si toutes ces instructions sont excutes squentiellement, nous parlons dune structure
squentielle de lalgorithme.
Exemple :
Pour calculer la surface et le primtre dun carr, nous avons besoin de connatre la valeur du
cot C. Soit S la surface chercher, et P le primtre.
Voici lalgorithme qui nous rsoudrait le problme :
Dbut
Lire C
*calcul de la surface du carr
S = C*C
*calcul du primtre du carr
p = 4*C
crire S, P
Fin
A fin daboutir au rsultat attendu, nous avons utilis une suite dinstructions qui doivent tre
excutes squentiellement. Parmi ces instructions, nous constatons la prsence :
11

Tome I : Cours de Fortran

Pr. E. BOUDAIA

- dune instruction de lecture : introduite par lire


- dune instruction dcriture : introduite par crire ou imprimer.
Ce sont des instructions dentre - sortie.
Nous avons une instruction daffectation qui affecte la valeur dune expression une variable :
P= 4 * C.
Hormis ces instructions, nous avons des commentaires qui sont introduits pour faciliter la
comprhension du traitement, nous les avons prcds dun astrisque.
En FORTRAN, un commentaire est dfini en mettant la lettre C en premire colonne de la
ligne.
2. INSTRUCTIONS CONDITIONNELLES
2.1. PREMIER CAS
Supposons que lors de notre traitement, une ou un ensemble dinstruction ne sont excuts que
si une condition est vrifie, nous formulerons ce besoin sous la forme :
Si condition
Alors instruction (s) 1
Fin si
La condition est une expression logique.
En FORTRAN, cela reviendrait crire :
IF (condition) THEN
Introduction (s) 1
ENDIF
Exemple 1 :
Donnons une prime de 4 % du salaire une personne ayant plus de 10 ans danciennet.
crivons lalgorithme qui calcule la prime de cette personne :
Posons : P : prime de lemploy; S : salaire ; A : anciennet; Mat : matricule de lemploy
Dbut
Lire Mat, S, A
Si A >10
Alors calcul de la prime P = S* 0.04
Fin si
crire Mat, P
Fin
2.2. DEUXIEME CAS
Dans le cas ou la condition nest pas vrifie, nous pouvons avoir dautres instructions
excuter :
12

Tome I : Cours de Fortran

Pr. E. BOUDAIA

Si condition
Alors instruction (s) 1
Sinon instruction (s) 2
Fin si
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
Fin si
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
13

Tome I : Cours de Fortran

Pr. 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
crire 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.
14

Tome I : Cours de Fortran

Pr. 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
crire 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 :

Dbut et Fin de lorganigramme


Lecture et criture (E/S)
Instruction daffectation et opration de traitement
Test conditions avec deux et trois sorties
Nud pour relier les diffrentes parties dun organigramme
Flche pour relier deux schmas
Impression sur imprimante
15

Tome I : Cours de Fortran

Pr. 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
Les instructions ne sont excutes que si la condition est vrifie.

Vraie
Condition
Instructions
Faux

Reprenons lexemple du mme paragraphe dans la partie algorithme :

Dbut
Lire S, Mat, A
A >10
P = S * 0.04
crire Mat, P

Fin
16

Tome I : Cours de Fortran

Pr. E. BOUDAIA

2.2. DEUXIEME CAS


Certaines instructions sont excutes lorsque la condition est vrifie, dautres dans le cas
contraire

Condition
Instruction(s) 1

instruction(s) 2

Reprenons lexemple du mme paragraphe dans la partie algorithme

Dbut
Lire S, Mat, A
0

A<10

P = S* 0.02

P = S* 0.04

crire, Mat, P
Fin

3. INSTRUCTIONS ITERATIVES (BOUCLES)


Quelquefois, il est ncessaire de rpter une partie dinstructions plusieurs fois tant que la
condition pose est vrifie. Deux cas se prsentent nous :

condition

Instructions

instructions

condition

Reprenons le calcul de la prime de 50 employs :

17

Tome I : Cours de Fortran

Pr. E. BOUDAIA

Dbut

Dbut

I=1

I=1

I 50

Lire S, Mat
P = S* 0.04

Lire S, Mat

Fin

crire Mat, P

P = S* 0.04
I=I+1
Ecrire Mat, P
I=I+1

I 50
Fin

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
Fin si
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
Fin si
Imprimer Mat, p
Fait
Fin

18

Tome I : Cours de Fortran

Pr. E. BOUDAIA

Le premier algorithme est traduit en FORTRAN en utilisant linstruction DO WHILE. Le


second est traduit en utilisant linstruction DO.
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

19

Tome I : Cours de Fortran

Pr. 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 lexponentiation 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 pme 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
20

Tome I : Cours de Fortran

Pr. E. BOUDAIA

1.2.2. AFFECTATION ENTRE SOUS - CHAINES


Sa syntaxe est :

Var = expcar

avec : Var : variable chane ou sous - chane caractre.


Exemple : ALI = PROGRAMTION
avec ALI (8 : 9) = MA, la variable ALI devient programmation.
Remarques :
a - les caractres de droite en surnombre dune expression trop longue sont ignors
b - dans le cas ou la chane expcar est infrieure la rceptrice, elle est complte droite par
des blancs.
2. INSTRUCTION PARAMETER
Cest une instruction qui initialise des variables qui seraient utilises dans des affectations ou
dans des dclarations. Ces variables nexisteraient plus aprs la compilation.
Sa syntaxe est :
PARAMETER (Var1= Cst [ , Var2 = Cste 2, ......,VarN = CsteN)]
avec : Var1, Var2,........,Var N : variables. Elles ne devraient pas tre dclares explicitement
par les instructions de dclarations.
Cste1, Cste2,..., CsteN : constantes de types numrique, caractre ou logique.
Exemple :
PARAMETER (u = 10)
READ (u,*) ((a (i, j), i=,10),=1,5
3. INSTRUCTION DINITIALISASTION DES VARIABLES (DATA)
Son rle est dallger le programme en vitant de faire plusieurs affectations. Sa syntaxe est :
DATA Vi1, Vi2,......ViN/ C1,C2,........CN/
avec :
Vii : variables initialiser.
Ci : constantes.
La variable Vi1 est initialise par C1, Vi2 par C2 etc.
Remarques :
a - Dans le cas o nous avons plusieurs constantes identiques successives, il est prfrable
dutiliser un facteur de rptition.
Exemples : Dans une partie dun programme FORTRAN, nous rencontrons ceci :
21

Tome I : Cours de Fortran

Pr. E. BOUDAIA

I=2
J=2
K=2
L=5

Nous utilisons DATA comme suit :


DATA I, J, K, L, / 2, 2, 2, 5 /
Ou, en utilisant le facteur de rptition :
DATA I, J, K, L, / 3*2, 5 /
b - DATA est la dernire instruction de dclaration crire dans un programme.
4. INSTRUCTION DARRET DEXECUTION (STOP)
Cette instruction nest pas obligatoire, nanmoins son utilisation est fort intressante dans la
mesure o cest la dernire instruction excutable dans un programme FORTRAN. Elles
peuvent tre utilises autant de fois que le programme lexige.
Sa syntaxe gnrale est :
[tiq ]STOP [m]
avec :
tiq : constante entire reprsentant ltiquette de STOP.
m : constante entire propre chaque instruction STOP (dans le cas de plusieurs STOP).
5. INSTRUCTION DARRET DE COMPILATION (End)
Sa syntaxe est :

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.
Exemple
22

Tome I : Cours de Fortran

Pr. E. BOUDAIA

DELTA = B*B - 4. * A* C
IF (DELTA) 10, 20, 30
Nous pouvons la reprsenter comme suit :

10

DELTA

30

20

6.2. INSTRUCTION IF LOGIQUE


Cest une instruction qui ralise un test logique sur une expression valeur logique.
Sa syntaxe est :
IF (Explog) instExc
avec :
Explog : expression logique.
InstExc : instruction excutable. Elle nest pas excute que dans le cas ou lvaluation de
lexpression logique est vraie. Elle est dcrite par lorganigramme suivant :

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
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.
23

Tome I : Cours de Fortran

Pr. E. BOUDAIA

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.
F : valeur finale entire positive, ngative ou nulle de la variable VE.
P : pas dincrmentions ou de dcrmentation de la variable VE (diffrente de zro).

24

Tome I : Cours de Fortran

Pr. E. BOUDAIA

Cette instruction se programme en FORTRAN de la faon suivante :

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 V(i) = 1, 10, 2
100 S = S + V(i)
Y=1
DO 50 J = 10, 1, -1
Y = Y+2J
50
CONTINUE
8.2. BOUCLE DO ... WHILE
Cette instruction existe sur beaucoup de compilateurs actuels bien 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

25

Tome I : Cours de Fortran

Pr. 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
26

Tome I : Cours de Fortran

Pr. E. BOUDAIA

10.2. INSTRUCTION READ


10.2.1. SYNTAXE DE LINSTRUCTION READ AVEC FORMAT LIBRE
Nous avons la possibilit de lcrire sous deux formes :
a - Premire syntaxe en format libre
Cest une lecture partir du terminal. Lentre des donnes se fait par le clavier.
READ*, liste
avec :
Liste : liste des variables recevant les valeurs des donnes, spares par des virgules.
Exemples :
1 - READ * M, epsilon, alpha
2 - CHARACTER *17 texte
READ*, texte
Pour ce deuxime exemple, lentre au clavier de la valeur (par exemple : VOICI LE
RESULTAT) de la variable TEXTE du type caractre est faite comme suit :
VOICI LE RESULTAT
b - Deuxime syntaxe avec format libre
La lecture se fait partir de lunit logique.
READ (u, * [ , ERR = tiq 1, END = tiq 2 ])
avec :
u : numro dunit logique, cest une constante ou variable entire positive.
tiq1: tiquette dune instruction excutable vers laquelle est transfr le contrle en cas
derreurs.
tiq2 : tiquette dune instruction excutable vers laquelle est transfr le contrle en cas
dabsence denregistrements en lecture.
Liste : liste de variables simples ou indices.
Exemples :
Lecture dune matrice READ (5,*)((A(I,J),I=1, 10), J=1.15)
Lecture dun vecteur READ (7,*) (X(I), I=1, 100)
Lecture de variables READ (1,*) A, B, C
10.2.2. SYNTAXES DE LINSTRUCTION READ AVEC FORMAT IMPOSE
Deux formes dcritures sont possibles :
Les descriptions de cette instruction ont ts faits prcdemment.
a - PREMIERE SYNTAXE
READ ef, liste
27

Tome I : Cours de Fortran

Pr. E. BOUDAIA

b - DEUXIEME SYNTAXE
READ (u, ef [ , ERR = tiq 1, END = tiq2 ]) liste
avec :
ef : tiquette de linstruction FORMAT.
Exemples :
12-

READ 10, A, B, C, D
10 FORMAT (descripteurs)
READ (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

WRITE (10, 15) ((A(I, J), J = 1, 10), I = 1.10)


FORMAT (descripteurs)
10.4. INSTRUCTION FORMAT

Cette instruction indique la mise en page pour les tats imprims.


Cest une instruction non excutable. Elle fait appel 2 types de descripteurs :
a - descripteurs de traitement des variables dans le cas des conversions, ce sont : I, E, F, L, D, A
28

Tome I : Cours de Fortran

Pr. E. BOUDAIA

b - descripteurs de mise en page et ddition du texte, ce sont : X,, /, H, $


La syntaxe de linstruction FORMAT est :
tiq FORMAT (descripteurs)
avec :
tiq : tiquette pour se brancher linstruction FORMAT
descripteurs : liste de spcification servant prciser le cadrage et les conversions.
10.5. DESCRIPTEURS
10.5.1. DESCRIPTEURS DE TRAITEMENT DES VARIABLES
a - descripteur I
Il est utilis pour les variables entires.
Sa forme gnrale est :
[m] I n
avec :
m : rptiteur
n : entier positif indiquant le nombre de caractres utiliser pour reprsenter lentier sur
lenregistrement.
Si le nombre est suprieur aux nombres de positions indiques par n, il ne sera pas imprim.
ventuellement, les positions seront remplaces par des astrisques.
Exemples :
1-

I =21
WRITE (3,10) I
10 FORMAT (I5)

Ldition donnera : 21 prcd de trois blancs


2-

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-

INTEGER X1, X2, X3


READ (5, 60) X1, X2, X3
60 FORMAT (I2, I4, I3)

Nous faisons entrer par le biais du clavier le nombre : un blanc suivi de 58234651, lattribution
sera ainsi faite :
X1 = un blanc suivis de 5
X2 = 8234
X3 = 651
29

Tome I : Cours de Fortran

Pr. 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

READ (*, 20) X, Y


FORMAT (F10.5, F6.2)

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 et 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
2U = - 2.25267
WRITE (3,5) U
5
FORMAT (E11.3)
Ldition donnera : un blanc suivi de - 0,225E + 01
30

Tome I : Cours de Fortran

Pr. E. BOUDAIA

d - descripteur L
Il est utilis pour le traitement des variables logiques.
Sa forme gnrale est :
[m]L n
avec :
m : rptiteur
n : dsigne le nombre de caractres quoccupe la zone externe.
Gnralement, n est gal 1.
A ldition, droit de la zone sera dit un T (TRUE) si la variable logique est vraie, sinon il
sera dit un F (FALSE).
Example :

10

LOGICAL I, J
I = .TRUE.
J =. FALSE.
WRITE (*, 10) I, J
FORMAT (L2, L3)

Ldition donnera : T suivi de deux blancs suivi de F.


e - descripteur D
Il est utilis pour reprsenter des nombres en double prcision.
Sa forme gnrale est :
[m] Dn. d
avec :
m : rptiteur
n : et d : Voir le descripteur E.
La relation suivante doit tre satisfaite : n d + 7
Exemple : Donner le format du nombre 1.123456789D + 15 ou 1.123456789D15.9
f - descripteur A
Il est utilis pour les variables de type caractre. Il ne fait aucune conversion. Son intrt est de
permettre la lecture et ldition de chanes de caractres. Sa forme gnrale est :
[m] An
avec :
m : rptiteur et
n : longueur de la chane caractres.
Remarques :

31

Tome I : Cours de Fortran

Pr. E. BOUDAIA

1 - En entre (lecture), si n est infrieur aux nombres de caractres que contient la variable
chane de caractre, elle sera tronque gauche. Mais si n est suprieur, les positions de droite
seront compltes par des blancs (absence de caractres).
2 - En sortie (criture), si la zone rserve ldition des caractres est plus grande que la
chane, elle sera complte gauche par des blancs. Mais, si la zone ddition est insuffisante,
la chane sera tronque droite.
Exemples :
1WRITE (1,6) X
FORMAT (A5)

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 :
READ (*, 4) X, Y, Z
FORMAT (A10, A5, A11)

Lattribution sera ainsi faite :


X vaudra : LA SCIENCE
Y vaudra : un blanc suivi de EST suivi dun blanc
Z vaudra : NOTRE ISSUE
10.5.2. DESCRIPTEURS DE MISE EN PAGE ET DEDITION
a - descripteur X
Il permet dinsrer n blancs (ou espaces, n dpend de lordinateur) conscutifs entre deux zones
imprimes dune mme ligne en sortie. Par contre en entre, il permet dignorer le contenu de n
caractres conscutifs.
Sa forme gnrale est :
nX
avec :
n : une constante positive non nulle.
Exemple:
4

WRITE (3.5) R.P


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.
32

Tome I : Cours de Fortran

Pr. E. BOUDAIA

b - descripteur
Il permet ldition de caractres non interprts en sortie.
Exemple :
WRITE (3, 9) R
FORMAT (5X, La valeur de R est : , F8.7)

A ldition, nous aurons 5 blancs puis 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:
WRITE (3.51) U, V
FORMAT (F10.3/E15.7)

51

Ldition donnera : la valeur numrique de U sur 10 caractres en 1er ligne puis la valeur
numrique de V sur 15 caractres en ligne suivante. a quivaut aux 2 instructions suivantes :
WRITE (F10.3), U
WRITE (F15.7), V
d - descripteur T (Tampon)
Le rle de ce descripteur consiste simplement placer le pointeur sur le caractre de position p.
Sa forme gnrale est : Tp
avec : p indique la position du pointeur sur le caractre dordre p.
Exemple:
Read (t2, i3, t7, i1, t9, i2), n, m, q
Si on saisit au clavier la valeur suivante 1234567890
Voici le rsultat :
n vaut 234
m vaut 7
q vaut 90

33

Tome I : Cours de Fortran

Pr. E. BOUDAIA

CHAPITRE IV

LES SOUS-PROGRAMMES ET LES INSTRUCTIONS


DEFFICACITE DE PROGRAMMATION

1. LES SOUS-PROGRAMMES
Deux types de sous programmes sont disponibles dans le langage FORTRAN :
-Les fonctions formules, qui sont des fonctions mathmatiques dj dfinies, cest dire
reconnues par le compilateur.
-Les sous-programmes, dans lesquels nous retrouvons les fonctions, dfinies par linstruction
FUNCTION et les subroutines dfinies par linstruction SUBROUTINE.
2. FONCTIONS FORMULES
Elles sont galement appeles fonctions arithmtiquement dfinies. Ces fonctions dun usage
facile figurent dans le programme principal.
2.1. SYNTAXE
La syntaxe gnrale dune fonction formule est :
NF (pf1, pf2,........, pfn) = EAL
avec :
NF : Nom de Fonction, construit selon les rgles des variables.
pf1, pf2,...pfn : paramtres formels de la fonction; ce sont des variables non indices.
EAL : Expression Arithmtique ou logique.
Remarque :
1. Lappel dune fonction formule provoque, lexcution, lvaluation des paramtres
effectifs (noms de variables simples ou indics, des expressions, etc...) qui doivent
correspondre avec les paramtres formels ainsi que lvaluation de lexpression EAL.
2. Nous pouvons dfinir le type dune fonction implicitement et explicitation (dj vu
prcdemment).
3. Nous devons faire apparatre la dfinition de la fonction dans le programme avant toute
instruction excutable.
4. Il doit y avoir correspondance entre paramtres formels et paramtres effectifs : mme type,
mme nombre et lordre doit tre respect.
34

Tome I : Cours de Fortran

Pr. 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.
35

Tome I : Cours de Fortran

Pr. E. BOUDAIA

3.1.2. SOUS-PROGRAMME FUNCTION


Les sous - programmes dfinis par linstruction FUNTION permettent dcrire des squences
dinstructions diffrentes de celles du programme principal.
La structure gnrale est :
[dclaration] FUNCTION nomfct (arg1, [ , arg2,.......argn ])
Dclarations
Instructions excutables
END
La dernire instruction excutable doit tre RETURN.
Sa syntaxe est :
[tiq]
RETURN
Elle transmet le rsultat numrique de la fonction au programme qui lui fait appel ainsi que le
retour ce programme.
Ltiquette est rarement utilisable.
3.1.3. EXEMPLE
Dfinir une fonction produit des M (M1) premiers nombres entiers.
INTEGER FUNCTION PROD (M)
PROD = 1
DO20N= 2, M
20 PROD = PROD*N
RETURN
END
3.2. SYNTAXE DE SUBROUTINE
Sa syntaxe est :
SUBROUTINE nomsub [(arg1, arg2,...argn ])
avec :
nomsub : nom de la subroutine, pour lequel sappliquent les mmes rgles dictes aux variables.
arg1, arg2,...argn : arguments formels ; ce sont des variables simples ou indices, de sousprogrammes ou de fonctions.
Nous remarquerons que tous les arguments sont facultatifs, contrairement FUNCTION ou au
moins un argument doit figurer.
3.2.1. APPEL DE SUBROUTINE DANS UN PROGRAMME PRINCIPALE
Lappel se fait par lintermdiaire de linstruction CALL. Cet appel se fait soit dans un
programme principal, soit dans un sous - programme.
La syntaxe dappel est :
36

Tome I : Cours de Fortran

Pr. E. BOUDAIA

CALL nomsub [(par1, par2,..., parn)]


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
crire un sous-programme SUBROUTINE calculant le produit des lments positifs et la
somme des lments ngatifs dun tableau A (50).

10

SUBROUTINE TABL (A, PP, SN)


DIMENSION A(50)
PP = 1
SN = 0
DO10 I = 1,50
IF (A(I).L.T.0.)THEN
PP = PP * A(I)
ELSE
SN = SN + A(I)
ENDIF
CONTINUE
RETURN
END

3.3. INSTRUCTION DE DECLARATION EXTERNAL


Cest une instruction de dclaration non excutable.
Sa syntaxe est :
EXTERNAL nomft1 [ , nomf2,........, nomefn]
37

Tome I : Cours de Fortran

Pr. E. BOUDAIA

avec :
nomf1, nomf2,..., nomefn : nom effectifs de sous - programmes ou de fonctions.
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

II. INSTRUCTIONS DEFFICACITE DE PROGRAMMATION


1. INSTRUCTION COMMON
Cette instruction a pour but de minimiser la perte de temps provoqu par les appels darguments
dans un sous-programme.
Pour cela, elle cre des zones communes de donnes et tablit une correspondance entre des
variables de programmes et sous - programmes et sous - programmes diffrents. Elle se
prsente sous deux formes : le COMMON blanc et le COMMON tiquet.
1.1. COMMON BLANC
Sa syntaxe est :
COMMON liste
avec :
liste : liste de variables simples ou indices.
Dans ce cas, les mmoires alloues aux variables sont situes dans une zone commune partir
du dbut de cette zone. En plus de son rle dallocation de mmoire, linstruction COMMON
puisquelle peut dclarer la dimension des variables indices.
Exemple :
Dans un programme principal, nous rencontrons : COMMON I, J et dans un sous-programme :
INTEGER X
COMMON X (3)
La correspondance entre ces variables sera :
38

Tome I : Cours de Fortran

Pr. E. BOUDAIA

Au dbut de la zone commune, nous aurons : I et X (1); dans la zone commune suivante : J et X
(2), dans celles qui suit : X(3).
1.2. COMMON ETIQUETTE
Sa syntaxe est :
COMMON [/[nom1]/]liste1[ ,/[nom2]/,........,/[nomN]/listeN]
avec :
nom1,..., nom2, N : noms de zones de donnes communes.
liste1,..., liste N : liste de noms de variables simples ou indices sans paramtres formels.
Cette instruction permet de constituer N zones communes dans lesquelles peuvent tre ranges
les variables des listes.
Exemple :
Soit un programme utilisant les variables : I, J, K, L, M, N. Un premier sous - programme
utilise les variables J, L, M, N, un second utilise I, J, L.
Les listes auxquelles nous faisons appel peuvent tre dclares ainsi :
Dans un programme principal :
COMMON J, L / zone 1/ M, N/ zone 2/I/zone3/K
Dans le premier sous-programme :
COMMON J, L / zone 1/ M, N
Dans le second sous-programme :
COMM J, L / zone2 / I
2. INSTRUCTION EQUIVALENCE
Elle permet de rserver pour un mme programme, la mme place en mmoire des variables
de noms distincts mais de mmes types (ventuellement le type peut tre distinct dans certains
compilateurs).
Nous dduisons du fait quune mme variable physique peut avoir plusieurs noms distincts. Elle
permet donc de faire gagner de lespace mmoire.
Sa syntaxe est :
EQUIVALENCE (liste1) [, (liste2),... (listeN)]
avec :
liste : liste de variable simples ou indices. Pour ces dernires les indices doivent tre des
constantes.
Exemple :
INTEGER VECT (2), TAB (2,2)
EUIVALENCE (VECT(1), I, J), (TABL(1,2), K)
39

Tome I : Cours de Fortran

Pr. E. BOUDAIA

VECT (1), I, J, sont les noms diffrents la mme zone


TABL (1,2) et identifient aussi la mme zone.
3. INSTRUCTION BLOCK DATA
Cette instruction a pour rle linitialisation des variables de la zone commune (COMMON).
Elle a lallure dun sous-programme.
Sa syntaxe est :
BLOCK DATA
Instructions de spcification de type
DIMENSION
COMMON
(EQUIVALANCE)
DATA
END
Linstruction EQUIVALENCE est facultative.
Exemple :
BLOCK DATA
COMMON X, A(2), Y
INTEGER Y
DATA X, A, Y / 2, 3.5, 4., 5 /
END

40

Tome I : Cours de Fortran

Pr. 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 )
41

Tome I : Cours de Fortran

Pr. E. BOUDAIA

3.2. STATUS = expression


avec expression peut tre :
STATUS = NEW
Indique au systme que le fichier nexiste pas, il faut donc le crer.
Exemple :
OPEN (7, STATUS = NEW, FILE = fichier.res)
STATUS = OLD
Indique au systme que le fichier existe dj
Exemple:
OPEN (7, DTATUS = OLD, FILE = fichier.res)
STATUS = SCRATCH
Le systme cre un nouveau fichier dit temporaire, et le dtruit aprs dconnections. Ce fichier
est caractris par labsence de nom.
Exemple:
OPEN (1, STATUS = SCRATCH)
STATUS = UNKNOWN
Si le fichier existe dj, le systme lutilise, sinon il le cre.
3.3. ACCES = expression
avec expression qui peut tre :
ACCES = SEQUENTIAL
Cest une valeur prise par dfaut pour considrer le fichier comme tant squentiel.
ACCES = DIRECT
Prcise que le fichier est accs direct.
3.4. FORM = expression
avec expression qui peut tre :
FORM = UNFORMATTED
Indique que les enregistrements ne sont pas formats.
42

Tome I : Cours de Fortran

Pr. E. BOUDAIA

FORM = FORMATTED
Dans ce sas les enregistrements sont formats.
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 dconnection 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

43

Tome I : Cours de Fortran

Pr. E. BOUDAIA

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
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.

44

Tome I : Cours de Fortran

Pr. E. BOUDAIA

ANNEXE

FONCTIONS ARITHMTIQUES

1. FONCTIONS DE CONVERSIONS
a - Rels en entiers
INT(X) : troncature
IFIX(X) : flottant en fixe
DINT (X) : double prcisions en entier
b- Entiers en rels
FLOAT(X) : entier en rel
DFLOAT (X) : entier en double prcision
c - Rels en complexes
CMPLX (X, Y) : rsultat complexe
2. RESTE DUNE DIVISION
MOD (X, Y) : X, Y entier; le reste est entier
AMOD (X, Y) : X, Y rels ; le reste est rel
DMOD (X, Y) : X, Y double prcision; le reste est double prcision
3. VALEUR ABSOLUE
ABS (X) : X rel
IABS(X) : X entier
DABS(X) : X double prcision
CABS (X) : X complexe
RACINE CARREE
SQRT(X) : X rel 0
DSQRT (X) : X double prcision 0
CSQRT (X) : X complexe
5. EXPONNENTIELLE
EXP (X) : X rel
DEXP(X) : X double prcision
CEXP (X) : X complexe
45

Tome I : Cours de Fortran

Pr. E. BOUDAIA

6. LOGARITHMES
a- logarithmes Nprien
ALOG(X)
DLOG (X)
CLOG(X)

b - logarithmes dcimaux argument


ALOG 10(X)
DLOG 10(X)

c- argument
X rel
X double prcision
X complexe

7. TRIGONOMETRIE
a - sinus
SIN(X)
DSIN(X)
CSIN(X)

b - cosinus
COS(X)
DCOS (X)
CCOS(X)

c - tangente
TAN(X)
DTAN (X)

d- argument
X rel
X double rel
X complexe

8. TRIGONOMETRIE INVERSE
a - arc sinus
ARCSIN (X)

X rel

b - arc cosinus
ARCCOS (X) X rel
c - arc tangent
ATAN (X)
X [- /2, + / 2]
DATAN(X)
X [- /2, + / 2]
ATAN2
X [- , + ]
DATAN2(X) X [- , + ]
9 - MAXIMUM
AMAXO (X, Y, Z,...) X, Y, Z, ...: entiers, rsultat rel
AMAX1 (X, Y, Z,...) X, Y, Z, ...: rels, rsultat rel
MAXO (X, Y, Z,...) X, Y, Z, ...: entiers, rsultat entier
MAX1 (X, Y, Z,...) X, Y, Z, ...: rels, rsultat entier
10 - MINIMUM
AMINO (X, Y, Z, ....) X, Y, Z, ... : entiers, rsultat rel
AMIN1 (X, Y, Z, ....) X, Y, Z, ... : rel, rsultat entiers
MINO (X, Y, Z, ....) X, Y, Z, ... : entiers, rsultat entiers
MIN1 (X, Y, Z, ....) X, Y, Z, ... : entiers, rsultat entiers
11. PARTIES REELLES ET IMAGINAIRE DUN COMPLEXE
REAL (X) : X complexe, rsultat rel (partie relle)
AIMAG (X) : X complexe, rsultat rel (partie imaginaire).
46