Table of Contents for

M.B. Feldman and E.B. Koffman, Ada 95 Problem Solving and Program Design, 3rd edition. 

Copyright 1999, Addison-Wesley Publishing Company
ISBN 0-201-36123-X (textbook includes multiplatform CD-ROM).

Publisher's information on this text is available from the Addison-Wesley web page.


1. Introduction to Computers and Programming
1.1 Electronic Computers Then and Now
1.2 Hardware Components of a Computer
1.3 Computer Software
1.4 Problem Solving and Programming
1.5 The Software Development Method
  CASE STUDY Changing a Flat Tire
1.6 Programming Languages
1.7 About Ada
1.8 Processing a High-Level Language Program
1.9 A Step-by-Step Compilation Exercise
1.10 Tricks of the Trade: Common Programming Errors

2. Introducing Algorithms: Adventures of the Spider
2.1 Introducing the Spider
2.2 Straight-Line Algorithms
2.3 Algorithms with Single Loops
2.4 Algorithms with Nested Loops
2.5 Algorithms with Conditional Execution
2.6 Putting It All Together: The Drunken Spider

3. Introduction to Straight-Line Programs
3.1 The General Structure of Ada Programs
3.2 System Structures: Numerical Input and Output
3.3 Data Structures: Declaring Constant and Variable Objects
3.4 System Structures: General Form of an Ada Program
3.5 Problem Solving: Software Development Illustrated
  CASE STUDY Converting Units of Measurement
3.6 Control Structures: Assignment Statements
3.7 Control Structures: Input/Output Statements
3.8 Data Structures: Introduction to Data Types and Expressions
  CASE STUDY Finding the Value of a Coin Collection
3.9 Tricks of the Trade: Common Programming Errors

4. Problem Solving and Using Packages
4.1 Data Structures: Introduction to Subtypes
4.2 Problem Solving: Building Programs from Existing Information
  CASE STUDY Finding Area and Circumference of a Circle
4.3 Problem Solving: Extending a Problem Solution
  CASE STUDY Unit Price of a Pizza
4.4 Data Structures: Introducing Enumeration Types
  CASE STUDY Translating from English to French Color Names
4.5 System Structures: The Importance of Packages
4.6 System Structures: Using Ada's Calendar Package
  CASE STUDY Displaying Today's Date in "mm/dd/yyyy" Form
  CASE STUDY Displaying Today's Date in "MONTH dd, yyyy" Form
4.7 System Structures: Using a Screen-Control Package
4.8 Tricks of the Trade: Common Programming Errors

5. Decision Statements; Writing Functions and Packages
5.1 Control Structures: Boolean Expressions and the IF Statement
  CASE STUDY Given Today, Find Yesterday and Tomorrow
5.2 Problem Solving: Decision Steps in Algorithms
  CASE STUDY Finding the Alphabetically First Letter
5.3 Tricks of the Trade: Tracing a Program or Algorithm
5.4 Problem Solving: Extending a Solution
  CASE STUDY Payroll Problem
  CASE STUDY Computing Overtime Pay
5.5 Control Structures: The Multiple-Alternative IF Statement
5.6 System Structures: Using Ada's Math Library
5.7 System Structures: Writing Functions
5.8 System Structures: Writing a Package
  CASE STUDY Finding the Largest and Smallest of Three Numbers
5.9 Tricks of the Trade: Common Programming Errors

6. Counting Loops; Subtypes
6.1 Control Structures: Counting Loops and the FOR Statement
  CASE STUDY Sum of Integers
6.2 Problem Solving: Generalizing a Solution
  CASE STUDY General Sum Problem
  CASE STUDY Minimum, Maximum, and Average of a List of Numbers
6.3 Problem Solving: Using an External File for Input Data
6.4 Problem Solving: Repeating a Program Body
  CASE STUDY Multiple-Employee Payroll Problem
6.5 Control Structures: Nested Loops
6.6 Data Structures' More on Subtypes
6.7 Tricks of the Trade: Debugging and Regression Testing
6.8 System Structures: Overloading and the Useful Functions Package
6.9 System Structures: Introduction to Exception Handling
6.10 Tricks of the Trade: Common Programming Errors

7. Other Loop Forms; Procedures; Exception Handling
7.1 Control Structures: The General LOOP and EXIT Statements
  CASE STUDY The Water Balloon Drop
7.2 Problem Solving: Loop Design
7.3 Control Structures: the WHILE Statement
7.4 System Structures: Robust Exception Handling
  CASE STUDY Robust Menu-Driven Command Interpreter
7.5 System Structures: Writing Procedures
7.6 System Structures: A Package for Robust Input
7.7 Tricks of the Trade: Testing with Exception Handling
7.8 Tricks of the Trade: Programs That Never Halt
7.9 Tricks of the Trade: Common Programming Errors
7.10 Continuing Saga: A Child Package for the Spider

8. Scalar Data Types; the CASE Statement
8.1 Data Structures: Numeric Data Types
8.2 System Structures: More on Ada.Numerics; the USE Clause
  CASE STUDY APPROXIMATING THE VALUE OF e
8.3 System Structures: More on Ada.Numerics: Random Numbers
8.4 Data Structures: The Boolean Type
  CASE STUDY Testing Whether a Number Is Prime
8.5 Data Structures: The Character Type
8.6 Control Structures: The CASE Statement
8.7 Continuing Saga: Inside the Spider Package
8.8 Tricks of the Trade: Common Programming Errors
9 Composite Types: Records and Arrays
9.1 Data Structures: Record Types
9.2 Control Structures: Records as Subprogram Parameters
9.3 System Structures: A Package for Calendar Dates
9.4 Data Structures: Hierarchical Records
9.5 Data Structures: Array Types
9.6 Problem Solving: Selecting Array Elements for Processing
9.7 Problem Solving: Using Arrays
9.8 Problem Solving: Reading Part of an Array
9.9 Data Structures: Interesting Array Examples
9.10 Problem Solving: Searching and Sorting an Array
  CASE STUDY Sorting an Array of Records
9.11 Tricks of the Trade: Common Programming Errors

10. Strings and Files
10.1 Data Structures: The String Data Type
  CASE STUDY Generating Cryptograms
10.2 System Structures: Ada 95 Character and String Packages
10.3 System Structures: A Systematic View of Text Files
10.4 Problem Solving: Operating System Redirection of Standard Files
  CASE STUDY A Histogram-Plotting Program
10.5 Problem Solving: Getting Input Values from a String
10.6 Problem Solving: Reading Command Parameters
  CASE STUDY Lengths of Lines in a Text File
10.7 Tricks of the Trade: Common Programming Errors

11. Programming with Objects: Abstract Data Types
11.1 System Structures: Abstract Data Types (ADTs)
11.2 System Structures: the ADT Package Ada.Calendar
  CASE STUDY World Times
11.3 System Structures: Writing an ADT for Calendar Dates
11.4 System Structures: Writing an ADT for Money Quantities
11.5 System Structures: Using an ADT to Create a Mini-Data Base
  CASE STUDY Employee Inquiry System
11.6 Continuing Saga: Writing an ADT for Multiple Spiders
11.7 Tricks of the Trade: Common Programming Errors

12. Introduction to Unconstrained Array Types and Generics
12.1 Data Structures: Unconstrained Array Types
12.2 Problem Solving: a General Sorting Program
  CASE STUDY Software Support "HotLine"
12.3 System Structures: Generic Units
12.4 Problem Solving: A Generic Sorting Program
12.5 System Structures: a Generic Sets Package
12.6 Tricks of the Trade: Common Programming Errors

13. Multidimensional Arrays and Variant Records
13.1 Data Structures: Multidimensional Arrays
13.2 Problem Solving: Using Multidimensional Arrays
13.3 Data Structures: Variant Records
13.4 System Structures: Geometric Figures
13.5 Continuing Saga: Keeping Track of Multiple Spiders
13.6 Tricks of the Trade: Common Programming Errors

14. Recursion
14.1 Problem Solving: The Nature of Recursion
14.2 Tricks of the Trade: Tracing a Recursive Function
14.3 Problem Solving: Recursive Mathematical Functions
14.4 Problem Solving: More Recursive Programs
  CASE STUDY Printing an Array Backward
  CASE STUDY Displaying an Array in Normal Order
  CASE STUDY Discovering Whether a String is a Palindrome
14.5 Problem Solving: More Case Studies in Recursion
  CASE STUDY Towers of Hanoi
  CASE STUDY Picture Processing with Recursion
14.6 Problem Solving: Recursive Searching
  CASE STUDY Recursive Binary Search
14.7 Tricks of the Trade: Debugging Recursive Subprograms

15. Access Types and Dynamic Data Structures
15.1 Data Structures: Access Types and the NEW Operator
15.2 Data Structures: Linked Lists and Their Operations
15.3 Data Structures: Linked Lists with Head and Tail Pointers
15.4 Problem Solving: Ordered Insertions in Linked Lists
15.5 System Structures: a Generic Version of the Linked List Package
15.6 Problem Solving: Stacks and Queues
  CASE STUDY Checking for Balanced Parentheses
15.7 Tricks of the Trade: Debugging Programs with Linked Lists

16. Programming with Objects: Tagged Record Types
16.1 System Structures: Object-Oriented Programming
16.2 System Structures: Tagged Types
16.3 Data Structures: General Access Types
16.4 System Structures: Class-Wide Types
16.5 System Structures: Dynamic Dispatching
16.6 Heterogeneous Linked Lists

17. Introduction to Concurrent Programming
17.1 Problem Solving: What is Concurrent Programming?
17.2 System Structures: Task Types and Task Objects
17.3 System Structures: Protected Types and Protected Objects
17.4 Continuing Saga: Multiple Concurrent Spiders

Appendix A: High-Resolution Color Graphics
A. 1 AdaGraph: a Basic High-Resolution Graphics Package
A.2 Using AdaGraph Operations
A.3 A High-Resolution Color Spider Package
A.4 Using the High-Resolution Spider Package

Appendix B: The Ada Character Set, Delimiters, and Reserved Words
B.1 The Ada Character Set
B.2 Delimiters
B.3 Reserved Words

Appendix C: Ada's Predefined Environment: Package Standard

Appendix D: Specification of the Package Ada.Text_IO

Appendix E: Specifications of the Ada Math Libraries

Appendix F: Summary of Ada Execution-Time Exceptions
F.1 Exceptions Defined in the Language
F.2 Exception Defined in Ada.Calendar
F.3 Exception Defined in Ada.Numerics
F.4 Exceptions Defined in Ada.Text_IO

Appendix G: The Ada 95 Educational Resources CD-ROM

Index of Syntax Displays

Index of Style Displays

Index of Example Programs

General Index