小柯 發問時間: 電腦與網際網路程式設計 · 2 0 年前

vb迴圈問題

Private Type Point

x As Single

y As Single

End Type

Private Sub Form_Activate()

Dim pt(0 To 10) As Point

a = -6

b = 4

n = 10

c = (b - a) / (n)

'先求11個點並且存起來

For i = 1 To 11

x = a + i - 1 * c

y = -0.5 * x

pt(i-1).x=x

pt(i-1).y=y

next

'開始計算面積

For i = 1 To 10

area = ((pt(i-1).y + 2) + (pt(i).y + 2) * c) / 2

Print "(x" & i - 1 & ", y" & i - 1 & ")=" & "(" & pt(i-1).x & "," & pt(i-1).y & ")"

Print "area" & i - 1&; "="; area

Next i

End Sub

誰能幫我解釋一下上面這個程式呢??這是一位網友寫的程式....

因為粉多地方都看不懂......請看懂的人解釋一下吧!!!!

問題1: Private Type Point

x As Single

y As Single

End Type

這是在宣告什麼嗎???完全不懂....而且point又是什麼咧???

書上怎麼都找不到咧??????

問題2: Dim pt(0 To 10) As Point

這裡面的pt是什麼意思呢???

問題3: pt(i - 1).x = x

pt(i - 1).y = y

那這個又是什麼意思咧????

請大家幫我解答吧!!!!!我急想知道............謝謝

已更新項目:

sean 同學謝謝你的解答~~~

我正想找你問問看呢??

沒想到你竟然來幫我解決問題了~~謝謝囉~~~

3 個解答

評分
  • Sean
    Lv 5
    2 0 年前
    最佳解答

    問題1:

    Private Type Point

    x As Single

    y As Single

    End Type

    宣告使用者自訂型態的資料型態,好處是將多個變數整理在一起,將來可以同時宣告方便使用。

    例如

    dim a as point

    a.x=5

    a.y=6

    只要宣告變數a,就可使用a.x和a.y了。

    問題2: Dim pt(0 To 10) As Point 這裡面的pt是什麼意思呢???

    宣告一個陣名為 pt,總共有 11 個,分別為 pt(0)、pt(1)...pt(11),而且其資料型態都為使用者自訂型態 point,所以將來要使用時為

    pt(0).x、pt(0).y

    pt(1).x、pt(1).y

    ...

    pt(11).x、pt(11).y

    等等

    問題3:

    pt(i - 1).x = x

    pt(i - 1).y = y

    那這個又是什麼意思咧????

    pt 為使用者自訂型態的陣列,因為是陣列在使用時要指定索引為 i-1,

    因為每個陣列元素都是使用者自訂型態,所以使用為 pt(i-1).x和 pt(i-1).y

    pt(i - 1).x = x 是一個指定述敘,將 x 內容存入 pt(i-1).x 中。

    pt(i - 1).y = x 是一個指定述敘,將 y 內容存入 pt(i-1).y 中。

    當 i=1 時

    pt(0).x=x

    pt(0).y=y

    當 i=2 時

    pt(1).x=x

    pt(1).y=y

    ...

    依此類推

    不客氣,有問題可再討論。

    2005-09-28 07:56:20 補充:

    每天我都會上線,有問題就請問,我會我就會回答。

  • 2 0 年前

    這些問題需要用到這兩個觀念

    1.陣列

    2.自訂型態(類別)

    問題1:

    Private Type Point

    x As Single

    y As Single

    End Type

    自訂一個叫「Point」的類別,

    其中有兩個屬性叫「x」跟「y」,其資料型態為 Single。

    這個方法在進階一點的書裡才會提到,

    另外,我記得在「小雄資訊服務中心」( http://infoserv.com.tw),有提到過。

    問題2:

    Dim pt(0 To 10) As Point

    定義一個叫「pt」的陣列,大小為「11」( 0~10),

    其資料型態是「Point」(就是上面定義的那個Point)。

    這跟 Dim a(0 To 10) As Integer 的意思很像,←這個看得懂就OK了。

    問題3:

    那是在迴圈裡執行的,所以 i 是從 1~11,現在假設 i 是 1,

    pt(i - 1).x = x , 相當於 pt(0).x = x

    pt(i - 1).y = y , 相當於 pt(0).y = y

    pt(0) 其實就是前面的 Point,.x 跟 .y 就是 Point 裡定義的 x 跟 y

    「=」後面的 x 跟 y 是在 For 迴圈裡的「x = a + i - 1 * c 」、「y = -0.5 * x」,

    而 pt 這個陣列裡有 11 個 Point,

    其中 pt(0) 的 .x .y 跟 pt(1) 的 .x .y 是不會互相影響的。

    問這麼不好解釋的東西才5點,難怪沒人理你

    參考資料: VB經驗
  • 2 0 年前

    回答一:

    Private Type Point

    x As Single

    y As Single

    End Type

    宣告一個私有的型別Point,內含x何y single變數.

    回答二:

    宣告一個Point型別的陣列pt[0~10],內有pt[0].x,pt[0].y ~ pt[10].x,pt[10].y

    回答三:

    For i = 1 To 11

    x = a + i - 1 * c

    y = -0.5 * x

    pt(i-1).x=x

    pt(i-1).y=y

    上面迴圈就是做pt[0].x=a + i - 1 * c

    pt[0].y=-0.5 * x

    ~

    pt[10].x=a + i - 1 * c

    pt[10].y=-0.5 * x

    參考資料: myself
還有問題?馬上發問,尋求解答。