คำสั่งเลือกเงื่อนไข
ในบทนี้ คุณจะได้เรียนรู้การควบคุมโปรแกรม โดยใช้คำสั่งเลือกเงื่อนไขในภาษา Visual Basic
ในการเขียนโปรแกรมนั้น เราอาจจะต้องการให้โปรแกรมให้ทำงานที่แตกต่างกันขึ้นกับเงือนไขต่างๆ ภายในโปรแกรม ยกตัวอย่างเช่น ถ้าวันนี้ฝนตก คุณจะไปทำงานด้วยรถส่วนตัว ถ้าไม่คุณจะไปทำงานโดยรถประจำทาง_ เราเรียกสิ่งนี้ว่าการตัดสินใจ ในคณิตศาสตร์มันคือประพจน์
นี่เป็น 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 และนอกจากนี้ คุณยังเห็นวิธีนำไปประยุกต์ใช้ในการเขียนโปรแกรมด้วยตัวอย่างของโปรแกรมคำนวณเกรด ในบทต่อไปคุณจะได้เรียนคำสั่งควบคุมโปรแกรมแบบวนซ้ำ