A first course in computational physics and object-oriented programming with C++
By: David Yevick.
Publisher: Cambridge University Press
Published: 2005
Place of publication: Cambridge; New York
Language: eng
Number of pages: 403
Subjects: C++ (Computer program language); Object-oriented programming (Computer science); Numerical analysis -- Data processing; Science -- Data processing
Other titles: Computational physics and object-oriented programming with C++
Notes: Includes bibliographical references (p. 393-397) and index.
Accompanied by a CD-ROM containing a full set of free programming and scientific graphics tools, plus the more complex sample programs given in the text.
Table of contents: label: Part I
title: C++ Programming Basics
pagenum: 1; title: Introduction
pagenum: 3; label: 1.1
title: Objective
pagenum: 3; label: 1.2
title: Presentation
pagenum: 3; label: 1.3
title: Why C++
pagenum: 4; label: 1.4
title: C++ Standards
pagenum: 6; label: 1.5
title: Summary
pagenum: 7; label: 1.6
title: How to Use This Text
pagenum: 7; label: 1.7
title: Additional Study Aids
pagenum: 8; label: 1.8
title: Additional and Alternative Software Packages
pagenum: 8; label: 2
title: Installing and Running the Dev-C++ Programming Environment
pagenum: 10; label: 2.1
title: Compiling and Running a First Program
pagenum: 10; label: 2.2
title: Using the Dev-C++ Debugger
pagenum: 12; label: 2.3
title: Installing DISLIN and GSL
pagenum: 13; label: 2.4
title: A First Graphics Program
pagenum: 14; label: 2.5
title: The Help System
pagenum: 15; label: 2.6
title: Linux Alternatives
pagenum: 16; label: 2.7
title: Assignment
pagenum: 16; label: 3
title: Introduction to Computer and Software Architecture
pagenum: 17; label: 3.1
title: Computational Methods
pagenum: 17; label: 3.2
title: Hardware Architecture
pagenum: 18; label: 3.3
title: Software Architecture
pagenum: 20; label: 3.4
title: The Operating System and Application Software
pagenum: 23; label: 3.5
title: Assignments
pagenum: 23; label: 4
title: Fundamental Concepts
pagenum: 25; label: 4.1
title: Overview of Program Structure
pagenum: 25; label: 4.2
title: Tokens, Names, and Keywords
pagenum: 25; label: 4.3
title: Expressions and Statements
pagenum: 26; label: 4.4
title: Constants, Variables, and Identifiers
pagenum: 26; label: 4.5
title: Declarations, Definitions, and Scope
pagenum: 27; label: 4.6
title: Rvalues and Lvalues
pagenum: 28; label: 4.7
title: Block Structure
pagenum: 28; label: 4.8
title: The const Keyword
pagenum: 29; label: 4.9
title: Operators - Precedence and Associativity
pagenum: 30; label: 4.10
title: Formatting Conventions
pagenum: 31; label: 4.11
title: Comments
pagenum: 32; label: 4.12
title: Assignments
pagenum: 33; label: 5
title: Writing a First Program
pagenum: 37; label: 5.1
title: The main() Function
pagenum: 37; label: 5.2
title: Namespaces
pagenum: 37; label: 5.3
title: #include Statements
pagenum: 38; label: 5.4
title: Input and Output Streams
pagenum: 39; label: 5.5
title: File Streams
pagenum: 40; label: 5.6
title: Constant and Variable Types
pagenum: 41; label: 5.7
title: Casts
pagenum: 44; label: 5.8
title: Operators
pagenum: 45; label: 5.9
title: Control Flow
pagenum: 46; label: 5.10
title: Functions
pagenum: 47; label: 5.11
title: Arrays and Typedefs
pagenum: 47; label: 5.12
title: A First Look at Scientific Software Development
pagenum: 48; label: 5.13
title: Program Errors
pagenum: 51; label: 5.14
title: Numerical Errors with Floating-Point Types
pagenum: 53; label: 5.15
title: Assignments
pagenum: 55; label: 6
title: An Introduction to Object-Oriented Analysis
pagenum: 62; label: 6.1
title: Procedural Versus Object-Oriented Programming
pagenum: 62; label: 6.2
title: Problem Definition
pagenum: 65; label: 6.3
title: Requirements Specification
pagenum: 66; label: 6.4
title: UML Diagrams
pagenum: 66; label: 6.5
title: Use Case Diagram
pagenum: 67; label: 6.6
title: Classes and Objects
pagenum: 68; label: 6.7
title: Object Discovery
pagenum: 71; label: 6.8
title: Sequence and Collaboration Diagrams
pagenum: 72; label: 6.9
title: Aggregation and Association
pagenum: 74; label: 6.10
title: Inheritance
pagenum: 75; label: 6.11
title: Object-Oriented Programming Approaches
pagenum: 78; label: 6.12
title: Assignments
pagenum: 79; label: 7
title: C++ Object-Oriented Programming Syntax
pagenum: 83; label: 7.1
title: Class Declaration
pagenum: 83; label: 7.2
title: Class Definition and Member Functions
pagenum: 83; label: 7.3
title: Object Creation and Polymorphism
pagenum: 86; label: 7.4
title: Information Hiding
pagenum: 87; label: 7.5
title: Constructors
pagenum: 89; label: 7.6
title: Wrapping Legacy Code
pagenum: 91; label: 7.7
title: Inheritance
pagenum: 92; label: 7.8
title: The 'protected' Keyword
pagenum: 94; label: 7.9
title: Assignments
pagenum: 95; label: 8
title: Control Logic and Iteration
pagenum: 104; label: 8.1
title: The bool and enum Types
pagenum: 104; label: 8.2
title: Logical Operators
pagenum: 106; label: 8.3
title: if Statements and Implicit Blocks
pagenum: 107; label: 8.4
title: else, else if, Conditional and Switch Statements
pagenum: 108; label: 8.5
title: The exit() Function
pagenum: 109; label: 8.6
title: Conditional Compilation
pagenum: 109; label: 8.7
title: The for Statement
pagenum: 110; label: 8.8
title: while and do...while Statements
pagenum: 111; label: 8.9
title: The break and continue Statements
pagenum: 112; label: 8.10
title: Assignments
pagenum: 112; label: 9
title: Basic Function Properties
pagenum: 119; label: 9.1
title: Principles of Function Operation
pagenum: 119; label: 9.2
title: Function Declarations and Prototypes
pagenum: 121; label: 9.3
title: Overloading and Argument Conversion
pagenum: 121; label: 9.4
title: Built-in Functions and Header Files
pagenum: 122; label: 9.5
title: Program Libraries
pagenum: 124; label: 9.6
title: Function Preconditions and Postconditions - The assert Statement
pagenum: 128; label: 9.7
title: Multiple Return Statements
pagenum: 130; label: 9.8
title: Functions and Global Variables
pagenum: 130; label: 9.9
title: Use of const in Functions
pagenum: 131; label: 9.10
title: Default Parameters
pagenum: 132; label: 9.11
title: Inline Functions
pagenum: 132; label: 9.12
title: Modular Programming
pagenum: 133; label: 9.13
title: Recursive Functions
pagenum: 134; label: 9.14
title: Assignments
pagenum: 134; label: 10
title: Arrays and Matrices
pagenum: 140; label: 10.1
title: Data Structures and Arrays
pagenum: 140; label: 10.2
title: Array Definition and Initialization
pagenum: 141; label: 10.3
title: Array Manipulation and Memory Access
pagenum: 142; label: 10.4
title: Arrays as Function Parameters
pagenum: 144; label: 10.5
title: Returning Arrays and Object Arrays
pagenum: 145; label: 10.6
title: const Arrays
pagenum: 146; label: 10.7
title: Matrices
pagenum: 146; label: 10.8
title: Matrix Storage and Loop Order
pagenum: 147; label: 10.9
title: Matrices as Function Arguments
pagenum: 150; label: 10.10
title: Assignments
pagenum: 150; label: 11
title: Input and Output Streams
pagenum: 158; label: 11.1
title: The iostream Class and Stream Manipulators
pagenum: 158; label: 11.2
title: File Streams
pagenum: 161; label: 11.3
title: The String Class and String Streams
pagenum: 163; label: 11.4
title: The toString() Class Member
pagenum: 165; label: 11.5
title: The printf Function
pagenum: 167; label: 11.6
title: Assignments
pagenum: 167; label: Part II
title: Numerical Analysis
pagenum: 173; label: 12
title: Numerical Error Analysis - Derivatives
pagenum: 175; label: 12.1
title: The Derivative Operator
pagenum: 175; label: 12.2
title: Error Dependence
pagenum: 177; label: 12.3
title: Graphical Error Analysis
pagenum: 177; label: 12.4
title: Analytic Error Analysis - Higher-Order Methods
pagenum: 179; label: 12.5
title: Extrapolation
pagenum: 179; label: 12.6
title: The Derivative Calculator Class
pagenum: 180; label: 12.7
title: Assignments
pagenum: 182; label: 13
title: Integration
pagenum: 183; label: 13.1
title: Discretization Procedures
pagenum: 183; label: 13.2
title: Implementation
pagenum: 184; label: 13.3
title: Discretization Error
pagenum: 188; label: 13.4
title: Assignments
pagenum: 189; label: 14
title: Root-Finding Procedures
pagenum: 191; label: 14.1
title: Bisection Method
pagenum: 191; label: 14.2
title: Newton's Method
pagenum: 193; label: 14.3
title: Assignments
pagenum: 194; label: 15
title: Differential Equations
pagenum: 196; label: 15.1
title: Euler's Method
pagenum: 196; label: 15.2
title: Error Analysis
pagenum: 198; label: 15.3
title: The Spring Class
pagenum: 199; label: 15.4
title: Assignments
pagenum: 201; label: 16
title: Linear Algebra
pagenum: 203; label: 16.1
title: Linear Equation Solvers
pagenum: 203; label: 16.2
title: Errors and Condition Numbers
pagenum: 206; label: 16.3
title: Eigenvalues and Iterative Eigenvalue Solvers
pagenum: 207; label: 16.4
title: Assignments
pagenum: 209; label: Part III
title: Advanced Object-Oriented Programming
pagenum: 215; label: 17
title: References
pagenum: 217; label: 17.1
title: Basic Properties
pagenum: 217; label: 17.2
title: References as Function Arguments
pagenum: 218; label: 17.3
title: Reference Member Variables
pagenum: 219; label: 17.4
title: const Reference Variables
pagenum: 220; label: 17.5
title: Reference Return Values
pagenum: 221; label: 17.6
title: Assignments
pagenum: 222; label: 18
title: Pointers and Dynamic Memory Allocation
pagenum: 227; label: 18.1
title: Introduction to Pointers
pagenum: 228; label: 18.2
title: Initializing Pointer Variables
pagenum: 228; label: 18.3
title: The Address-of and Dereferencing Operators
pagenum: 229; label: 18.4
title: Uninitialized Pointer Errors
pagenum: 230; label: 18.5
title: NULL and Void Pointers
pagenum: 230; label: 18.6
title: Dangling Pointers
pagenum: 231; label: 18.7
title: Pointers in Function Blocks
pagenum: 232; label: 18.8
title: The const Keyword and Pointers
pagenum: 232; label: 18.9
title: Pointer Arithmetic
pagenum: 234; label: 18.10
title: Pointers and Arrays
pagenum: 234; label: 18.11
title: Pointer Comparisons
pagenum: 234; label: 18.12
title: Pointers to Pointers and Matrices
pagenum: 235; label: 18.13
title: String Manipulation
pagenum: 235; label: 18.14
title: Static and Dynamic Memory Allocation
pagenum: 237; label: 18.15
title: Memory Leaks and Dangling Pointers
pagenum: 239; label: 18.16
title: Dynamic Memory Allocation within Functions
pagenum: 241; label: 18.17
title: Dynamically Allocated Matrices
pagenum: 242; label: 18.18
title: Dynamically Allocated Matrices as Function Arguments and Parameters
pagenum: 243; label: 18.19
title: Pointer Data Structures and Linked Lists
pagenum: 244; label: 18.20
title: Assignments
pagenum: 248; label: 19
title: Advanced Memory Management
pagenum: 261; label: 19.1
title: The this Pointer
pagenum: 261; label: 19.2
title: The Friend Keyword
pagenum: 262; label: 19.3
title: Operators
pagenum: 263; label: 19.4
title: Destructors
pagenum: 265; label: 19.5
title: Assignment Operators
pagenum: 267; label: 19.6
title: Copy Constructors
pagenum: 269; label: 19.7
title: Assignments
pagenum: 270; label: 20
title: The static Keyword, Multiple and Virtual Inheritance, Templates, and the STL Library
pagenum: 286; label: 20.1
title: Static Variables
pagenum: 286; label: 20.2
title: Static Class Members
pagenum: 287; label: 20.3
title: Pointer to Class Members
pagenum: 288; label: 20.4
title: Multiple Inheritance
pagenum: 288; label: 20.5
title: Virtual Functions
pagenum: 289; label: 20.6
title: Heterogeneous Object Collections and Runtime Type Identification
pagenum: 291; label: 20.7
title: Abstract Base Classes and Interfaces
pagenum: 292; label: 20.8
title: Virtual Inheritance
pagenum: 293; label: 20.9
title: User-defined Conversions
pagenum: 294; label: 20.10
title: Function Templates
pagenum: 295; label: 20.11
title: Templates and Classes
pagenum: 296; label: 20.12
title: The Complex Class
pagenum: 298; label: 20.13
title: The Standard Template Library
pagenum: 299; label: 20.14
title: Structures and Unions
pagenum: 303; label: 20.15
title: Bit Fields and Operators
pagenum: 305; label: 20.16
title: Assignments
pagenum: 306; label: 21
title: Program Optimization in C++
pagenum: 319; label: 21.1
title: Compiling
pagenum: 319; label: 21.2
title: Critical Code Segments
pagenum: 319; label: 21.3
title: Virtual Functions
pagenum: 321; label: 21.4
title: Function Pointers and Functors
pagenum: 326; label: 21.5
title: Aliasing
pagenum: 327; label: 21.6
title: High-Performance Template Libraries
pagenum: 327; label: 21.7
title: Assignments
pagenum: 329; label: Part IV
title: Scientific Programming Examples
pagenum: 331; label: 22
title: Monte Carlo Methods
pagenum: 333; label: 22.1
title: Monte Carlo Integration
pagenum: 333; label: 22.2
title: Monte Carlo Evaluation of Distribution Functions
pagenum: 334; label: 22.3
title: Importance Sampling
pagenum: 339; label: 22.4
title: The Metropolis Algorithm
pagenum: 343; label: 22.5
title: Multicanonical Methods
pagenum: 347; label: 22.6
title: Assignments
pagenum: 352; label: 23
title: Parabolic Partial Differential Equation Solvers
pagenum: 354; label: 23.1
title: Partial Differential Equations in Scientific Applications
pagenum: 354; label: 23.2
title: Direct Solution Methods
pagenum: 356; label: 23.3
title: The Crank-Nicholson Method
pagenum: 359; label: 23.4
title: Assignments
pagenum: 363; label: Appendix A
title: Overview of MATLAB
pagenum: 365; label: Appendix B
title: The Borland C++ Compiler
pagenum: 371; label: B.1
title: Borland C++ Installation
pagenum: 371; label: B.2
title: Compiling and Running a First Program
pagenum: 373; label: B.3
title: Installing the Optional Program Editor
pagenum: 375; label: B.4
title: Using the Borland Turbo Debugger
pagenum: 377; label: B.5
title: Installing DISLIN
pagenum: 378; label: B.6
title: A First Graphics Program
pagenum: 379; label: B.7
title: The Help System
pagenum: 380; label: Appendix C
title: The Linux/Windows Command-Line C++ Compiler and Profiler
pagenum: 381; label: Appendix D
title: Calling FORTRAN Programs from C++
pagenum: 384; label: Appendix E
title: C++ Coding Standard
pagenum: 387; label: E.1
title: Program Design Language
pagenum: 387; label: E.2
title: Comments
pagenum: 388; label: E.3
title: Layout
pagenum: 388; label: E.4
title: Continuation Lines
pagenum: 389; label: E.5
title: Constants and Literals
pagenum: 389; label: E.6
title: Variables and Definitions
pagenum: 389; label: E.7
title: Functions
pagenum: 390; label: E.8
title: Operators
pagenum: 390; label: E.9
title: Classes
pagenum: 390; label: E.10
title: Typedefs
pagenum: 391; label: E.11
title: Macros
pagenum: 391; label: E.12
title: Templates
pagenum: 391; label: E.13
title: Control Structures
pagenum: 391; title: References and Further Reading
pagenum: 393; title: Index
pagenum: 398