基于“计算思维”的程序设计方法在《C语言程序设计》教学中的运用

2017-07-11 07:16唐型基周长敏
电脑知识与技术 2017年15期
关键词:C语言程序设计计算思维教学方法

唐型基 周长敏

摘要:《c语言程序设计》是实践性很强的计算机基础课程,但在实际教学中普遍存在一些问题,理论与实践脱离,多数学生只会看不会写,编程能力弱。该文提出基于“计算思维”的程序设计方法,将其运用于教学实践。

关键词:计算思维;程序设计方法;c语言程序设计;教学方法

《c语言程序设计》是计算机相关专业及其他理工科专业的基础课,它是一门实践性很强的计算机基础课程。教学目标是通过课程的学习,学生不仅要掌握C语言程序设计的语言知识、编程技术和基本算法,更重要的是在实践中逐步掌握程序设计的思想和方法,培养学生问题求解和程序语言的应用能力,为后续专业课程的学习打好基础。

由上述的教学目标我们知道C语言程序设计这门课程中教师不仅讲授C语言语法知识,还要帮助学生掌握程序设计的能力。但目前c语言程序设计课程教学中只注重知识讲解,而忽略了程序设计思维的培养,导致学生只会看不会写。鉴于此,本文提出基于“计算思维”培养程序设计能力的教学方法,并将其运用于《c语言程序设计》课程教学实践。

1C语言教学存在的问题

对于程序设计的初学者,编写程序包含至少两个方面的要素:1)程序设计语言的语法知识;2)计算思维,即算法,也就是用计算机的思维把客观世界的问题分解成计算机所能处理的步骤,并描述出来。

目前大学《c语言程序设计》教学普遍存在的关键问题是:重语法,轻算法,注重传授知识,忽略程序设计思维培养。大多数教师强调C语言语法知识的讲授,造成学生死记硬背C语言的语法知识,却不会运用,导致理论与实践相分离,使学生误以为C语言是枯燥的理论课程,从而产生厌烦情绪,失去C语言课程学习的兴趣和动力;部分教师并没有在课堂上带领学生一起完成程序从无到有的编写过程,学生不能形成程序设计思维,导致学生产生这样的疑问:“程序为什么要这样写?”,大部分学生处于“看得懂别人写的程序,但自己不会写程序”的状态。

著名国内计算机教育专家谭浩强教授指出算法是程序的灵魂,在他所编写的《c程序设计》一书中,“算法”这一章里用了几种方法阐述如何描述算法,这其实包含了把客观世界中问题的解决方法转换成为用计算机思维解决问题这一重要思想!笔者与同行交流讨论时发现,竟然有部分老师跳过“算法”这一章节,这是典型的重语法,轻算法,只注重传授知识,而忽略程序设计思维培养。

2以计算思维培养程序设计能力教学法的运用

据笔者多年从事计算机程序设计语言教学工作经验及教学过程中所做的调查了解到这样一种情况:许多学生面对某个编程题,不知道如何下手,并非学生不会用所学的数理化知识解决该问题,只是不知道如何用计算机编程来解决问题。这种情况的根本原因就是学生不知道如何把解决该问题的方法转换成计算机思维表示出来。进一步说就是没有形成计算思维。

计算思维的含义是运用计算机科学的基础概念进行问题求解、系统设计以及人类行为理解等涵盖计算机科学之广度的一系列思维活动。其本质内容体现了抽象、约简、规划、关注点分离、递归、优化、分解等思维特征-引。显然如果学生不明白计算思维,不理解计算机是如何解决问题的,那么他一定不会编写程序。因此想要培养学生程序设计能力那么必须使学生养成计算思维,使用计算思维去把客观问题的解决方法转换成计算机所能处理的步骤(即算法)描述出来,最后再将算法转换成程序语言代码,即编写出程序。

2.1通过案例驱动逐步建立计算思维

对于程序设计初学者,在开始时先通过案例让学生逐步了解计算思维,让学生知道计算机是怎样来解决问题的,更具体的来说是让学生知道计算机是通过什么样基本步骤的组合或者重复来解决问题的,从而学生知道要让计算机来解决问题,就要把问题分解成计算机所能处理的基本步骤,计算机通过重复执行这些基本步骤即可解决问题。通过反复的练习与加强让学生逐步建立计算思维,掌握分析问题和用计算机的思维方式来解决问题的能力。

下面通过案例體现计算思维。

题目:计算1+2+3+…+100。

第1步,分析题目,找出用计算思维求解本题方法的基本步骤。如果是人工来计算本题,有两种方法,一是按公式100x(1+100)/2=5050;二是先计算1+2,结果为3,再用1+2的和3加上3,结果为6,再用6加上4,……直至最后加上100。显然如果用计算机来算,计算机不会分析总结出公式计算的方法,只有按第二种方法来计算,那如何计算呢?我们知道计算机最擅长做的事就是重复执行简单的基本步骤。本题中加法运算是重复执行多次的步骤,这时候问题又来了,该如何表示呢?计算机计算时通常不是用常量1,2,3之类的直接运算的,而是用变量来存存储数据并用变量来参与运算的。可以设两个变量s和i,s暂时表示1,i表示2,那么s+i即完成了1+2的运算了,此时有同学可能会想到,“再设一变量来存放s+i的结果,假设新变量名为sl,即s+i=>s1,后再用s1去加上3……”,按这思路编下去,它与用常量1加上2再加上3……的方式是一样的,这是100个数要99次加法,得写99条加法指令,如果题目变为从1连加到10000,按此思路写程序那得写9999条加法指令!想想都可怕,若真按此思路程序员们都得哭了。上述思路不通,不能再新设变量来存放s+i的结果,只能反过来思考,从s和i两个量中选一个来保存s+i的结果,结合s与i变量的初值情况,选用s来存放s+i的结果较为适合(i具有另外的作用,后面论述),即s+i=>s,这样计算后的s是本次运算的和,又是下一次加法运算里的加数,于是让它重复执行起来即能完成问题计算。为了能让s+i=>s重复执行,并且在下一次执行时s加上的是下一项的值,让i的值增加l,即i+1=>i。此时我们发现只要想办法让s+i=>s,和i+1=>i两个步骤重复执行问题即可解决。这就是计算思维,就是用计算机方式来解决问题的方法的基本步骤。

在实际的教学过程中,教师通过类似的分析引导的案例让学生认识计算思维,反复的训练即可让学生建立计算思维。

猜你喜欢
C语言程序设计计算思维教学方法
教学方法与知识类型的适宜
程序设计课程中计算思维和应用能力培养问题研究
我的教学方法