Loading...

Messages

Proposals

Stuck in your homework and missing deadline? Get urgent help in $10/Page with 24 hours deadline

Get Urgent Writing Help In Your Essays, Assignments, Homeworks, Dissertation, Thesis Or Coursework & Achieve A+ Grades.

Privacy Guaranteed - 100% Plagiarism Free Writing - Free Turnitin Report - Professional And Experienced Writers - 24/7 Online Support

C++ how to program 7 e pdf

29/11/2021 Client: muhammad11 Deadline: 2 Day

Deitel® Ser How To Program Series

C How to Program, 6/E

C++ How to Program, 7/E

Java How to Program, 8/E, Early Objects Version

Java How to Program, 8/E, Late Objects Version

Internet & World Wide Web How to Program, 4/E

Visual Basic® 2008 How to Program

Visual C#® 2008 How to Program, 3/E

Visual C++® 2008 How to Program, 2/E

Small Java™ How to Program, 6/E

Small C++ How to Program, 5/E

Simply Series Simply C++: An Application-Driven

Tutorial Approach

Simply Java™ Programming: An Application-Driven Tutorial Approach

Simply C#: An Application-Driven Tutorial Approach

Simply Visual Basic® 2008, 3/E: An Application-Driven Tutorial Approach

CourseSmart Web Books www.deitel.com/books/CourseSmart.html

C++ How to Program, 5/E, 6/E & 7/E

Java How to Program, 6/E, 7/E & 8/E

Simply C++: An Application-Driven Tutorial Approach

Simply Visual Basic 2008: An Application-Driven Tutorial Approach, 3/E

Small C++ How to Program, 5/E

Small Java How to Program, 6/E

Visual Basic® 2008 How to Program

Visual C#® 2008 How to Program, 3/E

ies Page

www.deitel.com/books/CourseSmart.html
Deitel® Developer Series AJAX, Rich Internet Applications and

Web Development for Programmers

C++ for Programmers

C# 2008 for Programmers, 3/E

iPhone for Programmers: An App-Driven Approach

Java for Programmers

Javascript for Programmers

LiveLessons Video Learning Products www.deitel.com/books/LiveLessons/

Java Fundamentals Parts 1 and 2

C# Fundamentals Parts 1 and 2

C++ Fundamentals Parts 1 and 2

JavaScript Fundamentals Parts 1 and 2

To receive updates on Deitel publications, Resource Centers, training courses, partner offers and more, please register for the free Deitel® Buzz Online e-mail newsletter at: www.deitel.com/newsletter/subscribe.html

follow us on Twitter®

@deitel

and Facebook®

www.deitel.com/deitelfan/

To communicate with the authors, send e-mail to: deitel@deitel.com

For information on government and corporate Dive-Into® Series on-site seminars offered by Deitel & Associates, Inc. worldwide, visit: www.deitel.com/training/

or write to deitel@deitel.com

For continuing updates on Prentice Hall/Deitel publications visit: www.deitel.com www.pearsonhighered.com/deitel

Check out our Resource Centers for valuable web resources that will help you master Java, other important programming languages, software and Internet- and web-related topics: www.deitel.com/ResourceCenters.html

www.deitel.com/books/LiveLessons
www.deitel.com/newsletter/subscribe.html
www.deitel.com/deitelfan
www.deitel.com/training
www.deitel.com
www.pearsonhighered.com/deitel
www.deitel.com/ResourceCenters.html
Library of Congress Cataloging-in-Publication Data On file

Vice President and Editorial Director, ECS: Marcia J. Horton Editor-in-Chief, Computer Science: Michael Hirsch Associate Editor: Carole Snyder Supervisor/Editorial Assistant: Dolores Mars Director of Team-Based Project Management: Vince O’Brien Senior Managing Editor: Scott Disanno Managing Editor: Robert Engelhardt A/V Production Editor: Greg Dulles Art Director: Kristine Carney Cover Design: Abbey S. Deitel, Harvey M. Deitel, Francesco Santalucia, Kristine Carney Interior Design: Harvey M. Deitel, Kristine Carney Manufacturing Manager: Alexis Heydt-Long Manufacturing Buyer: Lisa McDowell Director of Marketing: Margaret Waples Marketing Manager: Erin Davis

© 2010 by Pearson Education, Inc. Upper Saddle River, New Jersey 07458

The authors and publisher of this book have used their best efforts in preparing this book. These efforts include the development, research, and testing of the theories and programs to determine their effectiveness. The authors and pub- lisher make no warranty of any kind, expressed or implied, with regard to these programs or to the documentation contained in this book. The authors and publisher shall not be liable in any event for incidental or consequential dam- ages in connection with, or arising out of, the furnishing, performance, or use of these programs.

Many of the designations used by manufacturers and sellers to distinguish their products are claimed as trademarks and registered trademarks. Where those designations appear in this book, and Prentice Hall and the authors were aware of a trademark claim, the designations have been printed in initial caps or all caps. All product names mentioned remain trademarks or registered trademarks of their respective owners.

All rights reserved. No part of this book may be reproduced, in any form or by any means, without permission in writing from the publisher.

Printed in the United States of America

10 9 8 7 6 5 4 3 2 1

ISBN-10: 0-13-612356-2

ISBN-13: 978-0-13-612356-9

Pearson Education Ltd., London Pearson Education Australia Pty. Ltd., Sydney Pearson Education Singapore, Pte. Ltd. Pearson Education North Asia Ltd., Hong Kong Pearson Education Canada, Inc., Toronto Pearson Educación de Mexico, S.A. de C.V. Pearson Education–Japan, Tokyo Pearson Education Malaysia, Pte. Ltd. Pearson Education, Inc., Upper Saddle River, New Jersey

Upper Saddle River, New Jersey 07458

P. J. Deitel Deitel & Associates, Inc.

H. M. Deitel Deitel & Associates, Inc.

Trademarks DEITEL, the double-thumbs-up bug and DIVE INTO are registered trademarks of Deitel and Associates, Inc.

Microsoft, Visual C++, Internet Explorer and the Windows logo are either registered trademarks or trade- marks of Microsoft Corporation in the United States and/or other countries.

In Memory of Clifford Stephens:

Your friendship, bright smile and infectious laugh will be truly missed.

Paul and Harvey Deitel

Deitel Resource Centers Our Resource Centers focus on the vast amounts of free content available online. Find resources, downloads, tutorials, documentation, books, e-books, journals, articles, blogs, RSS feeds and more on many of today’s hottest programming and technology topics. For the most up-to-date list of our Resource Centers, visit:

www.deitel.com/ResourceCenters.html

Let us know what other Resource Centers you’d like to see! Also, please register for the free Deitel®

Buzz Online e-mail newsletter at:

www.deitel.com/newsletter/subscribe.html

Computer Science Functional Programming Regular Expressions

Programming ASP.NET 3.5 Adobe Flex Ajax Apex ASP.NET Ajax ASP.NET C C++ C++ Boost Libraries C++ Game Programming C# Code Search Engines and

Code Sites Computer Game

Programming CSS 2.1 Dojo Facebook Developer Plat-

form Flash 9 Functional Programming Java Java Certification and

Assessment Testing Java Design Patterns Java EE 5 Java SE 6 Java SE 7 (Dolphin)

Resource Center JavaFX JavaScript JSON Microsoft LINQ Microsoft Popfly .NET .NET 3.0 .NET 3.5 OpenGL Perl PHP Programming Projects Python Regular Expressions Ruby Ruby on Rails Silverlight

UML Visual Basic Visual C++ Visual Studio Team Sys-

tem Web 3D Technologies Web Services Windows Presentation

Foundation XHTML XML

Apple iPhone Objective-C Cocoa

Games and Game Programming

Computer Game Pro- gramming

Computer Games Mobile Gaming Sudoku

Internet Business Affiliate Programs Competitive Analysis Facebook Social Ads Google AdSense Google Analytics Google Services Internet Advertising Internet Business

Initiative Internet Public Relations Link Building Location-Based Services Online Lead Generation Podcasting Search Engine Optimiza-

tion Selling Digital Content Sitemaps Web Analytics Website Monetization YouTube and AdSense

Java Java Java Certification and

Assessment Testing

Java Design Patterns Java EE 5 Java SE 6 Java SE 7 (Dolphin)

Resource Center JavaFX

Microsoft ASP.NET ASP.NET 3.5 ASP.NET Ajax C# DotNetNuke (DNN) Internet Explorer 7 (IE7) Microsoft LINQ .NET .NET 3.0 .NET 3.5 SharePoint Silverlight Visual Basic Visual C++ Visual Studio Team

System Windows Presentation

Foundation Windows Vista Microsoft Popfly

Open Source & LAMP Stack

Apache DotNetNuke (DNN) Eclipse Firefox Linux MySQL Open Source Perl PHP Python Ruby

Software Apache DotNetNuke (DNN) Eclipse Firefox Internet Explorer 7 (IE7) Linux MySQL

Open Source Search Engines SharePoint Skype Web Servers Wikis Windows Vista

Web 2.0 Alert Services Attention Economy Blogging Building Web

Communities Community Generated

Content Facebook Developer

Platform Facebook Social Ads Google Base Google Video Google Web Toolkit

(GWT) Internet Video Joost Location-Based Services Mashups Microformats Recommender Systems RSS Social Graph Social Media Social Networking Software as a Service

(SaaS) Virtual Worlds Web 2.0 Web 3.0 Widgets

Dive Into® Web 2.0 eBook

Web 2 eBook

Other Topics Computer Games Computing Jobs Gadgets and Gizmos Ring Tones Sudoku

www.deitel.com/ResourceCenters.html
www.deitel.com/newsletter/subscribe.html
Appendices E through I are PDF documents posted online at the book’s Companion Website (located at www.pearsonhighered.com/deitel).

Preface xxi

1 Introduction to Computers, the Internet and the Web 1

1.1 Introduction 2 1.2 Computers: Hardware and Software 3 1.3 Computer Organization 4 1.4 Personal, Distributed and Client/Server Computing 5 1.5 The Internet and the World Wide Web 5 1.6 Machine Languages, Assembly Languages and High-Level Languages 6 1.7 History of C 7 1.8 C Standard Library 8 1.9 C++ 9 1.10 Java 9 1.11 Fortran, COBOL, Pascal and Ada 10 1.12 BASIC, Visual Basic, Visual C++, C# and .NET 10 1.13 Key Software Trend: Object Technology 11 1.14 Typical C Program Development Environment 12 1.15 Hardware Trends 14 1.16 Notes About C and This Book 15 1.17 Web Resources 16

2 Introduction to C Programming 23 2.1 Introduction 24 2.2 A Simple C Program: Printing a Line of Text 24 2.3 Another Simple C Program: Adding Two Integers 28 2.4 Memory Concepts 33 2.5 Arithmetic in C 34 2.6 Decision Making: Equality and Relational Operators 38

3 Structured Program Development in C 54 3.1 Introduction 55 3.2 Algorithms 55

Contents

www.pearsonhighered.com/deitel
x Contents

3.3 Pseudocode 55 3.4 Control Structures 56 3.5 The if Selection Statement 58 3.6 The if…else Selection Statement 59 3.7 The while Repetition Statement 63 3.8 Formulating Algorithms Case Study 1: Counter-Controlled Repetition 64 3.9 Formulating Algorithms with Top-Down, Stepwise Refinement

Case Study 2: Sentinel-Controlled Repetition 66 3.10 Formulating Algorithms with Top-Down, Stepwise Refinement

Case Study 3: Nested Control Structures 73 3.11 Assignment Operators 77 3.12 Increment and Decrement Operators 78

4 C Program Control 97 4.1 Introduction 98 4.2 Repetition Essentials 98 4.3 Counter-Controlled Repetition 99 4.4 for Repetition Statement 100 4.5 for Statement: Notes and Observations 103 4.6 Examples Using the for Statement 103 4.7 switch Multiple-Selection Statement 107 4.8 do…while Repetition Statement 113 4.9 break and continue Statements 114 4.10 Logical Operators 116 4.11 Confusing Equality (==) and Assignment (=) Operators 119 4.12 Structured Programming Summary 121

5 C Functions 140 5.1 Introduction 141 5.2 Program Modules in C 141 5.3 Math Library Functions 142 5.4 Functions 144 5.5 Function Definitions 144 5.6 Function Prototypes 148 5.7 Function Call Stack and Activation Records 151 5.8 Headers 151 5.9 Calling Functions By Value and By Reference 152 5.10 Random Number Generation 153 5.11 Example: A Game of Chance 158 5.12 Storage Classes 161 5.13 Scope Rules 164 5.14 Recursion 167 5.15 Example Using Recursion: Fibonacci Series 170 5.16 Recursion vs. Iteration 174

Contents xi

6 C Arrays 195 6.1 Introduction 196 6.2 Arrays 196 6.3 Defining Arrays 198 6.4 Array Examples 198 6.5 Passing Arrays to Functions 212 6.6 Sorting Arrays 216 6.7 Case Study: Computing Mean, Median and Mode Using Arrays 218 6.8 Searching Arrays 223 6.9 Multiple-Subscripted Arrays 229

7 C Pointers 253 7.1 Introduction 254 7.2 Pointer Variable Definitions and Initialization 254 7.3 Pointer Operators 255 7.4 Passing Arguments to Functions by Reference 257 7.5 Using the const Qualifier with Pointers 261 7.6 Bubble Sort Using Call-by-Reference 267 7.7 sizeof Operator 270 7.8 Pointer Expressions and Pointer Arithmetic 273 7.9 Relationship between Pointers and Arrays 275 7.10 Arrays of Pointers 280 7.11 Case Study: Card Shuffling and Dealing Simulation 280 7.12 Pointers to Functions 285

8 C Characters and Strings 309 8.1 Introduction 310 8.2 Fundamentals of Strings and Characters 310 8.3 Character-Handling Library 312 8.4 String-Conversion Functions 317 8.5 Standard Input/Output Library Functions 322 8.6 String-Manipulation Functions of the String-Handling Library 326 8.7 Comparison Functions of the String-Handling Library 329 8.8 Search Functions of the String-Handling Library 331 8.9 Memory Functions of the String-Handling Library 337 8.10 Other Functions of the String-Handling Library 341

9 C Formatted Input/Output 356 9.1 Introduction 357 9.2 Streams 357 9.3 Formatting Output with printf 357 9.4 Printing Integers 358 9.5 Printing Floating-Point Numbers 359

xii Contents

9.6 Printing Strings and Characters 361 9.7 Other Conversion Specifiers 362 9.8 Printing with Field Widths and Precision 363 9.9 Using Flags in the printf Format Control String 366 9.10 Printing Literals and Escape Sequences 368 9.11 Reading Formatted Input with scanf 369

10 C Structures, Unions, Bit Manipulations and Enumerations 382

10.1 Introduction 383 10.2 Structure Definitions 383 10.3 Initializing Structures 386 10.4 Accessing Structure Members 386 10.5 Using Structures with Functions 388 10.6 typedef 388 10.7 Example: High-Performance Card Shuffling and Dealing Simulation 389 10.8 Unions 391 10.9 Bitwise Operators 394 10.10 Bit Fields 403 10.11 Enumeration Constants 406

11 C File Processing 417 11.1 Introduction 418 11.2 Data Hierarchy 418 11.3 Files and Streams 420 11.4 Creating a Sequential-Access File 421 11.5 Reading Data from a Sequential-Access File 426 11.6 Random-Access Files 430 11.7 Creating a Random-Access File 431 11.8 Writing Data Randomly to a Random-Access File 433 11.9 Reading Data from a Random-Access File 436 11.10 Case Study: Transaction-Processing Program 437

12 C Data Structures 454 12.1 Introduction 455 12.2 Self-Referential Structures 456 12.3 Dynamic Memory Allocation 456 12.4 Linked Lists 458 12.5 Stacks 466 12.6 Queues 472 12.7 Trees 478

13 C Preprocessor 495 13.1 Introduction 496

Contents xiii

13.2 #include Preprocessor Directive 496 13.3 #define Preprocessor Directive: Symbolic Constants 496 13.4 #define Preprocessor Directive: Macros 497 13.5 Conditional Compilation 499 13.6 #error and #pragma Preprocessor Directives 500 13.7 # and ## Operators 500 13.8 Line Numbers 501 13.9 Predefined Symbolic Constants 501 13.10 Assertions 502

14 Other C Topics 507 14.1 Introduction 508 14.2 Redirecting I/O 508 14.3 Variable-Length Argument Lists 509 14.4 Using Command-Line Arguments 511 14.5 Notes on Compiling Multiple-Source-File Programs 512 14.6 Program Termination with exit and atexit 514 14.7 volatile Type Qualifier 515 14.8 Suffixes for Integer and Floating-Point Constants 516 14.9 More on Files 516 14.10 Signal Handling 518 14.11 Dynamic Memory Allocation: Functions calloc and realloc 520 14.12 Unconditional Branching with goto 521

15 C++ as a Better C; Introducing Object Technology 528

15.1 Introduction 529 15.2 C++ 529 15.3 A Simple Program: Adding Two Integers 530 15.4 C++ Standard Library 532 15.5 Header Files 533 15.6 Inline Functions 535 15.7 References and Reference Parameters 537 15.8 Empty Parameter Lists 542 15.9 Default Arguments 542 15.10 Unary Scope Resolution Operator 544 15.11 Function Overloading 545 15.12 Function Templates 548 15.13 Introduction to Object Technology and the UML 551 15.14 Wrap-Up 554

16 Introduction to Classes and Objects 560 16.1 Introduction 561 16.2 Classes, Objects, Member Functions and Data Members 561

xiv Contents

16.3 Defining a Class with a Member Function 562 16.4 Defining a Member Function with a Parameter 566 16.5 Data Members, set Functions and get Functions 569 16.6 Initializing Objects with Constructors 576 16.7 Placing a Class in a Separate File for Reusability 579 16.8 Separating Interface from Implementation 583 16.9 Validating Data with set Functions 589 16.10 Wrap-Up 594

17 Classes: A Deeper Look, Part 1 601 17.1 Introduction 602 17.2 Time Class Case Study 603 17.3 Class Scope and Accessing Class Members 609 17.4 Separating Interface from Implementation 611 17.5 Access Functions and Utility Functions 612 17.6 Time Class Case Study: Constructors with Default Arguments 615 17.7 Destructors 620 17.8 When Constructors and Destructors are Called 621 17.9 Time Class Case Study: A Subtle Trap—Returning a Reference to a

private Data Member 624 17.10 Default Memberwise Assignment 627 17.11 Wrap-Up 629

18 Classes: A Deeper Look, Part 2 635 18.1 Introduction 636 18.2 const (Constant) Objects and const Member Functions 636 18.3 Composition: Objects as Members of Classes 645 18.4 friend Functions and friend Classes 651 18.5 Using the this Pointer 654 18.6 static Class Members 659 18.7 Data Abstraction and Information Hiding 664 18.8 Wrap-Up 666

19 Operator Overloading 672 19.1 Introduction 673 19.2 Fundamentals of Operator Overloading 674 19.3 Restrictions on Operator Overloading 675 19.4 Operator Functions as Class Members vs. Global Function 676 19.5 Overloading Stream Insertion and Stream Extraction Operators 678 19.6 Overloading Unary Operators 681 19.7 Overloading Binary Operators 682 19.8 Dynamic Memory Management 682 19.9 Case Study: Array Class 684 19.10 Converting between Types 696

Contents xv

19.11 Building a String Class 697 19.12 Overloading ++ and -- 698 19.13 Case Study: A Date Class 700 19.14 Standard Library Class string 704 19.15 explicit Constructors 708 19.16 Proxy Classes 711 19.17 Wrap-Up 715

20 Object-Oriented Programming: Inheritance 727 20.1 Introduction 728 20.2 Base Classes and Derived Classes 729 20.3 protected Members 732 20.4 Relationship between Base Classes and Derived Classes 732

20.4.1 Creating and Using a CommissionEmployee Class 733 20.4.2 Creating a BasePlusCommissionEmployee Class Without

Using Inheritance 738 20.4.3 Creating a CommissionEmployee–BasePlusCommissionEmployee

Inheritance Hierarchy 743 20.4.4 CommissionEmployee–BasePlusCommissionEmployee

Inheritance Hierarchy Using protected Data 748 20.4.5 CommissionEmployee–BasePlusCommissionEmployee

Inheritance Hierarchy Using private Data 755 20.5 Constructors and Destructors in Derived Classes 762 20.6 public, protected and private Inheritance 770 20.7 Software Engineering with Inheritance 771 20.8 Wrap-Up 772

21 Object-Oriented Programming: Polymorphism 778 21.1 Introduction 779 21.2 Polymorphism Examples 780 21.3 Relationships Among Objects in an Inheritance Hierarchy 781

21.3.1 Invoking Base-Class Functions from Derived-Class Objects 782 21.3.2 Aiming Derived-Class Pointers at Base-Class Objects 789 21.3.3 Derived-Class Member-Function Calls via Base-Class Pointers 790 21.3.4 Virtual Functions 792 21.3.5 Summary of the Allowed Assignments Between Base-Class

and Derived-Class Objects and Pointers 798 21.4 Type Fields and switch Statements 799 21.5 Abstract Classes and Pure virtual Functions 799 21.6 Case Study: Payroll System Using Polymorphism 801

21.6.1 Creating Abstract Base Class Employee 803 21.6.2 Creating Concrete Derived Class SalariedEmployee 806 21.6.3 Creating Concrete Derived Class HourlyEmployee 808 21.6.4 Creating Concrete Derived Class CommissionEmployee 811

xvi Contents

21.6.5 Creating Indirect Concrete Derived Class BasePlusCommissionEmployee 813

21.6.6 Demonstrating Polymorphic Processing 814 21.7 (Optional) Polymorphism, Virtual Functions and Dynamic Binding

“Under the Hood” 818 21.8 Case Study: Payroll System Using Polymorphism and Runtime Type

Information with Downcasting, dynamic_cast, typeid and type_info 822 21.9 Virtual Destructors 826 21.10 Wrap-Up 826

22 Templates 832 22.1 Introduction 833 22.2 Function Templates 833 22.3 Overloading Function Templates 837 22.4 Class Templates 837 22.5 Nontype Parameters and Default Types for Class Templates 844 22.6 Notes on Templates and Inheritance 845 22.7 Notes on Templates and Friends 845 22.8 Notes on Templates and static Members 846 22.9 Wrap-Up 846

23 Stream Input/Output 851 23.1 Introduction 852 23.2 Streams 853

23.2.1 Classic Streams vs. Standard Streams 853 23.2.2 iostream Library Header Files 854 23.2.3 Stream Input/Output Classes and Objects 854

23.3 Stream Output 857 23.3.1 Output of char * Variables 857 23.3.2 Character Output Using Member Function put 857

23.4 Stream Input 858 23.4.1 get and getline Member Functions 858 23.4.2 istream Member Functions peek, putback and ignore 861 23.4.3 Type-Safe I/O 861

23.5 Unformatted I/O Using read, write and gcount 861 23.6 Introduction to Stream Manipulators 862

23.6.1 Integral Stream Base: dec, oct, hex and setbase 863 23.6.2 Floating-Point Precision (precision, setprecision) 864 23.6.3 Field Width (width, setw) 865 23.6.4 User-Defined Output Stream Manipulators 866

23.7 Stream Format States and Stream Manipulators 868 23.7.1 Trailing Zeros and Decimal Points (showpoint) 868 23.7.2 Justification (left, right and internal) 869 23.7.3 Padding (fill, setfill) 871 23.7.4 Integral Stream Base (dec, oct, hex, showbase) 872

Contents xvii

23.7.5 Floating-Point Numbers; Scientific and Fixed Notation (scientific, fixed) 873

23.7.6 Uppercase/Lowercase Control (uppercase) 874 23.7.7 Specifying Boolean Format (boolalpha) 874 23.7.8 Setting and Resetting the Format State via Member

Function flags 875 23.8 Stream Error States 877 23.9 Tying an Output Stream to an Input Stream 879 23.10 Wrap-Up 879

24 Exception Handling 889 24.1 Introduction 890 24.2 Exception-Handling Overview 891 24.3 Example: Handling an Attempt to Divide by Zero 891 24.4 When to Use Exception Handling 897 24.5 Rethrowing an Exception 898 24.6 Exception Specifications 900 24.7 Processing Unexpected Exceptions 901 24.8 Stack Unwinding 901 24.9 Constructors, Destructors and Exception Handling 903 24.10 Exceptions and Inheritance 904 24.11 Processing new Failures 904 24.12 Class auto_ptr and Dynamic Memory Allocation 907 24.13 Standard Library Exception Hierarchy 909 24.14 Other Error-Handling Techniques 911 24.15 Wrap-Up 912

A Operator Precedence Charts 919

B ASCII Character Set 923

C Number Systems 924 C.1 Introduction 925 C.2 Abbreviating Binary Numbers as Octal and Hexadecimal Numbers 928 C.3 Converting Octal and Hexadecimal Numbers to Binary Numbers 929 C.4 Converting from Binary, Octal or Hexadecimal to Decimal 929 C.5 Converting from Decimal to Binary, Octal or Hexadecimal 930 C.6 Negative Binary Numbers: Two’s Complement Notation 932

D Game Programming: Solving Sudoku 937 D.1 Introduction 937 D.2 Deitel Sudoku Resource Center 938 D.3 Solution Strategies 938

xviii Contents

D.4 Programming Sudoku Puzzle Solvers 942 D.5 Generating New Sudoku Puzzles 943 D.6 Conclusion 945

Appendices on the Web 946 Appendices E through I are PDF documents posted online at the book’s Companion Website (located at www.pearsonhighered.com/deitel).

E Game Programming with the Allegro C Library I E.1 Introduction II E.2 Installing Allegro II E.3 A Simple Allegro Program III E.4 Simple Graphics: Importing Bitmaps and Blitting IV E.5 Animation with Double Buffering IX E.6 Importing and Playing Sounds XVI E.7 Keyboard Input XX E.8 Fonts and Displaying Text XXV E.9 Implementing the Game of Pong XXXI E.10 Timers in Allegro XXXVII E.11 The Grabber and Allegro Datafiles XLII E.12 Other Allegro Capabilities LI E.13 Allegro Resource Center LII

F Sorting: A Deeper Look LVIII F.1 Introduction LIX F.2 Big O Notation LIX F.3 Selection Sort LX F.4 Insertion Sort LXIV F.5 Merge Sort LXVII

G Introduction to C99 LXXVIII G.1 Introduction LXXIX G.2 Support for C99 LXXIX G.3 New C99 Headers LXXX G.4 // Comments LXXX G.5 Mixing Declarations and Executable Code LXXXI G.6 Declaring a Variable in a for Statement Header LXXXII G.7 Designated Initializers and Compound Literals LXXXIV G.8 Type bool LXXXVII G.9 Implicit int in Function Declarations LXXXVIII G.10 Complex Numbers LXXXIX G.11 Variable-Length Arrays XC

www.pearsonhighered.com/deitel
Contents xix

G.12 The snprintf Function: Helping Avoid Hacker Attacks XCIII G.13 Additions to the Preprocessor XCV G.14 Other C99 Features XCVI G.15 Web Resources XCIX

H Using the Visual Studio Debugger CIV H.1 Introduction CV H.2 Breakpoints and the Continue Command CV H.3 Locals and Watch Windows CIX H.4 Controlling Execution Using the Step Into, Step Over, Step Out

and Continue Commands CXII H.5 Autos Window CXIV H.6 Wrap-Up CXVI

I Using the GNU Debugger CXVIII I.1 Introduction CXIX I.2 Breakpoints and the run, stop, continue and print Commands CXIX I.3 print and set Commands CXXIV I.4 Controlling Execution Using the step, finish and next Commands CXXVI I.5 watch Command CXXVIII I.6 Wrap-Up CXXX

Index 947

This page intentionally left blank

Welcome to the C programming language—and to C++, too! This book presents leading- edge computing technologies for students, instructors and software development profes- sionals.

At the heart of the book is the Deitel signature “live-code approach.” Concepts are presented in the context of complete working programs, rather than in code snippets. Each code example is immediately followed by one or more sample executions. All the source code is available at www.deitel.com/books/chtp6/.

We believe that this book and its support materials will give you an informative, inter- esting, challenging and entertaining introduction to C.

As you read the book, if you have questions, send an e-mail to deitel@deitel.com; we’ll respond promptly. For updates on this book and its supporting C and C++ software, and for the latest news on all Deitel publications and services, visit www.deitel.com.

New and Updated Features Here are the updates we’ve made for C How to Program, 6/e:

• “Making a Difference” Exercises Set. We encourage you to use computers and the Internet to research and solve problems that really matter. These new exercises are meant to increase awareness of important issues the world is facing. We hope you’ll approach them with your own values, politics and beliefs.

• Tested All Code on Windows and Linux. We’ve tested every program (the exam- ples and the exercises) using both Visual C++ 2008 and GNU GCC 4.3. The code examples and exercise code solutions were also tested using Visual Studio 2010 Beta.

• New Design. The book has a new interior design that graphically serves to orga- nize, clarify and highlight the information, and enhances the book’s pedagogy.

• Improved Terminology Sections. We’ve added page numbers for the defining oc- currences of all terms in the terminology lists for easy reference.

• Updated Coverage of C++ and Object-Oriented Programming. We updated Chapters 15–24 on object-oriented programming in C++ with material from our just published C++ How to Program, 7/e.

• Titled Programming Exercises. We’ve titled all the programming exercises. This helps instructors tune assignments for their classes.

• New Web Appendices. Chapters 15–17 from the previous edition are now search- able PDF Appendices E–G, available on the Companion Website (see the access card at the front of the book).

Preface

www.deitel.com/books/chtp6
www.deitel.com
xxii Preface

• New Debugger Appendices. We also added new debugging appendices for Visual C++® 2008 and GNU gdb.

• Order of Evaluation. We added cautions about order of evaluation issues.

• We replaced all uses of gets (from ) with fgets, because gets is now deprecated.

• Additional Exercises. We added more function pointer exercises. We also added the Fibonacci exercise project that improves the Fibonacci recursion example (tail recursion).

• Secure C Programming Resource Center. We’ve posted a new Secure C Program- ming Resource Center at www.deitel.com/SecureC/. We’ve also added notes about secure C programming to the introductions in Chapter 7, Pointers, and Chapter 8, Strings.

• Game Programming with Allegro. We updated the chapter on game program- ming with the Allegro C library. In particular, we added instructions on installing the Allegro libraries for use with Visual C++® 2008 and GNU GCC 4.3.

• Coverage of the C99 Standard. We updated and enhanced the detailed appendix on C99, which was reviewed by John Benito, Convener of ISO WG14—the Working Group responsible for the C Programming Language Standard. Each C99 concept is now keyed to the section where it can be taught earlier in the book. C99 is not incorporated throughout the book because Microsoft does not yet support it and a large percentage of C courses use Microsoft's Visual C++®

compiler. For additional information, check out the C99 Standard section in our C Resource center at www.deitel.com/C/. You'll find features of C99, articles from experts, the differences between Standard C and C99, FAQs, downloads and more.

• C++-Style // Comments. We discuss C++-style // comments early for instructors and students who’d prefer to use them. Although Microsoft C does not yet sup- port C99, it does support C99’s comments, which are borrowed from C++.

• C Standard Library. Section 1.8 now references P.J. Plauger’s Dinkumware web- site (www.dinkumware.com/manuals/default.aspx) where students can find thorough searchable documentation for the C Standard Library functions.

Other Features Other features of C How to Program, 6/e, include:

Game Programming with the Allegro C Game Programming Library Appendix E introduces the Allegro game programming C library. This library—originally developed by Climax game programmer Shawn Hargreaves—was created to be a powerful tool for programming games in C while still remaining relatively simple compared to oth- er, more complicated graphics libraries such as DirectX and OpenGL. In Appendix E, we use Allegro’s capabilities to create the simple game of Pong. Along the way, we demon- strate how to display graphics, play sounds, receive input from the keyboard and create timed events—features you can use to create games of your own. Students and instructors

www.deitel.com/SecureC
www.deitel.com/C
www.dinkumware.com/manuals/default.aspx
Web-Based Materials xxiii

alike will find Allegro challenging and entertaining. We include extensive web resources in our Allegro Resource Center (www.deitel.com/allegro), one of which offers more than 1000 open-source Allegro games.

Sorting: A Deeper Look Sorting places data in order, based on one or more sort keys. We begin our presentation of sorting with a simple algorithm in Chapter 6. In Appendix F, we present a deeper look at sorting. We consider several algorithms and compare them with regard to their memory consumption and processor demands. For this purpose, we introduce Big O notation, which indicates how hard an algorithm may have to work to solve a problem. Through examples and exercises, Appendix F discusses the selection sort, insertion sort, recursive merge sort, recursive selection sort, bucket sort and recursive Quicksort.

Web-Based Materials This book is supported by substantial online materials. The book’s Companion Website (www.pearsonhighered.com/deitel; see the access card at the front of the book) contains the following appendices in searchable PDF format:

• Appendix E, Game Programming with the Allegro C Library

• Appendix F, Sorting: A Deeper Look

• Appendix G, Introduction to C99

• Appendix H, Using the Visual Studio Debugger

• Appendix I, Using the GNU Debugger

Dependency Charts The dependency charts in Figs. 1–2 show the dependencies among the chapters to help instructors plan their syllabi. C How to Program, 6/e is appropriate for CS1 and CS2 cours- es, and intermediate-level C and C++ programming courses. The C++ part of the book assumes that you have studied the C part.

Teaching Approach C How to Program, 6/e, contains a rich collection of examples. We concentrate on demon- strating the principles of good software engineering and stressing program clarity.

Live-Code Approach. C How to Program, 6/e, is loaded with “live-code” examples. Most new concepts are presented in the context of complete working C applications, followed by one or more executions showing program inputs and outputs.

Syntax Shading For readability, we syntax shade the code, similar to the way most integrated-development environments and code editors syntax color code. Our syntax-shading conventions are:

comments appear like this keywords appear like this constants and literal values appear like this all other code appears in black

www.deitel.com/allegro
www.pearsonhighered.com/deitel
xxiv Preface

Code Highlighting We place gray rectangles around the key code.

Using Fonts for Emphasis. We place the key terms and the index’s page reference for each defining occurrence in bold blue text for easy reference. We emphasize on-screen compo- nents in the bold Helvetica font (e.g., the File menu) and C program text in the Lucida font (for example, int x = 5;).

Web Access. All of the source-code examples are available for download from:

Fig. 1 | C chapter dependency chart.

www.deitel.com/books/chtp6/

Introduction 1 Introduction to Computers,

the Internet and the Web

Intro to Programming 2 Intro to C Programming

Control Statements, Functions and Arrays

3 Structured Program Development in C

4 C Program Control

5 C Functions

6 C Arrays

Pointers and Strings

8 C Characters and Strings

7 C Pointers

5.14–5.16 Recursion

12 C Data Structures

F Sorting: A Deeper Look

Data Structures

Other Topics, Game Programming and C99

C Chapter Dependency Chart [Note: Arrows pointing into a chapter indicate that chapter’s dependencies.]

G Introduction to C99

E Game Programming with the Allegro C Library

10 C Structures, Unions, Bit Manipulations and Enumerations

Aggregate Types

Streams and Files

11 C File Processing

9 C Formatted Input/Output

13 C Preprocessor

14 Other C Topics

www.deitel.com/books/chtp6
Teaching Approach xxv

Quotations. Each chapter begins with quotations. We hope that you enjoy relating these to the chapter material.

Objectives. The quotes are followed by a list of chapter objectives.

Illustrations/Figures. Abundant charts, tables, line drawings, UML diagrams, programs and program output are included.

Programming Tips We include programming tips to help you focus on important aspects of program devel- opment. These tips and practices represent the best we’ve gleaned from a combined seven decades of programming and teaching experience.

Fig. 2 | C++ chapter dependency chart.

Good Programming Practice The Good Programming Practices call attention to techniques that will help you pro- duce programs that are clearer, more understandable and more maintainable.

Common Programming Error Pointing out these Common Programming Errors reduces the likelihood that you’ll make them.

Error-Prevention Tip These tips contain suggestions for exposing and removing bugs from your programs; many describe aspects of C that prevent bugs from getting into programs in the first place.

Object-Based Programming

C++ Chapter Dependency Chart

18 Classes: A Deeper Look, Part 2

17 Classes: A Deeper Look, Part 1

19 Operator Overloading

Object-Oriented Programming

23 Stream Input/Output

20 OOP: Inheritance

22 Templates21 OOP: Polymorphism

24 Exception Handling

15 C++ as a Better C; Intro to Object Technology

16 Intro to Classes and Objects

[Note: Arrows pointing into a chapter indicate that chapter’s dependencies.]

xxvi Preface

Summary Bullets. We present a section-by-section, bullet-list summary of the chapter.

Terminology. We include an alphabetized list of the important terms defined in each chap- ter with the page number of each term’s defining occurrence for easy reference.

Self-Review Exercises and Answers. Extensive self-review exercises and answers are includ- ed for self-study.

Exercises. Each chapter concludes with a substantial set of exercises including:

• simple recall of important terminology and concepts,

• identifying the errors in code samples,

• writing individual C statements,

• writing small portions of functions and classes,

• writing complete C functions, classes and programs, and

• major projects.

Instructors can use these exercises to form homework assignments, short quizzes, major ex- aminations and term projects. [NOTE: Please do not write to us requesting access to the Pearson Instructor’s Resource Center which contains the book’s instructor supple- ments, including the exercise solutions. Access is limited strictly to college instructors teaching from the book. Instructors may obtain access only through their Pearson rep- resentatives. Solutions are not provided for “project” exercises.] Check out our Program- ming Projects Resource Center (www.deitel.com/ProgrammingProjects/) for lots of additional exercise and project possibilities.

Index. We’ve included an extensive index, which is especially useful when you use the book as a reference. Defining occurrences of key terms are highlighted with a bold blue page number.

Student Resources Many C and C++ development tools are available. We wrote C How to Program, 6/e primar- ily using Microsoft’s free Visual C++® Express Edition (which is available free for download at www.microsoft.com/express/vc/) and the free GNU C++ (gcc.gnu.org/install/ binaries.html), which is already installed on most Linux systems and can be installed on

Performance Tip These tips highlight opportunities for making your programs run faster or minimizing the amount of memory that they occupy.

Portability Tip The Portability Tips help you write code that will run on a variety of platforms.

Software Engineering Observation The Software Engineering Observations highlight architectural and design issues that affect the construction of software systems, especially large-scale systems.

www.deitel.com/ProgrammingProjects
www.microsoft.com/express/vc
CourseSmart Web Books xxvii

Mac OS X and Windows systems as well. You can learn more about Visual C++® Express at msdn.microsoft.com/vstudio/express/visualc. You can learn more about GNU C++ at gcc.gnu.org. Apple includes GNU C++ in their Xcode development tools, which Max OS X users can download from developer.apple.com/tools/xcode.

You can download the book’s examples and additional resources from:

For additional resources and software downloads see our C Resource Center:

For other C and C++ compilers that are available free for download:

CourseSmart Web Books Today’s students and instructors have increasing demands on their time and money. Pear- son has responded to that need by offering digital texts and course materials online through CourseSmart. CourseSmart allows faculty to review course materials online sav- ing time and costs. It is also environmentally sound and offers students a high-quality dig- ital version of the text for as much as 50% off the cost of a print copy of the text. Students receive the same content offered in the print textbook enhanced by search, note-taking, and printing tools. For more information, visit www.coursesmart.com.

Software for the Book This book includes the Microsoft® Visual Studio® 2008 Express Editions All-in-One DVD, which contains the Visual C++® 2008 Express Edition (and other Microsoft devel- opment tools). You can also download the latest version of Visual C++ Express Edition from:

Per Microsoft’s website, Express Editions are “lightweight, easy-to-use and easy-to-learn tools for the hobbyist, novice and student developer.” They are appropriate for academic courses and for professionals who do not have access to a complete version of Visual Studio 2008.

With the exception of one example in Chapter 9, C Formatted Input/Output, and the examples in Appendix G, Introduction to C99, all of the examples in this book com- pile and run in Visual C++® 2008 and the beta version of Visual C++® 2010. All of the examples compile and run in GNU GCC 4.3. GCC is available for most platforms, including Linux, Mac OS X (via Xcode) and Windows—via tools like Cygwin (www.cygwin.com) and MinGW (www.mingw.org).

Instructor Supplements The following supplements are available to qualified instructors only through Pearson Education’s Instructor Resource Center (www.pearsonhighered.com/irc):

• Solutions Manual with solutions to most of the end-of-chapter exercises.

www.deitel.com/books/chtp6/

www.deitel.com/c/

www.thefreecountry.com/developercity/ccompilers.shtml www.compilers.net/Dir/Compilers/CCpp.htm

www.microsoft.com/express/vc

www.deitel.com/books/chtp6
www.deitel.com/c
www.thefreecountry.com/developercity/ccompilers.shtml
www.compilers.net/Dir/Compilers/CCpp.htm
www.coursesmart.com
www.microsoft.com/express/vc
www.cygwin.com
www.mingw.org
www.pearsonhighered.com/irc
www.deitel.com/books/chtp6/
www.deitel.com/c/
www.thefreecountry.com/developercity/ccompilers.shtml
www.compilers.net/Dir/Compilers/CCpp.htm
xxviii Preface

• Test Item File of multiple-choice questions (approximately two per book section)

• Customizable PowerPoint® slides containing all the code and figures in the text, plus bulleted items that summarize key points in the text

If you are not already a registered faculty member, contact your Pearson representative or visit www.pearsonhighered.com/educator/replocator/.

Deitel® Buzz Online Free E-mail Newsletter The Deitel® Buzz Online e-mail newsletter will keep you posted about issues related to C How to Program, 6/e. It also includes commentary on industry trends and developments, links to free articles and resources from our published books and upcoming publications, product-release schedules, errata, challenges, anecdotes, information on our corporate in- structor-led training courses and more. To subscribe, visit

The Deitel Online Resource Centers Our website www.deitel.com provides more than 100 Resource Centers on various topics including programming languages, software development, Web 2.0, Internet business and open-source projects—see the list of Resource Centers in the first few pages of this book and visit www.deitel.com/ResourceCenters.html. We’ve found many exceptional re- sources online, including tutorials, documentation, software downloads, articles, blogs, podcasts, videos, code samples, books, e-books and more—most of them are free. Each week we announce our latest Resource Centers in our newsletter, the Deitel® Buzz Online. Some of the Resource Centers you might find helpful while studying this book are C, C++, C++ Boost Libraries, C++ Game Programming, Visual C++, UML, Code Search Engines and Code Sites, Game Programming and Programming Projects.

Follow Deitel on Twitter and Facebook To receive updates on Deitel publications, Resource Centers, training courses, partner offers and more, follow us on Twitter®

and join the Deitel & Associates group on Facebook®

Acknowledgments It’s a pleasure to acknowledge the efforts of people whose names do not appear on the cov- er, but whose hard work, cooperation, friendship and understanding were crucial to the book’s production. Many people at Deitel & Associates, Inc., devoted long hours to this project—thanks especially to Abbey Deitel and Barbara Deitel.

We would also like to thank the participants of our Honors Internship program who contributed to this publication—Christine Chen, an Operations Research and Informa- tion Engineering major at Cornell University; and Matthew Pearson, a Computer Science graduate of Cornell University.

www.deitel.com/newsletter/subscribe.html

@deitel

www.deitel.com/deitelfan/

www.pearsonhighered.com/educator/replocator/
www.deitel.com/newsletter/subscribe.html
www.deitel.com
www.deitel.com/ResourceCenters.html
www.deitel.com/deitelfan/
Acknowledgments xxix

We are fortunate to have worked on this project with the dedicated team of publishing professionals at Pearson. We appreciate the efforts of Marcia Horton, Editorial Director of Pearson’s Engineering and Computer Science Division, and Michael Hirsch, Editor-in- Chief of Computer Science. Carole Snyder recruited the book’s review team and managed the review process. Francesco Santalucia (an independent artist) and Kristine Carney of Pearson designed the book’s cover—we provided the concept, and they made it happen. Scott Disanno and Bob Engelhardt managed the book’s production. Erin Davis and Mar- garet Waples marketed the book through academic and professional channels.

C How to Program, 6/e Reviewers We wish to acknowledge the efforts of our reviewers. Adhering to a tight time schedule, they scrutinized the text and the programs and provided countless suggestions for improv- ing the accuracy and completeness of the presentation:

• John Benito, Blue Pilot Consulting, Inc. and Convener of ISO WG14—the Working Group responsible for the C Programming Language Standard.

• Xiaolong Li, Indiana State University

• Tom Rethard, The University of Texas at Arlington

C How to Program, 5/e Reviewers • Alireza Fazelpour (Palm Beach Community College)

• Don Kostuch (Independent Consultant)

• Ed James Beckham (Altera)

• Gary Sibbitts (St. Louis Community College at Meramec)

• Ian Barland (Radford University)

• Kevin Mark Jones (Hewlett Packard)

• Mahesh Hariharan (Microsoft)

• William Mike Miller (Edison Design Group, Inc.)

• Benjamin Seyfarth (Univeristy of Southern Mississippi)

• William Albrecht (University of South Florida)

• William Smith (Tulsa Community College)

Allegro Reviewers for C How to Program, 5/e • Shawn Hargreaves (Software Design Engineer, Microsoft Xbox)

• Matthew Leverton (Founder and Webmaster of Allegro.cc)

• Ryan Patterson (Independent Consultant)

• Douglas Walls (Senior Staff Engineer, C compiler, Sun Microsystems)

C99 Reviewers for C How to Program, 5/e • Lawrence Jones, (UGS Corp.)

• Douglas Walls (Senior Staff Engineer, C compiler, Sun Microsystems)

xxx Preface

Well, there you have it! C is a powerful programming language that will help you write programs quickly and effectively. C scales nicely into the realm of enterprise systems development to help organizations build their business-critical and mission-critical infor- mation systems. As you read the book, we would sincerely appreciate your comments, crit- icisms, corrections and suggestions for improving the text. Please address all correspondence to:

We’ll respond promptly, and post corrections and clarifications on:

We hope you enjoy working with C How to Program, Sixth Edition as much as we enjoyed writing it!

Paul Deitel Harvey Deitel Maynard, Massachusetts August 2009

About the Authors Paul J. Deitel, CEO and Chief Technical Officer of Deitel & Associates, Inc., is a graduate of MIT’s Sloan School of Management, where he studied Information Technology. Through Deitel & Associates, Inc., he has delivered C, C++, Java, C#, Visual Basic and Internet programming courses to industry clients, including Cisco, IBM, Sun Microsys- tems, Dell, Lucent Technologies, Fidelity, NASA at the Kennedy Space Center, the Na- tional Severe Storm Laboratory, White Sands Missile Range, Rogue Wave Software, Boeing, SunGard Higher Education, Stratus, Cambridge Technology Partners, Open En- vironment Corporation, One Wave, Hyperion Software, Adra Systems, Entergy, Cable- Data Systems, Nortel Networks, Puma, iRobot, Invensys and many more. He holds the Java Certified Programmer and Java Certified Developer certifications and has been des- ignated by Sun Microsystems as a Java Champion. He has also lectured on Java and C++ for the Boston Chapter of the Association for Computing Machinery. He and his co- author, Dr. Harvey M. Deitel, are the world’s best-selling programming-language text- book authors.

Dr. Harvey M. Deitel, Chairman and Chief Strategy Officer of Deitel & Associates, Inc., has 48 years of academic and industry experience in the computer field. Dr. Deitel earned B.S. and M.S. degrees from MIT and a Ph.D. from Boston University. He has extensive college teaching experience, including earning tenure and serving as the Chairman of the Computer Science Department at Boston College before founding Deitel & Associates, Inc., with his son, Paul J. Deitel. He and Paul are the co-authors of dozens of books and multimedia packages and they are writing many more. With transla- tions published in Japanese, German, Russian, Traditional Chinese, Simplified Chinese, Spanish, Korean, French, Polish, Italian, Portuguese, Greek, Urdu and Turkish, the Dei- tels’ texts have earned international recognition. Dr. Deitel has delivered hundreds of pro- fessional seminars to major corporations, academic institutions, government organizations and the military.

deitel@deitel.com

www.deitel.com/books/chtp6/

www.deitel.com/books/chtp6/
About Deitel & Associates, Inc. xxxi

About Deitel & Associates, Inc. Deitel & Associates, Inc., is an internationally recognized authoring and corporate train- ing organization specializing in computer programming languages, Internet and web soft- ware technology, object-technology education and iPhone applications development. The company provides instructor-led courses delivered at client sites worldwide on major programming languages and platforms, such as C, C++, Visual C++®, Java™, Visual C#®, Visual Basic®, XML®, Python®, object technology, Internet and web programming, iP- hone programming and a growing list of additional programming and software-develop- ment-related courses. The founders of Deitel & Associates, Inc., are Paul J. Deitel and Dr. Harvey M. Deitel. The company’s clients include many of the world’s largest companies, government agencies, branches of the military, and academic institutions. Through its 33- year publishing partnership with Prentice Hall/Pearson, Deitel & Associates, Inc., pub- lishes leading-edge programming textbooks, professional books, interactive multimedia Cyber Classrooms, LiveLessons video courses (online at www.safaribooksonline.com and on DVD at www.deitel.com/books/livelessons/), and e-content for popular course- management systems.

Deitel & Associates, Inc., and the authors can be reached via e-mail at:

To learn more about Deitel & Associates, Inc., its publications and its Dive Into®

Series Corporate Training curriculum delivered at client locations worldwide, visit:

and subscribe to the free Deitel® Buzz Online e-mail newsletter at:

Individuals wishing to purchase Deitel books, and LiveLessons DVD and web-based training courses can do so through www.deitel.com. Bulk orders by corporations, the gov- ernment, the military and academic institutions should be placed directly with Pearson. For more information, visit www.prenhall.com/mischtm/support.html#order.

deitel@deitel.com

www.deitel.com/training/

www.deitel.com/newsletter/subscribe.html

www.safaribooksonline.com
www.deitel.com/books/livelessons/
www.deitel.com/training/
www.deitel.com/newsletter/subscribe.html
www.deitel.com
www.prenhall.com/mischtm/support.html#order
This page intentionally left blank

1Introduction to Computers, the Internet and the Web The chief merit of language is clearness. —Galen

Our life is frittered away by detail. … Simplify, simplify. —Henry David Thoreau

He had a wonderful talent for packing thought close, and rendering it portable. —Thomas B. Macaulay

Man is still the most extraordinary computer of all. —John F. Kennedy

O b j e c t i v e s In this chapter, you’ll learn:

■ Basic computer concepts.

■ The different types of programming languages.

■ The history of the C programming language.

■ The purpose of the C Standard Library.

■ The elements of a typical C program development environment.

■ How C provides a foundation for further study of programming languages in general and of C++, Java and C# in particular.

■ The history of the Internet and the World Wide Web.

2 Chapter 1 Introduction to Computers, the Internet and the Web

1.1 Introduction Welcome to C and C++! We’ve worked hard to create what we hope you’ll find to be an informative, entertaining and challenging learning experience. C is a powerful computer programming language that is appropriate for technically oriented people with little or no programming experience and for experienced programmers to use in building substantial information systems. C How to Program, Sixth Edition, is an effective learning tool for each of these audiences.

The core of the book emphasizes achieving program clarity through the proven tech- niques of structured programming. You’ll learn programming the right way from the beginning. We’ve attempted to write in a clear and straightforward manner. The book is abundantly illustrated. Perhaps most important, the book presents hundreds of complete working programs and shows the outputs produced when those programs are run on a computer. We call this the “live-code approach.” All of these example programs may be downloaded from our website www.deitel.com/books/chtp6/.

Most people are familiar with the exciting tasks computers perform. Using this text- book, you’ll learn how to command computers to perform those tasks. It’s software (i.e., the instructions you write to command computers to perform actions and make decisions) that controls computers (often referred to as hardware). This text introduces program- ming in C, which was standardized in 1989 as ANSI X3.159-1989 in the United States through the American National Standards Institute (ANSI), then worldwide through the efforts of the International Standards Organization (ISO). We call this Standard C. We also introduce C99 (ISO/IEC 9899:1999)—the latest version of the C standard. C99 has not yet been universally adopted, so we chose to discuss it in (optional) Appendix G. A new C standard, which has been informally named C1X, is under development and likely to be published around 2012.

Optional Appendix E presents the Allegro game programming C library. The appendix shows how to use Allegro to create a simple game. We show how to display graphics and smoothly animate objects, and we explain additional features such as sound,

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

Summary |Terminology | Self-Review Exercises | Answers to Self-Review Exercises | Exercises | Making a Difference

www.deitel.com/books/chtp6/
1.2 Computers: Hardware and Software 3

keyboard input and text output. The appendix includes web links and resources that point you to over 1000 Allegro games and to tutorials on advanced Allegro techniques.

Computer use is increasing in most fields of endeavor. Computing costs have decreased dramatically due to rapid developments in both hardware and software technologies. Com- puters that might have filled large rooms and cost millions of dollars a few decades ago can now be inscribed on silicon chips smaller than a fingernail, costing a few dollars each. Those large computers were called mainframes and current versions are widely used today in busi- ness, government and industry. Fortunately, silicon is one of the most abundant materials on earth—it’s an ingredient in common sand. Silicon chip technology has made computing so economical that more than a billion general-purpose computers are in use worldwide, helping people in business, industry and government, and in their personal lives. Billions more special purpose computers are used in intelligent electronic devices like car navigation systems, energy-saving appliances and game controllers.

C++, an object-oriented programming language based on C, is of such interest today that we’ve included a detailed introduction to C++ and object-oriented programming in Chapters 15–24. In the programming languages marketplace, many key vendors market a combined C/C++ product rather than offering separate products. This enables users to con- tinue programming in C if they wish, then gradually migrate to C++ when it’s appropriate.

To keep up to date with C and C++ developments at Deitel & Associates, register for our free e-mail newsletter, the Deitel® Buzz Online, at

Check out our growing list of C and related Resource Centers at

Some Resource Centers that will be valuable to you as you read the C portion of this book are C, Code Search Engines and Code Sites, Computer Game Programming and Pro- gramming Projects. Each week we announce our latest Resource Centers in the newsletter. Errata and updates for this book are posted at

You’re embarking on a challenging and rewarding path. As you proceed, if you have any questions, send e-mail to

We’ll respond promptly. We hope that you’ll enjoy C How to Program, Sixth Edition.

1.2 Computers: Hardware and Software A computer is a device that can perform computations and make logical decisions billions of times faster than human beings can. For example, many of today’s personal computers can perform several billion additions per second. A person operating a desk calculator could spend an entire lifetime performing calculations and still not complete as many cal- culations as a powerful personal computer can perform in one second! (Points to ponder: How would you know whether the person added the numbers correctly? How would you know whether the computer added the numbers correctly?) Today’s fastest supercomput- ers can perform thousands of trillions (quadrillions) of instructions per second! To put that

www.deitel.com/newsletter/subscribe.html

www.deitel.com/ResourceCenters.html

www.deitel.com/books/chtp6/

deitel@deitel.com

www.deitel.com/newsletter/subscribe.html
www.deitel.com/ResourceCenters.html
www.deitel.com/books/chtp6/
4 Chapter 1 Introduction to Computers, the Internet and the Web

in perspective, a quadrillion-instruction-per-second computer can perform more than 100,000 calculations per second for every person on the planet!

Computers process data under the control of sets of instructions called computer pro- grams. These programs guide the computer through orderly sets of actions specified by people called computer programmers.

A computer consists of various devices referred to as hardware (e.g., the keyboard, screen, mouse, hard disk, memory, DVDs and processing units). The programs that run on a computer are referred to as software. Hardware costs have been declining dramatically in recent years, to the point that personal computers have become a commodity. In this book, you’ll learn proven methods that are reducing software development costs—structured pro- gramming (in the C chapters) and object-oriented programming (in the C++ chapters).

1.3 Computer Organization Regardless of differences in physical appearance, virtually every computer may be envi- sioned as divided into six logical units or sections:

1. Input unit. This “receiving” section obtains information (data and computer programs) from input devices and places it at the disposal of the other units so that it can be processed. Humans typically enter information into computers through keyboards and mouse devices. Information also can be entered in many other ways, including by speaking to your computer, scanning images and bar- codes, reading from secondary storage devices (like hard drives, CD drives, DVD drives and USB drives—also called “thumb drives”) and having your computer receive information from the Internet (such as when you download videos from YouTube™, e-books from Amazon and the like).

2. Output unit. This “shipping” section takes information that the computer has processed and places it on various output devices to make it available for use out- side the computer. Most information that is output from computers today is dis- played on screens, printed on paper, played on audio players (such as Apple’s popular iPods), or used to control other devices. Computers also can output their information to networks, such as the Internet.

3. Memory unit. This rapid-access, relatively low-capacity “warehouse” section re- tains information that has been entered through the input unit, making it imme- diately available for processing when needed. The memory unit also retains processed information until it can be placed on output devices by the output unit. Information in the memory unit is volatile—it’s typically lost when the comput- er’s power is turned off. The memory unit is often called either memory or pri- mary memory.

4. Arithmetic and logic unit (ALU). This “manufacturing” section performs calcu- lations, such as addition, subtraction, multiplication and division. It also contains the decision mechanisms that allow the computer, for example, to compare two items from the memory unit to determine whether they’re equal. In today’s sys- tems, the ALU is usually implemented as part of the next logical unit, the CPU.

5. Central processing unit (CPU). This “administrative” section coordinates and su- pervises the operation of the other sections. The CPU tells the input unit when to

1.4 Personal, Distributed and Client/Server Computing 5

Homework is Completed By:

Writer Writer Name Amount Client Comments & Rating
Instant Homework Helper

ONLINE

Instant Homework Helper

$36

She helped me in last minute in a very reasonable price. She is a lifesaver, I got A+ grade in my homework, I will surely hire her again for my next assignments, Thumbs Up!

Order & Get This Solution Within 3 Hours in $25/Page

Custom Original Solution And Get A+ Grades

  • 100% Plagiarism Free
  • Proper APA/MLA/Harvard Referencing
  • Delivery in 3 Hours After Placing Order
  • Free Turnitin Report
  • Unlimited Revisions
  • Privacy Guaranteed

Order & Get This Solution Within 6 Hours in $20/Page

Custom Original Solution And Get A+ Grades

  • 100% Plagiarism Free
  • Proper APA/MLA/Harvard Referencing
  • Delivery in 6 Hours After Placing Order
  • Free Turnitin Report
  • Unlimited Revisions
  • Privacy Guaranteed

Order & Get This Solution Within 12 Hours in $15/Page

Custom Original Solution And Get A+ Grades

  • 100% Plagiarism Free
  • Proper APA/MLA/Harvard Referencing
  • Delivery in 12 Hours After Placing Order
  • Free Turnitin Report
  • Unlimited Revisions
  • Privacy Guaranteed

6 writers have sent their proposals to do this homework:

24/7 Assignment Help
Instant Assignments
Quality Homework Helper
Instant Homework Helper
Assignment Helper
Top Rated Expert
Writer Writer Name Offer Chat
24/7 Assignment Help

ONLINE

24/7 Assignment Help

I can assist you in plagiarism free writing as I have already done several related projects of writing. I have a master qualification with 5 years’ experience in; Essay Writing, Case Study Writing, Report Writing.

$18 Chat With Writer
Instant Assignments

ONLINE

Instant Assignments

I have done dissertations, thesis, reports related to these topics, and I cover all the CHAPTERS accordingly and provide proper updates on the project.

$22 Chat With Writer
Quality Homework Helper

ONLINE

Quality Homework Helper

As per my knowledge I can assist you in writing a perfect Planning, Marketing Research, Business Pitches, Business Proposals, Business Feasibility Reports and Content within your given deadline and budget.

$15 Chat With Writer
Instant Homework Helper

ONLINE

Instant Homework Helper

I am an academic and research writer with having an MBA degree in business and finance. I have written many business reports on several topics and am well aware of all academic referencing styles.

$46 Chat With Writer
Assignment Helper

ONLINE

Assignment Helper

As per my knowledge I can assist you in writing a perfect Planning, Marketing Research, Business Pitches, Business Proposals, Business Feasibility Reports and Content within your given deadline and budget.

$49 Chat With Writer
Top Rated Expert

ONLINE

Top Rated Expert

This project is my strength and I can fulfill your requirements properly within your given deadline. I always give plagiarism-free work to my clients at very competitive prices.

$32 Chat With Writer

Let our expert academic writers to help you in achieving a+ grades in your homework, assignment, quiz or exam.

Similar Homework Questions

Baxley brothers has a dso of 23 days - Purchasing state lottery tickets is reinforced - Woolworths third party fire and theft insurance - Which of the following statements are false regarding a boxplot? - Legislation testimony advocacy statement - Expected and augmented customer service - Iga nagambie trading hours - Gsun solar panels review - Looking at movies 5th edition chapter 1 - Supreme court act bahamas - Leadership theories matrix ldr 300 - Writing Assignment - Marketers and senior managers like to see graphical - The turning tim winton movie - Fine the answer from paragraph - Baa baa black sheep piano keys - Project team leadership presentation cpmgt 300 - Music History - Why does banquo not trust the witches - What is ebay's marketing strategy - Speech - Hypothesis for projectile motion - Dah sing bank share price - Essay - Naplan 2014 year 9 numeracy answers - Institutional Treatment of Criminal Offender - The Correctional Client. - Art history formal analysis example - Four beacons moreton bay - Mecklenburg county health department - ERM Question - Spare the rod spoil the child psychological explanation - Freedom rides charles perkins - Unit test part 2 polynomials - Stage 1 assignment IFSM 300 - Security Awareness Training Program - Work hd - Atradius dutch state business - Ra granite fabricators paterson nj - Competitive priorities in operations management ppt - Xs l7t spark plug - James baldwin give me liberty quote - Explain two barriers to entry for a new business - Examples of right prisms - Topic 7 DQ 2 - What is the similarity between a structure union and enumeration - Final p - Criminal law - How long has gerber been around - Gibbs free energy worksheet - Bibl 104 bible dictionary project - Data integrity breaches - Assessing the Quantitative Analytical Approaches in Health Care Literature - Black flower of civilized society - Lagaan Screening movie review - Tumby bay medical centre - Best seo services in pakistan - Different types of maps - 972 464 7674 - University of florida biostatistics - 4 52 times 4 52 as a fraction - Macquarie equities limited chess sponsor - Acsf level 3 test - 2015 hsc general maths answers - Pos m1 discussion - Processing Porous and Non-Porous Surfaces - Arthrex biceps tenodesis kit - An electrician's side-cutting pliers could properly be used to - Hp virtual connect default password - Outbreak at watersedge answers - Carestream vita cr system software download - Wsj.com/activate3 - One step equations with fractions worksheet - Everybody look left everybody look right lyrics - City high caramel instrumental - Security Architecture and Design - Assignment: Fishbone Diagram - Lab 2 separation of a mixture chemistry 1 answers - A thin walled double pipe counterflow heat exchanger - King lear iambic pentameter - Adam and eve albrecht durer engraving - Cumulative listing literary technique example - International journal of design - Euroa wool denim jeans - Gluten and dairy-free cookbook pdf - Standard current density of copper wire - Appraisal Form - Nahco3 hcl net ionic equation - An american childhood questions - Incredible crew suzy sewer princess - Gung ho book discussion questions - Pluralism and assimilation in rites of passage - Hr case study scenarios worksheet answers - _____ involves eliminating a specific threat, usually by eliminating its causes. - Thesis statement on colorism - 2 coments each one 150 words (CITATION AND REFERENCE) - Edwin muir the horses - Invisible man chapter 3 questions and answers - Social work professional values - Their eyes were watching god pdf - Reduction of camphor with sodium borohydride - Conk hair watsons go to birmingham