程序设计基础(原书第3版)

程序设计基础(原书第3版) pdf epub mobi txt 电子书 下载 2025

[美] 托尼·加迪斯(Tony Gaddis) 著,王立柱 译
图书标签:
  • 程序设计
  • 基础
  • C语言
  • 入门
  • 教学
  • 教材
  • 计算机
  • 编程
  • 算法
  • 第3版
  • 经典
想要找书就要到 静流书站
立刻按 ctrl+D收藏本页
你会得到大惊喜!!
出版社: 机械工业出版社
ISBN:9787111596806
版次:1
商品编码:12358976
品牌:机工出版
包装:平装
丛书名: 计算机科学丛书
开本:16开
出版时间:2018-05-01
用纸:胶版纸
页数:418

具体描述

内容简介

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

作者简介

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

目录

目  录
Starting Out with Programming Logic & Design, Third Edition
出版者的话
译者序
前言
第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

前言/序言

前  言Starting Out with Programming Logic & Design, Third Edition欢迎学习本书第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显示了各章之间的依赖关系。 每个框代表一章或几章。箭头指向(即
《算法的奥秘:从思维到实现》 前言 在这个信息爆炸的时代,数据如同奔腾不息的河流,而算法,则是驾驭这股洪流、从中挖掘宝藏的智慧之舟。它们是解决问题的通用蓝图,是连接理论与实践的桥梁,更是驱动现代科技发展的核心引擎。从搜索引擎的精准匹配,到社交网络的智能推荐,再到自动驾驶的精准导航,无不闪耀着算法的智慧光芒。 然而,算法的学习并非易事。许多初学者在面对抽象的数学概念和复杂的逻辑结构时,常常感到无从下手,甚至产生畏难情绪。市面上关于算法的书籍琳琅满目,但不少作品过于侧重理论的深度,或是过于依赖具体的编程语言,使得读者在理解核心思想上步履维艰。 《算法的奥秘:从思维到实现》的诞生,正是为了填补这一鸿沟。我们深知,理解算法的本质,比死记硬背某个排序或查找的实现细节更为重要。因此,本书的核心目标是引导读者掌握算法设计的思维方式,培养解决问题的分析能力,并在此基础上,循序渐进地掌握各类经典算法的精髓。我们力求用最直观、最易懂的方式,揭示算法背后的逻辑,让抽象的概念变得鲜活起来。 本书并非一本枯燥的理论堆砌,也非一本仅仅罗列代码的工具书。我们更希望它成为读者探索算法世界的一位良师益友。通过大量的实例分析、图形化解释以及循序渐进的难度梯度,我们旨在帮助读者构建起扎实的算法基础,并激发对算法的浓厚兴趣。无论你是计算机科学专业的学生,还是希望提升编程技能的开发者,亦或是对数据驱动的智能化世界充满好奇的求知者,《算法的奥秘:从思维到实现》都将是你不可或缺的宝藏。 本书特色 思维导向,而非代码导向: 我们将重心放在算法的设计思路、思想演进以及适用场景上。每一种算法的引入,都源于其解决的具体问题,并深入剖析其背后的逻辑和策略。我们希望读者学会“如何思考”算法,而非仅仅“如何编写”算法。 直观易懂,化繁为简: 复杂的算法概念常常令人望而生畏。本书大量采用图示、类比和生动的语言,将抽象的算法过程可视化,让读者能够轻松理解其工作原理。例如,对于递归算法,我们将通过“俄罗斯套娃”或“分形几何”等直观的例子来解释;对于图算法,我们会将其与现实世界中的交通网络、社交关系等进行类比。 循序渐进,构建知识体系: 本书的章节安排遵循逻辑性与递进性原则。我们从最基础的算法概念和数据结构入手,逐步过渡到更复杂、更高级的算法。每一章的内容都建立在前一章的基础上,确保读者能够稳步构建起完整的算法知识体系,避免“夹生饭”。 经典算法,深度解析: 本书涵盖了计算机科学中最核心、最常用的算法,包括但不限于排序算法(冒泡排序、插入排序、快速排序、归并排序)、查找算法(线性查找、二分查找)、图算法(深度优先搜索、广度优先搜索、Dijkstra算法、Floyd-Warshall算法)、动态规划、贪心算法等。我们不仅会介绍这些算法的实现,更会深入探讨它们的复杂度分析、最优性证明以及实际应用。 问题驱动,贴近实战: 理论与实践相结合是学习的王道。本书每介绍完一种算法或一种思想,都会附带相应的典型问题和实例分析,引导读者将所学知识应用于解决实际问题。这些问题涵盖了从数据处理、路径规划到资源分配等多个领域,帮助读者体会算法的强大威力。 严谨而不失趣味: 我们力求在保持学术严谨性的同时,增加学习的趣味性。书中穿插了算法发展史上的趣闻轶事,以及一些巧妙的算法设计案例,让读者在轻松的氛围中体会算法的魅力。 目录概览 第一部分:算法的基石——思维的起点 第一章:走进算法的世界 什么是算法?算法的要素与特征。 算法的重要性:为何我们如此重视算法? 算法的衡量标准:效率、正确性与可读性。 算法的表示方法:伪代码与流程图。 从一个简单的例子开始:求和问题。 第二章:数据结构初探 数据结构是什么?它与算法的关系。 线性结构:数组、链表、栈、队列。 非线性结构:树(二叉树、平衡树)、图。 抽象数据类型(ADT)的概念。 第二部分:经典算法的智慧——排序与查找 第三章:排序的艺术:让数据有序 排序算法的分类:内部排序与外部排序。 简单排序算法:冒泡排序、插入排序、选择排序。 高效排序算法:快速排序、归并排序、堆排序。 排序算法的复杂度分析与比较。 稳定性与原地性。 第四章:查找的艺术:快速定位信息 查找算法的分类:静态查找与动态查找。 顺序查找(线性查找)。 折半查找(二分查找):前提与应用。 哈希查找:散列函数与冲突处理。 二叉搜索树与平衡二叉树。 第三部分:图形世界的探索——图算法的魅力 第五章:图论基础与遍历 图的定义与表示:邻接矩阵与邻接表。 图的遍历:深度优先搜索(DFS)。 图的遍历:广度优先搜索(BFS)。 图的连通性:连通分量。 第六章:最短路径的追寻 单源最短路径问题。 Dijkstra算法:贪心策略的应用。 Bellman-Ford算法:处理负权边。 所有顶点对最短路径问题:Floyd-Warshall算法。 第七章:最小生成树的构建 最小生成树的概念。 Prim算法:另一种贪心策略。 Kruskal算法:并查集的应用。 第四部分:高级算法的思维——动态规划与贪心 第八章:动态规划:分而治之的智慧 动态规划的基本思想:最优子结构与重叠子问题。 记忆化搜索与自底向上。 经典动态规划问题:斐波那契数列、背包问题、最长公共子序列。 状态转移方程的设计。 第九章:贪心算法:局部最优到全局最优 贪心算法的定义与特征。 贪心选择性质与最优子结构。 经典贪心问题:活动选择问题、霍夫曼编码。 贪心算法的局限性。 第五部分:算法的进阶之路 第十章:字符串匹配算法 朴素字符串匹配。 KMP算法(Knuth-Morris-Pratt)。 BM算法(Boyer-Moore)。 第十一章:搜索算法的深化 回溯法:解空间搜索。 分支限界法:优化搜索。 第十二章:复杂度理论入门 渐进记号:O、Ω、Θ。 时间复杂度和空间复杂度。 NP-完全问题简介。 结语 算法的海洋广阔而深邃,充满了无穷的奥秘与挑战。掌握算法,不仅是掌握一门技术,更是掌握一种思维模式,一种解决问题的通用工具。我们希望《算法的奥秘:从思维到实现》能够点燃你对算法的热情,帮助你构建起坚实的知识壁垒,让你在编程的世界里游刃有余,在技术革新的浪潮中,成为一名自信而富有创造力的探索者。 愿你在算法的世界里,发现属于自己的无限可能!

用户评价

评分

一本让我彻底改变对编程看法的书,虽然我还没有开始阅读它的正文,但光是目录和前言就足以让我惊叹不已。它并没有像很多入门书籍那样,一上来就抛出一大堆晦涩难懂的概念和代码,而是非常有策略地循序渐进。我尤其欣赏作者在开篇部分对“为什么学习编程”这个问题的深入探讨,这让我开始思考编程的本质和它在现代社会中的意义,而不仅仅是把它当成一门需要死记硬背的技能。我了解到,编程不仅仅是写代码,更是一种解决问题的思维方式,一种创造性的表达。它似乎鼓励读者从更高的层面去理解编程,而非仅仅停留在语法层面。我迫不及待地想看看书中是如何将这些理念转化为具体的编程实践的。作者在目录中也巧妙地穿插了一些“思考题”和“项目挑战”,这让我预感到这不会是一本被动学习的书,而是一本需要主动探索和实践的书。这种设计让我充满期待,觉得这本书会是一次真正的思维锻炼。

评分

这本书的作者似乎非常理解初学者的困境,这一点从它对于一些基础概念的讲解方式上就能看出来。我注意到作者在解释“变量”和“数据类型”时,并没有直接给出枯燥的定义,而是通过一些贴近生活的类比,比如“盒子”和“标签”,来帮助我们理解。这种接地气的解释方式,让我觉得学习过程没有那么枯燥和遥不可及。而且,作者似乎有意避免使用过于专业的术语,或者在使用时会立即给出通俗易懂的解释,这让我觉得学习门槛大大降低了。我之前接触过一些编程书籍,常常因为突然冒出的生词而感到沮丧,但这本书似乎非常有意识地避免了这种情况。我特别欣赏作者在章节结尾处设置的“总结”部分,用简洁的语言回顾本章的要点,并且会提前预告下一章将要讲到的内容,这让我的学习过程非常有条理,不会感到迷失。

评分

不得不说,这本书在排版和视觉设计上给了我很大的惊喜。虽然我还没正式开始学习里面的编程语言,但我被它精美的布局和清晰的图示深深吸引。每一页都好像经过精心设计,重点突出,易于阅读。我喜欢书中大量使用图表和流程图来解释抽象的概念,这比单纯的文字描述要直观得多,也能帮助我更快地理解复杂的逻辑。比如,作者在介绍某个算法时,用了一个生动的比喻和一组清晰的示意图,我感觉自己一下子就抓住了核心要点。而且,书中的代码示例也都使用了醒目的高亮格式,看起来非常舒服,不会让眼睛疲劳。我尤其喜欢书中在关键概念旁边留出的空白区域,这鼓励读者在阅读时进行批注和思考,感觉就像是有一个老师在旁边引导你一样。这种细节上的用心,让我觉得这本书不只是内容的堆砌,而是真正以读者的学习体验为中心。

评分

我目前正在探索这本书关于“函数”的部分,即使还没有深入代码实现,但作者的讲解思路已经让我眼前一亮。他并没有上来就讲解函数如何定义和调用,而是先从“模块化”和“代码复用”的角度来阐述函数的重要性,这让我从一开始就理解了为什么要使用函数,而不是被动地接受一个语法规则。作者在描述函数的概念时,用了一个“小工具箱”的比喻,每个工具都有特定的功能,可以独立使用,也可以组合使用,这种形象的比喻让我对函数的理解立刻清晰了许多。我感觉这本书的讲解方式更像是在传授一种编程的“哲学”和“思想”,而不是单纯地教授一种技术。他似乎在引导读者去思考如何写出更优雅、更易于维护的代码,这对于一个初学者来说,是非常宝贵的指导。

评分

虽然我还没有深入学习这本书的具体编程语言,但它所传递出的“调试”和“错误处理”的理念,已经给我留下了深刻的印象。作者似乎非常强调在编写代码的过程中,要学会如何发现和解决问题,而不是害怕犯错。他在目录中专门辟出了一个章节来讲解“调试技巧”,并且在其他章节中也会时不时地穿插一些“常见错误及解决方法”的提示。这让我觉得,这本书并没有把犯错看作是学习的障碍,而是学习过程中必然会遇到的环节,并且提供了有效的应对策略。这种积极的态度,极大地减轻了我对编程错误的恐惧感。我预感,这本书会教会我如何成为一个更加独立和有韧性的程序员,能够主动地去解决遇到的技术难题,而不是被动地寻求帮助。

相关图书

本站所有内容均为互联网搜索引擎提供的公开搜索信息,本站不存储任何数据与内容,任何内容与数据均与本站无关,如有需要请联系相关搜索引擎包括但不限于百度google,bing,sogou

© 2025 book.coffeedeals.club All Rights Reserved. 静流书站 版权所有