ege uide to fortran 2003 programming

361 688 0
ege uide to fortran 2003 programming

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

EE EGuide to Fortran 2003 Programming Guide to Fortran 2003 Programming Walter S. Brainerd Walter S. Brainerd Fortran Company 6025 N. Wilmot Road USA ISBN 978-1-84882-542-0 e-ISBN 978-1-84882-543-7 DOI 10.1007/978-1-84882-543-7 Springer Dordrecht Heidelberg London New York A catalogue record for this book is available from the British Library Library of Congress Control Number: 2009926289 Copyright © Walter S. Brainerd 2009. Published by Springer-Verlag London Ltd. 2009. All Rights Reserverd. stored or transmitted, in any form or by any means, with the prior permission in writing of the publishers, or in the case of reprographic reproduction in accordance with the terms of licenses issued by the Copyright Licensing Agency. Enquiries concerning reproduction outside those terms should be sent to the publishers. The use of registered names, trademarks, etc., in this publication does not imply, even in the absence of a specific statement, that such names are exempt from the relevant laws and regulations and therefore free for general use. The publisher makes no representation, express or implied, with regard to the accuracy of the information contained in this book and cannot accept any legal responsibility or liability for any errors or omissions that may be made. Printed on acid-free paper Springer is part of Springer Science+Business Media (www.springer.com) British Library Cataloguing in Publication Data Tucson AZ 85750 Apart from any fair dealing for the purposes of research or private study, or criticism or review, as permitted under the Copyright, Designs and Patents Act. 1988, this publication may only be reproduced, Cover design: KuenkelLopka GmbH walt@fortran.com Preface Fortran has been the premier language for scientific computing since its introduction in 1957. Fortran originally was designed to allow programmers to evaluate formu- las—FORmula TRANslation—easily on large computers. Fortran compilers are now available on all sizes of machines, from small desktop computers to huge multiproces- sors. The Guide to Fortran 2003 Programming is an informal, tutorial introduction to the most important features of Fortran 2003 (also known as Fortran 03), the latest standard version of Fortran. Fortran has many modern features that will assist the programmer in writing efficient, portable, and maintainable programs that are useful for everything from “hard science” to text processing. Target Audience This book is intended for anyone who wants to learn Fortran 03, including those famil- iar with programming language concepts but unfamiliar with Fortran. Experienced Fortran 95 programmers will be able to use this volume to assimilate quickly those fea- tures in Fortran 03 that are not in Fortran 95 (Fortran 03 contains all of the features of Fortran 95). This guide is not a complete reference work for the entire Fortran lan- guage; it covers the basic features needed to be a good Fortran programmer and an in- troduction to the important new features of Fortran 03. Many older error-prone features have been omitted and some of the more esoteric features that are new to For- tran 03 also are not discussed. To understand some of the features used in old Fortran programs, other sources should be consulted after learning the best basic collection of features for writing new codes or enhancing old ones. Guide to Fortran 2003 Programming is organized so that it may be read from begin- ning to end, but it also is organized so that particular topics may be studied by reading some chapters before previous ones are mastered. To a reasonable extent, all the mate- rial about one topic is presented together, making the book suitable as a reference work, as well as a tutorial. Examples and Case Studies Most of the important features of the Fortran programming language are covered with examples, beginning with the simplest constructs. The book concentrates to some ex- tent on the newer features of the Fortran 03 programming language, because they often provide the best facilities to accomplish a particular programming task. Both the style of the many example programs and the selection of topics discussed in detail guide the vi Preface reader toward acquiring programming skills to produce Fortran programs that are readable, maintainable, and efficient. Case studies are used to illustrate the practical use of features of Fortran 03 and to show how complete programs are put together. There are also simple problems to en- able the reader to exercise knowledge of the topics learned. Style of the Programming Examples To illustrate the author’s opinion of good Fortran programming style, the program- ming examples do not illustrate the wide variety of styles that might be used. There are certainly many other good programming styles, but it is important to use a style con- sistently within a programming project. The style notes also reflect opinions of the au- thor and reflect but one possible good style to use. Most of the program examples have been run on either the Numerical Algorithms Group NAGWare Fortran 03 compiler ( nag.com) or the free g95 compiler (g95.org). Organization of the Content An unusual feature of the book is that the first chapter contains a complete discussion of all the basic features needed to write complete Fortran programs: the form of For- tran programs, data types, simple expressions and assignment, and simple input and output. Subsequent chapters contain detailed discussions of control constructs, mod- ules, procedures, arrays, character strings, data structures and derived types, pointer variables, and object-oriented programming. Module-oriented programming is a very important part of Fortran programming and the topic of modules is introduced earlier to provide the framework for organizing data and procedures for a Fortran program. From the beginning, Fortran has had extensive facilities for input and output; how- ever, this is a topic that is not explored fully in many books because it is a little more difficult than other features and perhaps just not as interesting as some features. The use of these facilities is very important in production programs, so this book contains, in Chapter 11, an extensive discussion of the excellent input/output facilities in Fortran. Appendix A lists the many intrinsic procedures. Appendix B provides a brief infor- mal syntax specification for the language. There still will be occasions when more details about the language must be learned. In these cases it will be necessary to consult the official standard, published by the International Standards Organization or the reference work The Fortran 2003 Hand- book, by Adams, Brainerd, Hendrickson, Maine, Martin, and Smith, Springer, 2009. Many suggestions made by Brian Smith improved the book significantly. Tucson, Arizona, USA Walter S. Brainerd Contents 1 Introduction to Programming in Fortran 1 1.1 Programs that Calculate and Print 1 1.2 Intrinsic Data Types 4 1.3 Variables and Input 11 1.4 The Form of a Fortran Program 18 1.5 Some Intrinsic Functions 20 1.6 Expressions and Assignment 24 1.7 Introduction to Formatting 28 1.8 Case Study: Quadratic Formula 33 1.9 Case Study: Debugging Pendulum Calculations 41 2 Control Constructs 45 2.1 Statement Blocks 45 2.2 The if Construct 45 2.3 The case Construct 58 2.4 The do Construct 62 3 Modules and Procedures 77 3.1 Modules 77 3.2 Procedures 80 3.3 Subroutines 81 3.4 Putting Procedures in a Module 82 3.5 Arguments 84 3.6 Functions 86 viii Contents 3.7 Pure Procedures and Side Effects 89 3.8 Argument Passing 90 3.9 Using a Function in a Declaration Statement 95 3.10 The return Statement 96 3.11 Scope 96 3.12 The save Attribute 97 3.13 Case Study: Numerical Integration 97 3.14 Case Study: Calculating Probabilities 99 3.15 Recursion 102 3.16 Case Study: Adaptive Numerical Integration 109 4 Arrays 115 4.1 Declaring and Using Arrays 115 4.2 Searching a List 131 4.3 Sorting 139 4.4 Selecting 144 4.5 Case Study: Solving Linear Equations 147 4.6 Case Study: Calculating Probabilities 152 5 Character Data 155 5.1 Use of Character Data in Fortran Programs 155 5.2 Text Analysis 169 5.3 Case Study: Expression Evaluation 183 6 Structures and Derived Types 191 6.1 Structures 191 6.2 Derived Types 192 6.3 Declaring and Using Structures 195 7 IEEE Arithmetic and Exceptions 201 7.1 Numerical Representations 201 7.2 NaN and Inf 202 7.3 Exceptions 205 Contents ix 8 More about Procedures 207 8.1 Date and Time Subroutines 207 8.2 Command-Line Arguments 209 8.3 Generic Procedures 209 8.4 Elemental Procedures 212 8.5 More Array Intrinsic Procedures 214 8.6 Bit Intrinsic Procedures 216 8.7 Calling C Procedures 218 9 Extending Fortran 223 9.1 Extending Assignment 223 9.2 Extending Operators 225 9.3 User-Defined Operators 227 9.4 Extending Intrinsic Functions 227 9.5 Derived-Type Editing 229 9.6 Computing with Big Integers 231 10 Pointer Variables 245 10.1 The Use of Pointers in Fortran 245 10.2 Case Study: Solving a Heat Transfer Problem 252 10.3 Linked Lists 254 10.4 Trees 262 11 Input and Output 269 11.1 Records 270 11.2 Files 272 11.3 Data Transfer Statements 279 11.4 The open Statement 290 11.5 The close Statement 293 11.6 The inquire Statement 294 11.7 File Positioning Statements 299 11.8 Formatting 301 x Contents 12 Object-Oriented Programming 315 12.1 Extended Data Types 315 12.2 Polymorphism 317 12.3 Type-Bound Procedures 318 12.4 Case Study: Traffic Queues 319 A Intrinsic Procedures 327 A.1 Intrinsic Functions 327 A.2 Elemental Intrinsic Procedures 327 A.3 Positional Arguments or Argument Keywords 328 A.4 Argument Presence Inquiry Function 328 A.5 Numeric, Mathematical, Character, and Logical Procedures 328 A.6 Numeric Manipulation and Inquiry Functions 331 A.7 Bit Manipulation and Inquiry Procedures 332 A.8 Array Intrinsic Functions 333 A.9 Pointer Nullify and Association Status Inquiry Functions 336 A.10 Type Extension Inquiry Functions 336 A.11 Date and Time Subroutines 336 A.12 Pseudorandom Numbers 337 A.13 Transfer Procedures 337 A.14 Testing Input/Output Status 337 A.15 Command Line Manipulation 337 B Fortran Language Forms 339 347 Index Introduction to Programming in Fortran 1 The best way to learn a programming language is to start reading and writing pro- grams immediately. If a computer is available, we encourage you to write and run pro- grams modeled on the simple programs in this chapter. In addition to this book, you will need a short set of directions to show you how to enter and run a program at your local installation. This chapter covers the basic features of Fortran needed to perform simple calcula- tions and print their results. Two case studies illustrate these features and provide some insight into the debugging process. 1.1 Programs that Calculate and Print Since computers are very good at arithmetic and Fortran is designed to be very good at expressing numerical computations, one reasonable thing to learn first about Fortran is how to tell a computer to do the sort of arithmetic that otherwise might be done by hand or with the aid of a hand calculator. This section describes how to write programs to calculate and to print the answer. Simple Calculations The first example is a program that prints the result of an addition. program calculation_1 print *, 84 + 13 end program calculation_1 The program calculation_1 tells the computer to add the numbers 84 and 13 and then to print the computed sum, 97. When the computer is told to run calculation_1, it does precisely that: It adds the two numbers and prints their sum. The execution out- put will look something like this. 97 W. S. Brainerd, Guide to Fortran 2003 Programming, Copyright © Walter S. Brainerd 2009. Published by Springer-Verlag London Ltd. 2009. All Rights Reserved 1 [...]... necessary to convert an integer to a real to avoid an integer division or when the type of a procedure actual argument must match the type of a dummy argument For example, if a variable total holds the sum of a bunch of integer test scores and it is necessary to divide by the integer variable number_of_scores to find the average, one or both must be converted to type real 22 Chapter 1 Introduction to Programming. .. Introduction to Programming in Fortran -23 / 2 23 / (-2) is −11 Relational Operators Numeric (and character) values may be compared with relational operators The form of each relational operator is given in Table 1-1 Complex values may be compared Table 1-1 The relational operators Fortran form Meaning < Less than = Greater than or equal to > Greater... type integer, involving two integer operands, 84 and 13, and the arithmetic operator + The following subsections discuss each of the five intrinsic types and the way that constants of those types are written in Fortran Integer Type The integer type is used to represent values that are whole numbers In Fortran, integer constants are written much like they are written in ordinary usage An integer constant... when they are different, one is converted to the type of the other prior to executing the operation If one is type integer and the other is type real, the integer is converted to a real value; if one is type integer and the other is type complex, the integer is converted to a complex value; if one is type real and the other is type complex, the real is converted to a complex value As an example, the value... input The numbers to be added do not appear in the program itself Instead, two integer variables x and y are reserved to hold the two values supplied as input Because Fortran statements can operate on variables as 12 Chapter 1 Introduction to Programming in Fortran well as constants, their sum can be calculated and printed The first sample run shows how this new program could be used to find the sum... Style note: It is good programming practice to declare quantities to be parameters whenever possible Assigning a constant value to a parameter tells the reader of the program that the value corresponding to that name will never 1.2 Intrinsic Data Types 9 change when the program is running It also allows the computer to provide a diagnostic message if the programmer inadvertently tries to change its value... Greater than only with the relational operators == (equal) and /= (not equal) However, due to roundoff error, in most cases it is not appropriate to compare either real or complex values using either the == or the /= operator In such cases, it is better to test for approximate equality instead For example, it is possible to check that x is approximately equal to y with the expression abs(x - y) < 1.0e-5... integer :: x, y that declares the type of the variables x and y Variable names are subject to the same rules as parameter names Corresponding to the integer, real, complex, logical, and character constants introduced in 1.2, there are integer, real, complex, logical, and character variables For example, if the variables q, t, and k are to be real variables in a program and the variables n and b are to. .. underscore and a kind parameter The operators that may be used to combine logical values are not., and., or., eqv., and neqv They are all binary operators except the unary operator not The value resulting from the application of each logical operator is given in Table 1-2 To give one simple example, the value of false .eqv .false is true Table 1-2 Values of the logical operators x1 x2 not x1 x1 or x2 x1 and... requires conversion from real to integer, use the intrinsic type conversion functions even if they are not required The numeric type conversion functions also may be used to convert from one kind to another within the same data type or to specify the kind parameter of the result of conversion between data types For example, int(x, kind=short) converts the real value x to an integer with kind parameter short . EE EGuide to Fortran 2003 Programming Guide to Fortran 2003 Programming Walter S. Brainerd Walter S. Brainerd Fortran Company 6025 N. Wilmot Road USA ISBN. computers. Fortran compilers are now available on all sizes of machines, from small desktop computers to huge multiproces- sors. The Guide to Fortran 2003 Programming is an informal, tutorial introduction. Brainerd, Guide to Fortran 2003 Programming, Copyright © Walter S. Brainerd 2009. Published by Springer-Verlag London Ltd. 2009. All Rights Reserved 1 2 Chapter 1 Introduction to Programming in Fortran Editing,

Ngày đăng: 24/10/2014, 20:49

Từ khóa liên quan

Mục lục

  • Copyright

  • Preface

  • Contents

  • 1. Introduction to Programming in Fortran

    • 1.1 Programs that Calculate and Print

      • Simple Calculations

      • Editing, Compiling, and Running a Program

      • Default Print Format

      • Printing Messages

      • The Statement

      • Exercises

      • 1.2 Intrinsic Data Types

        • Integer Type

        • Real Type

        • Complex Type

        • Arithmetic Operators

        • Relational Operators

        • Mixed-Mode Expressions

        • Logical Type

        • Character Type

        • Parameters/Named Constants

        • Rules for Names

        • Kind Parameters

Tài liệu cùng người dùng

  • Đang cập nhật ...

Tài liệu liên quan