以计算思维为导向的C语言教学方法的探索和实践

2019-08-07 06:40韩宇贞
计算机教育 2019年7期
关键词:C语言程序设计编程

王 磊,叶 军,韩宇贞

(南昌工程学院 信息工程学院,江西 南昌 330099 )

0 引 言

周以真教授在2006年首次较系统地提出了计算思维的概念,认为计算思维是运用计算机科学的基本概念进行问题求解、系统设计和人类行为理解等一系列思维活动[1]。而抽象和自动化是计算思维的本质和主要特征。2010 年7 月,教育部高等学校计算机基础课程教学指导委员会在西安会议上发布了《九校联盟(C9)计算机基础教学发展战略联合声明》[2],拉开了以计算思维为导向的计算机基础课程教学改革的序幕。由此奠定了计算思维能力的培养在大学计算机基础课程教学中的核心地位[3-4]。C语言程序设计是理工科专业大学生继大学计算机基础之后的又一门计算机公共基础课程,该课程是从语言级的层面培养学生的计算思维能力。而作为计算思维培养具体立足点的编程不只是简单的代码编写,更重要的是编程可将学生暴露在涉及运用诸如抽象和分解等计算机科学的概念解决问题的计算思维之中[2]。在应用型本科院校,以计算思维为导向的计算机基础课程教学改革更要注重运用计算思维解决、分析专业领域问题能力的培养。体现在C语言程序设计教学中,就是要注重学生程序设计方法的培养,突出用编程解决专业领域的实际问题,而不是孤立地掌握程序设计语言的语法知识点。目前不少同行在C语言程序设计的教学研究方面作了较多的探索[5-8],如文献[6]系统总结了C语言程序设计课程中各章所涉及的计算思维培养点。文献[7]从课程的建设目标、教学内容与方法、资源建设、共建共享等方面阐释了省级精品资源共享课C语言的建设与实践。

1 计算思维在C程序设计中的分布

程序设计是运用计算机解决问题的关键环节,也是计算思维培养的重要方面。计算思维的本质是抽象和自动化,在程序设计中,程序是对实际系统的抽象和建模,抽象的过程就是运用C语言对系统进行建模的过程[6],而自动化过程反映C语言程序设计的算法流程,反映问题求解的一系列确定的步骤。程序设计基础类课程的教学目标是培养大学生的编程能力,将计算思维以程序的方式运用于问题求解之中。但是,由于不同的老师对计算思维融入C程序教学中的理解不同,可能在教学中会导致不同的效果,故梳理出计算思维培养点在C程序设计各章知识点中的分布是十分必要的,它有助于老师有针对性地进行融入计算思维的C语言教学。根据我校现阶段使用的孙辉教授主编的《C语言程序设计》教材及其教学内容,基于以计算思维为导向的教学改革并借用了汪红兵等[4]的提法分析和梳理了各章节的内容、知识点及其对应的计算思维培养点,具体见表1。在课堂教学中应注重主要知识点和计算思维培养点的讲授。

2 激发学习兴趣

在激发学生的学习兴趣、热情和积极性方面,教师在教学过程中采取以下几个方面的措施。

(1)在教学班级营造积极向上的学习气氛。一个教学班级只要有大约10%的人能认真学习,就足以使整个班级的学风呈现出良好的势头。

(2)针对部分学生在入校前接触个人微机较少以及计算机基础知识较为缺乏这一实际情况,团队老师应创造机会让学生在机房做电脑的系统安装和软件安装的实验并鼓励学生尽可能依靠电脑和网络来解决安装过程中存在的疑难问题。

(3)帮助学习C语言的学生在其个人电脑中安装VC等C语言编译器或者在智能手机上安装C编译器APP。目的在于能持续保持学生对C语言学习乃至用C程序解决实际问题的兴奋点并就此加以引导。

(4)利用电话、QQ、微信等即时通信工具以及网络教学平台上的在线答疑栏目及时解答学生在课程学习中遇到的疑难问题和困惑。

(5)利用班级晚自习时间有针对性地进行辅导和答疑。

3 构建分类辅导机制和多样化的学习资源平台

3.1 统一教学,分类辅导

教师可依据学生的平时学习情况将学生分为3种类型,即一般学生、 中等学生和优秀学生。然后针对不同类型的学生采取分类的辅导措施和方法。计算机基础课程教学团队采取的是关注和鞭策中等学生的策略,这样可促使更多中等学生向优秀学生转化;而对成绩优秀的学生只需做到能及时解答他们学习过程中存在的疑惑。由于一般类型学生的自觉性较差,教师宜采取一些激励措施去鞭策他们,以促使他们掌握一些初级的计算思维技能。

3.2 打造满足不同层次学习需求的平台

客观上要求不同类型的学生使用不同的学习资源。借助网络教学资源平台提供面向不同层次学生需求的、形式上多样、数量上繁多的学习资源,如开设有教学视频、常见疑难问题解答、在线答疑、全国计算机等级考试C语言学习、专题讲座、程序设计大赛练习平台和计算机软件水平考试学习等栏目。这些丰富的学习资源是对课堂学习的有益补充,它能使不同层次的学习需求得到较好的满足。

在教学过程中拟构建一个3层的以计算思维为导向的C语言教学平台,如图1所示,它体现了C语言教学中计算思维培养的3个层次。平台的第一层是计算思维培养的基本要求,其中的课本练习题能及时巩固和加深对语法规则和知识点的理解和掌握。课本练习题需以纸质作业的形式提交给老师,而配套习题集上的选择题、填空题和程序阅读题则需通过网上教学平台提交电子版答案。按时、独立地完成各类作业和实验报告是对所有学生的最基本要求,达到这个基本要求的学生通过期末考试是没有问题的。平台第二层中交互式的在线编程练习、以选修课形式开设的综合性实验项目以及等级考试编程题练习则是针对学习成绩良好的学生而设置,以满足较高的学习需求。而平台第三层体现了C语言教学中计算思维培养的最高层次,是团队老师在教学中应努力达到的最高目标,它是为优秀学生进一步提升计算思维能力服务的,包括程序设计大赛、大学生创新创业大赛、互联网+以及大学生科研计划训练项目等,旨在通过教学团队老师指导挑战杯大学生创业大赛项目、互联网+大赛项目以及大学生科研计划训练项目等,使学习成绩优异的学生在计算思维能力上获得更多的提升空间,并且能在上述的全国性大赛上脱颖而出为校争光。

图1 C语言教学中计算思维培养的3个层次

4 夯实编程的语法基础

教师应通过尝试各种有效的途径来夯实学生的语法基础知识,同时又要避免陷入重语法、轻编程的误区。

在教学中应高度重视基本概念、语法规则和知识点的引入。对每一语法知识点的讲解应辅以较多的例题,在课堂上应尽可能做到边讲边练,如常量,变量,各运算符的运算规则、优先级和结合性,各类表达式等知识点的讲解。使大部分语法规则和知识点能在课堂上得以接受和消化。课堂教学中应引导学生分清楚哪些语法规则是人为规定的,这些规则是必须要强制记忆的,如各种运算符的符号表示、优先级和结合性,各种数据类型的变量在内存中所占字节数,选择语句、循环语句以及数组定义的语法格式等。而又有哪些语法规则是可以通过理解或类比进行记忆的,如各种数据类型的关键字及其表示数的范围,选择语句、循环语句的执行流程,循环嵌套的规则等。对于前一类语法知识,必须加大记忆力度和重复的频次方可牢记在心。而后一种语法知识则需通过一定的理解方可加深记忆。在教学的具体实施过程中应特别注重实验等实践教学环节的教学,实验分为验证性实验、启发性实验和综合性设计实验三大类,在内容编排上以验证性实验和启发性实验为主。通过实验教学环节不仅能够使学生加深和巩固对语法规则和知识点的掌握,还可使学生能确实感受和领悟到用计算机求解问题的基本方法和思维模式。

5 提升综合编程能力

将多种计算思维方法恰当地融入C程序设计之中是提高综合编程能力的需要。在教学中采取了如下5个方面的措施以提高学生的综合编程能力。

(1)在教学过程中注重从问题分析开始到算法流程图设计,再到程序设计完整地讲解一些典型的C程序设计例题,如不定方程求解、定积分求解、简单的文本加密解密等问题的C语言解决方案。一方面可使学生熟悉运用计算机分析和解决问题的基本过程和思路,另一方面可使学生意识到通过编程能使计算机帮助人们正确、高效地完成一些繁琐乏味的工作,并使学生能深刻地体会到拥有计算思维方法的重要性,从而提高其学习的自觉性。

(2)在教学过程中须十分注重通过逐步改变条件或增加条件的途径来拓展课本上的已有例题程序,以提高学有余力同学的综合编程能力,使其能够做到举一反三,触类旁通。在拓展程序的过程中应考虑抽象、分解、迭代、转换等计算思维技能的有机融入。现列举两例给予说明。

第一个例子是课本上求质数例题的程序扩展,从判断某一个给定的整数是否为质数开始,然后推广到找出某个范围内的全部质数及其个数,而确定这个范围的两个整数也可以从键盘输入。再进一步,将判断质数的方法从质数定义法扩展到采用其他方法判断质数如筛选法判断质数以及其他快速判断质数法。

第二个例子及其扩展阐述如下:

问题a. 输入一个三位正整数,要求在屏幕上显示出该整数的百位数字、十位数字和个位数字。

问题a是在学习第二章(运算符和顺序结构)时学生应完成的一道编程题,它体现了计算思维技能中的分解。学习了循环结构的知识后该问题可扩展为:

问题b. 输入一个不多于6位的正整数,按逆序打印出各位数字。

问题b, c的思路是通过执行一个while循环并借助于整数的取余运算(%)和除法运算(/)依次逆序地得到所输入整数的各位数字并求和。在学生掌握以上方法后,还做了如下的一些扩展:

问题d. 求输入整数的逆序整数。

问题e. 从键盘上输入两个不同的整数,求这两个整数范围内的所有回文数及其个数。

问题d的思路是通过执行一个while循环以及整数的乘法运算(*)和加法运算(+)来求得输入整数的逆序整数的。问题e是问题d的进一步扩展。上述问题中融合进了抽象、分解、迭代、再组合等计算思维方法。

(3)讲解编程例题时注重采用多种方法来解决同一问题。例如,已知不同存期的银行利息率,从键盘上输入本金和存期,求存期到后的本息和。此编程题的关键是由存款期限得到对应的银行利息率,利息率既可采用执行多分支if语句得到,也可采用执行switch-case-default语句得到,还可采用执行if语句嵌套而得到。

再如,采用for循环方法求1~100的累加和共有9种方法,这里仅给出9种方法的for循环语句,其中方法1是使用for循环最常用的方法。

方法1.

int i, s=0; for(i=1;i<=100;i++) s+=i;

随着经济的发展,人们生活的水平逐步提高,肥胖及三高的人数日益增多,癌症患者低龄化的趋势明显,但是人们的体育意识在一定程度上没有跟上时代发展的需要。提高全民素质势在必行,特别要提高学生的身体素质。每周上一两节体育课,课时少不能充分锻炼学生的身体素质,不能充分培养学生积极参与体育活动的意识,因此课外体育辅导是改善体育教学现状的有效手段。

方法2.

int i, s; for(i=1, s=0;i<=100;i++,s+=i);

方法3.

int i=1, s=0; for( ; i<=100; i++){ s+=i;}

方法4.

int i, s=0; for(i=1; ;i++){ if(i<=100) s+=i; else break;}

方法5.

int i, s=0; for(i=1;i<=100;){ s+=i; i++;}

方法6.

int i, s=0; for(i=1; ; ){ if(i<=100) {s+=i; i++;} else break;}

方法7.

int i=1, s=0; for( ; i<=100 ; ){ s+=i; i++;}

方法8.

int i=1, s=0; for( ; ;i++){if(i<=100) s+=i; else break;}

方法9.

int i=1, s=0; for( ; ; ){if(i<=100) {s+=i; i++;} else break;}

(4)期末考试是教学的重要环节,是评判学生C语言学习以及编程能力的重要手段,它对学生平时的学习也能起到引导作用。为了促使学生在编程上多下工夫,目前改革了C语言考试的方法,一是进行了无纸化考试的改革和尝试;二是在期末考试试卷中加大编程题的分值比例,编程题的分值比例已由以前的30%增加到现在的50%,编程题的设置应逐步做到以考核学生的运用C抽象实际系统的能力、系统建模能力和算法设计能力为主。

(5)在网络教学平台上提供一些简单游戏(如俄罗斯方块、推箱子、贪吃蛇等)的C程序源代码,通过在VC开发环境下运行这些游戏程序,可进一步提高对程序设计有兴趣的学生的编程积极性,这些源程序代码还可作为他们进一步的学习和模仿之用。

6 取得的初步成果

近年来,大学计算机基础教学团队老师在我校实施了以计算思维为导向的C语言教学方法并取得了可喜的成绩,主要体现在以下5个方面。

(1)C语言程序设计课程的期末考试成绩提高幅度较大,在编程题分值比例提高的情况下补考率由原来的35% 降低到10%,该课程已经退出补考率最高的前10课程排行榜。

(2) 我校学生参加全国计算机等级考试二级C的通过率得到明显的提高,合格率由前几年的平均值20%提升到目前的36%,优秀率则由以前的1%提高到目前的5%,操作题的得分由过去的不满20分提高到现在的36分左右。

(3)提高了我校学生对C语言程序设计的学习兴趣和热情,学生的编程能力普遍得到提高。

(4)C语言程序设计这门课的学生评教的平均分数在92 分以上,而以前则在90分左右。表明我校学生对该课程的满意度有所提高。

(5)我校学生在国家级大赛的获奖上实现了零的突破。

7 结 语

C语言程序设计课程的教学是应用型本科院校学生计算思维能力培养的重要方面,计算机基础教学团队老师结合我校的实际情况,从激发学生的编程兴趣,打造不同层次需求的学习平台,夯实学生编程的语法基础,提升学生的综合编程能力4个方面系统地探讨了C语言程序设计教学中计算思维能力的培养,并经实践证明达到了良好的效果。虽然取得了一定的成绩,但距离培养学生计算思维能力的教学目标仍然有不少的差距。今后将着手构建一个客观可信的学生编程能力和计算思维技能的评价体系。

猜你喜欢
C语言程序设计编程
医学专业“Python程序设计”课程教学改革总结与思考
编程,是一种态度
元征X-431实测:奔驰发动机编程
编程小能手
互联网+教育背景下的C语言程序设计教学改革探究
基于Visual Studio Code的C语言程序设计实践教学探索
纺织机上诞生的编程
51单片机C语言入门方法
从细节入手,谈PLC程序设计技巧
高职高专院校C语言程序设计教学改革探索