C: How to Program

This document was uploaded by one of our users. The uploader already confirmed that they had the permission to publish it. If you are author/publisher or own the copyright of this documents, please report to us by using this DMCA report form.

Simply click on the Download Book button.

Yes, Book downloads on Ebookily are 100% Free.

Sometimes the book is free on Amazon As well, so go ahead and hit "Search on Amazon"

NA

Author(s): Harvey Deitel; Paul Deitel
Edition: 6
Publisher: Prentice Hall
Year: 2009

Language: English
Pages: 966

Cover
Copyright
Title Page
Contents
Preface
1 Introduction to Computers, the Internet and the Web
1.1 Introduction
1.2 Computers: Hardware and Software
1.3 Computer Organization
1.4 Personal, Distributed and Client/Server Computing
1.5 The Internet and the World Wide Web
1.6 Machine Languages, Assembly Languages and High-Level Languages
1.7 History of C
1.8 C Standard Library
1.9 C++
1.10 Java
1.11 Fortran, COBOL, Pascal and Ada
1.12 BASIC, Visual Basic, Visual C++, C# and .NET
1.13 Key Software Trend: Object Technology
1.14 Typical C Program Development Environment
1.15 Hardware Trends
1.16 Notes About C and This Book
1.17 Web Resources
2 Introduction to C Programming
2.1 Introduction
2.2 A Simple C Program: Printing a Line of Text
2.3 Another Simple C Program: Adding Two Integers
2.4 Memory Concepts
2.5 Arithmetic in C
2.6 Decision Making: Equality and Relational Operators
3 Structured Program Development in C
3.1 Introduction
3.2 Algorithms
3.3 Pseudocode
3.4 Control Structures
3.5 The if Selection Statement
3.6 The if…else Selection Statement
3.7 The while Repetition Statement
3.8 Formulating Algorithms Case Study 1: Counter-Controlled Repetition
3.9 Formulating Algorithms with Top-Down, Stepwise Refinement Case Study 2: Sentinel-Controlled Repetition
3.10 Formulating Algorithms with Top-Down, Stepwise Refinement Case Study 3: Nested Control Structures
3.11 Assignment Operators
3.12 Increment and Decrement Operators
4 C Program Control
4.1 Introduction
4.2 Repetition Essentials
4.3 Counter-Controlled Repetition
4.4 for Repetition Statement
4.5 for Statement: Notes and Observations
4.6 Examples Using the for Statement
4.7 switch Multiple-Selection Statement
4.8 do…while Repetition Statement
4.9 break and continue Statements
4.10 Logical Operators
4.11 Confusing Equality (==) and Assignment (=) Operators
4.12 Structured Programming Summary
5 C Functions
5.1 Introduction
5.2 Program Modules in C
5.3 Math Library Functions
5.4 Functions
5.5 Function Definitions
5.6 Function Prototypes
5.7 Function Call Stack and Activation Records
5.8 Headers
5.9 Calling Functions By Value and By Reference
5.10 Random Number Generation
5.11 Example: A Game of Chance
5.12 Storage Classes
5.13 Scope Rules
5.14 Recursion
5.15 Example Using Recursion: Fibonacci Series
5.16 Recursion vs. Iteration
6 C Arrays
6.1 Introduction
6.2 Arrays
6.3 Defining Arrays
6.4 Array Examples
6.5 Passing Arrays to Functions
6.6 Sorting Arrays
6.7 Case Study: Computing Mean, Median and Mode Using Arrays
6.8 Searching Arrays
6.9 Multiple-Subscripted Arrays
7 C Pointers
7.1 Introduction
7.2 Pointer Variable Definitions and Initialization
7.3 Pointer Operators
7.4 Passing Arguments to Functions by Reference
7.5 Using the const Qualifier with Pointers
7.6 Bubble Sort Using Call-by-Reference
7.7 sizeof Operator
7.8 Pointer Expressions and Pointer Arithmetic
7.9 Relationship between Pointers and Arrays
7.10 Arrays of Pointers
7.11 Case Study: Card Shuffling and Dealing Simulation
7.12 Pointers to Functions
8 C Characters and Strings
8.1 Introduction
8.2 Fundamentals of Strings and Characters
8.3 Character-Handling Library
8.4 String-Conversion Functions
8.5 Standard Input/Output Library Functions
8.6 String-Manipulation Functions of the String-Handling Library
8.7 Comparison Functions of the String-Handling Library
8.8 Search Functions of the String-Handling Library
8.9 Memory Functions of the String-Handling Library
8.10 Other Functions of the String-Handling Library
9 C Formatted Input/Output
9.1 Introduction
9.2 Streams
9.3 Formatting Output with printf
9.4 Printing Integers
9.5 Printing Floating-Point Numbers
9.6 Printing Strings and Characters
9.7 Other Conversion Specifiers
9.8 Printing with Field Widths and Precision
9.9 Using Flags in the printf Format Control String
9.10 Printing Literals and Escape Sequences
9.11 Reading Formatted Input with scanf
10 C Structures, Unions, Bit Manipulations and Enumerations
10.1 Introduction
10.2 Structure Definitions
10.3 Initializing Structures
10.4 Accessing Structure Members
10.5 Using Structures with Functions
10.6 typedef
10.7 Example: High-Performance Card Shuffling and Dealing Simulation
10.8 Unions
10.9 Bitwise Operators
10.10 Bit Fields
10.11 Enumeration Constants
11 C File Processing
11.1 Introduction
11.2 Data Hierarchy
11.3 Files and Streams
11.4 Creating a Sequential-Access File
11.5 Reading Data from a Sequential-Access File
11.6 Random-Access Files
11.7 Creating a Random-Access File
11.8 Writing Data Randomly to a Random-Access File
11.9 Reading Data from a Random-Access File
11.10 Case Study: Transaction-Processing Program
12 C Data Structures
12.1 Introduction
12.2 Self-Referential Structures
12.3 Dynamic Memory Allocation
12.4 Linked Lists
12.5 Stacks
12.6 Queues
12.7 Trees
13 C Preprocessor
13.1 Introduction
13.2 #include Preprocessor Directive
13.3 #define Preprocessor Directive: Symbolic Constants
13.4 #define Preprocessor Directive: Macros
13.5 Conditional Compilation
13.6 #error and #pragma Preprocessor Directives
13.7 # and ## Operators
13.8 Line Numbers
13.9 Predefined Symbolic Constants
13.10 Assertions
14 Other C Topics
14.1 Introduction
14.2 Redirecting I/O
14.3 Variable-Length Argument Lists
14.4 Using Command-Line Arguments
14.5 Notes on Compiling Multiple-Source-File Programs
14.6 Program Termination with exit and atexit
14.7 volatile Type Qualifier
14.8 Suffixes for Integer and Floating-Point Constants
14.9 More on Files
14.10 Signal Handling
14.11 Dynamic Memory Allocation: Functions calloc and realloc
14.12 Unconditional Branching with goto
15 C++ as a Better C; Introducing Object Technology
15.1 Introduction
15.2 C++
15.3 A Simple Program: Adding Two Integers
15.4 C++ Standard Library
15.5 Header Files
15.6 Inline Functions
15.7 References and Reference Parameters
15.8 Empty Parameter Lists
15.9 Default Arguments
15.10 Unary Scope Resolution Operator
15.11 Function Overloading
15.12 Function Templates
15.13 Introduction to Object Technology and the UML
15.14 Wrap-Up
16 Introduction to Classes and Objects
16.1 Introduction
16.2 Classes, Objects, Member Functions and Data Members
16.3 Defining a Class with a Member Function
16.4 Defining a Member Function with a Parameter
16.5 Data Members, set Functions and get Functions
16.6 Initializing Objects with Constructors
16.7 Placing a Class in a Separate File for Reusability
16.8 Separating Interface from Implementation
16.9 Validating Data with set Functions
16.10 Wrap-Up
17 Classes: A Deeper Look, Part 1
17.1 Introduction
17.2 Time Class Case Study
17.3 Class Scope and Accessing Class Members
17.4 Separating Interface from Implementation
17.5 Access Functions and Utility Functions
17.6 Time Class Case Study: Constructors with Default Arguments
17.7 Destructors
17.8 When Constructors and Destructors are Called
17.9 Time Class Case Study: A Subtle Trap—Returning a Reference to a private Data Member
17.10 Default Memberwise Assignment
17.11 Wrap-Up
18 Classes: A Deeper Look, Part 2
18.1 Introduction
18.2 const (Constant) Objects and const Member Functions
18.3 Composition: Objects as Members of Classes
18.4 friend Functions and friend Classes
18.5 Using the this Pointer
18.6 static Class Members
18.7 Data Abstraction and Information Hiding
18.8 Wrap-Up
19 Operator Overloading
19.1 Introduction
19.2 Fundamentals of Operator Overloading
19.3 Restrictions on Operator Overloading
19.4 Operator Functions as Class Members vs. Global Function
19.5 Overloading Stream Insertion and Stream Extraction Operators
19.6 Overloading Unary Operators
19.7 Overloading Binary Operators
19.8 Dynamic Memory Management
19.9 Case Study: Array Class
19.10 Converting between Types
19.11 Building a String Class
19.12 Overloading ++ and --
19.13 Case Study: A Date Class
19.14 Standard Library Class string
19.15 explicit Constructors
19.16 Proxy Classes
19.17 Wrap-Up
20 Object-Oriented Programming: Inheritance
20.1 Introduction
20.2 Base Classes and Derived Classes
20.3 protected Members
20.4 Relationship between Base Classes and Derived Classes
20.4.1 Creating and Using a CommissionEmployee Class
20.4.2 Creating a BasePlusCommissionEmployee Class Without Using Inheritance
20.4.3 Creating a CommissionEmployee–BasePlusCommissionEmployee Inheritance Hierarchy
20.4.4 CommissionEmployee–BasePlusCommissionEmployee Inheritance Hierarchy Using protected Data
20.4.5 CommissionEmployee–BasePlusCommissionEmployee Inheritance Hierarchy Using private Data
20.5 Constructors and Destructors in Derived Classes
20.6 public, protected and private Inheritance
20.7 Software Engineering with Inheritance
20.8 Wrap-Up
21 Object-Oriented Programming: Polymorphism
21.1 Introduction
21.2 Polymorphism Examples
21.3 Relationships Among Objects in an Inheritance Hierarchy
21.3.1 Invoking Base-Class Functions from Derived-Class Objects
21.3.2 Aiming Derived-Class Pointers at Base-Class Objects
21.3.3 Derived-Class Member-Function Calls via Base-Class Pointers
21.3.4 Virtual Functions
21.3.5 Summary of the Allowed Assignments Between Base-Class and Derived-Class Objects and Pointers
21.4 Type Fields and switch Statements
21.5 Abstract Classes and Pure virtual Functions
21.6 Case Study: Payroll System Using Polymorphism
21.6.1 Creating Abstract Base Class Employee
21.6.2 Creating Concrete Derived Class SalariedEmployee
21.6.3 Creating Concrete Derived Class HourlyEmployee
21.6.4 Creating Concrete Derived Class CommissionEmployee
21.6.5 Creating Indirect Concrete Derived Class BasePlusCommissionEmployee
21.6.6 Demonstrating Polymorphic Processing
21.7 (Optional) Polymorphism, Virtual Functions and Dynamic Binding “Under the Hood”
21.8 Case Study: Payroll System Using Polymorphism and Runtime Type Information with Downcasting, dynamic_cast, typeid and type_info
21.9 Virtual Destructors
21.10 Wrap-Up
22 Templates
22.1 Introduction
22.2 Function Templates
22.3 Overloading Function Templates
22.4 Class Templates
22.5 Nontype Parameters and Default Types for Class Templates
22.6 Notes on Templates and Inheritance
22.7 Notes on Templates and Friends
22.8 Notes on Templates and static Members
22.9 Wrap-Up
23 Stream Input/Output
23.1 Introduction
23.2 Streams
23.2.1 Classic Streams vs. Standard Streams
23.2.2 iostream Library Header Files
23.2.3 Stream Input/Output Classes and Objects
23.3 Stream Output
23.3.1 Output of char * Variables
23.3.2 Character Output Using Member Function put
23.4 Stream Input
23.4.1 get and getline Member Functions
23.4.2 istream Member Functions peek, putback and ignore
23.4.3 Type-Safe I/O
23.5 Unformatted I/O Using read, write and gcount
23.6 Introduction to Stream Manipulators
23.6.1 Integral Stream Base: dec, oct, hex and setbase
23.6.2 Floating-Point Precision (precision, setprecision)
23.6.3 Field Width (width, setw)
23.6.4 User-Defined Output Stream Manipulators
23.7 Stream Format States and Stream Manipulators
23.7.1 Trailing Zeros and Decimal Points (showpoint)
23.7.2 Justification (left, right and internal)
23.7.3 Padding (fill, setfill)
23.7.4 Integral Stream Base (dec, oct, hex, showbase)
23.7.5 Floating-Point Numbers; Scientific and Fixed Notation (scientific, fixed)
23.7.6 Uppercase/Lowercase Control (uppercase)
23.7.7 Specifying Boolean Format (boolalpha)
23.7.8 Setting and Resetting the Format State via Member Function flags
23.8 Stream Error States
23.9 Tying an Output Stream to an Input Stream
23.10 Wrap-Up
24 Exception Handling
24.1 Introduction
24.2 Exception-Handling Overview
24.3 Example: Handling an Attempt to Divide by Zero
24.4 When to Use Exception Handling
24.5 Rethrowing an Exception
24.6 Exception Specifications
24.7 Processing Unexpected Exceptions
24.8 Stack Unwinding
24.9 Constructors, Destructors and Exception Handling
24.10 Exceptions and Inheritance
24.11 Processing new Failures
24.12 Class auto_ptr and Dynamic Memory Allocation
24.13 Standard Library Exception Hierarchy
24.14 Other Error-Handling Techniques
24.15 Wrap-Up
A: Operator Precedence Charts
B: ASCII Character Set
C: Number Systems
C.1 Introduction
C.2 Abbreviating Binary Numbers as Octal and Hexadecimal Numbers
C.3 Converting Octal and Hexadecimal Numbers to Binary Numbers
C.4 Converting from Binary, Octal or Hexadecimal to Decimal
C.5 Converting from Decimal to Binary, Octal or Hexadecimal
C.6 Negative Binary Numbers: Two’s Complement Notation
D: Game Programming: Solving Sudoku
D.1 Introduction
D.2 Deitel Sudoku Resource Center
D.3 Solution Strategies
D.4 Programming Sudoku Puzzle Solvers
D.5 Generating New Sudoku Puzzles
D.6 Conclusion
Appendices on the Web
Index
A
B
C
D
E
F
G
H
I
J
K
L
M
N
O
P
Q
R
S
T
U
V
W
X
Y
Z