夏季学期算法与程序设计复习提纲.docx
《夏季学期算法与程序设计复习提纲.docx》由会员分享,可在线阅读,更多相关《夏季学期算法与程序设计复习提纲.docx(20页珍藏版)》请在冰豆网上搜索。
夏季学期算法与程序设计复习提纲
2010-2011年夏季学期算法与程序设计复习提纲
目录:
一、VB开发流程
二、VB相关文件
三、VB编程相关概念
四、VB语言
五、程序结构
六、常用算法
七、经典实例
一、VB开发流程
二、VB的相关文件类型
1、窗体文件:
*.frm
2、工程文件:
*.vbp
3、可执行文件:
*.exe
4、二进制文件:
*.frx(当在窗体上设置了图标图片等)
三、VB编程的相关概念
1、对象:
可以看作一个整体,具有一定属性和方法的事物。
VB的对象包括窗体和控件。
对象名称是代码中对它的称呼,VB靠它来识别对象,每一个对象都有一个唯一的名字。
2、常见对象:
窗体(form)
标签(label)
按钮(commandbutton)
文本框(textbox)
计时器(timer)
图像(Image)
3、容器对象:
可以在其中放置其他对象的对象。
Vb中的容器有:
窗体、框架、PictureBox。
4、对象方法:
方法:
对象具有的功能。
它是对象提供的是特定的函数或过程。
但方法与函数不同,方法属于对象,而函数不属于对象。
常见方法:
Print
作用:
窗体上输出,可接变量,表达式,提示语言。
应用实例:
Printa
Printx^2
Print“请输入一个数”
Print“请输入第”&n&“个数”
Pset
作用:
画点
语法1:
pset(x,y)[,color]
▲语法2:
pset[Step](x,y),[color]
Line
作用:
画线
语法1:
line(x1,y1)-(x2,y2)[,color][,b][f]
▲语法2:
line-(x,y)表示上一条直线的终点坐标作为本次的起点坐标
应用实例:
Line(0,0)-(2000,2000)
Line(0,0)-(2000,2000),vbred
Line(0,0)-(2000,2000),vbred,b
Line(0,0)-(2000,2000),vbred,bf
Circle
作用:
窗体上画圆
语法1:
Circle(x,y),r,[color]
▲语法2:
Circle[Step](x,y),r,[color,start,end,aspect]
Step:
不是必须的项目,是相对于当前点的坐标。
例:
CurrentX=1000·
CurrentY=2000
CircleStep(1000,500),400,vbRed
Start,end:
分别表示开始和结束的弧度。
范围是-2π~2π,逆时针画圆,弧度为正,画圆,弧度为负,画扇形。
例:
Circle(1000,500),400,vbRed,-2,-3
Circle(1000,500),400,vbRed,2,3
Circle(1000,500),400,vbRed,-2,3
Aspect:
画圆的纵横比。
应用实例:
Circle(scalewidth/2,scaleheight/2),1000,vbred
Cls:
作用:
清除当前窗体上的文字和线条
▲Show,hide窗体显示和隐藏
Form1.Show
Form1.Hide
VB窗体坐标系示意图
Y轴
X轴
(0,0)
▲变换坐标系:
Scale(x1,y1)-(x2,y2)
(x1,y1):
新坐标系左上角坐标
(x2,y2):
新坐标系右下角坐标
Scale(-1000,1000)-(1000,-1000)变换坐标系后,新坐标系原点坐标是在窗体中心,宽度为2000单位,高度为2000单位。
如下图所示,例:
Scale(-1000,1000)-(1000,-1000)
Circle(0,0),500,vbred
4、事件:
事件:
是指能被对象所识别的消息(动作)。
如单击Click、载入load、激活Activate等
事件过程的框架为:
Sub对象名字_事件名称(参数…)
……
EndSub
常用事件:
鼠标事件:
Click
窗体事件:
Activate,Load
时钟事件:
Timer
改变事件:
Change(滚动条,文本框)
5、常见属性:
标志对象的一些性质。
Caption:
显示标题,在对象表面显示。
Name:
是标识,VB靠它来识别对象,只能在设计状态下用
Visible:
确定是否可见。
取值True/False默认为True,表示可用。
Enabled:
确定是否可操作,取值True/False,False为禁止操作。
Forecolor:
确定前景颜色
Top:
确定对象离顶部距离
Left:
确定对象离左边距离
Height:
对象的高度,单位是twip缇,即:
1/1440inch
Width:
确定对象的宽度。
单位是twip,即:
1/1440inch
Scaleheight:
对象内部高度,不包括窗体边缘
Scalewidth:
对象内部宽度,不包括窗体边缘
Autosize:
对象的大小是否随标题的大小自动调整,取值True/False
AutoRedraw:
让窗体上的图形和打印字符持久输出,取值True/False
Picture:
放置图片的属性,记录图片路径
Interval:
时间间隔,以1/1000秒为单位
四、VB语言
1、Print:
在窗体上输出文字信息
2、End:
结束程序
3、Cls:
清除窗口内容
4、=:
赋值语句
5、Msgbox:
消息框语句语法:
msgbox(“要显示的内容”)
6、inputbox:
输入框语句语法:
a=inputbox(“提示的内容”)
7、常用函数:
Time:
取系统时间
Abs:
绝对值
Rnd:
产生到0到1的随机小数
Randomize:
随机函数初始化
Sqr:
求平方根a=sqr(5)a=5^(1/2)
Rgb(r,g,b):
由三原色合成一个颜色:
r,g,b的取值都是0~255
Qbcolor(a):
颜色函数:
a的取值是0~15
Val:
把字符串转化为数值
Int:
去掉数字的小数部分
▲Str:
把数字串转化为字符串
▲Chr:
把ASCII码转化为对应的字符
▲Asc:
字符的相应ASCII码值
8、常用运算符
⏹+
⏹-
⏹()
⏹*(乘)
⏹/(除)
⏹\(整除)
⏹mod(求余数)5mod3结果为2
⏹^(求幂)
⏹&(字符串连接):
"123"&"456"结果"123456"
9、关系运算符
⏹关系运算符
⏹等于=
⏹大于等于>=
⏹大于>
⏹小于等于<=
⏹小于<
⏹不等于<>
10、逻辑运算符
⏹非(NOT)
⏹与(AND)
⏹或(OR)
五、三大程序结构:
1、顺序结构:
按从上到下,从左到右的顺序运行
例子1:
顺序结构画多个圆
Circle(1500,1500),100
Circle(1500,1500),200
Circle(1500,1500),300
Circle(1500,1500),400
2、分支结构:
格式1:
If条件then
语句1
Endif
格式2:
If条件then
语句1
else
语句2
Endif
格式3:
If条件1then
命令语句1
Elseif条件2then
命令语句2
Elseif条件3then
命令语句3
Else
命令语句4……
Endif
例子2:
从键盘上输入一个数,判断这个数是奇数还是偶数
a=InputBox("请输入一个数",a)
IfaMod2=0Then
Print"这个数是偶数"
Else
Print"这个数是奇数"
EndIf
3、循环结构:
格式1:
While条件
循环体
Wend
格式2:
For(循环控制变量)=(初值)To(终值)[Step(步长)]
(循环体——即需要多次执行的语句)
Next(循环控制变量)
例子3:
计算1+2+3+4+……+20的值,将结果输出
n=1
s=0
whilen<=20
s=s+n
n=n+1
wend
prints
例子4:
Fori=1To20
Circle(ScaleWidth/2,ScaleHeight/2),100*i,vbred
Nexti
六、常见算法:
1、累加:
求1~100的和
Sum=0
Fori=1To100
Sum=Sum+i
EndIf
Nexti
PrintSum
2、累乘
求3~10的乘积
s=1
Fori=3To10
s=s*i
Nexti
Printt
3、穷举法:
穷举法的思路:
列举出所有可能的情况,逐个判断有哪些是符合问题所要求的条件,从而得到问题的解答。
用于解决“是否存在”和“有多少可能性”等类型问题。
假设密码是一个5位数。
只记得密码为67□□8,其中百位和十位的数字记不清了,但知道该数能够被78整除,也能被67整除。
同学们能不能设计一个算法帮找出这个密码。
DimdAsLong
Dima1,a2AsInteger
Fora1=0To9
Fora2=0To9
d=67000+a1*100+a2*10+8
If(dMod78=0)And(dMod67=0)ThenPrintd
Nexta2
Nexta1
穷举法经典案例:
百元买百鸡问题。
假定小鸡每只5角,公鸡每只2元,母鸡每只3元。
现在有100元钱要求买100只鸡,编程列出所有可能的购鸡方案。
设母鸡、公鸡、小鸡各为x、y、z只,根据题目要求,列出方程为:
x+y+z=100
3x+2y+0.5z=100
三个未知数,两个方程,此题有若干个解。
解决此类问题采用“试凑法”,把每一种情况都考虑到。
方法一:
最简单三个未知数利用三重循环来实现。
方法二:
从三个未知数的关系,利用两重循环来实现。
参考代码:
Forx=0To33
Fory=0To50
z=100-x-y
Ifx*3+y*2+z/2=100Then
Printx,y,z
EndIf
Nexty
Nextx
4、冒泡法:
冒泡法的思路:
从最下面一个元素起,依次比较相邻的两个元素中的数据,将较小的数据调换到上面,小元素像气泡一样上浮。
冒泡法对5个数排序
Dima(5)AsInteger
DimiAsInteger
DimjAsInteger
PrivateSubForm_Activate()
Fori=1To5
a(i)=InputBox("")
Nexti
Fori=1To4
Forj=5Toi+1Step-1
Ifa(j)t=a(j)
a(j)=a(j-1)
a(j-1)=t
EndIf
Nextj
Nexti
Fori=1To5
Printa(i)
Nexti
EndSub
七、
经典实例:
1、从键盘上输入x的值,输出分段函数y的值。
x=InputBox("请输入x的数值",a)
ifx<-2then
y=2*x
elseifx>=-2Andx<=2then
y=3
elseifx>2then
y=-3*x+1
endif
printy
2、绘制双色圆:
x=ScaleWidth/2
y=ScaleHeight/2
DrawWidth=5
Fori=1To10
IfiMod2=0Then
Circle(x,y),i*200,vbRed
Else
Circle(x,y),i*200,vbGreen
EndIf
Nexti
3、100个下降圆
Dimx(100)AsInteger
Dimy(100)AsInteger
Dimr(100)AsInteger
Dimd(100)AsInteger
Dimcolor(100)AsLong'color是长整型
PrivateSubForm_Load()
Randomize
Fori=1To100
x(i)=Rnd*Form1.ScaleWidth
y(i)=Rnd*Form1.ScaleHeight
r(i)=Rnd*500
d(i)=Rnd*100+20
color(i)=RGB(Fix(Rnd*256),Fix(Rnd*256),Fix(Rnd*256))
Nexti
EndSub
PrivateSubTimer1_Timer()
Fori=1To100
Circle(x(i),y(i)),r(i),BackColor
Ify(i)>=Form1.ScaleHeightThen
y(i)=0
EndIf
y(i)=y(i)+d(i)
Circle(x(i),y(i)),r(i),color(i)
Nexti
EndSub
4、模仿Windows登陆,对密码进行判断。
PrivateSubCommand1_Click()
IfText1.Text="student"AndText2.Text="123"Then
Label4.Caption="用户名和密码正确!
"
Else
Label4.Caption="用户名和密码错误!
"
EndIf
n=n+1
Ifn=3AndLabel4.Caption<>"用户名和密码正确!
"Then
Form1.Enabled=False
Label4.Caption="你已经输入错误3次,系统被锁定"
EndIf
EndSub
PrivateSubCommand2_Click()
Text1.Text=""
Text2.Text=""
Label4.Caption=""
EndSub
PrivateSubCommand3_Click()
End
EndSub
5、输入一个三位数,反向输出
PrivateSubCommand1_Click()
a=Val(Text1.Text)
X1=a\100
X2=(a-X1*100)\10
x3=a-X1*100-X2*10
Text2.Text=x3*100+X2*10+X1
EndSub
PrivateSubCommand2_Click()
Text1.Text=""
Text2.Text=""
EndSub
6自动升旗
PrivateSubCommand1_Click()
Timer1.Enabled=True
Timer2.Enabled=False
Command2.Enabled=False
EndSub
PrivateSubCommand2_Click()
Timer2.Enabled=True
Timer1.Enabled=False
Command1.Enabled=False
EndSub
PrivateSubTimer1_Timer()
IfImage2.Top>Image1.TopThen
Image2.Top=Image2.Top-200
Else
Command2.Enabled=True
EndIf
EndSub
PrivateSubTimer2_Timer()
IfImage2.Top+Image2.HeightImage2.Top=Image2.Top+200
Else
Command1.Enabled=True
EndIf
EndSub
7、图片放缩与移动
PrivateSubCommand1_Click()
Image1.Left=Image1.Left+10
EndSub
PrivateSubCommand2_Click()
Image1.Left=Image1.Left-10
EndSub
PrivateSubCommand3_Click()
Image1.Top=Image1.Top-10
EndSub
PrivateSubCommand4_Click()
Image1.Top=Image1.Top+10
EndSub
PrivateSubCommand5_Click()
Image1.Width=Image1.Width+10
EndSub
PrivateSubCommand6_Click()
Image1.Width=Image1.Width-10
EndSub
PrivateSubCommand7_Click()
Image1.Height=Image1.Height+10
EndSub
PrivateSubCommand8_Click()
Image1.Height=Image1.Height-10
EndSub