เอกสารประกอบการสอนportal5.udru.ac.th/ebook/pdf/upload/174f4lhdk688fuh2fluv.pdf ·...

Post on 09-Jan-2020

6 Views

Category:

Documents

1 Downloads

Preview:

Click to see full reader

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