基于硬件原型的C语言课程教学案例设计

2018-01-31 07:49张婧婧
计算机教育 2018年1期
关键词:初学者C语言程序设计

张婧婧

(新疆农业大学 计算机与信息工程学院,新疆 乌鲁木齐 830052)

0 引 言

C 语言是一门通用、面向过程的计算机程序设计语言。Proteus软件是一款蕴含巨大的教学资源,用于模拟各类电路、微控系统、单片机及嵌入式系统设计的EDA仿真平台。在Proteus软件中演绎C语言教学专题无疑是程序设计类课程的一种全新尝试。架构于硬件仿真平台之上的语言类课程教学,旨在为学习者还原课程的真实应用情景,为教学者瞄准学以致用的教学目标[1]。

1 Proteus软件适于C语言案例教学

首先,作为教学助手,Proteus软件的教学应用前景广阔,支持C语言和汇编语言的编程[2]。就微程序控制技术而言,基于C语言的程序设计更受青睐,因此用于情景式教学的原型案例资源丰富,易于为C语言教学设计者提供各类专题及教学素材。

其次,应用Proteus仿真平台开展C语言程序设计致力于丰富初学者的编程体验。例如,电路的仿真过程通常融入功能模块设计,严密的逻辑推理能够强化初学者对C语言各类程序结构(分支、循环、递归等)的理解和运用;定义仿真电路的输入、输出部分,如按键、指示灯的设置,数码管、传感器的应用等能够大幅提升初学者对各类变量、数组、指针、作用域规则等概念的认识和把握;仿真电路追求硬件功能的完整性,往往包含输入、存储、控制、显示等模块,在此基础上的编程能够加深初学者对C程序完整性设计的理解;在仿真电路的运行过程中,丰富的虚拟资源和形象的仿真效果能够让编程、调试过程更加直观、生动,且Proteus仿真软件简单易学、容易上手,适于初学者的实践和体验。

最后,仿真模型能够为教学设计者提供生动的教学场景,优化教学资源。以简易交通灯的C语言设计为例,在授课过程中,教学者可以借助仿真电路展现动态的程序设计过程(即红、黄、绿灯的闪烁),如图1所示。其中,凭借程序的隐蔽性和仿真的灵活性,教学互动过程将更具吸引力和趣味性,另外仿真平台还支持C程序运行过程的反复推理和演绎,使学习者自觉融入其情景设计中。

此外,鉴于微控制器的程序存储及运算能力有限,系统的硬件仿真将有助于促进设计者对C程序算法[3]在时间和空间上优劣与否进行思考,进而对程序算法提出更精细的要求,这对提高C语言程序设计质量具有重要意义。

更值得一提的是,C语言作为微控系统、单片机及嵌入式系统设计的首选编程语言,在相应课程开课过程中没有分配独立课时,通常以自学为主。对电子类及相关专业的初学者而言,在C语言课程入门阶段就接触硬件仿真,对其将来的专业学习意义非凡。

图1 交通灯系统的仿真电路

2 仿真设计的实例解析

基于Proteus的仿真平台进行C语言课程的教学尝试,其教学重点和难点在于如何忽略硬件对程序设计的“干扰”,为硬件“零”基础的学习者提供“无障碍”的虚拟平台,进而在系统仿真中体会C语言编程的内涵和魅力。以单片机的仿真模型为例,笔者将C语言案例教学设计的具体内容解析如下,供相关教学设计者参考。

2.1 精选教学案例

基于硬件设计平台,C语言教学应甄选硬件简洁、情景直观的系统作为原型案例。多模式的花样流水灯的电路设计简单,无需对硬件进行深度学习,如图2所示。多路按键、多路LED灯、一位数码管电路将分别指向分支语句、循环语句及数组的运用,同时LED灯、数码管的显示过程还伴随着延时子程序的反复调用,属于复合结构程序设计的原型案例,符合C语言教学用例的综合评判。

2.2 推演程序结构

C语言遵循结构化程序设计的规则[4],利用仿真平台进行的C程序结构分析无疑彰显了仿真教学模式的天然优势。对初学者而言,较之其他开发工具,基于仿真模型的设计更容易分化程序结构和构思编程策略,如图3所示。

图3中,(a)和(b)两幅仿真图分别模拟按键发音和一位计数器的设计。在按键发音电路中,判断按键是否按下,否则将执行相应的代码是C语言中典型的多分支语句,可采用if…else结构或switch…case结构完成;在一位计数器的电路中,数码管将会在0~9 之间循环显示,且译码过程通常采用数组查询方式,因此编程时需要定义数组且构造循环结构,亦属于C程序设计的典型应用。

2.3 梳理指令系统

基于仿真平台中的C程序设计与标准C语言设计运行着不同的指令集[5],如果仿真案例仅以专题形式讲授,教学设计者就必须为初学者厘清二者的区别和一致性。以单片机仿真设计为例,其C51的编程与标准C的编程在语法规定、程序结构、编程技巧方面高度一致,但在数据类型、变量存储模式、输入输出处理、函数等方面有一定的区别。例如,标准C中的头文件是stdio.h,在单片机C51中的头文件为reg51.h或reg52.h;再如常用函数printf在标准C中用于输出字符至屏幕,而单片机中则输出到串口等。

对各专业的初学者而言,不同指令集下编程必定会增加学习的难度。为了避免学习者的抵触情绪,教学中应该为其配套相应的指令使用指南,梳理并解析两类指令系统的区别与一致性。

图2 多模式的花样流水灯的仿真电路

图3 各类典型的程序结构案例

2.4 储备程序模板

就C语言的教学目标而言,学习者针对程序中结构和算法的设计远远重要于对某类定义、数据处理模式的掌握。本着这一原则,教学实践环节中,设计者还需要储备仿真案例的程序模板,旨在跳过部分硬件驱动和数据处理模式的编程,同时弱化不同指令之间的区别,为初学者呈现与标准C语言近乎“无差别”的仿真设计平台。

以水量检测系统[6]为例,其程序模板如下:

2.5 整合实践教材

基于硬件仿真平台的C语言课程教学目前正处于课改的规划和资源整合阶段,尚无成熟的教材和丰富的教学资料,因此为教学设计相应配套实验教材,是实施课程教学计划的重要环节[7]。根据案例的选取和知识点的衔接,设计难度相当、知识点匹配的实验项目无疑是对教学设计者的客观要求。值得注意的是,在项目的设计阶段,还需同时储备程序模板和指令解析指南,供学习者在实践过程中参考。

2.6 编写仿真指南

与C语言编译器的功能不同,Proteus仿真软件支持Keil C编译器编译的.HEX文件[8],并用于程序的加载和运行,为此,针对Keil C编译器的使用及Proteus仿真软件的运行编写一部基本操作指南,即能帮助学习者在课程实践中解决各类仿真操作的问题。

3 应用仿真软件的棘手问题

(1)课程知识点的衔接处理。在标准C语言的教学中,初学者很容易适应该课程“从易到难”的教学进度和“由浅入深”的推演原则;而在Proteus的硬件仿真平台中,如何循序渐进地分解程序设计的知识点,并进行硬件设计“不留痕迹”的衔接处理,对教学设计者提出很大的挑战。

(2)软、硬件的配套设计。为防止基于硬件仿真的C语言教学过程本末倒置,电路仿真适于选取硬件结构简单、程序算法复杂的案例进行,这与程控系统设计的实际情况相互矛盾,因此在案例设计中,为了选取仿真电路和软件设计都难度适宜的项目,设计者还需在仿真资源、程序模板、操作指南、指令解析等教学资料的准备中权衡内容,匹配素材。

4 结 语

基于仿真软件的C语言课程教学属于“软”件“硬”学的课程改革和尝试,一经实施,定会与标准C语言的教学内容之间展开博弈,在教学目标、授课内容、实践方式上都表现出很大的差异。该模式能否对C语言教学产生深远影响还需要各种实施数据和分析,但能够预见此方式更贴合“应用型”人才培养目标,尤其作为通识教育的语言类课程,C语言的仿真教学将比传统教学形式更具吸引力。

[1]张婧婧, 李勇伟. 电子类仿真软件应用的教学之道[J]. 计算机教育, 2016(7): 126-129.

[2]苏变玲, 朱志平, 袁卫. 基于Proteus的单片机仿真教学的研究[J]. 实验室研究与探索, 2009(4): 75-78.

[3]鲁强, 李效恋, 王智广. 程序算法识别研究综述[J]. 计算机应用, 2012, 32(10): 2863-2868.

[4]汪红兵, 姚琳, 武航星, 等. C语言程序设计课程中的计算思维探析[J]. 中国大学教学, 2014(9): 59-62.

[5]王恒厂, 周燕飞.由C语言程序格式解析宏程序[J]. 现代制造工程, 2008(5): 126-128.

[6]任洪娥, 孙丽萍, 韩丽萍, 等. 智能霍尔效应水流量测试仪[J]. 东北林业大学学报, 1996(3): 99-102.

[7]陈婷. C语言程序设计实验教学改革探究[J]. 实验技术与管理, 2010, 27(10): 182-184.

[8]邓力. 基于Keil时序逻辑和Proteus的电路仿真[J]. 实验室研究与探索, 2017, 36(1): 80-83.

猜你喜欢
初学者C语言程序设计
医学专业“Python程序设计”课程教学改革总结与思考
轮滑冰球初学者运动体适能与专项技能发展的相关性研究
初学者,赶紧看过来
互联网+教育背景下的C语言程序设计教学改革探究
基于Visual Studio Code的C语言程序设计实践教学探索
51单片机C语言入门方法
从细节入手,谈PLC程序设计技巧
高职高专院校C语言程序设计教学改革探索
给会计初学者的几点实用性建议
初学者