程序设计论文范文

时间:2023-10-15 01:48:18

程序设计论文

程序设计论文篇1

本节课的教学对象为我校大专班学生。他们有一定的应用软件的操作基础,但对于编程语言,绝大多数都是初次接触,缺乏系统的、理性的认识,基础知识薄弱。在学习过程中,学生普遍专注力差,面对满堂灌式的理论教学很容易思想抛锚,但对于自己感兴趣的知识,却接受的很快,领悟力比较强。所以,在教学过程中应采用灵活多样的教学方法,调动学生学习积极性,帮助他们更好地理解并掌握所学知识。

二、教法学法

1、教法:本节课的教学,贯彻了启发式教学原则。通过游戏引入新课,由教师引导学生进行观察思考和归纳总结,同时充分发挥多媒体的功能,通过课件演示、具体实例的分析,使抽象的事物形象化,尽可能的通俗易懂,再配以恰当的课堂提问与练习,让学生分析、探究,更进一步的加深理解。因此本节课采用的教学方法有:游戏、引导、演示、问答、练习等。2、学法:为了充分发挥学生的主观能动作用,在上述教学方法的指导下,引导学生运用“观察”、“讨论”、“练习”、“展示”等方法,彻底掌握if语句的使用,能够自己分析问题,认真思考,耐心实践。让学生不但要学会知识,更要会学知识,会用知识。

三、教学过程

1、新课引入:采用提问的方式,复习已学习过的知识,如选择结构的概念。并通过创设情境,引入新课内容。先编写一个程序引导学生参与游戏,游戏内容是随机抽取一个学生的学号作为当天的幸运星,程序会根据输入号码的大小,给出不同的提示。在学生被激发出兴趣后立刻提出问题:为什么程序会根据输入数据的大小,显示出不同的提示信息?由此引入了新课:If语句。在这一环节中,主要应用了游戏法、问答法等教学方法。不但引入了新课,更激发了学生的学习兴趣。

2、新课讲解:课程第一部分就是本节课的重点,if语句的语法格式。为了突出重点,加深学生的印象,讲解前,首先用举例法,通过表格显示几个常用的自然语言中进行分支选择的表达方法,如:如果明天是晴天,那么出去郊游,否则延期出行。然后引导学生对比几个不同的示例仔细观察,查找出语句中的共同点和不同点,并通过课件中的动画引导他们进行思考分析,逐步归纳出这种句型的表达方式:如果条件成立,那么执行动作1,否则执行动作2。由此实现了由特定的自然语言表述,到通用的自然语言格式的过渡。再通过提问的方式引导学生说出if、then、else等单词,用英文替换中文表述,结合VB命令格式中的符号约定,让学生自己写出VB中if语句的基本表示方式,if条件表达式then语句序列1else语句序列2,实现自然语言到vb语言的过渡。但这个格式并不完整,可再次让学生思考,哪些项是必需的哪些是可以省略的。这里还是用表格对比法,让学生看到,在自然语言中表述分支选择时,比较口语化的时候,有些语句是可以省略的。对应到VB中,也是一样,这样就得出了最终的if语句语法格式,If<条件表达式>Then[<语句序列1>][Else<语句序列2>]。随后,再对一些要注意的地方进行讲解说明。到此,本节课的重点部分也讲述完毕,在这个过程中,主要采用了举例、比较、类推、提问、讲授、动画等教学方法,整个过程采用了“自然语言表述实例自然语言通用句型VB语法格式”的教学顺序,层层深入,符合特殊到一般、具体到抽象,由浅入深,由易到难的认知规律,由此实现了重点的突出。If语句的用法是本节课的难点,这里主要利用流程图作为突破点的。首先,给学生讲解如何根据语法格式绘制它的流程图,通过PPT动画,将语法构造与流程图一一对应起来,使程序的执行过程更加直观,让学生对程序代码与流程图的关系的理解更直白,更透彻。然后,通过举例法,让学生了解,如何将实际问题进行分解,转换为相应的流程图,再根据前面所学,将流程图转换为具体代码。课程进行到这里,部分学生的注意力可能已经开始分散,此时可进行游戏的第一步解密,不但再次激发起学生的兴趣,也进一步帮学生理解如何分解问题,由问题到流程图,再由流程图到程序代码。在难点的讲解中,主要采用了动画、对比、举例等教学方法,通过由语法流程图,构建了语法与流程图之间的对应关系,再根据实际问题绘制流程图,反推代码,实现难点的突破。

3、课堂练习:为了检验学生对这部分知识点的掌握情况,通过布置习题,让学生思考解答,针对学生的完成情况做出点评,纠正学生易犯的错误,达到巩固新知的目的。在这一环节中,主要采用练习法和纠错法等教学方法。

4、课后小结:与学生一起回顾本节所学内容,加深记忆和理解,完成知识的建构。并告诉学生,将在第二学时继续对游戏解密,完成整个程序的设计,让他们抱着期待的心情迎接下一节课。

四、结束语

目前许多学校都已将说课作为一项必不可少的教研活动,并成为教师素质评估工作中衡量教师教学能力与教学水平的重要指标之一。但是,不能仅重视说课,更要重视实际教学,二者相结合,才能避免纸上谈兵,真正提高教师的能力与水平。

程序设计论文篇2

关键词:PCI总线PCI2040DSPDDKWDM

TI公司专门推出了PCI2040桥芯片是专门针对PCI总线和DSP接口用的,本文利用它和DSP来处理视频信号,并用双端口RAM实现DSP之间的数据传输。

1硬件设计

1.1PCI总线控制芯片PCI2040

PCI总线是一种不依附于某个具体处理器的局部总线,它支持32位或64位的总线宽度,频率通常是33MHz,目前最快的PCI2.0总线工作频率是66MHz。工作在33MHz、32位时,理论上最大数据传输速率能达到133MB/s。它支持猝发工作方式,提高了传输速度,支持即插即用,PCI部件和驱动程序可以在各种不同的平台上运行[1]。

实现PCI总线协议一般有两种方法,一是用FPGA设计实现,但PCI协议比较复杂,因此难度较大;二是采用PCI总线控制芯片,如AMCC公司的S5933、PLX公司的PCI9080等通用的PCI接口芯片。TI公司专门推出了针对PCI总线和DSP接口的芯片PCI2040[2],它不但实现了PCI总线控制的功能,而且提供了和DSP芯片无缝的接口,因而大大简化了系统设计的复杂度并缩短了开发时间。

PCI2040是一个PCI-DSP桥接器件,它提供了PCI局部总线和TMS320C54X8位主机接口(HPI)与TMS320C6X16位主机接口的无缝连接。一片PCI2040最多能同时挂接4片DSP芯片。同时,它还提供了一个串行EEPROM接口,一个通用输入输出接口(GPIO)和一个16位通用总线接口(为TIJTAG测试总线控制器提供接口)[2]。PCI2040只能作为PCI目标设备使用,不能作为PCI主设备使用;它只支持单字的读写,不能提供DMA操作。PCI2040能够兼容3.3V和5V信号环境系统中的3.3V和5V信号可以直接从PCI插槽中获得。

PCI2040和TMS320C6201的接口如图1所示。

1.2PCI2040寄存器说明

PCI2040桥256字节的配置头如图2所示,HPICSR基地址、控制空间基地址(ControlSpaceBaseAddress)值都是系统自动分配的。所有的PNP器件都是如此它将控制空间映射到主机内存,映射的空间大小为32KB。4片DSP芯片的选择是通过解码PCI_AD14、PCI_AD13来实现的,其对应关系如表1所示。而DSPHPI寄存器的地址则是由PCI_AD12和PCI_AD11来决定的,其对应关系如表2所示。

图1PCI2040和TMS320C6201的接口

表1DSP选择

AD[14:13]

TMS320C6xDSP

00

HCS0(选择第一块DSP)

01

HCS1(选择第二块DSP)

10

HCS2(选择第三块DSP)

11

HCS3(选择第四块DSP)

表1HPI寄存器映射

AD[12:11]

TMS320C6xHPIRegister

00

HPI控制寄存器

01

HPI地址寄存器

10

HPI自增数据寄存器

11

HPI数据寄存器

因此,DSP与主机交换数据的过程,也就是读写HPI寄存器的过程。也就是说,通过主机访问DSP板上资源,只需要将相应地址赋予HPIA寄存器中,然后读写数据就可以通过HPID寄存器。具体描述如下:

(1)初始化PCI2040内部配置寄存器,指向特定的DSP(因为本系统有两块DSP和PCI2040相连),指定数据传输宽度为16位。

(2)分配HPICSR基地址和控制空间基地址,允许PCI2040进行内存映射或I/O端口映射。值得注意的是,PCI2040控制空间只能映射在主机的内存空间里,不能映射在I/O空间。以上两步都由驱动程序完成。

(3)脱离复位状态后,PCI2040解码从PCI总线来的地址,以此来做出响应。若落入32KB的控制空间中,则根据PCI_AD12、PCI_AD11及PCI_AD14、PCI_AD13片选情况访问相应HPI寄存器。

(4)设定HPI控制寄存器中的BOB位,选择正确的高低16位排列方式。

(5)主机开始对HPI寄存器进行读写。

1.3双DSP系统硬件设计

本文所采用的双DSP系统主要用来处理视频信号及高速数据采集,该系统是基于TMS320C6201DSP和PCI2040而设计的。此卡的主要功能是:(1)采集视频信号或其他模拟信号经A/D转换后,交给DSP进行相应处理,然后将处理后的数据通过PCI2040经PCI总线存放在计算机硬盘上或者直接存储到板上RAM中,然后通过PCI总线将视频数据传送到主机后显示。(2)两块DSP之间的通信可以通过McBSP或双端口RAM。

该系统的特点有:两块TMS320C6201DSP,处理能力可达3200MIPS;每片C6201带512KSBSRAM,256KBFLASH;16KB高速双口RAM用于两块C6201之间进行数据交换;12位ADC;32位高速FIFO。系统硬件框图如图3所示。

2基于WDM的PCI驱动程序设计

WDM是新一代的驱动程序构架,它是一个跨平台的驱动程序模型,在WINDOWS98以上的操作系统中都实现了全面兼容。不仅如此,WDM驱动程序还可以在不修改源代码的情况下经过重新编译后在非Intel平台上运行,因而为驱动程序开发人员提供了极大的方便。

WDM驱动程序是分层的,即不同层上的驱动程序有着不同的优先级,而Windows9x下的VxD则没有此结构。另外,WDM还引入了功能设备对象FDO(FunctionalDeviceObject)与物理设备对象PDO(PhysicalDeviceObject)两个新概念来描述硬件。PDO代表实际存在的硬件设备,它是在总线驱动程序(BUSDRIVER)下枚举并建立的,负责与真实硬件进行I/O操作。FDO是由用户驱动程序建立的,一般来说,它是用户与真实硬件进行I/O操作的一个窗口,是Win32赖以沟通内核的一个桥梁。对于驱动程序开发者,真正需要做的就是开发FDO。至于PDO,则由BUSDRIVER建立,并在需要的时候作为参数由I/OManager或其它系统组件传给你的FDO。

在应用层与底层进行通讯时,操作系统为每一个用户请求打包成一个IRP(IORequestPacket)结构,将其发送至驱动程序,并通过识别IRP中的PDO来识别是发送给哪一个设备的。另外,WDM不是通过驱动程序名称,而是通过一个128位的全局惟一标识符(GUID)来识别驱动程序的[3]。

WDM驱动程序都有一个初始化入口点,即DriverEntry,它相当于C语言中的main函数。当WDM驱动程序被装入时,内核调用DriverEntry例程。另外WDM设备驱动程序还需要一个即插即用模块,即AddDevice。AddDevice例程就是PnP管理器在用户插入新设备时调用它来创建WDM设备对象的。

本文主要采用Windows2000DDK来设计该驱动程序。调试工具为SOFTICE。驱动程序的主要工作集中在:

(1)DriverEntry(),这是驱动程序的入口点,驱动程序被装入时首先执行DriverEntry例程。主要工作是建立驱动程序这所需的函数。

(2)dspPciAddDevice(),在这个例程里驱动程序主要是创建设备。

(3)dspPciPnp(),在这个例程中驱动程序主要是启动设备和停止设备等,并且从PnP管理器读出为双DSP所分配的硬件资源,包括HPICSR基地址和HPI控制空间基地址,对PCI配置空间进行初始化。初始化中断等。需要注意的是,在初始化中断之前禁止卡向主机发中断,因此应有屏蔽中断的操作。

(4)dspPciDeviceControl(),在这个例程中可以定制自己的函数来达到Ring3层和Ring0层相互通讯的目的。通过IOCTL_CODE可以区分不同的请求。

(5)Isr_Irq(),这个例程是用来处理中断的。Windows2000的中断处理机制是假定多个设备可以共享一个硬件中断。因此,Isr的首要工作就是找出哪一个设备发生了中断。如果没有,则应该立刻返回FALSE,以便HAL能把中断送往其它设备驱动程序。中断服务例程Isr执行在提升的IRQL上,在DIRQL级别上运行的代码需要尽可能快地运行。通常情况下,若判断中断是由自己的设备产生的,则调用一个在DISPATCH_LEVEL级别上运行的延迟过程调用(DpcFor_Irq)。

注意:当确定是自己卡的中断时,要马上屏蔽中断位防止中断再进来,等到DpcFor_Irq的结尾处再开中断。

3结论

程序设计论文篇3

对于引用的定义可以归纳为符号的类型和符号的使用方式,在符号的类型中就符号的使用标示:标示符号&+引用名称=代码的名称;例如:printc;if&chart=if;标示出不同的定义,if就是标示符号的引用,也就是所谓的名称改变。符号的分析图为(图1)所示。在这里必须要以下的说明:&符号在标示中只是以标示名称的形式存在,不作为任何的含义;&符号在引用的过程中,对于初始的代码变化不会起到改变的作用,也不会促使代码发生任何性质上的变化;在引用过程中,对于引用前和引用后&符号使用的两个名称在作用上是相同的,也就是说名称只是一个代号,在程序使用中也是为了区分代码改变的标准,这就不能再进行代码的改名;代码的重新命名不是定义上发生任何的变化,所以在数据库当中的代码性质不会进行更新,只有在程序顺利运行后以及程序出现了调试过程后,新定义的使用&符号的代码才能被列入新的程序数据库当中。

2、程序设计中&符号的使用

C++程序中&符号出现的情况是标示为引用,对于函数的变化中会起到一定的作用,虽然不改变代码的性质,但是对于函数的定义还是会出现一定的影响。&符号改变的数学函数的参数变化,对于参数的定义域起到了重要的作用。在C语言中的函数值的变化,其中关于main函数的变化之最多,也是在程序研究中使用&符号最多、最为关键的因素之一。在对于main函数的&符号使用中,首先要弄清楚函数的最初原型,对于函数的表达意义要有初步的了解,并且能够合理的使用程序的改变方程式,对于main中的函数参数中&符号也有着不同的规范要求。在main可编辑函数中,agent是表示函数中参数的含义,&符号是表示为函数的变化地址,同时&符号也表达出函数中参数的个数,把agent最为函数参数的指导性参数值进行分析判断,统计&符号可以得到函数相关数组的即时数组信息。在操作系统中,函数中&符号的配置启动中,完全取决于操作系统的函数变化,对于操作中函数的初始变化值有着严格的要求,并在运行初始阶段进行函数的归零处理,后期在每个不同函数变换的模块当中,提取出不同数值的数据参数,来指导计算机程序的有效运行状态。通过改变符号的方式可以对于程序的效率有一定的提升。由上述例子看出,在函数中传引用和传指针的效果是相同的。这样,被调函数中的形参实际上就是主调函数中的实参或目标变量的别名,因此被调函数中所有对形参的操作实际上就是对相应的主调函数中目标变量的操作,一般传递的数据较多时,采用引用时程序的效率较高。虽然使用指针传递地址也能达到相同的效果,但因为在被调函数中还要为形参分配存储单元,而且在主调函数的实参必须使用变量的地址,这种方式必将导致程序阅读性较差,而使用引用便显得简单易懂,而且程序结构也更清晰。常引用声明方式:const类型标识符&引用名=目标变量名;在这种引用方式中,由于目标变量的值的修改不能通过引用来间接修改,因此可以很好地保护目标变量的值,使得引用有了很好的安全性,即相当于目标为const型的变量。当参数需要定义为引用型是,如果实际需要容许尽可能定义为const,这样可以保证代码的健壮性,同时也能带来其它的好处。在函数的定义过程中对于代码的变量指标在初始定义之后,在对变量的变化值进行记录,该代码指针变量便指向初始化指针变量的目标变量。通常情况下规定,具体操作过程时,对代码的指针的操作实际是对其所指向变量的间接操作。程序设计过程中使用指针可以让系统的程序的可读性降低,在操作起来也相对的困难。而由于引用本身就是目标变量的别名,编程中对引用的操作就是对目标变量的直接操作。引用其实也是一种指针,只不过其操作方式与指针不相同,指针可以一对多进行映射,而引用却只能一对一的进行,也就是一个参数对应一个代码指针数值,即&符号中的数字不能被改变,因此在对于符号的使用中,鉴于引用比指针更容易进行操控和编辑。

3、结语

C++程序当中由于不同的编程要求,现实出的具体含义就会有所不同,有些程序代码的不同是通过性质的改变,有些代码的变化是存在于不同符号发生的变化,对于符号的重要性我们在文章之中详细的介绍了,也通过举例的方式来对符号的作用和程序语言中对于符号的检测做出了详细的分析。对于使用&符号中的优劣也提出了相关的意见,对于&符号在C语言中的定义和使用方法上有这不同的介绍,如何使得符号的完整和正确性对于编程的作用提出了具体的操作方案,充分发挥出&符号在使用中的作用,尽量降低程序语言给操作人员带来的麻烦,更好的适应计算机编程,进一步完善C++程序设计中的方案设计。

程序设计论文篇4

教学中立足具体实例,渗透基本概念;分散难点,逐步渗透;设置问题情境,分析解决问题的方法。教学实例按照学生的认知规律,遵循先易后难、先具体后抽象的原则,从基础层次、应用层次、提高层次三个阶段进行实例教学。基础层次的实例应该把对象的用法渗透到一个个程序实例中,由浅入深逐渐介绍,让学生在编写程序的过程中总结对象的用法。应用层次的实例重点介绍对象的什么属性、方法和事件可以解决什么实际问题。如对象PasswordChar的属性,解决口令保密的问题;对象Alignment的属性,解决界面信息显示的对齐方式;程序运行目录的获取,解决程序文件处理采用绝对路径的弊病;程序同时运行的限制,解决同一程序同机同时运行的资源冲突;对象Change事件(对象内容发生改变触发该事件),解决程序设计的操作安全性、数据完整性验证、数据关连计算的自动同步等问题。。。。。。通过实例的分析、讲解,让学生观看、模仿、理解,启发学生程序设计思路、体悟这些知识点。提高层次的实例从选择对象的角度,分析、讲解、比较解决什么实际问题,不同对象的优点和缺点。在程序流程控制中,实例不但要体现不同流程控制的用途,更要分析流程控制分支的设计对程序效率的影响;在列表框、菜单、工具栏的实例,可以分析应用程序解决操作权限的问题;在ActiveX控件方面,实例重点分析如何利用树状控件、电子表格控件、图象控件,利用控件的MOVE方法,把隐藏的编辑对象移动到相应的电子表格的单元格,通过对象的Visable属性使其可见,并接收用户的编辑输入,设计出界面简洁、操作方便,具有视觉美感的程序界面;数组和数字字典的应用区别,数字字典解决数据量大的查询速度问题;使用数据环境(DataEnvironment)对象和SQLServer的存储过程(接受输入参数并以输出参数的形式将多个值返回至调用过程或批处理;包含执行数据库操作;的编程语句;向调用过程或批处理返回状态值,以表明成功或失败,存储过程优势有允许模块化程序设计;减少网络流量;执行更快)进行数据库应用系统开发,使数据库应用系统的开发更加直观、简洁、高效,不但提高程序运行速度,同时增强程序的可读性、可理解性和可维护性。Windows操作系统同时是一个很大的服务中心,调用其中的各种服务,可以帮应用程序达到开启视窗、描绘图形、使用周边设备等目的,由于这些函数服务的对象是应用程序,所以便称之为ApplicationProgrammingInterface,简称API函数。API说到底就是一系列的底层函数,是系统提供给用户用于进入操作系统核心,进行高级编程的途径。通过在VisualBasic应用程序中声明外部过程就能够访问WindowsAPI函数(以及其它的外部DLLs)。在声明了过程之后,调用它的方法与调用VisualBasic自己的过程相同。所以教学实例必不可少的要体现出调用API的步骤、使用API应注意的参数类型、数据类型和数据结构、声明使用范围等,以及当编程算法较复杂、或用标准的语句难以实现功能设计时,如何通过查询API函数功能,合理选择API函数解决问题。

下面以窗体及基本控件为例,与大家共同探讨这种教学方法教学内容:单选框和复选按钮、列表框、命令按钮。目的要求:掌握控件的常用属性(Name、Caption、Value、BackColor、ForeColor、FontName、FontSize、ListCount、ListIndex、List、Selected);方法(AddItem、RemoveItem、Clear);事件(Click);控件数组;IIF()函数、Choose()函数的用法;流程控制用法的复习和提高。教学重点与难点:列表框选项删除,循环流程控制的Step用法。实例设计:准备好实例设计思路,设计过程在教学中边设计边讲解。教学过程:第一步、新建一个窗体,设置一些常用的影响窗体外观(BackColor背景颜色)的属性,运行程序,讲解让学生理解这些属性。第二步、往窗体添加一个单选框,设置Name属性为OPFontName(讲解让学生理解该属性),拷贝该控件,粘贴该控件(讲解让学生理解创建控件数组的方法)。这两个控件将用来控制字体,OPFontName(0)的Caption设置为宋体、OPFontName(1)的Caption设置为黑体。重复第二步操作新增两个单选框(OPFontSize),用来控制字号,OPFontSize(0)的Caption设置为12号字、OPFontSize(1)的Caption设置为14号字。这时可以设置控件的BackColor背景颜色和ForeColor前景颜色,FontName字体、FontSize字号等改变位置、外观的属性,运行程序让学生理解这些属性的作用。点击单选框(讲解让学生理解单选框每次只能选取一个)。第三步、往窗体添加一个框架,剪切窗体中OPFontName(0)、OPFontName(1),把它们粘贴到框架中,这样OPFontName与OPFontSize就相互独立。第四步、往窗体添加两个复选框。Check1的Caption设置为加粗、Check2的Caption设置为斜体第五步、往窗体添加两个命令按钮和列表框。设置列表框的Style属性为复选,设置列表框的List选项为"项目1"、"项目2"。。。"项目9"(讲解让学生理解设置时往列表框添加选项的方法),设置控件的对齐。第六步、运行讲解:(1)分析代码,讲解采用控件数组的作用在于复用过程。(2)点击单选框“12号字”、“14号字”、“宋体”、“黑体”,讲解让学生理解单选框每次只能选取一个。如果需要多选,应该用Frame框架或图片框将单选框分组进行。(3)点击复选框,讲解让学生理解复选框可以多选。(4)选择列表框选项,点击命令按钮,讲解让学生理解点击事件(Click)的触发时机;运行时列表框添加选项的方法(AddItem)、删除一个选项的方法(RemoveItem)、删除所有选项的方法(Clear)、检测选项选中状态的属性(Selected)、选项内容的属性(List)、选项数量的属性(ListCount)、列表框其他常用属性(5)注释掉语句Fori=List1.ListCount-1To0Step–1,启用语句Fori=0ToList1.ListCount–1,运行程序,选择列表框选项,点击命令按钮,程序提示找不到列表框选项的错误。讲解让学生理解列表框ListCount、ListIndex属性的动态改变,采用递增的循环流程控制,造成当删除一个选项找不到列表框选项的错误,采用递减的循环流程控制可以解决问题。

2课程实验

要求学生以VB为开发语言、以SQL为数据库,独立完成一个功能较简单的程序设计。良好的编程风格有助增强程序的可读性、可理解性和可维护性,保证程序的质量。查阅学生的课程实验时,不但要掌握学生对知识点、对象的属性、方法和事件的理解和应用情况,同时要分析学生的编程算法、编程风格,帮助学生总结其编程风格和编程算法的优点和缺点,提高学生的编程能力和良好的编程风格。根据学生的差异,做到有的放矢,充分调动每个学生的学习积极性。激发学生的学习兴趣。

3交流答疑

以课程实验实例为交流对象,模拟毕业答辩的方式与学生进行交流,帮助学生归纳小结,理解知识、融会贯通,同时讲解一些概念性题目,以帮助学生顺利通过期末考试。鼓励优秀的学生帮助其他学生,这不但减轻教师的负担,也培养学生团结合作的精神。总结以上是个人在学习和教授VB这门课程中的一点心得,请各位同行指正、交流。

程序设计论文篇5

进行图形程序设计时,还须考虑视频接口的一个重要特性——虚拟终端功能,因为它允许控制几个独立的图形应用窗口,允许多个应用程序在同一个终端上进行切换。本文提供针对IBM标准终端对虚拟终端进行有效管理的手段。

微机UNIX直接视频图形程序设计有两种方法,一种是利用设备驱动程序(见参考文献1),另一种是针对IBM标准终端进行编程,本文介绍后者。

一、图形程序设计

1.检测视频适配器

视频显示器是由视频适配器硬件控制的,视频适配器决定了图形方式下显示图形的分辨率及可能的颜色[2]。利用系统调用ioctl中的CONS-CURRENT命令可以检测到当前的视频适配器,即:

ioctl(0,CONS-CURRENT,NULL)

返回-1时表示出错,即没有相应的视频适配器硬件,如果检测到VGA卡则返回值为VGA,如果检测到EGA卡则返回值为EGA,……。

2.初始化图形系统

初始化图形必须完成下列任务。

(1)获取当前的视频显示方式

ioctl的CONS-GET命令用来判断当前适配器的显示方式,即:

ioctl(0,CONS-GET,NULL)

它返回显示方式的值,这些值在包含文件vtkd.h中均有定义,如:SW-VAG640x480C为VGA适配器设置成640x480分辨率彩色图形模式。

(2)设置图形模式

直接将图形模式值放入ioctl中的命令项即可设置相应的图形模式,如ioctl(0,SW-VGA640x480C,NULL)

将VGA适配器设置成640x480分辨率的彩色图形模式。

(3)获取图形模式下视频缓冲区物理地址

利用ioctl的MAPCONS命令可以实现此功能,即:

char*scrnmem;

scrnmem=(char*)ioctl(0,MAPCONS,NULL)

所有实现基本图素的操作都将针对scrnmem进行,scrnmem就是EGA/VGA相应的四个位平面的重叠地址,有关EGA/VGA的结构可参阅[2]。

3.实现基本图素

DOS操作系统下,对EGA/VGA的各种视频I/O寄存器进行操作是很方便的,可以直接使用汇编语言in和out指令进行读写。然而,UNIX操作系统下,对物理硬件的访问都是由UNIX系统核心和设备驱动程序管理的,要访问EGA/VGA的各种I/O寄存器,必须获得对其访问的特权,为了实现这种功能要求,可以使用下列ioctl系统调用方式:

ioctl(0,VGA-IOPRIVL,1)获取VGA的各种I/O寄存器的访问特权

ioctl(0,EGA-IOPRIVL,1)获取EGA的各种I/O寄存器的访问特权

UNIX操作系统基本上是采用C语言编写的,只是在低层的系统内核方面才使用低级的汇编语言,遵循这一原则,对EGA/VGA的I/O寄存器的访问可以采用汇编语言,而实现图形系统的基本图素则采用C语言。

如果用户的UNIX系统中已有inb()和outb()函数(嵌入在/usr/include/sys/inline.h中),则可以直接使用它们完成对各种I/O寄存器的读写,否则,必须编写下列低级汇编语言例程:

/*向一端口输出一字节*/

/*从一端口输入一字节*/

voidoutb(intport,ucharvalue)

{

-asmpushedx

-asmmovedx,port

-asmmoval,value

-asmoutdx,al

-asmpopedx

}

ucharinb(intport)

{

-asmpushedx

-asmmovedx,port

-asminal,dx

-asmpopedx

}

基本图素一般包括:设置颜色,对调色板的操作,画点、线、弧、矩形、圆、椭圆、多边形、画扇形、饼图,任意图形填充,多边形填充,保存屏幕,恢复屏幕等,这些操作均可用C语言实现,细节问题可参阅[2]。

4.关闭图形系统

退出图形系统之前必须恢复EGA/VGA各I/O寄存器的值,并将显示模式恢复到进入图形模式之前的模式。采用下列ioctl调用实现:

ioctl(0,MODESWITCH|oldmode,NULL)

oldmode是进入图形方式之前获取的方式,UNIX系统中,获取的方式和设置的方式之间的关系为:

设置方式值=获取方式值|MODESWITCH

二、虚拟终端的使用

虚拟终端(VirtualTerminal,简称VT)加强了UNIX系统V/386的接口功能,它不仅允许单个用户开发一个图形应用软件,而且允许多用户、多道程序在同一个物理终端上运行,在开始一个用户的应用程序之前不必停止另一个应用程序,而且各个用户之间可以互相切换。

虚拟终端有两种操作方式[1],一种是自动操作方式(VT-AUTO),这是默认情况,比较简单,应用程序并不了解终端用户接受或放弃当前VT的请求,这意味着被切换掉的进程的任何输入输出都可能丢失。另一种方式是进程控制方式(VT-PROCESS),该方式支持应用程序与其它正在使用VT的进程之间同步,应用程序可以负责接受或放弃使用VT。

[1]中介绍了以进程方式控制VT的过程,并以设备驱动程序方式介绍了接受和放弃对VT控制的信号处理例程。本文给出针对IBM标准终端编制VT的程序和相应的信号处理例程。

/*设置虚拟终端*/

voidsetvirtualterm(void)

{

structvt-modevtmode;

signal(SIGUSR1,release-disp);//release-disp为放弃VT的信号处理例程

signal(SIGUSR2,acquire-disp);//acquire-disp为接受VT的信号处理例程

vtmode.mode=VT_PROCESS;//设置进程控制方式

vtmode.relsig=SIGUSR1;

vtmode.acqsig=SIGUSR2;

if(ioctl(0,VT-SETMODE,&vtmode)==-1)exit(1);//出错即终止此进程

}

/*放弃VT的信号处理例程*/

voidrelease-disp(void)

{

signal(SIGUSR1,release-disp);

保存整个图形屏幕于内部缓冲区videobuf中;

ioctl(0),MODESWITCH|oldmode,NULL);

//oldmode为进入图形模式之前的显示方式

ioctl(0,VT-RELDISP,VT-TRUE);

//VT-TRUE表明同意放弃VT,如果此项为0,则表示拒绝放弃VT.

}

/*接受VT的信号处理例程*/

voidacquire-disp(void)

{

signal(SIGUSR2,acquire-disp);

ioctl(0,newmode,NULL);//newmode为应用程序所处的图形模式

scrnmem=(char*)ioctl(0,MAPCONS,NULL);

//重新获取图形缓冲区的物理地址

从videobuf中恢复整个图形屏幕,并释放videobuf;

ioctl(0,VT-RELDISP,VT-ACKACQ);//VT-ACKACQ表明接受VT

}

在微机UNIX操作系统下,针对EGA/VGA进行直接视频程序设计,独立开发一个图形程序包,不仅小巧方便,而且可以重用以前在DOS下开发的图形应用程序。笔者在SCOUNIX系统下开发了一个小的低层图形软件包,许多以前的DOS图形应用程序都可以移植到UNIX系统下来。

另外,本文介绍的程序在使用前还应包含下列文件,即:

#include<stdio.h>

#include<sys/types.h>

#include<sys/console.h>

#include<sys/vtkd.h>

#include<termio.h>

#include<sys/signal.h>

分配空间时还应加上#include<malloc.h>

参考文献

1仲萃豪等.UNIX系统V/386第4版-集成软件开发指南.北京:电子工业出版社,1992.8.

程序设计论文篇6

一选题与立题

选题就是想研究或准备解决的问题,如某一疾病尚未解决的病因、发病机制、诊断、治疗、预防等各个方面的问题。选定要研究的问题后,才能确立研究的题目,进行设计,制定计划。立题要有明确的目的性,临床医学研究的目的就是要针对疾病,特别是危害人类最多见,造成后果最严重的疾病,如心脑血管病、恶性肿瘤等,也可研究国内外新出现的疾病。研究内容包括探索疾病的病因,或危险因素,阐明疾病发生发展的过程及其机理,解释某些临床现象以及在诊断和判断预后上的意义,探索或评价新的诊断方法、技术,观察新的治疗措施的效果、毒副作用或探讨影响疾病的预后或病死率的因素等,其目的是为了提高对疾病发生发展规律的认识,改进诊断、治疗和预防的方法,以提高医疗质量和防治水平,总之,研究的题目在一定程度上反映科研工作的水平,课题要有创新性、科学性和应用性,要有保证完成的手段。用最简洁明确的文字写成题目,立出的题目基本上就是后来研究论文的题目。必须全面考虑,作出决定。

一个既有理论基础又有丰富经验的医师,应在临床医疗工作中有计划、有目的地进行临床科学研究,为实现上述研究目的,发展医学事业,为保护和增进人类健康作出自己的贡献。

题目来源:供研究的题目很多,从疾病的发生到防治有许多环节,各环节中都有这样或那样的问题值得研究探索。在过去,这些题目可以由研究者结合自己的专业、兴趣、条件选题、立题上报、申请资助,也有很多是上级下达任务给以条件、单位或协作进行,随着经济体制改革引入竞争机制,开展了科研招标,招标的题目也就是疾病防治中的各方面问题,以决定人群中常见病、多发病为主,国家、卫生部、各省每年都有各自的招标项目,如2000年国家自然基金“项目指南”招标,可以在“项目指南”上选自己欲研究的题目,写科研设计与进行投标,一旦中标,可获可观的研究经费,确保研究任务的完成。

二查找医学文献

临床医生为了更好的认识和处理疾病,需要学习前人及当代专家学者的经验教训,就须要查阅医学文献,临床研究人员在进行某一临床课题研究时,在立题之前,为了少走弯路,出高质量成果,不去重复旁人已经解决了的问题也须要查阅医学文献,了解国内外对该题目已作过的研究工作的成就,现状、动态及其方法学,进行比较选择和借鉴,改进或创新,在研究过程、资料总结和撰写论文时还须要查阅最新医学文献,以利自己研究工作的提高。总之必须查阅文献资料,特别是有代表性的各主要刊物上的有关资料。要认认真真的查阅,不能草率从事。查找医学文献是研究者应熟练掌握的经常性工作,如何能花较少时间,较快的找出所需要的文献也是研究人员应具有的基本功。

传统的医学文献形式是以文字形式记录的医学资料,仍以印刷出版物为主。随着科学技术的发展,有计算机储存阅读形式,以及缩微胶片、幻灯片、投影胶片、录音带、录像带、电影等声相资料。

医学文献按性质可分为1、原始文献(一次文献)来源于各种医学杂志,学报及学术会议论文等。2、文献索引(二次文献)将分散的文献加工、整理、编排、形成具有系统性的文献目录,即检索工具,如目录、索引等,便于读者查找和利用,通过它可以找出原文的出处。3、综述、专著、进展、指南、手册等属三次文献,是对原始文献的系统整理,有选择地加以概述并进行分析综合,使之更具有条理性,对问题阐明更为详尽深刻。4、由光盘记录的书目、刊物索引,由计算机进行检索,属四次文献。

若按医学文献的种类分为教科书、参考书、专著、杂志、学报、文摘、综述、学术会议论文汇编等。

查找医学文献的方法:可以用手工检索,条件许可亦可用计算机进行检索。

1、查找引用原文的出处:从论文、专著、综述教科书等参考文献中追朔,查找引用原文出处,可先国内后国外,由近及远,查有权威性,有代表性刊物。

2、查阅期刊索引,大多数期刊为每年一卷,全年原始文献一查即得。

3、查文摘有分类,查阅较方便,查到线索后再选所需要的进一步查原文,如〈〈中国医学文摘〉〉现有15个分册,它们是中医学、内、外、儿、计划生育妇产、耳鼻咽喉、眼、皮肤、口腔等学科及卫生学、肿瘤等,基础医学、放射诊断学、护理学和检验与临床等分册。〈〈国外医学〉〉现有46个分册,该刊采用综述、译文、文摘三种形式,全面介绍国外医学各领域中新成就、新技术、新进展,是学习国外医学经验重要情报刊物体系。

4、利用检索工具,如〈〈中文科技资料目录(医学)〉〉〈〈国外科技资料目录(医学)〉〉,用手工检索亦可用计算机检索。

计算机检索服务,凡是计算机普及程度较高的科研机构、医学院校、医学中心、大中型医院的图书馆大都已经建立这种服务项目,由于计算机对文献储存数量大,使用代号检索甚快,目前都由专业人员操作联机检索系统,不需用户自己去操作按键。交一定费用,即可获得所需文献资料。

5、查阅个人累积卡片临床医学研究人员在日常工作中,常常要查阅有关刊物,了解新进展,并养成制作卡片的习惯,将对自己有用的内容作简短摘要,分类放置,在须用时可以查找。

程序设计论文篇7

关键词:核心素养;计算机程序设计;维果茨基

学生发展核心素养是回答“培养什么样人”的问题。计算机程序设计有助于人们具备基本的信息素养、逻辑推理能力和计算思维[1],是“怎样培养人”。因此,在高校人才培养中,此类课程一直都是理、工、管等专业的通识课程。然而,结合学生发展核心素养的计算机程序设计教学研究相对较少,现有文献大都侧重个别素养,不够深入和系统[2-3]。如何真正从学生自身的发展出发,最大程度地发掘计算机程序设计课程促进学生发展核心素养,是该类课程改革的重要方向。

一、计算机程序设计教学与学生核心素养的关系

根据《中国学生发展核心素养》的阐述,以培养“全面发展的人”为核心。核心素养分为文化基础、自主发展与社会参与三个方面,综合表现为人文底蕴、科学精神、学会学习、健康生活、责任担当、实践创新六大素养,具体细化为国家认同等十八个基本要点[4]。计算机程序设计能够培养学生的逻辑推理、计算思维和语言表达等方面的能力,它是重要的基础科学和思维科学,其思想方法具有一定代表性[5]。因而,此类课程与学生发展核心素养所包括的文化基础、自主发展与社会参与这三个方面均具有直接的联系。

(一)计算机程序设计与学生核心素养之文化基础

文化基础,重在强调能习得人文、科学等各领域的知识和技能,掌握和运用人类优秀智慧成果,涵养内在精神,追求真善美的统一,发展成为有宽厚文化基础,有更高精神追求的人[6]。文化基础要求学生具备基本的人文底蕴和科学精神。成功的程序设计作品往往蕴含着宽厚的文化基础。例如微软的操作系统、谷歌搜索引擎,简洁交互界面的设计融合了艺术学、美学和心理学等多种文化元素,而背后是算法赖以支撑的数学。另一个典型的例子是ACM国际大学生程序设计大赛。该大赛要求学生运用计算机、程序设计语言、数学、物理等学科知识和技能,结合程序设计解决实际问题。竞赛中时刻要求学生保持理性思维、批判质疑、勇于探究等科学精神的基本要点。既然成功的程序设计作品蕴含着宽厚的文化基础,那么,教授学生学习程序设计,就是利用计算机程序设计语言,综合其他学科知识,解决实际问题,培育学生宽厚的文化基础。有力的证明如广受中小学学生喜爱的Scrath编程工具,其发明团队领袖、麻省理工学院MitchelResnick教授一直倡导“编程化学习”,即把程序创造性地作为学习工具去承载丰富多彩的内容。例如,把它当作工具载体传授数学知识和讲解自然科学等。这种转变将对学生的核心素养培养起到重要作用。

(二)计算机程序设计与学生核心素养之自主发展

自主发展,重在强调学生能有效管理自己的学习和生活,认识和发现自我价值,发掘自身潜力,有效应对复杂多变的环境,成就出彩人生,发展成有明确人生方向、有生活品质的人。自主发展包括学会学习和健康生活两大素养。计算机程序设计语言发展至今已有几十种,且新的程序设计语言还在不断地涌现。教师不可能将所有程序设计语言教授给学生,而绝大部分学生后续课程和工作的内容都不是当前学习的程序设计语言。这就要求教师在计算机程序设计课程的教学过程中,要培养学生的理论基础、学习习惯、研究方法和独立思考、解决问题的能力,强化学生的自主学习能力。学生应从学习模式、时间管理和学习规划技巧等方面针对自身特点采取一系列学习活动。例如,许多大学生在学习期间没有给自己设定明确的目标,就可能容易沉迷于网络游戏中,甚至自身的性格也会变得沉默寡言。通过程序设计课程,学生将理解一个基本原理:一切网络游戏、智能手机应用的背后都是程序员所编写的代码。大学生不应该受程序控制,应有自己的人生规划,要能自我管理,健康生活。笔者的一名学生,在学习改革后的计算机程序设计课程时,就培养了非常强的自律意识和自我管理能力,并针对学生长时间玩游戏的问题,开发了一款屏幕自锁程序,提醒大家不要长时间沉溺于网络游戏。

(三)计算机程序设计与学生核心素养之社会参与

社会参与,重在强调能处理好自我与社会的关系,养成现代公民所必须遵守和履行的道德准则和行为规范,增强社会责任感,提升创新精神和实践能力,促进个人价值实现,推动社会发展进步,发展成为有理想信念、敢于担当的人。社会参与涵盖了担当责任和实践创新两大素养。当代社会,隐私保护和信息安全越来越重要。因此,程序设计课程不仅应教授学生如何设计程序,同时也应树立他们的信息社会责任,即不能编写计算机程序窃取他人的个人信息和隐私,不能散布和传播危害国家、社会安定的言论和病毒,不能参与和组织网络盗取、诈骗他人财务等行为和活动。另外,计算机程序设计是一项思维创新的实践活动,此类课程一般遵循由简单到复杂的循序渐进式教学,逐步强调在动手实践、不断挑战中培养实践创新能力,以解决人们社会生活、生产中的实际问题为教学目的。

二、基于核心素养的计算机程序设计教学策略

著名心理学家和教育学家维果茨基所创立的社会文化历史理论对世界心理学和教育学产生了深远的影响。他的社会文化历史理论包括“人是社会历史产物”和“最近发展区”两大重要概念。

(一)人是社会历史产物与“分享―交流―互助”学习社区

维果茨基在其社会文化历史理论中指出“人从出生起就是一个社会实体,是社会历史产物”,学习行为是在人际交往活动中产生和发展起来的。在学生学习过程中,教师和同伴是学生学习的促进者,而合作学习对学生的认知发展具有重要的促进意义。在课程教学实践过程中,我们建设“分享―交流―互助”的学习社区,为学生搭建分享与交流学习过程和程序设计作品的互动平台。例如,在新一轮课程改革中,我们搭建了有助于学习程序设计的网络互动平台,并逐步发展结合线上、线下的程序设计学习社区,为学生学习程序设计提供了学习资源分享、互商互助的学习环境,以及程序设计作品展示和评价和交流的平台。线上社区的建立可以依托博客、微信群、QQ群等软件工具。此外,线上平台的建立使师生之间、生生之间在课下也可以不受时空限制地相互学习和相互启发,尝试解疑。因此,通过“分享―交流―互助”的方法,也有助于培养学生社会参与的意识和能力。

(二)最近发展区与“使用―修改―创作”教学方法

“最近发展区”是维果茨基理论体系中影响最深远的概念之一。“最近发展区”中明确阐释了教学与学生发展之间的关系是“良好的教学走在发展前面并引导之”。教学应该落在学生的最近发展区内,这样才能最大限度地发挥教学对学生发展的促进作用。在教学实践中,我们采用“使用―修改一创作”的教学方法,循序渐进地帮助学生从了解和掌握知识,到自主创新。例如,在新一轮课程改革中,我们让学生从使用、修改他人的程序设计作品中学习程序设计,了解并掌握程序设计的基本原理和概念,也帮助他们从中发现一些疑问,以供后期自主学习和创新。以教授“排序”算法的课程内容为例,笔者在介绍了排序的概念和常用的选择排序算法后,把完整程序共享在交流平台上,让学生参与排序算法的“再创作”。在这一过程中,一些学生发现选择排序算法对大多数杂乱无序的序列进行排序时,由于时间复杂度不高,算法性能较好;但对极端序列排序时,时间复杂度就高了,算法的收敛性就差。对此,他们改进了选择排序算法并把程序代码编写出来,从“使用”和“修改”过渡到了“创作”。“使用―修改一创作”的教学过程还有助于促进学生培养自主学习的能力。仍然以“排序”算法为例,一些学生课后自主探究了其他排序算法,例如冒泡排序、快速排序、希尔排序和堆排序等,其中有些学生在理解了这些排序算法的原理后,自行设计程序并制作了微课视频和大家共享。

三、结论

本文从文化基础、自主发展和社会参与三个方面论述了计算机程序设计课程与学生发展核心素养之间的关系。以维果茨基的社会文化历史理论为指导,鼓励学生采用“使用―修改―创作”的方法,并依托“分享―交流―互助”的学习社区模式,发展学生的核心素养。计算机程序设计课程与学生发展核心素养相结合的改革之路,为走出灌输模式的知识教育,提供了可行的实践方法。

参考文献

[1]WingJ.M.Computationalthinking[J].CommunicationsoftheACM,2006,(3).

[2]王旭卿.从计算思维到计算参与:美国中小学程序设计教学的社会化转向与启示[J].中国电化教育,2014,(3).

[3]魏烁佳.科学精神引领下的创新思维培养―――以程序设计为教学载体[J].中国信息技术教育,2017,(5).

[4]张传燧.基于学生发展核心素养培育的“四生课堂”建构研究[J].陕西师范大学学报:哲学社会科学版,2017,(5).

[5]核心素养研究课题组.中国学生发展核心素养[J].中国教育学刊,2016,(10).

程序设计论文篇8

关键词:C++高级编程;实践教学;案例教学;综合性实验

“C++高级编程”是一门对学生理论基础及实践能力要求较高的课程。C++高级编程是基于C++静态数据类型检查的、支持多重编程范式的通用程序设计语言基础上的高级编程。它支持过程化程序设计、数据抽象、面向对象程序设计、制作图标、泛型程序设计等多种设计风格,对学生理论水平及动手能力综合素质要求较高。

在教学工作中,我们坚持理论联系实践,帮助学生建立科学、有效的编程思想。并结合教学工作进行开发应用,提高了学生编写程序的动手能力,取得了较好的教学成果。

1教学中存在的主要问题

通过对我院计算机专业“C++高级编程”课程教学现状分析,发现主要存在以下问题:

(1) 重“理论教学”轻“实践教学”。我校计算机专业该课程教学总课时为70学时,要求学生在较短的学习时间内既要掌握理论知识,同时又具备较强的动手实践能力。因此,教师在授课过程中,要么过分强调理论教学,要么过分侧重于流行数据库开发工具的教学,致使理论教学与应用实践比例失衡,使学生存在理论高分实践低能现象。

(2) 教学方法和手段缺乏多样性。目前,多媒体教学日趋流行,我校教师在“C++高级编程”理论授课中大多采用CAI课件进行教学。此教学方法虽然减轻了教师的板书负担,增加了信息量。但学生反映在学习过程中,教学内容重视语法细节而轻视实践环节,理论结合实际解决问题的能力较低,始终处于被动学习状态。

(3) 实验内容过于简单,覆盖理论知识范围有限。在实验课教学过程中,每章节课后题可供学生选择范围较小,各章节实验内容联系不紧密,存在脱节现象。学生无法将所学知识应用到项目的分析、设计、实施、验收各环节中去。既不利于学生理论联系实际,也不利于学生适应工作后的企业项目开发环境。

(4)“教”与“学”考核方法过于单一。我校在“教”与“学”考核方式上以传统的理论笔试为主。该考核方式在“教与学”环节上存在重理论学习轻实践应用,使得绝大多数学生学习目的就是为了顺利通过考试,而忽略了实践能力的培养,致使“高分低能”现象的出现。

2教改思路

“C++高级编程”包括理论讲授、实验和课程设计三个环节,只有各环节紧密衔接、密切配合,才能保证该课程的教学效果。

2.1理论联系实际,采用案例教学法吸引学生兴趣

“C++高级编程”课程涉及知识面较广,理论性和实践性要求较强。在教学过程中,我通过设置具体案例,将学生学习内容溶入到分析、讨论、表达等教学过程中,让学生在具体的问题环境中积极思考、主动探索,培养学生认识问题、分析问题和解决问题的能力。

(1) 以典型案例为例证,引入核心知识。结合教学过程中每个关键知识点设置一些典型程序,以典型程序为例,详细讲解相关的知识点。在此过程中,以教师讲授为主,学生通过对典型程序代码的研讨学习,加深对知识的理解和掌握[1]。

例如,在讲解“网络程序设计”这一章时,首先向学生展示目前网络中最常见的即时聊天软件,如腾讯QQ;其次演示具体的程序实例,并讲解文字、语音或视频聊天程序的核心代码,遇到核心知识点时,再深入讲解相关的理论知识。

采用这种方法授课,可将复杂的问题简单化、枯燥的知识趣味化、抽象的道理具体化,可以使学生产生浓厚的兴趣,极大调动了学生研究学习代码的积极性。

(2) 围绕实际案例,展开讨论。当课程进行到中期时,学生已具备了一定的编程经验,这时可以借助一个实际案例,组织学生开展辩论和研讨。教师提出该案例,但不对案例作具体的解释说明,让学生在课堂上各自阐述自己的观点、论据,并相互提问和回答[2]。

例如,在“数据库程序设计”一章的学习中,总结该章节的内容后,就可以用一个学生做过的数据库程序为实际案例,让学生们讨论该程序有何优点、不足及如何改进。这种方法不仅可以锻炼学生独立发现问题、思考问题的能力,还有利于培养学生敏锐的应变能力、思维能力和语言表达能力。

2.2加强实验教学,锻炼学生动手能力

“C++高级编程”课程的实验教学是整个教学过程中一个非常重要的环节。上机实践不仅能提高学生灵活运用理论知识的能力,而且使学生在编程、上机操作、程序调试等方面受到严格的训练,有效地提高学生程序设计能力。

在开始学习“C++高级编程”课程之前,学生通过“C++程序设计”和“面向对象编程方法”的学习,已具备一定的编程基础。很多学生对程序设计的认识还只是停留在借助程序熟悉语法的程度上,对如何使程序高效、稳定、可移植性强等方面没有很理性的认识。如何培养学生养成良好的编程习惯,真正从专业角度进行软件设计,是“C++高级编程”实验教学需要认真思索和努力解决的问题。

首先,向学生介绍自己多年来的编程经验体会,推荐一些好的书籍和文献资料供学生使用。其次,让学生大量阅读和仿写优秀的程序,通过学习和借鉴快速掌握这些优秀程序员的经验和方法,少走弯路,养成良好的编程习惯。第三步,也是最关键的一步。在实验过程中,始终严格检查学生设计的程序,及时指出其在编程习惯上的错误。很多学生认为只要编写的代码能调试运行出结果就万事大吉,这是错误的思想。作为教师要具有极大的耐心和持之以恒的耐力,及时指出并纠正学生编程中出现的问题,使学生养成良好、高效的编程习惯。

另外,为取得实验教学的最佳效果,在实验项目的设计上采取由浅入深,逐渐增加难度的办法,引导学生逐步提升编程能力。开始时,多设计一些验证性强的实验,让学生结合事例步骤仿写程序。在中后期设计一些具有较强综合性的实验项目,锻炼学生综合运用知识的能力。教师开始时要详细讲解,分阶段布置一些难度较大的作业由学生独立完成,培养学生动手能力。

2.3通过综合性实验,培养学生独立研究的能力

课程设计环节安排在整个教学过程的后期,目的是着重提高学生软件分析、设计和开发的综合能力,是培养学生综合运用知识独立研究的关键环节。

所谓综合性实验是指实验内容涉及本课程的综合知识或相关课程知识的实验。开设综合性实验的目的在于培养学生的综合分析能力、实验动手能力、数据处理能力及查阅中外文资料的能力[3]。为此,我布置了4个综合性设计实验项目。

(1) 多媒体软件设计项目:设计开发一个多媒体播放器,能够播放某种格式的音频文件、视频文件或动画。要求该软件具有选择播放文件,播放、暂停、继续播放、停止、音量控制等基本功能。

(2) 图形图像软件设计项目:设计开发一个图形图像软件,要求该软件能够画出点、直线、圆等基本图形,具有设定颜色、大小、位置等基本功能。

(3) 数据库系统程序设计项目:设计开发一个后台数据库与一个前台信息管理系统,可以对数据库中的记录进行管理。要求该软件具有浏览、修改、增加、删除和查询等基本功能。

(4) 网络程序设计项目:设计开发一个客户机/服务器模式的网络软件,要求能够根据选择建立客户机端程序或服务器端程序,客户机端和服务器端之间能够相互交换数据。

实验中教师采取个别讲解、个别辅导、就普遍存在的问题演示相结合方法进行讲授,有针对性地发现和解决每个学生存在的问题。在课程设计过程中始终坚持以下要求:①按照软件工程思想使用面向对象技术进行程序设计。②注意养成良好的编程习惯和程序设计风格。③不断提高程序调试技能。

要求学生提交的课程设计报告包含的内容有:设计项目涉及的核心知识介绍、设计开发的步骤、程序功能介绍、核心源代码、设计总结。

经过4周共20学时的实践课程学习,学生按时提交了设计结果。其中40%的学生选择了多媒体软件设计项目,45%的学生选择了数据库系统程序设计项目,10%的学生选择了网络程序设计项目,5%的学生选择了图形图像软件设计项目。从设计过程、设计结果和课程设计报告综合分析来看,10%的学生非常优秀地完成了设计,30%的学生完成得较好,50%的学生基本达到了设计目标,而有10%的学生未完成或部分完成了设计。学生普遍反映通过实践学习开阔了视野,提高了编程综合能力,增长了信心,达到了预期的课程设计实践目标。

3结语

2008年5月教育部对我校的本科教学评估中,“C++高级编程课程设计”作为综合性、设计性实验项目获得专家的好评,该科目评审结果为优秀,教学经验在全校教师中进行了推广。

“C++高级编程”这门课程在教材、教学内容、教学方法的选择及实验内容的设计等方面都对任课教师提出了新要求。坚信通过不断实践改革“C++高级编程”教学内容,改进教学方法,我们会培养出更多具有创新型、研究型、综合素质高的人才。

参考文献:

[1] 黄英琼. 谈“计算机图像处理”课程实例教学法[J]. 计算机教育,2007(3):24-26.

[2] 马晓敏,姜远明,胡光. 试论计算机案例教学的新思路[J]. 教学与管理,2007(4):133-134.

[3] 江静.“数据结构”课程综合性实验的实践[J]. 实验科学与技术,2006(6):64-66.

Exploration and Practice on the Teaching Method in C++ Advanced Programming

MA Xiao-ting

(School of Information Engineering, Lanzhou University of Finance and Economics Lanzhou 730020, China)

Abstract: C++ Advanced Programming desires advanced learners that have firm theory base and strong ability in practice, so it is asked highly for students. Which methods are more effective and how to enhance the theory and practice ability of students, it’s one of emphases of the teaching of our school in C++ Advanced Programming. This paper introduce mostly the teaching methodspreap and experience of author in theory teaching and practice teaching.

上一篇:广告创意设计论文范文 下一篇:听力教学论文范文