前言

近年来,越来越多的人意识到计算思维在人们学习过程中的重要性,计算思维相关课
程也迅速在国内各大高校推广,但纵观大部分高校的计算思维课程设计,仅仅将其作为一
门单纯的理论课程实施,且课程内容较多,大面积融合计算机组成原理、计算机基础知识
以及算法,但在真正实际应用方面略显不足。
作为所有计算机相关专业以及其他理工类专业课程的前驱课程,面对从未接触过计算
机编程语言的低年级学生,如何快速地让学生掌握计算机科学基本概念,培养其计算思维
以及编程能力是编写本书的出发点。通过多年的实践教学,编者做了一次大胆的尝试,即
将计算机科学基本概念和实际编程语言进行结合,形成计算思维C 语言综合性课程教材。
并以此为切入点,最终开发一套专注于计算思维与编程知识相融合,充分实现场景案例模
拟的应用书籍。
本书希望实现以下两个目标:第一,以建模和仿真为中心,对场景案例进行分析以及
合理抽象,通过补充计算机相关基础知识,让读者具有一定的计算思维分析能力;第二,
学习C 语言中的一些常用语法,包括数据类型、输入输出、函数、控制语句等,最终将抽
象出来的案例模型通过C 语言编程实现自动化。
全书共分14 章,从章节划分来看,貌似本书侧重点在C 语言语法讲解,但本书实际
更侧重于学生整个计算思维训练以及对现实世界的行为模拟能力培养,C 语言仅仅作为一
门编程语言来完成计算思维的落地实现。因此,本书从现实生活的案例场景出发,通过对
场景案例的分析描述以及模型构建,最终通过C 语言进行功能实现。不纠结于语法细节以
及部分高级语法,而是案例驱动,针对场景中需要的语法知识进行讲解描述。
各章节内容详细安排如下。
第1 章 计算与计算思维
本章从计算工具的发展和计算思想的形式化两个方面讲解计算机的产生。按照历史的
发展讲解具有先进代表意义的计算工具,了解计算工具的发展;分别从逻辑学、命题、二
值逻辑、布尔关系、可计算性、图灵机六个方面讲解计算思想的形式化。最后通过生活中
案例和问题的解决,感受并理解什么是计算思维,掌握计算思维的概念、本质以及特征。
学会如何抽象问题,并将计算思维与计算机知识相关联。
学完本章内容,能够了解计算机在日常生活中的重要性,能够对命题、布尔关系和可
计算性做出正确判断,掌握图灵机的基本思想。了解计算思维的形成过程,并通过对计算
思维特征和概念的掌握,学会运用计算思维解决日常生活中的相关问题。
第2 章 计算机基础
本章在掌握计算思维过程的基础上,补充计算机相关基础知识,包括计算机的组成(硬
II
计算思维导论(C 语言实现)
件系统和软件系统),以及计算机系统中数据的存储方式,包括进制转换和转码等算法的
描述,最后讲解冯·诺依曼体系结构。
学完本章内容,可掌握计算机软、硬件相关部分知识,了解计算机五大组成部分的相
互运行流程,重点了解冯·诺依曼体系,并熟练掌握进制间的转换以及原码、反码和补码
的计算方法。
第3 章 程序设计语言
本章首先讲解生活中的程序,从而引出程序的概念,然后对生活中的程序给出解决问
题的算法描述,以及计算机中程序的概念和指令主要包括的类别,再讲解描述程序的工
具——流程图。其次,以时间轴的方式,列举部分程序设计语言发展史上有重大影响力的
编程语言,并针对每一种语言进行一个简单的描述。最后,根据每个语言的特征不同,进
行实际应用上的分类说明。
学完本章内容,应能够了解程序的概念,能够列举出生活中的程序,并能给出解决问
题的算法描述及流程图。读者不需要对每一门语言都进行了解,但是能够对程序设计语言
本身有一个大致的认识和感知,提前熟悉C 语言的由来以及发展历史。
第4 章 程序设计语言入门——你好C 语言
本章主要介绍一些C 语言的特征和它的安装步骤及环境配置,以及C 语言基本框架介
绍,使得读者对程序设计C 语言框架有一个初步的概念。
学完本章内容,应能够利用VS 2015 工具熟练配置C 语言运行环境,完成C 语言代码
编写,并成功运行输出语句,了解整个C 语言环境的架构。
第5 章 C 语言基础——“我们”不一样
本章主要讲解计算机中常见的数据类型,掌握变量和常量概念,了解如何定义、赋值、
简单使用变量与常量,以及运算符(算术、赋值、关系、逻辑、递增递减、条件)与表达
式的使用与含义。
学完本章内容,应能够充分理解变量和常量的概念,能用变量和常量对生活中的数据
进行描述,掌握不同数据类型的变量和常量的定义及赋值方式,了解不同运算符与表达式
的含义并能够熟练使用。
第6 章 标准输入与输出函数——我想和“你”聊聊
本章主要模拟现实生活中的输入与输出行为,通过讲解printf 函数、scanf 函数、
putchar 函数和getchar 函数,学习格式化输入输出与字符的输入输出。
学完本章内容,读者应能够掌握各种类型数据的输入和输出方法,并模拟现实生活中
的输入与输出行为。
第7 章 函数思维——生活中的“模块”
本章通过四个不同的生活场景案例引出函数的四种状态,从输入、处理、输出三个维
度进行需求分析,得出每种函数状态的作用以及特征结论。
学完本章内容,读者应能够形成初步函数化的思维方式,能够针对现实生活场景进行
函数特征映射。
第8 章 函数实现——程序中的“模块”
本章与第7 章四个案例一一对应,将第7 章的案例分析通过代码实现,在实现的过程
III
中讲解函数的定义、调用、参数、返回值等实现语法,完成现实与计算机之间的功能映射。
学完本章内容,应熟练掌握函数的定义、调用,以及函数参数、返回值的设计与实现,
能够编写函数解决实际问题;充分体会和感受到计算思维对日常生活的各类行为的合理抽象
和模拟。
第9 章 分支结构——做人生正确的选择
本章主要讲解控制语句中的分支结构,让读者从概念上理解如何将实际生活中的判断
转化成编程语言,并通过计算机实现;从功能上讲授一些基础的选择结构语法等,让读者
用编程语言去模拟这些场景,并通过计算机实现。
学完本章内容,应能够熟练掌握和使用if 语句模拟单分支、双分支和多分支场景,掌
握switch 语句的语法实现多分支,并能正确区分if 多分支语句和switch 多分支语句的区
别。通过一些综合练习,学会如何将生活中的案例合理抽象并通过代码进行最终实现。
第10 章 循环结构——漫漫十年还贷路
本章主要讲解控制语句中的循环结构,让学生从概念上理解如何将实际生活中的循环、
重复和中断重复转化成编程语言,并通过计算机实现;从功能上讲授一些循环结构基础的
语法,让读者用编程语言去模拟这些场景,并通过计算机实现。
学完本章内容,应能够熟练掌握和使用for 语句和while 语句,并能正确理解和使用
break 和continue 关键字,通过一些综合练习,学会如何将生活中的案例合理抽象并通过
代码进行最终实现。
第11 章 数组——熊孩子的成绩单
本章通过对列表概念的描述和讲解,加深读者对“归类”的理解,体会将多维度问题
进行抽象分类和简单化的价值,最终通过一些基础语法的学习,完成编程具体实现功能的
部分。
学完本章内容,应能够掌握数组的概念,映射到日常生活中,理解数组概念存在的含
义以及它的合理运用范围,学会针对数组的一系列操作,包括取值、求数组长度、遍历数
组、排序,简单了解二维数组。
第12 章 指针——大海捞“书”轻而易举
本章通过实际生活案例的描述,让读者理解指针的概念以及存在的意义,并掌握指针
的内存存放形式,最终通过代码来模拟日常生活中所谓“地址”查询的思维方式和操作方法。
学完本章内容,应能够理解指针和变量在内存中的映射,能通过指针访问普通变量及
数组元素并输出,正确区分“值传递”和“地址传递”,并掌握指针作为函数参数进行传
参的方法。
第13 章 结构体——自定义“封装”
本章通过对日常生活案例的分析,提出另外一种可以存放多个不同数据类型的变量集
合的特殊方式:结构体。理解结构体的含义以及声明格式,并通过之前所学过的内容完成
一个标准结构体的定义。
通过学完本章内容能够了解结构体的概念并熟练掌握结构体的定义方式,了解结构体
变量的定义与使用,熟悉结构体成员,会通过结构体进行数据抽象。
IV
计算思维导论(C 语言实现)
第14 章 文件——模拟“数据库”
本章首先讲解文件的基本概念,然后讲解如何通过C 语言对文件进行打开、关闭、读
写操作。
学完本章内容,读者应能够完成对文件的简单读写操作。
本书第1 章由周鸣争、王啸楠、伍祥编写;第2 章由伍祥、张进兵编写;第3 章由张进兵、
伍祥编写;第4 章由王啸楠、丁鑫编写;第5 章由张云玲、丁鑫编写;第6 章由王啸楠、
丁鑫编写;第7 章由张云玲、殷振华编写;第8 章由张云玲、殷振华编写;第9 章由伍祥、
殷振华编写;第10 章由伍祥、张进兵编写;第11 章由伍祥、张进兵编写;第12 章由张云玲、
丁鑫编写;第13 章由王啸楠、张云玲编写;第14 章由王啸楠、张云玲编写;最后由周鸣
争负责审阅定稿。
在本书的编写过程中,参考了许多相关的书籍和资料,编者在此对这些参考文献的作
者表示感谢。同时对本书在讲义阶段教学实施过程中,提出宝贵意见的几位助教表示感激,
他们分别是:施靖成、李玉廷、芮磊、张明亮。最后,对所有在本书出版过程中所给予支
持和帮助的同志和朋友,表示真挚的谢意。
因水平有限,书中难免存在疏漏与不足之处,望读者指正,以利改进和提高。
编 者
2020 年8 月