美章网 精品范文 程序设计论文范文

程序设计论文范文

前言:我们精心挑选了数篇优质程序设计论文文章,供您阅读参考。期待这些文章能为您带来启发,助您在写作的道路上更上一层楼。

程序设计论文

第1篇

【行为导向教学法;程序设计;教学案例

随着计算机应用的普及,计算机应用专业也成了热门专业,而高级程序设计语言是计算机专业的一门必修课。在高级程序设计语言中,VisualBasic语言以其易学易用和功能强大,而且能够方便快捷地开发Windows应用程序等特征,而深受使用者欢迎。因此,其也作为中等职业学校的高级程序设计课的首选。VB是一门集知识和技能于一体、实践性很强的课程,要求学生既要学好理论知识,又要把握实际操作技能,同时,在进行软件开发时,要对用户需求及市场情况进行调研,再加上计算机软、硬件快速更新换代的特征,要求学生还要具有很强的自学能力和终身学习的思想。对于这些要求来说,传统的教学方法难以做到。而使用强调以职业活动为导向,以人的发展为本位的“行为导向教学法”将会较好的实现这些教学要求。本文拟就在中等职业教育的计算机程序设计(VisualBasic)教学中,如何运用“行为导向教学法”进行初步探索。

一、行为导向教学法的基本理论

“行为导向教学法”是在近几年从德国引进的现代的职业教育新模式,其目标层次是培养人的行为能力,方法层次是人的行为活动。即摘要:这种教育以行为为目标,教学以行为为导向,教学是学生积极参和的全面的教学,学习过程是学生同时用脑、心、手来进行学习的过程。

行为导向教学法具有很强的针对性,即是以职业活动为导向,以教会学生“学会学习、学会工作”为目标而开展教学活动,因此,对学习者来说,学习目的是十分明确,即现在的学习是为今后的职业服务。教学活动的开展,通常是围绕某一课题、新问题或项目开展,是以“学习任务”为载体,引导学生自主学习和探索的过程。整个教学过程为一个包括获取信息、制订计划、做出决定、实施工作计划、控制质量、评定工作成绩等环节在内的完整的行为模式。使用“行为导向教学法”,将能更好的培养学生的关键能力(专业能力、方法能力、社会能力、个性能力),以达到职业教育的“职业教育就是就业教育”的教学目标。

二、行为导向教学法在VisualBasic教学中的必要性和可行性

(一)必要性

现行的计算机专业类教材大多和其它学科式的教材一样,重视知识结构的系统性,教学内容大多以线性方式展开,适用于“循序渐进”的传统教学模式,以《VisualBasic程序设计》的教材为例,从语言基础、流程控制、过程和数组、窗体和控件、对话框设计、菜单、工具栏和状态栏设计等等,分章编排,在每一章的内容里,也同样按线性方式展开。假如,在教学中仍按传统的教学方法按章节讲授,势必降低的课程的综合性、实用性,也缺乏趣味性,这不但难以培养学生学习喜好,使得教学双方都陷入困境,而且,学生不知道如何在真实的情境中灵活地使用知识和运用技巧。这样的学习,是很难面对今后职业的。要改变这一现象的方法,比较成功的是运用以课题或项目来开展教学活动的行为导向教学法进行教学,在教学中,淡化知识的系统性和连贯性,更多关注的是知识之间的联系,在联系中学习知识、在综合运用中学习知识,使学生不仅学会了程序设计知识本身,又培养了学生运用程序设计的知识去解决实际新问题的能力,达到“学以致用”的教学目的。

(二)可行性

《VisualBasic程序设计》是一门实践性和操作性很强的课程,知识涉及许多抽象的术语,如摘要:类、对象、过程、语句、控件等等,还有大量的开发工具的使用。仅就VB的开发环境为例,其中就包含了摘要:窗体设计器、代码编辑器、对象浏览器、属性窗口、工程管理器、工具箱、菜单、工具栏等等。把握和熟悉它们的最好方法,就是在不断的结合实际的“案例”(案例教学法)或“课题”(项目教学法)的操作实践中去把握。在教学中,教师可以把课程内容包含在两到三个综合贴近实际的项目,给出案例,再把这个项目分成若干个小项目(或模块)。例如摘要:以开发一个“学生信息管理系统”为一个综合项目(教师首先给出案例演示,以引起同学们的关注),再分别以“登录窗口”、“查询窗口”等为小项目进行设计开发,学习相关的基础知识(如摘要:在设计“登录窗口”的项目中,学生可以把握“文本框、标签、命令按钮、属性设置、变量命名规则、变量定义、变量数据类型、变量的声明语句、赋值语句”等相关知识群)。学生在具有目标明确的项目驱动下,以“做中学”的方法进行学习,这样,不仅可以提高他们学习的主动性和学习乐趣,同时也培养了他们的关键能力。

二、“行为导向教学法”案例

行为导向教学法中的“项目教学法”是指师生以团队的形式共同实施一个完整“项目”的工作而进行的教学活动。通过在开展项目过程中有针对性的工作来培养学生的关键能力,非凡是独立工作能力、想象力、创新能力。项目教学法包括了计划、实施和检查及成果展示的全过程。它是由学生自己来完成整个过程的教学方法。以下是一个项目教学法的简案。

项目摘要:学生信息管理系统

(一)教学目标

1.培养学生运用VisualBasic知识解决实际新问题的能力;

2.培养学生独立学习和工作的能力;

3.培养学生和人合作的能力。

(二)项目的实施过程

三、需要重点注重的两个新问题

(一)教师角色的转换

在行为导向教学中,对教师提出了更高的要求。教师应是“双师型”的教师,老师的角色由传统的教学主导者转变为教学活动的引导者或主持人,在教学过程中,教师以咨询员、伙伴、朋友等角色出现在学生中,教学方法由注重“教法”转变为注重“学法”,为此,要完成教学任务,教师要付出更多的心血。

(二)项目设计的合理性

项目设计的最重要的原则就是可实践性,以保证学生可操作,并有收获。因此,项目的设计应采用结构化的方法,自上而下,逐步细化的原则;项目的实施,则采用自下而上,由易到难,逐步完善的原则进行。

第2篇

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

二、教法学法

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

四、结束语

第3篇

实际上,只有从芯片开始仔细设计,才能方便地实现多处理器系统的调节功能。这里选用的是AD公司新出品的SHARC级处理器ADSP21160。

ADSP21160具有很大的片内存储区、多重内部总线结构、独立的I/O子系统;具有构造多处理器系统的所有特点,能够真正支持处理器数目的可调节功能,十分适合组成高性能浮点的多DSP系统。

VxWorks是目前世界上用户数量最大的实时操作系统。这使它除了具有优越的技术性能之外,还具有丰富的应用软件支持、良好的技术服务和可靠的系统稳定性。由于它具有以上优点,本系统中选用了VxWorks作为MVME167的操作系统。

一、ADSP21160的特点

ADSP21160是AD公司采用超级哈佛结构的一种新产品。21160的汇编代码与2106x兼容,处理器具有SIMD(单指令流多数据流)功能;而2106x只具有SISD(单指令流单数据流)功能。为了充分利用这种新的功能,一些指令做了一些改变。ADSP21160包括1个100/150MHz的运算核、双端片内SRAM、1个支持多处理器的集成在片内的I/O处理器和多重内部总线以消除I/O瓶颈。

ADSP21160的汇编源代码与2106x兼容。SIMD计算结构:2个32bit的计算单元,其中每一个单元包括乘法器、ALU、移位寄存器及寄存器文件。具有完备的与设备接口功能。包括独立的I/O处理器、4Mbit的片内双端SRAM、可直接连接的多处理器特性及端口(串口、连接口、外总线及JTAG)。

ADSP21160包括2个运算处理单元,具有SIMD功能。处理单元指的是PEX和PEY。PEX始终是有效的,而PEY的有效是通过设置MODE1寄存器中的PEYEN位来实现的。当PEY模式有效时,同一条指令在2个处理器单元中都得到执行,但每一个处理器单元中的操作数不同。

SIMD模式在存储区和处理器单元之间的数据传输也是很有作用的。当使用SIMD模式,通过加倍数据带宽来保证处理器单元的操作。在SIMD模式,当使用DAGs来传输数据时,存储区每次访问所传输的是两个数据值。

ADSP21160包括4Mbit的片内SRAM,分为两块,每一块2Mbit。可以定义为不同字长的指令和数据存储。每一个存储块的双端口结构可以使存储块独立地被运算核处理和I/O处理器访问。21160的存储区最大可以容纳128K的32bit数据,或256K的16bit数据,或85K的48bit指令,或其他混合字长的数据,但总和最大为4Mbit。所有存储区可以16、32、48、64bit字长的字访问。外端口支持处理器与片外存储器及外设的接口,片外的4G地址空间属于21160的统一地址空间。

外端口支持同步、异步及同步BURST访问。DMA控制器的操作相对处理器运算核是独立和不可见的,即DMA操作可与执行指令同时进行。DMA传输可以在内部存储区与外部存储区、设备或主机之间进行。21160共有14个DMA通道,其中:连接口(linkport)占6个;串口占4个;外端口(externalport)占4个。21160可以通过DMA传输来下载程序,异步设备也可以通过DMA请求/应答线来控制2个DMA通道。

21160具有许多特点支持多DSP系统。外端口与连接口支持多处理器系统的直接连接,外端口支持统一的地址空间,允许DSP之间互相访问。片内具有分布式总线仲裁逻辑,最多支持6片21160和主机连接。外端口的最大数据传输率为400MB/s,广播写信号可以同时发

送到各片21160。6个连接口提供了另一种方法实现多处理器之间的通信。连接口的最高传输速率为600MB/s。

整个系统基于VME总线。VME总线系统作为最早的国际通用开放式总线,自1981年起,经历了近20年的发展。其影响不断扩大,功能不断完善,现已成为性能最好、应用最广的国际总线标准之一。

根据设计要求,采用了4片ADSP21160。片外共享内存SRAM可以被主机和各片DSP直接访问;EPROM用来存放初始化程序和各片DSP要运行的程序,在系统上电后这些程序被下载到各片DSP中;LEDs用来显示插件的状态,如reset、normal等。每一片都有1个连接口连到插件的前面板,这样前端采集来的数据就可以很方便地传输到多DSP上,而且也使数据的传输模式更加灵活。

连接口(linkport)是SHARC系列DSP芯片的一个特点。ADSP21160共有6个8bit连接口提供额外的I/O服务。在100MHz时钟下运行时,每个连接口可达100MB/s。连接口尤其适合多处理器间点到点的连接。连接口可以独立地同时操作,通过连接口的数据封装成48/32bit字长后,可以从片内存储区直接被运算核读取或DMA传输。每一个连接口有它自己的双缓冲I/O寄存器,数据传输可编程,硬件由时钟/应答握手线控制。4片DSP使用连接口实现DSP间两两互连。

21160的主机接口可以很方便地与标准微处理器总线(16/32bit)相连,几乎不需要额外硬件。主机通过21160的外端口对其进行访问,存储区地址映射为统一的地址空间。4个DMA通道可以用于主机接口,代码和数据传输的软件开销很小,主处理器通过HBR、HBG和REDY信号线与21160进行通信,主机可以对片内存储区进行直接读写。

二、开发环境Tornado

VxWorks的开发环境是WindRiver公司提供的Tornado。Tornado采用主机-目标机开发方式,主机系统可采用运行SunSolaris、HP-UX以及Win95/NT的工作站或个人计算机,VxWorks则运行在Intelx86、MC68K、PowerPC或SPARC等处理器上。Tornado支持各种主机-目标机连接方式,如以太网、串行线、在线仿真器和ROM仿真器。

Tornado的体系结构使得许多强有力的开发工具可以用于各种目标机系统和各种主机-目标机连接方式下,而不受制于目标机的资源和通信机制。同时VxWorks具有良好的可剪裁性。因此它适用于各种嵌入式环境的开发,小到资源极其有限的个人手持式设备如PDA(PersonalDigitalAssistant);大到多处理机系统,如VME系统。

Tornado可提供一个直观的、可视化的、用户可扩充的开发环境,极大缩短了开发周期。同时,由于Tornado是一个完全的开放系统,使得集成第三方开发工具变得十分容易。

主机与目标机之间的通信是通过运行各自处理器上的进程来完成的,使主机上的开发工具和目标机的操作系统可以完全脱离相互连接的方式。

为了摆脱主机-目标机通信带宽和目标机资源的限制,Tornado将传统的目标机方的工具迁移到主机上,如shell、loader和符号表等。这样,系统不再需要额外的时间和带宽在主机和目标机之间交换信息,降低了对连接带宽的需求,也避免了目标机的资源(如内存)被工具或符号表大量占用,使得应用程序拥有更多的系统资源。同时这种迁移也使得各种主机开发工具独立于目标机存在,从而使同一主机平台上的工具可以用于所有的目标机系统。

作为一个应用软件开发环境,Tornado提供了友好的可视化开发界面、交叉编译环境、源码级调试工具、目标机命令解释器和目标机状态监视器等多种应用工具,为应用软件开发提供了一个高效而可靠的平台。

三、程序设计

我们选用的DSP开发工具是AD公司提供的VisualDSP。这是一个集成开发环境,支持对SHARC系列DSP芯片的开发。实时操作系统VxWorks的开发工具是WindRiver公司的Tornado集成开发工具。VisualDSP可以C语言或汇编语言编

写的DSP代码,最新版本的VisualDSP还支持C++。它还有1个优点,就是可以编译多片DSP的源代码,并产生下载文件,这就可以很方便地进行多DSP系统的软件模拟。

ADSP21160阵列的设计结构使它既可以构成单指令流多数据流(SIMD)的并行处理机,也可以构成多指令流单数据流(MISD)或多指令流多数据流(MIMD)的流水线处理机,视用户的要求而定。这两种并行方案的选择,简单来说就是选择分割数据流还是分割处理工序。SIMD方案的原理如图1所示。

以下介绍我们实验室承担的水声信号处理系统。本系统以VME总线为系统开发平台,前端调理模件、模数转换模件和前端控制模件等为VME插件,采用SHARC级DSP芯片阵列完成声纳信号实时处理,基于嵌入式实时操作系统VxWorks及X窗口系统的中央控制和显示。

图2是4片DSP的任务分配图。从前端采集来的信号,经波束形成和复解调,再经过窄带滤波后的信号分为两路,一路送去进行幅度检波,一路做频域处理。幅度检波就是对复信号求模,根据信号幅度判决有无目标存在。频域处理分两种情况:当发射信号为单频脉冲时,进行功率谱估计,然后根据多普勒频移估计目标速度;当发射信号为双曲调频信号时,进行相关处理。

声纳综合数据处理主要包括主动声纳信号处理和被动声纳信号处理。其中,主动声纳信号处理又根据发射信号的不同,分为非相干处理、相干处理、功率谱处理。声纳综合数据处理主要完成:目标自动检测、目标参数测定和动目标跟踪。

四、操作流水线

操作流水线是模块内数据计算与I/O的流水线,物理上表现为CPU与I/O端口的DMA之间的并行。在前端处理中由于数据率高,通信开销很大。以通信任务最为繁重的复解调和多普勒补偿模块为例,输入数据率为2Mw/s,输出数据率为4Mw/s,高速连接口LinkPort最高速率为100Mw/s,如果采用串行传输的话,通信时间就将占用60%以上的处理时间,计算时间显然严重不足。所以必须采用并行执行,流程图如图3所示。这也是一种异步流水线方式,每次传送和计算完成都须要设置标志以通知下一操作。

结束语

在VxWorks实时操作系统下,4片ADSP21160上的程序已经通过模拟输入和系统测试。采用SHARCDSP阵列能够很好地完成声纳信号实时处理,每一片DSP至少有10%的计算裕量,基本达到设计要求。

送到各片21160。6个连接口提供了另一种方法实现多处理器之间的通信。连接口的最高传输速率为600MB/s。

整个系统基于VME总线。VME总线系统作为最早的国际通用开放式总线,自1981年起,经历了近20年的发展。其影响不断扩大,功能不断完善,现已成为性能最好、应用最广的国际总线标准之一。

根据设计要求,采用了4片ADSP21160。片外共享内存SRAM可以被主机和各片DSP直接访问;EPROM用来存放初始化程序和各片DSP要运行的程序,在系统上电后这些程序被下载到各片DSP中;LEDs用来显示插件的状态,如reset、normal等。每一片都有1个连接口连到插件的前面板,这样前端采集来的数据就可以很方便地传输到多DSP上,而且也使数据的传输模式更加灵活。

连接口(linkport)是SHARC系列DSP芯片的一个特点。ADSP21160共有6个8bit连接口提供额外的I/O服务。在100MHz时钟下运行时,每个连接口可达100MB/s。连接口尤其适合多处理器间点到点的连接。连接口可以独立地同时操作,通过连接口的数据封装成48/32bit字长后,可以从片内存储区直接被运算核读取或DMA传输。每一个连接口有它自己的双缓冲I/O寄存器,数据传输可编程,硬件由时钟/应答握手线控制。4片DSP使用连接口实现DSP间两两互连。

21160的主机接口可以很方便地与标准微处理器总线(16/32bit)相连,几乎不需要额外硬件。主机通过21160的外端口对其进行访问,存储区地址映射为统一的地址空间。4个DMA通道可以用于主机接口,代码和数据传输的软件开销很小,主处理器通过HBR、HBG和REDY信号线与21160进行通信,主机可以对片内存储区进行直接读写。

二、开发环境Tornado

VxWorks的开发环境是WindRiver公司提供的Tornado。Tornado采用主机-目标机开发方式,主机系统可采用运行SunSolaris、HP-UX以及Win95/NT的工作站或个人计算机,VxWorks则运行在Intelx86、MC68K、PowerPC或SPARC等处理器上。Tornado支持各种主机-目标机连接方式,如以太网、串行线、在线仿真器和ROM仿真器。

Tornado的体系结构使得许多强有力的开发工具可以用于各种目标机系统和各种主机-目标机连接方式下,而不受制于目标机的资源和通信机制。同时VxWorks具有良好的可剪裁性。因此它适用于各种嵌入式环境的开发,小到资源极其有限的个人手持式设备如PDA(PersonalDigitalAssistant);大到多处理机系统,如VME系统。

Tornado可提供一个直观的、可视化的、用户可扩充的开发环境,极大缩短了开发周期。同时,由于Tornado是一个完全的开放系统,使得集成第三方开发工具变得十分容易。

主机与目标机之间的通信是通过运行各自处理器上的进程来完成的,使主机上的开发工具和目标机的操作系统可以完全脱离相互连接的方式。

为了摆脱主机-目标机通信带宽和目标机资源的限制,Tornado将传统的目标机方的工具迁移到主机上,如shell、loader和符号表等。这样,系统不再需要额外的时间和带宽在主机和目标机之间交换信息,降低了对连接带宽的需求,也避免了目标机的资源(如内存)被工具或符号表大量占用,使得应用程序拥有更多的系统资源。同时这种迁移也使得各种主机开发工具独立于目标机存在,从而使同一主机平台上的工具可以用于所有的目标机系统。

作为一个应用软件开发环境,Tornado提供了友好的可视化开发界面、交叉编译环境、源码级调试工具、目标机命令解释器和目标机状态监视器等多种应用工具,为应用软件开发提供了一个高效而可靠的平台。

三、程序设计

我们选用的DSP开发工具是AD公司提供的VisualDSP。这是一个集成开发环境,支持对SHARC系列DSP芯片的开发。实时操作系统VxWorks的开发工具是WindRiver公司的Tornado集成开发工具。VisualDSP可以C语言或汇编语言编

写的DSP代码,最新版本的VisualDSP还支持C++。它还有1个优点,就是可以编译多片DSP的源代码,并产生下载文件,这就可以很方便地进行多DSP系统的软件模拟。

ADSP21160阵列的设计结构使它既可以构成单指令流多数据流(SIMD)的并行处理机,也可以构成多指令流单数据流(MISD)或多指令流多数据流(MIMD)的流水线处理机,视用户的要求而定。这两种并行方案的选择,简单来说就是选择分割数据流还是分割处理工序。SIMD方案的原理如图1所示。

以下介绍我们实验室承担的水声信号处理系统。本系统以VME总线为系统开发平台,前端调理模件、模数转换模件和前端控制模件等为VME插件,采用SHARC级DSP芯片阵列完成声纳信号实时处理,基于嵌入式实时操作系统VxWorks及X窗口系统的中央控制和显示。

图2是4片DSP的任务分配图。从前端采集来的信号,经波束形成和复解调,再经过窄带滤波后的信号分为两路,一路送去进行幅度检波,一路做频域处理。幅度检波就是对复信号求模,根据信号幅度判决有无目标存在。频域处理分两种情况:当发射信号为单频脉冲时,进行功率谱估计,然后根据多普勒频移估计目标速度;当发射信号为双曲调频信号时,进行相关处理。

声纳综合数据处理主要包括主动声纳信号处理和被动声纳信号处理。其中,主动声纳信号处理又根据发射信号的不同,分为非相干处理、相干处理、功率谱处理。声纳综合数据处理主要完成:目标自动检测、目标参数测定和动目标跟踪。

四、操作流水线

操作流水线是模块内数据计算与I/O的流水线,物理上表现为CPU与I/O端口的DMA之间的并行。在前端处理中由于数据率高,通信开销很大。以通信任务最为繁重的复解调和多普勒补偿模块为例,输入数据率为2Mw/s,输出数据率为4Mw/s,高速连接口LinkPort最高速率为100Mw/s,如果采用串行传输的话,通信时间就将占用60%以上的处理时间,计算时间显然严重不足。所以必须采用并行执行,流程图如图3所示。这也是一种异步流水线方式,每次传送和计算完成都须要设置标志以通知下一操作。

第4篇

上机实验课是《Java程序设计》课程教学环节中不可或缺的一部分,然而,在实际教学过程中,上机实验课应有的作用并没有被充分发挥出来。一项针对计算机专业学生的调查问卷结果显示,学生即便将理论知识学的扎实透彻,但遇到实际的编程问题时却很被动,不知道从何处下手。导致这种现象发生的原因就是高职院校对实验的重视度和关注度不高,没有给予学生充足的实验机会及指导,这样一来,学生的动手能力就相对较差。传统的教学模式下上机实验课的流程就是学生上机编程来完成教师预先布置的编程任务,教师则会呆在机房内随时解决学生在实际操作过程中提出的问题。这种实验方式没有给学生设定明确的上机目标,致使学生没有完成任务的紧迫感,甚至有的学生在教师看不到的时候肆意玩乐,这样一来,非常不利于培养学生的动手能力及解决问题的能力。由此不难看出,按照传统的教学模式来培养学生,学生不能够很好地具备解决实际问题的能力,因此,传统教学模式下的高职Java程序设计课程教学不能满足社会对高素质、高能力技术型人才的需求。

2高职Java程序设计课程教学的改革

2.1教学内容的改革

高职教育更侧重于将学生培养成能够满足工作岗位或职业需求、掌握相应技能的应用型人才,因此,改革教学内容是非常有必要的。改革教学内容就是改变传统的理论教学,引入适量的案例,将基本理论的讲授穿插于案例教学中。需要特别注意的是,选择恰当合理的案例是非常重要的,它的质量能够直接影响到最终的教学效果。因此,教师要根据学生认知的特点选择具有适用性及代表性的案例,而且这些被选择的案例必须能够包含Java程序设计中的大部分知识,这些案例既区别于课堂上的举例,但又和它们具有一定的联系。为了能够很好地展开案例教学,教师在课前需要对案例教学进行周密详细的安排,主要包括四个方面,它们分别是发放案例素材、组织案例实施、区分案例分析中的理论分析以及操作分析、安排处理案例教学中涉及到的外延知识。案例教学能够在课堂上很好的结合理论与实践,促进学生综合能力的提升。学生带着问题去分析案例,在这个过程中教师对涉及到的相关理论知识进行讲授,这种方式能够帮助学生更好地理解知识。对案例进行分析的过程不仅能够使学生拓宽知识面,掌握分析问题的技巧,还能够帮助学生将理论运用于实践,更好地消化吸收所学知识。因此,相比传统的理论教学,案例教学这种教学方法更够满足当今社会对应用型人才的需求。

2.2教学方法的改革

当今社会团队协作能力是非常重要的,因此,改革教学方法最主要的一个途径就是实行小组教学。所谓小组教学就是很据自愿或者协商的原则,将全班学生平均划分成几个小组,由小组成员共同推选出一个成员作为组长。在课堂上,首先教师需要在对典型案例进行讲解的过程中穿插对Java语言的介绍,帮助学生更好地理解进而接受理论知识,并且深入了解Java语言面向对象的特性。然后教师通过为每个学习小组安排编程的任务来使学生对案例进行分析,并且分析讨论后每个小组都要确定出最终的解决方案,由教师来点评这些方案。为了能够使学生高效率的完成规定任务,教师要在分析讨论过程中对学生提出相应的技术要求及纪律要求,并设定一个恰当的完成期限。这种教学模式充分体现了学生学习的自主性,彰显了学生课堂的主体地位以及突出了教师协助引导的作用。小组教学的教学模式可以使学生进行不同的思想交流,擦出智慧的火花,正如萧伯纳所说“如果我有一个苹果,你有一个苹果,互相交换,还是你有一个苹果,我有一个苹果。但是我有一种想法,你有一种想法,交换一下,双方就都有了两种思想。”这就说明了通过小组交流,学生思维会更加活跃,从而产生更优的思想。通过小组教学,不仅可以提升学生对理论知识的认知度,培养团队合作的能力,还能够提升学生分析、处理、解决问题的能力。此外,在小组教学的过程中,教师能够迅速接收到来源于学生的反馈信息,比如反馈分析案例过程中遇到的问题等信息,通过这些反馈信息,教师能够及时的采取相应措施来解决问题,从而实现教学相长。

2.3考核方式的改革

对教学成果进行考核对无论是教还是学都能做出恰当的评价,目前我国高职院校中通常采取考核这一手段来对教学的效果进行检验。在传统的教学模式下,通常采取卷面考试来进行考核,而且最终结果往往是由一次考试的成绩来评定的,也就是说,无论学生平日里表现多好,但如果在作为最终考核的那次考试中发挥失常,那么就会在一定程度上否认这个学生的学习能力。而且这种考核方式并不能够对学生的能力、知识以及技能做到真实的反映。由此看来,为了能够对学生的学习做出恰当合理的评价,改革考核方式是非常有必要的。这就要求高职院校要制定一个科学的评价标准,重点突出对学生知识应用能力的培养。在对高职Java程序设计课程学习进行考核时,可以通过两个方面来展开考核工作,相应地,学生总成绩也由两部分组成,一部分是综合能力考核成绩,另一部分是平时课堂表现成绩。具体来讲,一方面,通过案例教学,教师要求每个小组在对案例分析完成之后,做出案例的分析报告,在此基础上,综合小组成员的意见和建议,为假定的任意一个应用领域或虚拟企业设计一个信息管理系统,然后模拟其运行环境,最后进行编码或者程序设计。总之,就是给予学生一个展示自我知识、技能、操作等综合能力的机会,这种考核方式能够使学生更加牢固、系统的掌握所学的理论知识,这方面的考核成绩占据较大的比重,在总成绩中通常占据60%的比例。另一方面,也就是占据总成绩40%的平时成绩,具体来讲,就是在平时教学过程中,教师要密切关注课堂小组讨论中每位学生的表现,并且加以记录,给出相应的分数。此外,在本门学科结束学习后,教师需要组织每个小组进行小组内成员间的彼此评价,相互打分。最后,教师通过对这两小部分的成绩进行综合的评定,给出每个学生最终的平时课堂表现成绩。

3总结

第5篇

(一)CDIO模式下教学内容设计.NET平台支持多种应用项目的开发,所以.NET程序设计课程的教学内容繁多,结合课时要求,除去导论部分,将授课内容整理为面向对象程序设计、Win-dows应用程序设计、数据库访问技术、Web技术开发四大模块。每个模块都以原理、设计和应用为线索组织教学,并按照知识模块组织专题进行授课内容设计:(1)面向对象程序设计部分,涉及C#基本语法、类和对象、继承、多态、接口及其实现、委托和事件、异常处理等;(2)Windows应用程序设计部分涉及Windows项目开发流程、窗体、控件的使用;(3)数据库访问技术涉及体系结构、.NETFramework数据库提供程序、数据绑定技术;(4)Web技术开发涉及控件及内置对象、Web数据绑定技术、HTML和CSS样式等内容。通过这样设计教学内容,教师能从较高层次把握课程内容的地位和作用以分配不同的课时,学生容易理清不同应用项目开发所用技术的不同及之间的关系。

(二)“多层次递进式”项目设计实验项目设计采用多层次、递进式方式。以学生为本,从简单到复杂、从单一到综合、从验证型到创新型,循序渐进地把教学内容和能力培养体现在项目中。将课程实验分为基础验证型、综合设计型和实践创新型三个层次,根据知识模块设计相应项目引导课程的教和学,并有侧重点地体现CDIO能力的培养,项目列表及对应CDIO能力培养如表1所示。凝练优秀的教学型工程项目是基于CDIO项目学习模式成功的关键之一。因此表1中所列项目都是经过教学实践反复修改完善的。实践创新型实验与软件工程、数据库课程相结合,采用一个完整的项目做载体贯穿始终。这样设计实验,首先可以将知识和课程有机结合,有助于学生明确它们在解决复杂工程问题中的关联和作用;然后减少了课程之间衔接的重复、冗余;也减少了学生重复完成项目的工作量。在实践创新型项目的凝练过程中,充分考虑学生熟悉并感兴趣的项目,一类是校内项目,如网上选课系统,校园二手商品交易网站等,这样不仅能解决教师的实际需求,也能满足学生通过实际项目开发Web开发技能的培养;另一类是自主选择项目,可以提高学生项目的开发热情和兴趣。

(三)基于CDIO的教学实施在具体教学过程中,按照知识模块为教学单位进行。32学时的理论授课和作业结合,并辅以小测试加强理论知识的巩固。每个模块的理论授课完毕完成对应的实验项目,共20学时,加入反思及答辩环节,最后进行期末考试。理论教学采用多种教学方式。对绪论性内容、面向对象程序设计等有一定难度的理论知识,依然采用讲授教学方式;对Windows应用开发,采用启发式案例教学法,以Windows系统自带记事本为例,逐渐讲解各种控件的应用及开发流程;对Web技术开发,综合案例教学和任务驱动教学,对已经完成的“工程训练中心选课系统”的项目进行精练,作为授课案例,详细讲解需求分析过程,然后引导学生概要设计、详细设计,并以具体模块为例进行程序编码及调试运行。整个授课环节,板书和多媒体相结合,现场程序编写及调试,不仅帮助学生直观理解概念、原理和方法,也可以提高学生的兴趣,形成以教师为主导,学生为主体的教学模式。实验教学不同层次实验区别实施。对验证型实验和综合设计型实验,每人单独完成,旨在通过实验使学生深入掌握基本知识、原理、编程的基本技巧,实验过程中老师及时解决学生所遇问题并掌握进展情况,每次实验课的最后半个小时,验收部分学生的实验以督促学生学习;并展示往届有代表性的实验报告和程序,规范学生实验报告的撰写,激励学生互相学习,共同进步。对实践创新型实验,学生4~6人为单位形成开发小组,一人任组长,进行角色划分。团队按照软件工程的开发步骤,进行需求分析、概要设计及详细设计和测试,撰写各个阶段的开发文档,要求团队共同参与项目答辩。各层次实验的考核都设有答辩和反思环节。反思不仅可以启发学生积极进行批判性思考来深化课程学习目标,而且也有助于学生进行深层次的学与问,引导学生主动学习的兴趣。

二、结语

第6篇

教学中立足具体实例,渗透基本概念;分散难点,逐步渗透;设置问题情境,分析解决问题的方法。教学实例按照学生的认知规律,遵循先易后难、先具体后抽象的原则,从基础层次、应用层次、提高层次三个阶段进行实例教学。基础层次的实例应该把对象的用法渗透到一个个程序实例中,由浅入深逐渐介绍,让学生在编写程序的过程中总结对象的用法。应用层次的实例重点介绍对象的什么属性、方法和事件可以解决什么实际问题。如对象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交流答疑

第7篇

关键词遗传算法;TSP;交叉算子

1引言

遗传算法是模拟生物在自然环境中的遗传和进化过程而形成的一种自适应全局优化概率搜索算法。总的说来,遗传算法是按不依赖于问题本身的方式去求解问题。它的目标是搜索这个多维、高度非线性空间以找到具有最优适应值(即最小费用的)的点[1]。

基本遗传算法是一个迭代过程,它模仿生物在自然环境中的遗传和进化机理,反复将选择算子、交叉算子和变异算子作用于种群,最终可得到问题的最优解和近似最优解。

2遗传算法程序设计改进比较

2.1基本遗传算法对TSP问题解的影响

本文研究的遗传算法及改进算法的实现是以C++语言为基础,在Windows2000的版本上运行,其实现程序是在MicrosoftVisualStadio6.0上编写及运行调试的。

1)遗传算法的执行代码

m_Tsp.Initpop();//种群的初始化

for(inti=0;i<m_Tsp.ReturnPop();i++)

m_Tsp.calculatefitness(i);//计算各个个体的适应值

m_Tsp.statistics();//统计最优个体

while(entropy>decen||variance>decvar)//m_Tsp.m_gen<100)

{

//将新种群更迭为旧种群,并进行遗传操作

m_Tsp.alternate();//将新种群付给旧种群

m_Tsp.generation();//对旧种群进行遗传操作,产生新种群

m_Tsp.m_gen++;

m_Tsp.statistics();//对新产生的种群进行统计

}

2)简单的遗传算法与分支定界法对TSP问题求解结果的对比

遗传算法在解决NPC问题的领域内具有寻找最优解的能力。但随着城市个数的增加,已没有精确解,无法确定遗传算法求解的精度有多高。一般情况下,当迭代代数增大时,解的精度可能高,但是时间开销也会增大。因此可以通过改进遗传算法来提高搜索能力,提高解的精度。

2.2初始化时的启发信息对TSP问题解的影响

1)初始化启发信息

在上述实验算法的基础上,对每一个初始化的个体的每五个相邻城市用分支界定法寻找最优子路径,然后执行遗传算法。

2)遗传算法与含有启发信息的遗传算法求解结果的对比

当城市数增至20个时,用分支定界法已经不可能在可以接受的时间内得到精确的解了,只能通过近似算法获得其可接受的解。试验设计中算法的截止条件:固定迭代1000代。表2中的平均最优解为经过多次试验(10次以上)得到的最优解的平均值,最优解的出现时间为最优解出现的平均时间,交叉操作次数为最优解出现时交叉次数的平均值。

表220个城市的TSP问题求解结果数据

算法交叉操作

次数最优解

出现时间平均

最优解

简单遗传算法80244.479.4s1641.8

含初始化启发信息的GA79000.237.4s1398.9

从表2中可以看出,当初始种群时引入启发信息将提高遗传算法的寻优能力。同时缩短了遗传算法的寻优时间和问题的求解精度。

2.3交叉算子对TSP问题解的影响

1)循环贪心交叉算子的核心代码

for(i=1;i<m_Chrom;i++)

{

flag=0;

city=m_newpop[first].chrom[i-1];//确定当前城市

j=0;

while(flag==0&&j<4)

{

sign=adjcity[city][j];//adjcity数组的数据为当前城市按顺序排列的邻接城市

flag=judge(first,i,sign);//判断此邻接城市是否已经存在待形成的个体中

j++;

}

if(flag==0)//如果所有邻接城市皆在待扩展的个体中

{

while(flag==0)

{

sign=(int)rand()/(RAND_MAX/(m_Chrom-1));//随机选择一城市

flag=judge(first,i,sign);

}

}

if(flag==1)

m_newpop[first].chrom[i]=sign;

}

2)问题描述与结果比较

下面笔者用经典的测试遗传算法效率的OliverTSP问题来测试循环贪心交叉算子的解的精度和解效率。OliverTSP问题的30个城市位置坐标如表3所示[2]。

从表4、图1中可以看到,贪心交叉算子大大提高了遗传算法的寻优能力,同时也降低了交叉操作次数。在多次试验中,贪心交叉算子找到的最优解与目前记载的最佳数据的误差率为2.7%。而部分匹配交叉算子找到的最优解与目前记载的最佳数据的误差率高达7%。从而可以得到交叉算子对于遗传算法

2.4并行遗传算法消息传递实现的核心代码

1)主程序代码

//接收各个从程序的最优个体

for(i=0;i<slave;i++)

{

MPI_Recv(Rchrom[i],chrom,MPI_UNSIGNED,MPI_ANY_SOURCE,gen,MPI_COMM_WORLD,&status);

}

//计算接收各个从程序的最优个体的回路距离

for(i=0;i<slave;i++)

{

fitness[i]=0.0;

for(intj=0;j<chrom-1;j++)

fitness[i]=fitness[i]+distance[Rchrom[i][j]][Rchrom[i][j+1]];

fitness[i]=fitness[i]+distance[Rchrom[i][0]][Rchrom[i][chrom-1]];

}

//找到最优的个体并把它记录到文件里

for(i=0;i<slave;i++)

{

if(1/fitness[i]>min)

{

sign=i;

min=1/fitness[i];

}

}

fwrite(&gen,sizeof(int),1,out);

for(i=0;i<chrom;i++)

fwrite(&Rchrom[sign][i],sizeof(unsigned),1,out);

fwrite(&fitness[sign],sizeof(double),1,out);

//每九代向从程序发送一个最优个体

if(gen%9==0)

MPI_Bcast(Rchrom[sign],chrom,MPI_UNSIGNED,0,MPI_COMM_WORLD);

2)从程序代码

//将上一代的最优个体传回主程序

MPI_Send(Rchrom1,chrom,MPI_UNSIGNED,0,gen,MPI_COMM_WORLD);

//每九代接收一个最优个体并将其加入种群中替换掉最差个体

if(gen%9==0)

{

PI_Bcast(Rchrom2,chrom,MPI_UNSIGNED,0,MPI_COMM_WORLD);

Tsp.IndiAlternate(Rchrom2);

}

//进行下一代的计算

Tsp.Aternate();

Tsp.Generation();

Tsp.Statistics();

3)并行遗传算法的性能

笔者在MPI并行环境下,用C++语言实现了一个解决TSP问题的粗粒度模型的并行遗传算法。该程序采用的是主从式的MPI程序设计,通过从硬盘的文件中读取数据来设置染色体长度、种群的规模、交叉概率和变异概率等参数。试验环境为曙光TC1700机,测试的对象是OliverTSP问题的30个城市的TSP问题。

正如在测试串行遗传算法所提到的数据结果,并行遗传算法也没有达到目前所记录的最好解,但是它提高了算法的收敛性,并行遗传算法的收敛趋势如图2所示[4]。

图2遗传算法的收敛过程

3结束语

本文通过对基本遗传算法的不断改进,证明了添加启发信息、改进遗传算子和利用遗传算法固有的并行性都可以提高遗传算法的收敛性,其中对遗传算法交叉算子的改进可以大大提高遗传算法的寻优能力。

参考文献

[1]刘勇、康立山,陈毓屏著.非数值并行算法-遗传算法.北京:科学出版社1995.1

[2]IMOliverDJSmithandJRCHolland,Astudyofpermutationcrossoveroperatorsonthetravelingsalesman[C]//ProblemofthesecondInternationalConferenceonGeneticAlgorithmsandTheirApplication,Erlbaum1897:224-230

第8篇

关键词:VB;程序设计;改革;实践

Abstract:VisualBasicprogrammingasapublicnon-professionalcomputer-basedlessons,theoryandpracticestrong,andteachingdifficult.Thearticleonhowtoimprovethequalityofteachingandtrainingstudentsinanintegratedapplicationdevelopmentcapabilitiesandexplorereformsweremade.

Keywords:VB;programming;reform;practice

1引言

VisualBasic(下面简称VB)程序设计是我校非计算机专业学生的必修课,然而VB语言枯燥、难以理解,学生缺乏相应的知识背景,导致学生对这门课有恐惧心理,缺乏兴趣。这就要求我们教师在教学中分析、摸索出一些较为行之有效的教学方法,才有可能培养学生程序设计能力,掌握一门技能,激发学生对程序设计的兴趣。笔者在近几年的教学实践中进行了如下改革探索,取得了良好的教学效果。

2教学改革与实施

2.1对课本原有知识进行整合,激发学生的学习兴趣

大部分的教材总是先讲VB语言的基本语法,然后再讲VB中对象的使用。但在讲授时不宜将两者分开,要把VB面向对象的程序设计方法,事件驱动的编程机制贯穿于整个教学过程中。VB中的对象主要用于构建界面,而具体程序功能的实现则要编写代码行,因此任何一个完整的应用程序都不可能只用对象或只用语法。这两块内容可进行穿插讲解。这样就避免了让学生在毫无知识背景的情况下去理解抽象难懂的概念,挫伤他们编程的积极性。在教学过程中,我始终坚持以学生已有的知识程度为基础,打破原有的以课本知识的逻辑结构为顺序组织课堂教学的模式,先不讲基本概念,改用从简单的实例人手,通过让学生观看、模仿,在实际操作中去探究和领悟这些概念,并适时地加以归纳总结,让学生在轻松愉快的气氛中接受新知识。比如,在讲到循环结构中DO——LOOP语句和FOR——NEXT语句的用法时,我用DO——LOOP语句的4种形式和FOR——NEXT语句实现求解N!的过程,让学生去观察、领悟它们的异同。

2.2教学方法多样化

笔者在教学实践中,除了采用传统的教学方法如:提问法、小组讨论法外,主要采用以下教学方法:

1)错例分析法

学生对变量、类型、运算符、表达式这些基本概念和语言规则的掌握需要一个过程,对算法和数据结构的知识需要不断积累。学习过程中,能听懂老师授课的内容,但自己编制的程序往往错误百出。课堂上,我经常将容易出错的概念以反例形式展示给学生,让他们找错误,通过运行。比如错误使用逻辑运算符。

假设a、b和c是三个变量。如果已知a<c,要判断b的值是否在a与c之间,可以使用以下表达式:a<bAndb<c

不能写成:a<b<c。

很多学生会错误延用数学上的概念,写成后一种形式。

例OptionExplicit

PrivateSubCommand1_Click()

DimaAsInteger,bAsInteger,cAsInteger

a=-3:b=-2:c=-1

Printa<bAndb<c’显示True

Printa<b<c’显示False

EndSub

为什么a<b<c会得False?因为,VB在计算这个表达式时,先计算“a<b”部分,得True;再计算“True<c”,并将True转换为一1,-1<-1?最终得False。

通过诸如此类的反例教学,使学生豁然开朗,印象深刻。

2)零散实例和核心实例结合

零散实例教学法,对每个知识点的运用和理解是非常行之有效的,但对前后知识的贯穿缺乏说服力。笔者在教学改革实践中体会到,除经典的零散实例外,将一个规模较大的、典型的、有实用价值的、学生感兴趣的核心实例贯穿于教学全过程,对提高学生的编程能力非常帮助。所谓核心实例是指,实例从小到大、随章节的展开而逐步成长,呈现为逐步进化的多个版本。比如引入一个贯串全书的问题:设计一个“图书管理系统”。首先,用最基本的概念和最简单的结构,给出该系统的第一个(也是最简单的)版本,以后的每一次课,都对该系统提出新的功能和结构上的要求,并用本次课介绍的新概念和新方法对它进行功能上的扩充和结构上的改进。每次得到该系统的一个增强的新版本。为达到设计目标,学生随着教学的进程,可以积极投入到对实例系统的调试、改进的实践中,逐渐掌握了所学的基本知识,同时也提高了编程能力。

2.3重视实践教学,培养学生综合应用程序开发能力

VB是一门实践性很强的课程,如果只纸上谈兵,不上机练习,是不可能真正掌握VB程序开发的。实践教学主要注意抓住以下几点:

(1)模仿阶段,对课堂核心实例系统的调试、改进。核心实例的每次增强版是全面反映教学内容的,学生通过模仿、知识再现达到在实践中领悟知识,开拓编程思路。

(2)分层次阶段,在教学过程实施的开始,和核心实例同步,我就给出了几个类似核心实例的课程设计内容,供学生选择。对核心实例的调试比较成功的,可以同步实施自己所学的课程设计内容,达到培养学生分析问题和解决问题的能力。对掌握核心实例有困难的学生,针对教学内容重新布置实验,强化知识巩固。课程设计内容课后上机完成。

要掌握上面两个阶段的具体情况,教师应亲自指导,与学生一起上机实验,随时监控学生实验过程。对学生提出的问题及时予以指导,而发现学生常犯的共性错误,可在理论课上进行点评。

2.4培养学生使用标准编码,养成良好编程习惯

在程序设计过程中,使用标准编码可以避免一些不必要的错误。笔者在授课过程当中使用标准编码的实例,在讲解实例过程中对学生进行适当地引导,让学生养成一个良好的编程习惯。

程序书写规范是非常重要问题,不仅书写格式应该结构层次分明,而且程序里面应添加起码的注释。不按照标准书写程序会增加别人查看程序的难度,同时也不利于自己以后上机调试修改。强调学生避免使用VisualBasic中的隐式操作,养成显式编码的习惯。比如永远使用OptionExplicit,严格执行变量先定义后使用的原则。避免使用缺省属性,明确指出是在引用对象还是在引用对象属性。

3结束语

一门课程的教学是一个复杂的系统工程,笔者将以上一些改革和探索用在课堂教学和实践教学中,取得了一些效果,但教学有法,教无定法,只要教学得法。在教学实践中,合理运用多种教学方法,灵活地、创造性地掌握教学过程,激发学生的兴趣,培养学生的创造性思维和综合应用程序开发能力。

参考文献

[1]王栋.VisualBasic程序设计实用教程(第3版).北京:清华大学出版社2007

第9篇

(1)误差方程式的组成

控制网中的观测值一般有边长、方向(角度观测值因定权问题一般采用方向值进行平差)、方位角,可以发现,这些观测值的误差方程式的非零项一般最多为4个,即在两个点均为待定点的情况下。消除定向角后的“和误差方程”的非零系数为2n+2个(n为测站方向观测个数)。若按照误差方程的格式,其系数矩阵为n行和2*dd列(dd为网中未知点个数),这样,系数矩阵将会有很多零元素存在,浪费了大量的存储空间并影响计算效率,所以,误差方程系数矩阵应采用压缩格式进行存储[3]。可采用以下方法:A(m,n)-A(m,9)其中,m为观测值个数,n为未知点个数的两倍。改进后的A阵格式为:AI=(编号1,系数1,编号2,系数2,…,编号4,系数4,常数项)共9列。这样,就得到了改进后的误差方程系数和权阵。

(2)平差值计算与精度评定

该程序是平面控制网平差计算的主程序,通过迭代计算,达到获得精确平差结果的目的。该程序调用了误差方程与法方程的组成、求逆、坐标改正数计算、观测值平差值计算以及精度评定等函数3]。

(3)点位误差椭圆和相对点位误差椭圆

误差椭圆表示了网中点或选点之间的分布情况。在测量工作中,常用误差椭圆对布网方案作精度分析。绘制误差椭圆只需三个数据:椭圆的长半轴a、短半轴b和主轴方向。

2平面控制网近似坐标推算

讨论平面控制网平差计算过程中重要的一环———近似坐标的推算,介绍算法及简单介绍一下整个近似坐标计算的程序框架。

(1)计算参数近似值的必要性

对间接平差(又称参数平差)而言,一般都需要计算参数的近似值。但并不是说在任何情况下都必须计算参数的近似值,倘若观测值与所设参数之间建立的是一种线形的函数关系,则不给出参数近似值也可平差,只是给出参数近似值后,在列误差方程或是解算法方程的过程中会使得计算变得更加简便和方便[4]。当观测值和参数之间建立的关系为线形函数时,平差前可以不给参数的近似值。但对于测角网、边角网和侧边网等平面控制网,观测的是方向值、角度值或是边长,选取的参数又通常为待定点的坐标,观测值与参数之间的建立的关系均为非线性函数,如果不给出近似坐标,误差方程就无法列出,因为误差方程的系数均由近似坐标求得,故计算近似坐标对平面控制网而言是十分重要的一步。由于实际观测数据的个数多于必要观测的个数,近似值中还含有误差,因此还需近一步对观测值进行平差,以对近似值加以改正,得到最或然坐标值[5]。

(2)计算近似坐标程序的总体框架及具体算法

根据计算待定点坐标常用的方法,编写了相应的近似坐标推算程序。该程序的目的就是让用户尽量不提供不需提供的信息,尽可能自动完成所有待定点近似坐标的计算。本节先从总体上介绍整个程序的思路,然后针对几种常见的观测条件介绍极坐标的计算方法,并详细说明该方法在程序中实现的思路。程序的总体框架如图1所示,框架中用到的变量和函数说明如下:Xyknow———已知点点号数组;xyun-know———未知点点号数组;Point———总点号数组;ed———已知点个数;Dd———未知点个数;length———MATLAB内部函数,对数组求长度。该程序总体上采用循环结构,直到所有未知点的近似坐标计算完毕,程序终止循环。如果所有方法都采用过,但仍有部分点的近似坐标无法计算出,程序亦会自动中止,退出程序,以避免死循环的产生,程序中考虑的方法是极坐标法。基本思路是:最外层采用while循环,当未知点点号数组长度大于零,即还存在未知点未解算出来时循环运行,里层在采用FOR循环逐一对每一个未知点进行搜索,搜索到某一个未知点满足某一种条件后即时解算出来,接着马上退出for循环并对已知点点号数组和未知点点号数组进行更新,再由while判断未知点点号数组的长度,进入对未知点点号数组的下一轮for循环,如此反复,直到未知点点号数组为空。

(3)极坐标计算

这是所有方法中最简单的一种,适合于求附和导线、闭合导线、支导线及边角网。它要求具备两个已知点或是一个点的坐标和一个已知方位角且改点是方位角的起点。本程序采用的是极坐标的方法进行编写,其基本思路是:如果存在已知方位角,首先判断该方位角的起点是否是已知点A,重点是否是所求的待定点P,如果是,搜索边长AP即可按极坐标公式计算坐标;若没有一直方位角或其终点不是P,则搜索与P有方向观测的已知点A,再由A搜索到另一个已知点B,且A和B有方向观测值,于是可求出AP的方位角,再搜索AP的边长观测值,由极坐标公式即可计算P的坐标。点的坐标按此方法求出后,设置way的值为1,P点就变成了已知点。其他待定点只要满足此类条件,便可由这种方法求出。其程序框图见图2。

3水准网平差程序设计

水准网平差程序设计一共有三种方法,一维压缩存储法方程平差程序、上三角存储法方程平差程序、利用MATLAB矩阵运算平差程序以及利用平差结果的相互转换变换基准的程序[6]。(1)观测数据的组织与近似高程计算数据文件的组织下面给出一个水准网输入数据文件的例子:336(已知点个数、未知点个数、观测值个数)101102103104105106(点号)34.78835.25937.825(已知点高程)1041011.6524.5(起点点号、终点点号、高差观测值、距离观测值)其中编号数组未知点在前,已知点在后。(2)数据读入与近似高程计算程序程序中包含了近似高程计算,即进行循环,程序中设置了一个变量ie,每计算出一个点的高程,其值加1,当其值等于未知点的个数时停止循环。

4结论(程序界面)

第10篇

进行图形程序设计时,还须考虑视频接口的一个重要特性——虚拟终端功能,因为它允许控制几个独立的图形应用窗口,允许多个应用程序在同一个终端上进行切换。本文提供针对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>

参考文献

第11篇

在《网络程序设计》中,套接字socket是非常重要的概念,教材上的解释是:套接字是两个通信通道上的端节点。看到这个解释,学生还是不能明白套接字的内涵。为了使学生更好地理解,通常采用如下比喻。既然套接字是作为通信的末端,那么可以使用“电话系统”与“邮局系统”这两个同学们熟悉的事物进行类比。可以把支持虚电路服务的信道看作电话线,套接字就类似于一个电话。同样,可以把提供数据报服务的通信看作邮局系统,套接字看作信箱。

(2)基于TCP套接字编程模型

面向连接的网络通信的建立有多个步骤,要使用多个函数。为了便于理解,可以将其比喻为“打电话”这个过程。要建立基于TCP的C-S(客户-服务器)通信,首先双方进程必须各自创建一个端点,也就是调用socket函数创建套接字,正如打电话之前,双方必须都拥有一台电话机一样。Socket是面向模型设计的,针对C-S通信双方提供不同的socket系统调用。客户随机申请一个socket号,这类似想打电话的人可以在任何一台入网的电话上呼叫。服务器拥有全局公认的socket,调用bind函数将套接字地址和所创建的套接字句柄联系起来,任何客户都可以向它发出连接请求和信息请求,这就类似于被呼叫方的电话号码告知了呼叫方。客户端调用connect函数发出连接请求,就好比拨打对方的电话。而服务端有可能在完成当前请求之前又发生多个服务请求,为了很好的处理这个问题,服务器调用listen函数将所有的服务请求放在一个请求队列中排队,并尽快处理这些请求[2],这就如被呼叫方在开启呼叫等待的功能,不错过任何呼叫请求。服务器端执行accept函数等待来自某一客户端的实际连接请求,实现与客户进程连接,这就如被呼叫方拿起电话,双方可以正式通话。最后,客户端与服务端完成数据传输后调用close函数关闭套接字,撤销连接。这就好比打电话双方通话结束后,挂掉电话。

(3)基于UDP的通信机制

用“邮局系统通信”来类比这一种通信机制是非常恰当的。基于UDP通信是面向非连接的,无法保证数据以正确的顺序到达。这就类似我们先后寄出两封信给对方,不能确保第一封信一定会比第二封信先到达对方手上。而在通信过程中,服务端和客户端双方首先都需要绑定IP地址和端口号,这就好比寄信之前,对方的通信地址我们是要已知的。而客户端发送信息以及服务端回应的时候,调用sendto函数来实现,需要指明对方的地址。这如同在寄信的时候,需在信封上要注明对方的地址信息。

(4)协议端口

在讲解“协议端口”时,学生总是不能理解为什么在网络通信的时候要指明端口号,为了解决这个问题,同样采取比喻教学法。大多数操作系统是支持多进程的,目的主机到底把收到的数据包送给哪个进程呢?就好比我们去银行办理业务,银行的业务有多种,有多个服务窗口。我们要成功地办理业务,必须知道对应的窗口号。同理,当你的主机开启多个服务时,如FTP、WWW、E-Mail多个服务,当接收到传送过来的数据包时,主机要准确的把数据包传送给相应的进程,这就需要数据传输的双方进程开启端口,这样数据包将会有标识有源端口,确保接收方顺利地将数据包传送至这个端口。

(5)带外数据

通常数据是按顺序传输的,然而套接字API概念性的提供了一些使用程序,从而可以使得一串数据无阻的先于普通的数据到达接收端。这就是所谓的发送带外数据。这就好比大家排队在银行依次办理业务,有个强盗拿着枪走入银行,越过整个队伍走到柜员面前。这个就可看作为带外数据。这个强盗能越过整个队伍,是因为枪标识他的特殊性,给了他凌驾于众人的权力。

(6)结语

第12篇

在实际工作中,大比例尺数字化测图主要指野外实地测量+电子平板测绘方法,目前这种测图方法广泛应用到数字化生产中,在生产过程中,仪器设备最容易出问题的地方是全站仪与电子平板相互连接的数据传输线,因为数据线的质量参差不齐或天气寒冷等种种因素,导致数据线经常损坏,一旦发生这种情况,外业生产就不能顺利进行。大比例尺数字化测图的一般流程为:(1)测前准备:认真学习专业技术设计书,搜集测区的控制资料。(2)踏勘:了解测区环境,主要道路、村镇基本情况,进行野外的变化发现调查,确定变化区域,同时对图上展绘的控制资料进行实地确认。(3)编写技术设计书:内容包括项目名称,测区位置,作业内容,作业方法,作业依据,取舍要求,地形图成图要求等。(4)控制测量:布设图根控制。(5)地形图测图:野外用全站仪测绘碎部点(地形和地貌的特征点)得到水平角、垂直角、斜距等数据,利用程序将以上数据经计算展绘到测图软件上,最后编辑成地形图[1]。(6)地形图的检查与上交:对测绘成果进行内外业检查,无误后上交成果。在上述的流程中,本文要解决的问题是地形图测图中的展点程序环节。

2关键技术

本文将通过无线传输技术通讯全站仪,将全站仪传回的数据进行分析、验证,实时将所测点位展绘到测图软件中。

2.1数字化测图软件

国内外有不少测绘行业的相关测图软件,较著名的国内软件有“威远图”、“开思”、“山维”等。各软件平台都有自己独到的优势和特点。如“威远图”和“开思”,基于AutoCAD环境作了二次开发,直接生产工程设计软件环境需求的DWG数据。避免因数据格式兼容性而产生的数据错误及数据不稳定,并且在后期的图形编辑中,还能够直接借助AutoCAD强大的图形编辑功能。“山维”软件是自行设计的独立软件平台,可生产DXF格式的交换数据。自主性强,不受支撑软件平台的制约。本文选用的测图软件是广州开思软件。

2.2电子平板与全站仪间的实时无线蓝牙通讯

全站仪与计算机通常是采用RS-232串行连接[2],也就是说全站仪与计算机的通信是通过一根线来完成的。经过蓝牙适配器无线解决方案(蓝牙与全站仪的连接匹配),可以使仪器与全站仪之间不再受连线的限制,只要用蓝牙串口适配器代替串口电缆插入两个设备的串行端口上,就可以实现串行端口间的无线通信。再通过在计算机上的实时通讯程序控制全站仪进行测量工作,并且将全站仪传回的数据进行分析、验证。利用VB6.0程序中的MSComm控件,配置正确通讯参数后,设计出与便携机间的通讯程序,通过发送数据申请,经无线蓝牙虚拟出的串口连接到全站仪,再把从全站仪传回的数据进行分析、验证。[3]具体的实现步骤如下:

(1)安装蓝牙驱动:让平板电脑最大效率的发挥蓝牙功能,需要先安装和蓝牙适配器配套的光盘驱动程序。

(2)全站仪的设置与连接:全站仪选用的是日本拓扑康3002N,在操作界面下,将RS-232C下的[波特率]调为4800,[字符/校验]调为8/无校验,[停止位]调为1,[Ack模式]调为标准方式,[CR,LF]调为关,[记录类型]调为REC-A。(3)连接蓝牙串口适配器:数据线一端通过串口连接蓝牙适配器,另一端通过RS-232端口连接到全站仪,这样仪器的设置与连接工作准备完毕。(4)蓝牙与全站仪的匹配:电子笔记本上打开蓝牙,搜索适配器并进行匹配。至此,笔记本与全站仪间的蓝牙无线连通已经完成,蓝牙在笔记本上虚拟出一个串口,通过该串口与全站仪的蓝牙适配器连接,就如同在笔记本与全站仪间用数据线连接是一样的。下面就需要一个控制程序,发出命令,通过建立的蓝牙关系驱动全站仪,进而操作全站仪。[4]

2.3全站仪与笔记本间的数据发送与接收全站仪与笔记本间的数据通讯利用的是VB中的MSComm通信控件。程序实现步骤与方法如下:

(1)创建通讯窗体:在VB环境下创造一个窗体,用于驱动全站仪和接收来自全站仪的数据。

(2)设定通讯参数:将全站仪与程序的通讯参数输入一致,否则两者之间无法联通。

(3)数据的发送与接受命令:向全站仪发出测量指令[5]。a.向全站仪发出测量指令,测量指令参考各全站仪指令说明书内容。b.从缓冲区得到全站仪传回的数据,例如:006?+00001772m3252048+1751349d+00001008*60+00+00061c.发送命令,告知全站仪数据接收完毕。d.进行数据正确性验证:首先从上述数据中提取垂直角(V1),利用正弦函数得出数值A。例如:A=Sin(V1),其次提取斜距(SD)、平距(HD),利用平距除以斜距计算数值B。例如:B=HD/SD,最后计算C=A-B。如果C在一个允许的限差内,则说明从全站仪传过来的数据是正确的。

2.4实时展绘点位程序

(1)读取设站数据,写出观测数据:首先读取设站信息并记录在变量中,提取出设站坐标X1、Y1、Z1,后视坐标X2、Y2,后视定向值以及仪器高。然后创建观测数据文本,将上面提到的7个参数加上观测后得到的斜距、平距、垂直角、水平角一起存储在其中。

(2)计算前、后视方位角:前视方位角=(水平角读数-后视归零值)+后视方位角后视方位角=Atn(横轴坐标差/纵轴坐标差)

(3)计算前视点坐标:前视点横轴坐标=设站横坐标+水平距离*Sin(前视方位角)前视点纵轴坐标=设站纵坐标+水平距离*Cos(前视方位角)前视高程=设站点高程+仪器高+(平距*Ctn(垂直角))-棱镜高(4)插入高程点和高程注记:首先在计算出的前视点位置插入高程点图块,然后在前视点位固定的位置插入前视高程值的注记文本。至此,外业利用蓝牙连接全站仪,实时计算并验证碎步数据信息正确性,展绘点位工作完毕。

3结束语

第13篇

1.算法思想。数学里的算法是极其重要的内容,是数学的组成部分,同时是计算机理论的核心,也是技术的核心。在社会发展过程中,人们的日常生活已经离不开计算机,它成为生活中的重要工具,如看电影、绘画、处理数据等,它所涉及的面非常广,和生活息息相关。计算机虽是生活过程中必不可少的工具,但它的工作情况是什么样呢?想要了解这个问题,就要先从算法来开始学习。算法能使逻辑思维能力提高,对有条理思考和表达的发展非常有利。在过去时间里,算法这个名词虽然没有出现,但这种算法思维已经渗透到数学教学过程中,例如,运算过程中的四则运算、求解方程等,这些步骤的完成都需要程序化的表达,这个过程也是算法思想的形成。

2.算法的构建。在处理一些问题时,一系列可操作的步骤需要设计,或者设计它的可算操作,来通过这些步骤进行解决问题,这种解决问题的方法就是通常指的算法。广义的算法:就是一种工作的方法和步骤,例如,歌曲的歌谱、洗衣机说明书等都是它们使用的算法。数学教学中的算法:数学中,把计算机解决问题过程中的程序认为是现代意义的“算法”。这种算法可以用计算机实现,对求解的方法也是统一、机械的,例如:解方程、作图问题、函数求值等的算法。

二、ARCS动机设计模式在高中数学程序设计教学中的应用

1.注意策略。在学生考虑到需要输入输出时,实际上他们就已经开始有了算法思维,只是很多学生在开始时不确定如何准确划分步骤。通过上述例证使学生了解算法解决问题的思路和步骤。

2.相关性策略。《孙子算经》中原文是:“今有物,不知其数,三三数之,剩二,五五数之,剩三,七七数之,剩二,问物几何?答曰:二十三。”对高中生来说,在问题提出后,即使有些同学的思路一开始出现了偏差,但是和实际情况对比之后基本都能猜出正确答案。因此,对自己判断与实际情况不一致的同学来说,他们就会更深一步地问自己:为什么不一样?哪里出现了问题?这有助于学生独立思考能力的培养。只有让学生自己发现错误、判断错误、解决错误,才能让学生真正地掌握相关知识,这也有助于提高学生的高阶思维能力。

3.信心策略。算法实例基本是必考题,每次的考试中都有或多或少地涉及一些。算法题出题方式灵活,可考查内容较多,是一个全面评估学生知识掌握程度的考题。教师在对学生进行考核时,要考虑到学生自身知识的掌握水平,从学生角度出发,循序渐进地增加难度,切忌一次考核过难,打击学生的自信心,降低学生的学习兴趣。案例:例1.通过求1+2+3+4+5中的一个算法。解:算法1用逐一相加的方法来进行。第一步:计算1+2,得数3;第二步:把第一步中所得结果3与3相加,计算得到6;第三步:将第二步中所得的运算结果6与4相加,计算得到10;第四步:将第三步中所得的结果10与5相加,计算得得到15.说明:①一个问题的算法肯定不是唯一。②若将本例题改为“求1+2+3+…+100的结果,给一个算法”,则以上第二算法和第三算法表达较为方便。对刚开始接触程序设计的学生来说,这类题型可以提高学生的自信心,使学生产生强烈的荣誉感。题目的难度是明确的,但实际解题思路并不复杂,却有多种解题方法,对解题思路明确后,其流程图绘制也就轻而易举了。给学生自信心,让学生感受自身的能力有助于提升学生的学习动力。

4.满意策略。以满意度策略为基础的数学课堂教学方式有很多,如多媒体教学、学生学习目标设定、多元化教学方式等。在教学中,本人根据学生各自情况,与学生进行沟通后为每人设定了相应的学习目标。每次测评之后并不以全班同学的成绩来评论学生的好坏,而是通过横向与纵向两方面相比,让学生全面了解自身当前学习状况。另外,数学课堂教学中,要重视学生的能动性,通过参与问题、解决问题的方式让学生充分表现自己。通过满意策略提高学生的学习动机。

三、总结

第14篇

《Android应用程序设计》是一门理论与实践结合紧密的课程[3],该课程教学目标与社会对人才的需要密切相关,但由于受传统教学模式的影响,在具体的教学实践中不能取得预期的教学效果,主要表现以下方面。

1.1核心知识点模糊

2010年之后,很多高校开始开设Android相关课程,对其培养目标、课程体系和核心知识点还处于探索阶段,教学方法仍处在研究和实践阶段,导致教师在对核心知识点的选择各有不同。

1.2学生基础薄弱

《Android应用程序设计》课程要求学生掌握Java知识、数据库应用和计算机网络等方面的基础知识,对学生的实际动手能力要求较高,因此很多学生学习该课程存在一定的难度。

1.3实践教学环节薄弱

受传统教学模式的影响,《Android应用程序设计》的课程讲授仍采用理论授课为主、上机实验为辅的教学模式,缺乏与实际应用结合;部分教师虽然在课堂教学中采用了案例教学,但这些案例往往是对特定知识点的练习,与实际项目开发相差很大,学生毕业后遇到项目开发时不能正确科学分析具体问题;课后作业虽然在一定程度上锻炼学生的编程能力,但这些题目往往针对某个特定的知识点,导致很多学生作业完成得很好,但实践能力得不到提升[3-4]。

1.4考核方式不科学

目前大多数高校采用类似表1所示的课程考核标准;其中期末考试占70%,其他占30%。这种考核方式主要考核理论学习,与《Android应用程序设计》强调实际动手能力的教学目标不一致,往往导致学生的笔头能力强而实践能力薄弱,因此,这种考核方式不能科学地反映学生的实践能力、团队合作和交流沟通等综合素质。针对上述问题,结合黄河科技学院信息工程学院应用型人才培养的目标,确定《Android应用程序设计》课程的目标是培养学生对移动互联网产品的设计、开发、测试、维护等能力,因此通过在教学过程中引入案例教学法达到提高学生实际操作能力的目的。

2案例教学在《Android应用程序设计》中的应用

20世纪初,哈佛大学创造了“案例教学法”。案例教学法是指教师以学生为中心,围绕教学目标和教学任务,对实际应用的真实的情景加以典型化处理,使学生进入特定情境之中,然后通过学生对事件进行积极主动的探究活动,来提高学生分析问题和解决问题能力的一种教学模式[3-5]。

2.1案例的设计

教师在选择典型案例时,应考虑以下4个因素:①案例的选择应该覆盖若干个核心知识点;②案例的选择应该贴近实际生活且生动有趣;②确定案例的规模要适当;④确定案例的难度要适中;表2显示了《Android应用程序设计》核心知识点与典型案例的对应关系。教师对学生采用案例教学,能够充分调动学生学习的主动性和创造性。例如针对当前很多大学生都非常喜欢在手机应用商店下载自己喜好的APP,教师可以以这个兴趣为话题,引导学生开发简易音乐播放器为切入点,教会学生了解软件开发的流程以及在开发过程中应当注意过程控制。

2.2案例的实施

Android应用程序的开发环境需要在PC机搭建,搭建步骤:第一步,安装Java的运行环境;第二步安装Eclipse集成开发环境;第三步安装SDK套件,配置SDK的安装路径;第四步创建Android模拟器(AndroidVirtualMachine),可以模拟仿真不同型号的Android智能手机。

2.3案例的讨论

开展案例教学培养学生具有独立分析问题能力、项目管理能力、团队协作和沟通协调能力等职业素质,丰富学生的实际移动互联APP开发经验[7]。教师在案例教学过程中应注意以下几点:①要求学生掌握Android应用程序开发过程和方法;②采用启发式教学,恰当地引进教学案例;③学期开始就安排学生自由组队,每4~6人组成一个项目团队,以小组为单位完成一个Android应用程序的开发。教师在案例教学过程中穿插一些相关知识点,通过开发科学计算器,满足学生的成就感,提高学生的学习热情,使学生对Android课程产生浓厚的兴趣。2.4案例的考核结合《Android应用程序设计》的课程特点,该课程主要考核学生基本技能和解决实际问题的能力,因此课程考核采用如表3所示考核标准。

3结语

第15篇

一、相关概念

(一)面向对象程序设计

OOP是一种计算机编程架构,它具备软件工程的灵活性、重用性和扩展性。OOP不仅具有丰富的理论知识,同时具有很强的实践性,坚持在真实的项目中锻炼编程能力,才能理解其精髓,进而活学活用。

(二)项目教学法

项目教学法以学生为教学中心,是学生在教师的指导下处理项目,提高自身能力的教学方法。其优势在实践性较强的OOP课程中体现得淋漓尽致。具体实施时,教师化身为顾问,主要的作用是引导学生把课堂所学用在实践过程中,理论联系实际,进而提高动手能力;学生是项目的具体操作者,知识水平和发现问题、解决问题能力均能得到提高。

二、改革的必要性

OOP是一门实践性很强的课程,如果不进行实践教学,学生不能全面掌握其核心思想。原因主要有以下两方面:

(一)难理解

由于面向对象概念较抽象,是基于现实世界的特点,对系统的复杂性进行概括、抽象和分类,对象是OOP的核心,是将代码和数据封装起来的具有某些特性的具体事物的抽象。从学生角度来看,以知识点为中心的讲解教学方式理论性太强,不好理解,甚至有部分学生自始至终也无法掌握OOP的重要概念,不能满足课程考核要求。

(二)理论教学多

教师上课采用多媒体教学,这种方式基本上是教师在课堂上唱独角戏,把理论和方法灌输给学生,学生被动地学习,只是把教师讲的内容在大脑中形成记忆,没有自己独立思考的过程,不利于培养学生的创造能力。

三、项目教学法的改革要点

项目教学法设计了完整的软件项目教学背景,克服了传统教学中注重理论知识忽视应用实践的缺点。学生在慢慢了解、逐渐熟悉软件项目开发的过程中,能够理解应用,学习和掌握各种知识并训练相关技能。

(一)项目题目的设定

教师在进行项目教学引导时需要策略,创设学习的资源,协调学习合作环境。教学项目题目的选取是其中的关键问题,选题最好能与软件公司进行交流或合作,应具备针对性和实用性,能体现出学生综合能力的运用,并且可以进行客观评价。首先,项目题目应尽可能覆盖教学大纲的多项知识点;其次,应该构建具有完整项目的项目案例库,项目题目应有不同的难易度和适当的工程工作量,适应所教班级的不同学生的实际水平;最后,项目题目应尽量贴近大学生的生活,并可以用一些标准,如软件是否易用、是否有良好的用户交互性等进行公平、准确的评价。

(二)互动增强

传统的教学环节中,老师和同学的交流仅限于课间十分钟或者课下较短时间的交流,交流时间少,沟通的问题也只是教学内容中个别的知识点。而在项目教学法中,沟通渠道是多向的,老师与学生之间沟通的宽度和广度都加大了。另外,即使在同一课堂上听讲,不同的学生在学习动机、学习心理、学习兴趣和学习能力等方面仍然会有一些差别。

(三)角色换位

在项目教学法中,学生居于教学活动中的主要地位,应该是项目的积极参与者,首先要认真阅读选定的真实项目材料,和同一个项目的同学讨论,甚至就项目问题的不同理解与同组同学展开争辩。其次在真实项目实战场景下,经过认真的独立思考和判断动手编写程序。学生的自学能力和实践能力得到提升,并主动构建自己的知识体系。居于教学活动中从属地位的是教师,教师不再是整个课程的中心。教师对整个教学活动按照工程项目的需要加以指导,做适当的示范,只是项目的指导者或者说是项目进度的推动者,引导学生进行深入学习。