(一)
在信息时代,程序设计会被人称为计算机以及相关专业的看家本领,然而不仅如此,在程序设计中所蕴涵的逻辑,是解决所有领域复杂问题的根基,同时在程序设计课程中所进行的逻辑思维训练,所有人都可从中获益。但是,尽管程序设计课程已经开设几十年了,教学效果却很不尽如人意。
程序设计涉及逻辑思维、语言和方法3方面内容。然而,早期的程序设计课程仅仅是语言手册的改编。因此,从20世纪80年代,就开始着手改变这种状况,于1985年出版的我的第一本著作--《BASIC程序设计》中就在原来的语法体系中引入典型算法和软件工程思想。以后受CIT考试的启发,在为NIT(国家信息技术考试)编写的《程序设计(C语言)》(清华大学出版社,1999)一书中,把程序测试引入到程序设计教材中。
之后,几家出版社先后约稿,出版了《新概念C语言程序设计》(中国铁道出版社,2003) 、《C语言程序设计案例教程》(清华大学出版社,2004) 、《新概念C程序设计教程》(南京大学出版社,2007) 、《新概念C语言教程》(中国电力出版社,2011) 。在这些教材中,逐步形成并完善了按照内容体系的程序设计教材。所以将它们以“新概念”命名,是想表明这种全新理念的程序设计体系。让我欣慰的是,随着这几本书的不断改进,类似的书也陆续问世,品种不断增加,说明面向问题,按照“问题分析-设计代码-语法说明”线索组织程序设计教学的理念日益被广泛接受。
(二)
本书应清华大学出版社之邀而撰写,它是对前几本教材的进一步完善与改进。全书分为3篇。第1篇由5个单元组成,在这5个单元中,以几个经典问题为载体,以穷举、迭代、递归、随机模拟、时间步长、事件步长等基本算法为主线,将设计思路、程序测试方法和C语言基本语法知识融于其中。第2篇由4个单元组成。第6~8单元分别介绍数组、结构体和指针这3种支持程序数据结构的重要类型,使读者可以初步领略数据结构对于程序设计的重要性,第9单元介绍几种常用的算法设计策略。通过这4个单元,使“数据结构 算法 = 程序”的思想在读者心中扎根。前面两篇,按照“训练解题思路为主,语法够用就行”的原则编写。第3篇用6个单元补充了一些重要的语法细节,使读者能在前两篇初步掌握了程序设计的基本方法的基础上,将C语言程序设计的学习引向深入。这样不仅建立了一种全新的内容体系,将应试教育向能力培养方面做了较大幅度的转变,同时也与教育部计算机科学与技术教学指导委员会推荐的《高等学校计算机科学与技术专业:公共核心知识体系与课程》中关于程序设计课程的要求一致,读者可以按照自己的专业定位选择其中的有关内容。
(三)
为了能有的放矢地进行训练,本书以二级节为单位给出习题。习题分为4个栏目:概念辨析、代码解析、探索验证和开发练习。
“概念辨析”主要提供了一些选择题和判断题,旨在提高读者对基础语法知识的认知。
“代码解析”包括指出程序(或代码段)执行结果、改错和填空,旨在提高读者的代码阅读能力。因为读程序也是程序设计的一种基本训练。
“探索验证”主要是用于提示或者指导学习者如何通过自己上机验证来提高掌握语法细节的能力。除了这个栏目中的习题外,学习者最好也能通过设计程序验证自己对于概念辨析栏目中的习题的判断是否正确。
“开发练习”是一种综合练习,应当要求学习者写出开发文档。内容主要包括问题(算法)分析、代码设计、测试用例设计、测试及调试结果分析等几个部分,重点应当放在问题分析、代码设计和测试用例的设计上。要把这些工作都做好,再上机调试、测试,不要什么还没有设计出来就上机。
(四)
在本书即将出版之际,由衷地感谢在本书写作过程中参与收集资料、程序调试以及校阅工作的姚威、张秋菊、文明瑶、杜勇、丁群、朱莎、史林娟、张展为、张有明。同时,也殷切地期待着广大读者和同仁的批评和建议。让我们共同把程序设计课程的改革做得更有实效。
张基温2012年2月