本书是国外大学计算机专业低年级教材之一。本书从讲解基础的程序设计原理开始,使用一种独特的,面向对象的、独立于具体语言的方式,通过详细的讲解,循序渐进的示例、颇具代表性的典型应用和内容丰富的课后练习题,让读者深入掌握结构化程序设计的概念、面向对象程序设计的概念和相应的解题工具。\r\n\r\n读者对象:\r\n\r\n本书尤其适合于大专院校计算机相关专业低年级学生使用,也可供对结构化和面向对象程序设计感兴趣的爱好者使用。本书内容深入浅出、形象生动,是一本难得的好书。\r\n
\r\n
第1部分 结构化程序设计 \r\n\r\n 第1章 结构化设计导论 \r\n\r\n 1. 1 学习目标 \r\n\r\n 1. 2 学习指导 \r\n\r\n 1. 3 系统开发生命周期 \r\n\r\n 1. 4 结构化程序设计 \r\n\r\n 1. 5 关键术语 \r\n\r\n 1. 6 练习题 \r\n\r\n 第2章 SIMPLE SEQUENCE控制结构 \r\n\r\n 2. 1 学习目标 \r\n\r\n 2. 2 学习指导 \r\n\r\n 2. 3 数据层次 \r\n\r\n 2. 4 销售应用示例 \r\n\r\n 2. 5 设计验证 \r\n\r\n 2. 6 示例问题2. 1:温度转换问题 \r\n\r\n 2. 7 示例问题2. 2:账单问题 \r\n\r\n 2. 8 流程图工具 \r\n\r\n 2. 9 内容扩充(Basic) \r\n\r\n 2. 10 内容扩充(VisualBasic) \r\n\r\n 2. 11 关键术语 \r\n\r\n 2. 12 练习题 \r\n\r\n 第3章 IFTHENELSE控制结构 \r\n\r\n 3. 1 学习目标 \r\n\r\n 3. 2 学习指导 \r\n\r\n 3. 3 账单示例 \r\n\r\n 3. 4 伪代码 \r\n\r\n 3. 5 IFFHENELSE控制结构 \r\n\r\n 3. 6 计时卡片示例 \r\n\r\n 3. 7 示例问题3. 1:薪金问题 \r\n\r\n 3. 8 示例问题3. 2:寻找最小值问题 \r\n\r\n 3. 9 示例问题3. 3:银行问题 \r\n\r\n 3. 10 字符串常量 \r\n\r\n 3. 11 示例问题3. 4:销售问题 \r\n\r\n 3. 12 内容扩充(Basic) \r\n\r\n 3. 13 内容扩充(VisualBasic) \r\n\r\n 3. 14 关键字 \r\n\r\n 3. 15 练习题 \r\n\r\n 第4章 DOWHILE控制结构--计数器控制循环 \r\n\r\n 4. 1 学习目标 \r\n\r\n 4. 2 学习指导 \r\n\r\n 4. 3 问题:六数相加 \r\n\r\n 4. 4 模拟:六数相加 \r\n\r\n 4. 5 DOWHILE循环 \r\n\r\n 4. 6 计数器控制循环 \r\n\r\n 4. 7 示例问题4. 1:使用计数器循环的薪金程序 \r\n\r\n 4. 8 示例问题4. 2:使用计数器循环求平均值 \r\n\r\n 4. 9 首记录逻辑 \r\n\r\n 4. 10 示例问题4. 3:用首记录解决薪金问题 \r\n\r\n 4. 11 示例问题4. 4:用首记录求平均值问题 \r\n\r\n 4. 12 无效数据 \r\n\r\n 4. 13 正常程序 \r\n\r\n 4. 14 内容扩充(Basic) \r\n\r\n 4. 15 内容扩充(VisualBasic) \r\n\r\n 4. 16 关键术语 \r\n\r\n 4. 17 练习题 \r\n\r\n 第5章 DOWHILE控制结构--尾记录逻辑 \r\n\r\n 5. 1 学习目标 \r\n\r\n 5. 2 学习指导 \r\n\r\n 5. 3 示例问题5. 1:缺陷零件问题 \r\n\r\n 5. 4 文件尾自动处理 \r\n\r\n 5. 5 示例问题5. 2:使用多标题的缺陷零件问题 \r\n\r\n 5. 6 多标题--总结 \r\n\r\n 5. 7 示例问题5. 3:学分问题 \r\n\r\n 5. 8 DOWHILE循环控制--总结 \r\n\r\n 5. 9 内容扩充(Basic) \r\n\r\n 5. 10 内容扩充(VisualBasic) \r\n\r\n 5. 11 关键术语 \r\n\r\n 5. 12 练习题 \r\n\r\n 第6章 模块化 \r\n\r\n 6. 1 学习目标 \r\n\r\n 6. 2 学习指导 \r\n\r\n 6. 3 结构图 \r\n\r\n 6. 4 示例问题6. 1:使用模块技术求平均值问题 \r\n\r\n 6. 5 示例问题6. 2:使用模块技术处理含多标题的缺陷零件问题 \r\n\r\n 6. 6 示例问题6. 3:使用模块技术处理学分问题 \r\n\r\n 6. 7 内容扩充(Basic) \r\n\r\n 6. 8 内容扩充(VisualBasic) \r\n\r\n 6. 9 关键术语 \r\n\r\n 6. 10 练习题 \r\n\r\n 第7章 CASE控制结构 \r\n\r\n 7. 1 学习目标 \r\n\r\n 7. 2 学习指导 \r\n\r\n 7, 3 存货清单操纵示例 \r\n\r\n 7. 4 示例问题7. 1:操作码问题 \r\n\r\n 7. 5 示例问题7. 2:不使用模块求解销售问题 \r\n\r\n 7. 6 示例问题7. 3:使用模块求解销售问题 \r\n\r\n 7. 7 示例问题7. 4:有汇总的销售问题 \r\n\r\n 7. 8 内容扩充(Basic) \r\n\r\n 7. 9 内容扩充(VisualBasic) \r\n\r\n 7. 10 关键术语 \r\n\r\n 7. 11 练习题 \r\n\r\n 第8章 DOUNTIL控制结构 \r\n\r\n 8. 1 学习目标 \r\n\r\n 8. 2 学习指导 \r\n\r\n 8. 3 DOUNTIL计数器循环 \r\n\r\n 8. 4 示例问题8. 1:货物--计数器控制 \r\n\r\n 8. 5 示例问题8. 2:货物--首记录逻辑 \r\n\r\n 8. 6 示例问题8. 3:货物--尾记录逻辑 \r\n\r\n 8. 7 DOWHILE和DOUNTIL的比较 \r\n\r\n 8. 8 内容扩充(Basic) \r\n\r\n 8. 9 内容扩充(VisualBasic) \r\n\r\n 8. 10 关键术语 \r\n\r\n 8. 11 练习题 \r\n\r\n 第9章 数组初步 \r\n\r\n 9. 1 学习目标 \r\n\r\n 9. 2 学习指导 \r\n\r\n 9. 3 列表结构 \r\n\r\n 9. 4 列表示例 \r\n\r\n 9. 5 示例问题9. 1:寻找最小数 \r\n\r\n 9. 6 示例问题9. 2:求平均值 \r\n\r\n 9. 7 示例问题9. 3:统计单词出现次数 \r\n\r\n 9. 8 示例问题9. 4:数组内容加倍 \r\n\r\n 9. 9 示例问题9. 5:求数组内容的平方和立方 \r\n\r\n 9. 10 表格结构 \r\n\r\n 9. 11 表格示例 \r\n\r\n 9. 12 示例问题9. 6:座位示意图问题 \r\n\r\n 9. 13 示例问题9. 7:寻找最高平均成绩 \r\n\r\n 9. 14 示例问题9. 8:二维数组计算 \r\n\r\n 9. 15 多维数组结构 \r\n\r\n 9. 16 内容扩充(Basic) \r\n\r\n 9. 17 内容扩充(VisualBasic) \r\n\r\n 9. 18 关键术语 \r\n\r\n 9. 19 练习题 \r\n\r\n \r\n\r\n 第II部分 面向对象程序设计 \r\n\r\n 第10章 面向对象设计概述 \r\n\r\n 10. 1 学习目标 \r\n\r\n 10. 2 学习指导 \r\n\r\n 10. 3 对象和类 \r\n\r\n 10. 4 面向对象设计 \r\n\r\n 10. 5 GradeBook类 \r\n\r\n 10. 6 封装和数据隐藏 \r\n\r\n 10. 7 GradeBook类伪代码 \r\n\r\n 10. 8 驱动程序--GradeBook示例 \r\n\r\n 10. 9 构造函数 \r\n\r\n 10. 10 重载 \r\n\r\n 10. 11 析构函数 \r\n\r\n 10. 12 示例问题10. 1:计算周长 \r\n\r\n 10. 13 示例问题10. 2:根据输入参数计算周长和面积并返回相应值 \r\n\r\n 10. 14 关键术语 \r\n\r\n 10. 15 练习题 \r\n\r\n 第11章 继承 \r\n\r\n 11. 1 学习目标 \r\n\r\n 11. 2 学习指导 \r\n\r\n 11. 3 泛化/特化关系 \r\n\r\n 11. 4 继承 \r\n\r\n 11. 5 类的层次 \r\n\r\n 11. 6 多态 \r\n\r\n 11. 7 Employee类 \r\n\r\n 11. 8 Faculty子类 \r\n\r\n 11. 9 Staff子类 \r\n\r\n 11. 10 驱动程序--Employee类示例 \r\n\r\n 11. 11 示例问题11. 1:银行账户处理结构 \r\n\r\n 11. 12 示例问题11. 2:实现Account类 \r\n\r\n 11. 13 示例问题11. 3:实现标准核算类 \r\n\r\n 11. 14 抽象类 \r\n\r\n 11. 15 统一建模语言 \r\n\r\n 11. 16 关键术语 \r\n\r\n 11. 17 练习题 \r\n\r\n 第12章 其他类和对象间关系 \r\n\r\n 12. 1 学习目标 \r\n\r\n 12. 2 学习指导 \r\n\r\n 12. 3 关联 \r\n\r\n 12. 4 示例问题12. 1:花瓶和花 \r\n\r\n 12. 5 聚合 \r\n\r\n 12. 6 管理资产示例 \r\n\r\n 12. 7 合成 \r\n\r\n 12. 8 迭代设计 \r\n\r\n 12. 9 示例问题12. 2:计划一个组事件 \r\n\r\n 12. 10 内部类 \r\n\r\n 12. 11 面向对象设计的优点 \r\n\r\n 12. 12 面向对象语言 \r\n\r\n 12. 13 关键术语 \r\n\r\n 12. 14 练习题 \r\n\r\n \r\n\r\n 第Ⅲ部分 程序设计应用 \r\n\r\n 第13章 数组应用 \r\n\r\n 13. 1 学习目标 \r\n\r\n 13. 2 学习指导 \r\n\r\n 13. 3 表格搜索 \r\n\r\n 13. 4 示例问题13. 1:表格搜索 \r\n\r\n 13. 5 折半搜索 \r\n\r\n 13. 6 示例问题13. 2:折半搜索的例子 \r\n\r\n 13. 7 列表的排序 \r\n\r\n 13. 8 示例问题13. 3:排序例子 \r\n\r\n 13. 9 关键术语 \r\n\r\n 13. 10 练习题 \r\n\r\n 第14章 主文件更新处理 \r\n\r\n 14. 1 学习目标 \r\n\r\n 14. 2 学习指导 \r\n\r\n 14. 3 文件维护 \r\n\r\n 14. 4 顺序处理 \r\n\r\n 14. 5 直接处理 \r\n\r\n 14. 6 顺序主文件更新示例 \r\n\r\n 14. 7 关键术语 \r\n\r\n 14. 8 练习题 \r\n\r\n 第15章 中断控制处理 \r\n\r\n 15. 1 学习目标 \r\n\r\n 15. 2 学习指导 \r\n\r\n 15. 3 示例问题15. 1:单层中断控制 \r\n\r\n 15. 4 示例问题15. 2:多层中断控制 \r\n\r\n 15. 5 关键术语 \r\n\r\n 15. 6 练习题 \r\n\r\n 附录A 程序流程图符号 \r\n\r\n 附录B 结构化程序设计控制结构 \r\n\r\n 附录C 部分习题答案 \r\n
\r\n
程序设计是一种既抽象又具体的工作. 说它"抽象"是因为要操纵那些看不见摸不着的位. 字节和其他数据结构, 说它"具体"是因为一切细节都要符合严格的规则. 软件设计人员必须像数学家那样具备高度的抽象思维能力. 然而, 单有思维能力仍是不够的. 一个好的软件设计人员还要像音乐家那样有熟练的技巧和丰富的经验.
本书面对的是那些对计算机编程还一无所知的初学者. 从刚人编程领域就开始培养一种思想和理念, 理解结构化程序设计和面向对象程序设计的基本思想和方法, 是现代计算机教育的重大改进. 这样才能让编程人员将眼光不仅仅局限于某几行代码的简洁度. 某个算法的巧妙性或者某个界面的亲和力(当然这些也都是应该注意的), 而是可以站在更高的角度上, 看得更远--些.
在翻译过程中, 我们也经历了一次再学习的过程. 本书译稿经过多人试读, 我们发现任何编程人员在阅读此书后都会有所收获, 不但可以从中学习到-'些结构化和面向对象设训的方法, 同时对于培养编程的基本技能也大有稗益. 现在我们将本书推荐给广大读者, 希望您能从中受益.
由于我们的水平有限, 译文不确切与理解谬误之处在所难免, 谨请读者批评指正.
邓劲生
2003年4月
《编程逻辑基础教程》(第6版)一书的宗旨在于培养读者按照有计划的. 周密的方式进行程序设计, 这种程序设计方式是独立用于各种语言的. 这本教材假定读者没有任何编程经验. 该教材可作为程序设计课程的教材, 也可做初等程序设计课程的补充读物.
良好的开端是成功的一半. 为让读者打好基础, 我们从最基本的概念人手, 新内容均在此基础上引入. 我们以一种有序的. 循序渐进的. 密切结合实例的方式学习, 每次只引入一个新概念. 另外, "示例问题"贯穿各章, 用以演示实际工作中程序设计工具的使用方法. 不少章节中的"内容扩充"部分讲解了程序设计的概念, 这些概念均用Basic和Visual Basic描述. 章后练习帮助你学以致用.
我们的方法是遵循计算机解决问题的步骤来分析问题并寻找答案的. 用简单易懂的语言和大量的例子, 告诉读者怎样理解以及如何运用这些重要的程序设计工具. 我们从系统流程图和程序流程图开始学习, 绘制流程图的目的是阐述问题. 指出解决问题的策略. 我们使用的流程图, 符合经ANSI(美国国家标准协会)及ISO(国际标准化组织)认证的规范. 我们的重点是确保读者对程序设计有一个整体的把握. 为了设计一个结构良好的程序, 我们使用伪代码作为流程图的替代或有益补充. 我们运用自顶向下. 模块化技术绘制和阅读结构化图表, 显示程序模块间的层次关系
很多章节包括了"内容扩充"部分, 描述使用Basic和Visual Basic语言表达的典型问题. 用Basic书写的内容可作为用过程方法进行设计的参考, 而Visual Basic书写的内容可作为用事件驱动方法进行设计的参考. 有一点必须说明, 我们所讲的程序设计方法是和具体语言无关的. 所有程序设计的概念都在"内容扩充"的前边讲解, 该部分是选学的, 是作为一些概念的补充材料而存在的.
本书第6版与第5版同样适用于教学, 每章都包含了学习目标和关键术语的清单.
本书由3部分组成:
第1部分:结构化程序设计(第1章到第9章). 介绍了结构化程序设计理论. 一章介绍一个控制结构, 还有一章介绍数组的基础知识. 这些章节必须按顺序学习.
第Ⅱ部分:面向对象程序设计(第10章到第12章). 介绍了许多面向对象程序设计和编程的基本概念. 这些章节必须在完成第一部分后依次学习.
第Ⅲ部分:程序设计应用(第13章到第15章). 在以前内容的基础上, 介绍了更加复杂的应用, 这些章节也是在第一部分学完后才能学习的.
每章和附录的详细内容为:
第1章介绍了系统开发生命周期, 讨论了程序设计如何适应系统开发生命周期. 计算机辅助软件工程(CASE)工具也在这一章介绍, 并适当地在全书各章节涉及, 以期望增强读者对当前工具和当代工业发展趋势的理解. 结构化程序设计的历史也成为本章的内容. 通过几个非技术性的例子解释了基本的控制结构, 这有助于理解结构化程序设计的需要. 面向对象程序设计. 事件驱动程序设计和图形用户界面的概念也会在本章介绍.
第2章介绍了SIMPLE SEQUENCE控制结构.
第3章介绍了IFYHENELSE控制结构和简单的. 顺序的及嵌套的IP结构.
第4章介绍了DOWHILE控制结构, 重点放在简单计数器循环和首记录逻辑.
第5章重点在尾记录逻辑, 并包括了对自动化文件尾处理和多标题逻辑的介绍.
第6章介绍了模块化. 此版本中, 模块化的内容是在首记录逻辑和尾记录逻辑后才介绍的.
第7章介绍CASE控制结构.
第8章介绍DOUNTIL控制结构.
第9章用许多短小精悍的例子学习一维与二维数组.
第10章介绍面向对象程序设计的基本概念. 用统一建模语言(UML)类图和伪代码的例子介绍对象设计的概念, 诸如类. 对象. 数据成员. 方法. 封装. 驱动程序和重载.
第11章介绍泛化/特化关系. 继承. 覆盖. 多态和抽象类.
第12章介绍其他类型的关系:关联. 聚合和合成. 内部类也将介绍, 面向对象程序设计和编程的优势也会简要说明.
第13章着眼于数组的更多的高级应用, 如搜索(顺序查找和折半查找)和排序.
第14章描述顺序主文档的更新程序的设计.
第15章中断控制处理.
附录AANSI认可的程序流程图的符号.
附录B简要说明结构化程序设计基本控制模式. 当流程图中不知道选择哪个符号时, 可以查阅附录A和附录B.
附录C提供每章习题的部分解答, 可以评估读者对学习内容的理解程度.
鸣谢
如果不是许多人的努力工作, 这本书恐怕不能在今天与您见面. 首先, 我要感谢发行人CharlesK. Stewart先生和助理编辑MaydaBosco先生, 他们为此书的结集出版提供了很大的帮助. 我们也要感谢MeganSmith-Creed女士, 因为她的支持和帮助, 本书原稿才得以完成. 另外, 非常感谢以下审评人士提供的宝贵反馈:Del Mar学院的Phillip Davis. Fairleigh Dickinson大学的LeeRosenthal和Ohio大学的Costas Vassiliaddis.
Maria Rynn在此感谢Northern Virginia Community学院的所有同事们, 感谢他们在本次修订中的支持和建议. 最后, 她希望感谢她的丈夫Tedd, 因为他始终的鼓励, 他饱含爱的耐心和支持.
Marilyn Bohl希望感谢Vinh Nguyen和JeffTassin, 在本书第二部分的准备过程中, 正是他们通过Internet对许多专业问题提供了及时的. 宝贵的解答.
我们希望通过本书, 提供一个清晰. 系统而直接的解决问题的方法. 欢迎提出意见和建议.
Marilyn Bohl
Maria Rynn
感谢我的家人--
Tedd. Vanessa. Teddy. Donna和Michael
Maria Rynn