Menu Expand
Visual C# 2012 How to Program, International Edition

Visual C# 2012 How to Program, International Edition

Harvey Deitel | Paul Deitel

(2015)

Additional Information

Book Details

Abstract

Appropriate for all basic-to-intermediate level courses in Visual C# 2012 programming.

 

Created by world-renowned programming instructors Paul and Harvey Deitel, Visual C# 2012 How to Program, Fifth Edition introduces all facets of the C# 2012 language hands-on, through hundreds of working programs. This book has been thoroughly updated to reflect the major innovations Microsoft has incorporated in Visual C# 2012; all discussions and sample code have been carefully audited against the newest Visual C# language specification.
Students begin by getting comfortable with the C# Express 2012 IDE and basic Visual C# syntax. Next, they build their skills one step at a time, mastering control structures, classes, objects, methods, variables, arrays, and the core techniques of object-oriented programming. With this strong foundation in place, the Deitels introduce more sophisticated techniques, including searching, sorting, data structures, generics, and collections. Throughout, the authors show students how to make the most of Microsoft’s Visual Studio tools. A series of appendices provide essential programming reference material.


Table of Contents

Section Title Page Action Price
Cover Cover
Contents 7
Preface 19
Before You Begin 35
1 Introduction to Computers, the Internet and Visual C 39
1.1 Introduction 40
1.2 Hardware and Moore’s Law 40
1.3 Data Hierarchy 41
1.4 Computer Organization 44
1.5 Machine Languages, Assembly Languages and High-Level Languages 45
1.6 Object Technology 46
1.7 Internet and World Wide Web 48
1.8 C 50
1.8.1 Object-Oriented Programming 50
1.8.2 Event-Driven Programming 50
1.8.3 Visual Programming 50
1.8.4 An International Standard; Other C 50
1.8.5 Internet and Web Programming 51
1.8.6 Introducing async/await 51
1.8.7 Other Key Contemporary Programming Languages 51
1.9 Microsoft’s .NET 52
1.9.1 .NET Framework 52
1.9.2 Common Language Runtime 53
1.9.3 Platform Independence 53
1.9.4 Language Interoperability 53
1.10 Microsoft’s Windows® Operating System 54
1.11 Windows Phone 8 for Smartphones 55
1.11.1 Selling Your Apps in the Windows Phone Marketplace 56
1.11.2 Free vs. Paid Apps 56
1.11.3 Testing Your Windows Phone Apps 56
1.12 Windows Azure™ and Cloud Computing 57
1.13 Visual Studio Express 2012 Integrated Development Environment 57
1.14 Painter Test-Drive in Visual Studio Express 2012 for Windows Desktop 57
1.15 Painter Test-Drive in Visual Studio Express 2012 for Windows 8 61
2 Dive Into® Visual Studio Express 2012 for Windows Desktop 71
2.1 Introduction 72
2.2 Overview of the Visual Studio Express 2012 IDE 72
2.3 Menu Bar and Toolbar 77
2.4 Navigating the Visual Studio IDE 79
2.4.1 Solution Explorer 81
2.4.2 Toolbox 82
2.4.3 Properties Window 82
2.5 Using Help 84
2.6 Using Visual App Development to Create a Simple App that Displays Text and an Image 85
2.7 Wrap-Up 95
2.8 Web Resources 96
3 Introduction to C 103
3.1 Introduction 104
3.2 A Simple C 104
3.3 Creating a Simple App in Visual Studio 110
3.4 Modifying Your Simple C 115
3.5 Formatting Text with Console.Write and Console.WriteLine 118
3.6 Another C 119
3.7 Memory Concepts 123
3.8 Arithmetic 124
3.9 Decision Making: Equality and Relational Operators 128
3.10 Wrap-Up 132
4 Introduction to Classes, Objects, Methods and strings 144
4.1 Introduction 145
4.2 Classes, Objects, Methods, Properties and Instance Variables 145
4.3 Declaring a Class with a Method and Instantiating an Object of a Class 146
4.4 Declaring a Method with a Parameter 151
4.5 Instance Variables and Properties 154
4.6 UML Class Diagram with a Property 159
4.7 Software Engineering with Properties and set and get Accessors 159
4.8 Auto-Implemented Properties 161
4.9 Value Types vs. Reference Types 161
4.10 Initializing Objects with Constructors 163
4.11 Floating-Point Numbers and Type decimal 166
4.12 Wrap-Up 172
5 Control Statements: Part 1 180
5.1 Introduction 181
5.2 Algorithms 181
5.3 Pseudocode 182
5.4 Control Structures 182
5.5 if Single-Selection Statement 184
5.6 if…else Double-Selection Statement 186
5.7 while Repetition Statement 190
5.8 Formulating Algorithms: Counter-Controlled Repetition 192
5.9 Formulating Algorithms: Sentinel-Controlled Repetition 196
5.10 Formulating Algorithms: Nested Control Statements 204
5.11 Compound Assignment Operators 209
5.12 Increment and Decrement Operators 209
5.13 Simple Types 212
5.14 Wrap-Up 213
6 Control Statements: Part 2 227
6.1 Introduction 228
6.2 Essentials of Counter-Controlled Repetition 228
6.3 for Repetition Statement 229
6.4 Examples Using the for Statement 233
6.5 do…while Repetition Statement 237
6.6 switch Multiple-Selection Statement 239
6.7 break and continue Statements 247
6.8 Logical Operators 249
6.9 Structured-Programming Summary 254
6.10 Wrap-Up 259
7 Methods: A Deeper Look 269
7.1 Introduction 270
7.2 Packaging Code in C 270
7.3 static Methods, static Variables and Class Math 272
7.4 Declaring Methods with Multiple Parameters 274
7.5 Notes on Declaring and Using Methods 278
7.6 Method-Call Stack and Activation Records 279
7.7 Argument Promotion and Casting 280
7.8 The .NET Framework Class Library 281
7.9 Case Study: Random-Number Generation 283
7.9.1 Scaling and Shifting Random Numbers 287
7.9.2 Random-Number Repeatability for Testing and Debugging 288
7.10 Case Study: A Game of Chance; Introducing Enumerations 288
7.11 Scope of Declarations 293
7.12 Method Overloading 296
7.13 Optional Parameters 298
7.14 Named Parameters 300
7.15 Recursion 301
7.16 Passing Arguments: Pass-by-Value vs. Pass-by-Reference 304
7.17 Wrap-Up 307
8 Arrays; Introduction to Exception Handling 323
8.1 Introduction 324
8.2 Arrays 324
8.3 Declaring and Creating Arrays 326
8.4 Examples Using Arrays 327
8.4.1 Creating and Initializing an Array 327
8.4.2 Using an Array Initializer 328
8.4.3 Calculating a Value to Store in Each Array Element 329
8.4.4 Summing the Elements of an Array 330
8.4.5 Using Bar Charts to Display Array Data Graphically 331
8.4.6 Using the Elements of an Array as Counters 333
8.4.7 Using Arrays to Analyze Survey Results; Introduction to Exception Handling 334
8.5 Case Study: Card Shuffling and Dealing Simulation 337
8.6 foreach Statement 341
8.7 Passing Arrays and Array Elements to Methods 343
8.8 Passing Arrays by Value and by Reference 345
8.9 Case Study: GradeBook Using an Array to Store Grades 349
8.10 Multidimensional Arrays 354
8.11 Case Study: GradeBook Using a Rectangular Array 359
8.12 Variable-Length Argument Lists 365
8.13 Using Command-Line Arguments 367
8.14 Wrap-Up 369
9 Introduction to LINQ and the List Collection 389
9.1 Introduction 390
9.2 Querying an Array of int Values Using LINQ 391
9.3 Querying an Array of Employee Objects Using LINQ 395
9.4 Introduction to Collections 400
9.5 Querying a Generic Collection Using LINQ 403
9.6 Wrap-Up 405
9.7 Deitel LINQ Resource Center 405
10 Classes and Objects: A Deeper Look 409
10.1 Introduction 410
10.2 Time Class Case Study 410
10.3 Controlling Access to Members 414
10.4 Referring to the Current Object’s Members with the this Reference 415
10.5 Time Class Case Study: Overloaded Constructors 417
10.6 Default and Parameterless Constructors 423
10.7 Composition 424
10.8 Garbage Collection and Destructors 427
10.9 static Class Members 428
10.10 readonly Instance Variables 431
10.11 Data Abstraction and Encapsulation 432
10.12 Class View and Object Browser 434
10.13 Object Initializers 436
10.14 Wrap-Up 436
11 Object-Oriented Programming: Inheritance 443
11.1 Introduction 444
11.2 Base Classes and Derived Classes 445
11.3 protected Members 447
11.4 Relationship between Base Classes and Derived Classes 448
11.4.1 Creating and Using a CommissionEmployee Class 448
11.4.2 Creating a BasePlusCommissionEmployee Class without Using Inheritance 453
11.4.3 Creating a CommissionEmployee–BasePlusCommissionEmployee Inheritance Hierarchy 458
11.4.4 CommissionEmployee–BasePlusCommissionEmployee Inheritance Hierarchy Using protected Instance Variables 461
11.4.5 CommissionEmployee–BasePlusCommissionEmployee Inheritance Hierarchy Using private Instance Variables 466
11.5 Constructors in Derived Classes 471
11.6 Software Engineering with Inheritance 472
11.7 Class object 472
11.8 Wrap-Up 473
12 OOP: Polymorphism, Interfaces and Operator Overloading 479
12.1 Introduction 480
12.2 Polymorphism Examples 482
12.3 Demonstrating Polymorphic Behavior 483
12.4 Abstract Classes and Methods 486
12.5 Case Study: Payroll System Using Polymorphism 488
12.5.1 Creating Abstract Base Class Employee 489
12.5.2 Creating Concrete Derived Class SalariedEmployee 491
12.5.3 Creating Concrete Derived Class HourlyEmployee 493
12.5.4 Creating Concrete Derived Class CommissionEmployee 495
12.5.5 Creating Indirect Concrete Derived Class BasePlusCommissionEmployee 496
12.5.6 Polymorphic Processing, Operator is and Downcasting 498
12.5.7 Summary of the Allowed Assignments Between Base-Class and Derived-Class Variables 503
12.6 sealed Methods and Classes 504
12.7 Case Study: Creating and Using Interfaces 504
12.7.1 Developing an IPayable Hierarchy 506
12.7.2 Declaring Interface IPayable 507
12.7.3 Creating Class Invoice 507
12.7.4 Modifying Class Employee to Implement Interface IPayable 509
12.7.5 Modifying Class SalariedEmployee for Use with IPayable 511
12.7.6 Using Interface IPayable to Process Invoices and Employees Polymorphically 512
12.7.7 Common Interfaces of the .NET Framework Class Library 514
12.8 Operator Overloading 515
12.9 Wrap-Up 518
13 Exception Handling: A Deeper Look 524
13.1 Introduction 525
13.2 Example: Divide by Zero without Exception Handling 526
13.3 Example: Handling DivideByZeroExceptions and FormatExceptions 529
13.3.1 Enclosing Code in a try Block 531
13.3.2 Catching Exceptions 531
13.3.3 Uncaught Exceptions 532
13.3.4 Termination Model of Exception Handling 533
13.3.5 Flow of Control When Exceptions Occur 533
13.4 .NET Exception Hierarchy 534
13.4.1 Class SystemException 534
13.4.2 Determining Which Exceptions a Method Throws 535
13.5 finally Block 535
13.6 The using Statement 542
13.7 Exception Properties 543
13.8 User-Defined Exception Classes 547
13.9 Wrap-Up 551
14 Graphical User Interfaces with Windows Forms: Part 1 556
14.1 Introduction 557
14.2 Windows Forms 558
14.3 Event Handling 560
14.3.1 A Simple Event-Driven GUI 560
14.3.2 Auto-Generated GUI Code 562
14.3.3 Delegates and the Event-Handling Mechanism 564
14.3.4 Another Way to Create Event Handlers 565
14.3.5 Locating Event Information 566
14.4 Control Properties and Layout 567
14.5 Labels, TextBoxes and Buttons 571
14.6 GroupBoxes and Panels 574
14.7 CheckBoxes and RadioButtons 577
14.8 PictureBoxes 585
14.9 ToolTips 587
14.10 NumericUpDown Control 589
14.11 Mouse-Event Handling 591
14.12 Keyboard-Event Handling 594
14.13 Wrap-Up 597
15 Graphical User Interfaces with Windows Forms: Part 2 607
15.1 Introduction 608
15.2 Menus 608
15.3 MonthCalendar Control 617
15.4 DateTimePicker Control 618
15.5 LinkLabel Control 621
15.6 ListBox Control 625
15.7 CheckedListBox Control 629
15.8 ComboBox Control 632
15.9 TreeView Control 636
15.10 ListView Control 641
15.11 TabControl Control 647
15.12 Multiple Document Interface (MDI) Windows 652
15.13 Visual Inheritance 659
15.14 User-Defined Controls 664
15.15 Wrap-Up 668
16 Strings and Characters: A Deeper Look 676
16.1 Introduction 677
16.2 Fundamentals of Characters and Strings 678
16.3 string Constructors 679
16.4 string Indexer, Length Property and CopyTo Method 680
16.5 Comparing strings 681
16.6 Locating Characters and Substrings in strings 684
16.7 Extracting Substrings from strings 687
16.8 Concatenating strings 688
16.9 Miscellaneous string Methods 689
16.10 Class StringBuilder 690
16.11 Length and Capacity Properties, EnsureCapacity Method and Indexer of Class StringBuilder 691
16.12 Append and AppendFormat Methods of Class StringBuilder 693
16.13 Insert, Remove and Replace Methods of Class StringBuilder 695
16.14 Char Methods 698
16.15 (Online) Introduction to Regular Expressions 700
16.16 Wrap-Up 701
17 Files and Streams 707
17.1 Introduction 708
17.2 Data Hierarchy 708
17.3 Files and Streams 710
17.4 Classes File and Directory 711
17.5 Creating a Sequential-Access Text 720
17.6 Reading Data from a Sequential-Access Text File 729
17.7 Case Study: Credit Inquiry Program 733
17.8 Serialization 739
17.9 Creating a Sequential-Access File Using Object Serialization 740
17.10 Reading and Deserializing Data from a Binary File 744
17.11 Wrap-Up 746
18 Searching and Sorting 753
18.1 Introduction 754
18.2 Searching Algorithms 755
18.2.1 Linear Search 755
18.2.2 Binary Search 759
18.3 Sorting Algorithms 764
18.3.1 Selection Sort 764
18.3.2 Insertion Sort 768
18.3.3 Merge Sort 772
18.4 Summary of the Efficiency of Searching and Sorting Algorithms 778
18.5 Wrap-Up 779
19 Data Structures 784
19.1 Introduction 785
19.2 Simple-Type structs, Boxing and Unboxing 785
19.3 Self-Referential Classes 786
19.4 Linked Lists 787
19.5 Stacks 800
19.6 Queues 804
19.7 Trees 807
19.7.1 Binary Search Tree of Integer Values 808
19.7.2 Binary Search Tree of IComparable Objects 815
19.8 Wrap-Up 820
20 Generics 827
20.1 Introduction 828
20.2 Motivation for Generic Methods 829
20.3 Generic-Method Implementation 831
20.4 Type Constraints 834
20.5 Overloading Generic Methods 836
20.6 Generic Classes 837
20.7 Wrap-Up 846
21 Collections 852
21.1 Introduction 853
21.2 Collections Overview 853
21.3 Class Array and Enumerators 856
21.4 Nongeneric Collections 859
21.4.1 Class ArrayList 859
21.4.2 Class Stack 864
21.4.3 Class Hashtable 866
21.5 Generic Collections 871
21.5.1 Generic Class SortedDictionary 872
21.5.2 Generic Class LinkedList 874
21.6 Covariance and Contravariance for Generic Types 878
21.7 Wrap-Up 881
22 Databases and LINQ 887
22.1 Introduction 888
22.2 Relational Databases 889
22.3 A Books Database 890
22.4 LINQ to Entities and the ADO.NET Entity Framework 894
22.5 Querying a Database with LINQ 895
22.5.1 Creating the ADO.NET Entity Data Model Class Library 896
22.5.2 Creating a Windows Forms Project and Configuring It to Use the Entity Data Model 900
22.5.3 Data Bindings Between Controls and the Entity Data Model 902
22.6 Dynamically Binding Query Results 907
22.6.1 Creating the Display Query Results GUI 908
22.6.2 Coding the Display Query Results App 909
22.7 Retrieving Data from Multiple Tables with LINQ 912
22.8 Creating a Master/Detail View App 917
22.8.1 Creating the Master/Detail GUI 918
22.8.2 Coding the Master/Detail App 919
22.9 Address Book Case Study 921
22.9.1 Creating the Address Book App’s GUI 922
22.9.2 Coding the Address Book App 923
22.10 Tools and Web Resources 927
22.11 Wrap-Up 927
23 Web App Development with ASP.NET 935
23.1 Introduction 936
23.2 Web Basics 937
23.3 Multitier App Architecture 938
23.4 Your First Web App 940
23.4.1 Building the WebTime App 942
23.4.2 Examining WebTime.aspx’s Code-Behind File 951
23.5 Standard Web Controls: Designing a Form 952
23.6 Validation Controls 956
23.7 Session Tracking 963
23.7.1 Cookies 964
23.7.2 Session Tracking with HttpSessionState 965
23.7.3 Options.aspx: Selecting a Programming Language 966
23.7.4 Recommendations.aspx: Displaying Recommendations Based on Session Values 970
23.8 Case Study: Database-Driven ASP.NET Guestbook 971
23.8.1 Building a Web Form that Displays Data from a Database 973
23.8.2 Modifying the Code-Behind File for the Guestbook App 978
23.9 Online Case Study: ASP.NET AJAX 979
23.10 Online Case Study: Password-Protected Books Database App 980
23.11 Wrap-Up 980
Chapters on the Web 987
A: Operator Precedence Chart 988
B: Simple Types 990
C: ASCII Character Set 992
Appendices on the Web 993
Index 995
A 995
B 996
C 997
D 1000
E 1001
F 1002
G 1003
H 1004
I 1004
J 1005
K 1005
L 1006
M 1007
N 1008
O 1009
P 1010
Q 1011
R 1011
S 1012
T 1015
U 1016
V 1016
W 1017
X 1017
Y 1017
Z 1017