Condition Programming

Download Report

Transcript Condition Programming

Chapter 6
การควบคุมทิศทางการทางานของโปรแกรม
การควบคุมทิศทางของโปรแกรมมี 2 รู ปแบบคือ

การตัดสิ นใจ (Decision)
การตัดสิ นใจเลือกหนึ่งตัวเลือกจาก 2 ตัวเลือกที่มีมาให้
 การตัดสิ นใจเลือกหนึ่ งตัวเลือกจากตัวเลือกที่มีมาให้มากกว่า 2 ตัวเลือก


การทางานแบบวนซ้ า(Iteration)
การวนซ้ าแบบมีจานวนรอบที่แน่นอน
 การวนซ้ าแบบมีจานวนรอบที่ไม่แน่นอน คือมีการทางานวนซ้ าไปเรื่ อย ๆ จนกว่า
จะถูกสัง่ ให้หยุดโดยการตรวจสอบว่าหยุดการทางานได้หรื อไม่

“การตัดสิ นใจอาศัยตัวแปรตรรกศาสตร์ มาพิจารณาเปรี ยบเทียบ
เพือ่ เลือกทิศทาง”
คาสัง่ ตัดสิ นใจ

If…Then
เป็ นคาสั่งตัดสิ นใจโดยตรวจสอบเงื่อนไขที่กาหนดให้เสี ยก่อน
- หากผลการตรวจสอบเงื่อนไขเป็ นจริ งก็จะทางานตามชุดคาสั่งที่อยูห่ ลังคาว่า Then
- แต่ถา้ ผลการตรวจสอบเงื่อนไขเป็ นเท็จจะทางานตามชุดคาสั่งถัดไป
True
Expression
False
Statement 2
Statement 1
รู ปแบบคาสัง่ If…Then
If เงื่อนไขที่ตรวจสอบ Then
ชุดคาสัง่ เมื่อมีการตรวจสอบเงื่อนไขแล้วได้ผลเป็ นจริ ง(True)
ชุดคาสัง่ เมื่อมีการตรวจสอบเงื่อนไขแล้วได้ผลเป็ นเท็จ(False)
End If
คาสัง่ ตัดสิ นใจ

If…Then…Else
เป็ นคาสั่งตัดสิ นใจมีสองทางเลือกคือ
- กรณี ผลการตรวจสอบเงื่อนไขเป็ นจริ งก็จะทางานตามชุดคาสั่งที่อยูห่ ลังคาว่า Then
- แต่ถา้ ผลการตรวจสอบเงื่อนไขเป็ นเท็จจะทางานตามชุดคาสั่งที่อยูห่ ลังคาว่า Else
False
True
Expression
Statement 2
Statement 1
Statement 3
รู ปแบบคาสัง่ If…Then…Else
If เงื่อนไขที่ตรวจสอบ Then
ชุดคาสัง่ เมื่อมีการตรวจสอบเงื่อนไขแล้วได้ผลเป็ นจริ ง(True)
Else
ชุดคาสัง่ เมื่อมีการตรวจสอบเงื่อนไขแล้วได้ผลเป็ นเท็จ(False)
End If
คาสัง่ ตัดสิ นใจ
False
True
False
Statement
Statement
Else
Statement
Then
True
False
Expression2
Statement
Else
True
Expression1
Expression1
Else
Statement
True
False
Expression2
Statement
Then
Statement
Else
Statement
Then
Then
รู ปแบบคาสัง่ If…Then…Else แบบซ้อนกัน
รู ปแบบคาสั่งซ้อนกันภายใต้ Then
If
เงื่อนไขที่ 1 Then
ชุดคาสั่งเมื่อมีการตรวจสอบเงื่อนไขที่1ได้ผลเป็ นจริ ง(True)
If เงื่อนไขที่ 2 Then
ชุดคาสั่งเมื่อมีการตรวจสอบเงื่อนไขที่2ได้ผลเป็ นจริ ง(True)
Else
ชุดคาสั่งเมื่อมีการตรวจสอบเงื่อนไขที่2ได้ผลเป็ นเท็จ(False)
End If
Else
ชุดคาสั่งเมื่อมีการตรวจสอบเงื่อนไขที่1ได้ผลเป็ นเท็จ(False)
End If
รู ปแบบคาสัง่ If…Then…Else แบบซ้อนกัน
รู ปแบบคาสั่งซ้อนกันภายใต้ Else
If
เงื่อนไขที่ 1 Then
ชุดคาสั่งเมื่อมีการตรวจสอบเงื่อนไขที่1ได้ผลเป็ นจริ ง(True)
Else
ชุดคาสั่งเมื่อมีการตรวจสอบเงื่อนไขที่1ได้ผลเป็ นเท็จ(False)
If เงื่อนไขที่ 2 Then
ชุดคาสั่งเมื่อมีการตรวจสอบเงื่อนไขที่2ได้ผลเป็ นจริ ง(True)
Else
ชุดคาสั่งเมื่อมีการตรวจสอบเงื่อนไขที่2ได้ผลเป็ นเท็จ(False)
End If
End If
การใช้ If ซ้อน If : ตัดสิ นใจเลือกมากกว่า 2ทางเลือก
เป็ นการตรวจสอบเงื่อนไขของทางเลือกที่มีไปทีละทางเลือกจนครบจานวน
ทางเลือกที่มีอยู่ ตามรู ปแบบโฟลว์ชาร์ตดังนี้
False
Expression1
False
Expression2
False
Expression3
....
True
True
True
Statement1
Statement2
Statement3
Statementn
รู ปแบบคาสัง่ If ซ้อน If
เงื่อนไขทางเลือกที่ 1 Then
ชุดคาสั่งเมื่อมีการตรวจสอบเงื่อนไขที่1ได้ผลเป็ นจริ ง(True)
ElseIf เงื่อนไขทางเลือกที่ 2 Then
ชุดคาสัง่ เมื่อมีการตรวจสอบเงื่อนไขได้ผลเป็ นจริ ง(True)
ElseIf เงื่อนไขทางเลือกที่ 3 Then
ชุดคาสั่งเมื่อมีการตรวจสอบเงื่อนไขได้ผลเป็ นจริ ง (True)
If
.
.
.
.
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
Statement
Statement
Statement
Select…Case :
รู ปแบบคาสัง่
ตัดสิ นใจเลือกมากกว่า 2 ทางเลือก
เงื่อนไข
เงื่อนไขที่ 1
ชุดคาสัง่ เมื่อตรวจสอบเงื่อนไขที่ 1 แล้วเป็ นจริ ง
เงื่อนไขที่ 2
ชุดคาสัง่ เมื่อตรวจสอบเงื่อนไขที่ 2 แล้วเป็ นจริ ง
Select Case
Case
Case
...
...
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
ทำคำสั่ ง
ถัดไป
ตัวอย่างการทางานของ 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
Next
TextBox1.Text = s
ผลรัน
While…End While : การวนซ้ าด้วยจานวนรอบที่ไม่แน่นอน

เป็ นคาสัง่ ที่ทางานเมื่อเงื่อนไขที่กาหนดเป็ นจริ ง จะทาซ้ าไปเรื่ อย ๆ จนกว่า
เงื่อนไขที่กาหนดจะเป็ นเท็จจึงหยุดการทางาน
จริง(True)วนซำ้ อีกหรือไม่? เท็จ(False)
ทำซำ้ คำสั่ งใน
While
ทำคำสั่ ง
ถัดไป
รู ปแบบคาสัง่ While…End While
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)
ตรวจสอบเงื่อนไข
ทำซำ้ คำสั่ งใน
While
เท็จ(False)
ทำคำสั่ ง
ถัดไป
รู ปแบบคาสัง่ Do While…Loop
Do While เงื่อนไข
ชุดคาสัง่ เมื่อตรวจสอบเงื่อนไขแล้วได้ผลเป็ นจริ ง(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

รู ปแบบที่ 2: การใช้ Do Until…Loop
การทางานเหมือนคาสั่ง While วนซ้ าเมื่อเงื่อนไขเป็ นเท็จ แต่ จะหลุดการวน
ซ้าเมื่อเงื่อนไขเป็ นจริ ง
เท็จ(False)
ตรวจสอบเงื่อนไข
ทำซำ้ คำสั่ งใน Do
Until
จริง(True)
ทำคำสั่ ง
ถัดไป
รูปแบบคำสัง่
Do Until
เงือ
่ นไข
ชุดคำสั่ งเมือ
่ ตรวจสอบเงือ
่ นไขแลวได
ผลเป็
น
้
้
จริง(True)
ตัวอย่างการเขียน 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 รอบก่อนแล้วจึงตรวจสอบเงื่อนไขการวนซ้ า ซึ่ งจะหลุด
การวนซ้ าเมื่อเงื่อนไขเป็ นเท็จ
ทำซำ้ คำสั่ งใน
Do..Loop While
จริง(True)
รูปแบบคำสัง่
เท็จ(False)
ตรวจสอบเงื่อนไขที่กำหนด
ทำคำสั่ ง
ถัดไป
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

รู ปแบบที่ 4: การใช้ Do…Loop Until
การทางานอย่างน้อย 1 รอบก่อนแล้วจึงตรวจสอบเงื่อนไขการวนซ้ า ซึ่ งจะหลุด
การวนซ้ าเมื่อเงื่อนไขเป็ นจริ ง
ทำซำ้ คำสั่ งใน
Do..Loop Until
เท็จ(False)
รูปแบบคำสัง่
จริง(True)
ตรวจสอบเงื่อนไขที่กำหนด
ทำคำสั่ ง
ถัดไป
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
3) a= 0
Do While a <10
Msgbox (“Hello”)
a += 1
Loop
5) a= 0
Do Until a =10
a += 2
Loop
Msgbox (a)
2) For a = 20 to 4 Step -2
Msgbox (“Hello”)
Next
4) a= 10
Do While a <10
Msgbox (“Hello”)
a += 1
Loop
6) a= 10
Do
Msgbox (“Hello”)
a += 1
Loop While a <10
แบบฝึ กหัด

เขียนโปรแกรมป้ อนรหัสผ่าน เหมือน ATM โดยมีเงื่อนไข
ตอบได้ไม่เกิน 3 ครั้ง
 ถ้าตอบถูก ออกจากการวนแสดงข้อความ “รหัสถูกต้อง” จบการทางาน
 ถ้ายกเลิกก่อน ให้ออกจากการวนและแสดงข้อความ “ดีแล้วที่ยกเลิก” จบการ
ทางาน
 ถ้าตอบผิด ให้บอกว่า ผิดกี่ครั้ง แล้วให้ตอบใหม่
 ถ้าตอบผิดครบ 3 ครั้ง ให้แสดงข้อความว่า “เสี ยใจด้วยบัตรของท่านถูกยึด” จบ
การทางาน

แบบฝึ กหัด
เขียนโปรแกรมแสดงแม่สูตรคูณ โดยการป้ อนค่าแม่สูตรคูณ
 เขียนโปรแกรมบวกเลขโดยเริ่ มตั้งแต่ 1-10 ด้วยคาสัง่ while และ
until Loop
 เขียนโปรแกรมป้ อนตัวเลข แล้วแสดงผลว่าเป็ นเลขคี่ หรื อเลขคู่ทาง
MessageBox หากป้ อนคาว่า “Stop” ก็ให้หยุดการวนรับค่าออก
จากการทางานของลูป

แบบฝึ กหัด
สสาร จุดเยือกแข็ง
นา้
0
เอทานอล
-114
ปรอท
-39
ออกซิเจน
-219
จุดเดือด
100
78
357
-183