1、 四队中学教案纸 (备课人: 董志红 学科:信息技术 )备课时间教学课题 第 21 学时:在数组中查找数据教时计划1教学课时21知识和技能目标 理解数组的概念,学会用简单的数组处理数据。过程和方法目标 掌握顺序查找算法,学会用顺序查找编写简单的查找程序。教学目标 情感态度和价值目标 了解二分法查找算法,学会编写二分法查找程序。教学重点顺序法和二分法查找数据教学难点顺序查找和二分法查找的基本算法思想教学过程:例:求 100 个学生的平均成绩及超过平均成绩的人数。用变量表示:mark1、mark2、mark3、mark100用数组表示:mark(1 to 100)一、数组的基本概念(1)数组一组相
2、同类型的变量集合,集合中的每个元素都是独立的变量,它们能够通过数组序号被引用。mark(1 to 100)表示一个包含 100 个数组元素的名为 mark。(2)数组元素(数组中的变量,用下标表示) 表示方法:数组名(P1,P2,)P1,P2是“下标”,表示元素在数组中的排列位置。(3)数组维数:(由数组元素中下标的个数决定)一个下标表示一维数组VB 中有一维数组、二维数组、,最多有 60 维数组(4)下标(表示顺序号)每个数组有一个唯一的顺序号;下标不能超过数组声明时的上、下界范围;下标可以是整型的常量、变量、表达式及一个数元素;取值范围:下界 to 上界,缺省下界,默认为 0。下界最小为-
3、32768,上界最大为 32767。练习:判断下列数组的取值范围:A(10),B(3 to 5)(5)数组声明(先声明后使用)声明数组让系统在内存中分配一个连续的区域,用来存储数组元素。声明内容:数组名、类型、维数、数组大小二、静态数组一维数组形式:Dim 数组名(下标) AS 类型数组声明时的下标必须为常数,不可以是表达式或变量。一维数组的大小:上界下界+1例:Dim A(12) as integer声明 A 是数组名、整型、一维数组、有 13 个元素、下标的范围是 012。练习:说明“Dim A(-3 to 6) as String * 3 ”包含的内容。多维数组格式:Dim 数组名(下标
4、 1,下标 2) AS 类型每一维的大小=上界下界+1 数组大小=每一维大小的乘积例:Dim C(-1 to 5,3) As Long声明 C 是数组名、长整型、二维数组,第一维下标范围为-15,第二维下标范围为 03,占据 74个长整型变量的空间。练习:(1)多维数组中下标最少有 维数组,最多有 维数组。(2)求该数组 Dim A(5,-3 to 3)的数组大小(3)试说明“Dim A(5,-2 to 3,4to 8) As Single”结论在 VB 的窗体层或标准模块层用 Option Base n 语句可重新设定数组的下界,如:Option Base1。如果使用该语句,必须写在模块的所
5、有过程之前;一个模块中只能出现一次 Option Base,且必须位于带维数的数组声明之前。在数组声明中的下标关系到每一维的大小,是数组说明符,而在程序其他地方出现的下标为数组元素。三、动态数组利用 Dim、Private、Public 语句声明括号内为空的数组,然后用 ReDim 语句指明该数组的大小。ReDim 数组名(下标 1,下标 2 ) AS 类型下标可以是常量、有了确定值的变量。要改变数组的维数,可在过程中多次使用 ReDim 来改变数组的大小。每次使用 ReDim 语句都会使原来数给中的值丢失,可以在 ReDim 语句后加工厂 Preserve 参数来保留数组中的数据,但 Pre
6、serve 只能改变最后一维的大小,前面几维大小不能改变。四、数组的基本操作数组的输入用 InputBox 函数实现Dim SB(3,4) AS SingleFor i=0 to 3For j=0 to 4SB(i,j)=InputBox(“输入” & I & j “的值”)Next j Next i数组的赋值赋值号两边的类型必须一致。若赋值号左边是一个动态数组,则赋值时,自动将 ReDim 赋给右边相同大小的数组。若赋值号左边是一个大小固定的数组,赋值有误。实践题:1DNA 中的碱基有 A、G、T、T 共四种,如何用数组表示这四个元素?2有一组元素包括大、小写字母及空格共 53 个,用数组方
7、法表示。3数据类型有_ 、_、_、_、_、_ 、 。第二节 顺序查找一、顺序查找1基本思想:进行查找时,一般从数据的第一个元素开始,按照数据的顺序查找指定的关键值;如果被查数据和该关键值相匹配,则表示找到;否则,则表示被查数据中不存在该关键值,查找失败。2平均查找长度ASLsq= (n-i+1)=np1+(n-1)p2+2pn-1+pn在等概率情况下,pi=1/n(1In),故成功的平均查找长度为(n+2+1)=(n+1)/2若 K 值不在表中,则须进行 n=1 比较之后才能确定查找失败。ASLsq 达到最小值的情况:qnqn-1q2q13 优点:算法简单,对表的结构无任何要求。缺点:查找效率
8、低,当 n 较大时不宜采用查找。二、字符串加解密在数字中有对应关系,可以一对多、多对一,然而在查找字符串时,只允许一个字符串对应另外一个字符串,否则查找出现错误。对字符串进行加密、解密,必须构建一个存储源码字符表和密码字符表。英文字母大、小写加上空格,共 53 个,我们不能用变量来表示,只能用数组表示。1在 VB 中新建一个标准 EXE 工程,然后选中窗体 form1,修改 3 个属性:名称frmencrypt Caption英文字母加解密 StartUpPosition2-屏幕中心2添加标签控件 label1 和 3 个文本框,按下列表格进行修改。对象 属性 设置值 对象 属性 设置值 Ca
9、ption 待加密字符串 名称 txtEncrypt BackStyle 0 TransParent Appearance 0-Flat Label1 AutoSize True Text2 Text 空 名称 txtText 名称 txtDecrypt Appearance 0-Flat Appearance 0-Flat Text1 Text 空 Text3 Text 空 3.添加两个按钮控件“加密”按钮:cmdEncrypt “解密”按钮:cmdDecrypt 4.编写代码在窗体 Form1 的“通用”部分声明两个字符表。用常量 CHARNUM 约束两个字符表总数,aryCode(CHA
10、RNUM)、aryeEncode(CHARNUM)。在此声明的作用:使其在其他过程中访问它们。Option ExplicitConst CHARNUM=52 下标从 0 开始Dim aryCode(CHARNUM) AS StringDim aryEncode(CHARNUM) AS String思考:以上声明说明,aryCode 是_、_型、_维数组,有_个元素,下标的范围是_。在窗体 Form1 的 Load 事件过程中编写代码。在 ASCII 码中,英文字母 AZ 的编码:6590,az 的编码:97122,大小写英文字母之间存在一个关系:小写字母=大写字母+32空格的编码恰好是 32,
11、因此源码字符表中第一个字符放空格。52 个英文字母用两段循环语句控制,读入源码字符表时用 Chr()函数,这样就构成了密码字符表。希腊字母“A”的 ASCII 码-22879。字符串加密处理:在 cmdEncode 的 Click 事件过程中编写代码。依次从待加密字符串中取出一个字符,找到该字符在源码字符表中的位置,这里就要用到 Mid()函数和 Len()函数。Len()函数负责字符串的长度。For I=1 to Len(txtText.text)在 TetText 文本框中读入字符串,然后利用 Len()函数计算字符串的长度,i 的取值范围:1所读入字符串的长度。StrChar=Mid(t
12、xtText,i,1)从 txtText 文本框中取出从第 i 个字符串起始的字符数,然后把该字符送入 strChar 存储。字符串解密处理从密码字符串取出字符,查找该字符在密码字符表中的位置,找到后用源码字符表中相应的字符替换,否则仍使用原字符。实践题:1凯撒密码的原理是将“明文”中的每个字母用另外一个字母替换,这样就形成“密文”。已知凯撒密码的计算公式为 F(a)=(a+k) mod n,k=3,n=26,如果将英文字母进行加密,其对应关系如下所示:明文:A B C DX Y Z密文:D E F GA B C2编写课本第 54 页的实践第 2 题(“明日之星”计分界面)教学反思 在学生对本节内容有所了解,但学得不系统,没有上升到理论的高度。学生对本节内容比较感兴趣,具有较强的求知欲望。 学生对本节知识有所了解的基础上,通过实际应用中的案例分析讲解,师生互动,使学生对在数组中查找数据有新的认识,把对本节知识的理解上升到一个新的理论高度。