Important Announcement
PubHTML5 Scheduled Server Maintenance on (GMT) Sunday, June 26th, 2:00 am - 8:00 am.
PubHTML5 site will be inoperative during the times indicated!

Home Explore ใบความรู้ หน่วยที่ 4

ใบความรู้ หน่วยที่ 4

Published by sawan_1966, 2019-06-04 22:40:59

Description: การเขียนโปรแกรมแบบมีการตัดสินใจ

Search

Read the Text Version

หน่วยท่ี 4

หนว่ ยท่ี 4 การเขียนโปรแกรมมีการตดั สินใจ ในหนว่ ยเรียนน้จี ะศึกษาเกย่ี วกบั การเขียนโปรแกรมทม่ี ีการตดั สินใจการทางานของโปรแกรม ซึ่งในการพัฒนา โปรแกรม จะหลีกเล่ียงการเขียนโปรแกรมใรลักษณะเชน่ นีไ้ ปไม่ได้ 4.1 หลกั การเขยี นโปรแกรมแบบมกี ารตดั สนิ ใจ คาสั่งแบบมเี งอ่ื นไขเพือ่ การตัดสนิ ใจ คาสั่งแบบมีเงื่อนไขเพื่อการตดั สินใจ การเขียนโปรแกรมแบบมเี งอ่ื นไข เปน็ ลกั ษณะของการเปรียบเทียบหรือตรวจสอบข้อมูลเพอ่ื หาหนทางการทางาน ที่ ถูกต้องให้เป็นไปตามความต้องการของเง่ือนไขหรือของทศิ ทางการทางานท่ีต้องการ โดยผลของการ เปรยี บเทียบ ขอ้ มูลหรือการทดสอบเงื่อนไขมคี วามเปน็ ไปได้ 2 ทิศทาง คือ ผลการเปรยี บเทียบท่ใี ห้ผล ค่าเปน็ จริง (True) และ ผล การเปรยี บเทยี บทีใ่ ห้ผลค่าเป็นเท็จ (False) การเขยี นโปรแกรมแบบมีเงื่อน ไขจงึ มีประโยชน์มากสาหรบั คอมพิวเตอร์ ในการตดั สินใจในทิศทางการทางานตามเงอ่ื นไขต่าง ๆ ตามทิศ ทางทีต่ ้องการได้ด้วยตัวเอง ประโยคแบบเง่ือนไข If Statement แบ่งออกเป็น 3 แบบ คือ 1.1.1 คำส่งั If…Then เปน็ คาสง่ั ทเี่ ขียนโปรแกรมเพ่ือสั่งให้คอมพิวเตอร์ ทาการเปรียบเทียบและตัดสนิ ใจเลือกเง่ือนไข ที่เปน็ จรงิ และให้กระทาคาส่ังทต่ี อ้ งการ โดยมที างเลือกเพยี ง 1 ทางเท่าน้ัน รปู แบบคาสั่ง If เงอ่ื นไข Then ชุดคาสง่ั ตา่ งๆท่ตี ้องการทาเมื่อเง่ือนไขเป็นจรงิ End If หลกั การทางาน จากรปู แบบคาส่งั หรือผงั งาน เม่ือโปรแกรมพบคาสั่งน้ี จะทาการตรวจสอบเงอ่ื นไข หลงั IF ผลลัพธ์ทไี่ ด้คือ - เงื่อนไขเปน็ จริง จะทาตามคาสง่ั หลัง Then - เงอื่ นไขเปน็ เทจ็ จะออกจากเงอื่ นไข ตัวอยา่ ง Dim y As Integer y=5 If y > 2 Then Debug.Print “Y มีค่ามากกว่า 2”

End If Debug.Print “Y มคี ่านอ้ ยกว่าหรอื เท่ากบั 2” 1.1.2 คำสง่ั If…Then…Else เป็นคาสั่งทีเ่ ขียนโปรแกรมเพ่อื ส่ังให้คอมพวิ เตอร์ ทาการตรวจสอบเงือ่ นไขแลว้ มี ทางเลอื ก 2 ทางเลือก โดยเปรยี บเทียบกับเง่ือนไขที่ได้ รูปแบบคาส่ัง IF เง่ือนไข THEN ชุดคาสงั่ ตา่ งๆท่ีต้องการทาเม่ือเง่ือนไขเปน็ จรงิ Else ชดุ คาส่งั ตา่ งๆทตี่ ้องการทาเมื่อเง่ือนไขเปน็ เท็จ End If Debug.Print “Y มีคา่ นอ้ ยกว่าหรอื เท่ากบั 2” หลักการทางาน จากรปู แบบคาสั่งหรือผงั งาน เม่ือโปรแกรมพบคาสง่ั น้ี จะทาการตรวจสอบเงื่อนไขหลัง IF ผลลัพธท์ ไี่ ด้ คอื - ถา้ เง่อื นไขเป็นจรงิ ใหท้ าตามคาสง่ั หรือชดุ คาสงั่ หลงั Then - ถ้าเงือ่ นไขเปน็ เท็จ ใหท้ าตามคาส่งั หรือชดุ คาสัง่ หลังElse ตวั อยา่ งการใช้งาน If…Then…Else Dim A As Integer, B As Integer Dim C As Integer A=5 B = 10 If A > B Then C=A+B Else C = A- B End If จากตวั อย่างจะมีการนาคา่ A มาเปรยี บเทียบกับ B ถ้าหากว่า Aมากกวา่ B ก็จะเอา A บวก กับ B แลว้ เกบ็ ไว้ ใน C ถา้ กรณี A<= B จะเป็นการนาเอา A มาลบออกดว้ ย B แลว้ เก็บผลลัพธ์ไวใ้ น C แต่ในตัวอย่างจะมีการทาคาส่ัง C = A- B เพราะ A = 5 และ B = 10 ดงั นั้น A จึงไม่มากกว่า B จงึ เป็นเหตุให้เง่อื นไขเป็นเทจ็ ดงั นั้น คาสง่ั C = A- B จึงถูกกระทา 1.1.3 คำสงั่ If…Then…Elseif เปน็ คาสั่งท่เี ขยี นโปรแกรมเพื่อส่งั ใหค้ อมพิวเตอร์ ทาการตรวจสอบ เงือ่ นไขแลว้ มีทางเลอื กมากกว่า 2 ทางเลือก รูปแบบคาส่งั IF เงือ่ นไข1 THEN ชุดคาสง่ั ต่างๆท่ตี ้องการทาเม่ือเงอื่ นไข1เป็นจรงิ Elseif เงอ่ื นไข2 THEN ชดุ คาสงั่ ต่างๆทต่ี ้องการทาเมื่อเงื่อนไข2เปน็ จริง Else ชดุ คาสั่งต่างๆที่ต้องการทาเม่ือไม่ตรงกบั เงอื่ นไขใด

End If หลกั การทางาน จากรูปแบบคาสั่งหรือผงั งาน เม่ือโปรแกรมพบคาสั่งนี้ จะทาการตรวจสอบเง่ือนไข หลงั IF ผลลัพธท์ ่ไี ดค้ ือ - ถา้ เงื่อนไขแรกเปน็ จริง ให้ทาตามคาส่งั หรือชดุ คาส่งั หลังThen หากเงอ่ื นไขแรกเปน็ เทจ็ ให้เขา้ ตรวจสอบเงอ่ื นไขที่2 - ถา้ เง่ือนไขที่ 2 เปน็ จริง ให้ทาตามคาสงั่ หรือชุดคาสั่งหลังThen ของคาสงั่ ที่ 2 หากเงื่อนไขที่ 2 เป็น เท็จ ให้ทาการตรวจสอบเงื่อนไขอกี เรื่อยๆ - ถ้าเง่ือนไขทงั้ หมดเป็นเท็จ ให้ทาตามคาสง่ั หรือชุดคาสั่งหลงั Else ตัวอยา่ ง If y > 2 Then MsgBox “วายมากกว่าสอง”, vbInformation+vbOkOnly, “ประโยคเง่ือนไข” ElseIf y > 0 Then MsgBox “วายไม่มากศนู ย์ แตน่ ้อยกวา่ หรอื เท่ากับสอง”, vbInformation+vbOkOnly, “ประโยคเง่ือนไข” Else MsgBox “วายไมม่ ากกว่าศนู ย์”, vbInformation+vbOkOnly, “ประโยคเงื่อนไข” End If ประโยคแบบเง่ือนไข Select Case คาสงั่ Select Case เป็นคาส่ังท่ีเหมาะสาหรบั การตรวจสอบเงือ่ นไข และมีทางเลือกมากกว่า 2 ทางเลอื ก นิยมใชใ้ นกรณีทเี่ ง่ือนไขมตี วั แปรเพียงตวั เดยี ว ลักษณะการทางานคลา้ ยกบั คาสงั่ If…Then…Elseif แตจ่ ะมีโครงสร้าง ซับซอ้ นน้อยกว่า รูปแบบคาสง่ั Select Case ช่ือตัวแปร Case เงอื่ นไข1 ชดุ คาสง่ั ตา่ งๆเงื่อนไข1เป็นจรงิ Case เง่อื นไข2 ชดุ คาส่งั ต่างๆเงื่อนไข2เป็นจรงิ Case เงอื่ นไขn ชุดคาสง่ั ตา่ งๆเงื่อนไขnเปน็ จริง Case Else ชุดคาสง่ั ตา่ งๆเม่ือไม่ตรงกับเง่ือนไขใด End Select หลักการทางาน จากรปู แบบคาสั่งหรอื ผงั งาน เมอื่ โปรแกรมพบคาสัง่ น้ี จะทาการตรวจสอบคา่ ของตัว แปรหลัง Select Case วา่ มคี า่ ตรงกบั เงอื่ นไขใดหลงั คาส่ัง Case กใ็ ห้ทาคาสง่ั ทอี่ ยู่ต่อจาก คาส่ัง Case นั้นๆ และถา้ คา่ ของตัวแปรไม่ตรงกบั เง่ือนไขคาส่ังหลัง Case ใดเลย โปรแกรมจะทาคาสัง่ ท่อี ยู่หลงั Case Else การใชค้ าส่งั Select Case มี 2 ลกั ษณะ 1. การใขค้ าส่งั Select Case แบบกาหนดช่วง ตวั อย่าง Select Case total Case 10 To 20

MsgBox “Total มคี า่ ต้ังแต่ 10 ถึง 20” Case 30 To 40 MsgBox “Total มคี า่ ตัง้ แต่ 30 ถงึ 40” Case 50 To 60 MsgBox “Total มคี ่าตง้ั แต่ 50 ถงึ 60” Case Else MsgBox “กรณุ าป้อนข้อมูลใหม่” End Select 2. การใช้คาสั่ง Select Case แบบเปรยี บเทียบ ใช้ IS เพอ่ื แทนชอ่ื ตัวแปร ตัวอย่าง 1 Select Case y Case IS >= 2 MsgBox “วายมากกวา่ หรือเท่ากบั สอง”, vbInformation+vbOkOnly, “ประโยคเง่อื นไข” Case IS >= 8 MsgBox “วายมากกว่าหรือเท่ากบั แปด”, vbInformation+vbOkOnly, “ประโยคเง่ือนไข” Case Else MsgBox “วายมากกว่าหรือเทา่ กับสองและแปด”, vbInformation+vbOkOnly, “ประโยคเงื่อนไข” End Select ตัวอยา่ ง 2 Select Case y Case 2 MsgBox “วายเท่ากับสอง”, vbInformation+vbOkOnly, “ประโยคเง่ือนไข” Case 0 MsgBox “วายเทา่ กบั ศูนย์”, vbInformation+vbOkOnly, “ประโยคเงอื่ นไข” Case Else MsgBox “วายไม่เทา่ กับสอง และไมเ่ ทา่ กบั ศนู ย์”, vbInformation+vbOkOnly, “ประโยคเงื่อนไข” 4.2 คาสั่งท่ีสรา้ งเง่ือนไข คาสัง่ ทส่ี ร้างเง่ือนไขในการตดั สินใจ (Decision Structures) o คาส่ัง If-Then เป็นการสรา้ งเงื่อนไข ตรวจสอบเงื่อนไข หรือเป็นทางเลอื ก เพอ่ื ตดั สินใจแบบ ธรรมดาและง่ายทีส่ ดุ นนั่ คือ ถา้ เงื่อนไข เปน็ จริง ก็จะทาตามเงื่อนไขท่ีคณุ ได้สรา้ งไว้ มีรูปแบบการใชง้ านดังน้ี If condition Then statements o ตวั แปร condition หมายถึง เงอ่ื นไขที่คณุ กาหนดขึน้ มา o ตัวแปร statements หมายถึง เมอ่ื เงื่อนไขเปน็ จริงแลว้ จะใหท้ าอะไร เชน่

If cnt < 5 Then a = b + cnt จากตัวอย่าง ถ้าตวั แปร cnt นอ้ ยกว่า 5 ใหเ้ อาตวั แปร b+cnt แล้วเก็บไว้ในตวั แปร a จะเหน็ ไดว้ ่า เฉพาะกรณีตัว แปร cnt น้อยกวา่ 5 เทา่ นั้น จึงจะมีการบวกกนั แต่ถ้าตัวแปร cnt มากกวา่ 5 กจ็ ะไม่มีผลอะไร แต่คุณยังสามารถ สรา้ งเง่อื นไข เพิ่มข้นึ เผื่อไวใ้ นกรณที ่ี เงื่อนไขไม่เปน็ จรงิ โดยมรี ูปแบบการใชง้ านดงั นี้ If condition Then statements Else elsestatements End If o คาสงั่ Else หมายถึง กรณีที่เงื่อนไขดังกลา่ วเปน็ เทจ็ o คาสั่ง End If หมายถงึ จบเง่ือนไข o ตวั แปร elsestatements หมายถงึ ชดุ คาสัง่ ท่จี ะทา เมื่อเงอื่ นไขเปน็ เท็จ เชน่ If cnt<5 Then a = b + cnt Else a = b - cnt End If จากตัวอยา่ ง เหน็ ไดว้ า่ มีการเพ่ิมกรณีท่ตี ัวแปร cnt >=5 ให้เอาตัวแปร b-cnt แล้วให้เกบ็ ไวใ้ นตัวแปร a คณุ ยงั สามารถเพ่ิมกรณตี รวจสอบ เงอื่ นไขมากข้นึ อกี ก็ได้ เม่อื คุณมกี ารสรา้ งแอพพลเิ คชันข้ึนมา บางคร้งั คณุ อาจต้องสร้าง เง่ือนไขตรวจสอบมากมาย และแยกเป็นหลายๆ กรณี ซึ่งเปน็ รูปแบบทคี่ ุณจะได้พบแน่นอน มรี ูปแบบการใช้งานดังนี้

If condition Then statements ElseIf condition2 Then elseifstatements Else elsestatements End If o คาส่ัง ElseIf หมายถงึ คาสั่งสาหรบั เพิ่มกรณีตรวจสอบขน้ึ มา เพอ่ื สรา้ งเง่อื นไขข้ึนมาอีก 1 กรณี o ตวั แปร condition2 หมายถึง เป็นเง่อื นไขท่ี 2 ทคี่ ณุ กาหนดขึน้ มา o ตัวแปร elseifstatements หมายถึง ชุดคาสั่งสาหรบั กรณเี งือ่ นไขท่ี 2 เช่น If cnt < 5 Then a = b + cnt ElseIf cnt < 10 Then a = b * cnt Else a = b - cnt End If สมมตวิ ่าตวั แปร cnt=6 ซึง่ จะทาให้กรณีแรก (cnt<5) เปน็ เท็จทันที จงึ มาทเ่ี ง่ือนไขท่ี 2 ปรากฎวา่ เปน็ จรงิ จึงนา ตวั แปร b*cnt แลว้ เกบ็ ไวใ้ นตัวแปร a ให้คุณลองเปลีย่ นเป็น cnt=10 ทาให้กรณีที่ 1 และ 2 เปน็ เท็จทันที ก็จะมาทา คาส่งั ทอ่ี ยู่ในเง่ือนไข else ทันที คณุ สามารถเพิ่มกรณีแบบน้ี ไดไ้ ม่จากดั กลา่ วคือ ใสช่ ุด ของ ElseIf condition2 Then elseifstatements มากเทา่ ใดก็ได้ ตามท่ีคุณต้องการ แต่ถา้ มีการตรวจสอบเง่ือนไข มากๆ หลายกรณี โปรแกรมเมอร์ไมน่ ิยม ใชช้ ุดคาสัง่ นี้ จะใชช้ ุดคาสง่ั Select Case เพราะมกี ารตรวจสอบ ท่ีทาให้ source code มรี ะเบียบ เรยี บรอ้ ยมากกวา่


Like this book? You can publish your book online for free in a few minutes!
Create your own flipbook