基于Arduino的C语言课程教学改革的探讨

2016-10-27 15:28徐进强
人间 2016年25期
关键词:C语言编程函数

徐进强

(威海职业学院,山东 威海 264210)

基于Arduino的C语言课程教学改革的探讨

徐进强

(威海职业学院,山东 威海 264210)

本文论述了目前高职C语言课程教学存在的主要问题,针对C语言教学现状,尝试在教学过程中结合所教专业的实际应用引入Arduino项目平台。实践证明,基于Arduino平台的C语言教学,可以做到理论联系实际,贴近具体专业的应用,大大激发学生的学习兴趣和积极性。

C语言;Arduino平台;教学改革

C语言功能强大,编程灵活,表达能力强,是程序设计中的重要工具之一。随着软件编程技术在各行各业的应用越来越广泛,C语言课程已成为高职理工类专业普遍开设的一门基础课程。应用电子技术、物联网、通信及机械类等众多专业均安排了课时不等的C语言教学内容。但在长期的教学实践中发现,C语言是一门难教难学的科目,特别在高职院校中的教学效果并不理想。C语言课程的教学内容、教学模式与方法亟需改革。

一、高职C语言课程教学主要存在的问题

(一)高职学生基础薄弱,学习积极性不高。

高职院校生源种类多,参差不齐。有些来自春季高考,有些是夏季高考,有些是单独招生,还有些是来自中职合作院校。总的来说,大部分学生的文化课基础普遍较差,数学逻辑思维和英语基础特别薄弱,而这些方面恰恰是软件编程人员应具备的重要专业素质。另外,高职学生多数缺乏坚持不懈、积极思考的精神。面对困难,特别是面对满屏幕的英文程序代码,如果教师不积极引导,不充分激发学生的学习兴趣,容易造成知难而退的局面。

(二)教材沿用传统本科模式,教学内容脱离实际应用。

传统的C语言程序设计教材主要围绕语言自身的语法展开,教材的体系结构、内容安排和例题习题配置上,过于数学化,理解起来有一定难度。传统教材普遍采用单向灌输的方式,忽略了与学生的沟通与交流,忽略了给予学生自主学习与探究的机会,忽视了对学生创新能力和综合素质的培养。即便是所谓的立体化教材建设,也无非强化了多媒体技术应用,扩充了网络资源,在形式上显得丰富多彩,仍然存在诸多缺憾。

(三)教师能力欠缺,知识面与专业面不够宽阔。

教师在教学过程中,由于知识面和专业面的限制,一味的重视理论知识的讲解,局限在C语言本身,脱离本专业的应用,使得课程学习抽象而晦涩,学生缺乏贴合自身专业的实际操作的经历。高职院校的师资应该是多面手,能够执教本专业的多门课程,熟悉相近专业的核心技术,了解相关专业的技术发展,能够跟随时代潮流,将新技术、新方法、新平台运用到传统课程教学中。

二、基于Arduino平台的C语言课程教学

(一)Arduino平台简介。

Arduino是一个可以用于C语言课程教学的效果很好的项目平台。它源自国际上一个开放源代码的硬件平台,包括一块具备简单I/O功能的电路板以及一套程序开发环境软件。Arduino可以用来开发交互产品,比如它可以读取大量的开关和传感器信号,并且可以控制电灯、电机和其他各式各样的物理设备;Arduino也可以开发出与PC相连的周边装置,能在运行时与PC上的软件进行通信。

Arduino设计之初的目的是希望让人们能够很快地学习电子和传感器的基础知识,并应用到他们的设计当中。设计中所要表现的想法和创意才是最主要的,至于核心控制器如何工作,硬件的电路是如何构成的,用户并不需要考虑。Arduino的出现,大大降低了互动设计的门槛,没有学过电子知识的人也能够使用它制作出各种创意的作品,如巡线机器人、超声波倒车雷达、门禁控制系统等。由于大多数理工类专业的学生都具备一些物理、电工电子、计算机等方面的基础知识,使得Arduino平台能够在各专业教学中得到广泛接受。

(二)Arduino编程语言。

Arduino语言是建立在C/C++基础上的,其实也就是基础的C语言,Arduino语言只不过把相关的一些参数设置都函数化,用户不必去了解其底层,即便是不了解单片机(微控制器)的学生也能轻松上手。

实际工作当中所用到的很多应用编程软件都是以C/C++为基础,进行了一定的改进和优化。因此作为学校教师,教学过程中不必拘泥于标准C、经典C的框架束缚,当然在教学当中,提示学生注意各类编程工具有些许差别还是有必要的。

在Arduino中,主函数main在内部已经定义,使用者只需要完成和loop()函数就能完成Arduino程序的编写,这两个函数分别负责Arduino程序的初始化部分和执行部分。setup()函数主要用于设置一些引脚的输出/输入模式、初始化串口等,该函数只在上电或重启时执行一次;loop()函数用于执行程序,它是一个死循环,其中的代码将被循环执行,用于完成程序的功能,如读入引脚状态、设置引脚状态等。

(三)教学方法。

C语言教学,特别是针对高职学生,应偏重编程思想与逻辑思维的训练,强化各类函数的灵活调用,以与本专业相关的实际应用项目为导向,施以具体任务为驱动,通过大量生动有趣的编程训练解决实际问题,提升学生的技能水平和应用能力。

Arduino开发环境下提供了大量的基础函数和扩展函数,这些函数涉及I/O控制、时间函数、数学函数、三角函数等,使用者可以很方便地对板上的硬件资源进行控制。同时,在Arduino开发环境下还提供了丰富的示例程序来使用这些函数。教师可以基于Arduino平台当堂演示各种程序的运行效果,讲解示例程序的编写架构和技巧,鼓励学生参照示例程序进行改造,实现其他自定义的控制功能。

C语言教学内容无非主要包括C语言的标识符与关键字、三大程序结构(顺序、分支与循环)、函数、数组、指针、结构体等。在传统的教学模式下,这些内容需要按部就班的学习。在Arduino平台下不必拘泥于以上教学顺序,可以将内容打碎,糅合在项目和任务中教授,在课程最后再形成完整的知识体系。

引入Arduino平台教学模式,并不意味着彻底摈弃传统的C语言教学模式。相反,如果教师认为某些知识点难以在Arduino平台的教学项目中讲述,仍可以沿用以往的讲授方式,比如结构体,文件操作等。二者并不矛盾,应该是相互补充的关系。究竟哪种教学模式占主导地位,笔者认为与所教专业有很大关系。建议计算机与软件开发类专业将Arduino平台作为期末的集中实训平台,占次要地位,而其它专业可以将其作为主要学习平台,充分发挥它的专业结合能力。

(四)教学项目。

Arduino平台下可以完成的项目非常之多,如LED彩灯控制,电机驱动,LCD显示,机器人运动,RFID读卡器,无线模块应用等。不同专业可以选取2、3个合适的项目学习。如物联网专业可以选择RFID应用、各类传感器的应用;机电类专业选择电机驱动、机器人项目;通信专业选择无线模块的应用,如蓝牙技术等;计算机与软件类专业可以选择LCD和矩阵按键相关的编程项目,如小型计算器的编程应用等。

可能有教师会有所顾忌,担心以上编程项目涉及到比较深的专业知识,大一的学生会难以接受。但由于Arduino平台已经将涉及的硬件控制程序模块化,用户只需调用库函数即可。教师只需告诉学生相关库函数的用途,简单讲解硬件系统的原理。实践证明,大一学生完全可以接受并理解,使得该专业的初学者在不太懂硬件技术的前提下也能够对硬件进行控制,从而实现看似很专业的功能。对专业学习非常感兴趣的学生,在Arduino平台的引导下,甚至能够在课下提前自学很多专业课程,激发自主学习积极性。

虽然学生不必花很多时间研究Arduino平台硬件,但对于教师来说,要想充分发挥平台的教学功能,解答学生练习中可能遇到的各种软硬件的问题,教师必须熟练掌握Arduino平台及涉及到的与本专业相关的技术。例如,对于物联网专业的C语言教师,不仅要求具备扎实的C语言编程技能,还应熟悉RFID技术、传感器技术等,能够基于Arduino平台把这些深奥的技术简化,引导学生在仅仅了解专业技术的基础上就能够编写要求的C语言程序代码。

由于以上项目都是实实在在的技术应用,与本专业应用结合紧密,项目任务本身活泼有趣,如LED跑马灯项目,机器人行走项目,大大激发了学生的学习热情和积极性。传统的C语言教学过程自始至终都是面对电脑编写程序,程序运行结果索然无味,无非是屏幕打印些简单图形,输出运算结果,很难吸引年轻学生的注意力。两种教学方式相比较,孰优孰劣,一目了然。

三、结束语

教学实践证明,高职C语言课程教学不能再走千篇一律式的传统教学模式,引入Arduino平台,是一种很好的教学改革的模式。各专业任教教师应针对不同专业,以“必需够用”为原则,依托Arduino平台,选择贴近本专业实际应用的教学案例,重构教学体系,激发学生的学习兴趣和积极性。

[1]程晨.Arduino开发实战指南[M].北京:机械工业出版社,2012.

[2][美]Michael McRobers.Arduino从基础到实践[M]. 北京:电子工业出版社,2013.

[3]刘永平,郭小波.C语言教学改革探讨[J].时代教育, 2016,(11):253-255.

G718

A

1671-864X(2016)09-0166-02

徐进强(1974—),男,山东青岛人,硕士,副教授,专业带头人,主要研究方向为高职教育,嵌入式技术开发。

猜你喜欢
C语言编程函数
二次函数
第3讲 “函数”复习精讲
编程,是一种态度
元征X-431实测:奔驰发动机编程
二次函数
函数备考精讲
编程小能手
基于Visual Studio Code的C语言程序设计实践教学探索
纺织机上诞生的编程
基于C语言的计算机软件编程