• Aide
  • Eurêkoi Eurêkoi

Livre

Programmer en Fortran : Fortran 90 et ses évolutions : Fortran 95, 2003 et 2008

Résumé

Une présentation de l'ensemble de Fortran 90, avec les apports de la dernière normalisation : la nouvelle forme des déclarations, les facilités de traitement de tableaux, les types dérivés (ou structures), les tableaux dynamiques, les pointeurs, les modules, etc. ©Electre 2015


  • Éditeur(s)
  • Date
    • DL 2015
  • Notes
    • Index
  • Langues
    • Français
  • Description matérielle
    • 1 vol. (XX-454 p.) ; 21 cm
  • Sujet(s)
  • ISBN
    • 978-2-212-14020-0
  • Indice
  • Quatrième de couverture
    • Bien qu'existant depuis de nombreuses décennies, Fortran a toujours su évoluer pour garder sa place auprès de langages plus récents dans le domaine du calcul scientifique.

      Cet ouvrage est destiné à tous ceux qui souhaitent maîtriser la programmation en Fortran : étudiants des disciplines scientifiques, chercheurs ou ingénieurs, enseignants de ce langage.

      Il a été conçu sous forme d'un cours complet, chaque notion importante étant illustrée d'un programme d'exemple montrant comment la mettre en oeuvre dans un contexte réel. La plupart des chapitres sont dotés d'exercices corrigés en fin de volume. Ils vous permettront de contrôler l'acquisition de vos connaissances.

      La présente édition tient compte des différentes versions du langage. L'exposé privilégie Fortran 90/95, qui reste toujours très utilisé, les différences avec Fortran 77 et les apports des normes 2003 et 2008 étant mentionnées au fil du texte.

      Deux nouvelles annexes présentent les possibilités de programmation orientée objet offertes par Fortran 2003, ainsi que les autres apports des normes Fortran 95, 2003 et 2008.


  • Tables des matières
      • Programmer en Fortran

      • Fortran 90 et ses évolutions Fortran 95, 2003 et 2008

      • Claude Delannoy

      • Eyrolles

      • I. Généralités sur Fortran 901
      • 1 - Présentation par l'exemple de quelques instructions de Fortran 902
      • 1.1 Un exemple de programme en Fortran 902
      • 1.2 Structure générale d'un programme en Fortran 903
      • 1.3 Déclarations de type3
      • 1.4 Pour écrire des informations : l'instruction print4
      • 1.5 Pour faire une répétition : l'instruction do5
      • 1.6 Pour lire des informations : l'instruction read6
      • 1.7 Pour faire des choix : l'instruction if6
      • 1.8 Différences avec Fortran 777
      • 2 - Quelques règles d'écriture 8
      • 2.1 Les identificateurs8
      • 2.2 Les mots-clés9
      • 2.3 Le « format libre »9
      • 2.4 Les commentaires12
      • 2.5 Le « format fixe »13
      • II. Les types de base de Fortran  : Integer, Real, Double précision et logical15
      • 1 - La notion de type 16
      • 2 - Le type integer 17
      • 3 - Le type real 18
      • 3.1 La représentation en mémoire du type real18
      • 3.2 Notation des constantes de type réel19
      • 4 - Le type double précision 20
      • 5 - Le type logical 21
      • 6 - Le typage implicite des variables 23
      • III. Les expressions et l'instruction d'affectation25
      • 1 - Les expressions arithmétiques 26
      • 1.1 Les opérateurs arithmétiques usuels26
      • 1.2 L'opérateur d'élévation à la puissance : **27
      • 1.3 Les priorités relatives28
      • 1.4 Les expressions mixtes : les conversions implicites30
      • 1.5 Les conversions forcées par une affectation31
      • 2 - Les expressions logiques 33
      • 2.1 Les comparaisons33
      • 2.2 Les opérateurs logiques34
      • 3 - Les expressions constantes 36
      • 3.1 Notion de constante symbolique36
      • 3.2 Notion d'expression constante36
      • 3.3 Utilisation d'une expression constante37
      • Exercices 38
      • IV. Les instructions de contrôle41
      • 1 - L'instruction if structure 42
      • 1.1 Réalisation d'une alternative (ou choix simple)43
      • 1.2 Bloc, instruction simple et instruction structurée44
      • 1.3 Les alternatives imbriquées45
      • 1.4 L'instruction else if46
      • 1.5 Syntaxe de l'instruction if48
      • 2 - Un cas particulier d'alternative : l'instruction « if logique » 49
      • 3 - L'instruction select case 50
      • 3.1 Exemple d'instruction select case50
      • 3.2 D'une manière générale52
      • 3.3 Syntaxe de l'instruction select case53
      • 4 - La boucle avec compteur 55
      • 4.1 Introduction55
      • 4.2 Syntaxe de la boucle avec compteur (do)56
      • 4.3 Rôle précis de la boucle avec compteur56
      • 5 - La boucle « tant que » : l'instruction do while58
      • 5.1 Exemple d'introduction de l'instruction do while58
      • 5.2 Syntaxe de l'instruction do while60
      • 6 - Pour modifier le déroulement d'une boucle : les instructions exit et cycle 61
      • 6.1 Sortie anticipée de boucle : l'instruction exit61
      • 6.2 Bouclage anticipé : l'instruction cycle64
      • 7 - La structure de boucle infinie : l'instruction do 65
      • 7.1 Introduction65
      • 7.2 Syntaxe66
      • 7.3 Exemples66
      • 8 - Les instructions go to et stop 67
      • 8.1 L'instruction go to et la notion d'étiquette67
      • 8.2 L'instruction stop69
      • Exercices71
      • V. Les tableaux73
      • 1 - Declaration et utilisation classique d'un tableau a une dimension 74
      • 1.1 Exemple introductif74
      • 1.2 D'une manière générale75
      • 2 - Les tableaux à plusieurs dimensions 78
      • 2.1 Déclaration et utilisation de tableaux à plusieurs dimensions78
      • 2.2 Rang, étendue, taille et profil d'un tableau78
      • 2.3 Remarque à propos des déclarations de tableaux en Fortran 7779
      • 3 - Les opérations globales relatives aux tableaux 80
      • 3.1 Affectation collective d'une valeur à tous les éléments d'un tableau80
      • 3.2 Les « expressions tableau »82
      • 3.3 Application des fonctions élémentaires à un tableau87
      • 3.4 Les fonctions portant sur des tableaux88
      • 4 - Construction et initialisation de tableaux 88
      • 4.1 Construction de tableaux à une dimension89
      • 4.2 Initialisation de tableaux à une dimension93
      • 4.3 Construction et initialisation de tableaux à plusieurs dimensions94
      • 5 - Les sections de tableau 95
      • 5.1 Sections régulières d'un tableau à une dimension96
      • 5.2 Section quelconque d'un tableau à une dimension à l'aide d'un vecteur d'indices100
      • 5.3 Sections de tableaux à plusieurs dimensions103
      • 5.4 Les sections de tableaux en général104
      • 5.5 Exemples104
      • 6 - L'Instruction Where 106
      • 6.1 Introduction106
      • 6.2 Syntaxe de l'instruction where107
      • 6.3 Quelques commentaires108
      • 7 - Entrées-sorties de tableaux 109
      • 7.1 Dans une liste, un nom de tableau est équivalent à la liste de tous ses éléments109
      • 7.2 Cas des sections de tableaux110
      • 7.3 D'une manière générale110
      • 7.4 Utilisation de listes implicites111
      • Exercices 112
      • VI. Les entrées-sorties standards115
      • 1 - Le format libre en lecture 116
      • 1.1 Ecriture des informations116
      • 1.2 Séparation des informations117
      • 1.3 On peu omettre des informations118
      • 1.4 On peut mettre des informations « en facteur »119
      • 2 - Le format libre en écriture 119
      • 3 - Utilisation d'un format dans une instruction d'entrée-sortie 120
      • 4 - Les principaux descripteurs de format en écriture 121
      • 4.1 Pour écrire des entiers : le descripteur Iw121
      • 4.2 Pour écrire des réels en notation flottante : le descripteur Fw.d122
      • 4.3 Pour écrire des réels en notation exponentielle : le descriteur Ew.d122
      • 4.4 Pour introduire des libellés dans le format123
      • 4.5 Pour introduire des espaces : le descripteur wX124
      • 4.6 Pour écrire des valeurs logiques : le descripteur Lw124
      • 4.7 Pour se « positionner » dans le « tampon » : le descripteur Tp124
      • 4.8 Pour « changer de ligne » : le descripteur /126
      • 4.9 Attention aux erreurs de descripteurs127
      • 4.10 Cas particulier de certains périphériques d'impression127
      • 5 - Les principaux descripteurs de format en lecture 128
      • 5.1 Lecture d'entiers : le descripteur Iw128
      • 5.2 Lecture de réels : les descripteurs Fw.d et Ew.d129
      • 5.3 Pour « sauter » des informations : le descripteur wX130
      • 5.4 Pour se positionner dans le « tampon » : le descripteur Tp130
      • 5.5 Pour lire une nouvelle ligne : le descripteur /131
      • 5.6 Cas des espaces figurant à l'intérieur d'une donnée131
      • 5.7 Quand on fournit trop ou trop peu d'informations132
      • 6 - La syntaxe des instructions d'entrées-sorties (première forme) 132
      • 7 Le format d'une manière générale 133
      • 7.1 Utilisation de facteur de répétition de descripteurs134
      • 7.2 Règles de correspondance entre le format et la liste134
      • Exercices 138
      • VII. Les sous-programmes et les fonctions141
      • 1 - Notion de procédure externe 143
      • 1.1 Exemple de définition d'un sous-programme externe144
      • 1.2 Exemple d'utilisation145
      • 1.3 Mise en oeuvre146
      • 2 - Notion de procédure interne 147
      • 2.1 Exemple de sous-programme interne147
      • 2.2 La notion de variable globale148
      • 2.3 Quelques règles concernant les procédures internes150
      • 3 - Les différentes sortes d'arguments en fortran 90 151
      • 4 - Les interfaces 153
      • 4.1 Une première motivation pour l'utilisation d'interfaces : fiabiliser les appels de procédures153
      • 4.2 Comment utiliser une interface154
      • 4.3 D'une manière générale155
      • 5 - Les fonctions 155
      • 5.1 Exemple de définition d'une fonction156
      • 5.2 Exemple d'utilisation d'une fonction157
      • 5.3 La fonction comme cas particulier du sous-programme158
      • 6 - Cas des tableaux transmis en argument 159
      • 6.1 Tableau de profil connu160
      • 6.2 Tableau de profil ajustable161
      • 6.3 Cas des sections de tableaux165
      • 7 - Les variables locales sont gérées de manière « automatique » 165
      • 7.1 Notion de variable automatique ou statique165
      • 7.2 Initialisation de variables locales167
      • 7.3 Cas des tableaux automatiques168
      • 8 - Fonctions fournissant un tableau en résultat 170
      • 9 - Les arguments à mot clé et les arguments optionnels 172
      • 9.1 Les arguments à mot clé172
      • 9.2 Les arguments optionnels173
      • 10 - Transmission d'une procédure en argument 176
      • 10.1 Notion d'argument procédure176
      • 10.2 Exemple : calcul numérique d'intégrale177
      • 11 - Restrictions concernant les arguments effectifs 180
      • 11.1 Nature des arguments effectifs180
      • 11.2 Type des arguments effectifs181
      • 12 - Les procédures récursives 181
      • Exercices 183
      • VIII. Les chaînes de caractères185
      • 1 - Exemple d'introduction 186
      • 2 - Déclaration et utilisation de chaînes 187
      • 2.1 Déclaration de variables de type chaîne187
      • 2.2 Ecriture des constantes de type chaîne188
      • 2.3 Affectation entre chaînes189
      • 2.4 Comparaisons entre chaînes190
      • 2.5 Chaînes et initialisations191
      • 3 - Entrées-sorties de chaînes 192
      • 3.1 Entrées-sorties en format libre192
      • 3.2 Entrées-sorties avec un format : les descripteur A et Aw193
      • 4 - Les sous-chaînes 194
      • 4.1 Notion de sous-chaîne194
      • 4.2 La sous-chaîne en général194
      • 4.3 En cas de recoupement195
      • 4.4 Exemples196
      • 5 - Opérations réalisables avec des chaînes 197
      • 5.1 La concaténation, et la fonction trim197
      • 5.2 Longueur d'une chaîne : les fonctions len et len_trim198
      • 5.3 Recherche d'une sous-chaîne dans une chaîne : la fonction index199
      • 6 - Transmission de chaînes en argument 200
      • 6.1 Argument muet de longueur fixe200
      • 6.2 Argument muet de taille variable201
      • 7 - Les chaînes automatiques 202
      • 8 - Fonction fournissant une chaîne en résultat 203
      • 9 - Tableaux de chaînes 205
      • 9.1 Notion de tableau de chaînes205
      • 9.2 Construction et initialisation de tableaux de chaînes205
      • 9.3 Tableaux ajustables et chaînes variables206
      • Exercices207
      • IX. Les structures (ou types dérivés)209
      • 1 - Déclaration d'une structure 210
      • 2 - Utilisation de structures 210
      • 2.1 Utilisation des champs d'une structure211
      • 2.2 Utilisation globale d'une structure211
      • 3 - Construction et initialisation de structures 212
      • 4 - Imbrication de structures 214
      • 4.1 Structure comportant des tableaux ou des chaînes de caractères214
      • 4.2 Tableaux de structures215
      • 5 - Structures et procédures 217
      • 5.1 Transmission d'une structure en argument217
      • 5.2 Transmission en argument d'un tableau de structures219
      • 5.3 Fonction fournissant un résultat de type structure220
      • Exercices 221
      • X. La gestion dynamique et les pointeurs223
      • 1 - Les tableaux dynamiques 224
      • 1.1 Introduction224
      • 1.2 Exemple d'utilisation d'un tableau dynamique225
      • 1.3 D'une manière générale226
      • 1.4 Tableaux automatiques et tableaux dynamiques230
      • 2 - Présentation de la notion de pointeur dans le cas de variables simples 231
      • 2.1 Premier exemple231
      • 2.2 Deuxième exemple233
      • 3 - Pointeurs sur des chaînes 235
      • 3.1 Premier exemple235
      • 3.2 Application : tri de chaînes236
      • 4 - Pointeurs sur des structures 237
      • 5 - Pointeurs sur des tableaux 238
      • 5.1 Exemple238
      • 5.2 D'une manière générale239
      • 6 - Récapitulatif : affectation d'une valeur à un pointeur 241
      • 7 - Pointeurs et gestion dynamique 241
      • 7.1 Premier exemple242
      • 7.2 Pour permuter deux chaînes243
      • 7.3 Syntaxe générale des instructions allocate et deallocate244
      • 7.4 L'instruction nullify et la fonction associated244
      • 8 - Pointeurs et procédures 246
      • 9 - Exemple d'application de la gestion dynamique : la liste chaînée 249
      • Exercices 252
      • XI. Les modules et la généricité255
      • 1 - Notion de module 256
      • 1.1 Premier exemple de module : définition d'un type256
      • 1.2 Deuxième exemple de module : définition d'une procédure258
      • 1.3 Troisième exemple de module : partage de données259
      • 1.4 Dépendances entre modules260
      • 1.5 Procédures internes aux procédures de module261
      • 1.6 Contrôle de l'accès aux ressources du module262
      • 1.7 La syntaxe générale de l'instruction use263
      • 1.8 Privatisation de certaines ressources d'un module263
      • 2 - Les procédures génériques 265
      • 2.1 Le principe265
      • 2.2 Exemple de mise en oeuvre, sans utiliser un module266
      • 2.3 Exemple de mise en oeuvre avec un module267
      • 2.4 D'une manière générale269
      • 3 - Surdéfinition d'opérateurs 270
      • 3.1 Le principe270
      • 3.2 Exemples270
      • 3.3 Priorités des opérateurs surdéfinis273
      • 4 - Surdéfinition de l'affectation 273
      • 5 - Exemples d'utilisation de modules 275
      • 5.1 Bibliothèques de procédures275
      • 5.2 Création d'un type abstrait de données276
      • 5.3 Exemple de type abstrait : nombres rationnels277
      • 5.4 Création d'objets279
      • XII. Les fichiers281
      • 1 - Généralités 282
      • 1.1 Notion d'enregistrement282
      • 1.2 Accès séquentiel et accès direct282
      • 1.3 Entrées-sorties formatées ou non formatées283
      • 1.4 Numéro d'unité associé à un fichier284
      • 2 - Les entrées-sorties séquentielles non formatées 285
      • 2.1 Exemple de création d'un fichier séquentiel non formaté285
      • 2.2 Exemple de lecture d'un fichier séquentiel non formaté289
      • 3 - Les entrées-sorties séquentielles formatées 292
      • 3.1 Les entrées-sorties séquentielles formatées usuelles292
      • 3.2 Les entrées-sorties standards295
      • 3.3 Pour n'accéder qu'à une partie d'enregistrement : le paramètre advance296
      • 4 -  L'accès direct 299
      • 4.1 Création d'un fichier non formaté à accès direct299
      • 4.2 Utilisation d'un fichier non formaté à accès direct302
      • 5 - Gestion des erreurs dans les instructions d'entrées-sorties 303
      • 5.1 Le paramètre iostat304
      • 5.2 Les paramètres end, err et eor304
      • 5.3 Exemples de gestion de fichier avec prise en compte des erreurs305
      • 5.4 Exemple de lecture conversationnelle avec gestion des erreurs308
      • 6 - Les fichiers internes 309
      • 6.1 Notion de fichier interne309
      • 6.2 Exemples310
      • 6.3 D'une manière générale310
      • 7 - Syntaxe générale des instructions d'entrées-sorties 311
      • 8 - Les instructions open et close 313
      • 8.1 L'instruction open313
      • 8.2 L'instruction close36
      • 9 - L'instruction inquire 317
      • 10 - Les instructions de Positionnement à l'intérieur d'un fichier319
      • Annexe A : Les procédures intrinsèques de fortran 90321
      • 1 - Les fonctions d'interrogation utilisables pour tous les types 322
      • 2 - Les fonctions numériques 322
      • 2.1 Les fonctions numériques élémentaires322
      • 2.2 Les fonctions numériques d'interrogation329
      • 2.3 Les fonctions numériques de transformation330
      • 3 - Les fonctions relatives aux chaînes 331
      • 3.1 Les fonctions élémentaires relatives aux chaînes331
      • 3.2 Les fonctions d'interrogation relatives aux chaînes333
      • 3.3 Les fonctions de transformation relatives aux chaînes334
      • 4 - La fonction logique élémentaire : logicial 334
      • 5 - Les fonctions de manipulation de bits 334
      • 5.1 La fonction d'interrogation : bit_size334
      • 5.2 Les fonctions élémentaires de manipulation de bits335
      • 5.3 Le sous-programme élémentaire : mvbits336
      • 6 - Les fonctions relatives aux tableaux 337
      • 6.1 Les fonctions de multiplication de vecteurs et de matrices337
      • 6.2 Les fonctions de transformation qui réduisent les tableaux338
      • 6.3 Les fonctions d'interrogation relatives aux tableaux340
      • 6.4 Les fonctions de construction et de manipulation de tableaux341
      • 7 - Procédures diverses 345
      • 7.1 La fonction transfer345
      • 7.2 Les sous-programmes non élémentaires346
      • Annexe B : Les variantes des types de base349
      • 1. Généralités349
      • 2. Déclaration des variables350
      • 3. Notation des constantes350
      • 4. Les variantes du type integer351
      • 5. Les variantes du type real351
      • 6. Les variables du type complex352
      • 7. Les variantes du type logical352
      • 8. Les variantes du type character352
      • Annexe C : le type complex353
      • 1. Constantes de type complex353
      • 2. Entrées-sorties de complexes354
      • 3. Les opérateurs354
      • 4. Les expressions mixtes354
      • 5. Conversions forcées par affectation354
      • 6. Les fonctions usuelles relatives aux complexes355
      • 7. Les variantes du type complex355
      • 8. Exemple récapitulatif355
      • Annexe D : Les descripteurs de format357
      • 1. Les descripteurs numeriques 358
      • 1.1 Règles générales concernant la lecture358
      • 1.2 Les descripteurs actifs relatifs aux entiers358
      • 1.3 Les descripteurs actifs relatifs aux réels358
      • 1.4 Les descripteurs passifs d'édition de signe359
      • 1.5 Les descripteurs passifs de facteur d'échelle360
      • 1.6 Les descripteurs passifs relatifs aux espaces en lecture360
      • 2 - Les descripteurs logiques 361
      • 3 - Les descripteurs pour les chaînes de caractères 361
      • 4 - Les autres descripteurs passifs 362
      • 4.1 Les descripteurs agissant sur le pointeur du tampon362
      • 4.2 Le descripteur de changement d'enregistrement :/362
      • 4.3 Le descripteur de fin d'exploitation d'un format «:»362
      • Tableau recapitulatif363
      • Annexe E : Les priorités des opérateurs364
      • Annexe F : Les instructions de déclaration365
      • I - La forme fortran 90 de la déclaration des variables 366
      • II - Les autres formes de déclarations 368
      • 2.1 Déclaration par attribut368
      • 2.2 Cas des dimensions de tableaux369
      • 2.3 Cas des chaînes369
      • III - Typage implicite 370
      • Annexe G : ordre des instructions372
      • Annexe H : La programmation orientée objet avec Fortran 2003373
      • 1. Le concept d'objet : association de procédures à un type 373
      • 1.1 Introduction373
      • 1.2 Présentation du mécanisme sur un exemple374
      • 1.3 Constructeur de classe377
      • 1.4 Objets transmis en argument d'une méthode379
      • 1.5 Action sur l'argument implicite fourni à une méthode : pass380
      • 1.6 Les différentes façon d'attacher une méthode à un type381
      • 2 - L'héritage 383
      • 2.1 Le mécanisme384
      • 2.2 Redéfinition de méthodes386
      • 2.3 Quelques règles389
      • 3  - Le polymorphisme 389
      • 3.1 Exemple introductif390
      • 3.2 Les variables polymorphiques en Fortran391
      • 3.3 Une autre situation exploitant le polymorphisme392
      • 3.4 Polymorphisme universel395
      • 4 - L'instruction select type 396
      • 5 - Les classes abstraites et les méthodes retardées 397
      • Annexe I : Fortran 95, 2003, 2008401
      • 1. La boucle forall pour les tableaux 401
      • 1.1 L'instruction forall401
      • 1.2 La construction forall402
      • 2 - Amélioration de la gestion dynamique 403
      • 2.1 Tableaux dynamiques en argument muet403
      • 2.2 Variables dynamiques404
      • 3 - Amélioration concernant les pointeurs 408
      • 3.1 Pointeurs de procédures408
      • 3.2 Amélioration des pointeurs sur des tableaux410
      • 4 - Les types paramètres 411
      • 5 - Amélioration des entrées-sorties412
      • 5.1 Types dérivés412
      • 5.2 Entrées-sorties asynchrones412
      • 5.3 Entrées-sorties en mode « stream » (flux)412
      • 6 - Interopérabilité avec le langage C 413
      • 7 - Diverses autres fonctionnalités 413
      • 7.1 Standard IEE et gestion des exceptions413
      • 7.2 Structure de bloc413
      • 7.3 Co-tableaux414
      • 7.4 Sous-modules414
      • Annexe J : Les instructions obsoletes 415
      • 1- L'instruction équivalence415
      • 2- L'instruction common416
      • 3- L'instruction data417
      • 4- L'instruction block data418
      • 5- L'instruction go to calcule418
      • 6- Anciens noms de procédures intrinsèques419
      • 7- La directive include420
      • 8- L'instruction if arithmétique420
      • 9- Instructions assign et go to assigne420
      • 10- L'instruction namelist421
      • Correction des exercices 423
      • Index 445

  • Origine de la notice:
    • Electre
  • Disponible - 681.25 DEL

    Niveau 3 - Informatique