李秀香
摘要
根据C语言程序设计课的特点,引入计算思维,围绕计算思维的本质特征,结合基于计算思维的教学内容组织,并举例说明计算思维在C语言程序设计中的具体应用。
【关键词】C语言程序设计 计算思维 抽象自动化
1 C语言程序设计课在高校存在的问题及毕业生的就业问题
C语言程序设计是许多高校理工科专业的一门重要专业课,为后期其它专业课的开设奠定了基础。C语言这门课语法多,随着算法的难度增加,大多数学生只停留在读懂给定程序,而不能独立设计算法和编写程序。为了提高学生理解C语言的语法,有时在上课时使用案例教学法,直接把新的语法和知识点引入案例,这样能给学生建立直观的感性认识,但容易导致学生产生“只知其一,不知其二”的学习后果,不利于学生把知识学活、用活,更不利于学生对后续知识的掌握。
近年来,各大高校计算机专业毕业的学生就业比较困难,而从社会人才需求调查报告了解到:各行业对计算机类人才缺口很大(如大数据分析、AI人工智能)。许多单位招不到满足社会需求的能针对某个领域的毕业生,而另一方面很多毕业生又不到适合自己的工作。出现这种矛盾的根本原因不是大学毕业生人数多或质量差,而是高校没有很好完成大学毕业生与社会的接轨。大学的教育要摆脱以传授知识为主,应主要培养计算机专业学生的主动自学能力、抽象思维能力、理解应用能力和操作能力。
2 计算思维
学习C语言程序设计课主要是要求学生掌握问题求解的算法,且用程序实现算法,这正是计算思维能解决的。近些年,各大高校围绕计算思维开展教学,将计算思维应用于程序设计类课程教学中。
2006年3月,美国卡内基·梅隆计算机科学系主任周以真教授对计算思维给出了明确的定义,她认为:计算思维是运用计算机科学的基础概念进行问题求解、系统设计、以及人类行为理解等涵盖计算机科学之广度的一系列思维活动。中国科学院院士、南京邮电大学教授陈国良解释说,计算思维如同所有人都具备“读、写、算”(简称3R)能力一样,是每个人应具有的基本技能,它已经成为人们最基础、最普遍、最适用的技能,到2050以前,让地球上每一位公民应具备“计算思维”的能力。
计算思维的本质是抽象和自动化。计算思维中的抽象指的是对求解问题的一种描述,是对问题的表达和推演,自动化是用具体的形式体现计算和结果。就C语言而言,抽象就是用变量、函数、数组等对需要解决的实际问题进行概括描述,抽象的过程实际上就是对实际问题确立模型的过程,自动化则是利用符合某种语言的语法规则编写的语句,按照顺序自动执行语句并进行自动转换。
程序设计语言和计算思维两者相辅相成,语言是思维的体现,思维是语言的载体。c语言中的函数、递归和模块等知识点都承载着解决问题的计算思维。计算思维是模型加算法,在C语言中,把解决的问题抽象成与其相应的模型,然后确定算法,最后编写程序求解问题。
3 基于计算思维的教学内容组织
面向过程的C语言程序主要介绍C语言基本的语法、操作对象及其数据类型、基本运算符和三种基本的程序控制结构等,这些基本概念都是对现实的抽象与表达,主要以理解和加强记忆为主。如在数据类型及表达式,这些操作对象是对系统特征的抽象。而C语言程序设计中的函数、数组、指针和文件等,则更应强调从现实到计算机逻辑的抽象表达。在此过程中,要注重学生抽象思维能力的培养。如数组是对多个相同或不同数据类型的一个或多个特征的抽象;函数的定义和调用分别是对系统功能和功能调用的抽象;结构体是对多个不同类型的多个特征的抽象,指针则是多个不同类型的多个特征集合的抽象。从以上c语言教学内容组织可见,C语言程序设计课程的教学表面上是对基本语法的学习和应用,深层次则是计算思维的训练和基于该思维的分析问题、解决问题等创新能力的培养。
3.1 基本语法和数据类型的计算思维教学
C语言中的常量和变量是对对象的描述。常量是对在程序运行过程中的其值不变的特征抽象描述,如重力加速度g;而变量则是对程序运行中其取值发生变化的特征进行抽象,如建筑物的高度。不管是哪类对象,都有其取值范围以及所允许的操作。例如,对于年龄,其取值范围一般是从0-130,允许对其进行的操作可以是加减法等算术运算以及大于和小于等比较运算;而对于性别,就不能进行算术运算。C语言程序设计中对特征的取值范围及允许的操作进行抽象的概念是数据类型。现实生活中,描述多个相同数据类型的一个特征常用一维数组描述,而描述描述多个相同数据类型的多个特征常用二维数组描述,描述多个不同数据类型的多个特征则用结构体进行描述。
3.2 程序控制结构的计算思维教学
C语言程序设计语言中的三种控制结构顺序结构、选择结构和循环结构,都是看起来容易理解但很难灵活运用的内容。在讲授这部分内容时,要在掌握基本语法和了解程序流程的基础上,引导学生从多个角度进行思考和对问题的抽象,启发学生通过不同的方法解决问题。
如对于解决同一实际问题,使用三种形式的循环控制结构for循环、while循环和do…while循环,引导学生比较各种结构的不同和各自优缺点。
4 计算思维在C语言程序设计中的具体应用
C语言中的典型算法有:穷举法、递推法、递归法、回溯法、迭代法、分治法、贪心法和动态规划法等,这些典型算法常应用于实际的生活問题中。每年的大学生数学建模竞赛总要用到这些典型算法。在遇到实际问题时,首先要通过对问题的分析;然后确定抽象出基本数据结构和算法;最后选择合适的程序设计语言编制程序并进行调试运行,并根据运行结果改写程序中的编程错误和算法设计错误(具体过程描述如图1)。
如用计算思维解决01背包问题时,问题描述(如图2)。解决此类问题应先对实际问题获得感性认识,然后对问题进行抽象,如解决01背包问题时使用穷举法,其基本思想是遍历这颗树,枚举所有的情况,进行判断,如果重量不超过Wm,且价值最大的方案就是问题的解。在实际遍历时,如发现没有意义的路径时,就立即停止对它的进一步搜索,进而提高搜索效率。n种物品,树的高度为n,共有2n-1个节点,构成一颗满二叉树(如图3)。再对上面抽象出的问题建模,将问题定量转化、利用数学模型拟合;通过抽象变量、定义函数、调用函数等方法,将开始的复杂问题转换成一个可以求解的过程(如图4)。最后通过编程,将问题转化为机器可解的简单问题,得出解决问题的方法(如图5)。
计算思维在C语言程序设计应用中还应用注意以下几个方面:
4.1 积极引导学生进行思维训练
学习教材上一些具体实例后,要鼓励学生敢于打破常规,拓展思路,积极探索,争取采用一题多解的方式,寻求更好的算法。程序设计更多的是从模仿开始,但也一定要有自己的思维,不要生搬硬套。在程序设计中,逐步培养学生抽象问题的能力,学会解决问题的方法和步骤,主动用计算思维去解决问题。
4.2 积极引导学生对典型算法的应用
学生掌握了典型算法后,积极引导学生应用典型算法解决实际问题,培养学生对典型算法的灵活应用和变通能力,及时总结c语言程序设计方法和设计过程中所涵盖的计算思维,做到举一反三,触类旁通。
4.3 积极引导学生亲自实践
实践是程序设计课的一个重要环节,在学生自主实践中,一定要让学生认识和掌握解决问题的思维方式,教会学生如何学习和思考。在实践中遇到问题,相互探讨,通过老师提示,学生能独立完成。
5 结语
计算思维在C语言程序设计中起着很重要的作用。授课时,要采用慢慢引入、循序渐进的方式把这种思维渗透到各个知识点和知识点的应用中,使学生在编程过程中自觉或不自觉地学会使用这种思维方式。培养学生在编程中得心应手地使用计算思維,是当代教师肩负的重要责任,当然,它是一个需要在教学中长期渗透和培养的过程,需要我们不断探索,不断实践。
参考文献
[1]专家论坛李竹林,王文发.基于计算思维的程序设计类课程教学模式探索[J].2018(03):1-5
[2]Jeannette M.Wing.ComputationalThinking[J].Communciations of theACM,2006,49(03):33-35.
[3]袁开榜.二十一世纪.人们应该具有计算思维能力[J].计算机教育,2011(03):30-34.
[4]范兴亮.C语言程序设计课程中的计算思维探析[J].无线互联技术,2017(08):67-68.
[5]张雪,伍常,晋义.计算思维在C++程序设计教学中的应用[J].计算机教育,2013(13):52-56.
[6]汪红兵,姚琳.C语言程序设计课程中的计算思维探析[J].中国大学教学,2014(09):59-62.
[7]张东生郑文奎基于思维空间转换的计算思维教育[J].计算机教育,2014(11):2-6.
[8]臧劲松培养学生计算思维的程序设计课程教学[J].计算机教育,2012(02):78-80.
[9]吕俊陆淑娟以计算思维培养为导向的《语言程序设计》课程教学改革[J].2016(15):213-215.