标题:请问怎样才能学好循环、数组与函数呢?
只看楼主
小云云
Rank: 1
等 级:新手上路
帖 子:24
专家分:0
注 册:2007-4-5
 问题点数:0 回复次数:8 
请问怎样才能学好循环、数组与函数呢?

很多时候做题时都遇到一些函数就有点不知怎么做,可能因为没有什么语言基础啦!请问怎样才能学好循环、数组与函数呢?

搜索更多相关主题的帖子: 函数呢 语言 基础 
2007-04-24 23:03
海蓝啸
Rank: 5Rank: 5
来 自:安徽
等 级:贵宾
威 望:17
帖 子:1611
专家分:0
注 册:2006-4-3
得分:0 

多写程序,多看程序。。。很多程序语言的经典问题你可以试试做做的。。。如一定范围内素数,完数的判断输出;约瑟夫环问题;汉诺塔等等 。。。。太多了。。。等你都理解了以后这些什么循环,数组你就会运用自如了


这个社会太复杂。。。
2007-04-24 23:14
huangwy
Rank: 1
等 级:新手上路
威 望:2
帖 子:297
专家分:0
注 册:2007-3-23
得分:0 

没那么复杂吧
循环的关键点是循环条件的设置
你只要掌握两种循环就行了
For Next循环和Do While ... Loop循环
For循环的循环条件是起始值和终止值已经确定
要注意的是其中的Step语句
他是指每次循环的步幅,比如
for i=1 to 10 step 2 会执行循环5
i=1,3,5,7,9
for i=1 to 10 step 3
会执行循环4
i=1,4,7,10
注意:循环第一次会执行初值后再增(减)Step 的值
另外你可以向下循环,这时候step 的值是负数
比如
for i=10 to 0 step -1


2007-04-25 11:36
huangwy
Rank: 1
等 级:新手上路
威 望:2
帖 子:297
专家分:0
注 册:2007-3-23
得分:0 
Do While 是当循环条件为真时循环
2007-04-25 11:40
huangwy
Rank: 1
等 级:新手上路
威 望:2
帖 子:297
专家分:0
注 册:2007-3-23
得分:0 

函数其实没有什么深奥的
比如有一段程序是这样的
Private Sub Command1_Click()
Dim i%, XSum%, XTotal%
For i = 1 To 10
XSum = i + 1
Next
For i = 1 To 10
XTotal = XTotal + 1
Next
Print XSum
Print XTotal

End Sub

可以变成如下函数的方式
Function funSum() As Integer

Dim i%, XSum%
For i = 1 To 10
XSum = i + 1
Next
funSum = XSum
End Function

Function FunTotal() As Integer
Dim i%, XTotal%
For i = 1 To 10
XTotal = XTotal + 1
Next
FunTotal = XTotal
End Function

Function funPrint(x As Integer, y As Integer) As Boolean
Print x
Print y
funPrint = True
End Function

Private Sub Command1_Click()
dim i as boolean
i=funprint(funsum(),funtotal())
end sub

当然,现实中没有这么无聊的程序

2007-04-25 11:57
小云云
Rank: 1
等 级:新手上路
帖 子:24
专家分:0
注 册:2007-4-5
得分:0 
回复:(huangwy)函数其实没有什么深奥的比如有一段程...
有时候试题上就碰到那么一些啦!复杂一点的就不知怎么办啦!
就像有下列程序,单击按钮后输出的结果是6 6 12
7 11 11我都不明白是为什么会有这样的结果啦!
Private Sub Command1_Click()
Dim x As Integer ,y As Integer ,z As Integer
x =1:y=2:z=3
Call God (x,x,z)
Print x:x:z
Call God (x,y,y)
Print x:y:y
End Sub
Print Sub God(x As Integer ,y As Integer ,z As Integer)
x=3*z+1
y=2*z
z=x+y
End Sub
2007-04-25 20:37
huangwy
Rank: 1
等 级:新手上路
威 望:2
帖 子:297
专家分:0
注 册:2007-3-23
得分:0 

首先,你的函数定义错了
sub 前不能print

你要有这样的想法,就是要区分函数内和函数外的参数的传递类型
传递类型有按值传递和按引用传递两种,Vb默认是按引用传递参数的,
当传递是按引用传递的时候,函数内的参数会改变调用时传递的参数,
比如上题中,第一个Call,因为是引用传递,所以他们调用后的形式如下:
因为在函数内,y被传递的参数是x
x=1: z=3
x=3*z+1
x=2*z
z=x+x
注意不要被函数的参数迷惑,你可以把它们设置成a,b,c
但是调用后的形式就是上面的形式,因为外部参数地址被传给函数
函数里面的处理是对外部参数的处理


2007-04-26 10:58
ioriliao
Rank: 7Rank: 7Rank: 7
来 自:广东
等 级:贵宾
威 望:32
帖 子:2829
专家分:647
注 册:2006-11-30
得分:0 
像循环这些自己测试下就行了...
如:
for i=1 to 10
debug.print i
netx
debug.print i
把这些结果打印出来...
根据这些结果去想它的运行机制!
至于vb的函数, 你就要看相关的手册了.
数组也是用循环的那种方法去学习.
我不知道对你有用否..但我就是这些学习的..

/images/2011/147787/2011051411021524.jpg" border="0" />
2007-04-26 11:09
小云云
Rank: 1
等 级:新手上路
帖 子:24
专家分:0
注 册:2007-4-5
得分:0 
回复:(huangwy)首先,你的函数定义错了sub 前不能p...
这道题明白了好多,有高手指点就是不同!谢谢!不过那些参数传来传去有点乱了套的样子!也许刚接触到这类题目吧!

[此贴子已经被作者于2007-4-26 16:26:45编辑过]


2007-04-26 16:14



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-134674-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.052381 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved