(共22张PPT)
就像是一场梦,
醒了还有97天还是很感动
…….
泛黄的校服,凌乱的头发
别人的高考还有充值一次的机会
你们尽情吃瓜看戏,不懂时间的流逝
放下手中的游戏,来看看直播的小应
一起来开一场学习的party
小应喊你来学习!
00 回顾
事件处理过程
每一个事件触发的一段程序叫事件处理过程
Sub 对象_事件(参数表)
语句块
End Sub
Private Sub Form_Load()
Msgbox(“欢迎使用”)
End Sub
Private Sub Command1_Click()
Text1.Text=“123”
Text2.Text=“321”
End Sub
每一段事件处理过程都是一个小小的功能模块,各个过程组合协作,共同完成程序实现
00 回顾
自定义函数
例:
Function jdz(x as integer)As integer
If x>=0 Then jde jdz=-x
End Function
开始声明函数
自定义函数的名称
输入变量的数据类型
该函数结果的数据类型
声明函数结束
语句块
注意:
①在语句块中,一定要用形如“函数名=表达式”的语句,其作用是将语句块的计算结果作为函数返回值,送到函数的调用点上。
②采用了自定义函数的程序,其程序执行次序是先执行主程序,若主程序调用了自定义函数,再执行被调用的自定义函数。
00 回顾
自定义函数
Function 函数名(参数表)As 类型名
语句块
End Function
例:
Function jdz(x as integer)As integer
If x>=0 Then jde jdz=-x
End Function
开始声明函数
自定义函数的名称
输入变量的数据类型
该函数结果的数据类型
声明函数结束
语句块
00 作业讲解
4.在VB中,有如下程序:
Function f(x As Integer) As Integer
f =Int(Abs( x)/3)+0.1
End Function
Private Sub Command1_Click()
Dim As Single
y=f(-9)
Text1.Text=Str(y)
End Sub
运行该程序,单击命令按钮Command1,文本框Text1中显示的是( )
A.-9 B.9 C 3.1 D.3
正确率:33.13%
00 作业讲解
5.某VB应用程序的两个事件过程如下:
Private function out(x as Integer, y as Integer, z as Integer) as Integer
Dim temp as integer
If x>y then temp=y else temp=x
If temp>z then temp=z
Out=temp
End function
Private sub command1_Click()
Dim a as integer, b as integer, c as integer
a=1:b=2:c=3
Text1.text=out(a,b,c)
End sub
程序运行时,单击命令按钮command1后,文本框text1中显示的内容是( )
A、0 B、1 C、2 D、3
正确率:55.21%
00 作业讲解
6.两个素数的差为2,称此两个素数为素数对。下列程序是找出100以内的素数对,并成对地在列表框List1中显示结果,其中函数s判断参数m是否为素数。
Function s(m) As Boolean
Dim i As Integer
S=True
For i=2 To Int( Sqr(m))
If ① Then s=False: Exit For
Next i
End Function
Private Sub Command1_Click( )
Dim i As Integer
P1=s(3)
For i= 5 To 100 Step 2
p2 = s(i)
If ② Then List1.Addltem Str(i - 2) + “ ” + Str (i)
p1 = ③
Next i
End Sub
从前有座山,
山上有个庙,
庙里有个老和尚,
老和尚给小和尚讲故事
故事是什么呢?
老和尚讲故事
从前有座山,
山上有个庙,
庙里有个老和尚,
老和尚给小和尚讲故事
故事是什么呢?
从前有座山,
山上有个庙,
庙里有个老和尚,
老和尚给小和尚讲故事
故事是什么呢?
递归算法
昌化中学 应彤鑫
01 递归算法
要求计算n的阶乘f(n)=n*(n-1)*(n-2)*…*1,借助自定义函数尝试完成代码。
思考
01 递归算法
要求计算n的阶乘f(n)=n*(n-1)*(n-2)*…*1,借助自定义函数尝试完成代码。
思考
解:
∵f(n)=n*(n-1)*(n-2)*…*1
∵f(n-1)=(n-1)*(n-2)*…*1
∴f(n)=n*f(n-1)
同理:f(n-1)=(n-1)*f(n-2)
依次类推:f(2)=2*f(1)
而f(1)=1
递归
01 递归算法
递归算法是程序设计中的常用方法,其基本思想是将一个复杂问题逐步化解为规模较小的简单问题的算法。是一种以大化小,以小化了的算法模式。
例如:求5的阶乘f(5)
递归的展开:
f(5)=5*f(4)
f(4)=4*f(3)
f(3)=3*f(2)
f(2)=2*f(1)
f(1)=1
递归的返回:
f(1)=1
f(2)=2*f(1)
f(3)=3*f(2)
f(4)=4*f(3)
f(5)=5*f(4)
01 递归算法
计算n的阶乘的递归算法程序实现:
①当n=1时
f(1)=1
②当n>1时
f(n)=n*f(n-1)
如果自定义一个函数f来计算n个数的阶乘,如何实现?
01 递归算法
计算n的阶乘的递归算法程序实现:
Function f(n as single) as single
If n<=1 Then
f=1
Else
f=n*f(n-1)
End If
End Function
观察自定义函数f的运行过程,尤其要注意递归算法中,自定义函数是如何调用的
从前有座山,
山上有个庙,
庙里有个老和尚,
老和尚给小和尚讲故事
故事是什么呢?
老和尚讲故事
从前有座山,
山上有个庙,
庙里有个老和尚,
老和尚给小和尚讲故事
故事是什么呢?
从前有座山,
山上有个庙,
庙里有个老和尚,
老和尚给小和尚讲故事
故事是什么呢?
思考:这算不算是递归?为什么?
02 课堂练习
1、某VB程序使用了递归函数,代码如下:
Private Sub Command1_Click()
Text1.Text = f(3)
End Sub
Function f(x As Integer) As String
If x = 1 Then f = 1 Else f = f(x - 1) + 2
End Function
运行程序并点击按钮Command1后,文本框Text1中显示的内容是( )
A.1 B.3 C.5 D.7
02 课堂练习
2、运行下面程序,则程序画线处正确的语句是( )
A、fx(x) B、t=fx(x) C、t=fx(y) D、t=fx(x,y)
Private Sub command1_click()
Dim x as integer,t as long
x=val(text1.text)
________________
Text2.text=str(t)
End sub
Function fx(y as integer) as long
If y=0 then
fx=0
Else
fx=int(y/2)*10+ y mod 2
End if
若在文本框text1中输入11,则文本框text2中显示_______________
02 课堂练习
1、用递归算法设计一个自定义函数s用来计算12+22+32+…+n2
2、用递归算法设计一个自定义函数s用来计算
-1/2+1/4-1/6+1/8+…+(-1)n*1/(2n)
02 课堂练习
答案:
Function s(x as single) as single
If x<=1 Then
s=1
Else
s=x^2+s(x-1)
End If
End Function
1、用递归算法设计一个自定义函数s用来计算12+22+32+…+n2
02 课堂练习
2、用递归算法设计一个自定义函数s用来计算
-1/2+1/4-1/6+1/8+…+(-1)n*1/(2n)
答案:
Function s(n as single) as single
If n<=1 Then
s=-1/2
Else
s=(-1)^n*1/(2*n)+s(n-1)
End If
End Function
下 课 !