VB程序调试

2024-08-04

VB程序调试(精选十篇)

VB程序调试 篇1

学好这门课的关键在于多上机实践, 多编写程序。在编程过程中, 代码中存在错误是在所难免的。这些错误可能会阻碍程序的正常运行, 有些可能不影响程序的运行却得不到正确的结果。有些学生上机遇到错误, 就一筹莫展了, 对VB的学习也失去了信心, 主要原因在于没有学会VB调试技术。遵循VB的调试技术, 可以跟踪到程序内部, 观察程序的运行过程, 观察变量和属性是如何随着语句的执行而改变, 从而发现并排除程序中的错误。

1 VB错误类型

编程时遇到的错误五花八门, 为了更有效地运用调试手段排除错误, 文章把遇到的错误分为以下3类。

1.1 编译错误

编译错误是由于违背了VB的语法规则, 错误地书写语句而造成的。例如, 拼错了某个关键字, 表达式书写不完整, 英文标点符号错用为中文标点符号, If语句没有end if语句与之相对应等。

在编译程序时, VB系统能够进行“自动语法检测”, 逐一发现程序中的语法错误, 并弹出对话框, 给出“编译错误”的提示, 以方便对出错行进行修改。

1.2 运行错误

运行错误是指在程序运行过程中, 执行非法语句而引发的错误。例如, 数组下标越界、数据溢出、类型不匹配、无效属性值、除数为零等。

这类错误在编写形式上符合语法规则, 所以不会在编译时被发现。在程序运行时, 系统一旦检测到运行错误, 就会显示出相应的错误信息, 等待编程人员修改。

1.3 逻辑错误

如果程序在编译和运行时均未发现错误, 却没有得到预期的运行结果, 那么, 程序发生了逻辑错误。对于这类错误, VB系统通常无法自动检测, 也不会给出错误提示, 需要借助调试工具, 分析程序的运行过程才能排查出来, 加以改正。

2 VB调试工具

2.1 断点设置

程序中的语句都可以设置为断点, 在一段程序中可以设置多个断点。设置断点的方法是:将光标移至需设置断点的程序行, 按下F9键。

程序运行到断点语句处将暂停, 进入中断状态, 这时可以查看程序运行到此处的运行状态, 查看变量和属性的值, 和预期的目标值相比较, 可以判断这一部分程序的执行是否符合用户的意图。

2.2 单步调试

单步调试就是以“逐语句”的方式执行程序。单步调试的方法:在程序的设计态或运行态按下F8键。

每执行一次单步调试, 程序的执行就向前推进一步, 就中断一次, 因此, 可以逐个语句地检查每个语句的执行状态, 特别是遇到选择或循环语句时, 便于检测这些语句中的条件判断结果, 便于发现程序中存在的逻辑错误。

2.3 调试窗口

调试工作的目标十分明确, 就是跟踪程序的执行过程, 在中断状态下通过调试窗口来查看变量和属性的值, 以达到迅速发现错误位置的目的。VB中提供了以下几种调试窗口。

2.3.1 本地窗口

在程序中断时, 本地窗口可以自动显示当前过程中过程级变量的值以及当前模块中模块级对象、变量的值。

在本地窗口中, 允许修改变量的当前值。这一技巧的使用, 有时能提高调试的工作效率。例如, 在if语句中, 可以修改变量使之满足判断条件, 调试then语句块程序;然后, 再修改变量使之不满足判断条件, 调试else语句块程序。

2.3.2 立即窗口

在程序中断时, 在立即窗口输入变量名或表达式, 并按Enter键, 就可以查看其当前值。本地窗口中无法查看的全局变量和表达式的值, 在立即窗口中也能查看。但立即窗口查看变量或表达式时, 每次都需要手动输入, 比起其他两种调试窗口, 略显不便。

2.3.3 监视窗口

在使用监视窗口前, 首先要添加需要监视的表达式。在设计时, 和程序中断时, 都可以进行添加。在中断时, 使用监视窗口, 可以一目了然地监测到指定的表达式的值、数据类型、所属过程或模块。监视窗口的优点在于, 可以在一个界面上显示所有过程中需监测的表达式值;而本地窗口主要显示的是当前过程中的变量值。

3 调试实例

本文选取了江苏省计算机等级考试 (二级VB) 的一条改错真题, 来详细介绍调试工具的使用。

题目如下:找到介于300~900之间的由3个不同数字组成的完全平方数。所谓完全平方数是指其平方根为整数的数。例如, 324的各位数字不同, 且平方根是18, 所以324是符合要求的数。程序界面如图1所示。

拿到改错题, 首先要泛读并分析一下, 本程序中的pf () 函数过程用于判断平方根是否为整数, vf () 函数过程用于判断是否由不同数字组成。而Command1_Click () 事件过程用于输出在指定范围内符合要求的数。然后, 进入调试改错。需要注意的是, 在调试时, 可能会删除或者覆盖掉部分必要的代码, 所以在调试前应该先将程序备份。

首先, 单击Command1, 此时程序出现运行错误:溢出。究竟在何处产生“溢出”呢?需要深入到程序内部监测。选择“单步调试”, 配合“监视窗口”的方法进行调试。选择Command1_Click () 中的变量i, p, pf () 过程中的变量n, vf () 过程中的变量n, k, a (k) , a (i) , a (j) 进行监测。

开始单步运行前, 可以使Command1_Click () 中循环变量i的初值设置为符合条件的数324, 来监测输入符合的数, 在哪一步出错, 致使得不到正确的输出。就本题而言, 需要发现pf () 函数能正确执行, 而在vf () 函数中无法执行到n<0, 所以, 修改第一处, 将n<0改为n=0。继续单步运行, 通过监测窗口, 观察变量的变化, 发现Command1_Click () 中的i和vf () 中的n同步变化, 而本题中Command1_Click () 中的i变量应保留本身的值, 所以修改第二处, 将vf () 过程中的形参n改为按值传递。这样, 符合条件的数324, 就能得到正确输出。

保存修改后的程序, 并将循环变量i恢复为300, 然后运行, 发现程序能运行, 但输出却多了一些不符合要求的值, 如400等。再使用技巧, 将循环变量i, 改为400, 监测为何能输出。单步执行到vf () 中, 发现是因为当两数相等时, 未及时退出过程, 导致一定会执行到vf=True.。修改第三处, 将Exit For改为Exit Function。最后, 保存程序并运行, 发现此时程序已能正确运行, 调试成功。

4 结语

要想学好VB程序调试, 需要不断探究和摸索, 在调试过程中积累经验。灵活地运用VB程序调试工具, 可以快速地发现并排除程序中的错误。

参考文献

[1]成耀, 郑国平, 鲁松.如何让学生掌握VB上机调试之我见[J].山东工业技术, 2013 (12) :210.

[2]吴中宁.VB程序调试[J].电脑知识与技术, 2007 (11) :749-751.

用VB编写登录程序VB 篇2

{ 编者按:在前几期编程乐园中,我们一同学习了一些关于VB编程的基本概念和语法规则。但离开实例学习编程,无疑是枯燥无味、事倍功半的,所以我们在此推出“看实例,学编程”栏目,邀请富有经验的PFans介绍他们的典型实例,希望对PFans的编程之旅有所帮助。

我们都知道,在进入Windows操作系统时会出现一个登录对话框,要求用户输入密码后才能进入Windows。我们用VB也可以编写这样的登录窗口,其具体方法如下:

界面设计:

打开“VB6.0”,出现“新建工程”对话框,选择“标准EXE”单击“打开”即可新建一个工程。新建一个工程后,VB自动生成了一个窗体,其默认的名称是Form1,且显示的标题也是Form1,显然与我们要编写的程序不符。我们可以更改这些设置,方法是:点击Form1窗体,在右边的属性窗口中(如图1)的“名称”后输入“Denglu”(在后面讲的Denglu就是指的这个窗体),在“Caption”后输入“登录窗口”。窗体设置好后,我们便可以将控件放置到这个窗体中去了。

“登录窗口”中主要用到的是TextBox(文本框)控件,该控件主要是用于接收用户输入的文字并显示出来。在该程序中我们便可以使用TextBox控件接收用户输入的信息来判断是否是合法的用户。另外,我们还将用到Label(标签)控件及CommandButton(命令按钮)控件。Label控件用来显示“用户名”及“密码”标题;CommandButton控件用来设计“确定”及“取消”按钮。下面我们将这些控件放置到窗体中:在工具箱中选择“Label”控件(如图2),在窗体中拖动鼠标直到一定的大小,然后在属性窗口中的“Caption”属性后为输入“用户名”,然后在其下方再拖动一个Label控件,将Caption的值改为“密码:”;在工具箱中选择“TextBox”控件(如图3),在“用户名”后拖动一个TextBox控件,用同样的方法在“密码:”后拖动一个TextBox控件,然后在“属性窗口”中将Text的值改为空(即删除默认的Text1),为了不显示出用户输入的密码,我们将第二个TextBox控件的PasswordChar属性设置为*(如图5),这样在用户输入密码时显示的就是*了;在工具箱中选择“CommandButton”控件(如图4),将其拖动到窗体的下方(一共两个),分别设置其Caption属性为“确定”和“取消”。调整好这些控件的位置(如图6)后即可完成界面的设计,

程序代码:

该程序的主要目的是要判断输入的用户名是否合法,所以我们首先编写判断用户名的程序代码。双击“确定”按钮,添加如下的程序代码:(黑体部分为系统自动生成的代码,楷体为注释)

Private Sub Command1_Click

′判断是否输入了用户名

If Text1.Text=″″ Then ′如果Text1为空,即没有输入用户

MsgBox ″请输入用户名!″,vbOKOnly+vbCritical,″错误″

Exit Sub ′退出这个过程

Else ′如果输入了用户名

If Text1.Text=″软件世界″ And Text2.Text=″12345″ Then ′如果输入的用户名是″软件世界″且密码为″12345″

MsgBox ″你是合法用户,欢迎进入!″,vbOKOnly+vbInformation,″欢迎进入″

Else ′如果不是″软件世界″或密码不是″12345″

MsgBox ″用户名或密码错误!″,vbOKOnly+vbCritical,″错误″

Text1.Text=″″

Text2.Text=″″ ′清空Text1及Text2控件中的文本内容,让用户重新输入

End If

End If

End Sub

在这一段代码中,我们使用了If…Then…Else…End If。这是一个条件判断语句,If Text1.Text=″″ Then这句代码则是判断Text1是否为空,如果为空,这个条件就成立,则执行Then后的语句,如果Text1不为空,则这个条件不成立,程序将会跳到Else处,执行Else后的语句。

程序测试:

现在我们可以单击“F5”键来运行这个程序,看看其运行效果。直接单击“确定”按钮,将会弹出一个对话框(如图7);在“用户名”后输入“软件世界”,“密码:”后输入“12345”,再单击“确定”按钮,此时便会出现一个“欢迎进行”的信息框(如图8)。怎么样,一个属于自己的“登录窗口”就制作好了。

但这个程序目前还只能判断在程序中已设置好了的用户名及密码,没有灵活性,你可以发挥你的聪明才智,使其能够判断多个合法的用户及密码。如果你有什么疑问,欢迎写信与我交流,我的E-mail地址是:vber@21cn.com。

(重庆 杜伟)}

VB程序设计教学方法探析 篇3

关键词:程序设计;教学方法;能力

中图分类号:G642文献标识码:A文章编号:1009-3044(2007)12-21704-01

An Exploration of VB Program Design Teaching Methods

YAN Li

(Department of Computer Studies,Anhui University,Hefei 230031,China)

Abstract:In teaching program design, finding new ways to solve the dryness and complexity of program design has always been a fascinating subject for many computer science educators. This article provides several ideas on the following aspects of teaching VB program design:how to improve course quality, how to enhance the teaching effectiveness, how to nurture and strengthen students’ ability and creativity in analyzing and solving a design problem, etc.

Key words:program design;teaching methods;aptitude

程序設计语言类课程的指导思想是:使学生通过学习既掌握高级编程语言的知识、编程技术和基本算法,又掌握程序设计的思想和方法,更具备利用计算机求解实际问题的能力,能灵活运用高级语言进行程序设计。其重点是培养学生掌握程序设计的思想和方法,难点是作为程序设计的入门课程,应当如何引导学生突破传统的思维方式,培养程序设计的新思想。本文结合教学实践与理论思考,谈谈在教学上的一些经验和体会。

1 采用实例教学法,培养学生学习的兴趣

兴趣是学习的关键,兴趣决定了教学效果的好坏。在程序设计教学中要从学生的兴趣入手,选择一些有趣的、有实际意义的程序,激发学生的学习兴趣。在VB程序设计的第一节课,简单地介绍了VB的发展历史后,我就演示了一个动画作为引例,如下图所示,一行文字“欢迎使用Visual Basic”在具有背景图案的窗体上、下移动(稍改动也可左、右移动)。移动方法有两种:单击手动按钮一次,移动50twip单位;单击自动按钮,按时钟触发频率连续移动;当内容超出窗体范围时进行反弹。

这个动画立刻激起了学生的好奇心,在演示过程中再通过介绍,可以让学生很直观地体会到VB具有面向对象、可视化、事件驱动、模块化、简单易学等特点。

2 采用问题驱动法,激发学生的学习主动性

在教学过程中提出问题,集中学生的注意力,促进学生主动思考、主动探索,可以使学生在学习的过程中成为主体。实际上,问题是最好的老师,是学生学习的引导者,没有问题便没有深入,老师要引导学生在解决问题中学习,即提出问题,留给学生时间思考、讨论、解决问题,从而更深入地展开学习。实践证明,这种教学方法充分调动了学生学习的积极性和主动性。

例如,在讲数组的概念时,老师先设置问题:编程计算10个人的英语平均成绩。根据以前所学,学生会想到:需要说明10个类型相同的变量用于存放这10个人的英语成绩。再进一步要求:计算50个人的英语平均成绩。这时候如再说明50个变量,则会将问题麻烦化,学生此刻需要讨论该如何合理说明变量。再深入一步:求100个人的英语平均成绩。此时,当教师引出数组的概念、分析数组的性质时,学生不仅能够很容易记住数组的性质,还能够知道在什么情况下使用数组类型,事半功倍。

3 采用逐步渗透法,促进学生综合编程能力的提高

学习程序设计是一个逐步积累的过程。对于有难度的知识点,采用先用一个简单的例子让学生有所了解,再引入一个复杂一些的例子,深入理解和掌握,然后再加以概括和总结。让学生对知识的认识、理解、运用有一个逐步深入的“螺旋式”上升过程。

例如,学生在学习For……Next循环时,书本内给出了一段求1到100之间所有奇数和的程序。代码如下:

Dim I as Integer, S as Integer

S=0

For I=1 to 100 Step 2

S=S+I

Next I

这段程序在学生弄懂For……Next循环语句之后,理解起来是并不困难的,但为了提高学生的综合编程能力,我对题目要求做了如下几种变化:

(1)求1到100之间所有偶数的和。

(2)任意输入一个自然数N,求1到N之间所有数的和。

(3)求N!即1*2*……*N。

(4)求1!+2!+3!+……+N!

这里的第⑴题和课本程序相比难度不大,学生通过模仿就可以完成。第⑵题增加了难度,即循环变量的终止值需用变量N来表示,因此需要在程序的前面增加一条定义变量N的语句,还需要使用InputBox语句在程序运行的过程中将终止值输入给变量N,这就要求学生能够把前面所学的知识综合起来运用。第(3)题不但要将第(2)题的加换成乘,S的初值也不能再置为0了。第(4)题则容易将学生引到双重循环上去,其实,在第(3)题增加一个累加变量就行了,这对刚刚学习编程的学生来说还是有一定难度的,但通过练习,学生的综合编程能力可以得到训练和明显提高。

4 及时归纳小结,提高学生的学习效率

程序设计的教学,一般都是从局部分散地讲,如果不归纳总结,学生则难以形成完整、清晰的框架,因此,教学中要及时归纳、做好小结。归纳可以是一个控件多方面(如事件、属性设置等)的归纳,也可以是对一种结构的归纳(如分支结构的归纳)。总结可以是一课的总结,也可以是几课的总结。归纳总结的形式也可以多种多样,可以使用文字概括,也可以使用图示总结,重难点要着重强调。这种归纳总结,一方面有利于学生理解知识、融会贯通,顺利实现知识迁移,另一方面对于提高学生的学习效率也有很大的帮助。

5 合理运用多媒体教学,提高教学效率和学生的综合思维能力

直观、形象、便捷的多媒体教学可以使学生在有限时间内迅速理解、掌握、获取更多知识和信息,VB不仅仅要教会学生语法知识,更要通过课程教学,培养学生抽象思维和逻辑推理能力,掌握程序设计的思想和方法。教学过程中,我们要有选择地使用多媒体教学,将VB语法中非深奥理论和逻辑推理的内容(如数据类型、运算符、语句及部分语法规则),运用多媒体教学直观、形象地讲授给学生,加深其对问题的理解。这样的多媒体教学,收到了将抽象问题形象化、枯燥问题生动化的效果。对于多媒体教学不易实施的程序设计方法的讲解,则采用传统的教学方法,教会学生如何思考、推理,如何用语句实现算法,培养了学生的抽象思维、逻辑推理能力。这样,将传统的教学方法与多媒体教学相结合,大大提高了学生的综合思维能力。

总之,教学方法在程序设计教学中举足轻重,它制约着程序设计教学的效率。在教学过程中,学生知识的获得、能力的培养、智力的发展,不可能只依靠一种教学方法,必须把多种教学方法合理地结合起来,并根据教学过程的实际情况,灵活地、创造性地掌握教学过程,以争取获得最大的教学效果。

参考文献:

[1]龚沛曾.Visual Basic程序设计与应用开发教程.

[2]张书云.程序设计语言课程教学方法探析.

VB在电梯调试中的应用 篇4

电梯调试是电梯交付过程中必不可少的阶段,调试效率直接影响电梯交付使用的时间,而调试效率很大程度上又由调试工具决定。因此,调试工具在电梯发展中起到了重要的作用。目前,由于电梯数量的大幅增加及功能的不断强大,以硬件为主的传统调试工具难以满足电梯调试的新要求。

1 电梯调试工具的新要求

电梯调试工具的新要求主要有以下几方面:

(1)界面直观、操作简单,以降低调试难度和提高调试效率;

(2)调试功能更强大,以便能快速查找出电梯故障的原因;

(3)应有良好的保密功能,以增强产品安全性,避免经济损失;

(4)由于调试工具易损坏,而且调试过程也会不断出现新问题,因此调试工具要能方便地进行维护升级和扩展,以满足调试的新要求。

2 软件开发电梯调试工具的优点

软件开发电梯调试工具主要有以下优点:

(1)开发基本可由单个部门在短期内完成,节约了大量的开发时间和成本;

(2)扩展性良好、开发速度快、使用方便,可随时根据调试的需要进行功能升级;

(3)可视化的窗口设计及其简明的菜单设计,使调试过程更加直观和方便;

(4)可同时对微机输入输出口和变频器状态进行实时监控,降低了电梯调试和排除故障的难度,提高了电梯调试效率。

3 VB开发电梯调试软件实例

下面介绍用VB开发电梯调试软件实例(以富士微机为例)。

调试软件开发主要是可视化窗口设计和窗口相应控件的功能实现,系统设计思路如图1所示。由于系统数据的读写操作必须通过微机的实际地址进行,因此,为了能通过存储地址名称进行数据查询,需创建一个地址名称与实际地址一一对应的数据库。

3.1 窗体设计

主界面如图2所示,它主要包括以下几方面:

(1)“运行设置”实现任一层楼的运行设置和任意层楼间的循环运行设置;

(2)“数据读写”实现对微机数据的读取和修改;

(3)“电梯调试”实现调试过程中的数据监控和功能设置,如I/O监控、变频器监控和超载报警功能设置等;

(4)“电梯故障”实现电梯故障的查询、清除和备份等;

(5)“设置”和“帮助”实现调试软件的连接设置和查看软件的相关信息;

(6)“电梯运行信息”可以显示电梯所在楼层、运行速度、运行方向等运行信息;

(7)“电梯状态信息”可以显示门区、安全回路及其它运行状态;

(8)主界面最下方为调试软件的状态,包括连接状态和时间等。

调试软件可根据需要增加菜单或者状态显示。

3.2 代码设计

本系统代码设计有以下几个特点:

(1)系统性。本系统在编写代码时首先在模块中进行ADO定义、API声明、数据定义、数据结构定义和数据处理,然后再编写成功能块。这样在实现控件功能代码时就能方便地调用需要的功能块,使系统代码浑然一体又层次分明。代码的设计框架如图3所示。

(2)简洁性。系统利用ADO控件与数据库绑定,可方便地实现对数据库的访问,而与微机串行通信和数据读写等功能则通过直接调用API接口函数来实现。同时,在代码的编写上,将系统多处运用到的功能编写成可重复调用功能块,使得系统代码更加简洁。功能实现模式如图4所示。

(3)可靠性。当控件功能执行时,操作人员并不确定功能是否已被有效执行,有可能因为某些原因(如通信异常),修改后的功能代码执行了,但微机的数据并没有改变,因此系统采用了延时再确认的方式来实现功能的可靠性,如图5所示。

3.3 部分功能设计介绍

3.3.1 与微机通信设计思路

调试软件与微机通信能否正常建立,取决于通信接口和通信协议。系统通信接口和通信协议的设计思想如下:

(1)通信接口。PC端RS-232或USB串口通过转换器与微机端串口连接(RS-422或RS-232)。

(2)通信协议有以下两种方式。

①根据由微机厂家提供的微机端通信协议,自行编写PC端的通信协议程序,使PC端与微机端通信协议一致。

②由微机厂家编写通信协议接口程序(API),在PC端通信端口初始化时直接调用API程序。

通常,微机厂家会以API的形式提供通信协议,采用调用API方式进行系统开发可使系统更加简洁,提高开发效率。

3.3.2 调试软件保密性设计思路

调试软件保密性设计最常用的方法有以下两种:

(1)硬件加密最常用的方法是加密狗。软件可通过接口函数和加密狗进行数据交换(即对加密狗进行读写),如果没插加密狗或加密狗不对应,那么软件将不能正常执行。

(2)软件加密常用的方法是通过编制一个小程序来对计算机的特定信息进行读取,然后把此信息加在软件保密程序中。运行时软件将保密程序中的信息与安装该软件的计算机的对应信息进行比较,如果一致,此台计算机有权限使用此软件;如果不一致,此台计算机没有权限使用此软件,软件将无法使用。

硬件加密方法可实现权限有效期控制,保密可靠性高,但增加成本;软件加密方法成本低且使用方便,但实现权限有效期控制比较困难。所以,系统开发时可根据实际情况选择。

4 结束语

电梯调试软件开发成本低,扩展性强,界面直观,使用简单,降低了调试工作的难度,提高了调试工作的效率。

参考文献

[1]明日科技.Visual Basic开发技术大全[M].北京:人民邮电出版社,2007

[2]李江全,张丽,岑红蕾.Visual Basic串口通信与测控[M].北京:人民邮电出版社,2007

用VB编写DDraw程序初步VB 篇5

用VB编写DDraw程序初步

DirectX7.0终于出现了,同前面DirectX6相同,版本7也带了一个庞大(129M)的SDK开发库,同DirectX6 SDK库相比,DirectX7的SDK库提供了以下新的功能

l 对于Visual Basic的支持。用户可以使用类库在Visual Basic环境下开发基于DirectX的程序。

l 提供更多DirectX3D立即模式(Immediate Mode)下API函数,以支持DirectX7中新的3D特效,包括立体环境映射、顶点混合等。

l DirectMusic支持DownLoadable Sound Level 2标准。

l DirectInput支持8按键的游戏杆设备,同时支持Microsoft的力反馈摇杆。SDK库提供了读取力反馈效果文件的方法。同时提供了Force Editor程序来建立效果。

对于VB爱好者来说,新的SDK库终于提供了完整的对VB的支持,现在终于可以使用Visual Basic来编写DirectX的程序了。

一、DirectX SDK库的安装

微软提供的SDK库是一个“重”达129M的dx7sdk.exe自解压缩文件,你可以上网下载或者从配套光盘上获得这个文件。双击文件就会弹出Winzip自解压缩对话框。在弹出的WinZip Self-Extract DK7SDK.EXE窗口中输入解压缩文件的路径,然后点击“Unzip”按钮解压缩SDK文件,解压缩界面如图1-1所示:

要注意的是,dx7sdk.exe解压缩之后的体积有220M,硬盘比较紧张的读者在解压缩之前首先看看你的硬盘的容量是否足够。

解压缩完毕之后,进入解压缩的目录中,双击Setup.exe文件就可以安装DirectX7.0 SDK文件了。安装是采用标准的InstallShield界面,玩Windows的读者应该对这种安装界面驾轻就熟,只要跟着安装提示一步一步的走就可以了。安装完毕之后,安装程序会在开始菜单中添加一个Microsoft DirectX 7 SDK的菜单,其中包括了DirectX 7设置工具、VB范例和SDK Help等菜单项。

现在开始进入VB,开始我们的DirectX的VB编程。在这里我们使用的是VB6企业版(英文)。Windows98中文版。

打开VB,点击菜单中的 Project | References 项,在Object Library 列表中会有一项:DirectX 7.0 For Visual Basic Type Library 列表项,这个就是DirectX7.0 VB类库,选中该项,再选“ok”按钮,就可以将库加入工程文件中。

二、DirectX编程初步

1 DirectX7对象

DirectX7对象是DirectX VB对象中其他所有对象的服务和起使对象,这个对象包含了建立诸如DirectDraw、 Direct3D、 DirectSound、 DirectInput等对象的方法。同时该对象还包含了一系列的三维控件顶点和距阵的操作函数以及一些DirectX系统函数。在VB中可以通过Dim…New来直接定义和初始化一个DirectX7对象,例如:

Dim DirectX As New DirectX7

当建立成功一个DirectX7对象之后,就可以使用该对象的DirectDrawCreate、Direct3DRMCreate等方法建立DirectDraw、Direct3D对象了。

DirectX7对象范例1:获得系统中的DirectDraw和DirectSound驱动

建立一个新的工程文件,点击菜单中的 Project | References 项,在Object Library 列表中选中DirectX 7.0 For Visual Basic Type Library 项后按确定按钮(以下的程序都需要这个步骤,后面将不在做说明)。然后在Form1中加入一个ListBox控件和四个CommandButton控件,然后在Form1的代码窗口中加入以下代码:

Option Explicit

Dim DirectX As New DirectX7

Dim DDEnum As DirectDrawEnum

Dim DDSound As DirectSoundEnum

Private Sub Command1_Click

Dim Count, i As Integer

Set DDEnum = DirectX.GetDDEnum

Count = DDEnum.GetCount

List1.Clear

For i = 1 To Count

List1.AddItem DDEnum.GetDescription(i)

Next i

Set DDEnum = Nothing

End Sub

Private Sub Command2_Click()

Dim Count, i As Integer

Set DDEnum = DirectX.GetDDEnum

Count = DDEnum.GetCount

List1.Clear

For i = 1 To Count

List1.AddItem DDEnum.GetName(i)

Next i

Set DDEnum = Nothing

End Sub

Private Sub Command3_Click()

Dim Count, i As Integer

Set DDSound = DirectX.GetDSEnum

Count = DDSound.GetCount

List1.Clear

For i = 1 To Count

List1.AddItem DDSound.GetDescription(i)

Next i

End Sub

Private Sub Command4_Click()

Dim Count, i As Integer

Set DDSound = DirectX.GetDSEnum

Count = DDSound.GetCount

List1.Clear

For i = 1 To Count

List1.AddItem DDSound.GetName(i)

Next i

End Sub

Private Sub Form_Load()

Command1.Caption = “DirectDraw驱动描述”

Command2.Caption = “DirectDraw驱动名称”

Command3.Caption = “DirectSound驱动描述”

Command4.Caption = “DirectSound驱动名称”

End Sub

Private Sub Form_Unload(Cancel As Integer)

Set DirectX = Nothing

End Sub

运行程序,分别点击不同的按钮,在列表框中就会出现相应的设备驱动名和描述。

2 DirectDraw7对象

DirectDraw是一个与Windows 图形系统接口(GDI)相兼容的直接操作显示设备的软件接口。DirectDraw提供与硬件无关性的同时允许直接操作显存。程序只要使用一些基本的标准硬件约定如:RGB及YUV色彩格式及解析度。你无须调用特殊的过程来使用显存块移动(Blitter)及调色板。使用DirectDraw,你可简单操作显存,完全使用各种硬件特性而不必理会各种不同硬件之间的差异。

2.1 建立DirectDraw对象

DirectDraw7对象是DirectX7中的DirectDraw对象,你需要首先建立一个DirectX7对象,然后使用该对象的DirectDrawCreate方法来建立DirectDraw7对象。例如:

Dim DX As New DirectX7

Dim DDraw As DirectDraw7

Set DDraw = DX.DirectDrawCreate(“”)

2.2 建立协作层

当建立了一个DirectDraw对象之后,首先要设定DirectDraw的协作层。实现的方法是调用DirectDraw对象的SetCooperativeLevel函数。该函数的定义是:

object.SetCooperativeLevel( hdl As Long, flags As CONST_DDSCLFLAGS)

其中参数hdl指定程序的窗口句柄,参数flag决定程序运行的方式,函数调用

DDraw.SetCooperativeLevel Me.hWnd, DDSCL_NORMAL

将使程序运行于普通的协作层既窗口模式之下。在这种协作层你无法改变主平面调色板或进行页交换,因为程序可以使用多窗口。而函数调用

DDraw.SetCooperativeLevel MainForm.hWnd, DDSCL_EXCLUSIVE Or _

DDSCL_FULLSCREEN

将使程序运行于全屏幕模式之下。在全屏幕协作模式之下你可以完全使用硬件的一切。在这个模式之下,你可以设置使用定义及动态调色板,改变显示分辨率及进行页交换。

2.3 设置显示模式

设置显示模式是使用SetDispalyMode函数实现的,函数的定义如下:

object.SetDisplayMode( _

w As Long, _

h As Long, _

bpp As Long, _

ref As Long, _

mode As CONST_DDSDMFLAGS

其中参数w、h分别指定屏幕的宽度和高度,bpp指定屏幕显示的颜色位数,参数ref指定屏幕的刷新频率,设置为0使用显示驱动的缺省刷新频率,mode指定附加的参数。要获得系统支持的显示模式,可以使用DirectDraw对象的GetDisplayModesEnum函数来遍历所有支持的显示模式。

2.4 建立平面对象

一个平面或者说DirectDrawSurface对象是DirectDraw中图形显示和绘制对象。用户可以在DirectDrawSurface上贴位图、绘制图形,还可以直接操作DirectDrawSurface对象使用的显存里的内容。利用DirectDraw对象的CreateSurface方法可以建立一个DirectDrawSurface7对象。例如:

Public DDSFrontDesc As DDSURFACEDESC2

With DDSFrontDesc

.lFlags = DDSD_CAPS

.ddsCaps.lCaps = DDSCAPS_PRIMARYSURFACE 注释:

End With

Set DDSFront = DDraw.CreateSurface(DDSFrontDesc)

也可以利用DirectDraw对象的CreateSurfaceFromFile函数或者CreateSurfaceFromResource函数建立一个DirectDrawSurface7对象,同时将图象文件或者资源文件中的图象装入建立的DirectDrawSurface中。如果上面的函数调用成功,函数将返回一个DirectDrawSurface对象。如果在设定DirectDraw对象的协作层时将其设置为全屏幕模式的话,为了改善图象性能,可以设立一个主平面和若干个屏下缓冲平面,首先在屏下平面中生成图象,然后将图象翻转到主平面上,这样可以有效的避免图象闪烁。

下面通过一个具体的范例来对DirectDraw进行说明:这个范例建立一个全屏幕的DirectDraw对象,通过操作主显示平面的显示内存在屏幕上显示火焰字的特效,然后按Enter键可以将DirectDraw平面中的图形保存起来。程序的具体实现如下:

建立一个新的工程文件,点击菜单中的 Project | Reference 选项,打开Object Library 列表窗口,将DirectX 7.0 For Visual Basic Type Library 加入工程文件。将Form1的Name属性改变为MainForm,在MainForm中加入一个PictureBox控件,将其的Visible属性设置为False。然后在MainForm的代码窗口中加入以下代码:

Private Sub Form_KeyPress(KeyAscii As Integer)

Dim sRect As RECT

Dim hdcSrc As Long

If KeyAscii = 27 Then

ExitLoop = True

注释:End

ElseIf KeyAscii =vbKeyReturn Then

DDSFront.BltToDC Picture1.hDC, sRect, sRect

With Picture1

注释:获得与主显示平面兼容的图形设备句柄

hdcSrc = DDSFront.GetDC

注释:保存图象

Set .Picture = SaveTohBmp(hdcSrc, 0, 0, 640, 480)

注释:释放图形句柄

DDSFront.ReleaseDC hdcSrc

SavePicture Picture1, “c:a.bmp”

End With

End If

End Sub

Public Sub Form_Paint()

BlitRect.Right = DDSBackDesc.lWidth

BlitRect.Bottom = DDSBackDesc.lHeight

DDSFront.Blt BlitRect, DDSBack, BlitRect, DDBLT_WAIT

End Sub

在工程文件中加入一个Module文件,这个文件中将对DirectDraw操作做出定义,中加入以下代码:

Option Explicit

Public DX As New DirectX7

Public DDraw As DirectDraw7

Public DDSFront As DirectDrawSurface7

Public DDSFrontDesc As DDSURFACEDESC2

Public DDSBack As DirectDrawSurface7

Public DDSBackDesc As DDSURFACEDESC2

Public Clipper As DirectDrawClipper

Dim Pict() As Byte

Dim AlphaRect As RECT

Dim X As Long, Y As Long

Dim Temp As Long

Dim Index As Long

Dim Index2 As Long

Dim Pos As Long

Dim PosPlus1 As Long

Dim PosPlus2 As Long

Dim PosPlus3 As Long

Public Pal(255) As PALETTEENTRY

Public Palette As DirectDrawPalette

Public BlitRect As RECT

Public FullSize As Boolean

Public ExitLoop As Boolean

Dim Aclearcase/“ target=”_blank“ >ccum As Long

Dim Msg(9) As String

Dim Counter As Long

Dim MsgIndex As Long

Dim bDrawText As Boolean

Dim lastTime As Long

DimXPos As Long, YPos As Long

Dim wait As Long

Dim Angle As Single

Dim Flag As Boolean

Dim Count As Long

Dim CurModeActiveStatus As Boolean

Dim bRestore As Boolean

Dim Mode As Boolean

Private Sub Main()

InitializeDX

注释:初始化Picture1以获得DirectDraw界面图象

With MainForm.Picture1

.Width = 640 * Screen.TwipsPerPixelX

.Height = 480 * Screen.TwipsPerPixelY

End With

DDSBack.SetForeColor RGB(255, 255, 255)

MainForm.Font.Name = ”宋体“

DDSBack.SetFont MainForm.Font

Msg(0) = ”一个显示火焰字的演示“

Msg(1) = ”演示“

Msg(2) = ”利用VB阵列“

Msg(3) = ”对显示内存“

Msg(4) = ”进行直接存取“

Msg(5) = ”键推出“

注释:设置8位的调色板

For Index = 0 To 84

Pal(Index + 1).red = Index * 3 + 3

Pal(Index + 1).green = 0

Pal(Index + 1).blue = 0

Pal(Index + 86).red = 255

Pal(Index + 86).green = Index * 3 + 3

Pal(Index + 86).blue = 0

Pal(Index + 171).red = 255

Pal(Index + 171).green = 255

Pal(Index + 171).blue = Index * 3 + 3

Next

Set Palette = DDraw.CreatePalette(DDPCAPS_8BIT _

Or DDPCAPS_ALLOW256, Pal())

DDSFront.SetPalette Palette

AlphaRect.Right = DDSBackDesc.lWidth - 1

AlphaRect.Bottom = DDSBackDesc.lHeight - 1

DDSBack.Lock AlphaRect, DDSBackDesc, DDLOCK_WAIT, 0

DDSBack.GetLockedArray Pict()

For X = 0 To 639

For Y = 0 To 479

Pict(X, Y) = 0

Next

Next

注释:Corresponding unlock

DDSBack.Unlock AlphaRect

While Not ExitLoop

Mode = ExModeActive

bRestore = False

Do Until ExModeActive

DoEvents

bRestore = True

Loop

DoEvents

If bRestore Then

bRestore = False

DDraw.RestoreAllSurfaces

End If

DDSBack.Lock AlphaRect, DDSBackDesc, DDLOCK_WAIT, 0

DDSBack.GetLockedArray Pict()

For Y = 0 To 479

Pict(0, Y) = 0

Pict(639, Y) = 0

Next

For X = 0 To 639

Pict(X, 477) = Rnd * 220 + 35

Pict(X, 478) = Rnd * 220 + 35

Pict(X, 479) = Rnd * 220 + 35

Next

Accum = 0

For X = 1 To 638

For Y = 0 To 477

Accum = (Accum + Pict(X, Y + 1) _

+ Pict(X, Y + 2) _

+ Pict(X + 1, Y + 1) _

+ Pict(X - 1, Y + 1)) 5

If Accum < 0 Then

Accum = 0

ElseIf Accum > 255 Then

Accum = 255

End If

Pict(X, Y) = Accum

Next

Next

For X = 0 To 639

Pict(X, 0) = 0

Pict(X, 1) = 0

Next

X = Rnd * 639

For Y = 50 To 439

Next

注释:Unlock

DDSBack.Unlock AlphaRect

If DX.TickCount() - lastTime > wait Then

If Counter = 0 Then

bDrawText = True

Counter = 1

XPos = Rnd * 200

YPos = 300 + Rnd * 140

wait = 400

ElseIf Counter = 1 Then

MsgIndex = MsgIndex + 1

If MsgIndex > 5 Then MsgIndex = 0

bDrawText = False

Counter = 0

wait =

End If

lastTime = DX.TickCount

End If

注释:Draw Text to the backbuffer

If bDrawText Then

On Error Resume Next

DDSBack.DrawText XPos, YPos, Msg(MsgIndex), False

On Error GoTo 0

End If

MainForm.Form_Paint

Wend

TerminateDX

End

End Sub

Function ExModeActive() As Boolean

Dim TestCoopRes As Long

TestCoopRes = DDraw.TestCooperativeLevel

Select Case TestCoopRes

Case DDERR_NOEXCLUSIVEMODE

ExModeActive = False

Case DD_OK

ExModeActive = True

End Select

End Function

Public Sub InitializeDX()

MainForm.Left = 0

MainForm.Top = 0

MainForm.Height = 640 * Screen.TwipsPerPixelY

MainForm.Width = 480 * Screen.TwipsPerPixelX

MainForm.Show

注释:建立DirectDraw对象

Set DDraw = DX.DirectDrawCreate(”“)

注释:设定DirectDraw对象的协作层

DDraw.SetCooperativeLevel MainForm.hWnd, DDSCL_EXCLUSIVE Or DDSCL_FULLSCREEN 注释: DDSCL_NORMAL

注释:设定显示模式位640x480x8位颜色

DDraw.SetDisplayMode 640, 480, 8, 0, DDSDM_DEFAULT

注释:设定DDSFrontDesc为主平面

With DDSFrontDesc

.lFlags = DDSD_CAPS

.ddsCaps.lCaps = DDSCAPS_PRIMARYSURFACE 注释:Or DDSCAPS_SYSTEMMEMORY

End With

注释:设定DDSBackDesc为后台缓冲平面

With DDSBackDesc

.ddsCaps.lCaps = DDSCAPS_SYSTEMMEMORY

.lFlags = DDSD_CAPS Or DDSD_WIDTH Or DDSD_HEIGHT

.lWidth = 640

.lHeight = 480

End With

注释:建立平面

Set DDSFront = DDraw.CreateSurface(DDSFrontDesc)

Set DDSBack = DDraw.CreateSurface(DDSBackDesc)

Set Clipper = DDraw.CreateClipper(0)

Clipper.SetHWnd MainForm.hWnd

DDSFront.SetClipper Clipper

DDSBack.SetClipper Clipper

DoEvents

Exit Sub

ERRoUT:

If Not (DDraw Is Nothing) Then

DDraw.RestoreDisplayMode

DDraw.SetCooperativeLevel MainForm.hWnd, DDSCL_NORMAL

DoEvents

End If

MsgBox ”无法对DirectDraw进行初始化 “ + Chr(13) + ”也许你的显示卡不支持 640x480x8 显示模式 “

End

End Sub

Public Sub TerminateDX()

注释:子程序TerminateDX回复原来的显示模式并且释放所有的DirectDraw有关对象

DDraw.RestoreDisplayMode

DDraw.SetCooperativeLevel MainForm.hWnd, DDSCL_NORMAL

DoEvents

Set Clipper = Nothing

Set DDSBack = Nothing

Set DDSFront = Nothing

Set DDraw = Nothing

Set DX = Nothing

End Sub

在工程文件中在加入一个Module,这个Module主要定义与图象保存相关的操作,加入以下代码:

Option Explicit

Option Base 0

Private Type PALETTEENTRY

peRed As Byte

peGreen As Byte

peBlue As Byte

peFlags As Byte

End Type

Private Type LOGPALETTE

palVersion As Integer

palNumEntries As Integer

palPalEntry(255) As PALETTEENTRY注释: Enough for 256 colors.

End Type

Private Type GUID

Data1 As Long

Data2 As Integer

Data3 As Integer

Data4(7) As Byte

End Type

Private Const RASTERCAPS As Long = 38

Private Const RC_PALETTE As Long = &H100

Private Const SIZEPALETTE As Long = 104

Private Declare Function CreateCompatibleDC Lib ”GDI32“ _

(ByVal hDC As Long) As Long

Private Declare Function CreateCompatibleBitmap Lib ”GDI32“ _

(ByVal hDC As Long, _

ByVal nWidth As Long, _

ByVal nHeight As Long) As Long

Private Declare Function GetDeviceCaps Lib ”GDI32“ _

(ByVal hDC As Long, _

ByVal iCapabilitiy As Long) As Long

Private Declare Function GetSystemPaletteEntries Lib ”GDI32“ _

(ByVal hDC As Long, _

ByVal wStartIndex As Long, _

ByVal wNumEntries As Long, _

lpPaletteEntries As PALETTEENTRY) As Long

Private Declare Function CreatePalette Lib ”GDI32“ _

(lpLogPalette As LOGPALETTE) As Long

Private Declare Function SelectObject Lib ”GDI32“ _

(ByVal hDC As Long, _

ByVal hObject As Long) As Long

Private Declare Function BitBlt Lib ”GDI32“ _

(ByVal hDCDest As Long, _

ByVal XDest As Long, _

ByVal YDest As Long, _

ByVal nWidth As Long, _

ByVal nHeight As Long, _

ByVal hdcSrc As Long, _

ByVal XSrc As Long, _

ByVal YSrc As Long, _

ByVal dwRop As Long) As Long

Private Declare Function DeleteDC Lib ”GDI32“ _

(ByVal hDC As Long) As Long

Private Declare Function GetForegroundWindow Lib ”USER32“ () As Long

Private Declare Function SelectPalette Lib ”GDI32“ _

(ByVal hDC As Long, _

ByVal hPalette As Long, _

ByVal bForceBackground As Long) As Long

Private Declare Function RealizePalette Lib ”GDI32“ _

(ByVal hDC As Long) As Long

Private Declare Function GetWindowDC Lib ”USER32“ _

(ByVal hWnd As Long) As Long

Private Declare Function GetDC Lib ”USER32“ _

(ByVal hWnd As Long) As Long

Private Declare Function GetWindowRect Lib ”USER32“ _

(ByVal hWnd As Long, _

lpRect As RECT) As Long

Private Declare Function ReleaseDC Lib ”USER32“ _

(ByVal hWnd As Long, _

ByVal hDC As Long) As Long

Private Declare Function GetDesktopWindow Lib ”USER32“ () As Long

Private Type PicBmp

Size As Long

Type As Long

hBmp As Long

hPal As Long

Reserved As Long

End Type

Private Declare Function OleCreatePictureIndirect Lib ”olepro32.dll" (PicDesc As PicBmp, RefIID As _

GUID, ByVal fPictureOwnsHandle As Long, IPic As IPicture) As Long

Public Function SaveTohBmp(ByVal hdcSrc As Long, ByVal LeftSrc As Long, _

ByVal TopSrc As Long, ByVal WidthSrc As Long, ByVal HeightSrc As Long) As Picture

Dim hDCMemory As Long

Dim hBmp As Long

Dim hBmpPrev As Long

Dim r As Long

Dim hPal As Long

Dim hPalPrev As Long

Dim RasterCapsScrn As Long

Dim HasPaletteScrn As Long

Dim PaletteSizeScrn As Long

Dim LogPal As LOGPALETTE

注释:

注释:建立一个内存图形设备句柄

hDCMemory = CreateCompatibleDC(hdcSrc)

注释:建立一个bitmap并保存到hDCMemory中

hBmp = CreateCompatibleBitmap(hdcSrc, WidthSrc, HeightSrc)

hBmpPrev = SelectObject(hDCMemory, hBmp)

注释: Get screen properties.

RasterCapsScrn = GetDeviceCaps(hdcSrc, RASTERCAPS) 注释: Raster

注释: capabilities.

HasPaletteScrn = RasterCapsScrn And RC_PALETTE注释: Palette

注释: support.

PaletteSizeScrn = GetDeviceCaps(hdcSrc, SIZEPALETTE) 注释: Size of

注释: palette.

If HasPaletteScrn And (PaletteSizeScrn = 256) Then

注释:建立系统调色板的拷贝

LogPal.palVersion = &H300

LogPal.palNumEntries = 256

r = GetSystemPaletteEntries(hdcSrc, 0, 256, LogPal.palPalEntry(0))

hPal = CreatePalette(LogPal)

hPalPrev = SelectPalette(hDCMemory, hPal, 0)

r = RealizePalette(hDCMemory)

End If

注释:将屏幕图形拷贝到内存图形设备句柄中

r = BitBlt(hDCMemory, 0, 0, WidthSrc, HeightSrc, hdcSrc, LeftSrc, TopSrc, vbSrcCopy)

hBmp = SelectObject(hDCMemory, hBmpPrev)

If HasPaletteScrn And (PaletteSizeScrn = 256) Then

hPal = SelectPalette(hDCMemory, hPalPrev, 0)

End If

注释:释放图形设备句柄

r = DeleteDC(hDCMemory)

Debug.Print r

注释:调用CreateBitmapPicture函数从指定的bitmap对象和调色板中建立一个picture对象

Set SaveTohBmp = CreateBitmapPicture(hBmp, hPal)

End Function

Public Function CreateBitmapPicture(ByVal hBmp As Long, ByVal hPal As Long) As Picture

Dim r As Long

Dim Pic As PicBmp

Dim IPic As IPicture

Dim IID_IDispatch As GUID

注释:填充IDispatch界面

With IID_IDispatch

.Data1 = &H20400

.Data4(0) = &HC0

.Data4(7) = &H46

End With

注释:填充Pic结构

With Pic

.Size = Len(Pic)注释: Length of structure.

.Type = vbPicTypeBitmap注释: Type of Picture (bitmap).

.hBmp = hBmp注释: Handle to bitmap.

.hPal = hPal注释: Handle to palette (may be null).

End With

注释:建立Picture对象

r = OleCreatePictureIndirect(Pic, IID_IDispatch, 1, IPic)

注释:返回Picture对象

Set CreateBitmapPicture = IPic

End Function

运行程序,在屏幕上会出现一些火焰字的特效,按Enter键可以将屏幕保存到”c:a.bmp”中,按Esc键退出程序回到Windows,

在上面的程序中,程序首先建立一个DirectDraw对象,然后设置该对象的协作层为全屏协作模式,接下来设置显示模式为640x480x8位颜色,建立一个前台DirectDrawSurface对象和一个后台缓冲DirectDrawSurface对象,建立和设置DirectDrawClipper对象。

在主程序段中,程序首先对前台绘图平面的调色板(DirectDrawPalette)对象进行操作以改变显示的文字的颜色,然后对后台缓冲绘图平面进行字节操作,以产生文字弥散的效果,然后在将后台缓冲绘图平面翻转到前台。当用户按下Enter键之后,程序获得与前台绘图平面相兼容的图形设备句柄,然后再调用Windows API函数将绘图平面内存中的内容保存到Windows位图文件中。

上面粗略的介绍了DirectX7 SDK的新特性以及初步的DirectDraw编程,希望对大家能有所帮助。以上的程序在Windows98、VB6.0下运行通过。

VB程序调试 篇6

关键词:VB,VB程序,VB流程,输出结果

学生在学习Visual Basic 6.0程序设计中,在“阅读程序代码,写出输出结果”时,总会感到这样或那样的困难,其关键是不能正确理解和掌握VB程序在运行时的整个流程。下面通过教学实例,来说明并分析VB程序在运行时的整个流程过程,供学生参考和学习之用。

教学实例1、阅读下列程序代码,写出程序输出结果:

PrivateSubForm_Click( )

a=3 :b=2

c=a :a=b :b=c

printa , b

EndSub

输出结果是:

为了更好地理解和掌握此程序在运行时的整个流程,我们把此程序变形并编号如下:

PrivateSubForm_Click( )

a=3 ………①

b=2 ………②

c=a ………③

a=b ………④

b=c ………⑤

printa ,b ………⑥

EndSub………⑦

说明:此程序在运行时的整个流程经过是:①→②→③→④→⑤→⑥→⑦。

分析:第一步:a被赋值3;第二步:b被赋值2;第三步:c被赋值a,而a=3,所以c=3;第四步:a重新被赋值b(a的原值被取消),而b=2,所以新值a=2;第五步:b重新被赋值c(b的原值被取消),而c=3,所以新值b=3;第六步:输出新值a和新值b,即a=2,b=3;第七步:程序运行结束。

所以,根据以上程序流程分析知,该程序输出结果是:23

教学实例2、阅读下列程序代码,写出程序输出结果:

PrivateSubForm_Click( )

WhileJ<10 ………①

J=(J+1)* (J+1)………②

N=N+1………③

Wend ………④

printN………⑤

EndSub ………⑥

输出结果是:

说明:此程序在运行时的整个流程经过是:①→②→③→①→②→③→①→②→③→④→⑤→⑥。

分析:第一步:因为J未被赋值,所以按系统默认值J=0判断,满足条件J<10,故进入②;第二步:J被赋值(J+1)*(J+1),而原值J=0(系统默认值),所以新值J=1;第三步:N被赋值N+1,而原值N=0(系統默认值),所以新值N=1;第四步:因为J=1,仍然满足条件J<10,故进入①;第五步:因为J重新被赋值(J+1)*(J+1),而原值J=1,所以新值J=4;第六步:N重新被赋值N+1,而原值N=1,所以新值N=2;第七步:因为J=4,还满足条件J<10,故进入①;第八步:因为J又重新被赋值(J+1)*(J+1),而原值J=4,所以新值J=25;第九步:N又重新被赋值N+1,而原值N=2,所以新值N=3;第十步:因为J=25不满足条件J<10,故进入④,④表示条件判断结束;第十一步:输出新值N,即N=3;第十二步:程序运行结束。

所以,根据以上程序流程分析知,该程序输出结果是: 3

教学实例3、阅读下列程序代码,写出程序输出结果:

PrivateSubForm_Click( )

Fork=1to2……①

Ifk<=1thenA=2……②

Ifk<=2thenA=1……③

printA; ……④

Nextk……⑤

printk……⑥

EndSub……⑦

输出结果是:

说明:此程序在运行时的整个流程经过是:①→②→③→④→⑤→①→②→③→④→⑤→⑥→⑦。

分析:第一步:确定循环起始值k=1;第二步:因为k=1满足条件k<=1,故A被赋值2;第三步:又因为k=1也满足条件k<=2,故A重新被赋值1(A的原值2取消);第四步:输出新值A,即A=1;第五步:确定下一次循环值k=2;第六步:因为k=2符合①,故第二次循环开始;第七步:因为k=2不满足条件k<=1,故进入③;第八步:因为k=2满足条件k<=2,故A重新被赋值1(原值1取消);第九步:输出新值A,即A=1;第十步:确定下一次循环值k=3;第十一步:因为k=3不符合①,故进入⑥,⑥表示输出新值k,即k=3;第十二步:程序运行结束。

所以,根据以上程序流程分析知,该程序输出结果是:113

教学实例4、阅读下列程序代码,写出程序输出结果:

PrivateSubForm_Click( )

Y=1………①

WhileX<10………②

X=Y ………③

X=X*(X+1)………④

printX………⑤

Y=Y+2 ………⑥

Wend………⑦

printY………⑧

EndSub ………⑨

输出结果是:

说明:此程序在运行时的整个流程经过是:①→②→③→④→⑤→⑥→②→③→④→⑤→⑥→⑦→⑧→⑨。

分析:第一步:Y被赋初值1;第二步:因为X=0(系统默认值),满足条件X<10,故进入③;第三步:X被赋值Y,而Y=1,所以X=1;第四步:因为X重新被赋值X*(X+1),而原值X=1,所以新值X=2;第五步:输出新值X,即X=2;第六步:Y重新被赋值Y+2,而原值Y=1,所以新值Y=3;第七步:因为X=2仍然满足条件X<10,故进入②,进行第二次条件判断;第八步:X重新被赋值Y,而Y=3,所以X=3;第九步:因为X又重新被赋值X*(X+1),而原值X=3,所以新值X=12;第十步:输出新值X,即X=12;第十一步:Y又重新被赋值Y+2,而原值Y=3,所以新值Y=5;第十二步:因为X=12,不满足条件X<10,故进入⑦,⑦表示条件判断结束;第十三步:输出新值Y,即Y=5;第十四步:程序运行结束。2

VB程序设计教学探讨 篇7

1 课程的地位和作用

VB程序设计是一门应用型基础课, 是使学生掌握一种简单、实用的编程工具, 掌握面向对象的基本概念与高级语言的基本结构, 提高学生的编程能力。作为非计算机专业学科中一门承前启后的基础课程, VB程序设计在各专业课程体系中扮演着重要的角色。

2 教学设计

教学设计是指教学的系统规划及其教学方法的设计, 也就是为了达到一定的教学目标, 对教什么 (课程内容) 和怎么教 (教学组织、模式选择、媒体选用等) 进行设计。

2.1 教学内容 (交什么)

教学内容是为实现教学目标, 学生系统学习知识、技能和行为经验的总和。教学内容的范围和深度规定了学生掌握知识的广度、深度和能力水平。在设计VB课程的教学内容时, 应该结合教学目标, 学生原有的知识水平, 认知能力和技能, 查阅、比较近年出版的有关VB教材, 确定VB课程的教学内容。以我校计算机教研室为例, 规定了以下教学内容, 第一部分:VB程序设计概述。简要介绍VB的特点, VB6.0的集成开发环境, 同时生成第一个没代码的应用程序, 让学生对VB程序设计有一个初步的认识。第二部分:简单VB程序设计。介绍面向对象程序设计的概念, 然后通过简单实例说明VB应用程序设计的一般过程, 使学生对VB程序设计有一个全面的了解。第三部分:VB基本语言。详细介绍VB规定的可编程的数据类型、基本语句、函数和过程等, 为应用程序的设计、开发, 打下扎实的语言基础。第四部分:常用控件。系统介绍开发应用程序的常用控件和一些重要高级控件。使学生掌握它们的功能和用法, 从而在应用程序的开发中, 设计出美观、实用的用户界面。第五部分:文件。介绍文件的基本操作, 使学生掌握文件系统控件的功能和用法, 对文件的读写有一定的了解。第六部分:图形操作。详细介绍VB图形操作基础以及VB提供的主要图形控件和图形方法, 使学生熟练掌握图形设计的基本方法和技能。第七部分:VB与数据库简介。简要介绍关系数据库设计的基本概念, VB6.0管理数据库的基本方案和SQL语言的使用, 使学生对VB6.0管理数据库的基本方案和SQL语言有一定的了解。

2.2 教学过程 (怎么教)

2.2.1 理论教学

在VB课程的教学中, 主要是在多媒体教室, 以自制的CAI课件为主完成的。在CAI课件中, 应设计大量有针对性的应用实例和编程“任务”, 供教学使用。在VB课程教学中, 坚持以实例教学为主, 任务驱动和实验为辅的原则, 根据学生知识基础、认知能力、教学内容, 将实例教学和任务驱动灵活运用于教学中, 充分发挥它们在优化课堂教学过程、提高教学效率的积极作用。

2.2.2 上机实验

VB是一门实践性很强, 极富创造性特点的课程。要想学好, 上机实验是一个非常重要的环节。为了确保实验的顺利进行, 实验前应该给出明确的实验内容, 并要求学生复习和掌握与本次实验有关的教学内容。根据实验内容对问题进行认真的分析, 初步设计出程序的用户界面。根据应用程序的主要功能, 考虑通过什么方法来实现, 制定初步的解决方案。在实验过程中, 可以将将学生分成若干小组, 让学生自己独立完成实验或者小组成员一起分析、讨论、交流后共同完成。在实验中除了通过观察了解学生实验的情况外, 还可以将有特点、有创意的设计, 通过大屏幕进行演示、分析、讨论, 从而拓展学生的思路, 激发学生积极探索精神和创新的意识。

3 教学探索

关于本课程的试验改革可以在以下两方面进行探索。

(1) 实验指导书, 实验项目的选择与设计注重实际应用 (与相关的专业进行结合) , 以启迪学生科学思维和创新意识为主。

(2) 可以利用学校的网络资源设计网络教学平台、考核系统及相应的考核体制。

摘要:《VB程序设计》课程是非计算机专业学生必修的公共基础课程之一, 并且还是计算机等级考试二级考试科目, 如何利用现有的教学条件和教学资源, 围绕学生这个教学对象, 选择教学内容, 确定教学策略, 进行系统、科学有效的课程教学设计, 对于实现教学目标, 提高教学质量有着重要的意义。本文主要分析了VB程序设计在理论教学和实践教学中的现状, 提出了该课程在教学内容的制定上应与专业和学生实际情况相结合, 以及在教学过程中采用的教学方式, 并对教学改革进行了探究。

关键词:实践教学,教学改革,教学方式

参考文献

[1]蒋正炎.基于高职环境下VB语言课程教学改革的实践[J].考试周刊, 2009, 27.

VB程序设计教法浅谈 篇8

我从事VB程序设计语言的教学有几年的时间了,在此期间也接触了各种各样的VB教材,通过在教学中的不断实践、探索和学习。我总结出了一套关于VB程序设计的教学方法,并在实际教学中获益匪浅。

一、解除学生的“畏难”情绪,激发学习潜能

在我们的日常教学活动中,有一个不容忽视的现象———很多成绩相差悬殊的学生之间,其智商水平差别并不大。教育心理学中著名的皮格马利翁效应说明教师的期望可使后进学生转化为优等生的事实,积极的心理暗示可以充分调动潜能的有力证明。

要想让学生能取得好成绩,就要先让学生从心里彻底消除“我不可能学会”的想法。这种“畏难”情绪,严重阻碍了学生充分发挥自己的学习潜能,是“教”、特别是“学”的最大障碍。

因此,在上每一节课时,我注重把“引导”放在首位,尽量让学生感觉到,不用死背书,只要自己动脑筋,就能想出解决问题的方法。同时,我向学生介绍了一些VB使用过程中的小技巧。例如,控件的属性名很多,又都是英文,学生大多英文底子薄,不易看懂。我就提醒学生看属性栏中的提示,以减少记忆负担。

二、注重教法研究,不断引入更实用的例题

(一)不同的章节采用不同的教学模式。

所谓教学模式,是指在一定教育思想指导下和丰富的教学经验基础上,为完成特定的教学目标和内容而围绕某一主题形成的、稳定且简明的教学结构理论框架及其具体可操作的实践活动方式。

在教学中,我主张打破课本原有以知识的逻辑结构体系为顺序组织课堂教学的方式,以学生的已有知识为基础,按照学生的认知规律,遵循先易后难、先具体后抽象的原则,将知识点打散,安排到课堂实训(即例题)中,先强化技能,后总结、归纳。其中的《2.3向窗体添加控件》一节,采用的是“化零为整”的模式,以Windows系统中的计算器的界面设计为题,囊括了以下三类操作的方法。

1. 控件的移动和大小调整;

2. 控件和复制与删除;

3. 多个控件的移动、复制和删除。

这样给学生留下学习内容不太多,比较好学的印象。而且,看到自己也能设计出和Windows系统中的计算器的相同的界面,学生的热情大大地提高了。

(二)因材施教,引入“阶梯型”题目。

五个手指各有长短,学生的认知能力也是千差万别。为了照顾大部分学生的学习进度,教师需要按照学生的平均接受能力设计教学内容。这势必出现自学能力较强、反应较快的学生“吃不饱”,而反应慢、学习缺乏主动性的学生则“消化不良”的情况。要解决这一教学中的矛盾,教师除了要照顾大多数学生之外,还要对那些特别的学生给予特殊的关照,可自行设计题目,而不能完全照搬教材上的例题。

例如,在练习程序设计中的条件结构时,我设计了这样的一个题目;随机输入姓名、年龄和性别,判断输入者是哥哥、姐姐、弟弟、妹妹或是同龄人,并根据判断输出“××哥哥,你好!”或是“××妹妹,你好!”等,如果是同龄人,则输入“××朋友,你好,太好了,我们同岁!”

对那些反应稍慢一点的学生,教师则可给出程序的清单,为这部分学生逐条讲解,之后,以第一阶段的题目为主,稍加变化,再完成一个类似的题目。

三、指导学生掌握正确有效的学习方法

(一)掌握正确的程序设计思路。

VB作为一个可视化程序设计语言,其程序设计过程一般有如下几步:

1. 设计窗体,即添加控件;

2. 设置窗体及控件的属性;

3. 编写程序代码。

我从一开始就有意识地给学生示范这样一个做题过程,实际程序的关键在于编写程序代码,编写代码即传统意义上的编程,其一般思路是:输入数据→处理数据→输入反馈信息。我经过多年的计算机程序设计方面的教学发现,先让学生明白这个思路,再分析程序或者编写程序代码,就会相对比较容易一些。

(二)学习编写程序代码的建议。

1. 读发音,记语句。

VB程序设计语言的基本语句,都由英语单词组成。因而,VB语句的记忆,其实质就是英语单词的记忆。在刚接触语句时,我就教学生用语句的发音来记它的写法,而不是单纯地背语句的字母组合。比如,IF读成[if],而不是[ai—ef]。

学生第一次接触VB语句,就要有意识地反复读语句的发音,直到对这个发音有印象为止。经过一段时间的实验,我发现90%的学生能对语句的读音发生反应,并按照语句的读音来记忆。学生尝到了这种方法的好处,逐渐把这种“读发音、记语句”的方式变成学习VB语句的一种方法。

2. 反复练,记语句。

课堂教学中,学生一开始获得的是短时记忆;要想保持,必须转换为长时记忆。怎样完成这种转化呢?反复练习,强化记忆,是短时记忆照着长时记忆转化的唯一有效的方法。

实践证明,只有让学生亲自动手,反复操作练习,才能进一步巩固所学的知识,才能记得准、记得牢。

3. 单元总结,对比记忆。

心理学告诉我们,只有抓住事物的本质特征,才能较容易地实现记忆。在教学中,我们可以运用比较的方法,抓住每个单元中各种语句的相同点和不同点,让学生进行比较,引导学生自己总结规律。

例如,VB中的循环结构有两种语句格式:For和Do循环。

我为学生设计一个练习题,让学生分别用这两种语句格式(实际上是五种方法)来完成同样的功能—“显示1~10”。在练习过程中,引导学生总结他们的异同点。

这样一来,加深了学生对两种语句格式的理解,提高了记忆深度和广度。

四、进一步激发学生的学习兴趣

在引导学生进入了VB的殿堂之后,教师应进一步激发学生的学习兴趣。

首先,现在是信息时代,网络为我们提供了各种各样的资源,其中就包括VB的学习资料、趣味程序的源代码等。教师应鼓励学生学会利用网络提供的学习机会,扩展自己的眼界,提高自己的学习水平。

其次,让学生每学一点儿,就赶快把它用到实际的程序中去。只有“学以致用”,水平才能不断提高。这就需要学生教会观察生活,发现现实生活中可以用VB编写多媒体播放程序就是一个不错的例子。

基于VB的断面程序设计 篇9

关键词:路线测量,导线极坐标法,纵断面图,横断面图

当今祖国正在努力实现经济的飞速发展, 经济的发展首先是交通的发展, 这就要求一种全新的数据采集方法的出现和内业数据处理系统的建立。本程序设计就是针对路线测量的一种新方法———导线极坐标法, 自动实现内业数据处理以及路线纵横断面图的绘制等一系列内业工作。该系统采用Visual Basic 6.0作为开发工具, 可直接在Auto CAD下自动绘制成图。

1 程序设计的基本思路和实现方法

程序设计框图如图1所示。

程序是利用Visual Basic 6.0对原始数据进行数据的预处理, 数据处理, 横断面图SCR批处理数据文件, 可以直接在Auto CAD R14或Auto CAD2000下运行该批处理数据文件, 经后期图形处理后即可生成纵断面图和横断面图。其流程如图1所示。

当点击本系统的EXE文件后, 弹出如下欢迎屏幕, 如图2所示。

在这个窗体上添加一个时间控件, 并把时间控件的Interval属性设置为2 000 ms, 在时间控件的TIME事件中编写代码以实现停留2 s之后, 自动卸载欢迎界面并弹出系统主界面, 见图3。

主屏幕上设置了四个主功能按钮和一个菜单栏。四个主功能按钮分别是“绘制纵断面图”“绘制横断面图”“在Auto CAD上展点”“退出”等四个。当点击每个按钮时将完成各自的任务, 下面就分别介绍:

1) “绘制纵断面图”按钮, 当点击“绘制纵断面图按钮”时, 将弹出图4的界面。

此界面的功能是将要绘制的纵断面图数据导入到VB6.0中, 以进行数据处理。主要是进行数据的坐标转换, 包括平移、缩放等, 把数据展在用户自定义的坐标系统下。当选择好坐标数据文件后, 如要继续绘制纵断面图则选择“继续”按钮, 如要退出绘制纵断面图则选择“退出”按钮, 将回到程序的主界面。当点击“继续”按钮时, 将弹出图5界面。

此界面为用户自定义坐标系统的功能界面, 考虑到测量工作的复杂性、不一致性、多样性, 本系统提供了此项功能以满足不同测量任务的要求。此界面中包括四个选项 (文本框Text) , 选项一和二为可选项, 如果用户没有输入数据, 系统将默认其值。选项三和四为必选项, 当用户没有输入数据时, 系统将弹出图6提示界面 (提示界面是利用VB中的输入对话框Inputbox实现的) 。

输入完以上数据之后, 单击“确认”按钮, 将停顿几秒钟, 此时正在打开Auto CAD, 并自动加载程序绘制纵断面图。

2) “绘制横断面图”按钮:当单击“绘制横断面图”命令按钮时, 将弹出图7界面。

此界面的功能为选择横断面图的坐标数据, 选择完数据文件之后, 单击“继续”按钮, 将弹出图8界面。

此界面的功能是根据用户提供的数据绘制坐标系统, 包括三个选项, 选项一和二是可选项, 当不输入数据时, 系统将默认其值。选项三为必选项, 当用户没有输入数据时将弹出图9提示界面。

当输入完以上数据之后, 单击“确认”按钮。

3) “在Auto CAD上展点”按钮:本系统还提供了在Auto CAD上批量展点的功能, 点击“在Auto CAD上展点”的命令按钮后, 将弹出图10界面。

选择完数据文件之后, 单击“展点”按钮。

2 利用VB实现控制Auto CAD的方法

Auto CAD是一种极其灵活的应用系统, 它允许用户和开发者对其进行扩充和修改, 能最大限度地满足用户的特殊要求。用VB进行Auto CAD的二次开发是基于新的ACTIVEX自动化界面技术。Auto CAD ACTIVEX技术使用户可以通过Auto CAD显示的信息, 用其他应用程序 (如VB) 通过编程从Auto CAD内部或外部来控制和操纵Auto CAD。Auto CAD ACTIVEX技术就是通过AutoCAD显示的对象, 编程引用这些对象, 操作这些对象的属性和方法等来达到二次开发的目的。

Auto CAD对象根据它们的不同功能, 具有一定的层次和隶属关系。最上面一层是Auto CAD应用程序对象 (Application) , 其下有一个对象和3个集合对象, 在这些下级对象中各自有它们的下级对象, 可以通过应用程序对象的属性或方法逐级向下访问。

Auto CAD对象模型树的层次见图11。

3 Auto CAD的对象模型

Auto CAD应用程序支持自动化, 其他应用程序可以通过其开放对象对其进行操作。对象本身包含自己的方法和属性。通过对象的方法和属性可以实现对象的操作及状态信息的收集或改变。

1) Auto CAD的Application对象。

Application对象是应用程序对象。通过该对象, 可访问其他的对象, 或指派对象的属性和方法。

应用程序对象也提供通过Documents集合链接到Auto CAD图形、通过Menu Bar和Menu Groups集合链接到Auto CAD菜单和工具栏, 还有通过称为VBE属性链接到VBA IDE。应用程序对象也是Active X界面的全局对象。

2) Auto CAD的Preferences对象。

通过它可以改变或获取Auto CAD的设置。

3) Auto CAD的Document对象。

它是Auto CAD图形文件对象, 它代表当前激活的DWG文件。Document对象下面有模型空间和图纸空间对象及块、层、出图、选择集、视图、功能等一系列对象, 其含义与Auto CAD中相似。Model Space是当前图形文件中图形实体, 每个实体即是一个对象, 可通过属性和方法改变实体或生成新实体。对非图形实体的访问则通过访问Document对象下面的相应的集合类型的子对象。集合类型的对象可以使用VB中所有的集合操作方法。Plot对象提供了访问Plot对话框中各选项的桥梁, 使程序具有用不同方式控制Auto CAD出图的能力。

3.1 自定义坐标系统

绘制纵横断面图的一个很关键的问题就是绘制好坐标系统, 根据用户的不同需要, 需要把数据展绘在不同的坐标系统下以实现不一样的效果。绘制坐标系统时需要考虑到Auto CAD默认的世界坐标系统与数据所要展绘坐标系统的不一致, 还需要考虑为了数据展绘时比较美观、醒目, 应该把坐标点展在离坐标原点一定距离的地方。这时就需要考虑到起始坐标值和坐标间距。绘制坐标系统时主要用到几个方法:ADDLINE (参数为两个端点的坐标) , ADDTEXT (参数分别为文本内容, 文本的高度, 文本的插入点坐标) 。

3.2 中线点数据处理

根据用户的不同需要, 中线点数据需要进行各种处理, 主要是要把数据进行坐标转换, 包括坐标平移、坐标缩放、坐标旋转等。本程序中碰到了坐标平移、坐标缩放。坐标平移主要考虑到自定义坐标系统与Auto CAD的世界坐标系统的原点不一致, 以及程序设计时为了美观醒目把数据全部展绘到离坐标原点一定距离的地方。坐标缩放主要是考虑到用户自定义坐标系统的刻度单位与Auto CAD的世界坐标系统的刻度单位的不一致, 需要把原始数据进行一定比例的缩放, 最后连接各点, 形成纵断面图。

3.3 横断面点数据处理

根据横断面点数据展绘的特殊性以及用户的不同需求, 横坐标数据应该进行数据处理, 包括坐标平移、坐标缩放。横断面点数据的展绘比较复杂, 应该对数据进行排序 (本程序采用冒泡法进行由小到大排序) , 并且计算出各个横断面点与中线点的距离 (应该考虑到符号问题) , 根据距离展绘横断面点, 并把各个点连接起来, 形成横断面图。

4 结语

本程序在编制过程中一直以尽可能自动地实现纵横断面图绘制为目标, 纵横断面图是路线工程测量内业工作中非常重要的过程。本程序是利用VB6.0调用Auto CAD实现纵横断面图的自动绘制, 在实现过程中做到尽可能的自动化, 实现了路线工程测量的现代化, 免去了许多用户输入, 真正实现了内业自动化。

参考文献

[1]卢书超.基于VB.NET的组件化渠道纵断面系统开发[J].中国农村水利水电, 2009 (3) :94-96.

[2]王光泽, 黄开鑫.基于AutoCAD平台的纵横断面程序设计[J].科技广场, 2013 (5) :116-120.

[3]李兰友, 王春娴, 郑志荣.Visual Basic.NET程序设计教程[M].北京:清华大学出版社, 2005.

谈职业中专VB程序设计教学 篇10

【关键词】VB程序设计;学习兴趣;实用;中职教学

近年来,职业中专学校计算机专业的VB教学是学习计算机软件知识的入门语言,学习并掌握好VB的程序设计方法及一些常用算法,对培养学生的程序设计能力,对职业学校的学生将来学习后续软件课程来说有很大的帮助作用,同时也为学习其它语言奠定良好的基础。那么,如何使学生能更好地掌握好VB语言,达到解决一定问题能力,并得以提高,是我们计算机职业教育工作中必须面对的问题,本文就针对上述问题谈谈自已的看法。

一、以实践教学为主,激发学生的学习兴趣

VB是一门实践性很强的课程,如果只纸上谈兵,不上机练习,是不可能真正掌握VB 程序开发的。就如学习拉丁舞一样,光看台上舞者的舞姿,或者记住动作的名称,却从不站上舞台,那永远也做不了拉丁舞者。在VB语言的教学过程中的实践教学我十分注意实施一下两个阶段:

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

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

二、重视算法设计,教会学生用算法描述实际问题的本领

在教学中经常存在这样一种现象:很多学生对语法、结构等知识掌握得很好,但一碰到实际问题就束手无策,不知道如何用学到的知识解决问题。其实这是算法能力欠缺的一种表现。教师经常注重于分析每条语句的含义,却忽略了算法描述过程的展现,造成学生知其然不知其所以然。“授之以鱼不如授之以渔”,如果学生掌握了良好的算法设计能力,也就掌握了钓鱼的本领,无论遇到什么问题都可以很好的解决。那么在教学中可以通过以3种方法培养学生的算法设计能力:

1.详细讲授常用的算法。算法有很多种,我们中职学生只要掌握常用的就可以满足编写模块的需要。而与数据结构、软件工程相关联的算法则不做要求。常用的算法有:累加、累乘、最大值、递推、穷举、字符串处理等等。教师要从基本的算法讲起,仔细讲授每个算法的应用,使学生达到驾轻就熟的程度,以便学生运用这些算法来设计解决常用的或较为复杂的实际问题,并力争做到快捷、有效,从而提高程序设计的质量。

2.教师带领学生多阅读程序,分析过程,吸取他人的经验和成熟的算法,而不是在黑暗中独自摸索,费时费力。可以使学生少走弯路或不走弯路。

3.鼓励学生多想多问。在程序设计中,几乎没有一个唯一的模式,可以说是条条大路通罗马,重要的是要掌握其原理,弄清算法,才可以写出自己的程序来。通过多想多问,对自己的算法进行合理的改进,提高算法的高效性与实用性。

三、采用小组协作学习的学习模式

一堂课,学生能否完成一个个具体的任务,课堂组织是关键。我的做法是班级授课与分组协作学习相结合,一般以4人为一个小组,对学生进行异质分组,每组选出一位组长。组长必须具备较强的任务开发能力,完成任务后应激励组内其他成员的学习,帮助他们解决困难,完成任务。组长在帮助同组同学的同时巩固了自己的知识,并且可以接触到更多的问题,使学习更加的深入;而组内其他同学同时可以享受到一对一的实践指导,兴趣浓厚,学习更专心,进步更快。教学实践中我们发现,调整不能太频繁,否则会比较纷乱,不利于小组的团结协作精神的形成。小组协作学习的教学评价要以评价小组位主,评价个人为辅,小组只是协作学习的共同体,基本任务还是要求到个人,教学中要十分注意避免小组协作学习中弱势学生形成依赖心理。小组协作也有一个发展的过程,教师要把握好这一规律,即随着协作学习的开展,学生之间配合会更默契、对协作学习这一形式更加适应,每个学生会积极扮演自己的角色。

四、培养学生良好的逻辑、抽象思维能力

在学习编程的过程中,时刻不忘引导同学们养成运用动态思维判断程序是否正确的习惯,这种习惯的养成,对培养学生的逻辑思维能力和抽象思维能力有非常重要的作用。为了实现这一目的,在程序设计教学中可以有意识的在以下几个方面给予较多的关注:(1)对于一些比较简单的程序要求同学们直接写出结果;(2)对于有循环或判断结构的程序,要求同学们根据条件一步步向前走,把循环过程写下来;(3)故意给出一些错误的程序,给同学们设计一些陷阱,让同学们自己去发现;(4)让同学们把书本中程序编写错了的地方改正过来。

五、 根据就业需要,改变考评方式

1.二级考试:组织学生参加每年举行的国家计算机等级考试,争取获得二级证书,这样就业就多了块敲门砖。而且在模拟训练的过程中,有的放矢,可以很快地提高计算机操作水平。

2.期末考试:改变过去一题一分制的形式,给学生分配不同的研究课题,完全模拟一个完整的工作过程。例如:模拟设计ATM提款机的界面设计及相关操作。采用小组的形式,从确定任务、社会调查、资料检索、设计算法、编制程序、上机调试运行、负责向教师答辩等一系列步骤强化学生利用VB程序解决实际问题,改变高分低能的状况。

教无定法,只要教学得法。教师在教学过程中,只要围绕Visual Basic程序设计教学的主要目标,即让学生了解编程的基本思想,培养分析问题、解决问题的基本能力。并在保证学生具有学习兴趣和学习积极性的前提下,按照学生的认知规律组织教学,结合适合具体学生的学习方法,各种不同的教学方法都可以在我们的教学过程中获得收获。

【参考文献】

[1] 杨延广; 对高职程序设计课教学方法的研究与探讨 [J];高教论坛

[2] 余淑君;谈VB语言课程的教学方法 [J];机械职业教育; 2004年11期; 43-44

[3] 李勇平《中文Visual Basic6.0案例教程》北京希望电子出版社

[4] 王栋《Visual Basic程序设计实用教程》(第3版).北京:清华大学出版社 2007

上一篇:工资收入差距下一篇:专业培养目标与能力