现在人类社会已进入到运行在软件上的信息化时代,这个时代背景下的软件开发涉及PC应用程序、工程计算和嵌入式系统、信息管理和移动互联网等众多领域。程序设计是从事软件开发工作的必备技能,程序设计的大部分工作是在寻找和优化问题的解决方案,它是一种创造性与高智力劳动。学习程序设计本身是一项具有挑战性的工作。“高级语言程序设计”(“程序设计基础”、“C语言程序设计”)作为大学计算机相关专业的第一门程序设计课程,承担了培养学生解决问题与程序设计的基本能力的任务。然而,一些学生在学习这门课程的过程中,过度纠结于程序设计语言的语法细节,忽略了程序设计方法的学习,完全没有体会到程序设计的乐趣;还有些同学甚至对学习程序设计产生恐惧心理,从而导致专业兴趣全无。因此,作为第一门程序设计课程,如何培养学生的程序设计学习兴趣至关重要。
早在2006年,美国Carnegie Mellon大学的Jeannette M. Wing教授就提出了Computational Thinking(计算思维)的概念,她认为计算思维就是运用计算机科学的知识分析问题、设计方案、解决实际问题的思维活动。近年来,计算思维引起了国内外计算机教育界的广泛关注,将计算思维贯穿于理论教学和实践应用,将有助于促进知识向能力的转化。计算思维的提出,对程序设计教学提出了更高的要求。因此,“高级语言程序设计”作为计算机相关专业的核心课程,同时还承担着培养学生计算思维能力的重任。
岁月如梭,今年正好是作者从事高等学校计算机教育的第十八年。十八年来的学习和教学经历让我体会到,一本“好”的程序设计书对学习者的重要程度。“若能回到二十多年前,我需要一本什么样的程序设计书来开启我学习程序设计的大门呢?这本书不应只是一本程序设计语言的语法手册,也不应只是包含大量编程技巧而难以理解的程序代码的堆积,它应该是真正教授程序设计方法和思维的,应该通俗易懂,而又不乏兴趣的……”带着这些思考,写一本程序设计书的想法在脑海里渐渐呈现。参加工作以来,我曾担任了八年的全国计算机等级考试(NCRE)考务工作,目睹过很多不得要领而无法通过全国计算机等级考试的学生。那时真想将自己积累的一点程序设计与教学经验融入一本教材,来帮助他们轻松学习程序设计,但终因时间问题,最终没有成文。近几年,在承担教学研究课题的过程中,我也在反思如何通过程序设计课程来培养学生的计算思维能力,如何帮助新步入教坛的年轻教师快速提升教学设计能力。这些思考让我决定着手写这本书的想法更加清晰。2014年我有机会到美国California State University Fullerton进行访学,近距离接触了美国高校计算机教育,并有时间将自己多年来的想法整理成文,于是一年后有了大家手中的这本书。
任何程序设计都是基于一种程序设计语言的,在程序设计语言百花齐放的今天,已没有哪一种语言能够包打开下。众所周知,目前许多主流的程序设计语言都是在C语言基础上发展起来的。本书以C语言作为描述语言,以应用为导向,以
程序设计方法教学为主线,力图通过课程学习,使读者能将普适的程序设计方法应用于实际的问题求解。这也正是本书取名《高级语言程序设计(C语言版)—基于计算思维能力培养》而非《C程序设计语言》的原因了。
本书共10章,内容包括:程序设计引论,C数据类型、运算符与表达式,算法与简单C语言程序设计,程序基本控制结构,函数及其应用,数组及其应用,指针及其应用,结构体及其应用,文件与数据存储,C综合性程序设计案例分析。
概括起来,全书有以下特点。
(1)理论联系实际,强化计算思维能力的培养。
本书语言语法介绍以够用、实用和应用为原则,将C语言的语法融入问题求解中;从实际应用案例中抽取教学要素,重点强化模块化程序设计方法与基本算法的学习。全书从数据组织的维度介绍了基本数据类型以及数组、指针和结构体等构造数据类型在数据处理中的应用;从算法维度将“迭代”“穷举”“递归”“分治”“检索”与“排序”等算法融入实际应用问题的求解过程。让读者在学习的过程中潜移默化地提高计算思维能力。
(2)案例选取贴近生活,有助于提高学习兴趣。
全书通过贴近生活的案例来分析问题的本质,如程序设计语言为何要区分不同的数据类型,如何在程序设计中选择正确的数据类型,如何存储大规模数据等,书中用了通俗易懂的例子来进行说明。同时,从读者熟悉的应用软件中抽取教学案例,如网银认证的验证码,信息加密,计算器的进位制转换,手机通信录查询等案例都贴近生活,突出了应用导向,有助于提高学生学习兴趣。
(3)内容呈现直观、形象,知识点讲解深入浅出,通俗易懂。
全书以图文并茂的方式深入剖析相关知识的底层原理,使读者对课程难点做到不但知其然,而且知其所以然。例如,通过递归调用图来说明递归程序的执行原理;通过详细的图示来说明指针、参数传递、链表等难点,并拓展了指针在生成动态不规则二维数组等方面的高级应用,这可为学生今后深入理解Java等新型程序设计语言的引用数据类型奠定基础。
(4)内容编排体现“以学为中心”的教学思想。
随着大规模在线教育课程(MOOC)和微课等新型教学媒体的出现,学生的学习呈现碎片化学习特点。本书在内容组织上进行了全新设计,将精选的相关练习与实验穿插到章节中间,题型涵盖全国计算机等级考试二级C语言程序设计全部题型,使读者在学习完相关内容后能够及时巩固并拓展所学知识,做到举一反三,满足“翻转课堂”等新型教学范式的教学需求。全书还以小贴士的形式提供了大量的相关拓展知识,以开阔读者的视野。
(5)C标准与时俱进,程序代码规范统一。
教材内容一方面符合当前全国计算机等级考试二级C语言程序设计考试大纲的要求,同时还拓展了部分C99与C11标准,以提升编写C语言程序的灵活性。例如,通过引入bool类型,使逻辑表达更加简洁,符合现代程序设计的规范。从第5章开始,大部分问题求解都以模块化的方式进行设计,有助于引导学生掌握模块化程序设计的思想。书中所有程序源代码均通过了调试。
(6)注重实践环节,设计了三层次实验体系。
正如我们不可能只通过书本知识来获得驾驶和游泳技能一样,程序设计实践是学习程序设计的最佳途径。为此,本书设计了验证型、设计型和综合设计型三层次实验体系,从多维度强化实践环节。建议读者在学习完每章节知识点后,完成相应的练习和实验题,在实践中达到提高程序设计能力的目的。作为本书的重要特色,在第5章和第10章分别提供了两个阶段性的综合设计案例。其中第10章详细分析了一个“基于用户角色的图书管理系统”的设计与实现方法,详细说明了需求方案、设计目标、设计任务、模块划分、功能实现等环节的设计方法,将程序编写和软件工程原理的阐述有机地贯穿在一起,起到事半功倍的效果,可为学校开展课程设计提供良好的借鉴。
(7)提供了丰富的辅助教学资源。
面向教师提供了精心设计的教学课件、程序源代码、实验案例、实验指导、习题解答、实验参考答案、测试样卷、重点难点解决办法及教学设计模板等资料。其中教学课件应用了动画、仿真等形式突破教学难点,可有效提升课堂教学效果,实验案例可直接应用于与课程同步的实验教学。
面向学生提供了Visual C++6.0、Code::Blocks集成开发工具的使用详解、程序源代码、实验案例、教学课件、全国计算机等级考试二级C语言程序设计模拟题、实验报告模板、课程设计报告模板等资料,可为学习者提供学习指导。第10章的综合课程设计案例源代码提供了分阶段的项目源代码(共10个阶段),可使读者理解在软件工程思想指导下的渐进式项目开发过程。上述资料都可以从出版社网站下载(www.ptpress.com.cn)或向编者发送邮件索取。
全书由揭安全著,王明文教授在百忙之中仔细审阅了全部初稿,并提出了许多宝贵的意见和建议,在此表示衷心的感谢!
本书可作为大学计算机科学与技术、软件工程、网络工程、信息管理、电子商务、物联网工程等专业“高级语言程序设计”“程序设计基础”课程的教材,也可作为大学公共计算机基础——“C语言程序设计”课程的教材,内容符合全国计算机等级考试二级C语言程序设计大纲要求,还可供参加全国计算机等级考试(NCRE)的同学或从事C语言程序开发的工程技术人员参考。
2004年本人参编的《数据结构》(C语言版)(第1版)在人民邮电出版社出版,2012年该书第2版被评为普通高等学校“十二五”国家级本科规划教材,现已出版第3版。在本书撰写、校审及出版过程中,人民邮电出版社给予了大力的支持,在此一并表示衷心的感谢!
因作者水平有限,书难免存在不妥之处,欢迎读者给我发送邮件,对本书和教学辅助资源提出意见和建议。编者E-mail:jieanquan@163.com、jaq@jxnu.edu.cn。
看不懂,还不够深奥!!!!!