选考总复习 信息技术 必修3 第一章 算法及VB语言.docx

上传人:b****1 文档编号:12789753 上传时间:2023-04-22 格式:DOCX 页数:33 大小:114.23KB
下载 相关 举报
选考总复习 信息技术 必修3 第一章 算法及VB语言.docx_第1页
第1页 / 共33页
选考总复习 信息技术 必修3 第一章 算法及VB语言.docx_第2页
第2页 / 共33页
选考总复习 信息技术 必修3 第一章 算法及VB语言.docx_第3页
第3页 / 共33页
选考总复习 信息技术 必修3 第一章 算法及VB语言.docx_第4页
第4页 / 共33页
选考总复习 信息技术 必修3 第一章 算法及VB语言.docx_第5页
第5页 / 共33页
点击查看更多>>
下载资源
资源描述

选考总复习 信息技术 必修3 第一章 算法及VB语言.docx

《选考总复习 信息技术 必修3 第一章 算法及VB语言.docx》由会员分享,可在线阅读,更多相关《选考总复习 信息技术 必修3 第一章 算法及VB语言.docx(33页珍藏版)》请在冰豆网上搜索。

选考总复习 信息技术 必修3 第一章 算法及VB语言.docx

选考总复习信息技术必修3第一章算法及VB语言

第一章 算法及VB语言

[考试标准]

考试内容

考试要求

考试属性

1.算法的基本概念及常用表示方法

b

加试

2.面向对象程序设计的基本思想与方法

b

3.类、对象、属性、方法、事件和事件处理的概念及应用

c

4.VB应用程序的调试及运行

c

5.VB基本数据类型、常量、变量与数组

c

6.VB各类基本运算、表达式与常用的标准函数

c

7.常用VB语句

c

8.过程与自定义函数

c

VB应用程序是按模块化的方式组成的,一个程序模块是程序的一部分,每个模块负责解决整个应用问题的一部分任务。

程序模块分为过程和函数两种。

即Sub子过程和Function函数。

一、引入过程和函数的目的

1.依据结构化程序设计的思想,实现模块化的程序设计。

当需解决的问题规模较大、复杂时,可以按功能细分成一个一个小的功能模块,这样的小程序段,在VB中被称为过程。

2.简化程序中多处重复出现处理相同功能的程序段的设计问题。

二、过程和函数的特点

是一段能完成一个或多个特定功能的独立的程序段,并可以被其他过程调用,主要特点是功能独立、可被调用。

两者的区别在于:

Sub子过程只执行程序而不返回值,而Function函数执行程序后会返回值。

三、Sub子过程

可以将程序划分成一个个较小的逻辑单元,这样每个逻辑单元可以构成一个过程。

过程中的代码可以被重复调用,从而避免了不必要的代码的重复编制,减少了编程的工作量。

Sub子过程分为事件处理过程和通用事件过程(自定义过程)

Sub子过程的格式:

Sub过程名(参数表)

 语句块

EndSub

1.EndSub标志

Sub过程执行结束,程序将返回调用该Sub过程的语句处继续执行。

2.子过程的调用

在其他过程或函数中,使用Call过程名语句调用该事件过程。

3.子过程中可以使用ExitSub语句中途跳出子过程。

(一)事件处理过程

1.事件处理过程名必须符合下面的规则:

对象名_事件的标准名。

VB的一些常用对象上的常见事件的标准名见下表:

对象

事件处理过程名

说明

文本框

Text

Text_Click

在文本框内单击鼠标

Text_DblClick

在文本框内双击鼠标

Text_KeyPress

文本框被激活后,用户在键盘上按下了某个键

命令按钮Command

Command_Click

在命令按钮上单击鼠标

标签Label

Label_Click

在标签上单击鼠标

窗体Form

Form_Load

窗体装载

2.Form_Load事件在程序运行时,系统自动运行。

3.其他控件事件处理过程,只有触发了该对象的相应事件,才执行子过程。

4.在子过程或函数中,也可以使用Call事件处理过程名来调用事件处理过程。

5.子过程调用自身,形成递归。

(二)通过过程

也称为自定义过程,是一个独立的程序段,不同的事件可能需要使用同一个程序段时,可以把这个程序段单独地建立成一个通用过程,供其他事件处理过程或其他通用过程调用。

四、函数

函数分为标准函数和自定义函数,如Abs、Mid等称为系统的标准函数。

自定义函数是类似于过程的另一种程序模块,不同之处是函数执行完成后,函数的计算结果被送到函数的调用点上,供程序的后继部分继续进行处理。

自定义函数格式:

Function函数名(参数表)As 类型名

 语句块

EndFunction

函数名是为函数指定的名称,参数表是对一函数需要的原始数据类型一一地进行说明,As后的类型名,是说明函数的计算结果,即函数返回值的数据类型。

自定义函数的语句块中至少要有一个形如“函数名=表达式”的语句,这样,表达式的计算结果才能作为函数的返回值,被VB送到函数的调用点上。

函数就是根据一些已知条件(参数),实现一定功能,返回一个值(通过函数名)。

1.Function过程以Function语句开头,以EndFunction结束;中间代码部分为函数体;

2.函数中途可以利用ExitFunction退出。

3.函数名有返回值,其值类型由As数据类型指定;

4.函数体内一般都会至少为函数名赋值一次;如果不赋值,函数返回值默认为0或空。

【例1】 在VB中,某程序代码窗口如下图所示。

则下列说法正确的是(  )

A.Form_Load事件是程序运行时,用户单击窗体执行的程序代码

B.程序运行时,单击Cmd1,不能调用Command2_Click事件

C.该程序代码窗口中,有3个事件处理过程和1个自定义函数

D.程序运行时,单击Cmd1,在文本框Text1中显示数组a中最大的50个数

解析 Form_Load事件是程序运行时,装载该窗体时执行代码。

在Cmd1_Click事件中,语句CallCommand2_Click调用该过程。

函数是实现大于x的数的个数。

答案 C

[变式1] 在VB中,有如下自定义函数

FunctionDmax(xAsInteger,yAsInteger)AsInteger

 Ifx>yThenDmax=xElseDmax=y

EndFunction

求3个整数a,b,c的最大值,以下不能实现功能的表达式是(  )

A.Dmax(a,Dmax(b,c))

B.Dmax(b,Dmax(a,c))

C.Dmax(a,b,c)

D.Dmax(Dmax(a,b),Dmax(a,c))

解析 该自定义函数的参数是两个,3个数的最大值是先找出2个数的最大值再与第3个数比较。

答案 C

[变式2] 下面VB程序的功能为:

在文本框Text1和Text2中输入两个整数,单击按钮对象Command1,在标签对象Label1中显示这两个数差的绝对值。

Functionlsc(xAsInteger,yAsInteger)AsInteger

 Ifx>yThen

lsc=x-y

 Else

lsc=y-x

 EndIf

EndFunction

PrivateSubCommand1_Click()

 Dima1AsInteger,a2AsInteger

 a1=Val(Text1.Text)

 a2=Val(Text2.Text)

 Label1.Caption=________

EndSub

要实现上述功能,程序画线处应填入的语句为(  )

A.lsc(x,y)

B.lsc(Text1.Text,Text2.Text)

C.lsc

D.lsc(a1,a2)

解析 自定义函数lsc用于求两个整数的差,由于输入的整数为a1、a2,因此画线处应填的语句为lsc(a1,a2),答案为D。

答案 D

[变式3] 某VB应用程序的两个事件过程如下:

PrivateFunctionout(xAsInteger,yAsInteger,zAsInteger)AsInteger

 DimtempAsInteger

 Ifx>yThentemp=yElsetemp=x

 Iftemp>zThentemp=z

 out=temp

EndFunction

PrivateSubCommand1_Click()

 DimaAsInteger,bAsInteger,cAsInteger

 a=1

 b=2

 c=3

 Text1.Text=out(a,b,c)

EndSub

程序运行时,单击命令按钮command1后,在文本框Text1中显示的内容是(  )

A.0B.1

C.2D.3

解析 自定义函数out的功能是求三个数中的最小数,1、2、3三个数中的最小数为1,因此答案为B。

答案 B

[变式4] 小明在VB中定义了以下函数,功能是求a和b的最大公约数。

Functiongcd(aAsInteger,bAsInteger)AsInteger

 DoWhileb>0

c=aModb

a=b

b=c

 Loop

EndFunction

调试中发现计算结果一直是0。

经过仔细观察与分析,发现错误的原因是(  )

A.函数名有错

B.变量c没有定义

C.函数没有返回值

D.b>0应该改为b>=0

解析 A选项函数名的命名规则同变量名。

VB中可以省略一些变量的定义,未定义的变量即为通用类型,即根据赋值变化数据类型,所以B选项局部变量c未定义,不影响程序运行。

D选项把循环条件改成b>=0反而会使DoWhile……Loop循环进入死循环。

所以正确答案是C。

答案 C

[变式5] 在VB中,设已定义函数过程f,

Functionf(xAsInteger,yAsInteger,zAsInteger)AsInteger

 ′代码略

EndFunction

若有a,b,c为整型变量,则下列能调用该函数的正确语句是(  )

A.fB.f(a+b,b+c)

C.f(a+b,b+c,c+a)D.fa+b,b+c,c+a

解析 注意函数的格式。

答案 C

【例2】 有VB程序,实现如下功能:

在文本框Text1中输入一个数字,单击“判断”按钮Command1,在文本框Text2中输出是否是回文数,回文数指正读反读都相同的数。

请在画线处填入适当的语句或表达式。

PrivateSubCommand1_Click()

 DimsAsString,flagAsBoolean

 s=Text1.Text

 ____①____

 Ifflag=TrueThenText2.Text=s+“是回文数”ElseText2.Text=s+“不是回文数”

EndSub

Functionhw(sAsString)AsBoolean

DimiAsInteger,nasInteger,s1asstring,s2asstring

hw=True:

n=Len(s)

Fori=1Ton\2

s1=Mid(s,i,1)

  ____②____

Ifs1<>s2Then

    ____③____

    ExitFunction

EndIf

Nexti

EndFunction

解析 自定义函数的功能是:

根据参数s的值,如果s是回文数,则返回hw的值为True,否则返回False。

从主程序的输入和输出语句来看,变量s是文本框Text1中输入的值,根据条件flag=True来输出结论,因此flag调用该自定义函数,即判断是否为回文返回的值。

在自定义函数内部,循环变量i从1到n/2,每要首尾判断。

答案 ①flag=hw(s) ②s2=Mid(s,n+1-i,1) ③hw=False

【例3】 有VB程序,实现如下功能:

在文本框Text1中输入一个数字,单击“判断”按钮Command1,在文本框Text2中输出是否是回文素数,回文素数指既是回文数,又是素数。

请在画线处填入适当的语句或表达式。

PrivateSubCommand1_Click()

DimsAsString,tAsLong,flagAsBoolean

s=Text1.Text

flag=False

Ifhw(s)Then

t=Val(s)

if____①____thenflag=True

EndIf

Ifflag=TrueThenText2.Text=s+“是回文素数”ElseText2.Text=s+“不是回文素数”

EndSub

Functionhw(sAsString)AsBoolean

′同【例2】,代码略

EndFunction

Functionprime(aAsLong)AsBoolean

DimjAsLong

prime=True

j=2

DoWhile____②____Andj<=a-1

IfaModj=0Then

prime=False

EndIf

 ____③____

 Loop

EndFunction

解析 自定义函数prime,判断a是否是素数,参数a的类型是长整形,因此在调用该函数时,参数必须一致。

该函数的返回值还是逻辑型,当一个数被a除通后,不能再循环了,否则prime的值可能从False变到True,因此循环条件加上在没有除通时。

答案 ①prime(t)=True或prime(t) ②prime=True或prime ③j=j+1

【例4】 (2015·10月浙江选考)某数据加密方法描述如下:

(1)以字节为单位进行加密处理;

(2)将1个字节的8位二进制数分割成前4位与后4位两个二进制数;

(3)分别将上述两个4位二进制数转换为十进制数;

(4)将每个十进制数转换为1个加密字符,对应的“密码表”如下:

值(十进制)

0

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

加密字符

I

l

i

k

e

C

H

N

p

o

s

t

c

a

r

d

小明按照上述方法,设计了一个字符串(仅包含ASCII字符)加密的VB程序,功能如下:

单击“加密”按钮Command1,程序依次将文本框Text1中每个字符的ASCII码值作为1个字节转换为两个加密字符,连接这些加密字符,最后在文本框Text2中输出加密结果。

下表显示了字符串中一个字符的加密过程:

程序运行效果如图所示。

实现上述功能的VB程序如下:

(1)请在画线处填入合适代码。

PrivateSubCommand1_Click()

 DimnAsInteger,sAsString,iAsInteger,ssAsString

 DimaAsInteger   ′存储加密前字符的ASCII码

 Dimb1AsInteger,b2AsInteger ′分别存储分割、转换后的两个十进制数

 s=Text1.Text

 ____①____

 Fori=1Ton

a=Asc(Mid(s,i,1))

b1=a\16

b2=aMod16

ss=ss+Code2Char(b1)+Code2Char(b2)

 Nexti

 Text2.Text=ss

EndSub

′十进制值转换为加密字符的函数

FunctionCode2Char(cAsInteger)AsString

 DimsAsString

 s=“IlikeCHNpostcard”

 Code2Char=____②____

EndFunction

(2)若将“密码表”中值为“0”对应的加密字符“I”改成“i”,加密后的密文可能无法解密,原因是______________________________________________________

___________________________________________________________________。

解析 本题考查过程和自定义函数,常用标准函数等。

(1)根据题意,对文本框Text1中输入的字符串逐个字符加密,需算出字符串的长度n,作为循环变量的终值,即n=Len(s)。

加密后的字符串(密文)存储于字符串变量ss中。

②自定义函数Code2Char()中,根据密码表对应的每个十进制数转换为1个加密字符,第一个加密字符对应十进制值为0,故当十进制数值为6时,对应的字符H是第6+1个字符位置,即当十进制数值为c时,对应的字符是第c+1个字符位置,用取子串函数Mid(s,c+1,1)。

(2)若密码表中值为0对应的加密字符I改为i,造成同时对应加密字符i,当解密时,加密字符i对应的十进制有两个值0和2,不唯一而出错,从而无法解密。

答案 

(1)①n=Len(s)[或n=Len(Text1.Text)]

②Mid(s,c+1,1)

(2)加密字符i对应两个值0,2

[变式6] 如果一个整数是另一个整数的平方,则称该数是“完全平方数”。

如:

1=1×1,4=2×2,9=3×3,所以1、4、9是完全平方数。

下列VB自定义函数用于判断一个数是否是完全平方数。

Functionok(tAsInteger)AsBoolean

 DimkAsInteger

 

 Ifk*k=tThenok=TrueElseok=False

EndFunction

方框中的正确语句是(  )

A.k=Int(Sqr(t))B.t=Int(Sqr(k))

C.k=t^2D.t=k^2

解析 在判断t是否为完全平方数之前,先取出k的值,使k=Int(Sqr(t)),若正好有k*k=t,则得出结论:

t是完全平方数,ok=True。

答案 A

[变式7] 某VB代码如下:

Functionf(xAsSingle,yAsSingle)AsSingle

Ifx>yAndy<0Thenf=x^Abs(y)Elsef=x*Int(Sqr(y))

EndFunction

PrivateSubCommand1_Click()

DimaAsSingle,bAsSingle

a=Val(Text1.Text):

b=Val(Text2.Text)

Text3.Text=Str(f(a,b))

EndSub

该程序段运行后,文本框Text1、Text2分别输入3,2后,单击命令按钮Command1,文本框Text3中显示的是(  )

A.2B.3

C.6D.9

解析 本题考查简单的自定义函数,程序运行后,输入两个值3和2分别给变量a和b,Text3.Text=Str(f(a,b))调用自定义函数f,自定义函数f将3和2两个参数变量传递给x和y,判断“x>yandy<0”为假,则返回函数值“x*int(Sqr(y))”即“3*int(Sqr

(2))”,结果为3。

答案 B

【易错易误】

过程:

将程序划分为一个个较小的逻辑单元,每个逻辑单元构成一个过程。

过程中的代码可以被重复地调用。

过程分成两类:

事件处理过程和通用过程。

事件处理过程:

Sub事件处理过程名(参数表)

 语句块

EndSub

VB预设的事件有:

Click(单击)、DblClick(双击)、KeyPress(按键)、Load(装载)、Change(改变)等。

VB的一些常用对象上的常见事件的标准名有:

文本框Text:

Text1_Click、Text1_DblClick、Text1_KeyPress、Text1_Change

命令按钮Command:

Command1_Click

标签Label:

Label1_Click

窗体Form:

Form_Load(窗体装载)

1.字符串变量a的值为“Hello,world!

”,下列VisualBasic表达式的值是“world”的是(  )

A.Len(a,6,5)B.Mid(a,6,5)

C.Mid(a,7,4)D.Mid(a,7,5)

解析 Mid(X,n,k)的作用是取字符串X中第n个字符起长度为k的子串。

Mid(a,7,5)的功能是取字符串变量“Hello,world!

”中第7个字符“w”起长度为5的子串,即“world”。

答案 D

2.运行如下VB程序:

FunctionFN(nAsInteger)AsInteger

Ifn=1Then

 FN=1

Else

 FN=n*FN(n-1)

EndIf

EndFunction

SubCommand1_Click()

 Text1.Text=Str(FN(4))

EndSub

程序运行时,单击命令按钮Command1后,在文本框Text1中显示(  )

A.1B.10

C.24D.100

答案 C

3.某对象的一个事件过程代码如下:

PrivateSubObj_Click()

 s=s+1

 Text1.Text=Str(s)

EndSub

下列说法正确的是(  )

A.该过程的过程名为“Obj”

B.该对象的类名为“Sub”

C.该对象的对象名为“Obj_Click”

D.该事件是一个“单击”事件

解析 由题意可以看出是一个“单击”事件。

答案 D

4.窗体装载事件过程可以对程序进行初始化。

VB窗体装载事件过程的名称是(  )

A.Command1_ClickB.Form_Keypress

C.Form_LoadD.Form_DblClick

答案 C

5.下面VB程序的功能是判断一个数是否为一个完全平方数。

在文本框Text1中输入一个整数,单击按钮对象Command1,如果此数是一个完全平方数,则在标签对象Label1中显示“Yes”,否则显示“No”。

所谓完全平方数,是指一个数如果是另一个整数的完全平方,那么我们就称这个数为完全平方数,也叫平方数。

例如1、4、9、16等是完全平方数。

Functionjudge(x)AsBoolean

 judge=False

 Ifx=Sqr(x)^2Then____①____

EndFunction

PrivateSubCommand1_Click()

 DimxAsInteger

 x=Val(Text1.Text)

 Ifjudge(x) Then

Label1.Caption=“Yes”

 Else

___②____

 EndIf

EndSub

为实现上述功能,请分别在画线①和画线②处填入合适的语句。

画线①处应填入的语句为__________________________________________;

画线②处应填入的语句为__________________________________________。

解析 由题意经分析可知,①处代码是完全平方数的情况,因此应填入judge=True;如果输入的整数不是完全平方数,则在标签对象Label1中显示“No”,因此②处代码为Label1.Caption=“No”。

答案 ①judge=True ②Label1.Caption=“No”

6.编写一个将十进制数转换为二进制的VB自定义函数,代码如下。

FunctiondTOb(xAsInteger)AsString

 DimsAsString

 DoWhilex>0

IfxMod2=0Thens=“0”Elses=“1”

________

x=x\2

 Loop

EndFunction

则划线处应填的语句是________。

解析 十进制数转换为二进制的方法是除2倒取余数,且通过函数名返回函数的值。

变量s表示每次相除的余数。

答案 dTOb=s+dTOb

7.下列VB程序用于求2个正整数(均小于10000)的最大公约数:

PrivateSubCommand1_Click()

 DimxAsInteger

 DimyAsInteger

 DimzAsInteger

 x=

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 医药卫生 > 基础医学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1