System requirements for accompanying computer disc: GNU ADA95 (GNAT) compilers and editors for several platforms: Windows, Macintosh, DOS, and Linux.
1. Introduction to Computers and Programming.
Electronic Computers Then and Now.
Hardware Components of a Computer.
Computer Software.
Problem Solving and Programming.
The Software Development Method.
CASE STUDY Changing a Flat Tire.
Programming Languages.
About Ada.
Processing a High-Level Language Program.
A Step-by-Step Compilation Exercise.
Tricks of the Trade: Common Programming Errors.
2. Introducing Algorithms: Adventures of the Spider.
Introducing the Spider.
Straight-Line Algorithms.
Algorithms with Single Loops.
Algorithms with Nested Loops.
Algorithms with Conditional Execution.
Putting It All Together: The Drunken Spider.
3. Introduction to Straight-Line Programs.
The General Structure of Ada Programs.
System Structures: Numerical Input and Output.
Data Structures: Declaring Constant and Variable Objects.
System Structures: General Form of an Ada Program.
Problem Solving: Software Development Illustrated.
CASE STUDY Converting Units of Measurement.
Control Structures: Assignment Statements.
Control Structures: Input/Output Statements.
Data Structures: Introduction to Data Types and Expressions.
CASE STUDY Finding the Value of a Coin Collection.
Tricks of the Trade: Common Programming Errors.
4. Problem Solving and Using Packages.
Data Structures: Introduction to Subtypes.
Problem Solving: Building Programs from Existing Information.
CASE STUDY Finding Area and Circumference of a Circle.
Problem Solving: Extending a Problem Solution.
CASE STUDY Unit Price of a Pizza.
Data Structures: Introducing Enumeration Types.
CASE STUDY Translating from English to French Color Names.
System Structures: The Importance of Packages.
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.
System Structures: Using a Screen-Control Package.
Tricks of the Trade: Common Programming Errors.
5. Decision Statements; Writing Functions and Packages.
Control Structures: Boolean Expressions and the IF Statement.
CASE STUDY Given Today, Find Yesterday and Tomorrow.
Problem Solving: Decision Steps in Algorithms.
CASE STUDY Finding the Alphabetically First Letter.
Tricks of the Trade: Tracing a Program or Algorithm.
Problem Solving: Extending a Solution.
CASE STUDY Payroll Problem.
CASE STUDY Computing Overtime Pay.
Control Structures: The Multiple-Alternative IF Statement.
System Structures: Using Ada's Math Library.
System Structures: Writing Functions.
System Structures: Writing a Package.
CASE STUDY Finding the Largest and Smallest of Three Numbers.
Tricks of the Trade: Common Programming Errors.
6. Counting Loops; Subtypes.
Control Structures: Counting Loops and the FOR Statement.
CASE STUDY Sum of Integers.
Problem Solving: Generalizing a Solution.
CASE STUDY General Sum Problem.
CASE STUDY Minimum, Maximum, and Average of a List of Numbers.
Problem Solving: Using an External File for Input Data.
Problem Solving: Repeating a Program Body.
CASE STUDY Multiple-Employee Payroll Problem.
Control Structures: Nested Loops.
Data Structures' More on Subtypes.
Tricks of the Trade: Debugging and Regression Testing.
System Structures: Overloading and the Useful Functions Package.
System Structures: Introduction to Exception Handling.
Tricks of the Trade: Common Programming Errors.
7. Other Loop Forms; Procedures; Exception Handling.
Control Structures: The General LOOP and EXIT Statements.
CASE STUDY The Water Balloon Drop.
Problem Solving: Loop Design.
Control Structures: the WHILE Statement.
System Structures: Robust Exception Handling.
CASE STUDY Robust Menu-Driven Command Interpreter.
System Structures: Writing Procedures.
System Structures: A Package for Robust Input.
Tricks of the Trade: Testing with Exception Handling.
Tricks of the Trade: Programs That Never Halt.
Tricks of the Trade: Common Programming Errors.
Continuing Saga: A Child Package for the Spider.
8. Scalar Data Types; the CASE Statement.
Data Structures: Numeric Data Types.
System Structures: More on Ada.Numerics; the USE Clause.
CASE STUDY APPROXIMATING THE VALUE OF e.
System Structures: More on Ada.Numerics: Random Numbers.
Data Structures: The Boolean Type.
CASE STUDY Testing Whether a Number Is Prime.
Data Structures: The Character Type.
Control Structures: The CASE Statement.
Continuing Saga: Inside the Spider Package.
Tricks of the Trade: Common Programming Errors.
9. Composite Types: Records and Arrays.
Data Structures: Record Types.
Control Structures: Records as Subprogram Parameters.
System Structures: A Package for Calendar Dates.
Data Structures: Hierarchical Records.
Data Structures: Array Types.
Problem Solving: Selecting Array Elements for Processing.
Problem Solving: Using Arrays.
Problem Solving: Reading Part of an Array.
Data Structures: Interesting Array Examples.
Problem Solving: Searching and Sorting an Array.
CASE STUDY Sorting an Array of Records.
Tricks of the Trade: Common Programming Errors.
10. Strings and Files.
Data Structures: The String Data Type.
CASE STUDY Generating Cryptograms.
System Structures: Ada 95 Character and String Packages.
System Structures: A Systematic View of Text Files.
Problem Solving: Operating System Redirection of Standard Files.
CASE STUDY A Histogram-Plotting Program.
Problem Solving: Getting Input Values from a String.
Problem Solving: Reading Command Parameters.
CASE STUDY Lengths of LInes in a Text File.
Tricks of the Trade: Common Programming Errors.
11. Programming with Objects: Abstract Data Types.
System Structures: Abstract Data Types (ADTs).
System Structures: the ADT Package Ada.Calendar.
CASE STUDY World Times.
System Structures: Writing an ADT for Calendar Dates.
System Structures: Writing an ADT for Money Quantities.
System Structures: Using an ADT to Create a Mini-Data Base.
CASE STUDY Employee Inquiry System.
Continuing Saga: Writing an ADT for Multiple Spiders.
Tricks of the Trade: Common Programming Errors.
12. Introduction to Unconstrained Array Types and Generics.
Data Structures: Unconstrained Array Types.
Problem Solving: a General Sorting Program.
CASE STUDY Software Support "HotLine".
System Structures: Generic Units.
Problem Solving: A Generic Sorting Program.
System Structures: a Generic Sets Package.
Tricks of the Trade: Common Programming Errors.
13. Multidimensional Arrays and Variant Records.
Data Structures: Multidimensional Arrays.
Problem Solving: Using Multidimensional Arrays.
Data Structures: Variant Records.
System Structures: Geometric Figures.
Continuing Saga: Keeping Track of Multiple Spiders.
Tricks of the Trade: Common Programming Errors.
14. Recursion.
Problem Solving: The Nature of Recursion.
Tricks of the Trade: Tracing a Recursive Function.
Problem Solving: Recursive Mathematical Functions.
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.
Problem Solving: More Case Studies in Recursion.
CASE STUDY Towers of Hanoi.
CASE STUDY Picture Processing with Recursion.
Problem Solving: Recursive Searching.
CASE STUDY Recursive Binary Search.
Tricks of the Trade: Debugging Recursive Subprograms.
15. Access Types and Dynamic Data Structures.
Data Structures: Access Types and the NEW Operator.
Data Structures: Linked Lists and Their Operations.
Data Structures: Linked Lists with Head and Tail Pointers.
Problem Solving: Ordered Insertions in Linked Lists.
System Structures: a Generic Version of the Linked List Package.
Problem Solving: Stacks and Queues.
CASE STUDY Checking for Balanced Parentheses.
Tricks of the Trade: Debugging Programs with Linked Lists.
16. Programming with Objects: Tagged Record Types.
System Structures: Object-Oriented Programming.
System Structures: Tagged Types.
Data Structures: General Access Types.
System Structures: Class-Wide Types.
System Structures: Dynamic Dispatching.
Heterogeneous Linked Lists.
17. Introduction to Concurrent Programming.
Problem Solving: What is Concurrent Programming?
System Structures: Task Types and Task Objects.
System Structures: Protected Types and Protected Objects.
Continuing Saga: Multiple Concurrent Spiders.
Appendix A: High-Resolution Color Graphics.
AdaGraph: a Basic High-Resolution Graphics Package.
Using AdaGraph Operations.
A High-Resolution Color Spider Package.
Using the High-Resolution Spider Package.
Appendix B: The Ada Character Set, Delimiters, and Reserved Words.
The Ada Character Set.
Delimiters.
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.
Exceptions Defined in the Language.
Exception Defined in Ada.Calendar.
Exception Defined in Ada.Numerics.
Exceptions Defined in Ada.Text_IO.