前言:想要写出一篇令人眼前一亮的文章吗?我们特意为您整理了5篇c语言程序范文,相信会为您的写作带来帮助,发现更多的写作思路和灵感。
关键词:考试系统;多媒体技术;数据源;连接数据库
中图分类号:TP311文献标识码:A文章编号:1009-3044(2007)03-10854-03
1 课题研究的意义和目的
1.1研究意义
现在,多媒体技术日趋成熟,多媒体系统以其能输出精彩的图形和图像、美妙的声音、动感的画面赢得了用户和社会各界广泛的关注和应用。如果把按传统考试方式同现代化的多媒体技术相结合,并且用多媒体著作工具及其它多媒体技术,编制一套符合高校考试需求的系统及其配套的多媒体教学软件,利用多媒体技术生动、直观、形象展示信息的特点,辅助教师授课和学生进行考试,尤其对部分有限制性的实验环节,可利用活动视频技术进行展示,这将会解决一系列目前存在的问题。总之,该课题是在计算机辅助教学及考试上进行的一次积极有意义的尝试,为其他实践性较强的课程进行多媒体辅助教学开辟一条新的路子,具有一定的理论和现实意义。
1.2目的
传统的考试手段主要依靠有纸试卷,几乎没有可重用性。本课题将实现:用计算机辅助考试系统,把多媒体生动、直观的显示出来,使学生不再将考试视为一种枯燥无味的东西,提高了考试效果,使学生在一种愉悦的心情中进行考试,把枯燥的重复变为充满乐趣、具有启发性的考试过程,使学生能比较全面的学习知识,掌握技能,达到素质教育的要求。
2 系统流程图设计
2.1初始化流程设计
在使用Authorware创建任何多媒体项目的时候,都应该先设置当前项目文件的窗口大小,将其设置为“800×600”,然后选择“演示居中屏幕”,同时取消对“显示标题栏”和“显示菜单栏”复选框的选择。
2.2主界面的设计
本界面采用了Photoshop7.0图形图像处理软件来绘制。为了避免界面的单调和呆板,用蒙版和滤镜技术加以美化。该界面把Photoshop中的图层技术、图层蒙版技术、文字效果及滤镜等功能完美的结合了起来。并且在底部设置了一个Flas,增加视觉效果。
2.3背景音乐的交互控制
该多媒体教学以MIDI作为背景音乐,背景音乐的交互控制包括背景音乐的随机选曲播放、停止等功能,另外当该教学程序处于活动状态时,能够随时调整背景音乐和讲解声音的大小及比例,让使用者在一种轻松悦耳的环境中考试(调出WINDOWS的音量控制实现),还能够暂停背景音乐,当再次进入活动状态时则能重新播放背景音乐。
为了充分考虑用户计算机的不同配置情况,首先利用BUDAPI.U32的BASOUNDCARD函数判断用户机器是否已经安装了声卡,如果已经安装则执行背景音乐播放,否则不允许播放任何背景音乐操作.程序如下:
IF BASOUNDCARD() THEN
MIDI:=1
TEST(MIDI,MIDILOOP (FILELOCATION^”MUSIC\\MUSIC-”^RANDOM(1,5,1)^”.MID”),STOPMIDI())
END IF
软件中的背景音乐交互控制是通过交互响应来实现的。在程序执行过程中,用户始终可以通过按钮控制背景音乐的播放与暂停。在计算图标“播放音乐”后添加一交互图标并命名为“音乐控制”,并在交互图标右边添加三个计算分支。设置“STOP/PLAY”分支为按钮响应交互,其功能是实现对背景音乐的控制。由于在整个程序执行过程中它都是有效的,因此须设置其为永久按钮,即选择“PERPETUAL”属性选项,同时设置“ACTIVE IF”条件为:BASOUNDCARD(),即检测到用户没有安装声卡的情况下该按钮及响应分支无效。
2.4内容的导航设计
该多媒体教学涉及内容繁多,不仅包括文本、图片、声音和动画,而且还有其它多媒体工具与Authorware 配合,同时,还把视频文件导入,以增加实用性。为使用户操作简单方便,设计了合理的教学内容导航。主文件与各章节之间的导航设计根据结构规划中的该章节内容的栏目划分,在流程设计中为这些栏目设计了导航,如图1为主程序内容导航的设计流程图。
这样的流程设计使整个主程序结构清晰,可读性强。由于该文件结构是主-分结构,即主文件调用各章节模块文件的方式,因此在主文件的章节内容中实际存放的是一个起链接桥梁作用的调用脚本,而具体的考试试题题型内容则放在各章节的模块文件内。
2.5各模块的内容流程设计
图中的考试模式、练习模式、教学模式及退出系统这四部分主要程序流程图如下图2、图3、图4、图5所示。
第五部分的原理演示则是通过热区交互以及调入用VC6.0制作的演示内容的库文件,抽象的工作原理形象化,具体化。在打包的过程中采用了分步打包,首先对每部分进行打包。通过主文件调用其它各部分,这样避免了主文件过大,影响运行速度。
3 以完成单选题为例来看具体实现过程
从单选题的数据库题库中随机抽取相应题数的问题;每一题只能选择一个答案;用户可以按次序做答,可跳过不答,在回答过程中,可以随时返回已做过的题目进行修改;交卷后会给出完成情况可以查看每题的回答情况.最后回到选题主界面,并把学生所做的答案成绩保存到数据库中。
当用户在主界面中,选择了“考试模式”后,系统就会进入到登录界面系统会提示输入用户名和密码,当输入后,点击“确定”后,系统将会进入到题型选择界面。在提示框中输入用户名和密码,我们点击“确定”后,就会进入到正式的单选题型界面中,选择“单选题”单击。
C语言程序设计考试系统的选择题从数据库中取出选择题,在一个界面上显示。利用三个热区域交互按钮“上一题”“下一题,”“完成”,按钮和四个热区域设置计算图标用来记录学生所选择的答案。在学生选择“完成”后,弹出学生做题的情况界面,然后回到选题主界面,并把学生所做的答案成绩保存到数据库中。
3.1“未命名”用来擦除以前的图像
(1) 打开“未命名”的属性,进入“未命名”的属性窗口。
(2)在“属性窗口”中单击擦除标签在设置过渡效果进行设置。
(3)单击“确定”按钮
3.2 设置“单选界面”插入一个图像
(1)双击“单选界面”图标进入显示图标窗口
(2)单击绘图工具箱 图标进行绘制一个和窗口矩形一样大的矩形
(3)设置矩形的颜色为“绿色”
(4)单击显示图标窗口的关闭按钮,关闭保存对“单选界面”的设置。
3.3 设置交互“进入”
(1)在交互图标的右边拖放一个群组“单选”。
(2)设置单选的热区为“按钮”。
(3)单击确定后,双击“选择”。
3.3.1“未命名”用来擦除上次运行的图形
3.3.2 在“打开数据库”的输入如下源程序:
hint0:="您的数据库没有连接上......"
--显示连接数据库的信息
title:="数据库连接...."
ODBChandle:=ODBCOpen(WindowHandle,"","database","","")
--得到数据源
getrecord:="select count(sequence) from erigister"
--得到记录的个数
record:=ODBCExecute(ODBChandle,getrecord)
if ODBChandle=0 then--测试连接数据库是否连接成功
MessageBox(WindowHandle,hint0,title,17)
end if
ODBCClose(ODBChandle)
ODBChandle:=ODBCOpen(WindowHandle,"","database","","")
if ODBChandle=0 then
MessageBox(WindowHandle,hint0,title,17)
end if
sqlstring1:="select ssdb from erigister where sequence="^record^"" -从表中选择单选库表题
ssdatabase:=ODBCExecute(ODBChandle,sqlstring1)
getrecord:="select count(sequence) from "^ssdatabase^""
record:=ODBCExecute(ODBChandle,getrecord)
--ssdb数据库的记录个数,以便产生随机数
sssum:=0
number1:=1
sui:=[]
sui[1]:=Random(1,record,1)
--下面程序用来产生一个随机数不能出现相同的题目
i:=2
repeat while i
flag:=0
repeat while flag=0
sui[i]:=Random(1,record,1)
flag1:=0
repeat with p:=1 to i-1
if sui[i]=sui[p] then flag1:=1
end repeat
if flag1=0 then flag:=1
end repeat
i:=i+1
end repeat
3.3.3 在“做选择的背景”显示图标中设计单选题的界面如上图5.4
3.3.4 在“数据库的操作”中输入如下代码:在这里,我们就要实现对数据库的随机读取和跟踪答案的长短来选择界面
x:=0
ran:=sui[number1]
result:=""
record1:=Number(record)
record:=record1--得到记录的个数
sqlstring1:="select topic from "^ssdatabase^" where sequence="^ran^""分别得到选择题各项
sqlstring2:="select a from "^ssdatabase^" where sequence="^ran^""
sqlstring3:="select b from "^ssdatabase^" where sequence="^ran^""
sqlstring4:="select c from "^ssdatabase^" where sequence="^ran^""
sqlstring5:="select d from "^ssdatabase^" where sequence="^ran^""
sqlstring6:="select result from "^ssdatabase^" where sequence="^ran^""
get1:=ODBCExecute(ODBChandle,sqlstring1)
--get1得到选择题目内容
get2:=ODBCExecute(ODBChandle,sqlstring2)
--get2得到选择项A内容
get3:=ODBCExecute(ODBChandle,sqlstring3)
--get3得到选择项B内容
get4:=ODBCExecute(ODBChandle,sqlstring4)
--get4得到选择项C内容
get5:=ODBCExecute(ODBChandle,sqlstring5)
--get5得到选择项D内容
get6:=ODBCExecute(ODBChandle,sqlstring6)
--get6得到选择题的答案
inputa:=1 --用来设置热区域的激活条件
3.3.5空“操作”用来设置跳转标志
3.3.6在交互图标右边拖入四个热区域
在计算图标中从左到右的四个计算图标中输入: result:="A" result:="b" result:="c" result:="d"在交互属性中设置激活条件为inputa=1: ,鼠标指针设置为标准鼠标指针,其它的为默认设置.其中result变量用来记录用户所选的答案.
3.3.7拖一个交互图标“未命名”在它的右边拖两个计算图标为“上一题”和“下一题”,再拖一个群组“完成”放在“下一题”右边 ,设置热区为按钮。在“上一题”的激活条件中输入number1>1,鼠标指针设置为:标准的鼠标指针。在“下一题”的激活条件中输入:number1
4 结束语
根据对教师上课时课堂练习的分析,开发出该考试系统,主要是能够方便课堂练习,同时还可用于期中期末测试,该系统主要是针对《C语言程序设计》课程来设计的。对该系统做简单修改,即可用于其它课程。
参考文献:
[1]王嘉宁,朱隽.Photoshop7.0中文版新概念百例[M].中国水利水电出版社,2004,4.
[2]龚祥国.主编.Photoshop图像处理实用教程[M].科学出版社,2002,2.
[3]王龙,金海.主编.Flash MX实战入门新概念[M].中国水利水电出版社,2005,5.
[4]李恒.Authorware 6.0多媒体实例大制作》[M] 冶金工业出版社,2002,4.
[5]袁海东.Authorware 7.0教程[M].电子工业出版社,2004,9.
关键词:C语言;程序设计;学习方法;学习兴趣
中图分类号:TP312.1-4
《C语言程序设计》是计算机专业的一门核心专业基础课程,是专升本、考研和等级水平考试的必考科目,也是学生学习中感到比较吃力的一门课。那么,如何学习《C语言程序设计》这门课程呢?现根据自己多年在教学中的体会,谈一些粗浅的认识。
1 为什么要学习《C语言程序设计》
《C语言程序设计》是用C语言来编写程序的,每个程序员在他们的编程生涯中都应该学习C语言,因为它有太多难以忽视的好处了。除了它会给你提供更多的工作机会之外,C语言还会教给你更多的关于计算机的知识。它的好处如下:
1.1 C语言是一种计算机程序设计语言
它既具有高级语言的特点,又具有汇编语言的特点,既可以用来编写系统软件,又可以用来编写应用软件。它不仅具有绘图能力强,还具备很强的数据处理能力,因此也适于编写三维,二维图形和动画。
1.2 C语言具有功能强大、使用灵活、丰富的数据类型和运算符、结构化的控制语句、目标代码运行效率高、适用范围大、可移植性好等优点。
1.3 C语言是各大操作系统的基础,Unix、Linux、Windows其内核都清一色是C语言开发的,(某些地方是和汇编语言混合开发的),还有各种语言的编译器,包括java虚拟机,各种嵌入式设备,如手机、PDA等都是C语言开发的。
1.4 C语言是基础,如果你学习过C语言,你就能学习现在任何的高级编程语言
因为所有的高级语言都是以C语言为基础的(像JAVA,C++,C#等等)。C语言学好了,将来想学其他的语言,就比较好入门了。
2 如何学习《C语言程序设计》
2.1 克服畏难心理,充满自信的学习《C语言程序设计》
大多数学生一看到《C语言程序设计》课程的教材,就有畏难的情绪,觉得C语言难学,学不会,因为他们对计算机语言不了解,另外有些英语差的同学,看到计算机编程是用英语编写的,就未学先弃了。其实学习语言并没有他们想象的那么难,英语差也对学习计算机语言影响不大,比如学C语言,真正要记的关键字不多,语法也不复杂,只要大家不带着畏难的心理,充满自信,一定能学好的。
2.2 要明确《C语言程序设计》的学习目的
通过《C语言程序设计》课程的学习,掌握C语言基本知识,掌握程序设计的基本方法并逐步形成正确的程序设计思想,能够熟练运用基本程序结构解决简单问题,理解模块化程序设计原则并能熟练使用C语言进行程序设计,具备调试程序的能力,为后继课程及其他程序设计课程的学习和应用打下基础。
2.3 要明白《C语言程序设计》与一般的计算机操作课程有所不同
《C语言程序设计》是计算机的一门软件编程课程,是用C语言来编写程序的,它具有难度性、抽象性、连续性和逻辑严密性。如果你第一次课来听了,第二次课没来,第三次课很可能就听不懂了。比如,第一次课讲的是数字1,2,3,4……,第二次课讲的是运算符号+,-,*,/,第三次课老师让你算1+2=?,如果你前两次课都来听了,那么你就能算出它的结果,否则你就算不出它的结果。因此,如果要想学好《C语言程序设计》,必须坚持每次课都来,如果那天确实不能来,就应在家自学,不懂的地方应及时向老师请教,一定不能落课。
2.4 要整体把握《C语言程序设计》
C语言是一种通用的程序设计语言,在开发系统软件和应用软件中得到广泛的应用,已成为当今计算机世界最流行的语言之一。C语言是一个整体,各个方面是有机联系的,要从总体上把握它,不要把它割裂成互不关联的部件。它包括C语言概述、数据类型(整型、实型、字符型、数组类型、指针类型、结构体类型、共用体类型等)、运算符和表达式、流程控制语句、函数、数组、字符与字符串、指针、结构体、文件等。通过《C语言程序设计》的学习,掌握程序设计的基本概念、基本思想、基本方法和基本技能,进而学会利用C语言解决实际问题,培养计算机程序设计的能力和素质,以及思维方法,为以后学习其它计算机程序语言和后续的专业课程打下基础。
简单的C程序是由主函数和函数体两大部分组成。它的基本框架如下:
main()
{
}
其中main表示“主函数”。每一个C程序都必须有一个main函数,而且只能有一个main函数,它表示程序从这里开始执行。由花括号“{ }”括起的部分是函数体。其中函数体又包括定义变量、变量赋值、函数调用、输出打印等。
例:一个简单的求和程序
main() /*主函数*/
{
int a,b,sum; /*定义变量*/
a=123;b=456; /*变量赋值*/
sum=a+b; /*求两数之和*/
printf(“sum is %d\n”,sum); /*输出和值*/
}
这是一个简单的求和程序。/*...*/表示注释部分,只给人看的,对编译和运行不起作用。第3行是声明部分,定义变量a、b、sum,指定a、b、sum为整型(int)变量。第4行是两个赋值语句,使a和b的值分别为123和456。第5行使sum的值为a+b,第6行中“%d”是输入输出的“格式字符串”,用来指定输入输出时的数据类型和格式,“%d”表示“以十进制整数形式输出”。Printf函数中括弧内最右端sum是要输出的变量,现在它的值为579(即123+456之值)。因此输出一行信息为:
sum is 579
从这个例子可以看出,想要把《C语言程序设计》这门课学好,不仅要知道《C语言程序设计》的基本框架,还要学好函数体中的内容(变量类型、定义变量、变量赋值、输入输出格式字符串、输入输出函数格式、调用函数等)。另外还要学好C语言的运算符、运算顺序 、四种程序结构(顺序结构、分支结构、循环结构、模块化程序结构 )、掌握一些简单的算法等。
2.5 熟练C程序的上机步骤
在编好一个C源程序后,如何上机运行呢?要经过编辑、编译、连接和运行四个步骤。
(1)编辑源文件。在编辑(Edit)状态下输入或修改源程序。
(2)编译源程序。选择“C编译”菜单并选择“编译到OBJ”,进行编译,得到一个后缀为.obj的目标程序。
(3)然后再选择菜单“L连接EXE文件”,进行连接操作,可得到一个后缀为.exe的可执行文件。
(4) 运行程序。在“RUN”菜单中选择“R运行程序”项,或直接按Ctr+F9键,系统就会运行已编译好的可执行目标文件。此时,TC集成环境窗口消失,屏幕上显示出程序运行的结果。如果程序需要输入数据,则应在此时,从键盘输入所需数据,然后程序会接着执行,输出结果。
2.6 要加强编程训练
《C语言程序设计》是实践性非常强的课程,要求学员要理论联系实际,在掌握C语言的基本语法和基本知识后,重点应放在提高编程能力的训练上。根据学生学习的认知特点,我认为主要应从以下几个方面进行强化训练:
(1)吃透课本例子。每学完一次新课,让学生对课本例子先分析任务、再仔细阅读程序,然后按书上的源代码敲出来,编译执行输出结果,如果结果跟书上一致就算完成,如果不一致,就要仔细找原因。再后不看书自己编写代码与课本对照,找出自己的不足,然后改进。最后在此例的基础上自己加以改造,举一反三,变为其它的例子,如此反复练习,不仅培养了学生动脑思考的习惯,而且养成了遇事三思、认真、周密的作风。
(2)精选上机题目,要求调试通过。每章找出一个或两个综合性的具有代表性的应用题目,如编写一个程序,计算一个整数的名位数字之和;用选择法对数组中10个整数,按由小到大的顺序进行排序等,要求用C语言编写可执行的源程序,上机调试。这样不仅锻炼了学生解决实际问题的能力,更重要的是激发了学生学习课程的兴趣,抽象变具体 ,理论变实践,对这门课有了更深的认识。
(3)阅读填空法。找一些经典程序,配上必要的说明,适当去掉语句或表达式,让学生通过阅读填补空白,训练学生的程序设计能力。例编写一个程序,输入月份号,输出月的英文月名,还有求和、排序、报号等。
(4)准备一个经验本,记下C语言重要的语法和知识点,还有自己出错的解决方法及老师讲解的其他同学出现的常见错误,抽空常翻看,逐步积累经验,加深印象,使以后避免。
(5)带着作业去上机。每次理论课结束后,老师都会给学生布置一些作业(如习题)让学生做,那么学生一定要认认真真的把作业完成好,先把程序编写在作业本上,上机时再把这些程序敲到计算机上,进行修改、调试、运行,最后输出结果。如果学生不带作业去上机,第一次老师警告下次一定带作业上机,如果第二次还没带作业,不准学生进机房,让学生到教室把作业做完后再到机房上机调试。有人说学生可以直接在机器上编写程序,固然没错,但对于初学者来说,如果在机器上边思考边编写,也就是说想一句编一句,再想一句再编一句,这样太浪费时间,一节课说不定连一个程序都编不好,所以老师一定要求学生在课下把程序编好,上机只需把程序敲出来进行修改、调试、运行,这样能节约大量的时间,学生上机时间本身都是有限的。
上述方法在教学实践中证明是行之有效的,学生对问题分析、程序设计的自觉性和能动性得到提高,动手能力加强,对后继课如《C++》、《面向对象程序设计》等,学习起来倍感轻松,较好地完成了该门课程的学习目标。总之,实践出真知,多学、多练、多思、多交流,勤奋好学才能学成。
参考文献:
[1]严桂兰.C语言程序设计与应用教程[M].福建:厦门大学出版社,2001.
[2]谭浩强.C程序设计(第三版)[M].北京:清华大学出版社,2005.
[3]陈东.计算机多媒体教学改革的一些尝试[J].福建师范大学学报(自然版),2004,20(3):98.
[4]王兰.学好《C程序设计》的几点建议[J].科技信息,2007(9).
程序设计对于各个计算机类高校而言,都是非常重要的一类课程,尤其是理工类院校的必修课。而要进行程序设计,必须掌握一门计算机语言来做为编程工具。目前,很多计算机类高校都把C语言作为程序设计的入门课程来教学。我们知道可供选择的计算机语言是非常多的,如C++,C#,java等等,之所以选择C语言是由于C语言功能丰富,表达能力强,使用灵活方便,应用面广,目标程序效率高,可移植性好,它既有高级语言的优点,又有低级语言的许多特点。可以说,学好C语言对打好程序设 计基础起到至关重要的作用。
由于很多高校在学生进入大学学习的第一学期就开设C语言课程,大多数学生在高中时因为高考的压力而没有接触过计算机,对计算机的基本操作并不了解。这就导致了学生在学习C语言的过程中,感觉C语言语法枯燥,难以掌握;对基本概念能够理解,但是当实际应用到程序编写的时候又感觉无从下手;学生没有养成良好的程序编写习惯,使写出来的程序漏洞百出……等等这些问题都跟教师的教学方法、学生的学习方法有很大的关系。针对学习C语言中的种种问题,根据笔者多年的C语言教学经验,下面提出C语言教学中的一些新思路供大家共同探讨。
1 掌握基本要求,打好学习基础
在学生阶段,C语言的学习主要是学习程序设计的方法,训练程序设计的思维,为以后进一步的学习和应用打下良好的基础。但在实际教学当中,很多学生改变不了高中时期的学习方法,对课本上的概念和程序死记硬背,总以为把书背熟了就能够学好C语言,而没有把精力放在最基础、最常用的内容上,以至于基础薄弱,在程序的编写时经常会出现一些不应有的错误。笔者在教学中发现学生经常会出现以下一些问题。
(1)编写程序时不区分标示符的大小写。例如,int myname和int MyName就是完全不同的两个变量。在C语言里面,对标示符大小写敏感,但是很多同学就是会忽略这最基本的要求,造成程序出错。
(2)对“=”和“==”混淆使用。“=”是C语言里的赋值符号,把右边的值赋给左边的变量;而“==”是关系运算符,它的作用是判断“==”两边的值是否相等,返回的结果是一个逻辑值,即“真”或“假”。例如:a=1,是把1这个数据放在变量a里面,而a==1,表示a变量的值是否跟1相等,如果相等返回“真”,如果不相等就返回“假”。
(3)颠倒printf()函数值的输出顺序。直接看个例子:
输出的正确值应该分别为10,11,10,10。
很多学生出现错误是因为不理解printf()函数执行的顺序,printf()函数在执行时是从右到左,而输出时是从左到右。
从以上3个学生容易出错的例子我们可以看出,正是由于学生对基础知识掌握的不理想,导致这些极其简单错误的出现。在我们的教学当中,教师也必须把最基础的知识跟学生讲透,让学生改变学习观念,对学生加以引导,懂得学习C语言并不是一朝一夕就能够一下子变成编程高手,而应该脚踏实地,实事求是地打好基础。
2 重视算法的学习
算法是程序的灵魂,没有好的算法,就编写不出好的计算机程序。在C语言教学中,教师在很多时候都不注重算法的教学,导致学生上课时候能听得懂,看得懂课本上的程序例题,但是当布置作业让学生自己去完成程序编写的时候,学生又感觉无从下手。这些都是由于学生只注重去背课本上的程序例题,而不注重程序的算法思想照成的。教师在教学中要注意对学生算法逻辑思维的培养,在讲解程序时,应该首先分析程序中所需要用到的算法,要把重点放在例题的解题思路上,一步一步地引导学生,让学生知道程序为什么要这样编写。在授课阶段初期,我们也可以给学生举一些简单的、有生活气息的例题来引发学生对算法的兴趣。例如,我们可以举这样的一些例子。
(1)家里有个微波炉可以同时烧烤2份牛排,每份牛排有两面,每面需要烧烤2分钟才可以食用,问用微波炉烧烤3份可以食用的牛排需要多少时间?这个问题用算法来解答的话,我们可以有2种方案。第1种,先把第1份牛排和第2份牛排放进去烧烤2分钟,然后再把这2份牛排翻一面过来再烧烤2分钟,接下来把第3份牛排放进去,烧烤两面共花去4分钟,由此可知整个过程一共要用掉8分钟。第2种,同样的把第1份牛排和第2份牛排放进去烧烤2分钟,然后把第2份牛排先取出来,把第1份牛排翻一面过来跟第3份牛排一起放进去烧烤2分钟,最后把第3份牛排翻一面过来跟第2份牛排的另一面一起烧烤2分钟,这样3份牛排就都烤好了,这种方法,我们只需要6分钟。很显然,用这样一个简单的例子,可以让学生知道算法的重要性,好的算法可以节省程序大量的执行时间。
(2)有甲乙两人,甲现在26岁,乙现在8岁,求多少年之后甲的年龄是乙年龄的两倍?对于这个问题,我们可以引导学生使用循环体来解答。我们知道年龄是逐年增长的,假设甲为变量m,乙为变量n,则循环体就是m++、n++的一个过程,当甲和乙的年龄相差两倍时,循环结束。所以我们设定循环体的执行条件应该是m!=2*n。最后当循环体结束时输出m和n的值。通过这样的一个分析过程,相信学生很快就能够写出这个问题的程序。
由此可见,通过一些例子的算法讲解,一方面能够让学生理解解题的过程,一方面还可以锻炼学生的算法思维,让学生感受到算法的重要性。
3 上好实验课
上机实验也是C语言教学中的一个重要环节,学生仅仅听课是学不好C语言的。学生不仅要能够掌握基础的概念,还要自己动手编写程序,最后要亲自上机调试程序的运行并对程序进行修改。所以,如何上好C语言课程的实验课,也是教师要思考的一个问题。在笔者平时的教学中遇到这样的一些问题,如很多学生在上实验课时,没有把精力放在学习上,而是在玩游戏看小说;还有些学生上实验课前没有很好的预习,浪费了大量时间在知识的复习上;在实验过程中,学生一遇到问题就会向老师提问,以至于老师疲于解答甚至由于问的人数过多而无法一一进行解答。这些问题都影响到实验课的效果,甚至会影响到部分学生的学习积极性。如何改变这种状况,笔者采用以下几种方法。
(1)在上实验课之前就把实验题目布置给学生,学生在上课之前就需要提交给教师一份预习报告,这份报告里面应该包含学生对实验题目的解题思路及初步的解题程序。然后让学生带着这份报告上机调试程序。这样就可以避免学生在上实验课时无所事事的情况。
(2)对于有条件的学校可以配置多名实验指导教师。学生在实验中经常会遇到一些问题需要教师帮助解决,当问的人比较多的时候,教师就没有办法一一解答,而部分学生由于得不到解答而会停止程序的调试转做其他事情,如果一直得不到帮助的话,就会影响他们的积极性,所以配置一到多名指导教师是很有必要的。如果没有足够教师的话,我们可以让班级里面学习比较好的同学,组成一个学习兴趣小组。让这些学生在实验课时对一些有问题的同学进行帮助,这样既能够增进学生之间的友谊,又能够完成教师布置的实验任务。
(3)改变实验的考核方式。很多教师一般都是在下课的时候让学生提交作业,这样可能会让一些学生钻空子,拷贝别人的作业提交。所以建议在课堂上当场对学生的作业进行评分,遇到有雷同的作业,要求学生重做。在期末的时候,也必须要强调平时的成绩,不能把期末成绩作为衡量学生成绩的唯一指标。
通过以上的一些措施,可以有效地促进学生对C语言的学习效果,对巩固C语言的课堂教学起到了巨大的作用。
关键词关键词:C++;程序设计; 教学方法;教学改革
中图分类号:G433
文献标识码:A 文章编号:16727800(2014)002018902
0引言
C++语言广泛应用于基础软件、桌面系统、网络通信、音频视频、游戏娱乐等诸多领域,是世界上使用最广泛的编程语言之一。随着物联网技术的发展,C/C++技术在3G网络通信、多媒体处理、智能识别等领域得到了进一步的推动和发展。但人才短缺依然制约着行业的发展,很多高校都认识到这一点,相继开设《C++语言程序设计》课程,目的在于让计算机专业的学生多学会一门编程语言,进一步培养学生独立思考、分析和解决问题的能力,增加就业砝码。然而《C++语言程序设计》这门课程学起来并不容易,不仅有很强的理论性,更具有实用性,课堂理论教学和代码编写缺一不可。在传统教学过程中,由于教学目标不清晰,部分学生会质疑开设这门课程的必要性,并且教学内容或教学方法上的不足,也使得学生学起来枯燥,逐渐产生畏难心理。因此,高校《C++语言程序设计课程》的教学改革势在必行。本文根据多年来的实际教学情况和C++培训市场调研分析,从该课程的教学目标、教学内容以及教学实施方法等方面进行探索性的改革。
1教学中存在的普遍问题
1.1学生无法明确教学目标
以武汉东湖学院的《计算机语言程序设计》课程为例,4年的时间依次开设了《高级语言程序设计——C》、《面向对象程序设计——Java》、《C++语言程序设计》《.net 程序设计》4门课程。学校的出发点是全面培养学生的软件开发编程能力,不断提高学生独立思考、分析和解决问题的能力,从而增加学生就业砝码。4门课程跨越不同的教学学期,由不同的教师授课,教师如果只关注自己所授课程,没能从全局比较分析,学生很可能无法明确教学目标。
C++语言比较难学,课程教学中牵涉到的概念比较复杂、规则繁多;C++使用灵活、容易出错,不少学生感到学习困难;同时C++是面向对象程序设计语言,但又不是纯面向对象语言,它在过程语言中增加了面向对象的结构。这种特性使得C++语言能够保持与C语言的兼容。在教学初期,学生会觉得C++很亲切,许多C语言代码不经修改就可以为C++语言使用[1]。此时如果不让学生明确学习的目标和意义,学生很容易误解甚至会置疑:学了C为什么还要学C++,既然不是纯面向对象语言,用Java替代C++不就可以了吗?这样,C++语言教学自然不会有良好的教学效果。
1.2教学内容注重语法,课后延伸不多
教学内容更多关注语法。C++语言同所有算法语言一样都由自己特定语句组成,每条语句又有自己的一些特定使用规则[2]。在传统的《C++语言程序设计》课程教学中,无论是教材还是教师授课,都是先介绍概念,再介绍规则,最后讲解例子。有关概念规则的内容相对来说较为枯燥难记,在讲授过程中,难以引起学生的兴趣。虽然最后有例子讲解,但通常都是彼此孤立的、按章节对应教学内容的一些小数学问题[2],学生还是很难从中感受到实际应用价值。
受课程学时所限,课程教学内容大多也只能以基本的语法、规则、小案例形式来呈现。如果课后不加以延伸或适当学习,学生对C++的学习就只能停留在皮毛。
1.3教学方法与企业实际脱节
学生在学习《C++语言程序设计》课程时,往往有种“只见树木,不见森林”的感觉。因为传统教学往往都是简单地按照教材顺序循序渐进地进行,每节课都会让学生学习并记住许多概念和规则,但他们并不知如何综合起来解决问题[3]。即使安排大量实验课,也多是围绕每个章节分散地进行相关概念或者规则的实践。一段时间后学生往往对这门课感到厌倦,学到的知识也不足以驾驭实际项目开发。
2教学改革策略
针对上述现象,本文从以下几方面探讨了对课程的教学改革,实际运用中也取得了良好的教学效果。
2.1明确学习目的,激发学生的内在动力
教育心理学指出,学习动机是学习活动得以发生、维持进行,直到完成的内在动力。现代大学生对自己的学习活动、学习内容以及其对未来的就业和发展十分关注,如能在课堂教学初期讲清课程的开设目标以及相关就业前景,充分重视学生的这种学习动机,学习效果自然会提高。例如,在讲授《C++语言程序设计》课程前,可以收集一些招聘C++语言编程人员的就业信息及毕业生从事C++语言编程工作的收入、工作岗位发展趋势等学生十分关注的重要信息。到了教学初期,在讲授“什么是C++”时,可穿插着介绍这些信息,并让学生知道“C++语言广泛应用于基础软件、桌面系统、网络通信、音频视频、游戏娱乐等诸多领域。目前,企业招牌C++软件开发工程的数量占软件开发工程师总量的1/3左右,薪水居高不下。要尽快使每个学生明确即将学习的知识与社会的关系,因人而异地帮助学生找到各自的学习目标,激发学生的内在动力。
2.2教学内容注重从整体到具体,再从具体到整体
虽然教材的编排大都按照先概念、再规则、最后举例这一顺序,但由于其间知识的分散性,彼此缺乏联系,使学生不能体会一个完整的编程过程。在教学中,应注重教学内容从整体到具体,再从具体到整体,使学生通过一个完整案例先快速了解C++语言程序设计的全过程,然后增添程序设计的教学内容,具体分析实现步骤中的各个知识点,学习更高标准和要求的程序,最后学生在学完所有知识点后完成一个完整的设计。这种思路特别适合程序设计类的其它课程。
2.3教学方法注重同中求异、异中求同
这样可使学生学会抓住事物的本质特点,加深对事物的理解,有利于培养学生的创造性思维。为了能使学生的学习更深入,采用对比的方法进行教学,可以达到很好的教学效果。例如,学生在学习C++语言时可以拿它与C语言作比较,C++程序语言与C语言在程序设计思路上存在着不同:一个是面向对象的程序设计语言,将数据与数据方法捆绑在一起;一个是面向过程的程序设计语言,由上至下,采用分模块方式。但两者之间的共同之处也比较多,C++语言是对C语言的改进与扩充,是C语言的一个超集,它保持了对C语言的兼容,也即在C语言中使用的命令,可以直接在C++中使用。通过比较,学生更能体会到教学的目的性。
2.4校企联合,模拟职前培训
计算机专业的毕业生为了快速就业,有时会选择到培训机构进行职前培训。培训并不意味着一定就业或高薪,关键还是看学生。高校进行《C++语言程序设计》课程教学时,如能实现校企联合,在后期的实践环节注入培训机构的授课法,即通过多个项目让学生掌握C++的软件开发技能,将大量的开发经验融入教学;并且,每学完一个专题就配一个项目实战,最后完成一个即时通信或多媒体音/视频项目,积累开发经验,模拟职前培训,对学生能力的提高大有益处。
3结语
本文提出了《C++语言程序设计》课程的教学改革思路,即通过改善教学方法,调整教学内容,真正以激发学生学习兴趣为导向,校企联合或者注入培训机构的授课法模拟职前培训,让学生积累开发经验。教学实践证明,这些教学改革举措在一定程度上能够提高教学效果,同时其非常适用于其它编程语言课程的学习。
参考文献:
[1]杨庚.面向对象程序设计与C++语言[M].北京:人民邮电出版社,2006.
关键词:c语言程序设计;研究型教学;评价体系;协同学习
文章编号:1672-5913(2010)08-0115-03
中图分类号:G642
文献标识码:B
c语言程序设计是计算机科学与技术以及相关专业的重要专业基础课程。c语言程序设计课程的开设对提高学生分析问题和解决问题的能力,提高逻辑思维的严谨性,培养学生从问题空间到计算机程序空间的转变起到了重要的作用。但长期以来,教师感到c语言难教,学生反映c语言难学,教和学的效果都不尽人意。具体地说,C语言教学中存在以下问题:一是在教学中没有发挥学生的主体地位,一直以教师讲学生听的模式进行教学。二是强调语言语法知识的传授,忽视学生思维能力的培养。三是对学生成绩的评价不合理,以一张试卷决定学生的成绩。四是忽视了对学生工程观念的培养,学生只会编写一些简单的程序,而缺少综合开发能力。
为解决这些问题,我们学院对c语言程序设计的教学模式进行探索,在以“学生中心,教师主导,因材施教,案例教学,团队协作,评价合理”的教学思想指导下,从教学观念、教学内容、实验方法、辅导方式、评价手段和教学手段等方面进行了探索性研究,着力推进研究性教学。主要体现在以下几个方面。
1 以研究促进教学,通过高水平的研究带动高质量的教学
以教研室为单位,建立学术研究群体,紧密结合专业建设与课程建设,成立c语言课程研究小组,了解课程知识体系的发展动态,把研究成果融入课堂教学中。在教学中实施创新型教学,创新型教学是创新人才培养的基础,不同于传统教学模式,它具有目标性原则、因材施教原则、教学相长原则、合作竞争原则、综合评价原则等特征。创新型教学以学生为主体,以学生的能力培养为教学核心,强调师师、师生、生生全方位交流,以师生共同参与的多元化增量式评价为基准,培养出知识、能力、素质协调发展的、与社会需求接轨的应用型人才。
2 转变教学观念和教学模式,着力提高教学效果
在“教”的方面,要由传统的只重视知识和技能的浅层教学,转变为综合培养学生的兴趣、动机、态度、信念、思维判断能力和表达能力的深层教学。在“学”的方面,要由应试教育下的被动接受、考试投机取巧的被动学习,转变为自主探究、合作学习、善于思考、积极进取的主动学习。要重新界定教师的教学活动中的地位,教师在教学中的地位表现在:①课程的设计者。要求老师构建出理论教学中要搭建的知识框架,设计出课程讨论题目或实际操作项目,由学生通过合作学习来填充,从而完成知识体系的构建。在c语言教学中,教师合理构建案例,通过案例教学,培养学生的逻辑思维能力和解决实际问题的能力,为学生架构完整的知识体系结构。②合作学习的组织者。要求教师在教学中应扮演合作学习情景的创设者、良好人际关系氛围的协调者的角色,积极地对合作学习过程进行有效的组织和调控。在c言语教学中,通过异质学习小组的建立,给他们创建实际的应用场景,使学生了解C的学习的作用和意思。目标性原则是学习动力产生的动因。如果学生根本不知道这门课程的作用,就会感到迷茫,这是大部分高校学习的学习计算机相关专业中遇到的问题。在这种情况下,学生不可能产生强烈的学生兴趣。③合作学习的伙伴。教师是学生合作学习的同伴,解决问题,因材施教,由于不同学生在思维方式上的差异,他们的兴趣点和兴奋点是不同的,因此,在c语言的教学中要充分发挥学生的特长,不可一刀切,给不同群体设计不同的学习目标。以“跳一下能触摸”为原则,不能过分超出学生的承受能力,否则会扼杀学生的学生兴趣。④教学反思的实践者。教师要对自己的教育观、学生观、学习观进行反思,对教学知识、教学实践中的不足进行反思,总结经验,不断进步,以提升自己的教学能力与素质。c语言教学经历了许多年,不同学校、不同教师也经历了各种改革,应该对改革的内容进行不断反馈,保留成功的,改革不足的,去除不适的。
3 构建异质学生小组,实施协同学习与合作研究方式。发挥群体力量
信息技术发展迅速,而个人获取知识的能力有限。在课程教学开始,让学生明确课程学习的目标与考核要求,建立目标式学习方式。在课程教学过程中,推行小组式学习方式,充分发挥群体智慧,互相学习,互相启发,达到共同提高的学习目的。根据学生的学业水平、能力倾向、个性特征、性别等的差异合理构建异质学生小组。创设一种只有当小组成功时小组成员才能达到个人目标的情境,即小组成员不仅要努力争取个人目标的实现,更要帮助小组同伴实现目标。他们为了理解和掌握一个知识点以及最后完成全组的学习任务相互帮助、相互学习、共同讨论问题、倾听他人意见、从他人那里学习到自己不懂的内容、向他人阐述自己的观点、同他人辩论填补相互间在理解方面的不足。在c语言教学中,通过教师对实训项目的合理设计,由组长实施对项目的分工,在分工过程中要根据学生的能力水平和个性差异,合理分配模块,同时注意对学生编程过程的引导,从而达到总体目标。
4 改变传统教学内容,编写符合学生思维规律的讲义
以往的c语言教学一直偏重语法,教材的知识组织是根据其语法的难易程度来编排的,不适合培养学生的程序设计能力和逻辑思维能力。从而导致学生能听懂,但不能解决实际应用问题。我们将c语言课程分为两学期开设,第一学期通过若干案例使学生熟悉c语言的基本语法、积累基本算法、培养逻辑思维能力。第二学期为C语言项目实训。实训项目为数据文件的增、删、改、查。内容涉及排序算法、递归算法、指针运用、结构体运用、文件读写、链表操作等。训练的能力有需求说明书撰写能力、沟通能力、自主学习能力和编码测试能力等。同时培养学生的综合开发能力和团队协作意识,培养学生的程序员职业素养。讲义的编写由四个教研室主任牵头,精心选择案例,从以传统的语法讲解为主的教学模式转变为案例教学模式,让学生通过案例的学习自然加深对语法的理解。这种教学模式符合学生的思维习惯和认知规律,从而激发了学生的学习兴趣,也使学生真正理解学习语言的作用是用来解决实际问题的。
5 建立多元评价体系,培养学生综合素质与创新能力
摈弃一张试卷与一次考试的学生评价模式,注重对学生平时表现的记载和在最终成绩中所占的比例。学生的成绩由作业成绩、课堂表现、小组答辩成绩、创新程度和期末考试成绩综合评定。第一学期的考核方式为考试,考试形式为开卷,分理论考试和上 机考试两部分,成绩评定方式为:平时占30%,理论占20%,机考占50%。突出对学生实践能力的考核。采用开卷考试有利于学生从纯粹的语法认知,转变为对算法的积累和理解,有利于逻辑编程能力的培养。第二学期的考核方式为考查,成绩评定方式为:平时占30%,期末占70%。期末考核采用小组答辩的形式。根据小组答辩情况给出组的总体成绩,再根据每位学生的自身表现和在项目中的贡献,最终给出每位同学的成绩。这样的考核方式有利于培养学生的团队协作能力和沟通能力,贯彻公平性原则。有助于学生改变学习方式和学习侧重点,将更多的精力集中于实践能力的培养。
6 丰富教学方法和教学手段,提高教学效果
联系课程实际和学生现状,采用多种教学方法进行教学,改变教师讲、学生听的老模式,组织观摩,推广教学名师的成功经验。在教学过程中依托多媒体和网络技术,运用现代化教学手段,提高授课质量。特别是对于难于理解的知识点通过Flas进行展示,主要涉及函数调用、递归方法、指针概念、链表建立等。特别注重教师教学的逻辑性和严密性。将项目实训完全移至实验室,通过教师的分模块提示,引导学生逐步完成程序的编写。请软件协会的优秀学生参与c语言实践教学的辅导。一方面提高了实践教学的效果,另一方面也培养了软件协会学生的实践能力和表达能力。
7 加强校企合作,进一步明确学习目的
不少学生反映,c语言已经过时,现在已进入面向对象时代,C语言的作用己不大,对学习本门语言的目的不够明确。为此,我们邀请企业资深的工程师,为学生做讲座,探讨c语言的相关领域的应用背景,以及企业对c语言人才的需求与学校C语言教学之间的差异,为学生对c语言的进一步学习指明了目标。如我院与昆山中创集团和花桥安博集团建立良好的合作关系,就程序代码编写规范以及C言语实训等内容进行了广泛的交流合作。我院引进了企业项目的基本流程,使学生所学知识更符合社会的需求。
8 构建协同学习情境,建立C语言研究型教学实验区
我院对两个专业机房进行了改造,建立c语言研究型教学实验区。将整个机房分成六个小组,每组两台计算机,每组六名同学,为每位同学设立了桌卡,选举组长一名,每组配备黑板一块,并为整个实验室配备了资料柜,存放c语言的相关学习材料。从而为同学之间的协同学习构建了良好的环境。