Introducing FORTRAN 90
Author(s)
Bibliographic Information
Introducing FORTRAN 90
Springer, c1995
Available at 6 libraries
  Aomori
  Iwate
  Miyagi
  Akita
  Yamagata
  Fukushima
  Ibaraki
  Tochigi
  Gunma
  Saitama
  Chiba
  Tokyo
  Kanagawa
  Niigata
  Toyama
  Ishikawa
  Fukui
  Yamanashi
  Nagano
  Gifu
  Shizuoka
  Aichi
  Mie
  Shiga
  Kyoto
  Osaka
  Hyogo
  Nara
  Wakayama
  Tottori
  Shimane
  Okayama
  Hiroshima
  Yamaguchi
  Tokushima
  Kagawa
  Ehime
  Kochi
  Fukuoka
  Saga
  Nagasaki
  Kumamoto
  Oita
  Miyazaki
  Kagoshima
  Okinawa
  Korea
  China
  Thailand
  United Kingdom
  Germany
  Switzerland
  France
  Belgium
  Netherlands
  Sweden
  Norway
  United States of America
Note
Includes bibliographical references and index
Description and Table of Contents
Description
This book has evolved from our combined experience of working in computing services at the University of London (for the last nine years at King's College, and before that eight years at Imperial College and seven at Chelsea College) in the teaching, advice and technical support of Fortran and related areas. Thanks are due to:- * the staff and students at King's College London - without them none of this would have been possible; also the support and facilities provided by the Computer Centre; * the patience of our families during the lengthy period required to develop the courses upon which this book is based and whilst preparing the camera ready copy; * the staff at NAG, Salford Fortran and DEC for their support. Special thanks to Steve Lionel at DEC and Tim Bartle at Salford for the opportunity to take part in the beta testing of the Alpha compiler and the Salford Nag compiler respectively. The lessons to be learnt from moving programs between the three compilers were invaluable; * the people on comp. lang. fortran and the specialist Fortran 90 list.
Table of Contents
1 Overview.- 2 Introduction to Computer Systems.- 2.1 The components of a computer system.- 2.2 Software.- 2.3 Problems.- 2.4 Bibliography.- 3 Introduction to Operating Systems.- 3.1 History of Operating Systems.- 3.1.1 The 1940s.- 3.1.2 The 1950s.- 3.1.3 The 1960s.- 3.1.4 The 1960s and 1970s.- 3.1.5 The 1970s and 1980s.- 3.2 Networking.- 3.3 Problems.- 3.4 Bibliography.- 4 Introduction to Using a Computer System.- 4.1 Files.- 4.2 Editors.- 4.3 Stand Alone Systems.- 4.4 Networked Systems.- 4.5 Multi-User Systems.- 4.6 Other Useful Things to Know.- 4.7 Bibliography.- 5 Introduction to Problem Solving.- 5.1 Natural Language.- 5.2 Artificial Language.- 5.2.1 Notations.- 5.3 Resume.- 5.4 Algorithms.- 5.4.1 Top Down.- 5.4.2 Bottom up.- 5.4.3 Stepwise Refinement.- 5.5 Systems Analysis and Design.- 5.5.1 Problem Definition.- 5.5.2 Feasibility Study and Fact Finding.- 5.5.3 Analysis.- 5.5.4 Design.- 5.5.5 Detailed Design.- 5.5.6 Implementation.- 5.5.7 Evaluation and testing.- 5.5.8 Maintenance.- 5.6 Conclusions.- 5.7 Problems.- 5.8 Bibliography.- 6 Introduction to Programming Languages.- 6.1 Some Early Theoretical Work.- 6.2 What is a programming language.- 6.3 Program Language Development and Engineering.- 6.4 The Early Days.- 6.4.1 Fortran.- 6.4.2 Cobol.- 6.4.3 Algol.- 6.5 Chomsky and Program Language Development.- 6.6 Lisp.- 6.7 Snobol.- 6.8 Second Generation Languages.- 6.8.1 PL/1 and Algol 68.- 6.8.2 Simula.- 6.8.3 Pascal.- 6.8.4 APL.- 6.8.5 Basic.- 6.8.6 C.- 6.9 Some Other Strands in Language Development.- 6.9.1 Abstraction, Stepwise Refinement and Modules.- 6.9.2 Structured Programming.- 6.9.3 Standardisation.- 6.10 Ada.- 6.11 Modula.- 6.12 Modula.- 6.13 Other Language Developments.- 6.13.1 Logo.- 6.13.2 Postscript, TeX and LaTeX.- 6.13.3 Prolog.- 6.13.4 SQL.- 6.13.5 ICON.- 6.14 Object Orientated Programming - OOP.- 6.14.1 Oberon and Oberon.- 6.14.2 Smalltalk.- 6.14.3 C.- 6.15 Fortran.- 6.16 The Future and Further Sources.- 6.16.1 Fortran 1996.- 6.16.2 High Performance Fortran - HPF.- 6.16.3 Network Sources.- 6.17 Summary.- 6.18 Bibliography.- 7 Introduction to Programming.- 7.1 Elements of a programming language.- 7.2 Variables - name, type and value.- 7.3 Notes.- 7.4 Some more Fortran rules.- 7.5 Good Programming Guidelines.- 7.6 Fortran Character set.- 7.6.1 Notes.- 7.7 Problems.- 8 Introduction to Arithmetic.- 8.1 Rounding and truncation.- 8.2 Example 1: Time taken for light to travel from the Sun to Earth.- 8.3 The PARAMETER statement.- 8.4 Precision and size of numbers.- 8.5 Health Warning: Optional Reading, Beginners are Advised to Leave until Later.- 8.5.1 Selecting different INTEGER Kinds.- 8.5.2 Selecting different REAL Kinds.- 8.5.3 Specifying Kind Types for Literal Integer and Real Constants.- 8.5.4 Positional Number Systems.- 8.5.5 Bit Data Type and Representation Model.- 8.5.6 Integer Data Type and Representation Model.- 8.5.7 Real Data Type and Representation Model.- 8.5.8 IEEE 754.- 8.5.9 Example 2: Testing the numerical representation of different kind types on a system.- 8.5.10 Example 3: Binary Representation of Different Integer Kind Type Numbers.- 8.5.11 Summary of how to select the appropriate KIND type.- 8.6 Summary.- 8.7 Problems.- 8.8 Bibliography.- 9 Arrays 1: Some Fundamentals.- 9.1 Tables of data.- 9.1.1 Telephone directory.- 9.1.2 Book catalogue.- 9.1.3 Examination marks or results.- 9.1.4 Monthly rainfall.- 9.2 Arrays in Fortran.- 9.3 The DIMENSION Attribute.- 9.4 An index.- 9.5 Control structure.- 9.6 Monthly Rainfall.- 9.6.1 Example 1: Rainfall.- 9.7 People's Weights.- 9.7.1 Example 2: People's Weights.- 9.8 Summary.- 9.9 Problems.- 10 Arrays 2: Further Examples.- 10.1 Higher dimension arrays.- 10.1.1 Example 1: A Map.- 10.1.2 Example 2: Booking arrangements in a theatre or cinema.- 10.2 Additional forms of the DIMENSION attribute and DO loop statement.- 10.2.1 Example 3: Voltage from-20 to+20 volts.- 10.2.2 Example 4: Longitude from-180 to +180.- 10.2.3 Notes.- 10.3 The DO loop and straight repetition.- 10.3.1 Example 5: Table of Temperatures.- 10.3.2 Example 6: Means and Standard Deviations.- 10.4 Summary.- 10.5 Problems.- 11 Arrays 3: Further Examples.- 11.1 Terminology.- 11.1.1 Rank.- 11.1.2 Bounds.- 11.1.3 Extent.- 11.1.4 Size.- 11.1.5 Shape.- 11.1.6 Conformable.- 11.2 Whole array manipulation.- 11.2.1 Assignment.- 11.2.2 Expressions.- 11.3 Array Sections.- 11.3.1 Example 1: Ages.- 11.3.2 Example 2: Examination Results.- 11.4 Allocatable Arrays.- 11.4.1 Example 3: Height Above Sea Level.- 11.5 Array Element Ordering.- 11.5.1 Array Element Ordering and Physical and Virtual Memory.- 11.6 Array Constructors.- 11.7 Masked Array Assignment and the WHERE Statement.- 11.7.1 Notes.- 11.8 Summary.- 11.9 Problems.- 12 Output.- 12.1 Integers, I format.- 12.2 Reals, F format.- 12.3 Reals, E format.- 12.4 Spaces.- 12.5 Alphanumeric or character format, A.- 12.6 Common mistakes.- 12.7 OPEN (and CLOSE).- 12.7.1 The OPEN statement.- 12.7.2 Writing.- 12.8 Repetition.- 12.9 Some more examples.- 12.10 Implied DO loops.- 12.11 Formatting for a line-printer.- 12.11.1 Mechanics of carriage control.- 12.11.2 Generating a new line, on both line-printers and terminals.- 12.12 Summary.- 12.13 Problems.- 13 Reading in Data.- 13.1 Fixed fields on input.- 13.1.1 Integers, the I format.- 13.1.2 Reals, the F and E formats.- 13.2 Blanks, nulls and zeros.- 13.3 Characters.- 13.4 Skipping spaces and lines.- 13.5 Reading.- 13.6 File manipulation again.- 13.7 Errors when reading.- 13.8 Summary.- 13.9 Problems.- 14 Functions.- 14.1 An Introduction to Predefined Functions and Their Use.- 14.1.1 Example 1: Simple function usage.- 14.2 Generic Functions.- 14.2.1 Example 2: The ABS Generic function.- 14.3 Elemental Functions.- 14.3.1 Example 3: Elemental Function Use.- 14.4 Transformational Functions.- 14.4.1 Example 4: Simple Transformational Use.- 14.4.2 Example 5: Intrinsic DOT_PRODUCT use.- 14.5 Notes on Function Usage.- 14.6 Example 6: Easter.- 14.7 Complete List of Predefined Functions.- 14.7.1 Inquiry Functions.- 14.7.2 Transfer and Conversion Functions.- 14.7.3 Computational Functions.- 14.7.4 Array Functions.- 14.7.5 Pre-Defined Subroutines.- 14.8 Supplying your own functions.- 14.8.1 Example 7: Simple User Defined Function.- 14.9 An Introduction to the Scope of Variables and Local Variables.- 14.10 Recursive Functions.- 14.10.1 Example 8: Recursive Factorial Evaluation.- 14.11 Example 9: Recursive version of GCD.- 14.12 Example 10: After Removing Recursion.- 14.13 Internal functions.- 14.13.1 Example 11: Stirling's Approximation.- 14.14 Resume.- 14.15 Function Syntax.- 14.16 Rules and Restrictions.- 14.17 Problems.- 14.18 Bibliography.- 14.18.1 Recursion and Problem Solving.- 15 Control Structures.- 15.1 Selection between courses of action.- 15.1.1 The BLOCK IF statement.- 15.1.2 Example 1: Quadratic Roots.- 15.1.3 Note.- 15.1.4 Example 2: Date calculation.- 15.1.5 The CASE Statement.- 15.1.6 Example 3: Simple calculator.- 15.1.7 Example 4: Counting Vowels, Consonants, etc.- 15.2 The three forms of the DO statement.- 15.2.1 Example 5: Sentinel Usage.- 15.2.2 CYCLE and EXIT.- 15.2.3 Example 6: e**x Evaluation.- 15.2.4 Example 7: Wave Breaking on an Offshore Reef.- 15.3 Summary.- 15.4 Problems.- 15.5 Bibliography.- 16 Character.- 16.1 Character Input.- 16.2 Character Operators.- 16.3 Character Sub-Strings.- 16.4 Character functions.- 16.5 Summary.- 16.6 Problems.- 17 Complex.- 17.1 Example.- 17.2 Complex and Kind Type.- 17.3 Summary.- 17.4 Problems.- 18 Logical.- 18.1 I/O.- 18.2 Summary.- 18.3 Problems.- 19 User Defined Types.- 19.1 Example 1 - Dates.- 19.2 Type Definition.- 19.3 Variable Definition.- 19.4 Example 2 - Address lists.- 19.5 Example 3: Nested User Defined Types.- 19.6 Problems.- 19.7 Bibliography.- 20 Dynamic Data Structures.- 20.1 Example 1: Simple Pointer Concepts.- 20.2 Example 2: Singly linked list.- 20.3 Other Dynamic Data Structures.- 20.4 Trees.- 20.4.1 Example 3: Perfectly Balanced Tree.- 20.5 Using Linked Lists for Sparse Matrix Problems.- 20.5.1 Inner Product of two Sparse Vectors.- 20.6 Data Structures Summary.- 20.7 Problems.- 20.8 Bibliography.- 21 Files.- 21.1 Files in Fortran.- 21.2 Summary of options on OPEN.- 21.3 More fool proof i/o.- 21.4 Summary.- 21.5 Problems.- 22 An Introduction to Subroutines.- 22.1 Simple Subroutine Example.- 22.2 Defining a subroutine.- 22.3 Referencing a subroutine.- 22.4 Dummy Arguments or Parameters, and Actual Arguments.- 22.5 Interface.- 22.6 Intent.- 22.7 Local Variables.- 22.7.1 Local Variables and the SAVE attribute.- 22.8 Scope of Variables.- 22.9 Status of the Action Carried out in the Subroutine.- 22.10 Why Bother.- 22.11 Summary.- 22.12 Problems.- 23 Subroutines.- 23.1 Example 1: Introduction to Arrays as Parameters.- 23.1.1 Explicit Shape Dummy Arrays.- 23.2 Example 2: Characters as parameters and assumed length dummy arguments.- 23.3 Example 3: Using Hoare's Quick Sort Algorithm.- 23.3.1 Note 2 - Intent Attribute.- 23.3.2 Note 3 - Explicit shape dummy array.- 23.3.3 Note 4 - Assumed Length Dummy Argument.- 23.3.4 Note 5 - Recursive Subroutine.- 23.3.5 Note 6 - Internal Subroutines and Scope.- 23.3.6 Note 7 - Flexible Design.- 23.4 Example 4: Rank two and higher arrays as parameters.- 23.4.1 Assumed Shape Arrays.- 23.5 Summary.- 23.6 Problems.- 23.7 Bibliography.- 24 An Introduction to Modules.- 24.1 Modules for global data.- 24.1.1 Example 1: Modules for Precision Specification and Constant Definition.- 24.1.2 Note.- 24.1.3 Example 2: Constant Definition and Array Definition.- 24.2 Modules for derived data types.- 24.2.1 Example 3: Person Data Type.- 24.3 Modules for explicit procedures interfaces.- 24.3.1 Example: Using Quicksort.- 24.4 Modules containing procedures.- 24.5 Example 4 - The Solution of Linear Equations Using Gaussian Elimination.- 24.5.1 Notes.- 24.6 Notes on Module Usage and Compilation.- 24.7 Summary.- 24.8 Problems.- 24.9 Bibliography.- 25 Formal Syntax and Some Additional Features.- 25.1 Program Units.- 25.2 Procedure - Function or Subroutine.- 25.2.1 Internal Procedure.- 25.3 Module.- 25.4 Executable Statements.- 25.5 Statement Ordering.- 25.6 Entities.- 25.7 Scope and Association.- 25.8 Modules and Scope.- 25.8.1 Public and Private Attributes.- 25.8.2 USE, ONLY and Rename.- 25.9 Keyword and Optional Arguments.- 25.10 Syntax Summary of Some Frequently used Fortran Constructs.- 25.10.1 Main Program.- 25.10.2 Subprogram.- 25.10.3 Module.- 25.10.4 Internal Procedure.- 25.10.5 Procedure heading.- 25.10.6 Procedure ending.- 25.10.7 Specification construct.- 25.10.8 Derived Type definition.- 25.10.9 Interface block.- 25.10.10 Specification statement.- 25.10.11 Type specification.- 25.10.12 Attribute Specification.- 25.10.13 Executable construct.- 25.10.14 Action statement.- 26 Case Studies.- 26.1 Example 1 - Solving a System of First Order Ordinary Differential Equations using Runge-Kutta-Merson.- 26.1.1 Note: Alternative form of the Allocate statement.- 26.1.2 Note: Automatic arrays.- 26.1.3 Note: Dummy Procedure Arguments.- 26.2 Example 2 - Generic Procedures.- 26.3 Example 3 - A Function that returns a variable length array.- 26.4 Example 4 - Operator and Assignment Overloading.- 26.5 Example 5: A Subroutine to Extract the Diagonal Elements of a Matrix.- 26.6 Modules and Packaging.- 26.7 Problems.- 26.8 Bibliography.- 27 Converting from Fortran 77.- 27.1 Deleted Features.- 27.2 Obsolescent Features.- 27.2.1 Arithmetic IF.- 27.2.2 Real and Double precision DO Control Variables.- 27.2.3 Shared DO termination and non ENDDO termination.- 27.2.4 Alternate RETURN.- 27.2.5 PAUSE Statement.- 27.2.6 ASSIGN and assigned GOTO statements.- 27.2.7 Assigned FORMAT statements.- 27.2.8 H Editing.- 27.3 Better Alternatives.- 28 Miscellanea.- 28.1 Program Development and Software Engineering.- 28.1.1 Modules.- 28.1.2 Programming Style - Programs should be Easy to Read.- 28.1.3 Programming Style - Programs should Behave Well.- 28.2 Data Structures.- 28.3 Algorithms.- 28.4 Recursion.- 28.5 Structured Programming and the GOTO Statement.- 28.6 Efficiency, space time trade off.- 28.7 Program Testing.- 28.8 Simple Debugging Techniques.- 28.9 Software Tools.- 28.9.1 Cross Referencing.- 28.9.2 Pretty print.- 28.9.3 NAGWare f90 Tools.- 28.10 Numerical Software Sources.- 28.11 Coda.- 28.12 Bibliography: All sources (bar one) taken from comp.software-eng.- 28.12.1 Software Engineering.- 28.12.2 Programming Style.- 28.12.3 Software Testing.- 28.12.4 Fun.- Appendix A, Sample Program Examples.- Appendix B, ASCII Character Set.- Appendix C, Intrinsic Functions and Procedures.- Appendix D, English and Latin Texts.- Appendix E, Coded Text Extracts.- Appendix F, NAG.- Appendix G, Annex D, ISO/IEC 1539: 1991 (E).
by "Nielsen BookData"