cours fortran tome1.pdf

Upload: boud3

Post on 05-Mar-2016

29 views

Category:

Documents


0 download

TRANSCRIPT

  • Dr EL HASSAN BOUDAIA

    Edition 2002

    PROGRAMMER EN FORTRAN

    COURS

    TOME 1

  • Cours de Fortran Dr E. BOUDAIA

    1

    CHAPITRE I GENERALITES

    Dans ce premier chapitre nous dcrivons les lments syntaxiques de FORTRAN. 1. ALPHABET FORTRAN

    Il est compos de caractres alphanumriques et spciaux.

    1.1. CARACTERES ALPHANUMERIQUES

    Ce sont les 26 lettres de lalphabet latin, majuscules et minuscules ainsi que les 10 chiffres A B C .......Z a b c .....z 0 1 2 ......9

    1.2. CARACTERES SPECIAUX Ce sont = + - * / : ( ) . $ et lespace blanc. 2. STRUCTURE GENERALE DUN PROGRAMME FORTRAN Un programme FORTRAN est constitu de : - Mots : ils sont forms par des lettres, des chiffres et des caractres spciaux. Ces mots forment leurs tours des constantes, des identificateurs, des tiquettes et des oprateurs. En appliquant certaines rgles nous formons les lments syntaxique du langage FORTRAN. - Instructions : une instruction est une suite dlments syntaxiques Il existe 2 types : excutable et non excutable. - Programme : est un ensemble dinstructions et de commentaires. Nous dsignons deux types : les programmes principaux et les sous-programmes qui commencent par lune des instructions FUNCTION ou SUBROUTINE. Un programme FORTRAN peut avoir la structure suivante :

    instructions de dclaration instructions excutables et non excutables END

    3. STRUCTURE DUNE LIGNE FORTRAN Chaque ligne contient 80 caractres et est dcoupe en 4 zones : - Zone A (colonnes 1 5) : elle contient un nombre entier qui sert reprer une instruction; cest la zone ETIQUETTE. - Zone B (colonnes 7 72) : elle contient linstruction FORTRAN proprement dite.

  • Cours de Fortran Dr E. BOUDAIA

    2

    - Zone C (colonnes 73 80) : gnralement elle est utilise pour numrotes les lignes du *programme, elle est ignore par le compilateur. - Zone D (colonnes 6) : si elle contient un caractre quelconque autre que le zro, elle spcifie une ligne suite. En effet, si une instruction ne peut tre crite sur une ligne, nous pouvons la faire suivre de 9 lignes au maximum. Remarques : - les lignes comportant le caractre C en colonne 1 sont dites lignes commentaires et sont ignores du compilateur. - la premire ligne dun programme FORTRAN contient un blanc en colonne 6. 4. OPERANDES Ils sont dfinis par lutilisateur en respectant certaines rgles.

    4.1. ETIQUETTES Cest un nombre sans signe de 1 5 chiffres. Elles peuvent apparatre soit en zone A, soit en zone B.

    4.2. CONSTANTES Cest une quantit dont la valeur numrique est fixe et ne peut plus tre modifie pendant lexcution du programme. Les constantes que nous tudierons sont :

    4.2.1. CONSTANTES ENTIERES Elles scrivent avec 1 N chiffres dcimaux (N dpend de lordinateur utilis). Elles sont prcdes ou non dun signe + ou - . Aucun espace ou point nest autoris entre les chiffres composant cette constante. - exemples : + 6 - 231 12689

    4.2.2. CONSTANTES REELLES SIMPLE PRECISION

    Deux formes sont possibles, avec exposant (ou point flottant) et sans exposant (ou point fixe).

    a- Point fixe : Elles scrivent avec 1 N chiffres dcimaux avec un point dcimal marquant la sparation entre la partie entire et fractionnaire. Cette constante peut tre prcde ou non dun signe. - exemples : + 11.6 -23.12 12. 125.

    b- Point flattant : Dans ce cas la constante possde une mantisse ayant 1 N chiffres dcimaux spars ou non par un point dcimal suivie dun exposant ( base 10 ) ayant pour symbole la lettre E. Le nombre qui suit E est un entier sign (nous pouvons omettre le signe +). - exemples : -17.E+2 115.5E-55 .13E8

  • Cours de Fortran Dr E. BOUDAIA

    3

    4.2.3. CONSTANTES DOUBLES PRECISION

    Elles scrivent en utilisant la forme avec exposant, la lettre E devient D. - exemples : 55.159874D-5 -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. .FALSE. 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.

  • Cours de Fortran Dr E. BOUDAIA

    4

    Les variables relles et entires peuvent tre dclares implicitement : si une variable commence par lune des lettres suivantes I, J, K, L, M, N, elle est du type entier, sinon elle est du type rel. Pour les autres types de variables, la dclaration explicite est obligatoire.

    4.3.1. DECLARATION EXPLICITE

    Les variables de type double prcision, logique et complexe sont dclares selon la syntaxe suivante :

    DOUBLE PRECISION COMPLEX LOGICAL

    Var1[ , Var2,............,VarN ]

    avec : DOUBLE PRECISION, LOGICAL ET COMPLEX : mots-cls. Var1, Var2,..........., VarN: variables. Exemples : LOGICAL debut, finm 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 CHAINES NOTE1, NOTE 2 ET NOTE 3 est de 5, mais MOYENNE est de 3.

  • Cours de Fortran Dr E. BOUDAIA

    5

    CHARACTER ADRESSE*30, PROFESSION*15. Les longueurs des variables chanes ADRESSE et PROFESSION sont respectivement de 30 et 15.

    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 LOGICAL

    Tab1(i1[ , i2, 13 ]) [ ,........, Tabp (m1 [ ,m2, m3 ])]

    avec : DOUBLE PRECISION, LOGICAL et COMPLEX : mots-cls. Tab1.............Tabp : variables indices. ii , ........, mi : constantes entires positives reprsentant les dimensions des variables indices. Remarque : Nous pouvons utiliser la mme syntaxe pour dclarer une variable indice de type rel en entier, et inversement. La syntaxe de dclaration dune variable indice de type caractre, est identique celle de dclaration des variables simples, en remplaant Var1,............, Varp par des variables indices. LOPERATOIRE DE CONCATENATION : Il a pour rle la cration dune chane de cratres nouvelle partir des caractres des chanes dj existantes. Exemples : 1- INFOR// MATIQUE donnera INFORMATIQUE 2- CHARACTER X*2, Y *4 Si nous donnons X la valeur PR et Y la valeur ENOM, alors X // Y donnera PRENOM, par contre Y // X donnera ENOMPR.

    4.3.3. DIMENSION DUNE VARIABLE INDICEE La dclaration de la dimension dune variable indice est obligatoire. Elle se fait par la syntaxe suivante : DIMENSION VI1, (DIM1) [ , VI2 (DIM2), ........., Vip (DIMp)] avec :

  • Cours de Fortran Dr E. BOUDAIA

    6

    DIMENSION : mot-cl VI1, VI2, ...........Vip : noms de variables indices DIM1, DIM2,....... DIMp : Liste des dimensions, avec DIMi (1 i N) peut tre reprsent comme suit : DIMi = inf 1 : sup1, inf 2,........, infN : supn avec infi et supi respectivement bornes infrieures et suprieures, de la ime dimension (1 i N). Elles sont gnralement des constantes entires positives, nulles ou ngatives. Exemples : DIMENSION V (-2:1), MATR (2:5) V et MATR sont des vecteurs respectivement de 4 et 5 lments numrots de -2 1 pour v et de 2 6 pour MATR. Le premier est rel, le second est entier. Remarques : a - Lorsque INFi = 1, il faut se limiter la reprsentation de SUPi : DIMi = sup1, sup2, ................, supN Exemple : DIMENSION V(5), MATR (4,6) b - La dclaration de variables indices chanes de caractres se fait dans la dclaration CHARACTER. Exemple : CHARACTER*2 C, CH (1:8)*3 est quivalent : CHARACTER*2C, CH*3 DIMENSION C(8), CH(1:8) c - Remise zro dune variable indice par DATA DIMENTION V(5), MATR (4,6) DATA V, MATR / 29*0./ avec 29 = 5 + 4 *6 d - Linstruction DATA (MATR (1,2), = 1,4)/4*0./ initialise les 4 lments de la 2 me colonne de MATR zro.

    4.3.4. INSTRUCTION DE DECLARATION IMPLICIT

    Sa syntaxe est : IMPLICIT Type 1 (Liste1) [, Type 2 (Liste2),......, TypeN (ListeN)] avec Type1, Type2,...........TypeN : instructions de dclaration; elles peuvent tre INTEGER, REAL, LOGICAL, COMPLEX, CHARACTER, DOUBLE PRECISION. Liste 1, Liste2,............Liste N : Liste de variables simples ou indices. La premire lettre de chaque liste indique toutes les variables dbutant par cette lettre sont du mme type, sauf spcification contraire. Exemple : IMPLICIT COMPLEX (w-z) Toutes les variables dbutant par W, X, Y, Z sont de type complexe

  • Cours de Fortran Dr E. BOUDAIA

    7

    5. EXPRESSIONS

    5.1. EXPRESSIONS ARITHMETIQUES Nous construisons une expression arithmtique partir : - des constantes, des variables simples ou indices, des fonctions, des oprateurs arithmtiques (+, -, /, *, **) et des parenthses. Lvaluation dune expression arithmtique se fait selon lordre tablit suivant : 1) Les appels de fonctions. 2) Les parenthses : nous commenons par les plus internes. 3) Les oprateurs arithmtiques :

    3.1) lexponnentiation : priorit gale, nous commenons de droite gauche. 3.2) la multiplication et la division. 3.3) la soustraction et laddition.

    Pour 3.2 et 3.3 priorit gale, nous commenons de gauche droite.

    5.2. EXPRESSIONS LOGIQUES Une expression logique est une expression qui peut tre vraie ou fausse. Cest une comparaison entre expressions arithmtiques (gnralement de mme type) laide doprateurs de relation (.OR., NOT., AND., EQV., NEQV.). Remarque : Loprateur .NOT. ne sapplique qu une seule expression de relation Lordre dvaluation des expressions logiques est le suivant : 1) Les appels de fonctions. 2) Les parenthses : nous commenons par les plus internes 3) Les oprateurs arithmtiques (voir les expressions arithmtiques). 4) Les oprateurs de concatnation //. 5) Les oprateurs de relations : selon lordre dapparition. 6) Les oprateurs logiques : selon lordre suivant : .NOT., .AND., .OR. puis .EQV. et .NEQV.

    ont la mme priorit. Exercice 1 : crire les expressions arithmtiques suivantes en FORTRAN : R = T/C Ln (0 / ) 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 ; XW ; 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

  • Cours de Fortran Dr E. BOUDAIA

    8

    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 faites 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 Ecrire S, P

    Fin A fin daboutir au rsultat attendu, nous avons utilis une suite dinstructions qui doivent tre excutes squentiellement.

  • Cours de Fortran Dr E. BOUDAIA

    9

    Parmi ces instructions, nous constatons la prsence : - dune instruction de lecture : introduite par lire

    - dune instruction dcriture : introduite par Ecrire 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

    Fsi

    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. Ecrivons 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 Ecrire Mat, P

    Fin 2.2. DEUXIEME CAS

    Dans le cas ou la condition nest pas vrifie, nous pouvons avoir dautres instructions excuter

  • Cours de Fortran Dr E. BOUDAIA

    10

    Si condition Alors instruction (s) 1 Sinon instruction (s) 2

    Fsi Le(s) instruction(s) 1 sont excutes lorsque la condition est vrifie, dans le cas contraire, ce sont le(s) instruction(s) 2 qui le seront En FORTRAN

    IF condition THEN Instruction 1

    ELSE Instruction (s) 2

    ENDIF

    Exemple 2 : Calculons la prime de lemploy en sachant que sil a moins de 10 ans danciennet, il a 2% du salaire, dans le cas contraire, il a 4%.

    Dbut

    Lire Mat, S, A Si A

  • Cours de Fortran Dr E. BOUDAIA

    11

    La condition est une expression logique qui prendra pour valeur : vrai ou faux. Ces instructions peuvent ne jamais tre excutes si la condition a pour valeur : faux, ds le dpart. De plus, les instructions peuvent tre rptes indfiniment, si parmi elles, il nen existe pas une qui modifie la condition. Exemple : crire un algorithme qui calcule la valeur de S donne par : S = 1/ (N2 + 1) La condition darrt sera lorsque S est infrieure E donn.

    Dbut Lire E, N S = 0

    Tant que S E Faire

    S = S + 1/ (N2 + 1) Fait

    Ecrire S Fin

    Une autre forme ditration contrle est la boucle :

    Rpter Instruction(s)

    Jusqu condition Les instructions seront rptes tant que, nous aurons la formulation suivante :

    Tant que non - condition Faire

    Instruction(s) Fait

    Cette manire dcrire na pas dquivalent en FORTRAN.

    3.2. ITERATIONS CONTROLEES PAR DES INDICES Lorsque nous avons tester la valeur dun compteur dans une instruction itrative, nous pouvons utiliser la forme suivante :

    Pour compteur de VI VF pas N Faire

    Instruction(s) Fait

    Dans ce cas, il faut connatre les valeurs entires de dpart VI et darrive VF du compteur ainsi que la valeur entire N du pas. Si VI est la valeur minimale du compteur, VF doit tre maximale et le pas est alors positif.

  • Cours de Fortran Dr E. BOUDAIA

    12

    Si VI est la valeur maximale du compteur, VF doit tre minimale et le pas est alors ngatif. Si N = 1 le pas est facultatif. En FORTRAN, cela serait reprsent par : DO tiq compteur = val1, val2, pas Instruction(s) tiq instruction excutable

    Remarque : Linstruction excutable ne peut pas tre un DO, STOP ou IF.

    Exemple : Calculer la prime de 50 employs avec la forme : P = S * 0.04. Posons P : prime de lemploy; D : son salaire; Mat : son matricule.

    Dbut Pour I de 1 50 pas 1

    Faire Lire Mat, S P = S * 0.04 Ecrire Mat, P

    Fait Fin

    Remarque : Le Pour peut tre remplac par Tant que : Exemple :

    Dbut I = 1 Tant que I 50 Faire Lire Mat, S P = S * 0.04 Ecrire Mat, P I = I + 1

    Fait Fin

    II. ORGANIGRAMMES Une seconde description de la solution dun problme pos peut tre donne en utilisant la notion dorganigrammes. Un organigramme utilise les schmas suivants :

    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

  • Cours de Fortran Dr E. BOUDAIA

    13

    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

    2.2. DEUXIEME CAS

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

  • Cours de Fortran Dr E. BOUDAIA

    14

    Condition Instruction(s) 1 instruction(s) 2

    Reprenons lexemple du mme paragraphe dans la partie algorithme

    Dbut Lire S, Mat, A 0 A

  • Cours de Fortran Dr E. BOUDAIA

    15

    Dbut

    I = 1 I 50 Lire S, Mat Fin P = S* 0.04 Ecrire Mat, P I = I + 1

    Dbut

    I = 1 Lire S, Mat

    P = S* 0.04 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

    Fsi Imprimer Mat, P I = I + 1 Fait Fin

    Dbut Pour I de 1 50 Faire Lire Mat, A, S Si A < 10 Alors P = S* 0.03 Sinon P = S*0.04 Fsi Imprimer Mat, p Fait Fin

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

  • Cours de Fortran Dr E. BOUDAIA

    16

    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

  • Cours de Fortran Dr E. BOUDAIA

    17

    CHAPITRE III

    INSTRUCTIONS DE FORTRAN 77

    1. INSTRUCTIONS DAFFECTATION

    1.1. INSTRUCTIONS DAFFECTATION ARITHMETIQUES Sa syntaxe est : Var = expr avec : Var : variable numrique simple ou indice. expr : expression arithmtique qui est value puis convertie au type de Var Remarques : 1- La hirarchie des types de variables numriques est

    a - complexe b - double prcision c - rel d - entier

    Pour une opration entre deux oprandes de types diffrents, loprande de type le plus faible est converti au plus fort, sauf dans le cas de lexponnentiation quand lexposant est entier, le rsultat est toujours du type de la base. 2 - Il faut viter de mixer les types complexes et double prcision, un confit de prcision est trs possible.

    1.2. AFFECTATION ENTRE CHAINES DE CARACTERES

    1.2.1. SOUS - CHAINES Prenons une variable chane Var de m caractres :

    CHARACTER*m Var

    Pour accder une partie de la chane Var, nous pouvons procder de 3 faons : a - accs aux caractres i j inclus avec 1 j m : V (i :j) b - accs aux j premiers caractres : Var (: j) c - accs la partie finale dbutant par le p me caractre : Var (p : m) Exemples : Si la variable BIT vaut SCIENCES, nous aurons:

    BIT (4 : 5) vaut EN BIT (6 : 8) vaut CES BIT ( : 3) vaut SCI

  • Cours de Fortran Dr E. BOUDAIA

    18

    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 sumombre 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,......., Cste N : 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 :

  • Cours de Fortran Dr E. BOUDAIA

    19

    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 ou cest la dernire instruction excutable dans un programme FORTRAN. Elles peuvent tre utilis 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.

  • Cours de Fortran Dr E. BOUDAIA

    20

    Exemple

    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

  • Cours de Fortran Dr E. BOUDAIA

    21

    Si la condition est vraie -, alors seulement le traitement -1 est excut, sinon cest dire si la condition est fausse, alors seulement le traitement -2 est excut. 7. INSTRUCTIONS DE BRANCHEMENT Ces instructions sont utilises gnralement avec les instructions de test prcdentes. Elles ont pour rle dindiquer le traitement prendre lors du choix. Pour cela, un numro qui est une tiquette dsigne linstruction correspondante au traitement. Il existe deux types dinstructions de branchement :

    7.1. INSTRUCTION DE BRANCHEMENT INCONDITIONNEL (GOTO) Sa syntaxe est : GOTO tiq avec : tiq : tiquette de linstruction ou le branchement doit se faire pour viter lexcution en

    squence. Remarque : linstruction GOTO ne doit pas tre tiquete.

    7.2. INSTRUCTION DE BRANCHEMENT CALCULEE Sa syntaxe est :

    tiq GOTO (tiq1, tiq2, ......., tiqN) [ , ] I

    avec : tiq : tiquette de linstruction GOTO. tiq1, tiq2,.....,tiqN : tiquettes dinstructions excutables.

    I : variable entire positive. Lexcution de linstruction GOTO provoque un branchement tiq k si la valeur de I est K avec I K N, cest dire :

    Ltiquette tiq1 si I = 1 Ltiquette tiq2 si I = 2 ....................................

    Ltiquette tiq N si I = N 8. INSTRUCTIONS DE REPETITIONS (LES BOUCLES DO)

    8.1. BOUCLE DO Sa syntaxe est :

    DO tiq VE = I, F, P avec : tiq : ltiquette dune instruction excutable de fin de boucle qui suit linstruction CONTINUE (elle est diffrente de GOTO, IF, END, STOP et DO). VE : variable entire simple qui fait le contrle de la boucle. I : valeur initiale entire positive, ngative ou nulle de la variable VE.

  • Cours de Fortran Dr E. BOUDAIA

    22

    F : valeur finale entire positive, ngative ou nulle de la variable VE. P : pas dincrmention ou de dcrmentation de la variable VE (diffrente de zro). Cette instruction se programme en FORTRAN de la faon suivante : DO tiq VE = I, F, P Traitement excuter tiq instruction excutable Remarques : 1 - si I > F avec P > 0 ou I < F avec P < 0, nous ne pouvons accder la boucle ; dans ce cas la

    variable VE aura pour valeur I 2 - si P = 1 ou -1, nous pouvons omettre de le mentionner, il sera pris par dfaut. 3 - il est possible dimbriquer les boucles, cest dire dutiliser des boucles lintrieur des

    autres condition quelles soient contrles par des variables diffrentes. 4 - il ne faut jamais modifier la valeur de la variable VE lintrieur de la boucle. 5 - il est interdit de se brancher directement lintrieur dune boucle DO Exemples : S = 0 DO 100 = 1, 10, 2 100 S = S + V(1)

    Y = 1 DO50 J = 10, 1, -1 Y = Y+2J

    50 CONTINUE

    8.2. BOUCLE DO ....... WHILE Cette instruction existe sur beaucoup de compilateurs actuels malgr quelle nait pas t prvue par la norme ANSI. Sa syntaxe est :

    DO [tiq [ , ] ] WHILE explog avec : tiq : tiquette de la manire instruction excutable de la boucle. Explog : expression logique. Tant que explog est vraie, un bloc dinstructions compris entre DO WHILE et ltiquette tiq sera excut. ENDDO dlimite le traitement rpt. Nous rpt. Nous programmons cette instruction de la sorte : DO (tiq (,)) WHILE condition Bloc dinstructions ENDDO

  • Cours de Fortran Dr E. BOUDAIA

    23

    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

  • Cours de Fortran Dr E. BOUDAIA

    24

    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 faites prcdemment. a - PREMIERE SYNTAXE

    READ ef, liste

  • Cours de Fortran Dr E. BOUDAIA

    25

    b - DEUXIEME SYNTAXE READ (u, ef [ , ERR = tiq 1, END = tiq2 ])liste

    avec : ef : tiquette de linstruction FORMAT. Exemples : READ 10, A, B, C, D 1 - 10 FORMAT (descripteurs) 2 - 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: WRITE (10, 15) ((A(I, J), J = 1, 10), I = 1.10 ) 15 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

  • Cours de Fortran Dr E. BOUDAIA

    26

    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. Eventuellement, les positions seront remplaces par des astrisques. Exemples: 1 - I =21 WRITE (3,10)I 10 FORMAT (15) 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 (12, 14, 13) 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

  • Cours de Fortran Dr E. BOUDAIA

    27

    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 : READ (*, 20) X, Y 20 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 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

  • Cours de Fortran Dr E. BOUDAIA

    28

    2 - U = - 2.25267 WRITE (3,5) U 5 FORMAT (E11.3) Ldition donnera : un blanc suivi de - 0,225E + 01

    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). Exemple: LOGICAL I, J I = TRUE. J = FALSE WRITE (*,10) I, J 10 FORMAT (L2, L3) Ldition donnera : F suivi de deux blancs suivi de T.

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

  • Cours de Fortran Dr E. BOUDAIA

    29

    Sa forme gnrale est : [m] An

    avec : m : rptiteur n : longueur de la chane caractres. Remarques : 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 : 1 - WRITE (1,6) X 6 FORMAT (A6) 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 4 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.

  • Cours de Fortran Dr E. BOUDAIA

    30

    Exemple: WRITE (3.5) R.P 4 FORMAT (1X, F8, 7, 5X, E14.7) Ldition donnera : un blanc qui sera ignor ldition suivi de 8 positions pour la valeur de R, suivi de cinq blancs suivi de 14 positions pour la valeur de P.

    b - descripteur Il permet ldition de caractres non interprts en sortie. Exemple : WRITE (3, 9) R 9 FORMAT (5X. La valeur de R est : , F8.7) A ldition, nous aurons la valeur de R est : suivis de la valeur numrique de R sur 8 positions.

    c - descripteur / (slach) Il permet le passage lenregistrement suivant. Pour sauter plusieurs enregistrements, il faut rpter le / autant de fois. Exemple: WRITE (3.51) U.V 51 FORMAT (U = , F10.3,5X/, V = , E15.7) Ldition donnera : U = suivi de la valeur numrique de U V = suivi de la valeur numrique de V

    d - descripteur H (HOLLERITH) Il permet dditer un texte. Sa forme gnrale est : n H avec : n : indique le nombre de caractre du texte diter aprs le H. Exemple: WRITE (1 , 5) 5 FORMAT (1X, 8HRESULTAT, / , 1H, 10 (1H=)) Ldition donnera :

    RESULTAT Remarque importante : Le premier caractre est rserv au positionnement, donc il est recommand de toujours commencer un FORMAT par le descripteur X. Ceci est trs utile pour ne pas se retrouver avec des rsultats dpourvus du premier caractre.

  • Cours de Fortran Dr E. BOUDAIA

    31

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

  • Cours de Fortran Dr E. BOUDAIA

    32

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

  • Cours de Fortran Dr E. BOUDAIA

    33

    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 sous-programmes 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 :

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

  • Cours de Fortran Dr E. BOUDAIA

    34

    avec : nomsub : voir prcdemment par1, par2,........., parn : paramtres effectifs, qui peuvent tres des constantes, des noms de variables simples ou indices, des expressions arithmtiques, des noms de sous - programmes. De mme que pour linstruction SUBROUTINE, les paramtres effectifs peuvent tre facultatifs.

    3.2.2. SOUS-PROGRAMME SUBROUTINE Les sous - programmes dfinis par linstruction SUBROUTINE permettent dcrire des squences dinstructions diffrentes de celles du programme principal. La structure gnrale est : SUBROUTINE nomfct [(arg1, arg2,......arg)]

    dclarations instructions excutables END

    La dernire instruction excutable est linstruction RETURN.

    3.2.3. EXEMPLE Ecrire un sous-programme SUBROUTINE calculant le produit des lments positifs et la somme des lments ngatifs dun tableau A (50).

    10

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

  • Cours de Fortran Dr E. BOUDAIA

    35

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

  • Cours de Fortran Dr E. BOUDAIA

    36

    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 les-quelles 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 distinct mais de mme 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)

    VECT (1), I, J, sont les noms diffrents la mme zone TABL (1,2) et identifient aussi la mme zone.

  • Cours de Fortran Dr E. BOUDAIA

    37

    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

  • Cours de Fortran Dr E. BOUDAIA

    38

    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 )

  • Cours de Fortran Dr E. BOUDAIA

    39

    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, DTATUS = 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.

    FORM = FORMATTED Dans ce sas les enregistrements sont formats.

  • Cours de Fortran Dr E. BOUDAIA

    40

    3.5. RECL = m Cette option est utilise en accs direct, et m indique la taille fixe des enregistrements du fichier.

    3.6. ERR = tiq tiq est une tiquette dune instruction excutable en cas derreurs. 4. INSTRUCTION DE FERMETURE DUN FICHIER

    CLOSE (unit) Cette instruction permet de rompre le lien entre lunit logique et le fichier physique associ en provoquant une dconnections de lunit logique et une fermeture du fichier physique. Sil sagit dun fichier temporaire, il est dtruit par :

    CLOSE (unit, STATUS = DELETE ) 5. INSTRUCTION DE REINITIALISATION DUN FICHIER

    REWIND (unit) Cette instruction provoque un retour en tte du fichier ; donc aprs son excution, cest toujours le premier enregistrement du fichier qui est prt tre trait. 6. INSTRUCTION DE RECUL DANS UN FICHIER

    BACKSPACE (unit)

    Cette instruction permet de passer lenregistrement prcdent lenregistrement courant dans un fichier squentiel. 7. INSTRUCTION DE FIN DE FICHIER

    ENDFILE (unit) Utilise dans un fichier squentiel, cette instruction, crit un enregistrement fin de fichier 8. ENTREES-SORTIES DANS UN FICHIER A ACCES DIRECT

    8.1. ECRITURE DANS UN FICHIER A ACCES DIRECT La syntaxe dcriture dans un fichier accs direct est :

    READ (unit, tf, REC = m[ ,ERR = tiq ]) listVar

  • Cours de Fortran Dr E. BOUDAIA

    41

    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.

  • Cours de Fortran Dr E. BOUDAIA

    42

    TABLE DES MATIERES Tome I : COURS CHAPITRE I GENERALITES 1. ALPHABET FORTRAN .....................................................................................................................1

    1.1. CARACTERES ALPHANUMERIQUES ...................................................................................1 1.2. CARACTERES SPECIAUX .......................................................................................................1

    2. STRUCTURE GENERALE DUN PROGRAMME FORTRAN.......................................................1 3. STRUCTURE DUNE LIGNE FORTRAN ........................................................................................1 4. OPERANDES......................................................................................................................................2

    4.1. ETIQUETTES..............................................................................................................................2 4.2. CONSTANTES............................................................................................................................2

    4.2.1. CONSTANTES ENTIERES..............................................................................................2 4.2.2. CONSTANTES REELLES SIMPLE PRECISION...........................................................2 4.2.3. CONSTANTES DOUBLES PRECISION.........................................................................3 4.2.4. CONSTANTES COMPLEXES.........................................................................................3 4.2.5. CONSTANTES LOGIQUES.............................................................................................3 4.2.6. CONSTANTES CARACTERES.......................................................................................3

    4.3. VARIABLES ...............................................................................................................................3 4.3.1. DECLARATION EXPLICITE ..........................................................................................4 4.3.2. VARIABLES INDICEES (TABLEAU)............................................................................5 4.3.3. DIMENSION DUNE VARIABLE INDICEE..................................................................5 4.3.4. INSTRUCTION DE DECLARATION IMPLICIT ...........................................................6

    5. EXPRESSIONS ...................................................................................................................................7 5.1. EXPRESSIONS ARITHMETIQUES..........................................................................................7 5.2. EXPRESSIONS LOGIQUES .....................................................................................................7

    CHAPITRE II NOTIONS SUR LES ALGORITHMES

    ET LES ORGANIGRAMMES I. ALGORITHMES.................................................................................................................................8 1. INSTRUCTIONS SEQUENTIELLES ...............................................................................................8 2. INSTRUCTIONS CONDITIONNELLES...........................................................................................9

    2.1. PREMIER CAS............................................................................................................................9 2.2. DEUXIEME CAS ........................................................................................................................9

    3. INSTRUCTIONS ITERATIVES.......................................................................................................10 3.1. ITERATIONS CONTROLEES PAR DES CONDITIONS.......................................................10 3.2. ITERATIONS CONTROLEES PAR DES INDICES ...............................................................11

    II. ORGANIGRAMMES .......................................................................................................................12 1. INSTRUCTIONS SEQUENTIELLES ..............................................................................................13 2. INSTRUCTIONS CONDITIONNELLES.........................................................................................13

    2.1 PREMIER CAS...........................................................................................................................13 2.2. DEUXIEME CAS ......................................................................................................................13

    3. INSTRUCTIONS ITERATIVES (BOUCLES).................................................................................14

  • Cours de Fortran Dr E. BOUDAIA

    43

    CHAPITRE III LES INSTRUCTIONS DE FORTRAN 77 1. INSTRUCTIONS DAFFECTATION ..............................................................................................17

    1.1. INSTRUCTIONS DAFFECTATION ARITHMETIQUES....................................................17 1.2. AFFECTATION ENTRE CHAINES DE CARACTERES .......................................................17

    1.2.1. SOUS - CHAINES...........................................................................................................17 1.2.2. AFFECTATION ENTRE SOUS - CHAINES.................................................................18

    2. INSTRUCTION PARAMETER........................................................................................................18 3. INSTRUCTION DINITIALISASTION DES VARIABLES (DATA) ............................................18 4. INSTRUCTION DARRET DEXECUTION (STOP) .....................................................................19 5. INSTRUCTION DARRET DE COMPILATION (End).................................................................19 6. INSTRUCTIONS DE TEST..............................................................................................................19

    6.1. INSTRUCTION IF ARITHMETIQUE .....................................................................................19 6.2. INSTRUCTION IF LOGIQUE.................................................................................................20 6.3. INSTRUCTION IF.......THEN .......ELSE / ENDIF...................................................................20

    7. INSTRUCTIONS DE BRANCHEMENT........................................................................................21 7.1. INSTRUCTION DE BRANCHEMENT INCONDITIONNEL (GOTO)..................................21 7.2. INSTRUCTION DE BRANCHEMENT CALCULEE.............................................................21

    8. INSTRUCTIONS DE REPETITIONS (LES BOUCLES DO) ......................................................21 8.1. BOUCLE DO .............................................................................................................................21 8.2. BOUCLE DO ....... WHILE .......................................................................................................22

    9. INSTRUCTION CONTINUE ..........................................................................................................23 10. INSTRUCTIONS DENTREE / SORTIE ......................................................................................23

    10.1. INSTRUCTION PRINT..........................................................................................................23 10.2. INSTRUCTION READ ..........................................................................................................24

    10.2.1. SYNTAXE DE LINSTRUCTION READ AVEC FORMAT LIBRE ........................24 10.2.2. SYNTAXES DE LINSTRUCTION READ AVEC FORMAT IMPOSE .................24

    10.3. INSTRUCTION WRITE.........................................................................................................25 10.4. INSTRUCTION FORMAT ....................................................................................................25 10.5. DESCRIPTEURS.....................................................................................................................26

    10.5.1. DESCRIPTEURS DE TRAITEMENT DES VARIABLES..........................................26 10.5.2. DESCRIPTEURS DE MISE EN PAGE ET DEDITION............................................29

    CHAPITRE IV LES SOUS - PROGRAMMES

    ET LES INSTRUCTIONS DEFFICACITE DE PROGRAMMATION

    1. LES SOUS-PROGRAMMES............................................................................................................31 2. FONCTIONS FORMULES...............................................................................................................31

    2.1. SYNTAXE .................................................................................................................................31 2.2. EXEMPLES ...............................................................................................................................32

    3. SOUS-PROGRAMMES FUNCTION ET SUBROUTINE...............................................................32 3.1. SYNTAXE DE FUNCTION......................................................................................................32

    3.1.1. APPEL DE FUNCTION DANS UN PROGRAMME PRINCIPAL...............................32 3.1.2. SOUS-PROGRAMME FUNCTION ..............................................................................33 3.1.3. EXEMPLE .......................................................................................................................33

    3.2. SYNTAXE DE SUBROUTINE................................................................................................33 3.2.1. APPEL DE SUBROUTINE DANS UN PROGRAMME PRINCIPALE .......................33 3.2.2. SOUS-PROGRAMME SUBROUTINE .........................................................................34 3.2.3. EXEMPLE .......................................................................................................................34

    3.3. INSTRUCTION DE DECLARATION EXTERNAL ...............................................................34

  • Cours de Fortran Dr E. BOUDAIA

    44

    II. INSTRUCTIONS DEFFICACITE DE PROGRAMMATION .......................................................35 1. INSTRUCTION COMMON .............................................................................................................35

    1.1. COMMON BLANC...................................................................................................................35 1.2. COMMON ETIQUETTE...........................................................................................................36

    2. INSTRUCTION EQUIVALENCE...................................................................................................36 3. INSTRUCTION BLOCK DATA ......................................................................................................37 CHAPITRE V LES FICHIERS 1. NOTION DE FICHIERS ...................................................................................................................38 2. DESIGNATION DUN FICHIER.....................................................................................................38 3. INSTRUCTION DOUVERTURE DUN FICHIER........................................................................38

    3.1. FILE = nom................................................................................................................................38 3.2. STATUS = expression.............................................................................................................39 3.3. ACCES = expression...............................................................................................................39 3.4. FORM = expression ................................................................................................................39 3.5. RECL = m ..................................................................................................................................40 3.6. ERR = tiq..................................................................................................................................40

    4. INSTRUCTION DE FERMETURE DUN FICHIER ......................................................................40 5. INSTRUCTION DE REINITIALISATION DUN FICHIER ..........................................................40 6. INSTRUCTION DE RECUL DANS UN FICHIER .........................................................................40 7. INSTRUCTION DE FIN DE FICHIER ............................................................................................40 8. ENTREES-SORTIES DANS UN FICHIER A ACCES DIRECT ....................................................40

    8.1. ECRITURE DANS UN FICHIER A ACCES DIRECT............................................................40 8.2. LECTURE DANS FICHIER A ACCES DIRECT ....................................................................41

    9. ENTREES-SORTIE DANS UN FICHIER BINAIRE SEQUENTIEL.............................................41