家庭作业帮助 - 读取代码和计算整数



我需要一些帮助来理解我们的老师试图传达的概念。这是一个开始的VBA访问课程,我们刚刚编写了我们的第一个简单项目。不幸的是,我不确定我是否没有掌握这个概念,因为他没有解释清楚,或者他是否解释得很差。我要求某人观看这个 4 分钟的视频,看看他们是否可以理解它,如果是这样,也许可以拿一个示例代码并进一步解释它。

http://www.ciselearn.com/240/240ReadCode/240ReadCode.html

我只是想了解他从哪里得到他在视频中引用的数字。

提供的问题之一的示例如下

Private Sub cmdQuestions5_Click()
Dim intEntry as Integer
intEndtry = 7
Select Case intEntry
Case 1
lblBox.Caption = 1 + intEntry
Case 2
lblBox.Caption = 2 + intEntry
Case 3
lblBox.Caption = 3 + intEntry
Case 4 to 8
If intEntry > 7 Then
lblBox.Caption = 8 + intEntry
ElseIf intEntry > 6 Then
lblBox.Caption = 7 + intEntry
Else
lblBox.Caption = 6 + intEntry
End If
Case Else
lblBox.Caption = 20
End Select
End Sub

它应该等于 14,但即使在观看视频后我也不知道这个数字是从哪里来的。任何帮助或进一步的解释将不胜感激。

警告 :当我开始时,这似乎更容易解释,而且我在完成它时一直在大声笑,但与其扔掉它,不如发布它。 这可能会让您更加困惑,或者可能不会。 每个人的学习方式都不同。 对不起,如果我让事情变得更糟!


重点:该视频与您发布的问题无关,也与谁不帮助您解决问题无关。

无论如何,我对视频的看法:

请注意,他将视频称为">用来读取代码的方法"。每个人都有不同的学习方式(他知道这一点),尤其是在数学和逻辑方面(在我看来),在我看来,他承认这一点,所以不要太紧张。

我发现视频很难理解,我遇到问题的主要部分是指"循环"的数量(在他的第一列中)。

  • intH从 1 数到 3。
  • 每次intH更改时,intQ计数从 2 到 1。(步骤 -1 表示向后数 1。

在我的脑海中,我是这样想的:

  • 第一个 FOR 语句运行:现在intH= 1。 所以这是循环#1
  • 现在,下一个 FOR 语句从intQ= 2 开始运行。 所以这是循环#1-2
  • 然后intQ减少 1。所以这是循环#1-1
  • 现在intH将增加 1,所以这是循环#2

等等..

因此,按顺序,我将"循环位置"视为:

1
1-2
1-1
2
2-2
2-1
3
3-2
3-1

不确定这是否更有意义。很难用文字描述思维过程。

另一个循环中的循环称为嵌套循环。


这是我头顶的另一个嵌套循环...

  • 我有5个孩子。(我实际上不认为那会很糟糕。
  • 我将它们命名为K1K5
  • 每次我对一个孩子大喊大叫准备睡觉时,他们都需要刷牙进入PJ。
  • 由两部分组成:刷(部分#1)和刷牙(部分#2)
  • PJ由两部分组成:上衣(衬衫)和下装(裤子)。
  • 我的孩子很糟糕,不会一起做任何事情,除非我对他们大喊大叫,否则也不会做任何事情(所以我必须单独对他们每个人大喊大叫才能完成每项任务。

>

(开始程序"让孩子准备好睡觉")

(开始循环"孩子")

我对K1大喊Kid=1

K1准备睡觉!

(开始子循环"画笔")

K1刷!

K1梳头!Brush=1

K1刷牙!Brush=2

(结束子循环"画笔")

(开始子循环"PJ")

K1进入你的PJ!

K1进入你的PJ上衣!PJs=1

K1进入你的PJ底裤!PJs=2

(结束子循环"PJ")

(K1 现在准备睡觉了。

下一个孩子...

我对K2大喊Kid=2

K2准备睡觉!

(开始子循环"画笔")

K2刷!

K2梳头!Brush=1

K2刷牙!Brush=2

(结束子循环"画笔")

(开始子循环"PJ")

K2进入你的PJ!

K2进入你的PJ上衣!PJs=1

K2进入你的PJ底裤!PJs=2

(结束子循环"PJ")

(K2 现在可以睡觉了。

。等等。

那么,当所有5个孩子都准备好时,我喊了多少次?

这是循环:

Sub GetKidsReadyForBed()
Dim Kid As Integer, Brush As Integer, PJs As Integer
Debug.Print "(Time to get the kids ready for bed.)"
For Kid = 1 To 5
Debug.Print "(Prepare to yell at Kid #" & Kid & ")"
For Brush = 1 To 2
Debug.Print "YELL @ Kid #" & Kid & " Brush part #" & Brush & "!"
Next Brush
For PJs = 1 To 2
Debug.Print "YELL @ Kid #" & Kid & " Put on PJs part#" & PJs & "!"
Next PJs
Debug.Print "(Finished yelling at Kid #" & Kid & ")"
Next Kid
Debug.Print "(All Kids are finally ready for bed.)"
End Sub

每个孩子被喊了4次。 (画笔 * 2) + (睡衣 * 2)

我有5个孩子,所以喊叫次数: ( (画笔 * 2) + (PJ * 2) ) * 5

所以:

( 2 + 2 ) * 5

所以:

4 * 5 = 20 yells in total.

(如果您不知道 Debug.Print 的用途,请询问您的老师为什么还没有告诉您。 这是我理解代码如何工作的主要工具!


至于你发布的代码,你说你知道Select..Case是如何工作的? 如果是这样,这应该很简单:

逐行单步执行代码:

intEndtry = 7

好的,intEndtry的值是 7。

Select Case intEntry

让我们根据intEndtry的值选择要运行的行

Case 1

intEndtry= 1 吗? 不。 跳到下一个可能的情况。

Case 2

intEndtry= 2 吗? 不。 跳到下一个可能的情况。

Case 3

intEndtry= 3 吗? 不。 跳到下一个可能的情况。

Case 4 to 8

intEndtry在 4 到 8 之间吗?是的! 不要跳过。

If intEntry > 7 Then

intEndtry超过 7 个吗? 不。 跳到"其他"或"如果"。

ElseIf intEntry > 6 Then

intEndtry超过 6 个吗?是的! 不要跳过。

lblBox.Caption = 7 + intEntry

Make lblBox.Caption = 7 + intEntry 所以,lblBox.Caption = 7 + 7

Else

此 ELSE 不适用,因为前面的 IF 语句条件匹配。 结束如果 案例其他

选择..案例陈述的 ELSE 不适用,因为我们已经有匹配项。

End Select

做。 所以我们做的最后一件事就是做lblBox.Caption = 7 + 7

清澈如泥?:-)

我建议你把页面的副本带给老师,告诉他你至少尽力了...... 你应该为此获得奖励分数!

不要气馁,肯定有一个学习曲线。

祝你好运!

最新更新