基于实践创新能力培养的C语言课程教学改革

2021-04-13 10:37李德川方振国梁霞
课程教育研究 2021年8期
关键词:C语言新工科探究

李德川 方振国 梁霞

【摘要】在现代工程教育背景下,要求加强培养知行合一的高素质专门人才。文中以C语言软件设计教学为研究对象,通过对C语言教学现状的分析,提出用阶梯型目标对实验对象进行分级设计,解决学生参与度低、编程不积极和实验无效果的现象。在实验设计中,结合生活实际,利用学生思维活跃特点,充分发挥学生的个性特长,把知识的传授贯穿在程序设计中,将普及性教育与探究式教育相融合,探索提升实践创新能力的教学新模式。

【关键词】C语言  探究  新工科

【基金项目】安徽省“六卓越、一拔尖”卓越人才培养创新项目(2019zyrc056);淮北师范大学教学研究项目(JY19003, JY19037)。

【中图分类号】G642 【文献标识码】A 【文章编号】2095-3089(2021)08-0054-03

新工科是在建立国际竞争的新优势、加快我国经济发展和产业升级的迫切需求下提出的,建立适应国家战略发展的新型工程教育[1]。要站在国家战略层次上审视产业和未来的需求,以服务和引领行业发展为己任,培养高素质的工程技术人才[2]。在教书育人的实践中,要以立德树人为根本,遵循工程教育的发展规律,从实践出发,把教学内容与社会需求结合起来,坚持以学生为导向,尊重学生的个性发展,培养理论能力与工程能力交叉融合的创新型工程人才[1,3]。新工科背景下的人才培养要求我们从专业建设出发,紧密结合实践[4],培养实践能力强、创新水平高和综合素质过硬的优秀毕业生[5]。在此背景下,我们从电子信息系的C语言程序设计的教学出发,探讨实验教学的新模式。C语言程序设计又称为高级语言程序设计,是大学生必修的一门基础课程[6]。学习程序设计既可以了解计算机的工作原理,也可以用来培养学生分析、总结和处理问题的能力。对于同一个问题,在C语言编程中可以有多种处理方法,程序的多重性可以极大地活跃学生的创造性思维。C语言实验作为应用的一个实践环节,在课程教学中占据非常重要的地位,如何在实验中保质保量地让每一位学生都能个性发展、最大限度地发挥所长,而不是完成基础训练,是目前实验教学中急需解决的一个问题。目前,实验教学项目的类型大部分以“验证”“设计”“综合”为主,学生配有实验指导书,学生课前预习和编写程序,上机来验证,然后,教师根据实验报告上学生验证的情况给以评判。对于学习能力强的学生,上机验证这个过程很快完成,挑战性不高,导致学习兴趣下降;而对于基础稍差的同学,通过整节课的学习和调试也能完成。在实验报告上,基础好的同学和基础差的同学调试内容几乎没有什么区别,在得分上也很接近,没有区分度。本文从C语言实验教学的设计出发,把实验设计为含有基础应用和高级应用两个层次,把验证、设计和综合等环节融入到实验设计中去,以此来探讨实验教学的改革模式,实现对教学对象的全覆盖,并能够对学生个体进行差异化培养。

本文以“点菜系统”的设计为例,把选择结构作为必须掌握的基础知识,把循环结构作为提高部分,实现实验教学的层次设计。

1.基础知识的理解和应用

在教学中,基础知识为学生必须掌握的部分,要求全部学生能够了解和运用。在基础应用这个层次,学生只要能够正确运用选择结构的相关知识,实现点菜,即可认为达到了实验目的。

在课程的具体实施中,可以把该部分分为以下几个环节:基础知识的掌握情况、程序设计的讨论阶段和程序的实施。

1.1基础知识的理解

在基础知识的掌握环节,可以通过学生主动回答,其他同学补充,教师总结的形式来巩固基础知识。通过问答,學生可掌握选择结构的类型和使用条件。如选择的两种语句:if()和switch()语句;

if语句为两分支语句,含有3种形式:

第一种形式:无else部分

if(表达式)   语句;

第二种形式:标准格式

if(表达式)  语句1;

else   语句2;

第三种形式:嵌套

if(表达式1)  语句1;

else if(表达式2)  语句2;

else if(表达式n)  语句n;

else 语句n+1;

switch语句为多分支语句:

switch(表达式)

{case 常量1:语句1;

case 常量1:语句1;

case 常量n:语句n;

default: 语句n+1;   }

在学生了解语句格式时,提醒学生语句使用的语法规则,如在if语句中,表达式的类型可以为关系、逻辑、数值等不同形式。但在switch语句中,表达式的类型必须为整型或字符型。这一部分大约用时5分钟。

1.2程序结构设计的多样性

在程序设计的讨论环节,引导学生用不同的语句实现选择功能,放飞学生的思维定式。比如用if语句怎么实现?用if-else if-else语句怎么实现?用switch语句怎么实现?在讨论后,总结用哪个语句写程序更简洁,更美观。而在程序的具体语句形式上不指定格式,充分给予学生自主选择权。而在分支语句的表达式上,既可以用数字,也可用字符来代替某菜名,示例如下:

用整型变量n代表选择的某菜名。

if(n==1)   printf("番茄鸡蛋\n");

if(n==2)   printf("红烧排骨\n");

或用if—else if—else表示

if(n==1)   printf("番茄鸡蛋\n");

else if(n==2)   printf("红烧排骨\n");

或用switch表示

switch(n)

{ case 1: printf("番茄鸡蛋\n");break;

case 2: printf("酸辣土豆丝\n");break;

}

若用字符ch代表选择的某菜名。

if(ch== 'a')   printf("番茄鸡蛋\n");

if(ch== 'b')   printf("红烧排骨\n");

或用if—else if—else表示

if(ch== 'a')      printf("番茄鸡蛋\n");

else if(ch== 'b')   printf("红烧排骨\n");

或用switch表示

switch(ch)

{ case  'a': printf("番茄鸡蛋\n"); break;

case  'b': printf("酸辣土豆丝\n"); break;

}

经过上述的讨论,学生在程序的多样性上有了一个直观的认识,对选择结构又多了一分认识。这一部分大约用时10~15分钟。

1.3程序的设计与指导

在程序的实施环节,学生选择1~2种形式来完成剩下的部分,让学生体会程序的编辑-执行过程。同时,随机将学生运行的结果展示在大屏幕上,提高学生的参与感和自豪感,增强学习动力。

在本环节完成后,教授分支语句的任务已经圆满完成,在这一环节中,参加实验的每一位学生都可以实现预期结果,实验目的已经达到,保证了人人参与,人人会用,实现了大众教育。

对于学习能力强、计算机操作熟练的学生,如何抓住他们的兴趣点,让他们有所收获,是我们在教学中需要考虑的个性化培养的问题。

2.程序的高级运用

在上述用分支语句实现点菜的过程中,每次运行只能得到一个菜名,功能性有一定的局限性。我们可以对该程序进行难度升级,例如点菜时,实现想点几道菜就点几道菜,想结束点菜就结束点菜。在这一部分的训练中,用问题的难度升级进行精英化教育。

2.1项目任务的分解

要解决上述问题,首先,如何实现任意多次点菜?其次,如何在不想点菜的时候,结束程序?把这两个问题分解出来抛给学生,引发学生的思考,引导学生认识循环语句、循序结束的条件,以及循环内部的循环方向。经过讨论,可以得知循环既可以用for语句,也可以用while语句;循环结束的语句可以用特定字符来判断;是否循环可以在循环内部设置接收新字符的函数。

2.2关键语句

循环语句的选用,例如用当选择特定字符Q时,退出点菜,则该表达式为ch!= 'Q';用while语句嵌套分支语句,表示为while(ch!= 'Q')。此时,还有一点一定要学生体会的是,循环体内的循环执行方向,ch=getchar(); 若该条语句缺失,程序将怎样运行?如何修正?引导学生积极思考,掌握C程序的运行逻辑,提高学生分析问题、解决问题的能力。

2.3示例演示

点菜系统的实现有很多种方法,我们以其中一种switch为例,演示点菜系统的全过程,用程序运行结果与学生编程进行相互验证。

#include <stdio.h>

void main()

{ char ch;

ch=getchar();

while( ch!= 'Q')

{switch(ch)

{   case 'a': printf("番茄鸡蛋\n");break;

case 'b': printf("酸辣土豆丝\n");break;

case 'c': printf("红烧排骨\n");break;

default: printf("請选择其他可口菜肴!\n"); putchar('\a');}

}

ch=getchar();

}

printf("thanks!\n"); }

从参考程序上来看,程序非常简单,但是若少了一些关键点,程序很难正确执行,例如我们去除循环执行方向的语句:ch=getchar(),则结果是无限循环,始终显示第一个分支,即第一道菜“番茄鸡蛋”;若含有ch=getchar();语句,则运行结果完全正常,循环方向随着输入的变化而不断变化。通过以上述两种结果的对比,提醒学生在程序体嵌套的过程中要时刻注意程序的走向,通过对程序的预分析,提高自己的应用水平。

2.4程序的输出优化

这一部分以课外作业的形式留给学生,让学生有充分的锻炼和选择的机会。如在选择前,分行显示所有菜名及其对应的字符编号,菜名是否用分割符分开等等,提高学生改进程序的热情。

3.结论

本文以C语言的上机实验为研究对象,对实验的内容和实施方式进行分级量化,在基础知识掌握环节,面向全员,实现基础知识教育的全覆盖,实现大众化教育;在知识进阶环节,面向学习和动手能力强的同学,重点提高,充分发挥学生学习的主观能动性,实现精英化教育。在实验教学活动中,始终坚持以学生的发展为中心的教育理念,把学生个性化的认知融入到教学活动中,把教学实践与社会需求结合起来,培养学生终身学习的能力,以实际行动探索新工科背景下的人才培养模式。在该模式下,通过对实验教学的实施,我们发现学生对基础知识理解得更深入,学生更愿意动手设计自己的个性化程序,教学效果明显提升。在今后的教学中,将进一步考虑把生活实例与C语言编程结合起来,探讨新的实验教学模式,以满足新形势下的实验教学需求。

参考文献:

[1]钟登华.新工科建设的内涵与行动[J].高等工程教育研究,2017(3):7-12.

[2]林健.面向未来的中国新工科建设[J].清华大学教育研究,2017,38(2):26-35.

[3]顾菊平,堵俊,华亮.新工科视域下综合性大学电气类创新型人才培养的路径选择[J].中国大学教学,2018(1):56-60.

[4]李正良,廖瑞金,董凌燕.新工科专业建设:内涵、路径与培养模式[J].高等工程教育研究,2018(2):20-24.

[5]林健.新工科建设:强势打造“卓越计划”升级版[J].高等工程教育研究,2017(3):13-20.

[6]谭浩强.C语言程序设计[M].北京:清华大学出版社, 2013.

作者简介:

李德川(1985年-),男,安徽怀远人,副教授,博士,研究方向:电子技术。

猜你喜欢
C语言新工科探究
一道探究题的解法及应用
一道IMO预选题的探究
基于Visual Studio Code的C语言程序设计实践教学探索
基于C语言的计算机软件编程
探究式学习在国外
一道IMO预选题的探究及思考
面向新工科的Python程序设计交叉融合案例教学
新工科形势下高校二级学院毕业设计管理探索
新工科背景下大学生创新创业教育探索
高职高专院校C语言程序设计教学改革探索