text.skipToContent text.skipToNavigation

C How to Program, 3rd edition

  • Harvey M. Deitel
  • Paul J. Deitel

Published by Pearson (August 16th 2000) - Copyright © 2001

3rd edition

Unfortunately, this item is not available in your country.

Overview

The complete, authoritative guide to C, with concise introduction to C++ and Java™

This Third Edition of the world's most widely used C textbook carefully explains C (535 pages) and presents substantial introductions to C++ (298 pp.) and Java (346 pp.).

Dr. Harvey M. Deitel and Paul J. Deitel are the principals of Deitel & Associates, Inc.. the internationally-recognized corporate training and content-creation organization specializing in C++, Java™, C, Visual Basic®, Internet, World Wide Web, XML™, Python, Perl and object technologies. The Deitels are also the authors of the world's #1 C++ and Java textbooks, C++ How to Program, 3/e and Java How to Program, 3/e.

In C How to Program: Third Edition, the Deitels introduce five of today's most popular programming paradigms. Key topics include:

  • Procedural programming (in C)
  • Classes and objects (C++ and Java)
  • Inheritance/polymorphism (C++/Java)
  • Generic programming (C++ templates)
  • Event-driven programming (in Java)

C How to Program helps students build C, C++ and Java applications. It includes:

  • Hundreds of "live-code" programs with screen captures that show exact outputs
  • Extensive self-review exercises (many with answers) accompanying each chapter
  • Hundreds of tips, recommended practices and cautions—all marked with icons

C How to Program is the centerpiece of a complete family of resources for teaching and learning C, C++ and Java, including Web sites (www.deitel.com and www.prenhall.com/deitel) with the book's source-code examples and other information for faculty, students and professionals; optional interactive CD-ROMs (C++ Multimedia Cyber Classroom and Java 2 Multimedia Cyber Classroom) containing thousands of hyperlinks and audio walkthroughs of the hundreds of code examples in C++ How to Program and Java How to Program—and e-mail access to the authors at deitel@deitel.com

For information on worldwide corporate on-site seminars and Web-based training offered by Deitel & Associates, Inc., visit: www.deitel.com

For information on all Deitel publications including How to Program Series books, Multimedia Cyber Classrooms, Multimedia Cyber Classrooms, Complete Training Courses (that include Deitel books and Cyber Classrooms)and Web-Based Training Courses please see the last few pages of this book.

Table of contents

(NOTE: Each chapter begins with Objectives, an Outline, and an Introduction and ends with a Summary, Terminology, Common Programming Errors, Good Programming Practices, Performance Tips, Portability Tips, Software Engineering Observations, Self-Review Exercises, Answers to Self-Review Exercises, and Exercises.)

1. Introduction to Computers, the Internet and the World Wide Web.

What Is a Computer? Computer Organization. Evolution of Operating Systems. Personal Computing, Distributed Computing and Client/Server Computing. Machine Languages, Assembly Languages and High-Level Languages. The History of C. The C Standard Library. The Key Software Trend: Object Technology. C++ and C++ How to Program. Java and Java How to Program. Other High-Level Languages. Structured Programming. The Basics of a Typical C Program Development Environment. Hardware Trends. History of the Internet. History of the World Wide Web. General Notes about C and This Book.


2. Introduction to C Programming.

A Simple C Program: Printing a Line of Text. Another Simple C Program: Adding Two Integers. Memory Concepts. Arithmetic in C. Decision Making: Equality and Relational Operators.


3. Structured Program Development in C.

Algorithms. Pseudocode. Control Structures. The if Selection Structure. The if/else Selection Structure. The while Repetition Structure. Formulating Algorithms: Case Study 1 (Counter-Controlled Repetition). Formulating Algorithms with Top-Down, Stepwise Refinement: Case Study 2 (Sentinel-Controlled Repetition). Formulating Algorithms with Top-Down, Stepwise Refinement: Case Study 3 (Nested Controlled Repetition). Assignment Operators. Increment and Decrement Operators.


4. C Program Control.

The Essentials of Repetition. Counter-Controlled Repetition. The for Repetition Structure. The for Structure: Notes and Observations. Examples Using the for Structure. The switch Multiple-Selection Structure. The do/while Repetition Structure. The break and continue Statements. Logical Operators. Confusing Equality (==) and Assignment (=) Operators. Structured Programming Summary.


5. C Functions.

Program Modules in C. Math Library Functions. Functions. Function Definitions. Function Prototypes. Header Files. Calling Functions: Call by Value and Call by Reference. Random Number Generation. Example: A Game of Chance. Storage Classes. Scope Rules. Recursion. Example Using Recursion: The Fibonacci Series. Recursion vs. Iteration.


6. C Arrays.

Arrays. Declaring Arrays. Examples Using Arrays. Passing Arrays to Functions. Sorting Arrays. Case Study: Computing Mean, Median and Mode Using Arrays. Searching Arrays. Multiple-Subscripted Arrays.


7. C Pointers.

Pointer Variable Declarations and Initialization. Pointer Operators. Calling Functions by Reference. Using the const Qualifier with Pointers. Bubble Sort Using Call by Reference. Pointer Expressions and Pointer Arithmetic. The Relationship between Pointers and Arrays. Arrays of Pointers. Case Study: A Card Shuffling and Dealing Simulations. Pointers to Functions.


8. C Characters and Strings.

Fundamentals of Strings and Characters. Character Handling Library. String Conversion Functions. Standard Input/Output Library Functions. String Manipulation Functions of the String Handling Library. Comparison Functions of the String Handling Library. Search Functions of the String Handling Library. Memory Functions of the String Handling Library. Other Functions of the String Handling Library.


9. C Formatted Input/Output.

Streams. Formatting Output with printf. Printing Integers. Printing Floating-Point Numbers. Printing Strings and Characters. Other Conversion Specifiers. Printing with Field Widths and Precisions. Using Flags in the printf Format-Control String. Printing Literals and Escape Sequences. Formatting Input with scanf.


10. C Structures, Unions, Bit Manipulations, and Enumerations.

Structure Definitions. Initializing Structures. Accessing Members of Structures. Using Structures with Functions. typedef. Example: High-Performance Card Shuffling and Dealing Simulation. Unions. Bitwise Operators. Bit Fields. Enumeration Constants.


11. C File Processing.

The Data Hierarchy. Files and Streams. Creating a Sequential-Access File. Reading Data from a Sequential-Access File. Random-Access Files. Creating a Randomly Accessed File. Writing Data Randomly to a Randomly Accessed File. Reading Data Randomly from a Randomly Accessed File. Case Study: A Transaction-Processing Program.


12. C Data Structures.

Self-Referential Structures. Dynamic Memory Allocation. Linked Lists. Stacks. Queues. Trees.


13. C Preprocessor.

The #include Preprocessor Directive. The #define Preprocessor Directive: Symbolic Constants. The #define Preprocessor Directive: Macros. Conditional Compilation. The #error and #pragma Preprocessor Directives. The # and ## Operators. Line Numbers. Predefined Symbolic Constants. Assertions.


14. Advanced C Topics.

Redirecting Input/Output on UNIX and DOS Systems. Variable-Length Argument Lists. Using Command-Line Arguments. Notes on Compiling Multiple-Source-File Programs. Program Termination with Exit and AtExit. The volatile Type Qualifier. Suffixes for Integer and Floating-Point Constants. More on Files. Signal Handling. Dynamic Memory Allocation: Functions Calloc and Realloc. The Unconditional Branch: Goto.


15. C++ as a “Better C.”

C++. A Simple Program: Adding Two Integers. C++ Standard Library. Header Files. Inline Functions. References and Reference Parameters. Default Arguments and Empty Parameter Lists. Unary Scope Resolution Operator. Function Overloading. Function Templates.


16. C++ Classes and Data Abstraction.

Implementing a Time Abstract Data Type with a Class. Class Scope and Accessing Class Members. Separating Interface from Implementation. Controlling Access to Members. Access Functions and Utility Functions. Initializing Class Objects: Constructors. Using Default Arguments with Constructors. Using Destructors. When Constructors and Destructors Are Called. Using Data Members and Member Functions. A Subtle Trap: Returning a Reference to a private Data Member. Assignment by Default Memberwise Copy. Software Reusability.


17. C++ Classes: Part II.

const (Constant) Objects and const Member Functions. Composition: Objects as Members of Classes. friend Functions and friend Classes. Using the this Pointer. Dynamic Memory Allocation with Operators new and delete. Static Class Members. Data Abstraction and Information Hiding. Container Classes and Iterators.


18. C++ Operator Overloading.

Fundamentals of Operator Overloading. Restrictions on Operator Overloading. Operator Functions as Class Members vs. as Friend Functions. Overloading Stream-Insertion and Stream-Extraction Operators. Overloading Unary Operators. Overloading Binary Operators. Case Study: An Array Class. Converting between Types. Overloading ++ and - -.


19. C++ Inheritance.

Inheritance: Base Classes and Derived Classes. Protected Members. Casting Base-Class Pointers to Derived-Class Pointers. Using Member Functions. Overriding Base-Class Members in a Derived Class. Public, Protected and Private Inheritance. Direct Base Classes and Indirect Base Classes. Using Constructors and Destructors in Derived Classes. Implicit Derived-Class Object to Base-Class Object Conversion. Software Engineering with Inheritance. Composition vs. Inheritance. “Uses A” and “Knows A” Relationships. Case Study: Point, Circle, Cylinder.


20. C++ Virtual Functions and Polymorphism.

Type Fields and switch Statements. Virtual Functions. Abstract Base Classes and Concrete Classes. Polymorphism. New Classes and Dynamic Binding. Virtual Destructors. Case Study: Inheriting Interface and Implementation. Polymorphism, virtual Functions and Dynamic Binding “Under the Hood.”


21. C++ Stream Input/Output.

Streams. Stream Output. Stream Input. Unformatted I/O with Read, gcount and Write. Stream Manipulators. Stream Format States. Stream Error States. Tying an Output Stream to an Input Stream.


22. C++ Templates.

Class Templates. Class Templates and Nontype Parameters. Templates and Inheritance. Templates and Friends. Templates and Static Members.


23. C++ Exception Handling.

When Exception Handling Should Be Used. Other Error-Handling Techniques. Basics of C++ Exception Handling: try, throw, catch. A Simple Exception-Handling Example: Divide by Zero. Throwing an Exception. Catching an Exception. Rethrowing an Exception. Exception Specifications. Processing Unexpected Exceptions. Stack Unwinding. Constructors, Destructors and Exception Handling. Exceptions and Inheritance. Processing new Failures. Class auto_ptr and Dynamic Memory Allocation. Standard Library Exception Hierarchy.


24. Introduction to Java Applications and Applets.

Basics of a Typical Java Environment. General Notes about Java and This Book. A Simple Program: Printing a Line of Text. Another Java Application: Adding Integers. Sample Applets from the Java 2 Software Development Kit. A Simple Java Applet: Drawing a String. Two More Simple Applets: Drawing Strings and Lines. Another Java Applet: Adding Integers.


25. Beyond C & C++: Operators, Methods & Arrays in Java.

Primitive Data Types and Keywords. Logical Operators. Method Definitions. Java API Packages. Random Number Generation. Example: A Game of Chance. Methods of Class JApplet. Declaring and Allocating Arrays. Examples Using Arrays. References and Reference Parameters. Multiple-Subscripted Arrays.


26. Java Object-Based Programming.

Implementing a Time Abstract Data Type with a Class. Class Scope. Creating Packages. Initializing Class Objects: Constructors. Using Set and Get Methods. Using the this Reference. Finalizers. Static Class Members.


27. Java Object-Oriented Programming.

Superclasses and Subclasses. protected Members. Relationship between Superclass Objects and Subclass Objects. Implicit Subclass-Object-to-Superclass-Object Conversion. Software Engineering with Inheritance. Composition vs. Inheritance. Introduction to Polymorphism. Type Fields and switch Statements. Dynamic Method Binding. Final Methods and Classes. Abstract Superclasses and Concrete Classes. Polymorphism Example. New Classes and Dynamic Binding. Case Study: Inheriting Interface and Implementation. Case Study: Creating and Using Interfaces. Inner Class Definitions. Notes on Inner Class Definitions. Type-Wrapper Classes for Primitive Types.


28. Java Graphics and Java 2D.

Graphics Contexts and Graphics Objects. Color Control. Font Control. Drawing Lines, Rectangles, and Ovals. Drawing Arcs. Drawing Polygons and Polylines. The Java2D API. Java2D Shapes.


29. Java Graphical User Interface Components.

Swing Overview. JLabel. Event Handling Model. JTextField and JPasswordField. JTextArea. JButton. JCheckBox. JComboBox. Mouse Event Handling. Layout Managers. Panels. Creating a Self-Contained Subclass of JPanel. Windows. Using Menus with Frames.


30. Java Multimedia: Images, Animation and Audio.

Loading, Displaying and Scaling Images. Loading and Playing Audio Clips. Animating a Series of Images. Animation Issues. Customizing Applets via the HTML param Tag. Image Maps. Java Plug-In. Internet and World Wide Web Resources.


A. Internet and Web Resources.

C/C++ Resources. C++ Tutorials. C/C++ FAQs. Visual C++. comp.lang.c++. C/C++ Compilers. C++ Development Tools. Java Resources. Java Products. Java FAQs. Java Tutorials. Java Magazines. Java Applets. Multimedia. Java Newsgroups.


B. C99 Internet and Web Resources.

C99 Resources.


C. Operator Precedence Chart.


D. ASCII Character Set.


E. Number Systems.

Abbreviating Binary Numbers as Octal Numbers and Hexadecimal Numbers. Converting Octal Numbers and Hexadecimal Numbers to Binary Numbers. Converting from Binary, Octal, or Hexadecimal to Decimal. Converting from Decimal to Binary, Octal, or Hexadecimal. Negative Binary Numbers: Two's Complement Notation.


Index.

For teachers

All the material you need to teach your courses.

Discover teaching material