77范文网 - 专业文章范例文档资料分享平台

第06章 模块化程序设计(4)

来源:网络收集 时间:2019-04-21 下载这篇文档 手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:或QQ: 处理(尽可能给您提供完整文档),感谢您的支持与谅解。点击这里给我发消息

Else

MsgBox x & \非回文数\ End If End Sub

例6-12 设计一个数值转换函数,能够将十进制整数转换成16进制以内的任意进制数。 分析:十进制数转换成n进制,常采用的方法是“除n取余,余数倒写”,当n大于9时,需要把大于9的余数转换成字母。为了方便转换,可以将余数0~9、A~F分别放在一个字符串数组中。

转换函数过程名为DecToN有两个参数,一个是待转换的十进制整数,一个是需要转换的进制。转换结果是一个字符串(即函数值为一个字符型),程序代码如下:

Function DecToN(ByVal x%, ByVal n%) As String Dim p() As String, y$, r%

p = Split(\ If n > 16 Then DecToN =\ Exit Function End If y = \ Do

r = x Mod n x = x \\ n y = p(r) & y Loop Until x = 0 DecToN = y End Function

Private Sub Command1_Click() Dim x%, n%, y$

x = InputBox(\请输入待转换的十进制整数!\数值转换\

n = InputBox(\请输入需要的进制,注意不要大于16\数值转换\ y= DecToN(x, n) If y<>\

MsgBox \转换结果:\

Else

MsgBox \对不起!本程序不能转换超过16的进制!\

End if

End Sub

6.5 过程的递归调用

简单地说,递归就是一个过程调用自己本身。VB的过程具有递归调用功能。许多问题都具有递归的特性,用递归调用来解决会非常方便。

例6-13 利用递归调用计算n!。

分析:根据阶乘的定义,求n的阶乘可以转换为求n*(n-1)!,利用过程递归来完成。

n!= 1 n=0 n*(n-1)! n>0 -154-

代码如下:

Function fact(n) As Double If n > 0 Then

fact = n * fact(n - 1) Else

fact = 1 End If

End Function

Private Sub Command1_Click() Dim n As Integer, m As Double n = Val(Text1.Text) If n < 0 Or n > 20 Then

MsgBox \非法数据\请输入0-20之间的整数\ Exit Sub End If m = fact(n)

Label1.Caption = m End Sub

说明:当n>0时,在过程fact中调用fact过程,参数为n-1,这种操作一直持续到n=0为止。下面以n=5为例,说明递归调用的过程。

递归级别 执行操作 1 fact(5) 2 fact(4) 3 fact(3) 4 fact(2) 5 fact(1) 6 返回1 fact(1) 7 返回2 fact(2) 8 返回6 fact(3) 9 返回24 fact(4) 10 返回120 fact(5)

要编写递归过程的关键是写出能构成递归的两个条件: (1)递归结束条件及结束时的值;

(2)能用递归形式表示,并且递归向结束条件发展。 例6-14 用递归求两个数的最大公约数。

分析求最大公约数的方法可以得到构成递归的两个条件:

n m Mod n=0

r=m mod n :gys(n,r) m Mod n<>0

gys(m,n)= 函数代码如下:

Function gys%(ByVal m%, ByVal n%) Dim r% r = m Mod n

-155-

If r = 0 Then gys = n Else

gys = gys(n, r) End If End Function

注意:递归算法设计简单,但消耗机器时间和占据的内存空间比非递归要大很多。

教学体会

使用VB编写应用软件时,提倡用“可视化的思想进行界面设计,结构化的思想进行功能实现”,本章讲述的过程就是将功能相对完整的程序段组织在一起,便于在程序中多处调用,既提高了程序段的共享,也便于整个程序的调试和维护,是结构化程序设计思想的体现。本章有些概念、程序组织的结构是全新的,教师讲授费劲,学生学习“吃不消”现象普遍存在,但这章又是本书的重点和难点,应在教学中引起足够的重视。在教学过程中,应注意以下问题:

(1)与事件过程对比,充分理解用户自定义过程在程序设计中的作用,掌握使用自定义过程后程序结构的变化。

(2)掌握Sub过程和Function过程的定义与调用格式,熟悉参数传递方式及其特点,具备正确设置过程参数及参数传递的能力。

(3)在应用编程时,对Sub过程和Function过程不用刻意区别,用Sub过程可以实现的问题,同样可以用Function过程实现,反之亦然。编写过程的关键是确定参数的个数及其作用,明确参数传递方式以确定对形参与实参的具体要求。

(4)变量与过程的作用域是规定变量能访问或过程能被调用的范围,通过实例熟练掌握并能灵活应用。

-156-

习题

一、选择题

1.VB中在模块的通用声明段用Dim X 声明的变量是 变量。 (A) 过程级 (B) 模块级 (C) 全局 (D) 静态 2.在Visual Basic应用程序中,以下描述正确的是 。 (A) 过程的定义可以嵌套,但过程的调用不能嵌套 (B) 过程的定义不可以嵌套,但过程的调用可以嵌套 (C) 过程的定义和过程的调用均可以嵌套 (D) 过程的定义和过程的调用均不可以嵌套

3.以下程序运行时,单击命令按钮得到的结果是 。

Sub subp(b() As Integer) For i = 1 To 4 b(i) = 2 * i Next i End Sub

Private Sub Command1_Click() Dim a(1 To 4) As Integer

a(1) = 5: a(2) = 6: a(3) = 7: a(4) = 8 subp a

For i = 1 To 4 Print a(i); Next i End Sub (A) 2 4 6 8 (B) 5 6 7 8 (C) 10 12 14 16 (D) 出错 4.假定有以下两个过程:

Sub s1(ByVal x As Integer, ByVal y As Integer) Dim t As Integer t = x : x = y : y = t End Sub

Sub s2(x As Integer, y As Integer) Dim t As Integer t = x : x = y : y = t End Sub

则以下说法中正确的是 。

(A) 调用过程S1可以实现交换两个变量的值的操作,S2不能实现 (B) 调用过程S2可以实现交换两个变量的值的操作,S1不能实现 (C) 调用过程S1和S2都可以实现交换两个变量的值的操作 (D) 调用过程S1和S2都不能实现交换两个变量的值的操作

5.在窗体上添加一个命令按钮Command1和两个名称分别为Label1和Label2的标签,在通用声明段声明变量X,并编写如下事件过程和Sub过程:

Private X As Integer

Private Sub Command1_Click() X = 5: y = 3

-157-

Call proc(X, y) Label1.Caption = X Label2.Caption = y End Sub

Sub proc(ByVal a As Integer, ByVal b As Integer) X = a * a y = b + b End Sub

程序运行后,单击命令按钮,则两个标签中显示的内容分别是 。 (A) 5和3 (B) 25和3 (C) 25和6 6.下列程序输出结果为 。

Private Sub Command1_Click() For i = 1 To 3 GetValue (i) Next i

Print GetValue(i) End Sub

Private Function GetValue(ByVal a As Integer) dim S As Integer S = S + a GetValue = S End Function A) 4 B) 5 C) 10 7.以下程序的运行结果是 。

Dim x As Integer, y As Integer, z As Integer Sub s2(a As Integer, ByVal b As Integer) a = 2 * a b = b + 2 End Sub

Private Sub Command1_Click() x = 4 y = 4

Call s2(x, y) Print x + y End Sub (A) 0 (B) 8 (C) 12 8.以下程序的运行结果是 。

Private Sub Form_Click() a = 1: b = 2

Print \ Call mult(a, b)

Print \End Sub

Sub mult(x, ByVal y)

-158-

(D) 5和6 D) 11 (D) 14

百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库第06章 模块化程序设计(4)在线全文阅读。

第06章 模块化程序设计(4).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印 下载失败或者文档不完整,请联系客服人员解决!
本文链接:https://www.77cn.com.cn/wenku/zonghe/607688.html(转载请注明文章来源)
Copyright © 2008-2022 免费范文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ: 邮箱:tiandhx2@hotmail.com
苏ICP备16052595号-18
× 注册会员免费下载(下载后可以自由复制和排版)
注册会员下载
全站内容免费自由复制
注册会员下载
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: