图书介绍

程序设计语言概念 第9版2025|PDF|Epub|mobi|kindle电子书版本百度云盘下载

程序设计语言概念 第9版
  • RobertW·Sebesta著 著
  • 出版社: 北京:清华大学出版社
  • ISBN:9787302229568
  • 出版时间:2011
  • 标注页数:563页
  • 文件大小:54MB
  • 文件页数:582页
  • 主题词:程序设计-教材

PDF下载


点此进入-本书在线PDF格式电子书下载【推荐-云解压-方便快捷】直接下载PDF格式图书。移动端-PC端通用
种子下载[BT下载速度快]温馨提示:(请使用BT下载软件FDM进行下载)软件下载地址页直链下载[便捷但速度慢]  [在线试读本书]   [在线获取解压码]

下载说明

程序设计语言概念 第9版PDF格式电子书版下载

下载的文件为RAR压缩包。需要使用解压软件进行解压得到PDF格式图书。

建议使用BT下载工具Free Download Manager进行下载,简称FDM(免费,没有广告,支持多平台)。本站资源全部打包为BT种子。所以需要使用专业的BT下载软件进行下载。如BitComet qBittorrent uTorrent等BT下载工具。迅雷目前由于本站不是热门资源。不推荐使用!后期资源热门了。安装了迅雷也可以迅雷进行下载!

(文件页数 要大于 标注页数,上中下等多册电子书除外)

注意:本站所有压缩包均有解压码: 点击下载压缩包解压工具

图书目录

第1章 预备知识1

1.1 学习程序设计语言原理的原因1

1.2 程序设计领域3

1.2.1 科学应用3

1.2.2 商务应用3

1.2.3 人工智能4

1.2.4 系统程序设计4

1.2.5 网络软件4

1.3 语言评价标准5

1.3.1 可读性5

1.3.2 可写性9

1.3.3 可靠性10

1.3.4 代价11

1.4 影响语言设计的因素13

1.4.1 计算机体系结构13

1.4.2 程序设计方法学14

1.5 程序设计语言的分类15

1.6 语言设计中的权衡16

1.7 实现方法17

1.7.1 编译18

1.7.2 完全解释19

1.7.3 混合实现系统20

1.7.4 预处理器20

1.8 编程环境21

小结22

复习题22

习题23

第2章 主要程序设计语言的发展24

2.1 Zuse的Plankalkul语言25

2.1.1 历史背景25

2.1.2 语言概述26

2.2 最少硬件的程序设计:伪代码27

2.2.1 Short Code语言27

2.2.2 Speedcoding系统28

2.2.3 UNIVAC“编译”系统28

2.2.4 相关工作28

2.3 IBM 704计算机与Fortran语言29

2.3.1 历史背景29

2.3.2 设计过程29

2.3.3 Fortran Ⅰ概述30

2.3.4 Fortran Ⅱ30

2.3.5 Fortran Ⅳ、77、90、95和200331

2.3.6 评价31

2.4 函数式程序设计:LISP语言33

2.4.1 人工智能的起源和表处理33

2.4.2 LISP语言的设计过程33

2.4.3 语言概述34

2.4.4 评价35

2.4.5 LISP的两种后代语言36

2.4.6 相关语言36

2.5 迈向成熟的第一步:ALGOL 6037

2.5.1 历史背景37

2.5.2 早期设计过程37

2.5.3 ALGOL 58概述38

2.5.4 对ALGOL58报告的响应38

2.5.5 ALGOL 60的设计过程39

2.5.6 ALGOL 60概述39

2.5.7 评价40

2.6 商务记录计算机化:COBOL语言41

2.6.1 历史背景42

2.6.2 FLOW-MATIC语言42

2.6.3 COBOL语言的设计过程42

2.6.4 评价43

2.7 分时处理的开始:BASIC语言45

2.7.1 设计过程46

2.7.2 语言概述46

2.7.3 评价46

2.8 满足所有人的需要:PL/I48

2.8.1 历史背景48

2.8.2 设计过程48

2.8.3 语言概述49

2.8.4 评价49

2.9 两种早期的动态语言:APL和SNOBOL50

2.9.1 APL语言的起源与特点51

2.9.2 SNOBOL语言的起源与特点51

2.10 数据抽象的开始:AIMULA 6751

2.10.1 设计过程51

2.10.2 语言概述52

2.11 正交设计:ALGOL 6852

2.11.1 设计过程52

2.11.2 语言概述52

2.11.3 评价53

2.12 ALGOL系列语言的早期后代语言53

2.12.1 为简单性而设计:Pascal语言53

2.12.2 可移植的系统语言:C语言55

2.13 基于逻辑的程序设计:Prolog语言57

2.13.1 设计过程57

2.13.2 语言概述57

2.13.3 评价58

2.14 历史上规模最大的设计工作:Ada语言58

2.14.1 历史背景58

2.14.2 设计过程59

2.14.3 语言概述60

2.14.4 评价60

2.14.5 Ada 9561

2.15 面向对象的程序设计:Smalltalk62

2.15.1 设计过程62

2.15.2 语言概述62

2.15.3 评价63

2.16 结合命令式和面向对象的特性:C++64

2.16.1 设计过程64

2.16.2 语言概述65

2.16.3 评价65

2.16.4 一种相关语言:Eiffcl65

2.16.5 另一种相关语言:Delphi66

2.17 基于命令式的面向对象语言:Java66

2.17.1 设计过程66

2.17.2 语言概述67

2.17.3 评价68

2.18 脚本语言69

2.18.1 Perl的起源与特点69

2.18.2 JavaScript的起源与特点71

2.18.3 PHP的起源与特点72

2.18.4 Python的起源与特点73

2.18.5 Ruby的起源与特点73

2.18.6 Lua的起源与特点74

2.19 一种新千年的基于C的语言:C74

2.19.1 设计过程74

2.19.2 语言概述75

2.19.3 评价76

2.20 标记与程序设计混合的语言77

2.20.1 XSLT77

2.20.2 JSP77

小结78

文献注释78

复习题79

习题80

程序设计练习81

访谈:用户设计与语言设计82

第3章 描述语法和语义85

3.1 概述85

3.2 描述语法的普遍问题86

3.2.1 语言识别器86

3.2.2 语言生成器87

3.3 描述语法的形式化方法87

3.3.1 巴科斯-诺尔范式和上下文无关文法87

3.3.2 扩展的BNF96

3.3.3 文法与识别器97

3.4 属性文法98

3.4.1 静态语义98

3.4.2 基本概念98

3.4.3 属性文法定义99

3.4.4 本质属性99

3.4.5 属性文法的例子99

3.4.6 计算属性值101

3.4.7 评价102

3.5 描述程序的意义:动态语义102

3.5.1 操作语义103

3.5.2 指称语义104

3.5.3 公理语义108

小结118

文献注释119

复习题119

习题120

第4章 词法分析和语法分析124

4.1 概述124

4.2 词法分析125

4.3 语法分析问题132

4.3.1 语法分析概述132

4.3.2 自顶向下的语法分析器133

4.3.3 自底向上的语法分析器133

4.3.4 语法分析的复杂度134

4.4 递归下降的语法分析134

4.4.1 递归下降的语法分析过程134

4.4.2 LL文法类139

4.5 自底向上的语法分析142

4.5.1 自底向上语法分析器的分析问题142

4.5.2 移进-归约算法143

4.5.3 LR语法分析器144

小结147

复习题148

习题149

程序设计练习150

第5章 名字、绑定和作用域151

5.1 引言151

5.2 名字151

5.2.1 设计问题151

5.2.2 名字形式152

5.2.3 特殊字153

5.3 变量154

5.3.1 名字154

5.3.2 地址154

5.3.3 类型155

5.3.4 数值155

5.4 绑定的概念156

5.4.1 属性与变量绑定156

5.4.2 绑定类型156

5.4.3 存储绑定和生存期160

5.5 作用域162

5.5.1 静态作用域163

5.5.2 块164

5.5.3 声明的次序165

5.5.4 全局作用域166

5.5.5 静态作用域评估168

5.5.6 动态作用域168

5.5.7 动态作用域评估169

5.6 作用域和生存期170

5.7 引用环境171

5.8 命名常量172

小结174

复习题175

问题集175

编程题180

访谈:脚本语言以及其他灵活解决方案的例子180

第6章 数据类型183

6.1 引言183

6.2 基本数据类型184

6.2.1 数值类型184

6.2.2 布尔类型186

6.2.3 字符类型187

6.3 字符串类型187

6.3.1 设计问题187

6.3.2 字符串及其操作187

6.3.3 字符串长度的设计选项189

6.3.4 评估190

6.3.5 字符串类型的实现190

6.4 用户定义的序数类型191

6.4.1 枚举类型191

6.4.2 子界类型193

6.4.3 用户定义的有序类型的实现194

6.5 数组类型194

6.5.1 设计问题195

6.5.2 数组和索引195

6.5.3 下标的绑定和数组的种类196

6.5.4 数组初始化198

6.5.5 数组操作200

6.5.6 矩形数组和不规则数组201

6.5.7 切片201

6.5.8 评估202

6.5.9 数组类型的实现202

6.6 关联数组204

6.6.1 结构和操作205

6.6.2 关联数组的实现206

6.7 记录类型206

6.7.1 记录的定义207

6.7.2 记录域引用208

6.7.3 记录操作208

6.7.4 评估209

6.7.5 记录类型的实现209

6.8 联合类型210

6.8.1 设计问题210

6.8.2 判别式联合与自由联合210

6.8.3 Ada的联合类型211

6.8.4 评估212

6.8.5 联合类型的实现212

6.9 指针和引用类型213

6.9.1 设计问题214

6.9.2 指针操作214

6.9.3 指针的相关问题215

6.9.4 Ada语言中的指针216

6.9.5 C和C++中的指针216

6.9.6 引用类型218

6.9.7 评估219

6.9.8 指针和引用类型的实现219

6.10 类型检查223

6.11 强类型化223

6.12 类型等价224

6.13 理论和数据类型227

小结229

参考文献注释230

复习题230

问题集231

编程题232

访谈:Lua233

第7章 表达式与赋值语句237

7.1 引言237

7.2 算术表达式237

7.2.1 运算符运算顺序238

7.2.2 操作对象运算顺序242

7.3 运算符重载244

7.4 类型转换245

7.4.1 表达式中的强制类型转换246

7.4.2 显式类型转换247

7.4.3 表达式中的错误248

7.5 关系表达式和逻辑表达式248

7.5.1 关系表达式248

7.5.2 逻辑表达式249

7.6 短路求值250

7.7 赋值语句251

7.7.1 简单赋值252

7.7.2 条件赋值252

7.7.3 混合赋值运算符252

7.7.4 一元赋值运算符253

7.7.5 赋值作为表达式253

7.7.6 列表赋值254

7.8 混合模式赋值255

小结255

复习题256

问题集257

编程题259

第8章 语句级控制结构260

8.1 引言260

8.2 选择语句261

8.2.1 双路选择语句261

8.2.2 多重选择结构265

8.3 迭代语句272

8.3.1 计数控制循环273

8.3.2 逻辑控制循环277

8.3.3 用户自定义的循环控制机制279

8.3.4 基于数据结构的迭代280

8.4 无条件分支283

8.5 防护命令(Guarded Commands)283

8.6 结论285

小结286

复习题287

问题集288

编程题288

访谈:第一部分:语言学的研究和脚本语言Perl的诞生290

第9章 子程序293

9.1 引言293

9.2 子程序基本原理293

9.2.1 子程序的一般性质293

9.2.2 子程序的基本定义294

9.2.3 参数295

9.2.4 Ruby语言的块299

9.2.5 过程与函数300

9.3 子程序的设计问题301

9.4 局部引用环境302

9.4.1 局部变量302

9.4.2 嵌套子程序303

9.5 参数传递方式304

9.5.1 参数传递的语义模型304

9.5.2 参数传递的实现模式304

9.5.3 参数传递方法的实现308

9.5.4 常见语言的参数传递方法309

9.5.5 参数类型检查311

9.5.6 多维数组作参数313

9.5.7 设计考虑316

9.5.8 参数传递的例子316

9.6 子程序作为参数319

9.7 重载子程序320

9.8 泛型子程序321

9.8.1 Ada中的泛型子程序322

9.8.2 C++中的泛型函数323

9.8.3 Java 5.0中的泛型方法325

9.8.4 C#2005中的泛型方法326

9.9 函数的设计问题327

9.91 函数副作用327

9.9.2 返回值类型327

9.9.3 返回值的个数327

9.10 用户定义重载运算符328

9.11 协同程序328

小结330

复习题331

问题集332

编程题334

访谈:第二部分:一般的脚本语言和特殊的Perl语言335

第10章 实现子程序337

10.1 调用和返回的一般语义337

10.2 实现“简单”的子程序337

10.3 通过栈动态局部变量实现子程序339

10.3.1 更复杂的活动记录339

10.3.2 一个不含递归调用的例子341

10.3.3 递归调用343

10.4 嵌套子程序345

10.4.1 基础345

10.4.2 静态链346

10.5 块350

10.6 动态作用域的实现351

10.6.1 深访问351

10.6.2 浅访问353

小结354

复习题355

问题集355

编程题358

访谈:保持尽量简单359

第11章 抽象数据类型与封装结构361

11.1 抽象的概念361

11.2 数据抽象的介绍362

11.2.1 抽象数据类型之浮点型362

11.2.2 抽象数据类型之用户定义类型362

11.2.3 示例363

11.3 抽象数据类型的设计要点364

11.4 语言示例364

11.4.1 Ada中的抽象数据类型365

11.4.2 C++中的抽象数据类型369

11.4.3 Java中的抽象数据类型372

11.4.4 C#中的抽象数据类型374

11.4.5 Ruby中的抽象数据类型375

11.5 参数化的抽象数据类型377

11.5.1 Ada378

11.5.2 C++378

11.5.3 Java 5.0380

11.5.4 C#2005381

11.6 封装结构381

11.6.1 引言381

11.6.2 嵌套子程序381

11.6.3 C中的封装382

11.6.4 C++中的封装382

11.6.5 Ada包383

11.6.6 C#程序集383

11.7 命名封装384

11.7.1 C++命名空间384

11.7.2 Java包385

11.7.3 Ada包386

11.7.4 Ruby模块387

小结387

复习题388

问题集389

编程题390

附录1391

访谈:C++:它的诞生,它的无处不在和它受到的常见质疑391

第12章 面向对象程序设计的支持394

12.1 概述394

12.2 面向对象程序设计394

12.2.1 引言394

12.2.2 继承395

12.2.3 动态绑定396

12.3 面向对象语言的设计问题397

12.3.1 对象的排他性397

12.3.2 子类是子类型吗397

12.3.3 类型检查和多态398

12.3.4 单继承与多继承399

12.3.5 对象的分配和释放399

12.3.6 动态绑定与静态绑定400

12.3.7 嵌套类400

12.3.8 对象的初始化400

12.4 Smalltalk对面向对象程序设计支持400

12.4.1 一般特征401

12.4.2 类型检查和多态401

12.4.3 继承401

12.4.4 Smalltalk的评估402

12.5 C++对面向对象程序设计的支持402

12.5.1 一般特征403

12.5.2 继承403

12.5.3 动态绑定407

12.5.4 评估409

12.6 Java中对面向对象程序设计的支持410

12.6.1 一般特征410

12.6.2 继承411

12.6.3 动态绑定412

12.6.4 被嵌套的类412

12.6.5 评估413

12.7 C#中对面向对象程序设计的支持413

12.7.1 一般特征413

12.7.2 继承413

12.7.3 动态绑定413

12.7.4 被嵌套的类414

12.7.5 评估414

12.8 Ada 95对面向对象程序设计的支持414

12.8.1 一般特征414

12.8.2 继承415

12.8.3 动态绑定416

12.8.4 子程序包417

12.8.5 评估418

12.9 Ruby对面向对象程序设计的支持418

12.9.1 一般特征418

12.9.2 继承420

12.9.3 动态绑定421

12.9.4 评估421

12.10 面向对象构造的实现421

12.10.1 存储实例数据421

12.10.2 方法调用到方法的动态绑定422

小结424

复习题425

问题集426

编程题427

访谈:关于程序设计范型和更好的程序设计427

第13章 描述语法和语义430

13.1 概述430

13.1.1 多处理器体系结构431

13.1.2 并发的种类432

13.1.3 使用并发的目的432

13.2 子程序级并发的介绍433

13.2.1 基本概念433

13.2.2 为并发而设计的语言435

13.2.3 设计问题436

13.3 信号量436

13.3.1 概述436

13.3.2 合作同步436

13.3.3 竞争同步438

13.3.4 评价439

13.4 管程440

13.4.1 概述440

13.4.2 竞争同步440

13.4.3 合作同步440

13.4.4 评价440

13.5 消息传递441

13.5.1 概述441

13.5.2 同步消息传递的原理442

13.6 Ada对并发的支持442

13.6.1 基本原理442

13.6.2 合作同步445

13.6.3 竞争同步446

13.6.4 任务终止448

13.6.5 优先级448

13.6.6 二元信号量448

13.6.7 受保护对象449

13.6.8 异步消息传递450

13.6.9 评价451

13.7 Java线程451

13.7.1 Thread类451

13.7.2 优先级453

13.7.3 竞争同步453

13.7.4 合作同步454

13.7.5 评价457

13.8 C#线程457

13.8.1 基本线程操作457

13.8.2 同步线程458

13.8.3 评价458

13.9 语句级并发458

13.9.1 高性能Fortran459

小结460

文献注释461

复习题461

习题463

程序设计练习463

第14章 异常处理和事件处理464

14.1 异常处理概述464

14.1.1 基本概念465

14.1.2 设计问题466

14.2 Ada中的异常处理469

14.2.1 异常处理程序469

14.2.2 将异常绑定到处理程序470

14.2.3 继续470

14.2.4 其他设计选择471

14.2.5 例子472

14.2.6 评价474

14.3 C++中的异常处理474

14.3.1 异常处理程序474

14.3.2 异常与处理程序的绑定475

14.3.3 继续476

14.3.4 其他设计选择476

14.3.5 例子476

14.3.6 评价478

14.4 Java中的异常处理478

14.4.1 异常类478

14.4.2 异常处理程序479

14.4.3 异常与处理程序的绑定479

14.4.4 其他设计选择480

14.4.5 例子481

14.4.6 finally子句482

14.4.7 断言483

14.4.8 评价484

14.5 事件处理概述484

14.6 Java的事件处理485

14.6.1 Java Swing的GUI组件485

14.6.2 Java事件模型486

小结489

文献注释490

复习题490

习题491

程序设计练习492

访谈:Java的诞生493

第15章 函数式程序设计语言495

15.1 概述495

15.2 数学函数496

15.2.1 简单函数496

15.2.2 函数形式497

15.3 函数式程序设计语言基础497

15.4 第一种函数式程序设计语言:LISP498

15.4.1 数据类型和结构499

15.4.2 第一个LISP解释器499

15.5 Scheme概述501

15.5.1 Scheme的起源501

15.5.2 Scheme解释器501

15.5.3 基本数值函数501

15.5.4 定义函数502

15.5.5 输出函数503

15.5.6 数值谓词函数503

15.5.7 控制流504

15.5.8 表函数505

15.5.9 用于符号原子和表的谓词函数507

15.5.10 Scheme函数示例508

15.5.11 Scheme中的尾递归512

15.5.12 函数形式512

15.5.13 构建代码的函数514

15.6 COMMON LISP515

15.7 ML515

15.8 Haskell518

15.9 函数式语言的应用522

15.10 函数式语言和命令式语言的比较522

小结524

文献注释525

复习题525

习题526

程序设计练习527

第16章 逻辑程序设计语言528

16.1 概述528

16.2 谓词演算简介528

16.2.1 命题529

16.2.2 子句形式530

16.3 谓词演算与定理证明531

16.4 逻辑程序设计概述533

16.5 Prolog的起源534

16.6 Prolog的基本元素534

16.6.1 项534

16.6.2 事实语句535

16.6.3 规则语句536

16.6.4 目标语句536

16.6.5 Prolog的推理过程537

16.6.6 简单算术539

16.6.7 表结构541

16.7 Prolog的缺陷545

16.7.1 归结顺序的控制545

16.7.2 封闭世界假设547

16.7.3 否定问题548

16.7.4 固有的限制549

16.8 逻辑程序设计的应用550

16.8.1 关系数据库管理系统550

16.8.2 专家系统550

16.8.3 自然语言处理551

小结551

文献注释551

复习题552

习题552

程序设计练习553

参考文献554

热门推荐