麻辣家族討論版版's Archiver

呆呆 發表於 2010-5-16 11:20

visual basic.net 新手教學之基本流程

[i=s] 本帖最後由 呆呆 於 2010-5-16 23:39 編輯 [/i]

這裡要說的是所有開發式程式語言應該都會有的部分,不論你是學那一種程式語言,應該都不會有太大的不同
[list]
[*][b][size=4]決策[/size][/b][/list]
[list=1]
[*][b]if 狀況一  then .....   end if[/b]
這個陳述句的意思是,如果符合狀況一,那就做某一件事
這個很容易舉例,我在小學的時候,老師時常說,考試不及格者,少一分打一下, 所以就變成[code]Public Class Form1
    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim 考試分數 As Integer
        Const 及格分數 As Integer = 60
        考試分數 = 53
        Dim 被打次數 As Integer = 及格分數 - 考試分數
        If 被打次數 > 0 Then MessageBox.Show("你要被打" & 被打次數 & "下")
    End Sub
End Class
[/code]上面這個意思是說,如果被打次數大於0才會繼續執行以下的動作,而照理說
If 被打次數 > 0 Then MessageBox.Show("你要被打" & 被打次數 & "下") 應該還要加一句 end if
就像是這樣
If 被打次數 > 0 Then
     MessageBox.Show("你要被打" & 被打次數 & "下")
end if
但因為句子很短  只有一列 visual basic  允許 我們不寫end if 如果超過一行,那你就要寫了
當然,這樣的陳述有時候還不夠,我們想要及格的人也有相關的回應,因此有這個對應的語法
[*]  [b]if 狀況一  then
         ' 你想要做的事
    else
         ' 你想要做的事
    end if[/b]
以下為例子[code]Public Class Form1
    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

        Dim 考試分數 As Integer

        Const 及格分數 As Integer = 60

        考試分數 = 60
        Dim 被打次數 As Integer = 及格分數 - 考試分數

        If 被打次數 > 0 Then
        Else
            MessageBox.Show("恭喜你逃過一劫")
        End If

    End Sub
End Class[/code]這應該再容易不過了,不過是數學的三一律,不是大於,就是小於,再不就是等於,沒有其它狀況了
我們設定了 大於 0 ,那其它的部分就是 小於 和等於 0 的部分
但我們只有低於60分的部分,和高於或等於60分,但其它的分數區間我們也想做一個回應,應該怎麼做,visual basic 也提供了
對應的語法
[*]  [b]if 狀況一  then
              ' 你想要做的事
       elseif 狀況二 then
              '你想要做的事
       elseif 狀況三 then
              '你想要做的事
.......
elseif 狀況不知凡幾 then
              '你想要做的事
    else
         ' 你想要做的事
    end if[/b]
  以下是範例[code]Public Class Form1
    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

        Dim 考試分數 As Integer

        考試分數 = 89
        If 考試分數 = 100 Then
            MessageBox.Show("完美")
        ElseIf 考試分數 >= 90 Then
            MessageBox.Show("優秀")
        ElseIf 考試分數 >= 80 Then
            MessageBox.Show("具有相當實力")
        ElseIf 考試分數 >= 70 Then
            MessageBox.Show("不錯,加油")
        ElseIf 考試分數 >= 60 Then
            MessageBox.Show("好險")
        Else
            MessageBox.Show("欠揍")
        End If
      
    End Sub
End Class[/code]以上 if else 的語法 比較不具可讀性,有一種叫 select case 的語法,讓我們更能容易了解程式碼在做什麼
[*]  
[b]Select Case (某一變數,列舉)
Case 狀況一
     '你想做的事
Case 狀況二
     '你想做的事
Case 不知凡幾
   '你想做的事
......
Case else
'你想做的事
End Select
[/b]
以下為範例[code]Public Class Form1
    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

        Dim 狀況回應 As DialogResult

        狀況回應 = MessageBox.Show("狀況回應", "測試", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Information, MessageBoxDefaultButton.Button1)

        Select Case 狀況回應
        Case Windows.Forms.DialogResult.No
                MessageBox.Show("NO")
            Case Windows.Forms.DialogResult.Yes
                MessageBox.Show("Yes")
            Case Else
                MessageBox.Show("欠揍")

        End Select

    End Sub
End Class[/code][/list]
[*][b][size=4]迴圈[/size][/b]

迴圈也是程式語言相檔重要的一環
以下介紹幾種
[list=1]
[*]
[b]For  i = 開始 to 結束 step 遞增量
'你想要做的事
Next i
以下為範例
[/b][code]Public Class Form1
    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click


        Dim 計數 As Integer
        For i As Integer = 0 To 10 Step 1
            計數 = 計數 + 1
        Next i

        MessageBox.Show(計數)

    End Sub
End Class[/code]從0到10一共做了11次
實際上, step 1可以不寫 因為內定就是 step 1
所以我們可以改成[code]Public Class Form1
    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click


        Dim 計數 As Integer
        For i As Integer = 0 To 10 Step 2
            計數 = 計數 + 1
        Next i

        MessageBox.Show(計數)

    End Sub
End Class
[/code]做了6次
但這種迴圈只有當前後值一開始就決定的時會才有效
如果一開始無法確定那要如何呢
我們就有另外一種迴圈產生
[*] [b]Do While 狀況敍述
'做你要做的事
Loop[/b][code]Public Class Form1
    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim i As Integer = 0
        Dim 總和 As Integer = 0
        Do While 總和 < 1000
            i = i + 1
            總和 = 總和 + i
        Loop
        MessageBox.Show("總共做了" & i.ToString & "次" & "總和=" & 總和.ToString)
    End Sub
End Class
[/code]這個程式碼告訴我們,當總和大於1000時會離開迴圈,所得的結果是大於1000的最小數
[*] [b]Do
           ' 你要做的事
     Loop Until 狀況敍述[/b]
上面的程式碼改寫就變成以下,判斷式寫在後面的意義在於一定會先做一次, 而do While 和 do Until 剛好是相反[code]Public Class Form1

    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

        Dim i As Integer = 0
        Dim 總和 As Integer = 0
        Do
            i = i + 1
            總和 = 總和 + i
        Loop Until 總和 >= 1000
        MessageBox.Show("總共做了" & i.ToString & "次" & "總和=" & 總和.ToString)

    End Sub
End Class[/code][*] [b]For each 單元 in 集合
'你要做的事
    next 單元[/b]

這種語法一般會用在陣列,集合這種容器類的東西的存取[code]Public Class Form1
    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

        Dim 一星期() As String = {"星期日", "星期一", "星期二", "星期三", "星期四", " 星期五", "星期六"}

        For Each day As String In 一星期
            MessageBox.Show(day)
        Next
    End Sub
End Class[/code]或者也可以利用IEnumerator 介面[code]Public Class Form1
    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim 一星期() As String = {"星期日", "星期一", "星期二", "星期三", "星期四", " 星期五", "星期六"}
        Dim f As IEnumerator = 一星期.GetEnumerator
        While f.MoveNext
            MessageBox.Show(DirectCast(f.Current, String))
        End While
    End Sub
End Class[/code][list]
[/list]

頁: [1]

麻辣家族討論版版為 麻辣學園 網站成員  由 昱得資訊工作室 © Since 1993 所提供