The first part emphasizes fundamentals of structured programming through study of a subset of Fortran 90/95. The subset is concise, well-defined, and is easy to learn.

The first chapter outlines some historical aspects of computing. The second introduces the concept of algorithms, flowcharts, and complete working programs illustrating basic elements including conditional statements. Subsequent chapters cover numeric data, expressions and assignments, free format input and output (READ and PRINT), formatted input and output (READ and WRITE), loops and conditional statements, statement grouping using simple DO-loops, structured loops including DO WHILE, declarations, arrays, debugging, string data concepts, subroutines, functions, and program structure (modules, interface blocks, contained and external procedures). In this flexible text, some later chapters can be covered earlier, or may be omitted at first reading. For example, the chapter on string handling may be covered earlier if it is desired to provide practice in this area before others. The sections on formatted input-output may be omitted, or covered later.

The importance of structured programming is stressed from the beginning. All of the example programs are enhanced by a uniformly-applied style of indenting both loops and conditionals.

The example programs can be run with Fortran 90 compilers including the Lahey ELF90 compiler.

The second part explores more Fortran 90/95 and contains a detailed exposition on important algorithms, some traditional, some new. For most of these topics, no prior or special knowledge is assumed. Popular sort algorithms are examined: the Bubble Sort, Shell Sort, Heap Sort, Quicksort, and Hash Sort. Various search algorithms are studied: linear, binary, hash, binary search tree. The chapter on recursion commences with some short examples, and culminates with Quicksort and algorithms for space-filling curves. Algorithms for solving linear equations including tri-diagonal and banded systems (Gauss, Gauss-Siedel), matrix inversion, roots of polynomials are covered in detail. Algorithms for performing Fourier Transforms are included. The significant string search algorithms studied include the Knuth-Morris-Pratt, Rabin-Karp, Boyer-Moore, and Baeza-Yates-Gonnet. Graphics algorithms for creating fractals and space-filling curves, for creating picture files (PCX and TIFF files), for reading a PCX file, and data compression and expansion, are provided. The adventurous will find that the large bibliography includes many works appropriate for further reading, study or research.

The second part is not just algorithms. Some additional Fortran 90/95 topics are included: separate theme chapters are devoted to complex arithmetic, file processing, list processing (the extensive chapter includes binary search trees), text processing including string searching, and recursion.

Chapters 10 to 21 can be studied in any order, as they are mostly independent. They can be selected at will according to the reader's interests.

The reader is expected to run as many of the exercises as possible on his/her computer (there are over 240 exercises) since practice is essential in developing programming expertise.

The book will be found helpful as a reference. Appendices contain a summary of Fortran 90/95 statements, the built-in procedures - many with detailed explanations and examples, and ASCII and EBCDIC reference tables. Comes with a floppy disc with the programs, subroutines, and functions from the book. ISBN 0-9596384-8-2

PART 1 - Introduction to Fortran

See a list of the main algorithms.

For further information, contact email: robin_v@bigpond.com

Copyright (c) 1997 by R. A. Vowels. All rights reserved.

Updated 25 December 1999