程序设计基础(原书第3版)
作者 : [美] 托尼·加迪斯(Tony Gaddis) 著
译者 : 王立柱 刘俊飞 译
丛书名 : 计算机科学丛书
出版日期 : 2018-04-26
ISBN : 978-7-111-59680-6
定价 : 79.00元
教辅资源下载
扩展信息
语种 : 简体中文
页数 : 429
开本 : 16
原书名 : Starting Out with Programming Logic & Design,Third Edition
原出版社: Pearson Education Asia
属性分类: 教材
包含CD : 无CD
绝版 :
图书简介

本书教授编程概念和解决问题的技巧,所使用的方法独立于具体的编程语言,且不需要读者有任何编程经验。内容不仅包括数据类型、变量、输入、输出、控制结构、模块、函数、数组和文件,还有面向对象的概念、GUI开发和事件驱动编程。配套的教学资源也十分丰富,包括复习中的答案、编程练习中的解决方案、PPT和试题库。此外,在本书的相应网站上还提供了书中伪代码对应的、用各种语言实现的程序。适合作为学习具体语言之前的先导编程逻辑课程。

图书特色

图书前言

欢迎学习本书第3版。本书教授编程概念以及解决问题的技巧,所使用的方法独立于具体的编程语言,不需要读者拥有任何编程经验。使用易于理解的伪代码、流程图和其他工具来学习程序逻辑的设计,规避了语法的困扰。
本书的基本主题不仅包括数据类型、变量、输入、输出、控制结构、模块、函数、数组和文件,还有面向对象的概念、GUI开发和事件驱动编程。本书文字清晰易懂,让学生感到友好和亲切。
本书各章都提供了大量的程序设计示例。短的示例突出编程主题,长的示例集中于问题求解。每章至少包括一个“重点聚焦”小节,对一个具体的问题逐步分析和求解。
本书是学习编程逻辑的理想选择,在用具体的语言学习编程基础之前,本书可以作为先导。
第3版的变化
本书的教学方法、内容组织和写作风格与上一版保持一致,但也做了很多改进,概括如下:
详细指导学生设计他们的第一个程序
第2章增加了2.8节。这一节将展示从分析一个问题到确定它的需求的全过程。在这个过程中将用一个示例使学生了解如何确定一个程序的输入、处理和输出,然后编写伪代码和绘制流程图。
在第2章的“重点聚焦”小节,还添加了一个新内容,以计算手机超时费用为例,演示了从确定手动计算的步骤到将这些步骤转换为计算机算法的过程。
新调试练习
大部分章节都添加了一组新的调试练习。让学生检查一组伪代码算法并识别其中的逻辑错误。
流程图和伪代码之间的一致性更高
在整本书中,许多流程图已经修改,使它们与伪代码之间的联系更紧密。
嵌套重复结构扩展
在5.6节扩展了一个示例。
附加重复结构的可视化说明
在第5章的Do-While和For循环部分添加了新的可视化说明。
文件规范文档和打印间隔图
文件规范文档和打印间隔图在第10章讨论。
新的编程语言伴侣
增加了新的语言伴侣Python 3和C++。本书的语言伴侣都可以在网站www.pearson-h-i-ghered.com/gaddis上找到。
各章简介
第1章,首先简要介绍计算机的工作原理、数据的存储和操作方式,以及为什么我们用高级语言编写程序。
第2章,介绍程序开发周期、数据类型、变量和顺序结构。学习使用伪代码和流程图来设计简单程序,包括读取输入、执行数学运算和生成屏幕输出。
第3章,演示模块化程序和自顶向下设计方法的好处。学习定义和调用模块、给模块传递实参、使用局部变量。引入层次结构图作为设计工具。
第4章,介绍关系运算符和布尔表达式,以及用决策结构进行程序流程控制的方法。还介绍If-Then、If-Then-Else和If-Then-Else If语句、嵌套决策结构、逻辑运算符、Case结构。
第5章,学习用循环创建循环结构的方法。包括While、Do-While、Do-Until和For循环,还有计数器、累加器、运行总和和哨兵。
第6章,首先讨论通用库函数,例如生成随机数的函数。然后,在学习如何调用库函数以及如何使用函数返回值之后,学习如何定义和调用自定义函数。
第7章,讨论用户输入验证的重要性。学习编写用于错误陷阱的输入验证循环。讨论的内容还有:防御性编程、对明显和不明显错误进行预测的重要性。
第8章,学习一维数组和二维数组的创建和使用。包含许多数组处理的示例,包括对一维数组元素求和、计算平均值、求数组最大值和最小值,以及对二维数组的行、列和全部元素求和。还演示了使用并行数组进行编程的技术。
第9章,学习数组排序和数组元素查找的基础算法。包括的内容有:起泡排序、选择排序、插入排序和折半查找算法。
第10章,介绍顺序文件的输入和输出。学习读取和写入大集合数据,将数据另存为字段或记录,设计可用于处理文件和数组的程序。该章最后讨论了中断处理控制。
第11章,讲述如何设计程序,该程序显示菜单,并根据用户的菜单选项来执行。该章还讨论了模块化菜单驱动程序的重要性。
第12章,详细讨论文本处理。包括对字符串逐个字符处理的算法,用于字符和文本处理的若干常用库函数。
第13章,讨论递归及其用途。提供递归调用过程的可视化跟踪,讨论递归应用程序。给出许多递归算法,例如计算阶乘、求最大公约数(GCD)、数组求和、折半查找,还有经典的汉诺塔算法。
第14章,将过程化和面向对象的编程进行了比较。包含类和对象的基本概念,讨论了域、方法、访问规范、构造函数、访问器和变异器。学习如何使用UML来对类建模、如何在特定问题中寻找类。
第15章,讨论GUI应用程序的基本内容,以及如何使用可视化设计工具(如Visual Studio或NetBeans)构建图形用户界面。学生要学习事件是如何在GUI应用程序中工作的,以及如何编写事件处理程序。
附录,列出了ASCII字符集,与前127个Unicode字符编码相同。
内容组织
本书以逐步推进的方式讲授编程逻辑和设计。每一章都包含一组主题,学生只要按部就班地学习,就可以掌握本书的知识。虽然这些章节按照现有的顺序可以很轻松地讲授,但还是有一些灵活性。图P-1显示了各章之间的依赖关系。 每个框代表一章或几章。箭头指向(即箭头终止)的章必须在箭头起始的各章节之前讲完。虚线表示第10章只有一部分内容依赖第8章的知识。

图P-1 各章之间的依赖关系
本书的特点
概念陈述 本书的每一节都以概念陈述开头,简要概述了本节的要点。
示例程序 每章都有丰富的示例程序,有些是完整代码、有些只是部分代码。每个示例程序都旨在突出当前的主题。示例程序使用伪代码、流程图和其他设计工具。
重点聚焦 每章的“重点聚焦”都有一个或多个案例,详细地、逐步地分析问题和解决问题。
可视化注释 一系列专为本书开发的在线视频可在www.pearsonhighered.com/gaddis上查看。图标出现在文本中,针对特定的主题,提示学生关注相关的视频。
注意:“注意”在书中出现若干处,对与主题相关的有意义或经常误解的知识点给予简短的解释。
提示:“提示”建议学生了解可用于处理不同的编程或动画问题的最佳方法。
警告:“警告”告知学生有关可能导致程序故障或丢失数据的编程技术或做法。
编程语言伴侣 本书许多伪代码程序也用Java、Python和Visual Basic编写。这些程序出现在www.pearsonhighered.com/gaddis上的“编程语言伴侣”中。每个伪代码程序旁边的图标也出现在语言伴侣中。
知识点 在每一章的小节末尾大都会以提问形式列出知识点,旨在学完每一个新的主题之后,快速检查学生掌握的情况。
复习 每章都提供了一套全面而多样的复习题和编程练习,它们包括多项选择、判断正误、简答、算法工作台、调试练习和编程练习。
补充
学生在线资源
许多学生资源都可以从出版商处获得。以下资源可在Gaddis系列资源页面(www.pearsonhighered.com/gaddis)上获取:
访问本书配套的可视化注释
已经开发了大量的在线可视化注释(VideoNotes)。在整本书中,可视化注释图标提醒学生观看特定主题的视频。另外,每章结尾的一个编程练习都附带了可视化注释,介绍了如何开发问题的解决方案。
访问Python、Java、Visual Basic和C++的语言伴侣
专为本书第3版配套设计的编程语言伴侣可以下载。编程语言伴侣介绍了Java、Python、Visual Basic和C++编程语言,并与本书逐章对应。本书很多伪代码程序都在编程语言伴侣中用一种具体编程语言实现了。
下载RAPTOR流程图环境的链接
RAPTOR是由美国空军学院计算机科学系开发的基于流程图的编程环境。
教师资源
以下补充资源仅供有资格的教师使用:
复习中所有问题的答案
编程练习的解决方案
每章的PowerPoint演示幻灯片
试题库
访问Pearson Instructor Resource Center(http://www.pearsonhighered.com/irc)或发送电子邮件至computing@aw.com。

上架指导

计算机\程序设计

封底文字

本书是一本独立于语言的编程入门书,面向零基础的学生介绍编程概念和逻辑。书中使用易于理解的伪代码、流程图和其他工具辅助教学,规避了语法的困扰;通过清晰易懂的语言、大量的程序设计实例和细致入微的解释,让读者轻松地掌握核心概念和编程技巧。

本书特点
本书使用的伪代码接近具体的编程语言,突出算法和逻辑。同时,将算法步骤、伪代码描述和程序流程图结合得天衣无缝、相得益彰,既照顾了读者的偏好,又促进了读者的全面发展。
本书的算法示例经过了精心设计,始终将正在学习的和已经学过的内容进行比较,前后关联,循序渐进,使读者具有不断增长的成就感。
本书每一章的开头都有主题引导,结尾都有知识点测试,随时随地进行精准辅导。每一节最后都有“难点聚焦”,把本节的知识点和伪代码都综合运用在实用的程序设计中,活学活用。每一章结尾都有总复习,包括多选题、单选题、简答题、算法平台、代码检查、编程练习,丰富详尽,堪比题库。
本书在相应的网站上提供了与本书伪代码程序对应的用Python、C++、Java、VB等具体编程语言实现的程序。这不仅弥补了因独立于编程语言而可能产生的理论与实验脱离的缺陷,而且大大扩展了本书的适用范围,可作为任何讲授程序语言的课程教材。

作者简介
托尼·加迪斯(Tony Gaddis) 在北卡罗来纳州的海伍德社区学院讲授“计算机编程语言”“操作系统”和“物理”课程。他在1994年被评为北卡罗来纳社区学院的“年度最佳教师”,并在1997年获得“教学卓越奖”。Tony也提供对公司和机构(包括NASA的肯尼迪航天中心)的培训。他著有《Starting Out with C++》和《Starting Out with Java》,并与人合著了《Starting Out with Visual Basic 2005》等。

作者简介

[美] 托尼·加迪斯(Tony Gaddis) 著:托尼•加迪斯(Tony Gaddis)在北卡罗来纳州的海伍德社区学院讲授“计算机编程语言”“操作系统”和“物理”课程。他在1994年被评为北卡罗来纳社区学院的“年度最佳教师”,并在1997年获得“教学卓越奖”。Tony也提供对公司和机构(包括NASA的肯尼迪航天中心)的培训。他著有《Starting Out with C++》和《Starting Out with Java》,并与人合著了《Starting Out with Visual Basic 2005》等。

译者序

随着计算机与人类工作、生活的日益融合,人们的大部分工作要基于计算机来完成,越来越多的工作岗位要求从业者具备编程能力。因此,编程能力也逐渐成为人才的竞争力之一。
对于初学者而言,学习编程有很多难点,包括选择合适的编程语言、理解通过编程语言将人类意图转换为计算机程序的过程和方法等。同时,初学者往往容易拘泥于编程语言的语法细节,而忽视了对编程逻辑的理解,最终难以真正掌握通过编程解决实际问题的方法。
针对上述问题,本书采用了伪代码来讲授编程逻辑和方法,从而很好地解决了上述难题。本书的独特之处可总结为以下几点:
1.本书使用的伪代码最接近具体的编程语言,而且简单实用,避免读者陷入繁杂的语法细节。语句表达洗练,语句功能明显。
2.本书的算法示例经过精心设计,具体贴切,始终将正在学习的和已经学过的内容进行比较,前后关联,循序渐进,逻辑流畅,一气呵成,使读者具有不断增长的成就感和亲切感。
3.本书将算法步骤、伪代码描述和程序流程图结合得天衣无缝,相得益彰,既照顾了读者的偏好,又促进了读者的全面发展。
4.本书几乎每一章都有“重点聚焦”,把该章的知识点和代码都综合运用在实用的程序设计中,活学活用。
5.每一章结尾都有知识点测试,随时随地进行精准辅导。特别是每一章结尾都有复习内容,包括多选题、单选题、简答题、算法工作、代码检查、编程练习,内容丰富详尽,堪比题库。学生可自学自查,教师可线上线下辅助教学。
6.本书在相应的网站上提供了与本书伪代码程序对应的、用各种具体编程语言实现的程序。这不但弥补了因独立于编程语言而可能产生的理论与实验脱节的缺陷,而且大大扩展了本书的适用范围:凡是讲授程序语言设计的教师几乎都可以使用本书作为教材。
7.本书扩大了课堂教学和实验教学的张力:使用伪代码讲授,可以突出算法和逻辑及其程序设计的核心内容;把伪代码转变为具体语言的实现可以充分调动学生理论付诸实践的主动性。
8.教师资源丰富:包括复习的答案、编程练习的解决方案、试题库和授课的PPT。
很高兴有机会翻译这本理念独特的程序设计教材,但由于翻译周期的要求,本书译稿中难免有翻译不当之处,请读者和同行不吝指正,我们将不胜感激。

译者
2018年4月

图书目录

出版者的话
译者序
前言
第1章 计算机与程序设计导论 1
1.1 引言 1
1.2 硬件 2
1.3 计算机是如何存储数据的 5
1.4 程序是如何执行的 8
1.5 软件的种类 14
复习 15
第2章 输入、处理和输出 18
2.1 设计一个程序 18
2.2 输出、输入和变量 21
2.3 变量赋值和计算 27
重点聚焦:计算手机的超时话费 29
重点聚焦:计算百分比 31
重点聚焦:计算平均值 32
重点聚焦: 将一个数学公式转换为编程语句 34
2.4 变量声明和数据类型 36
2.5 命名常量 40
2.6 手动跟踪程序 41
2.7 程序文档 42
重点聚焦: 使用命名常量、风格约定和注释 43
2.8 设计你的第一个程序 44
复习 47
第3章 模块 52
3.1 模块简介 52
3.2 定义和调用模块 53
重点聚焦:模块的定义和调用 57
3.3 局部变量 61
3.4 将参数传递给模块 63
重点聚焦: 将一个实参传给一个模块 66
重点聚焦: 通过引用传递一个实参 71
3.5 全局变量和全局常量 73
重点聚焦:使用全局常量 74
复习 76
第4章 决策结构和布尔逻辑 82
4.1 决策结构简介 82
重点聚焦:使用If-Then语句 86
4.2 双重选择决策结构 88
重点聚焦:使用If-Then-Else语句 89
4.3 比较字符串 92
4.4 嵌套决策结构 95
重点聚焦:决策结构的多重嵌套 98
4.5 Case结构 101
重点聚焦:使用Case结构 103
4.6 逻辑运算符 105
4.7 布尔变量 110
复习 111
第5章 循环结构 116
5.1 循环结构简介 116
5.2 条件控制循环: While、Do-While和 Do-Until 117
重点聚焦:设计一个While循环 120
重点聚焦: 设计一个Do-While循环 126
5.3 计数控制循环和For语句 130
重点聚焦: 使用For语句设计一个计数控制循环 135
5.4 计算运行总和 143
5.5 哨兵 145
重点聚焦:如何使用哨兵 146
5.6 嵌套循环 148
复习 151
第6章 函数 155
6.1 函数简介:生成随机数 155
重点聚焦:使用随机数 157
重点聚焦:用随机数表示其他值 158
6.2 写自己的函数 161
重点聚焦:基于函数的模块化 165
6.3 更多的库函数 172
复习 181
第7章 输入验证 185
7.1 垃圾入,垃圾出 185
7.2 输入验证循环 186
重点聚焦: 设计一个输入验证循环 187
7.3 防御性编程 191
复习 192
第8章 数组 195
8.1 数组基础知识 195
重点聚焦: 在数学表达式中使用数组元素 199
8.2 数组的顺序搜索 206
8.3 数组的数据处理 210
重点聚焦:处理数组 216
8.4 并行数组 221
重点聚焦:并行数组的应用 221
8.5 二维数组 224
重点聚焦:二维数组的应用 227
8.6 三维或高维数组 231
复习 232
第9章 数组的排序和查找 237
9.1 起泡排序算法 237
重点聚焦:使用起泡排序算法 242
9.2 选择排序算法 248
9.3 插入排序算法 253
9.4 折半查找算法 257
重点聚焦:使用折半查找算法 260
复习 262
第10章 文件 266
10.1 文件的输入和输出 266
10.2 采用循环处理文件 275
重点聚焦:处理文件 278
10.3 使用文件和数组 282
10.4 处理记录 283
重点聚焦:添加和显示记录 286
重点聚焦:搜索记录 289
重点聚焦:修改记录 290
重点聚焦:删除记录 295
10.5 控制中断逻辑 297
重点聚焦:使用控制中断逻辑 298
复习 302
第11章 菜单驱动程序 306
11.1 菜单驱动程序简介 306
11.2 模块化菜单驱动程序 314
11.3 使用循环重复菜单 318
重点聚焦:设计菜单驱动程序 320
11.4 多级菜单 332
复习 336
第12章 文本处理 340
12.1 引言 340
12.2 逐字符文本处理 341
重点聚焦:密码验证 343
重点聚焦: 电话号码格式化和去格式化 347
复习 351
第13章 递归 356
13.1 递归介绍 356
13.2 递归求解 358
13.3 递归算法举例 361
复习 369
第14章 面向对象设计 372
14.1 过程化编程及面向对象编程 372
14.2 类 374
14.3 使用统一建模语言来设计类 383
14.4 寻找一个问题中的类及其功能 384
重点聚焦:寻找一个问题中的类 384
重点聚焦:定义类的功能 387
14.5 类的继承 392
14.6 类的多态性 397
复习 401
第15章 GUI应用程序和事件驱动编程 405
15.1 图形交互界面 405
15.2 设计GUI程序的用户接口 407
重点聚焦:设计一个窗口 410
15.3 编写事件处理程序 412
重点聚焦: 设计一个事件处理程序 414
复习 415
附录 ASCII/Unicode字符 418

教学资源推荐
作者: [英] 约翰·M. 斯图尔特(John M. Stewart) 著
参考读物推荐
作者: 校宝在线 肖伟宇 翁琳鼎 王斌 厉红兵 编著
作者: Peter Cooper
作者: Rogers Cadenhead