admin 管理员组

文章数量: 1184232


2024年4月22日发(作者:就聊app官网免费下载)

ISSN1009-3044

ComputerKnowledgeandTechnology

第17卷第10期(2021年4月)

电脑知识

与技术

Vol.17,No.

10April

2021

E-mail:*************.cn

Computer

http

KnowledgeandTechnology

电脑知识

与技术

://

Tel:+86-551-6569

地方高校C语言程序设计课堂教学内容探讨

洪留荣

(淮北师范大学计算机学院,安徽淮北235000)

摘要:针对C语言程序设计课对于地方高校初学者学习上的困难,本文探讨了在课堂教学上的一些教学思路。从数据类

型、表达式以及复合语句三个方面探讨了教学上应关注的重点和核心,分析了这样做的优点,强调了课堂教学从教材上提

炼相关课堂内容的重要性。

关键词:C语言程序设计;课堂教学;数据类型;表达式;复合语句

中图分类号:G642文献标识码:A

开放科学(资源服务)标识码(OSID):

文章编号:1009-3044(2021)10-0117-03

C语言程序设计是计算机类专业的重要专业基础课,教授

的对象一般是高校低年级学生,地方高校学生优点是视野天

阔、个性强、接受新事物的能力强,不足之处在于自控能力差、

缺乏目标、自我学习能力欠缺。因此,目前出现了诸多教学模

式的探讨。文献

[1]

提出了基于“学习成果导向”理念的计算机基

础教学改革模式,从教学设计到最后的评价进行了改良;文献

[2]

针对学生能力提升问题改了教学模式,提出了培养学生C语言

编程能力和工程实践能力的教学模式;文献

[3]

[4]

从教学的教法

上进行了C语言教学改革,分别讨论了翻转课堂和网络教学模

式的应用;文献

[5]

从精炼课程内容上入手并提出了“MOOC+翻

转课堂教学模式”。这些改革的方法均发挥了各自的优点,考

虑到无论教学模式如何,将课堂教学内容简化、厘清知识的本

质是最根本的问题,它可以有效提升学生学习的兴趣,使学生

乐于进一步探索学习,更好地发挥新教学模式的作用,从而有

效地培养他们的计算思维能力和编程能力,因此,本文从三个

方面探讨C语言程序设计课堂教学的教学思路,抓住本质,简

化学生理解难度。

1以“数据类型”与“地址”统领整个C语言程序设计

教学

绝大多数人在谈到C语言时,都把“指针”作为它的精华,

但这只对了一部分,C语言真正的精华在于“数据类型”,从指

针的运算、格式符对值的解释、各种数据类型的转换、数组及函

数等均是在“数据类型”这个概念的基础之上处理的,而且指针

仅是一种数据类型,其表现出的形式是整型值。

基于此,在课堂教学中,从讲述常量和变量的概念起,把重

点放在内存地址的概念以及格式符对内容的解释上,包括存放

的字节数、符号位、存放的格式与数据类型的关系,以及获取

值、赋值、格式符与数据类型的关系,培养学生理解数据与数据

类型的密切关系,讲清了这种关系,学生就可以快速地理解各

种类型数据的核心本质,从而准确地理解类型提升与强制转换

这些概念以及在这些过程中发现的变化,也为后续需要用内存

解释C语法打下很好的思维基础。比如,初始时,把握了这个

本质学生自己就很容易解释像float型数据用“%d”输入输出时

出错的现象,少犯一些自己无法解释和无从修改的低级错误,

这些错误如果经常出现对许多初学者的学习积极性打击非常

大,从而失去学习的兴趣。

数组作为重要的构造类型,在C语言中占重要地位,它的

应用非常灵活,数组名的意义是关键内容,许多高校使用的教

材把重点放在了数组所定义的变量上,重点讲述各变量的引

用,这使得学生在后续的数组作为参数以及与指针的关系理解

起来困难非常大,经常出现一个例程中的语句照抄到自己的代

码中也出错的现象,尤其是二维数组、多维数组这些复杂的结

构。因此,在数组一章中,如果用数据类型对数组名和它的元

素进行分析,指出数组名本身的数据类型就是数组本身;数组

名作为表达式的操作数时是地址(sizeof(数组名)、&(数组名)除

外),此地址指向的数据类型就是数组元素的类型,这样,学生

就可以很容易把数组名赋值给指向一维数组的指针、指针数

组、多级指针时,从数据类型的角度考虑问题。这样当用数组

名作为实参传值给指针类型的形参时,就容易正确定义形参的

数据类型及结构。当时参与形参类型不一致后出现的运行错

误,可以再根据数据类型这个关键的东西进行分析。

强调数据类型,可以非常明确地把指针变量转换成C语言

的基本数据类型变量一样的思维方式来理解,指出指针变量就

是一个变量,只是类型与基本数据类型不同,其存放的是整数

形式的值,即地址,因为前面讲述的地址概念到此处学生已经

非常熟悉,已经形成良好的思维模式,所以理解起来很容易,所

以此时的指针概念只是地址换了一个说法而已。

收稿日期:2020-06-10

基金项目:安徽省高等学校省级质量工程项目,计算机类一流本科人才示范引领基地(项目编号:2019rcsfjd044);安徽省教学研究项

目(项目编号:zhtx18084);安徽省高等学校省级质量工程项目(项目编号:2018ylzy022)。

作者简介:洪留荣(1969—),男,安徽宿松人,主要研究方向为计算机应用研究。

本栏目责任编辑:王力

计算机教学与教育信息化

117

ComputerKnowledgeandTechnology

电脑知识

与技术

为了突出指针变量是“值”且数据类型为指针类型的概念,

在教学过程中,把声明指针变量的一般写法,如教材上定义指

针变量的方式,如int*p;,强调成(int*)p;这样的方式,指出数

据类型为(int*),后面只是一个简单变量,并提醒学生引用时数

据类型的一致性;这样,把指针变量使用的思维与使用一般基

础类型变量的方法统一起来。强调指针变量的数据类型相同

指的是它指向的数据类型一致这个概念。例如,二维数组名作

为实参时,其对应形参的写法就非常容易理解了;再如函数指

针(*fun)(),强调不同函数的数据类型不同,学生就可以快速理

解一个函数指针做形参的意义以及实参的正确写法。

在抓住了这些本质以后,一些同学还可以比较好地理解像

这样的函数指针数组int(*s[10])(int),并且可以正确调用它,而

这并不在教学内容之列。

这种以数据类型为纲的教学思路,可以把构造类型的变量

转换成基本数据类型这种简单的变量进行理解。从笔者多年

的教学经历来看,学生对指针和数组(包括二维数组、多数数

组、多级指针)之间的传参、指向一维数组的指针、指针数组以

及函数指针这些相对较复杂的概念理解起来并不存在大的困

难,有些平时训练多一点的同学,可以写出水平较高的代码,调

试时遇到的一般性问题通常有解决的思路。学生如果有了这

些核心知识和思维的铺垫,指针一章的教学内容并不是困

难的。

以数据类型为主线,同时对后续结构体类型、共同体类型

等都可以转换成基本数据类型的思维方式来理解,只需要强调

一下各自类型的独有特点就可以了,比如结构体类型成员变量

的赋值、输入与输出等,剩下的教学重点就可以放在算法思维

上了,即如何应用结构体这些数据类型解决链表问题。

有了数据类型这个本质基础,在课后阅读别人所写的纷繁

复杂的代码时,也就变得相对容易,从笔者的教学经历来看,学

生如果把握了数据类型这种C语言本质,就可以很好地理解本

科生C语言程序设计教学大纲上规定的重点和难点,加之适当

编程练习和阅读代码就可以把握核心内容。更重要的是学生

持续学习C语言的能力增强,这是因为能理解代码增加了他们

学习的积极性,有了积极性,学习C语言兴趣更高,更加乐于去

实践,更能加强理解,起到一个良性循环的作用。

2以表达式的值统领各表达式的讲解

地方高校学生在开始接触C语言时一般在低年级,并没有

好的计算思维能力,很多人在入学前,没有真正接触过台式电

脑,因此往往以一般性逻辑思维和高中时的数学表达式思维来

看C语言的表达式,经常会以一般的逻辑方式去考虑问题,而

许多教材所给内容又恰好加深了这种误解,例如,所给的例题

多类似if(x>60)这样的写法,如果教师也以这种方式去讲解,许

多学生就会陷入“如果x大于60就执行什么”的思维方式中,因

而,

while(1)

对表达式的理解就不透彻,比如对于后续常用的像if(!x)、

中的表达式要作为逻辑表达式或关系表达式等内容,

这样的写法理解起来非常吃力,要花时间去讲解这些

给学生造

()

成思维上的混乱。所以,表达式的讲解一定要以C语言标准上

如C11、C17标准)的定义进行简化,强调表达式的结果是一个

值,以值的方式去理解,单个变量是一个表达式、函数是一个表

达式,表达式中的运算符,根据优先级和顺序点参与运算,它们

都有一个最后的结果值,这样学生对诸如x=3、a>b>c这样的表

达式理解起来就方便了。有了这种基础,后续讲解选择语句、

118

计算机教学与教育信息化

第17卷第10期(2021年4月)

循环语句等就()中的表达式值以0和非0值作为统一标准进行

讲解,即当表达式为非0时执行语句,为0时不执行语句,这样,

初学者对if(!x)、while(1)写法理解起来就很容易,并很快能阅读

并编写出类似的代码,也不会把“a>b&&b>c”这样的表达式写

成“a>b>c”。因此,强调表达式的值,可以统一所有选择语句和

循环语句中涉及的表达式部分,可以用“值非0执行,0不执行”

这样简单的话来描这类语句的执行过程。这不仅适用于关系

表达式、逻辑表达式,也适用于函数表达式,同时也与_Bool类

型的值统一。

3以复合语句统领选择语句和循环语句

代码阅读不会存在大的困难,

C语言初学者一般容易理解基本的选择语句和循环语句,

也可以写出比较简单的程序代

码,

else

但对于这类语句的嵌套结构理解起来就相对困难,

中又嵌套其他循环的情况。对于这些知识点,

语句if部分和else部分分别嵌套有if或if-else

像if-

可均以复合语句

语句;for循环

作为切入点进行教学,以while循环为例,首先给出while语句

的基本语法结构:

while(

强调上述全部代码是一条

表达式)一条语句;

while语句,其执行过程为当表

达式值非0时,只执行其后的一条语句,如果当表达式值非0

时,需执行多条语句,需要用{}括起来。这个一般教学中都会讲

到,但很多教材并没有强调{}是一条复合语句,如果把{}这个看

成一条语句,则while{}后面如何复杂,都与while语句定义的格

式一致,

while(i>1)

是一条while语句。比如有以下代码:

{

printf("%d

for(j=1;j

",i);

{

}

jc=jc*j;

while(a--)

jc=jc+5;

i++;

}

t++;

按照上述以语句的分析方法,把while循环作为一条语句,

则学生很容易看出整个代码实质上是两条语句:

while

t++;

语句

行完成,

while()

再执行

后跟一条复合语句,

t++;语句,然后再介绍

执行的过程是先把

while中的复合语句的分

while语句执

析,它只包含四条语句:

printf("%d

for

while

语句

",i);

i++;

语句

外层while()中的表达式值非0时,依次顺序执行这些语句。

因为把循环看成了一条语句,这也意味着这四条语句中先执行

完printf("%d",i);,然后执行for这条语句,这条语句执行完才执

行后面的while语句,所以从顺序上看这非常清晰,学生容易理

解,且须记的内容很少。

本栏目责任编辑:王力

第17卷第10期(2021年4月)

ComputerKnowledgeandTechnology

电脑知识

与技术

把问题拆成一条一条语句的讲授方法,有以下好处:

(1)选择语句、循环语句以语句统一,函数体内语句就可以

用简单的顺序结构进行思维。对于初始者,这样的简单描述,

使学生容易理解、掌握程序代码的执行过程,如果当教学中没

有给出这种简易的结构说明,而只是用一段代码来说明什么是

多重循环且用代码来解释它们的运行过程,大多数学生的注意

力往往就会集中在每一行代码本身,缺乏整体的概念。强调复

合语句看成一条语句,可以把表面非常复杂的代码进行简化,

让学生容易从整体上把握编程的思路,培养他们的算法思维能

力,同时可有效提升他们的编程能力和阅读代码的能力。

(2)可以间接培养学生函数递归调用的部分思维,为后续

学习函数打下基础。选择语句、循环语句当中的复合语句可包

含选择语句、循环语句,虽然这部分内容没有讲述到“递归”的

概念,但这里实际上已经切入了函数递归调用的部分思维,这

种思维就是外层中有相同内层。

(3)可以为模块化编程打下思维基础。这里复合语句虽然

没有说明模块化,但用整条语句进行分析,可以让学生体会到

一条语句是作为一个整体,一条语句可以包含多条语句,以完

成一定的任务,这些虽然在课堂教学中没有指出,但这样的方

式显然可以引导学生做这样直觉性的思考,从而为后续模块化

编程的教学打下思维基础。

极性相对不足,更需教师在课堂教学上多下功夫。我国古代最

早一篇专门论述教育、教学问题的论著《学记》中强调的教师应

[6]

“其言也,约而达,微而臧”,因此,提炼出C语言的本质,以简

单的过程描述复杂的问题显得非常重要。本文把前后教学内

容有意识的提炼、提前铺垫,用简单的方式去解释C程序设计

中纷繁复杂的代码,使学生易于理解,更好地提升他们的学习

兴趣,培养他们的算法思维能力和编程能力;思维的铺垫可以

让学生在前期逐步形成学习后期知识的所需的思维意识,这样

后续新知识的学习就相对容易。

参考文献:

[1]张翠平,赵晖.基于“学习成果导向”理念的教学研究——以C

语言程序设计课程为例[J].计算机教育,2020(3):153-156,161.

[2]陈涛,朱俊,裔传俊,等.面向编程能力培养的C语言教学模式

研究[J].计算机教育,2020(1):100-103.

[3]何迎生,王从银.基于慕课的C语言程序设计翻转课堂教学

实践[J].计算机教育,2020(1):160-163.

[4]骆春妹,袁三一.基于网络教学平台的C语言课程教与学研

究[J].教育教学论坛,2020(9):372-373.

[5]李薇,黑新宏,王磊.C语言程序设计课程的金课建设实践[J].

计算机教育,2020(6):142-146.

[6]王凌皓,姬天雨.中国古代师道观评析[J].河北师范大学学报

(教育科学版),2019,21(1):15-20.

【通联编辑:光文玲】

4结束语

C语言这种简洁紧凑、灵活方便计算机语言,学好它有一

定难度。从整体上讲,一般地方院校的学生自学能力和学习积

(上接第109页)

参考文献:

[1]刘爽,郑燕林,阮士桂.ARCS模型视角下微课程的设计研究

[J].中国电化教育,2015(2):51-56,77.

[2]张剑锋.ARCS模型在激发大学英语听力学习动机中的应用

[J].技术与创新管理,2008,29(4):428-431.

[3]袁丽容.MOOC教学视频中的动机激发策略研究[D].深圳:深

圳大学,2017.

[4]柳春艳.SPOC在中小学教育中的应用模式探索——基于

ARCS模型视角[J].中国电化教育,2015(12):120-125.

[5]张金磊,张宝辉.游戏化学习理念在翻转课堂教学中的应用

研究[J].远程教育杂志,2013,31(1):73-78.

[6]王立亭,张斌.基于ARCS动机模型的微课设计与实施研究

[J].中国信息技术教育,2015(17):83-85.

[7]郑燕林.ARCS模型视角下翻转课堂的教学设计与实践[J].现

代远距离教育,2020(3):18-23.

[8]陈天仙.基于ARCS动机模式的微课设计与应用研究——以

小学信息技术课为例[D].武汉:华中师范大学,2017.

【通联编辑:王力】

(上接第113页)

[2]邓秋实.校企深度合作办学机制的探究[D].哈尔滨理工大

学,2014.

[3]易新河,文益民,陈智勇.我国校企合作研究二十年综述[J].

高教论坛,2014(2):36-41+68.

[4]孙蓓雄.“双师型”背景下的高职院校青年教师培养机制研

究[J].黑龙江高教研究,2012,30(2):102-105.

[5]李薇薇,孙秀玲.浅议高校应用型人才培养方案的制定与实

施[J/OL].当代教育实践与教学研究,2017(10):92(2017-

10-16).

【通联编辑:王力】

本栏目责任编辑:王力

计算机教学与教育信息化

119


本文标签: 语句 C语言 教学 学生