vb解析算法教学设计(精选9篇)
vb解析算法教学设计 第1篇
VB程序连乘算法的教学设计
摘 要:该文主要对程序设计课程中的连乘算法进行教学设计,结合实例介绍了连乘算法的关键点,对算法中经常会遇到的内存溢出问题进行解析,针对连乘算法的通用表达式进行了优化,使程序更易理解,达到加深理解,优化教学效果。
关键词:程序设计 算法 连乘算法 溢出
中图分类号:G64 文献标识码:A 文章编号:1672-3791(2015)12(a)-0220-02
在程序设计课程中,算法是课程的重点,同时也是难点,如何将算法原理向学生讲解透彻并可以让其轻松接受,是在教学过程中需要思考的一个问题。
在计算机中,算法(Algorithm)是对特定问题求解步骤的一种描述,它是指令序列的集合。程序设计就是设计算法、编写代码、调试运行的过程。显而易见,算法是程序设计的基础,程序设计是算法的具体实现。在程序设计课程的教学设计过程中,常用算法一般包括求最大/最小值、累加/连乘、穷举法、递推法等,该文将主要针对连乘算法进行分析。连乘算法
在程序基础教学中,为了提高教学效果,针对刚入门的程序设计初学者,教师们一般采用任务驱动法[1]进行算法的分析,引导学生理解和掌握该算法的核心思想,进而再用程序的方式来描述与验证该算法。例如:
以上是一个典型的连乘算法,该算法描述的关键点可归纳如下:
(1)每一项和每次连乘之积是变化量。
(2)因此,需要两个变量:
①用T表示每一项的值:T=T+1。
②用S表示连乘之积:S=S*T。
(3)循环终止条件: 循环次数>n。
(4)初始化:S=1。内存溢出问题
在讲解程序算法时,大多数程序设计教程都很少提及赋值或计算中的“溢出”问题,然而在学生的编程操作中,“溢出”却是经常会遇到的一个问题[2],这些问题常常会让学生觉得困惑,查找原因时却无从下手,导致学生出现畏难情绪。因此,教师有必要在授课过程中,对程序在内存中的存储方式进行初步讲解,让学生可以了解程序的运行机制,加深理解。
软件在运行过程中,如果程序调用的数据文件过大,或程序设计中存在着死循环等bug,软件写入内存中的数据量超过了系统分配给该软件的内存空间大小,则会发生内存空间装不下而溢出的现象,这种现象就叫内存溢出。在求阶乘的算法中,由于阶乘的结果累积速度较快较大,容易发生数据溢出。
让学生进行程序的调试与运行,当n=10和=50时运行结果如图1所示,但当n=100时,却弹出如图2所示的警告信息。
分析导致“溢出”错误的原因:
当程序运行发生“溢出”错误时,通过调试跟踪,在T=(2* i)^ 2/((2*i-1)*(2*i+1))语句处,把光标移至i变量上,可以发现溢出时i的值为91;当i=91时,表达式((2*i-1)*(2*i+1))=,该表达式的值为33123。程序将结果值S设置为double类型,当i=91时,结果为33123,这个值按道理应在double类型的数值范围内,但程序仍然发生了溢出错误,问题在哪里呢?
实际上,产生这个溢出问题的原因是由于VB本身的内存分配机制造成的,VB在进行计算过程中,它总是分配一个最省内存的临时内存空间去存储这些中间计算结果数值,这个最省的内存空间容量根据表达式中数据类型决定,如上述相乘的两个表达式(2*i-1)和(2*i+1),他们当中的变量i是整型,因此,VB也将使用一个类型为整型的临时变量来存储两个表达式的乘积。所以,当i=91时,得到乘积结果33 123,此时即使是乘积结果变量S设置为double类型,但乘积结果(33 123)已超过了声明为整型的临时变量空间的极限(-32 768~+32 767),所以仍然会发生溢出错误。
根据上面的原因分析,可以从以下几方面进行修正:
(1)将变量 i 定义为长整型或实数型或变体型。
(2)将错误语句中的变量 i或常量(1或2)其一操作数利用转换函数Clng(i)或Clng(1),以求足以容纳计算结果。
(3)避免大数相乘,可将错误语句改为T=(2*i)^ 2/(2*i-1)/(2*i+1)。
(4)连乘算法的改进。
同一问题可用不同算法解决,而一个算法的质量优劣将影响到算法乃至程序的效率。虽然上述方法解决了“溢出”问题,但是表达式T=(2*i)^2/(2*i-1)*(2*i+1)显得很笨重,表达式明显复杂。能否有办法可以降低复杂度,简化表达式以求程序优化呢?
可以把通项表达式T=(2*i)^2/(2*i-1)*(2*i+1)中的分子式分解开来,把问题理解为简单表达式T=A/B(其中A=(2*i)^2和B=(2*i-1)*(2*i+1),如此一来问题就变得较为简单且易于解决。因此,求∏的近似值的VB程序代码优化实现如下:
在此例中,关键点在于如何将复杂的通项表达式分解为简单表达式,进而实现连乘算法的优化。因此,如何构造通项表达式尤为关键,必须注意2点。
(1)通项表达式T=B/A中的A或B均可为常量或变量表达式,A和B可以继续分解;①若A=1,则T=B;②若B=1,则T=1/A;
(2)必须精选变量A与B的数据类型,避免出现“溢出”。结语
该文对程序设计课程中关于连乘算法的问题进行了初步探讨,指出程序设计初学者中学习过程中经常会遇到的“溢出”问题,提出修正方法,并对连乘算法进行改进优化,加深理解,强化教学效果。
参考文献
[1] 杨晨霞,涂风涛.任务驱动教学法在Visual Basic程序设计教学中的应用[J].职教论坛,2012(18):79-81.[2] 贾颖.“VB 程序设计”课程教学中的变量类型使用问题研究[J].Computer Education,2008(20):138-139.
vb解析算法教学设计 第2篇
1、打开“考生文件夹781”中的文件“test4.vbp”,完善Command1_Click事件代码并保存。
实现功能:回文字符串是指一个字符串从左往右读与从右往左读是一样的,如“ABCBA”,“123321”等等。输入一个字符串,若是回文字符串,则输出“Yes”,否则输出“No”。使用文本框Text1输入字符串,使用文本框Text2输出结果。
Private Sub Command1_Click()Dim s As String Dim ok As String Dim i As Integer s = Text1.Text ok = “Yes” For i = 1 To ①
If Mid(s, i, 1)<> ② Then ok = “No” Next i ③ End Sub ①len(s)2 ②Mid(s, len(s)+1-i, 1)③text2.text=ok
2、打开文件“考生文件夹606工程1.vbp”,完善Command1_Click事件代码并保存。
实现功能:当单击“计算1+2+3+…+100”按钮后,文本框Text1显示1+2+3+…+100的值。
Private Sub Command1_Click()Dim s As Integer Dim i As Integer s = ①
For i = 1 To ② s = ③ Next i Text1.Text = Str(④)End Sub ①0 ②100 ③s+i ④s
3、打开“考生文件夹779test2.vbp”,完善Command1_Click事件代码并保存。
实现功能:输入一个正整数,计算并输出它的各位数字之和。如输入123,则输出6。使用文本框Text1输入正整数,使用文本框Text2输出计算结果。
Private Sub Command1_Click()Dim x As Integer Dim s As Integer x = Val(Text1.Text)① Do s = s + ② x = x 10 Loop Until x = 0 ③ End Sub ①s=0 ②x mod 10 ③text2.text=str(s)
4、打开文件“考生文件夹607工程1.vbp”,完善Command1_Click事件代码并保存。
实现功能:当单击“显示”按钮后,随机产生10个属于区间[0,100)的自然数,并保存于数组a中,然后在窗体上显示这10个数及其平均值。(注:学生运算结果有可能跟样图中数值不一致)
Private Sub Command1_Click()Dim a(9)As Integer Dim s As Single Dim i As Integer Me.Cls s = 0 Randomize For i = 0 To ① a(i)= Int(Rnd * 100)Print a(i)Next i For i = 0 To 9 s = ②
③
Print “这10个自然数的平均值=”;s / 10 End Sub ①9
②s+a(i)③next i
5、打开文件“考生文件夹609工程1.vbp”,完善Form_Click事件代码并保存。
实现功能:单击窗体时在窗体上打印下面所示的图案。
**** *** ** *
Private Sub Form_Click()Dim i As Integer Dim j As Integer For i = ① To 1 Step-1 For j = 1 To i ② Next j Print ③ End Sub ①4
②print “*”;③next i
6、打开文件“考生文件夹610工程1.vbp”,完善Command1_Click事件代码并保存。
实现功能:当单击“显示”按钮后,在窗体上显示下面的图形:
@ @@ @@@ @@@@ @@@@@ @@@@@@
Private Sub Command1_Click()Dim i As Integer Dim j As Integer For i = 1 To 6 For j = 1 To ① Print ② Next ③ Print Next i End Sub ①i
vb解析算法教学设计 第3篇
VB程序设计教学中,算法是重点,更是难点,所谓算法是指计算机解题的基本思想、方法和步骤,也是程序设计的关键。算法之所以觉得难是由于算法非常抽象,如果用传统的手段进行讲解,很难达到理想效果,如果用板书演示,因为数字是动态变化,板书会显得杂乱无章,不易理解。
要将抽象的问题形象化,常用的方法是用多媒体软件来演示,在比较几个多媒体软件后,决定采用Flash软件进行算法的动态演示。Flash具有较强的绘画功能,丰富的动画效果,灵活方便的交互性,是一种很理想的课件制作软件,能方便地实现算法原理的演示。
1 设计目标
Vb程序设计中常用的算法有求最大,最小值,数的查找,数的插入,数的删除,选择法排序,冒泡法排序,数制转换等。通过制作Flash演示课件,使抽象的算法更容易接受,帮助学生更好的理解算法,从而激发学习兴趣,也减轻教师负担,提高教学效率。下面以冒泡法排序为例进行说明。
2 算法演示动画制作
2.1 冒泡算法简介
冒泡法是常用的一种排序方法,这种方法的基本思想是,将待排序的元素看作一串“气泡”,较小的元素比较轻,从而要往上浮。对于具体数据来说,排序的过程如下:从数据组的第一项开始,每一项(i)都与下一项(i+1)进行比较,如果下一项的值较小,就将这两项的位置交换,从而使值较小的数据项“升”到上面。这种操作反复进行,直到数据组结束,然后再回到开头重复处理。当整个数据组自始至终再也不出现项目交换时,全部的数据排序即告结束。
2.2 总体思路
为了演示方便选取4个数字“8”,“6”,“9”,“3”作为数组N(1 TO 4)的元素,首先比较N(1)与N(2)两个元素,如果N(1)大于N(2),那么交换两个元素的值,否则不交换。N(1),N(2)两个元素的值分别为“8”和“6”,所以N(1)大于N(2),需交换两个元素的值。接下来用相同的方法比较N(2)和N(3),N(3)和N(4)。通过第一趟比较,较小的数移到了前面,最大的数9沉在最后,最大的数在下一趟不需要再比较,所以用红底黑框的“9”显示。为了让学生更方便的理解算法原理与程序的关系,在每一趟演示结束后,在窗口右侧显示相关的程序代码。然后用相同方法进行第二趟,第三趟比较,每趟的比较沉下较大的数,n个数需要进行n-1趟比较。
2.3 详细设计过程
2.3.1 建立主场景
首先新建一个Flash文件,舞台大小为500*300像素,背景为蓝色,并在舞台左上侧放置字符N(1),N(2),N(3),N(4),并延续到第38帧。
2.3.2 制作按钮
按钮是一种特殊形式的交互控制元件,它可以用来控制动画的播放,按钮包含四个帧:第1帧是弹起状态,代表指针没有经过按钮时该按钮的状态。第2帧是指针经过状态,代表当指针滑过按钮时,该按钮的状态;第3帧是按下状态,代表单击按钮时,该按钮的外观,第4帧是“点击”状态,定义响应鼠标单击的区域。按钮可以自定义制作,也可以使用Flash现成制作好的按钮素材。
在本动态课件中,从窗口/公用库/按钮拖出四个按钮来控制课件动画的播放,它们分别是:播放,后退,返回,结束按钮,如图1所示。
并且为四个按钮添加脚本代码:
其中播放按钮和后退按钮脚本代码括号中的数字在不同帧中显示不同的数字。
2.3.3 制作元件素材
元件有三种类型,除了按钮元件外,还包括图形元件和影片剪辑元件。一般来说图形元件主要用于静态图像的制作,影片剪辑元件用于制作可重用的动画片段,该动画片段能独立于主动画播放。元件都可以重复使用,通过元件的使用能提高制作动画效率,减小动画体积。
在课件中,需制作“8”,“6”,“9”,“3”四个元素的图形元件各两个,分别用黄底黑框和红底黑框的圆框起来。在排序完成前用黄底黑框来表示,排序完成后用红底黑框表示。同时制作“交换”图形元件,形状为白色虚线弧形双箭头。
另外还需制作“比较”影片剪辑元件,为了吸引学生的注意力,该元件制作成红色圆环,用来框住需比较的数据,在第1,3,5,7,9设置成关键帧,2,4,6,8设置成空白帧,使圆环一帧显示,一帧不显示,形成闪烁效果,如图2所示。
2.3.4 在主场景中添加图层和图层文件夹
1)首先创建图层文件夹,命名为“第一趟”,“第一趟”相关图层创建在该图层文件夹下面。
2)创建图层“一数字”,在该图层中放置第一趟第一遍需要排序的数字,从库中拖出已创建好黄底黑框的4个数字的图形元件,顺序为“8”,“6”,“9”,“3”,作为冒泡排序原始数字,并在38帧插入普通帧,把这四个数字延续到38帧。
3)创建图层“一比较1”,进行第一趟第一遍的第1次比较,把“比较”影片剪辑元件拖放两次至舞台上,并放置在第1帧,同时框住“8”,“6”两个需要比较的数字,因为这个元件需要播放按钮来控制,只有比较后才能移到下一帧,在播放按钮点击前,必须停在原来的帧位置,所以在该帧上添加脚本代码“stop();”。
4)创建图层“一交换”,进行第一趟第一遍交换,把“交换”图形元件拖到舞台上,放置在第二帧,并在第5帧插入关键帧,由于需要播放按钮控制才能移到下一帧,所以在第5帧添加脚本代码“stop();”。
5)创建图层“二数字”,在该图层中放置第一趟第二遍需要排序的数字,由于通过第一遍比较,前两个数字已经交换了位置,所以第二行数字顺序改为“6”,“8”,“9”,“3”。
6)创建图层“二比较1”,进行第二遍第1次比较,由于“8”<“9”,不需要交换元件,所以在该图层上再创建图层“二比较2”,进行第二遍第2次比较,来比较“9”和“3”两个数字。
7)创建图层“二交换”,进行第一趟第二遍交换,方法同上。
8)创建图层“三数字”,在该图层中放置第一趟第三遍需要排序的数字,由于数字已经比较完毕,所以不需要进行比较和排序了。
9)创建图层“变色”,在第三行添加第1趟比较后的数字,并把放在最右侧的数字,即最大值显示为红底黑框的数字,表示这个数字下次不需要排序。
10)创建图层”程序一”,把第1趟比较后相关程序段放在右侧。
11)第二趟,第三趟创建方法同第一趟,在这里不一一叙述,制作完成的效果图如图3所示。
3 算法演示动画插入PPT课件中
利用PPT与Flash结合可以制作完美课件,在VB课件制作中,文字,图片和简单动画的演示使用PPT比较方便,相对复杂的动画可以使用Flash制作,然后插入到PPT中。
首先需要导出Flash动画,在Flash窗口中,使用文件/导出/导出影片,导出格式使用swf格式。然后打PowePoint窗口,插入Flash动画,插入方法有多种,这里利用Active X控件插入动画,选择“视图”->“工具栏”->“控件工具箱”,点击“其它工具图标”,从下拉列表中选择“ShockWave Flash Object”选项。鼠标变成“+”形状,将其拖动即出现Flash控件图形。单击“控件工具箱”上的“属性”按钮,打开属性对话框。选择“自定义”,单击“浏览”按钮,在弹出的对话框中的“Movie URL”中输入.swf文件路径及名称,并调整“play”,“quality”,“loop”等其它属性。
4 结束语
VB程序常用的一整套算法动画目前已全部开发完毕,并应用在VB程序设计教学中,很多学生反映,通过观看该动画,觉得算法不像传说中那样高深莫测,对算法的理解变得容易多了,同时减小了教师教学的难度,大大提高教学效率和质量。
参考文献
[1]李向阳.基于flash的《数据结构》算法动态演示课件的设计[J].科技信息,2009(1):492-494.
[2]牟向宇.Flash项目案例教程[M].北京:中国水利水电出版社,2010.
[3]关晓娟,高军锋.Flash CS3专家案例课堂[M].北京:北京希望电子出版社,2008.
[4]沈洪,施明利,朱军.VB程序设计[M].北京:清华大学出版社,2010.
[5]马巧梅.数据结构课件中算法动态演示软件的开发和应用[J].科技情报开发与经济,2007,17(1):240-241.
[6]许文杰.Flash在动态演示数据结构算法中的应用[J].科技信息,2010(3):128-129.
[7]张晓彦,张晓明.基于Flash动画的信息隐藏算法[J].计算机工程,2010,36(1):181-183.
[8]陈印,邓飞.Hanoi塔演示动画在Flash中的实现[J].四川职业技术学院学报,2005,15(1):113-115.
VB算法设计教学对策探析 第4篇
关键词 程序设计 算法 情境 语法格式
中图分类号:G633.67 文献标识码:A
算法与程序设计是高中信息技术选修课程之一,传统教学模式是从生活算法入手,把程序作为算法的实现手段,再从三种基本结构入手,逐步揭示出程序结构与设计方法。但在这种教学过程中,我们遇到了很多问题,产生了许多困惑:
(1)算法与程序设计难教、难学是困扰师生的突出问题。对于学生而言,一方面该部分教学内容具有高度的抽象性和严密的逻辑性,容易使学生产生畏难和恐惧心理;另一方面由于平时学生对其了解甚少,会使其对编制程序产生神秘感。
(2)学生对课程的重视程度不够。因为信息技术这门课不参加中考,所以在初中开设状况不是很理想。另外,大多数学生不需要参加这门课的高考,这就造成了学生对信息技术的学习重视程度减弱,在课堂上的听讲状态、完成练习情况都不是很好。
(3)教材章节内容比较多。按教参学时进度安排,完成一课时规定内容,学生接受很困难,只能是蜻蜓点水;若要根据学生的接受程度授课,就不能完成每课时的规定内容。
(4)教师普遍认为算法与程序设计的教学适合在教室上课,应尽量少安排上机。因为学生一到机房会想上网或玩游戏,注意力容易分散。可如果不让学生体验调试程序的过程,那么算法的学习就只能是纸上谈兵,学生对算法和程序知识的理解将是肤浅的。
如何解决这些问题?如何在有限时间内合理运用教材,采取恰当的教学方法,激发学生的学习兴趣,使学生对程序设计知识由“要我学”转变为“我要学”,使学生运用信息技术的能力有所提高,有所进步?这是我们作为教师必须要思考和研究的问题。
有一点大家都明白,如果把程序设计学习的目标仅仅定位在获得高考的加分或取得等级考试的好成绩无疑是非常狭隘的。能够在竞赛中脱颖而出的佼佼者毕竟是少数。高中学生学习程序设计当然不是为了培养他们今后个个成为程序员,对于大部分将来并不会从事计算机专业的同学来讲,真正能够让他们受益的是在程序设计学习中促进他们能力的发展。
程序设计专业知识的学习相对一些计算机应用软件的学习要枯燥很多,尤其需要学生思维主动的、积极的投入。在教学过程中我发现很多学生在这一阶段表现得兴趣不大,有了疑问也不愿意主动向老师求解。对于这样的情况,仅仅将原因归咎于学习内容枯燥或学生的“懒”,并不能真正解决问题。通过与学生的交谈,笔者发现真正的原因在于学生并不清楚学习程序设计的用处在哪里?因此在程序设计知识的讲授阶段,笔者给出一些学生容易理解、切合实际的问题,然后围绕这些问题开展知识点的教学。这种学习方法具有明确的学习指向性,容易引发学生的学习兴趣,进而产生学习的动力。在求解问题的过程中,学生会提出各种各样的新观点、新想法。
1创设情境 培养学生兴趣
算法引入新课程,确实在于它是与时俱进中不可缺少的数学知识,同时,它也是培养学生逻辑思维能力的重要载体。而能力的培养是“教”不会的,需要给学生创设情境,通过亲历问题解决来实现,教师的作用就是在“问题链”的设计中,借题创景,提供学生亲历的机会。在介绍算法的概念的时候我就采用了情境设计的教学方案。
设计意图:在这个阶段,学生对算法有了进一步的了解。在情境的帮助下,学生可以自己给出算法的基本概念,并且知道了在设计算法的过程中,要满足算法的三点基本要求。否则,所设计出来的算法就是一个不合格的算法,或者根本就不能完成最初设定的目标。经过这样的处理,学生轻轻松松就理解了算法的概念,课堂取得了较好的效果。
2问题入手,促进学生面对问题
由特殊问题入手,可以帮助学生回忆所学的“二分法”,在此基础上,教师可以先不给精度要求,组织学生试用自然语言写出算法,在学生体验到,二分法操作可以使结果存在的区间越来越小时,教师追问:若不加控制会如何?此时,学生容易理解,为什么需要引入控制量?学生也会有指向地学习如何进行控制?
这样设计的学生活动,可以使学生结合问题运用逻辑思维,可以使学生在尝试中学习用自然语言描述算法,更可以使学生亲历体验产生问题,从而带着需要解决的问题接受新知。在这样的设计下,解决问题的过程就是解决问题的算法的形成过程,暴露这一过程,体验这一过程,能促进学生面对问题,有方法、有途径去得出算法。
3完善例题,同类比较
4“任务”为驱动,给予学生及时反馈
在算法的教学过程中,把教学内容巧妙地隐含在每一个任务中,同时以Visual Basic应用软件为载体,让学生能够动手实践自己地算法,在各个任务之间,设计地时候注意一定地循序渐进梯度,也要考虑到学生的个体差异性。对于学生的不同层次,给他们布置的任务也有所不同,将若干个有层次之分的任务布置,让学生根据自己的能力去选择。学生在解决问题的过程中发现新的问题,通过完成一个个任务来提高自己的能力。学生通过学习活动,能够不断的看到自己的成果时,就会爆发出强烈继续学习的愿望。教师在这过程中,不仅仅是任务的设计者,同时也是引导者和参与者,在学生完成任务的过程中,注意引导学生进行思考,主动的去探索。
对学生完成任务的结果予以及时反馈,学生在了解了学习结果后,可以看到自己的进步,提高学习热情,增加努力程度,同时又能看到自己的不足,激起上进心,争取更好地成绩。笔者在算法教学过程中,要求每一位学生在完成任务后,把自己的程序上传给笔者,在笔者的教师机上,每一位学生都有一个自己的文件夹,通过这种方式,笔者能够及时了解每一位学生的学习情况,并及时反馈,根据学生的需要,给出相应的指导。
5结束语
通过一个学期的算法讲解,对教学方法进行了一个小小的总结和讨论,在实施这些教学方法的时候,问题依然很多,教学方法虽然存在着这样或那样的不足,但在一定程度上提高了教师的业务水平,培养和加强了学生的思考能力、交际能力、取得了比较理想的效果。希望在以后的不断实践下,把缺点和不足弥补上。
参考文献
[1] 陶增乐.高中信息科技[M].上海:华东师范大学出版社,2000.
[2] 忻展红,舒华英.IT项目管理[M].北京:北京邮电大学出版社,2006.
[3] 魏小山.信息技术新课程教学目标的达成策略[J].中小学信息技术教育,2007(02).
VB常用算法总结 第5篇
一、变量值的交换
算法思想:若交换两个变量的值,必须引入第三个新的变量进行传递。以下代码是错误的:
X=12 :Y=34 :X=Y :Y=X 正确的代码是:
X=12 :Y=23 :T=X :X=Y :Y=T
二、判断一个数是否能被另一个数整除
算法思想:可以用整除的定义(余数为0)或X除以Y等于X整除Y等表达式进行判断。条件表达式可以为:X mod Y=0
或
X\ Y=X/Y
或
Int(X/Y)=X/Y 如果以上条件表达式为True,则表示X能被Y整除。
三、累加、阶乘、计数和求平均值
算法思想:使用循环语句,并用一个变量存放累加的中间及最终结果。注: 累加求和时变量初值为0,计算阶乘时变量初值为1。
统计计个数(计数)时可用一个变量作为统计个数的累加变量,每次加1即可。求平均值算法思想是先求和,再除以个数。条件求和(或计数):在循环语句中加入If-End If判断语句。
例题:计算1到10之间所有整数的累加和以及10!。n=10 sum=0
‘累加求和时,变量的初值一定为0 prod=1
‘累乘(连乘)时,变量的初值一定为1 For i=1 To n
sum=sum+i
prod=prod*i Next i Print sum,prod
例题:统计0—100之间能被3整除的数的个数、累加和及其平均值。
s=0
n=0
For i=0 To 100
If i mod 3 =0 Then
s=s+i
n=n+1
End If
Next i
Print n,s,s/n
四、随机数的产生 [a,b]之间的随机整数 Int((b-a+1)*rnd)+a(a,b)随机数(b-a)*rnd +a
五、求若干个数中最大值或最小值
六、常用字符处理函数
Mid函数:从字符串指定位置取指定个字符,格式为Mid(字符,p,n),从第p个字符开始,向后截取n个字符(若n省略则取到最后)。
Left和Right函数:从字符串左边或右边取指定个字符,格式为 Left(字符,n)和Right(字符,n)。Len函数:测试字符串长度。
UCase和LCase函数:UCase将小写字母转换为大写字母;LCase将大写字母转换为小写字母。
Instr([首字符位置 , ] 字符串1, 字符串2 [ , n]):在字符串1中查找字符串2,如果找到,返回字符串2的第一个字符在字符串1中出现的位置。首字符位置是可选的,如果不指定,从字符串起始位置开始查找;如果指明,从指定的位置开始查找。
Asc函数:返回字符串中第一个字符的ASCII码。Chr函数:将一个数值转换为其所对应的字符。
字符的比较规则是按ASCII码顺序比较,规则为 空格<”A”~”Z”<”a”~”z” 小写字母的ASCII比大写字母的ASCII小32。
例题:
1.将所有文本转换为大写(小写)字母
可以直接使用UCase(LCase)函数转换。例如: Text2.Text=UCase(Text1.Text)2.对某个字符串的所有字符逐一处理
算法思想:如果对某个字符串的所有字符逐一处理,即从字符串的第1个字符开始到最后一个字母,每次处理1个字符。可以使用For循环实现。通用代码为:
For i=1 To Len(s)
s1=Mid(s,i,1)……
Next i 3.字符转换
算法思想:通过字符的ASCII码进行处理(使用Asc函数),然后再使用Chr函数将ASCII转换成字符。例题:将文本框Text1中字符按如下规律转换a-b、b-c……z-a,并显示在文本框Text2中。
s = Text1.Text n = Len(s)For i = 1 To n
s1 = Mid(s, i, 1)
If s1 >= “a” And s1 <= “y” Then
s2 = s2 + Chr(Asc(s1)+ 1)
ElseIf s1 = “z” Then
s2 = s2 + “a”
End If Next i Text2.Text = s2 例题:将文本框Text1中的小写字母转换其对应的大写字母,将大写字母转换成小写字母,并显示在文本框Text2中。
Private Sub Command1_Click()s = Text1.Text n = Len(s)m = Asc(“a”)m)
End If
If s1 >= “A” And s1 <= “Z” Then
s2 = s2 + Chr(Asc(s1)+ m)
End If Next i Text2.Text = s2 End Sub 5.统计某字符出现次数
算法思想:对字符串中字符逐一判断,如果是某字符,则统计变量加1。
例题:统计文本框Text1中字符i和j出现的次数(不区分大小写)。
Private Sub Command1_Click()
s = Text1.Text
n = Len(s)
For i = 1 To n
s1 = Mid(s, i, 1)
If UCase(s1)= “I” Then ni = ni + 1
If UCase(s1)= “J” Then nj = nj + 1
Next i
Print ni, nj
End Sub
八、素数
素数定义:只能被1和本身整除的正整数称为素数(或称质数)。例如11就是素数,它只能被1和11整除。算法思想:判别某数n是否是素数的方法有很多,最简单的是从素数的定义来求解。对于n,从i=2,3,…,n-1判别n能够被i整除,只要有一个能整除,n就不是素数,否则n是素数。此种算法比较简单,但速度慢,因此,可以将n被2到(或n/2)间的所有整数除,如果都除不尽,则n就是素数,否则n是非素数。
注:执行For循环时,循环变量等于终值仍进入循环,遇到Next语句,循环变量会自动加上步长,因此如果循环正常完成后,循环变量的值将大于终值。例如:
For i=1 To 4 If …… Then Exit For Next i Print i 如果循环正常结束,则输出结果为5(大于4)。如果循环过程中满足If条件,执行Exit For语句退出循环,则i的值一定小于5。
例题:判断n是否是素数。Private Sub Command2_Click()n = Val(Text1.Text)For j = 2 To n100 * a)/ 10)c = i-Int(i / 10)* 10 If i = a ^ 3 + b ^ 3 + c ^ 3 Then Print i End If Next i End Sub
Private Sub Command1_Click()For n = 100 To 999 s = 0 a = n Do While a <> 0 b = a Mod 10 s = s + b * b * b a = a\ 10 Loop If s = n Then Print n Next n End Sub
十一、斐波那切数列的输出
该数列前两项为1,1从第三项开始,an=an-1+an-2
十二、进制转换 十三、三个数排序
十四、分段函数
十五、图形输出(双重循环)
十六、百鸡百钱问题
十七、迭代法P116页
十八、输入a,b,c,的值,求方程ax2+bx+c=0的解。
注意:对象只考文本框、标签、命令按钮和窗体。
本学期计算机基础及VB程序设计复习指导如下:
1、计算机基础的50道复习题,试卷上占20分,选择15题,填空5题。
2、VB习题集第一到五章控制结构的课后习题及试题解析(其中,控件只考窗体、文本框、标签、命令按钮)试卷上占40分。
vb解析算法教学设计 第6篇
一、KeyPress事件
在窗体上画一个控件(指前面所讲的可以发生KeyPress事件的控件),并双击该控件,进入程序代码窗口后,从“过程”框中选取KeyPress,即可定义KeyPress事件过程。一般格式为:
PrivateSubText1_KeyPress(KeyAsciiAsInteger)
EndSub
二、KeyDown和KeyUp事件
KeyDown和KeyUp事件的参数也有两种形式,其中
IndexAsInteger
只用于控件数组,而
KeyCodeAsInteger,ShiftAsInteger
用于单个控件。
三、鼠标事件
为了实现鼠标操作,VisualBasic提供了3个过程模板:
(一)压下鼠标键事件过程
SubForm_MouseDown(ButtonAsInteger,ShiftAsInteger,xAsSingle,yAsSingle)EndSub
(二)松开鼠标键事件过程
SubForm_MouseUp(ButtonAsInteger,ShiftAsInteger,xAsSingle,yAsSingle)EndSub
(三)移动鼠标光标事件过程
SubForm_MouseMove(ButtonAsInteger,ShiftAsInteger,xAsSingle,yAsSingle)EndSub
四、鼠标光标的形状
(一)MousePointer属性
鼠标光标的形状通过MousePointer属性来设置。该属性可以在属性窗口中设置,也可以在程序代码中设置。
MousePointer的属性是一个整数,可以取0~15。
(二)设置鼠标光标形状
MousePointer属性可以通过代码设置,也可以通过属性窗口设置。
1.在程序代码中设置MousePointer属性
在程序代码中设置MousePointer属性的一般格式为:对象.MousePointer=设置值
2.在属性窗口中设置MousePointer属性
单击属性窗口中的MousePointer属性条,然后单击设置框右端向下的箭头,将下拉显示MousePointer的15个属性值。
3.自定义鼠标光标
如果把MousePointer属性设置为99,则可通过MouseIcon属性定义自己的鼠标光标。有以下两种方法:
(1)如果在属性窗口中定义,可首先选择所需要的对象,再把MousePointer属性设置为“99-Custom”,然后设置MouseIcon属性,把一个图标文件赋给该属性(与设置Picture属性的方法相同)。
(2)如果用程序代码设置,则可先把MousePointer属性设置为99,然后再用LoadPicture函数把一个图标文件赋给MouseIcon属性。
4.鼠标光标形状的使用
在Windows中,鼠标光标的应用有一些约定俗成的规则。为了与Windows环境相适应,在应用程序中应遵守这些规则,主要有:
(1)表示用户当前可用的功能,如“I”形鼠标光标(属性值3)表示插入文本;十字形状(属性值2)表示画线或圆,或者表示选择可视对象以进行复制或存取。
(2)表示程序状态的用户可视线索,如沙漏鼠标(属性值11)表示程序忙,一段时间后将控制权交给用户。
(3)当坐标(X,Y)值为0时,改变鼠标光标形状。
五、拖放
(一)与拖放有关的属性、事件和方法
1.属性
有两个属性与拖放有关,即DragMode和DragIcon
2.事件
与拖放有关的事件是DragDrop和DragOver。
(二)自动拖放
(三)手动拖放
1.全国计算机二级VB考点解析:第一章
2.20全国计算机二级VB考点解析:第三章
3.年全国计算机二级VB考点解析:第四章
4.全国计算机二级VB第十二章考点解析
5.全国计算机二级VB第十四章考点解析
6.全国计算机二级VB第十一章考点解析
7.2014年全国计算机二级VB考点解析:第二章
8.2014年全国计算机二级VB考点解析:第五章
9.全国计算机二级VB第十三章考点解析
vb解析算法教学设计 第7篇
(一)Visual Basic的对象
1.什么是对象
在Visual Basic6.0中,对象分为两类?焕嗍怯上低成杓坪玫模?莆?ざㄒ宥韵螅?梢灾苯邮褂没蚨云浣?胁僮?另一类由用户定义,可以象C++一样建立用户自己的对象。
2.对象属性
属性是一个对象的特性,不同的对象有不同的属性。对象常见的属性有标题(Caption)、名称(Name)、颜色(Color)、字体大小(Fontsize)、是否可见(Visible)等。
3.对象事件
所谓事件(Event),是由Visual Basic预先设置好的、能够被对象识别的动作。
4.对象方法
在传统的程序设计中,过程和函数是编程语言的主要部件。而在面向对象程序设计(OOP)中,引入了称为方法(Method)的特殊过程和函数。方法的操作与过程、函数的操作相同,但方法是特定对象的一部分,正如属性和事件是对象的一部分一样。其调用格式为:对象名称.方法名称
(二)对象属性设置
为了在属性窗口中设置对象的属性,必须先选择要设置属性的对象,然后激活属性窗口。属性不同,设置新属性的方式也不一样。通常有以下3种方式。
1.直接键入新属性值
2.选择输入,即通过下拉列表选择所需要的属性值
3.利用对话框设置属值
二、窗体
(一)窗体的结构与属性
窗体结构与Windows下的窗口十分类似。在程序运行前,即设计阶段,称为窗体;程序运行后也可以称为窗口。窗体与Windows下的窗口不但结构类似,而且特性也差不多。
下面按字母顺序列出窗体的常用属性。这些属性适用于窗体,同时也适用于其他对象。
1.AutoRedraw(自动重画)
2.BackColor(背景颜色)
3.BorderStyle(边框类型)
4.Caption(标题)
5.ControlBox(控制框)
6.Enabled(允许)
7.字形属性设置
8.ForeColor(前景颜色)
9.Height、Width(高、宽)
10.Icon(图标)
11.MaxButton、MinButton(最大、最小化按钮)
12.Name(名称)
13.Picture(图形)
14.Top、Left(顶边、左边位置)
15.Visible(可见性)
16.WindowState(窗口状态)
(二)窗体事件
与窗体有关的事件较多,其中常用的有以下几个:
1.Click(单击)事件
2.DblClick(双击)事件
3.Load(装入)事件
4.Unload(卸载)事件
5.Activate(活动)、Deactivdte(非活动)事件
6.Paint(绘画)事件
三、控件
窗体和控件都是Visual Basic中的对象,控件以图标的形式放在“工具箱”中,每种控件都有与之对应的图标。启动Visual Basic后,工具箱位于窗体的左则。
(一)标准控件(内部控件)
Visual Basic6.0的控件分为以下3类:
1.标准控件(也称内部控件)
2.ActiveX控件
3.可插入对象
(二)控件的命名和控件值
1.控件的命名
在一般情况下,窗体和控件都有默认值,如Form1、Command1、Text1等。在应用程序中使用约定的前缀,可以提高程序的可读性。
2.控件值
为了方便使用,Visual Basic为每个控件规定了一个默认属性,在设置这样的属性时,不必给出属性名,通常把该属性称为控件的值。
四、控件的画法和基本操作
(一)控件的画法
可以通过两种方法在窗体上画一个控件。
(二)控件的基本操作
1.控件的缩放和移动
2.控件的复制和删除
3.通过属性窗口改变对象的位置和大小
vb解析算法教学设计 第8篇
在高级语言中出现的算术表达式,如a+(b-c)d,其运算符一般出现在操作数之间,此为中缀表达式,而编译系统不考虑表达式的优先级别,只是对表达式从左到右进行扫描,当遇到运算符时,就把其前面的两个操作数取出进行操作。为达到上述目的,就要将中缀表达式改成abc-d+样式,操作符均在操作数的后面,此为逆波兰表达式。
在逆波兰表达式中,不再出现括号,运算符放在两个运算对象的后面,运算严格按照从左到右的顺序进行,因而计算一个后缀表达式的值,其算法要比计算一个中缀表达式简单得多。以下以VB为开发平台,用顺序栈的工作原理完成逆波兰表达式的算法设计与实现。
1 确定运算符优先级
为了正确实现中缀向逆波兰表达式转换,必须明确操作符的优先级,如表1所示。
如果公式中还有其他的数学函数参与运算,可以相应定义优先级,实现转换,但必须定义某种规则用一个字母代替函数且严格按照书写规范书写。比如表达式sin(a)+b,在表达式中含有数学运算函数sin(),我们可以用S表示该函数,然后如表2所示设置操作符和函数的优先级即可。
以上表中的#作为操作符栈栈底元素,用于第一个入栈操作符。isp表示操作符或函数在栈内优先级,icp表示操作符和函数在栈外优先级。每个操作符均有栈内和栈外两种优先级,用于决定压栈还是弹栈。
2 算法设计
1)在VB中利用数组实现栈的原理应用。定义两个数组chaarr和operator,定义一个操作符结构体数组op。
chaarr用于存储表达式中所有的操作数变量和操作符,对于公式中含有常数情况本文未作考虑。
操作符栈operator用于存储操作符,根据优先级的大小,实现栈的压栈和弹栈操作。
op用于存储操作符号本身,并赋予操作符在栈内和栈外优先级,用于弹栈和压栈判断。
2)利用函数mid从表达式中分离每个元素,当判断出该元素是操作数变量时直接把该变量存入chaarr中,当分解出的是操作符时,首先定义该操作符的栈内栈外优先级,存入操作符结构体数组op,然后判断该操作符的栈外优先级和operator内栈顶元素的栈内优先级的高低,如果是大于关系则把该操作符压栈operator,如果是小于关系,则把operator栈顶元素弹栈并存入chaarr中,原分离出的操作符继续与operatro内栈顶元素比较优先级,可能要重复进行弹栈、存入chaarr、比较优先级过程,直至该操作符压栈为止。如果括号弹栈,不把它存入chaarr中,因为后缀形式已经准确的表明了公式的先后运算次序关系。
3)利用一个循环,重复执行第2步,直至公式分解完毕,此时chaarr中存储的所有字符实现连接后就是我们需要的后缀表达式。
3 程序实现
根据前面确定的运算符优先级和程序设计思想,可以如下代码实现逆波兰表达式转换为后缀表达式。为了直观的看到转换结果,简单的设计如图1所示界面。
只要在输入公式文本框中输入公式,点击转化按钮就可以转化为逆波兰表达式。
程序实现核心代码如下,只要在转化按钮单击事件中调用该代码块即可,其中涉及到的先期部分条件不再一一列出,代码块中有部分说明。核心代码中对于不同操作符的判断部分已经删除,其编写原理与开始的“*”操作符类似,只要能合理设置操作符优先级即可保证程序的正确运行,不再赘述。
4 结束语
为了处理方便,编译程序常把中缀表达式首先转换成等价的逆波兰表达式。在VB中,可以利用顺序栈的工作原理使用数组实现表达式的中缀形式向逆波兰表达式转化,从而完成数值计算。
参考文献
[1]严蔚敏,吴伟民.数据结构[M].北京:清华大学出版社,2004.
vb解析算法教学设计 第9篇
一、对高中阶段开设程序设计教学的认识
高中阶段开设算法与程序设计教学有其必要性。学生在高中阶段打下基础,有利于他们进入大学的深造和就业以后的继续教育。此外,高考数学中加入了算法模块,也证明了开设算法与程序设计教学的重要性。
二、程序设计教学中学习兴趣的激发
恩格斯说:“兴趣与爱好是最好的老师。”刚开始接触程序时,很多学生感到新奇,这不能说是兴趣,只是一种好奇。随着学习的深入,许多的规则、定义、要求和机械的格式出现,很容易使部分学生产生枯燥无味的感觉。为了把学生的好奇转化为学习兴趣,教师在教学过程中要运用恰当的教学方法,引起学生的有意注意或有意后注意,培养学习兴趣。
1.创设情境,精彩“导入”
例,模拟在元旦晚会上,随机抽取一位班级幸运同学的学号,赠送小礼品。这样,激起了学生们的学习热情。然后,引出教学内容RND( )函数和INT( )函数。
2.让学生成为课堂“主角”
在课堂教学中,还应该让学生进入主体角色,主动地去发现从而成为知识的主动探索者。
可以让这些独特见解的学生充当小教师角色,一边操作一边讲解自己设计的算法。通过示范,在学生之间起到相互促进,相互影响的作用,达到共同进步。
3.让学生体会成功
在教学探究和交流活动过程中学生编写的代码成功调试运行后,便会体验到一种成功感。解决同一个问题可能有多种算法,某些同学解决问题的思路新颖独特,教师要让学生之间进行相互评价,让学生学会赞赏他人,培养学生欣赏他人的意识。教师不光要表扬善于思考、勇于探索、具有创新意识的学生,也要关注并表扬成绩较之前进步的学生。教师要学会运用适当的评价机制,让学生在体会到成功快乐的同时,也能保持学习兴趣持续高涨。
三、程序设计教学中培养学生反思性学习能力
反思性学习,顾名思义就是通过对学习活动过程的反思来进行学习。学生具有反思性学习的意识是反思性学习的前提。让学生明确没有反思便难有自我改错纠偏的道理;明确反思不仅能及时改正错误,还能优化已有认识,提高自身合理性水平。对于学生的成功予以适当表扬与鼓励,还可以达到强化学生反思意识的效果。另外,教师要营造开放、合作、协调、信任的教学氛围,鼓励学生大胆地质疑,给出别出心裁的答案。学生智慧的激活,会反作用于教师和其他学生,使其能在更高层次上积极思维,从而在师生、学生间积极思维的互动中,不断闪耀出智慧的光芒,从而建立一种互动的反思关系。
1.由浅入深,循序渐进
教学过程中,教师不能局限于教材内容系统条块化的安排,要能够做到重新分析教材,增强教学内容的层次性。从而既符合人的认识过程规律,也能使学生在掌握知识的同时掌握运用知识的方法。引导学生的思维层次提高,逐渐深刻,促进学生的进一步反思,诱发他们的创新思维。
2.举一反三,触类旁通
学习过程中,不难发现解决许多问题的算法是相互联系的。如果教师善于整理、归纳,并结合一些典型例题来讲解的话,学生的思路必然拓宽,培养了他们思维的灵活性,使学生学会举一反三,提高学生对知识的应用水平与创新能力。
例如,用VB编程实现S=1+2+3+……+100的和。
Private Sub Form_Click( ) For I=1 To 100 Step 1
Dim I As IntegerS=S+I
Dim S As IntegerNext I
S=0 Print S
End Sub
在该题基础上,如何实现:
①编程求S=1+3+5+……+99的和。
编程求S=2+4+6+……+100的和。
②编程实现S=1*2*3*……*10,即求S=10!。
③编程实现S=1!+2!+3!+……+10!。
综上可见,教师如果认真的对题目进行筛选,并对教学内容进行合理编排组织进行教学,将有效帮助学生学会举一反三、触类旁通。
信息技术老师应以《中小学信息技术课程指导纲要》为指导,“中学信息技术课程要以基础性知识和技能性操作为主,程序设计是更高层次的学习内容”。程序设计教学的目标不是培养“小型的程序员”。教师要培养学生用程序设计的方式进行思考,使学生的学习成为探究性活动,提高学生的创新能力,促进学生信息素养的提高,帮助学生成为适应信息化时代发展的人才。
参考文献:
[1]中华人民共和国教育部.普通高中信息技术课程标准[S].
[2]熊川武.反思性教学[M].上海:华东师大出版社.
[3]陈伟平,金炳尧.高中程序设计教学中培养学生反思性学习能力[J].中国教育信息化,2008(1):33-34.
[4]任建国.程序设计语言的教学方法浅探[J].中国教育信息化,2008(2).