Contents

Preface

1 Overview of Programming and Problem Solving

1.1 Overview of Programming

What Is Programming?

How Do We Write a Program?

What Is an Algorithm?

What Is a Programming Language?

1.2 How Does a Computer Run a Program?

What Kinds of Instructions Can Be Written in a Programming Language?

What Is Software Maintenance?

Software Maintenance Case Study: An Introduction to Software Maintenance

1.3 What's Inside the Computer?

1.4 Ethics and Responsibilities in the Computing Profession

Software Piracy

Privacy of Data

Use of Computer Resources

Software Engineering

1.5 Problem-Solving Techniques

Ask Questions

Look for Things That Are Familiar

Solve by Analogy

Means-Ends Analysis

Divide and Conquer

The Building-Block Approach

Merging Solutions

Mental Blocks: The Fear of Starting

Algorithmic Problem Solving

Problem-Solving Case Study: Leap Year Algorithm

Summary

Quick Check

Answers

Exam Preparation Exercises

Programming Warm-Up Exercises

Case Study Follow-Up

Line Number

2 C++ Syntax and Semantics, and the Program Development Process

2.1 The Elements of C++ Programs

C++ Program Structure

Syntax and Semantics

Syntax Templates

Naming Program Elements: Identifiers

Data and Data Types

Naming Elements: Declarations

Taking Action: Executable Statements

Beyond Minimalism: Adding Comments to a Program

2.2 Program Construction

Blocks (Compound Statements)

The C++ Preprocessor

Software Maintenance Case Study: Adding Titles to Names

2.3 More about Output

Creating Blank Lines

Inserting Blanks within a Line

Special Characters

2.4 Program Entry, Correction, and Execution

Entering a Program

Compiling and Running a Program

Problem-Solving Case Study: Printing a Chessboard

Testing and Debugging

Summary

Quick Check

Answers

Exam Preparation Exercises

Programming Warm-Up Exercises

Programming Problems

Case Study Follow-Up

3 Numeric Types, Expressions, and Output

3.1 Overview of C++ Data Types

3.2 Numeric Data Types

Integral Types

Floating-Point Types

3.3 Declarations for Numeric Types

Named Constant Declarations

Variable Declarations

3.4 Simple Arithmetic Expressions

Arithmetic Operators

Increment and Decrement Operators

3.5 Compound Arithmetic Expressions

Precedence Rules

Type Coercion and Type Casting

Software Maintenance Case Study: Precedence Error

3.6 Function Calls and Library Functions

Value-Returning Functions

Library Functions

Void Functions

3.7 Formatting Output

Integers and Strings

Floating-Point Numbers

3.8 Additional string Operations

The length and size Functions

The find Function

The substr Function

Accessing Characters Within a String: The at Function

Converting to Lowercase and Uppercase

Problem-Solving Case Study: Mortgage Payment Calculator

Testing and Debugging

Summary

Quick Check

Answers

Exam Preparation Exercises

Programming Warm-Up Exercises

Programming Problems

Case Study Follow-Up

4 Program Input and the Software Design Process

4.1 Getting Data into Programs

Input Streams and the Extraction Operator (>>)

The Reading Marker and the Newline Character

Reading Character Data with the get Function

Skipping Characters with the ignore Function

Reading String Data

4.2 Interactive Input/Output

4.3 Noninteractive Input/Output

4.4 File Input and Output

Files

Using Files

Software Maintenance Case Study: Adding File Input/Output to a Program

Run-Time Input of File Names

4.5 Input Failure

4.6 Software Design Methodologies

4.7 Functional Decomposition

Modules

Implementing the Design

A Perspective on Design

Problem-Solving Case Study: Displaying a Name in Multiple Formats

Testing and Debugging

Testing and Debugging Hints

Summary

Quick Check

Answers

Exam Preparation Exercises

Programming Warm-Up Exercises

Programming Problems

Case Study Follow-Up

5 Conditions, Logical Expressions, and Selection Control Structures

5.1 Flow of Control

Selection

5.2 Conditions and Logical Expressions

The bool Data Type

Logical Expressions

5.3 The If Statement

The If-Then-Else Form

Blocks (Compound Statements)

The If-Then Form

A Common Mistake

Software Maintenance Case Study: Incorrect Output

5.4 Nested If Statements

The Dangling else

5.5 Logical Operators

Precedence of Operators

Relational Operators with Floating-Point Types

5.6 Testing the State of an I/O Stream

Problem-Solving Case Study: BMI Calculator

Testing and Debugging

Testing in the Problem-Solving Phase: The Algorithm Walk-Through

Testing in the Implementation Phase

The Test Plan

Tests Performed Automatically During Compilation and Execution

Testing and Debugging Hints

Summary

Quick Check

Answers

Exam Preparation Exercises

Programming Warm-Up Exercises

Programming Problems

Case Study Follow-Up

6 Looping

6.1 The While Statement

6.2 Phases of Loop Execution

6.3 Loops Using the While Statement

Count-Controlled Loops

Event-Controlled Loops

Looping Subtasks

Software Maintenance Case Study: Make a Program General

6.4 How to Design Loops

Designing the Flow of Control

Designing the Process Within the Loop

The Loop Exit

6.5 Nested Logic

Designing Nested Loops

Problem-Solving Case Study: Recording Studio Design

Testing and Debugging

Loop-Testing Strategy

Test Plans Involving Loops

Testing and Debugging Hints

Summary

Quick Check

Answers

Exam Preparation Exercises

Programming Warm-Up Exercises

Programming Problems

Case Study Follow-Up

7 Additional Control Structures

7.1 The Switch Statement

7.2 The Do-While Statement

7.3 The For Statement

Software Maintenance Case Study: Changing a Loop Implementation

7.4 The Break and Continue Statements

7.5 Guidelines for Choosing a Looping Statement

7.6 Additional C++ Operators

Assignment Operators and Assignment Expressions

Increment and Decrement Operators

Bitwise Operators

The Cast Operation

The sizeof Operator

The ?: Operator

Operator Precedence

Type Coercion in Arithmetic and Relational Expressions

Problem-Solving Case Study: The Rich Uncle

Testing and Debugging

Testing and Debugging Hints

Summary

Quick Check

Answers

Exam Preparation Exercises

Programming Warm-Up Exercises

Programming Problems

Case Study Follow-Up

8 Functions

8.1 Functional Decomposition with Void Functions

When to Use Functions

Why Do Modules Need an Interface Design?

Designing Interfaces

Writing Modules as Void Functions

8.2 An Overview of User-Defined Functions

Flow of Control in Function Calls

Function Parameters

8.3 Syntax and Semantics of Void Functions

Function Call (Invocation)

Function Declarations and Definitions

Local Variables

The Return Statement

8.4 Parameters

Value Parameters

Reference Parameters

Software Maintenance Case Study: Refactoring a Program

Using Expressions with Parameters

A Last Word of Caution About Argument and Parameter Lists

Writing Assertions as Function Documentation

Problem-Solving Case Study: Lawn Care Company Billing

Testing and Debugging

The assert Library Function

Testing and Debugging Hints

Summary

Quick Check

Answers

Exam Preparation Exercises

Programming Warm-Up Exercises

Programming Problems

Case Study Follow-Up

9 Scope, Lifetime, and More on Functions

9.1 Scope of Identifiers

Scope Rules

Variable Declarations and Definitions

Namespaces

9.2 Lifetime of a Variable

Initializations in Declarations

Software Maintenance Case Study: Debug a Simple Program

9.3 Interface Design

Side Effects

Global Constants

9.4 Value-Returning Functions

Complete Example

Boolean Functions

Interface Design and Side Effects

When to Use Value-Returning Functions

9.5 Type Coercion in Assignments, Argument Passing, and Return of a Function Value

Problem-Solving Case Study: Health Profile

Testing and Debugging

Stubs and Drivers

Testing and Debugging Hints

Summary

Quick Check

Answers

Exam Preparation Exercises

Programming Warm-Up Exercises

Programming Problems

Case Study Follow-Up

10 User-Defined Data Types

10.1 Built-In Simple Types

Numeric Types

Characters

10.2 User-Defined Simple Types

The Typedef Statement

Enumeration Types

Named and Anonymous Data Types

10.3 Simple Versus Structured Data Types

10.4 Records (Structs)

Accessing Individual Components

Aggregate Operations on Structs

More About Struct Declarations

Binding Like Items

Software Maintenance Case Study: Changing a Loop Implementation

10.5 Hierarchical Records

10.6 Unions

Problem-Solving Case Study: Stylistical Analysis of Text

Testing and Debugging

Coping with Input Errors

Testing and Debugging Hints

Summary

Quick Check

Answers

Exam Preparation Exercises

Programming Warm-Up Exercises

Programming Problems

Case Study Follow-Up

11 Arrays

11.1 One-Dimensional Arrays

Declaring Arrays

Accessing Individual Components

Out-of-Bounds Array Indexes

Initializing Arrays in Declarations

(Lack of) Aggregate Array Operations

Examples of Declaring and Accessing Arrays

Passing Arrays as Arguments

Commenting Arrays

Software Maintenance Case Study: Modularizing a Program

Using Typedef with Arrays

11.2 Arrays of Records

Arrays of Records

11.3 Special Kinds of Array Processing

Subarray Processing

Indexes with Semantic Content

11.4 Two-Dimensional Arrays

11.5 Passing Two-Dimensional Arrays as Arguments

11.6 Processing Two-Dimensional Arrays

Sum the Rows

Sum the Columns Revised

Sum the Columns

Initialize the Array

Print the Array

11.7 Another Way of Defining Two-Dimensional Arrays

11.8 Multidimensional Arrays

11.9 Sorting and Searching in an Array

Sorting

Searching

Problem-Solving Case Study: Calculating Exam Statistics

Problem-Solving Case Study: Favorite Rock Group

Testing and Debugging

One-Dimensional Arrays

Complex Structures

Multidimensional Arrays

Sorting and Searching

Testing and Debugging Hints

Summary

Quick Check

Answers

Exam Preparation Exercises

Programming Warm-Up Exercises

Programming Problems

Case Study Follow-Up

12 Classes and Abstraction

12.1 Abstract Data Types

12.2 C++ Classes

Implementing the Member Functions

Classes, Objects, and Members

Built-in Operations on Objects

Class Scope

12.3 Information Hiding

User-Written Header Files

Specification and Implementation Files

Compiling and Linking a Multifile Program

12.4 What Is an Object?

12.5 Class Design Principles

Encapsulation

Abstraction

Designing for Modifiability and Reuse

Mutability

Software Maintenance Case Study: Comparing Two TimeOfDay Objects

12.6 The Name ADT

Specification of the ADT

Implementation File

12.7 Composition

Design of an Entry Class

12.8 UML Diagrams

Diagramming a Class

Diagramming Composition of Classes

Problem-Solving Case Study: Create an Array of Name Objects

Testing and Debugging

Testing and Debugging Hints

Summary

Quick Check

Answers

Exam Preparation Exercises

Programming Warm-Up Exercises

Programming Problems

Case Study Follow-Up

13 Recursion

13.1 What Is Recursion?

13.2 Recursive Algorithms with Simple Variables

13.3 Towers of Hanoi

13.4 Recursive Algorithms with Structured Variables

13.5 Recursion or Iteration?

Software Maintenance Case Study: Substituting Binary Search for Linear Search

Testing and Debugging

Testing and Debugging Hints

Summary

Quick Check

Answers

Exam Preparation Exercises

Programming Warm-Up Exercises

Programming Problems

Case Study Follow-Up

Appendices

Index

..................Content has been hidden....................

You can't read the all page of ebook, please click here login for view all page.
Reset
52.15.210.12