คำสั่งเลือกเงื่อนไข

ในบทนี้ คุณจะได้เรียนรู้การควบคุมโปรแกรม โดยใช้คำสั่งเลือกเงื่อนไขในภาษา Visual Basic

ในการเขียนโปรแกรมนั้น เราอาจจะต้องการให้โปรแกรมให้ทำงานที่แตกต่างกันขึ้นกับเงือนไขต่างๆ ภายในโปรแกรม ยกตัวอย่างเช่น ถ้าวันนี้ฝนตก คุณจะไปทำงานด้วยรถส่วนตัว ถ้าไม่คุณจะไปทำงานโดยรถประจำทาง_ เราเรียกสิ่งนี้ว่าการตัดสินใจ ในคณิตศาสตร์มันคือประพจน์

Selection control statements flowchart

นี่เป็น flowchart การทำงานของคำสั่งเลือกเงื่อนไข ในการเลือกเดินทางไปทำงาน

นี่เป็นแนวคิดที่นำมาใช้สำหรับการเขียนโปรแกรมเช่นกัน เพื่อควบคุมโปรแกรมให้ทำงานได้ตามต้องการ ในภาษา Visual Basic มีคำสั่งเลือกเงื่อนไขต่างๆ เช่น คำสั่ง If ElseIf Else และ Select Case เป็นต้น

คำสั่ง If

เราจะมาเริ่มเรียนจากคำสั่งเลือกเงื่อนไขที่พื้นฐานและง่ายที่สุดในภาษา Visual Basic นั่นคือคำสั่ง If ซึ่งเป็นคำสั่งควบคุมเพื่อให้โปรแกรมทำงานในเงือนไขที่กำหนด ในการใช้คำสั่ง If คุณจะต้องสร้างเงือนไขขึ้นมาสำหรับการทำงานของมัน ข้างล่างนี้เป็นรูปแบบการใช้งานคำสั่ง If

If Expression Then
    statement 
End If

ในการใช้คำสั่ง If คุณจะต้องสร้างเงือนไขขึ้นมาเราเรียกว่า Expression จะเป็นค่าของ Boolean ในบล็อคของคำสั่ง If จบด้วย End If เสมอ และโปรแกรมจะทำงานในบล็อคเมื่อ Expression เป็น True นอกเหนือจากนั้นมันจะข้ามการทำงานไป

Module IfStatement

    Sub Main()

        Dim isRain As Boolean = True
        If isRain Then
            Console.WriteLine("It's rain today.")
        End If

        Dim number As Integer = 10
        If number Mod 2 = 0 And number < 20 Then
            Console.Write("{0} is even number", number)
            Console.WriteLine(" and less than 20.")
        End If

        If 5 = 7 Then
            Console.WriteLine("Two numbers are equal.")
        End If

    End Sub

End Module

ในตัวอย่าง เป็นการใช้งานคำสั่ง If ในภาษา Visual Basic เพื่อสร้างเงื่อนไขให้โปรแกรมทำงาน

If isRain Then
    Console.WriteLine("It's rain today.")
End If

นี่เป็นคำสั่งที่ใช้ในการตรวจสอบค่าของ Boolean ในตัวแปร isRain โปรแกรมจะตรวจสอบว่าตัวแปรมีค่าเป็น True หรือไม่ สำหรับตัวอย่างเราได้กำหนดค่า True ให้กับตัวแปรดังกล่าว ดังนั้นโปรแกรมจะทำงานในบล็อคของคำสั่ง If นี้

If number Mod 2 = 0 And number < 20 Then
    Console.Write("{0} is even number", number)
    Console.WriteLine(" and less than 20.")
End If

เราสามารถใช้คำสั่ง If ในการสร้างเงื่อนไขที่ซับซ้อนขึ้น โดยการใช้ตัวดำเนินการตรรกศาสตร์ช่วย ในส่วนนี้จากเงือนไข number Mod 2 = 0 หมายถึงตัวแปร number ต้องเป็นเลขคู่ และตัวเนินการ And ทำให้มันต้องมีค่าน้อยกว่า 20 ด้วย ในเงื่อนไข number < 20

If 5 = 7 Then
     Console.WriteLine("Two numbers are equal.")
End If

และนี่เป็นตัวอย่างในกรณีที่เงื่อนไขเป็น False เพราะว่า 5 ไม่เท่ากับ 7 ดังนั้นโปรแกรมไม่ทำงานในบล็อคนี้

It's rain today.
10 is even number and less than 20.

นี่เป็นผลลัพธ์การทำงานการใช้งานคำสั่ง If ในภาษา Visual Basic

คำสั่ง If Else

คำสั่ง If Else นั้นทำงานเหมือนกับคำสั่ง If แต่จะมี Else clause เพิ่มเข้ามาสำหรับกรณีที่ในบล็อคของคำสั่ง If ไม่ถูกทำ หรือเงือนไขเป็น False นั่นเอง มันใช้สำหรับตรวจจับเงื่อนไขที่ตรงกันข้ามในคำสั่ง If นี่เป็นรูปแบบการใช้งาน

If Expression Then
   statement 
Else
   statement 
End If

รูปแบบการใช้คำสั่งนี้จะเพิ่มคำสั่ง Else เข้ามาและในตอนท้ายปิดบล็อคด้วยคำสั่ง End If เช่นเดิม ถ้าเงื่อนไขของ Expression เป็น True โปรแกรมทำงานในบล็อคคำสั่ง If ถ้าไม่มันทำในบล็อคคำสั่ง Else แทน

Module IfElseStatement

    Sub Main()

        Dim isRain As Boolean = True
        If isRain Then
            Console.WriteLine("I would go to work by my car.")
        Else
            Console.WriteLine("I would go to work by the bus.")
        End If

        Dim money As Double = 50.0
        If money > 89.5 Then
            Console.WriteLine("You can buy this game.")
        Else
            Console.WriteLine("You have not enough money.")
        End If

    End Sub

End Module

นี่เป็นตัวอย่างการใช้งานสำหรับคำสั่ง If Else ในภาษา Visual Basic เราใช้ในการควบคุมการทำงานของโปรแกรมที่มักจะมีสองทางเลือก

If isRain Then
    Console.WriteLine("I would go to work by my car.")
Else
    Console.WriteLine("I would go to work by the bus.")
End If

เราใช้คำสั่ง If ในการตรวจสอบเงือนไขในตัวแปร isRain นั่นหมายความว่าถ้าฝนตก คุณจะไปทำงานด้วยรถส่วนตัว ถ้าไม่ใช่จะไปทำงานโดยรถประจำทาง

If money > 89.5 Then
    Console.WriteLine("You can buy this game.")
Else
    Console.WriteLine("You have not enough money.")
End If

นี่เป็นอีกตัวอย่างหนึ่งที่เราใช้เปรียบเทียบว่าคุณมีเงินเพียงพอที่จะซื้อเกมหรือไม่ ในตัวแปรอย่างโปรแกรมจะบอกว่าคุณมีเงินไม่พอ เพราะเงือนไข money > 89.5 ไม่เป็นจริง

I would go to work by my car.
You have not enough money.

นี่เป็นผลลัพธ์ของโปรแกรม คุณอาจจะลองสร้างเงื่อนไขอื่นๆ หรือทำให้มันซับซ้อนมากขึ้น โดยใช้ตัวดำเนินการตรรกศาสตร์

คำสั่ง If ElseIf

คำสั่ง ElseIf ใช้ควบคุมการทำงานในกรณีที่โปรแกรมของเรามีหลายทางเลือก และมันจะใช้ควบคู่กับคำสั่ง If เสมอ นี่เป็นรูปแบบการใช้งานคำสั่ง ElseIf ในภาษา Visual Basic

If Expression1 Then
    statement
ElseIf Expression2 Then
    statement
ElseIf Expression3 Then
    statement
...
ElseIf Expressions... Then
    statement
End If

ในรูปแบบการใช้งาน เราต่อด้วยคำสั่ง ElseIf สำหรับเงื่อนไขที่สองเป็นต้นไปได้เรื่อยๆ โดยโปรแกรมจะตรวจสอบตั้งแต่ Expression1 ถ้าหากมีเงือนไขใดเป็น True โปรแกรมจะทำงานในบล็อคคำสั่งนั้น และข้ามการตรวจสอบเงื่อขไขที่เหลือทั้งหมดในทันที เช่นเดิม คุณสามารถใช้คำสั่ง Else ในกรณีที่ไม่ตรงกับเงื่อนไขใดๆ ก่อนหน้าได้

Module ElseIfStatement

    Sub Main()

        Dim a, b As Integer

        Console.Write("Enter a: ")
        a = CType(Console.ReadLine(), Integer)

        Console.Write("Enter b: ")
        b = CType(Console.ReadLine(), Integer)

        If a > b Then
            Console.WriteLine("a is greater than b.")
        ElseIf a < b Then
            Console.WriteLine("b is greater than a.")
        Else
            Console.WriteLine("a and b are equal.")
        End If

    End Sub

End Module

ในตัวอย่าง เป็นโปรแกรมที่รับค่าเลขเข้ามาสองตัว และนำการเปรียบเทียบเพื่อหาค่ามากที่สุดสองเลขสองจำนวนนั้น ในตอนแรกเราตรวจสอบเงือนไข a > b โดยคำสั่ง If ถ้าไม่เป็นจริงโปรแกรมจะตรวจเงือนไขต่อมา ในคำสั่ง ElseIf a < b และสำหรับคำสั่ง Else ในกรณีที่เงือนไขก่อนหน้าไม่มีอันไหนเป็นจริง

Enter a: 13
Enter b: 20
b is greater than a.

นี่เป็นตัวอย่างผลลัพธ์เมื่อใส่ค่า a เป็น 13 และ b เป็น 20 โปรแกรมจะทำงานในบล็อคของคำสั่ง ElseIf

Enter a: 2
Enter b: 2
a and b are equal.

และนี่เมื่อเราใส่ตัวเลขทั้งคู่เป็น 2 โปรแกรมจะทำงานในบล็อคของคำสั่ง Else เพราะว่ามันไม่มีเงือนไขก่อนหน้าใดๆ เป็น True เลย

คำสั่ง Select Case

ในภาษา Visual Basic ยังมีคำสั่งเลือกเงื่อนไขอีกแบบหนึ่งคือคำ Switch Case ที่ใช้คำสั่งเลือกให้โปรแกรมทำงานแบบตัวเลือกหลายเงือนไข มันมักจะใช้สำหรับค่าที่สามารถเปรียบเทียบโดยตรงได้ โดยมีรูปแบบการใช้งานดังนี้

Select Case Variable
Case Value1
    statement
Case Value1
    statement
    ...
Case Else
    statement
End Select

การใช้คำสั่ง Select Case นั้น เราจะต้องส่งค่าตัวแปรเข้าไปในคำสั่ง Variable และในแต่ละ Case เป็นค่าคงที่สำหรับเปรียบเทียบ มันไม่สามารถใช้ตัวดำเนินการอื่นร่วมได้เหมือนคำสั่ง If คุณสามารถใช้เครื่องหมาย comma (,) ได้ถ้าหากมันมีหลายค่า และใช้คำสั่ง To ในกรณีที่เป็นค่าระหว่างช่วงที่กำหนด และสามารถใช้ Else สำหรับเงือนไขปริยาย

มาดูตัวอย่างการใช้คำสั่ง Select Case ในภาษา Visual Basic

Module SelectCase

    Sub Main()

        Dim number As Integer = 5
        Select Case number
            Case 1
                Console.WriteLine("Equal to 1")
            Case 2
                Console.WriteLine("Equal to 2")
            Case 3, 4, 5
                Console.WriteLine("Equal to 3, 4 or 5")
            Case 6 To 8
                Console.WriteLine("Between 6 and 8")
            Case Else
                Console.WriteLine("Not between 1 and 8")
        End Select

    End Sub

End Module

ในตัวอย่างเป็นโปรแกรมในการตรวจสอบตัวเลขในตัวแปร number ว่าอยู่ในช่วงไหน เราส่งตัวแปรเข้าไปในคำสั่ง Select Case และโปรแกรมจะเปรียบเทียบกับแต่ละ Case ที่เรากำหนดขึ้น

Equal to 3, 4 or 5

และนี่เป็นผลลัพธ์ของโปรแกรม สำหรับการกำหนดค่าให้กับตัวแปร number เป็น 5 ซึ่งตรงกับ Case 3, 4, 5

ต่อไปมาดูตัวอย่างในการประยุกต์ใช้งานคำสั่งควบคุมเงือนไข โดยเราจะทำโปรแกรมคำนวณเกรด โดยให้ผู้ใช้กรอกวิชาที่ต้องการคำนวณ และกรอกคะแนนของเขา และโปรแกรมจะคำนวณและบอกผลลัพธ์ให้ทราบ

Module GradeEvaluation

    Sub Main()

        Dim course As Integer
        Dim score As Integer

        Console.WriteLine("Grade Evaluation Program")
        Console.WriteLine("Enter 1 or 2 to select course")
        Console.WriteLine("1 = Discrete Mathematics")
        Console.WriteLine("2 = Software Engineering")

        Console.Write("Enter your choice: ")
        course = CType(Console.ReadLine(), Integer)

        Select Case course
            Case 1
                Console.WriteLine("You selected Discrete Mathematics")
            Case 2
                Console.WriteLine("You selected Software Engineering")
            Case Else
                Console.WriteLine("You have selected an invalid choice")
        End Select

        If course >= 1 Or course <= 3 Then

            Console.Write("Enter your score (0 - 100): ")
            score = CType(Console.ReadLine(), Integer)

            If score >= 80 And score <= 100 Then
                Console.WriteLine("Your grade is A")
            ElseIf score >= 70 And score < 80 Then
                Console.WriteLine("Your grade is B")
            ElseIf score >= 60 And score < 70 Then
                Console.WriteLine("Your grade is C")
            ElseIf score >= 50 And score < 60 Then
                Console.WriteLine("Your grade is D")
            ElseIf score >= 0 And score < 50 Then
                Console.WriteLine("Your grade is F")
            Else
                Console.WriteLine("You have entered an invalid score")
            End If

        End If

    End Sub

End Module

ในตัวอย่าง เป็นโปรแกรมคำนวณเกรดในภาษา Visual Basic เราได้ให้ผู้กรอกค่าที่ต้องการและคะแนน เราได้ใช้ทั้งคำสั่ง Select Case และคำสั่ง If รวมกัน ในส่วนของคำสั่ง Select Case เราได้ทำการตรวจสอบค่าในตัวแปร course ว่าตรงกับเงื่อนไขในวิชาที่กำหนดหรือไม่ ถ้าตรงกันเราแสดงวิชาที่เลือก และถ้าไม่ตรงจะบอกว่าคุณเลือกวิชาไม่ถูกต้อง

If course >= 1 Or course <= 3 Then
    ....
    If score >= 80 And score <= 100 Then
        ...

ต่อมาเราจะทำการรับค่าของคะแนนผู้ใช้ โดยใช้คำสั่ง If ในการตรวจสอบถ้าหากการเลือกวิชาถูกต้องใน course >= 1 Or course <= 3 คุณจะเห็นว่าเราได้ใช้คำสั่ง If ซ้อนกันได้ และบล็อค If ย่อย เราได้ทำการเปรียบเทียบเกรดในระดับคะแนนต่างๆ และแสดงผลลัพธ์ให้ผู้ใช้ทราบ

Grade Evaluation Program
Enter 1 or 2 to select course
1 = Discrete Mathematics
2 = Software Engineering
Enter your choice: 2
You selected Software Engineering
Enter your score (0 - 100): 74
Your grade is B

และนี่เป็นผลลัพธ์ของโปรแกรมเมื่อเราใส่ค่า choice เป็น 2 และใส่ค่า score เป็น 74

ในบทนี้ คุณได้เรียนรู้เกี่ยวกับคำสั่งควบคุมแบบเลือกประเภทต่างๆ ในภาษา Visual Basic ไม่ว่าจะเป็นคำสั่ง If Else ElseIf และ Select Case และนอกจากนี้ คุณยังเห็นวิธีนำไปประยุกต์ใช้ในการเขียนโปรแกรมด้วยตัวอย่างของโปรแกรมคำนวณเกรด ในบทต่อไปคุณจะได้เรียนคำสั่งควบคุมโปรแกรมแบบวนซ้ำ