前言:中文期刊网精心挑选了程序设计范文供你参考和学习,希望我们的参考范文能激发你的文章创作灵感,欢迎阅读。
程序设计范文1
关键词:Visual Basic程序设计 改革与创新
中图分类号:G71 文献标识码:A 文章编号:1007-9416(2012)10-0229-01
1、课程发展历史沿革
《Visual Basic程序设计》主要讲授Visual Basic程序设计语言的基本知识、程序设计的方法与技术,结合高职学院学生的特点设计该课程。这是一门实践性很强的课程,通过该课程的学习,使学生掌握面向对象程序设计的基本思想和方法。一方面向学生传授程序设计语言基础知识和程序设计的基本理论与方法;另一方面将系统地训练学生逻辑思维能力与逻辑推力能力,培养学生分析问题、解决问题的能力,以及运用计算机解决实际问题的能力。Visual Basic程序设计语言是在早期Basic语言基础上发展起来的,是真正的面向对象编程语言,它继承了结构化编程语言的所有优点,在其语言体系中既包含了面向过程部分的语言特征,又形成了极为完善的对象处理机制、方法,并提供了可视化操作界面,进而形成了一种面向对象编程语言的规范。
2、《Visual Basic程序设计》改革与创新
2.1 应用现代教育技术,推动教学手段现代化
针对高职院校硬件设施配备情况,本课程的教学应在多媒体教室、微机室进行。由任课教师编写电子课件,改变传统的“黑板+粉笔”的教学模式,增大课堂教学的信息量,便于案例教学,使讲授内容形象、直观,便于学生理解掌握。
2.2 针对高职院校学生的特点,开发网络视频网站
高新科技和计算机的飞速发展,给人们带来了更多的便利,开展网络教学已成为学校教育面临信息时代的必然选择。该课程的视频教学将知识学习与网络联系在一起,具备课程学习和自测两个大的功能。通过开发网络视频网站,为学生和学校建立了B/S结构的网络教学体系。
3、《Visual Basic程序设计》方法的改革与创新
3.1 做好本课程的入门教育,调动学生学习积极性
本课程是面向对象程序设计的入门课程,应对学生讲明该课程对后继课程的帮助,强调该课程的重要性。对于非计算机专业学生而言,该课程是零起点,但程序设计难学的观点已对他们有所影响。因此,授课前,向学生们讲明在第一层次《计算机应用基础》课程中仅仅是掌握了应用软件的使用,作为大学生专业素质的补充,应掌握设计、开发应用软件的技能;通过案例演示,激发学生的学习兴趣与积极性。
3.3 改革程序设计教学方式,提高学生的动手能力
通过该课程的学习,培养大学生用计算机的方法分析问题、解决问题的能力,为各专业的后续课程学习以及生活和工作打下良好的技能基础。例如将一个一维数组反序放置:a=(67,89,76,98,66),反序放置后a=(66,98,76,89,67)。编程如下:
Option Base 1
Private Sub Form_Load()
Dim a(5),b(5),nn,i,n
a(1)=67
a(2)=89
a(3)=76
a(4)=98
a(5)=66
Nn=UBound(a)'统计数组个数
'反向复制数组到B
For i=nn To 1 Step-1
N=n+1
b(i)=a(n)
Next
'复制数组到A
For i=1 To nn
a(i)=b(i)
Next
显示结果:
For Each i In a
Debug.Print i
Next
End
End Sub
3.4 课堂讲授与上机实践相结合
通过本课程的教学,使学生掌握面向对象程序设计的基本概念,了解程序设计的基本原理、技巧和方法,并且能够基本掌握IDE集成开发环境使用方法,学会图形用户界面简单应用系统的开发技术,掌握Visual Basic基本对象、属性、方法和事件的基本概念,并能以Visual Basic作为工具,完成简单程序设计的程序代码编写。如:Dim a,b As Integer
For a=100 To 300
If b Mod 5=0 Then Print'判断是否PRINT 5个数了?如果是则换行
Print a,
b=b+1'统计PRINT的个数
Next a
3.5 开展教学经验交流,提高教学水平
学期期间的教研活动重在教学方法和教学经验的交流上,教研室不定期地组织年轻教师听老教师讲课、互相听课和集体备课,研讨教学方法,取长补短。系里组织师生座谈会,了解学生对学习本课程的意见和建议,以对教学方法进行调整,提高教学水平。通过各项教研活动,教学相长,教学效果得到提高。
4、结语
《Visual Basic程序设计》是一门实践性很强的专业课,对培养学生的逻辑思维能力和解决问题的能力具有重要作用,其主要目的是培养学生的专业技能和职业综合素质。因此,如何改革、创新该课程的教学,提高教学质量,为社会培养出既具有丰富的理论知识,又具有较高的分析、设计、开发技能的专业人才,是一个噬待解决的研究课题。
参考文献
[1]刘书珍.探究新的教学方法在VB可视化编程中的应用[J].科海故事博览·科教论坛,2011,(10).
[2]陈龙猛.大案例教学法在Visual Basic程序设计教学中的探究[J].计算机教育,2008,(5).
程序设计范文2
关键词: PLC 设计步骤 编程技巧
可编程控制器是以微处理器为基础的新型工业控制装置,它采用可编程序的存储器,用来在其内部存储执行逻辑运算、顺序控制、定时、计数和算术运算等操作的指令,并通过数字式、模拟式的输入和输出,控制各类机械或生产过程。梯形图程序设计是可编控制器应用中最关键的问题,也是高职学生难以掌握和接受的问题,在教学当中总是会有许多学生遇到PLC程序设计时无从下手的问题。其实只要掌握方法,理清每个控制系统的设计思路,再难的设计项目也能设计出来。我结合教学经验谈谈PLC教学中的程序设计技巧。
一、程序设计步骤
1.分析被控对象及控制工艺要求,确定控制方案,确定系统外部输入设备和输出设备的个数,以确定PLC的I/O点数。
2.对系统进行端口分配,并画出PLC的I/O接线图。
3.编写梯形图。
4.将梯形图转换成指令表后传送到PLC控制装置,并根据端口分配连好外部接线。
5.对程序进行修改和调试,直到满足控制要求。
以上是PLC控制系统设计的步骤,学生往往不按这样的步骤来执行,常常导致端口与程序中的编程元件不对应。其中梯形图的设计是系统程序设计的重点,也是学生难以掌握的难点,下面就以上PLC程序设计步骤结合三菱的控制案例进行PLC程序设计技巧的说明。
二、系统设计案例说明
1.液体混合控制控制要求
(1)按下启动按钮后,电磁阀Y1、Y2打开,注入液体A与B,液面高度为L2时(此时L2和L3均为ON),停止注入(YI、Y2为OFF);同时开启液体C的电磁阀Y3(Y3为ON),注入液体C,当液面升至L1时(L1为ON),停止注入(Y3为OFF);并同时开启搅拌机M,搅拌时间为10s,之后自动开始加热,当温度达到要求时(手动操作),电磁阀Y4开启(ON),排出液体,当液面高度降至L3时(L3为OFF),再延时5s,Y4关闭。接着,电磁阀Y1、Y2打开,重新注入液体A与B,如此循环动作,直到按下停止按钮。
(2)按下停止按钮后,系统完成当前的操作后,停止在初始状态,按启动按钮后可以重新开始工作。
(3)当Y1、Y2及Y3阀门分别得电30s后,液面仍没有变化,表明Y1、Y2和Y3出现故障,这时要求指示灯HL1、HL2分别闪烁报警,5s后将系统立即关闭停止报警并回到初始状态。
2.设计原理分析
为了用PLC控制器来实现任务,PLC需要6个输入点,8个输出点,输入输出点分配如下。
(1)端口分配。端口分配对于初学者来说是一个难点,他们往往对输入和输出设备分不清楚,其实只要记住输入只是控制系统得以运行的条件就可以了。有开关量和模拟量,常见的设备有:按钮、开关、行程开关、限位开关、光电开关、液位继电器、压力继电器等。而输出就是控制系统控制过程当中的一些动作,常见的设备有控制电机的接触器、电磁阀、信号指示灯、蜂鸣器、加热器等。只有端口分配完成并正确之后,我们才可以利用PLC内的编程元件对控制系统进行完整的控制。本例的端口分配表如下:
根据以上端口分配设计出相应的外部I/O接线图即可进行外部接线。
(2)梯形图设计。PLC程序设计的方法很多,但我们教学当中常用的就是经验设计法和顺序功能图的设计方法。其中经验设计法是在典型电路的基础上面进行修改而达到控制要求的方法,故这种方法具有很大的试探性和随意性,通常用于简单控制系统的设计。而顺序功能图的设计法是按照控制系统工艺流程,用转换条件控制代表各步的编程元件,让它们的状态按一定的顺序变化,然后用代表各步的编程元件去控制PLC的各输出继电器的设计方法。这种设计方法对于设计复杂的控制系统比较简单,容易被学生所接受。
此实例根据控制要求的分析,这是一个典型的混合物生产工艺过程,可采用顺序功能图来设计,但是其中有一些特殊的情况,如在控制过程当中需要按停止按钮,而系统必须要等加工过程全部完成才能停止运行;出现系统故障时要灯光闪烁报警等问题。我们可以采用经验设计法来结合实现。
①第一步顺序功能图设计。根据控制要求(1),首先将液体混合装置进行混合的这个工作周期分成注AB液体、注C液体、搅拌、加热、排出液体、延时排液等6个阶段完成,再加上初始步骤,一共有7步完成,这个我们可以采用顺序功能图的单序列列出。但控制要求(3)有注A、B液体和C液体故障时分别闪烁报警延时返回的两种特殊情况,故有二条支路返回,从而构成了选择序列顺序功能图。再找到每个步之间的转换条件,根据液体混合过程当中转换实现的条件和转换要完成的操作的内容,设计出顺序功能图。以下是采用S编程的步进设计法来实现的,只要将该顺序功能图转换成步进梯形图即可。
②经验设计法设计系统停止电路和闪烁电路。在控制要求中,停止按钮X4的按下并不是按顺序进行的,在任何时候都可能按下停止按钮,而且不管什么时候按下停止按钮都要等到当前工作周期结束后才能响应。而停止按钮X4的操作不能在顺序功能图中直接反映出来,因为停止按钮是瞬时信号,必须采用具有记忆功能的电路将该停止停号保存起来,故这里采用了M0的自锁电路(梯形图如下),可以用M0的常开常闭触点间接表示出来。如果系统中要求按下停止按钮后立即停止,按下启动按钮后能从该步运行的话,也可采用此电路中的M0的常闭触点与每步的步进触点相连即可实现此功能。
系统中的闪烁电路可以在闪烁步骤中串入PLC内部提供的时钟脉冲特殊辅助继电器常开触点M8013来实现。
③编写梯形图。将①的顺序功能图转换成步进的梯形图,再将②的梯形图放到1的梯形图的前面,这样,顺序设计法和经验设计法设计的梯形图就有机的结合在一起共同实现混合液体装置的控制过程。我们常常会碰到类似的复杂系统,往往用一种方法不能实现控制要求,我们不妨采用顺序功能图与经验设计结合的方法来实现。
(4)接线并运行调试。在编程软件上画出梯形图并传送入PLC内部,根据端口分配连接好外部接线。按控制要求顺序进行调试和修改,直到系统功能得以实现。
三、结语
本文结合PLC控制系统的设计步骤对PLC程序设计进行了大概的分析,教会初学者掌握程序设计的基本设计思路,在混合液体装置的梯形图设计中,合理地采用了学生易接受的顺序控制设计法和经验设计法结合的设计方法,使设计程序更完善、更简单、直观。虽然这只是PLC教学众多实例中的一个,但它具有代表性,包含了PLC教学当中程序设计的全过程及常用设计方法。通过这个实例起到举一反三、触类旁通的作用,帮助初学者克服PLC程序设计难题,全面提高设计能力。
参考文献:
[1]吴明亮.电气控制与PLC.黄河水利出版社,2009.
[2]廖常初.可编程控制器应用技术.重庆大学出版社,2008.
[3]瞿彩萍.PLC应用技术(三菱).中国劳动社会保障出版社出版社,2008.
程序设计范文3
>> C语言程序设计案例教学法研究 以程序案例为导向的《C语言程序设计》的教学研究 C语言程序设计教学探讨 C++程序设计浅析 C程序设计教学的新宠 高职院校《C++程序设计》 C语言程序设计教学研讨 《C程序设计》教学心得 浅议C语言程序设计教学 C程序设计课程教学探讨 C语言程序设计教学 浅谈C程序设计教学 C语言程序设计教学探索 “C++程序设计”课程改革 《C++程序设计》教材介绍 C程序设计教学初探 C程序设计教学探讨 《C语言程序设计》教学实践 C高效程序设计的技巧 C++程序设计教学探讨 常见问题解答 当前所在位置:l),其中罗列了一些优秀的开源C++项目。4) 开源中国社区(/ project/ lang/21/c)。
我们初步筛选出了以下8个开源项目:1) C++程序开发框架Qt;2)以3D方式显示函数曲面的K3DSurf;3)比Windows 自带的Notepad更优秀的Notepad++;4)游览宇宙星体的教育软件Celestia;5)能够检测C++程序中逻辑错误的CppCheck;6)能够快速浏览大型源代码系统的Source Navigator;7)能够显示Windows目录、逻辑盘使用情况的WinDirStat;8)能够显示与合并目录/文件差异的Winmerge。
2评估指标
我们依据以下指标对每个候选案例进行定量化评估。
2.1学生兴趣
从教育心理学角度看,如果学生对一个案例感兴趣,他们就会主动去学习与该题目相关的其他领域知识,也会更积极地去研究课程知识是如何被应用到该案例中去的。我们调查了南开大学软件学院114名本科一年级学生对这8个开源项目的兴趣程度。首先我们演示了这8个开源软件各自的功能,再让每个学生独立的填写一个问卷调查表。每个学生对一个项目感兴趣的程度用数字1~5表示,5表示最感兴趣,1表示最不感兴趣。最后我们将所有学生对一个项目的兴趣程度取均值。
2.2代码规模
作为本科生的课程设计或者实训项目,往往要求学生在1个学期之内的时间完成。如果案例本身代码太多,学生们将无法在有限的时间里完成案例的学习。另一方面,如果案例本身代码太少,将无法展示相关课程内容在实际项目中的应用情况。我们需要在二者之间进行折中,依据软件代码行数(LOC,Line of Code)以及软件中类型数量来评测一个项目的代码规模。
2.3代码质量
精确地评估一个软件系统的代码质量是比较困难的,这需要专家仔细研读软件的源代码、文档,理解并评估其软件系统设计,判读其可扩展性、可移植性、模块化的程度,评判其代码是否符合C++代码规范的要求,评测其运行时的性能、健壮程度等。8个候选题目的代码总量大约为53万行,进行人工的评估显然是不现实的。我们选择了以下两个子指标对一个软件项目的代码质量进行评估:
1) 代码中注释部分的比例。适当比例的注释可以提高代码的可读性,同时也表明了编程人员编写代码比较仔细、严谨。
2)LCOM度量(Lack of Cohesion of Methods)。好的内聚性(Cohesion)是一个高质量软件系统必须具备的。所谓内聚性,是指一个类的成员变量和成员函数之间的耦合程度。虽然有多个度量来评测内聚性,我们选择Henderson-Sellers提出的Lack of Cohesion of Methods (LCOM-HS) [7]。该值越大,表明一个类的内聚性越差;越小则表示内聚性越好。其取值范围为[0,2]。
2.4C++技术的应用
由于案例教学的目的是要求学生熟练应用C++以及相关面向对象技术进行软件开发,所以我们要求所选案例本身能够尽量全面的覆盖C++的各个方面。我们选择了3个子指标:
1) 一个项目所使用的名字空间(namespace)的个数。在一个中、大型软件项目中,合理使用名字空间可以有效避免名字冲突,提高软件系统的模块化程度。
2) 一个项目所使用的模板(template)的个数。C++除了具有所有面向对象编程的特性之外,现代的C++程序开始大量使用模板来实现泛型编程(Generic Programming)的思想。对模板的适度使用,可以使得一个相关模块更加通用,更易扩展,能够最大程度地达到代码复用的目的。
3) 继承。类的继承也可以达到代码复用的目的,也是C++程序设计中实现多态性的必要条件之一。
3评估工具及运用
有以下工具可以评测C++代码的规模与质量:
1)SourceAudit(),由Front EndART公司开发。
2)Telelogic 公司的logiscope。
3)CppDepend(),能够对C++程序进行60多个指标的测量,其中有些是关于代码结构的(如class、namespace的数量),有些是关于代码质量的(如程序注释比例、内聚性、项目稳定度等)。该工具还可以直观地显示程序模块、类、函数之间的依赖性。CppDepend将被分析程序的代码当做数据库来处理,允许用户使用一种代码查询语言(Code Query Language,CQL)来灵活地分析程序代码。由于该工具小巧(约8.6M字节)、灵活(支持CQL语言)、被允许在学术机构中免费使用,我们选择该工具来对课程案例进行评估。
部分评估指标在CppDepend生成的html格式的报告中可以直接找到,而有些评估指标需要用户创建CQL语句,提交给CppDepend完成查询。CQL和SQL相似,其格式为SELECT TOP FROM WHERE ORDER BY。如为了查询一个软件项目中有哪些函数的代码超过200行,可以使用下面的CQL语句。
SELECT METHODS WHERE NbLinesOfCode > 200 ORDER BY NbLinesOfCode DESC
其中METHODS表示代码中的函数,NbLinesOfCode表示函数体内的代码行数,DESC表示降序排列。
需要使用CQL语句计算的评估指标如下。为了查询一个C++项目中的继承数,我们使用下面的CQL语句。
SELECT TYPES WHERE NbBaseClass >0
其中TYPES表示一个C++项目中定义的类型,比如类、结构体、联合体等。
为了查询一个C++项目中内聚性较差的类的名称与数量,我们使用下面的CQL语句。
SELECT TYPES WHERE LCOMHS > 0.95 AND NbFields > 10 AND NbMethods >10 AND !IsGlobal ORDER BY LCOMHS DESC
其中LCOMHS表示Henderson-Sellers定义的LCOM度量,NbFields表示一个类的成员变量的数量,NbMethods表示一个类的成员函数的数量。
4评估结果
依据以上指标,我们对各个候选案例进行定量分析,结果如表1。由于整个Qt软件系统的总代码规模、复杂程度远远超过本科生的理解能力范围,我们选择了其核心模块QtCore以及经常被开发人员使用的QtGui作为评估对象。表中,LOC表示代码行数(Line Of Code),Types列显示的是各系统中类型的数量,Comm列显示的是注释行数量与总代码行的比值,LCOM列表示内聚性差的类在所有类型中的比例,NSpace表示namespace的数量,templates和inherits分别表示各系统所使用的模板与继承的数量。
从“学生兴趣”指标上看,学生们最感兴趣的是Qt软件包,这可能归因于该软件包的示例程序展现了Qt具有强大的图形/图像处理功能。学生们其次感兴趣的是K3DSurf,可能是被该软件所展现的精美的数学函数曲面所折服。学生们最不感兴趣的是Winmerge,这可能是由于在他们有限的软件开发经历中,尚未遇到要比较两个目录的问题。假如被调查对象是具有多年工作经验的程序员,他们可能对Winmerge更感兴趣,因为该工具可以快速地找出一个软件的两个开发版本的异同。
从“C++技术的应用”指标上看,Qt、Celestia和Winmerge都大量的使用了名字空间、模板、继承,表明这3款开源项目更适合作为课程案例来使用。由于学生们对Winmerge的兴趣较低,我们候选案例清单缩减为Qt和Celestia。
就Qt而言,即使我们只选择了其中的QtCore及QtGui模块,代码规模仍然高达22万行。因而,我们选择QtCore作为详细剖析的案例对象,而对QtGui只做粗粒度的剖析。这样,候选清单中的竞争者就成为了QtCore和Celestia。
总体上,QtCore和Celestia具有旗鼓相当的指标值,只是学生们对Qt的兴趣程度稍高,QtCore的注释比例最高。作为一个C++程序开发框架,QtCore的软件体系应该比较抽象,所以它所使用的模板数量要高于Celestia。
5结语
本文设计了一套定量化的评估指标,使用代码查询语言(Code Query Language,CQL)及代码分析工具CppDepend对8个开源项目进行了定量评估,给出了适合于课程C++程序设计的候选案例,可供各高校在相关课程的案例教学中参考。
注:本文得到南开大学教务处、软件学院“08 年教学改革专项”(2009-2~2010-12)的大力支持。
参考文献:
[1] Bruce Eckel. Thinking in C++[M]. 北京:机械工业出版社,2001.
[2] Stanley B Lippman,Josée LaJoie. C++ Primer[M]. 北京:人民邮电出版社,2005.
[3] Bjarne Stroustrup. The C++ Programming Language: Special Edition[M]. 北京:高等教育出版社,2001.
[4] Scott Meyers.Effective C++[M]. Greater Boston Area :Addison-Wesley Professional,2005.
[5] 陈艳华,余健,雷志军. Visual C++.NET课程设计案例精编[M]. 北京:清华大学出版社,2008.
程序设计范文4
1多核计算技术的概述
随着新材料的应用和新技术的发展,VLSI技术取得长足进步,在单个芯片上集成多个处理器核心构成多核处理器已经成为处理器技术的主流。按计算内核的对等与否,CMP可分为同构多核和异构多核。计算内核相同,地位对等的称为同构多核。然而,一般认为处理器通用核的数目在超过16个后,再增加通用处理核的数目就难以带来更大的性能提升。于是出现了一些为特别任务专门定制的专用处理核,包括面向科学计算等的“领域专用核”、图形图像处理和数字信号处理(DSP)等“行业专用核”。这些专用核的体系结构利用特定应用的特征进行定制,从而达到定制应用的高性能和高效率。
从2005年出现的英特尔与AMD的双核处理器、2006年推出的4核处理器到2007年2月英特尔公司展示的80核处理器,处理器中集成核的数目呈现迅速增多的趋势。除此之外,具有更多核和不同功能核的处理器也在研发,例如整合了1025个简单处理器的芯片Kilocore,包括1024个8位处理器和1个Power PC核。
伴随着多核处理器的发展尤其是处理器核数目的增加与处理器核功能的变化,在体系结构、软件、功耗和安全性设计等方面,巨大的挑战也随之而来。处理器的发展使得原有面向单核或者多处理器的软件架构不适于在单芯片多处理器的硬件结构上充分利用多计算核心的能力,需要相应的软件层面的共同发展。为此,软件结构的变化尤其是针对多核硬件体系结构的程序设计成为有效发挥多核计算能力的重要方面。
为了适应技术的发展,为社会培养合格的计算机人才,在大学计算机教学中开设相应的多核计算课程势在必行。计算机方向课程的开设尤其是教材的设计,不仅要注意到满足完善学生知识结构,适应计算机技术迅速发展的情况,同时也需注意到社会对于多核计算技术方面人才的需求,通过合理的设计,满足知识更新与就业两方面的要求。
2多核课程设计
多核计算技术的发展使得计算机教学发生了变化,这种变化主要来自于多核计算技术所带来的新的知识点。这些新的知识点主要包括:多核SOC芯片技术;多核芯片与传统单核微处理器、SMP的区别;多核下的各种硬件设计技术(Cache与存储一致性、网络互连、IO管理);并行体系与多核体系结构;典型多核芯片介绍;嵌入式多核芯片技术;多核平台结构与芯片组支持技术(包括固件技术);多核操作系统;多核系统软件对并行编程的支持;多线程编程对多核的支持;多核多线程编程技术(主要是关于Windows与Linux操作系统);OpenMP对多核的支持;多核平台上的编译工具与编译优化技术;多核API优化函数库;多核多线程程序的性能评测工具与方法。
这些新知识点的出现,使得越来越多的高校开设多核课程以适应技术的发展与多核时代对高校计算机人才培养的新需求。例如,美国计算机专业最好的CMU、MIT、Backley、Harvard和Stanford五所高校,均通过增加新的课程或者在原有课程内容中增加多核内容的方式,以适应多核计算机的出现与发展。
因此,综合考虑上述因素,并参考国外高校的课程开设方式,浙江大学开设了自己的多核课程。浙江大学以学校计算机教学的实际情况为基本出发点,让学生了解当前计算机芯片设计领域中新兴多核体系设计的基本原理、技术难点、目前发展状况,以及对计算机领域带来的相关影响等,以通过建立体系经典理论研究和实际的发展方向之间的桥梁,为将来从事体系结构领域、系统软件领域以及相关领域的高水平研究打好扎实的基础。这是浙江大学多核计算课程设计的目标,也是我们教材设计的主要目的。
通过分析多核的知识点,浙江大学将多核计算课程分成了两个层次:以编程训练为主的本科多核计算课程和以编程为基础以多核理论与发展为主要内容的研究生课程。本科课程的名称为并行计算与多核编程,作为专业选修课程。多核的本科课程完全以编程训练为主,结合多核编程工具,通过编程作业锻炼学生对多核编程能力的培养。对于研究生课程,名称为多核计算,主要着眼于当前多核技术的研究热点和多核技术的高级课题,在研究生的体系结构课程和超大规模集成电路基础上作进一步提高,结合操作系统、编译原理、编程方法等交叉学科,介绍在体系结构上的多核理论与相关学科对此的相应发展。
3多核课程教材设计
3.1概况
由于多核计算技术相对较新且仍在不断发展,目前国内外多核计算方向的著作以科学论文为主,偏向于研究与探索,浙江大学结合科研的实际情况,由任课教师采用科学论文作为研究生课程的主要教学材料。
而对于基础教材而言,由于多核计算方面的书籍还是刚刚起步,因此可供选择的余地较少。此外,由于多核计算是一门动手能力和理论要求都很强的课程,需要更加重视实践环节,为学生设计实践训练,同时,目前多核底层调优软件是由英特尔公司推出,能实现多核的编译、运行库、性能测试、多线程检测与优化,对多核教学帮助极大。因此,浙江大学采用了基于英特尔的软硬件,作为实践的基础培训。有鉴于此,目前浙江大学的多核课程2006年使用的教材是由英特尔公司的(孟加拉)Shameem Akhter与(美)Jason Roberts撰写、Intel出版的《Multi-core Programming: Increasing Performance through Software Multi- threading》,2007年3月电子工业出版社推出了由李宝峰、富弘毅、李韬三位博士翻译的中文版,我们参与了该书的审稿工作。该书是国内第一本全面讲解多核程序设计的书,同时,由于它介绍了基于Intel多核平台的性能评测和调优工具,相对适合于目前的教学。
由于该书的作者是英特尔的平台结构师与软件工程师,尽管参与了多核处理器的架构与软件设计,对多核计算技术了解非常深入,但是其写作目的与风格均是工程师写给工程师的书,并不适用于大学教材。与此同时,由于多核计算技术毕竟是正在发展当中,目前国内外的确缺乏多核编程的教材。
3.2《多核程序设计》
为了适应多核计算技术的发展,促进国内多核课程的建设,浙江大学、清华大学、北京大学、复旦大学、上海交通大学合作编写了《多核程序设计》教材,将于2007年7月由清华大学出版社出版。清华大学、北京大学、上海交通大学、复旦大学分别在2006年秋冬学期,开始开展多核方向的教学。
本书的主要目的是作为多核计算课程的教材使用,而从对多核技术知识点的分析可以发现,适合作为教材编写的主要是多核体系结构程序设计的相关内容,因此本书在编写时以多核计算技术的基础知识概论为基础,以多核程序设计方法为骨干,主要包括基础并行程序设计方法、多线程基础、利用线程API进行程序设计、OpenMP与MPI,以及多线程应用程序的调试和测试工具的使用等,以帮助大学生学习编写多核体系结构下高性能程序代码。
本书共分为八章,以多核技术导论为始,以多核软件工具介绍为终,分别覆盖了基本的多核体系基础、并行计算基础、多核体系下线程理论、Windows与Linux多线程编程与调优、OpenMP多线程编程与调优、MPI多线程编程与调优和多核软件工具的使用。从结构上看,本书的内容主要包括三个方面:
(1) 多核理论。这部分内容包括了本书前三章的内容。第一章为多核技术导论,简要介绍微处理器发展史、并行计算机、超大规模集成电路与系统芯片发展、片上多核处理器架构与典型多核芯片架构、芯片组对多核的支持,以及操作系统对多核处理器的支持方法。第二章是并行计算基础,介绍并行计算机体系结构、并行计算模型、进程与线程、并行编程环境、并行编程语言与编译器、并行计算性能评测,并介绍常用并行数值算法,例如并行矩阵乘法、线性代数方程组并行求解方法、快速傅立叶变换。最后介绍并行编译器。第三章详细介绍线程的基本概念,包括多线程的概念,用户级线程和内核级线程,多线程的映射模型,线程的生命周期,多线程环境下的进程控制语义,以及线程的同步,包括互斥量(mutex)、信号量、条件变量、锁的粒度与死锁。
(2) 多核编程与调优。包括了本书第四至七章的内容,分别讲述了不同操作系统与不同多线程编程技术下,怎样进行多线程编程和调优来充分利用多核处理器的效率。其中第四章是教学生如何在Windows下通过多线程方法进行多核编程及调优,首先介绍了Windows线程库,然后通过例子介绍了使用win32线程API进行线程创建、管理、终结,并介绍线程执行和资源存取方法,以及多线程调试与优化技术,包括调试、跟踪、线程命名等。第五章介绍了在Linux下使用多线程进行多核编程及调优的方法,与前一章类似,首先介绍POSIX线程库Pthreads,然后是结合例子介绍基本线程的操作与线程的属性,最后是使用GDB 调试线程以及线程的调优。第六章介绍OpenMP编程及性能优化方法,结合使用Microsoft Visual 2005教育学生如何编写OpenMP程序,并教育学生使用OpenMP编写多线程应用程序的技巧,包括循环并行化、并行区域编程、线程同步,最后分析OpenMP多线程应用程序的性能。第七章是MPI编程及性能优化,介绍了最常用和稳定的MPICH安装和配置过程,并详细介绍了MPI编程基础知识与MPI群集通信、MPI程序排错方法与性能分析优化方法。最后简要介绍了MPI-2。
(3) 多核软件工具。包括了本书第八章。由于目前的多核软件工具基本上是由英特尔公司开发并提供教学使用,因此本章的工具介绍基本上以英特尔的各种调优与性能分析工具为主,这既符合目前的实际教学状况,也符合社会需求。第八章所介绍的多核软件工具包括编译器对多核的支持、VTune性能分析器、MKL数学核心函数库、Thread Checker线程检查器、Thread Profiler线程档案器的使用与实验。
由于多核课程是对动手实践能力要求高的一门课程,在进行教材设计时,除了上述的书面教材之外,还需要设计配套的实验教案等实践教学内容。因此,本书在编写时也设计并实现了完整的教案、实验代码与实验环境,以便多核教学的正常进行。
《多核程序设计》一书体现了在本文第二节多核课程设计提出的多核课程教学的目标,结合了五所大学进行多核课程教学的教师们的经验。我们将对《多核程序设计》一书的设计思想与结构展现在此,希望能够起到抛砖引玉的作用,为国内高校的多核课程建设提供一个完整的教学过程示范,推动大学开展多核程序设计课程。
程序设计范文5
[关键词] Java课程;改革思路;实践技能
当前,Java已经发展为一个覆盖面广、效率高、易用性强的技术平台与行业工具,Java也是IT类各职业从业必要条件,所以几乎所有高校都相继开设了《Java程序设计》等相关课程。但由于Java 语言的实践性强和开发环境的特殊,怎样教好Java语言,便成为了计算机教学中一个值得探讨与研究的问题。
通过本人的实际教学,发现该课程在教学过程中存在以下问题:
第一,学生普遍反映Java很难,害怕学习Java语言。由于是大一新生,在入学前没有任何语言基础,对于Java语法级别的学习还比较容易接受,例如基本数据类型、运算符、程序控制结构等。但是Java是面向对象的语言,需要学生用面向对象的概念进行思考和设计,这对于大多学生来说是一种挑战,很多学生反应不知该如何理解“面向对象”,而且程序设计要求学生具有很强的逻辑思维能力、思路清晰,这对一些学生造成了学习压力,进而导致害怕编程。
第二,实践教学不够,忽略了学生实用技能和动手能力的培养。语言课程主要是学习用计算机解决问题的思考方法,培养编程应用能力。但在教学过程中,往往讲解语法细节就占用了大部分课时,而且很难把一个编程问题分解成结构良好的Java程序,让学生思考如何解决。另外在教学的过程中缺乏实际的项目教学,学生的动手能力得不到培养与提高。
针对以上的问题,本人谈谈自己的一些观点。
1、对于第一个问题,根据本人多年讲授编程语言类课程的教学经验认为:应该直接讲面向对象的程序设计,即直接讲授《Java程序设计》,不需要先讲《C语言》作铺垫。学习一种编程语言,最重要的是掌握其编程思想,找到编程感觉,一旦掌握了编程思想,只要简单了解该语言的语法特点便可触类旁通。而编程思想是在反复的实践、观察、分析、比较、总结中潜移默化积累的。直接接触面向对象的思想与方法,其特点是首先学会将人类的自然思维方法用于程序设计,建立系统与全局的观念。然后,在实践环节和后续课程中,不断学习各种算法、训练编程技巧。在实际教学中,强调完整的应用系统设计思想的建立,让学生从简单的实例出发,掌握编程的一些常用结构和实例算法,逻辑能力就相当于理论指导,实例算法就相当于实战经验,然后逐步提高难度,以减低学生的学习难度。这样安排课程的好处是首先学习高度抽象的思维方法,建立系统和全局的观念,为后续学习奠定思想方法的基础。
解决第一个问题的另一个方法就是培养学生的编程兴趣。兴趣是最好的老师,在知识学习过程中,有没有兴趣,学习的效果是截然不同的。一般来说,学生在第一堂课时学习状态是积极的,兴趣也很浓厚,为此我们抓住学生的这种心理,在第一次上课时就要激发学生的求知欲。在Java语言教学书本上,难免有许多书都是讲述Java语言的发展或特点,但是对于一个还没有体验过Java语言的初学者,这样的讲解可能会使学生的学习兴趣逐渐减少.甚至一下就失去了学习激情。从第一堂课开始,就引入案例教学,以项目为导向,以模块为驱动,围绕项目把语法和规则渗透到教学过程中,可以让学生更好地理解面向对象的编程思想,活跃课堂气氛,提升教学效果,激发学生的学习热情和能动性,提高学生分析问题和解决实际问题的能力和团队协作精神,增强课程内容与职业岗位能力要求的相关性,使Java课程的教学真正达到学以致用的效果。案例要浅显易懂,实用价值高,案例的安排注意循序渐进,案例中对一些程序设计中的原则、方法、经验以及一般规律进行提炼总结,从而进一步启发学生的编程思路。
2、对于第二个问题,《Java程序设计》是一门集知识和技能于一体,实践性很强的课程,教学中应注重上机实践,上机的过程既是对课程内容的实践,也是应用编程的开始。根据编程语言的教学特点,应采用边讲边练的方法来讲授。教学内容以“必需、够用”为度,在理论讲授后,紧接着是上机实训,使学生的理论知识的掌握与实际操作技能的提高相互促进。目前我系开设Java语言课程的专业理论与实践教学时数的比例为1:1,本人在授课过程中,结合了许多上机实例,使用“任务驱动”的方法让学生在“任务”的驱动下学习,由简到繁、由易到难地完成一系列“任务”,从而提高操作能力。在分析程序时,利用软件实时调试与运行,让学生感受程序的运行过程,使教学更具直观性和互动性,提高学生的求知欲与学习兴趣。教师要根据学生的实际,精心布置一些能够提高学生动手能力与创新能力的课后练习和课后实训课题,使得理论教学和实践训练交替进行,让学生自己动手去完成一些简单的项目,使得学生在解决问题的过程中获得成就感及信心,从而发挥学生的主动性和创造性,提高学生独立思考问题、分析问题、解决问题的能力。
另外,我在讲授本课程的同时经常鼓励学生多阅读、多调试一些优秀的源码,这对自我提高、开阔视野非常重要。很多学生学Java就是看书、听课,当时是明白了,过后马上就忘记了。应该养成多敲键盘的习惯,即使有时候所敲的代码不太明白,可以先运行,看看结果,增加感性认识,然后再上升到理性的认识。久而久之,学生便会了解开发项目的基本流程,为日后从事Java领域的开发工作打好基础。而且我认为开发环境的选择很重要,我系在Java教学中开发环境的递进是:先使用记事本和JDK,再利用Eclipse。如果一开始就利用Java的集成开发环境进行教学,不利于对基本语法的掌握。总之,教师应多与学生交流,了解学生知识与教学方面的需求,加强师生互动,给学生充分的自由空间,尽可能提供完善的软件、硬件设备及其他教学条件,包括高质量的教材参考书、课程标准、课程实训指导、习题集等,为学生课后自学提供便利。
Java作为一门实践性很强的学科,教学过程当中,一定要围绕提高学生实践应用能力展开,注重面向对象编程思想的培养,教学过程中要引入先进教学手段。其实,教学关键在于因材施教,所以文中所提及的措施,也不一定适合所有Java教学活动,但希望能够抛砖引玉,对教学有所帮助。
参考文献:
[1]张席,王志强.国内外Java教学模式的比较与探讨[J].计算机教育,2007.
程序设计范文6
关键词:C/S模式;考试系统;题库;自动组卷;C#
中图分类号:TP311文献标识码:A文章编号:1009-3044(2011)30-7344-03
Design of Program Language Course Examination System Based on C/S model
HAN Yan1,2
(1.College of Computer Science & Information of Guizhou University, Guiyang 550025, China; Guizhou Commercial College, Guiyang 550004, China)
Abstract: According to the characteristics of the Program Language Course Examination, Analyzed the Examination System, introduced the design of 3-tier structure, the design of database, the design of the function module, and the environment of the system,development tools, as well as the key technology.
Key words: C/S model; examination system; exercise library;auto generating test paper; C#
1 绪论
随着计算机的普及,目前在各所高校中,普遍开设有程序设计类课程。对这类课程目前的考试方式主要有两种:1)笔试:题型包括单选题、判断题、程序填空题和编程题四大类;2)作品考试。学生或独立或分组完成某个系统的设计和实现。以上两种方式各有优缺点。第一种方式对学生编程能力的考核存在不足;第二种方式对学生理论知识的考核有缺陷。网络环境下的计算机考试系统来实现程序设计类课程考试,可以结合两种考试方式的优点,通过考试系统既能实现对理论知识的考核,又能提供编程环境,使学生上机完成程序设计题的编写和调试。
2 考试系统的需求分析
计算机程序设计课程要求考生掌握程序设计的基础知识,应用程序设计语言编写小程序的能力。考试系统涉及到四种题型,选择题、判断题、程序填空题和程序设计题。考试系统在试题库中随机抽取试题组卷,考试结束后,提交试卷就能自动评分并保存试卷,既方便教师阅卷,也提高了试卷批改的准确度和速度。教师所要做的工作只是精心设计题目、维护题库。
本系统应该具备以下功能:
1)题库管理功能。教师可以对题库的题目及题型进行录入、修改、删除等相关功能。
2)组卷功能。系统可按考试出题要求为学生自动随机抽取试题库中的题目组成试卷。
3)评分系统。系统可对客观题进行逐个批改。主观题提供老师阅卷界面,显示学生的操作结果与本题的标准答案,老师进行评分。
4)交卷功能。考生开始考试后,系统将自动计时,考生考完可选择交卷功能。在考试时间剩余5分钟时,系统会提示考生,到达规定的考试时间时,系统关闭答题窗口,提示考生交卷并结束考试。
5)断点续考功能。所有考试结果自动保存在网络考试服务器上,并具有二次登陆功能,防止断电和死机等原因导致考试失败的功能。
3 计算机应用基础考试系统的设计
3.1 系统的体系结构
本系统采用三层C/S结构,在三层C/S结构中,业务逻辑与客户端分离,这样在一定程度上减轻了客户端的负担。三层C/S结构是将整个业务应用划分为表现层(VI)、业务逻辑层(BLL)和数据访问层(DAL)。其解决方案是:对这三层进行明确分割,并在逻辑上使其独立。三层C/S架构区分层次的目的是为了“高内聚,低耦合”的思想。
表现层:通俗地讲,就是展现给用户的界面,即用户在使用一个系统时他的所见所得。表示层是应用的用户接口部分,它担负着用户与应用间的对话功能。为使用户能直观地进行操作,一般要使用图形用户接口(GUI),操作简单。
业务逻辑层:针对具体问题的操作,也可以说就是对数据层的操作,对数据业务的逻辑处理。它是应用的本体,它将具体的业务处理逻辑地编入程序中。处理所需的数据则要从表示层或数据层取得。表示层与功能层之间的数据交往要尽可能简洁。而由功能层处理过的检索结果数据也一次传送给表示层。
数据访问层:数据层就是DBMS,负责管理对数据库数据的读写。该层所做事务直接操作数据库,针对数据的增加、删除、修改、查询。
三层C/S结构的优点如下:1)具有灵活的硬件系统构成;2)提高程序的可维护性;3)利于变更和维护应用技术规范;4)进行严密的安全管理。
本系统的三层C/S架构设计,如图1所示。
在图1中将整个系统划分为如图所示的逻辑结构,同时还给出了解决方案中对应的程序结构。
其中表现层即考试系统界面层,是考试系统的用户接口部分。本考试系统用户由三类:管理员、老师和学生,根据用户的性质,将管理员和老师从服务器端登录,学生从客户端登录。因此,对应的将系统的表示层分为客户端和服务器端两个项目来完成,并分别命名为SysServer和SysClient,作为两个独立的项目,用于用户操作;业务逻辑层主要实现考试系统处理业务,命名为SysBll,作为一个单独的类库,包含所有系统需要处理业务的类的集合;数据访问层用于考试系统数据访问,命名为SysDal,也是一个类库项目,主要用于操作数据库,实现对数据库的增加、删除、修改、查询等操作。
除此之外,还用SysDal项目来定义数据访问层接口,其作用是定义一种系列“功能”的声明或名单,没有实现细节;用SysModels项目用来定义类,是对各个实体的抽象,包含各个实体的属性已经设置和获取的方法,最终用于建立实体对象。[1]
3.2 系统功能设计
考试系统主要分为以下模块:人员管理、试题管理、考试管理、评卷管理、成绩管理、考生登录、试题生成、开始考试和试卷提交。
3.3 系统功能描述
1) 人员管理:实现后台登陆,管理员、教师、考生的增删改和人员权限的设置。
2) 试题管理:对试题的类型进行管理,并定义各种试题的操作,添加和管理各种试题。
3) 考试管理:对考试进行管理,设置和修改考试、考场的相关信息。
4) 评卷管理:对于客观题进行自动评卷记分;对于主观题进行手动评分题。
5) 成绩管理:进行成绩统计分析
6) 考生登陆:考生登陆考试系统。
7) 试题生成:根据试题库,随机生成学生考试题。
8) 开始考试:学生进入系统进行考试答题,并且开始记时。实时保存学生考试进度,以免异常造成考试信息丢失。
9) 试卷提交:学生提交答案,系统自动将答案提交服务器。[2]
3.4 数据库设计
3.4.1 数据库的需求分析
在设计数据库结构时,既要考虑到尽可能地满足系统应该实现的各项功能需求,同时又要避免冗余数据的产生。根据考试系统的特点,考试系统在实现过程中,主要采集以下方面的信息:管理员信息表、考生信息表、试题知识点表、试题类型表、试题表、考生考试信息等。
管理员信息表:包括系统管理员和老师的人员编号、人员名称、登陆名、密码、人员类型等相关信息。
考生信息表:包括考号、身份证号、姓名、班级、年龄、性别、状态、考场号、得分等。
试题知识点表:包括知识点编号、知识点名称、所在章、所在节等知识点。
试题类型表:包括试题类型编号、名称、备注。
试题表:包括题目编号、知识点编号、试题类型、题目内容、选项A、选项B、选项C、选项D、标准答案、标准答案文件等相关信息。
考生考试信息表:包括考生编号、试题编号、得分、答案、答案文件等。[3]
4 实现的关键技术
4.1 实现的环境
4.1.1 硬件环境
服务器一台,客户机80台组成的局域网硬件环境。
4.1.2 软件环境
服务器端:操作系统Windows 2003 Server;数据库:SQL SERVER2005。
用户端:操作系统: windows xp;数据库:Access。
网络协议:TCP/IP。
4.2 开发工具选择
根据本系统要实现的功能,需要选择两种工具,即前台开发语言和后台网络数据库系统。
本系统选择C#作为前台开发语言,SQL Server 2005作为后台数据库系统,并选择Visual Studio 2005作为C#的开发环境。
4.3 实现的关键技术
1)题库的设计
根据课程要求,将本考试系统的试题类型分为:单项选择题、判断题、程序填空题和程序设计题。因此,在题库中必须要包含上述类型的试题信息,其中包括题目文本和标准答案。
本系统将所有题目类型建立了一个试题类型表来记录每一种题型的编号及名称,试题知识点表来记录每道题的知识点名称、所在章、所在节等信息。用试题表来保存所有题目,由于各种题型的题目保存在一个表中,其中用字段TypeID来说明每一道题目的类型,Content记录题目描述,Score字段记录每道题的分值。对于选择题部分的题目,用A、B、C、D四个字段记录答案选项。选择题和判断题是自动评分,且用Answer字段记录标准答案;程序填空题和程序设计题采用人工评分,程序填空题用Answer字段记录标准答案,程序设计题用AnswerFileName保存标准答案文件名。
2)组卷的实现
考生上机考试登录成功后,系统在试题库中随机抽取试题组卷。在生成题库时,已将题型信息记录在试题表,以便抽题时使用。
组卷时,系统更新考生考试信息表,在表中记录该考生的考生号,抽取的试题号。抽题时按不同题型、不同的知识点抽取题目。为了避免抽到重复题,每抽一个题将与该考生已抽题进行比对,如果题目已抽取为该考生题目,将不放入考生试卷,重复抽取直到生成所有的不一样的题目。抽题后,直接在服务器上生成一个考生文件夹,所有程序填空题和程序设计题的答案文件放入考生文件夹中。
3)评分
目前对于选择题和判断题的评分方法都简单,即将考生的答案与标准答案比对,答案一致就等分,答案不一致就不得分。而对于程序填空题和程序设计题答案存在不唯一性。因此,本系统认为合理的评分方法是,对于客观题(即选择题和判断题,选择答案是唯一的),把标准答案均设置成题库中的字段,可以完全由机器阅卷;而非客观题(即程序填空题和程序设计题),可以采用计算机辅助人工阅卷方法,在阅卷时,调出标准答案和考生答案,进行比较,权衡后给出符合实际的评分。这种批阅方式虽然在速度上比不上完全自动批阅,然而能确保其公正性。
4)二次登录
如果考试期间发生突发事件,导致考生无法继续考试,那么在考生二次登录后,需要还原考生的考试环境;本系统通过数据库记录考生信息,出现故障时通过此数据库恢复考生信息。
5)程序的移植
为了方便程序移植,本系统采用了配置文件来进行程序的移植。也就是将与数据库的连接写在app.config文件里面更方便,并且易于修改。
5 结论
网络环境下的计算机考试系统进行考试,具有以下优点:减少重复劳动,提高考试效率;保证考试公平性、公正性;方便教学管理、实现节能环保,同时也能够实现其他科目的考试,是考试发展的必然趋势。本系统采用C/S三层结构设计,具有较好的维护性、扩展性、安全性和可移植性。
参考文献:
[1] 王国胜.C#基础与安全开发详解[M].北京:清华大学出版社,2009.