返回列表 上一主題 發帖

[分享] visual basic.net 新手教學之基本流程

[分享] visual basic.net 新手教學之基本流程

本帖最後由 呆呆 於 2010-5-16 23:39 編輯

這裡要說的是所有開發式程式語言應該都會有的部分,不論你是學那一種程式語言,應該都不會有太大的不同

  • 決策


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

    以下為例子
    1. Public Class Form1
    2.     Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

    3.         Dim 考試分數 As Integer

    4.         Const 及格分數 As Integer = 60

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

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

    11.     End Sub
    12. End Class
    複製代碼
    這應該再容易不過了,不過是數學的三一律,不是大於,就是小於,再不就是等於,沒有其它狀況了
    我們設定了 大於 0 ,那其它的部分就是 小於 和等於 0 的部分
    但我們只有低於60分的部分,和高於或等於60分,但其它的分數區間我們也想做一個回應,應該怎麼做,visual basic 也提供了
    對應的語法
  •   if 狀況一  then
                  ' 你想要做的事
           elseif 狀況二 then
                  '你想要做的事
           elseif 狀況三 then
                  '你想要做的事
    .......
    elseif 狀況不知凡幾 then
                  '你想要做的事
        else
             ' 你想要做的事
        end if

      以下是範例
    1. Public Class Form1
    2.     Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

    3.         Dim 考試分數 As Integer

    4.         考試分數 = 89
    5.         If 考試分數 = 100 Then
    6.             MessageBox.Show("完美")
    7.         ElseIf 考試分數 >= 90 Then
    8.             MessageBox.Show("優秀")
    9.         ElseIf 考試分數 >= 80 Then
    10.             MessageBox.Show("具有相當實力")
    11.         ElseIf 考試分數 >= 70 Then
    12.             MessageBox.Show("不錯,加油")
    13.         ElseIf 考試分數 >= 60 Then
    14.             MessageBox.Show("好險")
    15.         Else
    16.             MessageBox.Show("欠揍")
    17.         End If
    18.       
    19.     End Sub
    20. End Class
    複製代碼
    以上 if else 的語法 比較不具可讀性,有一種叫 select case 的語法,讓我們更能容易了解程式碼在做什麼
  •   
    Select Case (某一變數,列舉)
    Case 狀況一
         '你想做的事
    Case 狀況二
         '你想做的事
    Case 不知凡幾
       '你想做的事
    ......
    Case else
    '你想做的事
    End Select

    以下為範例
    1. Public Class Form1
    2.     Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

    3.         Dim 狀況回應 As DialogResult

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

    5.         Select Case 狀況回應
    6.         Case Windows.Forms.DialogResult.No
    7.                 MessageBox.Show("NO")
    8.             Case Windows.Forms.DialogResult.Yes
    9.                 MessageBox.Show("Yes")
    10.             Case Else
    11.                 MessageBox.Show("欠揍")

    12.         End Select

    13.     End Sub
    14. End Class
    複製代碼

  • 迴圈

    迴圈也是程式語言相檔重要的一環
    以下介紹幾種


    • For  i = 開始 to 結束 step 遞增量
      '你想要做的事
      Next i
      以下為範例
      1. Public Class Form1
      2.     Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click


      3.         Dim 計數 As Integer
      4.         For i As Integer = 0 To 10 Step 1
      5.             計數 = 計數 + 1
      6.         Next i

      7.         MessageBox.Show(計數)

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


      3.         Dim 計數 As Integer
      4.         For i As Integer = 0 To 10 Step 2
      5.             計數 = 計數 + 1
      6.         Next i

      7.         MessageBox.Show(計數)

      8.     End Sub
      9. End Class
      複製代碼
      做了6次
      但這種迴圈只有當前後值一開始就決定的時會才有效
      如果一開始無法確定那要如何呢
      我們就有另外一種迴圈產生
    • Do While 狀況敍述
      '做你要做的事
      Loop
      1. Public Class Form1
      2.     Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
      3.         Dim i As Integer = 0
      4.         Dim 總和 As Integer = 0
      5.         Do While 總和 < 1000
      6.             i = i + 1
      7.             總和 = 總和 + i
      8.         Loop
      9.         MessageBox.Show("總共做了" & i.ToString & "次" & "總和=" & 總和.ToString)
      10.     End Sub
      11. End Class
      複製代碼
      這個程式碼告訴我們,當總和大於1000時會離開迴圈,所得的結果是大於1000的最小數
    • Do
                 ' 你要做的事
           Loop Until 狀況敍述

      上面的程式碼改寫就變成以下,判斷式寫在後面的意義在於一定會先做一次, 而do While 和 do Until 剛好是相反
      1. Public Class Form1

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

      3.         Dim i As Integer = 0
      4.         Dim 總和 As Integer = 0
      5.         Do
      6.             i = i + 1
      7.             總和 = 總和 + i
      8.         Loop Until 總和 >= 1000
      9.         MessageBox.Show("總共做了" & i.ToString & "次" & "總和=" & 總和.ToString)

      10.     End Sub
      11. End Class
      複製代碼
    • For each 單元 in 集合
      '你要做的事
          next 單元


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

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

      4.         For Each day As String In 一星期
      5.             MessageBox.Show(day)
      6.         Next
      7.     End Sub
      8. End Class
      複製代碼
      或者也可以利用IEnumerator 介面
      1. Public Class Form1
      2.     Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
      3.         Dim 一星期() As String = {"星期日", "星期一", "星期二", "星期三", "星期四", " 星期五", "星期六"}
      4.         Dim f As IEnumerator = 一星期.GetEnumerator
      5.         While f.MoveNext
      6.             MessageBox.Show(DirectCast(f.Current, String))
      7.         End While
      8.     End Sub
      9. End Class
      複製代碼

  •         靜思自在 : 發脾氣是短暫的發瘋。
    返回列表 上一主題