基于计算思维的三种结构进行教学改革探究

    马世霞 刘丹 李娜

    

    

    摘? 要 以C语言程序设计为例,研究并实践一种按程序三种结构思考,逐级递进的课堂教学方法,在课堂教学中按照“简单问题引入—多样化编程思路—优化程序的创新学习”的教学模式,注重培养学生的计算思维编程模式,对于学生日后使用计算机解决问题是非常重要的,对于创新人才的培养打下好的基础。

    关键词 C语言;教学改革;计算思维;程序设计

    中图分类号:G642.0? ? 文献标识码:B

    文章编号:1671-489X(2020)08-0094-03

    Abstract Taking C language programming as an example, the paper has studied and practiced classroom teaching methods by thinking of?a three-program structure and step-by-step. The classroom teaching?method follows “simple problem introduction, diversified progra-mming ideas, innovation learning of optimized program” to achieve teaching. This method pays attention to cultivating students compu-tational thinking mode which is very important for students to use?computers to solve problems in the future, so as to lay a good foun-dation for the cultivation of innovative talents.

    Key words C language; teaching reform; computational thinking; programming

    1 前言

    C语言程序设计课是高校普及计算机知识的重要科目,学习C语言程序设计,不是只要熟记有关规则、熟能生巧,就能完成任务的。编程不是一种简单的技能,而是需要智慧,编写每一个程序都要积极开动脑筋,发挥创造精神。笔者提出运用三种结构思考的教学建议,让学生养成计算思维方式,提高学生对计算机程序设计的兴趣。

    2 计算思维与创新的关系

    计算思维是运用计算机科学的基础概念去求解问题、设计系统和理解人类的行为,其本质是抽象的。计算思维不等于计算机编程,它要求从多个抽象层面进行思考。然而大多数高校的C语言课程针对大一新生开设,学生刚入校,让他们编程,会感觉学习很枯燥,代码符号太多,太难学,教学效果不理想。针对C语言程序设计课程本身编程的特点,再加上新入校的大学生脑子像一张白纸,能画出最新最美感的图,抓住时机培养学生的计算思维方式尤其重要。

    在C语言程序设计教学过程中,重视计算思维能力的培养,目的不仅仅是让学生理解教科书上的程序代码,更重要的是能够发挥创新能力,编程解决一些类似的问题。这样有助于提高学生的兴趣,在枯燥的问题解决过程中找到自信,找到乐趣。通过计算思维能力的培养,让学生懂得遇到问题该如何思考解决。因此,围绕计算思维积极探索计算机教学改革,构建基于计算思维的教学方法,是非常重要的。

    3 三种结构的计算思维方法

    计算机的本质是“程序的机器”,只有懂得程序设计,才能进一步懂得计算机是如何工作的,才能更好地理解和应用计算机,掌握用计算机处理问题的方法,培养计算思维,提高分析问题和解决问题的能力。

    从程序的三种结构入手? C语言是过程化程序设计,一共有三种程序结构:顺序结构、选择结构(分支结构)、循环结构。在课堂教学中,讲授知识时要注意讲应用、讲方法。学生知道应用,就有了目标;有了目标,就有了学习的动力,就会主动思考。但还要讲方法,方法比知识更重要。方法是处理问题的思维方式,知识不能代替思维。知识不是智慧,解决问题的方法才是智慧,教育就是教人养成正确的思维方式。

    在课堂教学过程中给学生灌输这三种结构思想,以这三种结构来分析問题,从而找出算法解决实际问题。如讲解编写100!的程序,在教学过程中先带领学生分析。

    1×2×3×……×100,从表面看,只是1×2×3×……×100,刚入的新生没有计算思维,不会编程。要将这个问题改成三种结构,如图1所示,引导学生逐步找出问题规律,才能编写程序实现。

    第一步:通过观察发现,1,2,3数字上在逐步递增,相差一个数,如第一个数为a,第二个就是a=a+1。

    第二步:每次是两个数相乘,计算s×a并将结果代替S。

    1)顺序结构:第一步、第二步顺序执行。

    2)循环结构:第一步,第二步;第一步,第二步;第一步,第二步,重复执行

    3)条件结构:如果a≤100执行,第一步、第二步;如果a>100,就停止执行

    编程结束后,要求学生总结,找出解题的思路。

    100!=1*2*3*……*100,从1开始,有规律地从自身+1的变量,进行100次求积,从中找出重复的内容,重复的内容就是循环,循环语句部分为i=i+1和s=s*i;有了循环,还要找出走出循环的结束条件,即数据增加到100就结束,否则就是死循环了。

    当学生熟练掌握该程序后,向学生提出问题来提高他们编写程序的兴趣,如1*3*5*7……,2*4*6……,1+1/1-1/2+1/3-1/4+1/5-……+1/99-1/100等类似题都会编程。要活学活用,学用结合,学到方法,学出兴趣。

    课堂教学内容的例子,要从简单入手,如上学事件分析:

    1)早上上课—下午上课—晚上自习(顺序结构);

    2)从周一到周五,再从周一到周五(循环结构);

    3)如果成绩优秀,可以拿到奖学金(条件结构)。

    培养学生学习的兴趣,教师要重视对学生计算思维能力的培养,不仅要教会学生知识,更要注重学生分析问題能力的培养,给予学生更多的思考空间和创新空间,让学生可以用自己所学的知识编写出最佳的代码,从而收到更好的教学效果。因此,要通过有效的课程改革模式来促进学生计算思维能力的培养。

    启发式教学应用? 在课堂教学中,采用启发式方法。先给出题目,要让学生发挥主观能动性,从不同的角度和方向进行思考,设计运用多种算法解决问题;进而对多种算法进行分析,要让学生明白对于问题的分析不是只有一种算法,要发挥想象,突破常规,探索出最有效的方法,从而得出最佳的算法。

    学生真正懂得一个程序的设计方法后,应能将其方法融会到其他程序的开发设计过程中。如两个数比较大小,如表1代码所示,由两个数比较大小,引到三个数找最小的,再到100个数找最小的。讲一个问题,它的结果并不重要,重要的是让学生明白这个算法是怎样一步一步形成的,它解决哪一类问题。

    表1中程序的条件是两个数比较大小,如果不用循环,三个数据比较大小不具有推广性。运用函数结构化的设计方法,多个数进行比较大小时,每次用两个数进行大小比较,重复多少次?如果是n个数,要重复n-1次。只需要将while(i<=3)中的3改一下,100个数据比较大小,就改为while(i<=100),就解决问题了。多总结,多思考,达到举一反三的效果。

    形象比喻增强趣味性? 在课堂教学过程中还应注意编程的实用性、典型性和趣味性。如在讲解结构体时,将结构体比喻成一套西装,定义如下:

    Struct 西装

    { 红色 领带;? ?黑色 上衣;? ?黑色 裤子;};

    这样学生容易接受。与生活结合,使用结构体后,小明(变量)要西装,就会给三样衣物。再如九九乘法表、水仙花、约瑟夫、汉诺塔问题等有趣味,学生感兴趣,编写程序时就会发挥主观能动性。先要有想法思路,然后才是分析找出问题的最佳解决方法,而不是让学生直接看代码。有了思路,有了算法,再写伪码,最后才是C程序。

    教师在课堂上应将示例程序与课后作业联系起来,逐步加深程序难度。这样,学生能够做到温故而知新,加进自己的想法,领会编程的乐趣,提高编程运用能力。

    4 结语

    以C语言程序设计课程为例,在课堂教学过程中注重培养学生的计算思维方法,按照逐级递进式的教学模式展开教学,以程序的三种结构进行程序分析、讲授、编写,在整个教学过程中处处强调计算思维的方法应用。通过多种解题方案比较,目的在于启发学生发散思维,激发学习积极性,以此来真正增强学生编程水平,从而为推动经济社会发展培养更多的编程人才。

    参考文献

    [1]何文广,周珂,熊刚强.程序设计课程实验教学改革与实践[J].实验室研究与探索,2016,35(6):163-165,169.

    [2]施晓秋,刘军.“三位一体”课堂教学模式改革实践[J].中国大学教学,2015,37(8):34-39.

    [3]米洁,高宏.课程—实践—创新相辅相成的教学模式改革[J].实验室研究与探索,2015,34(2):167-170.

    [4]田琳琳,刘斌,于红,等.面向应用型创新人才培养的程序设计语言实验教学[J].计算机教育,2016,14(3):12-15.

    [5]郑征,李伟伟.创新实践教学体系提升工科大学生创新能力[J].实验室研究与探索,2015,34(7):195-198.

    [6]周凯波,邹育桃,何顶新,等.自动化专业程序设计类课程创新型教学模式探索[J].实验室研究与探索,2018(1):170-172,180.