融入计算思维的C语言实验教学设计

2015-04-27 01:12
实验室研究与探索 2015年10期
关键词:素数C语言程序设计

刘 光 蓉

(武汉轻工大学 数学与计算机学院,湖北 武汉 430023)



融入计算思维的C语言实验教学设计

刘 光 蓉

(武汉轻工大学 数学与计算机学院,湖北 武汉 430023)

C语言是计算机基础教学中的一门重要课程,在学生综合素质与创新能力的培养方面发挥着重要作用。计算思维具有抽象化和自动化、问题约简、关注点分离和优化的特征。C语言实验充分体现了计算思维的特征。本文阐述了融入计算思维特征的C语言教学内容的组织,通过具体实例阐述了融入计算思维特征的实验教学方法实施过程。在C语言上机实践教学中,通过计算思维方法的模仿与综合运用,计算思维方法能够更深层次地融人到C程序设计实验教学中。

计算思维; C语言; 实验教学设计

0 引 言

计算思维的含义是运用计算机科学的基础概念进行问题求解、系统设计以及人类行为理解等涵盖计算机科学之广度的一系列思维活动,其本质内容体现了抽象、约简、规划、关注点分离、递归、优化、分解等思维特征[1]。

“C程序设计”是一门非常重要的计算机基础课程[2],涉及的知识点繁多,不仅包含程序设计的基本知识,还包含和体现了计算思维的基础概念、思维模式和解决问题的方法。在C程序设计教学中融入计算思维,利用计算思维的特征梳理和整合繁杂的知识点,帮助学生清晰地理解和掌握C程序设计编程方法,锻炼学生的计算思维和养成用计算思维的方法思考解决问题的习惯[2-4]。

1 计算思维在C语言实验中的体现

C程序设计实验教学中以计算思维能力培养为核心任务,以讲授程序设计方法为主要内容,加强上机实践,使学生通过实践确实感受和领悟计算机问题求解的基本方法和思维模式,为提高学生综合素质,培养学生创新能力奠定坚实的基础[5]。

C程序设计是一门实践性很强的学科,C语言编程能力必须依靠一个又一个上机实验,不断地“思考一编程一调试一运行一反思”[6]而逐步提高。C语言是高度过程化的计算机编程语言,结构非常严谨,需要格外注意其语法和语义的准确性和完整性,需要在大量的上机实践中培养编程者的这些良好习惯和注意度[7]。我们日常问题处理的一般过程:先做什么,再做什么;如果发生了什么,就做什么;必须要做了什么,才能再去做什么,与C程序的执行过程完全类似。计算思维将问题引入、归纳、分解、进而求解的过程与C语言自顶向下、逐步求精、模块化的设计思路[8]是类似的,因此,在C语言实验中融入计算思维的思想,可以培养学生发现问题、分析问题、解决问题的能力,可以培养学生计算思维的能力[9]。

2 C语言教学内容组织

C语言涉及的概念规则很多,使用形式灵活,在C程序设计课程教学过程中,要落实两个方面的内容:①C语言本身的语法与程序结构;②通过该门课程的学习掌握一定的算法与程序的编程实现。该门课程中的内容都是程序设计的基本内容,但随着各专业人才培养方案的修改,作为公共基础课程的C语言教学课时被压缩,很多任课教师未能对教学内容进行整合优化,上课时仍然按部就班讲解,忽视了学生计算思维的培养,而计算思维恰恰又是对问题抽象的基础。

计算思维通过约简、转化等方法,把一个看来困难的问题重新阐释成一个怎样解决的方法问题。在此方法的指导下,以“理论够用,突出实践”为原则,以谭浩强编著,清华大学出版社出版的《C程序设计(第3版)》教材为基础,按照教学步骤,将《C程序设计》知识对象进行粒度划分,归纳整理基本覆盖整个《C程序设计》教学内容逻辑框架如图1所示。

图1 《C程序设计》教学内容逻辑框架

3 C语言实验教学方法实施

“C程序设计”课程知识体系完整,具有很强的理论性、实用性和创新性。将计算思维的思维特征方法融入到具体的教学过程中,一方面可以简化学习内容,降低学习难度,激发学生的学习兴趣;另一方面,可以培养学生的计算思维能力,提高学生的计算机综合应用能力和创新能力[10]。

3.1 抽象化和自动化

抽象化和自动化是计算思维的重要本质[11]。抽象化是实现问题的精确表达和建模的方法[12],“C程序设计”课程中的很多概念和方法都体现了抽象化的思想。例如,C语言数据类型就是对现实世界中的信息进行抽象、表示和处理的方法。在进行程序设计时,首先,实现从现实世界到信息世界的转化。分析题目,对需要处理的问题进行认识抽象,得到需要处理的数据的概念模型。然后,实现从信息世界到机器世界的映射。将需要处理的数据的概念模型转换为C语言语法规则支持的数据结构类型。最后,利用C语言编写程序,由计算机自动实现数据处理功能,见图2。

图2 程序设计中的抽象化与自动化

在教学过程中,教师通过实例进行抽象化和自动化方法的介绍,引导学生逐渐领会抽象化和自动化的思想方法,并在解决问题的过程中提升计算思维能力。

3.2 问题约简

计算思维是一种选择合适的方式陈述一个问题,或对一个问题的相关方面建模使其易于处理的思维方法,这就是对问题的约简[13]。“C程序设计”课程涉及的知识点很多,如何在有限的教学课时里实现总体教学目标是一个难题。

采用案例教学法,将计算思维的问题约简方法融人课堂教学中,以理解和应用为目标,结合实例讲授C语言的基本知识,避免过于枯燥的纯理论介绍。例如,学习C语言循环结构的实现形式时,从循环条件、循环体、循环控制变量、循环的执行过程等方面进行讲解。教学过程中,对循环的实现形式理论知识只做一些简要讲解,对于循环结构的编程,则通过具体例子对循环实现形式加以分析和应用。通过对复杂问题的约简,学生能够清晰地了解C语言的基本语法知识和一些常用算法,能够比较轻松地完成C程序简单编程。

3.3 关注点分离和优化

计算思维的关注点分离[14]方法就是,先将复杂问题做合理的分解,再分别仔细研究问题的不同侧面(关注点),最后综合各方面的结果,合成整体的解决方案[15]。在教学过程中,指导学生将任何一个程序设计问题分为7个阶段:分析题目确定所需数据结构、给参与运算的变量赋初值、利用三种基本结构解决问题、输出结果、绘制流程图、编写程序、上机调试。每个阶段的任务相互独立,具有明确的完成标志,前一个阶段完成的任务是后一个阶段的前提和基础,后一阶段的任务是前一阶段任务的深入,相邻阶段互相联系相互承接,共同完成整个程序设计任务。

例如在编写判断一个数是否是素数的程序时,按如下步骤实现:

步骤1:分析题目,确定两个整型变量m与i,m是要判断的数,作为被除数,i是除数。

步骤2:给参与运算的变量赋初值。从键盘输入m的值,scanf(“%d”,&m);素数是除了能被1和它本身整除外,不能被其他任何数整除,因此,确定i的初值为2。

步骤3:利用三种基本结构解决问题,这是解决问题的关键所在。素数的判断就是要用2~m-1中的每一个数去除m,若每一个都不能被整除则表示m是素数,否则只要有一个能整除,则m都不是素数,根据分析,需要利用循环结构解决问题。

步骤4:输出结果。根据第(3)步的分析,如果2~m-1中的每一个数都不能整除m,循环结束后i>=m,输出m是素数,如果m不是素数,i

步骤5:绘制N-S流程图如图3所示。

图3 素数判断N-S流程图

步骤6:根据N-S流程图编写程序

#include

void main()

{ int m,i; scanf(“%d”,&m); for(i=2;i=m) printf(“m是素数”); else printf(“m不是素数”);

}

步骤7:为验证程序的正确与否,上机调试是一个非常重要的环节。

上述实例讲解,可以帮助学生在掌握C语言基本知识的同时,掌握程序设计的方法与步骤,避免学生在学习过程中感觉知识点的零散繁杂。使学生能够将所学的知识进行综合应用,联系实际问题的综合分析、设计和实现。

计算思维的优化特征也可以很好地融人到了C语言程序设计过程中。任何一个问题可能都有多种算法,我们在设计算法时不仅要能实现问题的解决,还要考虑算法的时间复杂度和空间复杂度,寻找最优算法。例如,在上述素数判断方法中,利用循环结构解决问题部分,循环次数是m-2次,其实可以简化,m不必被2~m-1之间的每一个整数去除,只需被2~根号m之间的每个数去除就可以了。因此可以对程序进行如下修改以减少循环次数:

#include

#include

void main()

{ int m,i; scanf(“%d”,&m); for(i=2;i<(int) sqrt(m);i++) if(m%i==0) break; if(i>=(int)sqrt(m)) printf(“m是素数”); else printf(“m不是素数”);

}

4 结 语

“C程序设计”课程是一门实践性非常强的学科,实践教学重点是巩固理论知识的掌握,锻炼学生对计算思维方法的运用,提高解决实际问题的能力。实践环节采用循序渐进、由浅人深的方法,将实验分为验证型和设计型综合实验。验证型实验要求学生模拟教师解决问题的方法完成实验内容,是计算思维方法的模仿。设计型综合实验运用多种计算思维方法分析问题和解决问题,是计算思维方法的综合运用。设计型实验要求同学们在掌握了一定的实验技能和方法的基础上,运用所学C语言基本知识,自行提出问题,分析问题,解决问题,通过算法分析、观察实验结果、对程序运行结果进行分析处理等环节最终得出正确的研究结论。计算思维方法的综合运用,锻炼了学生综合运用所学知识的能力,更进一步地培养了学生发现问题、勇于探索、创新的能力,是计算思维方法更深层次的融人。

[1] Jeannette M Wing. Computational Thinking[J]. Communications of ACM,2006,49(3):33-35.

[2] 教育部高等学校计算机基础课程教学指导委员会. 高等学校计算机基础教学发展战略研究报告暨计算机基础课程教学基本要求[M]. 北京:高等教育出版社,2009.

[3] 何钦铭,陆汉权,冯博琴. 计算机基础教学的核心任务是计算思维能力的培养[J]. 中国大学教学,2010(9):5-9.

[4] 陈国良.计算思维与大学计算机基础教育[C]//济南:第六届大学计算机课程报告论坛,2O10.

[5] 刘光蓉. C程序设计实验教学的理实一体化教学模式[J]. 实验室研究与探索,2013,32(10):350-352.

[6] 刘远军.培养计算思维的C语言实验方案设计[J]. 软件导刊,2014,13(1):189-190.

[7] 刘光蓉,汪 靖,陆登波.C程序设计实验与实践教程[M].清华大学出版社,2011.

[8] 谭浩强.C程序设计(第四版)[M].清华大学出版社,2010.

[9] 刘光蓉.以计算思维能力培养为导向的C程序设计实验教学[J]. 实验技术与管理,2013,30(1):154-156,191.

[10] 黄雅萍,刘晓强,施霞萍,等.融入计算思维的“信息系统与数据库技术”教学模式[J]. 纺织服装教育,2014,29(1):69-73,76.

[11] 王文军,邓景顺,王 静.基于计算思维的数据库课程体系教学模式研究[J].临沂大学学报,2012,34(6):66-69.

[12] 董荣胜.计算思维与计算机导论[J].计算机科学,2009,36(4):50-52.

[13] 牟 琴,谭 良.计算思维的研究及其进展[J].计算机科学,2011,38(3):10-15.

[14] Parnas D L.On the criteria to be used in decomposing systems into modules[J].Comm.ACM,1972,15(12):1053-1058.

[15] 何明听.关注点分离在计算思维和软件工程中的方法论意义[J].计算机科学,2009,36(4):60-63.

Experimental Teaching Design of C Language Integrated by Computational Thinking

LIUGuang-rong

(School of Mathematics and Computer Science, Wuhan Polytechnic University, Wuhan 430023, China)

Training computational thinking ability is a core task of computer basic teaching. C language is an important course in computer based teaching. It plays an important role for the cultivation of students’ comprehensive quality and innovation capability. Abstraction and automation, problem reduction, separation of concerns and optimization are main features of computational thinking. The C language experiment fully reflects the characteristics of computational thinking. This paper describes C language teaching content organization which integrates of computational thinking characteristic, and also describes implementation of the experimental teaching method within the characteristics of computational thinking by specific examples. In the C language experiment teaching, because of simulating and using computational thinking method, computational thinking method can melt deeper into the C programming experiment teaching.

computational thinking; C language; experimental teaching design

2015-01-05

2011年湖北省高等学校省级教学研究项目(2011_32);湖北省教育科学“十二五”规划2014年度重点课题(2014A030);教育部2014年与百度公司校企合作专业综合改革项目(2014-B013);全国高等院校计算机基础教育研究会2014年课题(201416);2014年校级重点实践教学改革研究及试点项目(XSZ2014007)

刘光蓉(1971-),女,湖北武汉人,硕士,副教授,研究方向主要是图像处理及计算机基础教学研究。

Tel.:18986286198;E-mail:lgr981009@126.com

TP 312.1-4;G 642

A

1006-7167(2015)10-0081-03

猜你喜欢
素数C语言程序设计
两个素数平方、四个素数立方和2的整数幂
有关殆素数的二元丢番图不等式
基于Visual Studio Code的C语言程序设计实践教学探索
关于两个素数和一个素数κ次幂的丢番图不等式
关于素数简化剩余系构造的几个问题
从细节入手,谈PLC程序设计技巧
基于C语言的计算机软件编程
高职高专院校C语言程序设计教学改革探索
PLC梯形图程序设计技巧及应用
论子函数在C语言数据格式输出中的应用