ISBN-10:
0137443927
ISBN-13:
9780137443925
Pub. Date:
08/28/1997
Publisher:
Prentice Hall Professional Technical Reference
C++: An Introduction to Computing / Edition 2

C++: An Introduction to Computing / Edition 2

by Joel Adams, Larry Nyhoff

Paperback

Current price is , Original price is $80.0. You
Select a Purchase Option (Older Edition)
  • purchase options

Product Details

ISBN-13: 9780137443925
Publisher: Prentice Hall Professional Technical Reference
Publication date: 08/28/1997
Edition description: Older Edition
Pages: 868
Product dimensions: 6.98(w) x 9.13(h) x 1.25(d)

About the Author

Joel C. Adams received two B.S. degrees in Psychology and Computer Science in 1980 and 1984 from Geneva College. He continued his study of Computer Science at the University of Pittsburgh, where he received his M.S. in 1986 and his Ph.D. in 1988. Since 1989, Joel has taught at Calvin College, where he is a Professor of Computer Science. He has also been a visiting faculty member at North Carolina State University and a Fulbright Scholar at the University of Mauritus. He is co-author of the widely used book C++: An Introduction to Computing.

Larry R. Nyhoff earned his A.B. in Mathematics in 1960 from Calvin College and his M.S. in 1961 from the University of Michigan. Larry continued his study of Mathematics and received his Ph.D. in 1969 from Michigan State University. Hi is in his 37th year as a Professor at Calvin College and has aided in the development of the school’s computer science curriculum since its inception. In addition to authoring and co-authoring over 27 textbooks used worldwide, Larry is a professional member of ACM and SIGCSE.

Read an Excerpt

To properly introduce students to computing, we believe that the first computing course should accomplish two goals:

  1. Introduce the methodologies and techniques of computer programming using a modern programming language, providing a (fairly) complete introduction to the language.
  2. Introduce students to the breadth of the discipline of computing, so that they come to understand the role of programming in the broader context of computing.

The aim of previous editions and this new edition is to realize both of these goals. Pedagogy

  • A popular feature of the earlier editions and other texts we have written is to use a "real-world" problem at the beginning of each chapter to introduce the subject of that chapter (e.g., functions, if statements, loops, and so on). Seeing the practice of a new topic provides students with a framework in which the more general concepts that underlie that topic can be organized and understood.
  • We continue the "use it, then build it" approach with respect to the more difficult topics for beginning programmers—a kind of spiral approach that revisits topics in increasingly greater detail. For example, predefined functions are used in Chapter 3 as components of expressions. Once students have experience using functions, Chapter 4 teaches them to build simple functions, and Chapters 6-8 show how to build increasingly sophisticated functions. Through this "use it, then build it" approach, students receive extensive exposure to the concepts underlying each of these constructs, reducing the learning curve when the time comes to actually build those constructs.
  • A major pedagogical issue in a firstprogramming course using C++ is where to present classes and objects—early, gradually, late, or not at all. In earlier editions and for the most part in this one, we use the spiral approach to introduce classes gradually. Thus, in Chapter 1 we introduce our design methodology, called object-centered design, a four-phase graduated methodology that novice programmers can use as an aid in designing software solutions. This methodology is used consistently to solve the problems presented throughout the remainder of the text. As the reader learns new language constructs in subsequent chapters, the methodology is expanded to incorporate these new constructs—for example, Chapter 5 introduces the student to the use of standard classes and methods; more practice follows in Chapters 710. Once students are firmly grounded in the use of (predefined, standard) classes, they learn to build classes in Chapter 11.

We realize, however, that a significant number of instructors prefer a classes/objects-early approach. We have made this possible by adding a special optional OBJECTive Thinking section to each chapter, beginning in Chapter 1, that introduces classes and objects. (The topics of these sections are listed later in this preface.) New to this Edition

Thanks to constructive feedback from users of the first edition, this new edition incorporates a number of changes, including the following:

  • Chapter objectives and end-of-chapter summaries consisting of key words and notes have been added to help students identify the main concepts of each chapter.
  • The lengthy second chapter on types and expressions from the second edition has been split into two separate chapters.
  • A new final chapter on data structures has been added.
  • Case studies have been added in which a problem is presented, some ideas about how to solve it are given, and a complete solution, including both design and program code, is given on the book's Web site.
  • As noted earlier, special optional OBJECTive Thinking sections have been added, one in each chapter, that present classes and objects, beginning already in Chapter I . The approach here is a spiral one. The titles are as follows:
  • OBJECTive Thinking: Spheres as Objects
  • OBJECTive Thinking: Attribute Variables
  • OBJECTive Thinking: Initialization and Constructors
  • OBJECTive Thinking: Class Methods
  • OBJECTive Thinking: Instance Methods
  • OBJECTive Thinking: Mutator Methods
  • OBJECTive Thinking: Code Reuse through Inheritance
  • OBJECTive Thinking: Class Variables, Instance Variables, and Scope
  • OBJECTive Thinking: Objects and Streams
  • OBJECTive Thinking: Objects and Sequences
  • OBJECTive Thinking: Operator Overloading and Friends
  • OBJECTive Thinking: Inheritance and Polymorphism
  • OBJECTive Thinking: The Matrix Class Revisited
  • OBJECTive Thinking: Pointers and Polymorphism

These sections can be omitted without loss of continuity. They might be used by students taking a course for honors credit or for independent study by students needing more challenging work.

  • The history of computing section in Chapter 0 has been updated to include more events and photos, along with descriptions of more recent developments such as GUIs and networking.
  • Ann Marchant of George Mason University has updated and expanded her superb presentation of the major ethical issues in computing in Chapter 1.
The Breadth of Computing

Introducing the students to the breadth of the discipline of computing grows out of an important theme of curriculum recommendations of the Association of Computing Machinery (ACM) that an introductory course in computing should introduce the various knowledge areas of the discipline so that a solid base is established for later courses in computer science. To accomplish this, we have included optional Part of the Picture sections (some of which are introduced in the text with complete presentations on the book's Web site). They introduce the major areas of computer science, trying to capture the spirit of the curriculum guidelines in a natural, unobtrusive way. Several of them were written by experts in various areas of computing. They have been carefully selected to provide an overview of the discipline of computer science and to provide a foundation for further study in theoretical or applied computer science. Their titles include the following:

  • What Is Computer Science?
  • The History of Computing
  • Introduction to Computer Systems
  • Ethics and Issues (by Ann Marchant)
  • Data Representation
  • Computability Theory
  • Simulation
  • Boolean Logic and Digital Design
  • Computer Architecture (by William Stallings)
  • Introduction to Algorithm Analysis
  • Numerical Methods
  • Database Systems (by Keith Vander Linden)
  • Component Programming
  • Artificial Intelligence (by Keith Vander Linden)
  • The C++ Type Hierarchy
  • Algorithm Efficiency
  • Expert Systems
Other Features
  • The Web site cs.calvin.edu/books/c++/intro/3e will be maintained by the authors and will include corrections, additions, reference materials, and other supplementary materials such as solutions to case studies and some Part of the Picture sections.
  • Optional sections (marked with asterisks) delve into more advanced topics, without requiring that they be covered in a normal introductory course.
  • Programming Pointers at chapter ends highlight important points, including
  • proper techniques of design and style and
  • common programming pitfalls.
  • Approximately 500 Quick Quiz questions provide a quick check of understanding of the material being studied. The answers to all of the Quick Quiz questions are given in Appendix E.
  • Approximately 800 written exercises extend the Quick Quizzes and apply the material of the preceding section(s). No answers for these are provided in the text, therefore, they can be used for written assignments.
  • The Programming Problems sections at the chapter ends contain more than 300 programming problems drawn from a wide range of application areas.
  • A completely new design makes the text attractive and readable.
  • Color is used to emphasize and highlight important features.
  • Boxed displays make it easy to find descriptions of the basic C++ statements and constructs.
  • Icons serve as markers to point out key parts of the text.
CS1 & CS2

This book is the first of a series of two, which together provide a thorough presentation of the C++ language. This first volume introduces the essential ideas of C++ programming and the breadth of the discipline of computing, making it ideal for a one-semester course in computer science. The second volume, C++: An Introduction to Data Structures by Larry Nyhoff, covers the more advanced features of C++ programming (e.g., recursion, inheritance, and polymorphism) and introduces topics that are traditionally taught in the second course (including elementary data structures, algorithms, and complexity) and how these three topics converge in the C++ Standard Template Library. Together, these two texts provide the beginning computer-science student with a complete introduction to C++ and a solid introduction to the discipline of computer science. If you choose to take advantage of the two-semester option, your local Prentice Hall Sales Representative can Supplementary Materials

  • Web sites at www.prenhall.com/adams and cs.calvin.edu/books/c++/intro/3e will contain source code, an online study guide, color screen snaps of graphical output, and links to important sites that correspond to items in the text. Other enrichment materials are also planned for inclusion on these Web sites.
  • The Instructors Resource CD-ROM contains most of the preceding items along with PowerPoint slides, as well as solutions to the exercises and many of the programming problems.
  • A Lab Manual containing laboratory exercises and projects coordinated with the text is available in hardcopy with access to an on-line version. It can be used with GNU C++, Borland's C++ Builder, Metrowerks CodeWarrior C++, and Microsoft's Visual C++.
  • Also available are software value pack options that include any of the following three software CD-ROM's: Borland's C++ Builder 6 Enterprise Trial Edition, CodeWarrior's Learning Edition Version 2.0, or Microsoft's Visual C++ 6.0.

Table of Contents

Beginning Snapshots.

PART OF THE PICTURE: What Is Computer Science? PART OF THE PICTURE: The History of Computing. PART OF THE PICTURE: Computing History. PART OF THE PICTURE: Ethics and Computing. 1. Problem Solving and Software Engineering.
2. Types and Expressions.

PART OF THE PICTURE: Data Representation. 3. Functions.

PART OF THE PICTURE: Computability Theory. 4. Class Types and Expressions.

PART OF THE PICTURE: Simulation. 5. Selection.

PART OF THE PICTURE: Boolean Logic and Digital Design. PART OF THE PICTURE: Computer Architecture. 6. Repetition.

PART OF THE PICTURE: Introduction to Algorithm Analysis. 7. Functions In Depth.

PART OF THE PICTURE: Numerical Methods. 8. Files and Streams.

PART OF THE PICTURE: Database Systems. 9. Arrays and vectors.

PART OF THE PICTURE: Component Programming. 10. Building Classes.

PART OF THE PICTURE: Artificial Intelligence. 11. Enumerations.

PART OF THE PICTURE: The C ++ Type Hierarchy. 12. Multidimensional Arrays.

PART OF THE PICTURE: Computer Graphics. 13. Pointers and Run-Time Allocation.

PART OF THE PICTURE: The TCP/IP Communications Architecture. PART OF THE PICTURE: Data Structures. Appendix A: ASCII Character Set.
Appendix B: C ++ Keywords.
Appendix C: C++ Operators.
Appendix D: Libraries and Classes.
Answers to Quick Quizzes.
Index.

Preface

To properly introduce students to computing, we believe that the first computing course should accomplish two goals:

  1. Introduce the methodologies and techniques of computer programming using a modern programming language, providing a (fairly) complete introduction to the language.
  2. Introduce students to the breadth of the discipline of computing, so that they come to understand the role of programming in the broader context of computing.

The aim of previous editions and this new edition is to realize both of these goals.

Pedagogy

  • A popular feature of the earlier editions and other texts we have written is to use a "real-world" problem at the beginning of each chapter to introduce the subject of that chapter (e.g., functions, if statements, loops, and so on). Seeing the practice of a new topic provides students with a framework in which the more general concepts that underlie that topic can be organized and understood.
  • We continue the "use it, then build it" approach with respect to the more difficult topics for beginning programmers—a kind of spiral approach that revisits topics in increasingly greater detail. For example, predefined functions are used in Chapter 3 as components of expressions. Once students have experience using functions, Chapter 4 teaches them to build simple functions, and Chapters 6-8 show how to build increasingly sophisticated functions. Through this "use it, then build it" approach, students receive extensive exposure to the concepts underlying each of these constructs, reducing the learning curve when the time comes to actually build those constructs.
  • A major pedagogical issue in a first programming course using C++ is where to present classes and objects—early, gradually, late, or not at all. In earlier editions and for the most part in this one, we use the spiral approach to introduce classes gradually. Thus, in Chapter 1 we introduce our design methodology, called object-centered design, a four-phase graduated methodology that novice programmers can use as an aid in designing software solutions. This methodology is used consistently to solve the problems presented throughout the remainder of the text. As the reader learns new language constructs in subsequent chapters, the methodology is expanded to incorporate these new constructs—for example, Chapter 5 introduces the student to the use of standard classes and methods; more practice follows in Chapters 710. Once students are firmly grounded in the use of (predefined, standard) classes, they learn to build classes in Chapter 11.

We realize, however, that a significant number of instructors prefer a classes/objects-early approach. We have made this possible by adding a special optional OBJECTive Thinking section to each chapter, beginning in Chapter 1, that introduces classes and objects. (The topics of these sections are listed later in this preface.)

New to this Edition

Thanks to constructive feedback from users of the first edition, this new edition incorporates a number of changes, including the following:

  • Chapter objectives and end-of-chapter summaries consisting of key words and notes have been added to help students identify the main concepts of each chapter.
  • The lengthy second chapter on types and expressions from the second edition has been split into two separate chapters.
  • A new final chapter on data structures has been added.
  • Case studies have been added in which a problem is presented, some ideas about how to solve it are given, and a complete solution, including both design and program code, is given on the book's Web site.
  • As noted earlier, special optional OBJECTive Thinking sections have been added, one in each chapter, that present classes and objects, beginning already in Chapter I . The approach here is a spiral one. The titles are as follows:
    • OBJECTive Thinking: Spheres as Objects
    • OBJECTive Thinking: Attribute Variables
    • OBJECTive Thinking: Initialization and Constructors
    • OBJECTive Thinking: Class Methods
    • OBJECTive Thinking: Instance Methods
    • OBJECTive Thinking: Mutator Methods
    • OBJECTive Thinking: Code Reuse through Inheritance
    • OBJECTive Thinking: Class Variables, Instance Variables, and Scope
    • OBJECTive Thinking: Objects and Streams
    • OBJECTive Thinking: Objects and Sequences
    • OBJECTive Thinking: Operator Overloading and Friends
    • OBJECTive Thinking: Inheritance and Polymorphism
    • OBJECTive Thinking: The Matrix Class Revisited
    • OBJECTive Thinking: Pointers and Polymorphism

These sections can be omitted without loss of continuity. They might be used by students taking a course for honors credit or for independent study by students needing more challenging work.

  • The history of computing section in Chapter 0 has been updated to include more events and photos, along with descriptions of more recent developments such as GUIs and networking.
  • Ann Marchant of George Mason University has updated and expanded her superb presentation of the major ethical issues in computing in Chapter 1.

The Breadth of Computing

Introducing the students to the breadth of the discipline of computing grows out of an important theme of curriculum recommendations of the Association of Computing Machinery (ACM) that an introductory course in computing should introduce the various knowledge areas of the discipline so that a solid base is established for later courses in computer science. To accomplish this, we have included optional Part of the Picture sections (some of which are introduced in the text with complete presentations on the book's Web site). They introduce the major areas of computer science, trying to capture the spirit of the curriculum guidelines in a natural, unobtrusive way. Several of them were written by experts in various areas of computing. They have been carefully selected to provide an overview of the discipline of computer science and to provide a foundation for further study in theoretical or applied computer science. Their titles include the following:

  • What Is Computer Science?
  • The History of Computing
  • Introduction to Computer Systems
  • Ethics and Issues (by Ann Marchant)
  • Data Representation
  • Computability Theory
  • Simulation
  • Boolean Logic and Digital Design
  • Computer Architecture (by William Stallings)
  • Introduction to Algorithm Analysis
  • Numerical Methods
  • Database Systems (by Keith Vander Linden)
  • Component Programming
  • Artificial Intelligence (by Keith Vander Linden)
  • The C++ Type Hierarchy
  • Algorithm Efficiency
  • Expert Systems

Other Features

  • The Web site cs.calvin.edu/books/c++/intro/3e will be maintained by the authors and will include corrections, additions, reference materials, and other supplementary materials such as solutions to case studies and some Part of the Picture sections.
  • Optional sections (marked with asterisks) delve into more advanced topics, without requiring that they be covered in a normal introductory course.
  • Programming Pointers at chapter ends highlight important points, including
    • proper techniques of design and style and
    • common programming pitfalls.
  • Approximately 500 Quick Quiz questions provide a quick check of understanding of the material being studied. The answers to all of the Quick Quiz questions are given in Appendix E.
  • Approximately 800 written exercises extend the Quick Quizzes and apply the material of the preceding section(s). No answers for these are provided in the text, therefore, they can be used for written assignments.
  • The Programming Problems sections at the chapter ends contain more than 300 programming problems drawn from a wide range of application areas.
  • A completely new design makes the text attractive and readable.
  • Color is used to emphasize and highlight important features.
  • Boxed displays make it easy to find descriptions of the basic C++ statements and constructs.
  • Icons serve as markers to point out key parts of the text.

CS1 & CS2

This book is the first of a series of two, which together provide a thorough presentation of the C++ language. This first volume introduces the essential ideas of C++ programming and the breadth of the discipline of computing, making it ideal for a one-semester course in computer science. The second volume, C++: An Introduction to Data Structures by Larry Nyhoff, covers the more advanced features of C++ programming (e.g., recursion, inheritance, and polymorphism) and introduces topics that are traditionally taught in the second course (including elementary data structures, algorithms, and complexity) and how these three topics converge in the C++ Standard Template Library. Together, these two texts provide the beginning computer-science student with a complete introduction to C++ and a solid introduction to the discipline of computer science. If you choose to take advantage of the two-semester option, your local Prentice Hall Sales Representative can

Supplementary Materials

  • Web sites at www.prenhall.com/adams and cs.calvin.edu/books/c++/intro/3e will contain source code, an online study guide, color screen snaps of graphical output, and links to important sites that correspond to items in the text. Other enrichment materials are also planned for inclusion on these Web sites.
  • The Instructors Resource CD-ROM contains most of the preceding items along with PowerPoint slides, as well as solutions to the exercises and many of the programming problems.
  • A Lab Manual containing laboratory exercises and projects coordinated with the text is available in hardcopy with access to an on-line version. It can be used with GNU C++, Borland's C++ Builder, Metrowerks CodeWarrior C++, and Microsoft's Visual C++.
  • Also available are software value pack options that include any of the following three software CD-ROM's: Borland's C++ Builder 6 Enterprise Trial Edition, CodeWarrior's Learning Edition Version 2.0, or Microsoft's Visual C++ 6.0.

Customer Reviews

Most Helpful Customer Reviews

See All Customer Reviews

C++: An Introduction to Computing 4 out of 5 based on 0 ratings. 2 reviews.
Guest More than 1 year ago
This book is great for people who want to learn C++ fast and don't know it at all. Its approach is to teach you a little bit about everything and add to that knowledge throughout the book. I learned a lot from it.
Guest More than 1 year ago
I understand this is an Introduction to Computing, but in a lot of cases the authors fail to work out further possibilities of certain programming functions. I believe there could have been a lot better explanation on arrays, especially the multidimensional arrays. Most examples given for the functions are limited in scope, so that an average student has a hard time understanding a little more complex tasks. A lot of ideas are given in the book, but not represented in a specific example, which leads to confusion.