APP下载

“C++面向对象程序设计”多样型实验探究

2013-04-29赵晓王丽丽

计算机时代 2013年7期
关键词:自主学习能力创新能力

赵晓 王丽丽

摘 要: 目前“C++面向对象程序设计”课程的实验模式多为验证型实验,机械而乏味,难以激发学生的学生兴趣。为此设计了一种多样型实验模式,包括验证型实验、设计型实验、创新性实验和综合性实验,给出了具体的实验内容。这种多种实验形式并存的实验模式能够提高学生的自主学习能力,培养其创新能力和综合应用能力。

关键词: C++; 多样型实验; 自主学习能力; 创新能力

中图分类号:G642 文献标志码:A 文章编号:1006-8228(2013)07-46-02

0 引言

“C++面向对象程序设计”是计算机类专业的专业基础课,其主要目的是培养学生的基本编程能力、基本的软件逻辑思维方法以及基本的面向对象思维方法[1-2]。该课程应用性与实践性较强,这需要大量的实验教学环节。实验教学是高等院校教学不可或缺的重要组成部分,它在培养学生综合素质和创新能力方面所起到的重要作用是其他任何教学形式都无法替代的。目前的实验模式多为验证型实验,已经无法满足教学要求,它忽略了对学生创新和创造能力方面的培养[3-4],为此,本文设计了一种多种实验形式并存的多样型实验模式,以提高学生的自主学习能力,培养其创新能力和综合应用能力。

1 目前实验教学存在的问题

目前该课程的教学模式是:课堂教学+上机实验。实验教学应该在本课程的教学中占有重要的地位,但现在实验教学模式存在着许多弊端[5-6]:①实验内容有限,实验教学内容安排仅围绕理论教学大纲开展,无拓展性、开放性;②实验模式以验证型实验为主,只是把书本上的例题或课后习题输入计算机试一下,根本没有真正认识到程序设计的核心在于设计,而不是抄现有的程序到计算机看结果,如此就谈不上掌握面向对象设计思想了。

为使C++课程的实验教学达到预期目标,就必须重视实验教学内容的丰富性,启发性以及总体实验课题的系统性,本文针对C++实验环节中的问题及原因,提出C++多样型实验模式理念,对原有的实验模式进行改革。

2 多样型实验的理念

“C++面向对象程序设计”课程实践性较强,既有理论体系,又注重实践和应用。它要求学生在掌握基础知识和基本技能的同时,不断地提高程序设计能力,运用所学知识去解决实际问题。这就要求C++課程实验类型的多样性。只有包含多种实验类型的实验才能满足C++课程的需要。多样型实验包括验证型实验、设计型实验、综合型实验和创新型实验。

2.1 验证型实验

学习该课程只有掌握基本语法才能更好地理解面向对象的编程思想及应用C++解决实际问题。为了让学生能够尽快的掌握基本语法,我们设计了包括C++语法的验证型实验。

验证型实验的目的:①通过实验掌握C++的基本语法及使用,建立C++语言的知识框架;②通过对类和对象的应用继承和派生实现促使学生基本理解面向对象的编程思想,并培养学生规范化软件设计的能力。

2.2 设计型实验

基于面向对象的程序设计主要任务就是设计合理的类和对象,以及类和对象的后续操作。选择设计型实验的题目时需要注意以下几个方面:①实验题目要接近真实生活,提高学生的兴趣;②只要能够满足题目要求,答案可以不惟一,另外如果更接近于真实生活可以允许学生自己扩充类的成员。这样能够激励学生不断思考,促使学生在满足题目要求的情况下能够对类和对象进行优化。

设计型实验的目的:①通过实验,让学生了解类和对象的设计思路及分析方法;②激发学生的学习兴趣,不断思考,不断优化自己的设计,培养学生解决实际问题的能力。

2.3 创新性实验

创新型实验是创新人才培养体系中不可或缺的重要环节,是培养学生实践能力、创新意识和科研能力的基础[7-8]。本课程重点设计了一个创新型实验项目。

创新型实验的目的:①培养学生独立解决实际问题的能力、研究性学习能力、创新能力;②让学生对C++的类库有进一步的了解,对C++有更全面的认识;③通过小程序的编写,促使学生领会C++的复用性。

2.4 综合型实验

学习一种开发工具的最终目的是做出能够完成一定功能的项目,综合型实验就是让学生尝试一些功能简单的项目[9-10]。学生完成此项实验后就能对项目的开发流程有更深一步的认识。由于此实验会涉及到数据库的知识,该实验要求学生分组(3-4人/组),各司其职,分工合作。在完成后还要编写实验报告。

综合型实验的目的:①培养学生的分析能力、思辨能力、团队合作能力;②让学生对项目的开发流程有一个大体的了解;③训练学生的问题需求分析,概要设计,详细设计,调试分析,程序测试,文档编写等软件工程学的基本技能,培养学生分析与设计实际软件的能力。

3 实验项目设计

根据各种实验类型目的与要求,本文设计了一种多种实验形式并存的多样型实验模式,实验项目表如表1所示。

由于验证型实验比较简单,并且教材已经给出了详细分析和源代码,这里不再赘述,下面详细介绍设计型实验、创新型实验和综合型实验。

3.1 设计型实验

⑴ 数码时钟设计与实现

要求:利用所学知识实现数码时钟的设计,能够显示当前时间,包括时、分、秒,并能实现对时、分、秒的调节。

实现参考:先定义一个标记变量,初值为0,然后调用时间函数,实现一秒钟对标记变量置1。用循环语句检测到标记标量变成1时,将秒加1,达到最大值时置0,分加1;分和时方法相同,最后刷新显示。

⑵ 简易计算器设计与实现

要求:输入算式就可识别将要进行的运算并计算出结果,运算包括四则运算、整除、求余,能识别非法字符,能按照四则运算的优先顺序以及先算括号内的规则计算。

实现参考:可以定义参加运算的前一个数值为类,并为此类定义多种运算作为函数成员,参与运算的第二个数值作为函数成员的形参。这样就实现了两个数值之间的运算,而对于多个数值的运算,都是建立在此之上的。此外,还要注意括号以及运算符号的先后顺序对运算的影响。

3.2 创新型实验

大整数的四则运算设计与实现。

要求:实现的范围在-10150~10150之间大整数的四则运算。

实现参考:①大整数的存放:可以定义一个类来存放大整数,该类要定义一个布尔类型的变量(标记正负)、一个字符窜类型变量(存放大整数的绝对值),然后定义四则运算以及计算大整数的位数的成员函数。②大数减法问题:对于减法可以加减数加符号然后像二进制那样的方式取补(取补就是讲大数的每一位都用9去减,然后个位数再加1),然后再计算。③大数加法的问题:首先考虑两个加数的符号,若为同号,可以将要计算的大数从高位到底位排序(由于一般的加法是低位对齐),然后两大数就可高位对齐而低位没有对齐,执行加法操作,将结果再逆置去掉多余的0,就可得计算结果,最后符号为其中一个的符号;若为异号,则可以通过比较两数的数值大小情况,总是用数值大的数来减数值小的数,符号由较大者决定。④大数乘法问题:大数乘法可以用多次加法来实现。⑤大数求商问题:可以通过多次减法得到最终结果。

可以参考下面的示例代码定义大整数类。

Class StrInt {

private:

enum {BYTENUM = 200};//大整数位数上限常量

string _sign;//用于存放符号

string _num;//用于存放数值

public:

StrInt (const string& a=“0”);

friend StrInt add (const StrInt& a,const StrInt& b); //大数加

friend StrInt sub (const StrInt& a,const StrInt& b); //大数减

friend StrInt mul (const StrInt& a,const StrInt& b); //大數乘

friend StrInt div (const StrInt& a,const StrInt& b); //大数除

…… //其他的成员可自行添加

};

3.3 综合型实验

学生学籍管理系统的设计与实现。

要求:学生类要包括学生的基本信息,系统能实现学生学籍的添加、删除、修改、查询。查询可以实现按学号、姓名、班级、系别查询。要通过文件操作或数据库实现信息的长期保存。

实现参考:定义学生类,可以定义姓名、性别、学号、系别、专业、班级、各科课程成绩为数据成员,定义查询、修改为函数成员。对于删除和添加可以通过定义函数实现。

4 结束语

通过对“C++面向对象课程设计”多样型实验的研究与探索,深刻体会到教学的目的不仅仅是教学生知识,还要教会学生思维方式以及学习的方法。本课程的多样型实验模式的创建,丰富了实验教学内容,实验教学形式呈多样化,提高了学生的学习兴趣,调动了他们的学习主动性,从而取得了良好的教学效果。但创新性实验还有待进一步完善。

参考文献:

[1] 彭召意,朱艳辉,周玉.C++面向对象程序设计课程的实践教学研究[J].计算机教育,2010.5:151-154

[2] 陆贵荣,陈树越.关于电子信息类大学生创新实践能力培养模式的思考[J].中国科技信息,2012.16:171

[3] 李玉顺,武林,顾忆岚.基于学习对象的教学资源设计及流程初探[J].中国电化教育,2012.1:78-85

[4] 钱能.C++程序设计教程(第二版)实验指导[M].清华大学出版社,2007.

[5] 董欣.创新型人才培养与实验教学改革的探索[J].实验技术与管理,2011.28(9):142-144

[6] Tom Boyle. Layered learning design: Towards an integration oflearning design and learning object perspectives[J].Computers & Education,2010.54:661-668

[7] 王晓明,易兵,徐瑞宇.基于创新创业能力培养的新型实验教学模式的构建[J].实验技术与管理,2011.28(2):15-17

[8] Godin, Benoit. 'Innovation Studies': The Invention of a Specialty.Minerva: A Review of Science, Learning & Policy,2012.50(4):397-421

[9] 何飞,郭乃珠.C++教学中关于学习兴趣的培养[J].考试周刊,2008.8:66-68

[10] 王美玲,付佳,肖烜.创新型实验项目-数字温度计的设计[J].实验室研究与探索,2010.29(9):125-127

猜你喜欢

自主学习能力创新能力
高中数学课堂教学中创新能力的培养
创新能力培养视角下的无机化学教学研究
推进软件产业创新能力提升
基于创新能力培养的高职音乐教育改革探讨
初中英语教学中如何培养学生的自主学习能力
自主学习能力在高职计算机教学中的培养
小学高年级数学自主学习能力的培养模式探析
网络环境下大学生自主学习能力培养策略
医学生自主学习能力的性别差异
论形成性评价与医学生自主学习能力的培养