การควบคุมทิศทางการทำงานของโปรแกรม Chapter 6 การควบคุมทิศทางการทำงานของโปรแกรม
การควบคุมทิศทางของโปรแกรมมี 2 รูปแบบคือ การตัดสินใจ (Decision) การตัดสินใจเลือกหนึ่งตัวเลือกจาก 2 ตัวเลือกที่มีมาให้ การตัดสินใจเลือกหนึ่งตัวเลือกจากตัวเลือกที่มีมาให้มากกว่า 2 ตัวเลือก การทำงานแบบวนซ้ำ(Iteration) การวนซ้ำแบบมีจำนวนรอบที่แน่นอน การวนซ้ำแบบมีจำนวนรอบที่ไม่แน่นอน คือมีการทำงานวนซ้ำไปเรื่อย ๆ จนกว่าจะถูกสั่งให้หยุดโดยการตรวจสอบว่าหยุดการทำงานได้หรือไม่ “การตัดสินใจอาศัยตัวแปรตรรกศาสตร์มาพิจารณาเปรียบเทียบ เพื่อเลือกทิศทาง”
คำสั่งตัดสินใจ If…Then เป็นคำสั่งตัดสินใจโดยตรวจสอบเงื่อนไขที่กำหนดให้เสียก่อน - หากผลการตรวจสอบเงื่อนไขเป็นจริงก็จะทำงานตามชุดคำสั่งที่อยู่หลังคำว่า Then - แต่ถ้าผลการตรวจสอบเงื่อนไขเป็นเท็จจะทำงานตามชุดคำสั่งถัดไป
รูปแบบคำสั่ง If…Then If เงื่อนไขที่ตรวจสอบ Then ชุดคำสั่งเมื่อมีการตรวจสอบเงื่อนไขแล้วได้ผลเป็นจริง(True) ชุดคำสั่งเมื่อมีการตรวจสอบเงื่อนไขแล้วได้ผลเป็นเท็จ(False) End If
คำสั่งตัดสินใจ If…Then…Else เป็นคำสั่งตัดสินใจมีสองทางเลือกคือ
รูปแบบคำสั่ง If…Then…Else If เงื่อนไขที่ตรวจสอบ Then ชุดคำสั่งเมื่อมีการตรวจสอบเงื่อนไขแล้วได้ผลเป็นจริง(True) Else ชุดคำสั่งเมื่อมีการตรวจสอบเงื่อนไขแล้วได้ผลเป็นเท็จ(False) End If
คำสั่งตัดสินใจ
รูปแบบคำสั่ง If…Then…Else แบบซ้อนกัน ชุดคำสั่งเมื่อมีการตรวจสอบเงื่อนไขที่1ได้ผลเป็นจริง(True) If เงื่อนไขที่ 2 Then ชุดคำสั่งเมื่อมีการตรวจสอบเงื่อนไขที่2ได้ผลเป็นจริง(True) Else ชุดคำสั่งเมื่อมีการตรวจสอบเงื่อนไขที่2ได้ผลเป็นเท็จ(False) End If ชุดคำสั่งเมื่อมีการตรวจสอบเงื่อนไขที่1ได้ผลเป็นเท็จ(False) End If
รูปแบบคำสั่ง If…Then…Else แบบซ้อนกัน ชุดคำสั่งเมื่อมีการตรวจสอบเงื่อนไขที่1ได้ผลเป็นจริง(True) Else ชุดคำสั่งเมื่อมีการตรวจสอบเงื่อนไขที่1ได้ผลเป็นเท็จ(False) If เงื่อนไขที่ 2 Then ชุดคำสั่งเมื่อมีการตรวจสอบเงื่อนไขที่2ได้ผลเป็นจริง(True) Else ชุดคำสั่งเมื่อมีการตรวจสอบเงื่อนไขที่2ได้ผลเป็นเท็จ(False) End If End If
การใช้ If ซ้อน If : ตัดสินใจเลือกมากกว่า 2ทางเลือก เป็นการตรวจสอบเงื่อนไขของทางเลือกที่มีไปทีละทางเลือกจนครบจำนวนทางเลือกที่มีอยู่ ตามรูปแบบโฟลว์ชาร์ตดังนี้
รูปแบบคำสั่ง If ซ้อน If If เงื่อนไขทางเลือกที่ 1 Then ชุดคำสั่งเมื่อมีการตรวจสอบเงื่อนไขที่1ได้ผลเป็นจริง(True) ElseIf เงื่อนไขทางเลือกที่ 2 Then ชุดคำสั่งเมื่อมีการตรวจสอบเงื่อนไขได้ผลเป็นจริง(True) ElseIf เงื่อนไขทางเลือกที่ 3 Then ชุดคำสั่งเมื่อมีการตรวจสอบเงื่อนไขได้ผลเป็นจริง (True) . . . . Else ชุดคำสั่งเมื่อมีการตรวจสอบเงื่อนไขได้ผลเป็นเท็จ(False) End If
Exercise รับจำนวนเงินมาแล้วสามารถนำมาแลกเหรียญ 10 เหรียญ 5 เหรียญ 2 เหรียญ 1 บาท เหรียญ 50 สตางค์ และเหรียญ 25 สตางค์ ได้ทั้งสิ้น กี่เหรียญ คำนวณค่าบัตรผ่านประตูสวนสนุก โดย เด็กสูงไม่เกิน 100 cm. ไม่คิดค่าบัตรผ่านประตู เด็กสูงไม่เกิน 120 cm. คิดค่าบัตรผ่าน 20% ของราคาบัตรเด็ก เด็กสูงไม่เกิน 130 cm. คิดค่าบัตร 50% ของราคาบัตรเด็ก เด็กสูงเกิน 130 cm. ขึ้นไป คิดราคาบัตรเด็ก คือ 120 บาท
Select…Case : ตัดสินใจเลือกมากกว่า 2 ทางเลือก เป็นคำสั่งตัดสินใจที่มีการทำงานเหมือนคำสั่ง If…Then…Else คือ เลือกทางใดทางหนึ่งจากทางเลือกที่มีมากกว่า 2 ทาง ในแต่ละทางเลือกจะมีการกำหนดเงื่อนไขของแต่ละทางและจะตรวจสอบเงื่อนไขแต่ละทางเลือกหากพบว่าทางเลือกไหนมีเงื่อนไขเป็นจริงก็จะทำชุดคำสั่งภายในทางเลือกนั้นโดยไม่พิจารณาทางเลือกอื่นที่ยังไม่ได้ตรวจสอบ Select Case =? Case Is: 1 Case Is: 2 Case Is: 3 Case Is: N Statement
Select…Case : ตัดสินใจเลือกมากกว่า 2 ทางเลือก รูปแบบคำสั่ง Select Case เงื่อนไข Case เงื่อนไขที่ 1 ชุดคำสั่งเมื่อตรวจสอบเงื่อนไขที่ 1 แล้วเป็นจริง Case เงื่อนไขที่ 2 ชุดคำสั่งเมื่อตรวจสอบเงื่อนไขที่ 2 แล้วเป็นจริง ... ... Case Else ชุดคำสั่งเมื่อตรวจสอบเงื่อนไขทั้งหมดแล้วเป็นเท็จ End Select
การใช้ Choose : ตัดสินใจ ฟังก์ชันสำเร็จรูปของ VB ที่ทำงานคล้ายกับ Select…Case รูปแบบคำสั่ง varName = Choose(Index,Choice1,Choice2,Choice3,..,Choice n) ต้องกำหนดค่าพารามิเตอร์ที่ชื่อ Index เป็นตัวเลขจำนวนเต็มตั้งแต่ 1 ขึ้นไปโดยจะคืนค่ากลับมาตามรายการพารามิเตอร์ที่มี
For…Next : การวนซ้ำด้วยจำนวนรอบที่แน่นอน เป็นคำสั่งที่ต้องการให้ทำงานวนซ้ำด้วยจำนวนรอบที่แน่นอน โดยจะมี ตัวแปรคอยนับรอบการวนซ้ำ ซึ่งทุกครั้งก่อนการวนซ้ำจะตรวจสอบค่าของตัวแปรนับรอบว่าได้วนซ้ำครบตามเงื่อนไขแล้วหรือไม่ ถ้ายังไม่ครบก็วนซ้ำต่อไป วนซ้ำครบจำนวน? ทำคำสั่งถัดไป ยังไม่ครบ ครบแล้ว ทำซ้ำคำสั่งใน For
รูปแบบคำสั่ง For…Next For ตัวแปรที่ใช้นับ = ค่าเริ่มต้นของตัวแปร To ค่าสุดท้ายของตัวแปร[Step การนับของตัวแปร] ชุดคำสั่งกรณีที่เงื่อนไขได้ผลเป็นจริง(True) Next ตัวแปรที่ใช้นับ
For…Next แบบซ้อนกัน การวนซ้ำแบบซ้อนกัน เช่นกรณีการเติมข้อมูลในตาราง ต้องเติมทีละแถวแต่ละแถวก็ต้องเติมทีละคอลัมน์ จนครบ แล้วขึ้นแถวใหม่ วนซ้ำครบจำนวน? ทำคำสั่งถัดไป ยังไม่ครบ ครบแล้ว ทำซ้ำคำสั่งใน For
ตัวอย่างการทำงานของ For 1) Dim i As Integer For i = 1 To 5 Beep() TextBox1.Text += "Beep: " & i & vbCrLf Next ผลรัน 2) Dim i, j As Integer Dim s As String = “ " TextBox1.Text = “ " For i = 10 To 1 Step -1 For j = 1 To i s &= "@ " Next s &= vbCrLf TextBox1.Text = s ผลรัน
While…End While : การวนซ้ำด้วยจำนวนรอบที่ไม่แน่นอน เป็นคำสั่งที่ทำงานเมื่อเงื่อนไขที่กำหนดเป็นจริง จะทำซ้ำไปเรื่อย ๆ จนกว่าเงื่อนไขที่กำหนดจะเป็นเท็จจึงหยุดการทำงาน วนซ้ำอีกหรือไม่? ทำคำสั่งถัดไป จริง(True) เท็จ(False) ทำซ้ำคำสั่งใน While
รูปแบบคำสั่ง While…End While ชุดคำสั่งเมื่อตรวจสอบเงื่อนไขแล้วได้ผลเป็นจริง(True) End While
ตัวอย่างการเขียน While Loop Dim ans As Integer = Int(Rnd() * 10) Dim count As Integer = 0 Dim hint As Integer While hint <> ans hint = Int(InputBox("ทายตัวเลขระหว่าง 0-9", "เกมทายตัวเลข")) count += 1 End While MessageBox.Show("คุณทายไปทั้งสิ้น " & count & "ครั้ง", "ตัวเลขที่สุ่มคือ " & ans) ผลรัน ผลรัน
การวนซ้ำด้วยการใช้ Do…Loop การวนซ้ำที่มีรูปแบบและการตรวจสอบเงื่อนไขที่แตกต่างกันแบ่งเป็น 4 รูปแบบ รูปแบบที่ 1: การใช้ Do While…Loop การทำงานและตรวจสอบเงื่อนไขเหมือนคำสั่ง While…End While แต่มีรูปแบบคำสั่งที่ต่างกัน ตรวจสอบเงื่อนไข ทำคำสั่งถัดไป จริง(True) เท็จ(False) ทำซ้ำคำสั่งใน While
รูปแบบคำสั่ง Do While…Loop ชุดคำสั่งเมื่อตรวจสอบเงื่อนไขแล้วได้ผลเป็นจริง(True) Loop
ตัวอย่างการเขียน Do..While Loop Dim ans As Integer = Int(Rnd() * 10) Dim count As Integer = 0 Dim hint As Integer Do While hint <> ans hint = Int(InputBox("ทายตัวเลขระหว่าง 0-9", "เกมทายตัวเลข")) count += 1 Loop MessageBox.Show("คุณทายไปทั้งสิ้น " & count & "ครั้ง", "ตัวเลขที่สุ่มคือ " & ans) ผลรัน ผลรัน
การวนซ้ำด้วยการใช้ Do Until…Loop การทำงานเหมือนคำสั่ง While วนซ้ำเมื่อเงื่อนไขเป็นเท็จ แต่จะหลุดการวนซ้ำเมื่อเงื่อนไขเป็นจริง ตรวจสอบเงื่อนไข ทำคำสั่งถัดไป เท็จ(False) จริง(True) ทำซ้ำคำสั่งใน Do Until รูปแบบคำสั่ง Do Until เงื่อนไข ชุดคำสั่งเมื่อตรวจสอบเงื่อนไขแล้วได้ผลเป็นจริง(True) Loop
ตัวอย่างการเขียน Until Loop Dim ans As Integer = Int(Rnd() * 10) Dim count As Integer = 0 Dim hint As Integer Do Until hint = ans hint = Int(InputBox("ทายตัวเลขระหว่าง 0-9", "เกมทายตัวเลข")) count += 1 Loop MessageBox.Show("คุณทายไปทั้งสิ้น " & count & "ครั้ง", "ตัวเลขที่สุ่มคือ " & ans) ผลรัน ผลรัน
การวนซ้ำด้วยการใช้ Do…Loop รูปแบบที่ 3: การใช้ Do…Loop While การทำงานอย่างน้อย 1 รอบก่อนแล้วจึงตรวจสอบเงื่อนไขการวนซ้ำ ซึ่งจะหลุดการวนซ้ำเมื่อเงื่อนไขเป็นเท็จ ตรวจสอบเงื่อนไขที่กำหนด ทำคำสั่งถัดไป จริง(True) เท็จ(False) ทำซ้ำคำสั่งใน Do..Loop While รูปแบบคำสั่ง Do ชุดคำสั่งเมื่อตรวจสอบเงื่อนไขแล้วได้ผลเป็นจริง(True) Loop While เงื่อนไข
ตัวอย่างการเขียน Do..Loop While Dim ans As Integer = Int(Rnd() * 10) Dim count As Integer = 0 Dim hint As Integer Do hint = Int(InputBox("ทายตัวเลขระหว่าง 0-9", "เกมทายตัวเลข")) count += 1 Loop While hint <> ans MessageBox.Show("คุณทายไปทั้งสิ้น " & count & "ครั้ง", "ตัวเลขที่สุ่มคือ " & ans) ผลรัน ผลรัน
การวนซ้ำด้วยการใช้ Do…Loop Until การทำงานอย่างน้อย 1 รอบก่อนแล้วจึงตรวจสอบเงื่อนไขการวนซ้ำ ซึ่งจะหลุดการวนซ้ำเมื่อเงื่อนไขเป็นจริง ตรวจสอบเงื่อนไขที่กำหนด ทำคำสั่งถัดไป เท็จ(False) จริง(True) ทำซ้ำคำสั่งใน Do..Loop Until รูปแบบคำสั่ง Do ชุดคำสั่งเมื่อตรวจสอบเงื่อนไขแล้วได้ผลเป็นเท็จ(False) Loop Until เงื่อนไข
ตัวอย่างการเขียน Do..Until Loop Dim ans As Integer = Int(Rnd() * 10) Dim count As Integer = 0 Dim hint As Integer Do hint = Int(InputBox("ทายตัวเลขระหว่าง 0-9", "เกมทายตัวเลข")) count += 1 Loop Until hint = ans MessageBox.Show("คุณทายไปทั้งสิ้น " & count & "ครั้ง", "ตัวเลขที่สุ่มคือ " & ans) ผลรัน ผลรัน
คำสั่ง Exit เป็นคำสั่งเพื่อกระโดดออกจากการทำงานโดยที่ไม่จำเป็นต้องทำคำสั่งที่เหลืออยู่หรือวนซ้ำไม่ครบตามจำนวนรอบ สามารถจบการทำงานได้ทันที รูปแบบคำสั่ง Exit ชื่อคำสั่ง
แบบฝึกหัด โค้ดต่อไปนี้แสดง MessageBox จำนวนกี่ครั้ง 1) For a =0 to 9 Msgbox (“Hello”) If a> 5 then Exit For End If Next 2) For a = 20 to 4 Step -2 Msgbox (“Hello”) Next 4) a= 10 Do While a <10 Msgbox (“Hello”) a += 1 Loop 3) a= 0 Do While a <10 Msgbox (“Hello”) a += 1 Loop 6) a= 10 Do Msgbox (“Hello”) a += 1 Loop While a <10 5) a= 0 Do Until a =10 a += 2 Loop Msgbox (a)
แบบฝึกหัด เขียนโปรแกรมป้อนรหัสผ่าน เหมือน ATM โดยมีเงื่อนไข ตอบได้ไม่เกิน 3 ครั้ง ถ้าตอบถูก ออกจากการวนแสดงข้อความ “รหัสถูกต้อง” จบการทำงาน ถ้ายกเลิกก่อน ให้ออกจากการวนและแสดงข้อความ “ดีแล้วที่ยกเลิก” จบการทำงาน ถ้าตอบผิด ให้บอกว่า ผิดกี่ครั้ง แล้วให้ตอบใหม่ ถ้าตอบผิดครบ 3 ครั้ง ให้แสดงข้อความว่า “เสียใจด้วยบัตรของท่านถูกยึด” จบการทำงาน
แบบฝึกหัด เขียนโปรแกรมแสดงแม่สูตรคูณ โดยการป้อนค่าแม่สูตรคูณ เขียนโปรแกรมแสดงแม่สูตรคูณ โดยการป้อนค่าแม่สูตรคูณ เขียนโปรแกรมบวกเลขโดยเริ่มตั้งแต่ 1-10 ด้วยคำสั่ง while และ until Loop เขียนโปรแกรมป้อนตัวเลข แล้วแสดงผลว่าเป็นเลขคี่ หรือเลขคู่ทาง MessageBox หากป้อนคำว่า “Stop” ก็ให้หยุดการวนรับค่าออกจากการทำงานของลูป
แบบฝึกหัด สสาร จุดเยือกแข็ง จุดเดือด น้ำ 100 เอทานอล -114 78 ปรอท -39 100 เอทานอล -114 78 ปรอท -39 357 ออกซิเจน -219 -183