Documente Academic
Documente Profesional
Documente Cultură
Pr. E. BOUDAIA
CHAPITRE I
GENERALITES
CHAPITRE II
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
CHAPITRE III
Pr. E. BOUDAIA
Pr. E. BOUDAIA
LES FICHIERS
FONCTIONS ARITHMETIQUES
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
Pr. E. BOUDAIA
Exemples : 55.159874D-5
Pr. E. BOUDAIA
-5D+6
lectronique
llment
Pr. E. BOUDAIA
Pr. E. BOUDAIA
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
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
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
Pr. E. BOUDAIA
CHAPITRE II
Pr. E. BOUDAIA
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
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
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 :
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
Dbut
Lire S, Mat, A
A >10
P = S * 0.04
crire Mat, P
Fin
16
Pr. E. BOUDAIA
Condition
Instruction(s) 1
instruction(s) 2
Dbut
Lire S, Mat, A
0
A<10
P = S* 0.02
P = S* 0.04
crire, Mat, P
Fin
condition
Instructions
instructions
condition
17
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
Pr. E. BOUDAIA
P = S* 0.03
Ecrire Mat. P
I=I+1
Fin
19
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
Pr. E. BOUDAIA
Var = expcar
Pr. 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.
Exemple
22
Pr. E. BOUDAIA
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
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
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
Pr. 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 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
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
Pr. E. BOUDAIA
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)
15
Pr. E. BOUDAIA
I =21
WRITE (3,10) I
10 FORMAT (I5)
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-
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
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
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
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)
31
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)
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
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
Pr. E. BOUDAIA
CHAPITRE IV
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
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
Pr. E. BOUDAIA
Pr. E. BOUDAIA
10
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
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
Pr. E. BOUDAIA
40
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
Pr. E. BOUDAIA
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
43
Pr. E. BOUDAIA
44
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
Pr. E. BOUDAIA
6. LOGARITHMES
a- logarithmes Nprien
ALOG(X)
DLOG (X)
CLOG(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