第5章VB程序设计1_第1页
第5章VB程序设计1_第2页
第5章VB程序设计1_第3页
第5章VB程序设计1_第4页
第5章VB程序设计1_第5页
已阅读5页,还剩83页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

编制电视歌手大赛评分程序,要求评委人数和每位评委的打分从键盘输入,去掉一个最高分,再去掉一个最低分,求评委给出的最后得分。思考与回顾第5章VB编程1—数组应用

(P48,P81~90)任务1(P81-例5-1)随机产生50个两位的整数作为一个班学生的考试成绩,求平均分,最高分、最低分。问题分析1、随机数的产生2、每个随机数的显示-------图片框3、结果的显示-----文本框4、关键算法:最高分,最低分,平均分新知识点----图片框、图像框图片框图像框图片框主要属性Name:名称Picture:显示图片和图像。Autosize属性:决定图片框是否自动适应图片的大小true:图片框自动调整大小适应图片。false:图片框不能自动调整大小,加载的图形保持其原始尺寸。图像框的主要属性Name:名称Picture:显示图片和图象。Strech属性:决定图片是否自动适应控件的大小true:被加载图形自动调整大小适应图像框的大小。false:图像框自动调整大小适应加载的图形。图片设置的方法----picture属性1、设计阶段设置----利用属性窗口2、在程序执行过程中加载。-----------loadpicture()例如:P1.Picture=LoadPicture(“图片所在的位置及文件名”)

P1.Picture=LoadPicture(″D:\Pic1.jpg″)p1.picture=loadpicture(“”)思考在窗体Form1上画一个图片框,名称为P1,高为1900,宽为2400。请编写适当的事件过程,使得在运行时,如果单击窗体,则装入D盘下的文件名为Pic1.bmp的图片;如果双击窗体,则图片框中的图片消失。两个控件的主要区别①图片框可以作为其它控件的容器②图片框可以通过Print方法显示文本如:图片框名称.print表达式③图像框比图片框占用内存少,显示速度快思考与回顾思考主要代码DimiAsIntegerPicture1.ClsFori=1To7Picture1.PrintString(2*i-1,"*")Next应用Fibonacci数列定义如下:

F1=1

F2=1

Fn=Fn-1+Fn-2(n>2)

求Fibonacci数列的前30项。

要求:数列中的每个数显示在图片框中,且每行显示5个数字。Dimf1&,f2&,f3&,i%f1=1f2=1Picture1.Printf1;f2;Fori=3To30f3=f1+f2Picture1.Printf3;IfiMod5=0ThenPicture1.PrintEndIff1=f2f2=f3Next应用随机产生50个两位的整数作为一个班学生的考试成绩,求平均分,最高分、最低分。(P82)要求:(1)利用图片框显示学生的成绩,每行10个。(2)利用文本框显示平均分,最高分,最低分任务1知识点小结1、随机数的产生2、图片框和图像框的使用3、如何利用图片框输出文本信息4、最大数和最小数算法的求解。在若干个数中求最大值,一般先假设一个较小的数为最大值的初值,若无法估计较小的值,则取第一个数为最大值的初值;然后将每一个数与最大值比较,若该数大于最大值,将该数替换为最大值;依次逐一比较。任务2[例5-3]随机产生50个两位整数作为一个班某门课程的成绩,然后求该门课程的平均分并统计高于平均分的人数。

对比:随机产生50个两位的整数作为一个班学生的考试成绩,求平均分,最高分、最低分。数组的基本概念(P48)一维数组应用新知识点-----数组数组的基本概念1、数组的定义:数组是由一定数目的同类元素按一定顺序排列而成的结构数据类型,是一组具有同一名字(数组名)、不同下标的下标变量(数组元素)的集合例1:一个班60名学生的成绩组成一个数组G,每个学生的成绩分别表示为:G(1),G(2),G(3),…,G(i),…,G(60)例2:某厂5个车间全年各季度的产量组成数组P,每个车间每季度的产量分别表示为:P(1,1),P(1,2),P(1,3),P(1,4)P(2,1),P(2,2),P(2,3),P(2,4)P(3,1),P(3,2),P(3,3),P(3,4)P(4,1),P(4,2),P(4,3),P(4,4)P(5,1),P(5,2),P(5,3),P(5,4)2、数组的分类:VisualBasic中的数组,按不同的方式可分为以下几类:按数组的大小(元素个数)是否可以改变来分为:定长数组(静态数组)、动态(可变长)数组。按元素的数据类型可分为:数值型数组、字符串数组、日期型数组、变体数组等。按数组的维数可分为:一维数组、二维数组、多维数组。对象数组:菜单对象数组、控件数组。3、数组的基本要素(1)数组名:数组和变量一样,也用符号名来命名。(2)数组的类型:数组的类型由数组元素的类型来决定。(3)数组的维数:数组的维数即为了区分数组元素所需顺序号的个数。(4)数组的大小:数组的大小即数组中包含数组元素的个数,由数组每维下标的上界和下界来决定。一维数组基础知识1、数组声明定义格式案例方法1:Dim数组名([下界to]上界)as类型方法2:Dim数组名[类型符]([下界to]上界)Dima(1to10)asintegerDima%(1to10)说明:缺省下界,默认下标从0开始缺省类型,为变体类型通用模块定义:Optionbase0|1数组元素个数:上界-下界+12、数组结构逻辑结构:线性表存储结构:线性表数组中各元素在内存占一片连续的存储空间,一维数组在内存中存放的顺序是下标大小的顺序。例如Dimmark(1To100)AsInteger思考与应用1、输入50个学生的一门课程的成绩,然后求其平均分并统计高于平均分的人数。用数组来存放这50个数,则数组应如何定义?2、输入10个学生的总分,求每个学生的名次。3、一维数组元素的引用使用形式:数组名(下标)

其中:下标可以是整型变量、常量或表达式。例如:设有下面的数组定义:DimB(10)AsInteger,A(10)AsInteger则下面的语句都是正确的。A(1)=A(2)+B(1)+5'取数组元素运算A(i)=B(i)'下标使用变量B(i+1)=A(i+2)'下标使用表达式一维数组基本操作基本操作方法案例数组元素值的确定利用赋值语句利用输入函数利用array函数A(1)=5A(1)=val(inputbox(“请输入数据”))DimbB=array(2,3,4,5)数组元素输出利用窗体输出利用文本框输出利用图片框输出Printa(1)Text1.text=a(1)Picture1.printa(1)说明:如果要输入或输出整个数组所有元素,一般配合一重循环结构使用Dima(1to10)asinteger,IasintegerForI=1to10a(I)=2*INextForI=1to10a(I)=val(inputbox(“请输入”+str(I)+”数据“))Next在窗体中输出数组每个元素:fori=1To10Printa(i);Nexti在文本框中输出数组每个元素:Fori=1To10Text1.Text=Text1.Text+","+Str(a(i))Next在图片框中输出数组每个元素Fori=1To10Picture1.Printa(i);Next

编程求输入50个学生的一门课程的成绩,然后求其平均分并统计高于平均分的人数。应用(p83-例5-3)OptionBase1PrivateSubCommand1_Click()Dimi%,avg!,sum!,a(50)AsSingleDimcount%count=0sum=0Fori=1To50a(i)=InputBox("请输入第"+Str(i))Text3.Text=Text3+Space(2)+Str(a(i))sum=sum+a(i)Nextiavg=sum/50Fori=1To50Ifa(i)>avgThencount=count+1EndIfNextiText1.Text=avgText2.Text=countEndSub回顾与应用请定义一个包含10个元素的一维数组,按照赋值a(I)=2*I的规律给各元素赋值,计算输出数组的平均值。随机产生10个[50,100]的整数,求其和。数组计数器。输入10名学生一门课程的考试成绩,统计各分数段的人数。分数段划分如下:优:[95,100]良:[80,95)中:[70,80)及格:[60,69)不及格:<60问题1求一组数(假设10个)中最大数及最大数所在的位置。DimMaxAsInteger,iMaxAsInteger Max=A(1):iMax=1Fori=2To10IfA(i)>MaxThen Max=A(i) iMax=iEndIfNextI问题2将一个数组的元素按逆序重新存放。思考从键盘输入10个数,要求按输入时的逆序输出。关键代码:Fori=1To10\2t=A(i)A(i)=A(10-i+1)A(10-i+1)=tNextI问题3在有序数组a(1ton)(原有n-1个元素)插入一个值Key元素.算法:查找要插入的位置k(1<=k<=n-1)腾出位置,把最后一个元素开始到第K个元素往后移动一个位置第k个元素的位置腾出,就可将数据Key插入在有序的一组数中,插入一个数后,仍保持有序。思考有一个已排好序的数组,再输入一个数,要求按原来排序的规律将它插入数组中。Dima(1To11)AsIntegerDimi%,x%'从小到大的一组数据Fori=1To10a(i)=Val(InputBox("请输入"+Str(i)+"个数据"))Nextx=Val(InputBox("请输入要插入的数据"))Fori=1To10If(x<a(i))ThenExitFor‘查找位置NextForj=10ToiStep–1‘挪动数据a(j+1)=a(j)Nexta(i)=x‘插入数据Fori=1To11Printa(i)Next问题4算法:A、确定位置(查找)B、挪动位置删除一个数(假定不存在重复的数据或删除找到的第一个数)Dimb(1To10)AsInteger,x%Fori=1To10b(i)=Val(InputBox("请输入数据"))Nextx=Val(InputBox("请输入要删除的数据"))Fori=1To10If(x=b(i))ThenExitFor‘查找是否有要删除的数据及位置“NextForj=i+1To10‘挪动位置b(j-1)=b(j)NextFori=1To9‘输出Printb(i);Next任务2:知识点小结一维数组的定义一维数组的元素的引用数组的输入与输出数组的简单应用求最大值、最小值及平均值按逆序重新存放数据在一组有序的数组中,插入一个数。删除一个数综合应用1、用数组保存随机产生的10个介于20~50之间的整数,求其中的最大数、最小数和平均值,然后将10个随机数和最大数以及平均值显示在窗体上。2、用数组求F数列的前20项,并按照每行5个打印在图片框控件中。任务3----数据排序实现一组数据从小到大排序实现一组数据从大到小排序排序的实现----两个常用算法(1)选择法排序(2)冒泡法排序思想:1)假设某个位置的数是最大/小的。2)验证是否是最大/小的3)验证过程中标记最大/小数的位置4)交换选择法排序问题与思考问题1:利用选择法求10个数中的最大数,并把找出的最大数放到数组中的第一个数的位置。问题2:将10个数从大到小排列后输出思考:把一组数从大到小排序Fori=1Ton-1p=iForj=i+1TonIfa(j)>a(p)Thenp=jNextjtemp=a(i)a(i)=a(p)a(p)=tempNexti选择法排序(降序)的VB程序:思想:两两比较,(数组中相邻的两个数进行比较)大数放在后面,小数放在前面。冒泡法排序问题与应用1)利用冒泡法求10个数中的最大数。给出10个数找出最大数输出最大数2)利用冒泡法把10个数从小到大排序Fori=1Ton-1Forj=1Ton-iIfa(j)>a(j+1)Thentemp=a(j)a(j)=a(j+1)a(j+1)=tempEndifNextjNexti冒泡法排序(升序)的VB程序:思考PrivateSubCommand1_Click()Dimi%,j%,t%,p%Text2.Text=""Fori=1To9p=iForj=i+1To10Ifa(j)<a(p)Thenp=jNextjIfp<>iThent=a(p)a(p)=a(i)a(i)=tEndIfNextiFori=1To10Text2.Text=Text2+Space(2)+Str(a(i))Nexti

EndSubPrivateSubCommand2_Click()EndEndSubPrivateSubCommand3_Click()Dimi%,j%,t%Text2.Text=""Fori=1To9Forj=1To10-iIfa(j)>a(j+1)Thent=a(j)a(j)=a(j+1)a(j+1)=tEndIfNextjNextiFori=1To10Text2.Text=Text2+Space(2)+Str(a(i))NextiEndSubPrivateSubCommand4_Click()Dimi%Text1.Text=""Text2.Text=""Fori=1To10a(i)=InputBox("请输入第"+Str(i)+"个数据")Text1.Text=Text1+Space(2)+Str(a(i))NextiEndSub用随机函数产生50个[10,100]的随机整数,并按照由小到大的顺序打印出来。程序界面如下:应用OptionBase1Dima(50)AsIntegerPrivateSubCommand1_Click()Dimi%RandomizeText1.Text="排序前的数据"+vbCrLfFori=1To50a(i)=Int(91*Rnd+10)Text1.Text=Text1.Text+""+Str(a(i))NextEndSubPrivateSubCommand2_Click()Dimi%,j%Fori=1To49Forj=1To50-iIf(a(j)>a(j+1))Thent=a(j):a(j)=a(j+1):a(j+1)=tEndIfNextjNextiText1.Text=Text1.Text+vbCrLfText1.Text=Text1.Text+"排序后的结果"+vbCrLfFori=1To50Text1.Text=Text1.Text+""+Str(a(i))Nexti任务3知识点小结数据排序的常用算法(1)冒泡排序法(2)选择排序法任务4-----动态数组动态数组:

在声明时未给出数组的大小。定长数组(静态数组)是在程序编译时分配存储空间,而动态数组是在程序执行时分配存储空间。动态数组使用

1、建立动态数组,分以下两个步骤:数组声明数组大小说明格式:Dim数组名()As数据类型Dim数组名类型符()例:Dima()AsInteger或dima%()(1)使用Dim语句声明括号内为空的数组(2)在程序中用ReDim语句指明该数组的大小。Preserve参数:保留数组中原来的数据例:

RedimA(10)

RedimPreserveA(20)格式:ReDim[Preserve]数组名(下标1)可以常量或有确定值的变量应用输入n个数据,求最大数输入N个数据,从小到大的顺序输出。输入N个学生的总分,求每个学生的名次。Optionbase1PrivateSubCommand1_Click()Dima()AsIntegerDimn%n=Val(InputBox("请输入数组的个数"))ReDima(n)a(1)=Val(InputBox("请输入第一个数"))Text2.Text=Text2.Text+Str(a(1))Max=a(1)Fori=2Tona(i)=Val(InputBox("请输入第"&i&"个数"))Text2.Text=Text2.Text+Space(2)+Str(a(i))Ifa(i)>MaxThenMax=a(i)EndIfNexti任务5给定5个学生4门课程的成绩,求其每个学生的总分及每门课程的平均分.新知识:二维数组及多维数组1、二维数组的声明声明格式如下:Dim数组名([<下界>]to<上界>,[<下界>to]<上界>)[As<数据类型>]其中的参数与一维数组完全相同。例如:Dima(3,3)AsSingle

逻辑结构:表格/矩阵物理结构:线性表二维数组在内存的存放顺序是“先行后列”。2、二维数组的存储形式A(1,1)A(1,2)A(1,3)A(2,1)A(2,2)A(2,3)A(3,1)A(3,2)A(3,3)3、二维数组元素的引用引用形式:数组名(下标1,下标2)例如:

a(1,2)=10a(i+2,j)=a(2,3)*2在程序中来说,通过二重循环来操作使用二维数组元素。4、二维数组的基本操作(1)二维数组数据值的确定(赋值语句或输入函数)(2)求最大元素及其所在的行和列1)二维数组数据的输入Dima(1to4,1to5)AsInteger,i%,j%A、给二维数组a输入数据的程序段如下:Fori=1to4Forj=1to5A(i,j)=Val(InputBox("a("&I&","&j&")=?"))NextjNexti2)求最大元素及其所在的行和列

Max=a(1,1):row=1:Column=1Fori=1ToNForj=1ToMIfa(i,j)>a(row,Column)ThenMax=a(i,j)row=iColumn=jEndIfNextjNextiPrint"最大元素是";MaxPrint"在第"&row&"行,";"第"&Column&"列"应用1给定5个学生4门课程的成绩,求其每个学生的总分及每门课程的平均分.应用2(P89)打印杨辉三角形。11112113311464115101051应用3计算n行n列组成的二维数组的两个对角线上各元素之和OptionBase1PrivateSubCommand1_Click()Dima()AsIntegerDimi%,j%,sum%,n%n=Val(InputBox("请输入二维数组的大小"))ReDima(n,n)Fori=1TonForj=1Tona(i,j)=Int(11*Rnd+10)Printa(i,j);NextPrintNextsum=0Fori=1TonForj=1TonIf(i=j)Thensum=sum+a(i,j)If(i+j=n+1)Thensum=sum+a(i,j)

NextNextPrintsumEndSub任务5—知识点小结二维数组的定义二维数组元素的引用二维数组的输入和输出二维数组的基本操作求最大数等等给定M个学生N门课程的成绩,求其每个学生的总分及每门课程的平均分.应用OptionBase1PrivateSubCommand1_Click()Dimgrade()AsSingleDimzong()AsSingleDimpin()AsSingleDimi%,j%,m%,n%m=Val(InputBox("请输入数组的行数"))n=Val(InputBox("请输入数组的列数"))ReDimgrade(m,n)ReDimzong(m)ReDimpin(n)Fori=1TomForj=1Tongrade(i,j)=Val(InputBox("请输入每个同学成绩"))NextjNextiFori=1Tomzong(i)=0Forj=1Tonzong(i)=zong(i)+grade(i,j)NextjNextiForj=1Tonpin(j)=0Fori=1Tompin(j)=pin(j)+grade(i,j)Nextpin(j)=pin(j)/mNextFori=1TomForj=1TonPrintgrade(i,j);NextPrintzong(i)NextForj=1TonPrintpin(j);NextEndSub任务6:与数组操作有关的函数及语句1、Array函数Array函数可方便地对数组整体赋值,但它只能给声明Variant的变量或仅由括号括起的动态数组赋值。赋值后的数组大小由赋值的个数决定。例如,要

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论