收藏 分享(赏)

Ⅲ-05 file & array程序设计.ppt

上传人:dzzj200808 文档编号:3330202 上传时间:2018-10-14 格式:PPT 页数:32 大小:295.50KB
下载 相关 举报
Ⅲ-05  file & array程序设计.ppt_第1页
第1页 / 共32页
Ⅲ-05  file & array程序设计.ppt_第2页
第2页 / 共32页
Ⅲ-05  file & array程序设计.ppt_第3页
第3页 / 共32页
Ⅲ-05  file & array程序设计.ppt_第4页
第4页 / 共32页
Ⅲ-05  file & array程序设计.ppt_第5页
第5页 / 共32页
点击查看更多>>
资源描述

1、一、 文件的概念,文件:存储在外部介质上数据的集合。按名存取 1. 记录:由若干个相互关联的数据项组成。磁盘文件是由数据记录组成例如,由学生的学习成绩信息组成的记录:,2. 文件及其种类文件是记录的集合 按存取方式及组成结构分类:顺序文件、随机文件、二进制文件,(1) 顺序文件 按顺序依次把记录写入文件或把记录读出来。,文本文件:一行一条记录(一项数据),记录可长可短,以“换行”字符为分隔符号。 (2) 随机文件可以直接访问文件中的任意一个记录。记录长度相同根据记录号访问,顺序文件 在程序中对文件的操作,通常按3个步骤进行:,(一)顺序文件的打开和关闭1、打开文件 Open Open “文件名

2、” For 模式 As #文件号 Len=记录长度(1) 模式: Output:写操作 Input:读操作 Append:追加到文件未尾 (2) 文件号:是个整数,其值范围是:1511,(3) 记录长度:指定数据缓冲区的大小。,2、关闭文件 Close (3种类型文件都适用),格式: Close 文件号列表 文件号列表,如:#1, #2, #3,如果省略,则将关闭Open语句打开的所有活动文件。 例如: Close #1, #2, #3 Close,例如:OPEN “ C:TEMPA.TXT “ FOR Input AS #1 OPEN “ C:TEMPB.TXT “ FOR Output A

3、S #2OPEN “ C:TEMPC.TXT “ FOR Append AS #3,(二) 顺序文件的读写操作,1、写操作 Print #文件号,输出列表 (格式同以前)Open “d:lsssss.txt“ For Output As #1Print #1, “One “, txtTest; 123 txtTest文本框Close #1,结果,例1,2. 读顺序文件 INPUT #文件号,变量列表 把读出的每个数据项分别存放到所对应的变量。 LINE INPUT #文件号,字符串变量 读一行到变量中,主要用来读取文本文件。 INPUT$(读取字符数, #文件号) 随意读取字符 3. 函数 L

4、OF(文件号):返回文件的长度(总字节数)。 EOF(文件号):返回读写位置。 文件未尾时,EOF函数为True,否则为False。,例:读文本文件到文本框 假定文本框名称为txtTest,文件名为MYFILE.TXT。 方法1:一行一行读txtTest.Text “Open “MYFILE.TXT“ For Input As #1 Do While Not EOF(1) Line Input #1, InputData txtTest.Text txtTest.Text + InputData+vbCrLfLoopClose #1,回车换行,相当于chr(13)+chr(10),例2,顺序文

5、件(总结),存储方式:一个数据接着一个数据的按序排列。 只提供了第一个记录的存储位置,其他存储的位置则无法获悉。 对文件内部进行修改,必须将整个文件读到内存中进行必要的操作,然后再写回文件。 此结构适用于不经常修改数据的存储,并且这种结构占用的磁盘空间较少。,3.5 数组及应用,数组概念的引出,在科学计算和数据处理中,要用到成批数据,这些数据类型相同,且彼此间存在一定的顺序关系 数组可以表现多种逻辑关系的数据形式。,3.1通常,数组是由一组具有同一类型的变量组成的,即一个数组中的所有元素具有相同的数据类型。当然,当数据类型为变体 (Variant) 时,各个元素能够包含不同种类的数据(对象、字

6、符串、数值等)。在 VB中有两种类型的数组:固定大小的数组 它总是保持同样的大小;动态数组在运行时其大小可以改变。 使用数组必须先声明,后使用。与变量一样,根据数组应用的有效范围,可以采用以下三种方法进行声明: 在模块的声明段用 Public 语句声明数组,建立公用数组。 在模块的声明段用 Private或Dim语句声明数组,建立模块级数组。 在过程中用Dim或Static 语句声明数组,建立局部数组。声明固定大小数组应包含的信息: 数组名 数组的维数 数组的大小(体积) 数组的类型,数组定义,一、固定大小的数组,在声明时能够确定了大小的数组称作固定大小的数组。 一维数组 只需要用一个下标就能

7、确定一个数组元素在数组中的位置,那么该数组称为一维数组。在使用数组前要先声明,以开辟所需的空间。 格式:Dim 数组名 (下标) As 数组类型 功能:定义一个一维数组的大小,并分配相应的存储空间。 说明: 数组名与简单变量的命名规则相同。 下标是数组的维数,格式为下界 To 上界。一般情况下,当下界 To缺省时,默认值为0。一维数组下标的范围可以为-3276832767,下界必须小于上界。一维数组的大小是:上界下界1。, As 数组类型用来说明数组的类型,如果缺省,则与变量的声明一样,默认为是变体数组。例如:Dim a (12) As Single 声明a数组的类型为单精度型,下标范围为01

8、2Dim x (1 To 50 ) As Integer 声明x数组的类型为整型,下标范围为150。Dim y (1 To 10 ) 声明y是一个下标范围为1到10的变体数组。 数组必须先声明后使用。 Dim语句声明的数组,为系统编译程序提供了数组名、数组类型、数组的维数和各维的大小。该语句把数值数组中的全部数组元素都初始化为0,而把字符串数组中的全部数组元素都初始化为空字符串。 Dim语句中的下标可以是常数。下标全为常数时为固定大小的数组,数组的大小在编译时是确定的;下标为空时则为动态数组,数组的大小是可变的,只有在程序运行时,变量有确定的值后,数组的大小才能确定。, 可以使用以下方法声明通

9、用数组: 建立公用数组,在模块的声明段用 Public 语句声明数组。 建立模块级数组,在模块的声明段用 Private 或Dim语句声明数组。 建立局部数组,在过程中用 Dim或Static 语句声明数组。 例如: Dim Counters ( 1 To 14 ) As Integer Private Sums ( 1 To 20 ) As Double Public Counters ( 14 ) As Double Dim Subs ( 20 ) As Double, 多维数组 格式:Dim 数组名 ( 下标1 ,下标2 ,下标3 ) As 数组类型 功能:声明一个二维数组或多维数组,并

10、分配相应的存储单元。 说明:下标的个数决定了数组的维数,多维数组最大维数为60)。每一维的大小为:上界下界1;数组的大小为每一维大小的乘积。例如: Dim Array(3,4)As Integer 声明Array是整型数组,4行5列,共20个元素。Dim MultiD (3, 1 To 10, 1 To 15) 声明MultiD是一个变体数组,大小为 4 * 10* 15, Option Base语句 格式:Option Base n 功能:改变数组下标的缺省下界。 说明:n为数组下标的下界,只能是0或1。该语句在程序中只能使用一次,且必须放在数组声明语句之前。, 数组元素是带有下标的变量,其

11、一般形式为:数组名(下标表达式,) 如: A(2) B(1,2) C(1,3,1),数组元素是由数组名和圆括号中的下标表达式组成。下标表达式是任意算术表达式,当其值为实型时,系统自动转换为整型。,数组元素及下标,Dim a(5) as Integer,Dim b(1,2) as Single,数组元素,带下标的变量, 数组元素的下标 :数组元素在数组中的顺序号称为下标。下标的个数决定了数组的维数,下标所代表的每一维大小的乘积是数组的体积。 例如: Dim a(5) as Integer 元素个数6个Dim b(1,2) as Single 元素个数2*3=6个, 数组声明和数组元素的区别:,数

12、组声明中定义的数组名(包括维数、大小说明),用来说明数组的名字、维数、大小和类型。数组元素是数组中的一个成员,只能放在可执行语句中。 例如 Dim b(1,2) as Single 声明2行3列的二维数组b(1,2) = 3.2 给数组元素b(1,2)赋值,数组元素及下标,数组是由一组具有同一类型的变量组成的。 数组元素的连续存放。,数组的物理存储和逻辑存储,一维数组的存储方式,按下标由小到大的顺序存放在一串连续的内存单元中。,Dim x(5) as Integer,二维数组的存储方式,二维数组的数组元素是 “按行 ”的顺序存放的。,Dim b(1,2) as Single,Dim b(2,1

13、) as Single,三维数组的存储方式,先页后行最后列。是由若干页组成的二维数组,二、动态数组,建立动态数组的步骤: 声明动态数组。用Dim、Private、Public等语句声明数组,给数组赋予一个空维数表。例如:Dim Dynarray()。 用Redim语句配置实际的数组元素个数。 格式:Redim 数组名 ( 下标1 ,下标2 ) 功能:声明动态数组的大小。 说明:Redim语句声明只能用在过程中,它是可执行语句。在过程中可以多次使用Redim语句改变数组中元素的个数,也可以改变数组的维数。用Redim来配置数组个数时,原数组中的值会丢失,即数组内容全部被清为零。为了保留数组中的数

14、据,可以在Redim语句后加Preserve参数,但该参数只能改变最后一维的大小,前面维的大小不能改变。 Lx4-1,1. 数组元素的引用要使用数组中的元素,应使用这样的格式: 格式:数组名(下标,) 说明: 下标的个数必须与数组定义时的维数一致。对于多维数组元素,下标之间用逗号隔开。 下标可以是表达式,如果表达式的值是实型数,系统自动取整。如A(1)、T(2*m%,n%)、U(i,i+1,i+2)都是合法的数组元素引用。 下标的值必须在数组定义的各维的上下界之内。 要严格区分数组声明中的下标和数组引用中的下标。两者的写法相同,但意义不一样。,三、数组的基本操作,2数组元素初始化 lx4-2

15、lx4-3Dim TestArray (10) As IntegerDim i As IntegerFor i = 0 To 10TestArray(i)=iNext 例如,在下面的例子中,将产生下标越界错误。Dim TestArray(10) As IntegerDim i As InetgerFor i = 0 To 11 If TestArray(i) 1500 Then Print TestArray(i)Next,3数组元素输入 当数组元素较少或只给数组中的几个元素赋值时,可采用赋值语句。 例如: Dim A(10) as integerA(1)= 3A(4)= 7A(7)= 11A

16、(10)= 13, 如果要给数组中的所有元素都提供值,可通过For循环实现。Dim A(10,10) as integerFor i = 0 To 10For j = 0 To 10A( i , j ) = InputBox (“ 输入”& i & “ , ” & j & “ 的值 ”) Next jNext i, 对于较大的数组,一般不用InputBox函数,而使用Array函数为数组元素赋值。 格式:数组变量名= Array ( arglist ) 功能:把一组数据赋给一个数组。 说明: 所需的arglist参数是一个用逗号隔开的值表,这些值用于给Variant所包含的数组的各元素赋值。如

17、果不提供参数,则创建一个长度为0的数组。 例如: Dim A As VariantA=Array(10,20,30)B=A(2), 使用Array函数创建的数组的下界受Option Base语句指定的下界的限制。 例如: Option Base 1 使数组下标从1开始Dim MyWeek , MyDayMyWeek=Array(“Mon“,“Tue“,“Wed“,“Thu“,“Fri“,“Sat“,“Sun“)MyDay=MyWeek(2) MyDay的值为“Tue“。MyDay=MyWeek(4) MyDay的值为“Thu“。,4数组元素的输出 数组元素的输出可以使用For循环和Print语

18、句来实现。 例3.22 用Array函数给数组提供初值,然后用For循环将数组的值输出。 Static Number As Variant Number = Array ( 1,2,3,4,5 ) For i % = 0 To 4Print Number ( % i ) Next,5数组应用举例 1、求一个数据系列中的最大数和最小数lx4-4 2、求二维数组各行的最大元素 lx4-5 3、将一个数据系列最后一个元素移动到第一个位置,其余元素依次移动lx4-6 lx4-6a,例:打印输出杨辉三角,Dim a(1 To 5, 1 To 5) As IntegerFor i = 1 To 5a(i, i) = 1: a(i, 1) = 1 Next iFor i = 3 To 5For j = 2 To i-1a(i, j) = a(i - 1, j - 1) + a(i - 1, j)Next j Next i,For i = 1 To 5Next i,Print Tab(20 - 3 * i);,For j = 1 To iPrint a(i, j); Spc(3);Next j,Print,

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

当前位置:首页 > 高等教育 > 大学课件

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报