Vous êtes sur la page 1sur 40

Le langage de programmation FORTRAN

REPUBLIQUE ALGERIEE DEMOCRATIQUE ET POPULAIRE


MINISRERE DE LENSEIGNEMENT SUPERIEUR ET DE LA RECHERCHE SCIENTIFIQUE

UNIVERSITE DE GUELMA DEPARTEMENT DE GENIE CIVIL

ANNEE : 3EME ANNEE LMD SPECIALITE : GENIE CIVIL

ELABORE PAR: Mr LAFIFI BRAHIM

ANNEE UNIVERSITAIRE : 2007/2008

Elabor par Mr B. LAFIFI

Le langage de programmation FORTRAN

PROGRAMME

Chapitre I :
Introduction au langage FORTRAN

Chapitre II :
Les constantes et les variables

Chapitre III :
Les oprateurs et expressions

Chapitre IV :
Les instructions de branchement GO TO et IF

Chapitre V :
Les boucles de programme : linstruction de contrle DO

Chapitre VI :
Les instructions dentres sorties

Chapitre VII :
Les sous programmes

Elabor par Mr B. LAFIFI

Le langage de programmation FORTRAN

Chapitre I
Introduction au langage de Programmation FORTRAN

I.1. Historique
Le FORTRAN ou FORmula TRANslator est un langage de programmation particulirement destin au traitement des applications scientifiques telles que les statistiques, le calcul numrique, la simulation, etc. En 1954, la Compagnie International Business Machines (IBM) publie la description prliminaire dun systme de FORmulation mathmatique TRANspose, cest la premire tentative pour dfinir un langage de programmation volu. Ce FORTRAN est encore rudimentaire, ainsi par exemple, les noms de variables ont au plus 2 caractres. A cette poque, des travaux dlaboration dun compilateur (traducteur) pour IBM commencent, cependant que continue la rflexion autour de lamlioration du langage lui mme. En 1956, parait le premier manuel de rfrence IBM qui dfinit la premire version du langage : FORTAN I. Cette version reoit la version initiale : - Noms de variables 6 caractres ; - Instructions : CONTINUE, GO TO, FORMAT ; En 1957, parution de la deuxime version FORTRAN II. Ce FORTRAN reoit les sousprogrammes, les fonctions et les COMMON. En 1958, mise au point de la troisime version FORTRAN III. En 1962, FORTRAN IV voit le jour avec en plus : - Les dclarations explicites ; - Linstruction DATA ; - Linstruction BLOCK DATA ; En 1977, une version trs dveloppe de FORTRAN est parue sous le nom de FORTRAN 77 ou FORTRAN V. Ce dernier adopte un schma dalternative structur (IF-THEN-ELSE-ENDIF) liminant une bonne part des GO TO et il dispose des donnes de type CHARACTER.

I.2. Elaboration d'un programme


Un programme Fortran ncessite trois types de fichiers pour son laboration :
Les fichiers source (extension .FOR, .F90 sous MS-D OS ou WINDOWS) Les fichiers objet (extension .OBJ sous MS-DOS) Le fichier excutable (extension .EXE sous MS-DOS ou WINDOWS).

Le programmeur crit le fichier source l'aide d'un diteur de texte de son choix. Il s'agit d'un texte clair, contenant toutes les instructions du programme. Le fichier source doit ensuite tre

Elabor par Mr B. LAFIFI

Le langage de programmation FORTRAN

compil, c'est dire traduit en langage machine. C'est le rle du compilateur. Chaque langage possde d'ailleurs un compilateur propre. Le fichier obtenu aprs compilation est un fichier objet, pas encore excutable. L'diteur de liens se chargeant de les lier et de les rendre excutables. Toute modification, correction d'un programme passe tout d'abord par la modification du fichier source. Ce fichier doit tre ensuite recompil, ce qui permet d'obtenir un fichier objet mis jour. Dans un cas simple, sur un compatible PC, on crit le programme que nous appellerons par exemple PROG.FOR l'aide d'un diteur de texte au choix. On sauvegarde le fichier source sur le disque dur en lui donnant un nom respectant les conditions du systme d'exploitation utilis. L'extension utilise est gnralement .FOR sous MS-DOS. Le compilateur traduit les instructions qui ont t tapes par le programmeur et produit, si aucune erreur n'a t faite, en langage machine. La traduction est place dans un fichier objet dont le nom est identique celui du fichier source, mais dont l'extension est cette fois .OBJ sous DOS.

I.3. Structure d'un programme


Un programme comporte gnralement plusieurs modules (sous-programmes). Ces modules peuvent figurer dans un mme fichier ou dans des fichiers diffrents. Lorsque les modules figurent dans des fichiers individuels, il est possible, et c'est mme fortement conseill, de les rutiliser dans d'autres programmes. Un ensemble de modules doit, pour pouvoir tre excut, comporter un programme principal. Le programme principal peut faire appel des procdures et des fonctions qui peuvent faire de mme. Un module comporte diffrentes parties :
L'entte ou le nom du module. En FORTRAN on peut trouver: PROGRAM nom du programme pour le programme principal SUBROUTINE (Liste de paramtres) pour un sous-programme FUNCTION (Liste de paramtres) pour une fonction Les dclarations des paramtres, s'il y a lieu Les dclarations des variables Les initialisations et dclarations particulires. Les instructions excutables. C'est la traduction en langage (FORTRAN) de l'algorithme. l'instruction FIN de module. En FORTRAN, il s'agit de END.

Attention, dans un fichier comportant plusieurs modules, il y aura autant d'instructions FIN que de modules.

I.4. Elments de base du langage


Lorsque l'on crit un programme, on utilise les lettres de l'alphabet, les chiffres et quelques signes. Les caractres reconnus par le compilateur sont :
Les 36

caractres alphanumriques: les 10 chiffres dcimaux et les 26 lettres de l'alphabet Les caractres spciaux:

Elabor par Mr B. LAFIFI

Le langage de programmation FORTRAN

= signe gal , + plus , - moins , * toile, / barre de fraction , ( parenthses) , , virgule , . point , ' apostrophe, : double point

I.5. Les mots-cl du langage


Leur nombre est limit. Ils constituent le vocabulaire reconnu par le compilateur. Toute autre chane de caractres est considre comme nom de procdure, de constante, de variable ou bien comme commentaire. Exemple de mots-cl:
DATA, READ, WRITE, CONTINUE, GO TO, IF, THEN, COMMON.

I.6. Structure d'une ligne FORTRAN


Un texte FORTRAN scrit en revenant la ligne aprs chaque instruction. Une ligne dun programme FORTRAN est forme de 72 caractres (ou 72 colonnes). - Les colonnes 15 sont rserves aux tiquettes ou une ligne commentaire avec le caractre C la premire colonne. - La colonne 6 est rserve seulement aux lignes de continuation. Dans ce cas, on met un caractre quelconque dans cette colonne et le compilateur comprendra que cette ligne est la suite de la ligne prcdente, le nombre de lignes de continuation ne peut en aucun cas excder 19. - Les colonnes 7.72 sont rserves aux instructions FORTRAN. - Les colonnes 73 80 sont ignores par le compilateur. Exemple : Colonnes 1 C 10 6 7 72 LECTURE DES DONNEES WRITE(*,10) FORMAT(1X, ENTRER LA VALEUR DU & NOMBRE DE POINTS :,\) READ(*,*) M STOP END 73

I.7. Les Commentaires


Lorsque le caractre C ou * figure dans la premire colonne, la ligne entire est suppose tre un commentaire, et le compilateur l'ignore. Une ligne vide est galement considre comme commentaire par le compilateur. Il est conseill de faire usage autant que possible des ommentaires, afin de rendre le programme plus lisible. La notice d'utilisation du module figurera sous forme de commentaire en en-tte, et de ce fait ne quittera pas le programme.

Elabor par Mr B. LAFIFI

Le langage de programmation FORTRAN

I.8. Les identificateurs


Un identificateur est un nom que le programmeur attribue une variable, un sousprogramme ou une fonction. En principe, il ne peut comporter plus de 6 caractres, mais certains compilateurs en admettent d'avantage. Si l'on utilise un identificateur faisant plus de 6 caractres, les derniers sont au pire ignors par le compilateur, et il peut confondre deux variables distinctes. Il ne faut pas choisir pour nom de variable un mot rserv. Les mots rservs sont les instructions de structuration et des noms de fonctions standard. Les majuscules et minuscules sont confondus par le langage. On peut donc styliser les noms de variables par un usage combin de majuscules et de minuscules. Exemples :
TOTAL RACINE I1

Les noms suivants ne sont pas valables :


SOUSTOTAL (Admissible, mais comporte plus de 6 car.) 3I9 (Commence par un chiffre) A.B (Comporte un point) PAUSE (Mot rserv du langage)

Elabor par Mr B. LAFIFI

Le langage de programmation FORTRAN

Chapitre II
Les constantes et les variables II.1 Les Constantes
II.1.1 Dfinition Une constante est une valeur qui ne peut tre modifie lors de lexcution dun programme. Cette valeur peut tre numrique, chane de caractres ou logique. II.1.2 Constantes entires C'est une suite de chiffres prcde ou non d'un signe, ne pouvant comporter aucun autre caractre. Exemples :
123 -18 +4

II.1.3 Constantes relles On peut les trouver sous la forme simple prcision ou double prcision. On peut les prsenter de deux manires :
Constante relle

virgule fixe : Cest une chane de chiffres comportant obligatoirement un seul point dcimal, pouvant tre prcde d'un signe. Exemples :
3.14 -6.28 .7 0.
Constante relle

virgule flottante. La prsentation reste identique la prcdente, mais on rajoute en fin de chane un exposant comportant pour la simple prcision la lettre E suivie d'une constante entire signe de deux chiffres. En ce qui concerne la double prcision, l'exposant commencera par la lettre D et pourra comporter 3 chiffres. Exemples :
128.34E+02 -.432E-06 1.23267453274D+03

Elabor par Mr B. LAFIFI

Le langage de programmation FORTRAN

II.1.4 Constantes complexes Une constante complexe se prsente sous la forme d'un doublet de deux rels placs entre parenthses. Les deux rels sont spars par une virgule, le premier reprsentant la partie relle, le second la partie imaginaire. Exemples :
(20.0, -3.14) (0.,0.) (1.E01,1.23E-02)

Les rels formant le complexe doivent tre de mme nature, soit en simple ou en double prcision. II.1.5 Constantes logiques Une constante logique n'a que deux valeurs possibles : .TRUE. .FALSE. II.1.6 Constantes chanes de caractres C'est une suite de caractres quelconques encadre par l'apostrophe '. On utilise ces constantes pour composer des messages ou initialiser des chanes. Attention : Le franais fait un usage courant de l'apostrophe, ceci peut poser un problme lors de l'affichage de certains messages. Exemples :
WRITE(*,*)'LUNDI 1 JANVIER 1990'

Contre-exemple :
WRITE(*,*)'L'affichage d'apostrophes va poser des problmes!'

Ce problme peut tre rgl par le double apostrophe :


WRITE(*,*)'L''affichage d''apostrophes ne pose plus de problme!'

II.1.7 Dclaration des constantes En FORTRAN, les constantes n'ont pas de nom. Les dclarations de constantes n'existent donc pas. Cependant, il peut-tre utile de nommer des constantes, ce qui permet de les dcrire en dbut de programme, et de les localiser tout de suite pour une modification. On utilise pour cel la dclaration PARAMETER. Exemple :
Parameter PI = 3.14159

Elabor par Mr B. LAFIFI

Le langage de programmation FORTRAN

II.2 Les variables


II.2.1 Variables simples Une variable est une quantit susceptible de prendre diverses valeurs au cours dun programme de calcul. Il est ncessaire de la reprsenter par un nom symbolique qui est son identificateur. Les identificateurs ou noms de variables sont constitus par une suite de 1 6 ou 1 8 caractres alphanumriques, le premier caractre gauche est toujours une lettre. Cependant, tout nom form suivant cette rgle nest pas acceptable par le compilateur comme nom de variable, si cest un mot rserv du FORTRAN, par exemple : COS est lidentificateur de la fonction cosinus et ne peut donc tre pris comme nom de variable. Une variable peut tre de type entier, rel, double prcision, complexe, logique ou chane de caractres. a. Les variables entires : Leur nom commence par lune des lettres I, J, K, L, M, N ou sont dclares dans une instruction de type INTEGER qui doit figurer au dbut du programme. Exemple : INTEGER X1, X2, Y, Z INTEGER*4 X b. Les variables relles : Leur nom commence par une lettre autre que I, J, K, L, M, N, ou sont dclares dans une instruction de type REAL qui doit figurer au dbut du programme. Exemple : REAL IJ IJ est une variable de type rel. REAL SIGMAXX, SIGMAYY, SIGMAZZ c. Les variables double prcision : Elles doivent obligatoirement figurer dans une dclaration de type DOUBLE PRECISION en tte du programme. Exemple : DOUBLE PRECISION V1, V2, V3 d. Les variables complexes : Elles doivent obligatoirement figurer dans une dclaration de type COMPLEX en tte du programme. V1, V2, V3 : sont des variables de type double prcision X1, X2, Y, Z sont des variables de type entier. X est une variable entire stocke sur 4 octets.

Elabor par Mr B. LAFIFI

Le langage de programmation FORTRAN

Exemple : COMPLEX Z1, Z2, Z3 COMPLEX CX CX = (5.0,1.0) Z1, Z2, Z3 : sont des variables de type complexe.

e. Les variables chane de caractres : Elles sont constitues de chiffres, lettres, caractres spciaux pris dans lensemble des caractres imprimables du code ASCII. Elles sont dclares par linstruction CHARACTER en spcifiant leur longueur. Exemple : CHARACTER*20 NOM, PRENOM NOM et PRENOM sont des variables chanes de 20 caractres de longueur chacune. CHARACTER CH*3, D1*4, ST*15 La variable CH contient 3 caractres, D1 en contient 4, ST a pour longueur 15 caractres. La dclaration implicite : Lorsque lon a une longue liste de variables dun type donn dclarer, il est commode dutiliser la dclaration IMPLICIT. Exemple : IMPLICIT COMPLEX C Toutes les variables dont le nom commence par la lettre C ou c sont de type complexe. IMPLICIT DOUBLE PRECISION (A-C,H , K,O-Z) Toutes les variables dont le nom commence par H,K ou toutes les lettres comprises entre A et C et entre O et Z sont de type double prcision. II.2.2 Les tableaux (Variables indices) Un tableau FORTRAN est un ensemble de variables indices, identifi par un seul nom de variable. Les noms de tableau obissent aux mmes lois de construction et de type que les noms de variables simples. Un lment du tableau est reprsent par le nom du tableau suivi de 1 7 indices placs entre parenthses et spars par des virgules. Exemple : A(1,2) , B(I,J,K), C(3*I+7) , D(I(K,L)+M).

Elabor par Mr B. LAFIFI

10

Le langage de programmation FORTRAN

Un indice peut tre une constante, une variable ou une expression arithmtique entire, pouvant ventuellement contenir des variables indices. Toutes les variables dun mme tableau sont du mme type ; celui du nom du tableau. Il est ncessaire dindiquer en dbut du programme la taille maximale du tableau, ce qui se fait par linstruction DIMENSION. Exemple : DIMENSION A(10), I(5,7), B(-5 :20), K(2,3,0 :10) Le tableau A est un vecteur rel: lindice varie de 1 10. Le tableau I est une matrice de variables entires, le premier indice varie de 1 5, le deuxime varie de 1 7. Le tableau B est un vecteur rel dont lindice varie de -5 20. Le tableau K est un tableau entier 3 dimensions, les 2 premiers indices varient respectivement de 1 2 et de 1 3, le troisime varie de 0 10. La valeur minimale de chaque indice nest prciser que lorsquelle diffre de 1, elle est alors spare de la valeur maximale par le ( :), sinon elle est facultative. Remarque : Les deux dclarations : REAL I DIMENSION I(10) peuvent se regrouper en : REAL I(10). Linstruction DIMENSION a deux effets : - elle rserve en mmoire le nombre de places indiques pour les variables indices correspondantes, selon leur type. - Elle permet de retrouver ladresse en mmoire de tout lment du tableau. Exemple : DIMENSION A(2,5) Elle rserve 2*5 = 10 places de rels en mmoire et indique que A est un tableau rectangulaire rel de 2 lignes et 5 colonnes. En mmoire, le tableau est rang en ligne de la faon suivante : A(1,1)/ A(2,1)/ A(1,2)/ A(2,2)/ A(1,3)/ A(2,3)/ A(1,4)/ A(2,4)/ A(1,5)/ A(2,5) Cest le premier indice qui varie le premier. Llment A(I,J) sera donc plac dans le tableau la 2*(J-1)+I me place. II.2.3 Linstruction DATA Elle permet dinitialiser des variables indices ou non. Sa forme gnrale est : DATA V1, V2, .., Vn/ C1, C2, ..Cn ou DATA V1/C1/, V2/C2/, ., Vn/Cn/. Les Vi sont les variables initialiser et les Ci leurs valeurs. Si plusieurs variables successives ont des valeurs identiques C, on peut utiliser un facteur de rptition : k*C. Pour initialiser un tableau, il suffit dindiquer son nom et les valeurs de tous ses lments.
Elabor par Mr B. LAFIFI

11

Le langage de programmation FORTRAN

Exemple : DIMENSION A(2,3) DATA A/1.,2*1.5,3*0./


1. Ce qui correspond la matrice A = 1.5 1.5 0. 0. 0.

Elabor par Mr B. LAFIFI

12

Le langage de programmation FORTRAN

Chapitre III
Les oprateurs et expressions

III.1. Oprateurs arithmtiques


Ils permettent lexcution des oprations usuelles : Oprateur + * / ** Exemple : 2. + 3. donne 2. 3. donne 2. * 3. donne 2. / 3. donne 2. ** 3. donne 5. -1. 6. 0.666667 8. Opration addition soustraction multiplication division puissance

III.1.1. Hirarchie et formules Pour pouvoir ordonner une suite doprations, il faut savoir dans quel ordre elles vont tre effectues : par exemple le rsultat de : 3. + 2.* 5. sera t il 25. (3. + 2. = 5. ; 5. * 5. = 25. ) ou 13. ( 2.* 5. = 10. ; 10. + 3. = 13.) La hirarchie est la suivante : les calculs effectus en premier sont ceux placs entre parenthses, en commenant par les parenthses les plus internes. Viennent ensuite les lvations une puissance, puis les divisions et multiplications, enfin additions et soustractions. Le rsultat de la suite doprations ci-dessus sera donc 13. A hirarchie gale, les oprations sont effectues de gauche droite, en cas de doute mieux vaut introduire de parenthses ou couper la formule en morceaux en utilisant quelques variables supplmentaires.

III.2. Oprateurs de relation


Ils expriment une condition arithmtique qui peut tre vraie ou fausse.

Elabor par Mr B. LAFIFI

13

Le langage de programmation FORTRAN

III.3. Oprateurs logiques


Oprateur .NOT. .AND. .OR. .EQV. .NEQV. Opration Ngation logique Et logique Ou logique Equivalence logique Non quivalence logique

Les oprandes doivent tre des expressions de type LOGICAL III.3.1. Les tables de vrit Oprateur de ngation

Elabor par Mr B. LAFIFI

14

Le langage de programmation FORTRAN

Autres oprateurs

III.4. Oprateur daffectation


Syntaxe gnrale : Variable = expression Exemple : Y = A*X + B Rgles : 1- Une valeur de type CHARACTER ne peut pas tre affecte une variable numrique et vice-versa. 2- Une valeur de type INTEGER peut tre affecte une variable de type REAL. 3- Une valeur de type REAL peut galement tre affecte une variable de type INTEGER, mais dans ce cas la valeur est alors tronque en supprimant la partie fractionnaire.

Elabor par Mr B. LAFIFI

15

Le langage de programmation FORTRAN

Exemple :

III.5. Expressions arithmtiques


Une expression arithmtique est construite partir doprateurs arithmtiques et doprandes qui peuvent tre des constantes, des variables et de fonctions. Les lments intervenant dans lexpression doivent tre spars par un oprateur arithmtique. Tous les calculs effectuer doivent tre reprsents par un oprateur. Deux oprateurs ne peuvent apparatre conscutivement (A * - B) est incorrect, il faut crire : A * (-B), des parenthses doivent tre utilises. Exemple : B2 4.A.C 2 U n 1 U n a.x + b c.x + d scrit scrit B**2 4*A*C U(N 1) U(N) * U(N) ou U(N 1) U(N)**2

scrit

(A*X + B)/(C*X + D)

Dans une suite doprations de mme niveau, les calculs sont effectus de gauche droite sauf dans les cas dlvations successives une puissance o les oprations sont effectues de droite gauche.
Exemple :

A**B**C A + B/C**D/E*F

calcul de a = B**C, puis de A**a. calcul de a = C**D, puis b = B/a, puis c = b/E, puis d = c*F et enfin e=A + d

III.5.1. Hirarchie des types numriques

Un oprande de type complexe sera considr comme plus lev dans la hirarchie quun oprande double prcision, lui-mme plus lev quun oprande de type rel, le type le plus bas dans la hirarchie tant le type entier. Loprande de type le plus bas dans la hirarchie sera dans un premier temps converti au type de lautre oprande : le rsultat sera donc du type de loprande de valeur hirarchique la plus leve.

Elabor par Mr B. LAFIFI

16

Le langage de programmation FORTRAN

Exemple : - Pour calculer 3*X - 3 est dabord converti en rel, - puis le produit est effectu, - le rsultat obtenu est un rel. - Pour calculer 3.E-5 - 2.D-6 - La premire constante est transforme en double prcision et le rsultat de la soustraction est obtenu en double prcision. - Le calcul de 2/3 se fait directement puisque les deux oprandes sont de mme type, on obtient 0. - De mme le calcul de (2/3)*6 donne 0, alors que le rsultat de 2*6/3 vaut 4. III.6. Fonctions usuelles de la bibliothque FORTRAN Le FORTRAN met la disposition des utilisateurs une bibliothque de fonctions dusage courant telles que COSINUS, SINUS, racine carre .. Le ou les arguments de la fonction peuvent tre nimporte quelle expression arithmtique. Une fonction est appele simplement par son nom suivi de ses arguments entre parenthses. Exemple : DELTA = SQRT (B**2 4.*A*C) V = R*I*SIN (OMEGA*T + PHI) pour pour
= b 2 4.a.c v = R.i.Sin ( w.t + )

Les noms des fonctions de la bibliothque sont des noms rservs et ne peuvent tre utiliss comme nom de variables. Remarque : On doit respecter le type des arguments, par exemple pour calculer la racine carre dun entier, il faut crire SQRT (4.) ou SQRT (FLOAT (I)) et non pas SQRT (4) ou SQRT (I).

Elabor par Mr B. LAFIFI

17

Le langage de programmation FORTRAN

Chapitre IV :
Les instructions de branchement GO TO et IF
IV.1. Gnralits : Le FORTRAN comporte une catgorie dinstructions appeles instructions de contrle , cette catgorie qui englobe les instructions de branchement, contient 8 types dinstructions : - Instruction GO TO inconditionnel, - Instruction GO TO conditionnel (calcul), - IF arithmtique, - IF logique, - DO, - Continue, - Instruction de contrle de programme STOP et PAUSE, - Instruction dappel de sous programme CALL, - Instruction de retour de sous-programme RETURN, IV.2. Linstruction GO TO : Cette instruction de branchement se prsente sous deux formes : - GO TO inconditionnel, - GO TO calcul (conditionnel), IV.2.1. GO TO inconditionnel : Cest linstruction de branchement une tiquette E. Sa forme gnrale est : GO TO E O E est le numro dune instruction figurant dans le programme, linstruction excute aprs le GO TO sera linstruction dtiquette E. Exemple : I=0 I=i+1 WRITE (*,*) I GOTO 10

10

IV.2.1. GOTO calcul : Cest une instruction de branchement conditionnel. Sa forme gnrale est : GO TO (k1, k2,..,kn), I Avec : I: variable entire positive K1, k2,...,kn : sont des tiquettes. Lexcution de cette instruction provoque un branchement

Elabor par Mr B. LAFIFI

18

Le langage de programmation FORTRAN

A ltiquette k1 si I=1 A ltiquette k2 si I=2 A ltiquette kn si I=n Cette instruction entrane une erreur lexcution si I peut tre nest pas satisfaite : 1 I N Il est dconseill dutiliser cette instruction si I peut tre en dehors de lintervalle [1 , N ] . Exemple : Soit calculer Z, dfini par : si L = 1 ou 3. Z = R2 Z=R+D si L = 2. Z = R2 + D + 5 si L = 4. Le programme FORTRAN correspondant est : GO TO (10, 20, 10, 30), L Z = R**2 GO TO 100 20 Z = R + D GO TO 100 30 Z = R*R + D + 5. 100 . 10 IV.3. Les instructions de test IF : Linstruction de test IF peut prendre deux formes : - Le IF arithmtique ; - Le IF logique ; IV.3.1. Linstruction IF arithmtique : Cette instruction est destine tester le signe dune expression arithmtique et effectuer un branchement selon que cette expression est : - ngative, - nulle, - positive, La forme gnrale de cette instruction est : IF (expression arithmtique) E1, E2, E3 E1, E2, E3 tant des entiers sans signe qui reprsentent des numros dtiquettes. Lexcution de cette instruction provoque : - Le calcul de lexpression arithmtique ; - Le branchement En E1 si lexpression est < 0, En E2 si lexpression est = 0, En E3 si lexpression est > 0,

Elabor par Mr B. LAFIFI

19

Le langage de programmation FORTRAN

On peut avoir lune des galits suivantes : E1 = E2 E2 = E3 E3 = E1. Exemple : Dans la rsolution de lquation a.x2 + b.x + c = 0, on dsir dissocier les trois cas correspondant au signe du dterminant :

<0 Aller en 10

b2 -4.a.c =0 Aller en 30

>0 Aller en 20

On crira : IF (B*B 4.*A*C) 10,30,20 Remarque : Aprs avoir dtermin le signe de lexpression arithmtique le IF effectue le branchement et la valeur numrique de lexpression nest pas mmorise. Si on doit utiliser cette expression par la suite, il peut tre prfrable de la calculer avant le test. Reprenons lexemple prcdent, nous pouvons crire lorganigramme suivant : Delta = b2 4.a.c

<0 Aller en 10

delta delta

>0 Aller en 20

=0 Aller en 30 On crira alors : Delta = B*B 4.*A*C IF (Delta) 10, 30, 20 Ainsi pour le calcul des racines relles et imaginaires, la valeur de delta est dj connue et il est inutile de refaire le calcul. Exercice : Ecrire deux programmes permettant de calculer la racine carre dun nombre A en utilisant la formule :
Elabor par Mr B. LAFIFI

20

Le langage de programmation FORTRAN

1 A ( xi + ) 2 xi La valeur de x0 est suppose donne. Premier cas : on arrte les itrations lorsque xi +1 xi Deuxime cas : on arrte les itrations lorsque xi+1 = xi xi +1 =

IV.3.2. Linstruction IF logique :


Comme son nom lindique, cette instruction porte sur une expression logique dont la forme gnrale est : IF (expression logique) Instruction excutable I1 Lexcution du IF logique provoque : - Lvaluation de lexpression logique ; - Lexcution de linstruction excutable I1, si lexpression est VRAIE ; - Le branchement la ligne suivant si elle est FAUSSE. Ceci peut se schmatiser dans lorganigramme suivant : Calcul de lexpression logique

oui Excuter linstruction I1

VRAIE

non

Passage linstruction suivante

IV.3.3. Utilisation du IF logique et du IF arithmtique :


On peut crire : IF (expression logique) IF (expression arithmtique) E1, E2, E3. On obtient ainsi un test permettant de se brancher vers 4 directions diffrentes : - Expression logique fausse, on continue en squence. - Expression logique vraie, branchement en E1, E2, E3 selon le signe de lexpression arithmtique.

IV.3.4. La forme IF THEN ELSE :


Cette forme permet de mieux structurer les programmes, elle permet une rduction du nombre dtiquettes et des instructions de branchement.
Elabor par Mr B. LAFIFI

21

Le langage de programmation FORTRAN

Sa forme gnrale est : - IF (expression logique 1) THEN Squence 1 - ELSE IF (expression logique 2) THEN Squence 2 .. - ELSE Squence n - ENDIF IV.4. Les instructions de contrle STOP, PAUSE et END IV.4.1. Linstruction STOP Considrons lorganigramme suivant :

oui

Af B

non

FIN

oui
X pY

non

FIN

FIN

Lexcution de ce programme peut se terminer ici de trois faons diffrentes selon le rsultat des tests. Pour arrter lexcution du programme, on utilise linstruction STOP. Le programme correspondant lorganigramme ci-dessus contiendra donc trois instructions STOP.

Elabor par Mr B. LAFIFI

22

Le langage de programmation FORTRAN

Programme : IF (A.GT.B) GO TO 20 . . IF (X.LT.Y) GO TO 10 STOP STOP STOP END

20

10

Cette instruction excutable provoque larrt du droulement du programme titre dfinitif. IV.4.2. Linstruction Pause Pause permet darrter momentanment lexcution du programme afin de permettre une intervention manuelle de loprateur. A la fin de cette intervention lexcution du programme est reprise lendroit o elle avait t suspendue. IV.4.3. Linstruction END Un programme comporte de nombreuses instructions et il faut indiquer au compilateur quand cette squence se termine. Pour cela on utilise linstruction END. Applications : - Soit un tableau rel A(100). 1- Ecrire un programme permettant de dterminer llment maximum et llment minimum. Les valeurs numriques correspondantes seront ranges en XMAX et XMIN. 2- Refaire le mme programme en dterminant en outre les valeurs des indices correspondant aux extrmes. Ces valeurs seront ranges dans KMAX et KMIN. (Les nombres sont supposs tous distincts). 3- Soit un tableau A de 100 nombres rangs dans un ordre quelconque en mmoire. - faire lorganigramme destin trier ces nombres et les ranger par ordre croissant. Ecrire ensuite le programme correspondant.

Elabor par Mr B. LAFIFI

23

Le langage de programmation FORTRAN

Chapitre V :
Les boucles de programme, linstruction de contrle DO
V.1. Introduction Une boucle de calcul est lexcution dune squence dinstructions qui doit tre rpte plusieurs fois en faisant progresser un indice ou une variable entire de faon rgulire. Exemple : Soit un tableau A (100). Calculer la valeur numrique des variables S et S2 dfinies par :
i =n i =1 i =n i =1

S = A(i ) et S 2 = A(i) 2 Avec lutilisation de linstruction IF, on aura le programme suivant : REAL A(100) . S = 0. S2 = 0. I=1 S = S + A(I) S2 = S2 + A(I)**2 I=I+1 IF (I.LT.100) GO TO 10

10

V.2. Linstruction DO : forme gnrale

En utilisant linstruction DO, le calcul de S et de S2 Pourra tre ralis par la squence suivante : REAL A(100) . S = 0. S2 = 0. DO 10 I = 1, 100, 1 S = S + A(I) S2 = S2 + A(I)**2

10

Linstruction DO indique ici ltiquette de la dernire instruction de la boucle, les valeurs extrmes de lindice et le pas dincrmentation. Nous constatons qune boucle de calcul est caractrise par les paramtres suivants : - Premire instruction de la boucle (celle qui suit directement le DO) ; - Dernire instruction de la boucle (celle qui porte un numro dtiquette) ; - Valeur initiale de la variable entire qui contrle la boucle ;

Elabor par Mr B. LAFIFI

24

Le langage de programmation FORTRAN

- Valeur maximale de cette variable ; - Pas dincrmentation. Forme gnrale : DO N I = M1, M2, M3 Lorsque lincrment M3 a la valeur 1, il peut tre omis dans linstruction DO. La forme simplifie de DO est donc : DO N I = M1, M2 V.3. Les boucles embotes Il est possible dutiliser lintrieur de la porte dune boucle DO une autre boucle DO condition que les boucles soient embotes et quelles soient contrles par des variables distinctes. Exemple : INTEGER A, B, C, P, Q, R DO 100 I = A, B, C DO 50 J = P, Q, R

50 100

V.4. Rgles relatives linstruction DO La forme de linstruction DO impose les rgles suivantes : Rgle1 : Il est interdit de se brancher directement lintrieur de la porte dune boucle DO, en sautant linstruction DO. Exemple : GO TO 50 .. DO 100 I = k, 100, 2 .. 50 X = 100 . Rgle 2: Linstruction terminale dune boucle DO doit satisfaire aux conditions suivantes : * Etre une instruction excutable lexclusion - Des instructions de branchement GO TO et IF ;
Elabor par Mr B. LAFIFI

25

Le langage de programmation FORTRAN

- Des instructions de contrle PAUSE, STOP, RETURN ; - De linstruction END. * Elle doit figurer dans la mme unit de programme que linstruction DO. Rgle 3 : A lintrieur de la porte dune boucle DO, il est interdit de modifier la valeur de la variable de contrle et celle des paramtres lorsque ceux-ci sont des variables. Exemple : DO 10 I = 1, J, 2 K=K+1 I=I+1 J=3 10 S = S + A(I)

(autoris) (incrmentation interdite lintrieur de la porte) (incrmentation interdite lintrieur de la porte)

Rgle 4 : Lorsque deux boucles sont embotes, on peut sauter de la boucle intrieure vers la boucle extrieure, mais le contraire est interdit (sinon la rgle 1 ne serait pas respecte pour la boucle intrieure). Rgle 5 : Si deux boucles embotes ont la mme instruction terminale, de la boucle intrieure, on peut se brancher vers linstruction terminale par contre ceci est interdit partir de la boucle extrieure. Exemple : DO 105 I = 1, N . GO TO 105 . DO 105 J = 2, K . GO TO 105 . 105 .

(interdit)

(autoris)

Rgle 6 : Le mcanisme de la boucle DO interdit que les boucles DO puissent se chevaucher . Ces principales rgles peuvent se rcapituler dans le schma suivant :

Elabor par Mr B. LAFIFI

26

Le langage de programmation FORTRAN

DO 20 . DO 10 .

DO 10 .. DO 10 .

10 20

AUTORISE DO 20 DO 10 ..

10 GO TO 15 DO 20 .

20 10 INTERDIT

15 20

Application : - Ecrire un programme permettant de calculer la somme de tous les lments dun tableau rel A (10,20).

Elabor par Mr B. LAFIFI

27

Le langage de programmation FORTRAN

Chapitre VI Les instructions dentre / sortie


VI.1. Introduction Le besoin de pouvoir changer des informations entre mmoire centrale et mmoire auxiliaire et plus particulirement entre lordinateur et lutilisateur, ncessite lutilisation dinstructions particulires appeles instructions dentres/sorties. Une opration dentre/sortie est caractrise par : - Le type de lopration : squentielle ou directe ; - Le sens de lopration : entre ou sortie ; - Lidentification du priphrique (on dit aussi unit) ; - Le nom des variables imprimer ; - Le FORMAT sous lequel ces variables doivent tre transmises (nombre de caractres aprs le point dcimal espacement des variables texte facultatif saut de ligne, etc). On peut avoir des oprateurs dentre/sortie : - Avec format ; - Avec format libre. Nous utilisons trois instructions : READ : entre partir de priphrique vers la mmoire centrale. WRITE : sortie de mmoire centrale vers un priphrique. FORMAT : indique le format des variables. VI.2. Les instructions dentre/sortie READ et WRITE Ces instructions peuvent prendre les formes gnrales suivantes : Avec format : READ (u, f) k Avec format libre: READ (u, *) k WRITE (u, *) k WRITE (u, f) k

u : est une constante ou variable entire positive reprsentant un numro dunit logique ; f : est une constante entire positive reprsentant une tiquette (tiquette de linstruction FORMAT auquel an fait rfrence) ; k : est une liste de variable (qui peut tre vide). Exemple : READ (1, 100) A, B, X(3) WRITE (3, 200) A, X(5), Y 100 FORMAT (3F15.7) 200 FORMAT (F15.7, E18.6, 3X, Y=, E13.6)

Elabor par Mr B. LAFIFI

28

Le langage de programmation FORTRAN

VI.2.1. Entre/sortie en format libre Lorsque lon travail partir dun terminal, le respect dun format en entre est pnible. Pour se dispenser du formatage , on pourra utiliser le format libre qui scrit : READ (u, *) liste Les donnes doivent tre introduites dans lordre de la liste. Elles sont spares les unes des autres par une virgule, un slash ou par des blancs. Exemple : READ (1, *) A, B, C Permettra de lire A, B, C introduite sous la forme : 3.4, 2.5 7.28 VI.2.2. Liste dentre/sortie Pour diter le contenu des variables A, B, X(1), X(5), nous crivons par exemple : WRITE (1, 100) A, B, X(1), X(5) Pour diter des lments dun tableau : - Nous pouvons utiliser une liste dentre/sortie contenant tous les lments du tableau ; - Ou bien utiliser une liste DO implicite ; - Ou bien faire figurer sans indice le nom du tableau Exemple1 : WRITE (3, 100) (X(I), I = 3, 15, 2) WRITE (3, 200) A, B, (X(I), I = 1, 20) WRITE (3, 200) A, B, X Exemple2 : DIMENSION A(10), B(10), C(10), D(10, 10), E(10) READ (5,100) (A(I), I = 1, 10) FORMAT (10F8.4) DO 200 I = 1, 10 READ (5, 100) B(I) DO 300 I = 1, 10 READ (5, 100) (C(I, J), J = 1, 10) READ (5, 100) ((D(I, J), J = 1, 10), I = 1, 10) READ (5, 100) E

100 200 300

Les nombres A(1)A(10) seront lus sur la mme ligne si le format ne dpasse pas la capacit de lcran (80 colonnes) ; Les nombres B(1)B(10) seront lus chacun sur une ligne ; Les matrices carres C et D seront lues ligne par ligne ; Les nombres E(1)E(10) seront lus sur la mme ligne.

Elabor par Mr B. LAFIFI

29

Le langage de programmation FORTRAN

VI.2.3. Rgles relatives aux instructions READ et WRITE Rgle 1 : en principe, si une liste dentre/sortie ncessite ldition de n valeurs numriques, linstruction FORMAT associe doit contenir n descripteurs de traitement des variables. Rgle 2 : si la liste dentre/sortie est satisfaite avant que lexploration complte du FORMAT ne soit termine, lexploration des descripteurs de traitement des variables est abandonne. Rgle 3 : lexcution dune instruction READ peut faire lire un enregistrement contenant plus de donnes que la liste dentre/sortie. Dans ce cas les donnes excdentaires ne sont pas traites et tout se passe comme si elles ne figurent pas dans lenregistrement. VI.3. Linstruction FORMAT Linstruction FORMAT doit permettre : - Dditer du texte ; - De dcrire les types de conversion effectuer entre reprsentation interne et reprsentation externe. Pour cela, linstruction FORMAT fait appel deux catgories de descripteurs : - Des descripteurs de mise en page et ddition de texte ; - Des descripteurs de traitement des variables. VI.3.1. Tableau des diffrents descripteurs Dans une mme unit de programme, plusieurs READ et WRITE peuvent faire rfrence une mme instruction FORMAT. Il est donc ncessaire que chaque descripteur de traitement de variable fasse apparatre le type de la variable et la reprsentation externe. Exemple : Descripteur I5 I : signifie variable de type entire ; 5 : dans la forme externe la valeur numrique doit sexprimer au moyen de 5 caractres. Le tableau suivant montre lutilisation et la forme gnrale des diffrents descripteurs : Forme Double prcision Rel avec exposant Rel sans exposant Descripteur D E F I L H X T Forme gnrale tDw.d tEw.d tF.d tIw tLw nHh1.hn nX nT

Descripteurs de traitement de variables

Entier Logique Descripteurs Edition de texte ddition et de Insertion de blanc mise en forme Tabulation

Dans ce tableau les lettres minuscules ont la signification suivante :

Elabor par Mr B. LAFIFI

30

Le langage de programmation FORTRAN

w et n = constante entire sans signe non nulle reprsentant la longueur de la zone de la chane de caractres sur lenregistrement. d = constante entire reprsentant le nombre de chiffres dans la partie fractionnaire de la chane de caractres. t = constante entire reprsentant le facteur de rptition. VI.3.2. Les spcifications - Pour demander la rptition dun descripteur de zone, il suffit dcrire avant le descripteur le nombre de fois quil doit tre rpt : Exemple : 100 FORMAT (3E18.7, I5) Il faut utiliser 3 fois la squence E 18.7. Cette instruction est quivalente 100 FORMAT (E18.7, E18.7, E18.7, I5)

* Descripteur I: Exemple : J = 435 WRITE (3, 100) J 100 FORMAT (I5) En sortie on aura: * Descripteur E et F Exemple1 : 1250.903 Le descripteur E15.5 donne

4 3 5

0 .1 2 5 0 9 E + 0 4 5 15

Exemple2 : A = 35.122 B = 1397.123 WRITE (3, 10) A, B 10 FORMAT (F 10.3, F 15.6) On aura : A = ^^^^35.122 B = ^^^^1397.12300 10 15 * Descripteur D : mme chose que pour E. * Descripteur de mise en page :
Elabor par Mr B. LAFIFI

31

Le langage de programmation FORTRAN

Exemple1 : (X) WRITE (3, 10) Y, Z 10 FORMAT (F 10.7, 5X, E 14.7) On aura : Valeur de Y blancs valeur de Z 10 caractres 5 caractres 14 caractres Exemple1 : (H) WRITE (3, 100) 100 FORMAT (23H LE FORTRAN EST COMMODE) On aura : LE FORTRAN EST COMMODE.

Elabor par Mr B. LAFIFI

32

Le langage de programmation FORTRAN

VI.4. Les fichiers VI.4.1. Dfinition de fichier Il sera intressant d'envoyer certains rsultats dans des fichiers, pour une utilisation ultrieure par un programme diffrent. Ces fichiers seront soit des fichiers d'entre, soit des fichiers de sortie. Lorsque les rsultats d'un programme sont nombreux, il est agrable de pouvoir les consulter dans un fichier, l'aide d'un diteur de texte. Le fichier dans ce cas l, sera un fichier texte, accs squentiel. VI.4.2. Ouverture d'un fichier Une instruction standard d'ouverture de fichier a gnralement la forme suivante : OPEN(unit, FILE = 'nom du fichier', STATUS = 'OLD' 'NEW' 'UNKNOWN' ) Description de chaque paramtre unit : nombre entier qui sera choisi entre 5 et 20, de prfrence suprieur 10. status : Peut tre 'OLD', 'NEW', 'UNKNOWN'. OLD : Le fichier doit dj exister NEW : Le fichier est crer . UNKNOWN : NEW ou OLD si le fichier existe ou non. Exemples :
C Ouverture d'un fichier existant dj OPEN (11, FILE='DONNEES.DAT')

... C Ouverture d'un nouveau fichier pour y placer des Cresultats OPEN (12, FILE='RESULT.DAT', STATUS='NEW') VI.4.3. Fermeture d'un fichier La fermeture d'un fichier se fait automatiquement lorsque le programme se termine normalement. Syntaxe : CLOSE (unit) Exemple :
C fermeture et effacement du fichier 8 CLOSE (8)

Elabor par Mr B. LAFIFI

33

Le langage de programmation FORTRAN

Chapitre VII Les sous-programmes


VII.1. Gnralits Lorsquil est ncessaire dexcuter, en des points diffrents dun programme, une meme squence de calculs avec des donnes diffrentes, il est recommand dutiliser un sous programme. Un simple exemple de sous-programme : les fonctions de la bibliothque FORTRAN : SIN, SQRT,.. Il existe trois autres types de sous-programmes ; - Linstruction fonction ou fonction arithmtique, - Le sous-programme FUNCTION, - Le sous-programme SUBROUTINE. VII.2. Linstruction FONCTION Elle na dexistence qua lintrieur du programme (ou sous-programme de type FUNCTION ou SUBROUTINE) o elle est dfinie. Une instruction FONCTION est dfinie par une seule expression arithmtique en tte du programme o elle apparat, avant la premire instruction excutable et aprs les dclarations DIMENSION ou DATA. Sa forme gnrale est : Exemple : F(X) = SQRT(3.*X+2.*SIN(X**2)) ou G(X,Y) = X*X+Y*Y+X*Y NOM : est le nom de la fonction, X, Y, Z : sont les arguments de la fonction. Ce sont des variables non indices. Le nom de la fonction doit satisfaire aux rgles des noms de variables, son type est le type du nom. Lexpression arithmtique prcise les calculs effectuer sur des lments qui peuvent tre : - Des constantes, - Des variables non indices, - Des fonctions de la bibliothque FORTRAN, - Des noms dinstruction fonction, - Des noms de sous-programmes FUNCTION Exemple : F(X) = SQRT(3.*X+2.*SIN(X**2)) est relle et son argument est rel. I(A, B, C) = A+B+C est entire et ses trois arguments sont rels. DOUBLE PRECISION F, X, Y, SOMME, A, B SOMME(X, Y) = X*X+Y*Y NOM (X, Y, Z) = expression arithmtique

Elabor par Mr B. LAFIFI

34

Le langage de programmation FORTRAN

F(A, B, X, Y) = A+B+SOMME(X, Y)/DSQRT(SOMME(A, B)) Les deux fonctions et leurs arguments sont en double prcision. Lappel dune instruction fonction se fait ds que son nom figure dans une expression arithmtique suivi dune liste de variables dappel de mme nombre et de mme type que les paramtres formels de dfinition. Ces paramtres dappel sont les valeurs pour lesquelles on veut calculer la fonction. VII.3. Le sous-programme FUNCTION Cest un programme indpendant, compil indpendamment du programme dappel, il est donc possible dutiliser les mmes tiquettes que dans le programme dappel et de prendre les mmes noms de variables. Il comporte un nombre quelconque dinstructions. La forme gnrale est : FUNCTION NOM (A, B, C) . NOM = RETURN END NOM : est le nom du sous-programme, il satisfait aux lois des noms de variables. Il apparat au moins une fois gauche du signe = dune instruction arithmtique du sous-programme. A, B, C : sont des noms de variables non indices ou des noms de tableaux. Le type de rsultat est le type du nom de la FUNCTION qui peut figurer dans une dclaration de type. Exemple : REAL FUNCTION I (A, B, C) est relle de 3 arguments rels et dans ce cas le programme dappel doit comporter la dclaration de type: REAL I Les arguments sont dits muets ou formels qui seront remplacs lors de lexcution par les variables de la liste dappel qui peuvent etre: - des constantes, - des variables, indices ou non, - des tableaux, - des expressions arithmtiques. Le retour au programme dappel est command par linstruction RETURN du sous-programme. VII.4. Le sous-programme SUBROUTINE O distingue deux sortes de SUBROUTINES : - SUBROUTINE avec liste darguments, - SUBROUTINE avec linstruction COMMON.

Elabor par Mr B. LAFIFI

35

Le langage de programmation FORTRAN

VII.4.1. SUBROUTINE avec arguments Il ressemble beaucoup au sous-programme FUNCTION mais il peut renvoyer plusieurs rsultats au programme dappel. Sa forme gnrale est : SUBROUTINE NOM (A, B, C) C = (A*A+B*B)/(A+B) . RETURN END NOM : est le nom du sous-programme, son type na aucune importance car il ne sert que de titre . A, B, C : sont des noms de variables non indices ou de tableaux. Le sous-programme SUBROUTINE est appel, dans un programme principal ou dans un sousprogramme par une instruction CALL de la forme : CALL NOM (X, Y, Z) O : X, Y, Z sont les noms des arguments sur lesquels le calcul doit etre fait, ils peuvent etre des constantes, des variables indices ou non, des tableaux ou des expressions arithmtiques. Exemple : SUBROUTINE MULT (A, B) A = 2.*A B = 3.*B RETURN END Linstruction dappel est : CALL MULT (X, Y) X aura la sortie le double de sa valeur dentre. Y aura la sortie le triple de sa valeur dentre. VII.4.2. SUBROUTINE avec COMMON Il est identique comme forme et comme appel au prcdant mais part le fait quil peut ne pas comporter une liste darguments, certains arguments tant transfrs par lintermdiaire de linstruction COMMON. Linstruction COMMON permet lusage dune mme zone mmoire par un programme et ses sous-programmes, do un gain de place et de temps. Lordre COMMON scrit sous deux formes :

Elabor par Mr B. LAFIFI

36

Le langage de programmation FORTRAN

a) COMMON blanc : Les variables listes dans le COMMON peuvent tre indices ou non, elles sont implantes en mmoire dans lordre de la liste. Exemple : COMMON A, B, C, X

b) COMMON tiquet : Exemple : Programme principal : Sous-programme SP1 : Sous-programme SP2 : COMMON/C1/A, B, C/C2/X, Y, Z COMMON/C1/U, V, W COMMON/C2/R, S, T

Elabor par Mr B. LAFIFI

37

Le langage de programmation FORTRAN

Le programme principal et chaque sous-programme sont analyss sparment par le compilateur. Ils peuvent donc figurer soit dans un mme fichier, soit dans des fichiers spars. Il est prfrable de faire un fichier par sous-programme. Au moment de la mise au point de petits programmes, il est plus facile de faire figurer le programme principal et les sous programmes ensemble, puis de les sparer lorsque la compilation et les essais d'excution ont russi. L'diteur de liens ralise la construction globale du programme et des sous-programmes. Il fait galement des tests de compatibilit au niveau des passages de paramtres. Dans le cas o l'on fait figurer dans un mme fichier programme et sous-programmes, le programme principal doit figurer en tte, suivi des sous-programmes, chacun se terminant par END, pour bien dlimiter les blocs. On distingue 4 types de modules : PROGRAM : Programme principal, tout module dont la premire instruction n'est pas SUBROUTINE, FUNCTION ou BLOCK DATA. Ce module peut comporter comme premire instruction PROGRAM, mais ce n'est pas obligatoire. SUBROUTINE : Ce module est un sous-programme toujours appel par un CALL partir d'un autre module de type programme ou sous-programme. FUNCTION : Ce module est simplement appel par son nom partir d'un autre module. BLOCK DATA : Ce module initialise des variables places dans un COMMON nomm. 7.2 Programme principal Un programme comporte 2 parties : Les dclarations concernant les variables, Les instructions excutables. On peut placer au dbut du programme l'instruction PROGRAM Nom du programme. Cette instruction est facultative, le compilateur n'en a nullement besoin, mais en fin de programme, on fera toujours figurer l'instruction END. Structure globale : PROGRAM nom du programme Dclarations des variables utilises Instructions excutables END Attention : On ne peut pas placer de dclaration aprs une instruction excutable . 7.3 Sous-Programmes Il existe en FORTRAN trois sortes de sous-programmes :

Elabor par Mr B. LAFIFI

38

Le langage de programmation FORTRAN

Les fonctions qui sont appeles par leur rfrence dans une expression mathmatique et fournissent un rsultat numrique.

Les fonctions implicites qui font partie du langage. Elles se trouvent dans les librairies du FORTRAN. Ce sont par exemple les fonctions mathmatiques du genre SIN(x), SQRT(x), etc.

Les sous-programmes qui sont appels par un CALL et peuvent fournir plusieurs rsultats. Ces rsultats figurent obligatoirement parmi les paramtres. 7.3.1 Structure d'un sous-programme type SUBROUTINE SUBROUTINE nom(liste de paramtres) Dclarations des paramtres Dclarations des variables Instructions excutables RETURN END L'instruction RETURN redonne la main au programme appelant. On peut placer plusieurs instructions RETURN dans un mme module, mais pour des raisons de structuration et de lisibilit, on vitera cette pratique. Faire figurer cette instruction de prfrence la fin du module, ou alors l'oublier, car elle n'est plus ncessaire pour les versions actuelles du FORTRAN. La forme gnrale de l'appel d'un sous-programme du type SUBROUTINE sera : CALL nom du sous-programme(liste de paramtres) Les paramtres peuvent tre :

des constantes de tous types des expressions arithmtiques ou logiques des noms de fonctions ou de sous-programmes des variables simples ou indices (lments de tableaux) des noms de tableaux

En sortie, le sous-programme peut modifier : les variables simples les variables indices

Exemple d'appel de sous-programme :


CALL SPROG(A,MAT,10)

4.3.2 Structure d'un sous-programme du type FUNCTION FUNCTION nom(liste d'arguments) Dclarations

Elabor par Mr B. LAFIFI

39

Le langage de programmation FORTRAN

Instructions nom = ... RETURN ! Facultatif END Remarquer deux choses :

L'entte avec sa dclaration de type, car une fonction retourne une valeur dont il faut dclarer le type L'instruction END dlimite les blocs, et l'instruction RETURN n'est plus obligatoire pour les versions actuelles du FORTRAN.

Elabor par Mr B. LAFIFI

40