Home

FORTRAN - Guillaume Speurt

image

Contents

1. Iterer Sortir si condition de sortie de boucle Instructions Fin Iterer On la traduira en FORTRAN par une boucle It rer C Tant que non condition de sortie et1 IF condition de sortie GOTO et2 Instructions de boucle GOTO et1 T et2 CONTINUE C Fin Tant que etl et et2 sont des tiquettes num riques Les commentaires sont utiles pour mettre en vidence la construction 5 3 3 3 Boucle Faire tant que ou jusqu ce que JJH 05 2005 Le langage FORTRAN page 45 La construction Faire Tant Que n existe pas en FORTRAN Dans ce cas il conviendra galement de la construire l aide des instructions GOTO et IF Faire Instructions de boucle Tant que condition vraie En FORTRAN C Faire et1 CONTINUE instructions IF condition vraie GOTO et1 C Tant Que condition vraie 5 3 3 4 Boucles ind termin es ou boucles ITERER Il est possible en FORTRAN 90 d crire des boucles iterer g n ralis es La condition de sortie se posera alors sous la forme IF condition de sortie EXIT La boucle suivante DO WHILE I LE 100 sequence END DO devient alors DO IF I GT 100 EXIT sequence END DO JJH 05 2005 Le langage FORTRAN page 46 6 Les Entr es Sorties 6 1 Instructions de lecture et d criture simples 6 1 1 G n ralit s Elles rev tent un caract re important car elles permettent la communication avec l utilisateur ou avec des
2. EN NN EN m m Compilation Edition des liens Linker Fichier JJH 05 2005 Le langage FORTRAN page 7 2 Structure des instructions 2 1 Structure d un programme Un programme comporte g n ralement plusieurs modules Ces modules peuvent figurer dans un m me fichier ou dans des fichiers diff rents Lorsque les modules figurent dans des fichiers individuels il est possible et c est m me fortement conseill de les r utiliser dans d autres programmes L inconv nient mineur est la n cessit d emploi d un fichier projet charg de communiquer l diteur de liens les noms des diff rents modules lier Un ensemble de modules doit pour pouvoir tre ex cut comporter un programme principal Le programme principal peut faire appel des proc dures et des fonctions qui peuvent faire de m me Un module comporte diff rentes parties L ent te ou le nom du module En FORTRAN on peut trouver Q PROGRAM nom du programme pour le programme principal SUBROUTINE Liste des argumentss pour un sous programme FUNCTION Liste des arguments pour une fonction e Les d clarations des arguments s il y a lieu e Les d clarations des variables Les initialisations et d clarations particuli res Cette section est un peu particuli re et sera trait e en fin de manuel Les instructions ex cutables C est la traduction en langage FORTRAN de l algorithme l instruction FIN de module En FORTRA
3. La fonction TRAPO qui sera nomm e TRAP FOR est donn e ci dessous On la compilera s par ment FUNCTION TRAP A B F DX A et B sont les bornes d integration ei F est la fonction a integrer el DX est le pas de l integration el N B A DX 5 C N est le nombre de pas necessaires entier gt 1 TRAP F A F B 2 X A c DO 10 I 1 N X X DX JJH 05 2005 Le langage FORTRAN page 39 TRAP TRAP f X 10 CONTINUE TRAP TRAP DX RETURN END Le lecteur compilera les diff rentes parties s par ment puis essaiera de les rassembler en un seul bloc pour les compiler en une seule fois Prendre soin de noter les diff rences au niveau de la programmation A titre d exercice refaire la manipulation en adoptant la m thode de SIMPSON En g n ral le FORTRAN est fourni avec un environnement de d veloppement qui permet l dition des diff rents modules et la gestion de projet Le descripteur de projet fait appara tre tous les fichiers source for et f90 qui composent le projet JJH 05 2005 Le langage FORTRAN page 40 s Algorithmique et FORTRAN 5 1 Noms de blocs En algorithmique on d crit les programmes l aide de diff rents modules Ces modules sont des programmes des sous programmes ou des fonctions Ils sont d limit s par les d clarations de d but et de fin Les d clarations des variables et arguments suivent obligatoirement la d claration
4. 1 0 0000000E 00 0 0000000E 00 2 0 392699 0 3826835 3 0 7853982 0 7071068 4 1 178097 0 9238795 5 1 570796 1 000000 Press any key to continue En changeant la ligne d appel du sous programme de la mani re suivante la compilation et l x cution du programme se passent correctement JJH 05 2005 Le langage FORTRAN page 30 CALL TABLESIN ANGLES TABLE 5 Le dernier param tre est cette fois une constante Si l on crit ce dernier argument sous la forme d un r el il n y a toujours pas d erreur de compilation CALL TABLESIN ANGLES TABLE 5 mais les r sultats sont un peu diff rents 1 4 3160208E 08 4 3160208E 08 2 4 3160208E 08 4 3160208E 08 3 4 3160208E 08 4 3160208E 08 4 4 3160208E 08 4 3160208E 08 5 4 3160208E 08 4 3160208E 08 Press any key to continue Cette erreur est typique d un d faut de passage d arguments En effet normalement le sous programme attend comme dernier argument une valeur sur 2 octets INTEGER 2 or le compilateur a interpr t la valeur 5 comme un nombre r el cod sur 4 octets On remarque qu il est ais de commettre une erreur de taille sur les arguments Une erreur fr quente consiste confondre INTEGER 2 INTEGER 4 et INTEGER La d claration INTEGER produit un entier sur 4 octets ou rarement sur 2 selon les param trages du compilateur Il est important de surveiller le type et l ordre des argum
5. FORMAT libre ou automatique C est g n ralement ce que fera le d butant ou lorsque l on veut crire rapidement un programme JJH 05 2005 Le langage FORTRAN page 47 Exemples de lecture et d criture standard READ WRIT m ar A B C A B C En conclusion l utilisation des instructions READ et WRITE standard est courante lors de la r alisation premier jet d un programme 6 1 2 Instruction de lecture La forme g n rale simple d un ordre de lecture est READ constante enti re liste des variables destination La constante enti re d signe le fichier source d o proviennent les donn es Rappelons que le syst me consid re galement les p riph riques console comme tant un fichier d j ouvert Cette constante est comprise entre 1 et 99 Voir le paragraphe pr c dent pour les assignations standard A chaque ordre READ une nouvelle ligne du fichier lire est examin e Le signe signifie que les valeurs lire peuvent avoir t crites sans contrainte de cadrage et de pr sentation Il suffit de faire appara tre les donn es dans l ordre de lecture et de les s parer par des blancs tabulations ou par des virgules On peut cependant effectuer des lectures sur des pr sentations plus complexes mais dans ce cas il faut utiliser une r f rence une ligne FORMAT la place de l toile La liste des variables d finit celles qui seront affect es lors de l op rati
6. CRITURE 48 6 1 4 LES BOUCLES IMPLICITES DANS LES INSTRUCTIONS LE LECTURE CRITURE 48 6 1 5 FORMATS DE LECTURE CRITURE 49 6 2 ECHANGES AVEC LES FICHIERS 51 6 2 1 D FINITION DE FICHIER 51 6 2 2 CONTENU D UN FICHIER 52 6 2 3 MODES D ACC S UN FICHIER 52 6 2 4 MODE OP RATOIRE 52 6 3 LES INSTRUCTIONS RELATIVES AUX MANIPULATIONS DE FICHIERS 52 6 3 1 OUVERTURE D UN FICHIER 52 6 3 1 1 Description de chaque param tre 53 6 3 2 FERMETURE D UN FICHIER 54 JJH 05 2005 Le langage FORTRAN Annexe C page 86 6 3 3 ENREGISTREMENT FIN DE FICHIER 6 3 4 POSITIONNEMENT D UN ENREGISTREMENT EN ARRI RE SUR UN FICHIER 6 3 5 REPOSITIONNEMENT D UN FICHIER SUR LE PREMIER ENREGISTREMENT 6 3 6 LECTURE DES PARTICULARIT S D UNE UNIT OU D UN FICHIER 6 3 6 1 Description des arguments 6 3 7 LECTURE ET CRITURE DES DONN ES DANS UN FICHIER 6 4 IMPRESSION DE R SULTATS 6 5 STRUCTURES DES FICHIERS ET DES ENREGISTREMENTS 6 5 1 LES ENREGISTREMENTS FORMAT S 6 5 1 1 Les fichiers s quentiels format s 6 5 1 2 Fichiers format s acc s direct 6 5 2 LES ENREGISTREMENTS NON FORMAT S 6 5 2 1 Les enregistrements s quentiels non format s 6 5 2 2 Les fichiers acc s direct et enregistrements non formatt s 6 5 3 LES ENREGISTREMENTS BINAIRES 6 5 3 1 Les fichiers s quentiels binaires 6 5 3 2 Les fichiers binaires acc s direct 7 TRAITEMENT DE L INFORMATION 7 1 EXPRESSIONS ARITHM TIQUES 7 1 1 D FINITION 7 1 2 OP RATEURS
7. Le Langage FORTRAN Version 2 Alpha Fortran 77 90 95 J J HUNSINGER Le langage FORTRAN page 2 Cet abr g de FORTRAN est un des supports de cours de l Unit de Valeur AG43 Bases de l informatique l usage de l ing nieur UTBM Il peut tre diffus librement en l tat Il s agit actuellement de la Version 2 Alpha en cours d laboration dont le contenu n est pas encore fig et les fautes pas encore corrig es La date de derni re mise jour est 13 04 2005 10 42 JJH 05 2005 Le langage FORTRAN page 3 INTRODUCTION 1 1 Historique En Novembre 1954 L informatique commence prendre de l ampleur Jusqu alors les langages de programmation sont rest s proches du langage machine La compagnie International Business Machines Les initiales ne vous rappellent elles rien publie la description d un langage de programmation volu appel alors syst me de FORmula TRANslator traducteur d quations Ce nouveau langage plus condens avait pour vocation d ouvrir l utilisation des ordinateurs aux scientifiques C est en 1956 qu est apparu le premier manuel de r f rence de chez IBM Ce manuel d crivait le FORTRAN I Evidemment ce langage tait appel voluer C est ainsi que successivement sont apparus e 1957 FORTRAN HII 1958 FORTRAN III Rest plus ou moins confidentiel 1962 FORTRAN IV Il aura r gn 16 ans 1978 FORTRAN V Normalisation ANSI et AFNOR Durant toute cette v
8. Les fonctions implicites qui font partie du langage Elles se trouvent dans les librairies du FORTRAN Ce sont par exemple les fonctions math matiques du genre SIN x SQRT x etc Les sous programmes qui sont appel s par un CALL et peuvent fournir plusieurs r sultats Ces r sultats figurent obligatoirement parmi les arguments 4 3 1 Structure d un sous programme type SUBROUTINE SUBROUTINE nom liste des arguments D clarations des arguments D clarations des variables Instructions ex cutables RETURN END L instruction RETURN redonne la main au programme appelant On peut placer plusieurs instructions RETURN dans un m me module mais pour des raisons de structuration et de lisibilit on vitera cette pratique Faire figurer cette instruction de pr f rence la fin du module ou alors l oublier car elle n est plus n cessaire pour les versions actuelles du FORTRAN Il faut d clarer les arguments comme s il s agissait de variables Le compilateur ne r serve pas la place m moire puisque ceci a t fait dans un module hi rarchiquement sup rieur En fait quand le nom d une variable figure simultan ment dans la liste des arguments en entr e et dans une d claration le compilateur utilise uniquement les informations de type fournies par la d claration Arguments et variables peuvent figurer dans une m me d claration Il est pr f rable uniquement pour des raisons de clart du module de s parer les
9. Dans l exemple qui suit les deux valeurs entr es sont s par es par une virgule La virgule ne s pare pas les d cimales de la partie enti re d un nombre mais sert de s parateur de valeurs L instruction PROGRAM a galement t volontairement omise L instruction END reste obligatoire ITE Donner A et B EAD A B A A B B TE Xy AJC R R N Hza wW I D Donner A et B 2 4 20 00000 Press any key to continue JJH 05 2005 Le langage FORTRAN page 9 Le premier WRITE affiche un texte qui est une constante alphanum rique cha ne de caract res la constante cha ne est encadr e par deux apostrophes Attention ne pas introduire des apostrophes suppl mentaires par inadvertance voir 3 1 6 2 3 El ments de base du langage Lorsque l on crit un programme on utilise les lettres de l alphabet les chiffres et quelques signes Les caract res reconnus par le compilateur sont e Les 36 caract res alphanum riques les 10 chiffres d cimaux les 26 lettres de l alphabet e Les caract res sp ciaux espace typographique signe egal plus moins etoile barre de fraction parenth ses Il TAN I virgule point apostrophe double point Chaque instruction sauf l instruction d affectation ex VALEUR 10 commence par un mot cl du FORTRAN 2 4 Les mots cl du langage G n ralit s Leur nombre est limit Ils constituent le vocabulaire r
10. Un tableau cr par allocation dynamique de m moire autorise un indi age quelconque donc ne commen ant pas forc ment 1 Cette possibilit est rarement utile aussi on pourra consulter le manuel fourni avec le langage pour une utilisation ventuelle L allocation de la m moire se passe en faisant appel la proc dure ALLOCATE On l utilise comme suit ALLOCATE tabl diml dim2 tab2 dim3 STAT erreur erreur est une variable enti re qui contiendra un code erreur gal 0 si tout s est bien pass Cette possibilit est facultative mais dans le cas d une omission la gestion des erreurs est plus difficile Attention Les tableaux dynamiques ne peuvent pas appara tre dans des d clarations comme AUTOMATIC COMMON DATA EQUIVALENCE STRUCTURE Un tableau de structures peut tre du type dynamique 3 44 Lib ration de la m moire L int r t majeur de l allocation dynamique de la m moire est la possibilit de la lib rer pour la r affecter un autre tableau la lib ration m moire se fait l aide de la proc dure DEALLOCATE L usage est le suivant DEALLOCATE liste tableaux STAT erreur La variable erreur est un entier elle indique surtout un essai de lib ration d une variable n ayant jamais exist Exemple T REAL 4 tableau ALLOCATABLE INTEGER dim x dim y erreur c Ouverture du fichier de donnees OPEN 12 FILE ENTREE DAT STATUS OLD
11. ancien Fortran Microsoft revendu car pas assez rentable du point de vue commercial Le compilateur traduit les instructions qui ont t tap es par le programmeur et produit si aucune erreur n a t faite en langage machine La traduction est plac e dans un fichier objet dont le nom est identique celui du fichier source mais dont l extension est cette fois OBJ sous DOS et o sous UNIX Attention dans certaines configurations l diteur de liens est automatiquement appel et rend le programme ex cutable modifier enregistrer des fichiers il n est pas indispensable de conna tre le type exact du support sur lequel on effectue les stockages MS DOS a totalement disparu actuellement 2Se r f rer au manuel correspondant au syst me d exploitation JJH 05 2005 Le langage FORTRAN page 5 Deux cas sont possibles Votre fichier programme contient tout ce qui est n cessaire programme et sous programmes Dans ce cas le fichier objet est pratiquement complet Il ne lui manque que l ent te de d marrage la mise en place des zones m moire pour les variables les fonctions intrins ques par ex sin et les adresses relatives des diff rentes sections appel es L diteur de liens se charge de r soudre ces probl mes qui sont en fait ind pendants plus ou moins du type de langage utilis On peut en prenant toutefois certaines pr cautions d crites dans les manuels lier des modules objet cr s partir du FOR
12. c Lecture des dimensions READ 12 dim x dim y c Allocation ALLOCATE tableau dim x dim y STAT erreur T IF erreur NE 0 STOP Erreur Allocation memoire JJH 05 2005 Le langage FORTRAN page 27 c Lecture de tous les termes du tableau DO I 1 dim x READ 12 tableau 1 J J 1 dim y END DO c Liberation memoire DEALLOCATE tableau Lorsque l on alloue dynamiquement de l espace m moire une variable dans un sous programme cet espace est automatiquement lib r lorsque l on quitte le sous programme s il est compil en FORTRANO9S 3 5 Les nouvelles formes de d claration des variables Avec le FORTRAN 90 la d claration des variables s est un peu modifi e Les d clarations classiques du FORTRAN 77 restent utilisables FORTRAN 90 admet une forme un peu diff rente simple assimiler Les types de variables restent identiques Les d clarations suivantes sont similaires REAL 4 A B X DIMENSION A 9 B 9 9 INTEGER 2 I J K Peut s crire RI R IN 4 DIMENSION 9 4 DIMENSION 9 EGER 2 I J K VESA 0 2 B ti d H gt D Ou encore REAL 4 A 9 B B 9 9 INTEGER 2 I J K FORTRAN9O offre des possibilit s de gestion de m moire beaucoup plus performantes que ses pr d cesseurs Il peut automatiquement cr er l espace m moire
13. es sur la m me ligne F90 Cas particulier le caract re espace Le compilateur l ignore sauf s il se situe dans une constante ou variable alphanum rique Dans l exemple ci dessous les trois lignes sont rigoureusement identiques et l absence ou la pr sence d espace laisse le compilateur totalement indiff rent Seul le lecteur peut tre g n lors de la lecture de la derni re ligne TOTAL PUHT NBRE TVA TOTAL PUHT NBRE TVA T O TAL PU HT NBRE TVA Il est donc possible en FORTRAN 90 de placer plusieurs instructions par ligne condition de les s parer par des points virgule mais r servez cette possibilit uniquement aux affectations d initialisation Exemple A 1 B 4 0 EPSILON 0001 2 6 Mise en place des instructions 2 6 1 Structure d une ligne FORTRAN de type classique format e JJH 05 2005 Le langage FORTRAN page 11 De nos jours les programmes sont tous crits sur la console l aide d un diteur de texte Pour les versions de FORTRAN ant rieures 90 une ligne se d compose en quatre groupes de colonnes total de colonnes 80 Colonnes 1 a 5 R serv es aux tiquettes Colonne 6 R serv e au caract re de continuation de ligne Colonnes 7 a 72 Instruction du programme Colonnes 73 a 80 Ignor es par le compilateur Attention Le non respect de l usage de ces quatre groupes de colonnes est une cause fr quente d erreurs que commet un d butant
14. faut DELETE qui signifie effacer apr s fermeture Ces fichiers sont consid r s comme fichiers temporaires Le status par d faut pour les autres fichiers sera KEEP JJH 05 2005 Le langage FORTRAN page 55 Exemple fermetur t effacement du fichier 8 CLOSE 8 STATUS DELETE 6 3 3 Enregistrement fin de fichier Cette instruction est peu utilis e ENDFILE unite ou ENDFILE UNIT unite ERR etiquettel IOSTAT erreur Les arguments sont identiques ceux d j vus pour OPEN et CLOSE Apr s avoir crit l enregistrement fin de fichier L instruction ENDFILE emp che tout transfert suppl mentaire de donn es si l on n a pas auparavant utilis l instruction REWIND ou BACKSPACE Lorsque l on op re sur un fichier acc s direct les enregistrements situ s apr s l enregistrement fin de fichier seront effac s Exemple d utilisation sur un fichier ouvert sur le num ro 7 RITE 7 resultat ENDFILE 7 REWIND 7 READ 7 donnee 6 34 Positionnement d un enregistrement en arri re sur un fichier 1 BACKSPACE unite ou T BACKSPACE UNIT unite ERR etiquette IOSTAT erreur Les arguments ne demandent pas d explication particuli re Exemple d utilisation pour le fichier 7 BACKSPACE 7 ou BACKSPACE 7 ou UNITE 7 BACKSPACE UNITE ou BACKSPAC i UNIT unite ERR 100 IOSTAT code_ e
15. n rale de la d claration CHARACTER n a k1 b k2 ou bien y CHARACTER a k1 n1 b k2 n2 o JJH 05 2005 Le langage FORTRAN page 25 a b sont des noms de variables k1 k2 sont des listes d indices maxi lorsqu on utilise des tableaux de cha nes de caract res n nombre de caract res de toutes les cha nes qui suivent n1 n2 nombre de caract res de la cha ne qui les pr c de directement Exemple CHARACTER T 1 Y 3 Z 5 10 T est un seul caract re Y est une cha ne de 3 caract res Z est un tableau de 5 cha nes de 10 caract res chacune 3 3 4 2 Groupements de Variables Les d clarations STRUCTURE et RECORD Les d clarations STRUCTURE et RECORD permettent de composer des ensembles de variables faciles manipuler Il s agit d un regroupement organis de variables de diff rents types sous une seule appellation On se reportera au 8 4 pour une tude de ces d clarations 3 4 Allocation dynamique de m moire ALLOCATE 3 4 1 G n ralit s sur l allocation dynamique de m moire La r servation en m moire de la place occup e par les variables a lieu lors de la compilation Il est donc IMPOSSIBLE de r server des tableaux dont on ne conna t pas l avance les dimensions Par cons quent REAL 8 TABLEAU L M est illicite dans un programme principal FORTRAN 90 va plus loin en consid rant toujours dans un sous programme ou une fonction la variable
16. page 84 INTRODUCTION 1 1 HISTORIQUE 1 2 ELABORATION D UN PROGRAMME 2 STRUCTURE DES INSTRUCTIONS 2 1 STRUCTURE D UN PROGRAMME 2 2 D MARRAGE RAPIDE DEUX INSTRUCTIONS UTILES READ ET WRITE 2 2 1 UTILISATION DE READ ET WRITE 2 2 2 LE PREMIER PROGRAMME 2 3 EL MENTS DE BASE DU LANGAGE 2 4 LES MOTS CL DU LANGAGE 2 5 LES S PARATEURS 2 6 MISE EN PLACE DES INSTRUCTIONS 2 6 1 STRUCTURE D UNE LIGNE FORTRAN DE TYPE CLASSIQUE FORMAT E 2 6 2 DESCRIPTION DES ZONES 2 7 COMMENTAIRES 2 8 UN EXEMPLE EN FORTRAN 77 2 9 LES IDENTIFICATEURS 3 CONSTANTES ET VARIABLES 3 1 CONSTANTES 3 1 1 G N RALIT S 3 1 2 CONSTANTES ENTI RES 3 1 3 CONSTANTES R ELLES 3 1 4 CONSTANTES COMPLEXES 3 1 5 CONSTANTES LOGIQUES 3 1 6 CONSTANTES CHA NES DE CARACT RES 3 1 7 D CLARATION DES CONSTANTES 3 2 LES VARIABLES 3 2 1 VARIABLES SIMPLES 3 2 2 LES TABLEAUX VARIABLES INDIC ES 3 3 D CLARATION DES VARIABLES 3 3 1 LES TYPES DE VARIABLES 3 3 2 D CLARATION IMPLICITE DES VARIABLES 3 3 3 D CLARATION EXPLICITE DES VARIABLES SIMPLES 3 3 3 1 Variables enti res 3 3 3 2 Variables r elles 3 3 3 3 Variables logiques 3 3 3 4 Variables complexes 3 3 3 5 Variables de caract res 3 3 3 6 L instruction DATA 3 3 4 CAS DES VARIABLES INDIC ES 3 3 4 1 Cas des cha nes de caract res 3 3 4 2 Groupements de Variables Les d clarations STRUCTURE et RECORD 3 4 ALLOCATION DYNAMIQUE DE M MOIRE ALLOCATE 3 4 1 G N RALIT S SUR L
17. 7 1 3 TYPE DES R SULTATS OBTENUS PAR 7 14 TYPE DES R SULTATS OBTENUS PAR L OP RATEUR PUISSANCE 7 1 5 R GLE D HOMOG N IT 7 2 TRAITEMENT DES CHA NES DE CARACT RES 7 2 1 ACC S UNE PARTIE D UNE CHA NE 7 2 2 OP RATEUR DE CONCAT NATION DE CHA NE 7 3 FONCTIONS NUM RIQUES STANDARD 7 4 EXPRESSIONS LOGIQUES 7 4 1 OP RATEURS DE RELATION ARITHM TIQUE 7 4 2 OP RATEURS LOGIQUES 7 5 OP RATEURS DE RELATIONS ALPHANUM RIQUES 8 GESTION M MOIRE 8 1 VARIABLES GLOBALES LA D CLARATION COMMON 8 2 LE PARTAGE M MOIRE LA D CLARATION EQUIVALENCE 8 3 VARIABLES SITU ES DANS LA PILE LA D CLARATION AUTOMATIC 8 4 LES STRUCTURES DE VARIABLES 8 4 1 D CLARATIONS STRUCTURE ET RECORD 8 4 2 LA D CLARATION TYPE JJH 05 2005 55 55 56 56 56 58 58 58 59 59 59 59 59 60 61 61 61 63 63 63 63 63 64 64 64 64 65 65 66 66 67 67 69 69 70 71 71 72 73
18. ALLOCATION DYNAMIQUE DE M MOIRE 3 4 2 D CLARATION JJH 05 2005 14 14 14 14 14 15 15 15 16 16 16 16 17 17 17 19 19 20 20 21 21 21 22 24 25 25 25 25 Le langage FORTRAN Annexa C page 85 3 4 3 ALLOCATION 26 3 44 LIB RATION DE LA M MOIRE 26 3 5 LES NOUVELLES FORMES DE D CLARATION DES VARIABLES 27 3 6 LES POINTEURS 28 3 7 D CLARATION DES SOUS PROGRAMMES ET FONCTIONS PASS S EN ARGUMENT 28 3 8 LES INTERFACES 28 3 9 LES MODULES 30 4 PROGRAMMES ET SOUS PROGRAMMES 32 4 1 PRINCIPE G N RAL 32 4 2 PROGRAMME PRINCIPAL 32 4 3 SOUS PROGRAMMES 33 4 3 1 STRUCTURE D UN SOUS PROGRAMME TYPE SUBROUTINE 34 4 3 2 STRUCTURE D UN SOUS PROGRAMME DU TYPE FUNCTION 35 4 4 VARIABLES ET ARGUMENTS 36 5 ALGORITHMIQUE ET FORTRAN 40 5 1 NOMS DE BLOCS 40 5 2 D CLARATIONS 40 5 2 1 LES D CLARATIONS DE MODULES 40 5 2 2 LES D CLARATIONS DE TYPE 40 5 2 3 LES D CLARATIONS D AGENCEMENT M MOIRE 40 5 3 CONSTRUCTIONS 40 5 3 1 CONSTRUCTIONS S QUENTIELLES 40 5 3 2 CONSTRUCTIONS ALTERNATIVES 40 5 3 2 1 Si Alors Sinon Fin Si 40 5 3 2 2 S quence Cas o 42 5 3 3 CONSTRUCTIONS IT RATIVES 42 5 3 3 1 Boucle Pour Fin Pour 42 5 3 3 2 Boucle Tant Fin Tant Que 43 5 3 3 3 Boucle Faire tant que ou jusqu ce que 44 5 3 3 4 Boucles ind termin es ou boucles ITERER 45 6 LES ENTR ES SORTIES 46 6 1 INSTRUCTIONS DE LECTURE ET D CRITURE SIMPLES 46 6 1 1 G N RALIT S 46 6 1 2 INSTRUCTION DE LECTURE 47 6 1 3 INSTRUCTION D
19. d clarations des arguments et des variables La forme g n rale de l appel d un sous programme du type SUBROUTINE sera CALL nom du sous programme liste des arguments Les arguments peuvent tre e des constantes de tous types JJH 05 2005 Le langage FORTRAN page 35 des expressions arithm tiques ou logiques des noms de fonctions ou de sous programmes des variables simples ou indic es l ments de tableaux des noms de tableaux En sortie le sous programme peut modifier e les variables simples e les variables indic es Attention Au moment de l appel les arguments doivent tre identiques en nombre ordre type aux arguments du sous programme Le passage d un tableau entier comme param tre se fait en donnant uniquement son nom non muni de parenth ses et d indices Dans ce cas le tableau doit tre red clar dans le sous programme Exemple d appel de sous programme CALL SPROG A MAT 10 Cas o un param tre est un nom de fonction ou de sous programme Lors d un passage d arguments il faut pr ciser au compilateur la nature des arguments pass s s agit il de simples variables ou de fonctions On utilise alors la d claration EXTERNAL en t te du programme appelant Exemple EXTERNAL COS SIN CA CALL INTI H Z H Le 22 COS SOMI 0 1 SIN SOM2 Dans l exemple ci dessus on pr cise que COS et SIN ne sont pas des variables m
20. dire que ces variables ne formeront qu une Y aura la m me implantation que le troisi me l ment de TAB Si l on place dans une liste d quivalence des l ments de tableaux distincts EQUIVALENCE A 5 B 7 non seulement A 5 serait gal B 7 mais aussi A 4 B 6 etc En cons quence la d claration suivante EQUIVALENCE A 5 B 7 A 1 B 1 est illicite JJH 05 2005 Le langage FORTRAN page 71 En couplant les d clarations EQUIVALENCE et COMMON on peut tendre les quivalences DIMENSION A5 COMMON X Y Z EQUIVALENCE Y A 2 Nous aurons dans ce cas en plus l quivalence entre X et A 1 Z et A 3 En suivant cette logique les d clarations suivantes sont illicites COMMON A B EQUIVALENCE A B L usage de l instruction EQUIVALENCE permet d conomiser de la place m moire Elle permet galement de bidouiller les variables car on peut d clarer quivalentes des variables de types diff rents Cette derni re fa on de faire est cependant viter si l on ne sait pas trop ce que l on fait 8 3 Variables situ es dans la pile la d claration AUTOMATIC Le FORTRAN fait appel uniquement des variables statiques c est dire que ces variables occupent de la place m moire durant toute la dur e du programme D autres langages comme le C proc dent de mani re diff rente une variable n occupe de la m moire que lors
21. en g n ral adopt e 6 3 1 1 Description de chaque param tre unit nombre entier qui sera choisi entre 10 et 99 Il est possible de prendre des valeurs inf rieures 10 au risque d avoir des ennuis l x cution et ventuellement une incompatibilit avec d autres compilateurs Ce sera le num ro d acc s au fichier Ce num ro est arbitraire mais il sera r serv ce fichier durant toute la dur e de son ouverture acces 3 types d acc s seront possibles SEQUENTIAL DIRECT ou APPEND pas impl ment sur tous les compilateurs Le mode d acc s par d faut est SEQUENTIAL blanks Option qui permet d valuer les espaces comme tant NULL par d faut ou ZERO etiquette Etiquette d une ligne instruction qui sera appel e en cas de probl me fichier Expression alphanum rique signifiant le nom du fichier format Expression qui sera soit FORMATTED soit UNFORMATTED Si l acc s est s quentiel le format par d faut sera FORMATTED erreur Variable enti re nulle si pas d erreur n gative si fin de fichier rencontr valeur positive non nulle figurant l erreur si probl me lg rec Expression enti re pr cisant le nombre de bytes d un enregistrement pour un fichier acc s direct Ignor pour un s quentiel status Peut tre OLD NEW SCRATCH UNKNOWN APPEND OLD Le fichier doit d j exister NEW Le fichier est cr er JJH 05 2005 Le langage FOR
22. g rer un parc de voitures il serait int ressant de grouper ces donn es sur une seule variable tout en gardant la possibilit d acc der individuellement chaque composante De plus si cette variable complexe pouvait tre manipul e comme un l ment de tableau dans le cadre de la gestion d un vaste parc de v hicules la manipulation des donn es serait grandement facilit e 8 4 1 D clarations STRUCTURE et RECORD La d claration STRUCTURE permet de r aliser ce groupement Utilisation de la d claration STRUCTURE nom structure d clarations des l ments END STRUCTURI zzi nom_ structure il s agit d un nom arbitraire que l on donne la structure dont la description suit Attention au choix du nom Ne pas utiliser de nom de fonctions intrins ques de variables d j utilis es de types de variables etc D clarations des l ments On d clare les variables qui sont en g n ral des variables classiques utilis es comme INTEGER 2 REAL 4 On peut aussi utiliser une structure d j d clar e car le nom de la structure est consid r comme tant un descripteur de type de variable Exemple appliqu au tableau ci dessus STRUCTURE VEHICULE CHARACTER 25 marque CHARACTER 15 mod le INTEGER 2 date achat 3 INTEGER 2 puissance INTEGER 2 masse INTEGER 2 charge REAL 4 coef END STRUCTURE Il n est pa
23. l allocation m moire n tant pas dynamique Par contre si N a t d fini par param trage pr alable cette criture est alors possible On peut remarquer dans l exemple pr c dent l instruction DIMENSION X N N Elle semble aller l encontre de ce qui vient d tre mentionn Mais dans cet exemple X est un argument ce qui signifie que ce tableau existe donc qu il a d j t cr La d claration DIMENSION dans ce cas pr cise au compilateur simplement que X est un tableau deux dimensions Il est logique de placer la d claration de type AVANT la d claration de dimension le type de la variable d finissant la quantit m moire n cessaire un l ment REAL 8 A DIMENSION A 50 On peut galement condenser REAL 8 TABL 10 La valeur d un indice ne peut tre ni n gative ni nulle En principe le programmeur n a pas se pr occuper de la distribution en m moire des variables aussi cet aspect sera pass sous silence Les choses voluant FORTRAN 90 autorise des r f rences d indi age quelconques On peut indiquer au moment de la d claration des tableaux les bornes d indi age Le FORTRAN 90 g re l allocation dynamique de m moire Elle est particuli rement utile pour les grands tableaux Elle permet d utiliser au maximum la m moire disponible On se reportera au paragraphe 3 4 traitant de l allocation dynamique de m moire 3 3 4 1 Cas des cha nes de caract res Forme g
24. l on appellera TRAP Cette fonction pourra tre compil e s par ment et li e au programme appelant au moment de l dition des liens Le programme qui suit sera appel PROG FOR FUNCTION GAUS T GAUS EXP T T 2 R ETURN END T I XTERNAL GAUS H E Donner EPS1 et EPS2 D EPS1 EPS2 RAP 10 10 GAUS EPS1 RAP 10 10 GAUS EPS2 TE 10 Y Z RMAT 2F12 4 I m w H gt H rer 10 HZ NK ZOJ I J 1 On peut dissocier le module fonction et le compiler s par ment sans probl me particulier On pourra essayer de d placer la d claration EXTERNAL avant la fonction et surveiller les messages d erreur qui ne manqueront pas d appara tre Si l on oublie de mentionner GAUS comme tant externe la fonction TRAP ne recevra pas les donn es n cessaires au calcul de la fonction GAUS et le programme plantera m me si aucun message d erreur n est apparu durant la compilation ou l dition des liens Comme d j dit on aura m me int r t compiler s par ment la fonction d int gration par la m thode des trap zes judicieusement appel e TRAP et la r unir au programme appelant seulement au moment de l dition des liens LINK ou Id Si l on dispose d une foule de petits utilitaires on aura certainement avantage se cr er sa propre librairie de fonctions et sous programmes l aide d un libraire mais ceci est une autre histoire
25. lecture de bien pouvoir lire un enregistrement complet Chaque enregistrement est s par par une suite CR LF code ASCII ODH OAH 6 5 1 2 Fichiers format s acc s direct Tous les enregistrements poss dent la m me longueur Chaque enregistrement peut directement tre lu ou crit sans passer par les pr c dents enregistrements La longueur d un enregistrement est sp cifi e au moment de l ouverture par RECL valeur En r alit il faut ajouter 2 caract res CR et LF qui servent de s parateur Si l on crit un enregistrement de longueur inf rieure celle sp cifi e il est automatiquement combl par des espaces typographiques code ASCII 32 L criture du 7 me enregistrement suivi du 5 me se fera par exemple ainsi OPEN 13 FILE FORDIR FORM FORMATTED ACCESS DIRECT RECL 15 WRITE WRITE A REC 7 Coucou I6 REC 5 12756 BL 1977 Lory Nous aurons sur le disque enregistrement 4 17 octets 12756 CR LF enregistrement 6 17octets Coucou CR LF La lecture se fait directement de fa on identique Il est inutile de lire tous les enregistrement pr c dant l enregistrement souhait 6 5 2 Les enregistrements non format s Les enregistrements non format s contiennent les donn es brutes sous une forme identique que celle utilis e en m moire Par exemple un r el simple pr cision occupe 4 octets en m moire Ecrit dans un fichier so
26. par un passage de param tre une d claration COMMON ou une d claration EQUIVALENCE Dans un sous programme on utilise deux types de variables 1 Les variables propres au module Le compilateur r serve en m moire la place que n cessitent les variables locales Il convient donc de les d clarer surtout quand le type de la variable ne correspond pas avec le caract re initial En fait pour une plus grande rigueur de programmation elles devraient toutes tre d clar es Utiliser la d claration IMPLICIT NONE pour forcer la d claration des variables Les tableaux locaux devront donc tre d clar s avec une dimension num rique ou d clar s dynamiques 2 Les arguments Ils sont fournis par le module appelant Leur place m moire n est donc plus r server le type de passage de param tre tant par r f rence par adresse Le sous programme travaille donc directement dans la m moire du programme principal lorsqu il utilise les arguments JJH 05 2005 Le langage FORTRAN page 37 Mais la d claration reste cependant n cessaire elle servira fixer le type de chaque variable s il peut y avoir ambigu t Une d claration concernant un param tre ne provoquera dont pas une r servation m moire En ce qui concerne les tableaux il faut obligatoirement les dimensionner Le dimensionnement d un tableau un seul indice ne pose pas de probl me car tous ses l ments se suivent en m moire La red cl
27. peut utiliser indiff remment majuscules et minuscules Les variables sont plac es dans des zones m moire rep r es par leur adresse Pour le programmeur le fait d ignorer l adresse physique en m moire d une variable n es pas du tout JJH 05 2005 Le langage FORTRAN page 13 un handicap d autant plus qu il n en d sire conna tre que le nom Le compilateur se charge de faire correspondre un identificateur une adresse m moire Un identificateur peut tre un nom de fonction de variable ou de proc dure Un conseil Pour cr er un identificateur n utilisez que les 26 lettres de l alphabet les chiffres et si vous d sirez inclure un espace prenez le caract re soulign Les majuscules et minuscules sont confondues par le langage On peut donc styliser les noms de variables par un usage combin de majuscules et de minuscules Les r gles l mentaires suivre pour la constitution de noms de variables seront d crites en annexe Exemples TOTAL RACINE 11 Les noms suivants ne sont pas valables Fortran 77 SOUSTOTAL Admissible mais comporte plus de 6 car 319 Commence par un chiffre A B Comporte un point PAUSE Mot reserve du langage Pour le Fortran 90 A B est admis dans le cas des variables structur es STRUCTURE voir dans le paragraphe 8 4 JJH 05 2005 Le langage FORTRAN page 14 3 Constantes et Variables 3 1 Constantes 3 1 1 G n ralit s Les const
28. rateurs de relations alphanum riques On peut galement comparer deux cha nes de caract res entre elles Les op rateurs seront GT GE EQ NE LE LT Une cha ne de caract res est valu e partir de la valeur en code ASCII des caract res Dans ce cas la comparaison se fait de la gauche vers la droite caract re apr s caract re la diff rence est faite d s l apparition d un premier caract re diff rent de son homologue en JJH 05 2005 Le langage FORTRAN page 68 position C est alors celui qui poss de le code ASCII le plus lev qui sera consid r comme sup rieur Signalons que le code ASCII respecte l ordre alphab tique Exemple HENRY est sup rieur HENRI JJH 05 2005 Le langage FORTRAN page 69 8 Gestion m moire D clarations COMMON EQUIVALENCE ALLOCATE 8 1 Variables globales La d claration COMMON La d claration COMMON tait fr quemment utilis e pour effectuer un passage des arguments avec d autres effets sur les variables qu il n est pas forc ment judicieux d exploiter comme par exemple le groupement des variables en m moire dans l ordre d fini dans la liste COMMON Syntaxe de la d claration COMMON COMMON noml bloc listel variables nom2 bloc liste2 La d claration COMMON a donc deux effets principaux e Elle groupe les variables dans l ordre de chaque liste Elle permet de les rendre visibles globales d un sou
29. rique Contient YVES si le fichier pr cis est acc s s quentiel unf Variable alphanum rique Contient YES si le fichier est de forme non format e Exemple d utilisation V rification de l existence d un fichier CHARACTER 12 nom LOGICAL existe c verification de l existenc INQUIRE FILE nom EXIST existe c entree du nom de fichier 100 WRITE Donnez le nom du fichier READ nom IF NOT existe THEN RITE Le fichier n existe pas JJH 05 2005 Le langage FORTRAN page 58 GOTO 100 END IF 6 3 7 Lecture et criture des donn es dans un fichier La lecture et l criture de donn es dans un fichier se fait avec les m mes instructions que pour la console READ unit format liste de variables WRITE unit format liste de variables L unit utilis e sera le num ro affect au fichier lors de l ouverture de celui ci 6 4 Impression de r sultats La plupart des syst mes d exploitation consid rent les imprimantes comme un fichier poss dant un nom g n rique comme PRN pour MS DOS ou WINDOWS Aussi si l on d sire imprimer des r sultats directement sur une imprimante il faut l ouvrir comme un fichier et y crire les donn es comme d habitude PRN OPEN 9 FILE Ce text st destine a 1 imprimante WRITE 9 6 5 Structures des fichiers et des enregistrements L acc s des donn es rassembl es
30. sont de types diff rents l op rande du type le plus faible occupant le moins de place m moire sera converti dans le type de l op rande le plus fort 7 2 Traitement des cha nes de caract res 7 2 1 Acc s une partie d une cha ne On peut si on le d sire acc der une partie d une cha ne de caract res en jouant sur les indices suivant le nom de la variable nom d f nom repr sente le nom de la variable d indique le rang du premier caract re concern le premier de la cha ne par d faut f indique le rang du dernier caract re concern Exemple CHARACTER 10 MOT MOT CONTORSION MOT 5 6 vaut OR MOT 4 vaut TORSION MOT 3 vaut CON excusez On peut modifier MOT MOT 4 5 VE JJH 05 2005 Le langage FORTRAN page 65 Apr s ex cution de cette instruction MOT contiendra CON VERSION L expression MOT 4 MOT 3 6 est interdite car de part et d autre du symbole d affectation figurent en commun MOT 3 4 Dans cet exemple il aurait fallu crire CHARACTER 4 TMOT TMOT MOT 3 6 MOT 4 TMOT Pour mettre une variable alphanum rique blanc il suffit de lui attribuer la cha ne de caract res nulle MOT Si une suite de caract res attribuer est trop longue pour la variable de destination seuls les premiers sont attribu s dans la limite des places disponibles 7 2 2 Op rateur de concat nation de cha ne Il est const
31. tableau comme n existant que pendant la dur e d utilisation du sous programme voir dans le paragraphe 3 5 On peut cependant trouver ce genre de d claration dans un sous programme en FORTRAN77 condition qu il s agisse de la d claration d un param tre Dans ce cas le tableau a d j t cr dans le programme appelant La d claration donne alors au compilateur les indications n cessaires pour tre en mesure de recalculer les adresses de chaque l ment et non pour cr er la place m moire Le FORTRAN offre maintenant une autre possibilit de gestion de la m moire L allocation dynamique de la m moire 3 4 2 D claration Dans le cas de l allocation dynamique de la m moire il faut toujours d clarer le tableau mais cette fois on ne donne aucune dimension pr cise sauf le nombre d indices de ce tableau La d claration doit toujours indiquer le type du tableau r el entier suivie de la mention ALLOCATABLE ainsi que d une indication donnant le nombre d indices La d claration d un tableau dynamique prend la forme suivante type nom ALLOCATABLE JJH 05 2005 Le langage FORTRAN page 26 Si le tableau risque de d passer 65536 octets il faut le d clarer HUGE type nom ALLOCATABLE HUGE Ceci n est valable que pour un compilateur travaillant sous MS DOS exemple pour un tableau de r els 3 indices REAL 8 TAB ALLOCATABLE 3 4 3 Allocation
32. utilisation d une instruction FORMAT 6 1 5 am liorerait la pr sentation En modifiant les noms des variables PROGRAM exemple2 AA 3 AB 2 AC AA AB WRITE Division de AA par AB donne AC END PROGRAM exemple2 On obtient un r sultat plus conforme Division de 3 000000 par 2 000000 donne 1 500000 Press any key to continue Dans le paragraphe 3 1 7 il a t voqu la possibilit d erreurs lors d une mauvaise representation des constants Voici un exemple simple PROGRAM exemple2 AA 3 2 IA 3 2 WRITE AA IA AA 3 2 TA 3 2 WRITE AA IA END PROGRAM exemple2 En sortie on aura 1 000000 1 500000 1 Press any key to continue AA est consid r e comme r elle et IA comme enti re 3 2 est consid r comme le quotient de deux entiers ce qui doit donner un r sultat entier c est ce qui est imprim par le premier WRITE On remarque bien que AA est interpr t comme r el et IA comme entier par le format automatique de sortie de l instruction WRITE L op ration 3 2 est le quotient d un r el par un entier ce qui donne un r sultat r el Le second WRITE montre que AA est correct et que IA n a pris en compte que la partie enti re du r sultat En conclusion Une mauvaise repr sentation des valeurs constantes l utilisation des d clarations implicites m me involontairement peut conduire des erreurs parfois difficiles rep rer V rifier que t
33. 005 Le langage FORTRAN page 76 INQUIRE LOCKING OPEN READ REWIND WRITE CASE CASE DEFAULT ELSE END IF END SELECT IF SELECT CASE CONTINUE CYCLE DO DO WHILE END DO EXIT ALLOCATE DEALLOCATE READ WRITE JJH 05 2005 Examen propri t s de fichiers Verrouillage de fichiers Ouverture de fichier Lecture Pointe sur le d but du fichier Ecriture STRUCTURES ALTERNATIVES Cas o F90 Idem F90 Sinon de la structure SI ALORS SINON Fin construction altern e SI Fin d un bloc Cas o F90 Structure alternative SI Cas OU BOUCLES Instruction d suette sans effet Effectue un saut au d but d une boucle F90 Boucle Pour ou Iterer Boucle Tant Que F90 Fin de boucle pour ou tant que ou iterer F90 Sortie pr matur e d une boucle DO ALLOCATION MEMOIRE Allocation dynamique de m moire F90 Lib re l espace r serv par ALLOCATE F90 ENTREES SORTIES Lecture Ecriture ANNEXE B Le langage FORTRAN Annexa B page 77 CLASSEMENT DES INSTRUCTIONS ORDRE ALPHABETIQUE Note Voici la liste des instructions du langage FORTRAN Lorsque l instruction est particuli re au FORTRAN 90 on trouvera la mention F90 Cette liste n a pour but que de rappeler l existence d une instruction mais pas d en donner l usage L utilisateur aura avantage consulter l aide en ligne fournie avec les compilateurs FORTRAN ALLOCATE ASSIGN AUTOMATIC BACKSPACE BLOCK DATA BYTE CALL C
34. 2 6 2 Description des zones Les tiquettes servent r f rencer les lignes pour par exemple un saut GOTO ou un format d entr e sortie FORMAT Il n est absolument pas n cessaire de respecter un ordre croissant de ces tiquettes Elles se placent toujours partir de la premi re colonne Les lignes de continuation sont utilis es lorsque l on risque de d passer la colonne 72 lors de l criture d une d claration de liste de variables ou lors d une instruction trop longue cas de formules complexes Le nombre de lignes de continuation ne peut en aucun cas exc der 19 Pour mettre en place une ligne de continuation il suffit de faire figurer dans la colonne 6 un chiffre quelconque ou tout simplement un point Une autre possibilit est de placer au bout de l instruction que l on d sire continuer sur la ligne suivante un caract re amp Exemple WRITE amp Cette ligne ne rentre pas sur 80 colonnes on coupe Les colonnes 73 80 taient utilis es lorsque les programmes taient crits sur cartes perfor es pour rep rer les cartes les unes par rapport aux autres Imaginez un l cher inopportun d un paquet de 500 cartes sur le plancher Aucun signe particulier marque la fin d une instruction Il ne peut y avoir qu une seule instruction par ligne On veillera ne pas couper un nom de variable ou un mot r serv en passant une ligne de continuation Attention Une erreur fr quente est le d passemen
35. 90 admet galement des commentaires en fin de ligne d instruction Dans ce cas ils commencent par un point d exclamation 2 8 Un exemple en FORTRAN 77 Voici un exemple de programme FORTRAN respectant les regles FA PROGRAM BIDON L instruction PROGRAM n est pas obligatoire Normalement il faudrait declarer ici variables et parametres mais comme il n y en a pas AQQQ WRITE Voici un message qui va etre affiche sur 1l ecran Notez que l on a volontairement oublie l apostrophe car elle delimite les constantes alphanumeriques ce qui dans le cas present aurait provoque une erreur signalee par le compilateur AQQQQ WRITE 1 Ceci est en fait une seule ligne ligne de continuation END C Faut pas l oublier 2 9 Les identificateurs Un identificateur est un nom que le programmeur attribue une variable un sous programme une fonction ou un bloc En principe il ne peut comporter plus de 6 caract res mais certains compilateurs en admettent d avantage Si l on utilise un identificateur faisant plus de 6 caract res les derniers sont au pire ignor s par le compilateur et il peut confondre deux variables distinctes Il ne faut pas choisir pour nom de variable un mot r serv Les mots r serv s sont les instructions de structuration et des noms de fonctions standard Ils utilisent toutes les lettres de l alphabet ainsi que les 10 chiffres mais ils ne commenceront jamais par un chiffre On
36. ASE CASE DEFAULT CHARACTER CLOSE COMMON COMPLEX CONTINUE CYCLE DATA DEALLOCATE DIMENSION DO DO WHILE DOUBLE ELSE END END STRUCTURE END UNION ENTRY EQUIVALENCE EXIT Allocation dynamique de m moire F90 Attribue la valeur d une tiquette un entier Les variables sont plac es de pr f rence dans la pile F90 Positionne le pointeur de fichier sur l enregistrement pr c dent Identifie un sous programme bloc de donn es dans lequel on peut initialiser variables et tableaux D claration quivalent INTEGER 1 variable sur 1 octet F90 Appelle et ex cute un sous programme Cas o F90 Idem F90 D claration pour variables alphanum riques Fermeture de fichier Variables globales partage par plusieurs modules D claration pour variables complexes Instruction d su te sans effet Effectue un saut au d but d une boucle F90 Initialisation de variables Lib re l espace r serv par ALLOCATE F90 D claration pour tableaux Boucle Pour Boucle Tant Que F90 D claration double pr cision Sinon de la structure SI ALORS SINON Fin de module programme sous programme Fin de boucle pour ou tant que F90 Mise en place caract re fin de fichier Fin construction altern e SI Fin d un bloc Cas o F90 Fin d une structure F90 Fin d une instruction de partage m moire UNION F90 Sp cifie un point d entr e secondaire dans un sous programme viter Parta
37. ATA ou d entr e sortie o elle d signe tout le tableau TU ROGRAM exemple3 EAL 4 A 3 ATA Av De af WRITE A ND PROGRAM exemple3 U W gal on aura comme r sultat 1 000000 2 000000 3 000000 Press any key to continue La ligne DATA initialise le tableau A entier et la ligne WRITE crit le tableau entier Lorsqu elle est plac e dans une liste d arguments d un sous programme dans quel cas elle indique l adresse du premier l ment Exemple PROGRAM exemple4 REAL 4 A 4 4 DATA A 16 1 0 RITE TRACE A 4 ND PROGRAM exemple4 zal 4 FUNCTION TRACE X N 4 X MENSION X N N TEGER I N FE E D D H IWW I N TRACE TRACE X I I Dans une d claration de type ou de commun la dimension tant d clar e dans une autre instruction voir exemple pr c dent La r gle de d finition du type par d faut est respect e dans le cas d une variable indic e Attention faut pr venir le compilateur de la place m moire r server une variable indic e l aide de l instruction DIMENSION Exemple JJH 05 2005 Le langage FORTRAN page 24 DIMENSION ELEM 20 20 X 20 On indique au compilateur la valeur maximale que pourra atteindre l indice Il est IMPOSSIBLE dans un programme principal de placer une variable dans une instruction de dimensionnement comme par exemple DIMENSION A N N
38. ATS DU CALCUL Il aurait fallu provoquer un saut de page et crire le titre au d but de la nouvelle page de la mani re suivante 10 FORMAT 20H1RESULTATS DU CALCUL 6 2 Echanges avec les fichiers 6 2 1 D finition de fichier Il sera int ressant d envoyer certains r sultats dans des fichiers pour une utilisation ult rieure par un programme diff rent Ces fichiers pourront tre utilis s soit pour la lecture de donn es entr e soit pour le stockage de donn es sortie Lorsque les r sultats d un programme sont nombreux il est pratique de pouvoir les consulter dans un fichier l aide d un diteur de texte Le fichier dans ce cas l sera un fichier texte acc s s quentiel On utilise souvent un fichier r sultat pour passer des donn es un autre programme de post traitement Ce cas peut alors tre assimil une forme particuli re de passage d arguments Un fichier est un ensemble de donn es inscrites sur un support de masse Le fichier est d sign par un nom suivi d une extension facultative L extension donne en g n ral des informations sur la provenance ou la destination des donn es Un fichier contenant du texte JJH 05 2005 Le langage FORTRAN page 52 aura comme extension txt ce qui en permettra l ouverture l aide du bloc notes par un double clic sur le nom du fichier Si le fichier contient des donn es binaires on choisira une extension autre que txt par exempl
39. FORTRAN9O L affectation est une commande ex cutable On op re en g n ral une affectation par ligne PROGRAM exemplel REAL 4 A X Y INTEGER 2 I J K PRINT A X Y I J K END PROGRAM Avec l instruction DATA le compilateur initialise directement les variables la valeur indiqu e au moment de la compilation L criture est galement plus compacte L exemple ci dessus devient ROGRAM exemplelb EAL 4 A X Y TEGER 2 I J K TA A XV le Rk Y20 5 58 0 0 23 3 lt 4 T A X Y I J K PROGRAM he EH HA g Z Z NW O H Il est galement possible de grouper les variables de m me valeur et de condenser la valeur d initialisation comme il a t fait dans l exemple pour les variables I J K 3 3 4 Cas des variables indic es Une variable indic e est constitu e du nom suivi du ou des indices de 1 7 plac s entre parenth ses Ces indices sont des variables enti res ou des constantes enti res Les indices des tableaux commencent tous 1 et doivent tre positifs Attention Une erreur fr quente est l indi age involontaire par rapport 0 Le compilateur ne peut pas signaler cette erreur sauf si l indice est une constante Penser v rifier la valeur des indices JJH 05 2005 Le langage FORTRAN page 23 Ex ELEM LJ X D J Un tableau appara t toujours avec ses indices sauf Dans une liste d initialisation D
40. J 3 MAT I 2 I IMAT J 1 3 3 D claration des variables 3 3 1 Les types de variables FORTRAN est un langage permettant l utilisation de 5 types de variables intrins ques REAL reels INTEGER entiers LOGICAL logiques COMPLEX complexes CHARACTER chaines de caracteres et dans une certaine mesure EXTERNAL identificateurs de sous programmes 3 3 2 D claration implicite des variables Deux types de variables sont privil gi s en FORTRAN d claration implicite Les variables enti res Les variables r elles IMPORTANT Le compilateur d termine le type des variables non d clar es partir de leur lettre initiale Toute variable dont le nom commence par la lettre I J K L M N est consid r e comme enti re et les autres comme tant r elles Ceci reste galement valable pour les tableaux Il s agit l de la d claration implicite des types Exemple PROGRAM exemple2 IA 3 IB 2 IC IA IB WRITE Division de IA par 1B donne IC END PROGRAM exemple2 Aucune variable est d clar e Les noms des variables commencent par la lettre I le compilateur les consid re alors comme enti res IC sera une valeur enti re et le r sultat affich sera entier JJH 05 2005 Le langage FORTRAN page 18 Division de 3 par 2 donne 1 Press any key to continue On remarquera au passage que la mise en forme n est pas bonne L
41. N il s agit de END Attention dans un fichier comportant plusieurs modules il y aura autant d instructions FIN que de modules Pratiquement chaque module poss de ses variables Vous pouvez choisir leur nom sans tenir compte de ceux que vous avez d j utilis s dans d autres modules En effet la seule possibilit de communication de variables entre diff rents modules se fait par les arguments d appel et par les blocs COMMON 2 2 D marrage rapide Deux instructions utiles READ et WRITE Pour r aliser son premier programme il suffit de conna tre tr s peu d instructions Avec quatre instructions on peut s essayer aux joies de la compilation PROGRAM READ WRITE END 2 2 1 Utilisation de READ et WRITE Ce sont on l aura devinn des instructions le lecture et d criture Elles sont plus amplement d crites dans le 6 1 Dans un premier temps on se contentera des instructions de lecture criture sur la console cran clavier sans mise en forme format libre Si A et B sont des variables l entr e de leur valeur respective partir du clavier s crira READ A B JJH 05 2005 Le langage FORTRAN page 8 La liste est passe partout et sera employ e pour des saisies rapides et des affichages rapides pour v rification et mise au point Les valeurs de A et B seront entr es au clavier sur la m me ligne s par es par un espace une virgule ou une tabulation L appui sur la touche ENTER retou
42. NT r8 troncature r8 r8 DLOG r8 log naturel r8 r8 DLOG10 r8 log d cimal r8 r8 DMAXI r8A r8B 5 Maxi r8 r8 Mis en forme Fran ais DMIN1 r8A r8B Mini r8 r8 Canada DMOD r8A r8B reste r8 r8 DNINT r8 arrondi r8 T8 DPROD r4A r4B produit double pr cision r4 T8 DSIGN r8A r8B transfert de signe r8 r8 DSQRT r8 racine carr e r8 r8 EOF fin de fichier 1 1 EPSILON gen plus petit incr ment r r EXP gen exponentielle r ou cx identique HUGE gen plus grand nombre positif iou r identique IABS i valeur absolue i i IDIM iA iB diff rence positive i i IDNINT r8 arrondi r8 i IMAG cx partie imaginaire cx r ISIGN A iB transfert de signe i i LOG gen logarithme r identique LOG10 gen log d cimal r identique MAX genA genB maximum 1 ou r identique MAXO iA iB maximum i i MAXI r4A r4B maximum r4 i MIN genA genB minimum MAXEXPONENT r plus grand exposant pour type r r i ou r identique MINOGA iB minimum i i MINI r4A r4B minimum r4 i MINEXPONENT r plus petit exposant pour type r r MOD genA genB reste i ou r identique NEAREST r directeur NINT r arrondi r i NOT i compl ment logique i identique PRECISION gen nombre de chiffres significatifs r i SIGN genA genB transfert de signe 1 r identique SQRT gen racine carr e r ou cx identique TINY r plus petite valeur positive r r JJH 05 2005 Le langage FORTRAN Annexe C
43. TRAN d autres cr s partir du PASCAL et du C L diteur de liens travaille ind pendamment du langage utilis puisque toute notion de langage part le langage machine videmment dispara t apr s l op ration de compilation L diteur de liens charge partir d un fichier appel librairie ces modules n cessaires met bout bout tous ces modules y compris les modules objet produits par le programmeur calcule les adresses relatives et met jour toutes les instructions provoquant un branchement une autre adresse Le fortran Microsoft Version 5 1 qui impl mente d j certaines sp cificit s du FORTRAN 90 est livr avec un environnement de d veloppement incorpor Les op rations d dition de compilation et d dition des liens sont lanc es depuis l environnement de d veloppement que l on lance au d but d une session de travail En 2004 L ensemble de d veloppement Fortran est distribu par COMPAQ sous l appellation COMPAQ Visual Fortran 6 On trouve actuellement gratuit mais d usage moins convivial le Fortran 77 GNU appel g77 Il fonctionne sous Windows en mode console Pour l obtenir faire une recherche sur internet avec les mots cl FORTRAN et GNU La version g95 est en cours de mise au point Les principales avanc es du FORTRAN 90 concernent les manipulations de tableaux une augmentation substantielle des proc dures intrins ques la possibilit de d finition de nouveaux types de v
44. TRAN page 54 SCRATCH Le fichier est d truit la fin du programme APPEND Le fichier existe d j et on se place la fin pour rajouter des donn es UNKNOWN NEW ou OLD si le fichier existe ou non Exemples C Ouverture d un fichier existant deja OPEN 11 FILE DONNEES DAT T c Ouverture d un nouveau fichier pour y placer des c resultats OPEN 12 FILE RESULT DAT ACCESS SEQUENTIAL STATUS NEW 6 3 2 Fermeture d un fichier La fermeture d un fichier se fait automatiquement lorsque le programme se termine normalement Ne pas utiliser le signe dans l instruction de fermeture de fichier Syntaxe CLOSE UNIT unite ERR etiquette IOSTAT erreur STATUS status Si l on omet de mentionner UNIT le num ro de unit doit figurer en premier L ordre des arguments n a pas d importance Description de chaque param tre unit Nombre entier sp cifiant l unit externe Aucune erreur ne sera signal e si cette unit n a pas t ouverte etiquette tiquette d une instruction ex cutable dans le m me programme Cette instruction sera ex cut e si une erreur d acc s au fichier se produit erreur Variable enti re ou l ment de tableau qui se verra affecter le num ro d erreur si celle ci se produit status Peut tre KEEP conserver ou DELETE effacer Les fichiers ouverts sans nom auront un status par d
45. acc s direct non format OPEN 33 FILE DIRNF RECL 10 FORM UNFORMATTED JJH 05 2005 Le langage FORTRAN page 61 ACCESS DIRECT WRITE 33 REC 3 TRUE abcdef WRITE 33 REC 1 2049 CLOSE 33 END L allure du fichier sera la suivante 01 08 00 00 2 01 00 00 00 abcdef 6 5 3 Les enregistrements binaires Cette forme est la plus recommand e car elle n est pas propre au FORTRAN On peut donc relire et cr er des fichiers en provenance ou destination d autres langages Les fichiers binaires n ont pas de structure interne particuli re Le programmeur doit donc tre parfaitement au courant de la disposition des donn es dans le fichier Aucun s parateur ne permet de d limiter un quelconque bloc ou groupe de variables sauf si le programmeur d cide d en placer de son propre gr Les donn es tant enregistr es sous forme binaire sans s parateur le gain de place est encore l g rement plus important On pr f rera ce type de fichiers pour le stockage d un nombre important de donn es Attention un change de donn es avec d autres logiciels est plus probl matique mais gr ce aux normes d encodage des valeurs r elles par exemple ces fichiers sont souvent lisibles par d autres langages Cependant pour un transfert de donn es vers un tableur par exemple il est pr f rable de passer par un fichier s quentiel format Pour travailler en mode binaire il suffit de pr ciser au mom
46. act re non pr sence d une cha ne Types Argument fonction cr int cr i cr 1 cr 1 cr 1 cr 1 cr i cr i Op rations binaires D finition test sur bit produit logique change valeur bit R Z bit R l bit ou exclusif ou d calage arithm tique rotation d calage logique d calage logique Types Argument fonction i 1 i identique i identique i identique i identique i identique i identique i identique i identique i identique i identique Fonctions trigonom triques D finition Arc cosinus arc sinus arc tangente arc tangente A B cosinus cosinus sinus cosinus cotangente sinus arc cos arc sin arc tangente Types Argument fonction r identique r identique r identique r r identique Cx8 cx8 cx16 cx16 cx16 cx16 r ou cx identique r identique cx8 cx8 r8 r8 r8 r8 r8 r8 JJH 05 2005 Le langage FORTRAN Annexe C page 82 DATAN2 r8A r8B DCOS r8 DCOTAN r8 DSIN r8 DTAN r8 SIN gen TAN r Fonction COSH r DCOSH r8 DSINH r8 DTANH r8 SINH r TANH r Fonction ALLOCATED tableau status d allocation dynamique LOC gen LOCFAR gen LOCNEAR gen Fonction ABS gen AIMAG cx8 AINT r ALOG r4 ALOG10 r4 AMAXUO i i AMAXI r4 r4 AMINO AMINI AMOD r4 r4 ANINT r CABS cx CDABS cx16 CDEXP cx16 CDLOG cx16 CDSQRT cx16 CEXP cx8 CLOG cx8 JJH 05 2005 arc tan A B cos cotang
47. age FORTRAN page 50 F8 4 XXXXXXXX erreur F13 6 bb 123 456700 F6 0 b 123 Dans le morceau de programme pr c dent F12 4 s applique la variable A nEl d Lorsque l on ne conna t pas l ordre de grandeur de la valeur il est pr f rable de demander en impression la notation scientifique A l affichage appara t un E suivi de l exposant de la puissance de Dix Il faut que 1 soit gt d 7 Exemple pour obtenir un affichage du type 0 xxxx on utilise le format passe partout E15 8 nDl d Est l quivalent du pr c dent mais pour des quantit s donn es en double pr cision La formule passe partout serait D23 16 nGl d Recouvre I F E ou D la sortie se fait dans le format convenant le mieux la valeur Pour les nombres complexes on emploie deux sp cifications de type F E ou G nAl Permet la manipulation de cha nes de caract res 1 repr sente le nombre de caract res afficher nX Ins re n blancs ou permet de sauter n caract res la lecture nH lt Caract res gt n d signe le nombre de caract res et Caract res est une cha ne de n caract res directement accol e H Ex Supposons que les variables A et B valent respectivement 3 14159 et 9 81 Les lignes de programme suivantes WRITE IMP 100 A B 100 FORMAT 8H A F5 2 3X 3HB F5 2 donneraient comme r sultat l imprimante xxx A 3 14 B 9 81 On veillera ce que n repr sente la longueur exacte de la cha ne de caract res s
48. ais des fonctions 4 3 2 Structure d un sous programme du type FUNCTION type FUNCTION nom liste d arguments D clarations Instructions nom Instruction Retourner en algo JJH 05 2005 Le langage FORTRAN page 36 RETURN Facultatif END Remarquer 2 choses L ent te avec sa d claration de type car une fonction retourne une valeur dont il faut d clarer le type e L instruction de mise en place de la valeur retourn e nom Elle correspond l instruction retourner resultat de l algorithmique L instruction END d limite les blocs et l instruction RETURN n est plus obligatoire pour les versions actuelles du FORTRAN 4 4 Variables et arguments Un sous programme ou une fonction peut reprendre des tiquettes et des noms d j utilis s par ailleurs sans pour autant affecter le comportement du programme En quelques mots un sous programme peut tre gliss apr s n importe quel autre programme sans pr caution particuli re comme par exemple une modification des tiquettes La communication entre le programme appelant et le sous programme est assur e au moyen des arguments d appel et de l instruction COMMON Le passage des arguments dans la liste se fait par r f rence Le sous programme peut donc travailler directement dans la m moire du programme appelant Deux variables de m me nom situ es dans deux proc dures diff rentes seront ind pendantes sauf si elles sont li es
49. ammes devant ac der un fichier d j ouvert par ailleurs 6 3 6 1 Description des arguments acces Variable alphanum rique qui contiendra au retour une des chaines de caract res suivantes SEQUENTIAL JJH 05 2005 Le langage FORTRAN page 57 DIRECT blanks Variable alphanum rique qui se verra affecter au retour soit NULL soit ZERO direct Variable alphanum rique qui contiendra selon le type d acc s YES pour direct ou NO ou UNKNOWN exist Variable logique qui contiendra TRUE si le fichier existe sinon FALSE forme Variable alpha Si l unit ou le fichier est connect une entr e sortie format e forme contiendra FORMATTED sinon UNFORMATTED formatte Variable alpha r ponse la question FORMATTED Contiendra YES NO UNKNOWN nom Variable alphanum rique qui contiendra le nom du fichier connect unit nomme Variable logique FALSE si le fichier est un fichier temporaire sans nom ou scratch nextr variable enti re num ro du prochain enregistrement pour un fichier acc s direct numero Variable enti re qui contiendra le num ro de l unit connect au fichier dont le nom devra tre sp cifi ouvert Variable logique qui sera TRUE si un fichier est effectivement connect l unit pr cis e lg Variable enti re qui contiendra le nombre d octets d un enregistrement pour un fichier acc s direct seq Variable alphanum
50. antes apparaissent dans un programme sous la forme d une valeur num rique ou alphanum rique On ne peut pas leur attribuer un nom Elles sont utilis es dans les intructions DATA et dans les initialisations 3 1 2 Constantes enti res D finition C est une suite de chiffres pr c d e ou non d un signe ne pouvant comporter aucun autre caract re Exemples 123 18 4 Contre exemples 3 14 Pr sence d un espace s parateur 3 14 Pr sence d un point d cimal 2 71828 Pr sence d une virgule s parateur 3 13 Constantes r elles On peut les trouver sous la forme simple pr cision ou double pr cision On peut les pr senter de deux mani res constante r elle de base mantisse C est une cha ne de chiffres comportant obligatoirement un seul point d cimal pouvant tre pr c d e d un signe Exemples 3 1 4 6 28 7 0 e Constante r elle de base suivie d un exposant JJH 05 2005 Le langage FORTRAN page 15 La pr sentation reste identique la pr c dente mais on rajoute en fin de cha ne un exposant comportant pour la simple pr cision la lettre E suivie d une constante enti re sign e de deux chiffres La mantisse peut comporter 7 chiffres significatifs En ce qui concerne la double pr cision la mantisse comportera 15 16 chiffres significatifs l exposant commencera par la lettre D et pourra comporter 3 chiffres Les limites sont indiqu es dans le chapitre de pr sentati
51. aration d un tel tableau peut se faire comme suit DIMENSION Al Le compilateur ne se pr occupe pas de la dimension r elle dans ce cas Tout l ment A T pourra tre retrouv de mani re simple tant donn la disposition lin aire en m moire des l ments On peut donc d clarer un tableau simple en indiquant qu il ne contient qu un seul l ment Le probl me est tout autre pour un tableau deux dimensions ou plus L acc s un l ment a i j d pend du nombre de lignes et de colonnes La d claration peut alors tre faite en utilisant des variables en indice mais uniquement dans les sous programmes Attention ces variables doivent galement figurer dans la liste des arguments Exemple pour le cas d une matrice carr e pass e en param tre C Programme principal PROGRAM TOTO SES DIMENSION A 50 50 N 50 EPS CALL SPROG A N See END C Sous programme SUBROUTINE SPROG B M DIMENSION B M M URN EH w ET ND Attention M devra tre rigoureusement identique la valeur de la dimension d clar e dans le programme principal Dans la liste des arguments les bornes des tableaux doivent pr c der les tableaux auxquels elles sont associ es Ex Calcul d une int grale par la m thode des trap zes L int grale s exprime sous la forme Axi a f a iax JJH 05 2005 Le langage FORTRAN page 38 Le calcul de l int grale est effectu par une fonction que
52. ariables STRUCTURES les boucles DO WHILE les constructions Cas o CASE L instruction GOTO toujours disponible est proscrire Un programme est souvent compos de plusieurs modules sous programmes chacun pouvant se trouver dans des fichiers s par s L application compl te comportera tous les modules li s Tout d abord il conviendra de compiler s par ment sans dition des liens chaque module A l issue de cette op ration on obtiendra des modules objets c est dire en langage machine mais sans adresse d implantation en m moire On les reliera tout en fixant les adresses l aide de l diteur de liens LINK EXE Le fichier obtenu sera le programme ex cutable Ces op rations mettant en jeu de multiples fichiers sont grandement facilit es par l emploi de fichier projet Les environnements de d veloppement permettent la gestion de projets Un fichier projet est un fichier comportant toutes les informations n cessaires pour reconstituer un programme ex cutable ou une librairie La constitution d un fichier projet est 3Une librairie est un assemblage de modules objet ind pendants ce qui vite l obligation de manipuler une quantit impressionnante de fichiers 4Fonctions math ou autres disponibles avec la librairie standard du FORTRAN JJH 05 2005 Le langage FORTRAN page 6 extr mement simple Cette action est d crite dans le manuel d utilisation de l environnement de d veloppement Fichiers _
53. ateurs Addition Soustraction Multiplication Division Exponentiation Ces op rateurs sont pr sent s par ordre de priorit croissante Exemple TOTAL TOTHT TVA Les op rations arithm tiques simples sont valu es de la gauche vers la droite Par contre deux exponentiations successives sont valu es de la droite vers la gauche 7 1 3 Type des r sultats obtenus par Les types sont class s par ordre croissant du rang INTEGER rang le plus faible INTEGER 4 REAL 4 REAL REAL 8 DOUBLE PRECISION COMPLEX 8 COMPLEX COMPLEX 16 rang le plus lev OS A D C est l op rande de rang le plus lev qui fixe le type du r sultat Une petite exception Une op ration entre un COMPLEX 8 et un REAL 8 g n re un COMPLEX 16 Il s agit de la double pr cision Rappelons qu un complexe est compos d une partie r elle et d une partie imaginaire et que ces deux parties sont toujours du m me type JJH 05 2005 Le langage FORTRAN page 64 7 1 4 Type des r sultats obtenus par l op rateur puissance On peut r sumer sous la forme d un tableau le type du r sultat de l l vation de X la puissance Y Premier Op rande X Entier R el Double Complexe Entier Entier R el Double Exposant Y R el R el R el Double Double Double Double Double Complexe Complexe 7 1 5 R gle d homog n it Au cours d un calcul si les op randes
54. ble Le fichier objet poss de la particularit de pouvoir tre reli d autres fichiers du m me genre si l utilisateur le d sire Ainsi comme nous le verrons les sous programmes utiles et universels comme par exemple un sous programme de r solution de z ro de fonction pourra tre appel partir d un programme principal sans pour autant figurer dans le m me fichier que ce dernier L diteur de liens LINK ou Id comme loader se chargeant de les lier et de les rendre ex cutables 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 Attention tout fichier ex cutable comportant le module objet modifi n est plus jour Il faut dans ce cas proc der une nouvelle dition des liens 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 Attention de ne pas prendre un traitement de texte On sauvegarde le fichier source sur le disque dur en lui donnant un nom respectant les conditions du syst me d exploitation utilis DOS UNIX en g n ral L extension utilis e est g n ralement FOR sous MS DOS et f sous UNIX Actuellement sur des ordinateurs fonctionnant sous WINDOWS l extension f90 est actuellement utilis e avec le compilateur Fortran fourni par COMPAQ qui n est autre que l
55. dans un fichier d pend de la forme de stockage et du mode d acc s On acc de des donn es d un fichier par groupe de donn es Ce groupe est appel enregistrement Les m thodes de stockage des donn es dans le fichier peuvent tre e Format es e Non format es e Binaires On peut acc der un enregistrement selon deux modes e S quentiel e Direct L acc s s quentiel un enregistrement N implique la lecture des N 1 enregistrements pr c dents alors que l acc s direct permet d acc der en lecture comme en criture n importe quel enregistrement Attention dans ce cas la longueur d un enregistrement doit tre connue et constante On peut combiner les m thodes de stockage et les modes d acc s ce qui donne 6 fa ons de proc der JJH 05 2005 Le langage FORTRAN page 59 6 5 1 Les enregistrements format s On cr e des fichier format s en sp cifiant l ouverture FORM FORMATTED Les enregistrements sont alors stock s sous forme ASCII c est dire directement affichables Les nombres utilis s en m moire sous forme binaire sont convertis en forme ASCII Chaque enregistrement se termine par les caract res ASCII Retour chariot et Saut de ligne CR et LF 6 5 1 1 Les fichiers s quentiels format s Les fichiers s quentiels format s comportent des enregistrements qui doivent tre lus de fa on s quentielle chaque enregistrement est de longueur quelconque Attention il faut s assurer lors de la
56. de d but de module et pr c dent toute instruction ex cutable Attention Une erreur fr quente signal e par le compilateur est l apparition d une d claration apr s une instruction ex cutable 5 2 D clarations 5 2 1 Les d clarations de modules Elles sont d j connues PROGRAM FUNCTION SUBROUTINE BLOCK DATA 5 2 2 Les d clarations de type Elles sont utilis es aussi bien pour les variables locales que pour les arguments Citons pour m moire les plus fr quentes LOGICAL CHARACTER INTEGER REAL COMPLEX RECORD 5 2 3 les d clarations d agencement m moire Ce sont les d clarations EQUIVALENCE COMMON DIMENSION STRUCTURI ALLOCATABLE Elles influent l organisation en m moire des variables cI 5 3 Constructions 5 3 1 Constructions s quentielles 5 3 2 Constructions alternatives 5 3 2 1 Si Alors Sinon Fin Si L action conditionnelle simple l instruction IF Le r sultat d un test IF est logique Sa valeur peut tre TRUE ou FALSE L action suivant le test est donc soit ignor e soit ex cut e Le test simple se pr sente sous la forme suivante IF expression r sultat logique instruction Si l expression r sultat logique donne un r sultat vrai alors l instruction qui la suit est ex cut e sinon elle est ignor e L instruction ex cuter doit tre plac e sur la m me ligne Il ne faut pas mettre d
57. e bin ou dat 6 2 2 Contenu d un fichier Le contenu d un fichier est d cid par le concepteur du programme On distingue deux genres de fichiers 1 Les fichiers Format s Ce sont des fichiers texte qui peuvent tre ouverts par un diteur de texte et qui peuvent tre affich s sans d codage particulier Le FORTRAN consid re par d faut un fichier comme Format c est dire comme fichier texte Les fichiers Non Format s Ce sont en g n ral des fichiers binaires Seul un programme sp cialement d velopp en permettra la lecture L int r t de ce genre de fichier est la compacit Les donn es y sont inscrites exactement comme elles figurent en m moire sous la forme binaire 6 2 3 Modes d acc s un fichier Il existe deux modes d acc s E Le mode S quentiel C est le mode d acc s le plus courant Dans ce mode les donn es sont plac es dans le fichier dans l ordre d apparition des instructions d criture Le fichier ne peut tre modifi que par l ajout de donn es en fin de fichier Si l on veut ins rer des donn es un endroit quelconque du fichier sans modifier les donn es existantes il faut passer par un fichier interm diaire L criture dans un fichier s quentiel efface toutes les donn es qui sont situ es apr s les donn es que l on vient d crire Le mode Direct Ce mode permet l acc s direct n importe quel enregistrement du fichier que ce s
58. e END IF JJH 05 2005 Le langage FORTRAN page 41 Exemple IF I GE N STOP 1 Cependant il arrive qu une instruction soit insuffisante Pour viter des blocs d instructions d limit s par des GOTO comme c tait souvent le cas dans les anciennes versions de FORTRAN on dispose de la s quence IF THEN ENDIF THEN marque le d but d une s quence d instructions d limit e par l instruction ENDIF Exemple IF I LE N THEN I I 1 MOT ENDIF On l utilise donc sous la forme IF Expression r sultat logique THEN S quence d instructions ENDIF Le THEN est plac sur la m me ligne que le IF Sur les lignes suivantes est dispos e la s quence d instructions ex cuter si la condition du IF est vraie Cette s quence se termine imp rativement par un END IF Un enrichissement compl mentaire ELSE sinon L algorithme d utilisation est Si expression vraie alors faire Sequence 1 Sinon faire Sequence 2 Fin de la boucle conditionnelle Il s agit l d une s quence alternative On peut donner comme exemple EAD N1 N2 IF N2 EQ 0 THEN WRITE ATTENTION LE DIVISEUR EST NUL ELSE WRITE LE QUOTIENT DE 1 N1 PAR N2 VAUT N1 N2 ENDIF JJH 05 2005 Le langage FORTRAN page 42 On peut galement imbriquer les constructions alternatives 5 3 2 2 S quence Cas
59. e courant n est pas termin Structure d un enregistrement logique de plus de 128 octets 129 128 octets de donn es 129 12 12 octets de donn es 12 Cette op ration de partitionnement en blocs de 128 octets est transparente pour le programmeur En effet il peut cr er des enregistrements de longueur quelconque Les fichiers s quentiels non format s commencent par un octet dont la valeur est 75 et se terminent par un octet dont la valeur est 130 Exemple d utilisation de fichier s quentiel non format CHARACTER XYZ 3 INTEGER 4 IDATA 35 DATA IDATA 35 1 XYZ x vy 2z c 1 est encode par FFFFFFFF en hexadecimal OPEN 33 FILE SEQONF FORM UNFORMATTED Le mode sequentiel est obtenu par defaut On ecrit un enregistrement de 140 octets suivi par un nregistrement de 3 octets WRITE 33 IDATA WRITE 33 XYZ CLOSE 33 END Le fichier aura alors l allure suivante 75 129 FF 128 octets FF 129 12 FF 12 octets FF 12 3 xyz 3 130 6 5 2 2 Les fichiers acc s direct et enregistrements non formatt s Comme tous les fichiers acc s direct l utilisateur peut acc der en lecture ou en criture chaque enregistrement dans n importe quel ordre Ceci impose que la longueur d un enregistrement est connue et constante c est vident La longueur d un enregistrement est sp cifi e dans l instruction OPEN par RECL valeur Exemple de cr ation de fichier
60. econnu par le compilateur Toute autre cha ne de caract res est consid r e comme nom de proc dure de constante de variable ou bien comme commentaire L annexe A comporte la liste alphab tique des mots cl ainsi qu une description succincte Exemple de mots cl DATA READ PRINT CONTINUE COMMON Instructions d interface Elles sont essentielles car elles permettent de communiquer avec l utilisateur Pour l instant le seul moyen pratique et simple de communication se passe au travers de la console cran clavier 2 5 Les s parateurs e Les parenth ses JJH 05 2005 Le langage FORTRAN page 10 Elles encadrent une liste ou un indice associ un mot cl ou un nom de variable dans le cas de tableaux e Le signe 1 Il constitue le symbole d affectation Il pr c de la valeur dans la d claration d une constante 3 Il introduit les param tres dans une boucle DO Les barres de fraction Elles encadrent une liste associ e certains mots cl comme par exemple DATA COMMON e L ast risque Elle d signe la transmission hors format de donn es ou l utilisation d un p riph rique standard d entr e sortie cran clavier Elle d signe aussi l op rateur arithm tique de multiplication et d l vation une puissance e Les apostrophes Elles encadrent les constantes de type alphanum rique Le point virgule Le point virgule s pare plusieurs instructions situ
61. ent de l ouverture FORM BINARY 6 5 3 1 Les fichiers s quentiels binaires L criture et la lecture de fichiers binaires sont r gent s par le type des variables Inutile de pr ciser une longueur d enregistrement Pour acc der des donn es enregistr es on relit simplement celles qui ont t plac es avant en respectant leur type Exemple de cr ation de fichier binaire acc s s quentiel STORAGE 4 INTEGER 1 BELLS 4 INTEGER IWYS 3 CHARACTER 4 CVAR DATA BELLS 4 7 DATA CVAR is IWYS What you see c On va ecrire What you see is what you get suivi de 3 beeps OPEN 33 FILE SEQBIN FORM BINARY WRITE 33 IWYS CVAR WRITE 33 what you get WRITE 33 BELLS CLOSE 33 END 6 5 3 2 Les fichiers binaires acc s direct Il faut sp cifier au moment de l ouverture le type d acc s ainsi que la longueur d un enregistrement Le nombre d octets lus ou crits d pendent toujours du type de la variable JJH 05 2005 Le langage FORTRAN page 62 Contrairement au cas des fichiers non format s la tentative d criture d un enregistrement de longueur sup rieure celle d clar e par RECL longueur ne provoque pas d erreur mais d borde sur l enregistrement suivant Si l on ne mentionne pas de num ro d enregistrement REC n dans l instruction d criture ou de lecture les acc s se font alors de mani re s quentielle partir de l enregistrement courant Exemple de c
62. ente sinus tangente sinus tangente r8 18 r8 18 r8 18 r8 r8 Mis en forme Fran ais r8 r8 France r cx identique r identique Trigonom trie hyperbolique D finition cos hyperbolique cos hyperbolique sinus hyperbolique tangente hyperbolique sinus hyperbolique tangente hyperbolique Types Argument fonction r identique r8 r8 r8 r8 r8 r8 r r r identique Gestion m moire D finition Adresse Adresse segment e Adresse non segment e Types Argument fonction gen I tout 12 ou i4 tout i4 tout 12 Num riques D finition Valeur Absolue partie imaginaire de cx8 Valeur tronqu e Log naturel Log d cimal Maxi Maxi cf AMAX reste de division arrondi valeur absolue valeur absolue exponentielle logarithme naturel racine carr e exponentielle log naturel Types Argument fonction i r cX identique cx8 r4 r identique r4 r4 r4 r4 i r4 r4 r4 r4 r4 r identique cx r cx16 r8 cx16 cx16 cx16 cx16 cx16 cx16 Cx8 cx8 Cx8 cx8 Le langage FORTRAN Annexa C page 83 CONJG cx8 complexe conjugu Cx8 cx8 CSQRT cx8 racine carr e Cx8 Cx8 DABS r8 valeur absolue r8 T8 DCONJG cx16 complexe conjugu cx16 cx16 DDIM r8A r8B diff rence positive r8 r8 DEXP r8 exponentielle r8 r8 DIM genA genB diff rence positive i ou r identique DIMAG cx16 partie imaginaire complexe cx16 r8 DI
63. ents En ajoutant un bloc INTERFACE le compilateur d tecte une incoh rence PROGRAM exemple9 INTERFACE SUBROUTINE TABLESIN A V N INTEGER 2 REAL 4 A N END SUBROUTINE N 4 Z TERFACE ALLOCATABLE TABLE ANGLES R 2 Nb I Nb 5 ALLOCATE TABLE Nb ANGLES Nb CALL TABLESIN ANGLES TABLE 5 DO I 1 Nb WRITE i ANG END DO DEALLOCATE TAB END PROGRAM EH zZ H Z H D gt O m I G z tn H D w Da a 5 E ANGLES exemple9 f90 12 Error The type of the actual argument differs from the type of the dummy argument CS CALL TABLESIN ANGLES TABLE 5 Mais l interet n est pas evident Ecrire 6 lignes de programme suppl mentaires pour viter une erreur dans une ligne En fait on place les blocs INTERFACE dans un module que l on appelle par l instruction USE 3 9 Les Modules Les modules sont des unit s de programme comme les programmes les sous programmes et les fonctions Ils sont destin s remplacer les blocs COMMON Permettent ainsi de partager des variables entre diff rents modules x cutables programme sous programmes et JJH 05 2005 Le langage FORTRAN page 31 fonctions On y retrouve les interfaces des diff rents sous programmes et fonctions utilis s dans le projet Une simple li
64. er des boucles implicites dans une ligne d instruction DATA 6 1 5 Formats de lecture criture Les entr es sorties peuvent se faire en format libre ou r f renc es des lignes FORMAT Ces lignes indiquent en fait un canevas suivre pour la pr sentation des r sultats Les lignes FORMAT contiennent les sp cifications de conversion des messages des commandes d imprimante ou de gestion simple du curseur Elles peuvent se placer n importe o dans le programme mais on les placera de pr f rence la fin du module juste avant l ordre END Les sp cifications de conversion sont de la forme nlm Cette sp cification s applique aux variables enti res m indique le nombre de caract res imprimer ou le nombre de caract res lire sur le fichier n repr sente le nombre de r p titions de cette sp cification Dans l exemple pr c dent 214 s applique aux variables I et J ces quantit s tant imprim es avec un maximum de quatre chiffres On aurait pu crire la ligne FORMAT de la mani re suivante 100 FORMAT I4 14 F12 4 3X E15 8 nFld Cette sp cification s applique aux donn es r elles n garde le m me r le que pr c demment repr sente le nombre de caract res maximal y compris le signe et le point d repr sente le nombre de chiffres imprimer apr s la virgule Exemple Soit le caract re 123 4567 imprimer Nous obtiendrons F9 4 123 4567 F11 4 bb 123 4567 JJH 05 2005 Le lang
65. ge location m moire identique pour plusieurs variables de nom et de type diff rents Sortie pr matur e d une boucle DO JJH 05 2005 Supprim Supprim Supprim Supprim a a a Supprim Supprim Supprim Supprim Supprim Supprim Supprim Supprim Supprim Supprim Supprim Supprim Supprim Supprim Supprim Supprim a a a a e a a a e a a a a a a a Le langage FORTRAN Annexe B page 78 EXTERNAL FORMAT FUNCTION GOTO IF IMPLICIT INCLUDE INQUIRE NTEGER INTERFACE TO p INTRINSIC LOCKING LOGICAL MAP NAMELIST OPEN PARAMETER PAUSE PRINT PROGRAM READ REAL RECORD RETURN REWIND SAVE SELECT CASE STOP STRUCTURE SUBROUTINE UNION WRITE JJH 05 2005 Identifie un nom comme tant un sous programme ou une fonction Format de lecture ou criture Sous programme de type fonction Saut Structure alternative SI Attribue un type implicite certaines variables Lecture et insertion de fichiers dans le programme au moment de la compilation F90 Examen propri t s de fichiers D claration pour variables enti res D claration permettant au compilateur de v rifier les instructions d appel des s
66. gne d instruction USE suffit pour les utiliser La forme g n rale d un module est MODULE nom module D clarations de variables globales D clarations d interfaces END MODULE nom module JJH 05 2005 Le langage FORTRAN page 32 4 Programmes et sous programmes 4 1 Principe g n ral Le programme principal et chaque sous programme sont analys s s par ment par le compilateur Ils peuvent donc figurer soit dans un m me fichier soit dans des fichiers s par s Il est pr f rable 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 s parer lorsque la compilation et les essais d ex cution ont r ussi L diteur de liens r alise la construction globale du programme et des sous programmes Il fait galement des tests de compatibilit au niveau des passages des arguments Dans le cas o l on fait figurer dans un m me fichier programme et sous programmes le programme principal doit figurer en t te suivi des sous programmes chacun se terminant par END pour bien d limiter les blocs Attention Prendre l habitude de faire suivre l instruction PROGRAM SUBROUTINE ou FUNCTION par l instruction IMPLICIT NONE Elle rend obligatoire la d claration de toute variable utilis e dans le module Cette pr caution vite souvent des erreurs difficiles d tecter On disting
67. itu de deux barres de fraction successives 7 3 Fonctions num riques standard On peut citer les plus usuelles SIN sinus COS cosinus ALOG logarithme n p rien EXP exponentielle SQRT racine carr e ATAN arc tangente TANH tangente hyperbolique ABS valeur absolue d un r el IABS valeur absolue d un entier FLOAT convertit d entier r el IFIX convertit de r el entier SIGN transfert de signe CHAR conversion du code ASCII en caract re ICHAR conversion inverse de la pr c dente NINT fonction arrondi MOD fonction modulo Les fonctions incorpor es au langage font appel des mots cl Exemples Racine carr e JJH 05 2005 Le langage FORTRAN page 66 Mot cl SORT X1 B SORT B 2 4X AXxC Code ASCII d un caract re ICHAR 0 donne 48 R ciproquement CHAR I I tant un entier renvoie le caract re dont le code ASCII est I CHAR 48 donnera le caract re 0 Exemple d utilisation de la fonction CHAR Emission d un Bip sonore On d clare IBELL comme param tre et plus loin dans le programme on l envoie la console PARAME H ER IBELL 7 WRITE CHAR IBELL 7 4 Expressions logiques 74 1 Op rateurs de relation arithm tique Une op ration de comparaison port sur deux op randes et donne un r sultat logique Naturellement les deux op randes doivent tre du m me type On ne peut comparer une variable alphanum rique une
68. mentionnant en d but de programme la d claration IMPLICIT NONE Toute variable non d clar e donc par exemple susceptible d tre une variable d clar e mais comportant une faute de frappe sera signal e lors de la compilation Cette pr caution vous vitera quelques heures de t tonnements pour retrouver des erreurs 3 3 3 D claration explicite des variables simples Les d clarations des variables se placent toujours au d but du module avant toute instruction ex cutable 3 3 3 1 Variables enti res INTEGER INTEGER 1 INTEGER 2 et INTEGER 4 Leur domaine d utilisation est e 128 127 1 octet pour INTEGER 1 JJH 05 2005 Le langage FORTRAN page 20 e 32 768 32 767 2 octets pour INTEGER 2 e 2 147 483 648 2 147 483 647 4 octets pour INTEGER 4 Au niveau des entr es ces constantes seront interpr t es en base 10 Si l on veut pr ciser la base on peut les crire sous la forme signe base valeur 3 3 3 2 Variables r elles REAL ou REAL 4 DOUBLE PRECISION ou REAL 8 Domaine d utilisation 3 4028235E 38 1 1754944E 38 0 1 1754944E 38 3 4028235E 38 pour un r el simple pr cision 1 797693134862316D 308 2 225073858507201D 308 0 2 225073858507201D 308 1 7976931348623 16D 308 pour un r el double pr cision La forme d une valeur r elle est signe entier fraction Eexposant pour le type REAL 4 signe entier fraction Dexposant p
69. n DREAL cx16 FLOAT i HFIX gen ICHAR cr IDINT r8 IFIX r4 INT gen INT1 gen INT2 gen INT4 gen JFIX gen REAL gen SNGL r8 JJH 05 2005 Conversion de type D finition conversion de type conversion en complexe conversion de type conversion de type conversion de type conversion de type conversion de type conversion de type conversion de type conversion de type conversion de type conversion de type conversion de type conversion de type conversion de type conversion de type Types Argument fonction i cr i T CX CX i T CX r8 i r cx cx16 i T CX r8 cx16 r8 i r4 i r ou cx i2 cr i r8 i r4 i i roucx i i roucx il i r ou cx i2 i r ou cx i4 i r Ou CX i4 conversion de type i r CX r4 r8 r4 Fonction INDEX crA crB 1 LEN cr LGE crA crB LGT crA crB LLE crA crB LLT crA crB SCAN crA crB 1 VERIFY crA crB 1 Fonction BTEST i i IAND iA iB IBCHNG iA iB IBCLR iA iB IBSET iA iB IEOR iA iB IOR iA iB ISHA iA iB ISHC A iB ISHFT iA iB ISHL iA iB Fonction ACOS r ASIN r ATAN r ATAN 2 rA rB CCOS cx8 CDCOS cex16 CDSIN cx16 COS gen COTAN r CSIN cx8 DACOS r8 DASIN r8 DATAN r8 Le langage FORTRAN Annexa C page 81 Cha nes de caract res D finition recherche cha ne B dans A longueur d une cha ne comparaison chaine A gt B A gt B A lt B A lt B recherche car
70. n cessaire au moment de l entr e dans un sous programme ou dans une fonction et lib rer cet espace au moment de la sortie du module Il faut dans ce cas d clarer les tableaux en utilisant les arguments d appel Exemple SUBROUTINE TRAITEMENT I J REAL 4 DIMENSION I 2 J B L espace occup par le tableau B est automatiquement lib r la sortie du module L allocation dynamique de la m moire est une m thode pr f rable Elle s utilise compte tenu des nouvelles notations comme suit w REAL 4 i DIMENSION ALLOCATABLE ALLOCATI B I 2 J Tj DEALLOCATE B JJH 05 2005 Le langage FORTRAN page 28 ALLOCATE B 10 30 DEALLOCATE B La premi re d claration peut tre crite plus simplement REAL 4 ALLOCATABLE B 3 6 Les pointeurs Les pointeurs sont des variables contenant l adresse d une autre variable souvent d un tableau Ils ont en outre la particularit de pouvoir soit prendre l adresse d un tableau classique d j existant ou se comporter comme une variable dynamique allocation dynamique de m moire Exemple REAL 4 DIMENSION POINTER PNTR TAB REAL 4 DIMENSION 50 TARGET TABLE PNTR TAB gt TABLE NU IFY PNTR TAB CT ALLOCATI PNTR TAB 100 DEALLOCATE PNTR TAB On attribue l ad
71. nc pas Cependant il peut tre utile de nommer des constantes ce qui permet de les d crire en d but de programme et de les localiser tout de suite pour une modification On utilise pour cel la d claration PARAMETER Exemple PARAMETER P1 3 14159 FLAG TRUE NOMFICHIER resultats txt Une constante r elle se distingue d une constante enti re par le point d cimal Remarque 4 sera interpr t comme une constante r elle alors que 4 sera consid r comme constante enti re Cette particularit peut conduire des erreurs voir 3 3 2 3 2 Les variables 3 2 1 Variables simples On repr sente les variables simples l aide de leur identificateur Le compilateur fait correspondre chaque identificateur une zone m moire d pendant du type de la variable qu il repr sente 3 2 2 Les tableaux Variables indic es On repr sente une variable indic e ou un tableau par un identificateur suivi d indices plac s entre parenth ses et s par s par des virgules Identificateur I1 I2 Exemples JJH 05 2005 Le langage FORTRAN page 17 L indice peut tre une variable ou une expression math matique de type r el ou entier S il est de type r el il sera converti en entier On vitera d utiliser un indice r el pour des raisons de compatibilit avec d autres langages ainsi que pour des erreurs dues aux arrondis dans les calculs Exemples ALPHA 5 ELEM 3 1
72. o La s quence cas o existe en FORTRAN 90 sous la forme suivante SELECT CASE selecteur CASE Expr l s quence 1 CASE Expr 2 s quence 2 CASE DEFAULT s quence d faut END SELECT Dans ce cas les expressions peuvent couvrir diff rentes formes On peut combiner des intervalles de valeur dans un cas o CASE 10 14 A 2 Si le s lecteur poss de une valeur comprise entre 10 et 14 ou entre les codes ASCII de A et Z ou est gal au code ASCII de _ la s quence suivant l instruction CASE sera ex cut e 5 3 3 Constructions it ratives 5 3 3 1 Boucle Pour Fin Pour Une boucle est une suite d instructions que le programme va parcourir un certain nombre de fois Le mot cl d une boucle est DO Syntaxe DO tiquette I N1 N2 INCR tiquette CONTINU jea Les l ments d une boucle DO sont tiquette Elle d termine l tendue de la boucle Souvent elle pointe l instruction CONTINUE mais ceci n est plus obligatoire I C est le compteur Cette variable doit obligatoirement tre enti re Il s incr mentera de 1 chaque bouclage partant de N1 et s arr tant la valeur N2 N1 et N2 Bornes du compteur de boucle INCR Un compteur de boucle peut voluer non seulement par incr ment de 1 mais aussi se d cr menter ou voluer par pas entiers constants mais quelconques Cet l ment est facultatif Son absence
73. ois types de fichiers pour son laboration Les fichiers source extension FOR F90 sous MS DOS ou WINDOWS f sous UNIX IMS DOS et UNIX sont ce qu on appelle des syst mes d exploitation Ils permettent aux diteurs de logiciels d adapter plus facilement les langages aux diff rents types de machines Ainsi par exemple pour cr er copier JJH 05 2005 Le langage FORTRAN page 4 e Les fichiers objet extension OBJ sous MS DOS o sous UNIX e Le fichier ex cutable extension EXE sous MS DOS ou WINDOWS d finie par l utilisateur sous UNIX 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 Ce fichier peut tre envoy sur une imprimante ou affich sur l cran C est ce que fait l diteur de texte Le programme source peut tre crit de deux fa on e Sous la forme formatt e avec des colonnes d usage d di h ritage de l poque des cartes perfor es e Sous la forme libre conforme la plupart des autres langages l extension du fichier doit alors tre f00 Les contraintes de la forme formatt e seront expliqu es dans le paragraphe x x Le fichier source doit ensuite tre compil c est dire traduit en langage machine C est le r le du compilateur Chaque langage poss de d ailleurs un compilateur propre Le fichier obtenu apr s compilation est un fichier objet pas encore ex cuta
74. oit en lecture ou en criture sans affecter les autres enregistrements La modification d un enregistrement quelconque est possible sans faire appel des manipulations de fichiers et de donn es L inconv nient majeur de ce mode est l obligation d avoir des enregistrements de longueur identique 6 2 4 Mode op ratoire L utilisation d un fichier necessite trois tapes essentielles 1 2 Acc s au fichier instruction READ ou WRITE 3 Fermeture du fichier Instruction CLOSE Ouverture du fichier instruction OPEN Il est possible d ouvrir simultan ment plusieurs fichiers pourvu que le num ro d unit soit diff rent Il est raisonnable de fermer le fichier lorsque l on en a plus besoin 6 3 Les instructions relatives aux manipulations de fichiers 6 3 1 Ouverture d un fichier OPI y H N UNIT unite ACCESS accesl BLANK blanks ERR etiquette FILE fichier JJH 05 2005 Le langage FORTRAN page 53 FORM format ILOSTAT erreur RECL Ig rec STATUS status Notations les sp cifications entre crochets sont facultatives Une instruction standard d ouverture de fichier a g n ralement la forme suivante OPEN unite FILE nom du fichier STATUS L OLD L NEW UNKNOWN Chaque param tre peut appara tre dans un ordre quelconque Si l on omet UNIT la valeur unit doit appara tre en premier C est cette forme qui est
75. olution FORTRAN a respect toutes les anciennes normes de mani re assurer une transplantation rapide des anciens programmes sur les nouveaux compilateurs Le pr sent abr g portera sur le FORTRAN 77 ainsi que le FORTRAN 90 Le premier est proche du FORTRAN V mais comporte en plus des instructions de structuration le second se rapproche d avantage des langages modernes et est orient vers la parrall lisation des calculs On trouve le langage FORTRAN sous diff rents syst mes d exploitation comme MS DOS ordinateurs compatibles IBM PC UNIX LINUX WINDOWS 9x Me NT et XP En fait Chaque d cennie a vu la naissance d une nouvelle version de Fortran Les derni res versions sont Fortran 90 Fortran 95 et Fortran 2003 On peut se demander s il reste opportun de continuer utiliser le Fortran ou se tourner vers un autre langage pour le calcul scientifique La r ponse est claire si l on utilise d j le Fortran On conserve ce langage et on volue avec lui Pour quelqu un qui cherche utiliser ponctuellement un langage pour r soudre un petit probl me ou pour faire une s rie de calculs le BASIC semble bien indiqu puisqu on le trouve m me int gr des tableurs Mais la richesses des biblioth ques de calculs que l on peut trouver et l volution du langage maintiennent le Fortran comme l outil de calcul scientifique et technique par excellence 1 2 Elaboration d un programme Un programme Fortran n cessite tr
76. on de lecture les valeurs tant attribu es dans l ordre de l apparition des variables Les donn es entr es devront tre du m me type que les variables destination Attention Lorsque l on utilise une entr e format e les caract res blancs sont lus comme tant des z ros ce qui peut avoir de graves cons quences lorsque ces blancs sont situ s apr s les chiffres exprim s Exemple On fait une lecture avec la sp cification I4 voir dans le paragraphe FORMAT Le caract re espace est mat rialis par le caract re b 2 3 1 2 1 4 b b Au lieu de lire 12 comme esp r on lit 120 On pr f rera le format libre obtenu avec JJH 05 2005 Le langage FORTRAN page 48 6 1 3 Instruction d criture La forme g n rale de l ordre d criture au format standard est WRITE constante enti re liste de donn es Les donn es sont des constantes ou des variables s par es par une virgule A chaque instruction WRITE une nouvelle ligne est crite sur le fichier destination Le fichier destination est rep r par une constante enti re voir l instruction READ Le signe signifie qu une pr sentation standard automatique est d sir e FORMAT standard Il est utilis pendant la mise au point des programmes Lors de la finition et de l am lioration de la pr sentation l instruction d criture sera toujours r f renc e une ligne FORMAT Pour une sortie format e de r sultats
77. on des variables Exemples 128 34E 02 432E 06 1 23267453274D 03 Contre exemples 01 1 5E Fi 2391 Et 3 1 4 Constantes complexes Une constante complexe se pr sente sous la forme d un doublet de deux r els plac entre parenth ses Les deux r els sont s par s par une virgule le premier repr sentant la partie r elle le second la partie imaginaire Exemples 20 0 3 14 0 0 1 E01 1 23E 02 Les r els formant le complexe doivent tre de m me nature soit en simple ou en double pr cision 3 1 5 Constantes logiques Un constante logique n a que deux valeurs possibles TRUE FALSE E 3 1 6 Constantes cha nes de caract res C est une suite de caract res quelconques encadr e par l apostrophe On utilise ces constantes pour composer des messages ou initialiser des cha nes Attention Le fran ais fait un usage courant de l apostrophe ceci peut poser un probl me lors de l affichage de certains messages Exemples JJH 05 2005 Le langage FORTRAN page 16 WRITE LUNDI 1 JANVIER 1990 Contre exemple WRITE L affichage d apostrophes va poser des problemes Ce probl me peut tre r gl par le double apostrophage WRITE L affichage d apostrophes ne pose plus de probleme 3 1 7 D claration des constantes En FORTRAN les constantes n ont pas de nom Les d clarations de constantes n existent do
78. on utilisera la forme suivante WRITE num ro unit tiquette ligne FORMAT liste variables Exemple IMP 2 WRITE IMP 100 I J A B 100 FORMAT 214 F12 4 3X E15 8 On peut galement utiliser une forme plus condens e mais identique IMP 2 WRITE IMP 214 F12 4 3X E15 8 I J A B 6 1 4 Les boucles implicites dans les instructions le lecture criture Le FORTRAN offre une facilit en ce qui concerne les entr es sorties de valeurs de type tableau les boucles implicites Les boucles implicites s utilisentde la mani re suivante WRITE TABLE I I 1 N Une autre fa on d affichage du tableau est DO I 1 N WRITE TABLE I END DO Chaque fois qu un WRITE est r alis il y a saut de ligne ce qui signifie que dans le second exemple TABLE est affich en colonne c est dire avec une valeur par ligne Avec la boucle implicite l instruction WRITE appara t comme tant suivie par la liste compl te des JJH 05 2005 Le langage FORTRAN page 49 l ments du tableau Pour l affichage de tableaux complets et de taille raisonnable on peut utiliser la construction suivante DO I 1 M WRITE TABLE I J J 1 N END DO Les boucles implicites se rencontrent galement avec l instruction READ La lecture des donn es en tableau se fait souvent avec une boucle implicite plac e l interieur d une boucle explicite On peut galement touv
79. orte o dans le programme mais de pr f rence on n en placera qu une juste avant l instruction END Fin du programme instruction END L instruction STOP n est pas obligatoire En revanche l instruction END permet au compilateur de d limiter les diff rents modules programme et sous programmes figurant dans un m me fichier Si l on omet l instruction END la fin d un module le compilateur indiquera une erreur L instruction END est ex cutable depuis la version 77 du FORTRAN Elle remplace l instruction STOP la fin du programme principal et l instruction RETURN la fin d une fonction ou d un sous programme Conseil N utilisez plus les instructions STOP et RETURN Le programme principal se voit assigner le nom main aussi si l diteur de liens vous signale pour le FORTRAN Microsoft l absence de main le programme principal a tout simplement t oubli 4 3 Sous Programmes Il existe en FORTRAN quatre sortes de sous programmes Les fonctions internes qui ne sont pas r ellement des sous programmes car int rieurs un programme donn PROGRAM exemples REAL F X INTEGER I F X X X 1 DO I 5 5 x 5 I WRITE X F X JJH 05 2005 Le langage FORTRAN page 34 END DO ti Z Les fonctions qui sont appel es par leur r f rence dans une expression math matique et fournissent un r sultat num rique Elles sont per ues comme des variables furtives
80. our le type REAL 8 Les r els double pr cision la place m moire n cessaire est plus importante les temps de calcul plus longs mais cette forme est souvent utilis e pour des probl mes demandant un grand nombre d op rations successives tendant faire perdre de la pr cision La d claration REAL 4 signifie une demande de codage d un r el sur 4 octets REAL 8 appelle au codage d un r el sur 8 octets double pr cision La d claration est faite de la mani re suivante REAL liste de variables exemple REAL SIGMAXX SIGMAYY SIGMAZZ IMPLICIT REAL 8 D Apr s la d claration IMPLICIT toutes les variables dont le nom commence par D sont en double pr cision 3 3 3 3 Variables logiques JJH 05 2005 Le langage FORTRAN page 21 LOGICAL ou LOGICAL 1 LOGICAL 2 LOGICAL 4 3 3 3 4 Variables complexes COMPLEX ou COMPLEX 8 DOUBLE COMPLEX ou COMPLEX 16 Les complexes sont des doublets de r els On les utilise sous la forme suivante signe partie r elle partie imaginaire Un nombre complexe est repr sent par sa partie r elle et sa partie imaginaire COMPLEX CX CX 5 0 1 0 3 3 3 5 Variables de caract res CHARACTER n o 1 lt n lt 32767 Si l on ignore la longueur de la cha ne on pourra crire la d claration sous la forme T CHARACTER chaine On pourra d clarer alphanum riques toutes les variables dont le nom commencera par la lett
81. ous peine de modifier compl tement les formats d dition suivants s ils existent Une mauvaise valeur provoquera certainement un message d erreur Le caract re figurant dans un format provoquera un changement de ligne Ex WRITE IMP 10 A B 10 FORMAT I5 F12 5 JJH 05 2005 Le langage FORTRAN page 51 On peut r p ter certains caract res en proc dant de la mani re suivante FORMAT 1X 1OH XXXXXXXXKXXXXXXXXX peut tre remplac par FORMAT 1X 19 1H o 19 est un multiplicateur Certains compilateurs autorisent l usage du signe qui emp che le passage la ligne suivante la fin d une instruction WRITE Le fait que parfois une instruction format contienne plus de sp cifications que n cessaire ne g ne pas Seules seront utilis es dans ce cas les premi res Si l inverse le nombre de sp cifications est trop court le format est parcouru une seconde fois voire plus encore En ce qui concerne l impression uniquement pour certains compilateurs le papier dans l imprimante peut tre contr l en utilisant les caract res suivants e provoque une surimpression e 1 fait aller la page e 0 fait sauter une ligne Tout autre caract re fait aller la ligne Ainsi si l on veut imprimer RESULTATS DU CALCUL en crivant WRITE IMP 10 10 FORMAT 19HRESULTATS DU CALCUL fait aller la ligne le premier caract re est diff rent de 1 0 et ce caract re est mang ESULT
82. ous programmes F90 D claration pour fonctions intrins ques pass es en argument Verrouillage de fichiers F90 D claration pour variables logiques D bute un groupe de variables dans une STRUCTURE F90 d clare un nom de groupe pour un ensemble de variables F90 Ouverture de fichier Donne un nom une constante Arr t temporaire du programme Sortie cran D but de programme Lecture D claration de type r el Attribue une structure un nom de variable F90 Retour de sous programme ou fonction Pointe sur le d but du fichier Maintien des variables dans des sous programmes Cas OU F90 Arr t programme D claration d une structure de diff rents types de variables F90 Nom de Sous Programme Partage de m mes emplacements m moire pour plusieurs variables F90 Ecriture Le langage FORTRAN Annexa C page 79 ANNEXE C FONCTIONS INTRINSEQUES CLASSEMENT PAR USAGE DEDIE Types de donn es et abr viations cx16 cr plusieurs types possibles entier 1 2 4 octets entier 2 Octets entier 4 octets r el 4 ou 8 octets simple ou double pr cision r el 4 octets r el 8 octets logique 1 2 4 octets logique 1 octet logique 2 octets logique 4 octets complexe 8 ou 16 octets complexe simple pr cision complexe double pr cision caract re JJH 05 2005 Le langage FORTRAN Annexe C page 80 Fonction CHAR i CMPLX gen gen DBLE gen DCMPLX genA genB conversion de type DFLOAT ge
83. oute constante r elle poss de bien un point d cimal JJH 05 2005 Le langage FORTRAN page 19 On peut toutefois modifier cette coutume en utilisant la d claration IMPLICIT IMPLICIT attribut lettre attribut lettre attribut peut tre INTEGER REAL CHARACTER COMPLEX La lettre qui suit l attribut d signera alors le type de variable dont elle est initiale Exemple IMPLICIT LOGICAL K Dans ce cas les variables KIND K2 KM sont de type logique c est dire qu elles ne peuvent avoir que deux valeurs FALSE ou TRUE remarquer la pr sence de 2 points encadrant ces valeurs Les d clarations de type se placent en t te de programme avant toute instruction ex cutable INTEGER A B C D REAL MAT MU DOUBLE PRECISION DMAT DMU Il est normalement inutile de d clarer par exemple la variable INDEX enti re tant donn qu elle commence par la lettre I Par contre toutes les variables double pr cision logiques ou complexes doivent tre d clar es Afin de prendre de bonnes habitudes des langages comme PASCAL et C n cessitant la d claration pr alable de toute variable on fera de m me en FORTRAN m me si cela est parfois inutile En fortran 90 il est possible d imposer l obligation de d claration de toutes les variables utilis es l aide de l instruction IMPLICIT NONE CONSEIL Imposez vous la d claration initiale des variables en
84. que le le module dans lequel elle est d clar e est en cours d ex cution La variable est plac e dans ce que l on appelle la pile ou le tas L avantage est imm diat gain de place m moire surtout pour les tableaux nous sommes en pr sence de variable existence dynamique On peut sugg rer au FORTRAN 90 l utilisation de ce type de variables l aide de la d claration AUTOMATIC L usage est le suivant AUTOMATIC liste de variables Si la d claration AUTOMATIC appara t seule dans une ligne toutes les variables qui suivent sont plac es dans la pile La d claration SAVE permet d introduire des exceptions pour certaines variables Le paragraphe 3 5 indique comment indiquer au compilateur de g rer un tableau comme variable automatique sans d claration sp cifique 8 4 Les Structures de variables Dans le cas de descriptions d objets complexes par exemple d individus ou de v hicules il est souvent n cessaire d utiliser plusieurs types de variables Par exemple si l on veut tablir des fiches techniques pour des voitures particuli res on peut tenir compte des caract ristiques suivantes Cha ne de caract res Maximum 25 Cha ne de caract res Maximum 15 Tableau de 3 entiers x 2 octets Nombre entier 2 octets JJH 05 2005 Le langage FORTRAN page 72 Nombre entier 2 octets Charge utile Nombre entier 2 octets Coef de prix d usage R el 4 octets Si par exemple on veut
85. r ation de fichier binaire acc s direct STORAGE 4 OPEN 33 FILE DIRBIN RECL 10 ACCESS DIRECT FORM BINARY WRITE 33 REC 1 abcdefghijklmno WRITE 33 4 5 WRITE 33 REC 40 pq CLOSE 33 END Le fichier ainsi obtenu prend la forme Quelques exemples Lorsqv un d butant veut s essayer aux manipulations de fichiers il est conseill de faire les essais avec peu de donn es et en mode s quentiel format Dans un premier temps Il se contentera d afficher l cran les donn es au moyen de l instruction WRITE Lorsque ce qui est affich l cran convient il suffit de placer l instruction suivante avant la premi re instruction WRITE OPEN 10 FILE premier txt STATUS UNKNOWN Le fichier s appellera premier txt S il n existait pas auparavant il sera cr L criture dans le fichier est simple il suffit de dupliquer toutes les lignes comportant une instruction WRITE et de remplacer la premi re toile par la valeur 10 On placera apr s le dernier WRITE l instruction suivante CLOSE 10 JJH 05 2005 Le langage FORTRAN page 63 7 Traitement de l information 7 1 Expressions arithm tiques 7 1 1 D finition Une expression arithm tique est un ensemble form de constantes variables et fonctions s par es par des op rateurs et des parenth ses elle est destin e fournir une valeur num rique 7 1 2 Op r
86. r er Utilisons cette d claration dans l exemple vu dans le paragraphe pr c dent TYPE VEHICULE HARACTER 25 marque HARACTER 15 mod le NTEGER 2 date achat 3 NTEGER 2 puissance NTEGER 2 masse NTEGER 2 charge REAL 4 coef END TYPE VEHICUL HHHHQAAQA T On peut galement utiliser l instruction RECORD li e la d claration STRUCTURE Pinterieur de cette construction Pour cr er une variable structur e il faut utiliser la syntaxe suivante TYPE nom type attributs variablel variable2 l attribut peut avoir plusieurs fonctions S il s agit de PARAMETER la variable cr e est alors une constante Les attributs peuvent aussi tre PUBLIC ou PRIVATE selon la visibilit d sir e pour les modules Mais ceci est une autre histoire exemple TYPE VEHICULE parc1 50 parc2 50 voiture write indiquez la marque du vehicule read voiture marque voiture VEHICULE Peugeot Clio 30 2 1990 5 1200 1900 0 75 parcl 10 marque voiture marque write voiture JJH 05 2005 Le langage FORTRAN Annexa A page 75 ANNEXE A CLASSEMENT DES INSTRUCTIONS PAR CATEGORIE DECLARATIONS AUTOMATIC Les variables sont plac es de pr f rence dans la pile BLOCK DATA Identifie un sous programme bloc de donn es dans lequel on peut initialiser variables et tableaux BYTE d claration quivalen
87. r chariot ou entr e valide la saisie L affichage sur l cran du contenu des variables A et B sera crit WRITE A B Le format d affichage est libre et il s adapte en fonction des variables 2 2 2 Le premier programme Le premier programme sera videmment simple et parfaitement inutile Il sera crit en format libre l extension du fichier source sera f90 la plupart des compilateurs comprenant alors qu il n y a pas de format standard respect comme d crit paragraphe 2 6 PROGRAM exemplel READ A B C A A B B WRITE C END PROGRAM exemplel En ex cutant le programme on tombe sur une fen tre vide dans laquelle rien ne semble se passer En r alit le programme attend les valeurs pour A et B on les donne en tapant au clavier les valeurs 4 et 5 s par es par un espace et valid es par un appui sur la touche entr e Voici ce que l on obtient 4 5 On entre ces valeurs et on valide 41 00000 C est la r ponse de l ordinateur Press any key to continue Vous devez appuye une touche pour fermer On peut faire quelques remarques A B et C sont des variables Le compilateur a estim que ces variables taient des nombres r els En fait il a proc d une d claration implicite voir 3 3 2 Au moment de l x cution l apparition d un cran vide peut surprendre et il serait plus judicieux d afficher un texte L instruction PROGRAM n est pas obligatoire mais on prend l habitude de l utiliser
88. re C en mentionnant en d but de programme la d claration suivante IMPLICIT CHARACTER C Dans cette d claration les cha nes sont d clar es de longueur 1 Or dans la plupart des cas notamment dans les programmes orient s gestion il est int ressant de pouvoir manipuler des mots On peut d clarer des variables alphanum riques de longueur diff rente de 1 en crivant CHARACTER 20 NOM PRENOM NOM et PRENOM sont deux cha nes de caract res pouvant comporter au plus 20 caract res On peut galement d clarer plusieurs variables comme tant de longueurs diff rentes CHARACTER 8 NOM1 NOM2 ORIGIN 15 NOM3 Attention dans l exemple ci dessus NOM1 NOM2 ET NOM3 ont une longueur maximale de 8 caract res et ORIGIN est d fini comme tant de longueur 15 G n ralement on place la d claration CHARACTER apr s la d claration IMPLICIT 3 3 3 6 L instruction DATA JJH 05 2005 Le langage FORTRAN page 22 L instruction DATA devient d suette Elle sert initialiser une variable ou un tableau Il est maintenant possible d initialiser une variable au moment de sa d claration La syntaxe de l instruction DATA est la suivante DATA liste de variables liste de valeurs Les donn es l int rieur de chaque liste sont s par es par des virgules Il existe trois fa ons d initialiser des variables e Par une affectation e A l aide de l instruction DATA e Au moment de la d claration
89. resse au pointeur l aide de l op rateur gt qui signifie pointer sur Le pointeur est lib r par l instruction NULLIFY L instruction ASSOCIATED v rifie si un pointeur est bien associ avec sa cible 3 7 D claration des sous programmes et fonctions pass s en argument Lorsqu un argument d appel est une fonction le processus de passage d argument entre la routine appelante et la routine appel e n est pas identique celui du passage de variables Il faut pr venir le compilateur que tel ou tel argument est un nom de sous programme ou de fonction ce qui est fait l aide d une d claration EXTERNAL toujours plac e dans le programme appelant La forme g n rale d une telle d claration est EXTERNAL a b c a b c sont les noms des sous programmes ou de fonctions 3 8 Les Interfaces Les interfaces sont des modules descriptifs notamment de sous programmes et de fonctions destin s au compilateur Ces modules d crivent la mani re d appeler un sous programme ou une fonction en num rant la liste des param tres Le compilateur sait alors si les appels faits aux diff rents sous programmes sont corrects ou non JJH 05 2005 Le langage FORTRAN page 29 Un bloc interface commence par l instruction INTERFACE et se termine par END INTERFACE G n ralement on place les blocs Interface dans un fichier Ce fichier est charg en pla ant l instruction USE tout de suite apr s la ligne de d but du p
90. rogramme ou sous programme L interface d crit le sous programme ou la fonction simplement en reprenant la premi re et la derni re ligne par un simple copier coller Entre ces deux lignes on place les d clarations des arguments Le bloc INTERFACE se place en t te de programme ou sous programme Un moyen plus puissant consiste placer tous les blocs INTERFACE dans un module et de le sauver avec une extension f00 Cette m thode permettra galement d viter l utilisation de blocs COMMON Exemple d emploi d un bloc interface Le programme appelle un sous programme qui remplit deux tableaux angle et sinus correspondant PROGRAM exemple9 REAL 4 ALLOCATABLE TABLE ANGLES INTEGER 2 Nb I Nb 5 ALLOCATE TABLE Nb ANGLES Nb CALL TABLESIN ANGLES TABLE Nb DO I 1 Nb WRITE i ANGLES I TABLE END DO DEALLOCATE TABLE ANGLES PROGRAM FI p4 Eal Z o BROUTINE TABLESIN A V N EGER 2 N 4 A N V N G 4 PIS2 INCR ER 2 I PIS2 ATAN 1 0 2 INCR PIS2 N 1 DO I 1 N A I I 1 N 1 90 V I SIN I 1 INCR END DO END SUBROUTINE H 7 0 Hu Le programme est le sous programme sont plac s dans des fichiers diff rents et compil s Il n y a pas d erreur signal e la compilation Le r sultat affich par le programme donne
91. rque parcl 10 marque voiture marque Si par exemple on utilise une structure l interieur d une autre T STRUCTURE moteur integer 2 cylindree integer 2 Pdin integer 2 nb cyl END STRUCTURE si l on inclut cette d claration dans la structure v hicule d crite pr c demment STRUCTURE VEHICULE T WE REAL 4 coef RECORD moteur motor END STRUCTURE on peut acc der la cylindr e par write voiture motor cylindree Comme on peut le voir l usage est facile assimiler Il est fort probable que l on ait sauver des elements de structure sur le disque Dans ce cas on est oblig lorsque l on travaille sur une structure enti re d acc der un fichier binaire ou non format Il est possible de lire un l ment d une structure dans un fichier format Rappelons qu un fichier binaire ou non format est une repr sentation exacte de la forme de la variable en m moire alors qu un fichier format est la repr sentation ASCII lisible des variables 8 4 2 La d claration TYPE Il s agit d une d claration similaire mais plus puissante Nous ne verrons pas en d tail les caract ristiques de cette d claration mais d crirons les points essentiels Syntaxe TYPE nom type JJH 05 2005 Le langage FORTRAN page 74 declarations internes END TYPE nom type nom type est le nom du nouveau type de variable que nous venons de c
92. rreur JJH 05 2005 Le langage FORTRAN page 56 6 3 5 Repositionnement d un fichier sur le premier enregistrement REWIND unit ou REWIND UNIT Junit ERR etiquettel IOSTAT erreur Cette commande rappelle les inscriptions que l on peut voir sur un magn tophone non francis Elle provient de l poque o les m moires de masse de type disque n existaient pas encore Les bandes magn tiques servaient alors de moyen de stockage de l information Ce moyen est encore utilis pour stocker des donn es lorsque elles sont trop nombreuses pour pouvoir figurer sur un disque dur La lecture tait plus lente Cette instruction est toujours valable Si l on veut se repositionner au d but d un fichier s quentiel ouvert l instruction REWIND convient parfaitement Attention si l on proc de une criture apres un REWIND toutes les donn es situ es apr s celles que l on vient d crire seront perdues 6 3 6 Lecture des particularit s d une unit ou d un fichier INQUIRE UNIT Junit ou FILE nom de fichier ACCESS accesl BLANK blanks DIRECT direct ERR tiquettel EXIST exist FORM forme FORMATTED formatte LOSTAT erreur E nom NAMED nomme EXTREC nextr UMBER numero D rh F D ouvert CL 1g SEQUENTIAL seq UNFORMATTED un t Cette instruction est utilis e dans les sous progr
93. s possible d inclure dans les variables de structure des tableaux dynamiques ce qui est compr hensible leur taille tant alors variable Une d claration similaire STRUCTURE est galement utilis e en FORTRAN 90 Ils s agit de la d claration TYPE que nous verrons plus loin Nous venons donc ci dessus de d finir un nouveau type de variable et non de la d clarer A partir de cet instant nous pouvons utiliser le nom de ce type pour d clarer des variables complexes ne pas confondre avec COMPLEX et travailler avec ce type de variable Commen ons par la d claration RECORD VEHICULE parcl 50 parc2 50 voiture parcl et parc2 sont deux structures d clar es de 50 v hicules chacune tableau de structures et voiture est une variable simple JJH 05 2005 Le langage FORTRAN page 73 La d claration RECORD se place avec les autres d clarations de variables simples Evidemment le bloc de description STRUCTURE doit figurer avant la d claration RECORD Comment utiliser une variable de type structure Plusieurs possibilit s s offrent nous on peut manipuler une entit enti re lors des affectations parcl l voiture tous les lements de la variable voiture sont copi s dans la Ieme structure de parcl Si l on veut acc der un l ment de voiture il faut d crire la structure en ins rant des points write indiquez la marque du vehicule read voiture ma
94. s programme pourvu qu il poss de une d claration COMMON correspondante Une d claration COMMON peut donc servir au passage des arguments Le nom de bloc n est pas obligatoire Dans ce cas il s agit d un COMMON blanc Son utilisation est viter Exemple d utilisation de COMMON COMMON BLK1 A B C BLK2 T U I Z d finit un COMMON blanc Il est impossible de faire figurer dans un COMMON des l ments disjoints d un tableau COMMON A 1 A3 n a pas de sens On peut grouper les instructions COMMON et DIMENSION COMMON A 100 quivaut DIMENSION A 100 COMMON A JJH 05 2005 Le langage FORTRAN page 70 Lorsque le COMMON est utilis pour un passage des arguments on le retrouve dans le programme et le sous programme C Programme principal COMMON XXX A I T CALL SPROG t ND C Sous programme SUBROUTINE SPROG COMMON XXX Z L U RETURN END On ne peut pas employer dans un COMMON une variable figurant d j dans la liste des arguments SUBROUTINE S COMMON X Y C PROG A B C est incorrect 8 2 Le partage m moire La d claration EQUIVALENCE La d claration EQUIVALENCE permet d affecter plusieurs variables la m me adresse Sa syntaxe se pr sente sous la forme EQUIVALENCE liste de variables liste de variables Exemple EQUIVALENCE A B C Y TAB 3 A B C auront la m me adresse m moire c est
95. sous entend un incr ment de 1 JJH 05 2005 Le langage FORTRAN page 43 Attention les boucles multiples doivent tre imbriqu es et les indices diff rents Exemple d utilisation d une boucle c boucl lementair DO 10 I 1 10 WRITE X I 10 CONTINU Et c lecture simple d un tableau dans un fichier sur unite 7 DO 100 I 1 L DO 50 J 1 M READ 7 A 1 J 50 CONTINU 100 CONTINU eai eal On peut galement trouver la boucle Pour sous la forme DO index min max pas instructions ENDDO L exemple pr c dent s crit alors DO I 1 L DO J 1 M READ 7 A I J END DO END DO Dans les boucles do l index peut tre un r el ou un entier Mais pour des raisons de purisme on n utilisera que des index entiers 5 3 3 2 Boucle Tant Fin Tant Que Cette boucle traduit la construction suivante Tant Que condition vraie faire Instructions r p ter Fin Tant Que On peut la trouver sous deux formes quand elle existe DOWHILE expression conditionnelle JJH 05 2005 Le langage FORTRAN page 44 instructions ENDDO ou bien WHILE etiquette expression conditionnelle instructions XX CONTINU BJ Cette construction n existe pas sur tous les compilateurs On peut alors la cr er en se basant sur les boucles It rer Tant Que condition pour rester dans la boucle Instructions Fin Tant que est quivalent
96. t INTEGER 1 variable sur 1 octet CHARACTER D claration pour variables alphanum riques COMMON Variables globales partage par plusieurs modules COMPLEX D claration pour variables complexes DATA Initialisation de variables DIMENSION D claration pour tableaux DOUBLE D claration double pr cision EQUIVALENCE Partage location m moire identique pour plusieurs variables de nom et de type diff rents EXTERNAL Identifie un nom comme tant un sous programme ou une fonction IMPLICIT Attribue un type implicite certaines variables INTEGER D claration pour variables enti res INTRINSIC D claration pour fonctions intrins ques LOGICAL D claration pour variables logiques MAP D bute un groupe de variables dans une STRUCTURE NAMELIST d clare un nom de groupe pour un ensemble de variables PARAMETER Donne un nom une constante REAL D claration de type r el RECORD Attribue une structure un nom de variable STRUCTURE D claration d une structure de diff rents types de variables UNION Partage de m mes emplacements m moire pour plusieurs variables PROGRAMMES ET SOUS PROGRAMMES PROGRAM D but de programme FUNCTION Sous programme de type fonction SUBROUTINE nom de Sous Programme CALL Appelle et x cute un sous programme RETURN Retour de sous programme ou fonction FICHIERS BACKSPACE Positionne le pointeur de fichier sur l enregistrement pr c dent CLOSE Fermeture de fichier ENDFILE Mise en place caract re fin de fichier JJH 05 2
97. t de la colonne 72 Le compilateur ne le signale pas directement Il se contente de remarquer soit une instruction incompr hensible soit une nouvelle variable en tronquant automatiquement la fin du mot Le r flexe du programmeur devra tre de v rifier en premier lieu la position des fins d instruction d s qu une erreur signal e par le compilateur para t incompr hensible Les compilateurs FORTRAN 90 par exemple le compilateur Microsoft admettent le format libre de ligne Aucune colonne n est r serv e un commentaire commence par un point d exclamation la colonne 72 n est plus une limite Avec la plupart des compilateurs Fortran JJH 05 2005 Le langage FORTRAN page 12 le fait de pr ciser f90 pour l extension d un fichier source au lieu de for implique l utilisation du format libre Il est de m me possible de placer plusieurs instructions sur la m me ligne en prenant soin de les s parer par un point virgule 2 7 Commentaires Lorsque le caract re C ou figure dans la premi re colonne la ligne enti re est suppos e tre un commentaire et le compilateur l ignore Une ligne vide est galement consid r e comme commentaire par le compilateur Il est conseill de faire usage autant que possible des commentaires afin de rendre le programme plus lisible La notice d utilisation du module figurera sous forme de commentaire en en t te et de ce fait ne quittera pas le programme Le FORTRAN
98. ue 4 types de modules PROGRAM Programme principal tout module dont la premi re instruction n est pas SUBROUTINE FUNCTION ou BLOCK DATA Ce module peut comporter comme premi re 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 plac es dans un COMMON nomm Se r f rer au chapitre des d clarations 4 2 Programme principal Un programme comporte 2 parties e Les d clarations concernant les variables e Les instructions ex cutables On peut placer au d but du programme l instruction PROGRAM Nom du programme JJH 05 2005 Le langage FORTRAN page 33 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 D clarations des variables utilis es Instructions ex cutables END Attention On ne peut pas placer de d claration apr s une instruction ex cutable Arr t du programme Instruction STOP Cette instruction est facultative pour une fin normale de programme Elle signifie fin de l ex cution La main est alors retourn e au shell superviseur On peut placer des instructions STOP n imp
99. unit s particuli res comme les MODEMS liaisons t l phoniques fichiers sur disque ou sur des consoles particuli res Quatre questions essentielles se posent pour cette op ration Dans quel sens entr e ou sortie Sur quel p riph rique Faut il une conversion un formatage Echanger quoi D Une entr e de donn es correspond l instruction READ une sortie WRITE comme nous avons d j pu le constater Le fortran attribue chaque p riph rique un num ro d unit logique Fortran attribue le caract re la console Le format d dition qui peut tre consid r comme tant la mise en forme est conditionn par l instruction FORMAT qui est r f renc e par une tiquette L instruction d entr e sortie est suivie de la liste des donn es transmettre Exemple READ unit logique tiquette du format liste de variables WRITE unit logique tiquette du format liste de variables Les assignations standard des unit s logiques varient selon le type de compilateur Pour les FORTRAN Microsoft ou COMPACQ elles sont e _ ou Ast risque repr sente la console e 0 Repr sente initialement la console mais peut galement repr senter un fichier sur le disque e 5 Repr sente initialement le clavier e 6 Repr sente initialement l cran La constitution des formats sera vue plus loin On peut utiliser le signe pour d signer l unit logique standard qui est la console et le
100. us la forme non format e il occupera galement 4 octets mais il est inutile de chercher le relire au moyen d un diteur de texte Dans un fichier enregistrements format s un r el occupe autant d octets que de caract res n cessaires pour le repr senter tant donn qu il sera exprim sous la forme ASCII Donc premier avantage un gain de place certain La transcription binaire ASCII aussi bien au niveau de la lecture que de l criture demande galement du temps Ce temps est conomis dans le cas des enregistrements non format s puisque la forme de stockage est identique celle du stockage en m moire Les changes de donn es sont alors beaucoup plus rapides 6 5 2 1 Les enregistrements s quentiels non format s JJH 05 2005 Le langage FORTRAN page 60 Les fichiers de ce type sont particuliers au FORTRAN Les fichiers sont organis s en blocs de 130 octets ou moins Ces blocs sont appel s blocs physiques Chaque bloc comporte les donn es ou une partie des donn es que l on a enregistr es encadr es deux octets contenant la longueur utile du bloc Bien entendu le compilateur se charge de mettre en place et jour ces 2 octets La figure suivante indique la structure d un bloc physique L bloc L Lorsque l on d sire enregistrer un ensemble de donn es d passant la capacit maximale d un bloc physique le compilateur place les octets d encadrement L 129 pour indiquer que le bloc physiqu
101. variable num rique Les op rateurs de comparaison sont FORTRAN 77 FORTRAN 90 GT Plus grand que gt GE Plus grand ou gal que gt EQ Egal NE Diff rent de LE Inf rieur ou gal lt LT Inf rieur lt Remarque Deux complexes ne peuvent tre que gaux ou diff rents donc seuls les op rateurs NE et EQ sont utilisables On peut galement effectuer des comparaisons sur deux cha nes de caract res Dans ce cas la comparaison se fait de la gauche vers la droite caract re apr s caract re La diff rence est faite d s l apparition d un premier caract re diff rent de son homologue en position C est JJH 05 2005 Le langage FORTRAN page 67 alors celui qui poss de le code ASCII le plus lev qui sera consid r comme sup rieur Signalons que le code ASCII respecte l ordre alphab tique Exemple HENRY est sup rieur HENRI 74 2 Op rateurs logiques En logique il n existe que deux tats TRUE VRAI FALSE FAUX Les op rateurs logiques sont NOT NON AND ET OR OU EQV EQUIVALENCE NEQV OU EXCLUSIF Le lecteur pourra reconstituer la table de v rit Ordre d valuation des diverses op rations vues 1 Op rateurs arithm tiques 2 Concat nation 3 Op rateurs de comparaison 4 Op rateurs logiques Exemple I EQ 0 OR J GT I 3 sera valu comme I EO 0 OR J GT I 3 7 5 Op

Download Pdf Manuals

image

Related Search

Related Contents

Daily Maintenance - mimaki engineering co., ltd.  BLANCO CLARON 400-IF/A  Fujitsu L line L20T-4    User Manual - biznetmall  Transmission Register Autoloader User Manual  Casio AQ164WD-1AV User's Manual  i-SERIES P.1 iD4 USER MANU AL  FREECOM FHD-1  Trevi DJ 628  

Copyright © All rights reserved.
Failed to retrieve file