基本信息

【插图】

编辑推荐
裘宗燕编*的《从问题到程序 程序设计与C语言引论(第2版)》通过大量符合C99标准的实例,详细介绍了C程序设计的思想和技术。书中没有采用常见的“提出问题,给出程序,加些解释”的简单三步形式,而是强调问题的分析和讨论,意在帮助读者认识程序设计的实质,理解从问题到程序的思考过程。很多实例包含详细的分析和讨论,不少实例给出了基于不同考虑形成的多种解法和性质比较,指出了看问题、分析问题和解决问题的方式方法,以帮助读者理解程序设计的真谛。
内容简介
目录
前言
本书中的编程实例和模式
第1章 程序设计和C语言 1
1.1 程序和程序语言 1
1.2 C语言简介 6
1.3 一个简单的C程序 8
1.4 程序开发过程 10
1.5 问题与程序设计 14
本章讨论的重要概念 15
练习 15
第2章 数据与简单计算程序 16
2.1 基本字符、标识符和关键字 16
2.2 数据、类型和简单程序 17
2.2.1 几个常用类型 18
2.2.2 函数printf和简单
文本输出程序 19
2.3 运算符、表达式和计算 22
2.3.1 算术运算符和算术表达式 22
2.3.2 表达式的求值 23
前言
本书以C作为工具语言,讨论了基本程序设计的各方面问题。书中实例没采用常见的“提出问题,给出程序,加些解释”的简单三步形式,而是强调问题的分析和讨论,意在帮助读者认识程序设计的实质,理解从问题到程序的思考过程。书中尽可能详细地解释了与C语言和程序设计有关的各种问题,通过大量实例讨论了分析和分解问题,找出主要步骤,确定函数抽象,找出循环,选择语言结构,最后做出所需程序的过程。
程序设计应该注重系统性和科学性,有关研究的发展形成了程序的理论。入门书不可能深入介绍理论成果,但也要反映其精神,使初学者从开始就接触到程序的一些本质问题。本书特别强调问题的分析,将函数的概念尽可能前移,而后反复讨论,实例中也特别注重程序的功能分解。书中还介绍了一些深入的理论问题,如通过统计程序运行时间介绍计算的基本性质(复杂性),通过分析循环过程是否完成所需工作介绍“循环不变关系”的概念等,这是希望帮助读者了解更多情况,也作为思考程序的线索。
程序设计也是一种工程性工作,需要寻找可能的解决方案,评价不同方案并做出选择,还要对所做选择有清醒的认识(优点、缺点、倾向性或不足)。工程中通常没有完美的结果,更多是权衡和折中。程序设计也是如此。本书的许多实例包含较详细的分析讨论,不少实例给出了基于不同考虑形成的多种解法和性质比较,有时还指出其他可能性,提出了还可能如何看问题、如何做等,以帮助读者理解程序设计的真谛。书中还常给读者提出一些问题,希望读者发挥思维能力和主观能动性。书中练习也力图反映这些想法。
本书强调:编程问题没有需要记住的标准答案。由于对问题的不同考虑,设计中的不同选择,对同一问题可以得到许多合理而正确的不同程序。它们常常各有长短或各有侧重,或反映了对问题的不同认识。在这里应特别学习如何分析问题,如何把复杂问题分解为相对简单的部分,如何在可用功能中选择等。进而,还应该认清各种选择的后果,包括收获和损失。各种书籍(包括本书)里的程序不是“金科玉律”,只是作者对问题的一种理解,必然存在很多其他可能性。要学好程序设计,应该养成一种习惯:读程序时要特别注意思考作者的考虑和选择,分析其中哪些是合理而有价值的(或不合理无价值的),还可能有哪种选择,采纳其他选择可能得到什么(或失去什么)等。这样思考将使人受益无穷。当然,这并不是说书中示例不重要。恰恰相反,因为程序设计中有许多可能选择,好的教科书应当给出好的分析和选择,供读者参考。入门书还应解释所做选择的理由,指出带来的问题(缺点和限制等)。正如本书书名所示,程序设计是“从问题到程序”的思考和工作过程。学好程序设计,既要发挥聪明才智,也需要细致认真、一丝不苟的工作态度。
考虑入门课程的需要,并没有一种语言具有无可比拟的优势,无论用什么语言教基本程序设计,都需要考虑其有利方面,处理其不利因素。本书选择C语言的主要理由是:C是使用最广的语言之一,包含了基本程序设计需要的主要机制,能满足课程的需要。学生可以用它完成练习,得到相关的知识积累和能力锻炼,还能掌握一种实用工具,作为后续课程学习的基础。C语言适合(也正在被)作为许多计算机专业课程的教学语言。
C是很灵活的语言,用它写程序常需要了解一些细节,这是人们对用C作为基础课语言的主要疑虑。但另一方面,用C写程序可能得到对程序设计的更多认识。C程序可以在较低层次上做,也可以在较高层次上做,学生需要理解程序设计中各种层次的问题。此外,许多语言从C借鉴了想法和表达形式,有些就是C的扩充和发展,C语言知识对于进一步学习其他语言,包括未来的新语言都很有价值。
本书以程序设计为基本线索,也详细介绍C语言的各方面情况。这里强调的是如何认识程序、写程序、用C语言写程序,特别强调好的程序设计风格,强调“好的”C程序设计,强调通过函数抽象建立清晰结构的重要性,强调程序的良好结构、可读、易修改,也指出了多种不良编程习惯及其危害。历史原因使C成为一个不太严格的语言,如不注意,用C写的程序有可能隐藏一些不易发现的错误*。ANSI C和C99倡导“好的”C程序。本书坚持这一正确方向,讨论如何写出更可靠且不易包藏隐含错误的清晰、简洁、高效的C程序,通过实例说明应该如何写和不应该如何写。书中介绍了许多实用的C程序设计技术,详细解释了C语言的结构和机制,也尽量提供了一些背景说明。
本书包括如下各章和若干附录:
第1章,程序设计和C语言。介绍程序与程序语言的概念,C语言的发展及其特点。用一个小例子介绍C程序形式,其加工和执行。最后介绍程序设计与开发过程。
第2章,数据与简单计算程序。讨论程序语言的许多最基本概念,包括:字符集、标识符和关键字,数据与类型,数据表示,运算符、表达式与计算过程,数学函数库的使用等。
第3章,变量、函数和流程控制。讨论程序设计的一些基本问题,包括语句与复合结构,变量及其使用,简单函数定义,逻辑条件的描述与使用等。最后介绍了几种基本控制结构。
第4章,基本编程技术。首先讨论循环程序设计的基本问题,通过一系列程序实例分析了循环的构造过程。此后介绍了C语言其他控制结构及其使用。
第5章,C程序结构。讨论C语言的许多具有一般性的重要问题,主要是C程序结构,函数概念及有关的问题,预处理命令和预处理过程,递归的概念等。
第6章,顺序数据组织:数组。介绍数组概念、定义和相关程序设计技术。
第7章,指针的应用。介绍指针概念和指针变量的使用,指针与数组的关系,多维数组作为参数的通用函数,以及动态存储管理,类型定义,指向函数的指针等。
第8章,文件和输入输出程序设计。讨论了文件概念,与输入输出有关的各种问题,标准库的输入输出功能,以及输入输出的程序设计问题。
第9章,结构和复杂数据组织。介绍结构(struct)、联合(union)、枚举(enum)等数据定义机制的意义及在程序中的使用。随后简单介绍了链接结构的概念。
第10章,程序开发技术。介绍程序设计和开发的一般性问题和技术,分块开发等。
第11章,标准库。介绍标准库提供的各方面功能及其相关知识。