面向嵌入式软件开发的C语言程序设计课程改革探索

2014-06-23 05:25杨波沈承舒
计算机教育 2014年5期
关键词:C语言课程改革

杨波 沈承舒

摘要:从嵌入式系统软件开发的角度出发,探讨在嵌入式系统开发方向上C语言程序设计课程的改进思路,首先阐述嵌入式软件开发对C语言的知识和技能需求,指出现有C语言课程针对嵌入式系统开发存在的不足;在此基础上,从课程设置、教学内容划分、实验设置及教学方法与手段等方面讨论C语言程序设计课程的改革思路。

关键词:嵌入式软件开发;C语言;课程改革

0.引言

C语言程序设计作为程序设计语言的入门基础课程,是各高校理工科专业中计算机程序设计类课程的普遍选择。作为一门理工科通识课程,其目的在于使学生通过对C语言中各种语言成分的学习,初步认识计算机程序设计及进行程序设计的过程,掌握基本的程序设计思想与方法。作为通识类课程,目前各院校通常将该门课程的教学安排在一年级,每周3-4学时(含实验),讲授内容主要包含C语言的数据类型与表达式、程序结构、函数、指针、链表、文件等。在教学实践中,我们发现,由于学时限制或学生接受程度等原因,常常需要对部分教学内容(如多级指针、文件操作、位操作等)进行削减,无形中降低了课程内容的深度与广度。作为通识类课程,这样的削减影响不太大。而对于信息类专业(计算机、电子、自动化等)而言,仅掌握通识教育中所讲授的部分是远远不够的。

嵌入式系统开发是信息类专业的一个主要发展方向。进入21世纪以来,融合先进的计算机技术、半导体技术、电子技术及各行业领域具体应用的嵌入式系统,已在工业控制、交通管理、信息家电、智能家居、环境监测、电子商务、机器人等领域得到了广泛应用。

一般说来,嵌入式系统是指以应用为中心,以计算机技术为基础,软硬件可剪裁,适用于心用领域,对功能、可靠性、成本、体积、功耗等有严格要求的专用计算机系统。由于在成本、功耗、体积等方面的限制,对嵌入式系统中的软件开发提出了更高的要求。嵌入式软件开发是在特定的硬件平台上进行,需要使用具有较强硬件操作能力的编程语言。由于C语言是具备了这一特质的高级语言,成为嵌入式系统开发的最佳选择。

调查显示,在信息类专业中,电子类本科专业教学计划与嵌入式系统教学要求相脱节,电子类本科学生的软件基础也较弱。在这样的背景下,对C语言程序设计课程进行相应改革,以适应嵌入式系统开发人才培养的需要是十分必要的。

1.嵌入式软件开发对C语言的需求

在适用于嵌入式系统开发的3类主要语言中,C语言占有超过70%的份额。开发嵌入式软件,除掌握C语言的基础知识和基本技能外,主要还存在以下几方面的要求:

1)指针。

指针作为C语言的主要特点,其使用十分灵活,因而也很难完全掌握。它可用于指向不同类型的普通变量、数组、字符串,甚至函数。在嵌入式软件开发中对各类不同指针(数组指针、指针数组、指向结构体的指针、多级指针)的使用十分普遍。因此,指针相关内容的教学必须足够深入。

2)位操作。

C语言有别于其他高级语言的一个特点是可直接对硬件进行操作。指针和位操作是这一特点得以实现的工具。通过6种位操作符,可直接对内存、寄存器或I/O端口的字节进行测试、置换或移位处理。熟练掌握位操作符的使用,是进行嵌入式软件开发必不可少的重要基础。在一些国内高校普遍选用的经典C语言教材(如文献[4])中,由于定位于普适教育,并未包含位操作部分的内容。

3)文件读写。

嵌入式系统中“一切皆文件”,系统的运行以文件读/写方式进行操作。理解文件系统的构成、掌握基本的文件操作方法也是进行嵌入式软件开发必须掌握的技能。

4)宏定义。

在嵌入式软件中使用宏定义,不仅可防止代码出错,提高可移植性、可读性,而且是产生内嵌代码的唯一方法,可用于替代函数调用,从而达到嵌入式系统性能要求。

以上4个方面的内容,在通识型的C语言课程中,由于课时和学生程度等原因,都不能进行针对性的特别训练。学生在进入嵌入式系统开发阶段后,显然会成为程序设计知识方面的短板。

2.课程改革思路

基于上一节的认识,我们对C语言程序设计课程的教学提出了下面的调整思路。

2.1课程设置

作为通识课程的C语言程序设计通常安排在一年级或二年级上学期完成。信息类专业的学生在大学三年级开始进入嵌入式系统开发相关课程时,不可避免地对已学过的C语言的知识会有一定程度的遗忘。

针对嵌入式系统开发的要求,考虑将C语言程序设计课程划分为2个阶段。第1阶段为c语言程序设计基础,每周3学时,可在大学一年级下学期或二年级上学期开设;第2阶段为嵌入式系统C语言程序设计,每周2学时,作为嵌入式系统开发方向的选修课,可在大学三年级上与其他嵌入式系统相关课程,如嵌入式系统、嵌入式操作系统一起开设。这样设置一方面满足了在低年级完成程序设计类通识课程的要求,使学生不必过早接触C语言中较为深入、复杂的部分;另一方面,通过将与嵌入式软件开发密切相关的知识适当推后,确保了嵌入式系统开发各门课程问的知识联系。

2.2教学内容的划分

由于将课程划分为基础部分和面向嵌入式系统开发的提高部分,则可将C语言的一般基础(基本语句、控制结构、数组、函数、指针、结构体)划人C语言程序设计基础课程中,通过这部分的学习使学生掌握C语言的基本理论知识并具备基本的编程技能,达到程序设计类课程的通识教育水平。

对于与嵌入式开发密切相关的知识,将在嵌入式系统C语言程序设计课程中讲授,主要包括:宏定义、位操作、文件操作和复杂指针运用。这部分内容的教学可围绕嵌入式软件开发实例展开,深入讲解各知识点的应用。通过嵌入式系统C语言程序设计课程的学习,学生应更深入地理解和领会C语言的精华思想,同时具备基于嵌入式平台进行软件开发的能力。

2.3实验内容endprint

任何程序设计语言的学习都离不开大量的实践,实验是学习C语言的重要组成部分。根据前面对课程的划分,C语言程序设计基础课程中可开设的实验项目如表1所示。

实验1在学习了C语言的数据类型、运算符、表达式和输入/输出之后进行,目的在于使学生熟悉C语言的编译环境,逐步认识C语言语句的基本构成。实验2涵盖了程序的3种基本结构,便于学生统一认识关系、逻辑运算和程序结构。实验3-6分别对应于数组、函数、指针和结构体各章节的内容,重点掌握这些语言成分的定义及使用方法。实验7将综合运用本课程中的知识,完成一个较小的、具备一定功能的小型软件的开发。

嵌入式系统C语言程序设计课程的实验内容则围绕一个嵌入式软件开发实例展开,实例由任课教师选定。根据所选实例,实验内容可包含以下项目(如表2所示)。

实验1的目的在于使学生熟悉嵌入式系统的软件开发环境,主要介绍嵌入式Linux下的c语言编译工具。实验2-5则根据所选实例,选取特定的模块有针对性地进行文件操作、宏定义、位运算及复杂指针运用方面的练习。

2.4教学方法与手段的调整

毋庸讳言,由于种种因素的影响,当前各高校中普遍存在学风怠惰现象,相当一部分学生学习积极性较低下。如何提升学生对所学课程的兴趣,是每一名教师都要面对的问题。在多年的C语言程序设计课程教学过程中,我们接到学生的反馈意见最多的是“上课听得懂,下来不会自己编程”。究其原因,大概不外乎两种:一是学生尽管在课堂上听了课,课下并未及时回顾整理并主动思考;二是在理论课堂上一讲到底,学生要等到实验课时才真正动手体会讲过的知识,往往不能及时动手练习,进而影响消化吸收。针对第一种情况,我们采取了每一堂课以提问开始的方式,提问内容主要是对之前所学内容的回顾和脉络梳理,同时还留出了一定的课堂练习时间,这样能在一定程度上起到督促学生课下及时复习的作用,也便于教师及时了解学生的知识掌握情况。而对于第二种原因,可尝试采取将理论课堂搬至机房的方式,在完成一个知识点的讲授后布置即时练习,让学生能及时体验和理解。但当机房容量有限而班级较大时,并不适用,这样的情形如何处理?需要我们进一步思考。

3.结语

嵌入式产品已遍及我们日常工作和生活中的各个方面,巨大的市场空间将吸引更多的专业人才投身于嵌入式系统开发的行业中。根据《2012-2013嵌入式工程师调查报告》,嵌入式企业的发展速度与专业人才的成长速度仍有一定差距,行业内专业研发工程师仍处于供不应求的状态。在毕业生就业压力日益增大的今天,高校的计算机、电子、自动化等相关专业的教师都在积极思考相应的课程和人才培养模式改革嵌入式系统研发工作中,软件开发占80%以上的工作量,需要大量的嵌入式软件开发人才。高校相关专业更应及时调整软件设计类课程的设置,以适应嵌入式开发行业的人才需求。endprint

猜你喜欢
C语言课程改革
“C语言程序设计”课程混合教学探索
基于C语言的计算机软件编程技术探究
中职计算机C语言教学的探讨与研究
中职C语言单片机课堂教学中的趣味性探讨
计算机原理中C语言的应用价值
“双创”形势下高职财务管理课程改革探索
基于创意的对口单招色彩课程改革突破点研究
校企协同实施高职专业课程改革的实践研究
C语言教学网站设计与实现