第3版前言               在本书第3版修订之际,人类正在浩浩荡荡进入5G和人工智能时代,可以预见的是,未来50年人类生活将被重新塑造。在这个人工智能高速发展的时代,程序设计是每个人的基本技能,然而只会写代码是远远不够的,更重要的是在编程过程中建立计算 思维。   程序设计是一个利用计算机求解问题的过程:首先需要分析问题,进行数据抽象,在形成求解问题的基本想法后,还要对求解方法进行算法抽象,然后通过编写和调试代码最终通过运行程序求解问题。这个过程正是计算思维的运用过程。   本书遵循初学者的认知规律和知识基础,以C语言为工具,以程序设计过程为主线,带领读者分析问题、构造算法、运用程序设计语言解决实际问题,在潜移默化中掌握程序设计的基本思想和一般方法,提高计算思维能力以及程序设计能力。本书在教学内容和教学设计等方面进行了如下处理。   (1)提炼程序设计基础的知识模块,根据C语言的特性构建知识单元之间的拓扑关 系,如图1所示。本书自2011年出版以来,经过9年的教学实践和读者反馈,已被证明契合初学者的认知规律,因此,第2版和第3版均按照这样的拓扑结构逐渐展开各知识 单元。   (2)针对C语言的结构不良性,根据知识单元的拓扑结构,规划了教材的三级目 录。对于函数、指针、文件、程序的基本结构等具有一定难度的主题,采用增量的方式,先讲授基本内容,再讲授高级内容;对于数组、函数、指针等紧密耦合的知识单元,按照循序渐进的原则安排教学主线;对于C语言的低级特性,在最后一章单独介绍。   (3)强调语法和语义之间的关系,站在内存的角度讲语义。借鉴自然语言的学习方法,通过写语句理解基本语法,通过写程序学会使用语句。换言之,在讲授基本语法时只写有效代码(相当于学习语文的造句),避免无效代码的干扰和烦琐。   (4)任务驱动问题驱动,不断实践学以致用。每个知识单元由任务(引例)引出问题,带着问题学习理论知识,通过练习题巩固理论知识,通过程序实例展示知识的运用。以活页的形式提供了每课一练(作业),方便了教师留作业、学生交作业。   (5)按照“问题→想法→算法→程序”的模式进行程序设计。这个过程正是计算思维的运用过程,如图2所示。本书所有问题都用伪代码给出了算法描述,并且所有程序均在Dev C++、Code::Blocks、Visual Studio C++等环境下调试通过。   (6)提供了实验项目和数字教学资源。每章都设置了两类实验项目:一类是将教材中提供的程序设计实例上机实现,并进行延伸实验;另一类是需要学生独立完成的设计性实验。每章以二维码的形式给出了本章的课件、源代码和作业答案。   (7)将思政元素融入教学内容,传递正能量,增强责任感。随着教学内容的展开加入意志品德教育和工匠精神引导,讲好中国文化与中国故事,增强育人效果。 图1 知识单元及其拓扑结构 图2 程序设计的一般过程   西南大学2018级计算机科学与技术专业王宇奇同学完成了本书的所有代码调试与校对,以及习题答案的整理工作。参加本书编写的还有姚庆安、孙旸、肖巍、潘超等。由于作者的知识和写作水平有限,虽几经修改,仍难免有疏漏之处,欢迎同行专家和读者批评指正,以使本书在使用中不断改进、日臻完善。         作 者???   2021年1月 II 程序设计基础——从问题到程序(第3版) III 前言