创新高三一轮复习系列选考总复习浙江专信息技术讲义 必修3 第二章算法的程序实现 Word含答案.docx
- 文档编号:26640977
- 上传时间:2023-06-21
- 格式:DOCX
- 页数:76
- 大小:340.38KB
创新高三一轮复习系列选考总复习浙江专信息技术讲义 必修3 第二章算法的程序实现 Word含答案.docx
《创新高三一轮复习系列选考总复习浙江专信息技术讲义 必修3 第二章算法的程序实现 Word含答案.docx》由会员分享,可在线阅读,更多相关《创新高三一轮复习系列选考总复习浙江专信息技术讲义 必修3 第二章算法的程序实现 Word含答案.docx(76页珍藏版)》请在冰豆网上搜索。
创新高三一轮复习系列选考总复习浙江专信息技术讲义必修3第二章算法的程序实现Word含答案
第二章 算法的程序实现
[考试标准]
考试内容
考试要求
考试属性
1.枚举算法及程序实现
c
加试
2.解析算法及程序实现
c
3.排序算法及程序实现
(1)冒泡排序
(2)选择排序
c
4.查找算法及程序实现
(1)顺序查找
(2)对分查找
c
5.递归算法
a
6.VB访问Access数据库
(1)通过ADO对象连接数据库
(2)通过Recordset对象获取数据表中的数据
a
一、排序算法及程序实现
1.排序的含义及方式
(1)所谓排序就是将无序的数列变成有序的数列。
(2)排列方式分为升序(也称递增,即从小到大排列)和降序(也称递减,即从大到小排列)。
2.冒泡排序
(1)冒泡排序基本思想
将n个数据看作竖向排列的一组数据,每趟排序自下而上对每对相邻数据进行比较,若次序不符合要求就进行交换,每趟排序结束时都能使排序范围内关键字最小的记录像一个气泡一样升到上端的对应位置,整个排序过程共进行n-1趟,依次将关键字最小、次小……的各个数据冒到表的第一个、第二个……位置上。
用冒泡排序对n个数据进行排序时,共需进行n-1趟排序,比较的总次数为
。
(2)冒泡排序程序实现
说明:
要排序的n个数据已存放d数组中,以升序为例的程序如下:
Fori=1Ton-1 ′n个数排序共需进行n-1趟
Forj=nToi+1Step-1 ′每一趟从后往前,相邻两数两两比较
Ifd(j)<d(j-1)Then ′若满足条件则进行互换
temp=d(j)
d(j)=d(j-1)
d(j-1)=temp
EndIf
Nextj
Nexti
温馨提示:
若要按降序排列,只需将程序中的语句“Ifd(j)<d(j-1)Then”改为“Ifd(j)>d(j-1)Then”即可。
3.选择排序
(1)选择排序的基本思想
每趟排序是在所有的数据中找出最小(或最大)的数据,使它与第一个数据相互交换位置,然后再在剩下的数据中找出最小(或最大)的数据,与第二个数据相互交换位置,以此类推,直到所有元素成为一个有序序列。
(2)选择排序的程序实现
说明:
要排序的n个数据已存放d数组中。
以升序为例的程序如下:
Fori=1Ton-1 ′n个排序共进行n-1趟排序
k=i ′第i趟排序时,首先用k记录i
Forj=i+1Ton ′k位置上的数依次与j位置上的数进行比较
Ifd(k)>d(j) Thenk=j ′若找到比k位置上更小的数,则更新k的值
Nextj
Ifk<>iThen ′若i位置上的数不是最小数,则和k位置上的数进行互换
temp=d(i)
d(i)=d(k)
d(k)=temp
EndIf
Nexti
温馨提示:
若要按降序排列,只要将语句Ifd(k)>d(j)Thenk=j改成Ifd(k)<d(j-1)Thenk=j即可。
二、查找算法及程序实现
1.查找算法
所谓查找就是在指定的数据中寻找某一特定的数据。
查找结果有两种,即找到(查找成功)和未找到(查找失败)。
2.顺序查找
(1)顺序查找的基本思想
从第一个数据开始,从左往右(或从上到下)将数据按顺序逐个与给定的值进行比较,若某个数据和给定值相等,则查找成功,找到并输出所查数据的位置;反之,查找失败。
若有n个数,则可能的最多查找次数为n。
(2)顺序查找算法基本框架
设要查找的数为key,待查找的数存放在数组d中。
For语句框架:
Fori=1ton
若d(i)=key,则表示找到,做相应处理
Nexti
若i>n表示未找到
DoWhile语句框架:
i=1
Dowhilei<=n
若d(i)=key,则表示找到,做相应处理
i=i+1
Loop
若i>n表示未找到
(3)顺序查找的程序实现
在n个数组元素中依次查找,找到第1个满足条件的值,查找即结束,输出找到元素所在的位置;若找不到,输出“未找到”。
程序实现:
设要查找的数据是key(在文本框Text1中输入),查找的数据存放在数组d中。
pos为找到数的位置,pos=0表示未找到。
P表示查找的次数。
key=Val(Text1.Text) ′Val要根据实际情况决定是否要添加
p=0
pos=0
find=False ′find表示查找结果
i=1
DoWhilei<=nAndNotfind ′表示还没找完并且还未找到,则继续查找,Notfind也可表示为find=false
p=p+1
Ifkey=d(i)Then
pos=i
find=True
EndIf
i=i+1
Loop
IffindThen ′也可表示为Iffind=truethen
Text2.Text=”在d(”+Str(pos)+”)中”
Else
Text2.Text=“未找到”
EndIf
3.对分查找
(1)对分查找的基本思想
在有序的数据序列中(一般存放在数组中),首先把要查找的数据与数组中间位置的元素进行比较,如果相等,则查找成功并退出查找;否则,根据数组元素的有序性,确定数据应在数组的前半部分还是在后半部分查找;在确定了新的查找范围后,重复进行以上比较,直到找到或未找到为止。
温馨提示:
①对分查找的前提是被查找的数据序列必须是有序。
②“未找到”是指当指定范围内的起点大于终点仍未找到该数据。
(2)对分查找算法基本框架
说明:
要查找的数为key,待查找的数存放在数组d中。
i为查找范围的起点,j为查找范围的终点,m为范围[i,j]的中间位置。
i=1
j=n
DoWhilei<=j
计算中点位置m
比较key与d(m),并做相应处理
Loop
若i>j,则表示未找到
(3)对分查找程序实现
在n个数组元素中依次查找,找到第1个满足条件的值,查找就结束,输出找到元素所在的位置;若找不到,输出“未找到”。
程序实现:
设要查找的数据是key(在文本框Text1中输入),查找的数据存放在数组d中。
在文本框Text2中输出查找结果,若找到输出“找到!
位置为:
X”,否则输出“未找到!
”
在文本框Text3中输出共查找的次数。
p表示查找的次数。
核心代码为(以升序为例):
key=Val(Text1.Text) ′表示要查找的数
p=0 ′表示查找的次数
find=False ′查找的结果,若find=true表示找到,find=false表示未找到
i=1 ′查找的起始范围
j=n ′查找的终点范围
DoWhilei<=jAndNotfind ′如果还未找完并且未找到
p=p+1 ′查找次数计数
m=(i+j)\2 ′计算中点位置m
Ifkey=d(m)Then ′表示找到的情况
find=True
Text2.Text=”找到!
位置为:
”+Str(m)
EndIf
IfKey>d(m) Then ’表示查找的数比中间位置上的数大时
i=m+1
Else ’表示查找的数比中间位置上的数小时
j=m-1
EndIf
Loop
IfNotfindThenText2.Text=”未找到!
”
Text3.Text=”共查找的次数为:
”+Str(p)
温馨提示:
计算中点位置的语句还可以写成:
m=Int((i+j)/2)或m=Fix((i+j)/2)。
三、递归算法
1.递归的概念
函数或过程调用其本身,称为递归。
2.递归算法的基本思想
递归算法的基本思想是把规模较大的、较难解决的问题变成规模较小的、容易解决的同一问题,规模较小的问题又变成规模更小的问题,直到可以直接得出它的解,从而得到原来问题的解。
3.采用递归算法须具备的条件
(1)每一步骤解决问题的方法要一致。
(2)要有结束的边界条件。
四、Connection对象
用Connection建立和数据库的连接时,首先创建一组ADO对象用于设置打开连接和产生结果集,需要设置连接字符串ConnectionString的参数。
下列语句定义一个Connection对象的实例conn,conn是实例的名称,命名规则与VB变量定义相同,并设置conn的连接字符串:
DimconnAsNewADODB.Connection
DimabcAsNewADODB.Recordset
conn.ConnectionString=”Provider=Microsoft.ACE.OLEDB.12.0;DataSource=”&App.Path&”\souse1.accdb”
其中,“Provider”用于指定连接的提供者,“DataSource”用于指定数据库的文件名(含绝对路径)。
App.Path返回当前应用程序所在的绝对路径。
Connection对象具有Open、Execute、Close等方法,其中Open方法用于建立到数据源的连接,Execute用于执行指定的查询、SQL语句或特定提供者的文本等内容,而Close方法则用于关闭连接。
五、Recordset对象
用Recordset对象从数据库中查询记录时,要设置ActiveConnection属性的值。
语句Setabc.ActiveConnection=conn,使Recordset对象的实例abc与Connection对象的实例conn建立关联。
在abc与conn建立关联后,可用Recordset对象的Open方法打开、查询数据表的记录。
Open方法的参数为SQL命令。
如:
abc.Open“SELECT*FROMinfo”运行后,记录集abc中的数据为SQL语句“SELECT*FROMinfo”查询到的记录。
同样,Recordset对象的Close方法用于关闭对象。
Abc.close表示关闭记录集。
Recordset对象的Fields集合用于返回当前记录中的数据,如:
abc.Fields(”book”)返回当前记录中”book”字段的值;abc.Fields(0)返回当前记录中第一个字段的值,如果第一个字段名为“book”,则abc.Fields(0)与abc.Fields(“book”)返回值相同。
例如Recordset对象实例abc打开了下表的记录集:
Recordset对象打开的记录集:
book
author
price
Publishing
平凡的世界
路遥
78.2
海南人民出版社
红楼梦
曹雪芹
53.6
上海教育出版社
假设当前记录为第2条记录,则Fields集合返回当前记录某个字段的数据有以下两种方法:
(1)abc.Fields(字段序号),其中字段序号从0开始编号。
(2)abc.Fields(“字段名称”)
故abc.Fields(0)和abc.Fields(“book”)都返回“红楼梦”,abc.Fields
(1)和abc.Fields(“author”)都返回“曹雪芹”,abc.Fields
(2)和abc.Fields(“price”)都返回“53.6”,abc.Fields(3)和abc.Fields(“Publishing”)都返回“上海教育出版社”。
通过Recordset对象从数据库中返回的这些数据可以通过数组的形式存储,以方便我们后序进行统计、排序、查找等处理。
Recordset对象的AddNew方法为可更新的Recordset对象创建一个新记录,它添加一条新的空记录,并且定位在该记录上;Delete方法可将当前记录从记录集中删除;Edit方法可以编辑修改数据库的记录,注意首先要将需要编辑的记录成为当前记录,然后使用Edit方法修改记录内容,使用Edit方法后,再移动记录或者使用Update方法把数据存入到数据库中;Move方法可以使不同的记录成为当前记录,主要有5种使用方法:
MoveFirst:
移动到记录集的第一条记录。
MoveLast:
移动到记录集的最后一条记录。
MoveNext:
移动到记录集的下一条记录。
MovePrevious:
移动到记录集的上一条记录。
Move:
可以使用Move方法向前或向后移动若干条记录。
但应注意:
若到数据表结尾处还继续向下移动,程序会出错,因此在使用MoveNext时要判断Recordset的BOF和EOF属性,判断记录指针是不是到达首记录之前或尾记录之后。
EOF取值为“True”时表示已经到达记录集的结尾,否则EOF的值为“False”。
若BOF和EOF的取值均为“True”则表示此记录集为空。
六、SQL:
Select语句
SELECT语句是结构化查询语言SQL中常见的语句,主要用于从数据表中查询数据,如语句“SELECT*FROMinfo”表示查询数据表“info”的全部数据。
语句总结如下:
(1)定义Connection对象的实例conn和Recordset对象的实例abc。
DimconnAsNewADODB.Connection
DimabcAsNewADODB.Recordset
(2)为实例conn设置ConnectionString属性值。
conn.ConnectionString=”Provider=Microsoft.ACE.OLEDB.12.0;DATASource=”&App.Path&”\souse1.accdb”
(3)打开与数据库的连接。
conn.Open
(4)建立实例abc与conn之间的关联。
Setabc.ActiveConnection=conn
(5)执行SELECT命令,将查询结果返回给abc。
abc.Open”SELECT*FROMinfo”
(6)在应用程序中引用abc中当前记录的字段值。
Label1.Caption=abc.Fields(”book”)
Label2.Caption=abc.Fields(”price”)
(7)关闭记录集。
Abc.close
(8)关闭与数据库的连接。
conn.Close
【例1】 (2016·10月浙江选考)小吴为了探究冒泡排序过程中数据的“移动”情况,编写了一个VB程序,功能如下:
在列表框List1中显示排序前数据(存储在数组a中),在文本框Text1中输入初始位置(即下标值),单击“排序”按钮Command1后,在标签Label1中显示指定初始位置的数据在排序过程中的位置变化情况,排序后的数据显示在列表框List2中。
程序运行界面如图所示。
实现上述功能的VB程序如下,但加框处代码有错,请改正。
Dima(1To8) AsInteger
DimnAsInteger
PrivateSubForm?
Load()
′n=8,排序前的8个数据存储在数组a中,并在列表框List1中显示
′代码略
EndSub
PrivateSubCommand1Click()
DimiAsInteger,jAsInteger,kAsInteger
DimposAsInteger ′变量pos存储指定数据的位置(即下标值)
DimsAsString ′变量s存储pos变化情况
s=Text1.Text
pos=Val(Text1.text)
Fori=1Ton-1
Forj=nToi+1Step-1
Ifa(j)<a(j-1)Then
’
(1)
a(j-1)=a(j)
a(j)=k
′如果pos位置的数据参与交换,则更新pos值,记录pos变化情况
Ifpos=jThen
pos=j-1
s=s+”→”+Str(pos)
′
(2)
pos=j
s=s+”→”+Str(pos)
EndIf
EndIf
Nextj
Nexti
Label1.Caption=”位置变化情况:
”+s
Fori=1Ton
List2.AddltemStr(a(i))
Nexti
EndSub
解析 仔细阅读题干说明和程序及程序注释,先从整体判断各程序段功能及各变量的作用,再具体分析出错位置的程序行进行改错。
(1)此位置程序段为冒泡排序相邻两个数据进行比较后,逆序的两数交换数据,即交换两个变量的值,分析后面两程序行,判断
(1)方框处应该是“k=a(j-1)”。
(2)阅读程序注释,
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 创新高三一轮复习系列选考总复习浙江专信息技术讲义 必修3 第二章算法的程序实现 Word含答案 创新 一轮 复习 系列 选考总 浙江 信息技术 讲义 必修 第二 算法 程序 实现 Word 答案
链接地址:https://www.bdocx.com/doc/26640977.html