随着大数据、智能化应用不断深入人们的工作和生活,软件变得无处不在。为满足国家一流专业建设和应用型本科人才培养需要,以从计算到编程为主线编写了《C/C 程序设计导论从计算到编程(微课视频版)》(ISBN: 9787302592020),以从抽象到编程为主线编写了本书。本书按照面向对象思想组织程序设计的内容,内容的组织思路和主要范围如图0.1所示。
图0.1本书内容的组织思路和主要范围
编程具有较强的科学性和系统性。本书针对我国学生基础知识好但应用知识训练不足的特点,以概念抽象和数学抽象为基础,融入计算理论、程序理论和计算机系统等基本原理,强调抽象思维的培养,旨在塑造能够理解软件模型和数学模型的优秀编程人才。
编程具有很强的工程性,涉及分析、设计、编码、测试等各个阶段的工作。本书按照模型及模型转换的思想将各个阶段内容整合在一起,先介绍面向对象分析设计的思想和方法,然后讨论编程知识、编程技术和编程方法,使用图形语言和计算机语言进行描述,突出编程的思路和方法,避免读者迷失在编程的细节中。
编程是一种能力,需要通过大量训练来获得。本书从实际应用和基础计算两个层次选择经典案例,针对目前的主流应用场景由浅入深地设计了大量的示例代码,难易区分度明显。本书的示例代码全部选择C 语言编写,大部分示例可改写为Java等其他语言,可供不同层次读者学习。
本书主要内容
本书共有8章,每章先介绍面向对象分析设计的基本知识和基本原理,再讨论相应的编程方法和实现技术。各章之间的关系如图0.2所示。
图0.2各章之间的关系
第1章类与对象。以认识和理解客观事物中形成的概念为基础,主要从抽象视角介绍抽象类及对象的基本原理,声明类和定义对象的编程方法,从计算视角介绍成员函数调用的实现原理,创建和删除对象的实现过程,最后讨论程序设计思想和描述工具。
第2章封装与职责。从客观事物的边界和作用引入封装和职责两个概念,主要介绍根据职责封装类的基本原理和编程方法,最后介绍自定义日期数据类型和管理员工信息两个应用案例。
第3章关联与连接。从客观事物之间的关系引入关联及连接的概念,主要介绍使用关联及连接描述客观事物之间关系的基本原理,介绍一般关联、组合关联和聚合关联的编程实现技术和方法,重点介绍使用组合关联描述客观事物的内部结构,最后介绍字符串和链表两个应用案例。
第4章继承与多态。从客观事物的分类和抽象引入继承及其相关概念,主要介绍使用继承描述事物之间层次关系的基本原理,以及继承、多态、多重继承的实现技术和编程方法,最后介绍银行账户案例。
第5章设计与实现。主要介绍综合运用编程知识和技术解决实际问题的步骤和方法。以Josephus游戏为例介绍分析设计、编码实现和程序维护阶段的主要工作及其基本方法,以矩阵乘法为例介绍根据数学模型编程的技术和方法,最后介绍异常处理技术及其编程方法。
第6章运算与重载。以自然数的基数理论为基础,主要介绍使用自然数进行计数和度量的基本原理,以及抽象和定义运算的方法,重点介绍定义运算的基本思路和重载运算的编程技术,最后介绍货币和R进制计算机两个应用案例。
第7章模板与模板库。主要介绍类模板和模板类的概念,以及使用类模板编程的主要技术和基本方法。介绍标准模板库,重点介绍容器类和流类的使用方法,最后介绍持久化对象应用案例。
第8章课程成绩管理应用案例。以课程成绩管理为例,主要介绍综合运用面向对象的知识、原理和技术开发实际应用程序的主要步骤和基本方法。本案例可作为编程训练的项目,也可作为后续学习的案例。
本书特色
(1) 抽象思维与计算思维有机融合。将语文、数学课程中培养抽象思维、计算思维及其表达方式有机融合起来,用于解决软件开发过程中有关抽象和计算的问题,从而降低学习编程的门槛和难度。
(2) 分析设计与编程实现有机融合。按照模型转换思想,以分析设计中建立的模型作为编程实现的背景和前提,将编程实现的代码作为模型转换的结果,有机融合了分析设计与编程实现两个阶段的内容,更加明确编程的学习重点和方向。
(3) 图形语言与计算机语言有机融合。本书按照元模型表示模型的思想,把UML图形语言作为描述语义的通用工具,便于读者能够直观地理解代码和将C 代码修改为Java、C#等其他计算机语言的代码,从而适应混合式语言编程的要求。
配套资源
为便于教与学,本书配有微课视频、源代码、数据集、教学课件、教学大纲、教学日历、习题答案、期末试卷及参考答案。
(1) 获取微课视频方式: 先刮开并用手机版微信App扫描本书封底的文泉云盘防盗码,授权后再扫描书中相应的视频二维码,观看教学视频。
(2) 获取源代码、数据集方式:先刮开并用手机版微信App扫描本书封底的文泉云盘防盗码,授权后再扫描下方二维码,即可获取。
源代码
数据集
(3) 其他配套资源可以扫描本书封底的书圈二维码,关注后回复本书书号,即可下载。
读者对象
本书适合作为全国高等学校计算机及相关专业的教材,也可供有意向学习C 语言或从事软件开发的读者自学使用。
在本书的编写过程中,作者结合多年的教学经验和学生反馈的学习心得,参考了诸多相关资料,在此表示衷心的感谢。限于个人水平和时间有限,书中难免存在疏漏之处,欢迎读者批评指正。
作者
2023年5月