Manuel des programmeurs Fortran en pdf


Télécharger Manuel des programmeurs Fortran en pdf

★★★★★★★★★★3.5 étoiles sur 5 basé sur 1 votes.
Votez ce document:

Télécharger aussi :


Manuel des programmeurs Fortran avec exemples

CHAPITRE 1. GÉNÉRALITÉS SUR

LE PROGRAMME ORIGINE FORTRAN

 Le programme origine FORTRAN consiste en une séquence d'expressions FORTRAN Il y a 32 types différents d'expressions qui sont décrits en détail dans les cha¬pitres suivants.

Un programme court servira à illustrer l'aspect et quelques propriétés du programme FORTAN ; il est donné tel qu'il se présente sur la feuille standard FORTRAN.

…                                           

Ce programme recherche parmi n valeurs ai la quantité AMAX qui est la valeur du plus grand des a1. Il commence, après la désignation du programme, par rendre AMAX égal à a1; ensuite, l'expression FAIRE permet de répéter les expressions qui suivent jusqu'à et y compris l'expression 20, i prenant succes-sivement les valeurs 2, 3, ..., n. A chaque exécution de ce groupe d'opérations, l'expression SI compare AMAX avec a1. Si AMAX est inférieur à n, l'expres¬sion 10, qui donne à AMAX la valeur a1, est exécutée avant de continuer.

Chaque expression est perforée sur une carte séparée. Si une expression est trop longue pour être perforée dans une seule carte, la suite est perforée sur plusieurs autres cartes (9 si nécessaire) appelées cartes Suite. Pour chaque expression, la carte initiale doit contenir un 0 ou un blanc en colonne 6. Pour les cartes « Suite », la colonne 6 doit porter un nombre de 1 à 9.

Si mie expression est trop longue pour tenir sur und, seule ligne de la feuille (1,., programmation, le programmeur peut signaler à la perforeuse qu'il a continué su: la ligne suivante en faisant une marque dans la colonne « Suite ».

L'ordre des expressions est simplement déterminé par l'ordre des cartes. Cependant, un nombre quelconque inférieur à 215 (32768) peut être associé à une expression quelconque par perforation de celui-ci dans les colonnes 1 à 5 de la carte initiale. Ce nombre devient le numéro de l'expression. Ces numéros d'expression permettent de référencer le programme origine et aident le programmeur à trouver une correspondance entre ce programme et le programme résultant.

Les cartes portant un C en colonne 1 sont ignorées par FORTRAN. Ces cartes étant néanmoins imprimées, elles permettent l'insertion de commen¬taires.

Les colonnes 73 à 80 ne sont pas lues par FORTRAN et peuvent être perforées d'une identification quelconque.

Les expressions elles-mêmes sont perforées dans les colonnes 7 à 72, aussi bien dans les cartes initiales que dans les cartes « Suite ». Une expression comporte donc au maximum 10 x 66 = 660 caractères.

Les caractères blancs, sauf dans la colonne 6, sont ignorés par FORTRAN et le programmeur peut utiliser des blancs pour faciliter la rédaction de sa liste FORTRAN.

Le programme écrit en FORTRAN peut être introduit dans le traducteur à partir d'un paquet de cartes ou d'une bande DCB écrite sur le périphérique 704.

Expressions Fortran       Les 32 types d'expressions susceptibles d'être employés dans un programme FORTRAN peuvent être classés ainsi :

  1. La formule arithmétique, qui permet, dans le programme résultant, de calculer une variable. Le chapitre 2 définit les symboles possibles pour les constantes et les variables, le chapitre 3 les combinaisons de ceux-ci dans les formules arithmétiques.
  2. Les 15 expressions de contrôle, qui permettent d'établir l'ordinogramme du programme résultant. Elles sont décrites au chapitre 4.
  3. Les 13 expressions d'entrée et sortie, qui sont nécessaires pour fournir au programme résultant ses sous-programmes d'entrée et sortie (Voir cha¬pitre 5).
  4. Les 3 expressions d'organisation, qui donnent différentes informations nécessaires ou souhaitables pour établir un programme efficace. Elles sont décrites au chapitre 6.

CHAPITRE 2. LE LANGAGE FORTRAN : Constantes, Variables et Indices

Comme n'importe quel langage de programmation, FORTRAN permet d'ex¬primer les constantes numériques et les variables. Mais il donne aussi la possibilité d'employer des variables à 1, 2 ou 3 dimensions.

Constantes        Deux types de constantes sont permis : virgule fixe (sous forme d'entiers) et

virgule flottante (caractérisée par l'emploi d'un point décimal).

Constantes en virgule fixe.

FORME EXEMPLES

Un nombre de 1 à 5 chiffres décimaux  3

précédé ou non du signe + ou — (sans point).  + 1

La valeur absolue dort être inférieure à 32768. —28987

Toute constante positive peut être utilisée comme numéro d'expression. Constantes en virgule flottante.

FORME EXEMPLES

Un nombre décimal, avec un point         17.                        

remplaçant la virgule, en tête, à la fin    5.0                        

ou entre deux chiffres. Un signe + ou —             —.0003               

peut être utilisé. Un exposant qui doit 5.0E3     (=           5.0 x 10')

être précédéd'un E peut suivre le nombre.        5.0E+ 3 (=           5.0 x 10')

                5.0E — 7              (=           5.0 x 10—'7)

La valeur absolue du nombre doit être 0, ou un nombre compris entre 10-38 et 10+ ". Le nombre apparaît dans le programme résultant sous forme d'un nombre flottant normalisé en simple précision.

Variables en virgule fixe.

FORME EXEMPLES

1 à 6 caractères alphabétiques ou numériques (sauf les caractères spéciaux) dont le premier doit être I, J, K, L, M, ou N.           I              '

M2

JOBNO

Une variable fixe peut prendre une valeur quelconque dont la valeur absolue est inférieure à 32768 (voir au chapitre 7 la section « Arithmétique fixe »).

REMARQUES. Le nom d'une variable ne peut être le même que le nom d'une fonction utilisée dans le programme après l'enlèvement de la lettre F terminale. De même, si une variable indicée a 4 caractères ou plus dans son nom, le dernier ne doit pas être un F (Voir plus loin la signification de fonction et de variable indicée).

Variables en virgule flottante.

FORME EXEMPLES

1 à 6 caractères alphabétiques ou numériques (sauf les caractères spéciaux) dont le premier est alphabétique mais ne doit pas être

I, J, K, L, M ou N.              A

B7

DELTA

Une variable en virgule flottante peut prendre toute valeur pouvant être repré-sentée par un nombre flottant 704 normalisé, c'est-à-dire zéro ou un nombre dont la valeur absolue est comprise entre 10-38 et 10+38.

REMARQUE. Les restrictions concernant le symbole d'une variable en virgule fixe s'appliquent également aux symboles définissant une variable en virgule flottante.

Indices et            Un nombre quelconque d'un ensemble ou d'un tableau à 1, 2 ou 3 dimensions

Variables             peut être représenté par une variable affectée de 1, 2 ou 3 indices; la variable indicées             est dite alors indicée. Les indices sont des quantités entières dont la valeur détermine la position du nombre dans l'ensemble.



Indices.

FORME EXEMPLES

y représentant une variable en virgule fixe       

et c (ou c') une constante positive en fixe,         8

la forme de l'indice peut être : v              MU + 2

c              MU —2

v+ c ou v—c       5*J

c*v         5*J+ 2

c*v+ c' ou c*v— c'          5"J-2

Le symbole * signifie multiplication. La variable v ne peut être indicée. Le coefficient de l'indice est toujours positif.

Variables indicées.

FORME EXEMPLES

Variable fixe ou flottante suivie de 1, 2 ou 3 Indices, séparés par des virgules, et mis entre parenthèses.           A(I) K(3)

BETA (5*J-2, K + 2, L)

Pour chaque variable qui apparaît sous forme indicée, la grandeur du tableau (c'est-à-dire le maximum des valeurs que peut atteindre le ou les indices) doit être définie dans une expression DIMENSION (Voir chapitre 6) précédant la première apparition de la variable.

La valeur minimum que peut prendre un indice dans un programme résultant est + 1.

Disposition d'un ensemble dans les mémoires.

Dans le programme résultant, un tableau à 2 dimensions A sera dans les mémoires

en séquence dans l'ordre suivant : Ai,„ A2,1f     Am.1• A1,2, A2,2,         

Ama,     , A.,.. Il est donc classé par colonne avec le premier des indices

variant le plus rapidement et le dernier variant le moins rapidement. Il en est de même pour un tableau à trois dimensions. Pour un tableau à une dimension l'ordre est simplement en séquence. Le premier terme du tableau est mis en mémoire dans la mémoire d'adresse la plus élevée, et les termes suivants sont dans les mémoires d'adresses décroissantes. Donc, les termes sont rangés dans l'ordre décroissant des adresses des mémoires.

CHAPITRE 3. LE LANGAGE FORTRAN :

Fonctions, Expressions et Formules arithmétiques

Parmi les différentes expressions FORTRAN, la formule arithmétique définit un calcul numérique que doit exécuter le programme résultant. La formule arithmé-tique FORTRAN est très voisine des formules arithmétiques classiques; elle est composée d'une variable à calculer, suivie du signe =, suivi lui-même de l'expression arithmétique définissant la valeur de la variable. Par exemple, la formule arithmétique :

Y= A — SINF(B— C)

signifie « remplacer la valeur de y par la valeur de a--sin(b—c) ».

Comme le montre l'exemple ci-dessus, une expression FORTRAN peut indure le nom d'une fonction (par exemple, la fonction sinus : SINF) à condition que son évaluation puisse être faite soit à l'aide d'une expression fonction, soit à l'aide d'un sous-programme préétabli en langage 704 et placé sur la bande maîtresse FORTRAN.

FORME EXEMPLES

Le symbole d'une fonction comprend 4 à 7 caractères  SINF(A + B)

alphabétiques ou numériques (sauf les caractères spé-              RACF(SINF(A))

cieux) dont le dernier doit être un F et le premier alpha-            ENTF(3.*X)

bétique. Un X en tête du symbole donne automatique- ment la valeur de la fonction en fixe  XTANF(3.*X)

Le nom de la fonction est suivi par des parenthèses contenant les arguments (qui peuvent être des expres¬sions) séparés par des virgules.            

Type arithmétique d'une fonction et de ses arguments. Une fonction à un seul argument peut être définie de telle façon que son argument soit en fixe ou en flottant; de même, la fonction peut être, elle aussi, en fixe ou en flottant.

Ainsi, une fonction à un seul argument a quatre types arithmétiques possibles; en général, une fonction de n arguments aura donc 2.+1 types.

Un nom spécial doit être donné et un sous-programme doit être dispo¬nible pour chaque type employé. Une série complète de sinus pourra être faite de la manière suivante :

                SINOF   Argument fixe, fonction flottante

                SIN1F    Argument flottant, fonction flottante

                XSINOF Argument fixe, fonction fixe

                XSIN1F Argument flottant, forictIon fixe

où X et F sont obligatoires, mais où le reste du nom est arbitraire.

Fonctions définies dans la bande maîtresse FORTRAN.

10 Fonctions incluses dans le programme. Le traducteur FORTRAN possède, pour évaluer un certain nombre de fonctions, des sous-programmes ouverts. En voici la liste :

TYPE DE

FONCTION         DE FINITI ON     NOMBRE D'ARC.              ARGU-

MENT   RÉS UL

TAT

Valeur absolue ABSF     1             FL           FL

                XABSF   1             FX           FX

Entier    ENTF     1             FL           FL

                XENTF   1             FL           FX

X Modulo Y        MODF   2             FL           FL

                XMODF                2             FX           FX

Maximum           MAXOF                >2           FX           FL

                MAXI F >2           FL           FL

                XMAXOF             >2           FX           FX

Minimum            XMAX1F

d° que ci-dessus avec MIN à la place de MAX    >2           FL           FX

Flottant               FLOTF   1             FX           FL



Fixation               XFIXF    1             FL           FX

I XI Signe Y          SIGNF   2             FL           FL

                XSIGNF 2             FX           FX

NOTE. La fonction modulo doit être interprétée de la façon suivante : MODF (X, Y) = X — [X /Y] Y où [a] signifie partie entière de a.

La fonction signe doit être interprétée ainsi : SIGN (X, Y) = IX signe (Y).

Ce type comprend 18 fonctions toujours assemblées dans le programme comme des sous-programmes ouverts.

20 Fonctions de la bibliothèque. En plus des sous-programmes ouverts, des fonctions quelconques uniformes avec un nombre quelconque d'arguments peuvent être incorporées par le programmeur sur la bande maîtresse et être disponibles pour la programmation. De tels sous-programmes seront assemblés dans le programme résultant comme des sous-programmes fermés. La section « Écriture des sous-programmes », au chapitre 7, donne les spécifications d'un sous-programme et le manuel d'utilisation explique comment ce sous-programme est mis sur la bande.

Les fonctions disponibles sur la bande sont les suivantes :

TYPE DE FONCTION        DÉSIGNATION

Fonctions trigonométriques                      SINF(X)

COSF(X)

TANF(X)              sin x

cos x

tg x

                IXI < 1   ASINF(X)             arcsin x

                IXI < 1   ACOSF(X)

ATANF(X)           arccos x arctg x

Fonction hyperbolique                 TANHF(X)           th x

Fonctions logarithmique et        0 < X      LOGF(X)              Log x exponentielle                       EXPF(X)               ex

Racine carrée    0 < X      RACF(X)               Vx

Fonctions de Bessel       0 < X      BJOF(X)               Jo (x)

                0 < X      BJ1 F(X)               J1 (x)

                0 < X < 88            BIOF(X)                Io            (x)

                0 < X < 88            BI1F(X) 11           (x)

                0 < X < 88            BKOF(X)              Ka (x)

                0 < X < 88            BK1 F(X)              K1 (x)

                0 < X      BYOF(X)               Yo (x)

                0 < X      BY1F(X)                Y1 (x)

Fonction Gamma            X / entier négatif             GAMF(X)            r (x+1)

NOTE. La fonction Log x est le logarithme naturel, c'est-à-dire Nepérien.

Expressions Fonctions.

Une fonction peut aussi être définie dans le programme origine lui-même au moyen d'une expression fonction et la définition sera conservée tout au cours de ce programme. Ainsi, il est possible d'avoir à sa disposition des fonctions avec les notations que l'on désire, fonctions qui ne sont pas assez importantes pour être placées sur la bande maîtresse FORTRAN et qui n'intéressent que des problèmes particuliers.

DÉFINITION       EXEMPLES

« a = b» où a est un nom de fonction suivi entre paren-              PREMF(X) = A*X -I- B

thèses des arguments (qui doivent être des variables  SECONDF(X,B) = A*X -I: B

différentes non indicées) séparés par des virgules et b               TROISF(I,A) = 3.0*A**I

une expression arithmétique (voir la suite de ce cha-   QUATF(E,D) = PREMF(E)/D pitre) qui ne comprend pas                de          variables             indicées.             CINQF(J) = J + K

Les fonctions qui peuvent être utilisées dans b sont      SINHF(X) = 0,5* (EXPF(X)   ou des fonctions ouvertes, ou des fonctions de la bande maîtresse, ou des fonctions déjà définies par des expres¬sions fonctions.          1.(EXPF(X))

Comme pour une fonction, le résultat peut être fixe ou flottant suivant que le nom commence ou non par un X.

La partie droite d'une expression fonction doit être une expression qui n'a pas de variable indicée et peut contenir tout ce qui a été défini dans les précédentes sections; en particulier il est possible d'employer les fonctions déjà définies et même d'employer des fonctions précédemment définies par une autre expression fonction.

Il est possible de choisir autant de variables que l'on désire pour une telle expression; elles doivent être placées dans la partie gauche entre paren¬thèses pour définir les arguments de la fonction qui seront transformés en une autre expression. On obtient ainsi un modèle d'expression extrêmement souple pour les fonctions qui intéressent particulièrement un problème; les noms des arguments n'ont aucune importance (excepté l'indication du mode d'expression fixe ou flottant) et peuvent être les mêmes que des noms déjà employés au cours du programme.

Les variables de la partie droite qui ne sont pas définies comme arguments sont traitées comme paramètres. Ainsi, si PREMF est défini par l'expression fonction

PREMF(X) A*X B

la référence PREMF (Y) permet de calculer ay b à partir des valeurs actuelles de a, de b et de y. Toutefois, le nom des paramètres doit suivre les règles d'une seule définition.

Une fonction définie par l'expression fonction peut être utilisée exactement comme une autre fonction. En particulier, ses arguments peuvent être des expressions et peuvent contenir des variables indicées. Suivant la définition précédente, on pourrait donc écrire PREMF (Z + Y (I)) qui calculerait



a (z         yi)           b à partir des valeurs de a, b, yi et z.

Les fonctions définies par l'expression fonction sont toujours assemblées comme des sous-programmes fermés.

REMARQUE IMPORTANTE. Les expressions fonctions d'un programme doivent précéder la première expression exécutable du programme.

Une expression arithmétique est composée d'une suite quelconque de cons¬tantes, de variables (indicées ou non), de fonctions séparées par des symboles opérations, des virgules, des parenthèses.

Cependant, une expression FORTRAN peut être soit en fixe, soit en flottant, mais ne peut être une expression mixte. C'est-à-dire qu'une quantité flottante ne peut être incorporée dans une expression en fixe et vice versa. Toutefois, une quantité d'un certain type peut apparaître dans une expression d'un autre type dans certains cas particuliers. Une quantité flottante peut apparaître dans une expression fixe seulement comme argument d'une fonction. Une quantité fixe peut apparaître dans une expression flottante comme argument de fonction, comme indice ou comme exposant.

Règles pour la formation des expressions arithmétiques. De l'application des règles suivantes, on peut déduire toutes les expressions permises.

  1. Les constantes, variables, variables indicées en virgule fixe (ou en virgule flottante) sont des expressions du même type. Ainsi, 3 et I sont des expres-sions fixes et ALPHA et A(I,J,K) sont des expressions flottantes.
  2. Si FONCF est une fonction de n variables et si E, F,         H est un jeu

de n expressions du type correct pour FONCF, FONCF (E, F,      H)

est une expression du même type que FONCF.

  1. Si E est une expression dont le premier caractère n'est ni + .ni E

et — E sont alors permis et sont du même type que E. Par contre, — A étant une expression, -I- — A n'est pas une expression.

  1. Si E est une expression, (E) est une expression du même type que E. Ainsi (A), ((A)), (((A))), etc, sont des expressions.
  2. Si E et F sont des expressions du même type et si le premier caractère de F n'est ni +, ni — :

E + F E — F E * F E F

sont des expressions du même type, mais A — B et. A/+ B ne sont

pas des expressions. Les caractères +,  *, et / signifient addition,

soustraction, multiplication et division.

  1. Si E et F sont des expressions, si F n'est en virgule flottante que si E l'est aussi, si le premier caractère de F n'est ni + ni — et si ni E ni F ne sont de la forme A**B, alors :

E ** F

est une expression du même type que E. De même, A**(B**C) est une expression, mais I*• (B**C) et A**B**C ne sont pas des expressions. Le symbole ** signifie exponentiation, c'est-à-dire que A**B signifie AB.

Hiérarchie des opérations. Quand la hiérarchie des opérations d'une expres¬sion n'est pas complètement définie par des parenthèses, il est sous-entendu qu'elle s'effectue clans l'ordre suivant (en partant des opérations les plus inté¬rieures vers les plus extérieures) :

Exponentiation

Multiplication et Division

Addition et Soustraction

Par exemple, l'expression :

signifie :               A + BJC + D**E*F — G A+ (B/C)+ (DEF)—G

Ordre à l'intérieur d'une hiérarchie. Les parenthèses qui ont été omises dans une suite de multiplications et divisions consécutives ou additions et sous¬tractions consécutives, seront sous-entendues comme étant groupées à partir de la gauche. Ainsi, si . représente * ou / (ou bien + ou —), alors

A.B.C.D.E

signifie :

((((A.B).C).D).E)

Vérification des parenthèses. La règle suivante est suggérée pour la vérification des parenthèses dans une expression compliquée.

Numéroter la première parenthèse 1, puis, en travaillant de gauche à droite, augmenter le numéro de 1 pour chaque parenthèse ouverte et diminuer de 1 pour chaque parenthèse fermée. Le numéro de la dernière parenthèse doit être O. La parenthèse de fermeture d'une parenthèse ouverte numérotée n doit être la parenthèse suivante numérotée n-1.

Optimisation des expressions arithmétiques. L'efficacité du programme résul¬tant après traduction des expressions arithmétiques dépend particulièrement du mode d'écriture. La section sur l'optimisation des expressions arithmétiques au chapitre 7 mentionne quelques considérations qui influent- sur l'efficacité du programme résultant.

FORME EXEMPLES

«a= b » où a est une variable (indicée ou non)

et b        une expression arithmétique.  A(I).--- B(1)-1- SINF(C(I))

Dans la formule arithmétique a = b, le signe = signifie « a doit être rem¬placé par b ». Une expression arithmétique provoque le calcul de la valeur de la partie droite et la mise en mémoire de cette valeur à la place de la variable définie dans la partie gauche.

Le résultat est mis en mémoire sous forme fixe ou flottante suivant que le type de la variable de gauche est fixe ou flottant.

Si la variable à gauche est fixe et que l'expression à droite est flottante, le résultat sera d'abord calculé en flottant, ensuite tronqué et enfin mis en fixe. Ainsi, si le résultat est ± 3,569 le nombre mis en mémoire ne sera pas ± 4. mais ± 3.

Exemple.

FORMOL'            SIGNIFICATION

A.. B      Mettre la valeur de B à la place de A.

.,. g        B est tronqué, converti en fixe et mis à la place de I.

A= I        1 est converti en flottant puis mis à la place de A.

I = 1+1  1 est ajouté à I et le résultat mis à la place de I.

                Cet exemple montre bien qu'une formule arithmétique n'est pas une équation mais le remplacement d'une valeur par une autre.

A= MAX1F(SINF(B),COSF(B))     A est remplacé par la plus grande des quantités sin B et cos B.

                Cet exemple montre l'utilisation d'une fonction comme argument d'une fonction.

A = 8.0•B            A est remplacé par 3B.

A= 3*B Incorrect. Cette expression est mixte.

A= l*B   Incorrect. Cette expression est mixte.


275