เอกสารประกอบการสอนportal5.udru.ac.th/ebook/pdf/upload/174f4lhdk688fuh2fluv.pdf ·...
Post on 09-Jan-2020
6 Views
Preview:
TRANSCRIPT
เอกสารประกอบการสอน
วชาการเขยนโปรแกรมคอมพวเตอรทางธรกจเบองตน
ปณธาน เมฆกมล
คอ.ม. (คอมพวเตอรและเทคโนโลยสารสนเทศ)
คณะวทยาการจดการ
มหาวทยาลยราชภฏอดรธาน
ก
คานา
เอกสารประกอบการสอน รายวชาการเขยนโปรแกรมคอมพวเตอรทางธรกจเบองตน
รหส BC 10204 น ใชประกอบการเรยนการสอนหลกสตรบรหารธรกจบณฑต สาขาคอมพวเตอรธรกจ
ไดแบงเนอหาในการเรยนการสอนไว 11 บทเรยน ประกอบดวย โปรแกรมคอมพวเตอร, ขนตอนและวธการทางคอมพวเตอรในการพฒนาโปรแกรม, การใชงาน Visual Basic 2012 เบองตน, การออกแบบและสรางสวนตดตอกบผใชงาน, ตวแปรและตวดาเนนการ, โครงสรางการเขยนโปรแกรมแบบลาดบและการเขยนโปรแกรมคอมพวเตอรเบองตน, โครงสรางการเขยนโปรแกรมแบบเลอกทา, โครงสรางคาสงแบบเลอกทาดวยคาสง Select Case,โครงสรางการเขยนโปรแกรมแบบทาซ าดวยโครงสรางคาสง For, โครงสรางการเขยนโปรแกรมแบบทาซ าดวยโครงสรางคาสง Do และ ซบรทนและฟงกชน
ตามลาดบ ใชเวลาในการเรยนการสอน 16 สปดาห ซงเนอหาในเอกสารประกอบการสอนนผเขยนไดรวบรวมขอมลจากแหลงตาง ๆ และจากประสบการณในการพฒนาโปรแกรมของผเขยนเอง
ผเขยนขอขอบคณบดา มารดา ภรรยาและลกชายอนเปนทรกยงทเปนกาลงใจสนบสนนใหงานสาเรจไปดวยด ผเขยนขอขอบคณเจาของงานเขยนทกทานทไดถกอางองในเอกสารประกอบการสอนเลมน ผเขยนมไดมเจตนาจะละเมดลขสทธของผใด หากมขอความหรอรปภาพบางสวนทไมไดอางถง ตองขออนญาตมา ณ ทนดวย
ปณธาน เมฆกมล
มนาคม 2555
ข
สารบญ
หนา
คานา กสารบญ ขสารบญรป ชสารบญตาราง ฒแผนบรหารการสอนประจาวชา ตแผนบรหารการสอนประจาวชาบทท 1 1
บทท 1 โปรแกรมคอมพวเตอร 3
1.1 ความหมายของโปรแกรมคอมพวเตอร 3
1.2 ภาษาโปรแกรมคอมพวเตอร 3
1.3 การทางานของภาษาโปรแกรมคอมพวเตอร 6
1.4 ตวแปรภาษา (Language Translator) 6
1.5 ประเภทของโปรแกรมคอมพวเตอร 8
สรป 9
คาถามทายบท 9
เอกสารอางอง 10
แผนบรหารการสอนประจาวชาบทท 2 11
บทท 2 ขนตอนและวธการทางคอมพวเตอรในการพฒนาโปรแกรม 13
2.1 การวเคราะหปญหา 14
2.2 การออกแบบวธการโปรแกรม 17
2.3 ตรวจสอบอลกอรธม 25
สรป 28
แบบฝกหดทายบท 28
เอกสารอางอง 29
แผนบรหารการสอนประจาวชาบทท 3 30
ค
บทท 3 การใชงาน Visual Basic 2012 เบองตน 31
3.1 การเรยกใชงาน Microsoft Visual Studio 2012 31
3.2 การตงคาภาษาและสภาพแวดลอมเรมตนของ Visual Studio 2012 32
3.3 การใชงาน Microsoft Visual Basic 2012 เบองตน 33
3.4 ออบเจกต (Object) 38
3.5 การใชงาน Code Editor 42
3.6 การบนทกโพรเจกต 47
3.7 ไฟลประเภทตางๆในโพรเจกตของ Visual Basic 2012 48
3.8 การตงคาการบนทกโพรเจกตเมอเรมตนสรางโพรเจกต 49
3.9 การเปดโพรเจกต 49
สรป 50
แบบฝกหด 50
เอกสารอางอง 51
แผนบรหารการสอนประจาวชาบทท 4 52
บทท 4 การออกแบบและสรางสวนตดตอกบผใชงาน 53
4.1 การออกแบบและสรางสวนตดตอกบผใชงาน 53
4.2 วธการออกแบบสวนตดตอกบผใชงาน 53
4.3 Graphical User Interfaces 54
4.4 ขนตอนการออกแบบสวนตดตอกบผใชงาน 55
4.5 การสรางคอนโทรลบนฟอรม 56
4.6 การกาหนดคณสมบตของคอนโทรล 57
4.7 คอนโทรลพนฐานในการเขยนโปรแกรม 60
4.8 การตงชอออบเจกตหรอคอนโทรล 66
สรป 74
เอกสารอางอง 76
แผนบรหารการสอนประจาวชาบทท 5 77
ง
บทท 5 ตวแปรและตวดาเนนการ 79
5.1 ตวแปร (Variable) 79
5.2 ชนดขอมลของตวแปร 80
5.3 การประกาศตวแปร 82
5.4 การตงชอตวแปร 83
5.5 คาคงท (Constant) 88
5.6 ขอบเขตของตวแปร 89
5.7 การแปลงชนดขอมล 90
5.8 ตวดาเนนการ 92
สรป 94
แบบฝกหด 95
.เอกสารอางอง 96
แผนบรหารการสอนประจาวชาบทท 6 97
บทท 6 โครงสรางการเขยนโปรแกรมแบบลาดบ และการเขยนโปรแกรมคอมพวเตอรเบองตน 99
6.1 โครงสรางแบบลาดบ (Sequence Structure) 99
6.2 การกาหนดคาใหกบตวแปร 101
6.3 การแปลงขอมลดวยฟงกชน Val (Val Function) 101
6.4 การใชงาน Message Box 104
6.5 การใชงาน InputBox 106
6.6 คาสงปดฟอรม 111
6.7 การจดรปแบบผลลพธทเปนตวเลข 111
6.8 การปองกนความผดพลาด (Error) ของโปรแกรมจากการไมไดปอนขอมล 113
สรป 118
แบบฝกหด 119
เอกสารอางอง 120
แผนบรหารการสอนประจาวชาบทท 7 121
จ
บทท 7 โครงสรางการเขยนโปรแกรมแบบเลอกทา 123
7.1 โครงสรางการเขยนโปรแกรมแบบเลอกทา 123
7.2 การใชงานตวดาเนนการของโครงสรางการเขยนโปรแกรมแบบเลอกทา 124
7.3 โครงสรางคาสง if …Then (if … Then Statement) 126
7.4 โครงสราง if….Then…Else (if….Then…Else Statement) 132
7.5 โครงสราง If….Then…ElseIf (If….Then…ElseIf Statement) 136
7.6 การใชงานเชคบอกซ (Check Box) 140
7.7 การใชงานเรดโอบททน (Radio Button) 144
7.8 การใชงานกรปบอกซ (Group Box) 147
สรป 148
แบบฝกหด 149
เอกสารอางอง 150
แผนบรหารการสอนประจาวชาบทท 8 151
บทท 8 โครงสรางคาสงแบบเลอกทาดวยคาสง Select case 153
8.1 โครงสรางคาสง Select Case 153
8.2 การระบคาเปนชวงใหกบ Select Case 157
8.3 การใชงานคอมโบบอกซ (ComboBox) 163
8.4 การใชงานคอนโทรลลสตบอกซ (ListBox) 168
สรป 176
แบบฝกหด 177
เอกสารอางอง 178
แผนบรหารการสอนประจาวชาบทท 9 179
บทท 9 โครงสรางการเขยนโปรแกรมแบบทาซ าดวยโครงสรางคาสง For 181
9.1 โครงสรางคาสง For…Next 181
9.2 การใชงาน Step 189
9.3 การใชงาน Step – 190
ฉ
9.4 โครงสรางคาสง For Each…Next 192
สรป 197
แบบฝกหด 198
เอกสารอางอง 199
แผนบรหารการสอนประจาวชาบทท 10 200
บทท 10 โครงสรางการเขยนโปรแกรมแบบทาซ าดวยโครงสรางคาสง Do 201
10.1 โครงสรางคาสง Do While 201
10.2 โครงสรางคาสง Do Until 205
10.3 ลปทวนซ าไมรจบ 207
สรป 210
แบบฝกหด 211
เอกสารอางอง 212
แผนบรหารการสอนประจาวชาบทท 11 213
บทท 11 ซบรทนและฟงกชน 215
11.1 โปรแกรมยอย (Procedure) 215
11.2 ซบรทน (Subroutines) 216
11.3 ฟงกชน (Function) 220
11.4 ฟงกชนทมใน VB 2012 (Built-in Function) 222
สรป 230
แบบฝกหด 231
เอกสารอางอง 232
บรรณานกรม 233
ช
สารบญรป
หนา
รปท 1.1 แสดงการแปลภาษาจากภาษาโปรแกรมระดบสงเปนรหสเครอง 6
รปท 1.2 แสดงขนตอนการแปลภาษาของ Interpreter 7
รปท 1.3 แสดงขนตอนการแปลภาษาของ Complier 7
รปท 2.1 แสดงขนตอนการทางานของคอมพวเตอร 13
รปท 2.2 แสดงการวเคราะหขอมลของโปรแกรมคานวณคาลวงเวลาพนกงาน 15
รปท 2.3 แสดงการปรบลาดบการวเคราะหขอมล 16
รปท 2.4 แสดงการวเคราะหขอมลของโปรแกรมคานวณเงนเดอนคงเหลอประจาเดอนของพนกงาน 16
รปท 2.5 แสดงอลกอรธมของโปรแกรมคานวณคาลวงเวลาของพนกงาน 18
รปท 2.6 แสดงอลกอรธมของโปรแกรมคานวณเงนเดอนคงเหลอประจาเดอน
ของพนกงานหลงหกเงนประกนสงคม 5 เปอรเซนตของเงนเดอนประจา 19
รปท 2.7 แสดงผงงานระบบ และ ผงงานโปรแกรม 21
รปท 2.8 แสดงสญลกษณของผงงาน 23
รปท 2.9 แสดงอลกอรธมของโปรแกรมคานวณคาลวงเวลาของพนกงาน 23
รปท 2.10 แสดงผงงานของโปรแกรมคานวณคาลวงเวลาของพนกงาน 24
รปท 2.11 แสดงอลกอรธมของโปรแกรมคานวณเงนเดอนคงเหลอประจาเดอน
ของพนกงานหลงหกเงนประกนสงคม 5 เปอรเซนตของเงนเดอนประจา 24
รปท 2.12 แสดงผงงานของโปรแกรมคานวณเงนเดอนคงเหลอประจาเดอน
ของพนกงานหลงหกเงนประกนสงคม 5 เปอรเซนตของเงนเดอนประจา 25
รปท 2.13 แสดงตารางการตรวจสอบอลกอรธม (Desk-Check the Algorithm)
ของการคานวณคาลวงเวลาของพนกงาน 26
รปท 2.14 แสดงตารางการตรวจสอบอลกอรธม (Desk-Check the Algorithm) ของการคานวณคาลวงเวลาของพนกงาน 27
รปท 3.1 แสดงการเรยกใชงาน Microsoft Visual Studio 2012 31
รปท 3.2 แสดงการเลอกภาษา Visual Basic เปนภาษาเรมตนเมอเปด Visual Studio 2012 33
รปท 3.3 แสดงหนาจอเรมตนของ Visual Studio 2012 33
รปท 3.4 แสดงหนาจอการสรางโพรเจกตใหม 35
ซ
รปท 3.5 แสดงสวนประกอบของ IDE ใน Visual Studio 2012 35
รปท 3.6 แสดงแถบเมนและแถบเครองมอ 36
รปท 3.7 แสดงสวนประกอบตาง ๆ ของ IDEโปรแกรม Microsoft Visual studio 2012 37
รปท 3.8 แสดงการเรยกใชงาน Properties Windows 38
รปท 3.9 แสดงการกาหนดคณสมบตของออบเจกตผานทาง Properties Windows 40
รปท 3.10 แสดงการกาหนดคณสมบตของออบเจกตโดยการเขยนคาสง 40
รปท 3.11แสดงการใชเมธอดของคอนโทรล 40
รปท 3.12 แสดงการเปรยบเทยบสญลกษณของคณลกษณะและวธการของออบเจกต 41
รปท 3.13 แสดงการเขยนคาสงในโปรแกรม 41
รปท 3.14 แสดงการทางานของโปรแกรมแบบ Event – Driven
จะมกลองขอความขนเมอมการคลกเมาสทปม 41
รปท 3.15 แสดงการเลอกเหตการณอน ๆ ของออบเจกตเพอเขยนคาสง 42
รปท 3.16 แสดงการเปด Code Editor ดวยการดบเบลคลกทออบเจกต 42
รปท 3.17 แสดงการเปด Code Editor ดวยการเรยกใชจาก Solution Explorer 43
รปท 3.18 แสดงคณสมบต Auto Correct ของ Code Editor 44
รปท 3.19 แสดงคณสมบต IntelliSense ของ Code Editor 44
รปท 3.20 แสดงขนตอนการตงคาตวหนงสอใน Code Editor 44
รปท 3.21 แสดงการใสคาอธบายโปรแกรม 45
รปท 3.22 แสดงการแบงคาสงเปนหลายบรรทด 46
รปท 3.23 แสดงการเขยนหลายคาสงในบรรทดเดยว 46
รปท 3.24 แสดงขนตอนการบนทกโพรเจกต 47
รปท 3.25 แสดงความสมพนธของโพรเจกต และโซลชน 47
รปท 3.26 แสดงไอคอนของ Visual Basic Project File และ Solution File 48
รปท 3.27 แสดงขนตอนการตงคาการบนทกโพรเจกตเมอเรมตนสรางโพรเจกต 49
รปท 3.28 แสดงขนตอนการเปดโพรเจกต 49
รปท 4.1 แสดงตวอยางโปรแกรมทเปน GUIs 54
รปท 4.2 ตวอยางบางสวนของสวนตดตอกบผใชหรอหนาจอโปรแกรมทผเขยนไดพฒนาขน 55
ฌ
รปท 4.3 แสดงการสรางคอนโทรลบนฟอรมวธท 1 56
รปท 4.4 แสดงการสรางคอนโทรลบนฟอรมวธท 2 56
รปท 4.5 แสดงการสรางคอนโทรลบนฟอรมวธท 3 57
รปท 4.6 แสดงการกาหนดคณสมบตของคอนโทรลผานหนาตาง Properties
ในชวงออกแบบโปรแกรม 58
รปท 4.7 แสดงขนตอนการกาหนดคณสมบตของคอนโทรลดวยการเขยนคาสง 59
รปท 4.8 แสดงคอนโทรล label 61
รปท 4.9 ตวอยางการกาหนดคณสมบตของ Label 62
รปท 4.10 แสดงคอนโทรล Text Box 62
รปท 4.11 แสดงตวอยางการกาหนดคณสมบตของ Text Box 63
รปท 4.12 แสดงคอนโทรล Button 63
รปท 4.13 ตวอยางการกาหนดคณสมบตของ Button 65
รปท 4.14 แสดงขนตอนการแสดงรปบนปมคาสง 66
รปท 4.15 แสดงการสรางโพรเจกตใหม 67
รปท 4.16 แสดงการตงชอฟอรม 67
รปท 4.17 แสดงขนตอนการกาหนดไตเตลของฟอรม 68
รปท 4.18 แสดงการวางคอนโทรล Label, TextBox และ Button บนฟอรม 68
รปท 4.19 แสดงขนตอนการกาหนดคณสมบต Text ของคอนโทรล Label 69
รปท 4.20 แสดงผลลพธจากการกาหนดคณสมบต Text ของคอนโทรล 69
รปท 4.21 แสดงขนตอนการกาหนดคณสมบต Enabled ของคอนโทรล Button 70
รปท 4.22 ผลลพธเมอสงใหโปรแกรมทางาน 70
รปท 4.23 แสดงการเขยนคาสงกาหนดคณสมบตของคอนโทรล 71
รปท 4.24 แสดงการทางานของโปรแกรมเมอปอนคาลงไปใน TextBox 71
รปท 4.25 แสดงการวางคอนโทรลบนฟอรม 73
รปท 4.26 แสดงการจดตาแหนงและขนาดของคอนโทรล 74
รปท 4.27 แสดงหนาจอโปรแกรมเมอสรางเสรจ 74
รปท 5.1 หนาจอโปรแกรม 86
ญ
รปท 5.2 แสดงการปอนคาลงใน Text Box 87
รปท 5.3 แสดงผลลพธของโปรแกรม 87
รปท 5.4 แสดงการปอนคาลงใน Text Box 88
รปท 5.5 แสดงผลลพธเมอปอนคาผดชนดลงในตวแปร 88
รปท 6.1 แสดงผงการทางานของโครงสรางแบบลาดบ 99
รปท 6.2 หนาจอโปรแกรมทดสอบการแปลงขอมล 102
รปท 6.3 แสดงผลลพธของโปรแกรม 103
รปท 6.4 แสดงผลลพธของโปรแกรมเมอใชฟงกชน Val 104
รปท 6.5 แสดงตวอยางของ Message Box 104
รปท 6.6แสดงตวอยาง MessageBox จากคาสง 105
รปท 6.7 แสดงการวางคอนโทรล 106
รปท 6.8 แสดงคาสงการใช Message Box 106
รปท 6.9 แสดงผลลพธของ Message Box 106
รปท 6.10 แสดง Input Box 107
รปท 6.11 แสดงการวางคอนโทรล 107
รปท 6.12 แสดง InputBox เมอคลกทปม 108
รปท 6.13 แสดง MessageBox เมอคลกทปม OK ของ InputBox 108
รปท 6.14 แสดงการวางคอนโทรลของโปรแกรมคานวณคาลวงเวลา 109
รปท 6.15 แสดงคาสงโปรแกรมคานวณคาลวงเวลาของพนกงาน 110
รปท 6.16 แสดงผลลพธเมอโปรแกรมทางาน 110
รปท 6.17 แสดงการใชคาสงจดรปแบบผลลพธทเปนตวเลข 112
รปท 6.18 แสดงผลลพธของการใชคาสงจดรปแบบผลลพธ 113
รปท 6.19 แสดงขอผดพลาดของโปรแกรมเมอผใชไมปอนตวเลขใน TextBox 113
รปท 6.20 แสดงการใชฟงกชน Val เพอปองกนขอผดพลาดของโปรแกรม 113
รปท 6.21 ผลลพธของโปรแกรมเมอใชฟงกชน Val ปองกนขอผดพลาดของโปรแกรม 114
รปท 6.22 แสดงการวางคอนโทรลบนฟอรมของโปรแกรมคานวณหาเงนเดอนคงเหลอประจาเดอน 114
รปท 6.23 แสดงผลการทางานของโปรแกรมคานวณเงนเดอนคงเหลอ 115
ฎ
รปท 6.24 แสดงการปอนขอมลของโปรแกรมคานวณเงนเดอนคงเหลอ 116
รปท 6.25 แสดงผลลพธของโปรแกรมคานวณเงนเดอนคงเหลอ 116
รปท 6.26 แสดงการทางานของโปรแกรมโดยไมปอนขอมล 117
รปท 6.27 แสดงขอผดพลาดของโปรแกรมเมอไมปอนขอมล 117
รปท 6.28 แสดงผลลพธของโปรแกรมเมอปองกนขอผดพลาดดวยฟงกชน Val 118
รปท 7.1 แสดงผงการทางานของโครงสรางแบบเลอกทา 123
รปท 7.2 ผงงานการทางานของโครงสรางคาสง if … Then 126
รปท 7.3 แสดงโปรแกรมคานวณคาคอมมชชนจากยอดขาย 127
รปท 7.4 แสดงหนาจอโปรแกรมคานวณคาคอมมชชน 128
รปท 7.5 แสดงหนาจอเมอรนโปรแกรมและปอนคา 129
รปท 7.6 แสดงผลการทางานของโปรแกรม 129
รปท 7.7 แสดงการวางคอนโทรลของโปรแกรม 130
รปท 7.8 แสดงการทางานของการปดโปรแกรม 131
รปท 7.9 แสดงผงงานของโครงสราง if….Then…Else 132
รปท 7.10 แสดงแสดงผงงานของโปรแกรมคานวณคาอาหารแบบบฟเฟต 133
รปท 7.11 แสดงหนาจอโปรแกรมคานวณคาอาหารแบบบฟเฟต 134
รปท 7.12 แสดงผลลพธของโปรแกรมคานวณคาอาหารแบบบฟเฟตแบบท 1 135
รปท 7.13 แสดงผลลพธของโปรแกรมคานวณคาอาหารแบบบฟเฟตแบบท 2 135
รปท 7.14 แสดงผงงานของโครงสราง If….Then…ElseIf 137
รปท 7.15 แสดงผงงานของโปรแกรมแสดงเกรดนกศกษา 138
รปท 7.16 แสดงการวางคอนโทรลของโปรแกรมแสดงเกรดนกศกษา 138
รปท 7.17 แสดงการทางานของโปรแกรมแสดงเกรดของนกศกษา 140
รปท 7.18 แสดงคอนโทรล Check Box 141
รปท 7.19 แสดงการวางคอนโทรลของโปรแกรมรานขายบะหม 142
รปท 7.20 แสดงผลลพธของโปรแกรมรานขายบะหม 144
รปท 7.21 แสดงการวางคอนโทรลของโปรแกรมเลอกสเสอ 145
รปท 7.22 แสดงผลลพธของโปรแกรมเลอกสเสอ 147
ฏ
รปท 7.23 แสดงคอนโทรล Group Box 147
รปท 7.24 แสดงการใชกรปบอกซจดกลมคอนโทรล 148
รปท 8.1 แสดงการวางคอนโทรลของโปรแกรมประเมนเกรด 154
รปท 8.2 แสดงผลลพธของโปรแกรมประเมนเกรด 155
รปท 8.3 แสดงผลลพธของโปรแกรมประเมนเกรดเมอปรบคาสงแบบท 1 157
รปท 8.4 แสดงผลลพธของโปรแกรมประเมนเกรดเมอปรบคาสงแบบท 2 157
รปท 8.5 แสดงการวางคอนโทรลของโปรแกรมประเมนเกรด ดวยคาสง Case Is 158
รปท 8.6 แสดงผลลพธของโปรแกรมประเมนเกรดดวยคาสง Case IS 159
รปท 8.7 แสดงการวางคอนโทรลของโปรแกรมคานวณภาษเงนไดบคคลธรรมดา 160
รปท 8.8 แสดงผลลพธโปรแกรมคานวณภาษเงนไดบคคลธรรมดา 162
รปท 8.9 แสดงตวอยาง ComBoBox 163
รปท 8.10 แสดงขนตอนท 1 ของการเพมรายการในคอมโบบอกซ 163
รปท 8.11 แสดงขนตอนท 2 ของการเพมรายการในคอมโบบอกซ 164
รปท 8.12 แสดงผลลพธของการเพมรายการในคอมโบบอกซ 164
รปท 8.13 แสดงผลลพธการเขาถงรายการใน Combo Box 166
รปท 8.14 แสดงผลลพธของคาสงแสดงรายการทถกเลอกของ Combo Box 167
รปท 8.15 แสดงตวอยางลสตบอกซ 168
รปท 8.16 แสดงขนตอนการเพมรายการในลสตบอกซทางหนาตางคณสมบต 169
รปท 8.17 แสดงการเขาถงรายการของลสตบอกซ 171
รปท 8.18 แสดงผลลพธของคาสงทง 2 แบบ 171
รปท 8.19 แสดงการวางคอนโทรลของโปรแกรมขายสนคา 173
รปท 8.20 แสดงการทางานของโปรแกรมขายสนคา 176
รปท 9.1 แสดงผงงานของโครงสรางคาสง For … Next 182
รปท 9.2 แสดงการวางคอนโทรลของโปรแกรมหาผลรวม 183
รปท 9.3 แสดงการทางานของโปรแกรมหาผลรวมตวเลขจานวนเตม 184
รปท 9.4 แสดงการวางคอนโทรลของโปรแกรมหาผลรวม n ตว 185
รปท 9.5 แสดงการทางานของโปรแกรมหาผลรวมตวเลข n ตว 186
ฐ
รปท 9.6 แสดงผลลพธเมอปอนคาครบตามจานวนทกาหนด 187
รปท 9.7 แสดงการวางคอนโทรลของโปรแกรมแสดงวนท 187
รปท 9.8 แสดงคาสงโปรแกรมของโปรแกรมแสดงวนท 188
รปท 9.9 แสดงการทางานของโปรแกรมแสดงวนท 188
รปท 9.10 แสดงการวางคอนโทรลของโปรแกรมการใชงาน Step 189
รปท 9.11 แสดงคาสงโปรแกรม Step 189
รปท 9.12 แสดงการทางานของคาสง Step 190
รปท 9.13แสดงการวางคอนโทรลของการใชคาสง Step – 190
รปท 9.14 แสดงการการเขยนคาสง Step - 191
รปท 9.15 แสดงการทางานของคาสง Step - 191
รปท 9.16 แสดงการวางคอนโทรล 192
รปท 9.17 แสดงผลลพธของโปรแกรมดวยคาสง For…Each…Next 193
รปท 9.18 แสดงการวางคอนโทรลของโปรแกรมคานวณยอดเงนฝากแบบฝากประจา 194
รปท 9.19 แสดงผลลพธของโปรแกรมหายอดเงนฝากแบบฝากประจา 196
รปท 10.1 แสดงผงงานการทางานของคาสง Do While 201
รปท 10.2 แสดงการวางคอนโทรลของโปรแกรมแสดงตวเลข 1-10 202
รปท 10.3 แสดงผลลพธของโปรแกรมเมอใชคาสง Do While 203
รปท 10.4 แสดงผงงานการทางานของคาสง Do Until 206
รปท 10.5 แสดงการวางคอนโทรลของโปรแกรมแสดงยอดเงนคงเหลอ
และจานวนงวดจากการผอนชาระเงน 208
รปท 10.6 แสดงผลลพธของโปรแกรมแสดงยอดเงนคงเหลอและจานวนงวดจากการผอนชาระเงน 209
รปท 11.1 แนวคดของโปรแกรมยอย 216
รปท 11.2 การทางานของซบรทน 216
รปท 11.3 หนาจอโปรแกรมแสดงวนสนสดการรบประกนสนคา 217
รปท 11.4 แสดงขนตอนการสรางซบรทน 218
รปท 11.5 แสดงบลอกคาสงของซบรทน 218
รปท 11.6 แสดงการเรยกใชซบรทน 219
ฑ
รปท 11.7 แสดงผลลพธของโปรแกรมแสดงวนสนสดการรบประกนสนคา 219
รปท 11.8 แสดงคาสงโปรแกรมดวยการสงผานพารามเตอร 220
รปท 11.9 การทางานของฟงกชน 220
รปท 11.10 หนาจอโปรแกรมแสดงคานวณภาษมลคาเพมจากราคาสนคา 221
รปท 11.11 แสดงหนาจอ Code Editor เมอสรางฟงกชนและเรยกใช 222
รปท 11.12 แสดงผลลพธโปรแกรมเมอมการเรยกใชฟงกชน 222
รปท 11.13 แสดงผลลพธการใชงาน Mid Function 225
รปท 11.14 แสดงผลลพธการใชงาน Right Function 226
รปท 11.15 แสดงผลลพธการใชงาน Left Function 227
รปท 11.16 แสดงผลลพธการใชงาน UCase Function 227
รปท 11.17 แสดงผลลพธการใชงาน LCase Function 228
รปท 11.18 แสดงผลลพธของการใชฟงกชนเกยวกบวนเดอนป 230
ฒ
สารบญตาราง
หนา
ตารางท 3.1แสดงประเภทโพรเจกตและคาอธบายของโพรเจกตตาง ๆ 34
ตารางท 3.2 แสดงปมคาสงและคาอธบายในแถบเครองมอ 36
ตารางท 3.3 แสดงตวอยางคณสมบตของออบเจกต 39
ตารางท 3.4 แสดงสและการเนนของคาสงใน Code Editor 45
ตารางท 3.5 แสดงคาอธบายของไฟลชนดตาง ๆ โพรเจกตของ Visual Basic 2012 48
ตารางท 4.1 แสดงคณสมบตของคอนโทรลและคาอธบาย 59
ตารางท 4.2 แสดงคณสมบตทสาคญของ Label 61
ตารางท 4.3 แสดงคณสมบตทสาคญของ TextBox 62
ตารางท 4.4 แสดงคณสมบตทสาคญของ Button 64
ตารางท 4.5 แสดงตวอยางการตงชอคอนโทรล 66
ตารางท 4.6 แสดงคาทกาหนดคณสมบตของคอนโทรลตาง ๆ 69
ตารางท 4.7 แสดงรายการคอนโทรลทใชในโปรแกรม 73
ตารางท 4.8 แสดงรายละเอยดการกาหนดคณสมบตของคอนโทรล 73
ตารางท 5.1 แสดงชนดขอมลใน Visual Basic 2012 80
ตารางท 5.2 แสดงการตงชอตวแปรดวยวธการระบตวยอชนดตวแปรทหนาชอตวแปร 84
ตารางท 5.3 แสดงสญลกษณแทนชนดขอมลใน Visual Basic 2012 85
ตารางท 5.4 แสดงการกาหนดคณสมบตของคอนโทรล 86
ตารางท 5.5 อธบายความหมายของแตละคาสงใน Button1 87
ตารางท 5.6 แสดงฟงกชน CType ทใชแปลงชนดขอมล 91
ตารางท 5.7 แสดงตวดาเนนการทางคณตศาสตร 92
ตารางท 5.8 แสดงตวดาเนนการกาหนดคา 93
ตารางท 5.9 แสดงลาดบความสาคญของตวดาเนนการ 93
ตารางท 6.1 แสดงตวอยางการแปลงขอมลดวยฟงกชน Val 102
ตารางท 6.2 แสดงคอนโทรลและคณสมบตของคอนโทรล 102
ตารางท 6.3 แสดงรปแบบของปมของ MessageBox 105
ณ
ตารางท 6.4 แสดงรปแบบไอคอนทมใหเลอกใชใน MessageBox 105
ตารางท 6.5 แสดงการกาหนดคณสมบตของคอนโทรล 109
ตารางท 6.6 แสดงการกาหนดคณสมบตของคอนโทรล 115
ตารางท 7.1 แสดงตวดาเนนการเปรยบเทยบ 124
ตารางท 7.2 แสดงตวดาเนนการทางตรรกศาสตร 125
ตารางท 7.3 แสดงคอนโทรลและคณสมบตของคอนโทรลโปรแกรมคานวณคาคอมมชชน 128
ตารางท 7.4 แสดงคอนโทรลและคณสมบตของคอนโทรล 130
ตารางท 7.5 แสดงคอนโทรลและคณสมบตของคอนโทรลโปรแกรมคานวณคาอาหารแบบบฟเฟต 134
ตารางท 7.6 แสดงเงอนไขของการแสดงเกรดของนกศกษา 137
ตารางท 7.7 แสดงคอนโทรลและคณสมบตของคอนโทรลของโปรแกรมแสดงเกรดนกศกษา 139
ตารางท 7.8 แสดงคณสมบต (Properties) ทสาคญของเชคบอกซไดแก 141
ตารางท 7.9 แสดงเหตการณทสาคญของ CheckBox 142
ตารางท 7.10 แสดงคอนโทรลและคณสมบตของคอนโทรลของโปรแกรมรานขายบะหม 142
ตารางท 7.11 แสดงคณสมบต (Properties) ทสาคญของ Radio Button ทนไดแก 144
ตารางท 7.12 แสดงเหตการณ (Event) ทสาคญของ Radio Button 145
ตารางท 7.13 แสดงคอนโทรลและคณสมบตของคอนโทรลของโปรแกรมเลอกสเสอ 145
ตารางท 7.14 แสดงคณสมบต (Properties) ทสาคญของกรปบอกซไดแก 148
ตารางท 8.1 แสดงคอนโทรลและคณสมบตของคอนโทรลของโปรแกรมประเมนเกรด 154
ตารางท 8.2 แสดงเงอนไขของโปรแกรมประเมนเกรด 157
ตารางท 8.3 แสดงคอนโทรลและคณสมบตของคอนโทรลของ
โปรแกรมประเมนเกรด ดวยคาสง Case Is 158
ตารางท 8.4 แสดงคอนโทรลและคณสมบตของคอนโทรลของ
โปรแกรมคานวณภาษเงนไดบคคลธรรมดา 160
ตารางท 8.5 แสดงคณคอนโทรลและคณสมบตของคอนโทรล 173
ตารางท 9.1 แสดงคอนโทรลและคณสมบตของคอนโทรลของโปรแกรมหาผลรวม 183
ตารางท 9.2 แสดงการบวกเพมคาเขาไปในตวแปร SumValue 185
ตารางท 9.3 แสดงคอนโทรลและคณสมบตของคอนโทรลของโปรแกรมหาผลรวม n ตว 186
ด
ตารางท 9.6 แสดงคอนโทรลและคณสมบตของคอนโทรลของโปรแกรมแสดงวนท 188
ตารางท 9.7 แสดงคอนโทรลและคณสมบตของคอนโทรลของโปรแกรม Step 189
ตารางท 9.8 แสดงคอนโทรลและคณสมบตของคอนโทรล 191
ตารางท 9.9 แสดงคอนโทรลและคณสมบตของคอนโทรล 193
ตารางท 9.10 แสดงคอนโทรลและคณสมบตของคอนโทรลของ
โปรแกรมคานวณยอดเงนฝากแบบฝากประจา 194
ตารางท 10.1 แสดงคอนโทรลและคณสมบตของคอนโทรลของโปรแกรมแสดงตวเลข 1- 10 202
ตารางท 10.2 แสดงคาของตวแปรของคาสง Do While 204
ตารางท 10.3 แสดงคอนโทรลและคณสมบตของคอนโทรลของ
โปรแกรมโปรแกรมแสดงยอดเงนคงเหลอและจานวนงวดจากการผอนชาระเงน 208
ตารางท 11.1 แสดงคอนโทรลและคณสมบตของคอนโทรลของ
โปรแกรมแสดงวนสนสดการรบประกนสนคา 217
ตารางท 11.2 แสดงคอนโทรลและคณสมบตของคอนโทรลของ
โปรแกรมคานวณภาษมลคาเพมจากราคาสนคา 221
ต
แผนบรหารการสอนประจาวชา
รหสวชา BC 10204 3(2-2-5)
รายวชา การเขยนโปรแกรมคอมพวเตอรทางธรกจเบองตน
(Basic Computer Programming For Business)
คาอธบายรายวชา
ศกษาแนวคด ขนตอนและวธการเขยนโปรแกรม ทกษะทจาเปนตอการพฒนาโปรแกรม เทคนคในการพฒนาโปรแกรมประยกต การเขยนโปรแกรมประยกตเบองตนสาหรบงานธรกจโดยศกษาจากตวอยางการใชงานจรง
วตถประสงคทวไป
1. เพอใหนกศกษาเขาใจและสามารถอธบายแนวคดและขนตอนวธการเขยนโปรแกรมได
2. เพอใหนกศกษาสามารถเขยนโปรแกรมดวยโครงสรางแบบลาดบได
3. เพอใหนกศกษาสามารถเขยนโปรแกรมดวยโครงสรางแบบเลอกทาได
4. เพอใหนกศกษาสามารถเขยนโปรแกรมดวยโครงสรางแบบทาซ าได
5. เพอใหนกศกษาสามารถใชงานโปรแกรมภาษา Visual Basic ได
6. เพอใหนกศกษาสามารถเขยนโปรแกรมประยกตเบองตนสาหรบงานธรกจได
เนอหา
บทท 1 โปรแกรมคอมพวเตอร
1.1 ความหมายของโปรแกรมคอมพวเตอร
1.2 ภาษาโปรแกรมคอมพวเตอร
1.3 การทางานของภาษาโปรแกรมคอมพวเตอร
1.4 ตวแปรภาษา
1.5 ประเภทของโปรแกรมคอมพวเตอร
สรป
แบบฝกหด
2 ชวโมง
ถ
บทท 2
ขนตอนและวธการทางคอมพวเตอรในการพฒนาโปรแกรม
2.1 การวเคราะหปญหา
2.2 การออกแบบวธการโปรแกรม
2.2.1 การออกแบบอลกอรธม
2.2.2 การเขยนผงงาน
ตรวจสอบอลกอรธม
สรป
แบบฝกหด
8 ชวโมง
บทท 3 การใชงาน Visual Basic 2012 เบองตน
3.1 การเรยกใชงาน Microsoft Visual Studio 2012
3.2 การตงคาภาษาและสภาพแวดลอมเรมตนของ Visual Studio 2012
3.3 การใชงาน Microsoft Visual Basic 2012 เบองตน
3.4 ออบเจกต (Object)
3.5 การใชงาน Code Editor
3.6 การบนทกโพรเจกต
3.7 ไฟลประเภทตางๆในโพรเจกตของ Visual Basic 2012
3.8 การตงคาการบนทกโพรเจกตเมอเรมตนสรางโพรเจกต
3.9 การเปดโพรเจกต
สรป
แบบฝกหด
4 ชวโมง
บทท 4 การออกแบบและสรางสวนตดตอกบผใชงาน
4.1 การออกแบบและสรางสวนตดตอกบผใชงาน
4.2 วธการออกแบบสวนตดตอกบผใชงาน
4.3 Graphical User Interfaces
4.4 ขนตอนการออกแบบสวนตดตอกบผใชงาน
4.5 การสรางคอนโทรลบนฟอรม
4.6 การกาหนดคณสมบตของคอนโทรล
4 ชวโมง
ท
4.7 คอนโทรลพนฐานในการเขยนโปรแกรม
4.8 การตงชอออบเจกตหรอคอนโทรล
สรป
แบบฝกหด
บทท 5 ตวแปรและตวดาเนนการ
5.1 ตวแปร
5.2 ชนดของขอมลของตวแปร
5.3 การประกาศตวแปร
5.4 การตงชอตวแปร
5.5 คาคงท (Constant)
5.6 ขอบเขตของตวแปร
5.7 การแปลงชนดขอมล 5.8 ตวดาเนนการ
สรป
แบบฝกหด
8 ชวโมง
บทท 6 โครงสรางการเขยนโปรแกรมแบบลาดบและการเขยนโปรแกรมคอมพวเตอรเบองตน
6.1 โครงสรางแบบลาดบ
6.2 การกาหนดคาใหกบตวแปร
6.3 การแปลงขอมลดวยฟงกชน Val (Val Function)
6.4 การใชงาน MessageBox
6.5 การใชงาน InputBox
6.6 คาสงปดฟอรม
6.7 การจดรปแบบผลลพธทเปนตวเลข
6.8 การปองกนความผดพลาด (Error) ของโปรแกรมจากการไมไดปอนขอมล
สรป
แบบฝกหด
8 ชวโมง
ธ
บทท 7 โครงสรางการเขยนโปรแกรมแบบเลอกทา
7.1 โครงสรางการเขยนโปรแกรมแบบเลอกทา
7.2 การใชงานตวดาเนนการของโครงสรางการเขยนโปรแกรมแบบเลอกทา
7.3 โครงสรางคาสง if …Then (if … Then Statement)
7.4 โครงสราง if….Then…Else (if….Then…Else Statement)
7.5 โครงสราง If….Then…ElseIf (If….Then…ElseIf Statement)
7.6 การใชงาน Check Box
7.7 การใชงาน Radio Button
7.8 การใชงาน Group Box
สรป
แบบฝกหด
10 ชวโมง
บทท 8 โครงสรางคาสงแบบเลอกทาดวยคาสง Select case
8.1 โครงสรางคาสง Select Case
8.2 การระบคาเปนชวงใหกบ Select Case
8.3 การใชงานคอนโทรล Combo Box
8.4 การใชงานคอนโทรล List Box
สรป
แบบฝกหด
8 ชวโมง
บทท 9 โครงสรางการเขยนโปรแกรมแบบทาซ าดวยโครงสรางคาสง For
9.1 โครงสรางคาสง For…Next
9.2 การใชงาน Step
9.3 การใชงาน Step –
9.4 โครงสรางคาสง For Each…Next
สรป
แบบฝกหด
4 ชวโมง
บทท 10 โครงสรางการเขยนโปรแกรมแบบทาซ าดวยโครงสรางคาสง Do
10.1 โครงสรางคาสง Do While
10.2 โครงสรางคาสง Do Until
10.3 ลปทวนซ าไมรจบ
4 ชวโมง
น
สรป
แบบฝกหด
บทท 11 ซบรทนและฟงกชน
11.1 โปรแกรมยอย (Procedure)
11.2 ซบรทน (Subroutines)
11.3 ฟงกชน (Function)
11.4 ฟงกชนทมใน VB 2012 (Built-in Function)
สรป
แบบฝกหด
8 ชวโมง
วธสอนและกจกรรม
1. อธบายขนตอนการเขยนโปรแกรมคอมพวเตอรในทกเรองอยางละเอยด
2. สาธตวธการเขยนโปรแกรมและอธบายคาสง
3. ใหนกศกษาฝกปฏบตเปนรายบคคล
4. บอกขอผดพลาดของคาสงในการเขยนโปรแกรมและวธแกปญหา
5.ใหนกศกษาปรบปรงวธการเขยนโปรแกรมคอมพวเตอรและทดลองแกไขขอผดพลาดท
เกดขน
6. ยกตวอยางกรณศกษาและใหนกศกษาทดลองเขยนโปรแกรมเพอแกไขปญหา
7. มอบหมายแบบฝกหดเปนการบาน
8. ผสอนสรปเนอหาเพมเตม
สอการเรยนการสอน
1. เอกสารประกอบการสอน
2. แผนเลอน
3. คอมพวเตอรและโปรแกรมภาษา Visual Basic 2012
บ
การวดและประเมนผล
การวดผล
1. คะแนนระหวางภาคเรยน 70 %
1.1 ปฏบตการเขยนโปรแกรม 40 %
1.2 คนควาและแบบฝกหด 20 %
1.3 การเขาชนเรยน 10 %
2. คะแนนสอบปลายภาคเรยน 30 %
การประเมนผล
คะแนนระหวาง 80 – 100
คะแนนระหวาง 75 – 79
คะแนนระหวาง 70 – 74
คะแนนระหวาง 65 – 69
คะแนนระหวาง 60 – 64
คะแนนระหวาง 55 – 59
คะแนนระหวาง 50 – 54
คะแนนระหวาง 0 – 49
ไดระดบ A
ไดระดบ B+
ไดระดบ B
ไดระดบ C+
ไดระดบ C
ไดระดบ D+
ไดระดบ D
ไดระดบ F
แผนบรหารการสอนประจาวชาบทท 1
หวขอเนอหาประจาบท 1.1 โปรแกรมคอมพวเตอร
1.2 ความหมายของโปรแกรมคอมพวเตอร
1.3 ภาษาโปรแกรมคอมพวเตอร
1.4 การทางานของภาษาโปรแกรมคอมพวเตอร
1.5 ตวแปรภาษา
1.6 ประเภทของโปรแกรมคอมพวเตอร
1.7 สรป
วตถประสงคเชงพฤตกรรม เมอศกษาบทนแลวนกศกษาสามารถ
1. อธบายความหมายของโปรแกรมคอมพวเตอรไดถกตอง
2. อธบายภาษาโปรแกรมคอมพวเตอรไดถกตอง
3. อธบายการทางานของโปรแกรมคอมพวเตอรไดถกตอง
4. อธบายการทางานตวแปลภาษา
5. อธบายประเภทของโปรแกรมคอมพวเตอร
6. อธบายขนตอนและวธการทางคอมพวเตอรในการพฒนาโปรแกรม
วธการสอนและกจกรรมการเรยนการสอนประจาบท
1. บรรยายเนอหาในแตละหวขอ พรอมยกตวอยางประกอบ
2. ศกษาจากเอกสารประกอบการสอน
3. ผสอนสรปเนอหา
4. ผเรยนถามขอสงสย
5. ผสอนทาการซกถาม
6. ทาแบบฝกหดเพอทบทวนบทเรยน
สอการเรยนการสอน
1. เอกสารประกอบการสอนการเขยนโปรแกรมคอมพวเตอรทางธรกจเบองตน
2. ภาพเลอน (Slide)
2
การวดและประเมนผล 1. สงเกตการณเขาชนเรยนและความสนใจขณะบรรยาย
2. มสวนรวมในการซกถามระหวางการบรรยาย
3. การตอบคาถามขณะทผสอนบรรยาย
4. การตรวจแบบฝกหด
บทท 1 โปรแกรมคอมพวเตอร
คอมพวเตอรไดเขามามบทบาทสาคญในหลายดานไมวาจะเปนดานการศกษา การตดตอสอสาร ความบนเทง ดานธรกจ การนาคอมพวเตอรมาชวยในการทางานดานตาง ๆ นนคอมพวเตอรไมสามารถทางานไดเองทนท ตองมการสงใหคอมพวเตอรทางานตามขนตอนเพ อใหคอมพวเตอรสามารถประมวลผลไดอยางถกตอง รวดเรวทนตอการใชงาน การสงใหคอมพวเตอรทางานนนจะใชกลมชดคาสงหรอทเรยกอกอยางหนงวา โปรแกรมคอมพวเตอร และการไดมาของกลมชดคาสงนนจะตองมการสรางกลมชดคาสงโดยใช ภาษาโปรแกรมคอมพวเตอร
1.1 ความหมายของโปรแกรมคอมพวเตอร
โปรแกรมคอมพวเตอร (Computer Program) หมายถง กลมชดคาสงทใชอธบายชนงาน หรอกลมงานทจะประมวลผลโดยคอมพวเตอร โปรแกรมคอมพวเตอรอาจหมายถง ซอฟตแวร โปรแกรมประยกต โปรแกรมคอมพวเตอรสวนใหญนนเปนชดคาสงทออกแบบตามขนตอนวธ โดยปกตแลวเขยนโดยโปรแกรมเมอร หรอไมกสรางโดยโปรแกรมอน โปรแกรมคอมพวเตอรชดหนง ๆ อาจเขยนขนดวยระบบรหส หรอทเรยกวา ภาษาเครอง ซงมกเขยนไดยากและเหมาะกบชางเทคนคเฉพาะทาง ภายหลงจงไดมการสรางภาษาโปรแกรมทใกลเคยงภาษามนษยมากขน (th.wikipedia.org, 2555)
โปรแกรมคอมพวเตอรหรอซอฟตแวร ถอวาเปนสวนสาคญในการควบคมการทางานของคอมพวเตอรใหเปนไปตามขนตอนทกาหนดไว คอมพวเตอรไมสามารถทางานนอกเหนอจากทกาหนดไวในโปรแกรม ฉะนนการทจะใหคอมพวเตอรทางานไดหลายอยางจะตองมการพฒนาโปรแกรมใหคอมพวเตอรทางานไดตามตองการ
1.2 ภาษาโปรแกรมคอมพวเตอร
คอมพวเตอรทางานดวยสญญาณไฟฟา โดยใชระบบเลขฐานสอง ทมตวเลข 0 และ 1 เปนรหสในการสงงานใหกบเครองคอมพวเตอร การจาและเขาใจในชดคาสงจะทาไดยากจงมการพฒนารหสสงงานใหกบเครองคอมพวเตอรในรปแบบตวอกษร ทเรยกวา ภาษาโปรแกรมคอมพวเตอร
ภาษาโปรแกรมคอมพวเตอร หมายถง ภาษาหรอคาสงใด ๆ ทผใชงานใชสอสารกบคอมพวเตอรแลวคอมพวเตอรสามารถทางานตามคาสงนนได
ภาษาโปรแกรมคอมพวเตอรแบงออกไดเปนสองกลมคอ ภาษาระดบต า(Low-Level
Programming Language) และภาษาระดบสง (High-Level Programming Language)
4
1.2.1 ภาษาโปรแกรมระดบตา (Low-Level Programming Language) หมายถง ภาษาทองกบสถาปตยกรรมคอมพวเตอรใดสถาปตยกรรมหนง ซงไมโครโพรเซสเซอรแตละรน หรอ แตละตระกล กมกมภาษาระดบตาทแตกตางกน และโดยปกตแลว หนงคาสงในภาษาระดบตา จะหมายถงการสงงานคอมพวเตอรใหทางานหนงอยาง (1 instruction = 1 operation) ภาษาระดบตา ม 2 ภาษา คอ
ภาษาเครอง เปนภาษาโปรแกรมรนทหนง (first-generation programming language: 1GL) ซงเปนภาษาเดยวทไมโครโพรเซสเซอรสามารถเขาใจ คาสงเปนตวเลขลวนๆ การอานและเขยนอาจตองใชเครองมอพเศษ จงไมคอยมการใชภาษาเครองโดยตรง
ภาษาแอสเซมบล เปนภาษาโปรแกรมรนทสอง (second-generation programming language:
2GL) ซงเปนการปรบภาษาเครองใหสามารถเขยนไดสะดวกขนโดยการพมพคาสงทเปนตวอกษรแทนตวเลข เวลาเขยนเสรจ จะตองใชตวแปลโปรแกรมจงจะใชงานได และถงแมวาไมใชภาษาเครองโดยตรง ผเขยนโปรแกรมยงจาเปนตองเขาใจโครงสรางของไมโครโพรเซสเซอรทกาลงเขยนเปนอยางด การใชภาษาแอสเซมบลจาเปนตองผานการแปลภาษาดวยคอมไพเลอรเฉพาะเรยกวา แอสเซมเบลอร (assembler) ใหอยในรปของรหสคาสงกอน (เชน .OBJ) โดยปกต ภาษานคอนขางมความยงยากในการใชงาน และการเขยนโปรแกรมเปนจานวนบรรทดมากมากกวา เมอเปรยบเทยบกบการใชภาษาระดบสง เชน ภาษา C หรอภาษา BASIC แตจะทาใหไดผลลพธการทางานของโปรแกรมเรวกวา และขนาดของตวโปรแกรมมขนาดเนอท นอยกวาโปรแกรมทสรางจากภาษาอนมาก จงนยมใชภาษานเม อตองการประหยดเวลาทางานของเครองคอมพวเตอร และเพมประสทธภาพของโปรแกรม
1.2.2 ภาษาโปรแกรมระดบสง (High-Level Programming Language)
ภาษาโปรแกรมระดบสงเปนภาษาคอมพวเตอรทพฒนาขนมาใหใกลเคยงกบภาษามนษยทาใหผเขยนโปรแกรมเขาใจและใชงานไดงายกวาภาษาโปรแกรมระดบตา ตวอยางของภาษาโปรแกรมระดบสงเชน
ภาษาซ (C Programming Language) เปนภาษาทออกแบบขนมาเพอสรางซอฟตแวรระบบ และยงพฒนาซอฟตแวรประยกตไดอกดวย ภาษาซเปนภาษาทไดรบความนยมมากทสด
ภาษาซพลสพลส (C++ Programming Language) เปนภาษาโปรแกรมคอมพวเตอรอเนกประสงค มโครงสรางภาษาทมการจดชนดขอมลแบบสแตตก (statically typed) และสนบสนนรปแบบการเขยนโปรแกรมทหลากหลาย (multi-paradigm language) ไดแก การ
5
โปรแกรมเชงกระบวนคาสง, การนยามขอมล, การโปรแกรมเชงวตถ ภาษาซพลสพลสเปนภาษาโปรแกรมเชงพาณชยทนยมมากภาษาหนงนบตงแตชวงทศวรรษ 1990
ภาษาปาสคาล (Pascal Programming Language) เปนภาษาโปรแกรมทใชกนอยางกวางขวาง โดยเฉพาะในวงการศกษา คดคนขนโดย นเคลาส แวรท (Niklaus Wirth) นกวทยาการคอมพวเตอรชาวสวตเซอรแลนด ในป ค.ศ.1970 เพอชวยในการเรยนการสอนการเขยนโปรแกรมโครงสราง (structured programming) ภาษาปาสคาลนนพฒนาขนมาจาก ภาษาอลกอล (Algol) และชอปาสคาลนน ตงเพอเปนเกยรตแก แบลส ปาสคาล (Blaise Pascal)
ภาษาเบสก (BASIC programming language) เปนภาษาโปรแกรมทออกแบบมาใหใชงานไดงาย และยงไดรบความนยมมาจนถงทกวนน เบสกออกแบบมาใหใชกบคอมพวเตอรตามบาน
ชอภาษาเบสก หรอ BASIC ยอมาจาก Beginner's All-purpose Symbolic Instruction Code
บรษทไมโครซอฟทไดนาภาษาเบสกมาปรบปรงใหทนสมย และพฒนาเครองมอพฒนาโปรแกรม Visual Basic ทาใหเบสกไดรบความนยมในการพฒนาโปรแกรมยคใหม รนลาสดของวชวลเบสกเรยกวา VB.NET
ภาษาจาวา (Java programming language) เปนภาษาโปรแกรมเชงวตถ (Object Oriented
Programming) พฒนาโดย เจมส กอสลง และวศวกรคนอนๆ ท ซน ไมโครซสเตมส ภาษาจาวาถกพฒนาขนในป พ.ศ. 2534 (ค.ศ. 1991) โดยเปนสวนหนงของ โครงการกรน (the Green
Project) และสาเรจออกสสาธารณะในป พ.ศ. 2538 (ค.ศ. 1995) ซงภาษานมจดประสงคเพอใชแทนภาษาซพลส พลส (C++) แตเดมภาษานเรยกวา ภาษาโอก (Oak) ซงตงชอตามตนโอกใกลททางานของ เจมส กอสลง แตวามปญหาทางลขสทธ จงเปลยนไปใชชอ "จาวา" ซงเปนชอกาแฟแทน
ภาษาซชารป (C# Programming Language) เปนภาษาโปรแกรมเชงวตถทางานบนดอตเนตเฟรมเวรก พฒนาโดยบรษทไมโครซอฟทและม Anders Hejlsberg เปนหวหนาโครงการ โดยมรากฐานมาจากภาษาซพลสพลสและภาษาอนๆ (โดยเฉพาะภาษาเดลไฟและจาวา) โดยปจจบนภาษาซซารปเปนภาษามาตรฐานรองรบโดย ECMA และ ISO
6
1.3 การทางานของภาษาโปรแกรมคอมพวเตอร
เมอมการเขยนโปรแกรมโดยใชภาษาโปรแกรมคอมพวเตอรระดบสงเชน ภาษา C, JAVA,
Visual Basic จะมการแปลภาษาจากภาษาโปรแกรมเปนรหสกลางหรอเรยกอกอยางหนงวา Byte Code
จากนนเวลาทางานรหสกลางจะแปลเปนรหสเครอง(Machine Code) เพอใหคอมพวเตอรทางานตามทผเขยนโปรแกรมกาหนด ในขนตอนทมการแปลงรหสกลางเปนรหสเครองนนจะเรยกวา Just-In-Time
(JIT)
แตสาหรบ Microsoft .Net ซงเปนภาษาโปรแกรมทพฒนาโดยบรษทไมโครซอฟต เชน C#
และ Visual Basic การเปลยนจากภาษาโปรแกรมเปนภาษากลางจะเรยกวา Common Intermediate
Language (CIL) และในขณะททางานจะแปลงเปนภาษาเครองเรยกวา Common Language
Runtime(CLR)
รปท 1.1 แสดงการแปลภาษาจากภาษาโปรแกรมระดบสงเปนรหสเครอง
ทมา : (Rod Stephens, 2012 : 27)
1.4 ตวแปรภาษา (Language Translator)
เปนโปรแกรมทเขยนขนมาเพอใชในการแปลความหมายของคาสงในภาษาระดบสงชนดตาง ๆ ใหเปนภาษาทเครองคอมพวเตอรเขาใจได ภาษาระดบสงมกจะถกนาไปเขยนเพอสรางเปนซอฟตแวรคอมพวเตอรตาง ๆ มากมาย โดยโปรแกรมเมอรหรอนกพฒนาระบบ ซงในระหวางททาการเขยนโปรแกรม จาเปนตองทดสอบคาสงทเขยนขนมาวาถกตองหรอไมและมผลลพธเปนอยางไร ไดมการแบงชนดของตวแปรภาษาออกเปน 2 ชนด ไดแก
C#
Program
Visual Basic
Program
Java
Program
CIL
code
Java
Bytecode
Machine
Code
C# Compiler
Visual Basic
Compiler
Java Compiler
CLR
JVM
7
1.4.1 อนเตอรพรเตอร (Interpreter) จะทาการแปลคาสงทเขยนทละ 1 คาสง ใหเปนภาษาเครองแลวนาคาสงนนไปทาการประมวลผลและแสดงผลลพธทนทหากไมพบขอผดพลาด หลงจากนนจะรบคาสงถดไปในโปรแกรมเพอแปลเปนภาษาเครองแลวทาการประมวลผลเรอย ๆ จนจบโปรแกรม ในระหวางแปลคาสงถาหากพบขอผดพลาดทางดานกฎเกณฑของภาษาในคาสงทรบมาแปล Interpreter กจะหยดทางาน พรอมแจงขอผดพลาดนน ๆ ใหผเขยนโปรแกรมทราบ เพอทาการแกไขใหถกตอง แตหากไมพบขอผดพลาดของคาสงในบรรทดนน กจะนาไปประมวลผลและแสดงผลลพธออกทางจอภาพทนท การแปลภาษาดวย Interpreter จะไมมการเกบ Object Code ไว ดงนนเมอตองการใชงานโปรแกรมนนซ าอก จาเปนตองทาการแปลคาสงในโปรแกรมนนใหมทกครง (กตต ภกด,
2546 : 134)
รปท 1.2 แสดงขนตอนการแปลภาษาของ Interpreter
ทมา : (กตต ภกดวฒนะกล, 2546 : 134)
1.4.2 คอมไพเลอร (Complier) จะตรวจสอบคาสงทเขยนขนทงหมดกอนแลวทาการแปลเปนภาษาเครองภายในครงเดยว จากนนเครองกจะทาการประมวลผลและแสดงผลลพธออกทางจอภาพ หลงจากตรวจสอบคาสงเสรจสน หากพบวามคาสงทเขยนผดไวยากรณหรอพบขอผดพลาดอน ๆ ภายในโปรแกรมทเขยนขน ตวแปรภาษาจะแจงใหผเขยนโปรแกรมทราบวาผดพลาดทบรรทดใด สาเหตอะไร ท งหมดกจด ผเขยนโปรแกรมตองทาการแกไขขอผดพลาดน นใหหมด แลวทาการแปลภาษาใหมเมอถกตองแลว จงสงภาษาเครองไปประมวลผลเพอแสดงผลลพธ การแปลภาษาดวย Complier จะมการเกบ Object Code ไว แลวจงนาไปประมวลผลทหนวยความจาในคราวเดยว ทาใหหนวยประมวลผลทางานนอยกวาการแปลภาษาดวย Interpreter (กตต ภกดวฒนะกล, 2546 : 134-135)
รปท 1.3 แสดงขนตอนการแปลภาษาของ Complier
ทมา : (กตต ภกดวฒนะกล, 2546 : 135)
คาสงภาษาระดบสง
1 สง
Interpreter ภาษาเครอง Processor
คาสงภาษาระดบสงทงหมด
Complier ภาษาเครอง Processor
8
1.5 ประเภทของโปรแกรมคอมพวเตอร
การแบงประเภทของโปรแกรมคอมพวเตอรหรอซอฟตแวรสามารถแบงไดเปนหลายแบบ
1.5.1 การแบงประเภทเชงเทคนค อาจแบงซอฟตแวรเปน 3 ประเภทหลกคอ
ซอฟตแวรระบบ (System/Infrastructure software) ใชในการทาใหคอมพวเตอรฮารดแวรทางานกบระบบคอมพวเตอรได โดยรวมถงระบบปฏบตการ ไดรเวอร และระบบหลกของคอมพวเตอรตาง ๆ
โปรแกรมประยกต หรอซอฟตแวรประยกต (Application software) ชวยใหผใชงานสามารถดาเนนงานตาง ๆ โดยทวไปเชน โปรแกรมสานกงานฐานขอมล คอมพวเตอรเกม เวบเบราวเซอร โดยโปรแกรมประยกตจะมจยไอ
โปรแกรมคอมพวเตอร (Tools/Utilities) ประกอบไปดวยเครองมอชวยใหโปรแกรมเมอรเขยนโปรแกรมอน ๆ หรอโปรแกรมประยกตได เครองมอตาง ๆ ประกอบไปดวย คอมไพเลอร อนเตอรพรเตอร ดบกเกอร
1.5.2 การแบงประเภทตามรปแบบการสงมอบ แบงไดเปน 2 กลมคอ
ซอฟตแวรสาเรจรป (Package software) ซอฟตแวรทมการขาย ใหเชา หรอใหบรการ โดยคดคาบรการเปน transaction หรอ license
ซอฟตแวรทพฒนา (Outsources software development) เปนการออกแบบและพฒนาซอฟตแวรเพอใชงานเฉพาะกบงานประเภทตาง ๆ เฉพาะกจกรรมไป สวนใหญลขสทธของซอฟตแวรนจะเปนของผทวาจางใหพฒนาขน
1.5.3 การแบงตามประเภทของการนาไปใชงานหลก แบงไดเปน 3 กลมคอ
ซอฟตแวรชวยในการบรหารจดการทวไป (Enterprise software) เปนซอฟตแวรทใชกบการทางานเพอแกปญหา/จดการทรพยากรของ บคคล/องคกร เชน ซอฟตแวรบญช ซอฟตแวรจดทาเอกสาร เปนตน
ซอฟตแวรสาหรบอปกรณพกพาขนาดเลก (Mobile applications software) เปนซอฟตแวรททางานผานระบบปฏบตการพเศษบนอปกรณขนาดเลก เชน
9
โทรศพทมอถอ PDA โดยสามารถแบงเปนกลมใหญๆ ได 2 กลม คอ (1) ซอฟตแวรเพอสนบสนนธรกรรมทางธรกจ (Business applications) เชน Mobile banking, Mobile
payment, GPS on Mobile, Mobile applications for business process management
และ(2) ซอฟตแวรทเกยวของกบนนทนาการและบนเทง (Entertainment applications)
ซงรวมเกมบนโทรศพทเคลอนท
ซอฟตแวรสมองกลฝงตว (Embedded System Software) เปนซอฟตแวรซงฝงอยไวในอปกรณอเลกทรอนกสตางๆ เพอใชสาหรบควบคมการทางานของอปกรณนนๆ เชน ระบบ GPRS ระบบทาความเยนอจฉรยะ ระบบตรวจสอบยอนกลบ เปนตน
สรป
โปรแกรมคอมพวเตอร (Computer Program) หมายถง กลมชดคาสงทใชอธบายชนงาน หรอกลมงานทจะประมวลผลโดยคอมพวเตอร
ภาษาโปรแกรมคอมพวเตอร หมายถง ภาษาหรอคาสงใด ๆ ทผใชงานใชสอสารกบคอมพวเตอรแลวคอมพวเตอรสามารถทางานตามคาสงนนได
ภาษาโปรแกรมคอมพวเตอรแบงออกไดเปนสองกลมคอ ภาษาระดบตา(Low-Level
Programming Language) และภาษาระดบสง (High-Level Programming Language)
ตวแปรภาษาเปนโปรแกรมทเขยนขนมาเพอใชในการแปลความหมายของคาสงในภาษาระดบสงชนดตาง ๆ ใหเปนภาษาทเครองคอมพวเตอรเขาใจได แบงชนดของตวแปรภาษาออกเปน 2
ชนด ไดแก อนเตอรพรเตอร และคอมไพเลอร
ประเภทของโปรแกรมคอมพวเตอรหรอซอฟตแวรสามารถแบงได การแบงเชงเทคนค การแบงตามรปแบบการสงมอบ การแบงตามประเภทของการนาไปใชงานหลก
คาถามทายบท
1. ใหยกตวอยางภาษาคอมพวเตอรทมอยในปจจบนและบอกถงความสามารถภาษานนยางนอย 3 ภาษา
2. ตวแปลภาษาอนเตอรพรเตอรและคอมไพเลอรแตกตางกนอยางไร
3. ใหยกตวของซอฟตแวรระบบ 3 ตวอยาง
4. ใหยกตวของซอฟตแวรประยกต 3 ตวอยาง
10
เอกสารอางอง
กตต ภกดวฒนะกล. (2546). คมภรระบบสารสนเทศ. พมพครงท 2. กรงเทพมหานคร : เคทพ คอมพ แอนด คอนซลท.
โอภาส เอยมสรวงศ. (2547). การวเคราะหและออกแบบระบบ. กรงเทพ: ซเอดยเคชน.
Rod Stephens.(2012). Fundamentals of Microsoft .NET Programming. California : O’Reilly Media
Inc,
http://th.wikipedia.org/wiki/โปรแกรมคอมพวเตอร
แผนบรหารการสอนประจาวชาบทท 2 หวขอเนอหาประจาบท 2.1 การวเคราะหปญหา
2.2 การออกแบบวธการโปรแกรม
2.2.1 การออกแบบอลกอรธม
2.2.2 การเขยนผงงาน
2.3 ตรวจสอบอลกอรธม
วตถประสงคเชงพฤตกรรม เมอศกษาบทนแลวนกศกษาสามารถ
1. วเคราะหปญหาโปรแกรมได
2. อธบายความหมายและความจาเปนของอลกอรธมได
3. อธบายความหมายและความจาเปนของผงงานได
4. ออกแบบอลกอรธมได
5. เขยนผงงานได
6. ตรวจสอบอลกอรธมได
วธการสอนและกจกรรมการเรยนการสอนประจาบท
1. บรรยายเนอหาในแตละหวขอ พรอมยกตวอยางประกอบ
2. ศกษาจากเอกสารประกอบการสอน
3. ผสอนสรปเนอหา
4. ผเรยนถามขอสงสย
5. ทาแบบฝกหดเพอทบทวนบทเรยน
สอการเรยนการสอน
1. เอกสารประกอบการสอน
2. ภาพเลอน (Slide)
12
การวดและประเมนผล 1. สงเกตการณเขาชนเรยนและความสนใจขณะบรรยาย
2. มสวนรวมในการซกถามระหวางการบรรยาย
3. การตอบคาถามขณะทผสอนบรรยาย
4. การตรวจแบบฝกหด
บทท 2 ขนตอนและวธการทางคอมพวเตอรในการพฒนาโปรแกรม
ขนตอนและวธการทางคอมพวเตอรในการพฒนาโปรแกรม หมายถงกระบวนการแกปญหาทมลาดบหรอวธการในการแกไขปญหาใดปญหาหนงอยางเปนขนตอน ซงการทางานของคอมพวเตอรประกอบไปดวยการรบการขอมล การประมวลผล และการแสดงผล ดงรปท 2.1
รปท 2.1 แสดงขนตอนการทางานของคอมพวเตอร
กอนการเขยนโปรแกรมคอมพวเตอร ขนตอนสาคญกคอ ขนตอนการวเคราะหปญหาและการออกแบบโปรแกรม เนองจากทง 2 ขนตอนน ถอวาเปนการวางแผนลาดบความคดของโปรแกรมเมอรทจะเขยนชดคาสง เพอใหคอมพวเตอรทางานตามคาสงเหลานน จนบรรลวตถประสงคตามความตองการของผใชโปรแกรม นอกจากนการวเคราะหปญหาและการออกแบบโปรแกรมกอนการลงมอเขยนโปรแกรมจรง ยงชวยลดขอผดพลาดบางประการ และชวยตรวจสอบโปรแกรมในเบองตนกอนได
เดวด ไอ ชไนเดอร (David I. Schneider, 1999 : 12) ไดใหขนตอนในการโปรแกรมตามวงจรการพฒนาโปรแกรม (Program Development Cycle) ทงหมด 6 ขนตอนดงน
1. วเคราะหปญหาประกอบดวยการวเคราะหผลลพธ (Output) และ ขอมลเขา (Input)
2. ออกแบบวธการแกปญหา ประกอบไปดวย การออกแบบอลกอรธม ผงงาน (Flow Chart)
รหสเทยม (Pseudo Code)
3. เลอกสวนตดตอกบผใช หรอการออกแบบหนาจอ
4. เขยนโปรแกรม
5. ทดสอบและแกไขขอผดพลาดของโปรแกรม
6. ทาเอกสารประกอบโปรแกรม
INPUT PROCESS OUTPUT
STORAGE
14
ดน แซค (Diane Zak, 2012 : 12) ไดใหขนตอนวธในการแกปญหาโปรแกรมไว 7 ขนตอนดงน
1.) วเคราะหปญหา 2.) ออกแบบอลกอรธม 3.) ตรวจสอบอลกอรธม 4.) สรางหนาจอโปรแกรม
5.) เขยนโปรแกรม 6.) ตรวจสอบโปรแกรม 7.) ทดสอบโปรแกรมบนเครองคอมพวเตอร
ในเอกสารประกอบการสอนนผเขยนจะนาเสนอขนตอนการพฒนาโปรแกรมโดยมขนตอนวธดงน
1. การวเคราะหปญหา
2. การออกแบบวธการโปรแกรม ซงประกอบไปดวย
2.1 การออกแบบอลกอรธม หรอ
2.2 การเขยนผงงาน (Flow Chart)
3. ตรวจสอบอลกอรธม
4. การออกแบบและสรางสวนตดตอกบผใช (User Interface) หรอการสรางหนาจอโปรแกรม
5. เขยนโปรแกรม
6. ทดสอบและแกไขขอผดพลาดของโปรแกรม
7. จดทาคมอการใชงานและเอกสารประกอบโปรแกรม
2.1 การวเคราะหปญหา
การพฒนาโปรแกรมจะเรมจากปญหาของงานปจจบนท ไมสามารถทางานไดอยางมประสทธภาพ ขนตอนการทางานซบซอนยงยาก เกดขอผดพลาดไดงาย ขอมลทไดไมทนตอการใชงาน จงตองพฒนาโปรแกรมขนมาเพอแกปญหาดงกลาว
สงสาคญสองอยางททกโปรแกรมตองการรคอ ผลลพธ (Output) และขอมลเขา (Input ) โดยทผลลพธคอเปาหมายของโปรแกรมทตองการ และ ขอมลเขาคอขอมลทปอนเขาไปเพอใหไดมาซงผลลพธนน(Diane Zak, 2014 : 12)
การวเคราะหปญหาเปนขนตอนของการสรางความเขาใจในปญหาไดอยางถองแท และสามารถกาหนดปญหาไดอยางชดเจนแนนอน ซงนาไปสการแกไขปญหาไดถกตอง สาหรบวธการวเคราะหปญหานน จะใชวธการแยกปญหาออกเปน 3 สวน ไดแก ผลลพธ (Output), วธการประมวลผล (Process) และ ขอมลเขา (Input) อยางไรกตาม เมออานโจทยหรออานรายละเอยดของปญหาจบแลว ควรพจารณาวา “สงทโจทยตองการคออะไร”และ “โจทยกาหนดอะไรมาบาง” ดงน
1. ขอมลเขา (Input) พจารณาวาขอมลใดทตองเขาสโปรแกรมเพอใหไดผลลพธตามการ
2. ผลลพธ (Output) สงทโจทยตองการหรอผลลพธคออะไร
15
3. วธการประมวลผล (Process) มขนตอนการประมวลผลอะไรบางตามลาดบ โดยขนตอนของprocess จะถกนาไปเขยนอลกอรธมในการออกแบบโปรแกรมตอไป(พนดา พานชกล,
2550 : 22)
ในการวเคราะหปญหาและวเคราะหขอมลมแนวทางในการวเคราะหดงน
1. เพอหาวตถประสงคในการพฒนาโปรแกรม
2. เพอหาผลลพธของโปรแกรม (Output)
3. เพอวเคราะหและหาขนตอนวธในการประมวลผลของโปรแกรม (Process)
4. เพอหาขอมลนาเขาทจะนาไปประมวลผลใหไดผลลพธตามทตองการ (Input)
จากการลาดบการวเคราะหขางตนจะเปนเหนวาลาดบการวเคราะหขอมลขอ 2 - 4 จะคลายกบลาดบขนตอนการทางานของคอมพวเตอรซงกคอ Input Process Output แตการวเคราะหขอมลจะทาการวเคราะหหาผลลพธ (Output) กอน เพราะถาไมรวาผลลพธคออะไรกจะไมสามารถพฒนาโปรแกรมไดเลย ลาดบตอมาคอการวเคราะหขนตอนวธในการประมวลผลของโปรแกรมซงเปรยบไดกบสตรการคานวณหรอลาดบการประมวลผลซงในขนตอนนสามารถสลบลาดบการวเคราะหกบการหาขอมลนาเขากได แตถารสตรการคานวณหรอลาดบการประมวลผลจะทาใหหาขอมลนาเขาไดงายกวาสาหรบผเรมเขยนโปรแกรมใหม
ตวอยางท 2.1 พฒนาโปรแกรมเพอคานวณคาลวงเวลาของพนกงานโดยใหคาลวงเวลาของพนกงานชวโมงละ 60 บาท
วตถประสงค : เพอคานวณคาลวงเวลาของพนกงาน
ผลลพธ (Output): คาลวงเวลาของพนกงาน
การประมวลผล(Process): คาลวงเวลาของพนกงาน = จานวนชวโมงททางานลวงเวลา X 60
ขอมลเขา (Input): จานวนชวโมงททางานลวงเวลา
รปท 2.2 แสดงการวเคราะหขอมลของโปรแกรมคานวณคาลวงเวลาพนกงาน
จากตวอยางขางตนการหาผลลพธของโปรแกรมจะทาไดงายทสดโดยดจากโจทยของโปรแกรมหรอวตถประสงคของการพฒนาโปรแกรม การประมวลผลจะตองหาวธคานวณเพอใหไดผลลพธซงจากตวอยางนการหาคาลวงเวลาของพนกงานจะตองนาจานวนชวโมงททางานลวงเวลาของพนกงานแลวนามาคณดวย 60 ซงกคอคาตอบแทนในการทางานตอชวโมง ขอมลเขาคอสงทโปรแกรมยงไมรคา
16
และสามารถเปลยนแปลงคาไดตลอดเวลาโดยขอมลเขาจะนามาประมวลผลในสตรการคานวณเพอใหไดผลลพธในตวอยางนกคอ จานวนชวโมงททางานลวงเวลา
เมอวเคราะหขอมลไดแลวจะนามาลาดบใหมตามขนตอนการทางานของคอมพวเตอรคอ Input Process Output จะไดดงน
ขอมลเขา (Input): จานวนชวโมงททางานลวงเวลา
การประมวลผล(Process): คาลวงเวลาของพนกงาน = จานวนชวโมงททางานลวงเวลา X 60
ผลลพธ (Output): คาลวงเวลาของพนกงาน
รปท 2.3 แสดงการปรบลาดบการวเคราะหขอมล
ซงกเปรยบไดกบขนตอนทางคอมพวเตอรหรอทเรยกวาอลกอรธม (Algorithm) ซงจะอธบายตอไปในภายหลง
ตวอยางท 2.2 พฒนาโปรแกรมเพอคานวณหาเงนเดอนคงเหลอประจาเดอนของพนกงานหลงหกเงนประกนสงคม 5 เปอรเซนตของเงนเดอนประจา
จากโจทยขางตนสงทตองวเคราะหเพมเตมคอการประมวลผล จะเหนไดวาการหาเงนเดอนคงเหลอประจาเดอนของพนกงานไดนนตองนาเงนเดอนมาหกเงนประกนสงคมกอน แตในโจทยไมไดบอกวาเงนประกนสงคมเปนเทาใดเนองจากเงนเดอนของพนกงานแตละคนไมเทากน ฉะนนเราตองทาการคานวณหาเงนประกนสงคมใหไดกอนแลวจงนามาหกออกจากเงนเดอน
วตถประสงค : เพอคานวณเงนเดอนคงเหลอประจาเดอนของพนกงาน
ผลลพธ (Output): เงนเดอนคงเหลอ
การประมวลผล(Process): แบบท 1
1. เงนประกนสงคม = เงนเดอนประจา X (5/100)
2. เงนเดอนคงเหลอ = เงนเดอนประจา – เงนประกนสงคม หรอแบบท 2
เงนเดอนคงเหลอ = เงนเดอนประจา – (เงนเดอนประจา X (5/100))
ขอมลเขา (Input): เงนเดอนประจา
รปท 2.4 แสดงการวเคราะหขอมลของโปรแกรมคานวณเงนเดอนคงเหลอประจาเดอนของพนกงาน
17
จากตวอยางขางตนจะเหนวาวธการประมวลผลสามารถคดได 2 แบบ อยทผพฒนาโปรแกรมจะเลอกใชแบบใด สงทนาสงเกตคอขอมลเขาซงมอย 1 ตวคอ เงนเดอนประจา ถาดจากตวอยางการประมวลผลแบบท 1 เงนประสงคม ไมถอวาเปนขอมลเขาเพราะสามารถคานวณไดจากเงนเดอนประจา สาหรบขอแตกตางของการประมวลผลทง 2 แบบ คอ แบบท 1 โปรแกรมสามารถแสดงผลลพธไดทง เงนประกนสงคม และ เงนเดอนคงเหลอ สวนแบบท 2 สามารถแสดงไดเฉพาะเงนเดอนคงเหลอเทานน
2.2 การออกแบบวธการโปรแกรม
การออกแบบโปรแกรมคอมพวเตอรแบงวธการออกเปน 2 สวนคอ
2.2.1 การออกแบบอลกอรธม
อลกอรธม (Algorithm) หมายถง ลาดบข นตอนของชดคาสงท ถกวางแผนไวเพ อสงใหคอมพวเตอรทางานใดงานหนงจนไดผลลพธทตองการ เชน งานคานวณภาษเงนได งานคานวณเกรดเฉลย งานคานวณเงนเดอน หรองานลาดบขอมลจากนอยไปหามาก เปนตน ดงนน จงนบวาอลกอรธมเปนสวนหนงในของการประมวลผลทไดวเคราะหไวในขนตอนการวเคราะหปญหา (พนดา พานชกล,
2550 : 23)
กอนทจะลงมอเขยนซอฟตแวรเพอแกปญหาหนง ๆ ได ตองเรมจากการแบงขนตอนการแกปญหาออกเปนแบบทละขนตอน อลกอรธมไมไดขนอยกบภาษาโปรแกรมใด ๆ จะใชการบรรยายขอความแบบภาษาพดของเราเองกยอมไดหรอจะเลอกเขยนเปนแผนผง หรอใชวธการใด ๆ กไดเพอใหเหนปญหาไดอยางชดเจน อลกอรธมจะเปนขนตอนการเปลยนขอมลเขาใหเปนผลลพธของโปรแกรม อลกอรธมสวนใหญจะเรมตนดวยการคาสงปอนขอมลเขาลงในโปรแกรมคอมพวเตอร แลวประมวลขอมลนน ๆ ดวยคาสงการประมวลผลซงอาจมมากกวา 1 คาสงกได และขนตอนสดทายของอลกอรธมคอการแสดงผลลพธทางหนาจอโปรแกรม (Diane Zak, 2012 : 14)
2.2.1.1 คณสมบตของอลกอรธม
1. อลกอรธมเปนกระบวนการทสรางขนจากกฎเกณฑ เนองจากอลกอรธมเปนรปแบบ
หนงของการแกปญหา และกระบวนการคอกลมของขนตอนทอยรวมกนเพอใช
แกปญหาตาง ๆ เพอใหไดซงผลรบ
2. กฏเกณฑทนามาสรางเปนอลกอรธม ตองไมคลมเครอ มระบบ ระเบยบอานแลวไม สบสน ควรหลกเลยงคาทกอใหเกดความเขาใจไดหลายความหมาย
3. การประมวลผลตองเปนลาดบขนตอนทชดเจน
4. กระบวนการตองใหผลลพธตามทกาหนดในปญหา
5. อลกอรธมตองมจดสนสด (ฝายตาราวชาการคอมพวเตอร, 2554 : หนา 29 -30)
18
2.2.1.2 ประสทธภาพของอลกอรธม การออกแบบอลกอรธมเพอแกปญหาของแตละคน อาจออกแบบแตกตางกนได ขนอยกบหลกการคด เงอนไข และขอจากดตาง ๆ ควรพจารณาถงประสทธภาพของอลกอรธมทดจากเกณฑพนฐานคอ ตองใชเวลานอยทสด, ใชหนวยความจานอยทสด, มความยดหยน,ใชเวลาในการพฒนานอยทสด,
งายตอความขาใจ (ฝายตาราวชาการคอมพวเตอร, 2554 : 30 –31)
ดงนนอลกอรธม คอ ขนตอนวธหรอลาดบขนตอนในการแกปญหาใดปญหาหนง โดยเรมจากการแบงขนตอนการแกปญหาออกเปนแบบทละขนตอน ซงตองใชหลกการคดอยางมเหตผลในการอธบายวธการในการพฒนาโปรแกรมนน ๆ โดยสวนใหญการออกแบบอลกอรธมจะเขยนเปนขอ ๆ ตามลาดบกอนหลงอลกอรธมสวนใหญจะเรมตนดวยการคาสงปอนขอมลเขาลงในโปรแกรมคอมพวเตอร แลวประมวลขอมลนน ๆ ดวยคาสงการประมวลผลซงอาจมมากกวา 1 คาสงกได และขนตอนสดทายของอลกอรธมคอการแสดงผลลพธทางหนาจอโปรแกรม การออกแบบอลกอรธมจะตองคานงถงคณสมบตของและประสทธภาพของอลกอรธม การโดยการเขยนอลกอรธมสามารถเขยนได 2 แบบคอ เขยนเปนแบบขอความ และ เขยนผงงาน (FlowChart)
ตวอยางท 2.3 พฒนาโปรแกรมเพอคานวณคาลวงเวลาของพนกงานโดยใหคาลวงเวลาของพนกงานชวโมงละ 60 บาท
รปท 2.5 แสดงอลกอรธมของโปรแกรมคานวณคาลวงเวลาของพนกงาน
ผลลพธ (Output): คาลวงเวลาของพนกงาน
การประมวลผล(Process): คาลวงเวลาของพนกงาน = จานวนชวโมงททางานลวงเวลา X 60
ขอมลเขา (Input): จานวนชวโมงททางานลวงเวลา
Algorithm :
1. ปอนจานวนชวโมงททางานลวงเวลา
2. คานวณหาคาลวงเวลาของพนกงาน จาก จานวนชวโมงททางานลวงเวลา x 60
3. แสดงคาลวงเวลาของพนกงาน
19
ตวอยางท 2.4 พฒนาโปรแกรมเพอคานวณหาเงนเดอนคงเหลอประจาเดอนของพนกงานหลงหกเงนประกนสงคม 5 เปอรเซนตของเงนเดอนประจา
รปท 2.6 แสดงอลกอรธมของโปรแกรมคานวณเงนเดอนคงเหลอประจาเดอนของพนกงานหลงหกเงนประกนสงคม 5 เปอรเซนตของเงนเดอนประจา
2.2.2 การเขยนผงงาน (Flow Chart)
ผงงานคอ แผนภาพทแสดงลาดบขนตอนการทางานของโปรแกรมตงแตจดเรมตนจนถงจดสนสด ดวยการนาเสนอผานสญลกษณมาตรฐานเพอใหสอความหมายเขาใจตรงกน (ฝายตาราวชาการคอมพวเตอร, 2554 : 87) สญลกษณตาง ๆ ทนามาใชในผงงานมความหมายตามขอกาหนดตามขอกาหนดมาตรฐานของ ANSI (American National Standards Institute) (พนดา พานชกล, 2551: 29)
การใชสญลกษณในลกษณะของรปภาพทาใหสามารถเหนลาดบขนตอนวธการทางานไดชดเจนกวาการอธบายขนตอนวธการทางานในลกษณะของขอความ
2.2.2.1 ประเภทของผงงาน
1. ผงงานระบบ (System Flowchart) เปนผงงานแสดงขนตอนการทางานทงหมดในผงงานประเภทนจะเหนระบบงานภายในของระบบหนง ๆทเกยวของกบงานทงหมด ทงวสด เครองจกร โปรแกรม และบคลากรจดมงหมายของการใชผงงานระบบ เพอใหทราบถงความสมพนธของระบบทงหมดหรอภาพรวมของระบบทงหมดตงแตเรมตนจนสดทายวาม ขนตอนอะไรบางแตละขนตอนทาอยางไร ใชวธการอะไรบางผงงานระบบนเหมาะสาหรบผบรหาร ผวเคราะหระบบและผเขยนโปรแกรมแตผงงานระบบนยงไมสามารถนาไปใชในการเขยนโปรแกรมได ลกษณะของผงงานระบบคอ
ผลลพธ (Output): เงนเดอนคงเหลอ
การประมวลผล(Process): เงนประกนสงคม = เงนเดอนประจา X (5/100)
เงนเดอนคงเหลอ = เงนเดอนประจา – เงนประกนสงคม ขอมลเขา (Input): เงนเดอนประจา
Algorithm :
1. ปอนเงนเดอนประจา
2. คานวณหาเงนประกนสงคมจาก เงนเดอนประจา x (5/100)
3. คานวณหาเงนคงเหลอจาก เงนเดอนประจา – เงนประกนสงคม 4. แสดงเงนเดอนคงเหลอ
20
• แสดงขอบเขตของระบบทงหมด
• แสดงขอมลเขาถกเกบอยทใดบาง ใชสอบนทกขอมลแบบใด
• ประมวลผลและแสดงผลลพธทใด
2. ผงงานโปรแกรม (Program Flowchart) หรอทนยมเรยกกนสน ๆ วา
Flowchart ผงงานประเภทนเปนผงงานซงแสดงลาดบขนตอนการทางานอยางละเอยดของโปรแกรม โดยจะแสดงรายละเอยดของขนตอนการทางานอยางชดเจนไมวาจะเปนขนตอนของการรบขอมลเขา การคานวณ การประมวลผลและการแสดงผลลพธ
2.2.2.2 วธการเขยนผงงานทด • ทกผงงานตองมจดเรมตนและจดสนสดเพยงอยางละหนงแหงเทานน
• ทกแผนภาพตองมลกศรแสดงทศทางเขาออก
• ใชสญลกษณตามทกาหนดไว
• สญลกษณจดเรมตนมเฉพาะลกศรชทศทางออก
• สญลกษณจดสนสดมเฉพาะลกศรชทศทางเขา
• สญลกษณการตดสนใจมลกศรชเขา 1 ทศทาง และชออก 2 ทศทาง คอ กรณทผลทได จากการตดสนใจเปนจรง หรอ เปนเทจ
• ใชลกศรแสดงทศทางการไหลของขอมลจากบนลงลางหรอซายไปขวา
• คาอธบายในภาพควรสนกะทดรด และเขาใจไดงาย
• ไมควรโยงเสนเชอมผงงานทอยไกลมาก ๆ ควรใชสญลกษณจดเชอมตอแทน
• เสนของลกศรทใชบอกทศทางของลาดบขนตอนวธการทางาน ไมควรเขยนตดกน
หรอทบกน
• ผงงานควรมการทดสอบความถกตองของการทางานกอนนาไปเขยนโปรแกรม
(ฝายตาราวชาการคอมพวเตอร, 2554 : 89)
21
ผงงานระบบ ผงงานโปรแกรม
รปท 2.7 แสดงผงงานระบบ และ ผงงานโปรแกรม
ทมา : (พนดา พานชกล, 2551 : 30)
2.2.3 สญลกษณของผงงาน
สญลกษณ ความหมาย
Start / Stop ใชแสดงจดเรมตนและจดสนสดของขนตอนการแกปญหาหรอโมดลแตละโมดล โดยจดเรมตนจะมเสนทางออกเพยงอยางเดยว สวนจดสนสดจะมเสนทางขางเพยงอยางเดยว
Process
ใชแสดงการประมวลผล การคานวณ หรอการกาหนดคาขอมลตางๆ
Start
InputPrice, Qyt
Deliver = (Price*Qty)*5%
Netprice = (Price*Qty) - Deliver
Print Netprice
Stop Stop
Receive order
Packaging Product
Calculate Netprice
Deliver product
Start
22
สญลกษณ ความหมาย
Input/Output media
ใชแสดงการรบหรอแสดงขอมล หรอแสดงผลลพธโดยไมระบชนดของสอ
Manual Input ใชแสดงการรบขอมลโดยตรงจากแปนพมพ
Decisionใชแสดงการเปรยบเทยบ หรอการตดสนใจเลอกเสนทางการทางาน
Document ใชในการแสดงผลลพธหรอแสดงขอมลสงพมพลงบนกระดาษ
Displayใชในการแสดงผลลพธหรอแสดงขอมลทางจอภาพคอมพวเตอร
Preparation ใชในการกาหนดคาเรมตนใหกบการนบรอบสาหรบการทางานแบบวนซ า
Magnetic tapeใชในการจดเกบขอมลลงบนสอประเภทเทปแมเหลก
Flow Lineใชแสกงทศทางของลาดบขนตอนการทางาน
On –Page Reference
ใชแสดงจดเชอมตอของผงงานทอยในหนาเดยวกน
23
สญลกษณ ความหมาย
Off-Page Referenceใชแสดงจดเชอมตอของผงงานกรณทอยคนละหนา
Predefined Process ใชแสดงแทนการประมวลผลของโมดลหรอโปรแกรมยอย
Annotationใชเขยนคาอธบายไวดานขางของสญลกษณอนๆ ของผงงาน
รปท 2.8 แสดงสญลกษณของผงงาน
ตวอยางท 2.5 เขยนผงงานการคานวณคาลวงเวลาของพนกงานโดยใหคาลวงเวลาของพนกงานชวโมงละ 60 บาท
รปท 2.9 แสดงอลกอรธมของโปรแกรมคานวณคาลวงเวลาของพนกงาน
ผลลพธ (Output): คาลวงเวลาของพนกงาน
การประมวลผล(Process): คาลวงเวลาของพนกงาน = จานวนชวโมงททางานลวงเวลา X 60
ขอมลเขา (Input): จานวนชวโมงททางานลวงเวลา
Algorithm :
1. ปอนจานวนชวโมงททางานลวงเวลา
2. คานวณหาคาลวงเวลาของพนกงาน จาก จานวนชวโมงททางานลวงเวลา x 60
3. แสดงคาลวงเวลาของพนกงาน
24
รปท 2.10 แสดงผงงานของโปรแกรมคานวณคาลวงเวลาของพนกงาน
ตวอยางท 2.6 เขยนผงงานคานวณหาเงนเดอนคงเหลอประจาเดอนของพนกงานหลงหกเงนประกนสงคม 5 เปอรเซนตของเงนเดอนประจา
รปท 2.11 แสดงอลกอรธมของโปรแกรมคานวณเงนเดอนคงเหลอประจาเดอนของพนกงานหลงหกเงนประกนสงคม 5 เปอรเซนตของเงนเดอนประจา
เรมตน
จานวนชวโมง
คาลวงเวลา = จานวนชวโมงX 60
คาลวงเวลา
จบการทางาน
ผลลพธ (Output): เงนเดอนคงเหลอ
การประมวลผล(Process): เงนประกนสงคม = เงนเดอนประจา X (5/100)
เงนเดอนคงเหลอ = เงนเดอนประจา – เงนประกนสงคม
ขอมลเขา (Input): เงนเดอนประจา
Algorithm :
1. ปอนเงนเดอนประจา
2. คานวณหาเงนประกนสงคมจาก เงนเดอนประจา x (5/100)
3. คานวณหาเงนคงเหลอจาก เงนเดอนประจา – เงนประกนสงคม
4. แสดงเงนเดอนคงเหลอ
25
รปท 2.12 แสดงผงงานของโปรแกรมคานวณเงนเดอนคงเหลอประจาเดอนของพนกงานหลงหกเงนประกนสงคม 5 เปอรเซนตของเงนเดอนประจา
2.3 ตรวจสอบอลกอรธม
หลงจากทไดวเคราะหขอมลและออกแบบอลกอรธมไปแลว ผเขยนโปรแกรมจะตองตรวจสอบอลกอรธมทไดออกแบบไว ในขนตอนนผเขยนโปรแกรมจะนงตรวจสอบอลกอรธมดวยกระดาษโดยการจาลองขอมลเขาไปแลวดผลลพธวาถกตองหรอไม การตรวจสอบอลกอรธมจะทาเปนลกษณะของตารางเพอตรวจสอบ (Desk Check Table) คาตาง ๆ ทจาลองเขาไป โดยประกอบไปดวยคอลมนทเปนขอมลเขา การประมวลผล และ ผลลพธ
เรมตน
เงนเดอนประจา
เงนประกนสงคม= เงนเดอนประจา*(5/100)
เงนคงเหลอ= เงนเดอนประจา – เงนประกนสงคม
เงนคงเหลอ
จบการทางาน
26
รปท 2.13 แสดงตารางการตรวจสอบอลกอรธม (Desk-Check the Algorithm) ของการคานวณคาลวงเวลาของพนกงาน
ผลลพธ (Output): คาลวงเวลา
การประมวลผล(Process): คาลวงเวลา = จานวนชวโมง * 60
ขอมลเขา (Input): จานวนชวโมง
Algorithm :
1. ปอนจานวนชวโมงททางานลวงเวลา
2. คานวณหาคาลวงเวลาของพนกงาน จาก จานวนชวโมงททางานลวงเวลา x 60
3. แสดงคาลวงเวลาของพนกงาน
Desk-Check Table
จานวนชวโมง จานวนชวโมง * 60 คาลวงเวลา
1 1 * 60 60
5 5 * 60 300
10 10 * 60 3000
27
รปท 2.14 แสดงตารางการตรวจสอบอลกอรธม (Desk-Check the Algorithm) ของการคานวณคาลวงเวลาของพนกงาน
ผลลพธ (Output): เงนเดอนคงเหลอ
การประมวลผล(Process): เงนประกนสงคม = เงนเดอนประจา X (5/100)
เงนเดอนคงเหลอ = เงนเดอนประจา – เงนประกนสงคม ขอมลเขา (Input): เงนเดอนประจา
Algorithm :
1. ปอนเงนเดอนประจา
2. คานวณหาเงนประกนสงคมจาก เงนเดอนประจา x (5/100)
3. คานวณหาเงนคงเหลอจาก เงนเดอนประจา – เงนประกนสงคม 4. แสดงเงนเดอนคงเหลอ
Desk-Check Table
เงนเดอนประจา เงนเดอนประจา x (5/100)
เงนเดอนประจา – เงนประกนสงคม ประกนสงคม
เงนเดอนคงเหลอ
100 100 * (5/100)
100 - 5
5
95
500 500 * (5/100)
500 -25
25
475
15,000 15,000 * (5/100)
15,000 - 750
750
14,250
28
สรป
ขนตอนการพฒนาโปรแกรมโดยม 7 ขนตอนคอ
1. การวเคราะหปญหา
2. การออกแบบวธการโปรแกรม ซงประกอบไปดวย
2.1 การออกแบบอลกอรธม หรอ
2.2 การเขยนผงงาน (Flow Chart)
3. ตรวจสอบอลกอรธม
4. การออกแบบและสรางสวนตดตอกบผใช (User Interface) หรอการสรางหนาจอโปรแกรม
5. เขยนโปรแกรม
6. ทดสอบและแกไขขอผดพลาดของโปรแกรม
7. จดทาคมอการใชงานและเอกสารประกอบโปรแกรม
การวเคราะหปญหาและวเคราะหขอมล จะตองวเคราะหเพอหา ผลลพธ การประมวลผล และขอมลเขา
การออกแบบโปรแกรมคอมพวเตอรแบงวธการออกเปน 2 สวนคอ 1.การออกแบบอลกอรธม
คอ การออกแบบลาดบขนตอนของชดคาสงทถกวางแผนไวเพอสงใหคอมพวเตอรทางานใดงานหนงจนไดผลลพธทตองการ 2.การเขยนผงงานเพอแสดงลาดบขนตอนการทางานของโปรแกรมตงแตจดเรมตนจนถงจดสนสด ดวยการนาเสนอผานสญลกษณมาตรฐานเพอใหสอความหมายเขาใจตรงกน
การตรวจสอบอลกอรธม (DeskCheck Algorithm) หลงจากทไดวเคราะหขอมลและออกแบบอลกอรธมไปแลว ผเขยนโปรแกรมจะตองตรวจสอบอลกอรธมทไดออกแบบไว ในขนตอนนผเขยนโปรแกรมจะนงตรวจสอบอลกอรธมดวยกระดาษโดยการจาลองขอมลเขาไปแลวดผลลพธวาถกตองหรอไม
แบบฝกหดทายบท
ตองการพฒนาโปรแกรมคานวณคาผอนรถมอเตอรไซดตอเดอนโดยคดดอกเบยรอยละ 3 ของราคารถและใหระยะเวลาในการผอน 1 ป 1.ใหวเคราะหผลลพธ การประมวลผล และขอมลเขาของโปรแกรม
2. ใหเขยนอลกอรธมของโปรแกรม
3. เขยนผงงานของโปรแกรม
29
เอกสารอางอง
พนดา พานชกล. (2551). การเขยนโปรแกรมคอมพวเตอรเบองตนดวยภาษา JAVA. กรงเทพฯ : เคพท คอมพ แอนด คอนซลท.
ฝายตาราวชาการคอมพวเตอร. (2554). หลกการเขยนโปรแกรม. กรงเทพฯ : ซเอดยเคชน.
David I. Schneider. (1999). Computer Programming Concepts and Visual Basic. New Jersey :
PEARSON CUSTOM PUBLISHING.
Diane Zak. (2012). Clearly Visual Basic Programming With Microsoft Visual Basic 2010. MA :
Course Technology.
แผนบรหารการสอนประจาวชาบทท 3
หวขอเนอหาประจาบท 3.1 การเรยกใชงาน Microsoft Visual Studio 2012
3.2 การตงคาภาษาและสภาพแวดลอมเรมตนของ Visual Studio 2012
3.3 การใชงาน Microsoft Visual Basic 2012 เบองตน
3.4 ออบเจกต (Object)
3.5 การใชงาน Code Editor
3.6 การบนทกโพรเจกต
3.7 ไฟลประเภทตางๆในโพรเจกตของ Visual Basic 2012
วตถประสงคเชงพฤตกรรม 1. เพอใหผเรยนสามารถใชงานโปรแกรม Microsoft Visual Studio 2012 ได
2. มความเขาใจและอธบายออบเจกตได
วธการสอนและกจกรรมการเรยนการสอนประจาบท
1. บรรยายเนอหาในแตละหวขอ พรอมยกตวอยางประกอบ
2. ศกษาจากเอกสารประกอบการสอน
3. ผสอนสรปเนอหา
4. ผเรยนถามขอสงสย
5. ทาแบบฝกหดเพอทบทวนบทเรยน
สอการเรยนการสอน
1. เอกสารประกอบการสอน
2. ภาพเลอน (Slide)
การวดและประเมนผล 1. สงเกตการณเขาชนเรยนและความสนใจขณะบรรยาย
2. มสวนรวมในการซกถามระหวางการบรรยาย
3. การตอบคาถามขณะทผสอนบรรยาย
4. การตรวจแบบฝกหด
บทท 3 การใชงาน Visual Basic 2012 เบองตน
Microsoft Visual Studio 2012 คอ Integrated Development Environment (IDE) เปนโปรแกรมประยกตซอฟตแวร ทใชสาหรบพฒนาโปรแกรมและยงอานวยความสะดวกใหแกผเขยนโปรแกรมคอมพวเตอรในการพฒนาซอฟตแวรประเภทตาง ๆ พฒนาขนโดยบรษทไมโครซอฟท Microsoft
Visual Studio 2012 จะมภาษาใหเลอกพฒนาโปรแกรมแลวแตความถนดของผพฒนาโปรแกรมหนงในนนกคอ Visual Basic
Visual Basic เปนภาษาโปรแกรมทสามารถสรางโปรแกรมประยกตไดทงในแบบ Web-Base
Application และ Stand-alone enterprise applications โดยท Web-Base Application จะทางานบน Web
Servers โดยท Web Server จะใหสงโปรแกรมเมอมรองขอจากผใชงานมาใหทเครองคอมพวเตอรของผใชงานโดยโปรแกรมประเภทนจะตองมเบราวเซอรเปนตวชวยในการแสดงผล สวน Stand-alone
enterprise applications จะเปนการพฒนาโปรแกรมทสามารถทางานบนระบบปฏบตการในเครองคอมพวเตอรไดเลย เรยกอกอยางหนงวา Windows-based โปรแกรมประเภท Windows-based เปนทนยมใชในงานธรกจขององคกรตาง ๆ (Smith, Jo Ann, 2011 : 2)
3.1 การเรยกใชงาน Microsoft Visual Studio 2012
การเขยนโปรแกรมดวย Visual Basic 2012 หรอ VB 2012 จะอาศยเครองมอ Visual Studio
2012 ซงสามารถเรยกใชงานไดโดยคลก Start › All Programs › Microsoft Visual Studio 2012 › Visual
Studio 2012
รปท 3.1 แสดงการเรยกใชงาน Microsoft Visual Studio 2012
32
3.2 การตงคาภาษาและสภาพแวดลอมเรมตนของ Visual Studio 2012
เมอมการเปดใชงาน Visual Studio 2012 ครงแรก จะมหนาจอ Default Environment Setting
ขนมาเพอใหกาหนดภาษาทตองการใชในการพฒนาโปรแกรม ซงหมายถงวาเมอใดทเปด Visual Studio
2012 โปรแกรมจะกาหนดภาษาและเครองมอในการพฒนาโปรแกรมภาษานนให แตถาผเขยนโปรแกรมตองการทจะพฒนาโปรแกรมโดยใชภาษาอน ๆ ทมอยใน Visual Studio 2012 กสามารถเปลยนภาษาไดภายหลง ภาษาทมใน Visual Studio 2012 มดงน
เอฟชารป (F# Programming Language) คอ เปนภาษาประเภท functional จดอยในกลมของภาษาประเภท ML โดย F# จะมความใกลเคยงกบ OCaml และมการผสมผสานกบ C# และ Haskell นอกจากนน F# ยงไดถกออกแบบใหสามารถทางานรวมกนกนภาษาอน ๆ ในททางานบน .NET Framework ไดเปนอยางด
ภาษาซชารป (C# Programming Language) เปนภาษาโปรแกรมเชงวตถทางานบนดอตเนตเฟรมเวรก โดยมรากฐานมาจากภาษาซพลสพลส (C++) และภาษาอนๆ (โดยเฉพาะภาษาเดลไฟและจาวา) โดยปจจบนภาษาซซารปเปนภาษามาตรฐานรองรบโดย ECMA และ ISO
ภาษาซพลสพลส (C++) เปนภาษาโปรแกรมคอมพวเตอรอเนกประสงค มโครงสรางภาษาทมการจดชนดขอมลแบบสแตตก และสนบสนนรปแบบการเขยนโปรแกรมทหลากหลาย ไดแก การโปรแกรมเชงกระบวนคาสง, การนยามขอมล, การโปรแกรมเชงวตถ, และการโปรแกรมแบบเจเนรก (generic programming) ภาษาซพลสพลสเปนภาษาโปรแกรมเชงพาณชยทนยมมากภาษาหนงนบตงแตชวงทศวรรษ 1990
ภาษาวชวลเบสก (Visual Basic) หรอ VB เปนหนงในภาษาโปรแกรมทนยมใชพฒนาโปรแกรมทใชในดานธรกจ วชวลเบสกพฒนามาจากภาษาเบสก และยงไดพฒนาตอเปนภาษาVB.NET อกดวย วชวลเบสกสนบสนน Rapid Application Development (RAD) ทงดานการพฒนาโปรแกรมประยกตแบบ graphical user interface (GUI) , การเขาถงฐานขอมลโดยใชการเชอมตอแบบ DAO, RDO, หรอ ADO, และการสราง ActiveX control จดเดนอกอยางหนงของวชวลเบสกคอนกเขยนโปรแกรมสามารถนาโปรแกรมประยกตหลาย ๆ โปรแกรมมารวมกนในโปรแกรมเดยว และยงสามารถประยกตใชคอนโทรลและคอมโพเนนตทวชวลเบสกเตรยมไวใหแลวไดอกดวย
ในเอกสารประกอบการสอนนจะใชภาษา Visual Basic 2012 หรอเรยกวา VB 2012 หรอ VB.Net กได
เปนเครองมอในการพฒนาโปรแกรม ดงนนใหเลอก Visual Basic Development Setting
33
รปท 3.2 แสดงการเลอกภาษา Visual Basic เปนภาษาเรมตนเมอเปด Visual Studio 2012
รปท 3.3 แสดงหนาจอเรมตนของ Visual Studio 2012
3.3 การใชงาน Microsoft Visual Basic 2012 เบองตน
3.3.1 การสรางโพรเจกตใหม
ใน VB 2012 จะมประเภทของโพรเจกตหรอโปรแกรมใหเลอกสาหรบพฒนาโปรแกรมไดหลายประเภทเชน โปรแกรมทท างานบนอปกรณเคลอนท , โปรแกรมทท างานบนเบราวเซอร,
โปรแกรมททางานบนเครองคอมพวเตอรสวนบคคล โดยประเภทโพรเจกตท VB 2012 เตรยมไวใหผพฒนาโปรแกรมไดเลอกใช มดงตารางท 3.1
34
ตารางท 3.1แสดงประเภทโพรเจกตและคาอธบายของโพรเจกตตาง ๆ
ประเภทโพรเจกต คาอธบาย
Windows Forms โปรแกรมท ท างานบนเครองคอมพวเตอรสวนบคคล โดยทางานผานระบบปฏบตการสามารถทางานไดดวยตวเอง อาจจะมหนาจอเดยวหรอหลายหนาจอเพอใหผใชเรยกใชงานกได
ASP.NET Web
Forms
โปรแกรมททางานบนเครองบรการเวบ (Web Server) ประกอบไปดวยหนาเวบ (Web forms) หนงหรอมากกวากได โดยทหนาเวบน นตองทางานผานเบราวเซอรทอยบนเครองคอมพวเตอรของผใชงาน
WPF โปรแกรมททางานบนเครองคอมพวเตอรสวนบคคล โดยเนนลกษณะโปรแกรมทเนนความตนตาตนใจของผใชงาน
Silverlight โปรแกรมททางานบนเบราวเซอรบนเครองคอมพวเตอร โดยเนนลกษณะโปรแกรมทเนนความตนตาตนใจของผใชงาน
Windows Store โปรแกรมททางานบนแทบเลตพซของระบบปฏบตการ Windows 8 หรอ Windows RT
Windows Phone 8 โปรแกรมทท างานบนโทรศพทเคล อนท ท ท างานดวยระบบปฏบตการ Windows Phone 8
ในเอกสารประกอบการสอนน จะนาเสนอการพฒนาโปรแกรมดวยโพรเจกตชนด Windows Forms
(สามารถเรยกวา Windows Forms Application กได) ซงโพรเจกตชนดนแสดงการทางานและตดตอกบผใชงานโปรแกรมผานหนาจอทเรยกวา ฟอรม การสรางโพรเจกตชนด Windows Forms ทาไดดงน
1. คลกเลอก New Project จะปรากฏหนาจอสรางโพรเจกตใหม หรอคลกทเมน File ทเมนบาร
2. เลอกประเภทของโพรเจกตชนด Windows Form Application
3. ชอง Name ใหใสชอโพรเจกต
4. คลกปม OK
35
รปท 3.4 แสดงหนาจอการสรางโพรเจกตใหม
3.3.2 IDE ของ Visual Basic 2012
IDE (Integrated Development Environment) ประกอบไปดวยเครองมอตางๆ ทชวยอานวยความสะดวกในการพฒนาโปรแกรม เชน การจดการไฟลในโพรเจกต, การออกแบบหนาจอ (form
designer), อดเตอร (editor), คอมไพเลอร (complier), ดบกเกอร (debugger), การตรวจสอบความถกตองของโปรแกรม การแสดงผลจากการรนโปรแกรม เปนตน
3.3.2.1 สวนประกอบของ IDE ใน Visual Basic 2012 จะประกอบไปดวยเมนบาร (menu bar), ทลบาร (toolbar) และวนโดว (window) ยอยๆทสาคญ ดงตอไปน
รปท 3.5 แสดงสวนประกอบของ IDE ใน Visual Studio 2012
Properties
Window
Menu Bar Tool Bar
Tool Box
Solution Explorer
Form Designer
36
1. แถบเมน (Menu Bar) และแถบเครองมอ (Tool Bar)
แถบเมนใน Visual Basic 2012 ประกอบดวยคาสงทใชสาหรบการสรางรหสซอฟตแวร รวมถงการเรยกใชเครองมออน ๆ ของ IDE คาสงเหลานจะปรากฏเปนเมนและเมนยอย แถบเมนยงรวมถงแถบเครองมอทแสดงคาสงทใชกนทวไปเปนปมเพอใหงายตอการใชงาน
รปท 3.6 แสดงแถบเมนและแถบเครองมอ
ตารางท 3.2 แสดงปมคาสงและคาอธบายในแถบเครองมอ
ปมคาสง คาอธบาย คยลด
ยอนกลบไปการทางานกอนหนา Ctrl + Shift + F2
ยอนกลบไปการทางานกอนหนา Ctrl + Shift + -
สรางโพรเจกตใหม Ctrl + N
เปดไฟล ไมม
บนทกฟอรมทกาลงทางานอย Ctrl + S
บนทกโพรเจกตทงหมด Ctrl + Shift + S
ใสเครองหมายสรางคาอธบาย Ctrl + K › Ctrl + C
ยกเลกการใสเครองหมายสรางคาอธบาย Ctrl + K › Ctrl + U
ยกเลกการทางานลาสด (Undo) Ctrl + Z
ทาซ าการทางานลาสดทเพงทาไป (Redo) Shift + Alt + Bkspec
ใหโปรแกรมทางานเพอตรวจสอบความผดพลาด F5
หยดการทางานของโปรแกรมชวคราว Ctrl + Break
เลกการตรวจสอบความผดพลาดของโปรแกรม Ctrl + Alt + Break
สงใหทางานทละคาสงเพอตรวจสอบผล F8
สงใหตรวจสอบคาสงโดยมองวาโปรแกรมยอยเปนคาสงเดยว ไมสนใจคาสงขางใน
Shift + F8
คนหาและแทนท Ctrl + Shift + F
37
2. Solution Explorer เปนสวนทแสดงไฟลตาง ๆ ทเกยวอยในโพรเจกต เชน ฟอรม โมดล คลาส และไฟลอนๆทเกยวของ Solution Explorer จะใชจดการกบโพรเจกต เหลานไดครงละหลายๆโพรเจกต พรอมกน
3. Properties Window เปนสวนทใชสาหรบแสดงและกาหนดคณสมบตของออบเจกตตาง ๆ ทใชในการสรางโปรแกรม
4. Toolbox เปนแทบแสดงเครองมอหรอ “คอนโทรล” (Control) ซงคอนโทรลบางชนดกใชออกแบบหนาจอสาหรบตดตอกบผใชงาน เชน กลองขอความ (TextBox) คอนโทรลบางชนดกใชทาการเบองหลงทไมปรากฏใหเหนบนหนาจอขณะทางาน เชนไทมเมอร (Timer) รวมถงคอมโพเนนต (component) อนๆดวย
Solution Explorer Properties Window Toolbox
รปท 3.7 แสดงสวนประกอบตาง ๆ ของ IDEโปรแกรม Microsoft Visual studio 2012
3.3.2.2 การปด เปด และซอนสวนประกอบตาง ๆ ของ IDE
สวนประกอบตาง ๆ ใน IDE เชน Solution Explorer, Properties Window หรอ Toolbox มไวเพอใหผเขยนโปรแกรมทางานไดงายและสะดวก แตในบางครงผเขยนโปรแกรมตองการปดการใชงานไวกอนกสามารถทาไดโดยการคลกทปมปด บนไตเตลบารของหนาตางนน ๆ และเมอตองการเรยกกลบมาใชใหมสามารถทาไดโดยคลกทเมน View บนเมนบารและเลอกชอสวนประกอบนน ๆ เพอแสดง
38
รปท 3.8 แสดงการเรยกใชงาน Properties Windows
3.4 ออบเจกต (Object)
การสรางโปรแกรมบนระบบปฏบตการวนโดวจะใชออบเจกตตาง ๆ ในการสรางหนาจอหรอสวนตดตอกบผใช(User interface) และเขยนโปรแกรมควบคมการทางานของออบเจกตตาง ๆ เพอตอบโตกบผใชงานโปรแกรมนน ๆ โดยออบเจกตทใชสาหรบสรางโปรแกรมใน Visual studio 2012 นนแบงไดเปน 2 ประเภทดงน
1. คอนโทรล (Control) การสรางออบเจกตชนดคอนโทรลบนฟอรมจะทาไดโดยการเลอกคอนโทรลทตองการในกลองเครองแลวนามาลากวาง จดตาแหนงของคอนโทรลและกาหนดคณสมบตของคอนโทรลนน ๆ ตวอยางของคอนโทรลเชน ปมคาสง (Button), กลองขอความ (TextBox)
2. คอมโพเนนต (component) กลมของออบเจกตทมองคประกอบคลายกบคอนโทรลแตจะไมปรากฏใหเหนบนหนาจอของโปรแกรมเมอขณะทางาน (เรยกวาชวง run time)
ใน Toolbox จะมการแบงแยกประเภทของคอนโทรลและคอมโพเนนตเอาไวดงรป
39
คอนโทรล คอมโพเนนต
รปท 3.8 แสดงออบเจกตประเภทคอนโทรลและคอมโพเนนตใน Toolbox
3.4.1 คณสมบตของออบเจกต (Properties)
ออบเจกตชนดตาง ๆ จะมคณสมบตหรอลกษณะตาง ๆ ของแตละออบเจกตซงสามารถกาหนดไดจาก Properties Windows สามารถกาหนดไดทงในชวงการออกแบบและในขณะทโปรแกรมทางานกไดโดยการเขยนคาสงไว ตวอยางของคณสมบตของออบเจกต เชน
ตารางท 3.3 แสดงตวอยางคณสมบตของออบเจกต
คณสมบต คาอธบาย
Name กาหนดชอของออบเจกต
Text แสดงขอความ
BackColor กาหนดสของออบเจกต
ForeColor กาหนดสตวอกษร
Font กาหนดรปแบบและขนาดของตวอกษร
Enable การกาหนดใหใชงานได มสองคาคอ True และ False
Visible การกาหนดใหแสดงออบเจกตใหผใชเหนหรอไมในขณะรนโปรแกรมมสองคาคอ True และ False
40
รปท 3.9 แสดงการกาหนดคณสมบตของออบเจกตผานทาง Properties Windows
รปท 3.10 แสดงการกาหนดคณสมบตของออบเจกตโดยการเขยนคาสง
3.4.2 วธการของออบเจกต (Method)
เมธอดคอสวนหนงของคาสงทมอยในออบเจกต เพอสงใหออบเจกตกระทาอะไรบางสง เชน วธการลางขอความในกลองขอความดวยเมธอด Clear
รปท 3.11แสดงการใชเมธอดของคอนโทรล
ในสวนของหนาตางการเขยนโปรแกรม (Code Editor) Visual Basic 2012 ไดแสดงสญลกษณทบงบอกวาเปนคณลกษณะของออบเจกตหรอเปนเมธอดของออบเจกต โดยสามารถสงเกตไดจากไอคอนทแสดงอยหนาคาสงนน ๆ
41
สญลกษณของคณลกษณะ (Properties) สญลกษณของวธการ (Method)
รปท 3.12 แสดงการเปรยบเทยบสญลกษณของคณลกษณะและวธการของออบเจกต
3.4.3 เหตการณทเกดขนกบออบเจกต (Event)
การเขยนโปรแกรมบน Visual Basic 2012 เปนการเขยนโปรแกรมแบบ Event-Driven กลาวคอ คาสงทเขยนจะทางานกตอเมอมเหตการณเกดขน เชน ปม จะไมถกเรยกใชงานจนกวาจะมการคลกเมาสทปม
รปท 3.13 แสดงการเขยนคาสงในโปรแกรม
จากรปท 3.13 จะมชอของเหตการณ ตามหลงชอออบเจกตและเครองหมาย _ เชน Button1_Click จะเปนอเวนต Click ของ Button1 ดงนนคาสงนจะทางานตอเมอมการคลกเมาสทปมทชอ Button1
รปท 3.14 แสดงการทางานของโปรแกรมแบบ Event – Driven จะมกลองขอความขนเมอมการคลกเมาสทปม
42
การเขยนโปรแกรมกบเหตการณของออบเจกตแตละตวนน Visual Basic 2012 จะกาหนดเหตการณทเปนคาตงตนให แตผเขยนโปรแกรมสามารถเลอกเหตการณอน ๆ ของออบเจกตทตองการได เรยกวา Event Handler
รปท 3.15 แสดงการเลอกเหตการณอน ๆ ของออบเจกตเพอเขยนคาสง
3.5 การใชงาน Code Editor
Code Editor เปนสวนทใชสาหรบเขยนคาสงโปรแกรม การเรยกใชงานทาได 2 วธคอ
1. การเปด Code Editor ดวยการดบเบลคลกทออบเจกต เชนถาตองการเขยนคาสงทปมคาสงทชอ Button1 กใหดบเบลคลกทออบเจกตนจะปรากฏหนาจอ Code Editor ขนมาเพอเขยนคาสง
รปท 3.16 แสดงการเปด Code Editor ดวยการดบเบลคลกทออบเจกต
ดบเบลคลกทออบเจกต ปรากฏหนาจอ Code Editor
43
2. การเปด Code Editor ดวยการเรยกใชจาก Solution Explorer
1. คลกท View Code
2. ปรากฏหนาจอ Code Editor เลอกออบเจกตทตองการ
3. เลอกเหตการณของออบเจกต
4. หนาจอ Code Editor สาหรบเขยนคาสง
รปท 3.17 แสดงการเปด Code Editor ดวยการเรยกใชจาก Solution Explorer
3.5.1 ความสามารถของ Code Editor
Code Editor มความสามารถทชวยใหเขยนโปรแกรมไดงายขนดงน
1. Auto Correct ชวยตรวจสอบความถกตองของคาสงใหโดยอตโนมตทนท โดยไมตองรอใหคอมไพลหรอรนโปรแกรมกอน เมอพบคาสงทผดพลาด Code Editor จะทาการเนนทคาสงและเมอผเขยนโปรแกรมนาเมาสไปวางเหนอคาสงทเนน Code Editor จะแสดงขอความอธบายสาเหตของการผดพลาดของคาสง
2. IntelliSense ชวยแนะนาการเขยนโปรแกรมใหโดยตลอด ซงจะชวยใหผเขยนโปรแกรมไมตองจดจารายละเอยดของคาสง เชน วธการเรยกใชงานฟงกชนหรอออบเจคตางๆ รวมถงแสดงพรอพเพอรตและเมธอดของออบเจค (เรยกรวมๆวาเมมเบอร)ใหเลอกโดยอตโนมต
44
Code Editor จะทาการเนนทคาสงทผดพลาด
แสดงขอความอธบายสาเหตของการผดพลาดของคาสง
รปท 3.18 แสดงคณสมบต Auto Correct ของ Code Editor
รปท 3.19 แสดงคณสมบต IntelliSense ของ Code Editor
3.5.2 การตงคาตวหนงสอภาษาไทย
การพมพภาษาไทย VB 2012 จะมความสามารถรองรบอยแลว แตในกรณทตองการเปลยนรปแบบตวหนงสอหรอขนาดของตวหนงสอภาษาไทยสามารถทาไดดงน
1. คลกเลอกทเมน Tools › Options 2. เลอก Fonts and Colors แลวเลอกรปแบบตวหนงสอ
รปท 3.20 แสดงขนตอนการตงคาตวหนงสอใน Code Editor
ชวยแนะนาคาสง แสดงรายละเอยดของรปแบบคาสง
45
3.5.3 ความหมายของสตวอกษรและการเนน Code Editor
Code editor จะแสดงสของตวอกษรของรปแบบโปรแกรมคาสงแตกตางกน โดยสของตวอกษรจะแสดงความหมายดงตารางท 3.4
ตารางท 3.4 แสดงสและการเนนของคาสงใน Code Editor
ทมา : (ปรบปรงจาก ROD STEPHENS, 2012 : 62)
คาสงโปรแกรม สตวอกษรและการเนน
Comment ตวอกษรสเขยว
Compiler error เสนหยกสนาเงนใตคาสง
Keyword ตวอกษรสนาเงน
Other error เสนหยกสมวงใตคาสง
Preprocessor keyword ตวอกษรสนาเงน
Read-only region พนหลงสเทาออน
User-defined types ตวอกษรสกรมทา
Warning เสนหยกสเขยวใตคาสง
3.5.4 การใสคาอธบายโปรแกรม (Comment)
การเขยนโปรแกรมทดเราควรจะตองมการอธบายคาสงโปรแกรม หรอการเขยน Comment เพอชวยใหเราสามารถเขาใจการทางานของโปรแกรมไดดขน โดยเฉพาะอยางยงเมอตองการกลบมาแกไขเพมเตมโปรแกรมในอนาคตหรอเขยนโปรแกรมรวมกบผอนเปนทม
ใน VB 2012 สามารถเขยนคาอธบายโปรแกรมไดโดยใสเครองหมาย ' (single quote) แลวตามดวยคาอธบายโปรแกรม ซง VB 2012 จะไมประมวลผลคาสงทอยหลงเครองหมายน
รปท 3.21 แสดงการใสคาอธบายโปรแกรม
46
3.5.5 การแบงคาสงออกเปนหลายบรรทด
ในกรณทคาสงทอยในบรรทดนนมความยาวมาก ทาใหไมสามารถอานโปรแกรมและแกไขไดสะดวก เนองจากตองเลอนเมาสซาย/ขวาตลอดเวลา สามารถแยกคาสงออกเปนหลายบรรทดได โดยเวนวรรคและตามดวเครองหมาย _ ในบรรทดทตองการตอคาสง เชน
MessageBox.Show ("Hello " & TextBox1.Text, "This is a test. ")
สามารถแยกคาสงขางตนเปน 2 บรรทดไดดงน
รปท 3.22 แสดงการแบงคาสงเปนหลายบรรทด
3.5.6 การเขยนหลายคาสงในบรรทดเดยว
ในกรณทคาสงโปรแกรมมขนาดสนๆและไมซบซอน สามารถรวมหลายๆคาสงไวบรรทดเดยวไดเพอใหโปรแกรมมความกระชบมากขน โดยคนแตละคาสงดวยเครองหมาย : (colon)
เชน Dim Price, VatRate, Vat As Double
Price = 100
VatRate = 0.07
Vat = Price * VatRate
สามารถเขยนคาสงไวในบรรทดเดยวกนไดดงน
รปท 3.23 แสดงการเขยนหลายคาสงในบรรทดเดยว
47
3.6 การบนทกโพรเจกต
ในระหวางทเขยนโปรแกรมนนควรบนทกงานไวดวยเสมออาจจะทก ๆ 10 นาทเพอปองกนเหตการณทไมคาดคดเกดขนเชน ไฟฟาดบ หรอปญหาการทางานผดพลาดของระบบปฏบตการ การบนทกโพรเจกตสามารถทาไดโดยการคลกทเมน File › Save All หรอคลกท บน Tool Bar
1. คลก File › Save All
หรอคลกท
2. ใสชอโพรเจกต และคลก Save
รปท 3.24 แสดงขนตอนการบนทกโพรเจกต
จากรปท 3.24 แสดงขนตอนการบนทกโพรเจกต ผเขยนโปรแกรมสามารถตงชอโพรเจกตไดในชอง Name และสามารถเลอกตาแหนงทเกบโพรเจกตไดโดยการกาหนดตาแหนงทปม Browse หลงชอง Location
โปรแกรมทพฒนาจะแทนดวยสงทเรยกวา โพรเจกต และโซลชน (Solution) โดยโพรเจกต กคองานเขยนโปรแกรมชนหนงๆ ซงประกอบดวยไฟลตางๆ หลายไฟล แตโซลชนจะรวบรวมโพรเจกต
ทเกยวของกนไวในกลมเดยวกน โพรเจกต จะตองอยภายในโซลชนเสมอ
รปท 3.25 แสดงความสมพนธของโพรเจกต และโซลชน
โซลชน
โพรเจกต 1 โพรเจกต 2 โพรเจกต 3
48
โพรเจกต จะถกบนทกเปนไฟลทมนามสกล .vbproj เรยกวา Visual Basic Project File สวนโซลชนจะถกบนทกไฟลทมนามสกล .sIn เรยกวา Microsoft visual studio Solution หรอ Solution File
ไอคอนของ Visual Basic Project File และ Solution File เมอเปดใน Windows Explorer พบไอคอนดงรป
รปท 3.26 แสดงไอคอนของ Visual Basic Project File และ Solution File
3.7 ไฟลประเภทตางๆในโพรเจกตของ Visual Basic 2012
ไฟลตางๆทจะเกบในโฟลเดอรทสรางโพรเจกตขนมา ประกอบดวยไฟลหลายๆประเภท (เรยกวาโพรเจกตไอเทม) ดงน
ตารางท 3.5 แสดงคาอธบายของไฟลชนดตาง ๆ โพรเจกตของ Visual Basic 2012
ชนดของไฟล
(Project Item)
นามสกลของไฟล คาอธบาย
Visual Studio Solution .sln เกบรายละเอยดของโพรเจกตตางๆภายใน Solution
Visual Studio Project .vbproj เกบวาภายในโพรเจกตมโพรเจกตไอเทมใดอยบาง รวมถงตวเลอกของโพรเจกตดวย
Windows Form .vb เกบขอมลของ Win Form ซงมรายละเอยดเกยวกบฟอรมเชนคอนโทรลตางๆ, ซอรสโคด ททางานเกยวกบฟอรมนนๆ เปนตน
Class .vb เกบคลาสทสรางขน
Module .vb จะใชเกบตวแปร, คาคงท, โปรแกรมยอยทสามารถถกเรยกใชไดจากทกๆไฟลในโพรเจกต
HTML .htm, .html เปนไฟล HTML ทใชในโพรเจกต
XML .xml เปนไฟล XML ทใชในโพรเจกต
.NET XML Resource .resx เกบรายละเอยดเกยวกบ resource ของ XML
Assembly Information AssemblyInfo.vb เกบรายละเอยดขอมลของโพรเจกต ซงจะเกบ metadata
เกยวกบ assemblies ของโพรเจกต
49
3.8 การตงคาการบนทกโพรเจกตเมอเรมตนสรางโพรเจกต
จากตวอยางการบนทกโพรเจกตขางตน จะสามารถบนทกไดกตอเมอมการสรางโพรเจกตไวกอนแลว หรออกความหมายหนงกคอเรมมการพฒนาโปรแกรมไปบางสวนแลว แตในกรณทผเขยนโปรแกรมตองการใหแสดงหนาตางการบนทกโพรเจกตเมอเรมตนสรางโพรเจกตกสามารถทาได แตอยางไรกตามควรคานงอยเสมอวาในระหวางทางานควรบนทกซ าบอย ๆ เพอปองกนเหตการณไมคาดคดดงทผเขยนไดกลาวไป การตงคาการบนทกโพรเจกตเมอเรมสรางโพรเจกตสามารถกาหนดไดโดย คลกเลอก Tools › Options บนเมนบาร และทาเครองหมาย ทกลองเลอก (Checkbox) Save new
Projects when created
1. คลกเลอก Tools › Options
2. ทาเครองหมาย ท Save new Projects when created
รปท 3.27 แสดงขนตอนการตงคาการบนทกโพรเจกตเมอเรมตนสรางโพรเจกต
3.9 การเปดโพรเจกต
เมอผเขยนโปรแกรมตองการทจะนางานทยงพฒนาไมเสรจสมบรณหรอตองการเปดงานเกาขนมาอกครง สามารถทาไดโดยการเลอกเมน File › Open Project บนเมนบาร และเลอกตาแหนงทเกบโพรเจกตไว
1. คลกเลอก File › Open Project
2. เลอกตาแหนงทเกบโพรเจกตและเลอกชอโพรเจกต
รปท 3.28 แสดงขนตอนการเปดโพรเจกต
50
สรป
Visual Basic หรอ VB เปนหนงในภาษาโปรแกรมทนยมใชพฒนาโปรแกรมทใชในดานธรกจ จดเดนของVB คอนกเขยนโปรแกรมสามารถนาโปรแกรมประยกตหลาย ๆ โปรแกรมมารวมกนในโปรแกรมเดยว และยงสามารถประยกตใชคอนโทรลและคอมโพเนนตท VB
เตรยมไวใหแลวไดอกดวย
IDE (Integrated Development Environment) ประกอบไปดวยเครองมอตางๆ ทชวยอานวยความสะดวกในการพฒนาโปรแกรม
โดยออบเจกตใน Visual studio 2012 นนแบงไดเปน 2 ประเภทคอ คอนโทรล และ คอมโพเนนต
ในระหวางทเขยนโปรแกรมนนควรบนทกงานไวดวยเสมออาจจะทก ๆ 10 นาทเพอปองกนเหตการณทไมคาดคดเกดขนเชน ไฟฟาดบ หรอปญหาการทางานผดพลาดของระบบปฏบตการ
แบบฝกหด
1. โพรเจกตประเภท Windows Forms มลกษณะอยางไร
2. ไฟลชนด Solution และ Project แตกตางกนอยางไร
3. อธบายคณสมบตของออบเจกตและเมธอด
4. Auto Correct และ IntelliSense ทมอยใน Code Editor คออะไร
5. การใสคาอธบายโปรแกรมควรใสทจดใดบาง
51
เอกสารอางอง
Jo Ann Smith. (2011). MICROSOFT VISUAL BASIC PROGRAMS TO ACCOMPANY
PROGRAMMING LOGIC AND DESIGN. 6th. Boston : Course Technology.
Rod Stephens. (2012). Visual Basic 2012 PROGRAMMER’S REFERENCE. Indianapolis : John
Wiley & Sons, Inc.
Microsoft . (2012). Explore the Visual Studio IDE with C# or Visual Basic. Retrieved
January 8, 2012, from Microsoft.http://msdn.microsoft.com/en-
us/library/vstudio/ms165079(v=vs.110).aspx
แผนบรหารการสอนประจาวชาบทท 4
หวขอเนอหาประจาบท 4.1 การออกแบบและสรางสวนตดตอกบผใชงาน
4.2 วธการออกแบบสวนตดตอกบผใชงาน
4.3 Graphical User Interfaces
4.4 ขนตอนการออกแบบสวนตดตอกบผใชงาน
4.5 การกาหนดคณสมบตของคอนโทรล
4.6 คอนโทรลพนฐานในการเขยนโปรแกรม
4.7 การตงชอออบเจกตหรอคอนโทรล
วตถประสงคเชงพฤตกรรม เมอศกษาบทนแลวนกศกษาสามารถ
1. ออกแบบออกแบบสวนตดตอกบผใชงานได
2. สรางออกแบบสวนตดตอกบผใชงานได
3. สรางและกาหนดคณสมบตของคอนโทรลได
วธการสอนและกจกรรมการเรยนการสอนประจาบท 1. บรรยายเนอหาในแตละหวขอ พรอมยกตวอยางและสาธต
2. ศกษาจากเอกสารประกอบการสอน
3. ผเรยนฝกปฏบต
4. ผสอนสรปเนอหา
5. ผเรยนถามขอสงสย
6. ทาแบบฝกหดเพอทบทวนบทเรยน
สอการเรยนการสอน 1. เอกสารประกอบการสอนการเขยนโปรแกรมคอมพวเตอรทางธรกจเบองตน
2. ภาพเลอน (Slide)
3. โปรแกรมภาษา Microsoft Visual Basic 2012
การวดและประเมนผล 1. สงเกตการณเขาชนเรยนและการปฏบต
2. มสวนรวมในการซกถามระหวางการบรรยาย
3. การตอบคาถามขณะทผสอนบรรยาย
4. การตรวจแบบฝกหด
บทท 4 การออกแบบและสรางสวนตดตอกบผใชงาน
สวนตดตอกบผใช (User Interface) ถอเปนสวนหนงทจดเตรยมไวใหผใชไดโตตอบกบโปรแกรมผานทางหนาจอ และใชเปนเครองมอนาทางเขาสระบบ โปรแกรมทพฒนาขนนนมจดประสงคคอ การประมวลผลขอมลเพอใหไดมาซงผลลพธทตองการ ซงถอเปนกระบวนการทางานในเชง คอมพวเตอรศาสตร ในขณะเดยวกน สวนตดตอกบผใชทใชตดตอกบโปรแกรมจดเปนแนวคดเชง จตวทยา โดยมนษยมความคด มความรสกตอการโตตอบกบสงเราตาง ๆ ดงนน การออกแบบสวนตดตอกบผใชจงตองนาทงศาสตรศลปมาพจารณารวมกน เพอนาไปสการออกแบบทถกตองตามหลกการผใชพอใจและยอมรบ จดประสงคของการออกแบบสวนตดตอกบผใชคอ เพอบอกใหโปรแกรมรวาไดทากจกรรมอะไรลงไป, เพออานวยความสะดวกตอการใชงาน, หลกเลยงขอผดพลาดทเกดจากผใช (โอภาส เอยมสรวงศ, 2555 : 342)
4.1 การออกแบบและสรางสวนตดตอกบผใชงาน
การออกแบบสวนตดตอกบผใชงานเปนการออกแบบทมงเนนไปทการคาดการณถงสงทผใชอาจจาเปนตองกระทากบโปรแกรมและควรมองคประกอบทงายการการเขาถงและเขาใจงาย สวนตดตอกบผใชจะรวมเอาแนวคดของ การออกแบบปฏสมพนธกบผใช(Interaction design), การออกแบบทสามารถมองเหนได (visual design) และ สถาปตยกรรมขอมล (information architecture)
4.1.1 การเลอกองคประกอบของสวนตดตอกบผใชงาน
การเลอกใชคอนโทรลในการสรางสวนตดตอกบผใชงานควรเลอกคอนโทรลทผใชงานมความคนเคยอยบางแลว เพอใหผใชงานเขาใจและโตตอบกบโปรแกรมไดดยงขน ตวอยางการเลอกใชคอนโทรลในการรบขอมลจากผใชเชน ปม (Buttons), กลองขอความ (TextBox), กลองเลอก (CheckBox),
กลองรายการ (List Box) เปนตน
4.2 วธการออกแบบสวนตดตอกบผใชงาน
1. ออกแบบใหเรยบงาย หนาจอการทางานของโปรแกรมทดควรหลกเลยงองคประกอบทไมจาเปนและมคาอธบายทเขาใจไดงาย
2. สอดคลองและเลอกใชคอนโทรลทเขาใจไดงาย ควรเลอกใชคอนโทรลทพบไดบอยในหนาจอโปรแกรมอน ๆ เพอทผใชทมความคนเคยกบการใชโปรแกรมมาแลวจะเขาใจการทางานของโปรแกรมไดรวดเรวและจดองคประกอบของหนาจอใหความสอดคลองกน
54
3. ออกแบบหนาจอโปรแกรมใหสอความหมายไดงาย ควรจดเรยงขอความและคอนโทรลในแตละหนาจอใหดเปนระเบยบเรยบรอยและพจารณาถงพนททใชบนหนาจอใหเหมาะสม
4. การเลอกใชสทเหมาะสม ควรเลอกใชสทดงดดความสนใจในรายการทตองการเนน
5. ใชตวอกษรทชดเจน การเลอกใชตวอกษรบนหนาจอโปรแกรมควรพจารณาถงรปแบบตวอกษร ขนาดของตวอกษรและการจดเรยงขอความ
6. ควรมการกาหนดคาตงตน (Defaults) ของหนาจอโปรแกรม คาตงตนของโปรแกรมในหนาจอทจาเปนควรจดเตรยมไวใหผใชเพอความสะดวกและรวดเรวตอการใชงานของผใช เชน ขอมลวนท, ตวเลอกรายการตาง ๆ ในกลองรายการเปนตน (User Interface Design Basic, 2014)
4.3 Graphical User Interfaces
กราฟฟก ยสเซอร อนเตอเฟส (GUIs) คอการแสดงกราฟกบนหนาจอคอมพวเตอร ซงกราฟกทแสดงบนหนาจอนนสามารถควบคมดวยคยบอรด จอยสตก เมาส การจดการโดยตรงกบ GUIs ตองใชระบบทมความซบซอนมากขน การทางานของ GUIs ทสาคญคอการตอบสนองของผใชงายตอกราฟฟก นน ๆ
( Kenneth E. Kendall and Julie E. Kendall, 2003 : 657)
GUIs อาจกลาวไดวาเปนการทางานของโปรแกรมแบบ Event-Driven (ทางานเมอเกดเหตการณ)
หรอ Event-Base (บนพนฐานของเหตการณ) เหตทเปนเชนนเพราะโปรแกรมจะตอบสนองกตอเมอผใชมากระทาตอโปรแกรมนน ๆ เชน การคลกเมาสทปมคาสง การทางานของโปรแกรมทเปนแบบ GUIs คอโปรแกรมจะรอเหตการณทจะเกด (event listener) และเมอเกดเหตการณจะตอบสนองตามคาสงทกาหนดไวเมอเกดเหตการณนน (Smith, Jo Ann, 2011 : 170)
ในปจจบนสวนตดตอกบผใชงานเปนแบบ GUIs เปนสวนใหญ ยกตวอยางใหเหนภาพไดอยางชดเจนคอ โปรแกรมเครองคดเลขทมอยในระบบปฏบตการ Windows จะเหนหนาจอโปรแกรมทประกอบไปดวยชองแสดงขอมล, เมน และปมอยในรปแบบของกราฟฟก โปรแกรมจะทางานกตอเมอมการปอนตวเลขจากคยบอรดหรอคลกเมาสจากผใช
รปท 4.1 แสดงตวอยางโปรแกรมทเปน GUIs
55
การออกแบบสวนตดตอกบผใชหรอหนาจอโปรแกรมควรออกแบบใหใชงานงาย และนาใชเมอใหโปรแกรมทางน และเลอกใชตวควบคมทจาเปนเหมาะสมกบการใชงานของโปรแกรมมาจดวางบนฟอรม ตวอยางหนาจอโปรแกรมทผเขยนไดพฒนาไวบางสวนเชน
หนาจอโปรแกรมการขายสนคาของรานคาปลก
ในมหาวทยาลยราชภฏอดรธาน
หนาจอโปรแกรมการรบสมครนกเรยนของโรงเรยนนานาชาต
หนาจอโปรแกรมบนทกขอมลผชานาญการ
หนาจอโปรแกรมสงหนงสอราชการแบบมระบบ
แจงเตอนหนงสอเขา
รปท 4.2 ตวอยางบางสวนของสวนตดตอกบผใชหรอหนาจอโปรแกรมทผเขยนไดพฒนาขน
4.4 ขนตอนการออกแบบสวนตดตอกบผใชงาน
1. รางแบบหนาตาของฟอรม โดยอาจรางบนกระดาษไวกอน ระบตวควบคมตาง ๆ ใหเหมาะสมกบการใชงาน พรอมตาแหนงการวางตวควบคม
2. สรางคอนโทรลตาง ๆ บนฟอรม โดยพจารณาจากความเหมาะสมของคอนโทรลตาง ๆ ทใชตามวธการออกแบบสวนตดตอกบผใชตามทไดกลาวไปแลว
3. กาหนดคณสมบตของคอนโทรล ใหเหมาะสมและสวยงาน ควรกาหนดชอของคอนโทรลแตละตวทนามาวางบนฟอรมดวย (รวมถงการกาหนดชอฟอรม) เพอเตรยมเขาสขนตอนการเขยนโปรแกรม
56
4.5 การสรางคอนโทรลบนฟอรม
ฟอรมจะเปนพนททใชสาหรบบรรจคอนโทรลประเภทตาง ๆ เพอตดตอกบผใช การสรางคอนโทรลบนฟอรมจะสามารถกระทาได 3 วธ ดงน
วธท 1 คลกเมาสเลอกคอนโทรลทตองการบน Tool Box กดเมาสซายคางไวแลวนามาลากบนเพอกาหนดตาแหนงและขนาดของคอนโทรล วธท 2 ดบเบลคลกทคอนโทรลบน Tool Box คอนโทรลจะปรากฏขนบนฟอรมแลวคลกเมาสคางทคอนโทรลเพอจดตาแหนง
วธท 3 คลกเมาสทคอนโทรลบน Tool Box แลวคลกเมาสบนฟอรม
1. คลกเมาสซายคางไวบนคอนโทรล
2. ลากเมาสบนฟอรมทตาแหนงทตองการ
3. ปลอยเมาสจะปรากฏคอนโทรล
รปท 4.3 แสดงการสรางคอนโทรลบนฟอรมวธท 1
1. ดบเบลคลกทคอนโทรล
2. คอนโทรลจะปรากฏบนฟอรม
3. คลกเมาสคางทคอนโทรลบนฟอรมเพอจดตาแหนง
รปท 4.4 แสดงการสรางคอนโทรลบนฟอรมวธท 2
57
1. คลกทคอนโทรล
2. คลกเมาสบนฟอรมบนตาแหนงทตองการ
3. ปรากฏคอนโทรลบนฟอรม
รปท 4.5 แสดงการสรางคอนโทรลบนฟอรมวธท 3
สาหรบการลบคอนโทรลออกจากฟอรมสามารถทาไดโดยการคลกทคอนโทรลและกดปม Delete
บนคยบอรด
4.6 การกาหนดคณสมบตของคอนโทรล
พรอพเพอรต (property) คอคณสมบตของออบเจคหรอคอนโทรลทจะเปนตวกาหนดรปแบบการแสดงหรอพฤตกรรมของคอนโทรล (Stephens Rod, 2011 : 60) ซงคอนโทรลแตละตวจะมลกษณะเฉพาะตางกนไป สามารถกาหนดคณสมบตของคอนโทรลไดจากรายการตาง ๆ วนโดว Properties การกาหนดคณสมบตของคอนโทรลบนวนโดว Properties นนจะมทงแบบทอนญาตใหผเขยนโปรแกรมปอนคาเขาไปตรง ๆ และแบบทตองเลอกจากตวเลอกทเตรยมไวใหเทานน การกาหนดคณสมบตของคอนโทรลทาไดทงในชวงออกแบบโปรแกรม (Design Time) และในชวงทโปรแกรมทางาน (Run Time) มวธดงน
4.6.1 การกาหนดคณสมบตของคอนโทรลในชวงการออกแบบ (Design Time)
1. คลกเลอกทคอนโทรลทตองการกาหนดคณสมบต
2. คลกเลอกคณสมบตจากรายการทแสดงใน Properties Windows
3. กาหนดคาใหกบคณสมบตตาง ๆ ผาน Properties Windows ซงกาหนดได 2 แบบคอ
3.1 การกาหนดคาอยางอสระ สามารถปอนคาใน Property Window ไดอยางอสระ เชน ชอของคอนโทรล (Name), ขอความทแสดงบนคอนโทรล (Text) เปนตน
3.2 การกาหนดคาจากรายการตวเลอก เปนการกาหนดคาโดยเลอกจากตวเลอกในรายการทมใหของ Property Window เชน สของคอนโทรล (BackColor), รปแบบของเสนขอบ (Border
Style), การจดวางตาแหนงของขอความ (TextAlign) เปนตน
58
1. คลกทคอนโทรล
2.คลกเลอกคณสมบตแลวกาหนดคา
3.ผลลพธของการกาหนดคณสมบต Text ของปม
รปท 4.6 แสดงการกาหนดคณสมบตของคอนโทรลผานหนาตาง Propertiesในชวงออกแบบโปรแกรม
4.6.2 การกาหนดคณสมบตของคอนโทรลในชวงการทางานของโปรแกรม (Run Time)
การกาหนดคณสมบตของคอนโทรลในชวงการทางานของโปรแกรม (Run Time) จะใชวธการเขยนคาสงตอเหตการณตาง ๆ ทเกดขนในคอนโทรลนน ๆ เชน เมอปอนขอมลลงไปในกลองขอความ (TextBox) แลวปมคาสงสามารถทางานได โดยมวธการดงน
1. ดบเบลคลกทคอนโทรลทจะเกดเหตการณ
2. เขยนคาสงเพอกาหนดคณสมบตใหกบคอนโทรลทตองการ ซงจะเปนคอนโทรลตวใดก ไดทอยในฟอรมโดยมรปแบบการเขยนคอ
ControlName.Properties = Value
โดยท
ControlName คอ ชอของคอนโทรลทตองการกาหนดคณสมบต
Properties คอ คณสมบตทมอยของคอนโทรลนน ๆ Value คอ คาทกาหนดใหกบคณสมบตนน ๆ ของคอนโทรล
1. ดบเบลคลกทคอนโทรล
2. เขยนคาสงกาหนดคณสมบตใหกบคอนโทรล
59
3. รนโปรแกรม
4. ผลลพธเมอคลกทปม
รปท 4.7 แสดงขนตอนการกาหนดคณสมบตของคอนโทรลดวยการเขยนคาสง
จากรปท 4.7 สามารถอธบายขนตอนการกาหนดคณสมบตและผลลพธของการทางานไดคอ ตองการแสดงคาวา “ทดสอบ” ทกลองขอความทชอ TextBox1 ซงกคอคณสมบต Text ของคอนโทรล TextBox โดยขอความจะแสดงกตอเมอมการคลกเมาสจากผใช ดงนนเมอสงใหโปรแกรมทางานจะพบวาเมอโปรแกรมเรมตนจะยงไมมขอความใด ๆ เกดขนบน Text Box แตเมอผใชคลกเมาสทปม Ok จะปรากฏขอความขนท Text Box
ในแตละคอนโทรล อาจจะมคณสมบตทเหมอนกนหรอตางกนกได ขนอยกนหนาทของแตละคอนโทรล คอนโทรลหนงๆ จะมคณสมบตหลายอยาง หากสามารถกาหนดคณสมบตของคอนโทรลใหตรงกบความตองการของผใชไดมากเทาใดโปรแกรมกจะมประสทธภาพมากขน การกาหนดคณสมบตของแตละคอนโทรลไมจาเปนตองกาหนดทกๆ คณสมบต เพราะ Visual Basic ไดกาหนดคาเรมตน (default) ของแตละคอนโทรลไวใหแลว ตวอยางคณสมบตของคอนโทรลมกจะพบบอยในแตละคอนโทรล มดงตารางท 4.1
ตารางท 4.1 แสดงคณสมบตของคอนโทรลและคาอธบาย
ทมา : (ปรบปรงจาก Stephens Rod, 2011 : p. 61)
คณสมบต (Properties) คาอธบาย
AutoSize กาหนดขนาดของคอนโทรลใหพอดกบขอความ
BackColor กาหนดสพนหลง
BackgroundImage แสดงรปภาพบนคอนโทรล
BorderStyle กาหนดรปแบบเสนขอบของคอนโทรล
Cursor กาหนดรปแบบของเคอรเซอรเมอไปชทคอนโทรล
Checked กาหนดใหการเลอกหรอไม ใชกบคอนโทรลทสามารถคลกเลอกไดเชน CheckBox หรอ RadioButton
Dock กาหนดตาแหนงการวางของคนโทรลตามขอบของฟอรม
60
คณสมบต (Properties) คาอธบาย
Enabled กาหนดใหคอนโทรลสามารถทางานไดหรอไม Font กาหนดรปแบบ ขนาด ของตวอกษร
ForeColor กาหนดสของตวอกษร
Image แสดงรปภาพบนคอนโทรล
Items แสดงลสรายการบนคอนโทรล
Location กาหนดตาแหนงของคอนโทรลบนฟอรม
MultiColumn กาหนดใหคอนโทรลสามารถแสดงลสรายการไดหลายคอลมน
MultiLine กาหนดใหคอนโทรลรองรบขอความไดหลายบรรทด ใชกบคอนโทรล TextBox และ RichTextBox
ScrollBars กาหนดใหแสดงแถบเลอนบนคอนโทรล ใชกบคอนโทรล TextBox และ RichTextBox
SelectionMode กาหนดใหผใชสามารถเลอกรายการได 1 รายการหรอหลายรายการได ใชกบคอนโทรลทแสดงลสรายการได
SelectedIndex กาหนดใหมการเลอกรายการใดในลสรายการ
Size กาหนดขนาดของคอนโทรล
TabIndex กาหนดการลาดบของการกดแทบ
Text กาหนดขอความใหแสดงบนคอนโทรล
Value กาหนดคาใหกบคอนโทรลทกาหนดคาไดเฉพาะตวเลข
Visible กาหนดใหแสดงคอนโทรลใหเหนหรอไมเหน
4.7 คอนโทรลพนฐานในการเขยนโปรแกรม
การเขยนโปรแกรมดวย Visual Basic 2012 นนสวนใหญเมอสรางหนาจอโปรแกรมจะมคอนโทรลพนฐาน 3 ชนดทนยมใชกนอยางมากหรออาจเรยกไดวาแทบทกฟอรมจะตองมคอนโทรล 3 ชนดนประกอบดวยเสมอไมวาจะอยางใดอยางหนงหรอทงสามชนดเลยกได คอนโทรลพนฐานทง 3 ชนดมดงตอไปน
4.7.1 เลเบล (Label)
เลเบลเปนคอนโทรลทใชแสดงขอความบนฟอรม เชน อธบายวาจะรบขอมลอะไร เลเบลใชแสดงขอความทผใชไมสามารถแกไขไดตอนรนโปรแกรม แตถงอยางไรกสามารถเปลยนขอความในขณะทรนโปรแกรมได ดวยการเขยนคาสงควบคม
61
รปท 4.8 แสดงคอนโทรล label
ตารางท 4.2 แสดงคณสมบตทสาคญของ Label
พรอพเพอรต คาอธบาย
Text กาหนดขอความทตองการใหแสดงบนคอนโทรล
AutoSize กาหนดใหขนาดของเลเบลเทากบขนาดของขอความตามแนวนอนโดยอตโนมตหรอไม(True หรอ False)
TextAlign กาหนดให ขอความในเล เบลใหอยในตาแหนง ทตองการดงน
คณสมบตนจะแสดงใหเหนกตอเมอมการกาหนด Auto Size ใหเปน False
BorderStyle กาหนดลกษณะของขอบเลเบล(None = ไมมกรอบ,FixedSingle = กรอบเสนเดยว หรอ Fixed3D = กรอบลก 3มต)
Font กาหนดรปแบบและขนาดของตวอกษร
ForeColor กาหนดสของตวอกษร
BackColor กาหนดสพน (Background) ของเลเบล
คอนโทรล Label
TopCenter
MiddleCenter
BottomCente
TopRight
MiddleRight
BottomRight
TopLeft
MiddleLeft
BottomLeft
62
ตวอยางการกาหนดคณสมบตของ Label
Text = กรณาปอนราคาสนคา Text = กรณาปอนราคาสนคา Text = กรณาปอนราคาสนคา
AutoSize = True AutoSize = True AutoSize = MiddleCenter
TextAlign = TopLeft
(คาตงตนทโปรแกรมกาหนดให)
TextAlign = TopLeft
(คาตงตนทโปรแกรมกาหนดให)
TextAlign = TopLeft
BorderStyle = None BorderStyle = Fixed3D BorderStyle = FixedSingle
รปท 4.9 ตวอยางการกาหนดคณสมบตของ Label
4.7.2 เทกซบอกซ (Text Box)
เทกซบอกซคอนโทรลทรบขอความผานทางคยบอรดหรอแสดงขอความตางๆทตองการได
รปท 4.10 แสดงคอนโทรล Text Box
คณสมบต (Properties) ทสาคญของ Text Box ไดแก
ตารางท 4.3 แสดงคณสมบตทสาคญของ TextBox
พรอพเพอรต คาอธบาย
Text ใชกาหนดหรออางถงขอมลทอยในเทกซบอกซ Text Align กาหนดตาแหนงขอความภายในเทกซบอกซ
Left = ชดซาย,Center = กงกลาง,Right = ชดขวา
Max Length กาหนดความยาวสงสดของขอความทสามารถรบไดในเทกซบอกซ Password Char กาหนดอกขระทตองการแสดงในกรณทตองการรบรหสผาน(Password Charนจะมคาเรมตน
เปนคา blank)เชนกาหนด Password Char ใหคาเปน* เวลาผใชพมพขอความในTextbox จะ
แสดงในเทกซบอกซจะแสดงเปน * แทน
คอนโทรล Text Box
63
พรอพเพอรต คาอธบาย
Locked กาหนดใหเทกซบอกซอานไดอยางเดยวหรอไม(มคาเรมตนเปน False คอหมายถงสามารถแกไขได)ถากาหนดให Locked มคาเปน True ผใชจะไมสามารถแกไขได (อานไดอยางเดยวเทานน)
Border Style กาหนดรปแบบของเทกซบอกซ
Fixed3D (คาเรมตน) = รปแบบเทกซบอกซเปนแบบ3 มต
None = ไมมการตกรอบ , FixedSingle = มกรอบเปนมตเดยว Multiline กาหนดใหแสดงและรบขอความหลายบรรทดได (True รบและแสดงขอความไดหลายบรรทด,
False รบและแสดงขอความไดบรรทดเดยว)
ตวอยางการกาหนดคณสมบตของ TextBox
TextAlign = Right TextAlign = Right TextAlign = Left
PasswordChar = * MultiLine = True
รปท 4.11 แสดงตวอยางการกาหนดคณสมบตของ Text Box
4.7.3 บททน (Button)
เปนปมคาสงทใหผใชคลกเพอทางานอยางใดอยางหนงเราจะเหนการใชปมคาสงในโปรแกรมตางๆแทบทกโปรแกรม
รปท 4.12 แสดงคอนโทรล Button
คอนโทรล Button
64
คณสมบต (Properties) ทสาคญของ Button ไดแก
ตารางท 4.4 แสดงคณสมบตทสาคญของ Button
พรอพเพอรต คาอธบาย
Text ใชกาหนดขอความทแสดงบนปมคาสง
สามารถกาหนดคยลด (Shortcut Key) ใหกบปมคาสงโดยการเพมสญลกษณ & หนาตวอกษรทตองการจะทาใหตวอกษรบนคาสงมเสนใตขดอยและเมอผใชกดปมAltตวอกษรตวนนจะเหมอนกบการคลกเมาสทปมคาสงนนๆ
หมายเหต ถาตองการแสดงตวอกษร & บนปมคาสงใหใช &&
Text Align กาหนดตาแหนงขอความภายในปมคาสง
Image กาหนดรปทตองการ
Image Align กาหนดตาแหนงรปทตองการ(มตวเลอกเหมอนกบพรอพเพอรต Text Align )
Flat Style กาหนดลกษณะของ Button ซงประกอบไปดวยแบบ Standard,Flat,Popup และ System
Background Image กาหนดรป Background ของปมคาสง
Standard
Popup
Flat
System
TopCenter
MiddleCent
BottomCent
TopRight
MiddleRight
BottomRight
TopLeft
MiddleLeft
BottomLeft
65
ตวอยางการกาหนดคณสมบตของ Button
Text = OK Text = &Click Image = ชอภาพใน Resources
Image Align = MiddleLeft
รปท 4.13 ตวอยางการกาหนดคณสมบตของ Button
ปมคาสงหรอ Button สามารถแสดงรปไดโดยรปทจะแสดงบนปมคาสงจะตองมนามสกลเปน *.gif,
*.jpg, *.jpeg, *.bmp, *.wmf และ *.png มวธการนารปมาแสดงดงน
1.คลกเลอกปมทตองการและเลอก Properties Image
2. จะปรากฏหนาตาง Select Resource คลกปม Import
3. เลอกโฟลเดอรทเกบรปและเลอกรปทตองการ
4. ทหนาตาง select Resource จะแสดงชอรปทนาเขามาใหเลอกทชอรปทตองการและดานขางจะแสดงตวอยางของรป
66
5. รปทเลอกแสดงบนปม
6. กาหนดตาแหนงการแสดงรปดวย Properties
ImageAlign
รปท 4.14 แสดงขนตอนการแสดงรปบนปมคาสง
4.8 การตงชอออบเจกตหรอคอนโทรล
เมอมการสรางออบเจกตหรอคอนโทรลขนบนฟอรมแลว โปรแกรมจะตงชอของออบเจกตหรอคอนโทรลนน ๆ ใหเบองตนเชนถาม Text box 3 ตว แตละตวกจะไดชอวา TextBox1, TextBox2, TextBox3
ตามลาดบ แตวธการนจะทาใหสบสนในขนตอนการเขยนโปรแกรมวา Text Box แตละตวรบคาหรอแสดงคาอะไรบาง ดงนนควรตงชอออบเจกตหรอคอนโทรลเสมอเพอปองกนความสบสนในการเขยนโปรแกรม
เทคนคในการตงชอออบเจกตหรอคอนโทรลทนยมใชกนอยางแพรหลายคอ อกษร 3 ตวแรกจะเปนตวบงบอกชนดของออบเจกตหรอคอนโทรล แลวตามดวยชอทบอกวาคอนโทรลกระทากบขอมลใด ตวอยางการตงชอคอนโทรลดงตารางท 4.5
ตารางท 4.5 แสดงตวอยางการตงชอคอนโทรล
คอนโทรล ตวยอ ตวอยางการตงชอ
CheckBox chk chkStatus
ComboBox cbo cboType
Button btn btnSave
Image img imgProduct
Label lbl lblAddress
ListBox lst lstMonth
OptionButton opt optSex
TextBox txt txtUserName
Timer tmr tmrTimeStart
67
ตวอยางท 4.1 สรางคอนโทรลและกาหนดคณสมบตของคอนโทรลผานหนาตาง Properties และการเขยนคาสงกาหนดคณสมบตของคอนโทรล ใหสรางฟอรมและกาหนดคณสมบตของคอนโทรลดงน
1. สรางโพรเจกตใหม โดยเลอกชนดของโพรเจกตเปน Windows Forms Application ตงชอโพรเจกตวา ValFunction
1. สรางโพรเจกตใหม
2. ตงชอโพรเจกต
รปท 4.15 แสดงการสรางโพรเจกตใหม
2. กาหนดชอฟอรมโดยวธการคลกทฟอรมแลวเลอกคณสมบต Name ทหนาตาง Properties ตงชอวา frmValFunction
2.1 คลกเลอกทฟอรม
2.2 ตงชอฟอรมทคณสมบต Name
รปท 4.16 แสดงการตงชอฟอรม
โดยปกตแลว VB จะกาหนดชอฟอรมมาใหอยแลวถาเปนฟอรมแรกของโพรเจกตจะมชอวา Form1
และถามฟอรมอน ๆ อกในโพรเจกตจะมชอ Form2, Form3 ตามลาดบ ผเขยนแนะนาวาควรตงชอฟอรมทกฟอรมเพอปองกนความสบสนในกรณทโพรเจกตมหลายฟอรมจะไดรวาฟอรมแตละฟอรมทาหนาทอะไร และการตงชอฟอรมควรตงใหสอความหมายดวยเชน frmMember (ฟอรมทจดการสมาชก), frmCalcTax
(ฟอรมทใชคานวณภาษ) เปนตน
68
3. กาหนดไตเตลของฟอรมทคณสมบต Text โดยการคลกทฟอรมแลวเลอกคณสมบต Text ทหนาตาง Properties ตงชอเปน Val function
รปท 4.17 แสดงขนตอนการกาหนดไตเตลของฟอรม
การกาหนดไตเตลของฟอรมมความสาคญอยางมากเพราะจะเปนตวบงบอกใหผใชรวากาลงทางานกบหนาจออะไร ดงนนจงควรกาหนดไตเตลของฟอรมทกฟอรมทมอยในโพรเจกตดวย
ผทเรมใชงาน VB ใหม อาจจะสบสนระหวางคณสมบต Name กบ Text และบอยครงทกาหนดคณสมบตผดวตถประสงค ผเขยนขออธบายใหเขาใจงาย ๆ ดงน คณสมบต Name จะใชตงชอใหกบคอนโทรลหรอออบเจกตเพอใชอางองในการทางานหรอการเขยนโปรแกรมเมอกาหนดแลวจะไมเหนผลลพธทหนาจอโปรแกรม สวนคณสมบต Text จะใชสาหรบแสดงขอความบนตวคอนโทรลหรอออบเจกตเมอกาหนดแลวจะปรากฏใหเหนผลหนาจอโปรแกรม
4. นาคอนโทรล Label, TextBox และ Button มาวางบนฟอรมดงรปท 4.15
รปท 4.18 แสดงการวางคอนโทรล Label, TextBox และ Button บนฟอรม
5. กาหนดคณสมบตของคอนโทรลแตละตวโดยการคลกเลอกคอนโทรลทอยบนฟอรมทละตวแลวกาหนดคณสมบตของคอนโทรลทหนาตาง Properties ตามตารางดานลาง
69
ตารางท 4.6 แสดงคาทกาหนดคณสมบตของคอนโทรลตาง ๆ
คอนโทรล คณสมบต คาทกาหนด
Label1 Text ปอนคาท1
Label2 Text ปอนคาท2
Button1 Text ทดสอบ
Label3 Text ผลลพธ
5.1 คลกเลอกทคอนโทรล
5.2 กาหนดคณสมบต
รปท 4.19 แสดงขนตอนการกาหนดคณสมบต Text ของคอนโทรล Label
เมอกาหนดคณสมบตของคอนโทรลครบทกตวแลวจะไดผลลพธตามรปท 4.20 จากการกาหนดคณสมบตขางตนจะเหนวาทคอนโทรล Textbox จะไมนยมกาหนดคณสมบต Text เพราะตองการใหผใชงานปอนคาเขาไปเองโดยจะใชคาอธบายวาคาทปอนเขาไปใน Textbox แตละตวนนคอคาอะไรดวยคอนโทรล Label ในทางปฏบตทดควรตงชอของคอนโทรลทกตวทอยบนฟอรมดวยเพอปองกนการสบสนของการเขยนโปรแกรมวาจะใหคอนโทรลตวใดทางาน (ในแบบฝกหดนยงไมมการตงชอของคอนโทรลทอยบนฟอรมเพอความเขาใจหลกการในเบองตนกอน ผเขยนจะกลาวถงในภายหลง) สวนคอนโทรล Label
ทนามาสรางคาอธบายจะไมนยมตงชอใหกบคอนโทรลชนดนเพราะในระหวางทโปรแกรมทางานจะไมมการเปลยนแปลงทเกดขนกบคอนโทรลเลย ยกเวนผเขยนโปรแกรมตองการเปลยนขอความทอยบนคอนโทรลชนด Label จงตงชอไวได
รปท 4.20 แสดงผลลพธจากการกาหนดคณสมบต Text ของคอนโทรล
70
6. กาหนดคณสมบต Enabled ของคอนโทรล Button ใหเปน False การกาหนดคณสมบตนเมอโปรแกรมเรมทางานจะไมสามารถใชงานคอนโทรลได
6.1 คลกเลอกคอนโทรล Button
6.2 กาหนดคณสมบต Enabled ของคอนโทรลเปน False
รปท 4.21 แสดงขนตอนการกาหนดคณสมบต Enabled ของคอนโทรล Button
เมอกาหนดคณสมบตของคอนโทรลในชวงออกแบบโปรแกรมครบทกตวแลวใหทดสอบผลลพธของโปรแกรมโดยสงใหโปรแกรมทางานดวยการคลกทปม บน Tool Bar หรอกดปม F5 บนคยบอรด
รปท 4.22 ผลลพธเมอสงใหโปรแกรมทางาน
จากรปท 4.22 เมอโปรแกรมทางานจะเหนวาในชองปอนขอมล (TextBox) สามารถปอนคาลงไปไดโดยการปอนผานคยบอรด สวนทปม (Button) จะไมสามารถคลกไดเพราะไดกาหนดคณสมบต Enabled
เปน False ไว
จากการกาหนดคณสมบตทผานมาขางตน เปนการกาหนดคณสมบตในชวงของการออกแบบโปรแกรม (Design Time) ซงควรทาทกครงเมอสรางโปรแกรมใด ๆ กตาม ในขนตอนตอไปจะเปนการกาหนดคณสมบตของคอนโทรลในชวงการทางานของโปรแกรม (Run Time) นนหมายความวาคณสมบตทกาหนดนจะทางานกตอเมอโปรแกรมถกสงใหทางานแลว การกาหนดคณสมบตในชวงการทางานของโปรแกรมนจะกาหนดดวยวธการเขยนคาสงในเหตการณทเกดขนของคอนโทรลตวใดตวหนง แบบฝกหดนจะใหคอนโทรล Button ซงถกตงคาไวใหไมสามารถคลกไดในตอนโปรแกรมเรมทางาน ใหสามารถคลกไดเมอมการปอนขอมลลงไปใน TextBox ตวท 1โดยมวธการดงน
71
7. ดบเบลคลกท TextBox ใหเขาส Code Editor เพอเขยนคาสงควบคม และเขยนคาสงดงน Button1.Enabled = True
รปท 4.23 แสดงการเขยนคาสงกาหนดคณสมบตของคอนโทรล
จากรปท 4.23 จะเหนวาคาสงจะถกเขยนอยในบลอกของ Private Sub…End Sub ซงจะเรยกวาซบรทนหรอชดคาสงยอย ดานหลง Private Sub จะเปนชอของคอนโทรลจากรปจะเปนคอนโทรลทชอ Textbox1
และหลงเครองหมาย _ จะเปนเหตการณของคอนโทรลซงกคอ TextChanged เหตการณนจะหมายถงการเปลยนขอความใน Textbox จะอธบายสรปไดวา ชดคาสงนเขยนลงไปนจะทางานเมอเกดการเปลยนแปลงขอความในกลองขอความทชอ Textbox1
เมอเขยนชดคาสงแลวใหรนโปรแกรมอกครงแลวทดลองปอนคาลงไปใน Text Box ตวแรกจะเหนวาปมทถกปดการทางานไวจะกลบมาใชงานได
1. รนโปรแกรม ปมไมสามารถคลกได
2. เมอปอนคาลงไป ปมสามารถคลกได
รปท 4.24 แสดงการทางานของโปรแกรมเมอปอนคาลงไปใน TextBox
เมอไดทดลองกาหนดคณสมบตของคอนโทรลดวยวธการทง 2 แบบแลวใหบนทกโพรเจกตโดยตงชอวา ValFunction เพอทจะไวใชศกษาในเนอหาตอไป
72
ผลลพธ (Output): คาลวงเวลาของพนกงาน
การประมวลผล(Process): คาลวงเวลาของพนกงาน = จานวนชวโมงททางานลวงเวลา X 60
ขอมลเขา (Input): จานวนชวโมงททางานลวงเวลา
Algorithm :
1. ปอนจานวนชวโมงททางานลวงเวลา
2. คานวณหาคาลวงเวลาของพนกงาน จาก จานวนชวโมงททางานลวงเวลา x 60
3. แสดงคาลวงเวลาของพนกงาน
แบบฝกหดท 4.2 ออกแบบและสรางหนาจอคานวณคาลวงเวลาของพนกงานโดยใหคาลวงเวลาของพนกงานชวโมงละ 60 บาท
จากการวเคราะหปญหาและออกแบบอลกอรธมในบทท 2 ตวอยางท 2.3 ผลการวเคราะหและออกแบบคอ
เทคนคในการออกแบบหนาจอโปรแกรมใหพจารณาจากจานวนขอมลเขา(Input), ผลลพธ (Output) และอลกอรธมจากการวเคราะหและออกแบบการทางานของโปรแกรม เชน ถามขอมลเขา 2 ตวกใหใช Textbox
2 ตวเพอรบขอมล การประมวลผลของโปรแกรมอาจใชปม (Button) เพอรอการคลกใหโปรแกรมประมวลผล (Diane Zak , 2014 : 64)
จากการวเคราะหขอมลและออกแบบอลกอรธมจากตวอยางท 2.3 ในบทท 2 จะพบวามขอมลเขา 1
ตวคอจานวนชวโมงททางานลวงเวลานนหมายความวาตองมคอนโทรลทสามารถรบการปอนขอมลจากผ ใชไดซงคอนโทรลทนยมนามาใชในการรบขอมลจากการปอนของผใชคอคอนโทรล TextBox ดงนนจงเลอกใชคอนโทรลนเปนตวรบขอมลจากผใช และผลลพธของโปรแกรมนม 1 ตวคอคาลวงเวลาของพนกงาน การเลอกใชคอนโทรลทจะแสดงผลลพธในโปรแกรม VB มใหเลอกใชมากมายแตทนยมคอ Label
และ Textbox แตในกรณทไมตองการใหผใชงานแกไขผลลพธไดดวยตวเองโดยไมผานการประมวลผลของโปรแกรมผเขยนแนะนาใหใชคอนโทรล Label (จะใช TextBox กได) ดงนนคอนโทรลตวท 2 ทจะปรากฏบนหนาจอโปรแกรมคอ Label ทมไวสาหรบแสดงคาลวงเวลาของพนกงาน สาหรบการประมวลผลของโปรแกรมจะทาเมอผใชปอนขอมลเขามาแลวใหคลกทปม ดงนนจงใชคอนโทรล Button
73
จากการเลอกใชคอนโทรลตาง ๆ ในโปรแกรมสามารถสรปคอนโทรลทจาเปนไดดงตารางดานลาง
ตารางท 4.7 แสดงรายการคอนโทรลทใชในโปรแกรม
คอนโทรล จดประสงค
Textbox รบขอมลชวโมงการทางานจากผใชงาน (Input)
Label แสดงคาลวงเวลา (Output)
Button คานวณและสงใหโปรแกรมแสดงคาลวงเวลา (Process)
เมอเลอกไดแลววาบนฟอรมควรใชคอนโทรลใดบางขนตอไปกคอการสรางหนาจอโปรแกรมโดยมขนตอนดงน
1. วางคอนโทรลบนฟอรม
รปท 4.25 แสดงการวางคอนโทรลบนฟอรม
2. กาหนดคณสมบตของคอนโทรลดงน
ตารางท 4.8 แสดงรายละเอยดการกาหนดคณสมบตของคอนโทรล
คอนโทรล คณสมบต คาทกาหนด
Textbox1 Name txtHour
Font Size = 12
Label1 Name lblOT
AutoSize False
BackColor ActiveCaptionText (สดา)
Font Size = 12
ForeColor ButtonHignlight (สขาว)
Text 0.00
TextAlign MiddleRight
Button1 Name btnCalc
Text คานวณ
Form1 Text คานวณคาลวงเวลา
74
เมอกาหนดคณสมบตตาง ๆ ของคอนโทรลแตละตวตามตารางท 4.8 แลวใหจดตาแหนงและขนาดของคอนโทรลใหดสวยงาม
รปท 4.26 แสดงการจดตาแหนงและขนาดของคอนโทรล
ในขนสดทายของการสรางหนาจอโปรแกรมใหนาคอนโทรล Label มาสรางคาอธบายของคอนโทรลแตละตว และสรางปมเพมอก 1 ปมเพอใชสาหรบการปดโปรแกรม ซงในขนตอนการเขยนโปรแกรมควบคมการทางานของโปรแกรมนจะกลาวในบทท 6
รปท 4.27 แสดงหนาจอโปรแกรมเมอสรางเสรจ
สรป
สวนตดตอกบผใช (User Interface) ถอเปนสวนหนงทจดเตรยมไวใหผใชไดโตตอบกบโปรแกรมผานทางหนาจอ และใชเปนเครองมอนาทางเขาสระบบ
การเลอกใชคอนโทรลในการสรางสวนตดตอกบผใชงานควรเลอกคอนโทรลทผใชงานมความคนเคยอยบางแลว เพอใหผใชงานเขาใจและโตตอบกบโปรแกรมไดดยงขน
วธการออกแบบออกแบบสวนตดตอกบผใชงานตอง ออกแบบใหเรยบงาย, สอดคลองและเลอกใชคอนโทรลทเขาใจไดงาย, ออกแบบหนาจอโปรแกรมใหสอความหมายไดงาย, การเลอกใชสทเหมาะสม ควรเลอกใชสทดงดดความสนใจในรายการทตองการเนน, ใชตวอกษรทชดเจน, ควรมการกาหนดคาตงตน ของหนาจอโปรแกรม
การกาหนดคณสมบตของคอนโทรลทาไดทงในชวงออกแบบโปรแกรม (Design Time) และในชวงทโปรแกรมทางาน (Run Time)
Label เปนคอนโทรลทใชแสดงขอความบนฟอรม
Text Box เปนคอนโทรลทรบขอความผานทางคยบอรดหรอแสดงขอความตางๆทตองการได
75
Button เปนคอนโทรลหรอปมคาสงทใหผใชคลกเพอทางานอยางใดอยางหนงเราจะเหนการใชปมคาสงในโปรแกรมตางๆแทบทกโปรแกรม
เทคนคในการตงชอออบเจกตหรอคอนโทรลทนยมใชกนอยางแพรหลายคอ อกษร 3 ตวแรกจะเปนตวบงบอกชนดของออบเจกตหรอคอนโทรล
แบบฝกหด
1. สวนตดตอกบผใชทดควรเปนอยางไร
2. คอนโทรลพนฐานทใชสรางสวนตดตอกบผใชมอะไรบาง และแตละชนดทางานอยางไร
3. จากตวอยางอลกอรธมตอไปน
3.1 ออกแบบหนาจอโปรแกรม
3.2 กาหนดชอและคณสมบตของคอนโทรล
ผลลพธ (Output): เงนเดอนคงเหลอ
การประมวลผล(Process): เงนประกนสงคม = เงนเดอนประจา X (5/100)
เงนเดอนคงเหลอ = เงนเดอนประจา – เงนประกนสงคม ขอมลเขา (Input): เงนเดอนประจา
Algorithm :
1. ปอนเงนเดอนประจา
2. คานวณหาเงนประกนสงคมจาก เงนเดอนประจา x (5/100)
3. คานวณหาเงนคงเหลอจาก เงนเดอนประจา – เงนประกนสงคม 4. แสดงเงนเดอนคงเหลอ
76
เอกสารอางอง
โอภาส เอยมสรวงศ. (2555) การวเคราะหและออกแบบระบบ(ฉบบปรบปรงเพมเตม). กรงเทพ : ซเอด ยเคชน.
สรสทธ ควประสพศกด นนทน แขวงโสภา. (2546). อนไซด Visual Basic .net ฉบบสมบรณ. กรงเทพ :
โปรวชน.
Kendall Kenneth E. and Kendall Julie E. (2003). Systems Analysis and Design. 5th. Jurong : Pearson
Education Aisa Pte Ltd.
Jo Ann Smith. (2011). MICROSOFT VISUAL BASIC PROGRAMS TO ACCOMPANY
PROGRAMMING LOGIC AND DESIGN. 6th. Boston : Course Technology.
Rod Stephens. Start Here Fundamentals of Microsoft .NET Programming. California : O’Reilly
Media, Inc, 2011.
User Interface Design Basics. Retrieved January 15, 2012, fromhttp://www.usability.gov/what-and-
why/user-interface-design.html.
Diane Zak. (2012). CLEARY VISUAL BASIC PROGRAMMING WITH MICROSOFT VISUAL
BASIC 2012. 3rd. Boston : Course Technology.
แผนบรหารการสอนประจาวชาบทท 5
หวขอเนอหาประจาบท 5.1 ตวแปร
5.2 ชนดขอมลของตวแปร
5.3 การประกาศตวแปร
5.4 การตงชอตวแปร
5.5 คาคงท
5.6 ขอบเขตของตวแปร
5.7 การแปลงชนดขอมล
5.8 ตวดาเนนการ
วตถประสงคเชงพฤตกรรม เมอศกษาบทนแลวนกศกษาสามารถ
1. อธบายความหมายของตวแปร คาคงท ไดถกตอง
2. อธบายชนดขอมลของตวแปรตาง ๆ ไดถกตอง
3. เขยนคาสงประกาศตวแปรไดถกตอง
4. อธบายขอบเขตของตวแปรไดถกตอง
5. อธบายการแปลงชนดขอมลไดถกตอง
6. อธบายตวดาเนนการและลาดบความสาคญไดถกตอง
วธการสอนและกจกรรมการเรยนการสอนประจาบท 1. บรรยายเนอหาในแตละหวขอ พรอมยกตวอยางประกอบ
2. ศกษาจากเอกสารประกอบการสอน
3. ผสอนสรปเนอหา
4. ผเรยนถามขอสงสย
5. ผสอนทาการซกถาม
6. ทาแบบฝกหดเพอทบทวนบทเรยน
สอการเรยนการสอน 1. เอกสารประกอบการสอนการเขยนโปรแกรมคอมพวเตอรทางธรกจเบองตน
2. ภาพเลอน (Slide)
3. โปรแกรมภาษา Visual Basic 2012
78
การวดและประเมนผล 1. สงเกตการณเขาชนเรยนและความสนใจขณะบรรยาย
2. มสวนรวมในการซกถามระหวางการบรรยาย
3. การตอบคาถามขณะทผสอนบรรยาย
4. การตรวจแบบฝกหด
บทท 5 ตวแปรและตวดาเนนการ
การทางานของคอมพวเตอรตองใชหนวยความจาในการเกบขอมลเพอนามาดาเนนการบางอยางตามคาสงทผเขยนโปรแกรมกาหนด การเกบขอมลในทนหมายถงการเกบไวในหนวยความจาหลกชนด RAM ขอมลทจะเกบนนจะตองเกบลงในสงทเรยกวา ตวแปร และตวแปรทใชในโปรแกรมจะตองกาหนดชนดขอมลไวดวยวาตวแปรนสามารถเกบขอมลชนดใดได เชน ตวเลขจานวนเตม ตวเลขทศนยม หรอตวอกษร ขอมลตางชนดกนจะตองการเนอทหนวยความจาและวธจดการตางกนไป การเลอกชนดขอมลใหเหมาะสมกบตวแปรจะทาใหเขยนโปรแกรมไดอยางมประสทธภาพสงสด 5.1 ตวแปร (Variable)
ตวแปรคอสงทใชเกบคาบางอยางในขณะทโปรแกรมกาลงทางานตามกระบวนการทออกแบบไว(Bryan Newsome, 2012 : 44) โดยใชหนวยความจาภายในของคอมพวเตอรซงจะเกบชนด ขนาด และตาแหนงของตวแปรนน ๆ (Diane Zak, 2012 : 108) ตวแปรเปนสวนสาคญของการประมวลผลในโปรแกรมโดยทขอมลทเกบอาจเปนชนดตวเลข, ตวอกษร, วนท เปนตน (ROD STEPHENS, 2012 : 203) ตวอยางของการใชงานตวแปร เชนหากตองการคานวณภาษมลคาเพมของสนคาชนดหนง กตองเกบราคาสนคาและภาษมลคาเพมทคานวณไดไวในตวแปร ซงหมายถงตาแหนงในหนวยความจาทมชอและชนดขอมลทแนนอน โดยทคาของตวแปรสามารถถกเปลยนแปลงไดตลอดเวลาในโปรแกรม เชน กาหนดตวแปร Price เพอใชเกบราคาสนคา, ตวแปร Vat เพอใชเกบภาษมลคาเพมทไดจากการคานวณ โดย Vat = Price * 0.07 (7 เปอรเซนต) นนคอถาหากสนคามราคา 1,000 บาท จะไดภาษมลคาเพม 70 บาท เปนตน เนองจากขอมลทเครองสามารถประมวลผลไดมอยหลากหลายชนดดวยกน เชน ตวเลขจานวนเตม, จานวนจรง, อกขระ และวนท เปนตน ดงนนการกาหนดชนดขอมล (data type) ทเหมาะสมใหกบตวแปร จงนบเปนสงสาคญอยางยงทจะทาใหโปรแกรมของเราทางานไดอยางถกตองและมประสทธภาพ เพราะขอมลแตละชนดจะตองการหนวยความจาขนาดตางกนและลกษณะการทางานทตางกน (สรสทธ ควประสพศกด และนนทน แขวงโสภา, 2546 : 64) ดงนนตวแปรในโปรแกรมคอมพวเตอรกคอสงทสรางไวเกบคาหรอแทนคาตาง ๆ ในโปรแกรมและคาทอยในตวแปรนนสามารถเปลยนแปลงได
80
5.2 ชนดขอมลของตวแปร
สวนทเลกทสดของขอมลคอมพวเตอรคอ บต (bit) ซงเปนคาเพยง 1 คาคอ 0 หรอ 1 และเมอจานวนบตมารวมกนจะเรยกวาเปนไบต (byte) คอมพวเตอรมกจะวดพนทดสกและพนทหนวยความจาเปนกโลไบต (1,024 ไบต) เมกะไบต (1,024 กโลไบต) และกกะไบต (1024 เมกะไบต) วธการเกบขอมลของ VB 2012 มรปแบบทแตกตางกนในการเกบขอมลแตละชนด เชน 4 ไบต เปนจานวนทจะใชเกบขอมลชนดจานวนเตม สามารถเกบคาไดระหวาง -2,147,483,648 และ 2,147,483,647 (Rod Stephens, 2012 : 204-205) ชนดขอมลใน Visual basic 2012 มดงน
ตารางท 5.1 แสดงชนดขอมลใน Visual Basic 2012 ทมา : (ปรบปรงจาก Rod Stephens, 2012 : 205) ชนดของขอมล ขนาด คาทเกบ
Boolean 2 bytes True or False Byte 1 byte 0 ถง 255 SByte 1 byte −128 to 127 Char 2 bytes มคาตงแต 0 ถง 65,535 Short 2 bytes −32,768 ถง 32,767 UShort 2 bytes 0 ถง 65,535 Integer 4 bytes -2,147,483,648 ถง 2,147,483,647 UInteger 4 bytes 0 ถง 4,294,967,295 Long 8 bytes −9,223,372,036,854,775,808 ถง9,223,372,036,854,775,807 ULong 8 bytes 0 ถง 18,446,744,073,709,551,615 Decimal
16 bytes
มคา +/-79,228,162,514,264,337,593,950,335 ในกรณไมมทศนยม และ +/-7.9228162512264337593543950335 ในกรณมทศนยม
Single
4 bytes
มคาตงแต -3.402823E38 ถง -1.401298E-45 สาหรบคาตดลบ และ 1.401298E-45 ถง 3.402823E38 สาหรบคาบวก
Double
8 bytes
-1.797693134862231E308 ถง -4.94065645841247E-324 สาหรบคาตดลบ และ 4.94065645841247 ถง 1.797693134862231E308 สาหรบคาบวก
String varies 0 ถง 2 พนลานอกขระ Unicode Date 8 bytes
มคาตงแตวนท 1 มกราคม ค.ศ. 0001 เวลา 0:0:00 ถงวนท 31 ธนวาคม ค.ศ. 9999 เวลา 11:59:59
Object 4 bytes เปนชนดขอมลพเศษทสามารถใชแทนชนดขอมลอน ๆไดทงหมด Structure varies โครงสรางตามจานวนสมาชก
81
หมายเหต ตวอกษร E ในขอมลชนด Double และ Single หมายถงเลขยกกาลง เชน 123E6 หมายถง 123 x 10
6 = 123,000,000 เปนตน สรสทธ ควประสพศกด และนนทน แขวงโสภา (2546 : 65-67) ไดอธบายความหมายของชนดขอมลแตละประเภทไวดงน
5.2.1 ขอมลประเภทตวเลข (Numeric)
ขอมลประเภทตวเลขใน VB .NET มใหเลอกหลายชนด ขนอยกบงานทเราตองการ ขอมลแตละชนดจะใชเนอทหนวยความจะตางกนไป ซงจะมคาเรมตนเปน 0 เสมอ ดงรายละเอยดตอไปน
Byte เปนชนดขอมลประเภทตวเลขจานวนเตม ทมคาตงแต 0 ถง 255 ใชหนวยความจาเพยง 1 ไบต (8 บต) เทานน
Short เปนชนดขอมลประเภทตวเลขจานวนเตม ทมคาตงแต -32,768 ถง 32,767 ใชหนวยความจา 2 ไบต (16 บต)
Integer เปนชนดขอมลประเภทตวเลขจานวนเตม ทมคาตงแต -2,147,483,648 ถง 2,147,483,647 ใชหนวยความจา 4 ไบต (32 บต)
Long เปนชนดขอมลประเภทตวเลขจานวนเตมทมขนาดใหญมาก คอมคาไดตงแต -9,223,372,036,854,775,808 ถง 9,223,372,036,854,775,807 ใชหนวยความจา 8 ไบต (64 บต) Single เปนชนดขอมลประเภทตวเลขจานวนจรง (มทศนยมได) มคาตงแต -3.402823E38
ถง -1.401298E-45 สาหรบคาลบ และ 1.401298E-45 ถง 3.402823E38 สาหรบคาบวกใชหนวยความจา 4 ไบต (32 บต) เทากบ Integer
Double เปนชนดขอมลประเภทตวเลขจานวนจรงทมชวงคาและความแมนยาสงกวาชนด Single คอมคาตงแต -1.797693134862231E308 ถง -4.94065645841247 สาหรบคาลบ และตงแต 4.94065645841247 ถง 1.797693134862231E308 สาหรบคาบวก ใชหนวยความจา 8 ไบต (64 บต) เทากบ Long และ Decimal
Decimal เปนชนดขอมลประเภทตวเลขทสามารถเปนไดทงจานวนเตมและจานวนทศนยม ทมความละเอยดสงมาก คอมคา +/-79,228,162,514,264,337,593,950,335 ในกรณไมมทศนยม และ +/-7.9228162512264337593543950335 ในกรณมทศนยม ใชหนวยความจา 8 ไบต (64 บต) เทากบ Long และ Double
82
5.2.2 ขอมลประเภทตรรกะ (Boolean)
Boolean ขอมลประเภทตรรกะใน VB.NET คอขอมลชนด Boolean ซงมไดเพยง 2 คาเทานนคอ True (จรง) หรอ False (เทจ) เราอาจนาขอมลประเภทนมาประยกตใชไดหลายรปแบบ เชน บอกเพศ (True = ชาย, False = หญง) เปนตน ขอมลชนด Boolean ใชหนวยความจา 2 ไบต โดยคาเรมตนของตวแปรชนด Boolean จะเปน False เสมอ
5.2.3 ขอมลประเภทอกขระ (Alphabetic)
ขอมลประเภทอกขระแบงออกไดเปน 2 ชนดหลกๆ ไดแกชนด Char และ String ดงตอไปน Char เปนชนดขอมลประเภทอกขระ 1 ตว ใชหนวยความจา 2 ไบต (อกขระแบบ Unicode) String เปนชนดขอมลประเภทอกขระหลายตว สงสดขนาด 2 พนลานตวอกษร (2
31) คาเรมตนของตวแปรชนด String จะเปน Nothing เสมอ
5.2.4 ขอมลประเภทวนท (Date)
Date เปนชนดขอมลทใชเกบขอมลประเภทวนท, เวลา โดยคาเรมตนของตวแปรชนด Date จะเปน 12:00:00 AM เสมอ
5.2.5 ขอมลประเภทอนๆ
Object เปนชนดขอมลประเภทพเศษทสามารถใชแทนตวแปรชนดอนๆได ทงชนดขอมลตวเลข, อกขระ, ตรรกะ เปนตน โดยมคาเรมตนเปน Nothing เสมอ
Structure เปนขอมลชนดพเศษทเราสามารถกาหนดขนมาใชงานเองได เชน ถาเราตองการกาหนดตวแปรเพอเกบขอมลของลกคา ซงประกอบดวยขอมลเกยวกบ ชอ, ทอย, เบอรโทรศพท และ อเมลแอดเดรส
5.3 การประกาศตวแปร
โปรแกรมคอมพวเตอรจะรจกตวแปรและใชงานตวแปรได ตองทาการประกาศตวแปร (variable declaration) กอน โดยตงชอและกาหนดชนดขอมลทเหมาะสมเพอเปนการจองพนทในหนวยความจาของคอมพวเตอรไวเพอเกบขอมล คาสงทใชในการประกาศตวแปรมรปแบบดงน
83
รปแบบคาสง
Dim VariableName As DataType โดยท VariableName คอ ชอตวแปร DataType คอ ชนดของตวแปร ตวอยางคาสง Dim Count As Integer 'ประกาศตวแปรชอ Count ใหมชนดขอมลเปน Integer Dim Price As Double 'ประกาศตวแปรชอ Price ใหมชนดขอมลเปน Double Dim Vat As Double 'ประกาศตวแปรชอ vat ใหมชนดขอมลเปน Double Dim StudentName As String 'ประกาศตวแปรชอ CustName ใหมชนดขอมลเปน String
การใชงานขอมลชนด Date นจะใชเครองหมาย # แทน “ เมอตองการกาหนดคา เชน ตวอยางคาสง Dim TestDate As Date TestDate = #1/1/20012#
ตวอยางคาสง Structure Customer 'กาหนดขอมลชนด Customer (User Defined)
Public strName As String 'ประกอบดวยชอ Public strAddress As String 'ทอย Public strTel As String 'เบอรโทรศพท Public strEmail As String 'และอเมลแอดเดรส
End Structure 5.4 การตงชอตวแปร
VB 2012 สามารถตงชอตวแปรไดยาวถง 1,023 ตวอกษร ดงนนควรตงชอตวแปรใหสอความหมายเพอใหสามารถอานและแกไขโปรแกรมไดงาย เชน CustName, Price, Vat เปนตน การตงชอตวแปรทไมสอความหมายจะทาใหเกดปญหาในภายหลงในกรณทกลบมาแกไขโปรแกรม เพราะอาจทาใหสบสนวาตวแปรนน ๆ เกบคาของอะไร
5.4.1 หลกเกณฑในการตงชอตวแปร
1. ชอตวแปรตองขนตนดวยตวอกษรภาษาองกฤษหรอเครองหมายขดลาง ( _ ) เทานน 2. ตวถดไปจะเปนตวอกษรหรอตวเลขกได
84
3. หามมชองวางระหวางคา หากชอตวแปรมมากกวา 1 คาใหเขยนตดกน โดยอาจใชตวอกษรตวแรกของแตละคาเปนตวพมพใหญเพอแบงแยกระหวางคาตวอยางเชน StudentName, BookPrice หรออาจใชเครองหมายขดลาง ( _ ) คนระหวางคา เชน student_name, Book_Price 4. หามตงชอตวแปรซ ากบคาสงวน (Reserved Word) ซงเปนคาสงท VB เกบไวใชงานเอง ตวแปรใน Visual Basic นไมสนใจตวอกษรใหญตวเลก (Non-Case Sensitive) นนคอ ถาตงชอตวแปร intAge, intage ทง 2 ชอ Visual Basic ถอวาเปนตวเดยวกนโดย Code Editor จะชวยแกไขใหตรงตามชอทประกาศไวเมอมการเรยกใชตวแปร ซงอาจแตกตางจากภาษาโปรแกรมคอมพวเตอรภาษาอนเชน ภาษา C ภาษา Java โดยภาษาทงสองนจะเปนการตงชอตวแปรแบบ Case Sensitive ถงแมวาชอตวแปรจะเปนชอเดยวกน แตใชตวอกษรพมพใหญ พมพเลกตางกนภาษาโปรแกรมเหลานกจะถอวาไมใชตวแปรเดยวกน Jo Ann Smith (2011 : 13) ไดกลาวถงวธการตงชอตวแปรใน VB อกวธหนงซงเปนทนยมใชกนอยางมากคอวธการตงชอทเรยกวา “Camel Case” ซงมขอกาหนดดงน
ตงชอตวแปรทประกอบไปดวยคาหลายคาแตหามมชองวางระหวางคา ตวอกษรตวแรกของชอตวแปรตองเปนอกษรตวเลก อกษรตวแรกของคาถดไปตองเปนตวใหญ
ตวอยางการตงชอตวแปรดวยวธ Camel Case เชน firstName, myAge, salePrice สจจะ จรสรงรววร (2549 : 52) ไดนาเสนอวธการตงชอตวแปรโดยการระบชนดของตวแปรไวในชอตวแปรทตงขนมาเลย โดยจะเปนตวยอของชอชนดขอมลนาหนาชอตวแปร (Prefix) ตารางท 5.2 แสดงการตงชอตวแปรดวยวธการระบตวยอชนดตวแปรทหนาชอตวแปร ทมา : (สจจะ จรสรงรววร 2549 : 52)
ชนดขอมล Prefix ตวอยางการตงชอตวแปร
Integer int intCounter Single sng sngTaxRate, sngPrice Double dbl dblFactor String str strStudentName
Decimal dec decMyCalc Boolean bln blnMember
Date dat datStart, datExpired
85
5.4.2 การใชสญลกษณแทนชนดขอมล วธการประกาศตวแปรและกาหนดชนดขอมลอกวธหนงคอวธการใชสญลกษณกาหนดชนดขอมลของตวแปร โดย Visual Basic มสญลกษณใหใชดงน ตารางท 5.3 แสดงสญลกษณแทนชนดขอมลใน Visual Basic 2012 ทมา : (ปรบปรงจาก Rod Stephens, 2012 : 207) สญลกษณ ชนดขอมล
% Integer & Long @ Decimal ! Single # Double $ String ตวอยางการประกาศตวแปรและการกาหนดชนดขอมลใหกบตวแปร เชน ตวอยางคาสง Dim Count% 'ประกาศตวแปรชอ Count ใหมชนดขอมลเปน Integer Dim Price# 'ประกาศตวแปรชอ Price ใหมชนดขอมลเปน Double Dim Vat # 'ประกาศตวแปรชอ vat ใหมชนดขอมลเปน Double Dim StudentName$ 'ประกาศตวแปรชอ CustName ใหมชนดขอมลเปน String
ตวอยางการใชงาน Count = 10 Price = 80.50 StudentName = “ปณธ เมฆกมล”
แบบฝกหดท 5.1 ประกาศตวแปร
จากทไดศกษาเรองตวแปรและชนดขอมลในแบบฝกหดนเปนการฝกการประกาศตวแปรและชนดขอมล โดยใหสรางหนาจอโปรแกรมดงน
86
รปท 5.1 หนาจอโปรแกรม
กาหนดคณสมบตของคอนโทรลตามตารางดานลาง ตารางท 5.4 แสดงการกาหนดคณสมบตของคอนโทรล
คอนโทรล คณสมบต คาทกาหนด Textbox1 Name txtInPut1 Textbox2 Name txtInPut2 Textbox3 Name txtInPut3 Button1 Text แสดงผล
ดบเบลคลกทคอนโทรล Button1 และเขยนคาสงดงน Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click Dim intInput1 As Integer Dim sngInput2 As Single Dim strInput3 As String intInput1 = txtInput1.Text sngInput2 = txtInput2.Text strInput3 = txtInput3.Text MessageBox.Show(intInput1 & Chr(13) & sngInput2 & Chr(13) & strInput3) End Sub
TextBox1
TextBox2
TextBox3
Button1
87
จากคาสงทอยในคอนโทรล Button1 สามารถอธบายคาสงไดคอ ตารางท 5.5 อธบายความหมายของแตละคาสงใน Button1
คาสง ความหมาย
Dim intInput1 As Integer ประกาศตวแปรชอ intInput1 โดยเกบขอมลชนดจานวนเตม Dim sngInput2 As Single ประกาศตวแปรชอ sngInput2 โดยเกบขอมลชนดจานวนมทศนยม Dim strInput3 As String ประกาศตวแปรชอ strInput3 โดยเกบขอมลชนดตวอกษร intInput1 = txtInput1.Text ใหตวแปร intInput1 มคาเทากบคาทปอนเขาไปใน Textbox ทชอ txtInput1 sngInput2 = txtInput2.Text ใหตวแปร sngInput2 มคาเทากบคาทปอนเขาไปใน Textbox ทชอ txtInput2 strInput3 = txtInput3.Text ใหตวแปร strInput3 มคาเทากบคาทปอนเขาไปใน Textbox ทชอ txtInput3 MessageBox.Show(intInput1 & Chr(13) & sngInput2 & Chr(13) & strInput3) ใหแสดงคาทอยในตวแปร intInput1, sngInput2, strInput3 คาสง Chr(13) หมายถง การขนบรรทดใหม
ทดลองรนโปรแกรมและปอนคาทง 3 คาลงใน Textbox แลวคลกทปม
รปท 5.2 แสดงการปอนคาลงใน Text Box
เมอคลกทปม จะมกลองขอความแสดงคาทอยในตวแปรทง 3 ตวทประกาศไว
รปท 5.3 แสดงผลลพธของโปรแกรม
88
เพอเพมความเขาใจในเรองชนดของตวแปรใหทดลองปอนคาลงใน TextBox ดงรปดานลาง
รปท 5.4 แสดงการปอนคาลงใน Text Box
จากรปดานบน จะเปนวาคาท 1 ทปอนเขาไปเปนตวเลขทศนยมแตเมอแสดงคาจากตวแปรออกมาจะไมททศนยมทเปนเชนนเพราะตวแปร intInput1 กาหนดชนดขอมลเปนจานวนเตมจงไมสามารถเกบจานวนทศนยมได สวนคาท 3 ทปอนเขาไปถงจะปอนเปนตวเลขแตในการเกบคาจรง ๆ แลว จะเปนตวอกษรเพราะตวแปร strInput3 กาหนดชนดขอมลเปนตวอกษร ทดสอบการปอนคาใน Text Box ใหมโดยปอนตวอกษรลงไปใน TextBox ตวท 1
รปท 5.5 แสดงผลลพธเมอปอนคาผดชนดลงในตวแปร
จากการทดสอบปอนขอมลในแบบท 3 จะพบวาโปรแกรมจะ Error และแจงขอผดพลาดในตวแปรท 1 เนองจากขอมลทปอนเขาไปเปนตวอกษร ตวแปรชนดทเปนตวเลขไมสามารถเกบขอมลได เหตการณนสามารถปองกนไดโดยการใชคาสงแปลงชนดขอมลซงผเขยนจะกลาวตอไป
5.5 คาคงท (Constant)
ตวแปรทใชเกบคาบางอยางในโปรแกรมอาจไมมการเปลยนแปลงคาใด ๆ เลยตลอดโปรแกรม เชน อตราภาษมลคาเพม หรอคาคงททางคณตศาสตร เชนคา pi (ประมาณ 3.14) การเขยนโปรแกรมโดยกาหนดคาเหลานลงไปเลยในโปรแกรม (ทเรยกวา hard code) อาจกอใหเกดปญหาไดในระยะยาว เชนหากตองการเปลยนแปลงคาคงทดงกลาว ตองแกไขทกๆจดของโปรแกรมทใชคานน ซงทาใหเกดความยงยากในการแกไขโปรแกรม ยงไปกวานนถาแกไขไมครบถวน โปรแกรมของเรากอาจทางานผดพลาดได ในทาง
89
กลบกนการนาเอาตวแปรมาใชเกบคาทไมเปลยนแปลงเลยตลอดการทางานของโปรแกรมเชนน กนบเปนการสนเปลองหนวยความจาโดยใชเหต(สรสทธ ควประสพศกด และนนทน แขวงโสภา, 2546 : หนา 75) ดงนนการนาเอาคาคงท (Constant) มาใชเกบคาทไมมการเปลยนแปลงตลอดโปรแกรม จะชวยใหเขยนและดแลรกษาโปรแกรมไดงายขน การประกาศคาคงทมรปแบบดงน รปแบบคาสง
Const constantname As Datatype = initialize โดยท ConStantname คอ ชอของคาคงท Datatype คอ ชนดขอมล Initialize คอ คาทกาหนดใหคาคงท ตวอยางการกาหนดคาคงท ตวอยางคาสง Const maximum As Long = 459 Public Const helpString As String = "HELP" Private Const startValue As Integer = 5 5.6 ขอบเขตของตวแปร
ตวแปรทสรางขนมาจะมขอบเขตในการใชงานในแตละสวนของโปรแกรม ยกตวอยางเชนถาประกาศตวแปรไวทซบรทนของโปรแกรม (Private Sub…End Sub) คาสงทอยในซบรทนนกจะใชงานตวแปรนได แตซบรทนอนจะไมสามารถใชงานตวแปรนได ขอบเขตของตวแปรในเบองตนมอย 3 ระดบ คอ Block, Procedurec และ Module (Stephens Rod, 2012 : 233) 5.6.1 ขอบเขตตวแปรในระดบบลอค (Block Scope)
บลอกหมายถงชดของคาสงทอยในโครงสรางโปรแกรมหนง ๆ เชนโครงสราง If, Loop เปนตน ถาประการตวแปรในบลอกของโครงสรางน คาสงทอยในบลอกจะสามารถใชงานตวแปรนได ดงตวอยางคาสงดานลาง For i As Integer = 1 To 5
Dim j As Integer = 3 If i = j Then
Dim M As Integer = i + j Debug.WriteLine(“M: “ & M)
Else Dim N As Integer = i * j
90
Debug.WriteLine(“N: “ & N) End If Dim k As Integer = 123 Debug.WriteLine(“k: “ & k)
Next i จากคาสงดานบนเปนโครงสราง For Loop จะเหนวามการประกาศตวแปร i ไว ดงนนคาสงทอยในโครงสรางน (For…Next) จะใชงานตวแปร i ได แตคาสงทอยนอกโครงสรางนจะไมสามารถใชตวแปร i ได ในโครงสราง for จะเหนวามการประกาศตวแปร j ซงตวแปรนสามารถใชงานไดลปได และเมอตรวจสอบเงอนไขพบวา i=j ตวแปร M จะถกสรางเพอและใชงานไดเฉพาะในบลอกของ If … Else
5.6.2 ขอบเขตตวแปรในระดบโพรซเยอร (Prodedure Scope)
การประกาศตวแปรในซบรทน, ฟงกชน หรอโปรแกรมยอยอน ๆ ทไมไดประกาศในระดบบลอคตวแปรนนจะสามารถใชงานไดในซบรทนหรอโปรแกรมยอยเทานน จะไมสามารถใชงานขามโปรแกรมซบรทนหรอโปรแกรมยอยอน ๆ ได (ยกเวนประกาศเปนชนด Public แตตองเรยกใชซบรทนหรอโปรแกรมยอยนนกอน) 5.6.3 ขอบเขตตวแปรในระดบโมดล (Module Scope)
ตวแปรทประกาศในระดบโมดลจะสามารถทางานไดในทกสวนของโปรแกรมทอยในโมดลนน ไมวาจะเปนซบรทน, ฟงกชน, โปรแกรมยอยอน ๆ หรอแมกระทงบลอก
5.7 การแปลงชนดขอมล
การนาขอมลไปคานวณหรอไปใชงานในโปรแกรมนน ในบางครงชนดขอมลทไดจากผใชหรอจากโปรแกรมทประมวลผลอาจไมตรงกบความตองการ ยกตวอยางเชน ตวแปรตวหนงเกบคาจานวนตวเลขทศนยมแตผลลพธทตองการใหแสดงเปนตวเลขจานวนเตม กตองมการแปลงขอมลจากทศนยมเปนตวเลขจานวนเตมเสยกอน
5.7.1 การแปลงชนดขอมลแบบ Implicit Type Converion
วธนเปนการแปลงชนดขอมลโดยอตโนมต วธการกคอ นาขอมลไปประมวลผลในคาสงเดยวกน หรอกาหนดผาน Assignment Operator ไปเลย ซงเราจะใชแปลงขอมลทเปนประเภทเดยวกนเชน ตวเลขเหมอนกนหรอเปนตวอกษรเหมอนกน เปนตน Implicit Conversion จะทางานไดถกตองกตอเมอ แปลงขอมลจากชนดทใชพนทเกบขนาดใหญไปสชนดทใชพนทเกบเลก ( ซงเรยกวา Narrowing Conversion ) ตวอยางเชน
91
Dim Salary As Single Salary = Textbox1.Text จากคาสงขางตนคอการนาขอมลจากเทกซบอกซซงเปนขอมลชนดตวอกษร (String) (ขอมลในเทกซบอกซเปนชนดสตรงเสมอถงแมผใชจะปอนตวเลขเขามากตาม) ไปกาหนดใหตวแปรชนด Single ซง Visual Basic จะแปลงขอมล String ไปเปน Single ใหอตโนมต เพอใหสามารถกาหนดคาลงในแปรได
5.7.2 การแปลงชนดขอมลดวย Type Conversion Funtions
เปนวธแปลงขอมลใหเปนชนดขอมลทตองการได โดยใชฟงกชน CType เปนฟงกชนทตองระบชนดขอมลทตองการไวดวย มฟงกชนใหเรยกใชตามตารางดานลางคอ ตารางท 5.6 แสดงฟงกชน CType ทใชแปลงชนดขอมล
ฟงกชน รปแบบ คาอธบาย CBool CBool(expression) แปลงขอมลนนใหอยในชนด Boolean CByte CByte(expression) แปลงขอมลนนใหอยในชนด Byte CChar CChar(expression) แปลงขอมลนนใหอยในชนด Char CDate CDate(expression) แปลงขอมลนนใหอยในชนด Date (วนเดอนป) CDbl CDbl(expression) แปลงขอมลนนใหอยในชนด Double (เลขทศนยม) CDec CDec(expression) แปลงขอมลนนใหอยในชนด Decimal (เลขฐานสบ) Clnt Clnt(expression) แปลงขอมลนนใหอยในชนด Integer Clng Clng(expression) แปลงขอมลนนใหอยในชนด Long Integer Cobj Cobj(expression) แปลงขอมลนนใหอยในชนด Object CSByte CSByte(expression) แปลงขอมลนนใหอยในชนด SByte CShort CShort(expression) แปลงขอมลนนใหอยในชนด Short CSng CSng(expression) แปลงขอมลนนใหอยในชนด Single (เลขทศนยม) CStr CStr(expression) แปลงขอมลนนใหอยในชนด String CUInt CUInt(expression) แปลงขอมลนนใหอยในชนด UInteger CULng CULng(expression) แปลงขอมลนนใหอยในชนด ULong CUShort CUShort(expression) แปลงขอมลนนใหอยในชนด UShort
92
ตวอยางเชน Dim Salary As Single Salary = CSng(Textbox1.Text)
5.8 ตวดาเนนการ
เมอมตวแปรสาหรบเกบขอมลชนดตางๆแลว หลงจากนนเราอาจตองการนาขอมลในตวแปรตางๆ มาดาเนนการ (Operate) กน เชน นาขอมลชนดตวเลขจานวนมาบวก ลบ คณ หารกน หรอนาสตรง 2 ชด มาเชอมตอกนเปนสตรงชดเดยวกน ฯลฯ สญลกษณทใชดาเนนการกบขอมล เรยกวา ตวดาเนนการ หรอโอเปอเรเตอร (OPerator)
5.8.1 ตวดาเนนการทางคณตศาสตร
ตารางตอไปนแสดงตวดาเนนการทางคณตศาสตร (Arithmetic Operators) ตารางท 5.7 แสดงตวดาเนนการทางคณตศาสตร
ชอตวดาเนนการ และเครองหมาย
ตวอยาง คาอธบาย
Addition + num1 + num2 บวก Subtraction − num1 − num2 ลบ
Multiplication * num1 * num2 คณ Integer Division \ 15\2 หารเลขจานวนเตมตดเศษทง จากตวอยางผลลพธคอ 7
Division / 15/2 หาร จากตวอยางผลลพธคอ 7.5 Modulus MOD hours MOD 24 หารเอาเศษ จากตวอยางจะมผลลพธเปน 1 ถา hours มคา 25
Negation − −(num1− num2) ตดลบ ถา num1 − num2 เปน 10 แลว −(num1 − num2) จะเทากบ -10
Exponentiation ^ 2 ^ 3 ยกกาลง จากตวอยางผลลพธคอ 8
5.8.2 ตวดาเนนการกาหนดคา
โดยปกตแลวการกาหนดคาใหกบตวแปรหรอขอมลใด ๆ จะใชเครองหมาย = แตในกลมของตวดาเนนการกาหนดคา ยงมตวดาเนนการอนๆ อกนอกเหนอจากตวดาเนนการตวดาเนนการเหลานใหเขยนคาสงไดงายขน เชน แทนทจะตองเขยนวา Resiult = Result + 8 ซงเปนการนาคาของตวแปร Result มาบวกกบ 8 แลวเกบผลลพธไวในตวแปร Result ตามเดมกสามารถเขยนใหมโดยใชตวดาเนนการ += (Addition Assignment Operator) แทนไดดงน Result += 8
93
ตวดาเนนงาน += จะนาคาของตวถกดาเนนการทางขวา (ในทนคอ 8) บวกเพมเขาไปในตวถกดาเนนการทางซาย ซงจะตองเปนตวแปรหรอพรอพเพอรตเทานน (ในทนคอตวแปร Result ) ตวดาเนนการเกอบทงหมดใน Visual Basic ทตองการตวถกดาเนนการ 2 ตว (Binary Operator) จะมตวดาเนนการในลกษณะทกาหนดคาไปพรอมกนแบบเดยวกบ += ดวย ดงตาราง ตารางท 5.8 แสดงตวดาเนนการกาหนดคา
ตวดาเนนการ ตวอยาง ความหมาย + = Result =Result += 8 Result =Result + 8 -= Result =Result -= 5 Result =Result - 5 *= Result =Result *=2 Result =Result *2 /= Result =Result / =4 Result =Result / 4 \= Result =Result \= 3 Result =Result \ 3 ^= Result =Result ^=2 Result =Result ^2
5.8.3 ลาดบความสาคญของตวดาเนนการ
Visual Basic จะพจารณาตามลาดบความสาคญของตวดาเนนการ (Operator Precedence) ตารางตอไปนแสดงลาดบความสาคญของตวดาเนนการจากสง (ถกดาเนนการกอน) ไปหาตา (ถกดาเนนการทหลง) ลาดบความสาคญของตวดาเนนการทางคณตศาสตรแสดงไดดงตารางท 5... ตารางท 5.9 แสดงลาดบความสาคญของตวดาเนนการ
ชอตวดาเนนการ สญลกษณ ลาดบความสาคญ
Parentheses () 1 Exponentiation ^ 2 Negation − 3 Multiplication and division
* / 4
Integer division \ 5 Modulus MOD MOD 6 Addition and subtraction
+ − 7
Assignment = += −= *= /= \= ^=
8
ตวอยางเชน การคานวณจากสมการ 2+5*3 จะไดผลลพธคอ 17 ทไดเชนนเพราะวาโปรแกรมจะทาการคานวณ 5*3 กอนเนองจากเครองหมาย * มลาดบความสาคญของตวดาเนนการมากกวาเครองหมาย +
94
ถาตองการจะใหไดผลลพธเปน 21 จะตองปรบสมการเปน (2+5)*3 สรป
ตวแปรในโปรแกรมคอมพวเตอรกคอสงทสรางไวเกบคาหรอแทนคาตาง ๆ ในโปรแกรมและคาทอยในตวแปรนนสามารถเปลยนแปลงได
ชนดขอมลของตวแปรมทงเปนชนดตวเลข, ตรรกะ, อกขระ, วนท, ออบเจกต โปรแกรมคอมพวเตอรจะรจกตวแปรและใชงานตวแปรได ตองทาการประกาศตวแปร (variable
declaration) กอน โดยตงชอและกาหนดชนดขอมลทเหมาะสมเพอเปนการจองพนทในหนวยความจาของคอมพวเตอรไวเพอเกบขอมล
คาคงทคอ ตวแปรทใชเกบคาบางอยางในโปรแกรมอาจไมมการเปลยนแปลงคาใด ๆ เลยตลอดโปรแกรม
ตวแปรมขอบเขตอย 3 ระดบคอ ระดบบลอก, ระดบโพรซเยอร, ระดบโมดล การแปลงชนดขอมลทาทงไดแบบ Implicit Type Converion และ Type Conversion Funtions ในการคานวณทางคณตศาสตรตองจดลาดบความสาคญของตวดาเนนการดวย
95
แบบฝกหด
1. ตวแปรคออะไร และมความสาคญอยางไร 2. ใหทาเครองหมายถกเมอเหนวาการตงชอตวแปรนนถกหรอเครองหมายผดเมอเหนวาการตงชอตวแปรนนผด
myAge this_is_a_var NUMBER yourAge number $number Single 1number intNum May25 number Two Number
3. ควรใชชนดขอมลใด (Integer, Double, or String) ในการกาหนดชนดขอมลใหตวแปรตอไปน 3.1 ความสงของพนกงานมหนวยเปนเซนตเมตร ชนดขอมลทใชคอ____________ 3.2 ดอกเบยของเงนยม เชน 10 % ของเงนยม ชนดขอมลทใชคอ____________ 3.3 ราคาของสนคา ชนดขอมลทใชคอ____________
3.4 ชอลกคา ชนดขอมลทใชคอ____________ 3.5 จานวนลกคาในบรษท ชนดขอมลทใชคอ____________
4. เขยนคาสงประกาศตวแปรและตงชอตวแปรตอไปน 4.1 ประกาศตวแปรทใชเกบคาจานวนสนคา (1-1000) 4.2 ประกาศตวแปรทใชเกบคาราคาสนคา 4.3 ประกาศตวแปรทใชเกบคาชอลกคา
5. เขยนคาสงประกาศคาคงทตอไปน 5.1 คาลางรถราคา 400 บาท 5.2 จานวนภาษมลคาเพม 7% 5.3 ลกคาชอ ปณธ
6. ขอบเขตของตวแปรมกระดบ แตละระดบทางานอยางไร 7. ทาไมตองแปลงชนดขอมล
96
.เอกสารอางอง
สรสทธ ควประสพศกด และนนทน แขวงโสภา. (2546). อนไซด Visual Basic .Net ฉบบสมบรณ. กรงเทพมหานคร : บรษท โปรวชน จากด. สจจะ สรสรงรววร. (2549). คมอ Visual Basic 2005 ฉบบสมบรณ. นนทบร : ไอดซฯ, 2549. Jo Ann Smith. (2011). MICROSOFT VISUAL BASIC PROGRAMS TO ACCOMPANY
PROGRAMMING LOGIC AND DESIGN. 6th. Boston : Course Technology. Rod Stephens. (2012). Visual Basic 2012 PROGRAMMER’S REFERENCE. Indianapolis : John Wiley & Sons, Inc.
แผนบรหารการสอนประจาวชาบทท 6 หวขอเนอหาประจาบท 6.1 โครงสรางแบบลาดบ (Sequence Structure)
6.2 การกาหนดคาใหกบตวแปร
6.3 การแปลงขอมลดวยฟงกชน Val (Val Function)
6.4 การใชงาน Message Box
6.5 การใชงาน Input Box
6.6 คาสงปดฟอรม
6.7 การจดรปแบบผลลพธทเปนตวเลข
6.8 การปองกนความผดพลาด (Error) ของโปรแกรมจากการไมไดปอนขอมล
วตถประสงคเชงพฤตกรรม เมอศกษาบทนแลวนกศกษาสามารถ
1. อธบายการทางานโครงสรางแบบลาดบไดถกตอง
2. กาหนดคาใหตวแปรไดไดถกตอง
3. แปลงขอมลดวยฟงกชน Val ไดถกตอง
4. ใชงาน Message Box ไดถกตอง
5. ใชงาน Input Box ไดถกตอง
6. จดรปแบบผลลพธทเปนตวเลขไดถกตอง
7. เขยนโปรแกรมดวยโครงสรางแบบลาดบและปองกนความผดพลาดของโปรแกรมได
วธการสอนและกจกรรมการเรยนการสอนประจาบท 1. บรรยายเนอหาในแตละหวขอ ยกตวอยางประกอบ สาธตวธการ
2. ผเรยนฝกปฏบต
3. ศกษาจากเอกสารประกอบการสอน
4. ผสอนสรปเนอหา
5. ผเรยนถามขอสงสย
6. ผสอนทาการซกถาม
7. ทาแบบฝกหดเพอทบทวนบทเรยน
สอการเรยนการสอน 1. เอกสารประกอบการสอนการเขยนโปรแกรมคอมพวเตอรทางธรกจเบองตน
2. ภาพเลอน (Slide)
3. โปรแกรมภาษา Visual Basic 2012
98
การวดและประเมนผล 1. สงเกตการเขาชนเรยนและความสนใจขณะบรรยาย
2. สงเกตการปฏบตของผเรยน
3. มสวนรวมในการซกถามระหวางการบรรยาย
4. การตอบคาถามขณะทผสอนบรรยาย
5. การตรวจแบบฝกหด
บทท 6 โครงสรางการเขยนโปรแกรมแบบลาดบ
และการเขยนโปรแกรมคอมพวเตอรเบองตน
โปรแกรมคอมพวเตอรทงหมดไมวาโปรแกรมทงายหรอโปรแกรมทซบซอนจะใชโครงสรางการเขยนโปรแกรมอยางนอยหนงโครงสรางจากทงหมดสามโครงสราง ซงโครงสรางทงสามนประกอบไปดวย โครงสรางแบบลาดบ โครงสรางแบบเลอกทา และโครงสรางแบบทาซ า โครงสรางเหลานจะเรยกวา โครงสรางควบคม (Control Structure) หรอ โครงสรางตรรกะ (Logic Structure) โครงสรางเหลานจะเปนโครงสรางทควบคมการไหลของตรรกะของโปรแกรม
6.1 โครงสรางแบบลาดบ (Sequence Structure)
โครงสรางแบบลาดบเปนโครงสรางททาความเขาใจไดงายทสด โดยโปรแกรมจะทาการตามขนตอนแรกไปจนถงขนตอนสดทายตามลาดบ หรออธบายอกอยางหนงไดวาจะทางานจากคาสงบรรทดแรกไปจนถงคาสงบรรทดสดทาย โครงสรางแบบลาดบเปนโครงสรางพนฐานทมอยในทก ๆ โปรแกรมคอมพวเตอร
รปท 6.1 แสดงผงการทางานของโครงสรางแบบลาดบ
ตวอยางท 6.1 ตวอยางคาสงของการเขยนโปรแกรมดวยโครงสรางแบบลาดบ โปรแกรมแปลงคาองศาฟาเรนไฮเปนองศาเซลเซยส
Module Temperature
Sub Main()
Dim fahrenheitString As String
Dim fahrenheit As Double
Dim celsius As Double
คาสงท 1
คาสงท 2
คาสงท n
100
fahrenheitString = InputBox$( "Enter Fahrenheit temperature: ")
fahrenheit = Convert.ToDouble(fahrenheitString)
celsius = (fahrenheit − 32) * (5/9)
System.Console.WriteLine("Fahrenheit temperature:" & fahrenheit)
System.Console.WriteLine("Celsius temperature:" & celsius)
End Sub
End Module
จากตวอยางโปรแกรมแปลงคาองศาฟาเรนไฮเปนองศาเซลเซยสขางตน เปนการเขยนโปรแกรมแบบลาดบซงกคอโปรแกรมจะทาคาสงแรกไปจนถงคาสงสดทาย เมอโปรแกรมทางานคาสงแรกของโปรแกรมทจะทางานคอ
fahrenheitString = InputBox$( "Enter Fahrenheit temperature: ")
จากคาสงนโปรแกรมจะแสดงกลองสาหรบรบขอมลจากผใช และเมอผใชปอนขอมลแลวคาสงตอไปทคอ
fahrenheit = Convert.ToDouble(fahrenheitString
คาสงนจะเปนการแปลงคาขอมลทผใชปอนเขามาใหเปนขอมลชนด Double แลวนาไปเกบไวทตวแปร Fahrenheit ขนตอนท 3 ทโปรแกรมจะทากคอคาสงบรรทดท 3
celsius = (fahrenheit − 32.0) * (5.0/9.0)
เปนการแปลงคาจากฟาเรนไฮตเปนองศาเซลเซยส โดยการคานวณจากคาทอยในตวแปร Fahrenheit
นามาลบดวย 32 จากนนคานวณหาคา 5/9 แลวนาคาทคานวณไดทงสองตวมาคณกนแลวเกบผลการคานวณไวทตวแปร celsius
System.Console.WriteLine("Fahrenheit temperature:" & fahrenheit)
System.Console.WriteLine("Celsius temperature:" & celsius)
สวนคาสงสองบรรทดสดทายจะเปนการแสดงผลลพธของโปรแกรม ผลลพธทแสดงออกมาจะแสดงคาขององศาฟาเรนไฮตและองศาเซลเซยสตามลาดบ
จากการศกษาตวอยางโปรแกรมโครงสรางแบบลาดบจากตวอยางทผานมา ในขนตอไปกจะเปนการศกษาเรองคาสงตาง ๆ ทใชในการเขยนโปรแกรมแตกอนอนนน ผเขยนจะนาเสนอการใชงานคาสงพนฐานและการใชงานฟงกชนในเบองตนกอนเพอทจะนาไปประยกตใชในการเขยนโปรแกรมตอไปได
101
6.2 การกาหนดคาใหกบตวแปร
จากทไดอธบายเรองของตวแปรไปแลวในบทท 5 นนการทตวแปรจะมคาไดกจะมาจากการกาหนดคาใหกบตวแปรซงอาจกาหนดโดยคาสงในโปรแกรมหรอรบคามาจากผใชเลยกได ลองศกษาจากตวอยางดานลางตอไปน
ตวอยางคาสง
sngVat = 0.07 ‘กาหนดคาตวแปร sngVat ใหมคา = 7
vSalary = TextBox1.Text ‘กาหนดใหตวแปร vSalary มคาเทากบขอความทอยใน Textbox1
X = X+1 ‘กาหนดใหตวแปร X มคาเทากบคาเดมบวกเขาไปอก 1 เชน X มคา 5 จากคาสง X=X+1 แลว X จะมคาเปน 6
6.3 การแปลงขอมลดวยฟงกชน Val (Val Function)
การปอนขอมลลงในเทกซบอกสามารถปอนไดหลายประเภทเชน ตวเลข ตวอกษร หรออกขระพเศษ เชน เครองหมาย $, ฿ หรอ % ขอมลทปอนลงไปในเทกซบอกนนถกเกบไวใน Properties Text ซงหมายความวาขอมลนนจะเปนตวอกษรถงแมวาจะปอนเปนตวเลขกตาม ดงนนเมอตองการนาคาทปอนลงไปในเทกซบอกมาคานวณตองแปลงคาจากตวอกษรใหเปนขอมลชนดตวเลขกอนโดยสามารถใชฟงกชนมโปรแกรม Visual Basic 2012 เตรยมไวใหน นกคอ ฟงกชน Val (Val Funtion)
รปแบบคาสง
Val(Text)
โดยท
Text คอขอความทตองการแปลงเปนตวเลข
ฟงกชน Val จะทาการแปลงขอมลมาเปนตวเลข คาทจะไดนนขอมลทปอนเขาไปตองเปนตวเลขเทานนฟงกชนจงจะทาหนาทไดอยางสมบรณ แตถาในขณะทฟงกชนกาลงทาการแปลงถาพบอกขระพเศษหรอตวอกษรทไมใชตวเลขอยจะหยดทาการแปลงทนท
ตวอยาง เ ชน การแปลงขอมลจากเทกซบอกท ช อ txtPrice โดยใชฟงกชนมคาส ง คอ Val(txtPrice.Text) ผลลพธทไดเมอทดสอบปอนขอมลในรปแบบตาง ๆ จะไดตารางท 6.1
102
ตารางท 6.1 แสดงตวอยางการแปลงขอมลดวยฟงกชน Val
ขอมลทปอนลงใน txtPrice ขอมลทฟงกชน Val แปลงได
123 123
45,200 45
฿35.56 0
ปณธ 0
ชองวาง (ไมปอนขอมล ) 0
ตวอยางท 6.2 ทดสอบการแปลงขอมลดวยฟงกชน Val
สรางหนาจอโปรแกรมตามรปดานลาง
รปท 6.2 หนาจอโปรแกรมทดสอบการแปลงขอมล
ตารางท 6.2 แสดงคอนโทรลและคณสมบตของคอนโทรล
คอนโทรล คณสมบต คาทกาหนด
TextBox1 Name TextBox1
TextBox2 Name TextBox2
TextBox3 Name TextBox3
Button Name Button1
Text ทดสอบ
เมอสรางคอนโทรลแลวขนตอไปจะเปนเขยนคาสงโปรแกรม โดยโปรแกรมทจะเปนการหาผลลพธของการบวกคาสองคาทอยในคอนโทรล Textbox1 กบ TextBox2 แลวนาผลลพธมาแสดงท TextBox3 โปรแกรมจะทาคาสงเมอมการคลกทปม Button1 ดงนนใหดบเบลคลกทแลวเขยนคาสงดงน
TextBox1
TextBox2
TextBox3
Button1
103
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
TextBox3.Text = TextBox1.Text + TextBox2.Text
End Sub
ทดสอบโปรแกรมดวยการปอนตวเลขเขาไปท Textbox1 และ Textbox2 แลวคลกทปมผลลพธจะแสดงท TextBox3
รปท 6.3 แสดงผลลพธของโปรแกรม
จากผลลพธททดสอบจากดานบนจะพบวาเมอปอนตวเลขเขาไปท TextBox ทงสองตวผลลพธทไดจะเปนการนาตวเลขมาตอกน เหตทเปนเชนนเพราะ TextBox จะเกบขอมลเปนชนดตวอกษรถงแมวาจะปอนเปนตวเลขกตาม เมอนาตวอกษรมาบวกกนในความหมายของโปรแกรมคอมพวเตอรกคอการนาตวอกษรมาเชอมตอเขาดวยกนนนเอง
ขนตอไปเปนการทดสอบการใชงานฟงกชน Val ดวยการปรบคาสงท Button1 ดงน
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
TextBox3.Text = Val(TextBox1.Text) + Val(TextBox2.Text)
End Sub
ทดสอบโปรแกรมดวยการปอนตวเลขเขาไปท Textbox1 และ Textbox2 แลวคลกทปมผลลพธจะแสดงท TextBox3
104
รปท 6.4 แสดงผลลพธของโปรแกรมเมอใชฟงกชน Val
จากผลลพธททดสอบจากดานบนจะพบวาเมอปอนตวเลขเขาไปท TextBox ทงสองตวผลลพธทไดจะเปนผลรวมของตวเลขทงสองตวเพราะเมอใชฟงกชน Val จะทาการแปลงขอมลใหเปนตวเลขเสยกอนแลวจงนามาบวกกน
6.4 การใชงาน Message Box
Message Box เปนฟอรมชนดหนงทใชโตตอบกบผใชงาน เชน การแสดงขอความแจงเตอน การแสดงขอความในลกษณะยนยนการทางานและมตวเลอกใหกาหนดรปแบบตาง ๆ ได ยกตวอยางเชนเมอพมพงานในโปรแกรม Microsoft Word แลวปดโปรแกรมโดยทยงไมไดบนทกจะมกลองขอความแสดงขนมาเพอแจงเตอนใหผใชบนทกขอมลกอน
รปท 6.5 แสดงตวอยางของ Message Box
รปแบบคาสง
MessageBox.Show (Text, Caption, Button, Icon)
โดยท
- Text เปนขอความทแสดงบน MessageBox
- Caption เปนขอความทแสดงบน Title ของ MessageBox
- Button เปนปมทจะใหแสดงบน MessageBox
105
- Icon เปนไอคอนทใหแสดงบน MessageBox
ตวอยางคาสง
MessageBox.Show("ขอความทแสดง", "ไตเตล", MessageBoxButtons.OK, MessageBoxIcon.Information)
รปท 6.6แสดงตวอยาง MessageBox จากคาสง
รปแบบของปมทมใหเลอกใชของ Message Box มดงน
ตารางท 6.3 แสดงรปแบบของปมของ MessageBox
ปมทแสดง ชอ
AbortRetryIgnore
OKOnly
OKCancel
RetryCancel
YesNo
YesNoCancel
รปแบบของไอคอนทมใหเลอกใชของ MessageBox มดงน
ตารางท 6.4 แสดงรปแบบไอคอนทมใหเลอกใชใน MessageBox
ไอคอน ชอ
Asterisk
Information
Error
Hand
Stop
Exclamation
Warning
Question
106
ตวอยางท 6.3 การใชงาน Message Box
1. สรางโปรเจกตใหมและวางคอนโทรล Button บนฟอรม
รปท 6.7 แสดงการวางคอนโทรล
2. ดบเบลคลกท Button1 แลวเขยนคาสงดงน
รปท 6.8 แสดงคาสงการใช Message Box
3. ทดลองรนโปรแกรมแลวคลกทปมคาสง
รปท 6.9 แสดงผลลพธของ Message Box
6.5 การใชงาน InputBox
InputPut เปนฟงกชนหนงท VB 2012 เตรยมไวใหผเขยนโปรแกรมเรยกใชงาน มลกษณะคลายกบ
MessageBox กคอจะเปนกลองขอความแสดงขนมาแตทแตกตางคอ InputBox สามารถรบขอมลจากการปอนของผใชไดซงจะนาไปใชงานในสวนอนๆของโปรแกรมตอไป
107
รปท 6.10 แสดง Input Box
มรปแบบคาสงคอ
รปแบบคาสง
VariableName = InputBox (Prompt ,[Title], [Default],[xPos],[yPos])
โดยท
VariableName เปนตวแปรทใชเกบขอมลทปอนเขามาจาก Input Box
Prompt เปนขอความทปรากฏใน InputBax ซงมกจะเปนคาอธบาย
ถงขอมลทตองการใหผใชงานกรอกเขามา
Title เปนขอความทแสดงบน Title ของ MessageBox (กาหนดหรอไมกได)
Default คาเรมตนทแสดงในชองปอนขอมลเมอ (กาหนดหรอไมกได)
xPos, yPos เปนพกดทใหแสดง InputBox ในหนาจอ (กาหนดหรอไมกได)
ตวอยางท 6.2 การใชงาน InputBox
1. สรางโปรเจกตใหมและวางคอนโทรล Button บนฟอรม
รปท 6.11 แสดงการวางคอนโทรล
2. ดบเบลคลกท Button1 แลวเขยนคาสงดงน
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Dim vUserName As String
vUserName = InputBox("กรณาปอนชอผใช", "เขาใชงาน")
MessageBox.Show("ผใชงาน : " & vUserName, "เขาสระบบ")
End Sub
108
3. รนโปรแกรมแลวคลกทปม Button1 จะปรากฏ InputBox ขนมา ปอนขอความลงไปในชองรบขอความแลวคลกปม OK
รปท 6.12 แสดง InputBox เมอคลกทปม
รปท 6.13 แสดง MessageBox เมอคลกทปม OK ของ InputBox
จากตวอยางและผลการทางานดานบนสามารถอธบายไดดงน เมอคลกท Button1 คาสงแรกทจะทางานคอ
vUserName = InputBox("กรณาปอนชอผใช", "เขาใชงาน")
คาสงนเมอทางานจะแสดง InputBox โดยทขอความ “กรณาปอนชอผใช” และเมอปอนขอความลงไปในชองปอนขอมลของ InputBox ขอความทปอนเขาไปจะถกนาไปเกบทตวแปร vUserName คาสงทจะทางานตอไปคอ
MessageBox.Show("ผใชงาน : " & vUserName, "เขาสระบบ")
คาสงแสดง MessageBox โดยจะแสดงขอความ “ผใชงาน : ” และตามดวยขอความทอยในตวแปร vUserName ดงทแสดงในรปท 6.13 สวนเครองหมาย & หมายถงการนาขอความมาเชอมตอกน
เมอไดศกษาใชงานคาสงพนฐานและการใชงานฟงกชนในเบองตนไปแลวในขนตอไปจะเปนการเขยนโปรแกรมจากปญหาทไดวเคราะหไวในบทท 2 ซงเปนการเขยนโปรแกรมดวยโครงสรางแบบลาดบ
109
ตวอยางท 6.4 โปรแกรมการคานวณคาลวงเวลาของพนกงานโดยใหคาลวงเวลาของพนกงานชวโมงละ 60
บาท สรางหนาจอโปรแกรมโดยวางคอนโทรลตาง ๆ และกาหนดคาของคอนโทรลดงตอไปน
รปท 6.14 แสดงการวางคอนโทรลของโปรแกรมคานวณคาลวงเวลา
ตารางท 6.5 แสดงการกาหนดคณสมบตของคอนโทรล
จากการวเคราะหปญหาของผานมาโปรแกรมคานวณลวงเวลาของพนกงานจากบทท 2 ไดดงน
คอนโทรล คณสมบต (Properties) คาทกาหนด
Label Text ปอนจานวนชวโมง
Label Text คาลวงเวลา
Textbox Name txtHour
Textbox Name txtOT
Button Name btnCalc
Text คานวณ
Button Name btnClose
Text ปด
ผลลพธ (Output): คาลวงเวลาของพนกงาน
การประมวลผล(Process): คาลวงเวลาของพนกงาน = จานวนชวโมงททางานลวงเวลา X 60
ขอมลเขา (Input): จานวนชวโมงททางานลวงเวลา
Algorithm :
1. ปอนจานวนชวโมงททางานลวงเวลา
2. คานวณหาคาลวงเวลาของพนกงาน จาก จานวนชวโมงททางานลวงเวลา x 60
3. แสดงคาลวงเวลาของพนกงาน
110
ตวแปรทเกดขนในโปรแกรมคอ จานวนชวโมงททางานลวงเวลา และ คาลวงเวลาของพนกงาน ในทนให
- จานวนชวโมงททางานลวงเวลา แทนดวยตวแปร vHour
- คาลวงเวลาของพนกงาน แทนดวยตวแปร vOT
เขยนคาสงดงน
รปท 6.15 แสดงคาสงโปรแกรมคานวณคาลวงเวลาของพนกงาน
เมอเขยนคาสงแลวใหทดลองรนโปรแกรมและปอนคาจานวนชวโมงลงไปใน TextBox (txtHour) จากนนคลกทปมคานวณ ผลลพธคอคาลวงเวลาจะแสดงท Label (lblOT)
รปท 6.16 แสดงผลลพธเมอโปรแกรมทางาน
จากการทางานของโปรแกรมขางตนชดคาสงในโพรซเยอรนจะทางานเมอมการคลกทปมคานวณ (btnCalc)
โดยสามารถอธบายคาสงไดดงน
Dim intHour As Integer
Dim sngOT as Integer
คาสงสองคาสงขางตนเปนคาสงทใชสาหรบประกาศตวแปรโดย ตวแปรชอ intHour โดยเกบขอมลชนดจานวนเตมและตวแปรชอตวแปรชอ sngOT โดยเกบขอมลชนดตวเลขทศนยม เมอประกาศตวแปรแลวคาสงทจะเรมทางานคาสงแรกคอ
111
intHour = txtHour.Text
คาสงนเปนคาสงทใชสาหรบรบคาจากการปอนขอมลของผใชโดยผใชปอนขอมลลงใน TextBox แลวจะสงคาจาก TextBox มาไวทตวแปร intHour
sngOT = intHour * 60
คาสงประมวลผลโดยนาคาทอยในตวแปร intHour มาคณดวย 60 แลวนาคาทคานวณไดไปเกบไวทตวแปร sngOT และเมอคานวณไดผลลพธแลวคาสงสดทายทจะทาในโพรซเยอรนคอคาสง
lblOT.text = sngOT
คาสงนจะเปนการนาคาทอยในตวแปร sngOT มาแสดงท Label ทชอ lblOT
6.6 คาสงปดฟอรม
จากตวอยางคาสงขางตนจะเหนวาในโพรซเยอร btnClose_Click จะมคาสง Me.Close อย คาสงนจะทางานเมอมการคลกทปมปด (btnClose) โดยใชคาสง Me.Close นจะเปนคาสงสาหรบปดฟอรมทกาลงทางานอยแตถาโพรเจกตมอยฟอรมเดยวคาสงนจะหมายถงการเลกทางานของโปรแกรมเลย โดยท Me หมายถงฟอรม
6.7 การจดรปแบบผลลพธทเปนตวเลข
ในกรณทตองการควบคมผลลพธของโปรแกรมทเปนตวเลขเชนตองการแสดงจานวนจดทศนยม แสดงสญลกษณสกลเงน หรอเครองหมายพเศษอน ๆ ยกตวอยางเชน ตองการใหผลลพธมเครองหมายคนหลกพนและทศนยมสองตาแหนงและสญลกษณสกลเงน ใน Visual basic 2012 จะเรยกวาการจดรปแบบ (Formatting) โดยทผเขยนโปรแกรมสามารถใชคาสงจดรปแบบไดหลายแบบ ในแบบแรกจะใชคาสง Tostring (ToString method) ในการจดรปแบบ โดยมรปแบบดงน
รปแบบคาสง
numericVariableName.ToString(formatString)
โดยท numericVariableName คอ ชอตวแปรทชนดขอมลเปนตวเลข
formatString คอ การกาหนดรปแบบการแสดงผลของตวเลขโดยมการกาหนดดงน
C หรอ c จะแสดงสญลกษณสกลเงน เครองหมายคนหลกพน และแสดงทศนยมสองตาแหนง
N หรอ n จะแสดงเครองหมายคนหลกพนและแสดงทศนยมสองตาแหนง
F หรอ f ไมแสดงเครองหมายคนหลกพนและแสดงทศนยมสองตาแหนง
P หรอ p จะนาผลลพธมาคณดวย 100 แลวแสดงเครองหมายเปอรเซนต
112
การใชคาสงจะ formatSting จะใชรปแบบคอ (“Axx”) โดยท A คอตวอกษรทกาหนดรปแบบการแสดงผล และ x คอจานวนทศนยมทตองการใหแสดงซงจะใสหรอไมกได
ตวอยางคาสง
intTax = 1157
lblTax.Text = intTax.ToString("C2")
ผลลพธทไดคอ ฿1,157.00
decDue = 63.775
lblDue.Text = decDue.ToString("N2")
ผลลพธทไดคอ 63.76
dblRate = .04
lblRate.Text = dblRate.ToString("P0")
ผลลพธทไดคอ 4%
จากตวอยางโปรแกรมคานวณคาลวงเวลาทไดทดลองเขยนมาแลว จะเหนวาผลลพธของโปรแกรมจะแสดงเปนตวเลขทไดจากการคานวณแตจะไมมเครองหมายคนหลกพนในกรณทคาทไดจากการคานวณเปนตงแต 1,000 ขนไปซงอาจจะทาใหผใชงานสบสนในตวเลขได สามารถใช ToString ในการจดรปแบบของผลลพธได
รปท 6.17 แสดงการใชคาสงจดรปแบบผลลพธทเปนตวเลข
จากรปท 6.17 จะเหนวามการปรบคาสงใหจาก lblOT.Text = sngOT ใหเปน lblOT.Text =
sngOT.ToString(“C2”) ซงผลลพธทไดจะแสดงสญลกษณสกลเงน เครองหมายคนหลกพน และแสดงทศนยมสองตาแหนง
113
รปท 6.18 แสดงผลลพธของการใชคาสงจดรปแบบผลลพธ
6.8 การปองกนความผดพลาด (Error) ของโปรแกรมจากการไมไดปอนขอมล
โปรแกรมคานวณคาลวงเวลาเมอมการปอนขอมลทเปนตวเลขใน TextBox จะเหนวาโปรแกรมสามารถคานวณไดอยางไมมขอผดพลาด แตบางครงถาผใชลมปอนขอมลลงไปใน TextBox แตไปคลกทปมคานวณเลยโปรแกรมจะเกดขอผดพลาด
รปท 6.19 แสดงขอผดพลาดของโปรแกรมเมอผใชไมปอนตวเลขใน TextBox
จากรปท 6.19 ขอผดพลาดนเกดจากขอมลทอยใน TextBox นนไมมหรอพดอกอยางหนงวาเปนชองวาง ซงโปรแกรมจะมองเปนตวอกษร ตวแปร intHour จะเกบคาไดเฉพาะตวเลขจานวนเตมไมสามารถเกบตวอกษรไดคาสงนจง Error การปองกนขอผดพลาดนสามารถแกไขไดดวยการใชฟงกชน Val จากไดทศกษามาโดยปรบคาสงดงน
รปท 6.20 แสดงการใชฟงกชน Val เพอปองกนขอผดพลาดของโปรแกรม
เมอปรบคาสงแลวใหทดลองรนโปรแกรมแลวคลกทปมคานวณโดยไมตองปอนคาใด ๆ ลงใน TextBox
ผลลพธจะไดดงรปดานลาง
114
รปท 6.21 ผลลพธของโปรแกรมเมอใชฟงกชน Val ปองกนขอผดพลาดของโปรแกรม
จากรปท 6.21 จะเหนวาเมอไมปอนคาใด ๆ ลงไปใน TextBox ผลลพธจะไดเปน 0 เนองจากฟงกชน Val จะการแปลงคาเปนตวเลขแตตวอกษรไมสามารถแปลงเปนตวเลขไดเมอฟงกชนทางานตวแปร intHour จะมคาเปน 0
ตวอยางท 6.5 โปรแกรมเพอคานวณหาเงนเดอนคงเหลอประจาเดอนของพนกงานหลงหกเงนประกนสงคม 5 เปอรเซนตของเงนเดอนประจา
ขอมลเขา (Input): เงนเดอนประจา
การประมวลผล(Process): เงนประกนสงคม = เงนเดอนประจา X (5/100)
เงนเดอนคงเหลอ = เงนเดอนประจา – เงนประกนสงคม ผลลพธ (Output): เงนเดอนคงเหลอ
Algorithm :
1. ปอนเงนเดอนประจา
2. คานวณหาเงนประกนสงคมจาก เงนเดอนประจา x (5/100)
3. คานวณหาเงนคงเหลอจาก เงนเดอนประจา – เงนประกนสงคม 4. แสดงเงนเดอนคงเหลอ
ในตวอยางนจะเปนการประยกตใชงาน InputBox ดวยใหสรางหนาจอโปรแกรมโดยวางคอนโทรลตาง ๆ และกาหนดคาของคอนโทรลดงตอไปน
รปท 6.22 แสดงการวางคอนโทรลบนฟอรมของโปรแกรมคานวณหาเงนเดอนคงเหลอประจาเดอน
115
ตารางท 6.6 แสดงการกาหนดคณสมบตของคอนโทรล
เขยนคาสงตอไปนทปม คลกเพอปอนเงนเดอน
Private Sub btnCalc_Click(sender As Object, e As EventArgs) Handles btnCalc.Click
Dim vSalary As Single
Dim vSins As Single
Dim vTotal As Single
vSalary = InputBox("กรณาปอนเงนเดอนประจา")
vSins = vSalary * (5 / 100)
vTotal = vSalary - vSins
lblTotal.Text = vTotal
End Sub
เมอเขยนคาสงเสรจแลวใหทดลองรนโปรแกรมแลวคลกทปม คลกเพอปอนเงนเดอน
รปท 6.23 แสดงผลการทางานของโปรแกรมคานวณเงนเดอนคงเหลอ
เมอคลกทปมแลวจะปรากฏ InputBox ขนมาเพอใหผใชปอนเงนเดอนประจาลงไป ใหทดลองปอนตวเลขจานวนหนง
คอนโทรล คณสมบต (Properties) คาทกาหนด
Label
Name lblTotal
BackColor ActiveCaptionText (สดา)
ForeColor ButtonHighlight (สขาว)
Text 0.00
Button Name btnCalc
Text คลกเพอปอนเงนเดอน
116
รปท 6.24 แสดงการปอนขอมลของโปรแกรมคานวณเงนเดอนคงเหลอ
หลงจากทปอนคาเขาไปท InputBox แลวคลกทปม OK ผลลพธจะแสดงท Label
รปท 6.25 แสดงผลลพธของโปรแกรมคานวณเงนเดอนคงเหลอ
จากการทางานของโปรแกรมขางตนชดคาสงในโพรซเยอรนจะทางานเมอมการคลกทปมคานวณ (btnCalc)
โดยสามารถอธบายคาสงไดดงน
Dim vSalary As Single
Dim vSins As Single
Dim vTotal As Single
คาสงขางตนเปนคาสงทใชสาหรบประกาศตวแปรโดย ตวแปรชอ vSalary, vSins, vTotal ตวแปรทงสามตวนเกบขอมลชนดตวเลขทศนยม เมอประกาศตวแปรแลวคาสงทจะเรมทางานคาสงแรกคอ
vSalary = InputBox("กรณาปอนเงนเดอนประจา")
คาสงนเปนคาสงทใชสาหรบรบคาจากการปอนขอมลของผใชโดยผใชปอนขอมลลงใน InputBox แลวจะสงคามาไวทตวแปร vSalary
vSins = vSalary * (5 / 100)
117
คาสงประมวลผลโดยนาคาทอยในตวแปร vSalary มาคณดวย (5 / 100) แลวนาคาทคานวณไดไปเกบไวทตวแปร vSins ผลการคานวณนตวแปร vSins จะเกบคาของเงนประกนสงคมทคานวณได และคาสงตอไปทจะทางานคอ
vTotal = vSalary - vSins
คาสงนจะเปนคาสงทคานวณหาเงนคงเหลอประจาเดอนซงคาทคานวณไดจะถกเกบไวทตวแปร vTotal การคานวณจะมาจากตวแปร vSalary ทเปนตวแปรเกบเงนเดอนประจาลบดวยตวแปร vSins ทเปนตวแปรเกบเงนประกนสงคมทคานวณไดจากบรรทดกอนหนา เมอคานวณไดผลลพธแลวคาสงสดทายทจะทาในโพรซเยอรนคอคาสง
lblTotal.Text = vTotal
คาสงนจะเปนการนาคาทอยในตวแปร vTotal มาแสดงท Label ทชอ lblTotal
โปรแกรมคานวณเงนคงเหลอประจาเดอนหลงจากหกเงนประกนสงคมนอาจจะเกดขอผดพลาดไดในกรณทผใชไมปอนคาเขาไปใน InputBox ขอผดพลาดทเกดขนจะเปนกรณเดยวกบโปรแกรมกอนหนา ทดลองรนโปแกรมใหมแลวคลกทปม OK หรอ ปมปด
รปท 6.26 แสดงการทางานของโปรแกรมโดยไมปอนขอมล
จะพบวาโปรแกรมจะหยดทางานและแจงขอผดพลาดของคาสง
รปท 6.27 แสดงขอผดพลาดของโปรแกรมเมอไมปอนขอมล
118
การปองกนขอผดพลาดของโปรแกรมอาจจะใชฟงกชน Val มาปองกนกเปนวธหนงซงสามารถทาได โดยการปรบคาสงดงน
vSalary = Val(InputBox("กรณาปอนเงนเดอนประจา"))
เมอปรบแกคาสงแลวใหทดสอบรนโปรแกรมแลวไมตองปอนคาลงไปใน InputBox จะพบวาโปรแกรมไมมขอผดพลาดหรอหยดการทางานของโปรแกรม
รปท 6.28 แสดงผลลพธของโปรแกรมเมอปองกนขอผดพลาดดวยฟงกชน Val
สรป
ฟงกชน Val จะทาการแปลงขอมลมาเปนตวเลข คาทจะไดนนขอมลทปอนเขาไปตองเปนตวเลขเทานนฟงกชนจงจะทาหนาทไดอยางสมบรณ แตถาในขณะทฟงกชนกาลงทาการแปลงถาพบอกขระพเศษหรอตวอกษรทไมใชตวเลขอยจะหยดทาการแปลงทนท
Message Box เปนฟอรมชนดหนงทใชโตตอบกบผใชงาน เชน การแสดงขอความแจงเตอน การแสดงขอความในลกษณะยนยนการทางานและมตวเลอกใหกาหนดรปแบบตาง ๆ ได
InputBox สามารถรบขอมลจากการปอนของผใชไดซงจะนาไปใชงานในสวนอนๆของโปรแกรมตอไปได
คาสง Me.Close เปนคาสงสาหรบปดฟอรมทกาลงทางานอยแตถาโพรเจกตมอยฟอรมเดยวคาสงนจะหมายถงการเลกทางานของโปรแกรมเลย โดยท Me หมายถงฟอรม
ในกรณทตองการควบคมผลลพธของโปรแกรมทเปนตวเลขเชนตองการแสดงจานวนจดทศนยม แสดงสญลกษณสกลเงน หรอเครองหมายพเศษอน ๆ จะใชคาสง Tostring (ToString method) ในการจดรปแบบ
119
แบบฝกหด
1. โครงสรางแบบลาดบมการทางานแบบใด
2. ใหใสคาทแปลงขอมลไดเมอใชฟงกชน Val
ขอมล ขอมลทฟงกชน Val แปลงได
3,000
ชองวาง (ไมปอนขอมล )
4Business
MS UDRU
3. ตองการใหแสดง MessageBox มขอความวา “ตองการลบขอมลหรอไม” และมปม Yes,No ปรากกฎอยดวยจะเขยนคาสงอยางไร
4. Input Box มไวเพออะไร
5. ใหเขยนโปรแกรมเพอคานวณหาอตราภาษมลคาเพมของราคาสนคาโดย
5.1 สรางหนาจอโปรแกรมพรอมระบคอนโทรลทใช
5.2 จดรปแบบผลลพธทเปนตวเลขใหมเครองหมายคนหลกพน
5.3 มปมปดโปรแกรม
120
เอกสารอางอง
สรสทธ ควประสพศกด นนทน แขวงโสภา. อนไซด Visual Basic .net ฉบบสมบรณ. กรงเทพ : โปรวชน,
2546
TextBox Class. Retrieved January 8, 2012, from http://msdn.microsoft.com/en-
us/library/system.windows.forms.TextBox(v=vs.110).aspx
แผนบรหารการสอนประจาวชาบทท 7
หวขอเนอหาประจาบท 7.1 โครงสรางการเขยนโปรแกรมแบบเลอกทา
7.2 การใชงานตวดาเนนการ
7.3 โครงสรางคาสง if …Then (if … Then Statement)
7.4 โครงสราง if….Then…Else (if….Then…Else Statement)
7.5 โครงสราง If….Then…ElseIf (If….Then…ElseIf Statement)
7.6 การใชงาน Check Box
7.7 การใชงาน Radio Button
7.8 การใชงาน Group Box
วตถประสงคเชงพฤตกรรม เมอศกษาบทนแลวนกศกษาสามารถ
1. อธบายการทางานโครงสรางโปรแกรมแบบเลอกทาไดถกตอง
2. ใชตวดาเนนการไดถกตอง
3. อธบายการทางานโครงสรางโปรแกรมแบบเลอกแบบตาง ๆ ทาไดถกตอง
4. ใชงาน Check Box ไดถกตอง
5. ใชงาน Radio Button ไดถกตอง
6. เขยนโปรแกรมดวยโครงสรางแบบแบบเลอกทาได
วธการสอนและกจกรรมการเรยนการสอนประจาบท 1. บรรยายเนอหาในแตละหวขอ ยกตวอยางประกอบ สาธตวธการ
2. ผเรยนฝกปฏบต
3. ศกษาจากเอกสารประกอบการสอน
4. ผสอนสรปเนอหา
5. ผเรยนถามขอสงสย
6. ผสอนทาการซกถาม
7. ทาแบบฝกหดเพอทบทวนบทเรยน
สอการเรยนการสอน 1. เอกสารประกอบการสอนการเขยนโปรแกรมคอมพวเตอรทางธรกจเบองตน
2. ภาพเลอน (Slide)
3. โปรแกรมภาษา Visual Basic 2012
122
การวดและประเมนผล 1. สงเกตการเขาชนเรยนและความสนใจขณะบรรยาย
2. สงเกตการปฏบตของผเรยน
3. มสวนรวมในการซกถามระหวางการบรรยาย
4. การตอบคาถามขณะทผสอนบรรยาย
5. การตรวจแบบฝกหด
บทท 7 โครงสรางการเขยนโปรแกรมแบบเลอกทา
การแกปญหาดวยคอมพวเตอรบางอยางตองการการตดสนใจของโปรแกรม เพอเลอกวาจะใชวธการใดในการแกปญหา โดยตองมการตรวจสอบเงอนไขกอนวาเงอนไขทใชนนเปนจรงหรอเทจ ถาเปนจรงจะไปเลอกทาคาสงชดหนง แตถาเปนเทจจะไปเลอกทาคาสงอกชดหนง
บทนจะศกษาเรองโครงสรางการเขยนโปรแกรมแบบเลอกทา (Selection Structure) ดวยคาสง IF
แบบตาง ๆ และนอกจากศกษาโครงสรางการเขยนโปรแกรมแบบเลอกทาแลว จะมการประยกตใชคอนโทรลตาง ๆ ทเหมาะสมกบการเขยนโปรแกรมตามโครงสรางนดวย
7.1 โครงสรางการเขยนโปรแกรมแบบเลอกทา
การเขยนโปรแกรมโดยทวไป มกจะตองมเงอนไขบางอยางอยเสมอ โครงสรางการเขยนโปรแกรมแบบเลอกทาจะทาการตรวจสอบเงอนไขของโปรแกรมกอนทจะดาเนนการคาสงใดทอยภายใตเงอนไข โดยถาเงอนไขเปนจรงโปรแกรมจะมวธการทางานอยางหนง แตถาเงอนไขเปนเทจจะมวธทางานอกอยางหนง เชนการคดคาคอมมชชนของพนกงานจากยอดขาย ถายอดขายมากกวา 1,000,000 บาทขนไปจะไดคาคอมมชชน 0.5% แตถายอดขายไมถง 1,000,000 บาทไมไดคาคอมมชชน เปนตน
ตรวจสอบเงอนไข ง สา คดชเมอเงอนไขเปนจรง
ง สา คดชจ ทเน ปเขไนอ งเอ มเ
False
True
รปท 7.1 แสดงผงการทางานของโครงสรางแบบเลอกทา
124
โครงสรางการเขยนโปรแกรมแบบเลอกทาคาสง 2 คาสงหลกๆทใชตดสนใจไดแก คาสง if และ Select
Case ซงการทโปรแกรมจะเลอกทางานของชดคาสงใดนน ตองมการตรวจสอบเงอนไขกอนเสมอ การเขยนเงอนไขของโปรแกรมจะประกอบไปดวย
รปแบบคาสง
ตวเปรยบเทยบ ตวดาเนนการเปรยบเทยบ คาทเปรยบเทยบ
ตวอยางคาสง
X > 5
Price <= 1000
Price >= 2000 and Price <= 5000
circulation> 200000 and Employee = ‘Sale’
กอนทจะศกษาในรายละเอยดการเขยนโปรแกรมผเขยนจะนาเสนอความรพนฐานของการใชตวดาเนนการเปรยบเทยบดงน
7.2 การใชงานตวดาเนนการของโครงสรางการเขยนโปรแกรมแบบเลอกทา
ในคาสงทมตวดาเนนการนน จะประกอบไปดวยขอมล 2 สวน โดยมตวดาเนนการเปรยบเทยบคนกลาง ซงเมอมตวดาเนนการเปรยบเทยบกหมายความวา จะตองไดผลลพธของการดาเนนการออกมาเสมอ ซงจะเรยกสวนของคาสงกลางขอมลสองสวนนวา Expression
สามารถแบงตวดาเนนการเปรยบเทยบได 2 ประเภทดงน
• Comparison Operator เปนตวดาเนนการเพอการเปรยบเทยบ
• Logical Operator เปนตวดาเนนการทางตรรกศาสตร
7.2.1 Comparison Operator : ตวดาเนนการเปรยบเทยบ
ตวดาเนนการประเภทนใชในการเปรยบเทยบขอมลขางตวดาเนนการ ซงผลการเปรยบเทยบจะไดผลลพธเปนตวจรง (True) หรอเทจ (False) เทานน สาหรบตวดาเนนการเปรยบเทยบมใหเลอกใชงานดงน
ตารางท 7.1 แสดงตวดาเนนการเปรยบเทยบ
ตวดาเนนการ คาอธบาย ตวอยาง
< นอยกวา a < b จะเปนจรงเมอ a นอยกวา b
<= นอยกวาหรอเทากบ a <= b จะเปนจรงเมอ a นอยกวาหรอเทากบ b
125
> มากกวา a >b จะเปนจรงเมอ a มากกวา b
>= มากวาหรอเทากบ a >= b จะเปนจรงเมอ a มากกวาหรอเทากบ b
<> ไมเทากบ a <> b จะเปนจรงเมอ a ไมเทากบ b
= เทากบ a = b จะเปนจรงเมอ a เทากบ b
Is เปนออบเจกตเดยวกน a Is b จะเปนจรงเมอ a เปนออบเจกตเดยวกน b
IsNot เปนออบเจกตคนละตว a IsNot b จะเปนจรงเมอ a เปนออบเจกตคนละตว b
TypeOf…Is เปนออบเจกตชนดเดยวกน
TypeOf(a) Is b จะแปนจรงเมอตวแปร a สรางจากออบเจกต b
Like รปแบบเหมอนกน a Like b จะเปนจรงเมอ a รปแบบเหมอนกนกบ b
ตารางท 7.1 แสดงตวดาเนนการเปรยบเทยบ
7.2.2 Logical Operater : ตวดาเนนการทางตรรกศาสตร
ตวดาเนนการประเภทนใชเปรยบเทยบขอมลดานตรรกศาสตร ซงผลลพธทไดจากการทางานจะเปนจรง (True)หรอเทจ (False) เทานน ซงมกจะใชเพอการตดสนใจในการทางานของโปรแกรม
ตารางท 7.2 แสดงตวดาเนนการทางตรรกศาสตร
ตวดาเนนการ คาอธบาย ตวอยาง
Not นเสธ Not a ผลลพธคอ นเสธของ a (มความจรงตรงขามกบ a นนเอง)
And และ a And b ผลลพธจะเปนจรงเมอ a และ b ตางเปนจรง
Or หรอ a Or b ผลลพธจะเปนจรงเมอ a และ b เปนจรง
Xor Exclusive Or a Xor b ผลลพธจะเปน True กตอเมอ a กบ b มคาความจรงตางกน
AndAlso และ (แบบรวดเรว) a AndAlso b
OrElse หรอ(แบบรวดเรว) a OrElse b
ตวดาเนนการ AndAlso จะไดผลเปน True กรณเดยวคอเมอตวถกดาเนนการเปน True ทงค ซงกเหมอนกบ And แตทตางไปจาก And กคอ AndAlso พบวาเงอนไขทางซายเปน False จะไดผลลพธของนพจนเปน False ทนทโดยไมตรวจสอบเงอนไขทางขวา ในขณะท And จะหาคาของนพจนเงอนไขทงสองฝงเสมอ
ตวดาเนนการ AndAlso จงมประโยชนในกรณทตองการเชอมเงอนไข2ชดเขาดวยกนโดยใชตรรกะของ And แตตองการใหขามเงอนไขทสองไปเลยหากพบวาเงอนไขแรกเปนFalse เชน
126
ตวอยางนถา b เทากบ 0 เงอนไขทางซายของ AndAlso จะเปน False และโปรแกรมจะไมหาคาของเงอนไขทางขวา นนคอจะไมนา a มาหารดวย b แลวดวาผลลพธมากกวา1 หรอไม แตจะสรปวาผลลพธของ AndAlso เปน False ทนท จงทาใหเงอนไขทงหมดหลง If เปน False และโปรแกรมจะขามไปทาโคดหลงบรรทด End If ตอไป
7.3 โครงสรางคาสง if …Then (if … Then Statement)
โครงสรางคาสง if…Then ใชสาหรบตรวจสอบเงอนไขหนง โดยถาเงอนไขนเปนจรงจะทาชดคาสงหนง แตถาเปนเทจจะไมทาคาสงใดในบลอกของ if รปแบบการใชงานเปนดงน
รปแบบคาสง
If < expression> Then
Statement
End If
โดยท
Expression คอ เงอนไขของโปรแกรม
Statement คอ ชดคาสงเมอเงอนไขเปนจรง
สามารถแสดงการทางานของโครงสรางคาสง if … Then ดวยผงงานไดดงรปท 7.2
รปท 7.2 ผงงานการทางานของโครงสรางคาสง if … Then
เงอนไข
ชดคาสงเมอเงอนไขเปนจรง
True
False
127
ตวอยางท 7.1 เขยนโปรแกรมคานวณคาคอมมชชนจากยอดขายของพนกงาน ถาพนกงานขายสนคาไดมากกวา 10,000 0 จะไดคาคอมมชชน 1 % จากยอดขาย
วตถประสงค : เพอคานวณคาคาคอมมชชนจากยอดขายของพนกงาน
ขอมลเขา (Input): ยอดขาย
เงอนไข (Condition) : ยอดขาย > 10000
การประมวลผล(Process): คาคอมมชชน = ยอดขาย * 0.01
ผลลพธ (Output): คาคอมมชชน
รปท 6.3 แสดงผงงานโปรแกรมคานวณคาคอมมชชนของพนกงาน
รปท 7.3 แสดงโปรแกรมคานวณคาคอมมชชนจากยอดขาย
เรมตน
รบ ยอดขาย
ยอดขาย > 10000
คาคอมมชชน = ยอดขาย * 0.01
คาคอมมชชน
สนสด
True
False
128
สรางหนาจอโปรแกรมและวางคอนโทรลบนฟอรมดงน
รปท 7.4 แสดงหนาจอโปรแกรมคานวณคาคอมมชชน
ตารางท 7.3 แสดงคอนโทรลและคณสมบตของคอนโทรลโปรแกรมคานวณคาคอมมชชน
คอนโทรล คณสมบต คาทกาหนด
TextBox Name txtTotal
TextAlign Right
Button Name btnDisplay
Text แสดงคาคอมมชชน
การทางานของโปรแกรมจะทาการคานวณและแสดงคาคอมมชชนเมอมการคลกทปมแสดงคาคอมมชชน ดงนนจะเขยนคาสงของโปรแกรมทคอนโทรลตวน ใหดบเบลคลกทปม (btnDisplay) และเขยนคาสงดงน
Public Class Form1
Private Sub btnDisplay_Click(sender As Object, e As EventArgs) Handles _ btnDisplay.Click
Dim vTotal As Single
Dim vCommit As Single
vTotal = txtTotal.Text
If vTotal > 10000 Then
vCommit = vTotal * 0.01
MessageBox.Show("คาคอมมชชนทได =" & vCommit, "คาคอมมชชน")
End If
End Sub
End Class
เมอเขยนคาสงเสรจแลวใหรนโปรแกรมและลองปอนคาตวเลขทเปนยอดขายลงใน TextBox จากนนใหคลกทปม แสดงคาคอมมชชน โปรแกรมจะทาการคานวณและแสดงผลลพธออกมาทาง MessageBox แตถาคาทปอนเขาไปไมเกน 10,000 ผลลพธจะไมแสดง
129
รปท 7.5 แสดงหนาจอเมอรนโปรแกรมและปอนคา
รปท 7.6 แสดงผลการทางานของโปรแกรม
จากตวอยางขางตนสามารถอธบายคาสงโปรแกรมไดดงน
vTotal = txtTotal.Text
คาสงนจะเปนการสงคาทอยใน textbox ทชอ txtTotal มาเกบไวทตวแปร Vtotal จากนนจะเปนการตรวจสอบเงอนไขของโปรแกรมดวยคาสง
If vTotal > 10000 Then
คาสง if เพอตรวจสอบคาทอยในตวแปร Vtotal วามคามากกวา 10,000 หรอไม ถามคามากกวานนหมายถงเงอนไขเปนจรง(True) กจะทาคาสงทอยในบลอคของ if (if … End if)ซงกคอคาสง
vCommit = vTotal * 0.01
เปนคาสงทคานวณคาคอมมชชนโดยคานวณจากตวแปร vTotal แลวนานาไปเกบไวทตวแปร vCommit
จากนนจะแสดงผลลพธโดยใช MessageBox ดวยคาสง
MessageBox.Show("คาคอมมชชนทได =" & vCommit, "คาคอมมชชน")
คาสงแสดงคาคอมมชชนดวย MessageBox นจะแสดงเมอเงอนไขเปนจรงเทานน สวนเงอนไขเปนเทจ โปรแกรมจะไมแสดง MessageBox ขนมา
130
ตวอยางท 7.2 ตวอยางการปดโปรแกรม
ตวอยางนจะเปนการประยกตใชงาน MessageBox รวมกบการเขยนโปรแกรมดวยคาสง if โดยจะแสดง MessageBox ใหผใชเลอกวาจะปดโปรแกรมหรอไม ใหสรางหนาจอโปรแกรมดงน
รปท 7.7 แสดงการวางคอนโทรลของโปรแกรม
ตารางท 7.4 แสดงคอนโทรลและคณสมบตของคอนโทรล
คอนโทรล คณสมบต คาทกาหนด
Button Name btnClose
Text ออกจากโปรแกรม
เขยนคาสงทปมออกจากโปรแกรมดวยคาสง
Private Sub btnClose_Click(sender As Object, e As EventArgs) Handles _ btnClose.Click
Dim ans As MsgBoxResult
ans = MessageBox.Show("ตองการออกจากโปรแกรมหรอไม", "เลกการทางาน", _
MessageBoxButtons.YesNo, MessageBoxIcon.Question)
If ans = MsgBoxResult.Yes Then
Me.Close()
End If
End Sub
เมอเขยนคาสงแลวใหทดลองรนโปรแกรมแลวคลกทปมจะปรากฏ MessageBox ถามการเลกการทางานถาคลก Yes กจะเปนการปดโปรแกรม
131
1. คลกทปมออกจากโปรแกรม
2. คลกเลอก Yes
รปท 7.8 แสดงการทางานของการปดโปรแกรม
จากการทางานของโปรแกรมขางตนชดคาสงในโพรซเยอรนจะทางานเมอมการคลกทปมออกจากโปรแกรม(btnClose) โดยสามารถอธบายคาสงไดดงน
Dim ans As MsgBoxResult
คาสงขางตนเปนคาสงทใชสาหรบประกาศตวแปรโดย ตวแปรชอ ans เปนชนด MsgBoxResult ตวแปรชนดนจะสามารถเกบผลของการคลกปมทมอยใน MessageBox
ans = MessageBox.Show("ตองการออกจากโปรแกรมหรอไม", "เลกการทางาน", _
MessageBoxButtons.YesNo, MessageBoxIcon.Question)
คาสงนเปนคาสงทใหแสดง MssageBox และเมอผใชคลกทปมใด ๆ บน MessageBox ผลของการคลกจะถกสงมาเกบไวทตวแปร ans เชน ถาคลกทปม Yes คาทสงออกมาจะเปน MsgBoxResult.Yes ซงสามารถนาคาทสงออกมาใชตรวจสอบเงอนไขหรอนาไปใชงานอน ๆ ในโปรแกรมได
If ans = MsgBoxResult.Yes Then
เปนการตรวจสอบเงอนไขของโปรแกรมถาตวแปร ans มคาเปน MsgBoxResult.Yes แสดงคาเงอนไขเปนจรงกจะทาคาสงทอยหลง Then นนกคอคาสง Me.Close() แตถาเปนเทจจะไมทาคาสงใดเลยในบลอกของ if
132
7.4 โครงสราง if….Then…Else (if….Then…Else Statement)
โครงสรางคาสง if…Then…Else ใชสาหรบตรวจสอบเงอนไข โดยถาเงอนไขเปนจรงจะทาชดคาสงหนง แตถาเปนเทจจะทาอกชดคาสงหนง รปแบบการใชงานเปนดงน
รปแบบคาสง
If <expression> Then
statement
Else
elsestatements
End If
โดยท
expression คอ เงอนไขของโปรแกรม
Statement คอ ชดคาสงเมอเงอนไขเปนจรง
elsestatements คอ ชดคาสงเมอเงอนไขเปนเทจ
เงอนไข ง สา คดชเมอเงอนไขเปนจรง
ง สา คดชจ ทเน ปเขไนอ งเอ มเ
False
True
รปท 7.9 แสดงผงงานของโครงสราง if….Then…Else
133
ตวอยางท 7.3 เขยนโปรแกรมคานวณคาอาหารแบบบฟเฟตโดยคดหวละ 350 บาท แตถามามากกวา 5 คนคดหวละ 300 บาท
วตถประสงค : เพอคานวณคาคาคอมมชชนจากยอดขายของพนกงาน
ขอมลเขา (Input): จานวนคน
เงอนไข (Condition) : จานวนคน > 5
การประมวลผล(Process): คาอาหาร= จานวนคน * 300 (เงอนไขเปนจรง)
คาอาหาร= จานวนคน * 350 (เงอนไขเปนเทจ)
ผลลพธ (Output): คาอาหาร
รปท 7.10 แสดงแสดงผงงานของโปรแกรมคานวณคาอาหารแบบบฟเฟต
เรมตน
รบ จานวนคน
จานวนคน > 5
คาอาหาร = จานวนคน * 300
คาคอมมชชน
สนสด
True False
คาอาหาร = จานวนคน * 350
134
สรางหนาจอโปรแกรมและวางคอนโทรลบนฟอรมดงน
รปท 7.11 แสดงหนาจอโปรแกรมคานวณคาอาหารแบบบฟเฟต
ตารางท 7.5 แสดงคอนโทรลและคณสมบตของคอนโทรลโปรแกรมคานวณคาอาหารแบบบฟเฟต
คอนโทรล คณสมบต คาทกาหนด
TextBox Name txtN
Button Name btnCalc
Text คานวณ
Label
Name lblPrice
Text 0.00
AutoSize False
BackColor ActiveCaptionText (ดา)
ForeColor ButtonHighlight (ขาว)
การทางานของโปรแกรมจะทาการคานวณและแสดงคาอาหารเมอมการคลกทปมคานวณ ดงนนจะเขยนคาสงของโปรแกรมทคอนโทรลตวนและเขยนคาสงดงน
Private Sub btnCalc_Click(sender As Object, e As EventArgs) Handles btnExit.Click
Dim vNum As Byte
Dim vPrice As Single
vNum = txtN.Text
If vNum > 5 Then
vPrice = vNum * 300
Else
135
vPrice = vNum * 350
End If
lblPrice.Text = vPrice
End Sub
เมอเขยนคาสงเสรจแลวใหรนโปรแกรมและลองปอนจานวนคนลงใน TextBox จากนนใหคลกทปม คานวณ
รปท 7.12 แสดงผลลพธของโปรแกรมคานวณคาอาหารแบบบฟเฟตแบบท 1
จากรปท 7.12 จะพบวาเมอปอนคา 2 เขาไปแลวคลกทปมคานวณ คาอาหารทคานวณออกมาไดจะเปน 700
นนกคอ 2 * 350 ทเปนเชนนเพราะเมอตรวจสอบเงอนไขแลว เงอนไขจะเปนเทจ (2 ไมมากกวา 5) ใหทดลองปอนคาใหมทมคามากกวา 5 แลวคลกทปมคานวณใหม
รปท 7.13 แสดงผลลพธของโปรแกรมคานวณคาอาหารแบบบฟเฟตแบบท 2
จากรปท 7.13 จะพบวาเมอปอนคา 6 เขาไปแลวคลกทปมคานวณ คาอาหารทคานวณออกมาไดจะเปน 1800
นนกคอ 6 * 350 ทเปนเชนนเพราะเมอตรวจสอบเงอนไขแลว เงอนไขจะเปนจรง (6 มากกวา 5)
136
จากตวอยางขางตนสามารถอธบายคาสงโปรแกรมไดดงน
vNum = txtN.Text
คาสงนจะเปนการสงคาทอยใน textbox ทชอ txtN มาเกบไวทตวแปร vNum จากนนจะเปนการตรวจสอบเงอนไขของโปรแกรมดวยคาสง
If vNum > 5 Then
คาสง if เพอตรวจสอบคาทอยในตวแปร vNum วามคามากกวา 5 หรอไม ถามคามากกวานนหมายถงเงอนไขเปนจรง(True) กจะทาคาสงทอยหลง Then ซงกคอคาสง
vPrice = vNum * 300
เปนคาสงทคานวณคาอาหารโดยคานวณจากคาหวคนละ 300 แตถาเงอนไขเปนเทจซงกคอ จานวนคนไมมากกวา 5 จะทาคาสงทอยหลง Else คอคาสง
vPrice = vNum * 350
คาสงนจะคานวณคาอาหารจากคาหวคนละ 350 เมอหมดเงอนไขของโปรแกรมแลวจะปดดวย End if และแสดงคาอาหารดวยคาสง
lblPrice.Text = vPrice
7.5 โครงสราง If….Then…ElseIf (If….Then…ElseIf Statement)
การตรวจสอบเงอนไขของโปรแกรมในบางปญหาของโปรแกรมการตรวจสอบเงอนไขอาจมมากกวา 1 เงอนไข โดยถาเงอนไขแรกเปนจรงจะใหโปรแกรมทาคาสงหนง แตถาเปนเทจจะตรวจสอบเงอนไขทสองตอไปถาเปนจรงจะใหทาอกอยางหนง แตถาเปนเทจกอาจตรวจสอบเงอนไขทสามตอไป เปนเชนนไปเรอย ๆจนกวาจะครบเงอนไขทตองการตรวจสอบ สาหรบกรณทมหลายเงอนไขทตองการตรวจสอบ จะใชโครงสรางคาสง If … Then … Elself เขามาชวยได ดงน
รปแบบคาสง
If <expression> Then
statement
ElseIf
elseIfstatements
Else
elsestatements
End If
137
ตรวจสอบเงอนไขท 1 ง สา คดชเมอเงอนไขท 1 เปนจรง
False
True
ตรวจสอบเงอนไขท 2
ตรวจสอบเงอนไขท 3
False
False
ง สา คดชจ ทเน ปเดมหง ทขไนอ งเอ มเ
ง สา คดชเมอเงอนไขท 2 เปนจรง
ง สา คดชเมอเงอนไขท 3 เปนจรง
True
True
รปท 7.14 แสดงผงงานของโครงสราง If….Then…ElseIf
ตวอยางท 7.4 แสดงเกรดจากคะแนนของนกศกษา
การแสดงเกรดของนกศกษาโดยคดจากคะแนนจะเปนตวอยางทเหนภาพงายทสด นนคอจะมเงอนไขใหตรวจสอบหลายเงอนไขโดยมหลกเกณฑดงตอไปน
ตารางท 7.6 แสดงเงอนไขของการแสดงเกรดของนกศกษา
คะแนนอยในชวง เกรด
คะแนน > 100 Error
คะแนน >= 80 A
คะแนน >= 70 B
คะแนน >= 60 C
คะแนน >= 50 D
นอยกวา 50 F
138
รปท 7.15 แสดงผงงานของโปรแกรมแสดงเกรดนกศกษา
สรางหนาจอโปรแกรมและวางคอนโทรลบนฟอรมดงน
รปท 7.16 แสดงการวางคอนโทรลของโปรแกรมแสดงเกรดนกศกษา
เรมตน
รบ คะแนน
คะแนน > 100 “Error”
สนสด
True
False
คะแนน >= 80
คะแนน >=70
คะแนน >=60
คะแนน >=50
“A” True
“B” True
“C” True
“D” True
“F”
False
False
False
False
139
ตารางท 7.7 แสดงคอนโทรลและคณสมบตของคอนโทรลของโปรแกรมแสดงเกรดนกศกษา
คอนโทรล คณสมบต คาทกาหนด
TextBox Name txtScore
Button Name btnDisplay
Text แสดง
Label
Name lblGrade
AutoSize False
BackColor ActiveCaptionText (ดา)
ForeColor ButtonHighlight (ขาว)
การทางานของโปรแกรมจะทาการคานวณและแสดงคาอาหารเมอมการคลกทปมแสดง ดงนนจะเขยนคาสงของโปรแกรมทคอนโทรลตวน (btnDisplay) และเขยนคาสงดงน
Private Sub btnDisplay_Click(sender As Object, e As EventArgs) Handles _ btnDisplay.Click
Dim vScore As Byte
vScore = txtScore.Text
If vScore > 100 Then
lblGrade.Text = "Error"
ElseIf vScore >= 80 Then
lblGrade.Text = "A"
ElseIf vScore >= 70 Then
lblGrade.Text = "B"
ElseIf vScore >= 60 Then
lblGrade.Text = "C"
ElseIf vScore >= 50 Then
lblGrade.Text = "D"
Else
lblGrade.Text = "F"
End If
End Sub
140
เมอเขยนคาสงเสรจแลวใหรนโปรแกรมและลองปอนคะแนน TextBox จากนนใหคลกทปม แสดง โปรแกรมจะแสดงผลลพธออกมาท Label
รปท 7.17 แสดงการทางานของโปรแกรมแสดงเกรดของนกศกษา
7.6 การใชงานเชคบอกซ (Check Box)
เชคบอกซเปนคอนโทรลทใชสาหรบเปนตวเลอกไดสองทางเลอกคอเชค (เมอเครองหมายขดถก)
หรอไมเชค (ไมมเครองหมายขดถก) เชคบอกซจะเปนกลมของตวเลอกโดยใหผใชคลกเลอกซงผใชสามารถเลอกไดมากกวา 1 ตวเลอก
141
รปท 7.18 แสดงคอนโทรล Check Box
คณสมบต (Properties) ทสาคญของเชคบอกซไดแก
ตารางท 7.8 แสดงคณสมบต (Properties) ทสาคญของเชคบอกซไดแก
คณสมบต คาอธบาย
Text ใชกาหนดหรอเขาถงขอความบนเชคบอกซ (สามารถกาหนดคยลดไดโดยใชเครองหมาย & นาหนาตวอกษรทตองการเชนกน)
TextAlign กาหนดตาแหนงของขอความทตองการ
Checked คาของเชคบอกซ จะมคา True (มเครองหมายขดถก) หรอ False (ไมมเครองหมายขดถก)
CheckState สถานะของการเชค จะมคาChecked (มความหมายเดยวกบ Checked = True) หรอ UnChecked (มความหมายเดยวกบ Checked = False) หรอ Indeterminate
CheckAlign กาหนดตาแหนงเชคทตองการ(มตาแหนงเหมอนกบตาแหนงในพรอพเพอรต TextAlign)
AutoImage กาหนดใหคาดฟอลตของเชคบอกซมการเชคหรอไม (True หรอ False)
Image กาหนดรปทตองการ
ImageAlign กาหนดตาแหนงรปทตองการ(มตวเลอกเหมอนกบในพรอพเพอรต TextAlign)
CheckBox
142
เหตการณ (Event) ทสาคญของ radio Button คอ
ตารางท 7.9 แสดงเหตการณทสาคญของ CheckBox
เหตการณ คาอธบาย
Click จะเกดขนเมอคลกเมาท Check Box (หรอกด Alt + ตวอกษรคยลด)
ตวอยางท 7.5 ตวอยางการใชงาน CheckBox โปรแกรมรานขายบะหม
ในตวอยางทจะเปนการประยกตใชงาน CheckBox โดยจะสรางเปนโปรแกรมรานขายบะหมใหผใชคลกเลอกรายการวาจะเลอกบะหมประเภทใดและโปรแกรมจะแสดงจานวนเงนเมอคลกปม แสดงราคา
สรางหนาจอโปรแกรมและวางคอนโทรลดงน
รปท 7.19 แสดงการวางคอนโทรลของโปรแกรมรานขายบะหม
ตารางท 7.10 แสดงคอนโทรลและคณสมบตของคอนโทรลของโปรแกรมรานขายบะหม
คอนโทรล คณสมบต คาทกาหนด
CheckBox Name Chk1
Text บะหมหมแดง ฿45
CheckBox Name Chk2
Text บะหมเปด ฿60
CheckBox Name Chk3
Text บะหมตมยา ฿45
CheckBox Name Chk4
Text บะหมไก ฿35
143
Button Name btnDisplay
Text แสดงราคา
Label
Name lblPrice
AutoSize False
BackColor ActiveCaptionText (ดา)
ForeColor ButtonHighlight (ขาว)
การทางานของโปรแกรมจะทาการคานวณและแสดงคาอาหารเมอมการคลกทปมแสดง ดงนนจะเขยนคาสงของโปรแกรมทคอนโทรลตวน (btnDisplay) และเขยนคาสงดงน
Private Sub btnDisplay_Click(sender As Object, e As EventArgs) Handles _ btnDisplay.Click
Const nPig As Integer = 45
Const nDuck As Integer = 60
Const nTomyum As Integer = 45
Const nChick As Integer = 35
Dim Price As Integer
If chk1.Checked = True Then
txtDetail.Text += vbCrLf & chk1.Text
Price += nPig
End If
If chk2.Checked = True Then
txtDetail.Text += vbCrLf & chk2.Text
Price += nDuck
End If
If chk3.Checked = True Then
txtDetail.Text += vbCrLf & chk3.Text
Price += nTomyum
End If
144
If chk4.Checked = True Then
txtDetail.Text += vbCrLf & chk4.Text
Price += nChick
End If
lblPrice.Text = Price
End Sub
เมอเขยนคาสงโปรแกรมเสรจแลวใหทดลองรนโปรแกรม โดยการคลกทตวเลอกของ CheckBox แลวคลกปมแสดงราคา ผลลพธจะแสดงท Label
รปท 7.20 แสดงผลลพธของโปรแกรมรานขายบะหม
7.7 การใชงานเรดโอบททน (Radio Button)
เรดโอ บททนเปนคอนโทรลทมไวใหผใชเลอกเชนเดยวกบ CheckBox แตทแตกตางกนคอ Radio
Button สามารถเลอกไดเพยงตวเลอกเดยว (CheckBox สามารถเลอกไดหลายตวเลอก)
ตารางท 7.11 แสดงคณสมบต (Properties) ทสาคญของ Radio Button ทนไดแก
พรอพเพอรต คาอธบาย
Text ใชกาหนดหรอเขาถงขอความบนเรดโอบททน(สามารถกาหนดคยลดไดโดยใชเครองหมาย&
นาหนาตวอกษรทตองการ)
Text Align กาหนดตาแหนงของขอความทตองการ
Checked สถานะของเรดโอบททนวาถกเลอกหรอไมโดยจะมคา True (ถกเลอก)หรอ False (ไมถกเลอก)
145
ตารางท 7.12 แสดงเหตการณ (Event) ทสาคญของ Radio Button
พรอพเพอรต คาอธบาย
Click จะเกดขนเมอคลกเมาทเรดโอบททน(หรอกด Alt + ตวอกษรคยลด)
ตวอยางท 7.6 ตวอยางการใชงาน Radio Button โปแกรมเลอกสเสอ
ในตวอยางทจะเปนการประยกตใชงาน Radio Button โดยจะสรางเปนโปรแกรมใหมตวเลอกสเสอใหผใชคลกเลอกรายการวาจะเลอกเสอสใดและโปรแกรมจะแสดงสเสอทเลอกท Label
สรางหนาจอโปรแกรมและวางคอนโทรลดงน
รปท 7.21 แสดงการวางคอนโทรลของโปรแกรมเลอกสเสอ
ตารางท 7.13 แสดงคอนโทรลและคณสมบตของคอนโทรลของโปรแกรมเลอกสเสอ
คอนโทรล คณสมบต คาทกาหนด
Radio Button Name rdoWhite
Text ขาว
Radio Button Name rdoBlack
Text ดา
Radio Button Name rdoBlue
Text นาเงน
Label
Name Lblcolor
AutoSize False
BackColor ButtonHighlight (ขาว)
BorderStyle FixedSingle
146
การทางานของโปรแกรมจะทาแสดงสเสอทเลอกเมอมการคลกท Radio Button แตละตว ดงนนจะเขยนคาสงของโปรแกรมท Radio Button ดงน
1. ดบเบลคลกท rdoWhite (ขาว) ทเหตการณ CheckedChanged แลวเขยนคาสง
Private Sub rdoWhite_CheckedChanged(sender As Object, e As EventArgs) Handles _
rdoWhite.CheckedChanged
lblColor.Text = rdoWhite.Text
End Sub
2. ดบเบลคลกท rdoBlack (ดา) ทเหตการณ CheckedChanged แลวเขยนคาสง
Private Sub rdoBlack_CheckedChanged(sender As Object, e As EventArgs) Handles _
rdoBlack.CheckedChanged
lblColor.Text = rdoBlack.Text
End Sub
3. ดบเบลคลกท rdoBlue (ดา) ทเหตการณ CheckedChanged แลวเขยนคาสง
Private Sub rdoBlue_CheckedChanged(sender As Object, e As EventArgs) Handles _
rdoBlue.CheckedChanged
lblColor.Text = rdoBlue.Text
End Sub
เมอเขยนคาสงโปรแกรมเสรจแลวใหทดลองรนโปรแกรม โดยการคลกทตวเลอกของ Radio Button ผลลพธจะแสดงท Label
147
รปท 7.22 แสดงผลลพธของโปรแกรมเลอกสเสอ
7.8 การใชงานกรปบอกซ (Group Box)
กรปบอกซใชสาหรบจดกลมของคอนโทรลใหเปนระเบยบและยงสามารถแบงแยก Radio Button
ทนออกเปนกลมๆเพอใหแตละกลมเปนอสระจากกนทาใหสามารถคลกเลอก Radio Button ไดมากกวา 1
ตว (ตองอยคนละ Group Box)
รปท 7.23 แสดงคอนโทรล Group Box
Group Box
148
ตารางท 7.14 แสดงคณสมบต (Properties) ทสาคญของกรปบอกซไดแก
พรอพเพอรต คาอธบาย
Text ใชกาหนดหรอเขาถงขอความบนกรปบอกซ(สามารถกาหนดคยลดไดโดยใชเครองหมาย&
นาหนาตวอกษรทตองการ)
RightToLeft กาหนดตาแหนงของขอความบนกรปบอกซ จะมคาคอ No (แสดงขอความชดซายของกรปบอกซ), Yes (แสดงขอความชดขวา), หรอ Inherit (มลกษณะเหมอนฟอรม)
BackgroundImage กาหนดรป Background ของกรปบอกซ
รปท 7.24 แสดงการใชกรปบอกซจดกลมคอนโทรล
สรป
โครงสรางการเขยนโปรแกรมแบบเลอกทาจะทาการตรวจสอบเงอนไขของโปรแกรมกอนทจะดาเนนการคาสงใด
ตวดาเนนการเปรยบเทยบม 2 ประเภทคอ ตวดาเนนการเพอการเปรยบเทยบและตวดาเนนการทางตรรกศาสตร
โครงสรางคาสง if…Then ใชสาหรบตรวจสอบเงอนไขหนง โดยถาเงอนไขนเปนจรงจะทาชดคาสงหนง แตถาเปนเทจจะไมทาคาสงใด
โครงสรางคาสง if…Then…Else ใชสาหรบตรวจสอบเงอนไข โดยถาเงอนไขเปนจรงจะทาชดคาสงหนง แตถาเปนเทจจะทาอกชดคาสงหนง
โครงสรางคาสง if…Then…Else ใชสาหรบตรวจสอบเงอนไขมากกวา 2 เงอนไข
149
Check Box เปนคอนโทรลทใชสาหรบเปนตวเลอกไดสองทางเลอกคอเชค (เมอเครองหมายขดถก)
หรอไมเชค (ไมมเครองหมายขดถก) เชคบอกซจะเปนกลมของตวเลอกโดยใหผใชคลกเลอกซงผใชสามารถเลอกไดมากกวา 1 ตวเลอก
Radio Button เปนคอนโทรลทมไวใหผใชเลอกเชนเดยวกบ CheckBox แตทแตกตางกนคอ Radio
Button สามารถเลอกไดเพยงตวเลอกเดยว (CheckBox สามารถเลอกไดหลายตวเลอก)
Group Box ใชสาหรบจดกลมของคอนโทรลใหเปนระเบยบและยงสามารถแบงแยก Radio Button
ทนออกเปนกลมๆเพอใหแตละกลมเปนอสระจากกน
แบบฝกหด
1. โครงสรางการเขยนโปรแกรมแบบเลอกทามการทางานอยางไร
2. กาหนดให x = 5 , y = 7, z = 5 ใหเขยนผลของการใชตวดาเนนการวาผลลพธเปนจรงหรอเทจ
เงอนไข ผลลพธ
x > y
x >=y
y <> z
z = x
<>
x > y and y >z
x < y or x > z
3. จากโจทยโปรแกรม คานวณคาผอนรถตอเดอนหลงจากหกเงนดาวน 30% ของราคารถ โดยมเงอนไขคอ 1. เลอกจานวนเดอนในการผอนได (48, 60, 72)
2. คดดอกเบยรอยละ 2.5 ตอป
ใหเขยน
3.1 ผงงานโปรแกรม
3.2 ออกแบบหนาจอโปรแกรมและกาหนดคอนโทรล
3.3 เขยนคาสงโปรแกรม
150
เอกสารอางอง
If...Then...Else Statement (Visual Basic). Retrieved January 8, 2012, from
http://msdn.microsoft.com/en-us/library/752y8abs.aspx
Using the Check Box Control. Retrieved Febrary 14, 2012, from http://msdn.microsoft.com/en-
us/library/752y8abs.aspx
แผนบรหารการสอนประจาวชาบทท 8
หวขอเนอหาประจาบท 8.1 โครงสรางคาสง Select Case
8.2 การระบคาเปนชวงใหกบ Select Case
8.3 การใชงานคอนโทรล Combo Box
8.4 การใชงานคอนโทรล List Box
วตถประสงคเชงพฤตกรรม เมอศกษาบทนแลวนกศกษาสามารถ
1. อธบายโครงสรางคาสง Select Case ได
2. เขยนคาสงโปรแกรมดวยโครงสราง Select Case ได
3. เขยนคาสงโปรแกรมดวยโครงสราง Select Case โดยการระบชวงได
3. ประยกตใชคอนโทรล Combo Box และ List Box ได
วธการสอนและกจกรรมการเรยนการสอนประจาบท 1. บรรยายเนอหาในแตละหวขอ ยกตวอยางประกอบ สาธตวธการ
2. ผเรยนฝกปฏบต
3. ศกษาจากเอกสารประกอบการสอน
4. ผสอนสรปเนอหา
5. ผเรยนถามขอสงสย
6. ผสอนทาการซกถาม
7. ทาแบบฝกหดเพอทบทวนบทเรยน
สอการเรยนการสอน 1. เอกสารประกอบการสอนการเขยนโปรแกรมคอมพวเตอรทางธรกจเบองตน
2. ภาพเลอน (Slide)
3. โปรแกรมภาษา Visual Basic 2012
152
การวดและประเมนผล 1. สงเกตการเขาชนเรยนและความสนใจขณะบรรยาย
2. สงเกตการปฏบตของผเรยน
3. มสวนรวมในการซกถามระหวางการบรรยาย
4. การตอบคาถามขณะทผสอนบรรยาย
5. การตรวจแบบฝกหด
บทท 8 โครงสรางคาสงแบบเลอกทาดวยคาสง Select case
ในกรณทมเงอนไขจานวนมาก การใชโครงสรางคาสง If…Then…Else อาจทาใหโปรแกรมดซบซอนและยากตอการทาความเขาใจ การใชโครงสรางคาสง Select Case มาควบคมการทางานของโปรแกรมจะทาใหเขยนโปรแกรมไดสะดวกมากยงขน
8.1 โครงสรางคาสง Select Case
Select Case เปนโครงสรางคาสงทถกสรางขนเพอใชงานแทนคาสง If ในกรณทมการตรวจสอบเงอนไขหลายๆครง และเงอนไขของการเลอกทาขนอยกบคาของนพจนหนงๆเพยงนพจนเดยว รปแบบคาสง
Select Case testexpression
Case expressionlist1
statements
Case expressionlist2
Statements
…
Case Else
elsestatements
End Select
โดยท
Testexpression คอ นพจนทใชตรวจสอบหรอตวแปรทเกบคาทจะใชตรวจสอบ
Expressionlist คอ คาทอยในนพจนหรอตวแปรทเมอตรวจสอบแลวตรงกบคานจะทาคาสงใด ๆ ตามทกาหนด
เมอโปรแกรมกจะทาคาสงภายใต Case นนๆ แลวจะออกไปทาคาสงหลง End Select ตอไป แตถาคาของนพจนหรอตวแปรทใชตรวจสอบไมตรงกบกรณใดเลย โปรแกรมจะทาคาสงในสวนของ Case Else
ซงสวนนจะมหรอไมมกได
154
ตวอยางท 8.1 การใชงาน Select Case โปรแกรมประเมนเกรด
ในตวอยางนจะเปนการใช Select case ตรวจสอบนพจนหรอคาทอยในตวแปร Grade ซงเปนตวแปรทเกบเกระทผใชปอนเขามา โดยผใชจะปอนเกรด A-F แลวโปรแกรมจะตรวจสอบวาเกรดทผใชปอนเขามานนอยในระดบการประเมนใด
ใหสรางหนาจอโปรแกรมและวางคอนโทรลดงน
รปท 8.1 แสดงการวางคอนโทรลของโปรแกรมประเมนเกรด
ตารางท 8.1 แสดงคอนโทรลและคณสมบตของคอนโทรลของโปรแกรมประเมนเกรด
คอนโทรล คณสมบต คาทกาหนด
TextBox Name txtGrade
Button Name Button1
Text ประเมน
Label
Name lblGrade
AutoSize False
BorderStyle FixedSingle
การทางานของโปรแกรมจะทาการประเมนเกรดเมอมการคลกทปมประเมน ดงนนจะเขยนคาสงของโปรแกรมทคอนโทรลตวน ใหดบเบลคลกทปม (Button1) และเขยนคาสงดงน
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Dim grade As String
grade = txtGrade.Text
Select Case grade
Case "A"
lblDisplay.Text = "ดเดน"
Case "B"
lblDisplay.Text = "ด"
155
Case "C"
lblDisplay.Text = "ผาน"
Case "D"
lblDisplay.Text = "พอใช"
Case "F"
lblDisplay.Text = "ไมผาน"
Case Else
lblDisplay.Text = "ปอนเกรดไมถกตอง"
End Select
End Sub
เมอเขยนคาสงเสรจแลวใหรนโปรแกรมและลองปอนเกรด (A-F) ลงใน TextBox จากนนใหคลกทปม ประเมน โปรแกรมเปรยบเทยบคาทอยในตวแปร Grade และแสดงผลท Label
รปท 8.2 แสดงผลลพธของโปรแกรมประเมนเกรด
จากตวอยางขางตนสามารถอธบายคาสงโปรแกรมไดดงน
grade = txtGrade.Text
คาสงนจะเปนการสงคาทอยใน textbox ทชอ txtGrade มาเกบไวทตวแปร grade จากนนจะเปนการตรวจสอบคาทอยในนพจนหรอตวแปรของโปรแกรมดวยคาสง
Select Case grade
คาสง Select Case นจะเปนการตรวจสอบคาทอยในตวแปร Grade และทาการเปรยบเทยบคาในตวแปรดวยคาสง Case "A"
คาสงนหมายความวาถาคาทอยของนพจนหรอตวแปรเปน A จะใหทาคาสงทอยในบลอกของ Case นซงกคอ lblDisplay.Text = "ดเดน"
แตถาคาทอยในนพนจหรอตวแปรนไมใช A โปรแกรมกจะทาการตรวจสอบนพจนตอไป และถาไมตรงกบคาใดเลยทกาหนดไว โปรแกรมจะไปทาคาสง
156
Case Else
lblDisplay.Text = "ปอนเกรดไมถกตอง"
ซงหมายความวาไมตรงกบกรณใดเลยทกาหนดไวกจะแสดงขอความ “ปอนเกรดไมถกตอง”
ในตวอยางนถาผใชปอนเกรดเปน a โปรแกรมกจะทาคาสง Case Else ดวยเพราะในทางคอมพวเตอรแลวอกษรตว A และ a จะไมถอวาเปนคาเดยวกน ดงนนในแตละCaseสามารถระบคาทจะเปรยบเทยบกบนพจนทดสอบไดมากกวา1คาโดยใหใชเครองหมาย comma (,)คนระหวางคาเหลานน ความหมายกคอ ถาหากนพจนทดสอบมคาตรงกบคาใดคาหนงกใหทาคาสงภายในสวนของ case นนๆ ใหปรบคาสงโปรแกรมดงน
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Dim grade As String
grade = txtGrade.Text
Select Case grade
Case "A", "a"
lblDisplay.Text = "ดเดน"
Case "B", "b"
lblDisplay.Text = "ด"
Case "C", "c"
lblDisplay.Text = "ผาน"
Case "D", "d"
lblDisplay.Text = "พอใช"
Case "F", "f"
lblDisplay.Text = "ไมผาน"
Case Else
lblDisplay.Text = "ปอนเกรดไมถกตอง"
End Select
End Sub
หลงจากปรบคาสงโปรแกรมแลวใหทดสอบปอนคาทงทเปนอกษรตวเลกและตวใหญจะเหนวาผลลพธทไดจะตรงกน
157
รปท 8.3 แสดงผลลพธของโปรแกรมประเมนเกรดเมอปรบคาสงแบบท 1
รปท 8.4 แสดงผลลพธของโปรแกรมประเมนเกรดเมอปรบคาสงแบบท 2
8.2 การระบคาเปนชวงใหกบ Select Case
คาทระบหลงคาสง Case นอกจากจะเปนคาเดยวๆ หรอเปนกลมของคาทคนดวย comma แลว ยงสามารถระบคาเปนชวงไดดวย ซงทาได 2 รปแบบคอ
-ใชคาสง Is รวมกบตวดาเนนการเปรยบเทยบ เพอนาคาของนพจนทดสอบมาเปรยบเทยบกบคาทระบโดยใชตวดาเนนการนน
-ใชคาสง To เพอกาหนดชวงคาตงแตคาหนงไปจนถงอกคาหนง
ตวอยางท 8.2 การใชคาสง Case Is โปรแกรมประเมนเกรด
ในตวอยางนจะเปนตวอยางโปรแกรมตรวจสอบชวงของคะแนนทผใชปอนเขามาโดยมชวงของคะแนนดงน
ตารางท 8.2 แสดงเงอนไขของโปรแกรมประเมนเกรด
คะแนนอยในชวง ประเมน
คะแนน >= 80 ดเดน
คะแนน >= 70 ด
คะแนน >= 60 ปานกลาง
คะแนน >= 50 พอใช
ไมตรงกบชวงใดเลย ไมผาน
158
ใหสรางหนาจอโปรแกรมและวางคอนโทรลดงน
รปท 8.5 แสดงการวางคอนโทรลของโปรแกรมประเมนเกรด ดวยคาสง Case Is
ตารางท 8.3 แสดงคอนโทรลและคณสมบตของคอนโทรลของโปรแกรมประเมนเกรด ดวยคาสง Case Is
คอนโทรล คณสมบต คาทกาหนด
TextBox Name txtScore
Button Name Button1
Text ประเมน
Label
Name lblDisplay
AutoSize False
BorderStyle FixedSingle
การทางานของโปรแกรมจะทาการประเมนคะแนนเมอมการคลกทปมประเมน ดงนนจะเขยนคาสงของโปรแกรมทคอนโทรลตวน ใหดบเบลคลกทปม (Button1) และเขยนคาสงดงน
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Dim score As Integer
score = txtGrade.Text
Select Case score
Case Is >= 80
lblDisplay.Text = "ดเดน"
Case Is >= 70
lblDisplay.Text = "ด"
Case Is >= 60
lblDisplay.Text = "ปานกลาง"
Case Is >= 50
lblDisplay.Text = "พอใช"
159
Case Else
lblDisplay.Text = "ไมผาน"
End Select
End Sub
เมอเขยนคาสงเสรจแลวใหรนโปรแกรมและลองคะแนนลงใน TextBox จากนนใหคลกทปม ประเมน โปรแกรมเปรยบเทยบคาทอยในตวแปร Score และแสดงผลท Label
รปท 8.6 แสดงผลลพธของโปรแกรมประเมนเกรดดวยคาสง Case IS
จากตวอยางขางตนสามารถอธบายคาสงโปรแกรมไดดงน
score = txtScore.Text
คาสงนจะเปนการสงคาทอยใน textbox ทชอ txtScore มาเกบไวทตวแปร Score จากนนจะเปนการตรวจสอบคาทอยในนพจนหรอตวแปรของโปรแกรมดวยคาสง
Select Case Score
คาสง Select Case นจะเปนการตรวจสอบคาทอยในตวแปร Score และทาการเปรยบเทยบคาในตวแปรดวยคาสง Case Is >= 80
คาสงนหมายความวาถาคาทอยของนพจนหรอตวแปรเปนมคามากกวาหรอเทากบ 80 จะใหทาคาสงทอยในบลอกของ Case นซงกคอ
lblDisplay.Text = "ดเดน"
แตถาคาทอยในนพนจหรอตวแปรนไมมากกวาหรอเทากบ Case แรกโปรแกรมกจะทาการตรวจสอบนพจนตอไป และถาไมตรงกบคาใดเลยทกาหนดไว โปรแกรมจะไปทาคาสง
Case Else
lblDisplay.Text = "ไมผาน"
ซงหมายความวาไมตรงกบกรณใดเลยทกาหนดไวกจะแสดงขอความ “ไมผาน”
160
ตวอยางท 8.3 การใชคาสง To เพอตรวจสอบชวงคา โปรแกรมคานวณอตราภาษเงนได
ในตวอยางนจะเปนตวอยางโปรแกรมคานวณอตราภาษเงนไดบคคลธรรมดา โดยจะคานวณอตราภาษทตองเสยจากชวงของรายไดโดยมชวงของรายไดดงน
อตราภาษเงนไดบคคลธรรมดา
รายไดสทธตอป อตราภาษ
0-150,000 ยกเวน
150,001-300,000 5%
300,001-500,000 10%
500,001-750,000 15%
750,001-1,000,000 20%
1,000,001-2,000,000 25%
2,000,001-4,000,000 30%
มากกวา 4,000,001 35%
ใหสรางหนาจอโปรแกรมและวางคอนโทรลดงน
รปท 8.7 แสดงการวางคอนโทรลของโปรแกรมคานวณภาษเงนไดบคคลธรรมดา
ตารางท 8.4 แสดงคอนโทรลและคณสมบตของคอนโทรลของโปรแกรมคานวณภาษเงนไดบคคลธรรมดา
คอนโทรล คณสมบต คาทกาหนด
TextBox Name TxtTot al
Button Name btnCalcTax
Text คานวณภาษ
Label
Name lblTax
Text 0.00
AutoSize False
161
BackColor ActiveCaptionText (ดา)
ForeColor ButtonHighlight (ขาว)
การทางานของโปรแกรมจะทาการประเมนคะแนนเมอมการคลกทปมประเมน ดงนนจะเขยนคาสงของโปรแกรมทคอนโทรลตวน ใหดบเบลคลกทปม (Button1) และเขยนคาสงดงน
Public Class Form1
Private Sub btnCalcTax_Click(sender As Object, e As EventArgs) Handles _ btnCalcTax.Click
Dim vTotal As Single
Dim vTax As Single
vTotal = txtTotal.Text
Select Case vTotal
Case 0 To 150000
vTax = 0
Case 150001 To 300000
vTax = vTotal * 0.05
Case 300001 To 500000
vTax = vTotal * 0.1
Case 500001 To 750000
vTax = vTotal * 0.15
Case 750001 To 1000000
vTax = vTotal * 0.2
Case 1000001 To 2000000
vTax = vTotal * 0.25
Case 2000001 To 4000000
vTax = vTotal * 0.3
Case Else
vTax = vTotal * 0.35
End Select
lblTax.Text = Format(vTax, "#,###.00")
End Sub
End Class
162
เมอเขยนคาสงเสรจแลวใหรนโปรแกรมและลองคะแนนลงใน TextBox จากนนใหคลกทปม ประเมน โปรแกรมเปรยบเทยบคาทอยในตวแปร Score และแสดงผลท Label
รปท 8.8 แสดงผลลพธโปรแกรมคานวณภาษเงนไดบคคลธรรมดา
จากตวอยางขางตนสามารถอธบายคาสงโปรแกรมไดดงน
vTotal = txtTotal.Text
คาสงนจะเปนการสงคาทอยใน textbox ทชอ txtTotal มาเกบไวทตวแปร vTotal จากนนจะเปนการตรวจสอบคาทอยในนพจนหรอตวแปรของโปรแกรมดวยคาสง
Select Case vTotal
คาสง Select Case นจะเปนการตรวจสอบคาทอยในตวแปร vTotal และทาการเปรยบเทยบคาในตวแปรดวยคาสง Case 0 To 150000
คาสงนหมายความวาถาคาทอยของนพจนหรอตวแปรเปนมคาอยในชวง 0 – 150,000 จะใหทาคาสงทอยในบลอกของ Case นซงกคอ vTax = 0 ตวแปร vtax เปนตวแปรทเกบการคานวณภาษจากคาสงนคอไมมภาษทตองเสย แตถาคาทอยในนพนจหรอตวแปรนไมไดอยในชวงของ Case แรกโปรแกรมกจะทาการตรวจสอบนพจนตอไปคอ Case 150001 To 300000 ถาคาทตรวจสอบอยในชวงนโปรแกรมกจะทาคาสง vTax = vTotal * 0.05
คาสงนเปนคาสงทใชคานวณภาษโดยจะคานวณจากรายได * 5% (0.05) แตถาคาทอยในนพนจหรอตวแปรนไมไดอยใน Case นโปรแกรมกจะทาการตรวจสอบนพจนตอไปเรอย ๆ และถาไมตรงกบคาใดเลยทกาหนดไว โปรแกรมจะไปทาคาสง
Case Else
vTax = vTotal * 0.35
ซงหมายความวาไมตรงกบกรณใดในทนหมายถงเงนเดอนเกน 4,000,000 และเมอโปรแกรมทาการคานวณภาษแลวจะแสดงภาษทตองเสยดวยคาสง
lblTax.Text = Format(vTax, "#,###.00")
163
8.3 การใชงานคอมโบบอกซ (ComboBox)
คอมโบบอกซเปนคอนโทรลทใชแสดงรายการแบบ drop-down ผใชจะตองคลกปมลกศรเพอดรายการอน ๆ แลวคลกเลอกรายการทมอยในคอมโบบอกซโดยปกตแลวจะนาคอมโบบอกซมาใชแสดงใหผใชรวาสามารถเลอกไดจากรายการทเตรยมไวใหเทานน แตอยางไรกตามผใชสามารถปอนคาอน ๆ ทไมมอยในตวเลอกไดแตไมเปนทนยมทา
รปท 8.9 แสดงตวอยาง ComBoBox
การเพมรายการในคอมโบบอกซสามารถทาได 2 วธ คอโดยการเพมรายการท properties Windows
และการเขยนคาสง
8.3.1 การเพมรายการในคอมโบบอกซท properties Windows
1. คลกเลอก ComboBox แลวคลก ทคณสมบต Items
รปท 8.10 แสดงขนตอนท 1 ของการเพมรายการในคอมโบบอกซ
164
2. จะปรากฏหนาตางใหเพมรายการใหพมพรายการทตองการเพมในหนาตางนโดยท 1
รายการตอ 1 บรรทดเสรจแลวคลกปม OK รายการทอยใน ComboBox นนจะเรยกวาไอเทม (Item)
รปท 8.11 แสดงขนตอนท 2 ของการเพมรายการในคอมโบบอกซ
3. ทดลองรนโปรแกรมแลวคลกทลกศรของ ComboBox จะพบรายการทเพมไวใน ComboBox
รปท 8.12 แสดงผลลพธของการเพมรายการในคอมโบบอกซ
8.3.2 การเพมรายการใน ComboBox ดวยวธการเขยนคาสง
การเพมรายการใน ComboBox อกวธทผเขยนนยมจะทาเสมอเมอมการใช ComboBox ในโปรแกรม เนองจากเมอตองการกลบมาศกษาคาสงของโปรแกรมจะมองเหนไดทนทวาใน ComboBox แตละตวทใชในโปรแกรมมรายการอะไรอยบางทาใหเวลาเขยนคาสงควบคมไมตองเปดหนาจอสลบไปมาเพอดรายการใน ComboBox การเปดรายการใน ComboBox ในชวง Run Time น สวนใหญจะเขยนทเหตการณ Form_Load ของฟอรม ซงหมายถงเมอฟอรมถกสงใหทางานจะแสดงรายการใน ComboBox ขนมาเลย
รปแบบคาสง
ComboBoxName.Items.Add (items)
โดยท
ComboBoxName คอ ชอของ ComboBox
Items คอ รายการทตองการใหแสดงใน ComboBox ถาตองการแสดงเปนขอความใหใชสญลกษณ “ ” ครอบขอความนน
165
ตวอยางท 8.4 การเพมรายการในคอมโบบอกซดวยวธการเขยนคาสง
ใหดบเบลคลกทพนทวางของฟอรมเพอเขาไปทเหตการณ Load ของฟอรม แลวพมพคาสงดงน
Public Class Form1
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
ComboBox1.Items.Add("ปรญญาตร")
ComboBox1.Items.Add("ปรญญาโท")
ComboBox1.Items.Add("ปรญญาเอก")
End Sub
End Class
ทดลองรนโปรแกรมแลวคลกทลกศรของ ComboBox จะพบรายการทเพมไวใน ComboBox เชนเดยวกบตวอยางท 8.3
จากคาสงขางตนสามารถอธบายไดวาพรอพเพอร Item จะใหคาเปนคอลเลคชนทบรรจไอเทมทงหมดของ ComboBoxไว คาสง Add ทเรยกใชตอจากพรอพเพอรต Items นนกคอเมธอดของคอลเลคชนทใชเพมไอเทมเขาไปในคอลเลคชน
คาวาคอลเลคชนนน หมายถง “กลม” ของอะไรสกอยาง สาหรบ .NET Framework แลว คอลเลคชนคอออบเจคทเปนตวแทนของ “กลมของออบเจค” หรอคดงายๆวา คอลเลคชนกคอทบรรจออบเจคอนๆเอาไวอกท คอนโทรลจานวนมากใชคอลเลคชนเพอแสดงหรอเปดเผย (expose) ออบเจคยอยภายในตวมนออกมา ซง ComboBox คอหนงในนน โดยพรอพเพอรต Items ของ ComboBox จะใหคาเปนคอลเลคชนทบรรจไอเทมทงหมดของ ComboBox ไว (พรอมเลศ หลอวจตร, 2554)
8.3.3 การเขาถงคาของรายการในคอมโบบอกซ
Item ทอยในคอนเลคชนของคอมโบบอกซจะถกจดเกบเปนแบบอารเรยการเขาถง Item แตละตวจะตองอาศยอนเดกซ (index) โดยท Item แรกจะมคาอนเดกซเปน 0 และตวถดไปเปน 1, 2, ... ตามลาดบ
รปแบบคาสง
ComboBoxName.SelectedIndex
ตวอยางท 8.5 การเขาถงรายการในคอมโบบอกซ
ในตวอยางนจะนาโปรแกรมทสรางไวจากตวอยางท 8.4 มาพฒนาตอเมอมการคลกเลอกรายการในคอมโบบอกซโปรแกรมจะแสดง MessageBox แสดงอนเดกซของรายการทเลอก ใหดบเบลคลกทคอนโทรลคอมโบบอกซบนฟอรมทเหตการณ SelectedIndexChanged g เขยนคาสงดงน
166
Private Sub ComboBox1_SelectedIndexChanged(sender As Object, e As EventArgs) Handles _
ComboBox1.SelectedIndexChanged
MessageBox.Show(ComboBox1.SelectedIndex)
End Sub
ชดคาสงทอยในเหตการณ SelectedIndexChanged เกดขนเมอคาของพรอพเพอรต SelectedIndex เปลยนไปหรอมการคลกเลอกรายการในคอมโบบอกซ
คาสง SelectedIndex ทอยหลงชอของคอมโบบอกซจะ ใหคา Index ของไอเทมทถกเลอก (Index ของไอเทมแรกจะเปน 0 และสาหรบไอเทมถดไปจะเปน 1, 2, 3, … ตามลาดบ) ถาไมมไอเทมใดถกเลอกเลยจะใหคาเปน -1
ทดลองรนโปรแกรมแลวคลกเลอกรายการในคอมโบบอกซ
1.คลกเลอกรายการในคอมโบบอกซ
2. ผลลพธเมอเลอกรายการท 1
3. ผลลพธเมอเลอกรายการท 2
รปท 8.13 แสดงผลลพธการเขาถงรายการใน Combo Box
8.3.4 การแสดงคารายการทถกเลอก
ในกรณทตองการใหโปรแกรมแสดงคารายการทถกเลอกในลกษณะขอความเมอมการเลอกรายการในคอมโบบอกซสามารถเขยนคาสงได 2 แบบคอ
ตวอยางคาสง
MessageBox.Show (ComboBox1.Text)
จากตวอยางคาสงขางตนเปนการใชงานคณสมบต Text ของคอมโบบอกซ คาสงนให Message Box แสดงขอความทปรากฏอยในคอมโบบอกซ
ตวอยางคาสง
MessageBox.Show(ComboBox1.SelectedItem)
จากตวอยางคาสงแบบท 2 ใชคาสง SelectedItem หาคาวาไอเทมทถกเลอกเปนขอความอะไรและแสดงใน Message Box จากตวอยางทง 2 แบบนผลการทางานของโปรแกรมจะเหมอนกนดงรป
167
รปท 8.14 แสดงผลลพธของคาสงแสดงรายการทถกเลอกของ Combo Box
8.3.5 ตวอยางคาสงอน ๆ ของคอมโบบอกซ
การหาจานวนในคอมโบบอกซดวยคาสง Count
ตวอยางคาสง
Dim x As Integer
x = ComboBox1.Items.Count
Label1.Text = x
จากตวอยางการใชคาสง Count เพอนบจานวนดานบนเปนการนบจานวนรายการทอยในคอลเลคชนของคอมโบบอกซเมอนบแลวนาคามาเกบไวทตวแปร x แลวใหแสดงคาในตวแปร x ท Label1
การลบรายการในคอมโบบอกซดวยคาสง Remove คาสงนเปนการลบรายการโดยระบขอความทมอยในคอมโบบอกซ
ตวอยางคาสง
ComboBox1.Items.Remove("ปรญญาตร")
จากตวอยางการใชคาสง remove เปนการลบรายการทมคาวา ปรญญาตร ออกจากคอมโบบอกซ ซงคอมโบบอกซตองมรายการนอย
การลบรายการโดยระบอนเดกซของขอความทตองการลบดวยคาสง RemoveAt
ตวอยางคาสง
ComboBox1.Items.RemoveAt(0)
จากตวอยางการใชคาสง RemoveAt เปนการลบรายการตวแรกทอยในคอมโบบอกซโดยสามารถระบอนเดกซทตองการลบดวยการใสตวเลขอนเดกซของรายการในวงเลบ
168
การลบรายการทงหมดดวยคาสง Clear
ตวอยางคาสง
ComboBox1.Clear
จากตวอยางการใชคาสง Clear ทกรายการทอยในคอมโบบอกซจะถกลบทงหมด
8.4 การใชงานคอนโทรลลสตบอกซ (ListBox)
ลสตบอกซเปนคอนโทรลทใชแสดงกลมของตวเลอกหรอไอเทม (Item) เพอใหผใชเลอกไอเทมทตองการแบบเดยวกบคอมโบบอกซ สงทแตกตางกนคอลสตบอกซจะแสดงรายการใหหมดทงหมดโดยไมตองคลกลกศรแบบคอมโบบอกซ ถารายการทอยในลสตบอกซมมากจนไมสามารถแสดงไดครบกจะมสโกรลบารเพอใหเลอนดรายการได
รปท 8.15 แสดงตวอยางลสตบอกซ
การเพมรายการในลสตบอกซสามารถทาได 2 วธเชนเดยวกบคอมโบบอกซ คอโดยการเพมรายการท properties Windows และการเขยนคาสง
8.4.1 การเพมรายการในลสตบอกซ ท properties Windows
1. คลกเลอกลสตบอกซแลวคลก ทคณสมบต Items
2. จะปรากฏหนาตางใหเพมรายการใหพมพรายการทตองการเพมในหนาตางนโดยท 1 รายการตอ 1 บรรทดเสรจแลวคลกปม OK รายการทอยในลสตบอกซนนจะเรยกวาไอเทม (Item)
169
รปท 8.16 แสดงขนตอนการเพมรายการในลสตบอกซทางหนาตางคณสมบต
8.4.2 การเพมรายการใน ListBox ดวยวธการเขยนคาสง
การเพมรายการใน ListBox อกวธทผเขยนนยมจะทาเสมอเมอมการใช ListBox ในโปรแกรม เนองจากเมอตองการกลบมาศกษาคาสงของโปรแกรมจะมองเหนไดทนทวาใน ListBox แตละตวทใชในโปรแกรมมรายการอะไรอยบางทาใหเวลาเขยนคาสงควบคมไมตองเปดหนาจอสลบไปมาเพอดรายการใน ListBox การเปดรายการใน ListBox ในชวง Run Time น สวนใหญจะเขยนทเหตการณ Form_Load ของฟอรม ซงหมายถงเมอฟอรมถกสงใหทางานจะแสดงรายการใน ListBox ขนมาเลย
รปแบบคาสง
ListBoxName.Items.Add (items)
โดยท
ListBoxName คอ ชอของ ListBox
Items คอ รายการทตองการใหแสดงใน ListBox ถาตองการแสดงเปนขอความใหใช สญลกษณ “ ” ครอบขอความนน
ตวอยางท 8.6 การเพมรายการใน ListBox ดวยวธการเขยนคาสง
ใหดบเบลคลกทพนทวางของฟอรมเพอเขาไปทเหตการณ Load ของฟอรม แลวพมพคาสงดงน
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
ListBox1.Items.Add("อาทตย")
ListBox1.Items.Add("จนทร")
ListBox1.Items.Add("องคาร")
ListBox1.Items.Add("พธ")
ListBox1.Items.Add("พฤหสบด")
170
ListBox1.Items.Add("ศกร")
ListBox1.Items.Add("เสาร")
End Sub
ทดลองรนโปรแกรมแลวคลกทลกศรของ ListBox จะพบรายการทเพมไวใน ListBox เชนเดยวกบตวอยางท 8.5
8.4.3 การเขาถงคาของรายการใน
Item ทอยในคอนเลคชนของลสตบอกซจะถกจดเกบเปนแบบอารเรยการเขาถง Item แตละตวจะตองอาศยอนเดกซ (index) โดยท Item แรกจะมคาอนเดกซเปน 0 และตวถดไปเปน 1, 2, ... ตามลาดบ
รปแบบคาสง
ListBoxName.SelectedIndex
ตวอยางท 8.7 การเขาถงรายการในลสตบอกซ
ในตวอยางนจะนาโปรแกรมทสรางไวจากตวอยางท 8.6 มาพฒนาตอเมอมการคลกเลอกรายการในลสตบอกซโปรแกรมจะแสดง MessageBox แสดงอนเดกซของรายการทเลอก ใหดบเบลคลกทคอนโทรลลสตบอกซบนฟอรมทเหตการณ SelectedIndexChanged g เขยนคาสงดงน
Private Sub ListBox1_SelectedIndexChanged(sender As Object, e As EventArgs) Handles
ListBox1.SelectedIndexChanged
MessageBox.Show(ListBox1.SelectedIndex)
End Sub
ชดคาสงทอยในเหตการณ SelectedIndexChanged เกดขนเมอคาของพรอพเพอรต SelectedIndex เปลยนไปหรอมการคลกเลอกรายการในลสตบอกซ
คาสง SelectedIndex ทอยหลงชอของลสตบอกซจะ ใหคา Index ของไอเทมทถกเลอก (Index ของไอเทมแรกจะเปน 0 และสาหรบไอเทมถดไปจะเปน 1, 2, 3, … ตามลาดบ) ถาไมมไอเทมใดถกเลอกเลยจะใหคาเปน -1
ทดลองรนโปรแกรมแลวคลกเลอกรายการในลสตบอกซ
171
1.คลกเลอกรายการในลสตบอกซ
2. ผลลพธเมอเลอกรายการท 1
3. ผลลพธเมอเลอกรายการท 2
รปท 8.17 แสดงการเขาถงรายการของลสตบอกซ
8.4.4 การแสดงคารายการทถกเลอก
ในกรณทตองการใหโปรแกรมแสดงคารายการทถกเลอกในลกษณะขอความเมอมการเลอกรายการในลสตบอกซสามารถเขยนคาสงได 2 แบบคอ
ตวอยางคาสง
MessageBox.Show (ListBox1.Text)
จากตวอยางคาสงขางตนเปนการใชงานคณสมบต Text ของลสตบอกซ คาสงนให Message Box แสดงขอความทปรากฏอยในลสตบอกซ
ตวอยางคาสง
MessageBox.Show(ListBox1.SelectedItem)
จากตวอยางคาสงแบบท 2 ใชคาสง SelectedItem หาคาวาไอเทมทถกเลอกเปนขอความอะไรและแสดงใน Message Box จากตวอยางทง 2 แบบนผลการทางานของโปรแกรมจะเหมอนกนดงรป
รปท 8.18 แสดงผลลพธของคาสงทง 2 แบบ
8.4.5 ตวอยางคาสงอน ๆ ของลสตบอกซ
172
การหาจานวนในลสตบอกซดวยคาสง Count
ตวอยางคาสง
Dim x As Integer
x = ListBox1.Items.Count
Label1.Text = x
จากตวอยางการใชคาสง Count เพอนบจานวนดานบนเปนการนบจานวนรายการทอยในคอลเลคชนของลสตบอกซเมอนบแลวนาคามาเกบไวทตวแปร x แลวใหแสดงคาในตวแปร x ท Label1
การลบรายการในลสตบอกซดวยคาสง Remove
คาสงนเปนการลบรายการโดยระบขอความทมอยในลสตบอกซ
ตวอยางคาสง
ListBox1.Items.Remove("ปรญญาตร")
จากตวอยางการใชคาสง remove เปนการลบรายการทมคาวา ปรญญาตร ออกจากลสตบอกซ ซงลสตบอกซตองมรายการนอย
การลบรายการโดยระบอนเดกซของขอความทตองการลบดวยคาสง RemoveAt
ตวอยางคาสง
ListBox1.Items.RemoveAt(0)
จากตวอยางการใชคาสง RemoveAt เปนการลบรายการตวแรกทอยในลสตบอกซโดยสามารถระบอนเดกซทตองการลบดวยการใสตวเลขอนเดกซของรายการในวงเลบ
การลบรายการทงหมดดวยคาสง Clear
ตวอยางคาสง
ListBox1.Clear
จากตวอยางการใชคาสง Clear ทกรายการทอยในลสตบอกซจะถกลบทงหมด
173
ตวอยางท 8.8 โปรแกรมขายสนคาแบบขายสงและขายปลก
ในตวอยางนจะเปนการประยกตใชคอมโบบอกซและลสตบอกซ ใหสรางโปรแกรมขายสนคาโดยมประเภทการขายแบบขายปลกและขายสง ประเภทการขายแบบขายปลกคดราคาสนคาชนละ 300 บาท สวนขายสงคดชนละ 250 บาท ใหสรางหนาจอโปรแกรมดงน
รปท 8.19 แสดงการวางคอนโทรลของโปรแกรมขายสนคา
ตารางท 8.5 แสดงคณคอนโทรลและคณสมบตของคอนโทรล
คอนโทรล คณสมบต คาทกาหนด
ComboBox Name cboSaleType
ListBox Name lstProducts
ListBox Name lstSelectProducts
Button Name btnAdd
Button Name btnRemove
Button Name btnClear
Button Name btnCalc
Label
Name lblNetPrice
AutoSize False
BackColor ActiveCaptionText (ดา)
ForeColor ButtonHighlight (ขาว)
cboSaleType
btnRemove
btnClear
btnCalc
lblNetPrice
lstProducts
lstSelectProducts
btnAdd
174
1. เขยนคาสงเพอเพมรายการในคอมโบบอกซและลสตบอกซทเหตการณ Load ของฟอรมดงน
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
cboSaleType.Items.Add("ขายปลก")
cboSaleType.Items.Add("ขายสง")
With lstProducts
.Items.Add("เสอโปโล")
.Items.Add("เสอยด")
.Items.Add("กางเกงขาสน")
.Items.Add("กางเกงขายาว")
.Items.Add("กระโปง")
.Items.Add("ชดนอน")
End With
End Sub
คาสง With เปนการยอคาสงจะใชในกรณทมการเขยนคาสงกบคอนโทรลตวเดยวหลาย ๆ คาสงในกลมของคาสงเดยวกน การใช with จะตามดวยชอของคอนโทรลและคาสงบรรทดตอไปถาตองการเขยนคาสงกบคอนโทรลตวนน ๆ ไมตองเรมทชอของคอนโทรลอกใหตามดวยคาสงตอไปไดเลย เมอจบชดคาสงของคอนโทรลนนจะปดดวย End With
2. เขยนคาสงทปม เพมสนคา ดวยคาสง
Private Sub btnAdd_Click(sender As Object, e As EventArgs) Handles btnAdd.Click
lstSelectProduct.Items.Add(lstProduct.SelectedItem)
End Sub
คาสงนจะเปนการเพมสนคาทคลกเลอกจากลสตรายการสนคา (lstProducts) ไปเพมทรายการสนคาทเลอก (lstSelectProducts)
175
3. เขยนคาสงลบรายการสนคาดวยคาสง
Private Sub btnRemove_Click(sender As Object, e As EventArgs) Handles btnRemove.Click
lstSelectProduct.Items.RemoveAt(lstSelectProduct.SelectedIndex)
End Sub
4. เขยนคาสงลางรายการสนคาทงหมดทปม ลางทงหมด
Private Sub btnClear_Click(sender As Object, e As EventArgs) Handles btnClear.Click
lstSelectProduct.Items.Clear()
End Sub
5. เขยนคาสงคานวณราคาสนคาทปม คานวณเงน
Private Sub btnCalc_Click(sender As Object, e As EventArgs) Handles btnCalc.Click
Dim vNetPrice As Single
If cboSaleType.SelectedIndex = 0 Then
vNetPrice = CInt(lstSelectProduct.Items.Count) * 300
ElseIf cboSaleType.SelectedIndex = 1 Then
vNetPrice = CInt(lstSelectProduct.Items.Count) * 250
Else
MessageBox.Show("กรณาเลอกประเภทการขาย")
End If
lblNetPrice.Text = vNetPrice
End Sub
คาสงนจะตรวจสอบเงอนไขเมอมการเลอกรายการคอมโบบอกซรายการแรก (ขายปลก) จะคานวณราคาสนคาดวยการนบจานวนในลสตบอกซดวยคาสง lstSelectProduct.Items.Count แลวนาไปคณดวย 300
(ราคาตอชน) แตถาเลอกรายการทสอง (ขายสง) จะคานวณราคาสนคาดวยการนบจานวนในลสตบอกซแลวนาไปคณดวย 250 และไมเลอกรายการใดเลยจะแสดง MessageBox แจงเตอน
จากทดลองรนโปรแกรมเพอทดสอบการทางาน
176
ผลการรนโปรแกรม
เลอกรายการในคอมโบบอกซ
คลกเลอกรายการสนคาแลวคลกปม เพมสนคา
การลบรายการสนคาในลสตบอกซ
โปรแกรมแสดงราคารวมในถาเลอกขายปลก
โปรแกรมแสดงราคารวมในถาเลอกขายสง
รปท 8.20 แสดงการทางานของโปรแกรมขายสนคา
สรป
Select Case เปนโครงสรางคาสงทถกสรางขนเพอใชงานแทนคาสง If ในกรณทมการตรวจสอบเงอนไขหลายๆครง และเงอนไขของการเลอกทาขนอยกบคาของนพจนหนงๆเพยงนพจนเดยว
คาทระบหลงคาสง Case สามารถใชคาสง Is รวมกบตวดาเนนการเปรยบเทยบ เพอนาคาของนพจนทดสอบมาเปรยบเทยบกบคาทระบโดยใชตวดาเนนการนน หรอใชคาสง To เพอกาหนดชวงคาตงแตคาหนงไปจนถงอกคาหนง
177
ComboBox เปนคอนโทรลทใชแสดงรายการแบบ drop-down ผใชจะตองคลกปมลกศรเพอดรายการอน ๆ แลวคลกเลอกรายการทมอยใน ComboBox
ลสตบอกซจะแสดงรายการใหหมดทงหมดโดยไมตองคลกลกศรแบบคอมโบบอกซ ถารายการทอยในลสตบอกซมมากจนไมสามารถแสดงไดครบกจะมสโกรลบารเพอใหเลอนดรายการได
แบบฝกหด
1. โครงสราง Select Case เหมาะกบโจทยโปรแกรมแบบใด
2. ใหออกแบบและเขยนโปรแกรม การคดคาคอมมชชนจากรายการสนคาทพนกงานแตละคนขายได โดยมขอกาหนดดงน
2.1 พนกงานในรานม 3 คน กาหนดชอของพนกงานแตละคนและแสดงในคอมโบบอกซ
2.2 รายการสนคาม 7 รายการใหกาหนดรายการสนคาและราคาแตละรายการแสดงในลสตบอกซ
2.3 สามารถเลอกรายการสนคาทพนกงานขายไดมากกวา 1 รายการ
2.4 คานวณราคารวมของรายการสนคาทพนกงานขายได
2.5 คานวณคาคอมมชชนได 3 ระดบ โดยใหนกศกษากาหนดเงอนไขของแตละชวงเอง
178
เอกสารอางอง
พรอมเลศ หลอวจตร. (2554). คมอเรยน visual basic 2010. กรงเทพฯ : โปรวชน . สรสทธ ควประสพศกด นนทน แขวงโสภา. (2546). อนไซด Visual Basic .net ฉบบสมบรณ. กรงเทพ : โปรวชน.
Select...Case Statement (Visual Basic). Retrieved Febrary 14, 2012, from http://msdn.microsoft.com/en-
us/library/cy37t14y.aspx
แผนบรหารการสอนประจาวชาบทท 9
หวขอเนอหาประจาบท 9.1 โครงสรางคาสง For…Next
9.2 การใชงาน Step
9.3 การใชงาน Step –
9.4 โครงสรางคาสง For Each…Next
วตถประสงคเชงพฤตกรรม เมอศกษาบทนแลวนกศกษาสามารถ
1. อธบายโครงสรางคาสง For … Next ได
2. เขยนคาสงโปรแกรมดวยโครงสราง For … Next ได
3. อธบายคาสง Step ได
4. อธบายโครงสรางคาสง For Each…Next ได
วธการสอนและกจกรรมการเรยนการสอนประจาบท 1. บรรยายเนอหาในแตละหวขอ ยกตวอยางประกอบ สาธตวธการ
2. ผเรยนฝกปฏบต
3. ศกษาจากเอกสารประกอบการสอน
4. ผสอนสรปเนอหา
5. ผเรยนถามขอสงสย
6. ผสอนทาการซกถาม
7. ทาแบบฝกหดเพอทบทวนบทเรยน
สอการเรยนการสอน 1. เอกสารประกอบการสอนการเขยนโปรแกรมคอมพวเตอรทางธรกจเบองตน
2. ภาพเลอน (Slide)
3. โปรแกรมภาษา Visual Basic 2012
180
การวดและประเมนผล 1. สงเกตการเขาชนเรยนและความสนใจขณะบรรยาย
2. สงเกตการปฏบตของผเรยน
3. มสวนรวมในการซกถามระหวางการบรรยาย
4. การตอบคาถามขณะทผสอนบรรยาย
5. การตรวจแบบฝกหด
181
บทท 9 โครงสรางการเขยนโปรแกรมแบบทาซาดวยโครงสรางคาสง For
การเขยนโปรแกรมแบบทาซ าหรอเรยกอกอยางหนงวาการวนลป การทางานของโปรแกรมในลกษณะนจะใหโปรแกรมรนชดของคาสงซ าแลวซ าอก การสงใหชดคาสงทาซ าสามารถกาหนดไดวาจะใหทาซ าคาสงตามจานวนรอบทกาหนด หรอทาซ าในขณะทเงอนไขบางอยางเปนจรงหรอเทจกได
9.1 โครงสรางคาสง For…Next
คาสง For…Next เปนโครงสรางคาสงทเขาใจไดงายทสด ใชในกรณททราบจานวนครงทแนนอนในการทาซ า เชน การหาผลรวมของตวเลขจานวน 10 ตว, n ตว หรอการหาคาคอมมชชนของยอดขายพนกงานงานทงหมดในบรษท มรปแบบคาสงคอ รปแบบคาสง For counter = startNumber To endNumber [Step] One or more VB statements [Exit For] Next counter โดยท Counter คอ ตวแปรทใชนบจานวนรอบ startNumber คอ คาเรมตนของการนบ endNumber คอ คาสนสดของการนบ
[Step] คอ คาทเพมขนหรอลดลงของตวแปรในแตละรอบ(มหรอไมกได) [Exit For] คอ คาสงทใหเลกการวนรอบ(มหรอไมกไดแลวแตเงอนไข)
182
For Next (Step -)
ตวแปรเคานเตอร (i)= คาเรมตน (Start)
มคาสง Exit For?
ชดคาสง
i = i - Step
(Step มคาดฟอลต = 1)
ออกจากลป
i < คาสนสด(Stop)
Yes
No
No
Yes
Next
For Step -
[Exit For]
For Next (Step +)
ตวแปรเคานเตอร (i)= คาเรมตน (Start)
มคาสง Exit For?
ชดคาสง
i = i + Step
(Step มคาดฟอลต = 1)
ออกจากลป
i > คาสนสด(Stop)
Yes
No
No
Yes
Next
For Step +
[Exit For]
รปท 9.1 แสดงผงงานของโครงสรางคาสง For … Next
ทมา : (สรสทธ ควประสพศกดและนนทน แขวงโสภา , 2546 : 93)
183
สรสทธ ควประสพศกดและนนทน แขวงโสภา (2546 : หนา 94) ไดอธบายโครงสรางคาสง For ไววา ตวแปรทอยหลง For จะเปนตวควบคมการวนรอบของลป เมอโปรแกรมเรมตนทางานในคาสง For จะเปรยบเทยบคาระหวางคาเรมตนและคาสนสด ถาคาเรมตนไมเทากบคาสนสดลป For จะเรมทางาน
ชอตวแปรหลงคาสง For จะเปรยบเสมอนเคานเตอร (counter) ทใชนบจานวนครงในการวนลปโดยอตโนมต ซงจะมคาเรมตนเทากบ คาเรมตน และจะหยดทางานเมอตวแปรเคานเตอรนมคาเกนกวา คาสนสด หรอนอยกวาคาสนสดหากกาหนดใหคาของเคานเตอรลดลงในแตละรอบโดยใช Step เปนคาลบโดยโปรแกรมจะทางานตามชดคาสงทอยระหวางคาสง For กบคาสง Next และถาหากโปรแกรมพบคาสง Exit For โปรแกรมจะหลดออกจากลปทนท โดยไมสนใจวาจะวนรอบครบตามจานวนรอบทกาหนดหรอไม ตวอยางท 9.1 การหาผลรวมของเลขจานวนเตม 5 ตว
ในตวอยางนจะเปนการใชคาสง For … Next เพอหาผลรวมของตวเลขจากการปอนของผใชผานทาง InputBox จานวน 5 ตว ใหสรางหนาจอโปรแกรมและวางคอนโทรลดงน
รปท 9.2 แสดงการวางคอนโทรลของโปรแกรมหาผลรวม
ตารางท 9.1 แสดงคอนโทรลและคณสมบตของคอนโทรลของโปรแกรมหาผลรวม
คอนโทรล คณสมบต (properties) คาทกาหนด Form Text หาผลรวมของตวเลข Button Name btnStart
Text เรมตน โปรแกรมจะทางานเมอมการคลกทปมเรมตนจะปรากฏ InputBox เพอใหผใชปอนตวเลข ดงนนจะเขยนคาสงของโปรแกรมทคอนโทรลตวน ใหดบเบลคลกทปมเรมตน (btnStart) และเขยนคาสงดงน
184
Private Sub btnStart_Click(sender As Object, e As EventArgs) Handles _ btnDisplay.Click Dim i As Short Dim SumValue As Integer
SumValue = 0 For i = 1 To 5 SumValue += CInt(InputBox("ใสคาตวท " & i)) Next MessageBox.Show(" ผลรวม" & " = " & SumValue) End Sub สงใหโปรแกรมทางานโดยแลวคลกทปม จะปรากฏ Input Box ใหปอนคาทงหมด 5 ครง และเมอปอนคาครบแลวจะปรากฏ Message Box แสดงผลรวมของจานวนตวเลขทปอนเขาไป
รปท 9.3 แสดงการทางานของโปรแกรมหาผลรวมตวเลขจานวนเตม
จากคาสงของโปรแกรมสามารถอธบายไดดงน Dim i As Short Dim SumValue As Integer
คาสงประกาศตวแปรโดยทตวแปร i ทาหนาทเปนตวนบจานวนรอบของการทาซ าและตวแปร SumValue ใชเกบคาผลรวมของตวเลข และกาหนดคาเรมตนของตวแปร SumValue มคาเรมตนเปน 0 ดวยคาสง SumValue = 0
185
For i = 1 To 5 SumValue += CInt(InputBox("ใสคาตวท " & i)) Next คาสง For i=1 to 5 หมายถงจะมการวนรอบทาคาสงทอยในลปทงหมด 5 รอบคาสงทอยในลปคอ SumValue += CInt(InputBox("ใสคาตวท " & i)) คาสงนจะเปนการรบคาจาก Inputbox เมอผใชปอนคาลงใน Inputbox คานนจะถกนามาบวกเพมเขาไปในตวแปร sumValue โดยสามารถอธบายการบวกเพมไดดวยตารางท ..
ตารางท 9.2 แสดงการบวกเพมคาเขาไปในตวแปร SumValue
รอบท คาทปอน คาทอยในตวแปร SumValue 1 5 5 2 2 7 3 6 18 4 2 20 5 1 21
และเมอทาซ าครบตามจานวนรอบทกาหนดแลวจะแสดงผลลพธออกมาทาง MessageBox ดวยคาสง MessageBox.Show("ผลรวม" & " = " & SumValue)
ตวอยางท 9.2 หาผลรวมของตวเลขจานวน n ตว (โดยสามารถกาหนดคา n ไดเอง)
ตวอยางนจะเปนการใชประยกตใชคาสง For … Next จากตวอยางท 7.1 เพอหาผลรวมของตวเลขจากการปอนของผใชผานทาง InputBox จานวนกตวกไดแลวแตผใชกาหนด ใหสรางหนาจอโปรแกรมและวางคอนโทรลดงน
รปท 9.4 แสดงการวางคอนโทรลของโปรแกรมหาผลรวม n ตว
186
ตารางท 9.3 แสดงคอนโทรลและคณสมบตของคอนโทรลของโปรแกรมหาผลรวม n ตว
คอนโทรล คณสมบต (properties) คาทกาหนด Form Text หาผลรวมของตวเลข Button Name btnStart
Text เรมตน การทางานของโปรแกรมจะเมอมการคลกทปมเรมตนจะปรากฏ InputBox เพอใหผใชปอนจานวนตวเลขทตองการหาผลรวมและปอนตวเลขแตละตวจนครบจานวนตามทผใชปอน ดงนนจะเขยนคาสงของโปรแกรมทคอนโทรลตวน ใหดบเบลคลกทปมเรมตน(btnStart) และเขยนคาสงดงน Private Sub btnStart_Click(sender As Object, e As EventArgs) Handles _ btnDisplay.Click Dim i As Short Dim SumValue As Integer SumValue = 0
N = Cint(InputBox(“ใสจานวนตวเลขทตองการหาผลรวม”)) For i = 1 To n SumValue += CInt(InputBox("ใสคาตวท " & i)) Next MessageBox.Show("ผลรวม" & " = " & SumValue) End Sub การทางานของโปรแกรมเมอสงใหโปรแกรมทางานแลวคลกทปม จะปรากฏ Input Box ใหปอนคาจานวนตวเลขทตองการหาผลรวม (ทาซ าจานวนรอบตามทกาหนด)
รปท 9.5 แสดงการทางานของโปรแกรมหาผลรวมตวเลข n ตว
เมอผใชคลกทปม OK ของ Input Box จะปรากฏ Input Box เพอใหใสคาตวเลข คาทใหใสจะมจานวนครงตามทปอนในชองจานวนตวเลขทตองการหาผลรวม
187
รปท 9.6 แสดงผลลพธเมอปอนคาครบตามจานวนทกาหนด
จากคาสงของโปรแกรมสามารถอธบายไดดงน n = Cint(InputBox(“ใสจานวนตวเลขทตองการหาผลรวม”))
คาสงรบคาจาก Input box มาเกบไวทตวแปร nโดยทตวแปร n ทาหนาทเปนตวเกบคาสนสดของการนบ (
endNumber) For i = 1 To n SumValue += CInt(InputBox("ใสคาตวท " & i)) Next คาสง For i=1 to n หมายถงจะมการวนรอบทาคาสงทอยในลปทงหมด n รอบคาสงทอยในลปคอ SumValue += CInt(InputBox("ใสคาตวท " & i))
ตวอยางท 9.3 แสดงวนทในคอมโบบอกซ
ตวอยางนเปนการใชคาสง For …Next แสดงวนทตงแต 1 ถง 31 ในคอมโบบอกซ ใหสรางฟอรมและวางคอนโทรลดงน
รปท 9.7 แสดงการวางคอนโทรลของโปรแกรมแสดงวนท
188
ตารางท 9.4 แสดงคอนโทรลและคณสมบตของคอนโทรลของโปรแกรมแสดงวนท
คอนโทรล คณสมบต (properties) คาทกาหนด Form Text แสดงตวเลขใน Combo Box Combo Box Name cboDate Label Text วนท การทางานของโปรแกรมจะใหตวเลข 1 ถง 31 อยในรายการของคอมโบบอกซเมอเปดฟอรมขนมา ใหเขยนคาสงดงน
รปท 9.8 แสดงคาสงโปรแกรมของโปรแกรมแสดงวนท
เมอสงใหโปรแกรมทางาน คลกท Combo Box จะปรากฏตวเลขตงแต 1-31 ใน Combo Box
รปท 9.9 แสดงการทางานของโปรแกรมแสดงวนท
189
9.2 การใชงาน Step
การทางานของลป For บางครงไมจาเปนจะตองเรมตนท 1 และไมจาเปนตองเพมคาของตวแปรทเปนเคานเตอรทละ 1 เสมอไป สามารถกาหนดคาเรมตนและการเพมคาของเคานเตอรไดตามทตองการโดยใชคาสง Step ตวอยางท 9.4 การใชคาสง Step
สรางฟอรมและกาหนดคณสมบตดงน
รปท 9.10 แสดงการวางคอนโทรลของโปรแกรมการใชงาน Step
ตารางท 9.5 แสดงคอนโทรลและคณสมบตของคอนโทรลของโปรแกรม Step
เขยนคาสงทปม btnStep ดงน
รปท 9.11 แสดงคาสงโปรแกรม Step
คอนโทรล คณสมบต (properties) คาทกาหนด
Button Name btnStep Text For Step 7
ListBox Name lstData
190
1. สงใหโปรแกรมทางานแลวคลกทปม ผลลพธของโปรแกรมจะแสดงดงรปดานลาง
รปท 9.12 แสดงการทางานของคาสง Step
จากตวอยางขางตนสามารถอธบายคาสง For intCount = 4 To 80 Step 4 ไดคอเปนกาหนดคาเรมตนของตวแปรใหเรมท 4 และคาสนสดท 80 โดยเพมคาของตวแปร intCount ขนทละ 4 ตอการวน 1 รอบดวยคาสง Step 4 และเพมคา intCount เขาไปในรายการของ Listbox ดวยคาสง lstData.Items.Add (intCount) 9.3 การใชงาน Step –
ในกรณทตองการใหลปทางานแบบยอนกลบ หรอลดคาของตวแปรทเปนคาเรมตนลงตามคาทตองการ สามารถใชคาสง Step – เพอกาหนดการลดคาของตวแปรในแตละการวนรอบได ตวอยางท 9.5 การใชงานคาสง Step –
สรางฟอรมและกาหนดคณสมบตดงน
รปท 9.13แสดงการวางคอนโทรลของการใชคาสง Step –
191
ตารางท 9.6 แสดงคอนโทรลและคณสมบตของคอนโทรล
เขยนคาสงทปม btnStep ดงน
รปท 9.14 แสดงการการเขยนคาสง Step -
สงใหโปรแกรมทางานแลวคลกทปม ผลลพธของโปรแกรมจะแสดงดงรปดานลาง
รปท 9.15 แสดงการทางานของคาสง Step -
จากตวอยางขางตนสามารถอธบายคาสง For intCount = 10 To 0 Step -1 ไดคอเปนกาหนดคาเรมตนของตวแปรใหเรมท 10 และคาสนสดท 0 โดยลดคาของตวแปร intCount ทละ 1 ตอการวน 1 รอบดวยคาสง Step -1และเพมคา intCount เขาไปในรายการของ Listbox ดวยคาสง lstData.Items.Add (intCount)
คอนโทรล คณสมบต (properties) คาทกาหนด
Button Name btnStep Text For Step 7
ListBox Name lstData
192
9.4 โครงสรางคาสง For Each…Next
ในการทางานของโปรแกรมบางครงอาจไมทราบจานวนรอบทตองการทาซ าหรอจานวนสมาชกทแนนอนของกลมขอมล คาสง For Each…Next เปนคาสงทใชวนลปเพอเขาถงสมาชกแตละตวของกลมขอมล ทไมทราบจานวนสมาชกทแนนอน (หรอทราบจานวนสมาชกทแนนอนกได) รปแบบการใชงานของ For Each…Next เปนดงน รปแบบคาสง For Each element [ As datatype ] In group One or more VB statements [ Exit For ]
Next [ element ]
โดยท Element คอ ชอตวแปร Group คอ ชออารเรยหรอคอลเลคชน ตวอยางท 9.6 การใชงานคาสง For Each…Next
ตวอยางนจะเปนการใชคาสง For Each…Next วนเพอเขาถงสมาชกของตวแปรทเปนชนดอาเรยแตละตว สรางฟอรมและกาหนดคณสมบตดงน
รปท 9.16 แสดงการวางคอนโทรล
193
ตารางท 9.7 แสดงคอนโทรลและคณสมบตของคอนโทรล
การทางานของโปรแกรมจะทาการแสดงรายการทอยในตวแปรชนดอาเรยเมอมการคลกทปม Display ดงนนจะเขยนคาสงของโปรแกรมทคอนโทรลตวน ใหดบเบลคลกทปม (Button1) และเขยนคาสงดงน Private Sub Button1_Click(sender As Object, e As EventArgs) Handles btnDisplay.Click Dim strSubject() As String = {"การเขยนโปรแกรมเบองตน", "การเขยนโปรแกรมชนสง", _ "วเคราะหและออกแบบระบบ", "การบรหารระบบคอมพวเตอร", _ "การเขยนโปรแกรมเบองตน"} For Each SubjectName In strSubject lstSubject.Items.Add(SubjectName) Next End Sub เมอเขยนคาสงเสรจแลวใหรนโปรแกรมและคลกทปม Display ผลลพธของโปรแกรมเปนดงรปดานลาง
รปท 9.17 แสดงผลลพธของโปรแกรมดวยคาสง For…Each…Next
จากตวอยางขางตนสามารถอธบายคาสงโปรแกรมไดดงน Dim strSubject() As String = {"การเขยนโปรแกรมเบองตน", "การเขยนโปรแกรมชนสง", _ "วเคราะหและออกแบบระบบ", "การบรหารระบบคอมพวเตอร", _
คอนโทรล คณสมบต คาทกาหนด Button Name Button1
Text display ListBox Name lstSubject
194
"การเขยนเวบเบองตน"} คาสงขางตนเปนคาสงประกาศตวแปร strSubject เปนตวแปรชนดอาเรยโดยมสมาชกคอชอรายวชาตาง ๆ
For Each SubjectName In strSubject
เปนคาสงวนลปจนกวาจะครบทกสมาชกของอาเรย strSubject โดยในแตละรอบ สมาชกของอาเรยจะถกสงไปไวทตวแปร SubjectName และจะแสดงสมาชกนนดวยคาสง lstSubject.Items.Add(SubjectName) ตวอยางท 9.7 โปรแกรมคานวณหายอดเงนฝากแบบฝากประจา
วตถประสงคของโปรแกรมนคอ การคานวณยอดเงนฝากแบบฝากประจาโดยมรปแบบการฝากคอ ถาฝากประจา 10 ปจะไดดอกเบยรอยละ 6 ตอปและถาฝากประจา 15 ปจะไดดอกเบยรอยละ 8 ตอป โดยผใชจะตองระบเงนตน และจานวนปทตองการใหคานวณหายอดเงนฝากหลงจากรวมดอกเบยทงหมดแลวการคดดอกเบยจะเปนแบบทบตน คอเอาดอกเบยไปรวมกบเงนตนเพอกลายเปนยอดเงนทจะนาไปคดดอกเบยในปถดไป โปรแกรมจะคานวณหายอดเงนฝากเมอสนปท 1, 2, 3 เรอยไปจนถงปทผใชระบ แลวแสดงผลออกมาในลสบอกซ สรางฟอรมและกาหนดคณสมบตดงน
รปท 9.18 แสดงการวางคอนโทรลของโปรแกรมคานวณยอดเงนฝากแบบฝากประจา
ตารางท 9.8 แสดงคอนโทรลและคณสมบตของคอนโทรลของโปรแกรมคานวณยอดเงนฝากแบบฝากประจา
ชนดคอนโทรล คณสมบต คาทกาหนด
Textbox Name TxtDeposit ComboBox Name cboYear
195
ชนดคอนโทรล คณสมบต คาทกาหนด
ListBox Name lstDisplay Button Name btnCalc
Text คานวณ เขยนคาสงเพอเพมรายการในคอมโบบอกซเพอแสดงจานวนปใหผใชเลอกทเหตการณ Form_Load ดงน Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load With cboYear .Items.Add("10") .Items.Add("15") End With End Sub จากนนเขยนคาสงเพอประมวลผลเงนฝากทปมคานวณ (btnCalc) ดงน Private Sub btnCalc_Click(sender As Object, e As EventArgs) Handles btnCalc.Click Dim vDeposit As Single Dim vInterest As Single lstDisplay.Items.Clear() vDeposit = txtDeposit.Text If cboYear.SelectedIndex = 0 Then For i = 1 To 10 vInterest = vDeposit * (6 / 100) vDeposit = vDeposit + vInterest lstDisplay.Items.Add("ปท : " & i & ControlChars.Tab & _
"เงนฝาก = " & vDeposit) Next ElseIf cboYear.SelectedIndex = 1 Then For i = 1 To 10 vInterest = vDeposit * (8 / 100) vDeposit = vDeposit + vInterest
196
lstDisplay.Items.Add("ปท : " & i & ControlChars.Tab & _ "เงนฝาก = " & vDeposit)
Next End If End Sub เมอเขยนคาสงเสรจแลวใหรนโปรแกรมปอนจานวนเงนฝากและเลอกปจากนนคลกทปมคานวณเพอดผลลพธของโปรแกรม
ปอนจานวนเงนและเลอกจานวน
ป
ผลลพธของโปรแกรมเมอเลอก
10 ป
ผลลพธของโปรแกรมเมอเลอก
12 ป รปท 9.19 แสดงผลลพธของโปรแกรมหายอดเงนฝากแบบฝากประจา
จากตวอยางขางตนสามารถอธบายคาสงโปรแกรมไดดงน Dim vDeposit As Single เปนคาสงประกาศตวแปรเพอเกบคาเงนฝากทผใชปอนเขามา Dim vInterest As Single เปนคาสงประกาศตวแปรเพอเกบคาดอกเบยทคานวณไดในแตละป lstDisplay.Items.Clear() คาสงลางรายการทอยในลสบอกซเหตทตองใชเพราะเมอมการคลกปมคานวณซ ารายการจะถกตอทายจากรายการเดมในลสบอกซ การลางรายการกอนกเพอใหผใชไมสบสน vDeposit = txtDeposit.Text คาสงรบคาจาก TextBox ทผใชปอนเขามาซงกคอเงนฝาก ในสวนของการตรวจสอบเงอนไขของการคานวณวาจะใชอตราดอกเบยใดจะเขยนอยในบลอกของโครงสราง If คอ If cboYear.SelectedIndex = 0 Then [คาสงคานวณและแสดงผลเมอเลอก 10 ป] ElseIf cboYear.SelectedIndex = 1 Then [คาสงคานวณและแสดงผลเมอเลอก 15 ป] End If
197
เมอโปรแกรมตรวจสอบเงอนไขจากจานวนปทผใชเลอกแลวในกรณทผใชเลอกรายการท 1 ในคอมโบบอกซ (10 ป) โปรแกรมจะคานวณเงนฝากและแสดงออกมาทลสบอกซดวยคาสง
For i = 1 To 10 vInterest = vDeposit * (6 / 100) vDeposit = vDeposit + vInterest lstDisplay.Items.Add("ปท : " & i & ControlChars.Tab & _
"เงนฝาก = " & vDeposit) Next และถาผใชเลอกรายการท 2 ในคอมโบบอกซ (15 ป) โปรแกรมจะคานวณเงนฝากและแสดงออกมาทลสตบอกซดวยคาสงทอยในบลอกของ Else IF สวนคาสง ControlChars. Tab หมายถงใหมการเวนวรรค 1 แทบ สรป
การเขยนโปรแกรมแบบทาซ าหรอเรยกอกอยางหนงวาการวนลป การทางานของโปรแกรมในลกษณะนจะใหโปรแกรมรนชดของคาสงซ าแลวซ าอกตามจานวนรอบทกาหนด หรอทาซ าในขณะทเงอนไขบางอยางเปนจรงหรอเทจกได คาสง For…Next ใชในกรณททราบจานวนครงทแนนอนในการทาซ า
สามารถกาหนดคาเรมตนและการเพมคาของเคานเตอรไดตามทตองการโดยใชคาสง Step สามารถลดคาของตวแปรทเปนคาเรมตนลงตามคาทตองการ สามารถใชคาสง Step – เพอ
กาหนดการลดคาของตวแปรในแตละการวนรอบได คาสง For Each…Next เปนคาสงทใชวนลปเพอเขาถงสมาชกแตละตวของกลมขอมล ทไมทราบ
จานวนสมาชกทแนนอน
198
แบบฝกหด
1. จะใชโครงสรางการเขยนโปรแกรมแบบทาซ าในลกษณะงานใดไดบาง 2. ใหเขยนโปรแกรมแสดงผลคณของตวเลขแม 3 โดยมตวคณ 12 ตวคณตามตวอยางทแสดงดานลาง
3. คาสง Step มไวเพอ 4. ใหสรางโปรแกรมแสดงชอนกศกษาในกลมจานวน 5 รายชอโดยเกบชอนกศกษาไวทตวแปร Array และใชคาสง For Each…Next ในการเขยนคาสงโปรแกราม
3 *1 = 3
3 * 2 =6
3* 3 = 9
3 * 4 = 12
3 * 5 = 15
199
เอกสารอางอง
สรสทธ ควประสพศกด นนทน แขวงโสภา. (2546). อนไซด Visual Basic .net ฉบบสมบรณ. กรงเทพ : โปรวชน. For...Next Statement (Visual Basic). Retrieved Febrary 14, 2012, from http://msdn.microsoft.com/en-
us/library/vstudio/5z06z1kb(v=vs.100).aspx
แผนบรหารการสอนประจาวชาบทท 10
หวขอเนอหาประจาบท 10.1 โครงสรางคาสง Do While
10.2 โครงสรางคาสง Do Until
10.3 ลปทวนซ าไมรจบ
วตถประสงคเชงพฤตกรรม เมอศกษาบทนแลวนกศกษาสามารถ
1. อธบายโครงสรางคาสง Do While ได
2. อธบายโครงสรางคาสง Do Until ได
3. เขยนคาสงโปรแกรมดวยโครงสราง Do ได
วธการสอนและกจกรรมการเรยนการสอนประจาบท 1. บรรยายเนอหาในแตละหวขอ ยกตวอยางประกอบ สาธตวธการ
2. ผเรยนฝกปฏบต
3. ศกษาจากเอกสารประกอบการสอน
4. ผสอนสรปเนอหา
5. ผเรยนถามขอสงสย
6. ผสอนทาการซกถาม
7. ทาแบบฝกหดเพอทบทวนบทเรยน
สอการเรยนการสอน 1. เอกสารประกอบการสอนการเขยนโปรแกรมคอมพวเตอรทางธรกจเบองตน
2. ภาพเลอน (Slide)
3. โปรแกรมภาษา Visual Basic 2012
การวดและประเมนผล 1. สงเกตการเขาชนเรยนและความสนใจขณะบรรยาย
2. สงเกตการปฏบตของผเรยน
3. มสวนรวมในการซกถามระหวางการบรรยาย
4. การตอบคาถามขณะทผสอนบรรยาย
5. การตรวจแบบฝกหด
บทท 10
โครงสรางการเขยนโปรแกรมแบบทาซาดวยโครงสรางคาสง Do
โครงสรางคาสงทาซ าทมใหใชใน VB 2012 นอกจากโครงสราง For…Next แลว ยงมโครงสรางคาสง Do ซงประกอบไปดวยโครงสราง Do While และ Do Until โครงสรางคาสงทงสองนจะแตกตางโครงสรางคาสง For … Next ตรงทสามารถกาหนดเงอนไขเพอทจะทาซ าได Smith, Jo Ann (2011 p.75) ไดใหกฎ 3
ขอทตองใชในการเขยนคาสงของโครงสรางคาสง Do ไวดงน
1. ตองมตวแปรควบคม (loop control variable)การทางานของลป
2. ตองเปรยบเทยบตวแปรควบคมการทางานของลปกบคาตรวจสอบ (Sentinel Value) เพอทจะตดสนใจวาจะทาคาสงทอยในลปตอไปหรอไม การเปรยบเทยบคาของตวแปรควบคมกบคาตรวจสอบนจะใหคาออกมาสองคาคอ จรงหรอเทจ
3. ภายในลปตองมการเปลยนแปลงคาของตวแปรควบคมลป เพอใหสามารถออกจากลปได
10.1 โครงสรางคาสง Do While
โครงสรางคาสง Do While จะทาซ าคาสงทอยในลปเมอเงอนไขเปนจรงและจะเลกทาซ าคาสงทอยในลปเมอเงอนไขเปนเทจ
เงอนไขหลง While จรง?
มคาสง Exit Do?
ชดคาสงภายในลป
ออกจากลป
Yes
Yes
Do While
[Exit Do]
...
Loop
No
No
รปท 10.1 แสดงผงงานการทางานของคาสง Do While
202
มรปแบบการใชงานดงน
รปแบบคาสง Do While แบบท 1
Do While condition
[ statements ]
[ Exit Do ]
[ statements ]
Loop
โดยท
Condition คอ เงอนไขของการทาซ า
statements คอ ชดคาสงเมอเงอนไขเปนจรง
Exit Do คอ คาสงเพอใหออกจากลป
ตวอยางท 10.1 การใชคาสง Do While แสดงตวเลข 1 - 10
ในตวอยางนจะเปนการใชคาสง Do … While แสดงตวเลข 1 – 10 ใหสรางหนาจอโปรแกรมและวางคอนโทรลดงน
รปท 10.2 แสดงการวางคอนโทรลของโปรแกรมแสดงตวเลข 1-10
ตารางท 10.1 แสดงคอนโทรลและคณสมบตของคอนโทรลของโปรแกรมแสดงตวเลข 1- 10
คอนโทรล คณสมบต (properties) คาทกาหนด
ListBox Name ListBox1
Button Name Button1
Text Display
203
โปรแกรมจะทางานเมอมการคลกทปม Display ดงนนจะเขยนคาสงของโปรแกรมทคอนโทรลตวน ใหดบเบลคลกทปม Display (Button1) และเขยนคาสงดงน
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Dim i As Integer = 1
Do While i <= 10
ListBox1.Items.Add(i)
i += 1
Loop
End Sub
เมอโปรแกรมทางานจะปรากฏผลลพธดงรปท 10.3
รปท 10.3 แสดงผลลพธของโปรแกรมเมอใชคาสง Do While
จากคาสงของโปรแกรมสามารถอธบายไดดงน
Dim i As Integer = 1
คาสงประกาศตวแปรโดยทตวแปร i และกาหนดคาเรมตนของตวแปรใหมคาเปน 1 ตวแปร i นจะใชเปนตวแปรควบคมการทางานของลป
Do While i <= 10
ListBox1.Items.Add(i)
i += 1
Loop
204
เมอเขาสคาสง Do While จะตรวจสอบเงอนไขกอน ซงเงอนไขทตรวจสอบคอ i <= 10 (คา 10 คอคาตรวจสอบ (Sentinel Value)) ในกรณน i มคาเปน 1 คาทไดจะเปนจรงกจะเขาไปทาคาสงทอยในลปคอคาสง ListBox1.Items.Add(i) เปนคาสงทเพมคา i เขาไปในรายการของลสบอกซ หลงจากนนจะทาคาสง i += 1
เปนคาสงทใชเพมคาใหตวแปร i ขนอก 1 สามารถอธบายขนตอนการทางานของคาสงไดดงตารางดานลาง
ตารางท 10.2 แสดงคาของตวแปรของคาสง Do While
คาในตวแปร i เงอนไข i<= 10 รายการทเพมในลสบอกซ i += 1
1 จรง 1 2
2 จรง 2 3
3 จรง 3 4
4 จรง 4 5
5 จรง 5 6
6 จรง 6 7
7 จรง 7 8
8 จรง 8 9
9 จรง 9 10
10 จรง 10 11
11 เทจ เลกทาคาสง เลกทาคาสง
รปแบบการใชคาสง Do While ยงมอกรปแบบการใชงานอกแบบหนงทแตกตางจากตวอยางท 10.1 มรปแบบคอ
รปแบบคาสง Do While แบบท 1
Do
[ statements ]
[ Exit Do ]
[ statements ]
Loop While condition
205
จากรปแบบคาสงขางตน จะเหนวาหลงคาสง Do จะไมมคาสง While ไวตรวจสอบเงอนไขการทาซ า สามารอธบายจากรปแบบทสองไดวา เมอโปรแกรมเรมทางานจะทาคาสงทอยในลปอยางนอย 1 ครงแลวคอยตรวจสอบเงอนไข ถาเงอนไขเปนจรงกจะวนขนไปทาคาสงทอยในลปตอไป แตถาเงอนไขเปนเทจกจะเลกทาคาสงทอยในลป
ตวอยางท 10.2 การใชคาสง Do While รปแบบท 2
ในตวอยางนจะใหโปรแกรมแสดงตวเลข 1- 10 เชนเดยวกบตวอยางท 10.1 แตเปลยนรปแบบคาสง
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Dim i As Integer = 1
Do
ListBox1.Items.Add(i)
i += 1
Loop While i <= 10
End Sub
จากตวอยางโปรแกรมขางตน คาสงในโครงสรางของ Do While เมอโปรแกรมเรมตนทางานจะทาการเพมคาตวแปร i เขาไปในลสบอกซกอนโดยไมสนใจเงอนไข ตอจากนนกจะเพมคาใหตวแปร i ขนอก 1 ดวยคาสง i+= 1 แลวคอยตรวจสอบเงอนไขวาตวแปร i มคานอยกวา 10 หรอไม ถาเงอนไขเปนจรงกจะขนไปทาซ าคาสงทอยในลปตอไปจนกวาเงอนไขจะเปนเทจ
10.2 โครงสรางคาสง Do Until
โครงสรางคาสง Do Until จะทาซ าคาสงทอยในลปเมอเงอนไขเปนเทจและจะเลกทาซ าคาสงทอยในลปเมอเงอนไขเปนจรง
206
Yes
Yes
Loop Until
Do
[Exit Do]
No
No
มคาสง Exit Do?
ชดคาสงภายในลป
เงอนไขหลง While จรง? ออกจากลป
รปท 10.4 แสดงผงงานการทางานของคาสง Do Until
มรปแบบคาสงคอ
รปแบบคาสง
Do
[ statements ]
[ Exit Do ]
[ statements ]
Loop Until condition
ตวอยางท 10.3 การใชคาสง Do Until
ในตวอยางนจะใหโปรแกรมแสดงตวเลข 1- 10 เชนเดยวกบตวอยางขางตน Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Dim i As Integer = 1
Do
ListBox1.Items.Add(i)
i += 1
Loop Until i > 10
End Sub
207
จากตวอยางโปรแกรมขางตน คาสงในโครงสรางของ Do Until เมอโปรแกรมเรมตนทางานจะทาการเพมคาตวแปร i เขาไปในลสบอกซกอนโดยไมสนใจเงอนไข ตอจากนนกจะเพมคาใหตวแปร i ขนอก 1 ดวยคาสง i+= 1 แลวคอยตรวจสอบเงอนไขวาตวแปร i มคามากกวา 10 หรอไม ถาเงอนไขเปนเทจกจะขนไปทาซ าคาสงทอยในลปตอไปจนกวาเงอนไขจะเปนจรง
10.3 ลปทวนซาไมรจบ
เนองจากการทางานของคาสง Do ใชเงอนไขเปนตวตดสนวาจะวนลปตอไปหรอออกจากลป โคดภายในลปจะตองมคาสงใหเงอนไขในการออกจากลปหรอ Exit Condition มาถงไดในทสด มฉะนนคาสง Do จะทาซ าไปเรอยๆ กลายเปนลปทไมรจบ (Endless Loop) หรอเรยกอกอยางวาลปอนนต (Infinite Loop) ผใชจะรสกวาโปรแกรมคางไป คาสงโปรแกรมตอไปนคอตวอยางของการวนลปไมรจบ
Dim InpName As Integer
i = 0
Do
ListBox1.Items.Add(i)
i += 3
Loop Until i = 100
จากโปรแกรมตองการแสดงเลขจานวนเตมตงแต 0 ถง 100 ทหารดวย 3 ลงตวออกมาในลสบอกซ แตสงทเกดขนกคอ โปรแกรมจะวนลปไมรจบ เพราะเมอตวแปร i เรมตนดวยคา 0 และถกบวกเพมทละ 3
มนจะไมมวนมคาเทากบ 100 อนเปนเงอนไขในการออกจากลปไดเลย (โปรแกรมนจะออกจากลปเมอเงอนไข i = 100 เปนจรง เพราะใช Until แทน While) ความผดพลาดนมสาเหตมาจากเงอนไขทผดพลาด ซงทถกแลวควรใชตวดาเนนการ >= หรอ > แทนตวดาเนนการ = ดงน
Dim InpName As Integer
i = 0
Do
ListBox1.Items.Add(i)
i += 3
Loop Until i >= 100
208
แบบฝกหดท 10.4 โปรแกรมแสดงยอดเงนคงเหลอและจานวนงวดจากการผอนชาระเงน
ตวอยางโปรแกรมนเปนการแสดงจานวนเงนทลดลงในแตละงวดการผอนชาระและแสดงจานวนงวดทงหมดเมอผอนชาระจนครบ โดยผใชสามารถกาหนดจานวนเงนในการผอนเองได ยกตวอยางเชน เงนตน 12000 บาท ผกาหนดผอนเดอนละ 2000 บาท ผลลพธทแสดงลสตบอกซจะมรปแบบดงน
งวดท จานวนเงนคงเหลอ
1 ฿xxx.xx
2 ฿xxx.xx
3 ฿xxx.xx
4 ฿xxx.xx
5 ฿xxx.xx
ใหสรางหนาจอโปรแกรมและวางคอนโทรลดงน
รปท 10.5 แสดงการวางคอนโทรลของโปรแกรมแสดงยอดเงนคงเหลอและจานวนงวดจากการผอนชาระเงน
ตารางท 10.3 แสดงคอนโทรลและคณสมบตของคอนโทรลของโปรแกรมโปรแกรมแสดงยอดเงนคงเหลอและจานวนงวดจากการผอนชาระเงน
คอนโทรล คณสมบต (properties) คาทกาหนด
TextBox Name txtMoney
TextBox Name txtPay
Button Name btnStart
Text แสดง
ListBox Name lstDisplay
209
การทางานของโปรแกรมจะใหผใชปอนจานวนเงนตนทชองเงนตน (txtMoney) และจานวนเงนทตองการชาระตองวด (txtPay) แลวคลกทปมแสดง (btnDisplay) เขยนคาสงดงน
Private Sub btnDisplay _Click(sender As Object, e As EventArgs) Handles _ btnDisplay.Click
Dim borrow, pay As Single
Dim i As Integer
borrow = txtMoney.Text
pay = txtPay.Text
i = 1
lstDisplay.Items.Add("งวดท" & vbTab & "เงนตนคงเหลอ")
Do
borrow = borrow - pay
lstDisplay.Items.Add(i & vbTab & borrow)
i += 1
Loop Until borrow <= 0
End Sub
ทดสอบการทางานของโปรแกรมโดยการปอนเงนตน และคาผอนตองวด แลวคลกปมแสดงจะไดผลลพธดงรป
รปท 10.6 แสดงผลลพธของโปรแกรมแสดงยอดเงนคงเหลอและจานวนงวดจากการผอนชาระเงน
210
จากคาสงของโปรแกรมสามารถอธบายไดดงน
Dim borrow, pay As Single
Dim i As Integer
คาสงประกาศตวแปรโดยทตวแปร
Borrow เปนตวแปรสาหรบเกบจานวนเงนตน
Pay เปนตวแปรสาหรบเกบจานวนเงนตน
i เปนตวแปรควบคม
จากนนกจะปนคาสงสงคาจาก TextBox มาไวในตวแปรทงสองตวและกาหนดคาใหตวแปร i มคาเรมตนเปน 1 และเขาสโครงสรางคาสง Do ดวยคาสง
Do
borrow = borrow - pay
lstDisplay.Items.Add(i & vbTab & borrow)
i += 1
Loop Until borrow <= 0
จดทเปนทสงเกตคอการตรวจสอบเงอนไขเพอใหทาซ าคาสงในลปจะเหนวาจะใชคาทอยในตวแปร borrow
เพราะเงอนไขของการทาซ าคอเมอชาระจนครบจานวนซงกคอเงนตนตองเปน 0
สรป
โครงสรางคาสง Do ซงประกอบไปดวยโครงสราง Do While และ Do Until สามารถกาหนดเงอนไขเพอทจะทาซ าได
โครงสรางคาสง Do While จะทาซ าคาสงทอยในลปเมอเงอนไขเปนจรงและจะเลกทาซ าคาสงทอยในลปเมอเงอนไขเปนเทจ
โครงสรางคาสง Do Until จะทาซ าคาสงทอยในลปเมอเงอนไขเปนเทจและจะเลกทาซ าคาสงทอยในลปเมอเงอนไขเปนจรง
211
แบบฝกหด
1. บอกขอแตกตางของโครงสรางคาสง Do While และ Do Until
2. จากโจทยโปรแกรม “การคานวณยอดเงนฝากแบบฝากประจาโดยมรปแบบการฝากคอ ถาฝากประจา 10
ปจะไดดอกเบยรอยละ 6 ตอปและถาฝากประจา 15 ปจะไดดอกเบยรอยละ 8 ตอป โดยผใชจะตองระบเงนตน และจานวนปทตองการใหคานวณหายอดเงนฝากหลงจากรวมดอกเบยทงหมดแลวการคดดอกเบยจะเปนแบบทบตน คอเอาดอกเบยไปรวมกบเงนตนเพอกลายเปนยอดเงนทจะนาไปคดดอกเบยในปถดไป โปรแกรมจะคานวณหายอดเงนฝากเมอสนปท 1, 2, 3 เรอยไปจนถงปทผใชระบ แลวแสดงผลออกมาในลสบอกซ” ใหพฒนาโปรแกรมโดยใชโครงสรางคาสง Do While หรอ Do Until
212
เอกสารอางอง
สรสทธ ควประสพศกด นนทน แขวงโสภา. (2546). อนไซด Visual Basic .net ฉบบสมบรณ. กรงเทพ : โปรวชน.
Jo Ann Smith. (2011). MICROSOFT VISUAL BASIC PROGRAMS TO ACCOMPANY
PROGRAMMING LOGIC AND DESIGN. 6th. Boston : Course Technology.
Do...Loop Statement (Visual Basic). Retrieved Febrary 14, 2012, from http://msdn.microsoft.com/en-
us/library/eked04a7.aspx
แผนบรหารการสอนประจาวชาบทท 11 หวขอเนอหาประจาบท
11.1 โปรแกรมยอย
11.2 ซบรทน
11.3 ฟงกชน
11.4 ฟงกชนทมใน VB 2012
วตถประสงคเชงพฤตกรรม เมอศกษาบทนแลวนกศกษาสามารถ
1. อธบายความหมายของโปรแกรมยอยได
2. อธบายซบรทนและฟงกชนได
3. สรางซบรทนได
4. สรางฟงกชนได
5. เลอกใชฟงกชนทมใน VB 2012 ได
วธการสอนและกจกรรมการเรยนการสอนประจาบท 1. บรรยายเนอหาในแตละหวขอ ยกตวอยางประกอบ สาธตวธการ
2. ผเรยนฝกปฏบต
3. ศกษาจากเอกสารประกอบการสอน
4. ผสอนสรปเนอหา
5. ผเรยนถามขอสงสย
6. ผสอนทาการซกถาม
7. ทาแบบฝกหดเพอทบทวนบทเรยน
สอการเรยนการสอน 1. เอกสารประกอบการสอนการเขยนโปรแกรมคอมพวเตอรทางธรกจเบองตน
2. ภาพเลอน (Slide)
3. โปรแกรมภาษา Visual Basic 2012
214
การวดและประเมนผล 1. สงเกตการเขาชนเรยนและความสนใจขณะบรรยาย
2. สงเกตการปฏบตของผเรยน
3. มสวนรวมในการซกถามระหวางการบรรยาย
4. การตอบคาถามขณะทผสอนบรรยาย
5. การตรวจแบบฝกหด
บทท 11
ซบรทนและฟงกชน
โปรแกรมยอยเปนสวนของโปรแกรมทถกสรางขนมาเพอทางานเลก ๆ ชนหนงใหสาเรจ ซงโปรแกรมยอยสามารถถกเรยกใชงานซ ากนไดหลาย ๆ ครง ขอดของโปรแกรมยอยคอ ลดความซ าซอนในการเขยนโปรแกรม โดยจะเกบชดคาสงทตองถกเรยกใชซ า ๆ เขาไวดวยกน ทาใหไมตองเขยนชดคาสงเดมซ าอยเรอย ๆ และยงชวยใหการแกไขในภายหลงทาไดงาย ๆ (สจจะ จรสรงรววร, 2549 : 120)
ชนดของโปรแกรมยอยมอย 2 ชนดคอ
- ซบรทน (Subroutines) จะทางานเมอมการเรยกใชเปนโปรแกรมยอยทเมอจบการทางานแลวจะไมมการสงคากลบมา
- ฟงกชน (Function) จะทางานเมอมการเรยกใชเชนกน ฟงกชนจะดาเนนการและจะสงคาบางอยางกลบมา ซงคาทสงกลบมานนอาจเปนผลจากการคานวณหรอสถานะทแสดงวาฟงกชนทางานสาเรจหรอลมเหลว (Stephens, Rod,2012 : 267)
ทงซบรทนและฟงกชนอาจเรยกวารทนหรอโพรซเยอรกได
11.1 โปรแกรมยอย (Procedure)
จากตวอยางโปรแกรมตางๆในหวขอผานมา จะเหนไดวาเปนโปรแกรมเลกๆทไมมความสลบซบซอนอนใด แตการเขยนโปรแกรมในชวตจรงนนมกจะเปนโปรแกรมขนาดใหญทประกอบดวยงานหลายอยาง การเขยนโปรแกรมตอเนองกนไปโดยไมมการแบงงานออกเปนสวนๆจะทาใหเขยนและตรวจสอบโปรแกรมไดยาก โดยเฉพาะอยางยงหากจาเปนตองกลบมาแกไขหรอปรบปรงโปรแกรมในอนาคต ดงนนการเขยนโปรแกรมทดจงควรแบงงานออกเปนสวนๆทเรยกวา โปรแกรมยอย หรอโพรซเยอร (procedure) ซงมขอดคอ
ชวยใหเขยน,อาน และตรวจสอบโปรแกรมไดงาย เนองจากในแตละโพรซเยอรจะมการทางานอยางใดอยางหนงทชดเจน ในสวนของโปรแกรมหลกกสามารถเขาใจไดงายเชนเดยวกน เพราะโปรแกรมหลกจะมขนาดสนลง โดยจะมเฉพาะงานหลกๆเทานน ไมมสวนของรายละเอยดในการทางานตางๆ ซงรายละเอยดของงานจะไปอยในโพรซเยอรทเรากาหนดใหทางานเฉพาะอยางทตองการ
ลดความซ าซอนของโปรแกรมทมการทางานอยางเดยวกน โดยแยกสวนททางานเหมอนๆกนออกมาเปนโพรซเยอร
216
สามารถนาเอาโพรซเยอรไปใชงานในโปรแกรมอนไดอก ถาหากโปรแกรมนนตองการทางานลกษณะเดยวกน ชวยใหประหยดเวลาในการเขยนโปรแกรมไปไดมาก (สรสทธ ควประสพศกด และนนทน แขวงโสภา, 2546 : 99)
รปท 11.1 แนวคดของโปรแกรมยอย
ทมา : (สจจะ สรสรงรววร, 2549 : 119)
11.2 ซบรทน (Subroutines)
ซบรทนเปนโปรแกรมยอยททางานโดยไมมการสงคน (return) ผลลพธกลบไปยงคาสงทเรยกใช
รปท 11.2 การทางานของซบรทน
ทมา : (สจจะ สรสรงรววร, 2549 : 120)
การสรางโปรแกรมยอยแบบ Sub มรปแบบดงน
รปแบบคาสง
[Private | Public | Protected | Friend | Protected Friend]
Sub ชอซบรทน ([พารามเตอร])
<ชดคาสง>
End Sub
217
โดยทพารามเตอร (parameter หรอบางครงกเรยกวา formal argument) คอตวแปร (ตวเดยวหรอหลายตวกได) ทใชรบคาจากโปรแกรมหลกเพอนามาใชงานในโพรซเยอร สาหรบคยเวรด Private ทนาหนาชอโพรซเยอรจะเปนการจากดขอบเขตใหโพรซเยอรสามารถถกเรยกใชงานไดจากภายในโมดลเดยวกนเทานน แตถานาหนาดวยคยเวรด Public โพรซเยอรจะสามารถถกเรยกใชไดจากทกโมดลภายในโพรเจคเดยวกน
คาทสงผานใหกบโพรซเยอรตอนทเรยกใชงานโพรซเยอรจะเรยกวา อารกวเมนต (argument) สวนพารามเตอรหมายถงชอตวแปรในโพรซเยอรทเอาไวรบคาอารกวเมนตจากโปรแกรมหลกเขามาใชงาน
ตวอยางท 11.1 โปรแกรมแสดงวนสนสดการรบประกนสนคาโดยใชซบรทน
โปรแกรมนจะเปนการแสดงวนสนสดการรบประกนสนคาโดยผใชงานจะเลอกวนทซอสนคาและปอนจานวนเดอนทรบประกน การเขยนโปรแกรมนจะใชวธการสรางซบรทนเพอใชในการคานวณวนสนสดการรบประกน ใหสรางหนาจอโปรแกรมดงน
รปท 11.3 หนาจอโปรแกรมแสดงวนสนสดการรบประกนสนคา
ตารางท 11.1 แสดงคอนโทรลและคณสมบตของคอนโทรลของโปรแกรมแสดงวนสนสดการรบประกนสนคา
คอนโทรล คณสมบต คาทกาหนด
DateTimePicker Name dtpBuyDate
DateTimePicker Name dtpExpire
Button Name btnCalc
Text แสดง
TextBox Name txtMonth
Text 0
218
ใหดบเบลคลกทพนทวางของฟอรมเพอเขาสหนาตาง Code Editor แลวใหคลกทพนทวางนอกซบรทนอน เขยนคาสงเพอสรางซบรทนชอ CalcExpireDate ดงรป
รปท 11.4 แสดงขนตอนการสรางซบรทน
หลงจากนนใหกดปม Enter โปรแกรมจะสรางบลอกของชดคาสงให
รปท 11.5 แสดงบลอกคาสงของซบรทน
ใหเขยนคาสงดงน
Private Sub CalcExpireDate()
Dim buydate As Date
Dim expireDate As Date
buydate = dtpBuyDate.Value.Date
expireDate = buydate.Date.AddMonths(txtMonth.Text)
dtpExpire.Value = expireDate
End Sub
เมอเขยนคาสงในซบรทน CalcExpireDate แลว ซบรทนนจะไมสามารถทางานไดถาไมมการเรยกใช ใหดบเบลคลกทปมแสดงแลวเขยนคาสงเรยกใชซบรทนดวยการเขยนชอซบรทน ดงคาสงดานลาง
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles _ btnCalc.Click
CalcExpireDate()
End Sub
219
ภาพรวมของคาสงโปรแกรมนจะทางานเมอมการคลกทปมแสดง จะไปเรยกใชซบรทนทชอ CalcExpireDate
รปท 11.6 แสดงการเรยกใชซบรทน
ทดลองรนโปรแกรมแลวเลอกวนทซอสนคา ปอนจานวนเดอนทรบประกน แลวคลกทปม แสดง ผลลพธเปนดงรปท 11.6
รปท 11.7 แสดงผลลพธของโปรแกรมแสดงวนสนสดการรบประกนสนคา
ตวอยางท 11.2 โปรแกรมแสดงวนสนสดการรบประกนสนคาโดยใชซบรทนดวยการสงผานพารามเตอร
โปรแกรมนจะเปนการแสดงวนสนสดการรบประกนสนคาเชนเดยวกบตวอยางท 11.1 แตจะใชวธการสงผานพารามเตอร ใหใชตวอยางโปรแกรมท 11.1 และปรบคาสงโปรแกรมดงน
ทซบรทน CalcExpireDate ใหเพมตวแปร buyDate และ vMonth ในวงเลบหลงชอซบรทนเพอใชเปนพารามเตอรของซบรทนน และปรบคาสงทอยในซบรทนดงคาสงดานลาง
Private Sub CalcExpireDate(buydate As Date, vMonth As Integer)
Dim expiredate As Date
expiredate = buydate.Date.AddMonths(vMonth)
dtpExpire.Value = expiredate
End Sub
220
ปรบคาสงทเรยกใชซบรทนดวยการสงอารกวเมนตเขาไปสองตวคอวนทซอและจานวนเดอนทประกนดวยคาสง
CalcExpireDate(dtpBuyDate.Value.Date, txtMonth.Text)
รปท 11.8 แสดงคาสงโปรแกรมดวยการสงผานพารามเตอร
11.3 ฟงกชน (Function)
ฟงกชนเปนโปรแกรมยอยทมการคนคากลบ (return) ไปยงโปรแกรมหลกดวย ซงคาทสงกลบมานนอาจเปนผลจากการคานวณหรอสถานะทแสดงวาฟงกชนทางานสาเรจหรอลมเหลว
รปท 11.9 การทางานของฟงกชน
ทมา : (สจจะ สรสรงรววร, 2549 : 119)
การประกาศฟงกชนมรปแบบดงน
รปแบบคาสง
[Private | Public | Protected | Friend | Protected Friend]
Function <ชอฟงกชน> ([พารามเตอร]) As <ชนดขอมล>
<ชดคาสง>
[Exit Function]
[Return <คาทตองการสงคนไปยงโปรแกรมหลก>]
End Function
221
ฟงกชนสามารถรบคาพารามเตอรไดเชนเดยวกบซบรทน แตสงทพเศษกวาซบรทนกคอฟงกชนสามารถคนคากลบไปยงโปรแกรมทเรยกมาได ชนดขอมลของคาทสงคนจะระบหลงคยเวรด As
ตวอยางท 11.3 โปรแกรมคานวณภาษมลคาเพมจากราคาสนคา
โปรแกรมนจะเปนการแสดงภาษมลคาเพม 7 % ของมลคาสนคาโดยผใชงานจะปอนราคาสนคาเขาไป การเขยนโปรแกรมนจะใชวธการสรางฟงกชนเพอใชในการคานวณภาษมลคาเพมและสงคาทคานวณไดกลบมา ใหสรางหนาจอโปรแกรมดงน
รปท 11.10 หนาจอโปรแกรมแสดงคานวณภาษมลคาเพมจากราคาสนคา
ตารางท 11.2 แสดงคอนโทรลและคณสมบตของคอนโทรลของโปรแกรมคานวณภาษมลคาเพมจากราคาสนคา
คอนโทรล คณสมบต คาทกาหนด
TextBox Name txtPrice
Label Name lblVat
Button Name btnCalc
Text คานวณ
ใหดบเบลคลกทพนทวางของฟอรมเพอเขาสหนาตาง Code Editor แลวใหคลกทพนทวางนอกซบรทนอน เขยนคาสงเพอสรางฟงกชน ดงน
Private Function CalcVat(pPrice As Single) As Single
CalcVat = pPrice * 0.07
End Function
222
จากนนเขยนคาสงเพอเรยกใชฟงกชนทปมคานวณและใหฟงกชนสงคามาแสดงทลาเบลดวยคาสง
Private Sub btnCalc_Click(sender As Object, e As EventArgs) Handles _ btnCalc.Click
lblVat.Text = CalcVat(txtPrice.Text)
End Sub
รปท 11.11 แสดงหนาจอ Code Editor เมอสรางฟงกชนและเรยกใช
จากคาสงขางตนเมอมการเรยกใชฟงกชนท btnCalc จะสงผานพารามเตอรเขาไปคานวณในฟงกชน 1 คานนกคอ ราคาสนคา (txtPrice) และฟงกชนจะมตวแปร pPrice เปนพารามเตอรทรบคาทสงเขามา เมอฟงกชนคานวณเสรจจะสงคากลบไปทลาเบล (lblVat) โดยคาทสงกลบไปใหจะเปนขอมลชนด Single
รปท 11.12 แสดงผลลพธโปรแกรมเมอมการเรยกใชฟงกชน
11.4 ฟงกชนทมใน VB 2012 (Built-in Function)
ใน VB 2012 มฟงกชนทใหมาแลวมากมายโดยไมจาเปนตองเขยนฟงกชนนนเอง ตงแตการคานวณคณตศาสตร, วนท, การจดการกบสตรง เปนตน ซงจะชวยลดเวลาในการพฒนาโปรแกรมของไปไดมาก
223
11.4.1 ฟงกชนทางคณตศาสตร
Fix Funtion
เปนฟงกชนการแกไขตดสวนทศนยมของจานวนบวกและสงคากลบมาจานวนเตม ตวอยางเชน Fix
(9.2) = 9 หรอ Fix (-9.4) = -9
ตวอยางคาสง
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As _ System.EventArgs) Handles
Button1.Click
Dim num1, num2 As Single
num1 = TextBox1.Text
num2 = Fix(num1)
Label1.Text = num2
End Sub
Int Function
เปนฟงกชนทแปลงตวเลขเปนจานวนเตมโดยการตดทศนยมของจานวนเตม เชน
Int(2.4) = 2 Int(6.9) = 6
Int(-5.7) = -6 Int(-99.8) = 100
Log Function
ฟงกชนทสงกลบคาลอการทมของตวเลข ตวอยางเชน log (10) = 2.302585
ตวอยางคาสง
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As _ System.EventArgs) Handles
Button1.Click
Dim num1, num2 As Single
num1 = TextBox1.Text
num2 = Math.Log(num1)
Label1.Text = num2
End Sub
224
Rnd( ) Function
Rnd เปนฟงกชนทเปนการสมตวเลข ตวอยางเชนถาตองการทจะสมตวเลขจาก 6 จานวนเตมตงแต 1-6 ตองแปลงตวเลขสมใหเปนจานวนเตมโดยใชสตร Int (Rnd * 6) 1
ตวอยางคาสง
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As _ System.EventArgs) Handles
Button1.Click
Dim num as integer
Randomize( )
Num=Int(Rnd()*6)+1
Label1.Text=Num
End Sub
Round Function
เปนฟงกชนทใชปดเศษทศนยมโดยระบจานวนของตาแหนงทศนยมได มรปแบบคอ (n,m)
ซง n คอจานวนตวเลขทมจดทศนยม และ m คอตาแหนงทศนยมทตองการ ตวอยางเชน Math.Round (7.2567, 2) = 7.26
ตวอยางคาสง
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As _ System.EventArgs) Handles
Button1.Click
Dim num1, num2 As Single
num1 = TextBox1.Text
num2 = Math.Round(num1, 2)
Label1.Text = num2
End Sub
11.4.2 ฟงกชนเกยวกบขอความ
225
Mid Function
เปนฟงกชนทใชสาหรบดงขอความบางสวนจากขอความทตองการ มรปแบบคอ
Mid(phrase, position,num)
โดยท
Pharase คอ ขอความทตองการดง
Position คอ ตาแหนงของตวอกษรแรกทตองการดงมาแสดง
num คอ จานวนตวอกษรทตองการดงมาแสดง
ตวอยางคาสง
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As _ System.EventArgs) Handles
Button1.Click
Dim myPhrase As String
myPhrase = Textbox1.text
Label1.Text = Mid(myPhrase, 2, 6)
End Sub
รปท 11.13 แสดงผลลพธการใชงาน Mid Function
Right Function
เปนฟงกชนทใชสาหรบดงขอความจากดานขวาของขอความทตองการ มรปแบบคอ
Microsoft.Visualbasic.Right(phrase,num)
โดยท
Pharase คอ ขอความทตองการดง
num คอ จานวนตวอกษรทตองการดงมาแสดง
226
ตวอยางคาสง
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As _ System.EventArgs) Handles
Button1.Click
Dim myPhrase As String
myPhrase = Textbox1.text
Label1.Text = Microsoft.Visualbasic.Right(myPhrase,5)
End Sub
รปท 11.14 แสดงผลลพธการใชงาน Right Function
Left Function
เปนฟงกชนทใชสาหรบดงขอความจากดานซายของขอความทตองการ มรปแบบคอ
Microsoft.Visualbasic.Left(phrase,num)
โดยท
Pharase คอ ขอความทตองการดง
num คอ จานวนตวอกษรทตองการดงมาแสดง
ตวอยางคาสง
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As _ System.EventArgs) Handles
Button1.Click
Dim myPhrase As String
myPhrase = Textbox1.text
Label1.Text = Microsoft.Visualbasic.Left(myPhrase,5)
End Sub
227
รปท 11.15 แสดงผลลพธการใชงาน Left Function
UCase Function
เปนฟงกชนทใชสาหรบแสดงขอความทตองการใหเปนตวอกษรพมพใหญ มรปแบบคอ
Microsoft.Visualbasic.UCase(phrase)
โดยท
Pharase คอ ขอความทตองการแสดง
ตวอยางคาสง
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As _ System.EventArgs) Handles
Button1.Click
Dim myPhrase As String
myPhrase = Textbox1.text
Label1.Text = Microsoft.Visualbasic.UCase(myPhrase)
End Sub
รปท 11.16 แสดงผลลพธการใชงาน UCase Function
228
LCase Function
เปนฟงกชนทใชสาหรบแสดงขอความทตองการใหเปนตวอกษรพมพเลกมรปแบบคอ
Microsoft.Visualbasic.LCase(phrase)
โดยท
Pharase คอ ขอความทตองการแสดง
ตวอยางคาสง
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As _ System.EventArgs) Handles
Button1.Click
Dim myPhrase As String
myPhrase = Textbox1.text
Label1.Text = Microsoft.Visualbasic.LCase(myPhrase)
End Sub
รปท 11.17 แสดงผลลพธการใชงาน LCase Function
11.4.4 ฟงกชนเกยวกบวนเดอนป
Now Function
เปนฟงกชนทใชสาหรบแสดงวนทและเวลาปจจบน ToDay Function
เปนฟงกชนทใชสาหรบแสดงวนเดอนปปจจบน Day Function
เปนฟงกชนทใชสาหรบแสดงวนทปจจบน Microsoft.VisualBasic.DateAndTime.Day(DateValue )
โดยท DateValue คอ วนเดอนปทตองการ เชน
229
Dim oldDate As Date
Dim oldDay As Integer
oldDate = #2/12/2012#
oldDay = Microsoft.VisualBasic.DateAndTime.Month(oldDate)
ผลลพธคอ 2
Month Function
เปนฟงกชนทใชสาหรบแสดงเดอนเปนตวเลข Microsoft.VisualBasic.DateAndTime. Month (DateValue )
โดยท DateValue คอ วนเดอนปทตองการ เชน
Dim oldDate As Date
Dim oldMonth As Integer
oldDate = #2/12/2012#
oldMonth = Microsoft.VisualBasic.DateAndTime.Month(oldDate)
ผลลพธคอ 12
Year Function
เปนฟงกชนทใชสาหรบแสดงป Microsoft.VisualBasic.DateAndTime.Year (DateValue )
โดยท DateValue คอ วนเดอนปทตองการ เชน
Dim oldDate As Date
Dim oldYear As Integer
oldDate = #2/12/2012#
oldYear = Microsoft.VisualBasic.DateAndTime.Year (oldDate)
ผลลพธคอ 2012
MonthName Function
เปนฟงกชนทใชสาหรบแสดงชอของเดอน MonthName (MonthValue )
โดยท DateValue คอ เดอนเปนตวเลข
230
ตวอยางคาสง
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
Label1.Text = Now
Label2.Text = Today
Label3.Text = Microsoft.VisualBasic.DateAndTime.Day(Now)
Label4.Text = Microsoft.VisualBasic.DateAndTime.Month(Now)
Label5.Text = Microsoft.VisualBasic.DateAndTime.Year(Now)
Label6.Text = MonthName(4)
End Sub
รปท 11.18 แสดงผลลพธของการใชฟงกชนเกยวกบวนเดอนป
สรป
โปรแกรมขนาดใหญควรแบงงานออกเปนสวนๆทเรยกวา โปรแกรมยอย หรอโพรซเยอร (procedure) ซงมขอดคอ ชวยใหเขยน,อาน และตรวจสอบโปรแกรมไดงาย, ลดความซ าซอนของโปรแกรมทมการทางานอยางเดยวกน, สามารถนาเอาโพรซเยอรไปใชงานในโปรแกรมอนไดอก
ซบรทนเปนโปรแกรมยอยททางานโดยไมมการสงคน (return) ผลลพธกลบไปยงคาสงทเรยกใช ฟงกชนเปนโปรแกรมยอยทมการคนคากลบ (return) ไปยงโปรแกรมหลกดวย ซงคาทสงกลบมา
นนอาจเปนผลจากการคานวณหรอสถานะทแสดงวาฟงกชนทางานสาเรจหรอลมเหลว
ใน VB 2012 มฟงกชนทใหมาแลวมากมายโดยไมจาเปนตองเขยนฟงกชนนนเอง ซงจะชวยลดเวลาในการพฒนาโปรแกรมของไปไดมาก
231
แบบฝกหด
1. โปรแกรมยอยคออะไร ทาไมจงตองม
2. ซบรทนและฟงกชนแตกตางกนอยางไร
3. จากโจทยโปรแกรมแสดงเกรดของนกศกษาโดยคดจากคะแนนโดยมหลกเกณฑดงตอไปน
คะแนนอยในชวง เกรด
คะแนน > 100 Error
คะแนน >= 80 A
คะแนน >= 70 B
คะแนน >= 60 C
คะแนน >= 50 D
นอยกวา 50 F
ใหนกศกษาสรางโปรแกรมทมซบรทนทใชแสดงเกรดของนกศกษา
4. จากโจทยโปรแกรมตรวจสอบชวงของคะแนนทผใชปอนเขามาโดยมชวงของคะแนนดงน
คะแนนอยในชวง ประเมน
คะแนน >= 80 ดเดน
คะแนน >= 70 ด
คะแนน >= 60 ปานกลาง
คะแนน >= 50 พอใช
ไมตรงกบชวงใดเลย ไมผาน
ใหนกศกษาสรางฟงกชนทเพอแสดงผลการประเมน
232
เอกสารอางอง
สจจะ สรสรงรววร. คมอ Visual Basic 2005 ฉบบสมบรณ. นนทบร : ไอดซฯ, 2549.
สรสทธ ควประสพศกด และนนทน แขวงโสภา, อนไซด Visual Basic .net ฉบบสมบรณ. กรงเทพ : โปรวชน, 2546
Stephens, Rod. Visual Basic 2012 PROGRAMMER’S REFERENCE. Indianapolis : John Wiley &
Sons, Inc, 2012.
Functions (Visual Basic). Retrieved Febrary 17, 2012, from http://msdn.microsoft.com/en-
us/library/32s6akha(v=vs.90).aspx
บรรณานกรม
กตต ภกดวฒนะกล. (2546). คมภรระบบสารสนเทศ. พมพครงท 2. กรงเทพมหานคร : เคทพ คอมพ แอนด คอนซลท.
ฝายตาราวชาการคอมพวเตอร. (2554). หลกการเขยนโปรแกรม. กรงเทพฯ : ซเอดยเคชน.
พนดา พานชกล. (2551). การเขยนโปรแกรมคอมพวเตอรเบองตนดวยภาษา JAVA. กรงเทพฯ : เคพท คอมพ แอนด คอนซลท.
พรอมเลศ หลอวจตร. (2554). คมอเรยน visual basic 2010. กรงเทพฯ : โปรวชน . สจจะ สรสรงรววร. (2549). คมอ Visual Basic 2005 ฉบบสมบรณ. นนทบร : ไอดซฯ, 2549.
สรสทธ ควประสพศกด นนทน แขวงโสภา. (2546). อนไซด Visual Basic .net ฉบบสมบรณ. กรงเทพ : โปรวชน.
โอภาส เอยมสรวงศ. (2547). การวเคราะหและออกแบบระบบ. กรงเทพ: ซเอดยเคชน.
Rod Stephens.(2012). Fundamentals of Microsoft .NET Programming. California : O’Reilly Media Inc,
David I. Schneider. (1999). Computer Programming Concepts and Visual Basic. New Jersey : PEARSON
CUSTOM PUBLISHING.
Diane Zak. (2012). Clearly Visual Basic Programming With Microsoft Visual Basic 2010. MA : Course
Technology.
Diane Zak. (2012). CLEARY VISUAL BASIC PROGRAMMING WITH MICROSOFT VISUAL
BASIC 2012. 3rd. Boston : Course Technology.
Do...Loop Statement (Visual Basic). Retrieved Febrary 14, 2012, from http://msdn.microsoft.com/en-
us/library/eked04a7.aspx
For...Next Statement (Visual Basic). Retrieved Febrary 14, 2012, from http://msdn.microsoft.com/en-
us/library/vstudio/5z06z1kb(v=vs.100).aspx
Functions (Visual Basic). Retrieved Febrary 17, 2012, from http://msdn.microsoft.com/en-
us/library/32s6akha(v=vs.90).aspx
http://th.wikipedia.org/wiki/โปรแกรมคอมพวเตอร
If...Then...Else Statement (Visual Basic). Retrieved January 8, 2012, from http://msdn.microsoft.com/en-
us/library/752y8abs.aspx
234
Jo Ann Smith. (2011). MICROSOFT VISUAL BASIC PROGRAMS TO ACCOMPANY
PROGRAMMING LOGIC AND DESIGN. 6th. Boston : Course Technology.
Kendall Kenneth E. and Kendall Julie E. (2003). Systems Analysis and Design. 5th. Jurong : Pearson
Education Aisa Pte Ltd.
Microsoft . (2012). Explore the Visual Studio IDE with C# or Visual Basic. Retrieved January 8, 2012,
from http://msdn.microsoft.com/en-us/library/vstudio/ms165079(v=vs.110).aspx
Rod Stephens. (2012). Visual Basic 2012 PROGRAMMER’S REFERENCE. Indianapolis : John Wiley
& Sons, Inc.
Rod Stephens. Start Here Fundamentals of Microsoft .NET Programming. California : O’Reilly Media,
Inc, 2011.
Select...Case Statement (Visual Basic). Retrieved Febrary 14, 2012, from http://msdn.microsoft.com/en-
us/library/cy37t14y.aspx
TextBox Class. Retrieved January 8, 2012, from http://msdn.microsoft.com/en-
us/library/system.windows.forms.TextBox(v=vs.110).aspx
Using the Check Box Control. Retrieved Febrary 14, 2012, from http://msdn.microsoft.com/en-
us/library/752y8abs.aspx
top related