前续和后续字符 C语言,基于数据类型完善的C语言课程改革研究

徐晓

c71f350d3e309a69b60a529093c93b66.png

[摘 要]针对目前二本计算机专业学生普遍感觉C语言难学、效果不佳的问题,本文从数据类型角度提出一个解决方案,使学生学习C语言既觉得容易又觉得有成就感,并为学习后续语言打下扎實的编程基础。笔者通过分析方案可行性,对比分析了新旧方案的教学次序,描述了新方案带来的教学变化,并通过实证分析得出结论,旨在为相关研究提供借鉴。

[关键词]C语言;数据类型;课程改革

doi:10.3969/j.issn.1673 - 0194.2019.12.099

[中图分类号]TP312.1-4[文献标识码]A[文章编号]1673-0194(2019)12-0-02

1     C语言的学习目的与对策

C语言在硬件底层编程、极高性能要求的编程等方面具有其他语言所不具有的优势,但是对于二本计算机专业学生来说,毕业后大多从事软件编程方面的工作,使用最多的是Java、C#、PHP、Javascript、SQL、Python等语言,很少从事基于C语言的编程开发工作。换句话说,学生学习C语言的目的是打下编程基础,为学习后续的Java、C#等语言(以下简称C语言的后续语言)奠定基础。以Java、C#为代表的语言都是面向对象语言,学习这些语言要求在C语言的学习过程中奠定面向过程的编程基础。面向过程的编程基础包括以下几方面:①数据类型及运算;②流程设计与常用算法;③数组运用;④函数的编写与使用。这些编程以数据类型为基础,不仅决定C语言中流程、数组、函数的学习效果,也决定了后续语言数量繁多的类的使用与编写。

由此可见,高校在制定C语言的教学目标时,可以对内容进行一些增删操作。①学校教学目的不是为了完全教会学生学会C语言。因此,高校应该删减C语言中对后续学习帮助不大又难学的内容,如C语言中的用数组存储的字符串。②高校教学C语言的目的是为学生奠定更扎实的编程基础。因此,高校要补充C语言中没有提供的字符串类型,保证学生进行全面的基础编程训练。对于这种删减C语言内容的做法,有些教师可能会提出异议,认为这不是纯粹的C语言。事实上,确实不是,高校的教学目的并不是为了学习纯粹的C语言,而是为后续语言打基础。

2     具体方案

高校放弃C语言中原先数组存储的字符串,添加一种类似Java等后续语言的字符串类型。

为了更好地衔接后续语言,还需要将新增字符串类型与后续语言字符串类型的名称和运算保持一致。

(1)增加一个类型,类型名称用string表示。后续语言中的字符串类型也大多采用此名称。

(2)string类型可以方便操作人员进行赋值、连接等运算。例如:

string a="John",b;

b="the name is "+a+"\n";

(3)使用点运算符string类型的一些功能,例如求字符串长度:

int n=b.Length;

(4)通过方括号可以方便访问字符串中的字符,如b[0]、b[1]。

(5)使用新增的string类型只需通过include包含进头文件即可。假如把新增内容存入文件"cc.h",那么学生使用string类型时只需用他们熟悉的句子把头文件包含进来即可:

#include "stdio.h"

#include "cc.h"

main()

{//可以使用string类型}

由于现在大部分C语言的编程工具均可以运行“C++”程序,因此,这个string类型可以使用“C++”来编写。具体做法是使用“C++”编写一个类,类名取名为string,重载“+”“[]”“==”等运算符,并编写一些常用的属性和方法,最后把这些代码放入文件“cc.h”让学生使用。

3     可行性分析

高校在C语言课程中增加了一个与后续字符串类一样的string类,让学生视同一个基本类型进行使用(下文称为字符串类型或string类型)。

3.1   学生无须学习面向对象的知识

教师上课介绍string时基本上无须介绍面向对象的知识,让学生把string当作一个简单的数据类型使用,如同使用int一样使用string。通过使用点运算符,学生花很少时间就能掌握string的运用方法。学生也无须知道命名空间、类等概念,使用他们熟悉的包含stdio.h的方法即可包含cc.h,从而使用string类型。

3.2   新增类型string与后续语言一致

新增类型string与后续语言一致,这样学生学习的涉及string的知识和编程均可反映在后续语言上,从而打下更加扎实的编程基础。

4     教学次序对照

由于新增了一个string类型,整个C语言课程的教学更加调理清晰、循序渐进,下面列出改革后的教学次序,作为对照,先列出改革前的教学次序。

4.1   改革前

目前,C语言课程的教学大多基于谭浩强的《C语言程序设计》教材,虽然很多学校推出了自己的教材,但实际上也只对基础教材进行了细微调整。二本院校由于生源问题通常会简化教学,但总体框架依然没有什么大的变动。C语言课程各章节的教学次序一般是如下安排:①数据类型及运算(不包括字符串);②流程(不涉及字符串);③数组(不涉及字符串);④字符串(包括存储、输入输出、处理);⑤函数(字符串以数组形式作为参数,不包括返回字符串的函数);⑥指针,指针与数组;⑦指针与字符串(包括返回字符串的函数)。由于字符串需要数组、指针作为前置的基础,因此,课程前期基本上不能涉及编程字符串的内容,无法把字符串作为基本类型进行编程训练。此外,涉及字符串的函数编写通常要写成指针形式,不够直观。

4.2   改革后

使用本方案之后C语言课程各章节的教学次序则是如下安排:①数据类型及运算(包括字符串);②流程(涉及字符串);③数组(涉及字符串);④字符串中的字符;⑤函数(字符串可作为参数,可返回字符串的函数);⑥指针,指针与数组。改革后的字符串作为C语言的基本类型,字符串与数值类型始终贯穿课程始终,在流程、数组、函数中反复应用,在培养涉及字符串的编程能力方面打下比较扎实的基础。

5     新方案带来的教学变化

5.1   课程前期即可使用字符串

由于新增的string类型与int没有很大区别,使用起来没有难度,在课程前期学习数据类型時即可介绍给学生,甚至在第一节课学生即可使用字符串,培养学生完整的数据类型使用体验。相比而言,标准C语言必须等到学生学完数组、指针后才能使用字符串,由于比较难学的指针拦在了字符串的前面,大部分学生即使到最后依然没有学会使用字符串。

5.2   降低学习难度,提高学习兴趣

string类型使用非常简单,有利于学生消除对编程的神秘感,快速建立编程的兴趣,从而为后续专业学习打下良好的基础。

5.3   丰富了编程的题型

教授学生编程时不再总提供数学题目,可以有更多的关于数据处理的题目,例如:提供一个班级的学生姓名,输出其中最多的姓氏。当前软件应用最多的是数据处理而不是数值计算,丰富的题型可以更好地进行后续开发和学习。

5.4   学生自己创建类型

有了string,学生可以在C语言教学前期创建自己的类型,从而使学生在处理数据编程方面拥有更多的训练机会,例如:

typedef struct { string bookname;  string author;  float price; }Book;

Book b={"西游记","吴承恩",36.0};

5.5   函数的编写和使用

有了string以及自己创建的类型,学生编写函数的函数值类型和参数类型将不再局限于单一的数值类型,可以有丰富的变化。例如:

string mostAuthor(Book b[], int n)  //在一个书的数组中求出书最多的作者

6     期末成绩对照分析

笔者取两个班级的期末考核成绩进行对照分析,其中一个班采用改革之前的传统C语言教学内容和教学次序,另一个采用改革之后的新模式,结果如表1所示。

从表1可以看出,改革之后学生的期末成绩取得了明显改善。表1的数据不能充分反映学生学习的改善程度,因为两个班级的试卷是不同的,改革前的班级期末试卷题目很少涉及字符串编程,而改革后的班级期末题目大量涉及字符串编程的题目。也就是说,后者的考试范围及难度要高于前者。

7     结 语

对于二本院校计算机专业的学生来说,学习C语言的目的是奠定编程基础,在C语言中引入string类型可以明显提升学生的学习效果和学习兴趣,也更有利于衔接后续语言,帮助学生进行职业生涯规划。

主要参考文献

[1]陈益.C程序设计编程问题之浅析[J].软件导刊:教育技术,2015(1).

[2]潘志洪,王玉凯,鹿蕾.浅析掌握C语言的优势[J].艺术科技,2016(11).

[3]马吉权,金英,郭兴凯.基于数据类型结构观点的C语言中赋值运算教学方法[J].黑龙江教育:理论与实践,2018(1).

[4]梁科辉,范华.C语言中数据类型转换及其应用探究[J].山东广播电视大学学报,2016(4).

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值