自动化专业“C语言程序设计”教学思考

2013-03-24 09:56吴云洁
电气电子教学学报 2013年6期
关键词:C语言程序设计C语言程序设计

郑 征,吴云洁

(北京航空航天大学自动化科学与电气工程学院,北京100191)

C语言功能丰富、表达能力强,而且使用灵活方便。目前,“C语言程序设计”课程已经成为自动化专业的必修课。然而,如何将C语言程序设计的教学原则和方法有效地融入自动化专业相关背景和问题中,进而对“C语言程序设计”课程教学进行改革是迫切需要研究和实践的。

在自动化专业中开设“C语言程序设计”课程和在计算机专业中开设相比,有以下特点:①学生此前没有学过其它程序语言;②在“C语言程序设计”课程结束之后,后续课程通常不开设“数据结构”和“算法理论”等;③和计算机专业学生相比,本专业学生参加程序设计和编码等实际项目的机会较少。

1 教学工作中遇到的问题

在自动化专业中开设“C语言程序设计”课程,由于教材编写、课程自身特点、教学培养体系和学生知识结构等原因,目前教学工作面临如下诸多问题。

1.1 学生对课程背景的认识问题

很多学生误认为C语言是一种老语言,以后根本用不上。然而,有的学生在学习后发现,在实际环节中对于常用的C++,C#等编程语言还未掌握,对于新的编程环境(例如Visual Studio 2010等)仍然不会使用。学生平时在使用电脑时面对的都是成熟的商用程序,看着教材中及自己在实验中编写的简陋的命令行程序,缺乏成就感。

1.2 课程内容设置问题

(1)部分课程内容脱离实际。C语言教学中语法知识非常多,课本上的实例讲解和上机实验也都是在验证一些语法知识,不能使学生认识C语言的实用性。

(2)对于实际程序编写中一些重要的内容缺乏讲授。例如,较少讲授正确的编程风格和思想。比如:保持代码的可读性(自解释的变量名、缩进、注释和不过分依赖运算优先级等)、模块化思想及代码重用等等。另外,对于编码中最重要的调试过程也仅作一般性介绍。

(3)缺乏对经典的算法和数据结构的介绍,导致学生在了解了基本的语法之后,面对实际问题往往不能取得较好解决方案。

1.3 教材与课件编写问题

现有的“C语言程序设计”教材没有区分不同专业的特点和需求。大多是为计算机专业设计的,导致非计算机专业学生在学习过程中产生很多问题。因为自动化专业中没有设置“数据结构”、“算法设计”和“编译原理”等课程。而目前C语言教材中对于编译和链接等过程没有提及或仅做简单介绍,因此让学生对于程序的产生过程比较模糊。特别是当编程链接过程出错时,学生不知道如何修改程序来解决。

1.4 教学计划安排问题

在非计算机专业中对于“C语言程序设计”计划的学时相对较少,内容多和实验环节要求高等矛盾比较突出。

除此之外,目前的考试更关注于在纸上写代码或者考察语法知识,对于调试、测试以及缺陷检测等实践中更重要的内容缺乏检查,而实际上很难写出可以运行的程序。

2 遵循的原则和采取的措施

2.1 深入剖析课程内容

C语言中的定义和语法比较多,学生难以理解和记忆。因此,教师在备课中要注意由这些定义和语法所构筑的知识体系结构性,在授课过程中随时引导学生关注它们的核心概念和基本构建思路。同时,通过查阅不同版本教材中对同一定义的不同叙述方式,找出一种最能使学生接受的定义方式。对于一些比较难且未来使用较少的知识,例如进制转换、补码表示和指针运算等,建议省略。

2.2 加深对C语言的认识

“C语言程序设计”的教学目的是使学生掌握C语言的基本语法、语句、控制结构以及结构化程序设计的基本思想和方法,使学生认识到算法、良好的程序设计风格以及实践在本课程学习中的重要性,培养学生熟练使用高级语言分析和解决问题的能力。更重要的是通过它作为严谨地运用公理系统进行演绎思维训练与普通数学相平行的另外一种思维方法的训练,这能从根本上提高学生解决问题的能力。

2.3 加强教学平台建设

“C语言程序设计”课程内容抽象,多样化教学方式非常重要。虽然目前针对C语言的教学平台有很多[1-3],但大多局限于教学管理、试题库和讲义库等层面,难以实质上提高教学效果。

国外对于类似计算机语言教学平台的建设颇为有效。美国斯坦福大学有一个基于Java的教学平台,用于讲授“编程方法学”[4]。这个平台里,有一个叫Karel的机器人。学生可以给机器人编写Forward和Right等命令,控制机器人在地图上的行动,整个行动过程由一个窗口显示出来。在地图上,设有各种各样的障碍。在编程过程中,教师带领着学生,用if,for,while等语句,加上基本的移动命令,可以帮助机器人克服障碍到达终点。这样,学生不仅从一个较高的层次展示了编程的魅力,而且还顺便学会了各种分支语句。

我们也计划建立一个类似的教学平台,展露出一些高层的应用程序编程接口(API),在课堂上进行调用,和学生互动解决一些问题。这样一个平台能暂时掩盖底层那些繁琐的细节(如绘制窗口等),关注于编程思想本身。

2.4 培养学生学习主动性

为了培养学生的学习主动性和学习兴趣,很重要的一条是让学生知道所学到的知识怎么应用。因此,教师在课程的讲授过程中应该穿插一些相关知识,例如软件开发的基本过程、用计算机求解实际问题的基本过程、常见的数据结构以及算法的概念和描述方法等。除此之外,要注重让学生掌握结构化程序设计的基本思想和方法,而不需要过多的注重具体的语法。

我们认为在“C语言程序设计”课程的教学过程中,在讲解分析语法的基础上结合本学科应用非常重要的,适当穿插介绍一些知识点在自动化专业中的应用,让学生充分认识到C语言程序设计与自动化科学的密切关系。例如在部分章节的讲述中,通过比较引入对Matlab及其相关语言的介绍。同时,适时地将最新研究成果引入教学过程(例如机载软件自动化调试技术),将授课内容与实际的科研项目紧密联系,既可以使授课内容更加全面。

2.5 采用启发式和多样化教学

“C语言程序设计”课程中有很多定义、语法以及程序片段,对学生而言,很容易产生畏难情绪。因此在讲课时,我们要用启发式教学,要多使用例子来讲解和分析复杂多样的概念和规则,从计算机存储或者编译等角度来解释为何需要这样的语法格式。同时,通过课堂和课后练习让学生渐进地掌握这些概念和规则,领会它们与所学专业的关系。

我们在课堂上,对于抽象的东西应该形象、直观地进行讲解,对于关系复杂的内容应注意其条理性,对于易于混淆的内容宜尽量采用对比法加于区别,作到化难为易。例如,在主流的程序语言中仅需要利用分支语句、循环语句和函数调用再辅以结构体就可以解决大部分问题。因此,这些基本内容应当作为重点来介绍语法规则和设计思想,而对运算符的优先级等细节问题应当尽量缩减课时。

“C语言程序设计”课程内容抽象,在教学过程中,多样化教学方式非常重要。部分授课内容可以编写实际运行的程序,有助于知识的消化和理解。此外,要注意图示化方法在教学过程中的使用。

2.6 重视实践环节

学习“C语言程序设计”的目的是为了让学生遇到实际问题时具有良好的程序设计和编码能力。因此,在C语言程序设计课程的部分章节中,应该由项目引出教学内容,在学习基础理论知识的同时,讲解项目实施过程。

2.7 注意新知识的引入

虽然C,C++和C#三种语言语法基本上是一样的,不过具体的内容差别较大。此外还有很多像Python和Perl等高级的脚本语言,其本质内容和C语言也是一致的,所不同的是语法规则上的细微差异以及语言自身所实现的基本库不同。因此,在授课过程中,我们应该注意介绍这些新的知识及将其和C语言进行比较。此外,还要培养学生养成查找手册和帮助的习惯与能力,从而更好地适应当前编程语言迅速发展的要求。

3 结语

教师要把自动化专业的“C语言程序设计”这一门课教好,就要结合本专业特点不断研究新的教学方法,认真掌握教学规律,并借助于现代化教学手段,提倡启发式教学。我们只要具有扎实的理论功底,并具有对学生高度负责的精神,就一定能够找到较好的方法调动学生的学习积极性,从而达到良好的教学效果.

[1] 卢峰,高春颖.基于网络化教学平台的C语言实践教学[J] ,广州:现代计算机,2011,3:71-73。

[2] 梁志剑.计算机语言类课程网络教学平台的建设[J] .北京:中国电力教育,2009,4:74-75。

[3] 彭金莲.基于WEB的C语言程序设计网络教学平台的实现[J] ,儋州:华南热带农业大学学报,2004,10:56-60。

[4] 斯坦福大学公开课:编程方法学,http://v.163.com/special/sp/programming.html

猜你喜欢
C语言程序设计C语言程序设计
基于Visual Studio Code的C语言程序设计实践教学探索
51单片机C语言入门方法
从细节入手,谈PLC程序设计技巧
基于C语言的计算机软件编程
高职高专院校C语言程序设计教学改革探索
以“学生为中心”的《C语言程序设计》教学设计探究
基于翻转课堂的《C语言程序设计》课程教学系统的实现与研究
浅谈《C语言程序设计》课程的教学改革
《C语言程序设计》课程的教学改革与实践
PLC梯形图程序设计技巧及应用