编程基础:迭代
计算中一个非常重要的部分是迭代的概念,即重复相同的操作。你可能每天都在使用迭代。例如,在留校察看期间写罚写;你写一些句子,检查是否达到句子限制,如果没有,你就再写一些句子,检查是否达到句子限制,以此类推,直到你达到句子限制,然后你就可以停止了。
'Programmers are lazy and can get computers to write detention lines for them
'they are also lazy as they can do a declaration and assignment at the same time:
dim count as integer = 0
While count <= 100
console.writeline(count & ". I should always do my programming homework.")
count = count + 1
End While
0. 我应该始终完成我的编程作业。
1. 我应该始终完成我的编程作业。
2. 我应该始终完成我的编程作业。
3. 我应该始终完成我的编程作业。
...
100. 我应该始终完成我的编程作业。
理解练习:While 循环
在回答这些问题之前,请仔细思考。 答案
|
另一个例子可能是电脑游戏,其中汽车的速度在加速踏板踩下时一直增加,直到达到最高速度。
dim maxSpeed as integer = 120
dim speedNow as integer = 0
dim pedalDown as boolean = True
While speedNow < maxSpeed And pedalDown
console.writeline(speedNow)
speedNow = speedNow + 1
End While
console.writeline("MAXSPEED!")
0
1
2
3
...
119
MAXSPEED!
练习:While 循环 编写一个程序,从 20 计数到 60(包含 20 和 60),如下所示 代码输出
20 答案 dim count as integer = 20
While count <= 60
console.writeline(count)
count = count + 1
End While
编写一个程序,接收输入并输出该数字的乘法表 代码输出
输入一个数字:7 答案 dim count as integer = 1
dim times as integer
console.write("insert a number: ")
times = console.readline()
While count <= 10
console.writeline(count & " * " & times & " = " & count * times)
count = count + 1
End While
编写一个程序,将 10 到 20(包含 10 和 20)的所有数字加在一起,最后输出结果 答案 dim count as integer = 10
dim total as integer = 0
While count <= 20
total = total + count
count = count + 1
End While
console.writeline("the total is: " & total)
|
while 循环:例如
While not top speed Do increase speed End
dim speed as integer = 0
While speed < 120
console.writeline(speed)
speed = speed + 1
End While
0
1
...
118
119
另一种 while 循环是 Do-While 循环。它与 While 循环略有不同,因为你是在检查是否需要再次执行任务之前执行任务的。这意味着无论检查结果如何,你都会执行该任务。
Do increase speed While not top speed End
Visual Basic 使用一些略微不同的语法处理这个问题
console.write("how old are you?")
age = console.readline()
Do
console.writeline(age & " year olds should attend school!")
age = age + 1
Loop Until age > 17
console.writeline(age & " is too old to attend school!")
这对年轻的学生来说很棒
你多大了? 15
15 岁的孩子应该去上学!
16 岁的孩子应该去上学!
17 岁太大了,不能去上学了!
但是,当我们遇到一个 78 岁的老人时,我们就遇到了问题
78 岁的老人应该去上学!
78 岁太大了,不能去上学了!
练习:Do While 和 While Do 对于上面那个有问题的例子,将 Do While 重写为 While Do 循环 答案 console.write("how old are you?")
age = console.readline()
While age < 17
console.writeline(age & " year olds should attend school!")
age = age + 1
End While
console.writeline(age & " is too old to attend school!")
|
使用每个循环时要小心!
你可能遇到的最复杂的工具是 for 循环。这是一个美化后的 While 循环,不要被它复杂的外观吓倒。它通常也是在 Visual Basic 中进行迭代的最简单方法之一。
For (speed = 0, not top speed, increase speed) drive
在 vb 中使用它要容易得多
For speed = 0 to 120
drive()
Loop
For 循环也允许你向下计数。例如,如果你要创建一个倒计时到目标的计时器。为此,我们使用step - 1
代码,从而得到以下代码
For x = 10 To 1 Step -1
Console.Write(x & ",")
Next
console.writeline("Test over!")
显示
10,9,8,7,6,5,4,3,2,1,测试结束!
练习:For 循环 编写一个 for 循环,显示 40 次“我会吃我的蔬菜”这句话 答案 for x = 1 to 40
console.writeline("I will eat my greens")
next
编写一段代码,输入一个较小的数字和一个较大的数字,然后在屏幕上显示这些数字,从较小的数字开始,依次显示每个数字,直到达到较大的数字。使用 for 循环,它应该显示以下内容 代码输出
输入较小的数字:10 答案 dim lower, higher as integer
console.write("insert lower number: ")
lower = console.readline()
console.write("insert higher number: ")
higher = console.readline()
For x = lower to higher
console.writeline(x)
Next
编写一个 for 循环,输出频率:100,200,300,400,...,20000。提示,你可能想从 1 开始并乘以。记住 答案 For x = 1 to 200
console.beep(x* 100, 100)
Next
让计算机不断询问用户是否“准备发射?”。如果他们说“是”以外的任何内容,就继续询问这个问题。如果他们说“是”,就从 5 开始倒计时,最后显示“发射!”。 代码输出
准备发射? 否 扩展:如果你真的想展示你如何使用 case 语句,让它说:五、四、三、二、一,而不是显示数字 答案 Dim answer As String
Do
Console.Write("Ready to launch? ")
answer = Console.ReadLine()
Loop While answer <> "Yes"
For x = 5 To 1 Step -1
Console.WriteLine(x)
Next
Console.Write("BLAST OFF!")
|
你已经了解了三种主要的迭代类型,其中一些比其他的更适合解决某些问题
- While Do
- Do While
- For
点击这里了解更多信息
有时,将多个循环组合在一起可能是一个好主意。看看这个例子
For x = 1 to 10
console.writeline(x & " : ")
for y = 0 to 10
console.writeline(x & " * " & y & " = " & x * y)
Next
Next
这段代码使用嵌套循环打印出乘法表。你在学校花了那么多时间学习的那些乘法表,现在可以用六行代码重新编写了!
1
1 * 0 = 0
1 * 1 = 1
1 * 2 = 2
1 * 3 = 3
1 * 4 = 4
1 * 5 = 5
1 * 6 = 6
1 * 7 = 7
1 * 8 = 8
1 * 9 = 9
1 * 10 = 10
2
2 * 0 = 0
...
练习:循环的循环 编写一个嵌套 for 循环,显示一个圣诞树,如下所示 代码输出
\ 答案 For x = 1 to 5
For y = 1 to x
Console.Write("\")
Next
Console.WriteLine()
Next
调整上面的代码,让用户输入树的高度 答案 dim h as integer
console.writeline("please insert a height")
h = console.readline()
For x = 1 to h
For y = 1 to x
Console.Write("\")
Next
Console.WriteLine()
Next
|