描述
开 本: 16开纸 张: 胶版纸包 装: 平装-胶订是否套装: 否国际标准书号ISBN: 9787121369292丛书名: 国外计算机科学教材系列
*提供了很多的基础的、覆盖面很广的实例。
*各类性能提示与编程提示。
*介绍C#6中的新功能,函数式编程。
*介绍了C11标准的功能。
第1章 计算机、Internet和Visual C#简介 1
1.1 简介 1
1.2 在行业和研究领域的计算机与Internet 2
1.3 硬件和软件 3
1.4 数据层次 4
1.5 机器语言、汇编语言和高级语言 6
1.6 对象技术 7
1.7 Internet和WWW 9
1.8 C# 10
1.9 Microsoft的 .NET 13
1.10 Windows操作系统 14
1.11 Visual Studio集成开发环境 15
1.12 在Visual Studio Community中测试Painter程序 15
自测题 17
自测题答案 18
练习题 19
挑战题 20
与挑战题相关的资源 21
第2章 Visual Studio和可视化编程简介 22
2.1 简介 22
2.2 Visual Studio Community 2015 IDE概述 22
2.3 菜单栏和工具栏 26
2.4 Visual Studio IDE概览 27
2.5 Help菜单与上下文相关帮助 30
2.6 可视化编程:创建显示文本和图像的简单程序 30
2.7 小结 36
2.8 Web资源 36
摘要 37
术语表 38
自测题 38
自测题答案 39
练习题 39
第3章 C#编程入门 43
3.1 简介 44
3.2 一个简单程序:显示一行文本 44
3.3 在VIsual Studio中创建简单的程序 48
3.4 修改C#程序 52
3.5 字符串插值 54
3.6 另一个C#程序:整数相加 54
3.7 内存概念 57
3.8 算术运算 58
3.9 判断:相等性运算符与关系运算符 60
3.10 小结 64
摘要 64
术语表 66
自测题 67
自测题答案 68
练习题 70
挑战题 73
第4章 类、对象、方法和string简介 74
4.1 简介 75
4.2 测试一个Account类 75
4.3 包含实例变量、Set方法和Get方法的Account类 77
4.4 创建、编译和运行带两个类的Visual C#项目 81
4.5 包含Set方法和Get方法的软件工程 82
4.6 具有属性而不是Set方法和Get方法的Account类 82
4.7 自动实现的属性 85
4.8 Account类:用构造函数初始化对象 86
4.9 具有余额的Account类以及货币值处理 88
4.10 小结 92
摘要 93
术语表 96
自测题 97
自测题答案 97
练习题 98
挑战题 99
第5章 算法设计与控制语句(1) 100
5.1 简介 101
5.2 算法 101
5.3 伪代码 101
5.4 控制结构 102
5.5 if单选择语句 103
5.6 if…else双选择语句 104
5.7 Student类:嵌套if…else语句 107
5.8 while循环语句 109
5.9 形成算法:计数器控制循环 110
5.10 形成算法:标记控制循环 113
5.11 形成算法:嵌套控制语句 118
5.12 复合赋值运算符 121
5.13 增量运算符和减量运算符 122
5.14 简单类型 124
5.15 小结 124
摘要 125
术语表 127
自测题 128
自测题答案 129
练习题 130
挑战题 135
第6章 控制语句(2) 137
6.1 简介 138
6.2 计数器控制循环的实质 138
6.3 for循环语句 139
6.4 使用for语句的示例 141
6.5 程序:对偶数求和 142
6.6 程序:复利计算 143
6.7 do…while循环语句 145
6.8 switch多选择语句 146
6.9 AutoPolicy类案例分析:switch语句中的字符串 150
6.10 break和continue语句 152
6.11 逻辑运算符 153
6.12 结构化编程小结 158
6.13 小结 161
摘要 161
术语表 163
自测题 164
自测题答案 165
练习题 166
挑战题 169
第7章 方法:深入探究 170
7.1 简介 171
7.2 C#的代码包装 171
7.3 静态方法、静态变量和Math类 172
7.4 声明多参数方法 174
7.5 关于方法使用的说明 177
7.6 实参提升与强制转换 178
7.7 .NET Framework类库 179
7.8 案例分析:随机数生成方法 181
7.9 案例分析:机会游戏(引入枚举) 184
7.10 声明的作用域 188
7.11 方法调用栈与活动记录 190
7.12 方法重载 193
7.13 可选参数 194
7.14 命名参数 195
7.15 C# 6的表达式方法和属性 196
7.16 递归 196
7.17 值类型与引用类型 199
7.18 按值与按引用传递实参 199
7.19 小结 202
摘要 202
术语表 207
自测题 207
自测题答案 209
练习题 210
挑战题 215
第8章 数组以及异常处理简介 216
8.1 简介 217
8.2 数组 217
8.3 声明和创建数组 218
8.4 数组使用示例 219
8.5 用数组分析汇总结果以及异常处理 226
8.6 案例分析:模拟洗牌和发牌 228
8.7 将数组和数组元素传入方法 232
8.8 案例分析:GradeBook类用数组保存成绩 233
8.9 多维数组 237
8.10 案例分析:使用矩形数组的GradeBook类 241
8.11 变长实参表 245
8.12 使用命令行实参 246
8.13 (选修)按值与按引用传递数组 248
8.14 小结 251
摘要 251
术语表 254
自测题 254
自测题答案 255
练习题 256
拓展内容:建立自己的计算机 262
挑战题 267
第9章 LINQ和List集合简介 268
9.1 简介 268
9.2 用LINQ查询int数组 269
9.3 用LINQ查询Employee对象数组 272
9.4 集合 276
9.5 用LINQ查询泛型List集合 279
9.6 小结 281
9.7 Deitel的LINQ资源中心 282
摘要 282
术语表 284
自测题 284
自测题答案 284
练习题 284
第10章 类与对象:深入探究 286
10.1 简介 286
10.2 Time类案例分析以及抛出异常 287
10.3 控制对成员的访问 290
10.4 用this引用访问当前对象的成员 290
10.5 Time类案例分析:重载构造函数 292
10.6 默认构造函数和无参数构造函数 296
10.7 组合 297
10.8 垃圾回收与析构函数 299
10.9 静态类成员 300
10.10 只读实例变量 302
10.11 Class View与Object Browser 303
10.12 对象初始值设定项 304
10.13 运算符重载以及struct简介 305
10.14 Time类案例分析:扩展方法 308
10.15 小结 310
摘要 310
术语表 313
自测题 313
自测题答案 313
练习题 314
第11章 面向对象编程:继承 316
11.1 简介 316
11.2 基类与派生类 317
11.3 protected成员 318
11.4 基类与派生类的关系 319
11.5 派生类的构造函数 333
11.6 继承与软件工程 333
11.7 object类 334
11.8 小结 334
摘要 335
术语表 336
自测题 336
自测题答案 337
练习题 337
第12章 面向对象编程:多态与接口 339
12.1 简介 339
12.2 多态示例 340
12.3 演示多态行为 341
12.4 抽象类和抽象方法 343
12.5 案例分析:使用多态的工资系统 345
12.6 sealed方法和类 355
12.7 案例分析:创建和使用接口 356
12.8 小结 362
摘要 362
术语表 364
自测题 364
自测题答案 364
练习题 365
挑战题 366
第13章 异常处理:深入探究 367
13.1 简介 368
13.2 示例:除数为0不用异常处理 368
13.3 示例:处理DivideByZeroException和FormatException异常 370
13.4 .NET的Exception层次 374
13.5 finally语句块 375
13.6 using语句 380
13.7 Exception属性 381
13.8 用户定义异常类 384
13.9 检验空引用以及C# 6的“?.”运算符 387
13.10 异常过滤器与C# 6的when子句 389
13.11 小结 389
摘要 389
术语表 392
自测题 392
自测题答案 393
练习题 393
第14章 图形用户界面与Windows窗体(1) 395
14.1 简介 395
14.2 Windows窗体 396
14.3 事件处理 398
14.4 控件的属性和布局 403
14.5 标签、文本框和按钮 406
14.6 组框和面板 408
14.7 复选框和单选钮 410
14.8 图形框 416
14.9 工具提示 418
14.10 数字上下控件 419
14.11 鼠标事件处理 420
14.12 键事件处理 422
14.13 小结 424
摘要 424
术语表 428
自测题 429
自测题答案 429
练习题 430
挑战题 431
第15章 图形用户界面与Windows窗体(2) 433
15.1 简介 433
15.2 菜单 434
15.3 MonthCalendar控件 440
15.4 DateTimePicker控件 441
15.5 LinkLabel控件 443
15.6 ListBox控件 446
15.7 CheckedListBox控件 449
15.8 ComboBox控件 450
15.9 TreeView控件 453
15.10 ListView控件 457
15.11 TabControl控件 462
15.12 多文档界面(MDI)窗口 465
15.13 可视化继承 470
15.14 用户定义的控件 474
15.15 小结 476
摘要 476
术语表 479
自测题 480
自测题答案 480
练习题 481
第16章 字符串和字符:深入探究 483
16.1 简介 483
16.2 字符和字符串基础 484
16.3 string构造函数 484
16.4 string索引器、Length属性和CopyTo方法 485
16.5 字符串比较 487
16.6 查找字符串中的字符和子串 489
16.7 抽取字符串中的子串 491
16.8 拼接字符串 492
16.9 其他的string方法 492
16.10 StringBuilder类 493
16.11 StringBuilder类的Length属性、Capacity属性、EnsureCapacity方法 以及索引器 494
16.12 StringBuilder类的Append和AppendFormat方法 495
16.13 StringBuilder类的Insert、Remove和Replace方法 497
16.14 几个Char方法 499
16.15 (在线)正则表达式处理简介 501
16.16 小结 501
摘要 501
术语表 503
自测题 503
自测题答案 504
练习题 504
挑战题 504
第17章 文件和流 506
17.1 简介 5
本书是全球知名的计算机编程语言作家Deitel父子编写的讲解Visual C#编程的一部著作。在上一版的基础上,全书根据C# 6规范进行了更新,重点突出规范中涉及的新功能,以充分利用C#强大的编程能力。本书以作者独有的“活代码”方法,详细讲解了面向对象编程和Visual C#编程。在介绍每一项功能时,都以一个能在真实环境下执行的程序体现,并且每一个程序都给出了最终的执行结果。这就是“活代码”的精髓所在。对于初学者而言,这种“眼见为实”的方式,能极大地加深对Visual C#编程的理解。
本书内容根据Microsoft的Visual Studio Community 2015 版本进行了更新,以体现其新增加的功能和特性。同时,书中各章的组织结构安排非常合理,以适应从初学者到中高级C#程序员的学习需求。
从大的模块来看,本书可分为几个部分,具体为:Visual C#简介(共2章),C#基础知识(共6章),面向对象编程(共5章),Windows 窗体GUI(共2章),字符串与文件(共2章),搜索、排序和泛型数据结构(共4章)、数据库操作(共1章),异步编程(共1章)。为了缩减篇幅,其中的一些高级内容放在了本书的配套网站上。
具体到每一章,则讲解了面向对象编程和Visual C#编程所涉及的类、对象、方法、字符串与字符、控制语句、数组、继承、多态、异常处理、UML、Windows 窗体与GUI 设计、文件处理、数据搜索与排序、数据结构、泛型、集合、LINQ/PLINQ函数式编程、数据库、异步编程等。书中给出的示例带有很强的趣味性,比如纸牌游戏程序、学生成绩统计程序等,使读者在学习过程中不会感到枯燥。“挑战题”部分给出的习题则具有很强的现实性,比如肥胖问题、全球变暖问题、碳排放问题等,从而让学生逐渐适应将所学知识应用于现实生活中。
书中关于C# 6新功能的讲解,穿插在常规内容的介绍中。这些新功能包括:字符串插值、表达式方法、自动属性初始值设定项、nameof运算符、null条件运算符“?.”和“?[ ]”、捕获异常的when子句、using static指令、用于具有Add扩展方法的任何集合的集合初始值设定项、索引初始值设定项等,它们是实现快速编程的利器,应充分掌握。
本书的译者有着多年程序开发和数据库系统设计、管理、维护工作的经验。全书的相关术语,尤其是一些专业术语的译法,由北京工商大学张君施副教授负责制订标准。具体的翻译分工如下:前言及中英文术语对照表由张君施翻译,第1~4章由李剑渊翻译,第5~9章由卜静翻译,第10~15章由隆冬翻译,第16~20章由洛基山翻译,第21~23章及附录由张君施翻译。全书最后由洛基山负责统稿。
由于本书翻译时间紧且由多人共同完成,再加上许多新出现的专业术语还没有公认的译法,因此译稿中如有不妥之处,恳请广大读者批评指正。译者的联系方式为[email protected]。
译 者
2018 年10月于加拿大
前 言
欢迎进入采用Microsoft的Visual C#编程语言来开发桌面、移动和Web程序的世界。本书以C# 6以及相关的Microsoft软件技术为基础 ,利用 .NET平台以及Visual Studio集成开发环境,可以方便地编写、测试和调试程序,并让它们在Windows设备上运行。Windows操作系统可运行于台式机和笔记本电脑、移动电话、平板电脑、游戏系统以及与物联网相关的大量设备上。
我们相信,本书以及为学生和教师提供的配套资料,将使Visual C#的讲解变得内容丰富、全面、充满挑战且具娱乐性。全书讲解的前沿计算技术,适合相关专业的大学课程体系,它们是两个主要的专业组织——ACM和IEEE推荐的课程体系 。
书中讲解了当前最流行的4种编程思想:
? 面向对象编程
? 结构化编程
? 泛型编程
? 函数式编程(这一版本新增)
在阅读本书之前,可以先浏览一下业内人士对于本书的评价(见本书封底),它们精确地概述了本书的精髓。随后通过本书将为学生、教师以及专业人士提供更多的详细信息。
本书的核心是作者独创的“活代码”方法——C#中的编程思想是在完全可工作的程序环境下给出的,并且提供了运行结果,而不是使用代码片段。书中的示例程序和练习题取材广泛,它们来自计算机科学、商业、教育、社会问题、个人设备、体育运动、数学、拼图游戏、仿真、博弈游戏、图形、多媒体以及许多其他领域。本书还提供了大量的表格、线状图和UML类图,从而提供更为可视化的学习体验。
前言后面的“学前准备”部分,给出了如何将计算机设置成能够运行书中数百个代码示例的说明,并指导如何自己开发C#程序。书中的代码示例可从如下网站下载 :
和
利用这些源代码,可编译和运行每一个程序——这有助于读者更快、更深入地精通Visual C#以及相关的Microsoft技术。书中的大多数示例,都能够运行于Windows 7/8/10(没有9)系统的Visual Studio下。本书在线章节中的通用Windows平台(UWP)和XAML的代码示例,则要求运行于Windows 10系统下。
联系作者
在学习本书的过程中,如果有任何问题,可发邮件至
我们会及时回复。
加入Deitel & Associates公司的社交圈
关于本书的更新,可访问:
还可以订阅作者的Deitel Buzz Online新闻组:
作者的社交媒体如下:
? Facebook—http://facebook.com/DeitelFan
? LinkedIn—http://linkedin.com/company/deitel-&-associates
? YouTube—http://youtube.com/DeitelTV
? Twitter—http://twitter.com/Deitel
? Instagram—http://instagram.com/DeitelFan
? Google —http://google.com/ DeitelFan
尽早讲解对象
本书在第1章就讲解了面向对象编程的基本概念和术语。在第2章就允许读者可视化地操纵对象,比如标签和图形。第3章介绍C#编程,将编写操作已有对象的Visual C#程序。第4章中则会首次创建定制化的类和对象。尽早讲解对象和类,可以使读者立即“以对象的思维进行思考”,并且能更全面地理解这些概念。
这种“尽早讲解对象”的思想,一直持续到第5~9章,它们给出了各种简单直接的案例分析。第10~12章中,将深入探究类和对象,讲解继承、接口和多态,然后将这些概念应用于接下来的各章中。
C# 6新的语言特性
全书都会讲解C# 6新的语言特性(见图1)——只要涉及一个新特性,本书页边会以文本“6”进行标注,如本段左侧所示。
C# 6新的语言特性 相关章节
字符串插值 3.5节
表达式方法和get访问器 7.15节
自动属性初始值设定项 8.6.1节
只读自动实现的属性 8.6.1节
nameof运算符 10.5.1节
Null条件运算符“?.” 13.9.1节
捕获异常的when子句 13.10节
using static指令 21.3.1节
null条件运算符“?[ ]” 21.6节
用于具有Add扩展方法的任何集合的集合初始值设定项 21.7节
索引初始值设定项 21.7节
图1 C# 6新的语言特性
充满趣味性、娱乐性和挑战性的练习题
本书包含数百个练习题,用于实践所学技巧。为便于自学,书中给出了大量的自测题以及答案。每一章都包含相当数量的练习题,通常的形式包括:
? 简单回顾重要的术语和概念
? 找出代码示例中的错误
? 编写一条程序语句
? 编写执行某项任务的方法
? 编写C#类
? 编写完整的程序
? 完成几个重要的项目
图2中给出了本书中数百个练习题的一小部分,其中包括一些“挑战题”。挑战题鼓励读者利用计算机和Internet来研究并解决重大的社会问题。希望读者能用自己的价值观、策略和信念找出它们的解决之道。有关书中练习题的答案,只提供给采用本书作为教材的大学教师 。
书中的一些练习题
“碳足迹”计算器
体重指数计算器
混合动力汽车的特性
性别中性化
记事本GUI
日历和约会GUI
计算器GUI
闹钟GUI
收音机GUI
显示形状
奇偶性判断
数字倍数关系判断
拆分整数中的数字
平方表和立方表
Account类
Invoice类
Employee类
Date类
删除重复代码
目标心率计算器
健康记录的计算机化
信用额度计算器
销售佣金计算器
薪水计算器
找出最大的两个数
悬垂else问题
回文
与二进制数等价的十进制数
直角三角形的边
阶乘
无穷序列:数学常量e
全球人口增长
用密码强制保护隐私
条形图显示
质数
销售情况统计
拼车省钱计算器 汽车油耗计算器
计算π值
勾股数组
关于全球变暖问题的小测验
另一种税务规划:FairTax
保留指定小数位
直角三角形的斜边长
显示由任意字符组成的正方形
分离数字
温度转换
完数
质数
颠倒数字
将平均成绩转换成4个等级
抛硬币
猜数游戏
两点间的距离
带赌注的掷骰子游戏
汉诺塔
计算机辅助教学
销售佣金
消除重复值
掷骰子游戏
航空订位系统
骑士旅行国际象棋游戏
八皇后国际象棋游戏
Eratosthenes筛选法
龟兔赛跑
洗牌与发牌
建立自己的计算机(虚拟机)
投票
查询Invoice对象数组
删除重复的单词
Rectangle类
储蓄账户类
整数集
RationalNumber类 HugeInteger类
Tic-Tac-Toe游戏
ComplexNumber类
Shape继承层次
工资系统
应付款程序
多态银行程序
CarbonFootprint接口:多
评论
还没有评论。