首页 > 范文大全 > 正文

C语言程序设计课程案例式教学研究及实践*

开篇:润墨网以专业的文秘视角,为您筛选了一篇C语言程序设计课程案例式教学研究及实践*范文,如需获取更多写作素材,在线客服老师一对一协助。欢迎您的阅读与分享!

摘 要: 针对C语言程序设计课程教学提出了案例式教学的可行性方案,并从多角度举例说明了其在教学中的具体应用。该方案对培养和提高学生的编程能力、逻辑思维能力和创新能力能起到积极的作用。

关键词: C语言程序设计; 案例式教学; 计算思维; 能力

中图分类号:G642 文献标志码:A 文章编号:1006-8228(2013)01-55-02

Study and practice of case teaching of C language programming

Xiong Qijun, Ning Bin, Gu Qiong

(College of mathematics & Computer Science Hubei University of Arts and Science, Xiangyang, Hubei 441053, China)

Abstract: A feasible project of case teaching is put forward for C language programming. Its application in teaching is illustrated from various aspects. The result shows that it plays a positive role in improving the students' programming ability, computational thinking ability and creative ability.

Key words: C language programming; case teaching; computational thinking; ability

0 引言

“C语言程序设计”课程是计算机及相关专业学生进入大学所学习的第一门专业基础课程。教学实践证明,该门课程对引领学生进入编程世界、掌握基本概念和原理、产生编程兴趣和爱好、完成从传统学科的思维方式向计算思维方式的转变、培养编程意识、形成编程风格、提高编程能力等,起着决定性的作用。因此,加强对C语言程序设计课程的教学与研究至关重要。

我校自2008年提出“211”人才培养模式以来,对教学的研究与改革如火如荼,秉持理论够用,重在实践的原则,开展教学研究及实践。针对C语言程序设计课程的教学,笔者曾提出了“四期六段教学模式”[1]、“多元教学模式”[2]等,有力地推动着教学的研究和改革。

1 案例教学法基本思想及特点

目前,案例教学被广泛应用于医学、法学和管理学等学科的教学之中。案例教学模式是一种互动式的教学方法,以案例分析为基础,解决问题为主线, 教学内容围绕案例的讨论、分析逐步展开,通过对案例的剖析,激发学生的求知欲,调动学生的积极性,使学生主动地思考,让学生充分讨论并发表各自的见解,教师适时引导和评判,最后推导出结论[3]。案例是实现案例教学的前提和基础,教学案例并不是简单的举例,不仅要求案例所涉及的知识点要丰富,并且要求案例具有针对性、系统性、可实践性和启发性。

由此可见,比起简单的说教,将案例式教学引入程序设计语言的教学之中,可以起到示范、模仿、思考、启发、应用、拓展的作用。

2 案例教学法在C语言教学中的应用

案例教学的一般过程是“提出案例-案例分析-要点讲解-知识点导入-模仿-应用-拓展”。

2.1 通过案例上好第一次课

C语言教材的第一章是C语言概述,主要讲述其发展历史、特点、应用领域、程序结构、上机操作步骤等。在讲授这部分内容时,不需要按部就班,因为计算机语言的发展历史、特点是纯文字的、抽象的、枯燥的,即使演讲得天花乱坠,在现阶段也是不能被学生所理解的,还可能让学生产生厌恶、畏惧的情绪。

第一节课就通过案例直接切入主题:让学生了解计算机解题的步骤、程序的基本组成和框架。

通过简单的算术运算导入计算机如何解题。譬如计算圆的面积。先用口头语言或文字进行描述:先需要给定圆周率、指定半径;然后才是根据固定的计算公式进行计算;最后是显示结果。这种一目了然的计算步骤,既展示了解题的算法,又体现了顺序程序的基本结构,符合人的思维习惯,是容易被理解和接受的,在此基础上,现场敲入代码,添加头文件、主函数,再进行编译和运行。以这个实例为基础,再去认识常量、变量、输入输出函数、主函数、语句等。这样,围绕一个简单的例子,既演示了解题算法、也讲述了程序的基本框架。上好第一节课,尽早将学生引入编程世界、尽早让学生开始模仿编程、尽早让学生建立程序框架的概念是可行的,也是必须的。

2.2 通过案例完成教学内容取舍和组合

以教材和教学内容为基础,对教学内容进行适当的取舍和组合,起到降低难度、分散难点的作用。

⑴ 单纯的语法教学向实用型教学转变。C语言的语法规则繁多且复杂,初学者很难理解、记忆、明晰和掌握。在讲述时可以化繁为简,只讲授最简洁、常用的格式,且嵌入到实际的例子之中,而不是单独去说教。譬如“输入输出的格式控制”,在教学中追求简单和实用,暂时剔除复杂和灵活方面的内容。即化语法教学向实用化教学方向转变。

⑵ 及早引入函数的概念和使用简单的函数。将库函数、自定义函数与数学上的函数进行类比,譬如“求平方根的函数sqrt”,明晰使用函数的原因和目标,再循序渐进地讲述函数的名称、参数和返回值等专业术语。

⑶ 及早引入指针和地址的概念。指针既是C语言的难点,也是其亮点,更是重点,及早建立指针和地址的概念和关系,了解指针最基本的用法,加强练习分散难点[4]。

⑷ 循环结构的程序设计是教学的重点和难点,必须列举大量的案例,花大量的时间进行讲授和练习。在讲授和练习过程中,务必采用手工执行循环体的方式,写下每次执行时循环变量、中间变量的结果,将循环体执行3到5次,循环体的功能自然能清晰明了。在这项技能掌握熟练之后,再讲述单步跟踪调试。学习过程中切忌“只动眼不动手”。攻克了循环结构,特别是多重循环这个难关,后续的函数、数组的教学就简单多了。

2.3 通过案例逐步建立计算思维的思想

求和、乘积,是讲述循环时的常例,求和时一般设置和的初值为0,乘积初值为1。必须将这个基本规律传授给学生,并加以灵活使用。

计算机解题的算法虽然来源于数学,但更是数学知识应用的升华。

例如:如何将一个二进制数字串转化成十进制数。可以这样引入:一个5位十进制整数12048如何用数学式子表示?数学上可以这样写:1*104+2*103+0*102+4*101+8*100,这要进行多少次乘法和加法(禁止使用pow指数函数进行运算);如果写成(((1*10+2)*10+0)*10+4)*10+8,需要进行多少次乘法和加法,谁的效率更高呢?由此再过渡到使用数组实现一个二进制数字串转化成十进制数。

在这个案例中,并没有高深的数学知识,只有思维的转变。然而,形成计算思维是一个长期引导、积累、思索、实践的过程,不能操之过急。

2.4 通过案例建立知识的关联

求最值(最大值、最小值、次大值、次小值)的算法,从讲授选择结构时就可以开始灌输和培养。从2个数、3个数求最值,到数组求最值,到选择排序,都使用了这样的思想——“将左手中握着的最值与右手中的一个个数进行比较、替换”,可见,知识之间存在强烈的内在联系。早早地灌输求最值的思想,为讲授后续算法做铺垫。

2.5 通过案例发现规律拓展应用

在讲述循环结构的程序设计时,通过求1+2+3+…+n的值,可以过渡到求1+3+5+…的值,再过渡到求1-3+5-7+…的值,过渡到求1+(1+2)+(1+2+3)+…的值;从求1+1/2+1/3+…的值,过渡到求1+1/2+2/3+3/5+…的值……。通过举例,让学生学会观察和分析,寻找项与项之间的关系和规律,学会观察、思考、应用,最终达到举一反三的效果。

2.6 通过精选案例收获多重效果

精选案例,注重案例的实用性、趣味性、综合性,能达到立竿见影、事半功倍的教学效果。

譬如:在讲述关系运算、逻辑运算时,列举的例子通常是简单的关系运算或者关系运算的逻辑组合,虽然容易理解,但缺乏趣味性,难以引人入胜。我们可以引入一些推理题,如“谁做了好人好事”、“谁是罪犯”[5]。通过这样的例子,既讲授了基本的概念和原理,又列举了知识的应用领域,极具实用性、趣味性、可引起学生的共鸣,自然能收到良好的教学效果。

3 培养能力综合考核

为了提高学生对程序的编辑能力,必须要求熟练计算机基本操作技术。譬如:在实验课上、在C语言的集成开发环境中,必须强调对Tab、Insert、Home、End等按键的功能和使用,因为它们能加快代码编辑的速度和质量。

为了提高编程能力,必须增加课外学时,勤学苦练,将其与水滴石穿、冰冻三尺非一日之寒、点石成金进行类比,充分说明只有经历大量的程序阅读,编写、调试练习,才能成就文如泉涌、火眼金睛。

为了真正检验学习效果,必须改变只凭一次考试决定该课程成绩的做法。考试的次数要增加、考试形式要多样化,可以是机考、笔试、单元测验、答辩等,便于及时掌握教学效果,检查、督促和改进。

4 结束语

教学实践证明,采用案例教学,将抽象的概念、枯燥的语法、繁多的算法,转化为一个个具体生动的实例,再加上学生多阅读、多思考、多练习,就能够很好地解决素质教学中倡导的“3W1H问题(what,where,why,how)”,使C语言程序设计课程达到良好的教学效果,从而使后续的程序设计类课程教学游刃有余。

参考文献:

[1] 熊启军,袁磊,谷琼.基于“四期六段”模式的C语言教学[J].现代计算机,2012.5:40-42

[2] 曹文平,熊启军.多元教学模式在C语言教学中的探索与实践[J].教育理论与教学研究,2012.6:31-32

[3] 丁海燕,袁国武,周小兵,白孟尧.高级语言程序设计案例式教学模式的探讨[J].计算机教育,2011.4:65

[4] 袁磊,李勇.程序设计基础(C语言)[M].科学出版社,2008.

[5] 李文虎,徐明星编著.程序设计基础(第3版)[M].清华大学出版社,2010.