从问题到程序

裘宗燕

出版时间

2005-09-01

ISBN

9787111167563

评分

★★★★★
书籍介绍
本书以C作为讨论程序设计的语言,讨论了基本程序设计的各方面问题。书中给出程序实例时没有采用常见的提出问题,给出解答,再加些解释的简单三步形式,而是增加了许多问题的分析和讨论,以帮助读者认识程序设计过程的实质,理解从问题到程序的思考过程。书中还尽可能详尽地解释了许多与C语言和程序设计有关的问题。 本书适合作为高等院校计算机及相关专业的教材,也可供其他学习C程序设计语言的读者阅读。
AI导读
核心看点
  • 超越语法,深入剖析从问题到程序的思考过程
  • 强调函数抽象与模块化设计,降低程序复杂性
  • 详解前条件、后条件及循环不变式等核心概念
适合谁读
  • 计算机专业本科生及需要系统学习C语言的读者
  • 希望摆脱碎片化学习,建立严谨编程思维的初学者
  • 对程序设计原理有追求,不满足于简单代码实现的读者
读前提醒
  • 需克服初期阅读难度,重点理解作者的分析逻辑
  • 避免过度依赖调试器,培养用头脑分析程序的习惯
  • 结合经典教材对照阅读,以弥补部分章节的跳跃感
读者共识
  • 被广泛誉为国内最优秀的C语言入门与进阶教材之一
  • 相比传统教材,更注重培养解决实际问题的编程能力
  • 部分读者认为其风格独特,需一定基础才能完全读懂

本导读基于书籍简介、目录、原文摘录、短评和书评生成,不等同于全文精读。

精彩摘录
  • "许多程序开发环境里带有功能强大的动态调试和查错系统,利用它们可以方便地跟踪程序执行过程。但是我们发现,在初学程序设计时就养成依靠查错系统的习惯,往往会阻碍人对程序的良好感觉 ... 按照这种方式学习程序设计的人,以后编出的程序质量也比较差。 最后还应指出,测试程序、排除程序错误的最重要工具就是我们的眼睛和头脑,这是任何其他东西都不能代替的,也是别人不能代替的。"
  • "在函数之外不应该关心函数功能的实现问题。这种超脱很重要,不掌握这种思想方法,就无法摆脱琐碎细节的干扰,不能学会处理复杂问题。初学者常犯的一个毛病是事事都想弄清,这种考虑不但非常不必要,有时甚至不可能。例如,对于标准库函数,我们不知道它们是用什么语言采用什么算法写的,但这并不妨碍在程序中正确使用它们。"
  • "白箱测试的基础是考察程序的内部结构和由此产生的执行流程,设法选择一些数据,使程序在试验性运行中能通过“所有”可能出现的执行流程。这一做法的基本想法是:如果通过每种执行流程的计算都能给出正确结果,那么这个程序的正确性就比较有保证了。 在做黑箱测试时,我们考虑的不是程序的内部结构,在这里只是考虑程序所解决问题的各种情况。"
  • "什么样的程序片段应该定义为函数呢?这方面并没有万能的准则,写程序的人需要自己去分析问题,总结经验。... 1) 程序中可能有重复出现的相同或相似的计算片段。可以考虑从中抽取出共同的东西,定义为函数。 2) 程序中具有逻辑独立性的片段。... 这种做法的主要作用是分解程序的复杂性,使之更容易理解和把握。 ... 熟悉程序设计的人提出的一条经验准则是:如果一段计算可以定义为函数,那么就应该把它定义为函数。"
  • "getnum 是一个底层函数,为程序上层功能的实现提供某种服务。这种底层函数在工作有可能检查到某种错误状态。但是从原则上说,由于这种函数并不掌握全局情况,没有关于被调用处的上下文信息,这时,它们的实现就绝不能包含任何可能危害全局的行为。"
  • "1) 通过函数返回值报告工作情况,出现错误时返回特殊值,要求调用这个函数的位置去处理错误。必要时可以通过几个不同的值报告不用错误。这种方式的缺点是在设计函数时需要选择合适的“错误返回值”,有时会遇到困难。此外,在每个函数调用处都检查错误,也会使程序中的正常控制流变得不清晰,干扰人的阅读和理解。 2) 在发现错误时,把专门的错误变量设置为某个特定的值,供程序的其他部分检查。显然这种错误变量只能是全局变量。这种方式的缺点是使用者可能忘记检查,因而没有察觉计算中已经出错了。"
  • "人们把一段程序执行前对数据的要求称为它的前条件 (precondition),把一段程序执行结束后能够保证的性质称为它的后条件 (postcondition)。假设程序段 S 的前条件是 P,后条件是 Q,那么,如果 S 在条件 P 为真的情况下开始执行,S 结束后就可以保证 Q 为真。这里的 P 和 Q 都应该是对一些变量取值等情况的两个描述。"
  • "... 这个文件里定义: * 类型 size_t * 类型 ptrdiff_t * 类型 wchar_t * 符号常量 NULL * 宏 offsetor"
作者简介
裘宗燕,北京大学数学学院信息科学系教授。长期从事计算机软件与理论、程序设计语言和符号计算方面的研究和教学工作。已出版多部著作和译著,包括《程序设计语言基础》(译著,北京大学出版社,1990),《Mathematica数学软件系统的应用与程序设计》(编著,北京大学出版社,1994),《计算概论(上)》(合著,高等教育出版社,1997),《从问题到程序―程序设计与C语言引论》(编著,北京大学出版社,1999)等;自2000年以来,他先后为机械工业出版社华章分社翻译了《程序设计实践》(2000),《C++程序设计语言(特别版)》(2001),《C++语言的设计和演化》(2002),《程序设计语言――概念和结构》(2002),《从规范出发的程序设计》(2003),《计算机程序的构造和解释》(2004)等一系列经典著作,他认真的工作作风、严谨的治学态度,以及所做出的巨大贡献,赢得广大读者的好评。 在北京大学教授的主要课程:计算概论(一年级本科生,主要内容为C语言程序设计),程序设计技术与方法(本科生),程序设计语言原理(研究生),算法和数据结构(本科生),算法设计与分析(本科生和研究生),数理逻辑(本科生)等。
用户评论
最开始不知道看什么C语言书的时候,看过这本书的开头,发现还是看不懂,后来看懂了the c programming language,当然也就不用看这本了
语言平实谨慎,C语言入门的经典。
我的编程入门书
还可以
这本书比谭浩强的要深入,主要侧重的是实际的编程问题,还有很多编程的模式都很有用。最后比较系统地介绍了C标准库函数,期中与很多都是我之前不知道的所以收获很大。 整体评价是,作为中级的C教材,真的不错。
大二的c++课本,对我有很大正面影响~
可能是国内最优秀的入门书
当初看C语言书挺多的,毕业这么多年后简单扫了遍这本书,主要看了下1,4,10章,感觉和现在写代码的感觉还是很相似的,感觉是本入门好书,思想很受用。
不如把时间用来看看其他经典的C语言书
下载
收藏