ค ำน ำ - pntc.ac.th · เฉลยแบบทดสอบก่อนเรียน 5...

280

Upload: doandan

Post on 29-Aug-2019

232 views

Category:

Documents


0 download

TRANSCRIPT

ค ำน ำ คมอครใชรวมกบเอกสารประกอบการสอน เลมนประกอบไปดวยแบบทดสอบกอนเรยน/หลงเรยน แบบฝกหด ใบงาน ไดจดท าขนเพอใชงานรวมกบเอกสารประกอบการสอนรายวชา การโปรแกรมเชงวตถ 1 รหส 3901- 2006 หลกสตรประกาศนยบตรวชาชพชนสง (พ.ศ. 2546 ) ส านกงานคณะกรรมการการอาชวศกษา ส าหรบแบบทดสอบกอนเรยน/หลงเรยน นนผจดท าไดด าเนนการวเคราะหหาคาอ านาจจ าแนก ความยากงายของขอสอบ และท าการคดสรรมาเฉพาะขอทมคณภาพ เพอใหสามารถวดผลการศกษาของนกศกษาได สวนแบบฝกหดเปนการฝกสงเสรมการเรยนรใหกบนกศกษา เพอใหนกศกษาไดมความร ความเขาใจเกยวกบเนอหามากยงขน และใบงานใชส าหรบการฝกทกษะใหกบนกศกษา เพอใหนกศกษาไดมทกษะในการเขยนโปรแกรมคอมพวเตอรภาษา C++ มากยงขน

วฒวงศ เอยดศรชาย

30 มกราคม 2557

สำรบญ

เรอง หนา ค าน า ก สารบญ ข ค าแนะน าการใชงาน ช

บทท 1 ควำมรพนฐำนเกยวกบคอมพวเตอร 1 แบบทดสอบกอนเรยน 2 เฉลยแบบทดสอบกอนเรยน 5 ใบแบบฝกหด 6 ใบเฉลยแบบฝกหด 7 แบบทดสอบหลงเรยน 10 เฉลยแบบทดสอบหลงเรยน 13

บทท 2 พนฐำนภำษำ C++ 15 แบบทดสอบกอนเรยน 16 เฉลยแบบทดสอบกอนเรยน 19 ใบแบบฝกหด 20 ใบเฉลยแบบฝกหด 21 ใบงานบทท 2 23 เฉลยใบงานบทท 2 26 แบบทดสอบหลงเรยน 30 เฉลยแบบทดสอบหลงเรยน 33 บทท 3 นพจนและตวด ำเนนกำร 35

แบบทดสอบกอนเรยน 36 เฉลยแบบทดสอบกอนเรยน 38 ใบแบบฝกหด 39 ใบเฉลยแบบฝกหด 40 ใบงาน 42 เฉลยใบงาน 44 แบบทดสอบหลงเรยน 46 เฉลยแบบทดสอบหลงเรยน 48

สำรบญ

เรอง หนา บทท 4 โครงสรำงควบคมกำรเขยนโปรแกรม 49

แบบทดสอบกอนเรยน 50 เฉลยแบบทดสอบกอนเรยน 55 ใบแบบฝกหด 56 ใบเฉลยแบบฝกหด 57 ใบงาน 59 เฉลยใบงาน 65 แบบทดสอบหลงเรยน 73 เฉลยแบบทดสอบหลงเรยน 78

บทท 5 ฟงกชน 79 แบบทดสอบกอนเรยน 80 เฉลยแบบทดสอบกอนเรยน 83 ใบแบบฝกหด 84 ใบเฉลยแบบฝกหด 85 ใบงาน 87 เฉลยใบงาน 90 แบบทดสอบหลงเรยน 94 เฉลยแบบทดสอบหลงเรยน 97

บทท 6 คำคงท พอยนเตอรและกำรอำงอง 99 แบบทดสอบกอนเรยน 100 เฉลยแบบทดสอบกอนเรยน 103 ใบแบบฝกหด 104 ใบเฉลยแบบฝกหด 105 ใบงาน 107 เฉลยใบงาน 109 แบบทดสอบหลงเรยน 112 เฉลยแบบทดสอบหลงเรยน 115

สำรบญ

เรอง หนา บทท 7 ควำมรพนฐำนเกยวกบกำรเขยนโปรแกรมเชงวตถ 117

แบบทดสอบกอนเรยน 118 เฉลยแบบทดสอบกอนเรยน 121 ใบแบบฝกหด 122 ใบเฉลยแบบฝกหด 123 ใบงาน 128 เฉลยใบงาน 129 แบบทดสอบหลงเรยน 133 เฉลยแบบทดสอบหลงเรยน 136

บทท 8 คลำสและวตถ 137 แบบทดสอบกอนเรยน 138 เฉลยแบบทดสอบกอนเรยน 141 ใบแบบฝกหด 142 ใบเฉลยแบบฝกหด 143 ใบงาน 144 เฉลยใบงาน 145 แบบทดสอบหลงเรยน 148 เฉลยแบบทดสอบหลงเรยน 151

บทท 9 โอเวอรโหลดดง 153 แบบทดสอบกอนเรยน 154 เฉลยแบบทดสอบกอนเรยน 158 ใบแบบฝกหด 159 ใบเฉลยแบบฝกหด 160 ใบงาน 162 เฉลยใบงาน 163 แบบทดสอบหลงเรยน 167 เฉลยแบบทดสอบหลงเรยน 171

สำรบญ

เรอง หนา บทท 10 การสบทอดคณสมบต 173

แบบทดสอบกอนเรยน 174 เฉลยแบบทดสอบกอนเรยน 177 ใบแบบฝกหด 178 ใบเฉลยแบบฝกหด 179 ใบงาน 180 เฉลยใบงาน 182 แบบทดสอบหลงเรยน 185 เฉลยแบบทดสอบหลงเรยน 188

บทท 11 โพลมอรฟซม 189 แบบทดสอบกอนเรยน 190 เฉลยแบบทดสอบกอนเรยน 193 ใบแบบฝกหด 194 ใบเฉลยแบบฝกหด 195 ใบงาน 196 เฉลยใบงาน 202 แบบทดสอบหลงเรยน 208 เฉลยแบบทดสอบหลงเรยน 211

บทท 12 เทมเพลต 213 แบบทดสอบกอนเรยน 214 เฉลยแบบทดสอบกอนเรยน 217 ใบแบบฝกหด 218 ใบเฉลยแบบฝกหด 219 ใบงาน 221 เฉลยใบงาน 225 แบบทดสอบหลงเรยน 228 เฉลยแบบทดสอบหลงเรยน 231

สำรบญ

เรอง หนา บทท 13 เอกเซพชน 233

แบบทดสอบกอนเรยน 234 เฉลยแบบทดสอบกอนเรยน 237 ใบแบบฝกหด 238 ใบเฉลยแบบฝกหด 239 ใบงาน 241 เฉลยใบงาน 243 แบบทดสอบหลงเรยน 246 เฉลยแบบทดสอบหลงเรยน 249

บทท 14 กำรจดกำรไฟล 251 แบบทดสอบกอนเรยน 252 เฉลยแบบทดสอบกอนเรยน 256 ใบแบบฝกหด 257 ใบเฉลยแบบฝกหด 258 ใบงาน 261 เฉลยใบงาน 262 แบบทดสอบหลงเรยน 266 เฉลยแบบทดสอบหลงเรยน 270

ค ำแนะน ำกำรใชงำน 1. แบบทดสอบกอนเรยน ส าหรบแบบทดสอบกอนเรยนจะมการใชทดสอบกบนกศกษา

กอนการเรยนในแตละบทโดยครจะตองทดสอบกบนกศกษากอนเรยน เพอทจะตรวจสอบวานกศกษามความรพนฐานในเรองนน ๆ มากนอยเพยงใด

2. แบบทดสอบหลงเรยน ส าหรบแบบทดสอบหลงเรยนจะมการใชงานเมอนกศกษาไดมการเรยนเนอหา ท าแบบฝกหดและใบงานเสรจแลว ซงจะเปนการวดผลสมฤทธทางการเรยนของนกศกษา ดความกาวหนาทางการเรยน

3. แบบฝกหด ส าหรบสงเสรมการเรยนรของนกศกษา ฝกใหนกศกษาไดมความเขาใจเนอหาการเรยนมากยงขน โดยครท าการตรวจใหคะแนน และอธบายค าตอบใหนกศกษาเขาใจ

4. ใบงานส าหรบสงเสรมการเรยนรดานทกษะใหกบนกศกษา โดยนกศกษาจะตองฝกปฏบตตามใบงานทก าหนดให และครท าการตรวจใหคะแนน

1

บทท 1 เรอง ควำมรพนฐำนเกยวกบคอมพวเตอร

2

แบบทดสอบกอนเรยน

บทท 1 เรอง ควำมรพนฐำนเกยวกบคอมพวเตอร ค ำชแจง 1. ใหนกศกษาเลอก กากบาท X ลงในกระดาษค าตอบทแจกใหโดยเลอกขอทถกทสดเพยงขอเดยว 2. ตอบถกไดคะแนนขอละ 1 คะแนน ตอบผดได 0 คะแนน 3. แบบทดสอบมทงหมด 10 ขอ ---------------------------------------------------------------------------------------------------------------------- 1. ขอใดคอองคประกอบของระบบคอมพวเตอรทถกตองทสด

ก. ฮารดแวร ซอฟตแวร ขอมล นกวเคราะหระบบ ข. ข. ซอฟตแวร ฮารดแวร สารสนเทศ บคลากร ค. ฮารดแวร ซอฟตแวร ขอมล บคลากร ง. ง. ซอฟตแวร ฮารดแวร สารสนเทศ ผบรหารระบบคอมพวเตอร

2. ขอใดคอความหมายของซอฟตแวรคอมพวเตอรทถกตองทสด ก. โปรแกรมหรอชดค าสงทเขยนขนเพอสงใหคอมพวเตอรท างานไดโดยท าหนาทเปน

ตวกลางระหวางผใชกบอปกรณคอมพวเตอร ข. โปรแกรมหรอชดค าสงทเขยนขนเพอสงใหคอมพวเตอรท างานอตโนมต ค. สงสรางสรรคเชงปญญา เพอท าใหระบบท าการประมวลผลขอมล ซงประกอบจาก

โปรแกรม กระบวนการ ขอก าหนดและเอกสารทเกยวของ โปรแกรมเมอร ง. สงสรางสรรคเชงปญญา เพอท าใหระบบท าการประมวลผลขอมล ขอก าหนดและเอกสารท

เกยวของ 3. ขอใดตอไปนกลาวไดถกตองทสด

ก. การเขยนโปรแกรมภาษาแอสแซมบล จะตองใชตวแปลภาษา ท าการแปลเปนภาษาเครอง ซง อยในยคของโปรแกรมภาษาคอมพวเตอรยคท 1

ข. การเขยนโปรแกรมภาษาเครองสามารถเขยนไดเฉพาะยคการเขยนโปรแกรมภาษายคท1 ค. ภาษาคอมพวเตอร ยคท 3 เปนการเขยนโปรแกรมระดบสงมาก ง. ภาษาคอมพวเตอรในยคท 1 และยคท 2 ถอวาเปนโปรแกรมภาษาระดบต า

4. การเขยนโปรแกรมเทคนคเชงกระบวนการ เรมเกดขนในการเขยนโปรแกรมคอมพวเตอรยคใด ก. ยคท 2 ข. ยคท 3 ค. ยคท 4 ง. ยคท 5

3

5. ตวแปลภาษาทมการแปลทงโปรแกรมในครงเดยว ผลจากการแปลสามารถเกบไวและเรยกใชงานไดภายหลงโดยไมตองท าการแปลโปรแกรมซ าอก เปนตวแปลภาษาชนดใด ก. แอสแซมเบลอร และ แอสแซมบล ข. อนเทอรพรเตอร ค. คอมไพเลอร ง. อนเทอรพรเตอรและคอมไพเลอร

6. ตวแปลภาษาทมการแปลทละบรรทดค าสง และเมอการใชงานแตละครงจะตองท าการแปลโปรแกรมใหมเสมอ ก. แอสแซมเบลอร และ แอสแซมบล ข. อนเทอรพรเตอร ค. คอมไพเลอร ง. อนเทอรพรเตอรและคอมไพเลอร

7. โปรแกรมภาษาในขอใดทมความเกาแกมากทสด ก. COBOL ข. FORTRAN ค. C ง. Pascal

8. โปรแกรมภาษาคอมพวเตอรในขอใดทมความยดหยนสง และไดรบความนยมใชงานกนอยางแพรหลาย ก. FORTRAN ข. Pascal ค. BASIC ง. C

9. ขอใดเปนระบบปฏบตการคอมพวเตอรแบบเดยว ก. Windows Server2000 ข. Linux ค. Unix ง. Max OS X

4

10. ขอใดมใชอปกรณน าเขาขอมลเพอน าเขาสระบบคอมพวเตอรส าหรบการประมวล ก. จอภาพคอมพวเตอรชนด CRT ข. เมาส ค. จอภาพคอมพวเตอรแบบสมผส ง. เครองอานบารโคด

5

เฉลยแบบทดสอบกอนเรยน บทท 1 เรอง ควำมรพนฐำนเกยวกบคอมพวเตอร

ขอท เฉลย

1 ค 2 ก 3 ง 4 ก 5 ค 6 ก 7 ข 8 ง 9 ง

10 ก

6

ใบแบบฝกหด บทท 1 เรอง ควำมรพนฐำนเกยวกบคอมพวเตอร

ค ำชแจง 1. แบบฝกหดมทงหมด 4 ขอใหนกศกษาท าหมดทกขอ 2. คะแนนรวมทงหมด 50 คะแนน ===================================================================== 1. ใหนกศกษาบอกองคประกอบของระบบคอมพวเตอรมอะไรบาง พรอมอธบาย (20 คะแนน) 2. ใหนกศกษาบอกยคของคอมพวเตอรมกยค พรอมอธบาย (10 คะแนน) 3. ใหนกศกษาบอกตวแปลภาษาคออะไร และมกประเภท (10 คะแนน) 4. ใหนกศกษาบอกความหมายของโปรแกรมภาษา และยกตวอยางโปรแกรมภาษามาอยางนอย 2 ภาษาและอธบายรายละเอยด (10 คะแนน)

7

ใบเฉลยแบบฝกหด บทท 1 เรอง ควำมรพนฐำนเกยวกบคอมพวเตอร

ค ำชแจง 1. แบบฝกหดมทงหมด 4 ขอใหนกศกษาท าหมดทกขอ 2. คะแนนรวมทงหมด 50 คะแนน ===================================================================== 1. ใหนกศกษาบอกองคประกอบของระบบคอมพวเตอรมอะไรบาง พรอมอธบาย (20 คะแนน) ตอบ องคประกอบของระบบคอมพวเตอร ประกอบดวย 4 อยาง คอ

1. ฮารดแวร คอ ชนสวนของเครองคอมพวเตอรทมองเหน จบตองได เชน จอภาพ แรม ซพย คยบอรด เมาส

2. ซอฟตแวร คอ โปรแกรมคอมพวเตอรทประกอบดวยค าสงตาง ๆ ทสามารถสงใหคอมพวเตอรท างานได โดยซอฟตแวรจะถกเขยนขนโดยโปรแกรมเมอร หรอผทสนใจในการเขยนโปรแกรม ซอฟตแวร เปนสงทเปนนามธรรม ไมสามารถมองเหน จบตองได โดยซอฟตแวรสามารถแบงออกไดเปน 2 ประเภทใหญ ๆ คอ

1. ซอฟตแวรระบบ คอ ซอฟตแวรทท าหนาทในการควบคมการท างานของฮารดแวร จดสรรทรพยากรของระบบใหมการใชงานทมประสทธภาพ เชน ระบบปฏบตการ Microsoft Windows 8 ระบบปฏบตการ Linux RedHat เปนตน

2. ซอฟตแวรประยกต คอ ซอฟตแวรทท างานบนซอฟตแวรระบบมหนาทท างานเฉพาะดานเทานน โดยท างานตดตอกบซอฟตแวรระบบและตดตอกบผใชงาน เชน โปรแกรม Microsoft Office2014 เปนตน

3. ขอมล คอ ขอเทจจรงใด ๆ ทน าเขาสระบบคอมพวเตอร ส าหรบการประมวลผลเพอใหไดสารสนเทศตามความตองการ

1. แหลงทมาของขอมลไดเปน 2 ประเภทคอ 1. แหลงขอมลภายใน 2. แหลงขอมลภายนอก

2. คณสมบตของขอมลทด 1. ความถกตอง 2. ความเปนปจจบน 3. ตรงตามความตองการ 4. ความสมบรณ 5. สามารถตรวจสอบได

8

3. การแบงล าดบชนของขอมล สามารถแบงออกไดดงน บต ไบต ฟลด เรคคอรด ไฟล ฐานขอมล

4. บคลากร คอ บคคลทท างานเกยวของกบคอมพวเตอรโดยมรความสามารถแตกตางออกไปตามประเภทของบคลากร ประเภทของบคลากรประกอบดวย 3 กลม คอ 1. ผใชงานทวไป 2. ผเชยวชาญ และ 3. ผบรหาร

2. ใหนกศกษาบอกยคของคอมพวเตอรมกยค พรอมอธบาย (10 คะแนน) ตอบ ยคของภาษาคอมพวเตอรมทงหมด 5 ยค คอ 1. ภาษาคอมพวเตอรยคท 1 เปนการเขยนโปรแกรมดวยภาษาเครอง (machine language) ซงประกอบดวยสญลกษณคอ 0 กบ 1 เปนภาษาระดบต า ผทเขยนโปรแกรมจะตองมความร ความเชยวชาญสง 2. ภาษาคอมพวเตอรยคท 2 เปนการเขยนโปรแกรมดวยภาษาแอสแซมบล และมตวแปลภาษาชอแอสแซมเบลอร และยงถอวาเปนภาษาระดบต า 3. ภาษาคอมพวเตอรยคท 3 เปนการเขยนโปรแกรมดวยภาษาระดบสง มรปแบบการเขยนเปนเชงกระบวนการ มตวแปลภาษาท าหนาทในการแปลจากภาษาระดบสงเปนภาษาเครอง 4. ภาษาคอมพวเตอรยคท 4 เปนการเขยนโปรแกรมดวยภาษาระดบสงมาก ลกษณะการเขยนโปรแกรมเปนการหยบแลววาง หลงจากนนท าการเขยนโปรแกรมเพมเตม มการเขยนโปรแกรมไมเปนล าดบขนตอน ผเขยนโปรแกรมสามารถศกษาใหเขาใจไดอยางรวดเรว 5. ภาษาคอมพวเตอรยคท 5 เปนภาษาทมความใกลเคยงกบภาษามนษย เรยกวา ภาษาธรรมชาต มการท างานโดยอาศยฐานความรเพอชวยในการแปลความหมายของค าสงตาง ๆ และท าใหคอมพวเตอรเขาใจและจดจ าโครงสรางนน ๆ ไว 3. ใหนกศกษาบอกตวแปลภาษาคออะไร และมกประเภท (10 คะแนน) ตอบ ตวแปลภาษาคอมพวเตอร ท าหนาทเปนตวกลางในการแปลความหมาย ของภาษาชดค าสงทมนษยสรางขนมา ใหอยในรปแบบภาษาทเครองคอมพวเตอรสามารถรบร และเขาใจได โดยตวแปลภาษาแบงออกเปน 3 ประเภท คอ 1. ตวแปลภาษาแอสแซมเบลอร ท าหนาทแปลภาษาแอสแซมบล เปนภาษาเครอง 2. ตวแปลภาษาอนเทอรพรเตอร ท าหนาทแปลภาษาระดบสงเปนภาษาเปาหมาย โดยแปลทละบรรทด เมอมการใชงานจะตองท าการแปลใหมทกครง 3. ตวแปลภาษาคอมไพเลอร แปลภาษาระดบสงเปนภาษาเปาหมาย โดยแปลครงเดยวทงโปรแกรม และเกบภาษาเปาหมายไว เมอตองการใหท างานสามารถเรยกใชงานไดทนทโดยไมตองท าการแปลโปรแกรมใหม

9

4. ใหนกศกษาบอกความหมายของโปรแกรมภาษา และยกตวอยางโปรแกรมภาษามาอยางนอย 2 ภาษาและอธบายรายละเอยด (10 คะแนน) ตอบ โปรแกรมภาษา หมายถง ระบบทมการใชงานสญลกษณหรอเครองหมายเพออธบายการค านวณ โดยคอมพวเตอรสามารถอานได และอยในรปแบบทมนษยสามารถรบรและเขาใจได โดยโปรแกรมภาษาจะมรปแบบกฎเกณฑ (Syntax) ของภาษาเปนเงอนไขในการท างาน และความหมาย (Semantics) ของค าสงในโปรแกรมภาษา ตวอยางโปรแกรมภาษา 2 ชนด 1. ภาษา C++ เปนโปรแกรมภาษาส าหรบงานทวไป เปนการเขยนโปรแกรมเชงกระบวนการ และเขยนโปรแกรมเชงวตถ พฒนาตอมาจาก ภาษา C 2. ภาษา JAVA เปนโปรแกรมภาษาส าหรบงานทวไป เขยนโปรแกรมเชงวตถ การท างานไมขนอยกบแพลตฟอรมคอมพวเตอร

10

แบบทดสอบหลงเรยน บทท 1 เรอง ควำมรพนฐำนเกยวกบคอมพวเตอร

ค ำชแจง 1. ใหนกศกษาเลอก กากบาท X ลงในกระดาษค าตอบทแจกใหโดยเลอกขอทถกทสดเพยงขอเดยว 2. ตอบถกไดคะแนนขอละ 1 คะแนน ตอบผดได 0 คะแนน 3. แบบทดสอบมทงหมด 10 ขอ ---------------------------------------------------------------------------------------------------------------------- 1. ขอใดคอความหมายของซอฟตแวรคอมพวเตอรทถกตองทสด

ก. โปรแกรมหรอชดค าสงทเขยนขนเพอสงใหคอมพวเตอรท างานไดโดยท าหนาทเปนตวกลางระหวางผใชกบอปกรณคอมพวเตอร

ข. โปรแกรมหรอชดค าสงทเขยนขนเพอสงใหคอมพวเตอรท างานอตโนมต ค. สงสรางสรรคเชงปญญา เพอท าใหระบบท าการประมวลผลขอมล ซงประกอบจาก

โปรแกรม กระบวนการ ขอก าหนดและเอกสารทเกยวของ โปรแกรมเมอร ง. สงสรางสรรคเชงปญญา เพอท าใหระบบท าการประมวลผลขอมล ขอก าหนดและเอกสารท

เกยวของ 2. ตวแปลภาษาทมการแปลทละบรรทดค าสง และเมอการใชงานแตละครงจะตองท าการแปล

โปรแกรมใหมเสมอ ก. แอสแซมเบลอร และ แอสแซมบล ข. อนเทอรพรเตอร ค. คอมไพเลอร ง. อนเทอรพรเตอรและคอมไพเลอร

3. ขอใดตอไปนกลาวไดถกตองทสด ก. การเขยนโปรแกรมภาษาแอสแซมบล จะตองใชตวแปลภาษา ท าการแปลเปนภาษาเครอง

ซง อยในยคของโปรแกรมภาษาคอมพวเตอรยคท 1 ข. การเขยนโปรแกรมภาษาเครอง สามารถเขยนไดเฉพาะยคของการเขยนโปรแกรมภาษายค

ท 1 ค. ภาษาคอมพวเตอร ยคท 3 เปนการเขยนโปรแกรมระดบสงมาก ง. ภาษาคอมพวเตอรในยคท 1 และยคท 2 ถอวาเปนโปรแกรมภาษาระดบต า

11

4. ขอใดคอองคประกอบของระบบคอมพวเตอรทถกตองทสด ก. ฮารดแวร ซอฟตแวร ขอมล นกวเคราะหระบบ ข. ซอฟตแวร ฮารดแวร สารสนเทศ บคลากร ค. ฮารดแวร ซอฟตแวร ขอมล บคลากร ง. ซอฟตแวร ฮารดแวร สารสนเทศ ผบรหารระบบคอมพวเตอร

5. การเขยนโปรแกรมเทคนคเชงกระบวนการ เรมเกดขนในการเขยนโปรแกรมคอมพวเตอรยคใด ก. ยคท 2 ข. ยคท 3 ค. ยคท 4 ง. ยคท 5

6. โปรแกรมภาษาในขอใดทมความเกาแกมากทสด ก. COBOL ข. FORTRAN ค. C ง. Pascal

7. ตวแปลภาษาทมการแปลทงโปรแกรมในครงเดยว ผลจากการแปลสามารถเกบไวและเรยกใชงานไดภายหลงโดยไมตองท าการแปลโปรแกรมซ าอก เปนตวแปลภาษาชนดใด ก. แอสแซมเบลอร และ แอสแซมบล ข. อนเทอรพรเตอร ค. คอมไพเลอร ง. อนเทอรพรเตอรและคอมไพเลอร

8. โปรแกรมภาษาคอมพวเตอรในขอใดทมความยดหยนสง และไดรบความนยมใชงานกนอยางแพรหลาย ก. FORTRAN ข. Pascal ค. BASIC ง. C

9. ขอใดมใชอปกรณน าเขาขอมลเพอน าเขาสระบบคอมพวเตอรส าหรบการประมวล ก. จอภาพคอมพวเตอรชนดCRT ข. เมาส ค. จอภาพคอมพวเตอรแบบสมผส ง. เครองอานบารโคด

12

10. ขอใดเปนระบบปฏบตการคอมพวเตอรแบบเดยว ก. Windows Server2000 ข. Linux ค. Unix ง. Max OS X

13

เฉลยแบบทดสอบหลงเรยน บทท 1 เรอง ควำมรพนฐำนเกยวกบคอมพวเตอร

ขอท เฉลย

1 ก 2 ข 3 ง 4 ค 5 ข 6 ข 7 ค 8 ง 9 ก

10 ง

14

15

บทท 2 เรอง พนฐำนภำษำ C++

16

แบบทดสอบกอนเรยน บทท 2 เรอง พนฐำนภำษำ C++

ค ำชแจง 1. ใหนกศกษาเลอก กากบาท X ลงในกระดาษค าตอบทแจกใหโดยเลอกขอทถกทสดเพยงขอเดยว 2. ตอบถกไดคะแนนขอละ 1 คะแนน ตอบผดได 0 คะแนน 3. แบบทดสอบมทงหมด 10 ขอ ---------------------------------------------------------------------------------------------------------------------- 1. เมอโปรแกรมภาษา C++ ทสรางขนมาเปนไฟลตนฉบบ และท าการบนทกจะมการระบนามสกลของไฟลชอวาอะไร

ก. .cpp ข. .c ค. .cdx ง. .vcp

2. ขอใดคอขนตอนการเขยนโปรแกรมภาษาซ C++ ก. สรางโปรแกรมตนฉบบ คอมไพล ลงคไลบราร ข. สรางโปรแกรมตนฉบบ พรโปรเซสเซอรไดเรกทฟ คอมไพล วตถไฟล ค. สรางโปรแกรมตนฉบบ คอมไพล พรโปรเซสเซอรไดเรกทฟ วตถไฟล ง. สรางโปรแกรมตนฉบบ พรโปรเซสเซอรไดเรกทฟ คอมไพล วตถไฟล ลงคไลบราร ไฟล

นามสกล .exe 3. การตงชอตวแปรขอใดไมถกตอง

ก. 4sum ข. Total8 ค. maxValue_2 ง. A89

4. ขอใดคอการก าหนดคาใหกบตวแปรทถกตอง ก. int number = 8.0; ข. double max = 9; ค. float 7summation = 16.90; ง. char c = ‘9’;

17

5. ขอใดคอการก าหนดคาคงทสญลกษณทถกตอง ก. #define salary 15000 ข. #define grade = 4.00; ค. const double sum 10.00; ง. const int val 30.00;

6. ขอใดมใช ชนดขอมลเบองตน ก. int ข. double ค. array ง. long double

7. ชนดขอมล int มขอบเขตในการจดเกบเลขจ านวนเตมสงสดเทากบ 2147483647 ถาบวกเพมอก 1 จะมคาตรงกบขอใด

ก. 2147483648 ข. -2147483648 ค. -2147483647 ง. 2147483649

8. ชนดขอมลอกขระ char มการเกบขอมลสงสดกไบต ก. 1 ไบต ข. 2 ไบต ค. 3 ไบต ง. 4 ไบต

9. จากค าสงตอไปน cout.fill(‘A’); cout.width(5); cout<< 12.00; จากค าสงดงกลาวจะมการแสดงผลลพธในขอใดถกตอง

ก. A12.00 ข. 12.00A ค. 12.00 ง. AAA12

18

10. จากค าสงตอไปน cout.precition(4); cout<<30.12345; จากค าสงดงกลาวจะมการแสดงผลลพธในขอใดถกตอง

ก. 30 ข. 30.0 ค. 30.12 ง. 30.123

19

เฉลยแบบทดสอบกอนเรยน บทท 2 เรอง พนฐำนภำษำ C++

ขอท เฉลย

1 ก 2 ง 3 ก 4 ง 5 ก 6 ค 7 ข 8 ก 9 ง

10 ค

20

ใบแบบฝกหด บทท 2 เรอง พนฐำนภำษำ C++

ค ำชแจง 1. แบบฝกหดมทงหมด 5 ขอ คะแนนเตม 50 คะแนน 2. ใหนกศกษาท าหมดทกขอ --------------------------------------------------------------------------------------------------------------------- 1. ใหนกศกษาอธบายขนตอนการสรางโปรแกรมภาษา C++ ( 10 คะแนน) 2. ใหนกศกษาบอกขอก าหนดในการตงชอตวแปร ( 10 คะแนน) 3. ใหนกศกษาตงชอตวแปรชนดเลขจ านวนเตมชนดเลขจ านวนจรงชนดอกขระมาอยางละ 5 ตวแปร ( 10 คะแนน) 3.1 เลขจ านวนจรง 3.2 เลขจ านวนเตม 3.3 อกขระ 4. ใหนกศกษาอธบายความหมายของค าวา นพจนและตวด าเนนการ ( 10 คะแนน) 5. ใหนกศกษาอธบายการรบคาและแสดงผลของโปรแกรมภาษา C++ ( 10 คะแนน)

21

ใบเฉลยแบบฝกหด บทท 2 เรอง พนฐำนภำษำ C++

ค ำชแจง 1. แบบฝกหดมทงหมด 5 ขอ คะแนนเตม 50 คะแนน 2. ใหนกศกษาท าหมดทกขอ --------------------------------------------------------------------------------------------------------------------- 1. ใหนกศกษาอธบายขนตอนการสรางโปรแกรมภาษา C++ ( 10 คะแนน) ตอบ 1.1 เปดโปรแกรมอดสเตอรในการเขยนโปรแกรมภาษา C++ บนทกเปนนามสกลดอตซพพ 1.2 เขยนโปรแกรม 1.3 ตรวจสอบความถกตองของการเขยนโปรแกรม 1.4 ท าการคอมไพลโปรแกรม ถาเกดความผดพลาดท าการแกไขโปรแกรมใหม 1.5 สงใหโปรแกรมรนการท างาน 2. ใหนกศกษาบอกขอก าหนดในการตงชอตวแปร ( 10 คะแนน) ตอบ 2.1 ประกอบดวยตวอกษร a – z ,A – Z , 0 – 9 หรอ _ 2.2 หามขนตนดวยตวเลข 2.2 ไมตรงกบค าสงวน 3. ใหนกศกษาตงชอตวแปรชนดเลขจ านวนเตมชนดเลขจ านวนจรงชนดอกขระมาอยางละ 5 ตวแปร (10 คะแนน) ตอบ 3.1 เลขจ านวนจรง double number1 = 7.89D, double PI = 3.141, float number2 = 1.23F, float price = 45.90f, float gpa = 3.98f; 3.2 เลขจ านวนเตม int index = 3, int count = 0, int myNum = 23, int age = 30, int page = 10 3.3 อกขระ char sex = ‘m’, char type = ‘x’, char color = ‘g’, char grade = ‘4’, char ch = ‘c’

22

4. ใหนกศกษาอธบายความหมายของค าวา นพจนและตวด าเนนการ ( 10 คะแนน) ตอบ นพจน คอ ประโยคสญลกษณทมสวนประกอบของ คาคงท ตวแปร หรอ ฟงกชน ทมการท างานสมพนธรวมกบตวด าเนนการ ตวด าเนนการ คอ สงทท าใหคอมพวเตอรเกดการประมวลผลขนมาได ซงแบงออกไดเปน ตวด าเนนการทางคณตศาสตร ตวด าเนนการเปรยบเทยบ ตวด าเนนการก าหนดคา ตวด าเนนการเพมลดคา ตวด าเนนการความเทากน เปนตน 5. ใหนกศกษาอธบายการรบคาและแสดงผลของโปรแกรมภาษา C++ ( 10 คะแนน) ตอบ การรบคาและแสดงผลของภาษา C++ จะมการรบสงขอมลในลกษณะเปนกระแสของไบต โดยเมอมการรบขอมลเขามาจะท าการแยกแยะไบตออกจากสตรมอนพตใชค าสง cin การแสดงผล จะเปนการแทรกไบตเขาไปในสตรมเอาทพต ในการรบและสงขอมลจะมทพกขอมลชวคราวระหวางอปกรณกบโปรแกรม เพอรบคาทละไบตแลวเกบไวใชค าสง cout

23

ใบงำน บทท 2 เรอง พนฐำนภำษำ C++

ค ำชแจง 1. ใบงานมทงหมด 5 ขอ คะแนนเตม 50 คะแนน 2. ใหนกศกษาท าหมดทกขอ --------------------------------------------------------------------------------------------------------------------- 1. ใหนกศกษาเขยนโปรแกรมใหสมบรณและเมอโปรแกรมท างานจะแสดงขอความ ชอ นามสกล ตนเองออกทางจอภาพ และใหเขยนผลลพธทแสดงผลทางจอภาพ ( 10 คะแนน )

1 _______1________

2 using ____2____ std;

3 __3_____ main( ){

4 cout<<"__________4__________"<<endl;

5 ______5_______

6 }

2. ใหนกศกษาเขยนโปรแกรมใหสมบรณ และแสดงผลลพธการท างาน ( 10 คะแนน )

1 //Lab2_2.cpp

2 #include<iostream>

3 using namespace std;

4 #define ___1____ 10

5 #define number2 ____2____

6 __3__ findMin(number1,number2)(number1<number2?number1:number2)

7 int main( ){

8 cout<<"____4_____"<<number1<<endl;

9 cout<<”number2 "<<number2<<endl;

10 cout<<findMin(__5_,____)<<endl;

11 cout<<number1 * number2<<endl;

12 return 0;

13 }

24

3. ใหนกศกษาเตมขอความในโปรแกรม และแสดงผลลพธการท างาน ( 10 คะแนน ) 1 //Lab2_3.cpp

2 #include<iostream>

3 using namespace std;

4 int main( ){

5 ___1___ idstu[5];

6 idstu[0] = 2.34;

7 idstu[_2__] = 8.89;

8 idstu[2] = ____;

9 idstu[_3__] = 3.00;

10 cout<<idstu[0]<<endl;

11 cout<<idstu[1]<<endl;

12 cout<<__4___[2]<<endl;

13 cout<<idstu[3]<<endl;

14 return 0;

15 }

4. จากโปรแกรมค านวณหาพนทสามเหลยม โดยมการรบขอมลความยาว ฐาน(base) และ ความสง(height) จากผใช หลงจากนนท าการค านวณโดยสตรของการค านวณหา พนทสามเหลยม 0.5 * ฐาน * สง น าคาไวในตวแปร area แลวน ามาแสดงผลทางจอภาพ ใหนกศกษาเขยนโปรแกรมใหสมบรณจากชองวางทก าหนดไว พรอมแสดงผลลพธ ( 10 คะแนน )

1 //Lab2_4.cpp

2 #include<iostream>

3 using namespace std;

4 int main( ){

5 double____1_______ = 0.00;

6 _____2_______ height = 0.00;

7 double _____3______ = 0.00;

8 cout<<"Enter base :";

9 ___4____>>base;

10 cout<<"Enter height :";

11 cin>>_____5______

12 area = 0.5 * base * height;

13 cout<<"Area of Triangle :"<<area<<endl;

14 return 0;

15 }

25

5. จากโปรแกรมรบเลขจ านวนจรง 1 จ านวน น ามาแสดงผลทางจอภาพโดยมการก าหนดความกวางในการแสดงผลเทากบ 10 และท าการเตมอกขระ ‘$’ ในกรณทการแสดงผลไมครบ 10 อกขระ ( 10 คะแนน )

1 //Lab2_5.cpp

2 #include<iostream>

3 using namespace std;

4 int main( ){

5 ___1___ number1;

6 cout<<"Enter number1 :";

7 cin>>number1;

8 cout.width(_2__);

9 cout.fill('$');

10 cout<<___3_____

11 return 0;

12 }

26

เฉลยใบงำน บทท 2 เรอง พนฐำนภำษำ C++

ค ำชแจง 1. ใบงานมทงหมด 5 ขอ คะแนนเตม 50 คะแนน 2. ใหนกศกษาท าหมดทกขอ --------------------------------------------------------------------------------------------------------------------- 1. ใหนกศกษาเตมขอความใหสมบรณโปรแกรม แสดงขอความ ชอ นามสกล ตนเองออกทางจอภาพ และใหเขยนโปรแกรมใหสมบรณพรอมทงแสดงผลลพธออกทางจอภาพ ( 10 คะแนน )

1 _______1________

2 using ____2____ std;

3 __3_____ main( ){

4 cout<<"__________4__________"<<endl;

5 ______5_______

6 }

เขยนโคดเพอใหโปรแกรมสมบรณ

1 #include<iostream>

2 namespace

3 int

4 Wuttiwong Eadsrichai

5 return 0;

ผลลพธกำรท ำงำนของโปรแกรม Wuttiwong Eadsrichai

ส าหรบการแสดงผลทางจอภาพขนอยกบ ชอและนามสกลของนกศกษาแตละคน 2. ใหนกศกษาเตมโคดในโปรแกรมใหสมบรณ และแสดงผลลพธการท างาน ( 10 คะแนน )

1 //Lab2_2.cpp

2 #include<iostream>

3 using namespace std;

4 #define ___1____ 10

5 #define number2 ___2_____

6 ___3__findMin(number1,number2)(number1<number2?number1:number2)

7 int main( ){

8 cout<<"____4_____"<<number1<<endl;

9 cout<<”number2 : "<<number2<<endl;

10 cout<<findMin(_5__,____)<<endl;

27

11 cout<<number1 * number2<<endl;

12 return 0;

13 }

เขยนโคดเพอใหโปรแกรมสมบรณ

1 number1 :

2 20

3 #define

4 number1

5 3,4

ผลลพธกำรท ำงำนของโปรแกรม

numer1 : 10

number2 : 20

3

200

3. ใหนกศกษาเตมขอความในโปรแกรม และแสดงผลลพธการท างาน ( 10 คะแนน ) 1 //Lab2_3.cpp

2 #include<iostream>

3 using namespace std;

4 int main( ){

5 ___1___ idstu[5];

6 idstu[0] = 2.34;

7 idstu[_2__] = 8.89;

8 idstu[2] = __3__;

9 idstu[_4__] = 3.00;

10 cout<<idstu[0]<<endl;

11 cout<<idstu[1]<<endl;

12 cout<<___5__[2]<<endl;

13 cout<<idstu[3]<<endl;

14 return 0;

15 }

เขยนโคดเพอใหโปรแกรมสมบรณ

1 double

2 1

3 5.50

4 3

5 idstu

28

ผลลพธกำรท ำงำนของโปรแกรม 2.34

8.89

5.5

3

4. จากโปรแกรมค านวณหาพนทสามเหลยม โดยมการรบขอมลความยาว ฐาน(base) และ ความสง(height) จากผใช หลงจากนนท าการค านวณโดยสตรของการค านวณหา พนทสามเหลยม 0.5 * ฐาน * สง น าคาไวในตวแปร area แลวน ามาแสดงผลทางจอภาพ ใหนกศกษาเขยนโปรแกรมใหสมบรณจากชองวางทก าหนดไว พรอมแสดงผลลพธ ( 10 คะแนน )

1 //Lab2_4.cpp

2 #include<iostream>

3 using namespace std;

4 int main( ){

5 double_____1______ = 0.00;

6 ______2______ height = 0.00;

7 double _____3______ = 0.00;

8 cout<<"Enter base :";

9 ___4____>>base;

10 cout<<"Enter height :";

11 cin>>_____5______

12 area = 0.5 * base * height;

13 cout<<"Area of Triangle :"<<area<<endl;

14 return 0;

15 }

เขยนโคดเพอใหโปรแกรมสมบรณ

1 base

2 double

3 area

4 cin

5 height;

ผลลพธกำรท ำงำนของโปรแกรม Enter base : 4.50

Enter height : 6.75

Area of Triangle : 15.1875

29

5. จากโปรแกรมรบเลขจ านวนจรง 1 จ านวน น ามาแสดงผลทางจอภาพโดยมการก าหนดความกวางในการแสดงผลเทากบ 10 และท าการเตมอกขระ ‘$’ ในกรณทการแสดงผลไมครบ 10 อกขระ ( 10 คะแนน )

1 //Lab2_5.cpp

2 #include<iostream>

3 using namespace std;

4 int main( ){

5 ___1___ number1;

6 cout<<"Enter number1 :";

7 cin>>number1;

8 cout.width(_2__);

9 cout.fill('$');

10 cout<<___3_____

11 return 0;

12 }

เขยนโคดเพอใหโปรแกรมสมบรณ

1 double

2 10

3 number1

ผลลพธกำรท ำงำนของโปรแกรม Enter number1 : 45.60

$$$$$$45.6

30

แบบทดสอบหลงเรยน บทท 2 เรอง พนฐำนภำษำ C++

ค ำชแจง 1. ใหนกศกษาเลอก กากบาท X ลงในกระดาษค าตอบทแจกใหโดยเลอกขอทถกทสดเพยงขอเดยว 2. ตอบถกไดคะแนนขอละ 1 คะแนน ตอบผดได 0 คะแนน 3. แบบทดสอบมทงหมด 10 ขอ ---------------------------------------------------------------------------------------------------------------------- 1. เมอโปรแกรมภาษา C++ ทสรางขนมาเปนไฟลตนฉบบ และท าการบนทกจะมการระบนามสกลของไฟลชอวาอะไร ก. .cpp ข. .c ค. .cdx ง. .vcp

2. ขอใดคอขนตอนการเขยนโปรแกรมภาษาซ C++ ก. สรางโปรแกรมตนฉบบ คอมไพล ลงคไลบราร ข. สรางโปรแกรมตนฉบบ พรโปรเซสเซอรไดเรกทฟ คอมไพล วตถไฟล ค. สรางโปรแกรมตนฉบบ คอมไพล พรโปรเซสเซอรไดเรกทฟ วตถไฟล ง. สรางโปรแกรมตนฉบบ พรโปรเซสเซอรไดเรกทฟ คอมไพล วตถไฟล ลงคไลบราร ไฟล

นามสกล .exe 3. การตงชอตวแปรขอใดไมถกตอง

ก. 4sum ข. Total8 ค. maxValue_2 ง. A89

4. ขอใดคอการก าหนดคาใหกบตวแปรทถกตอง ก. int number = 8.0; ข. double max = 9; ค. float 7summation = 16.90; ง. char c = ‘9’;

31

5. ขอใดคอการก าหนดคาคงทสญลกษณทถกตอง ก. #define salary 15000 ข. #define grade = 4.00; ค. const double sum 10.00; ง. const int val 30.00;

6. ขอใดมใช ชนดขอมลเบองตน ก. int ข. double ค. array ง. long double

7. ชนดขอมล int มขอบเขตในการจดเกบเลขจ านวนเตมสงสดเทากบ 2147483647 ถาบวกเพมอก 1 จะมคาตรงกบขอใด ก. 2147483648 ข. -2147483648 ค. -2147483647 ง. 2147483649

8. ชนดขอมลอกขระ char มการเกบขอมลสงสดกไบต ก. 1 ไบต ข. 2 ไบต ค. 3 ไบต ง. 4 ไบต

9. จากค าสงตอไปน cout.fill(‘A’); cout.width(5); cout<< 12.00; จากค าสงดงกลาวจะมการแสดงผลลพธในขอใดถกตอง ก. A12.00 ข. 12.00A ค. 12.00 ง. AAA12

32

10. จากค าสงตอไปน cout.precition(4); cout<<30.12345; จากค าสงดงกลาวจะมการแสดงผลลพธในขอใดถกตอง ก. 30 ข. 30.0 ค. 30.12 ง. 30.123

33

เฉลยแบบทดสอบหลงเรยน บทท 2 เรอง พนฐำนภำษำ C++

ขอท เฉลย

1 ก 2 ง 3 ก 4 ง 5 ก 6 ค 7 ข 8 ก 9 ง

10 ค

34

35

บทท 3 เรอง นพจนและตวด ำเนนกำร

36

แบบทดสอบกอนเรยน บทท 3 เรอง นพจนและตวด ำเนนกำร

ค ำชแจง 1. ใหนกศกษาเลอก กากบาท X ลงในกระดาษค าตอบทแจกใหโดยเลอกขอทถกทสดเพยงขอเดยว 2. ตอบถกไดคะแนนขอละ 1 คะแนน ตอบผดได 0 คะแนน 3. แบบทดสอบมทงหมด 10 ขอ ---------------------------------------------------------------------------------------------------------------------- 1. ขอใดตอไปนเปน นพจน

ก. Number1; ข. cout<< “Hello”; ค. 34; ง. Number1++;

2. จากนพจนตอไปน 2 + B - 6 ขอใดถกตองทสด ก. มตวถกกระท า 3 ตว และตวด าเนนการ 2 ตว ข. มตวถกกระท า 2 ตว และตวด าเนนการ 3 ตว ค. มตวด าเนนการ 5 ตว ง. มตวถกกระท า 5 ตว

3. จากนพจนตอไปน 2 + 4 * 6 อะไรคอ ตวถกด าเนนการ ก. + , * ข. 2 , 4, 6 ค. 2 + 4 ง. 2 + 4 + 6

4. จากนพจนดงกลาว 3 + 4 * 5 / 2 ขอใดคอค าตอบทถกตอง ก. 17.5 ข. 11.5 ค. 13 ง. 13.00

5. จากนพจนดงกลาว (4 + 5) * 6 / 2 ขอใดคอค าตอบทถกตอง ก. 27 ข. 19 ค. 24

37

ง. 12 6. จากนพจนดงกลาว ( (2 == 3) < ( 4 != 10) ) ขอใดคอค าตอบทถกตอง

ก. 0 ข. 2 ค. 1 ง. 3

7. จากนพจนดงกลาว ( (10 != 10 ) > (2 != 2) ) ขอใดคอค าตอบทถกตอง ก. 0 ข. 10 ค. 2 ง. 3

8. ก าหนดใหคา sum = 10 จากนพจนตอไปน cout>>sum++ โปรแกรมจะแสดงคาใดออกมา ก. 11 ข. 12 ค. 9 ง. 10

9. ก าหนดใหคา sum = 1 จากนพจนตอไปน cout>>++sum โปรแกรมจะแสดงคาใดออกมา ก. 2 ข. 1 ค. 3 ง. 0

10. ก าหนดใหคา sum = 1 จากนพจนตอไปน sum+=4 ตวแปร sum มคาตรงกบขอใด ก. 3 ข. 4 ค. 5 ง. 6

38

เฉลยแบบทดสอบกอนเรยน บทท 3 เรอง นพจนและตวด ำเนนกำร

ขอท เฉลย

1 ง 2 ก 3 ข 4 ค 5 ก 6 ค 7 ก 8 ง 9 ก

10 ค

39

ใบแบบฝกหด บทท 3 เรอง นพจนและตวด ำเนนกำร

ค ำชแจง 1. แบบฝกหดมทงหมด 7 ขอ คะแนนเตม 50 คะแนน 2. ใหนกศกษาท าหมดทกขอ --------------------------------------------------------------------------------------------------------------------- 1. นพจน หมายถง ( 5 คะแนน ) 2. ตวด าเนนการ หมายถง ( 5 คะแนน ) 3. ล าดบความส าคญของตวด าเนนการ คอ ( 5 คะแนน ) 4. ล าดบการท างานของตวด าเนนการ คอ ( 5 คะแนน ) 5. ใหเขยนขนตอนการด าเนนการของนพจนตอไปน x = 5 - 3 * 8 % 3 ( 10 คะแนน ) 6. ใหเขยนขนตอนการด าเนนการของนพจนตอไปน x = (2 * 3 – 4) + 4 – ( 1 + 1 ) ( 10 คะแนน ) 7. ใหเขยนขนตอนการด าเนนการของนพจนตอไปน x = ++a + b + c++ โดยก าหนดใหตวแปร a = 5, b = 5, c = 10 ( 10 คะแนน )

40

ใบเฉลยแบบฝกหด บทท 3 เรอง นพจนและตวด ำเนนกำร

ค ำชแจง 1. แบบฝกหดมทงหมด 7 ขอ คะแนนเตม 50 คะแนน 2. ใหนกศกษาท าหมดทกขอ --------------------------------------------------------------------------------------------------------------------- 1. นพจน หมายถง ( 5 คะแนน ) ตอบ ประโยคทเขยนอยในรปสญลกษณโดยการน าคาคงท ตวแปร หรอฟงกชน มาสมพนธกบตวด าเนนการ (Operator) อยางใดอยางหนงซงนพจน 1 นพจนนนจะตองมโอเปอแรนด อยางนอยหนงตวและตวด าเนนการอยางนอยหนงตวเสมอ เชน 2 + A; 2. ตวด าเนนการ หมายถง ( 5 คะแนน ) ตอบ สงทท าใหคอมพวเตอรเกดการประมวลผลขนมา โดยตวด าเนนการจะเปนการท างานรวมกบนพจนใด ๆ ซงตวด าเนนการแบงออกไดดงตอไปน 1. ตวด าเนนการทางคณตศาสตร ประกอบดวย +, - , * , / , % 2. ตวด าเนนการความเทากน ประกอบดวย ==, != 3. ตวด าเนนการเปรยบเทยบ ประกอบดวย >, >= , < , <= 4. ตวด าเนนการทางตรรกะ ประกอบดวย ! , &&, || 5. ตวด าเนนการเพมคาและลดคา ประกอบดวย ivalue++, ivalue--, ++ivalue, --ivalue 6. ตวด าเนนการก าหนดคา ประกอบดวย =, +=, -=, *=, /=, %= 7. ตวด าเนนการเงอนไข มรปแบบ คอ นพจนท 1 ? นพจนท 2 : นพจนท 3 3. ล าดบความส าคญของตวด าเนนการ คอ ( 5 คะแนน ) ตอบ ล าดบความส าคญ คอ ล าดบความส าคญในการท างานของตวด าเนนการ โดยในการประมวลผลนนคอมพวเตอรจะท างานกบตวด าเนนการทมความส าคญสงสดกอนเปนอนดบแรก และรองลงมาตามล าดบความส าคญ ทกลไกของภาษา C++ ก าหนดไว 4. ล าดบการท างานของตวด าเนนการ คอ ( 5 คะแนน ) ตอบ ล าดบการท างาน คอ ล าดบการท างานของตวด าเนนการโดยมการพจารณาจากซายไปขวา หรอขวาไปซาย ส าหรบตวด าเนนการทมล าดบความส าคญเทากน การประมวลผลจะพจารณาล าดบการ

41

ท างานมาใชในการประมวลผล ซงล าดบการท างานของตวด าเนนการใด ๆ กลไกของภาษา C++ ไดมการก าหนดไวแลว 5. ใหเขยนขนตอนการด าเนนการของนพจนตอไปน x = 5 - 3 * 8 % 3 ( 10 คะแนน ) ตอบ x = 5 - 3 * 8 % 3 x = 5 - 3 * 8 % 3 x = 5 - 24 % 3 x = 5 - 0 x = 5 6. ใหเขยนขนตอนการด าเนนการของนพจนตอไปน x = (2 * 3 – 4) + 4 – ( 1 + 1 ) ( 10 คะแนน ) ตอบ x = (2 * 3 – 4) + 4 – ( 1 + 1 ) x = (2 * 3 – 4) + 4 – ( 1 + 1 ) x = (6 – 4) + 4 – ( 1 + 1 ) x = (2) + 4 – ( 1 + 1 ) x = 2 + 4 – 2 x = 6 – 2 x = 4 7. ใหเขยนขนตอนการด าเนนการของนพจนตอไปน x = ++a + b + c++ โดยก าหนดใหตวแปร a = 5, b = 5, c = 10 ( 10 คะแนน ) ตอบ x = ++a + b + c++

x = ++a + b + 10 x = 6 + 5 + 10

x = 11 + 10 x = 21

42

ใบงำน บทท 3 เรอง นพจนและตวด ำเนนกำร

ค ำชแจง 1. ใบงานมทงหมด 3 ขอ คะแนนเตม 50 คะแนน 2. ใหนกศกษาท าหมดทกขอ --------------------------------------------------------------------------------------------------------------------- 1. โปรแกรมรบเลขจ านวนเตม 2 จ านวน หลงจากนนมาหาคา number1 > number2 จรงหรอเทจ number1 < number2 จรงหรอเทจ และ number1 == number2 จรงหรอเทจ และใหเขยนผลลพธออกทางจอภาพ ( 15 คะแนน )

1 //Lab3_1.cpp

2 #include<iostream>

3 using namespace std;

4 int main( ){

5 int _____________;

6 int _____________;

7 cout<<"Enter number1 :";

8 cin>>_____________

9 cout<<"Enter number2 :";

10 cin>>number2;

11 cout<<number1<<" > "<<number2<<" = "<<(_______________)<<endl;

12 cout<<number1<<" < "<<number2<<" = "<<(number1<number2)<<endl;

13 cout<<number1<<" == "<<_____<<" ="<<(number1==number2)<<endl;

14 return 0;

15 }

43

2. โปรแกรมค านวณระยะทางเปนกโลเมตร โดยมการรบคาระยะทางเปนจ านวนไมล แลวท าการแปลงเปน กโลเมตร แสดงผลทางจอภาพ ก าหนดให 1 ไมล = 1.609344 กโลเมตร ( 15 คะแนน )

1 //Lab3_2.cpp

2 #include<iostream>

3 using namespace std;

4 int main( ){

5 double _______ = 0.00d,kilometors = 0.00d;

6 cout<<"Enter miles : ";

7 cin>>miles;

8 kilometors = miles * 1.609344;

9 cout<<__________<<" miles = "<<___________<<" kilometors"<<endl;

10 return 0;

11 }

3. โปรแกรมค านวณคาองศาฟาเรนไฮ โดยรบขอมลจากผใชเปนองศาเซลเซยส( C ) แลวท าการแปลงเปนองศาฟาเรนไฮ ( F ) ก าหนดให F = C * (9/5) + 32 ( 20 คะแนน )

1 //Lab3_3.cpp

2 _______________

3 #include<iomanip>

4 using namespace std;

5 int main( ){

6 double celsius = 0.00d, ___________ = 0.00d;

7 cout<<"Enter celsius : ";

8 cin>>_________;

9 fahrenheit = ____________;

10 cout<<celsius<<" celsius = "<< fahrenheit<<" fahrenheit"<<endl;

11 return 0;

12 }

44

เฉลยใบงำน บทท 3 เรอง นพจนและตวด ำเนนกำร

ค ำชแจง 1. ใบงานมทงหมด 3 ขอ คะแนนเตม 50 คะแนน 2. ใหนกศกษาท าหมดทกขอ --------------------------------------------------------------------------------------------------------------------- 1. โปรแกรมรบเลขจ านวนเตม 2 จ านวน หลงจากนนมาหาคา number1 > number2 จรงหรอเทจ number1 < number2 จรงหรอเทจ และ number1 == number2 จรงหรอเทจ และใหเขยนผลลพธออกทางจอภาพ ( 15 คะแนน )

1 //Lab3_1.cpp

2 #include<iostream>

3 using namespace std;

4 int main( ){

5 int number1;

6 int number2;

7 cout<<"Enter number1 :";

8 cin>>number1;

9 cout<<"Enter number2 :";

10 cin>>number2;

11 cout<<number1<<" > "<<number2<<"="<<(number1>number2)<<endl;

12 cout<<number1<<" < "<<number2<<" = "<<(number1<number2)<<endl;

13 cout<<number1<<" == "<<number1 == number2<<"

="<<(number1 == number2)<<endl;

14 return 0;

15 }

ผลลพธการท างานของโปรแกรม Enter nuber1 : 10

Enter number2 : 20

number1>number2 = 0

number1<number2 = 1

number1 == number2 = 0

45

2. โปรแกรมค านวณระยะทางเปนกโลเมตร โดยมการรบคาระยะทางเปนจ านวนไมล แลวท าการแปลงเปน กโลเมตร แสดงผลทางจอภาพ ก าหนดให 1 ไมล = 1.609344 กโลเมตร ( 15 คะแนน )

1 //Lab3_2.cpp

2 #include<iostream>

3 using namespace std;

4 int main( ){

5 double miles = 0.00d , kilometors = 0.00d;

6 cout<<"Enter miles : ";

7 cin>>miles;

8 kilometors = miles * 1.609344;

9 cout<< miles <<" miles = "<< kilometors <<" kilometors" <<endl;

10 return 0;

11 }

ผลลพธการท างานของโปรแกรม Enter miles : 3

3 miles = 4.82803 kilometors

3. โปรแกรมค านวณคาองศาฟาเรนไฮ โดยรบขอมลจากผใชเปนองศาเซลเซยส( C ) แลวท าการแปลงเปนองศาฟาเรนไฮ ( F ) ก าหนดให F = C * (9/5) + 32 ( 20 คะแนน )

1 //Lab3_3.cpp

2 #include<iostream>

3 #include<iomanip>

4 using namespace std;

5 int main( ){

6 double celsius = 0.00d, fahrenheit = 0.00d;

7 cout<<"Enter celsius : ";

8 cin>>celsius;

9 fahrenheit = celsius * ( 9.00 / 5.00) + 32;

10 cout<<celsius<<" celsius = "<< fahrenheit<<" fahrenheit"<<endl;

11 return 0;

12 }

ผลลพธการท างานของโปรแกรม Enter Celsius : 100

100 celsius = 212 fahrenheit

46

แบบทดสอบหลงเรยน บทท 3 เรอง นพจนและตวด ำเนนกำร

ค ำชแจง 1. ใหนกศกษาเลอก กากบาท X ลงในกระดาษค าตอบทแจกใหโดยเลอกขอทถกทสดเพยงขอเดยว 2. ตอบถกไดคะแนนขอละ 1 คะแนน ตอบผดได 0 คะแนน 3. แบบทดสอบมทงหมด 10 ขอ ---------------------------------------------------------------------------------------------------------------------- 1. จากนพจนตอไปน 2 + B - 6 ขอใดถกตองทสด

ก. มตวถกกระท า 3 ตว และตวด าเนนการ 2 ตว ข. มตวถกกระท า 2 ตว และตวด าเนนการ 3 ตว ค. มตวด าเนนการ 5 ตว ง. มตวถกกระท า 5 ตว

2. ขอใดตอไปนเปน นพจน ก. Number1; ข. cout<< “Hello”; ค. 34; ง. Number1++;

3. จากนพจนตอไปน 2 + 4 * 6 อะไรคอ ตวถกด าเนนการ ก. + , * ข. 2 , 4, 6 ค. 2 + 4 ง. 2 + 4 + 6

4. จากนพจนดงกลาว (4 + 5) * 6 / 2 ขอใดคอค าตอบทถกตอง ก. 27 ข. 19 ค. 24 ง. 12

5. จากนพจนดงกลาว 3 + 4 * 5 / 2 ขอใดคอค าตอบทถกตอง ก. 17.5 ข. 11.5 ค. 13

47

ง. 13.00 6. จากนพจนดงกลาว ( (2 == 3) < ( 4 != 10) ) ขอใดคอค าตอบทถกตอง

ก. 0 ข. 2 ค. 1 ง. 3

7. จากนพจนดงกลาว ( (10 != 10 ) > (2 != 2) ) ขอใดคอค าตอบทถกตอง ก. 0 ข. 10 ค. 2 ง. 3

8. ก าหนดใหคา sum = 1 จากนพจนตอไปน cout>>++sum โปรแกรมจะแสดงคาใดออกมา ก. 2 ข. 1 ค. 3 ง. 0

9. ก าหนดใหคา sum = 10 จากนพจนตอไปน cout>>sum++ โปรแกรมจะแสดงคาใดออกมา ก. 11 ข. 12 ค. 9 ง. 10

10. ก าหนดใหคา sum = 1 จากนพจนตอไปน sum+=4 ตวแปร sum มคาตรงกบขอใด ก. 3 ข. 4 ค. 5 ง. 6

48

เฉลยแบบทดสอบหลงเรยน บทท 3 เรอง นพจนและตวด ำเนนกำร

ขอท เฉลย

1 ก 2 ง 3 ข 4 ก 5 ค 6 ค 7 ก 8 ก 9 ง

10 ค

49

บทท 4 เรอง โครงสรำงควบคมกำรท ำงำน

50

แบบทดสอบกอนเรยน บทท 4 เรอง โครงสรำงควบคมกำรท ำงำน

ค ำชแจง 1. ใหนกศกษาเลอก กากบาท X ลงในกระดาษค าตอบทแจกใหโดยเลอกขอทถกทสดเพยงขอเดยว 2. ตอบถกไดคะแนนขอละ 1 คะแนน ตอบผดได 0 คะแนน 3. แบบทดสอบมทงหมด 15 ขอ ---------------------------------------------------------------------------------------------------------------------- 1. ขอใดคอลกษณะรปแบบของการควบคมการท างานแบบตามล าดบ

ก. การท างานของโปรแกรมเรมจากบรรทดบนลงไปบรรทดลาง ข. การท างานของโปรแกรมเรมจากบรรทดบนลงไปบรรทดลางแตจะไมมการท างานทก

บรรทด ขนอยกบค าสงของโปรแกรม ค. การท างานของโปรแกรมเรมจากบรรทดบนลงไปบรรทดลาง หรอจากบรรทดลางมา

บรรทดบน ง. การท างานของโปรแกรมเรมจากบรรทดบนลงไปบรรทดลางโดยมการท างานตามล าดบไม

มการขามบรรทดการท างาน

จากโปรแกรมตอไปนตอบค าถามขอ 2 - 3 1 #include<iostream>

2 using namespace std;

3 int main( ){

4 int number=20;

5 if(number > 10)

6 cout<<number<<endl;

7 number+=10;

8 return 0;

9 }

2. จากโปรแกรมดงกลาวขางตน เมอสงใหโปรแกรมท างานแลวการแสดงผลทจอภาพจะตรงกบค าตอบขอใด ก. 20 ข. 10 ค. 30 ง. number = 10

51

3. จากโปรแกรมดงกลาวขางตน เมอสงใหโปรแกรมท างานแลวตวแปร number จะมคาตรงกบค าตอบในขอใด ก. 10 ข. 20 ค. 30 ง. 40

จากโปรแกรมตอไปนตอบค าถาม 4 - 6 1 #include<iostream>

2 using namespace std;

3 int main( ){

4 int number=2;

5 if(number > 15)

6 cout<<number<<endl;

7 else

8 cout<<++number<<endl;

9 return 0;

10 }

4. จากโปรแกรมดงกลาวขางตน เมอสงใหโปรแกรมท างานแลวตวแปร number จะมคาตรงกบค าตอบในขอใด ก. 15 ข. 2 ค. 3 ง. 4

5. จากโปรแกรมดงกลาวขางตน เมอสงใหโปรแกรมท างานแลวการแสดงผลทจอภาพจะตรงกบค าตอบขอใด ก. 2 ข. 3 ค. 4 ง. 15

52

6. โครงสรางควบคมการท างาน switch() จะมการรบพารามเตอรชนดขอมลชนดใด ส าหรบการเลอก case ใด ๆ ในการท างาน ก. int และ float ข. int และ string ค. char และ int ง. int และ byte 1 #include<iostream>

2 using namespace std;

3 int main( ){

4 int i = 5;

5 while(i>0){

6 cout<<i<<” “

7 i--;

8 }

9 return 0;

10 }

7. จากโปรแกรมดงกลาวขางตน เมอมการท างานแลวจะมการแสดงผลทจอภาพตรงกบค าตอบขอใด ก. 5 4 3 2 1 ข. 5 4 3 2 1 0 ค. 1 2 3 4 5 ง. 0 1 2 3 4 5

8. จากโปรแกรมดงกลาวขางตน เมอโปรแกรมท างานแลวเสรจ ตวแปร i มคาตรงกบค าตอบขอใด ก. i = 5 ข. i = 1 ค. i = 0 ง. i = -1

1 #include<iostream>

2 using namespace std;

3 int main( ){

4 int i = 1;

5 do{

6 cout<<i<<” “;

7 i+=2;

53

8 }while(i<10);

9 return 0;

10 }

9. จากโปรแกรมดงกลาวขางตน เมอท างานแลวจะแสดงผลลพธทางจอภาพตรงกบค าตอบขอใด

ก. 1 2 3 4 5 6 7 8 9 ข. 1 3 5 7 9 ค. 1 3 5 7 9 11 ง. 3 5 7 9

10. จากโปรแกรมดงกลาวขางตน ในบรรทดท 4 เปลยนการก าหนดคาเรมตน i = 10 เมอโปรแกรมท างานแลว จะไดผลลพธตรงกบค าตอบในขอใด ก. 8 ข. 9 ค. 10 ง. 12

11. จากโปรแกรมดงกลาวขางตน ในบรรทดท 7 เปลยนเปนค าสง เปน i+=5 เมอโปรแกรมท างานแลว จะไดผลลพธตรงกบค าตอบในขอใด ก. 1 5 ข. 1 5 10 ค. 1 5 6 10 ง. 1 6

1 #include<iostream>

2 using namespace std;

3 int main( ){

4 for(int i = 10;i>=5;i--)

5 cout<<i<<” “;

6 return 0;

7 }

54

12. จากโปรแกรมดงกลาวขางตน เมอท างานแลวจะแสดงผลลพธทางจอภาพตรงกบค าตอบขอใด ก. 10 9 8 7 6 ข. 10 9 8 7 6 5 ค. 9 8 7 6 5 ง. 9 8 7 6 5 4

13. จากโปรแกรมดงกลาวขางตน เมอเปลยนค าสงในบรรทดท 5 เปน cout<<++i<<” “; เมอท างานแลวผลลพธทแสดงออกจอภาพตรงกบขอใด ก. 11 10 9 8 7 6 5 ข. 11 10 9 8 7 6 ค. 11 10 11 10 11 ง. แสดงขอความเลข 11 บนจอภาพ ไมรจบ

14. จากโปรแกรมดงกลาวขางตน เมอเปลยนค าสงในบรรทดท 5 เปน cout<<--i<<” “; เมอท างานแลวผลลพธทแสดงออกจอภาพตรงกบขอใด ก. 10 9 7 5 ข. 9 7 5 ค. 10 9 7 5 ง. แสดงขอความเลข 9 บนจอภาพ ไมรจบ

15. ค ากลาวขอใดตอไปนถกตองทสด ก. ค าสงท าซ า do..while จะมการท างานอยางนอย 1 ครงเสมอ ข. ค าสงท าซ า while ครงแรกจะมคาเปนจรงเสมอ ค. ค าสงท าซ า while จะใชกบการท าซ าทมจดสนสดทแนนอน ง. ค าสงท าซ า while, do…while และ for จะไมสามารถประยกตใชงานทดแทนกนได

55

เฉลยแบบทดสอบกอนเรยน บทท 4 เรอง โครงสรำงควบคมกำรท ำงำน

ขอท เฉลย

1 ง 2 ก 3 ค 4 ค 5 ข 6 ค 7 ก 8 ค 9 ข

10 ค 11 ง 12 ข 13 ง 14 ข 15 ก

56

ใบแบบฝกหด บทท 4 เรอง โครงสรำงควบคมกำรท ำงำน

ค ำชแจง 1. ใบแบบฝกหดมทงหมด 3 ขอ คะแนนเตม 50 คะแนน 2. ใหนกศกษาท าหมดทกขอ --------------------------------------------------------------------------------------------------------------------- 1. ใหนกศกษาบอกลกษณะการท างานของโครงสรางควบคมแบบตามล าดบ (10 คะแนน) 2. ใหนกศกษาบอกลกษณะการท างานของโครงสรางควบคมแบบเลอกท า (20 คะแนน) 3. ใหนกศกษาบอกลกษณะการท างานของโครงสรางควบคมแบบท าซ า (20 คะแนน)

57

เฉลยใบแบบฝกหด บทท 4 เรอง โครงสรำงควบคมกำรท ำงำน

ค ำชแจง 1. ใบงานมทงหมด 3 ขอ คะแนนเตม 50 คะแนน 2. ใหนกศกษาท าหมดทกขอ --------------------------------------------------------------------------------------------------------------------- 1. ใหนกศกษาบอกลกษณะการท างานของโครงสรางควบคมแบบตามล าดบ พรอมยกตวอยาง ( 10 คะแนน ) ตอบ เปนการควบคมการท างานของโปรแกรมคอมพวเตอรแบบพนฐาน โดยการท างานจะเรมท างานจากบรรทดบนสดไปสบรรทดลางสด ซงจะมการท างานทกบรรทด 2. ใหนกศกษาบอกลกษณะการท างานของโครงสรางควบคมแบบเลอกท า พรอมยกตวอยาง ( 20 คะแนน ) ตอบ เปนการควบคมการท างานของโปรแกรมคอมพวเตอรทมการท างานจากบรรทดบนสดไปสบรรทดลางสด แตจะไมมการท างานทกบรรทดค าสง ทงนขนอยกบเงอนไขของนพจนบลน วาผลการทดสอบทออกมาจะมคาเปนจรงหรอเทจ ถาผลออกมาเปนจรงจะมการท างานเสนทางหนง และถาผลออกมาเปนเทจจะมการท างานอกเสนทางหนง ซงทงสองเสนทางนจะไมซ ากน ซงโครงสรางควบคมแบบเลอกท าแบงออกได 3 แบบ คอ ค าสงควบคมแบบเลอกท า if ค าสงควบคมแบบเลอกท า if...else และค าสงควบคมแบบเลอกท า if...else ซงมรายละเอยดตอไปน

1. if เปนการควบคมแบบเลอกท าโดยถาผลการทดสอบ นพจนบลน มคาเปนจรงจะมเสนทางในการท างานของ สเตทเมนท ใด ๆ ซงอาจจะมการท างานแคสเตทเมนทเดยวหรอหลาย สเตทเมนท กได แตถาผลออกมาเปนเทจ ไมตองท างาน สเตทเมนท ใด ๆ และสนสดการท างานของค าสง if

2. if...else เปนการควบคมแบบเลอกท าโดยผลการทดสอบ นพจนบลน ถามคาเปนจรงจะมเสนทางการท างานเสนทางหนง ซงจะมการท างานแค สเตทเมนท เดยว หรอหลาย สเตทเมนท กไดและเมอท างานครบตาม สเตทเมนท ทก าหนดไว กจะออกจากค าสงแบบเลอกท า if...else ส าหรบกรณผลการทดสอบออกมาเปนเทจ จะมเสนทางการท างานอกเสนทางหนงซงจะมการท างานแค สเตทเมนท เดยว หรอหลาย สเตทเมนท กไดและเมอท างานครบตาม สเตทเมนท ทก าหนดไว กจะออกจากค าสงแบบเลอกท า if...else ซงในการท างานของการควบคมแบบเลอกท าแตละครงจะมเสนทางในการท างานแคเสนทางเดยวเทานน

3. switch เปนการควบคมแบบเลอกท าโดยจะมการท างานคลายกบค าสง if...else ซงการท างานของค าสง switch จะท างานตรงกบกรณ (case) ทคาของ switch ตรงกนเทานน แตถาไมมกรณของ

58

switch ทตรงกน กจะท างานทค าสง default ส าหรบการรบคา พารามเตอรของค าสง switch จะรองรบชนดขอมล 2 ชนด คอ เลขจ านวนเตมและอกขระ เทานน และเมอมการท างานของกรณใด ๆ เสรจ จะมคยเวรด break; ส าหรบการหยดการท างานและออกจากค าสงเลอกท า switch 3. ใหนกศกษาบอกลกษณะการท างานของโครงสรางควบคมแบบท าซ า พรอมยกตวอยาง ( 20 คะแนน ) ตอบ เปนโครงสรางส าหรบการควบคมการท างานทมลกษณะท าซ า ๆ กนหลาย ๆ ครง ซงจะสงใหการเขยนโปรแกรมมความกะทดรด คลองตว ซงค าสงควบคมแบบท าซ าประกอบดวย ค าสง while, do..while และ for

1. while เปนค าสงควบคมการท าซ าโดยมการทดสอบนพจนบลน วามคาเปนจรงหรอเทจ ถาผลการทดสอบออกมาเปน จรง กจะมเสนทางในการท างานของ สเตทเมนท ใด ๆ เมอมการท างานครบทก สเตทเมนท ทก าหนดไว กจะวนกลบมาทดสอบ นพจนบลน อก ถาเปนจรงกจะท างานซ า ๆ เหมอนเดมอก และจะมวงรอบการท างานแบบนไปเรอย ๆ จนกวาผลการทดสอบ นพจนบลน มคาเปนเทจ จงออกจากค าสงท าซ า while

2. do...while เปนค าสงควบคมการท าซ าโดยมการท างานของ สเตทเมนท ใด ๆ 1 ครง กอนทจะท าการทดสอบนพจนบลน และเมอผลการทดสอบนพจนบลนมคาเปนจรง กจะวนกลบมาท างาน สเตทเมนท ใด ๆ อกครง แลวท าการทดสอบนพจนบลนอกครง ถาผลการทดสอบออกมาเปนจรงกจะมการวนการท างานซ า ๆ แบบนไปเรอย ๆ จนกวาผลการทดสอบการท างานออกมาเปนเทจ จงจะจบการท างานค าสงท าซ า do...while

3. for เปนค าสงควบคมการท าซ าทมผลการท างานคลายกบค าสงท าซ า while และ do...while ส าหรบค าสงควบคมการท าซ า for จะนยมใชกบการท าซ าทมการรจดสนสดการท าซ าทแนนอนโดยภายในค าสงท าซ า for จะมการแบงออกเปน 3 สวน โดยสวนแรก จะเปนการก าหนดคาเรมตนใหกบตวแปร ใด ๆ ส าหรบสวนทสองจะเปนการทดสอบนพจนบลน ถาผลการทดสอบมคาเปนจรง กจะมการท างาน สเตทเมนท ใดๆ และเมอมการท างานครบตาม สเตทเมนท ทก าหนดไว จะกลบมาท างานในสวนท 3 ซงในสวนนอาจจะเปนการปรบปรงคาเรมตนกได หลงจากนนจะไปท าการทดสอบนพจนบลนอกครง ถาผลออกมาเปนจรง กจะมการวนรอบการท าซ าแบบนไปเรอย ๆ จนกวาผลการทดสอบออกมาเปนเทจ จงออกจากค าสงท าซ า for

59

ใบงำน บทท 4 เรอง โครงสรำงควบคมกำรท ำงำน

ค ำชแจง 1. ใบงานมทงหมด 8 ขอ คะแนนเตม 100 คะแนน 2. ใหนกศกษาท าหมดทกขอ --------------------------------------------------------------------------------------------------------------------- 1. โปรแกรมค านวณหาพนทสามเหลยม โดยมการรบคาจากผใชงานเปน ความยาวฐาน และความสง หลงจากนนท าการค านวณหาพนทสามเหลยม โดยใชสตร 0.5 * ฐาน * สง และแสดงผลพนทสามเหลยมทางจอภาพ ใหนกศกษาเขยนโปรแกรมใหสมบรณ และแสดงผลลพธการท างาน (10 คะแนน)

1 //Lab4_1.cpp

2 #include<iostream>

3 using namespace std;

4 int main( ){

5 double base;

6 _________1___________;

7 _________2____________;

8 cout<<"Enter base :";

9 cin>>____3______

10 cout<<"Enter height :";

11 cin>>height;

12 area = 0.5 * base * height;

13 cout<<"base :"<<base<<endl;

14 cout<<"height :"<<height<<endl;

15 cout<<"area = "<<area<<endl;

16 }

60

2. โปรแกรมรบเลขจ านวนเตมจากผใช หลงจากนนท าการทดสอบนพจนบลนวาตวเลขทรบมามคา มากกวา 100 จรงหรอเทจ ถาผลออกมาเปนจรง ใหแสดงขอความ คาทรบมา > 100 ออกทางจอภาพ จากโปรแกรมดงกลาวใหนกศกษาเขยนโปรแกรมใหสมบรณ พรอมทงเขยนผลลพธจากการท างานของโปรแกรม (10 คะแนน)

1 //Lab4_2.cpp

2 #include____1_______

3 using namespace std;

4 int main( ){

5 int ____2______ = 0;

6 cout<<"Enter number1 :";

7 ___3_____>>number1;

8 if(number1 ___4_____ 100)

9 cout<<number1<<" > "<< 100;

10 ____5______

11 }

3. โปรแกรมรบคาจากผใชเปนเลขจ านวนเตม 1 จ านวน หลงจากนนใหหาวาเลขจ านวนดงกลาวเปนเลขจ านวนเตมค หรอเลขจ านวนเตมค แลวแสดงผลทางจอภาพ จากโปรแกรมดงกลาวใหนกศกษาเขยนโปรแกรมใหสมบรณ พรอมทงเขยนผลลพธการท างานของโปรแกรม (10 คะแนน)

1 //Lab4_3.cpp

2 #include<iostream>

3 using namespace std;

4 int main( ){

5 int _____1____ = 0;

6 cout<<"Enter number1 :";

7 cin>>number1;

8 if(____2_____ == 0)

9 cout<<number1<<" is Even number"<<endl;

10 ______3_________

11 cout<<number1<<" is Odd number"<<endl;

12 return 0;

13 }

61

4. โปรแกรมรบคาจากผใชเปนเลขจ านวนเตม 1 จ านวน หลงจากนนใหหาวาเลขจ านวนดงกลาวมคามากกวา 0 หรอ นอยกวา 0 หรอมคาเทากบ 0 แลวแสดงผลทางจอภาพ จากโปรแกรมดงกลาวใหนกศกษาเขยนโปรแกรมใหสมบรณ พรอมทงเขยนผลลพธการท างานของโปรแกรม (10 คะแนน)

1 //Lab4_4.cpp

2 #include<iostream>

3 using namespace std;

4 int main( ){

5 ______1______

6 cout<<"Enter number1 :";

7 _____2______

8 if(number1 ___3_____ 0)

9 cout<<number1<<" > "<<0<<endl;

10 else if(number1 ____4____ 0)

11 cout<<number1<<" < "<<0<<endl;

12 ____5_______

13 cout<<number1<<" == "<<0<<endl;

14 return 0;

15 }

62

5. โปรแกรมรบคาจากผใชเปนตวอกษรภาษาองกฤษ หลงจากนนใหท าการประมวลผลวา ตวอกษรดงกลาวเปนพยญชนะ(Consonant) หรอ สระ(Vowel) และแสดงผลทางจอภาพ (10 คะแนน)

1 //Lab4_5.cpp

2 #include<iostream>

3 using namespace std;

4 int main( ){

5 _____1_______

6 cout<<"Enter char :";

7 cin>>c;

8 switch(c){

9 case 'a' : case 'A': case 'e' : case 'E': case 'i' : case 'I':

10 case 'o' : case 'O': case 'u' : case 'U': cout<<"Vowel"; break;

11 case 'b' : case 'B' : case 'c' : case 'C' : case 'd' : case 'D' :

12 case 'f' : case 'F' : case 'g' : case 'G' : case 'h' : case 'H' :

13 case 'j' : case 'J' : case 'k' : case 'K' : case 'l' : case 'L' :

14 case 'm' : case 'M' : case 'n' : case 'N' : case 'p' : case 'P' :

15 case 'q' : case 'Q' : case 'r' : case 'R' : case 's' : case 'S' :

16 __________2_____________

17 case 'x' : case 'X' : case 'y' : case 'Y' : case 'z' : case 'Z' :

18 cout<<"Consonant"; break;

19 default : cout<<"no char";

20 }

21 return 0;

22 }

63

6. โปรแกรมวนรอบการรบเลขจ านวนเตมจากผใชหลงจากนนน าตวเลขมารวมกนในแตละรอบและท าการวนซ าไปเรอย ๆ จนกวาผใชจะใสเลขนอยกวา 0 ใหหยดการวนรบคา แลวน าผลรวมของตวเลขทงหมดมาแสดงผลทางจอภาพ ใหนกศกษาเขยนโปรแกรมดงกลาวใหสมบรณ พรอมทงเขยนผลลพธทเกดจากการท างาน (10 คะแนน)

1 //Lab4_6.cpp

2 #include<iostream>

3 using namespace std;

4 int main( ){

5 int number1=0;

6 int ____1____

7 while(number1 ___2_____ -1 ){

8 cout<<"Enter number1 :";

9 cin>>number1;

10 if(number1>__3_____)

11 sum+=___4_____

12 }

13 cout<<______5______

14 return 0;

15 }

64

7. โปรแกรมวนรอบการรบเลขจ านวนเตมจากผใชหลงจากนนน าตวเลขมารวมกนในแตละรอบและท าการวนซ าไปเรอย ๆ จนกวาผใชจะใสเลขนอยกวา 0 ใหหยดการวนรบคา แลวน าผลรวมของตวเลขทงหมดมาแสดงผลทางจอภาพ ใหนกศกษาเขยนโปรแกรมดงกลาวดวยค าสงควบคมการท าซ า do..while พรอมทงเขยนผลลพธทเกดจากการท างาน (20 คะแนน)

1 //Lab4_7.cpp

2 #include<iostream>

3 using namespace std;

4 int main(){

5 int number1=0;

6 int sum=0;

7 do{

8 cout<<"Enter number1 :";

9 cin>>number1;

10 if(number1>-1)

11 sum+=number1;

12 }

13 while(number1 > -1 );

14 cout<<sum;

15 return 0;

16 }

8. โปรแกรมรบเลขจ านวนเตม 1 จ านวนหลงจากนนใหแสดงเลขคทางจอภาพ โดยเรมจากเลขจ านวนเตมทรบคา แลวลดคาลงจนกวาจะมคาเทากบ 1 และใหแสดงผลออกจอภาพ ใหนกศกษาเขยนโปรแกรม โดยมการแสดงผลตามทโจทยใหมาตอไปน (20 คะแนน) ผลลพธกำรท ำงำนของโปรแกรม Enter number1 : 6

5

3

1

65

เฉลยใบงำน บทท 4 เรอง โครงสรำงควบคมกำรท ำงำน

ค ำชแจง 1. ใบงานมทงหมด 8 ขอ คะแนนเตม 100 คะแนน 2. ใหนกศกษาท าหมดทกขอ --------------------------------------------------------------------------------------------------------------------- 1. โปรแกรมค านวณหาพนทสามเหลยม โดยมการรบคาจากผใชงานเปน ความยาวฐาน และความสง หลงจากนนท าการค านวณหาพนทสามเหลยม โดยใชสตร 0.5 * ฐาน * สง และแสดงผลพนทสามเหลยมทางจอภาพ ใหนกศกษาเขยนโปรแกรมใหสมบรณ และแสดงผลลพธการท างาน (10 คะแนน)

1 //Lab4_1.cpp

2 #include<iostream>

3 using namespace std;

4 int main( ){

5 double base;

6 _________1___________;

7 _________2____________;

8 cout<<"Enter base :";

9 cin>>____3______

10 cout<<"Enter height :";

11 cin>>height;

12 area = 0.5 * base * height;

13 cout<<"base :"<<base<<endl;

14 cout<<"height :"<<height<<endl;

15 cout<<"area = "<<area<<endl;

16 }

เขยนโคดเพอใหโปรแกรมสมบรณ

1 double base

2 double height

3 base;

ผลลพธกำรท ำงำนของโปรแกรม Enter base : 2.5

Enter height : 5.5

Area of Triangle : 6.875

66

2. โปรแกรมรบเลขจ านวนเตมจากผใช หลงจากนนท าการทดสอบนพจนบลนวาตวเลขทรบมามคา มากกวา 100 จรงหรอเทจ ถาผลออกมาเปนจรง ใหแสดงขอความ คาทรบมา > 100 ออกทางจอภาพ จากโปรแกรมดงกลาวใหนกศกษาเขยนโปรแกรมใหสมบรณ พรอมทงเขยนผลลพธจากการท างานของโปรแกรม (10 คะแนน)

1 //Lab4_2.cpp

2 #include____1_______

3 using namespace std;

4 int main( ){

5 int ____2______ = 0;

6 cout<<"Enter number1 :";

7 ___3_____>>number1;

8 if(number1 ___4_____ 100)

9 cout<<number1<<" > "<< 100;

10 ____5______

11 }

เขยนโคดเพอใหโปรแกรมสมบรณ

1 <iostream>

2 number1

3 cin

4 >

5 return 0;

ผลลพธกำรท ำงำนของโปรแกรม Enter base : 4.50

Enter height : 6.75

Area of Triangle : 15.1875

67

3. โปรแกรมรบคาจากผใชเปนเลขจ านวนเตม 1 จ านวน หลงจากนนใหหาวาเลขจ านวนดงกลาวเปนเลขจ านวนเตมค หรอเลขจ านวนเตมค แลวแสดงผลทางจอภาพ จากโปรแกรมดงกลาวใหนกศกษาเขยนโปรแกรมใหสมบรณ พรอมทงเขยนผลลพธการท างานของโปรแกรม (10 คะแนน)

1 //Lab4_3.cpp

2 #include<iostream>

3 using namespace std;

4 int main( ){

5 int _____1____ = 0;

6 cout<<"Enter number1 :";

7 cin>>number1;

8 if(____2_____ == 0)

9 cout<<number1<<" is Even number"<<endl;

10 ______3_________

11 cout<<number1<<" is Odd number"<<endl;

12 return 0;

13 }

เขยนโคดเพอใหโปรแกรมสมบรณ

1 number1

2 number1 % 2

3 else

ผลลพธกำรท ำงำนของโปรแกรม Enter number1 : 10

number1 is Even number

68

4. โปรแกรมรบคาจากผใชเปนเลขจ านวนเตม 1 จ านวน หลงจากนนใหหาวาเลขจ านวนดงกลาวมคามากกวา 0 หรอ นอยกวา 0 หรอมคาเทากบ 0 แลวแสดงผลทางจอภาพ จากโปรแกรมดงกลาวใหนกศกษาเขยนโปรแกรมใหสมบรณ พรอมทงเขยนผลลพธการท างานของโปรแกรม (10 คะแนน)

1 //Lab4_4.cpp

2 #include<iostream>

3 using namespace std;

4 int main( ){

5 ______1______

6 cout<<"Enter number1 :";

7 _____2______

8 if(number1 ___3_____ 0)

9 cout<<number1<<" > "<<0<<endl;

10 else if(number1 ____4____ 0)

11 cout<<number1<<" < "<<0<<endl;

12 ____5_______

13 cout<<number1<<" == "<<0<<endl;

14 return 0;

15 }

เขยนโคดเพอใหโปรแกรมสมบรณ

1 int number1;

2 cin >> number1;

3 >

4 <

5 else

ผลลพธกำรท ำงำนของโปรแกรม Enter number1 : 10

Number1 > 0

69

5. โปรแกรมรบคาจากผใชเปนตวอกษรภาษาองกฤษ หลงจากนนใหท าการประมวลผลวา ตวอกษรดงกลาวเปนพยญชนะ(Consonant) หรอ สระ(Vowel) และแสดงผลทางจอภาพ (10 คะแนน)

1 //Lab4_5.cpp

2 #include<iostream>

3 using namespace std;

4 int main( ){

5 _____1_______

6 cout<<"Enter char :";

7 cin>>c;

8 switch(c){

9 case 'a' : case 'A': case 'e' : case 'E': case 'i' : case 'I':

10 case 'o' : case 'O': case 'u' : case 'U': cout<<"Vowel"; break;

11 case 'b' : case 'B' : case 'c' : case 'C' : case 'd' : case 'D' :

12 case 'f' : case 'F' : case 'g' : case 'G' : case 'h' : case 'H' :

13 case 'j' : case 'J' : case 'k' : case 'K' : case 'l' : case 'L' :

14 case 'm' : case 'M' : case 'n' : case 'N' : case 'p' : case 'P' :

15 case 'q' : case 'Q' : case 'r' : case 'R' : case 's' : case 'S' :

16 __________2_____________

17 case 'x' : case 'X' : case 'y' : case 'Y' : case 'z' : case 'Z' :

18 cout<<"Consonant"; break;

19 default : cout<<"no char";

20 }

21 return 0;

22 }

เขยนโคดเพอใหโปรแกรมสมบรณ

1 Char c;

2 case 't' : case 'T' : case 'u' : case 'U' : case 'v' : case 'V' : case 'w' : case 'W':

ผลลพธกำรท ำงำนของโปรแกรม Enter char : o

Vowel

70

6. โปรแกรมวนรอบการรบเลขจ านวนเตมจากผใชหลงจากนนน าตวเลขมารวมกนในแตละรอบและท าการวนซ าไปเรอย ๆ จนกวาผใชจะใสเลขนอยกวา 0 ใหหยดการวนรบคา แลวน าผลรวมของตวเลขทงหมดมาแสดงผลทางจอภาพ ใหนกศกษาเขยนโปรแกรมดงกลาวใหสมบรณ พรอมทงเขยนผลลพธทเกดจากการท างาน (10 คะแนน)

1 //Lab4_6.cpp

2 #include<iostream>

3 using namespace std;

4 int main( ){

5 int number1=0;

6 int ____1____

7 while(number1 ___2_____ -1 ){

8 cout<<"Enter number1 :";

9 cin>>number1;

10 if(number1>__3_____)

11 sum+=___4_____

12 }

13 cout<<______5______

14 return 0;

15 }

เขยนโคดเพอใหโปรแกรมสมบรณ

1 sum = 0;

2 >

3 -1

4 number1;

5 sum

ผลลพธกำรท ำงำนของโปรแกรม Enter number1 : 4

Enter number1 : 3

Enter number1 : 2

Enter number1 : -4

9

71

7. โปรแกรมวนรอบการรบเลขจ านวนเตมจากผใชหลงจากนนน าตวเลขมารวมกนในแตละรอบและท าการวนซ าไปเรอย ๆ จนกวาผใชจะใสเลขนอยกวา 0 ใหหยดการวนรบคา แลวน าผลรวมของตวเลขทงหมดมาแสดงผลทางจอภาพ ใหนกศกษาเขยนโปรแกรมดงกลาวดวยค าสงควบคมการท าซ า do..while พรอมทงเขยนผลลพธทเกดจากการท างาน (20 คะแนน)

1 //Lab4_7.cpp

2 #include<iostream>

3 using namespace std;

4 int main(){

5 int number1=0;

6 int sum=0;

7 do{

8 cout<<"Enter number1 :";

9 cin>>number1;

10 if(number1>-1)

11 sum+=number1;

12 }

13 while(number1 > -1 );

14 cout<<sum;

15 return 0;

16 }

ผลลพธกำรท ำงำนของโปรแกรม Enter number1 : 9

Enter number1 : 8

Enter number1 : -1

17

72

8. โปรแกรมรบเลขจ านวนเตม 1 จ านวนหลงจากนนใหแสดงเลขคทางจอภาพ โดยเรมจากเลขจ านวนเตมทรบคา แลวลดคาลงจนกวาจะมคาเทากบ 1 และใหแสดงผลออกจอภาพ ใหนกศกษาเขยนโปรแกรมดงกลาว พรอมเขยนผลลพธการท างาน ( 20 คะแนน)

1 //Lab4_8.cpp

2 #include<iostream>

3 using namespace std;

4 int main(){

5 int number1;

6 cout<<"Enter number1 :";

7 cin>>number1;

8 for(int i=1;number1>0;number1--){

9 if(number1%2 != 0){

10 cout<<number1<<endl;

11 }

12 }

13 return 0;

14 }

ผลลพธกำรท ำงำนของโปรแกรม Enter number1 : 6

5

3

1

73

แบบทดสอบหลงเรยน บทท 4 เรอง โครงสรำงควบคมกำรท ำงำน

ค ำชแจง 1. ใหนกศกษาเลอก กากบาท X ลงในกระดาษค าตอบทแจกใหโดยเลอกขอทถกทสดเพยงขอเดยว 2. ตอบถกไดคะแนนขอละ 1 คะแนน ตอบผดได 0 คะแนน 3. แบบทดสอบมทงหมด 15 ขอ ---------------------------------------------------------------------------------------------------------------------- 1. ขอใดคอลกษณะรปแบบของการควบคมการท างานแบบตามล าดบ

ก. การท างานของโปรแกรมเรมจากบรรทดบนลงไปบรรทดลาง ข. การท างานของโปรแกรมเรมจากบรรทดบนลงไปบรรทดลางแตจะไมมการท างานทก

บรรทด ขนอยกบค าสงของโปรแกรม ค. การท างานของโปรแกรมเรมจากบรรทดบนลงไปบรรทดลาง หรอจากบรรทดลางมา

บรรทดบน ง. การท างานของโปรแกรมเรมจากบรรทดบนลงไปบรรทดลางโดยมการท างานตามล าดบไม

มการขามบรรทดการท างาน

1 #include<iostream>

2 using namespace std;

3 int main( ){

4 int number=20;

5 if(number > 10)

6 cout<<number<<endl;

7 number+=10;

8 return 0;

9 }

2. จากโปรแกรมดงกลาวขางตน เมอสงใหโปรแกรมท างานแลวการแสดงผลทจอภาพจะตรงกบค าตอบขอใด ก. 20 ข. 10 ค. 30 ง. number = 10

74

3. จากโปรแกรมดงกลาวขางตน เมอสงใหโปรแกรมท างานแลวตวแปร number จะมคาตรงกบค าตอบในขอใด ก. 10 ข. 20 ค. 30 ง. 40 1 #include<iostream>

2 using namespace std;

3 int main( ){

4 int number=2;

5 if(number > 15)

6 cout<<number<<endl;

7 else

8 cout<<++number<<endl;

9 return 0;

10 }

4. จากโปรแกรมดงกลาวขางตน เมอสงใหโปรแกรมท างานแลวตวแปร number จะมคาตรงกบค าตอบในขอใด ก. 15 ข. 2 ค. 3 ง. 4

5. จากโปรแกรมขางตน เมอใหโปรแกรมท างานการแสดงผลทจอภาพจะตรงกบค าตอบขอใด ก. 2 ข. 3 ค. 4 ง. 15

6. โครงสรางควบคมการท างาน switch() จะมการรบพารามเตอรชนดขอมลชนดใด ส าหรบการเลอก case ใด ๆ ในการท างาน ก. int และ float ข. int และ string ค. char และ int ง. int และ byte

75

1 #include<iostream>

2 using namespace std;

3 int main( ){

4 int i = 5;

5 while(i>0){

6 cout<<i<<” “

7 i--;

8 }

9 return 0;

10 }

7. จากโปรแกรมดงกลาวขางตน เมอมการท างานแลวจะมการแสดงผลทจอภาพตรงกบค าตอบขอใด ก. 5 4 3 2 1 ข. 5 4 3 2 1 0 ค. 1 2 3 4 5 ง. 0 1 2 3 4 5

8. จากโปรแกรมดงกลาวขางตน เมอโปรแกรมท างานแลวเสรจ ตวแปร i มคาตรงกบค าตอบขอใด ก. i = 5 ข. i = 1 ค. i = 0 ง. i = -1

1 #include<iostream>

2 using namespace std;

3 int main( ){

4 int i = 1;

5 do{

6 cout<<i<<” “;

7 i+=2;

8 }while(i<10);

9 return 0;

10 }

76

9. จากโปรแกรมดงกลาวขางตน เมอท างานแลวจะแสดงผลลพธทางจอภาพตรงกบค าตอบขอใด ก. 1 2 3 4 5 6 7 8 9 ข. 1 3 5 7 9 ค. 1 3 5 7 9 11 ง. 3 5 7 9

10. จากโปรแกรมดงกลาวขางตน ในบรรทดท 4 เปลยนการก าหนดคาเรมตน i = 10 เมอโปรแกรมท างานแลว จะไดผลลพธตรงกบค าตอบในขอใด ก. 8 ข. 9 ค. 10 ง. 12

11. จากโปรแกรมดงกลาวขางตน ในบรรทดท 7 เปลยนเปนค าสง เปน i+=5 เมอโปรแกรมท างานแลว จะไดผลลพธตรงกบค าตอบในขอใด ก. 1 5 ข. 1 5 10 ค. 1 5 6 10 ง. 1 6

1 #include<iostream>

2 using namespace std;

3 int main( ){

4 for(int i = 10;i>=5;i--)

5 cout<<i<<” “;

6 return 0;

7 }

12. จากโปรแกรมดงกลาวขางตน เมอท างานแลวจะแสดงผลลพธทางจอภาพตรงกบค าตอบขอใด

ก. 10 9 8 7 6 ข. 10 9 8 7 6 5 ค. 9 8 7 6 5 ง. 9 8 7 6 5 4

77

13. จากโปรแกรมดงกลาวขางตน เมอเปลยนค าสงในบรรทดท 5 เปน cout<<++i<<” “; เมอท างานแลวผลลพธทแสดงออกจอภาพตรงกบขอใด ก. 11 10 9 8 7 6 5 ข. 11 10 9 8 7 6 ค. 11 10 11 10 11 ง. แสดงขอความเลข 11 บนจอภาพ ไมรจบ

14. จากโปรแกรมดงกลาวขางตน เมอเปลยนค าสงในบรรทดท 5 เปน cout<<--i<<” “; เมอท างานแลวผลลพธทแสดงออกจอภาพตรงกบขอใด ก. 10 9 7 5 ข. 9 7 5 ค. 10 9 7 5 ง. แสดงขอความเลข 9 บนจอภาพ ไมรจบ

15. ค ากลาวขอใดตอไปนถกตองทสด ก. ค าสงท าซ า do..while จะมการท างานอยางนอย 1 ครงเสมอ ข. ค าสงท าซ า while ครงแรกจะมคาเปนจรงเสมอ ค. ค าสงท าซ า while จะใชกบการท าซ าทมจดสนสดทแนนอน ง. ค าสงท าซ า while do..while และ for จะไมสามารถประยกตใชงานทดแทนกนได

78

เฉลยแบบทดสอบหลงเรยน บทท 4 เรอง โครงสรำงควบคมกำรท ำงำน

ขอท เฉลย

1 ง 2 ก 3 ค 4 ค 5 ข 6 ค 7 ก 8 ง 9 ข

10 ค 11 ง 12 ข 13 ง 14 ข 15 ก

79

บทท 5 เรอง ฟงกชน

80

แบบทดสอบกอนเรยน บทท 5 เรอง ฟงกชน

ค ำชแจง 1. ใหนกศกษาเลอก กากบาท X ลงในกระดาษค าตอบทแจกใหโดยเลอกขอทถกทสดเพยงขอเดยว 2. ตอบถกไดคะแนนขอละ 1 คะแนน ตอบผดได 0 คะแนน 3. แบบทดสอบมทงหมด 10 ขอ ---------------------------------------------------------------------------------------------------------------------- 1. ขอใด มใช ประโยชน จากการสรางฟงกชนในการใชงาน

ก. แตละฟงกชนมหนาทเพยงอยางเดยวเทานน ข. สามารถเรยกใชงานซ า ๆ ไดหลายครง ค. สามารถแบงกนแตละฟงกชนใหนกพฒนาโปรแกรมไปพฒนาแยกกนได ง. ฟงกชนเหมาะกนการพฒนาโปรแกรมทมความสลบซบซอน

2. ขอใดคอรปแบบการสรางฟงกชนทถกตอง ก. return_type function_name(parameter_list){ statements; return data_type; } ข. return_type function_name( ){ statements; return data_type; } ค. return_type function_name(parameter_list){ statements; } ง. void function_name(parameter_list){ statements; return data_type; }

3. เมอตองการจดการขอมลชนดขอความจะตองมการน าเขาไลบรารใด ก. #include<char> ข. #include<string> ค. #include “char” ง. #include “string”

4. เมอมการประกาศตวแปรโลคอล ซ ากบตวแปรโกลบอล เมอมการท างานภายในฟงกชนนน ๆ จะมการเรยกใชงานตวแปรชนดใดมาท างาน ก. คอมไพลโปรแกรมไมผาน ข. ตวแปรโลคอล ค. ตวแปรโกลบอล ง. คอมไพลโปรแกรมผาน แตเมอสงท างานจะแสดงขอความผดพลาดออกมา

81

จากโปรแกรมตอไปนตอบค าถามขอ 5 - 7 1 #include<iostream>

2 using namespace std;

3 _______1________

4 _______2________

5 int main( ){

6 cout<<add(2.50,5.50);

7 show();

8 return 0;

9 }

10 double add(double n1, double n2){

11 return n1 + n2;

12 }

13 void show( ) {

14 cout<<add(4.50,5.00);

15 }

5. จากโปรแกรมดงกลาวบรรทดท 3 จะตองเตมโคดโปรแกรมอยางไร เพอใหโปรแกรมสามารถท างานไดถกตอง ก. double add(int, int ); ข. int add(double, double); ค. double add(double, double); ง. int add(int, double);

6. จากโปรแกรมดงกลาวบรรทดท 4 จะตองเตมโคดโปรแกรมอยางไร เพอใหโปรแกรมสามารถท างานไดถกตอง ก. double show( ); ข. int show(int ); ค. void show( double ); ง. void show( );

7. จากโปรแกรมดงกลาวเมอสงใหท างาน ผลลพธจะสอดคลองกบขอใด ก. 8.00 9.50 ข. 8 9.50 ค. 9.50 8.00 ง. 9.50 8

82

1 #include<iostream>

2 using namespace std;

3 ________1__________

4 int main( ){

5 int number1 = 10;

6 int* pnumber1 = &number1;

7 int& rnumber1 = number1;

8 add(pnumber1,rnumber1);

9 cout<<*pnumber1<<" "<<rnumber1;

10 return 0;

11 }

12 void add(int* p, ___2_____ r){

13 *p = *p + r;

14 }

8. จากโปรแกรมดงกลาวบรรทดท 3 จะตองเตมโคดโปรแกรมอยางไร เพอใหโปรแกรมสามารถท างานไดถกตอง ก. void add(int*, int&); ข. void add(*int, &int); ค. void add(int, int); ง. void add(int*, int*);

9. จากโปรแกรมดงกลาวบรรทดท 12 จะตองเตมโคดโปรแกรมอยางไร เพอใหโปรแกรมสามารถท างานไดถกตอง ก. &int ข. *int ค. int& ง. int*

10. จากโปรแกรมดงกลาวเมอสงใหท างาน ผลลพธจะสอดคลองกบขอใด ก. 10 ข. 10 10 ค. 10 20 ง. 20 20

83

เฉลยแบบทดสอบกอนเรยน

บทท 5 เรอง ฟงกชน

ขอท เฉลย 1 ง 2 ก 3 ข 4 ข 5 ค 6 ง 7 ข 8 ก 9 ค

10 ง

84

ใบแบบฝกหด บทท 5 เรอง ฟงกชน

ค ำชแจง 1. แบบฝกหดมทงหมด 5 ขอ คะแนนเตม 50 คะแนน 2. ใหนกศกษาท าหมดทกขอ --------------------------------------------------------------------------------------------------------------------- 1. ใหนกศกษาใหค านยามความหมายของค าวา ฟงกชน ( 10 คะแนน ) 2. ใหนกศกษาเขยนรปแบบฟงกชนเมอท างานเสรจมการสงคากลบ และรปแบบฟงกชนเมอท างานเสรจไมมการสงคากลบ ( 10 คะแนน ) 3. ใหนกศกษาอธบายขอแตกตางระหวางตวแปรโกลบอลและตวแปรโลคอล ( 10 คะแนน ) 4. ใหนกศกษายกตวอยางไลบรารมาตรฐานของภาษา C++ ทมการน าเขามาใชงานในโปรแกรมมา 5 ชนด ( 10 คะแนน ) 5. ใหนกศกษาอธบายการสงผานคาของฟงกชนดวยการผานคาพารามเตอร แบบสงผานดวยคา แบบสงผานดวยพอยนเตอร และ แบบสงผานดวยอางอง ( 10 คะแนน )

85

ใบเฉลยแบบฝกหด บทท 5 เรอง ฟงกชน

ค ำชแจง 1. แบบฝกหดมทงหมด 5 ขอ คะแนนเตม 50 คะแนน 2. ใหนกศกษาท าหมดทกขอ --------------------------------------------------------------------------------------------------------------------- 1. ใหนกศกษาใหค านยามความหมายของค าวา ฟงกชน ( 10 คะแนน ) ตอบ ฟงกชน คอ การรวมกลมของค าสงทมวตถประสงคในการท างานเรองใด เรองหนงโดยเฉพาะ มความเหมาะสมในการเรยกใชงานหลาย ๆ ครง

2. ใหนกศกษาเขยนรปแบบฟงกชนเมอท างานเสรจมการสงคากลบ และรปแบบฟงกชนเมอท างานเสรจไมมการสงคากลบ ( 10 คะแนน ) ตอบ รปแบบฟงกชนเมอท างานเสรจมการสงคากลบ

typename functionname ( parameterList ) {

statements;

return value;

}

รปแบบฟงกชนท างานเสรจไมมการสงคากลบ void functionname( parameterlist ) {

statements();

}

3. ใหนกศกษาอธบายขอแตกตางระหวางตวแปรโกลบอลและตวแปรโลคอล ( 10 คะแนน ) ตอบ ตวแปรโลคอลจะมการประกาศไวภายในฟงกชนใด ๆ จะมขอบเขตการท างานแคภายในฟงกชนเทานนไมสามารถเขาถงจากภายนอกฟงกชน สวนตวแปรโกลบอล จะเปนการประกาศตวแปรไวภายนอกฟงกชน สงผลใหทกสวนของโปรแกรมสามารถมองเหน แลวเขาถงไดจากภายนอกหรอภายในฟงกชนใด ๆ ( 10 คะแนน )

4. ใหนกศกษายกตวอยางไลบรารมาตรฐานของภาษา C++ ทมการน าเขามาใชงานในโปรแกรมมา 5 ชนด ( 10 คะแนน ) ตอบ ไลบรารทางดานคณตศาสตร #include<cmath>

ไลบรารจดการขอความ #include<string> ไลบรารแสดงขอบเขตชนดขอมล #include<climits>

86

ไลบรารจดการการแสดงผล #include<iomanip> ไลบรารจดการไฟล #include<fstream>

5. ใหนกศกษาอธบายการสงผานคาของฟงกชนดวยการผานคาพารามเตอร แบบสงผานดวยคา แบบสงผานดวยพอยนเตอร และ แบบสงผานดวยอางอง ( 10 คะแนน ) ตอบ

1. กำรผำนคำพำรำมเตอรแบบสงผำนดวยคำ คอ ในการสงผานนนจะท าการคดลอกคาอารกวเมนต สงมาใหกบตวแปรพารามเตอร และสามารถใชงานในฟงกชนได โดยทตวแปรพารามเตอรเปนตวแปรทวไป ทสามารถท าการเปลยนแปลงคาทรบมาได โดยทคาอารกวเมนตตนแบบจะไมมการเปลยนแปลง หรอมผลกระทบ

2. กำรผำนคำพำรำม เตอรแบบสงผำนดวยพอยนเตอร คอ จะเปนการสงผานคาอารกวเมนตเปนแอดเดรสใหกบตวแปรพารามเตอรส าหรบการใชงานภายในฟงกชน ดงนนตวแปรพารามเตอรจะตองเปนพอยนเตอรเพอทจะรบคาทเปนแอดเดรสเกบไว ซงจะชไปยงคาของตวแปรอารกวเมนต ดงนนเมอมการเปลยนแปลงคาดวยตวแปรพารามเตอร คาของตวแปรอารกวเมนตจะเปลยนแปลงตามไปดวย

3. กำรผำนคำพำรำมเตอร แบบสงผำนดวยอำงอง คอ จะเปนการสงผานคาอารกวเมนตเปนแอดเดรสเหมอนกบการสงผานดวยพอยนเตอร ใหกบตวแปรพารามเตอร แตตวแปรพารามเตอรจะเปนตวแปรอางอง โดยจะอางไปยงคาของตวแปรอารกวเมนต และไมสามารถเปลยนการอางได

87

ใบงำน บทท 5 เรอง ฟงกชน

ค ำชแจง 1. ใบงานมทงหมด 2 ขอ คะแนนเตม 50 คะแนน 2. ใหนกศกษาท าหมดทกขอ ===================================================================== 1. ใหนกศกษาเขยนโปรแกรมน าเขาไลบรารการจดการขอความ #include<string> จากนนใหรบคาจากผใชเปนชอ เกบไวในตวแปร fname และนามสกลเกบไวในตวแปร lname และอายเกบไวในตวแปร age จากนนใหแสดง ชอ ความยาวชอ นามสกล ความยาวนามสกล และอาย ทางจอภาพดงตอไปน ( 10 คะแนน )

Enter fname = Wuttiwong

Enter lname = Eadsrichai

fName : Wuttiwong length = 9

lname : Eadsrichai length = 10

Age : 40

88

2. ใหนกศกษาเขยนโปรแกรมโดยมการรบขอมลจากผใชเปนเลขจ านวนจรงจ านวน 2 คาสรางฟงกชนชอ void input( ); และสรางฟงกชนค านวณคามากสด void findMax(double*,double*); ภายในฟงกชนหาคามากสดเกบไวในตวแปร max ฟงกชนหาคานอยสด void findMin(double&, double&); ภายในฟงกชนหาคานอยสดเกบไวในตวแปร min และฟงกชนหาคาเฉลย double avg(double, double); สงคากลบเกบไวในตวแปร average; หลงจากนนใหแสดงคาตวเลขทรบมา คามากสด คานอยสด และคาเฉลยทางจอภาพ ฟงกชนชอ void show( ); ( 40 คะแนน )

1 #include<iostream>

2 using namespace std;

3 void input( );

4 void findMax(____1____,___2______);

5 void findMin(___3_____,___4______);

6 double avg(_____5____,____6_____);

7 void show();

8 double average = 0.00;

9 double number1, number2;

10 double maxValue,minValue;

11 int main( ){

12 _______7___________

13 _______8___________

14 _______9___________

15 _______10__________

16 input( );

17 findMax(pnumber1,pnumber2 );

18 findMin(rnumber1,rnumber2 );

19 average = avg( number1,number2 );

20 show( );

21 return 0;

22 }

23 void input( ){

24 cout<<"Enter number1 = "; cin>>number1;

25 cout<<"Enter number2 = "; cin>>number2;}

26 void findMax(double* n1, double* n2){

27 maxValue = *n1 > * n2 ? *n1 : *n2;

28 }

29 void findMin(double& n1, double& n2){

30 minValue = (n1 < n2) ? n1 : n2;

31 }

89

32 double avg(double n1, double n2){

33 _______11___________

34 }

35 void show(){

36 cout<<"number1 ="<<number1<<endl;

37 cout<<"number2 ="<<number2<<endl;

38 cout<<"Max = "<<maxValue<<endl;

39 cout<<"Min = "<<minValue<<endl;

40 cout<<"Average = "<<average<<endl;

41 }

90

เฉลยใบงำน บทท 5 เรอง ฟงกชน

ค ำชแจง 1. ใบงานมทงหมด 2 ขอ คะแนนเตม 50 คะแนน 2. ใหนกศกษาท าหมดทกขอ ===================================================================== 1. ใหนกศกษาเขยนโปรแกรมน าเขาไลบรารการจดการขอความ #include<string> จากนนใหรบคาจากผใชเปนชอ เกบไวในตวแปร fname และนามสกลเกบไวในตวแปร lname และอายเกบไวในตวแปร age จากนนใหแสดง ชอ ความยาวชอ นามสกล ความยาวนามสกล และอาย ทางจอภาพดงตอไปน ( 10 คะแนน )

1 //Lab5_1.cpp

2 #include<iostream>

3 #include<string>

4 using namespace std;

5 int main( ){

6 string fname;

7 string lname;

8 int age;

9 cout<<"Enter fname : ";

10 cin>>fname;

11 cout<<"Enter lname : ";

12 cin>>lname;

13 cout<<"Enter age : ";

14 cin>>age;

15 cout<<"fName : "<<fname<<" length : "<<fname.length()<<endl;

16 cout<<"lName : "<<lname<<" length : "<<lname.length()<<endl;

17 cout<<"Age : "<<age;

18 return 0;

19 }

91

ผลลพธกำรท ำงำนของโปรแกรม Enter fname = Wuttiwong

Enter lname = Eadsrichai

fName : Wuttiwong length = 9

lname : Eadsrichai length = 10

Age : 40

92

2. ใหนกศกษาเขยนโปรแกรมโดยมการรบขอมลจากผใชเปนเลขจ านวนจรงจ านวน 2 คาสรางฟงกชนชอ void input( ); และสรางฟงกชนค านวณคามากสด void findMax(double*,double*); ภายในฟงกชนหาคามากสดเกบไวในตวแปร max ฟงกชนหาคานอยสด void findMin(double&, double&); ภายในฟงกชนหาคานอยสดเกบไวในตวแปร min และฟงกชนหาคาเฉลย double avg(double, double); สงคากลบเกบไวในตวแปร average; หลงจากนนใหแสดงคาตวเลขทรบมา คามากสด คานอยสด และคาเฉลยทางจอภาพ ฟงกชนชอ void show( ); ( 40 คะแนน )

1 #include<iostream>

2 using namespace std;

3 void input( );

4 void findMax(double*, double*);

5 void findMin(double&, double&);

6 double avg(double, double);

7 void show();

8 double average = 0.00;

9 double number1, number2;

10 double maxValue,minValue;

11 int main( ){

12 double *pnumber1 = &number1;

13 double *pnumber2 = &number2;

14 double &rnumber1 = number1;

15 double &rnumber2 = number2;

16 input( );

17 findMax(pnumber1,pnumber2 );

18 findMin(rnumber1,rnumber2 );

19 average = avg( number1,number2 );

20 show( );

21 return 0;

22 }

23 void input( ){

24 cout<<"Enter number1 = "; cin>>number1;

25 cout<<"Enter number2 = "; cin>>number2;}

26 void findMax(double* n1, double* n2){

27 maxValue = *n1 > * n2 ? *n1 : *n2;

28 }

29 void findMin(double& n1, double& n2){

30 minValue = (n1 < n2) ? n1 : n2;

31 }

93

32 double avg(double n1, double n2){

33 return (n1 + n2)/2;

34 }

35 void show(){

36 cout<<"number1 ="<<number1<<endl;

37 cout<<"number2 ="<<number2<<endl;

38 cout<<"Max = "<<maxValue<<endl;

39 cout<<"Min = "<<minValue<<endl;

40 cout<<"Average = "<<average<<endl;

41 }

ผลลพธกำรท ำงำน

Enter number1 = 5

Enter number2 = 6

number1 = 5

number2 = 6

Max = 6

Min = 5

Average = 5.5

94

ใบแบบทดสอบหลงเรยน บทท 5 เรอง ฟงกชน

ค ำชแจง 1. ใหนกศกษาเลอก กากบาท X ลงในกระดาษค าตอบทแจกใหโดยเลอกขอทถกทสดเพยงขอเดยว 2. ตอบถกไดคะแนนขอละ 1 คะแนน ตอบผดได 0 คะแนน 3. แบบทดสอบมทงหมด 10 ขอ ---------------------------------------------------------------------------------------------------------------------- 1. ขอใดคอรปแบบการสรางฟงกชนทถกตอง

ก. return_type function_name(parameter_list){ statements; return data_type; } ข. return_type function_name( ){ statements; return data_type; } ค. return_type function_name(parameter_list){ statements; } ง. void function_name(parameter_list){ statements; return data_type; }

2. ขอใด มใช ประโยชน จากการสรางฟงกชนในการใชงาน ก. แตละฟงกชนมหนาทเพยงอยางเดยวเทานน ข. สามารถเรยกใชงานซ า ๆ ไดหลายครง ค. สามารถแบงกนแตละฟงกชนใหนกพฒนาโปรแกรมไปพฒนาแยกกนได ง. ฟงกชนเหมาะกนการพฒนาโปรแกรมทมความสลบซบซอน

3. เมอตองการจดการขอมลชนดขอความจะตองมการน าเขาไลบรารใด ก. #include<char> ข. #include<string> ค. #include “char” ง. #include “string”

4. เมอมการประกาศตวแปรโลคอล ซ ากบตวแปรโกลบอล เมอมการท างานภายในฟงกชนนน ๆ จะมการเรยกใชงานตวแปรชนดใดมาท างาน ก. คอมไพลโปรแกรมไมผาน ข. ตวแปรโลคอล ค. ตวแปรโกลบอล ง. คอมไพลโปรแกรมผาน แตเมอสงท างานจะแสดงขอความผดพลาดออกมา

95

จากโปรแกรมตอไปนตอบค าถามขอ 5 - 7 1 #include<iostream>

2 using namespace std;

3 _______1________

4 _______2________

5 int main( ){

6 cout<<add(2.50,5.50);

7 show();

8 return 0;

9 }

10 double add(double n1, double n2){

11 return n1 + n2;

12 }

13 void show( ) {

14 cout<<add(4.50,5.00);

15 }

5. จากโปรแกรมดงกลาวบรรทดท 3 จะตองเตมโคดโปรแกรมอยางไร เพอใหโปรแกรมสามารถท างานไดถกตอง ก. double add(int, int ); ข. int add(double, double); ค. double add(double, double); ง. int add(int, double);

6. จากโปรแกรมดงกลาวบรรทดท 4 จะตองเตมโคดโปรแกรมอยางไร เพอใหโปรแกรมสามารถท างานไดถกตอง ก. double show( ); ข. int show(int ); ค. void show( double ); ง. void show( );

7. จากโปรแกรมดงกลาวเมอสงใหท างาน ผลลพธจะสอดคลองกบขอใด ก. 8.00 9.50 ข. 8 9.50 ค. 9.50 8.00 ง. 9.50 8

96

จากโปรแกรมตอไปนตอบค าถามขอ 8 - 10 1 #include<iostream>

2 using namespace std;

3 ________1__________

4 int main( ){

5 int number1 = 10;

6 int* pnumber1 = &number1;

7 int& rnumber1 = number1;

8 add(pnumber1,rnumber1);

9 cout<<*pnumber1<<" "<<rnumber1;

10 return 0;

11 }

12 void add(int* p, ___2_____ r){

13 *p = *p + r;

14 }

8. จากโปรแกรมดงกลาวบรรทดท 3 จะตองเตมโคดโปรแกรมอยางไร เพอใหโปรแกรมสามารถท างานไดถกตอง ก. void add(int*, int&); ข. void add(*int, &int); ค. void add(int, int); ง. void add(int*, int*);

9. จากโปรแกรมดงกลาวบรรทดท 12 จะตองเตมโคดโปรแกรมอยางไร เพอใหโปรแกรมสามารถท างานไดถกตอง ก. &int ข. *int ค. int& ง. int*

10. จากโปรแกรมดงกลาวเมอสงใหท างาน ผลลพธจะสอดคลองกบขอใด ก. 10 ข. 10 10 ค. 10 20 ง. 20 20

97

เฉลยแบบทดสอบหลงเรยน บทท 5 เรอง ฟงกชน

ขอท เฉลย

1 ก 2 ง 3 ข 4 ข 5 ค 6 ง 7 ข 8 ก 9 ค

10 ง

98

99

บทท 6 เรอง คำคงท พอยนเตอรและกำรอำงอง

100

แบบทดสอบกอนเรยน บทท 6 เรอง คำคงท พอยนเตอรและกำรอำงอง

ค ำชแจง 1. ใหนกศกษาเลอก กากบาท X ลงในกระดาษค าตอบทแจกใหโดยเลอกขอทถกทสดเพยงขอเดยว 2. ตอบถกไดคะแนนขอละ 1 คะแนน ตอบผดได 0 คะแนน 3. แบบทดสอบมทงหมด 10 ขอ ---------------------------------------------------------------------------------------------------------------------- 1. จากตวเลขตอไปนขอใดคอคาคงทเลขฐานแปด

ก. 05 ข. 0xA ค. 10 ง. 0x8

2. ขอใดมความหมายสอดคลองกบค าวาคาคงท ก. เปนการก าหนดคาในสวนของโปรแกรม ไมสามารถเปลยนแปลงคาไดขณะโปรแกรม

ท างาน ข. เปนการก าหนดคาในสวนของโปรแกรม สามารถเปลยนแปลงคาไดขณะโปรแกรมท างาน ค. เปนคาทก าหนดขนมาใชงานแตละครง ง. เปนคาทก าหนดขนมาใชงานแตละครง สามารถเปลยนแปลงไดขณะโปรแกรมก าลงท างาน

3. เอสเคปซเควนซในขอใด หมายถง การขนบรรทดใหม ก. \a ข. \b ค. \n ง. \l

4. ขอใดไมใชการประกาศคาคงทสญลกษณ ก. #define VAT 0.07 ข. const double PI = 3.141; ค. #define VAT = 0.07 ง. #define findMax(n1,n2) ( ( n1) > ( n2) ? (n1) : (n2) )

101

5. ขอใดคอรปแบบการประกาศตวแปรพอยนเตอรคงท ทชไปยงต าแหนงทมคาสามารถเปลยนแปลงคาได แตตวพอยนเตอรเปลยนการชไปยงต าแหนงอนไมได ก. const int* pter; ข. int* const pter ค. const int* const pter ง. cont int pter*

6. ขอใดคอรปแบบการประกาศตวแปรพอยนเตอรชไปยงต าแหนงทเปนคาคงท ไมสามารถเปลยนแปลงคาได แตตวแปรพอยนเตอรสามารถเปลยนการชไปยงต าแหนงอนได ก. const int* pter; ข. int* const pter ค. const int* const pter ง. cont int pter*

7. ขอใดคอการประกาศตวแปรพอยนเตอรคงทชไปยงต าแหนงมคาคงทไมสามารถเปลยนแปลงคาได และไมสามารถเปลยนการชไปยงต าแหนงอนได ก. const int* pter; ข. int* const pter ค. const int* const pter ง. cont int pter*

จากโปรแกรมตอไปนตอบค าถามขอ 8 – 10 1 #include<iostream>

2 using namespace std;

3 int main( ){

4 int number1 = 10,number2 = 20,number3 = 30;

5 int& rnumber1 = number1;

6 int& rnumber2 = number2;

7 int& rnumber3 = number1;

8 number1 = 100;

9 cout<<rnumber1<<" "<<rnumber2<<" "<<rnumber3;

10 return 0;

11 }

102

8. จากโปรแกรมดงกลาวเมอท างานจะไดผลลพธตรงกบขอใด ก. 10 20 10 ข. 10 20 100 ค. 100 20 30 ง. 100 20 100

9. จากโปรแกรมดงกลาวเมอ คอมเมนตบรรทดท 8 สงใหโปรแกรมท างานจะไดผลลพธตรงกบขอใด ก. 10 20 10 ข. 10 20 100 ค. 100 20 30 ง. 100 20 100

10. จากโปรแกรมดงกลาว บรรทดท 8 เปลยนค าสงเปน number1 = 20; เมอรนโปรแกรมจะไดผลลพธตรงกบขอใด ก. 10 20 30 ข. 10 20 20 ค. 20 20 30 ง. 20 20 20

103

เฉลยแบบทดสอบกอนเรยน บทท 6 เรอง คำคงท พอยนเตอรและกำรอำงอง

ขอท เฉลย

1 ก 2 ก 3 ค 4 ค 5 ข 6 ก 7 ค 8 ง 9 ก

10 ง

104

แบบฝกหด บทท 6 เรอง คำคงทพอยนเตอรและกำรอำงอง

ค ำชแจง 1. ใบแบบฝกหดมทงหมด 4 ขอ คะแนนเตม 50 คะแนน 2. ใหนกศกษาท าหมดทกขอ --------------------------------------------------------------------------------------------------------------------- 1. ใหนกศกษาบอกความหมายของคาคงทคออะไร แบงออกไดกแบบอะไรบาง ( 10 คะแนน ) 2. ใหนกศกษาบอกความหมายของพอยนเตอร พรอมเขยนภาพประกอบ ( 15 คะแนน ) 3. ใหนกศกษาอธบายการใชงานคาคงทกบพอยนเตอร มกแบบ อะไรบาง ( 15 คะแนน ) 4. ใหนกศกษาอธบายความหมายของการอางองคออะไร ( 10 คะแนน )

105

เฉลยแบบฝกหด บทท 6 เรอง คำคงทพอยนเตอรและกำรอำงอง

ค ำชแจง 1. ใบแบบฝกหดมทงหมด 4 ขอ คะแนนเตม 50 คะแนน 2. ใหนกศกษาท าหมดทกขอ --------------------------------------------------------------------------------------------------------------------- 1. ใหนกศกษาบอกความหมายของคาคงทคออะไร แบงออกไดกแบบอะไรบาง ( 10 คะแนน ) ตอบ คาคงท คอการก าหนดคาทอยในสวนของโปรแกรมไมสามารถเปลยนแปลงคาไดขณะทโปรแกรมก าลงท างานอยแบงออกได 2 แบบ คอ คาคงทแทจรง และคาคงทสญลกษณ

1. คาคงทแทจรง คอการก าหนดคาโดยตรงในโปรแกรมสามารถแบงออกตามชนดของขอมลคอ คาคงทตวเลข และคาคงทตวอกษร

1.1 คาคงทตวเลข เปนคาทสามารถน าเอาไปค านวณได เชน เลขฐานสบมสญลกษณ 0 – 9 เลขฐานแปดมสญลกษณ 0 – 7 และเลขฐานสบหกมสญลกษณ 0 – 9 และ A – F หรอ a – f การก าหนดคาเลขทศนยมมตวแปรชนด double คาเลขทศนยมชนด float จะลงทายดวย f หรอ F และคาเลขทศนยม long double ลงทายดวย l หรอ L

1.2 คาคงทตวอกษร เปนการเขยนตวอกษร 1 ตว หรอ ตวเลข 1 ตว ภายใตเครองหมายอญประกาศเดยว (‘ ’) และมอกษรบางตวไมสามารถกดแปนคยบอรดได แตสามารถน าเอามาใชงานได เรยกวา เอสเคปซเควนซ เชน \n หมายถง ขนบรรทดใหม เปนตน

2. คาคงทสญลกษณ คอการก าหนดสญลกษณเปนตวแทนในการเรยกใชงานซงสามารถก าหนดได 2 แบบคอ ก าหนดดวยพรโปรเซสเซอรไดเรกทฟ และก าหนดดวยคยเวรด const

2.1 การก าหนดดวยพรโปรเซสเซอรไดเรกทฟ #define ตามดวยชอมาโคร และก าหนดคาใหกบมาโคร ไมตองปดทายดวยเซมโคลอน ( ; ) ในการก าหนดคานนสามารถก าหนดได 2 แบบ คอ การก าหนดคาคงท เชน #define PI 3.141 และการก าหนดเปนฟงกชน #define findMax(n1,n2) ( (n2) > ( n2 ) ? ( n1 ) : ( n2 ) ) เปนตน

2.2 ก าหนดดวยคยเวรด const เปนการประกาศ const ไวหนาชนดขอมล และชอตวแปร นยมเขยนเปนตวอกษรพมพใหญ เชน const double PI = 3.141; เปนตน

2. ใหนกศกษาบอกความหมายของพอยนเตอร พรอมเขยนภาพประกอบ ( 15 คะแนน ) ตอบ พอยนเตอร คอ ตวแปรชนดหนงทมการเกบคาชต าแหนงในหนวยความจ าของตวแปรอน โดยตวมนเองจะมต าแหนงในหนวยความจ าเชนกน การประกาศตวแปรคอ datatype* pointername;

106

pInt number1

40

0x22f66 0x22f70

3. ใหนกศกษาอธบายการใชงานคาคงทกบพอยนเตอร มกแบบ อะไรบาง ( 15 คะแนน ) ตอบ การใชงานคาคงทกบพอยนเตอรสามารถก าหนดได 3 แบบคอ

แบบท 1 const int* Pnumber1; ตวแปรพอยนเตอร pNumber1 จะชไปยงต าแหนงทเปนคาคงท ซงจะไมสามารถเปลยนแปลงคาได แตตวแปรพอยนเตอร pNumber1 สามารถเปลยนการชไปยงต าแหนงอนได

แบบท 2 int* const pNumber1; คอตวแปรพอยนเตอร pNumber1 เปนพอยนเตอรคงท ทชไปยงต าแหนงทมคาสามารถเปลยนแปลงได แตตวพอยนเตอร pNumber1 เปลยนการชไปยงต าแหนงอนไมได

แบบท 3 const int* const pNumber1; คอตวแปรพอยนเตอร pNumber1 เปนพอยนเตอรคงท ทชไปยงต าแหนงทมคาคงท ไมสามารถเปลยนแปลงคาได และไมสามารถเปลยนการชไปยงต าแหนงอนได

4. ใหนกศกษาอธบายความหมายของการอางองคออะไร ( 10 คะแนน ) ตอบ การอางอง คอการประกาศตวแปรเปนเสมอนชอเลนของอกตวแปรหนงทถกอางองถงโดยตวแปรอางองจะมการอางไปยงต าแหนงเดยวกนกบตวแปรจรง ถามการเปลยนแปลงคาจากตวแปรจรงหรอตวแปรอางองกสามารถกระท าไดโดยจะสงผลใหกบทงสองตวแปรเปลยนไปเหมอนกน รปแบบการประกาศตวแปรอางอง typename& referenceName; ตวอยางเชน double number1 = 100.59; double& rnumber1 = number1;

107

ใบงำน บทท 6 เรอง คำคงท พอยนเตอรและกำรอำงอง

ค ำชแจง 1. ใบงานมทงหมด 2 ขอ คะแนนเตม 50 คะแนน 2. ใหนกศกษาท าหมดทกขอ --------------------------------------------------------------------------------------------------------------------- 1. ใหนกศกษาเขยนโปรแกรมรบคาเลขจ านวนจรงจ านวน 2 คา จากนนใหท าการหาคาเฉลยออกมา โดยมการใชงานตวแปรพอยนเตอร แสดงผลทางจอภาพ มการสรางฟงกชนในการรบคา input(); ฟงกชนในการค านวณคาเฉลย calAver(double*, double*); และฟงกชนแสดงผลทางจอภาพ output( ); พรอมทงแสดงผลลพธในการท างานของโปรแกรม ( 25 คะแนน)

1 //Lab6_1.cpp

2 #include<iostream>

3 using namespace std;

4 void input(double*, double*);

5 void calAver(double*,double*,double*);

6 void output(double*, double*, double*);

7 int main( ){

8 ______1_______

9 ______2_______

10 ______3_______

11 ______4_______

12 input(_______5_________);

13 calAver(_____6_________);

14 output(______7_________);

15 return 0;

16 }

17 void input(double* n1, double* n2){

18 ______8________

19 ______9________

20 }

21 void calAver(double* n1,double* n2,double* avg){

22 ______10_______

23 }

24 void output(double* n1, double* n2,double* a){

25 cout<<"number1 = "<<_____11_____<<endl;

26 cout<<"number2 = "<<_____12_____<<endl;

27 cout<<"average = "<<______13_____<<endl;

28 }

108

2. ใหนกศกษาเขยนโปรแกรมรบคาเลขจ านวนจรงจ านวน 2 คา จากนนใหท าการหาคาเฉลยออกมา โดยมการใชงานตวแปรอางอง แสดงผลทางจอภาพ มการสรางฟงกชนในการรบคา input(); ฟงกชนในการค านวณคาเฉลย calAver(double&, double&); และฟงกชนแสดงผลทางจอภาพ output( ); พรอมทงแสดงผลลพธในการท างานของโปรแกรม ( 25 คะแนน)

1 //Lab6_2.cpp

2 #include<iostream>

3 using namespace std;

4 void input(double&, double&);

5 void calAver(double&,double&,double&);

6 void output(double&, double&, double&);

7 int main( ){

8 _______1__________

9 _______2__________

10 _______3__________

11 _______4__________

12 _______5__________

13 _______6__________

14 _______7__________

15 return 0;

16 }

17 void input(double& n1, double& n2){

18 _______8__________

19 _______9__________

20 }

21 void calAver(double& n1,double& n2,double& avg){

22 _______10_________

23 }

24 void output(double& n1, double& n2,double& a){

25 cout<<"number1 = "<<_______11________<<endl;

26 cout<<"number2 = "<<_______12_______<<endl;

27 cout<<"average = "<<________13________<<endl;

28 }

109

เฉลยใบงำน บทท 6 เรอง คำคงท พอยนเตอรและกำรอำงอง

ค ำชแจง 1. ใบงานมทงหมด 2 ขอ คะแนนเตม 50 คะแนน 2. ใหนกศกษาท าหมดทกขอ --------------------------------------------------------------------------------------------------------------------- 1. ใหนกศกษาเขยนโปรแกรมรบคาเลขจ านวนจรงจ านวน 2 คา จากนนใหท าการหาคาเฉลยออกมา โดยมการใชงานตวแปรพอยนเตอร แสดงผลทางจอภาพ มการสรางฟงกชนในการรบคา input(double*, double*); ฟงกชนในการค านวณคาเฉลย calAver(double*, double*, double*); และฟงกชนแสดงผลทางจอภาพ output(double*, double*, double* ); พรอมทงแสดงผลลพธในการท างานของโปรแกรม ( 25 คะแนน)

1 //Lab6_1.cpp

2 #include<iostream>

3 using namespace std;

4 void input(double*, double*);

5 void calAver(double*,double*,double*);

6 void output(double*, double*, double*);

7 int main( ){

8 double number1,number2, average ;

9 double* pnum1 = &number1;

10 double* pnum2 = &number2;

11 double* pavg = &average;

12 input(pnum1,pnum2);

13 calAver(pnum1,pnum2, pavg);

14 output(pnum1, pnum2, pavg);

15 return 0;

16 }

17 void input(double* n1, double* n2){

18 cout<<"Enter number1 space number2 : ";

19 cin>>*n1>>*n2;

20 }

21 void calAver(double* n1,double* n2,double* avg){

22 *avg = (*n1 + *n2)/2.00;

23 }

24 void output(double* n1, double* n2,double* a){

110

25 cout<<"number1 = "<<*n1<<endl;

26 cout<<"number2 = "<<*n2<<endl;

27 cout<<"average = "<<*a<<endl;

28 }

ผลลพธกำรท ำงำน Enter number1 space number2 : 5 6

Number1 = 5

Number2 = 6

Average = 5.5

2. ใหนกศกษาเขยนโปรแกรมรบคาเลขจ านวนจรงจ านวน 2 คา จากนนใหท าการหาคาเฉลยออกมา โดยมการใชงานตวแปรอางอง แสดงผลทางจอภาพ มการสรางฟงกชนในการรบคา input(double&, double&); ฟงกชนในการค านวณคาเฉลย calAver(double&, double&, double&); และฟงกชนแสดงผลทางจอภาพ output(double& , double&, double& ); พรอมทงแสดงผลลพธในการท างานของโปรแกรม ( 25 คะแนน)

1 //Lab6_2.cpp

2 #include<iostream>

3 using namespace std;

4 void input(double&, double&);

5 void calAver(double&,double&,double&);

6 void output(double&, double&, double&);

7 int main( ){

8 double number1,number2,avg;

9 double& rnum1 = number1;

10 double& rnum2 = number2;

11 double& ravg = avg;

12 input(rnum1,rnum2);

13 calAver(rnum1,rnum2,ravg);

14 output(rnum1, rnum2, ravg);

15 return 0;

16 }

17 void input(double& n1, double& n2){

18 cout<<"Enter number1 space number2 : ";

19 cin>>n1>>n2;

20 }

111

21 void calAver(double& n1,double& n2,double& avg){

22 avg = (n1 + n2)/2.00;

23 }

24 void output(double& n1, double& n2,double& a){

25 cout<<"number1 = "<<n1<<endl;

26 cout<<"number2 = "<<n2<<endl;

27 cout<<"average = "<<a<<endl;

28 }

ผลลพธกำรท ำงำน Enter number1 space number2 : 5 6

number1 = 5

number2 = 6

average = 5.5

112

แบบทดสอบหลงเรยน บทท 6 เรอง คำคงท พอยนเตอรและกำรอำงอง

ค ำชแจง 1. ใหนกศกษาเลอก กากบาท X ลงในกระดาษค าตอบทแจกใหโดยเลอกขอทถกทสดเพยงขอเดยว 2. ตอบถกไดคะแนนขอละ 1 คะแนน ตอบผดได 0 คะแนน 3. แบบทดสอบมทงหมด 10 ขอ ---------------------------------------------------------------------------------------------------------------------- 1. จากตวเลขตอไปนขอใดคอคาคงทเลขฐานแปด

ก. 05 ข. 0xA ค. 10 ง. 0x8

2. ขอใดมความหมายสอดคลองกบค าวาคาคงท ก. การก าหนดคาในสวนของโปรแกรมไมสามารถเปลยนแปลงคาไดขณะโปรแกรมท างาน ข. เปนการก าหนดคาในสวนของโปรแกรม สามารถเปลยนแปลงคาไดขณะโปรแกรมท างาน ค. เปนคาทก าหนดขนมาใชงานแตละครง ง. เปนคาทก าหนดขนมาใชงานแตละครง สามารถเปลยนแปลงไดขณะโปรแกรมก าลงท างาน

3. เอสเคปซเควนซในขอใด หมายถง การขนบรรทดใหม ก. \a ข. \b ค. \n ง. \l

4. ขอใดไมใชการประกาศคาคงทสญลกษณ ก. #define VAT 0.07 ข. const double PI = 3.141; ค. #define VAT = 0.07 ง. #define findMax(n1,n2) ( ( n1) > ( n2) ? (n1) : (n2) )

113

5. ขอใดคอรปแบบการประกาศตวแปรพอยนเตอรคงท ทชไปยงต าแหนงทมคาสามารถเปลยนแปลงคาได แตตวพอยนเตอรเปลยนการชไปยงต าแหนงอนไมได ก. const int* pter; ข. int* const pter ค. const int* const pter ง. cont int pter*

6. ขอใดคอรปแบบการประกาศตวแปรพอยนเตอรชไปยงต าแหนงทเปนคาคงท ไมสามารถเปลยนแปลงคาได แตตวแปรพอยนเตอรสามารถเปลยนการชไปยงต าแหนงอนได ก. const int* pter; ข. int* const pter ค. const int* const pter ง. cont int pter*

7. ขอใดคอการประกาศตวแปรพอยนเตอรคงทชไปยงต าแหนงมคาคงทไมสามารถเปลยนแปลงคาได และไมสามารถเปลยนการชไปยงต าแหนงอนได ก. const int* pter; ข. int* const pter ค. const int* const pter ง. cont int pter*

จากโปรแกรมตอไปนตอบค าถามขอ 8 – 10

1 #include<iostream>

2 using namespace std;

3 int main( ){

4 int number1 = 10,number2 = 20,number3 = 30;

5 int& rnumber1 = number1;

6 int& rnumber2 = number2;

7 int& rnumber3 = number1;

8 number1 = 100;

9 cout<<rnumber1<<" "<<rnumber2<<" "<<rnumber3;

10 return 0;

11 }

114

8. จากโปรแกรมดงกลาวเมอท างานจะไดผลลพธตรงกบขอใด ก. 10 20 10 ข. 10 20 100 ค. 100 20 30 ง. 100 20 100

9. จากโปรแกรมดงกลาวเมอ คอมเมนตบรรทดท 8 โปรแกรมท างานจะไดผลลพธตรงกบขอใด ก. 10 20 10 ข. 10 20 100 ค. 100 20 30 ง. 100 20 100

10. จากโปรแกรมดงกลาว บรรทดท 8 เปลยนค าสงเปน number1 = 20; เมอรนโปรแกรมจะไดผลลพธตรงกบขอใด ก. 10 20 30 ข. 10 20 20 ค. 20 20 30 ง. 20 20 20

115

เฉลยแบบทดสอบหลงเรยน บทท 6 เรอง คำคงท พอยนเตอรและกำรอำงอง

ขอท เฉลย

1 ก 2 ก 3 ค 4 ค 5 ข 6 ก 7 ค 8 ง 9 ก

10 ง

116

117

บทท 7 เรอง ควำมรพนฐำนเกยวกบกำรเขยนโปรแกรมเชงวตถ

118

แบบทดสอบกอนเรยน บทท 7 เรอง ควำมรพนฐำนเกยวกบกำรเขยนโปรแกรมเชงวตถ

ค ำชแจง 1. ใหนกศกษาเลอก กากบาท X ลงในกระดาษค าตอบทแจกใหโดยเลอกขอทถกทสดเพยงขอเดยว 2. ตอบถกไดคะแนนขอละ 1 คะแนน ตอบผดได 0 คะแนน 3. แบบทดสอบมทงหมด 10 ขอ ---------------------------------------------------------------------------------------------------------------------- 1. จากแนวคดของ อลน เคย ผทมบทบาทตอการพฒนาโปรแกรมเชงวตถ ขอใดตอไปนมมใชแนวคดของ อลน เคย ก. ทกสงทกอยางในโปรแกรมลวนเปนวตถ ข. วตถจะท างานไดจะตองมการรองขอจากออกวตถอน ค. คลาสเปนทเกบพฤตกรรมตาง ๆ เกยวกบวตถ ง. คลาสแตละคลาสจะตองไมมความสมพนธกน

2. ขอใดคอองคประกอบของ วตถ ก. คณสมบต และ พฤตกรรม ข. คณสมบต และ ขอมล ค. ขอมล และ พฤตกรรม ง. พฤตกรรม และ เมธอด

3. วตถ รถยนต ขอใดตอไปน คอ คณสมบต ของวตถดงกลาว ก. เลยวซาย ข. ส ค. เลยวซาย เลยวขวา เรงเครอง ง. ตดเครองยนต

4. ขอใดคอองคประกอบการพฒนาวตถ ทเปนสวนของพฤตกรรม ก. การสบทอด ข. การหอหม ค. การท าหลายรปแบบ ง. คลาส

119

5. จากนยามตอไปน “กลมของวตถทมคณสมบตและพฤตกรรมทเหมอนกน” สอดคลองกบขอใด ก. คลาส ข. วตถ ค. การสบทอด ง. การซอนเรนขอมล

6. ความสมพนธของคลาส ระหวาง นกศกษา ครทปรกษา และ โครงงาน เปนความสมพนธของคลาสลกษณะใด ก. ยนาร ข. ไบนาร ค. เทอนาร ง. ยนาร หรอ เทอนาร

7. ความสมพนธ ทม คณลกษณะของการสบทอด เชน ยานพาหนะ กบ รถยนต จะเปนความสมพนธสอดคลองกบขอใด ก. ความสมพนธแบบแอสโซชเอชน ข. ความสมพนธแบบโฮวลพารต ค. ความสมพนธแบบคอมโพสชน ง. ความสมพนธแบบแอกกรเกชน

8. ลกษณะการสงขอความเดยว ไปยงวตถตาง ๆ แลววตถมการตอบสนองแตกตางกนออกไป เราเรยกลกษณะนสอดคลองกบขอใด ก. การสบทอดคณสมบต ข. การท าหลายรปแบบ ค. การหอหม ง. โอเวอรโหลดดง

9. ขอใดคอองคประกอบของยเอมแอล ก. Things Relationship ข. Things Relationship Diagrams ค. Structure Meaning Diagrams ง. Relationship Diagrams

120

10. ขอใดมใช ความสมพนธ ในภาษา ยเอมแอล ก. ดเพนเดนซ ข. แอสโซชเอชน ค. รไลเซชน ง. อนเทอรแอคชน

121

เฉลยแบบทดสอบกอนเรยน บทท 7 เรอง ควำมรพนฐำนเกยวกบกำรเขยนโปรแกรมเชงวตถ

ขอท เฉลย

1 ง 2 ก 3 ข 4 ค 5 ก 6 ค 7 ก 8 ข 9 ข

10 ง

122

ใบแบบฝกหด บทท 7 เรอง ควำมรพนฐำนเกยวกบกำรเขยนโปรแกรมเชงวตถ

ค ำชแจง 1. แบบฝกหดมทงหมด 5 ขอ ใหท าทกขอ 2. คะแนนรวมทงหมด 50 คะแนน ---------------------------------------------------------------------------------------------------------------------- 1. ใหนกศกษาบอกคณลกษณะของวธการเชงวตถ ตามแนวคดของ อลน เคย ( 10 คะแนน ) 2. ใหนกศกษาบอกความหมายของค าวา วตถ คลาสและเมธอด ( 10 คะแนน ) 3. ใหนกศกษาบอกความสมพนธระหวางคลาสโดยพจารณาตามคณลกษณะสามารถแบงออกไดกแบบ อะไรบาง ( 10 คะแนน ) 4. ใหนกศกษาบอกความหมายของการหอหม และการสงขอความ การมหลายรปแบบ การสบทอด คออะไร ( 10 คะแนน ) 5. ใหนกศกษาบอกโครงสรางของภาษายเอมแอล วามองคประกอบอะไรบาง พรอมอธบาย ( 10 คะแนน )

123

ใบเฉลยแบบฝกหด บทท 7 เรอง ควำมรพนฐำนเกยวกบกำรเขยนโปรแกรมเชงวตถ

ค ำชแจง 1. แบบฝกหดมทงหมด 5 ขอ ใหท าทกขอ 2. คะแนนรวมทงหมด 50 คะแนน ---------------------------------------------------------------------------------------------------------------------- 1. ใหนกศกษาบอกคณลกษณะของวธการเชงวตถ ตามแนวคดของ อลน เคย ( 10 คะแนน ) ตอบ คณลกษณะของวธการเชงวตถ ตามแนวคดของ อลน เคย มดวยกน 6 ขอคอ

1. ทกสงทกอยางในโปรแกรมลวนเปนวตถ 2. วตถจะท างานไดจะตองมการรองขอจากวตถอนหรอเรยกวาเมสเสจพาสซง เพราะวา วตถ

จะไมสามารถท างานไดเองถาไมมการรองขอ 3. แตละวตถจะมหนวยความจ าของตวเอง เพอเกบขอมลของตวเอง และอาจจะมวตถยอย ๆ

ซอนอยภายในได 4. แตละวตถจะตองมการสรางมาจากคลาส เพราะคลาสเปนตนแบบของวตถ 5. คลาสเปนทเกบพฤตกรรมตาง ๆ เกยวกบวตถ ดงนนวตถทถกสรางมาจากคลาสเดยวกนจะม

พฤตกรรมทคลายกน 6. คลาสหลายคลาสอาจจะมความสมพนธกน

2. ใหนกศกษาบอกความหมายของค าวา วตถ คลาสและเมธอด ( 10 คะแนน ) ตอบ วตถ คอ สงใดกตามทเราคดเกยวกบสงนนซงมคณสมบต เพอบงบอกความเปนตวเองของวตถ และมพฤตกรรม เมอเรามองวตถเดยวกน แตมมมมองแตกตางกน โดยวตถจะเปนอะไรขนอยกบมมมองหรอคณลกษณะทมความเกยวของกบเรา และคณลกษณะและพฤตกรรมทเกยวของกบเราของแตละคนจะไมเหมอนกน ดงนนจงเรยก แนวคดของการก าหนดสาระส าคญ หรอแอบสแทรกชนของวตถ ดงนนวตถจะประกอบไปดวย 2 สวนคอ คณสมบตและพฤตกรรม

1. คณสมบตหรอแอตทรบวต หมายถง คณลกษณะของวตถแตละตวทสามารถก าหนดใหแตกตางกนตามความตองการ เชน วตถ รถยนต มคณลกษณะ น าหนก ส ความกวาง ความยาว ขนาดความจเครองยนต เปนตน

2. พฤตกรรมหรอเมธอด หมายถง ความสามารถในการท างานของวตถ เชน วตถรถยนต มพฤตกรรม เรงเครอง เบรก เลยวซาย เลยวขวา เปนตน

124

คลาส คอกลมของวตถทมคณสมบตและพฤตกรรมทเหมอนกน เชนคลาสของเครองบนจะเปนกลมของวตถทมคณสมบตและพฤตกรรมแตกตางจากคลาสของรถยนต หรอคลาสของนกเรยนจะมคณสมบตและพฤตกรรมแตกตางจากคลาสของคร เปนตน ดงนนคลาสจงเปนการจ าแนกวตถตาง ๆ ออกจากกนได ในแนวคดเชงวตถนน แตละวตถคอ อนสแทนซของคลาส หรอในทางกลบกนกลาวไดวา คลาสนยามขนโดยมการพจารณาจากแอตทรบวตหรอคณสมบตของวตถในคลาส ซงแตละวตถเหลานนจงมคลาสรวมกน เมธอด คอ สงทวตถรวาท าไดอยางไร เปนกระบวนการทวตถรวาจะท างานไดอยางไร ดงนนเมธอดจะเปนการท าใหแนวคดเชงวตถมความสามารถมากขน เชน คลาสรถยนต รวา จะเรงเครอง เลยวขวา เลยวซาย ไดอยางไร คลาสนกศกษา จะรวา เพมขอมลนกศกษา ลบ ปรบปรง ไดอยางไร เปน

3. ใหนกศกษาบอกความสมพนธระหวางคลาสโดยพจารณาตามคณลกษณะสามารถแบงออกไดกแบบ อะไรบาง ( 10 คะแนน ) ตอบ

ความสมพนธระหวางคลาสพจารณาตามคณลกษณะ หากพจารณาความสมพนธระหวางคลาสตามคณลกษณะ สามารถแบงออกไดเปน 2 รป แบบคอ ความสมพนธในลกษณะการสบทอด และความสมพนธในลกษณะของการหอหม

3.1 ความสมพนธทมคณลกษณะของการสบทอด หรอเรยกวาความสมพนธแบบแอสโซซเอชน เปนความสมพนธแบบ “is a” ซงเปนความสมพนธในระดบคลาสโดยคลาสใด คลาสหนง เกดขนจากคลาสใด คลาสหนง เพยงคลาสเดยว เชน รถยนต เปน ยานพาหนะ พนกงานฝายขาย เปน บคลากร เปนตน

3.2 ความสมพนธทมคณลกษณะของการหอหม หรอเรยกวา ความสมพนธแบบ โฮวลพารต เปนความสมพนธแบบ “has a” เปนความสมพนธในระดบวตถ โดยวตถของคลาสหนงไปมความสมพนธกบอกวตถของอกคลาสหนง เชน วตถของครสมพนธกบวตถของแผนกวชา เปนตน โดยสามารถแบงออกเปน 2 รปแบบยอย คอ

3.2.1 แบบคอมโพสชน (Composition ) เปนความสมพนธของวตถลกจะมไมไดถาไมมวตถแม เชน วตถคอมพวเตอร สมพนธแบบคอมโพสชน กบวตถเมนบอรด เปนตน

3.2.2 แบบแอกกรเกชน (Aggregation) เปนความสมพนธทวตถหนงสมพนธกบอกวตถหนง โดยเมอวตถใด ถกลบไป อกวตถทเหลอกสามารถอยได เชน วตถนกศกษา กบ วตถรายวชาเรยน ถาวตถรายวชาถกลบไป วตถนกศกษา กยงสามารถอยได หรอวตถนกศกษาถกลบไป แตวตถรายวชายงคงอยตอไปได เปนตน

125

4. ใหนกศกษาบอกความหมายของการหอหม และการสงขอความ การมหลายรปแบบ การสบทอด คออะไร ( 10 คะแนน ) ตอบ

การหอหม หมายถง การรวมเอาแอตทรบวตและเมธอดเขาไวดวยกนในวตถหนง ๆ เพอจ ากดการเขาถงขอมลภายในวตถจากวตถอนได การหอหมจงเปนเทคนคทใชส าหรบการออกแบบคลาสและวตถโดยมวตถประสงคเพอใหวตถหรอคลาสหนง ๆ มความเปนอสระจากวตถหรอคลาสอน ๆ การจดการสามารถด าเนนการโดยคลาสหรอวตถของตวเองเทานน คลาสอนหรอวตถอน ๆ ไมสามารถเขามาจดการได ซงจะเปนการปกปองไมใหขอมลไดรบความเสยหายได การหอหมจะอาศยแนวคดการซอนเรนขอมล จะเปนการปกปองขอมลภายในวตถ และไดมการสรางการตดตอสวนประสานไวใหวตถอน ไดมการตดตอสอสารได ดงนนการซอนเรนขอมลจงเปนการจ ากดการมองเหนขอมลภายในวตถและปองกนไมใหมการเปลยนแปลงแกไขสวนทตองการซอนเรน และสามารถด าเนนการไดเฉพาะสวนทอนญาตไวเทานน กำรสงขอควำม คอการสงขอความระหวางวตถ โดยจะเปนขนบททวตถหนงสงขอความ หรอรองขอไปยงวตถอน ๆ เพอเปนการสงงานใหเมธอดท างานตามความตองการการโปรแกรมเชงวตถนน จะเปนการใชการนยามขอความขนมาชดหนง ส าหรบใหวตถสงใหกนหรอเพอรองขอใหท างานอยางใดอยางหนง เชน วตถผดแลระบบสงขอความไปใหวตถปมค าสงเพอใหขอเรยกดชอ เปนตน ผใชงานสามารถมปฏสมพนธกบวตถ โดยการสงขอความใหกบวตถและวตถสงขอความใหกบผใช หรอวตถสงขอความใหกบวตถอน ๆ ได ดวยการใชหลกการหอหมจะเปนการชวยกนปกปองไมใหผใชท าการเปลยนแปลงขอมลภายในวตถได แตสามารถรองขอใหวตถเรยกใชงานเมธอดภายในวตถ และเมธอดภายในวตถนนไปเปลยนแปลงแกไขขอมลของวตถได ดงนนถาผใชงานตองการรองขอใหวตถท าสงใดกจะตองสงขอความไปยงวตถ รองขอใหวตถไปเรยกใชงานเมธอดตอไป

กำรมหลำยรปแบบหรอโพลมอรฟซม (polymorphism) คอมากกวาหนงรปแบบหรอหลายรปแบบนนเอง ซงกคอการทวตถสงขอความออกไปยงวตถตาง ๆ แตการตอบสนองแตละวตถจะมความแตกตางกน ส าหรบการเขยนโปรแกรมเชงวตถนน การมหลายรปแบบมหลกการท างานคอ การสงขอความเดยวกนไปยงวตถทแตกตางกนได โดยจะมกลไกของขอความในการเลอกใชเมธอดไดอยางถกตอง หรอในทางกลบกนวตถตางกนสามารถตอบสนองตอค าสงหรอขอความเดยวกนไดอยางเหมาะสม การใชหลกการนจะเปนการชวยลดความซ าซอนของระบบ และความยงยากในการเขยนโปรแกรมลงได กำรมหลำยรปแบบ คอจะเปนการใชความสามารถของการโปรแกรมภาษาเชงวตถในการผสวนทท างานจรงในเวลาทประมวลผลค าสง โดยเราเรยกการผกแบบนวา ไดนามคสไบดดง และส าหรบ

126

การผกสวนประกอบทท างานจรงตงแตท าการคอมไพลโปรแกรม เรยกวา การผกแบบสแตตก ซงจะสงผลใหไมสามารถสรางเมธอดทท างานหลายรปแบบได

กำรสบทอด หมายถง การสบทอดแอตทรบวตและเมธอดของคลาสแมไปยงคลาสลก แตจะมขอมลแตกตางกน ส าหรบการสบทอดนน เมอมการสรางคลาสใหมขนมาจากคลาสเดม แอตทรบวตและเมธอดของคลาสเดมจะยงคงอยเหมอนเดม และในคลาสใหมยงสามารถเรยกใชงานไดเชนกน การสบทอดคณสมบต สามารถจ าแนกได 2 แบบ คอ

1. การสบทอดแบบเดยว หมายถง การทคลาสลกสามารถสบทอดคณสมบต แอตทรบวตและเมธอด จากคลาสแมเพยงคลาสเดยวเทานน

2. การสบทอดแบหลาย หมายถง การทคลาสหนงสามารถสบทอดคณสมบต แอตทรบวตและเมธอดไดมากกวาหนงคลาสได

การสบทอดคณสมบตจากคลาสแมไปยงคลาสลกนน หรอบางครงเราอาจจะเรยกคลาสแมวา ซปเปอรคลาส และเรยกคลาสลกวา ซบคลาส คลาสลกเมอสบทอดคณสมบตจากคลาสแมแลวคลาสลกจะมคณสมบต แอตทรบวต และเมธอด เหมอนกบคลาสแม และยงสามารถเพมแอตทรบวตและเมธอดในคลาสลกไดอก เพอใหตรงกบความตองการใชงาน

5. ใหนกศกษาบอกโครงสรางของภาษายเอมแอล วามองคประกอบอะไรบาง พรอมอธบาย ( 10 คะแนน ) ตอบ โครงสรางของภาษายเอมแอลจะม vocabulary ของภาษา และมองคประกอบ 3 สวนหลก คอ (1) Things (2) Relationship และ (3) Diagrams 1. Things เปนสงตาง ๆ ทน ามาสรางเปน ยเอมแอล โดย things เปนสวนทเลกสดของโมเดล ม relationships เปนสงทใชแสดงความสมพนธระหวาง things และถาหาก things ใด ๆ มคณสมบตทเหมอนกน กจะสามารถรวมอยในกลมเดยวกนได โดยการใช ไดอะแกรมมาท าการจดกลมออกมา ซง things สามารถจดแบงไดเปน 4 ประเภท คอ 1) Structural things เปนค านามของ ยเอมแอล 2) Behavioral things เปนกรยาของ ยเอมแอล 3) Grouping things เปนการจดกลมของภาษา ยเอมแอล 4) Annotation things เปนการเขยนค าอธบายของ ยเอมแอล 2. รปแบบความสมพนธในภาษา ยเอมแอล (Relationship) ภาษายเอมแอล จะมการมองความสมพนธออกเปน 3 ประเดน คอ การมองในแงของความหมาย(semantic relationship) มองในแงโครงสราง(structural relationship) และมองความสมพนธแบบพเศษ(generalization/specialization) ส าหรบความสมพนธในภาษา ยเอมแอล แบงออกได 4 ชนดคอ

127

1. ด เพนเดนซ (Dependency) จะเปนความสมพนธในเชงความหมายโดยจะเปนความสมพนธระหวาง 2 things โดยเมอ things ใดเกดการเปลยนแปลงจะสงผลตออก things หนง สญลกษณของ dependency จะเปนการวาดรปลกศรทเปนเสนประและมขอความเขยนก ากบไว

2. แอสโซชเอชน (Association) จะเปนความสมพนธเชงโครงสรางส าหรบการอธบายการเชอมโยงระหวางวตถตาง ๆ แอสโซชเอชน จะมความสมพนธหนงทเรยกวา แอกกรเกชน (aggregation) ส าหรบการอธบายความสมพนธของวตถ ซงอาจจะเปนความสมพนธของวตถเพยงบางสวนหรอมความสมพนธตอวตถทงหมด สญลกษณจะเปนเสนตรง หรอ เสนตรงมหวลกศร

3. เจเนอรไลเซชน ( Generalization ) เปนความสมพนธแบบพเศษซงเปนการสบทอดคณสมบต จากอลเมนตแมไปยงอลเมนตลก โดยเราเรยกอลเมนตแมเปนอลเมนตทวไป (generalized element) และเรยกอลเมนตลกวาเปนอลเมนตพเศษ (specialized element) การเขยนสญลกษณจะเปนรปเครองหมายหวลกศรสามเหลยมโปรง โดยมหวลกศรชไปทางอลเมนตแม

4. รไลเชชน (Realization) เปนลกษณะความสมพนธในเชงความหมายระหวางอนเทอรเฟซ กบคลาส หรอ ระหวาง ยสเคส กบ โคลาโบเรชน (collaborations) ในการเขยนสญลกษณนน จะเปนเสนตรงประมหวลกศรโปรง 3.ไดอะแกรม โดยในภาษายเอมแอลจะมการแบงไดอะแกรมออกทงหมด 6 รปแบบ แตจะมบางรปแบบทมการแบงไดอะแกรมยอยลงไป คอ

1) Use case 2) Static structure ประกอบดวย 2.1 Class 2.2 Object 3) Interaction ประกอบดวย

3.1 Sequence 3.2 Communication 3.3 Interaction overview 3.4 Timing(optional)

4) State 5) Activity 6) Implementation 6.1 Component 6.2 Deployment

128

ใบงำน บทท 7 เรอง ควำมรพนฐำนเกยวกบกำรเขยนโปรแกรมเชงวตถ

ค ำชแจง 1. ใบงานมทงหมด 2 ขอ ใหท าทกขอ 2. คะแนนรวมทงหมด 50 คะแนน ---------------------------------------------------------------------------------------------------------------------- 1. ใหนกศกษาวเคราะหขอมลของวตถตอไปน ประกอบดวยคณสมบตและพฤตกรรมอะไรบาง ( 25 คะแนน )

1.1 ปากกา ( 5 คะแนน ) 1.2 ดนสอ ( 5 คะแนน ) 1.3 หนงสอ ( 5 คะแนน ) 1.4 รถยนต ( 5 คะแนน ) 1.5 ปลา ( 5 คะแนน )

2. ใหนกศกษาเขยนแผนภาพยเอมแอลของคลาสตอไปน ( 25 คะแนน ) 2.1 ยานพาหนะ ( 5 คะแนน ) 2.2 หนงสอ ( 5 คะแนน ) 2.3 คอมพวเตอร ( 5 คะแนน ) 2.4 ปลา ( 5 คะแนน ) 2.5 นก ( 5 คะแนน )

129

เฉลยใบงำน บทท 7 เรอง ควำมรพนฐำนเกยวกบกำรเขยนโปรแกรมเชงวตถ

ค ำชแจง 1. ใบงานมทงหมด 2 ขอ ใหท าทกขอ 2. คะแนนรวมทงหมด 50 คะแนน ---------------------------------------------------------------------------------------------------------------------- 1. ใหนกศกษาวเคราะหขอมลของวตถตอไปน ประกอบดวยคณสมบตและพฤตกรรมอะไรบาง ( 25 คะแนน ) วตถ คณสมบต พฤตกรรม ปากกาลกลนยหอ มา ยหอ, ส, น าหนก, ความสง เขยน ดนสอ 2B ขนาดไสดนสอ, น าหนก, ความสง เขยน ลบ หนงสอภาษาไทย ชอหนงสอ น าหนก ชอผแตง

จ านวนหนา เปด, ปด

รถยนตโตโยตา ส, น าหนก, ความกวาง, ความยาว, ขนาดเครองยนต

สตารทเครอง, เรงเครอง, เบรค, เลยวซาย, เลยวขวา

ปลาหมอ ชอ, น าหนก, กวาง, ยาว วายน า, กน, นอน

2. ใหนกศกษาเขยนแผนภาพยเอมแอลของคลาสตอไปน ( 25 คะแนน ) 2.1 ยานพาหนะ ( 5 คะแนน )

ยำนพำหนะ

-ส-ยหอ+เลยวขวา+เรงความเรว+เบรค

130

2.2 หนงสอ ( 5 คะแนน )

หนงสอ

-น าหนก-ผแตง

+เปด+ปด+นบจ านวนหนา

-จ านวนหนา

2.3 คอมพวเตอร ( 5 คะแนน )

คอมพวเตอร

-ความเรว-ยหอ

+เปด+ปด+รสตารท

-น าหนก

2.4 ปลา ( 5 คะแนน )

ปลำ

-สายพนธ-กวาง

+วายน า+กน+นอน

-น าหนก-ยาว

131

2.5 นก ( 5 คะแนน )

นก

-ชอ-น าหนก

+บน+กน+รอง

-ส

132

แบบทดสอบหลงเรยน บทท 7 เรอง ควำมรพนฐำนเกยวกบกำรเขยนโปรแกรมเชงวตถ

ค ำชแจง 1. ใหนกศกษาเลอก กากบาท X ลงในกระดาษค าตอบทแจกใหโดยเลอกขอทถกทสดเพยงขอเดยว 2. ตอบถกไดคะแนนขอละ 1 คะแนน ตอบผดได 0 คะแนน 3. แบบทดสอบมทงหมด 10 ขอ ---------------------------------------------------------------------------------------------------------------------- 1. จากแนวคดของ อลน เคย ผทมบทบาทตอการพฒนาโปรแกรมเชงวตถ ขอใดตอไปนมมใชแนวคดของ อลน เคย ก. ทกสงทกอยางในโปรแกรมลวนเปนวตถ ข. วตถจะท างานไดจะตองมการรองขอจากออกวตถอน ค. คลาสเปนทเกบพฤตกรรมตาง ๆ เกยวกบวตถ ง. คลาสแตละคลาสจะตองไมมความสมพนธกน

2. ขอใดคอองคประกอบของ วตถ ก. คณสมบต และ พฤตกรรม ข. คณสมบต และ ขอมล ค. ขอมล และ พฤตกรรม ง. พฤตกรรม และ เมธอด

3. วตถ รถยนต ขอใดตอไปน คอ คณสมบต ของวตถดงกลาว ก. เลยวซาย ข. ส ค. เลยวซาย เลยวขวา เรงเครอง ง. ตดเครองยนต

4. ขอใดคอองคประกอบการพฒนาวตถ ทเปนสวนของพฤตกรรม ก. การสบทอด ข. การหอหม ค. การท าหลายรปแบบ ง. คลาส

133

5. จากนยามตอไปน “กลมของวตถทมคณสมบตและพฤตกรรมทเหมอนกน” สอดคลองกบขอใด ก. คลาส ข. วตถ ค. การสบทอด ง. การซอนเรนขอมล

6. ความสมพนธของคลาส ระหวาง นกศกษา ครทปรกษา และ โครงงาน เปนความสมพนธของคลาสลกษณะใด ก. ยนาร ข. ไบนาร ค. เทอนาร ง. ยนาร หรอ เทอนาร

7. ความสมพนธ ทม คณลกษณะของการสบทอด เชน ยานพาหนะ กบ รถยนต จะเปนความสมพนธสอดคลองกบขอใด ก. ความสมพนธแบบแอสโซชเอชน ข. ความสมพนธแบบโฮวลพารต ค. ความสมพนธแบบคอมโพสชน ง. ความสมพนธแบบแอกกรเกชน

8. ลกษณะการสงขอความเดยว ไปยงวตถตาง ๆ แลววตถมการตอบสนองแตกตางกนออกไป เราเรยกลกษณะนสอดคลองกบขอใด ก. การสบทอดคณสมบต ข. การท าหลายรปแบบ ค. การหอหม ง. โอเวอรโหลดดง

9. ขอใดคอองคประกอบของยเอมแอล ก. Things Relationship ข. Things Relationship Diagrams ค. Structure Meaning Diagrams ง. Relationship Diagrams

134

10. ขอใดมใช ความสมพนธ ในภาษา ยเอมแอล ก. ดเพนเดนซ ข. แอสโซชเอชน ค. รไลเซชน ง. อนเทอรแอคชน

135

เฉลยแบบทดสอบหลงเรยน บทท 7 เรอง ควำมรพนฐำนเกยวกบกำรเขยนโปรแกรมเชงวตถ

ขอท เฉลย

1 ง 2 ก 3 ข 4 ค 5 ก 6 ค 7 ก 8 ข 9 ข

10 ง

136

137

บทท 8 เรอง คลำสและวตถ

138

แบบทดสอบกอนเรยน บทท 8 เรอง คลำสและวตถ

ค ำชแจง 1. ใหนกศกษาเลอก กากบาท X ลงในกระดาษค าตอบทแจกใหโดยเลอกขอทถกทสดเพยงขอเดยว 2. ตอบถกไดคะแนนขอละ 1 คะแนน ตอบผดได 0 คะแนน 3. แบบทดสอบมทงหมด 10 ขอ ---------------------------------------------------------------------------------------------------------------------- 1. ขอใดคอความหมายของคลาส ทถกตองทสด

ก. กลมของวตถใด ๆ ข. เปนพมพเขยวของวตถ ค. การจดกลมของวตถใดทเหมอน ๆ กนโดยพจารณาจากคณสมบตและวธการ ง. สงทมองเหน จบตองได หรอสงทมองไมเหน แตมอยจรง

2. ระดบการเขาถงคลาสแบบใดทปกปองดาตาเมมเบอร โดยไมสามารถเขาถงจากภายนอก หรอคลาสลกไดโดยตรง ก. ไพรเวท (private) ข. โปรเทคเตด (protected) ค. พบลค (public) ง. ไพรเวท และ โปรเทคเตด (private and protected)

3. ขอใดคอการอมพลเมนตเตชนคลาส Circle ทถกตอง ก. void Circle : getRadius( ){ return 0; } ข. double circle :: getRadius(){ return 0.5 * r * r;} ค. void circle :: getRadius( ) { return 0.5 * r * r; } ง. double Circle :: getRadius( ){ return r; }

4. ขอใดคอการสรางวตถจาก Person ทถกตอง ก. P1 Person; ข. Person p1,p2; ค. Person p1 = 10; ง. P1,p2 Person;

139

5. ขอใดกลาวถกตองเกยวกบการสรางเฮดเดอรไฟล ก. เปนการเขยนเพอระบรายละเอยดการท างานของโปรแกรม ข. เปนการเขยนเพอระบดาตาเมมเบอรและเมมเบอรฟงกชน ค. เปนการเขยนทระบ ดาตาเมมเบอร และ ชอเมมเบอรฟงกชน การรบพารามเตอร และชนด

ขอมลทสงกลบเมอท างานเสรจ ไมมการระบรายละเอยดการท างาน ง. เปนการเขยนเพอระบดาตาเมมเบอร และรายละเอยดการท างานของเมมเบอรฟงกชน

จากโปรแกรมดงกลาวตอไปนใหตอบค าถามขอ 6 - 8 1 //Point.h

2 class Point {

3 private : double x, double y;

4 public : 1 void setY(double);

5 double getX(); double getY();

6 };

1 //Point.cpp

2 ________2__________

3 void Point :: setX(double x1){ x = x1; }

4 void Point :: setY(_____3_____){ y = y1; }

5 double Point :: getX( ) { return x; }

6 double Point :: getY( ) { ______4______}

6. จากโปรแกรมดงกลาวขางตนบรรทดท 4 หมายเลข 1 ของไฟล Point.h เตมเมมเบอรฟงกชนใดท าใหโปรแกรมท างานถกตอง

ก. void setX(double); ข. void setx(double); ค. void setX( ); ง. void setx( );

7. จากโปรแกรมดงกลาวขางตนบรรทดท 2 หมายเลข 2 ของไฟล Point.cpp เตมค าสงใดท าใหโปรแกรมท างานถกตอง

ก. #include Point.h

ข. #include <Point.h>

ค. #include “Point.h”

ง. #include <“Point.h”>

140

8. จากโปรแกรมดงกลาวขางตนบรรทดท 4 หมายเลข 3 ของไฟล Point.cpp เตมค าสงใดท าใหโปรแกรมท างานถกตอง

ก. int y; ข. double y; ค. double y1 ง. double y1;

9. จากโปรแกรมดงกลาวขางตนบรรทดท 6 หมายเลข 4 ของไฟล Point.cpp เตมค าสงใดท าใหโปรแกรมท างานถกตอง

ก. return y1; ข. return y; ค. Return Y; ง. return y

10. วตถคอมพวเตอรชอ c1 เมอวเคราะหและก าหนดเปนคลาสออกมา ขอใดตอไปนคอ ดาตาเมมเบอร ทควรจะมของวตถดงกลาว

ก. ก าหนดความกวางของจอภาพ

ข. เรยกดยหอของคอมพวเตอร

ค. ยหอ

ง. สถานทขาย

141

เฉลยแบบทดสอบกอนเรยน บทท 8 เรอง คลำสและวตถ

ขอท เฉลย

1 ค 2 ก 3 ง 4 ข 5 ค 6 ก 7 ค 8 ค 9 ข

10 ค

142

ใบแบบฝกหด บทท 8 เรอง คลำสและวตถ

ค ำชแจง 1. แบบฝกหดมทงหมด 4 ขอ ใหท าทกขอ 2. คะแนนรวมทงหมด 50 คะแนน ---------------------------------------------------------------------------------------------------------------------- 1. ใหนกศกษาบอกความหมายของวตถพรอมทงยกตวอยางวตถทนกศกษารจกมา 5 วตถ (10 คะแนน ) 2. ใหนกศกษาบอกความหมายของคลาส พรอมยกตวอยางประกอบ (10 คะแนน ) 3. บอกระดบการเขาถงคลาสมอะไรบาง (20 คะแนน ) 4. อธบายถงความจ าเปนในการสรางเฮดเดอรไฟลแยกจากการอมพลเมนตเตชนไฟล ในการใชงาน (10 คะแนน )

143

ใบเฉลยแบบฝกหด บทท 8 เรอง คลำสและวตถ

ค ำชแจง 1. แบบฝกหดมทงหมด 4 ขอ ใหท าทกขอ 2. คะแนนรวมทงหมด 50 คะแนน ---------------------------------------------------------------------------------------------------------------------- 1. ใหนกศกษาบอกความหมายของวตถพรอมทงยกตวอยางวตถทนกศกษารจกมา 5 วตถ (10 คะแนน ) ตอบ วตถ หมายถง สงตาง ๆ ทอยในระบบโดยสามารถมองเหน จบตองได เชน รถยนต คน ตนไม คอมพวเตอร เปนตน หรอเปนสงท จบตองไมได แตมอยจรง เชน กฎขอบงคบ เปนตน การวเคราะหวตถน ามาสรางคลาส คอขนตอนการวเคราะหวตถโดยพจารณาหาคณสมบต และวธการ หลงจากนนน ามาเขยนเปนแผนภาพคลาสโดยภาษายเอมแอล แลวน าขอมลจากแผนภาพมาสรางเปนโปรแกรมภาษา C++ ตวอยางวตถ 1. แมวไทย 2. รถยนตโตโยตา 3. หนงสอภาษา c++ 4. คอมพวเตอรยหอเดล 5. นกศกษา 2. ใหนกศกษาบอกความหมายของคลาส พรอมยกตวอยางประกอบ (10 คะแนน ) ตอบ คลาส คอ สงทเปนนามธรรม ใชส าหรบการแบงกลมหรอประเภทของวตถ โดยกลมของวตถทมลกษณะเหมอนกน จะถกจดกลมเดยวกน โดยการสรางคลาสนนจะมการสรางคลาสตนตระกลเรยกวา Supperclass และคลาสลกหลานทมการสบทอดจากคลาสตนตระกลเรยกวา Subclass โดยคลาสลกจะมการสบทอดคณสมบตของคลาสตนตระกลมาดวย ระดบการเขาถง หมายถง การเขยนโปรแกรมเชงวตถจะมการปกปองขอมลเอาไวภายในคลาส การเขาถงขอมลภายในคลาสนนจะตองเขาทางทระบไวเทานน 3. บอกระดบการเขาถงคลาสมอะไรบาง (20 คะแนน ) ตอบ ระดบการเขาถงคลาสแบงออกเปน 3 ระดบ ระดบ คอ private , protected และ public

1. private จะมการอนญาตใหเขาถงเฉพาะภายในคลาสเทานน 2. protected จะมการอนญาตใหเขาถงเฉพาะภายในคลาส และคลาสลกเทานน 3. public จะมการอนญาตใหเขาถงภายในคลาส คลาสลก และ คลาสภายนอก

144

4. อธบายถงความจ าเปนในการสรางเฮดเดอรไฟลแยกจากการอมพลเมนตเตชนไฟล ในการใชงาน (10 คะแนน ) ตอบ 1. ตองการทจะแยกรายละเอยดการท างานของโปรแกรมออก เพอการปรบปรงโปรแกรมในอนาคตมความสะดวก 2. สามารถปกปดรายละเอยดการท างานของโปรแกรมไมใหบคคลอนทราบการท างานได 3. มความยดหยนในการใชงานสง

145

ใบงำน บทท 8 เรอง คลำสและวตถ

ค ำชแจง 1. มทงหมด 1 ขอ 2. คะแนนรวมทงหมด 100 คะแนน ---------------------------------------------------------------------------------------------------------------------- 1. ใหนกศกษาวเคราะหวตถ สเหลยมลกบาศกเมตร แลวตอบค าถามตอไปน 1.1 วตถสเหลยมลกบาศกเมตร ประกอบดวยคณสมบต(ดาตาเมมเบอร) และวธการ ( เมมเบอรฟงกชน ) มอะไรบาง (20 คะแนน ) 1.2 เขยนแผนภาพคลาส ของสเหลยมลกบาศกเมตรดวยภาษายเอมแอลโดยตงชอคลาส Cubic (20 คะแนน ) 1.3 สรางโปรเจคในการท างานชอ Cubics และทกไฟลอยภายในโปรเจคดงกลาว 1.4 เขยนคลาสออกมาโดยแยกเปนเฮดเดอรไฟลชอ Cubic.h (20 คะแนน ) 1.5 เขยนการอมพลเมนตเตชนคลาสออกมาชอไฟล Cubic.cpp (20 คะแนน ) 1.6 เขยนโปรแกรมทดสอบการท างานชอไฟล TestCubic.cpp (20 คะแนน )

146

เฉลยใบงำน บทท 8 เรอง คลำสและวตถ

1. ใหนกศกษาวเคราะหวตถ สเหลยมลกบาศกเมตร แลวตอบค าถามตอไปน 1.1 วตถสเหลยมลกบาศกเมตร ประกอบดวยคณสมบต(ดาตาเมมเบอร) และวธการ ( เมมเบอรฟงกชน ) มอะไรบาง (20 คะแนน ) วตถ คณสมบต วธกำร สเหลยมลกบาศกเมตร Cubic

กวาง ( width) ยาว ( lenght ) สง ( height )

ก าหนดความกวาง ( setWidth( ) ) ก าหนดความยาว ( setLenght( ) ) ก าหนดความสง ( setHeight ( ) ) เรยกดความกวาง ( getWidth ( ) ) เรยกดความยาว ( getLenght ( ) ) เรยกดความสง ( getHeight ( ) ) ค านวณปรมาตร ( getVolumn ( ) )

1.2 เขยนแผนภาพคลาส ของสเหลยมลกบาศกเมตรดวยภาษายเอมแอลโดยตงชอคลาส Cubic (20 คะแนน )

Cubic

-width : double

-length : double

+calVolumn( ) : double

+Cube( )

+setLength(double)

-height : double

+setHeight(double)

+getHeight( ) : double

+getWidth( ) : double

+getLength( ) : double

+setWidth(double)

1.3 สรางโปรเจคในการท างานชอ Cubics และทกไฟลอยภายในโปรเจคดงกลาว 1. เปดโปรแกรม Code::Blocks 2. เลอกเมน File > New > Project 3. เลอกรายการ ConsoleApplication > Go > next > C++ > next > Finish

147

1.4 เขยนคลาสออกมาโดยแยกเปนเฮดเดอรไฟลชอ Cubic.h (20 คะแนน ) 1 #ifndef CUBIC_H_INCLUDED

2 #define CUBIC_H_INCLUDED

3 class Cubic{

4 private:

5 double width;

6 double lenght;

7 double height;

8 public:

9 Cubic(double,double,double);

10 void setWidth(double);

11 void setHeight(double);

12 void setLenght(double);

13 double getWidth();

14 double getHeight();

15 double getLenght();

16 double calVolumn();

17 };

18 #endif // CUBIC_H_INCLUDED

1.5 เขยนการอมพลเมนตเตชนคลาสออกมาชอไฟล Cubic.cpp (20 คะแนน )

1 #include"Cubic.h"

2 Cubic::Cubic(double w ,double l ,double h){

3 this->width = w; this->lenght=l; this->height = h;

4 }

5 void Cubic::setWidth(double w){this->width = w;}

6 void Cubic::setHeight(double h){this->height = h;}

7 void Cubic::setLenght(double l){ this->lenght = l;}

8 double Cubic::getWidth(){return this->width;}

9 double Cubic::getHeight(){return this->lenght;}

10 double Cubic::getLenght(){return this->height;}

11 double Cubic::calVolumn(){

12 return (this->getWidth() * this->getHeight() * this->getLenght());

13 }

148

1.6 เขยนโปรแกรมทดสอบการท างานชอไฟล TestCubic.cpp (20 คะแนน ) 1 #include <iostream>

2 #include"Cubic.h"

3 using namespace std;

4 int main( )

5 {

6 Cubic c1(2,3,4);

7 cout<<"Volumn : "<<c1.calVolumn();

8 return 0;

9 }

149

แบบทดสอบหลงเรยน บทท 8 คลำสและวตถ

ค ำชแจง 1. ใหนกศกษาเลอก กากบาท X ลงในกระดาษค าตอบทแจกใหโดยเลอกขอทถกทสดเพยงขอเดยว 2. ตอบถกไดคะแนนขอละ 1 คะแนน ตอบผดได 0 คะแนน 3. แบบทดสอบมทงหมด 10 ขอ ---------------------------------------------------------------------------------------------------------------------- 1. ขอใดคอความหมายของคลาส ทถกตองทสด

ก. กลมของวตถใด ๆ ข. เปนพมพเขยวของวตถ ค. การจดกลมของวตถใดทเหมอน ๆ กนโดยพจารณาจากคณสมบตและวธการ ง. สงทมองเหน จบตองได หรอสงทมองไมเหน แตมอยจรง

2. ระดบการเขาถงคลาสแบบใดทปกปองดาตาเมมเบอร โดยไมสามารถเขาถงจากภายนอก หรอคลาสลกไดโดยตรง ก. ไพรเวท (private) ข. โปรเทคเตด (protected) ค. พบลค (public) ง. ไพรเวท และ โปรเทคเตด (private and protected)

3. ขอใดคอการอมพลเมนตเตชนคลาส Circle ทถกตอง ก. void Circle : getRadius( ){ return 0; } ข. double circle :: getRadius(){ return 0.5 * r * r;} ค. void circle :: getRadius( ) { return 0.5 * r * r; } ง. double Circle :: getRadius( ){ return r; }

4. ขอใดคอการสรางวตถจาก Person ทถกตอง ก. P1 Person; ข. Person p1,p2; ค. Person p1 = 10; ง. P1,p2 Person;

150

5. ขอใดกลาวถกตองเกยวกบการสรางเฮดเดอรไฟล ก. เปนการเขยนเพอระบรายละเอยดการท างานของโปรแกรม ข. เปนการเขยนเพอระบดาตาเมมเบอรและเมมเบอรฟงกชน ค. เปนการเขยนทระบ ดาตาเมมเบอร และ ชอเมมเบอรฟงกชน การรบพารามเตอร และชนด

ขอมลทสงกลบเมอท างานเสรจ ไมมการระบรายละเอยดการท างาน ง. เปนการเขยนเพอระบดาตาเมมเบอร และรายละเอยดการท างานของเมมเบอรฟงกชน

จากโปรแกรมดงกลาวตอไปนใหตอบค าถามขอ 6 - 8 1 //Point.h

2 class Point {

3 private : double x, double y;

4 public : 1 void setY(double);

5 double getX(); double getY();

6 };

1 //Point.cpp

2 ________2__________

3 void Point :: setX(double x1){ x = x1; }

4 void Point :: setY(_____3_____){ y = y1; }

5 double Point :: getX( ) { return x; }

6 double Point :: getY( ) { ______4______}

6. จากโปรแกรมดงกลาวขางตนบรรทดท 4 หมายเลข 1 ของไฟล Point.h เตมเมมเบอรฟงกชนใดท าใหโปรแกรมท างานถกตอง

ก. void setX(double); ข. void setx(double); ค. void setX( ); ง. void setx( );

7. จากโปรแกรมดงกลาวขางตนบรรทดท 2 หมายเลข 2 ของไฟล Point.cpp เตมค าสงใดท าใหโปรแกรมท างานถกตอง

ก. #include Point.h

ข. #include <Point.h>

ค. #include “Point.h”

ง. #include <“Point.h”>

151

8. จากโปรแกรมดงกลาวขางตนบรรทดท 4 หมายเลข 3 ของไฟล Point.cpp เตมค าสงใดท าใหโปรแกรมท างานถกตอง

ก. int y; ข. double y; ค. double y1 ง. double y1;

9. จากโปรแกรมดงกลาวขางตนบรรทดท 6 หมายเลข 4 ของไฟล Point.cpp เตมค าสงใดท าใหโปรแกรมท างานถกตอง

ก. return y1; ข. return y; ค. Return Y; ง. return y

10. วตถคอมพวเตอรชอ c1 เมอวเคราะหและก าหนดเปนคลาสออกมา ขอใดตอไปนคอ ดาตาเมมเบอร ทควรจะมของวตถดงกลาว

ก. ก าหนดความกวางของจอภาพ

ข. เรยกดยหอของคอมพวเตอร

ค. ยหอ

ง. สถานทขาย

152

เฉลยแบบทดสอบหลงเรยน บทท 8 เรอง คลำสและวตถ

ขอท เฉลย

1 ค 2 ก 3 ง 4 ข 5 ค 6 ก 7 ค 8 ค 9 ข

10 ค

153

บทท 9 เรอง โอเวอรโหลดดง

154

ใบแบบทดสอบกอนเรยน บทท 9 เรอง โอเวอรโหลดดง

ค ำชแจง 1. ใหนกศกษาเลอก กากบาท X ลงในกระดาษค าตอบทแจกใหโดยเลอกขอทถกทสดเพยงขอเดยว 2. ตอบถกไดคะแนนขอละ 1 คะแนน ตอบผดได 0 คะแนน 3. แบบทดสอบมทงหมด 10 ขอ ---------------------------------------------------------------------------------------------------------------------- 1. มการก าหนดชอเหมอนกบคลาส สามารถมไดหลายตว แตตองมพารามเตอร แตกตางกน และมการก าหนดคาเรมตนใหกบวตถ จากค ากลาวนมความหมายสอดคลองกบขอใด ก. โอเวอรโหลดดงโอเปอเรเตอร ข. โอเวอรโหลดดงคลาส ค. โอเวอรโหลดดงคอนสตรคเตอร ง. โอเวอรโหลดดงดสตรคเตอร

2. มไวส าหรบการท าลายว ตถทสนสดการท างานแลว เพอคนพนทหนวยความจ าใหกบระบบปฏบตการ จากค ากลาวนสอดคลองกบขอใด ก. โอเวอรโหลดดงโอเปอเรเตอร ข. โอเวอรโหลดดงคลาส ค. โอเวอรโหลดดงคอนสตรคเตอร ง. โอเวอรโหลดดงดสตรคเตอร

3. มการก าหนดส าหรบการท างานรวมกบวตถโดยตรง เชน วตถ c1 สามารถมการก าหนดใหท างานเปน c1=2 ได จากการท างานดงกลาวตรงกบขอใด ก. โอเวอรโหลดดงโอเปอเรเตอร ข. โอเวอรโหลดดงคลาส ค. โอเวอรโหลดดงคอนสตรคเตอร ง. โอเวอรโหลดดงดสตรคเตอร

4. มการก าหนดใหคลาสชอวา Person และจากคลาสดงกลาวมการสรางโอเวอรโหลดดงคอนสตรคเตอรขอใดถกตองมากทสด ก. person( ) ข. ~Person(double); ค. Person(int,double); ง. ~Person( )

155

5. มการก าหนดใหคลาสชอวา Person และจากคลาสดงกลาวมการสรางโอเวอรโหลดดงดสตรคเตอรขอใดถกตองมากทสด ก. Person( ) ข. ~Person(double); ค. Person(int,double); ง. ~Person( )

จากโปรแกรมดงกลาวตอบค าถามขอ 6 - 10 1 //Cal.h

2 class Cal{

3 private:

4 int number1;

5 public:

6 Cal();

7 Cal(int);

8 ~Cal();

9 void operator=(int);

10 void operator+(int);

11 void operator*=(int);

12 int operator++(int);

13 };

14 Cal::Cal(){ number1=10;}

15 Cal::Cal(int n1){ number1 = n1;}

16 Cal::~Cal(){ }

17 void Cal::setNumber1(int n){number1 = n}

18 int Cal::getNumber1(){return number1;}

19 void Cal::operator=(int n){number1 = n;}

20 void Cal::operator*=(int n){ number1*=n;}

21 void Cal::operator+(int n){ number1 = number1 + n;}

22 int Cal::operator ++(int ){ return number1++;}

156

1 //TestCal.cpp

2 #include “Cal.h”

3 int main( ) {

4 Cal c1

5 Cal c2(20);

6 c1=50;

7 c1+10;

8 c2++;

9 return 0;

10 }

6. เมอโปรแกรมท างาน บรรทดท 4 ของไฟล TestCal.cpp ดาตาเมมเบอร number1 จะมคาตรงกบขอใด ก. 0 ข. 10 ค. 20 ง. 50

7. เมอโปรแกรมท างาน บรรทดท 5 ของไฟล TestCal.cpp ดาตาเมมเบอร number1 จะมคาตรงกบขอใด ก. 0 ข. 10 ค. 20 ง. 50

8. เมอโปรแกรมท างาน บรรทดท 6 ของไฟล TestCal.cpp ดาตาเมมเบอร number1 จะมคาตรงกบขอใด ก. 10 ข. 20 ค. 50 ง. 60

157

9. เมอโปรแกรมท างาน บรรทดท 7 ของไฟล TestCal.cpp ดาตาเมมเบอร number1 จะมคาตรงกบขอใด ก. 10 ข. 20 ค. 50 ง. 60

10. เมอโปรแกรมท างาน บรรทดท 8 ของไฟล TestCal.cpp ดาตาเมมเบอร number1 จะมคาตรงกบขอใด ก. 11 ข. 20 ค. 21 ง. 61

158

เฉลยแบบทดสอบกอนเรยน บทท 9 เรอง โอเวอรโหลดดง

ขอท เฉลย

1 ค 2 ง 3 ก 4 ค 5 ง 6 ข 7 ค 8 ค 9 ง

10 ค

159

ใบแบบฝกหด บทท 9 เรอง โอเวอรโหลดดง

ค ำชแจง 1. แบบฝกหดมทงหมด 4 ขอใหท าทกขอ 2. คะแนนรวมทงหมด 100 คะแนน ---------------------------------------------------------------------------------------------------------------------- 1. ใหนกศกษาบอกความหมายของโอเวอรโหลดดงคอนสตรคเตอร ( 25 คะแนน ) 2. ใหนกศกษาบอกความหมายของโอเวอรโหลดดงดสตรคเตอร ( 25 คะแนน ) 3. ใหนกศกษาบอกความหมายของโอเวอรโหลดดงโอเปอเรเตอร ( 25 คะแนน ) 4. ใหนกศกษาบอกโอเปอเรเตอรทสามารถท าการโอเวอรโหลดดงได ( 25 คะแนน )

160

ใบเฉลยแบบฝกหด บทท 9 เรอง โอเวอรโหลดดง

ค ำชแจง 1. แบบฝกหดมทงหมด 4 ขอใหท าทกขอ 2. คะแนนรวมทงหมด 100 คะแนน ---------------------------------------------------------------------------------------------------------------------- 1. ใหนกศกษาบอกความหมายของโอเวอรโหลดดงคอนสตรคเตอร ( 25 คะแนน ) ตอบ โอเวอรโหลดดงคอนสตรคเตอร คอ การก าหนดคาเรมตนใหกบวตถซงคอนสตรคเตอรจะมชอเหมอนกบคลาส ไมมการสงคากลบเมอท างานเสรจ ไมก าหนดคยเวรด void ไวดานหนา สามารถก าหนดไดหลายตวแตจะตองมพารามเตอรไมเหมอนกน เมอมการสรางวตถจะตองเลอกคอนสตรคเตอรทตองการใชงานใหตรงกน ตวใดตวหนง และถาไมมการก าหนดคอนสตรคเตอรจะมการใชดฟอลตคอนสตรคเตอรในการท างานซงกลไกของภาษา C++ จะก าหนดใหอตโนมต ซงเปนคอนสตรคเตอรทไมมการรบพารามเตอร และเมอการสรางวตถกไมตองระบพารามเตอร 2. ใหนกศกษาบอกความหมายของโอเวอรโหลดดงดสตรคเตอร ( 25 คะแนน ) ตอบ โอเวอรโหลดดงดสตรคเตอร คอ จะมการท างานตรงกนขามกบคอนสตรคเตอรคอจะท าลายวตถทไมมการใชงานแลว เพอคนพนทหนวยความจ าใหกบระบบปฏบตการตอไป จะมการท างานอตโนมต การเขยนจะขนตนดวยสญลกษณไตล (~) น าหนาแลวตามดวยชอคลาส 3. ใหนกศกษาบอกความหมายของโอเวอรโหลดดงโอเปอเรเตอร ( 25 คะแนน ) ตอบ โอเวอรโหลดดงโอเปอเรเตอร คอ การน าโอเปอรเรเตอรตาง ๆ มาท างานรวมกบวตถ โดยท าการโอเวอรโหลดดง ซงโดยปกตแลวจะไมสามารถน าโอเปอรเรเตอรมากระท ากบวตถไดโดยตรง เชน วตถ x ตองการก าหนดคาใหกบ 2 ไมสามารถกระท าได (x = 2) แตถาท าการโอเวอรโหลดโอเปอรเรเตอร = แลว สามารถกระท าได รปแบบการโอเวอรโหลดโอเปอรเรเตอรคอ ชนดขอมลทสงกลบเมอท างานเสรจ operator ชอโอเปอรเรเตอร (พารามเตอรลสต) void operator = (int n) 4. ใหนกศกษาบอกโอเปอเรเตอรทสามารถท าการโอเวอรโหลดดงได ( 25 คะแนน ) ตอบ โอเปอเรเตอรในภาษาC++ ทสามารถท าการโอเวอรโหลดดงไดมดงตอไปน

161

+ - * / % ^ &

| ~ ! = < > +=

-= *= /= %= ^= &= |=

<< >> >>= <<= == != <=

>= && || ++ -- ->* ,

-> [] ( ) new delete new[] delete[]

162

ใบงำน บทท 9 เรอง โอเวอรโหลดดง

ค ำชแจง 1. ใบงานมทงหมด 2 ขอใหท าทกขอ 2. คะแนนรวมทงหมด 100 คะแนน ---------------------------------------------------------------------------------------------------------------------- 1. ใหนกศกษาค านวณหาพนทสเหลยมลกบาศกเมตร โดยมการวเคราะหวตถดงกลาวแลวเขยนแผนภาพยเอมแอล พรอมทงเขยนโปรแกรมภาษา C++ โดยมการสรางโอเวอรโหลดดงคอนสตรคเตอรจ านวน 2 ตวและโอเวอรโหลดดงดสตรคเตอร พรอมทงแสดงการท างานของโปรแกรมดงกลาว ( 50 คะแนน ) 2. ใหนกศกษาเขยนโปรแกรมบวกเลข สามารถท าการบวกเลขจ านวนเตม จ านวนจรง และขอความ โดยถาบวกขอความจะเปนการน าขอความมาตอกน และน ามาแสดงผลทางจอภาพ ( 50 คะแนน )

163

เฉลยใบงำน บทท 9 เรอง โอเวอรโหลดดง

ค ำชแจง 1. ใบงานมทงหมด 2 ขอใหท าทกขอ 2. คะแนนรวมทงหมด 100 คะแนน ---------------------------------------------------------------------------------------------------------------------- 1. ใหนกศกษาค านวณหาพนทสเหลยมลกบาศกเมตร โดยมการวเคราะหวตถดงกลาวแลวเขยนแผนภาพยเอมแอล พรอมทงเขยนโปรแกรมภาษา C++ โดยมการสรางโอเวอรโหลดดงคอนสตรคเตอรจ านวน 2 ตวและโอเวอรโหลดดงดสตรคเตอร พรอมทงแสดงการท างานของโปรแกรมดงกลาว ( 50 คะแนน ) 1.วเคราะหวตถสเหลยมลกบาศกเมตร

2. ผลการวเคราะหวตถมาก าหนดเปนคลาส ชอคลำส สเหลยมลกบำศกเมตร Cube Data member ความกวาง

ความยาว ความสง

double widht double length double height

Function member ก าหนดความกวาง ก าหนดความยาว ก าหนดความสง เรยกดความกวาง เรยกดความยาว เรยกดความสง ค านวณหาพนท

void setWidht(double); vod setLength(double); void setHeight(double); double getWidht(); double getLength(); double getHeight(); double calArea(double,double,double );

164

3. แผนภาพยเอมแอลคลาส

Cube

-width : double

+setWidth(double) : void

-height : double

+Cube(double,double,double)

+Cube()

+calArea(double,double,double) : double

-length : double

+setLegth(double) : void

+getLength( ) : double

+setHeight(double) : void

+getWidth( ) : double

+getHeight( ) : double

+~Cube() 4. สรางเฮดเดอรไฟล Cube.h

1 //Cube.h

2 #ifndef CUBE_H_INCLUDED

3 #define CUBE_H_INCLUDED

4 class Cube{

5 private:

6 double widht;

7 double length;

8 double height;

9 public:

10 Cube();

11 Cube(double,double,double);

12 void setWidht(double);

13 void setLength(double);

14 void setHeight(double);

15 double getWidht();

16 double getLength();

17 double getHeight();

18 double calArea(double,double,double);

19 ~Cube();

20 };

21 #endif // CUBE_H_INCLUDED

165

4. ท าการอมพลเมนตเตชนไฟล Cube.h 1 //Cube.cpp

2 #include"Cube.h"

3 #include<iostream>

4 using namespace std;

5 Cube::Cube(){widht=0.00;length=0.00;height=0.00; cout<<"

Create Object\n";}

6 Cube::Cube(double w,double l,double h){widht = w, length = l, height = h;

cout<<"Create Object\n";}

7 void Cube::setWidht(double w){ widht = w;}

8 void Cube::setLength(double l){ length = l;}

9 void Cube::setHeight(double h){ height = h;}

10 double Cube::getWidht(){return widht;}

11 double Cube::getLength(){return length;}

12 double Cube::getHeight(){return height;}

13 Cube::~Cube(){cout<<"Destroy Object";}

14 double Cube::calArea(double w,double l,double h){return w * l * h;}

5. ท าการทดสอบการท างาน TestCube.cpp

1 //TestCube.cpp

2 #include <iostream>

3 #include"Cube.h"

4 using namespace std;

5 int main( ){

6 Cube c(4.00,5.00,6.00);

7 cout<<"Cube area = ";

8 cout<<c.calArea(c.getWidht(),c.getLength(),c.getHeight())<<endl;

9 return 0;

10 }

6. ผลลพธการท างานของโปรแกรม

Create Object

Cube area = 120

Destroy Object

166

2. ใหนกศกษาเขยนโปรแกรมบวกเลข สามารถท าการบวกเลขจ านวนเตม จ านวนจรง และขอความ โดยถาบวกขอความจะเปนการน าขอความมาตอกน และน ามาแสดงผลทางจอภาพ ( 50 คะแนน )

1 #include<iostream>

2 using namespace std;

3 class Opp{

4 private:

5 double number1 = 10.00;

6 int number2 = 10;

7 string str = "ABC";

8 public:

9 double operator+ (double n1){ return number1+=n1; }

10 int operator+ (int n1){ return number2+= n1; }

11 string operator+ (string s){ return str+=s; }

12 };

13 int main( ){

14 Opp p1;

15 cout<<"p1 + 10.59 = "<<p1+10.59<<endl;

16 cout<<"p1 + 10 = "<<p1+10<<endl;

17 cout<<"p1 + 'XYZ' = "<<p1+"XYZ"<<endl;

18 return 0;

19 }

ผลลพธกำรท ำงำนของโปรแกรม

p1 + 10.59 = 20.59

p1 + 10 = 20

p1 + XYZ = ABCXYZ

167

ใบแบบทดสอบหลงเรยน บทท 9 เรอง โอเวอรโหลดดง

ค ำชแจง 1. ใหนกศกษาเลอก กากบาท X ลงในกระดาษค าตอบทแจกใหโดยเลอกขอทถกทสดเพยงขอเดยว 2. ตอบถกไดคะแนนขอละ 1 คะแนน ตอบผดได 0 คะแนน 3. แบบทดสอบมทงหมด 10 ขอ ---------------------------------------------------------------------------------------------------------------------- 1. มการก าหนดชอเหมอนกบคลาส สามารถมไดหลายตว แตตองมพารามเตอร แตกตางกน และมการก าหนดคาเรมตนใหกบวตถ จากค ากลาวนมความหมายสอดคลองกบขอใด ก. โอเวอรโหลดดงโอเปอเรเตอร ข. โอเวอรโหลดดงคลาส ค. โอเวอรโหลดดงคอนสตรคเตอร ง. โอเวอรโหลดดงดสตรคเตอร

2. มไวส าหรบการท าลายว ตถทสนสดการท างานแลว เพอคนพนทหนวยความจ าใหกบระบบปฏบตการ จากค ากลาวนสอดคลองกบขอใด ก. โอเวอรโหลดดงโอเปอเรเตอร ข. โอเวอรโหลดดงคลาส ค. โอเวอรโหลดดงคอนสตรคเตอร ง. โอเวอรโหลดดงดสตรคเตอร

3. มการก าหนดส าหรบการท างานรวมกบวตถโดยตรง เชน วตถ c1 สามารถมการก าหนดใหท างานเปน c1=2 ได จากการท างานดงกลาวตรงกบขอใด ก. โอเวอรโหลดดงโอเปอเรเตอร ข. โอเวอรโหลดดงคลาส ค. โอเวอรโหลดดงคอนสตรคเตอร ง. โอเวอรโหลดดงดสตรคเตอร

4. มการก าหนดใหคลาสชอวา Person และจากคลาสดงกลาวมการสรางโอเวอรโหลดดงคอนสตรคเตอรขอใดถกตองมากทสด ก. person( ) ข. ~Person(double); ค. Person(int,double); ง. ~Person( )

168

5. มการก าหนดใหคลาสชอวา Person และจากคลาสดงกลาวมการสรางโอเวอรโหลดดงดสตรคเตอรขอใดถกตองมากทสด ก. Person( ) ข. ~Person(double); ค. Person(int,double); ง. ~Person( )

จากโปรแกรมดงกลาวตอบค าถามขอ 6 - 10 1 //Cal.h

2 class Cal{

3 private:

4 int number1;

5 public:

6 Cal();

7 Cal(int);

8 ~Cal();

9 void operator=(int);

10 void operator+(int);

11 void operator*=(int);

12 int operator++(int);

13 };

14 Cal::Cal(){ number1=10;}

15 Cal::Cal(int n1){ number1 = n1;}

16 Cal::~Cal(){ }

17 void Cal::setNumber1(int n){number1 = n}

18 int Cal::getNumber1(){return number1;}

19 void Cal::operator=(int n){number1 = n;}

20 void Cal::operator*=(int n){ number1*=n;}

21 void Cal::operator+(int n){ number1 = number1 + n;}

22 int Cal::operator ++(int ){ return number1++;}

169

1 //TestCal.cpp

2 #include “Cal.h”

3 int main( ) {

4 Cal c1

5 Cal c2(20);

6 c1=50;

7 c1+10;

8 c2++;

9 return 0;

10 }

6. เมอโปรแกรมท างาน บรรทดท 4 ของไฟล TestCal.cpp ดาตาเมมเบอร number1 จะมคาตรงกบขอใด ก. 0 ข. 10 ค. 20 ง. 50

7. เมอโปรแกรมท างาน บรรทดท 5 ของไฟล TestCal.cpp ดาตาเมมเบอร number1 จะมคาตรงกบขอใด ก. 0 ข. 10 ค. 20 ง. 50

8. เมอโปรแกรมท างาน บรรทดท 6 ของไฟล TestCal.cpp ดาตาเมมเบอร number1 จะมคาตรงกบขอใด ก. 10 ข. 20 ค. 50 ง. 60

170

9. เมอโปรแกรมท างาน บรรทดท 7 ของไฟล TestCal.cpp ดาตาเมมเบอร number1 จะมคาตรงกบขอใด ก. 10 ข. 20 ค. 50 ง. 60

10. เมอโปรแกรมท างาน บรรทดท 8 ของไฟล TestCal.cpp ดาตาเมมเบอร number1 จะมคาตรงกบขอใด ก. 11 ข. 20 ค. 21 ง. 61

171

เฉลยแบบทดสอบหลงเรยน บทท 9 เรอง โอเวอรโหลดดง

ขอท เฉลย

1 ค 2 ง 3 ก 4 ค 5 ง 6 ข 7 ค 8 ค 9 ง

10 ค

172

173

บทท 10 เรอง กำรสบทอดคณสมบต

174

แบบทดสอบกอนเรยน บทท 10 เรอง กำรสบทอดคณสมบต

ค ำชแจง 1. ใหนกศกษาเลอก กากบาท X ลงในกระดาษค าตอบทแจกใหโดยเลอกขอทถกทสดเพยงขอเดยว 2. ตอบถกไดคะแนนขอละ 1 คะแนน ตอบผดได 0 คะแนน 3. แบบทดสอบมทงหมด 10 ขอ ---------------------------------------------------------------------------------------------------------------------- 1. ขอใดกลาวถงการสบทอดคณสมบตไดถกตองทสด

ก. เปนการสบทอดคณสมบตจากคลาสแมไปยงคลาสลกเฉพาะดาตาเมมเบอรเทานน ข. เปนการสบทอดคณสมบตจากคลาสแมไปยงคลาสลกเฉพาะเมมเบอรฟงกชนเทานน ค. เปนการสบทอดคณสมบตจากคลาสแมไปยงคลาสลกทงดาตาเมมเบอรและเมมเบอร

ฟงกชน ง. เปนการสบทอดคณสมบตจากคลาสแมไปยงคลาสลกทงดาตาเมมเบอรและเมมเบอร

ฟงกชน ยกเวนระดบการเขาถงในคลาสแมเปนแบบ private 2. ขอใดตอไปน มใช ชนดของการสบทอดคณสมบต

ก. private ข. protect ค. public ง. protected

3. ระดบการเขาถงใดเมอมการสบทอดคณสมบตชนด public แลวจะไมถกปรบเปลยนระดบการเขาถง ก. private, protected ข. private, protect ค. private, protected, public ง. protected, public

4. ระดบการเขาถงใดเมอมการสบทอดคณสมบตชนด protected แลวจะถกปรบเปลยนระดบการเขาถง ก. private ข. private, protect ค. private, public ง. public

175

5. ขอใดตอไปนกลาวถกตองเกยวกบคอนสตรคเตอรเมอมการสบทอดคณสมบต ก. คอนสตรคเตอรของคลาสแมจะท างานกอนคอนสตรคเตอรของคลาสลก ข. คอนสตรคเตอรของคลาสลกจะท างานกอนคอนสตรคเตอรของคลาสแม ค. คอนสตรคเตอรของคลาสลกจ าเปนจะตองรบพารามเตอรเหมอนคอนสตรคเตอรของคลาส

แม ง. คอนสตรคเตอรของคลาสลกสามารถมไดหลายตว

จากโปรแกรมดงกลาวตอบค าถามขอ 6 - 8

1 #include<iostream>

2 using namespace std;

3 class A{

4 public:

5 A(){cout<<"A ";}

6 A(int a){cout<<a;}

7 ~A(){cout<<"~A ";}

8 };

9 class B : public A{

10 public :

11 B():A(3){cout<<"B ";}

12 ~B(){cout<<"~B ";}

13 };

14 int main( ){

15 B b;

16 return 0;

17 }

6. จากโปรแกรมดงกลาวเมอท างานจะมผลลพธสอดคลองกบขอใด

ก. 3B ~B ~A ข. A B ~B ~A ค. B A ~B ~A ง. B 3 ~B ~A

176

7. จากโปรแกรมดงกลาวในบรรทดท 9 ปรบเปลยนการสบทอดคณสมบตชนด public เปน private จะมผลลพธสอดคลองกบขอใด ก. โปรแกรมคอมไพลไมผาน ข. 3B ~B ~A ค. B ~B ง. A ~A

8. จากโปรแกรมดงกลาวในบรรทดท 9 ปรบเปลยนการสบทอดคณสมบตชนด public เปน protected จะมผลลพธสอดคลองกบขอใด ก. โปรแกรมคอมไพลไมผาน ข. 3B ~B ~A ค. B ~B ง. A ~A

9. จากโปรแกรมดงกลาวเมอท าการคอมเมนตบรรทดท 7 และ 12 แลว เมอท าการรนโปรแกรมจะมผลลพธสอดคลองกบขอใด ก. A ข. B ค. 3A ง. 3B

10. เมอมการสรางวตถขนภายในโปรแกรม เมอมการท างานเสรจวตถเหลานนจะถกท าลายเพอคนพนทหนวยความจ าใหกบระบบ ซงการท าลายวตถจะเปนหนาทของอะไร ก. คอนสตรคเตอร ข. ดสตรคเตอร ค. วตถ ง. คลาส

177

เฉลยแบบทดสอบกอนเรยน บทท 10 เรอง กำรสบทอดคณสมบต

ขอท เฉลย

1 ค 2 ข 3 ก 4 ง 5 ก 6 ก 7 ข 8 ข 9 ง

10 ข

178

ใบแบบฝกหด บทท 10 เรอง กำรสบทอดคณสมบต

ค ำชแจง 1. แบบฝกหดมทงหมด 2 ขอใหท าทกขอ 2. คะแนนรวมทงหมด 25 คะแนน ---------------------------------------------------------------------------------------------------------------------- 1. ใหนกศกษาบอกลกษณะการสบทอดคณสมบตจากคลาสแมไปยงคลาสลกมลกษณะอยางไร ( 25 คะแนน ) 2. ใหนกศกษาบอกชนดการสบทอดคณสมบตวามกชนด อะไรบาง พรอมอธบาย ( 25 คะแนน )

179

ใบเฉลยแบบฝกหด บทท 10 เรอง กำรสบทอดคณสมบต

ค ำชแจง 1. แบบฝกหดมทงหมด 2 ขอใหท าทกขอ 2. คะแนนรวมทงหมด 50 คะแนน ---------------------------------------------------------------------------------------------------------------------- 1. ใหนกศกษาบอกลกษณะการสบทอดคณสมบตจากคลาสแมไปยงคลาสลกมลกษณะอยางไร ( 25 คะแนน ) ตอบ คอการสรางคลาสขนมาใหมโดยมการอางองถงคลาสทมอยแลวโดยคลาสทสรางขนมาใหมเรยกวา คลาสลก และคลาสทมอยแลวทมการอางองถงเรยกวา คลาสแม ส าหรบคลาสลกนนจะมการสบทอดคณสมบตจากคลาสแมแตทงนขนอยกบชนดการสบทอดวาเปนชนดใดดวย

2. ใหนกศกษาบอกชนดการสบทอดคณสมบตวามกชนด อะไรบาง พรอมอธบาย ( 25 คะแนน ) ตอบ ชนดของการสบทอดคณสมบต เปนการสบทอดคณสมบตจากคลาสแมมายงคลาสลก โดยสามารถก าหนดได 3 ชนด คอ การสบทอดคณสมบตแบบไพรเวท ( private ) การสบทอดคณสมบตแบบโปรเทคเตด ( protected ) และการสบทอดคณสมบตแบบ พบลค ( public ) 1. การสบทอดคณสมบตแบบไพรเวท ( private ) ดาตาเมมเบอรและเมมเบอรฟงกชนในคลาสแมทเปน protected และ public จะถกปรบเปลยนเปน private ในคลาสสบทอด สวน private จะยงคงเหมอนเดม 2. การสบทอดคณสมบตแบบโปรเทคเตด ( protected ) ดาตาเมมเบอรและเมมเบอรฟงกชนในคลาสแมทเปน public จะถกปรบเปลยนเปน protected ในคลาสสบทอด สวน private และ protected จะยงคงเหมอนเดม 3. การสบทอดคณสมบตแบบพบลค ( public ) ดาตาเมมเบอรและเมมเบอรฟงกชนในคลาสแมทเปน private , protected และ public เมอสบทอดมายงคลาสสบทอดยงคงเหมอนเดม

180

ใบงำน บทท 10 เรอง กำรสบทอดคณสมบต

ค ำชแจง 1. ใบงานมทงหมด 1 ขอ 2. คะแนนรวมทงหมด 150 คะแนน ---------------------------------------------------------------------------------------------------------------------- 1. จากโปรแกรมดงกลาวเมอท าการคอมไพลโปรแกรมใหนกศกษาอธบายผลลพธทเกดขน ( 150คะแนน ) 1.1 การสบทอดคณสมบตจากคลาสแมไปยงคลาสลกชนด private

1 //Lab10_1.cpp

2 #include<iostream>

3 using namespace std;

4 class X{

5 int x,y;

6 public:

7 A(int x,int y){ this->a = x; this->b=y;}

8 int getXY(){ return x + y;}

9 };

10 class Y : private X{

11 public :

12 Y(int a, int b) : X(a,b){ }

13 };

14 int main( ){

15 Y y(2,3);

16 cout<<y.getXY();

17 return 0;

18 }

181

1.2 การสบทอดคณสมบตจากคลาสแมไปยงคลาสลกชนด protected 1 //Lab10_2.cpp

2 #include<iostream>

3 using namespace std;

4 class X{

5 int x,y;

6 public:

7 A(int x,int y){ this->a = x; this->b=y;}

8 int getXY(){ return x + y;}

9 };

10 class Y : protected X{

11 public :

12 Y(int a, int b) : X(a,b){ }

13 };

14 int main( ){

15 Y y(2,3);

16 cout<<y.getXY();

17 return 0;

18 }

1.3 การสบทอดคณสมบตจากคลาสแมไปยงคลาสลกชนด public 1 //Lab10_3.cpp

2 #include<iostream>

3 using namespace std;

4 class X{

5 int x,y;

6 public:

7 A(int x,int y){ this->a = x; this->b=y;}

8 int getXY(){ return x + y;}

9 };

10 class Y : public X{

11 public :

12 Y(int a, int b) : X(a,b){ }

13 };

14 int main( ){

15 Y y(2,3);

16 cout<<y.getXY();

17 return 0;

18 }

182

เฉลยใบงำน บทท 10 เรอง กำรสบทอดคณสมบต

ค ำชแจง 1. แบบฝกหดมทงหมด 1 ขอ 2. คะแนนรวมทงหมด 150 คะแนน ---------------------------------------------------------------------------------------------------------------------- 1. จากโปรแกรมดงกลาวเมอท าการคอมไพลโปรแกรมใหนกศกษาอธบายผลลพธทเกดขน ( 150คะแนน ) 1.1 การสบทอดคณสมบตจากคลาสแมไปยงคลาสลกชนด private

1 //Lab10_1.cpp

2 #include<iostream>

3 using namespace std;

4 class X{

5 int x,y;

6 public:

7 A(int x,int y){ this->a = x; this->b=y;}

8 int getXY(){ return x + y;}

9 };

10 class Y : private X{

11 public :

12 Y(int a, int b) : X(a,b){ }

13 };

14 int main( ){

15 Y y(2,3);

16 cout<<y.getXY();

17 return 0;

18 }

ตอบ วตถ y ทสรางขนมาจากคลาส Y ในบรรทดท 15 จะไมสามารถมองเหนและเขาถงเมธอด y.getXY( ); เนองจากเมธอด getXY(); เมออยทคลาส X จะมระดบการเขาถงเปน public แตเมอคลาส Y สบทอดมาเปนชนด private ท าใหเมธอด getXY(); ถกปรบเปลยนการเขาถงเปน private สงผลการการเรยกใชงานจากภายนอกคลาส Y ไมสามารถเขาถงเมธอด getXY() ดงกลาวได

183

1.2 การสบทอดคณสมบตจากคลาสแมไปยงคลาสลกชนด protected 1 //Lab10_2.cpp

2 #include<iostream>

3 using namespace std;

4 class X{

5 int x,y;

6 public:

7 A(int x,int y){ this->a = x; this->b=y;}

8 int getXY(){ return x + y;}

9 };

10 class Y : protected X{

11 public :

12 Y(int a, int b) : X(a,b){ }

13 };

14 int main( ){

15 Y y(2,3);

16 cout<<y.getXY();

17 return 0;

18 }

ตอบ วตถ y ทสรางขนมาจากคลาส Y ในบรรทดท 15 จะไมสามารถมองเหนและเขาถงเมธอด y.getXY( ); เนองจากเมธอด getXY(); เมออยทคลาส X จะมระดบการเขาถงเปน public แตเมอคลาส Y สบทอดมาเปนชนด protected ท าใหเมธอด getXY(); ถกปรบเปลยนการเขาถงเปน protected สงผลการการเรยกใชงานจากภายนอกคลาส Y ไมสามารถเขาถงเมธอด getXY() ดงกลาวได

184

1.3 การสบทอดคณสมบตจากคลาสแมไปยงคลาสลกชนด public 1 //Lab10_3.cpp

2 #include<iostream>

3 using namespace std;

4 class X{

5 int x,y;

6 public:

7 A(int x,int y){ this->a = x; this->b=y;}

8 int getXY(){ return x + y;}

9 };

10 class Y : public X{

11 public :

12 Y(int a, int b) : X(a,b){ }

13 };

14 int main( ){

15 Y y(2,3);

16 cout<<y.getXY();

17 return 0;

18 }

ตอบ วตถ y ทสรางขนมาจากคลาส Y ในบรรทดท 15 จะสามารถมองเหนและเขาถงเมธอด y.getXY( ); เนองจากเมธอด getXY(); เมออยทคลาส X จะมระดบการเขาถงเปน public แตเมอคลาส Y สบทอดมาเปนชนด public กยงคงสามารถเขาถงแบบ public ไดสงผลการการเรยกใชงานจากภายนอกคลาส Y สามารถเขาถงได

185

แบบทดสอบหลงเรยน บทท 10 เรอง กำรสบทอดคณสมบต

ค ำชแจง 1. ใหนกศกษาเลอก กากบาท X ลงในกระดาษค าตอบทแจกใหโดยเลอกขอทถกทสดเพยงขอเดยว 2. ตอบถกไดคะแนนขอละ 1 คะแนน ตอบผดได 0 คะแนน 3. แบบทดสอบมทงหมด 10 ขอ ---------------------------------------------------------------------------------------------------------------------- 1. ขอใดกลาวถงการสบทอดคณสมบตไดถกตองทสด

ก. เปนการสบทอดคณสมบตจากคลาสแมไปยงคลาสลกเฉพาะดาตาเมมเบอรเทานน ข. เปนการสบทอดคณสมบตจากคลาสแมไปยงคลาสลกเฉพาะเมมเบอรฟงกชนเทานน ค. เปนการสบทอดคณสมบตจากคลาสแมไปยงคลาสลกทงดาตาเมมเบอรและเมมเบอร

ฟงกชน ง. เปนการสบทอดคณสมบตจากคลาสแมไปยงคลาสลกทงดาตาเมมเบอรและเมมเบอร

ฟงกชน ยกเวนระดบการเขาถงในคลาสแมเปนแบบ private 2. ขอใดตอไปน มใช ชนดของการสบทอดคณสมบต

ก. private ข. protect ค. public ง. protected

3. ระดบการเขาถงใดเมอมการสบทอดคณสมบตชนด public แลวจะไมถกปรบเปลยนระดบการเขาถง ก. private, protected ข. private, protect ค. private, protected, public ง. protected, public

4. ระดบการเขาถงใดเมอมการสบทอดคณสมบตชนด protected แลวจะถกปรบเปลยนระดบการเขาถง ก. private ข. private, protect ค. private, public ง. public

186

5. ขอใดตอไปนกลาวถกตองเกยวกบคอนสตรคเตอรเมอมการสบทอดคณสมบต ก. คอนสตรคเตอรของคลาสแมจะท างานกอนคอนสตรคเตอรของคลาสลก ข. คอนสตรคเตอรของคลาสลกจะท างานกอนคอนสตรคเตอรของคลาสแม ค. คอนสตรคเตอรของคลาสลกจ าเปนตองรบพารามเตอรเหมอนคอนสตรคเตอรคลาสแม ง. คอนสตรคเตอรของคลาสลกสามารถมไดหลายตว

จากโปรแกรมดงกลาวตอบค าถามขอ 6 - 8

1 #include<iostream>

2 using namespace std;

3 class A{

4 public:

5 A(){cout<<"A ";}

6 A(int a){cout<<a;}

7 ~A(){cout<<"~A ";}

8 };

9 class B : public A{

10 public :

11 B():A(3){cout<<"B ";}

12 ~B(){cout<<"~B ";}

13 };

14 int main( ){

15 B b;

16 return 0;

17 }

6. จากโปรแกรมดงกลาวเมอท างานจะมผลลพธสอดคลองกบขอใด

ก. 3B ~B ~A ข. A B ~B ~A ค. B A ~B ~A ง. B 3 ~B ~A

187

7. จากโปรแกรมดงกลาวในบรรทดท 9 ปรบเปลยนการสบทอดคณสมบตชนด public เปน private จะมผลลพธสอดคลองกบขอใด ก. โปรแกรมคอมไพลไมผาน ข. 3B ~B ~A ค. B ~B ง. A ~A

8. จากโปรแกรมดงกลาวในบรรทดท 9 ปรบเปลยนการสบทอดคณสมบตชนด public เปน protected จะมผลลพธสอดคลองกบขอใด ก. โปรแกรมคอมไพลไมผาน ข. 3B ~B ~A ค. B ~B ง. A ~A

9. จากโปรแกรมดงกลาวเมอท าการคอมเมนตบรรทดท 7 และ 12 แลว เมอท าการรนโปรแกรมจะมผลลพธสอดคลองกบขอใด ก. A ข. B ค. 3A ง. 3B

10. เมอมการสรางวตถขนภายในโปรแกรม เมอมการท างานเสรจวตถเหลานนจะถกท าลายเพอคนพนทหนวยความจ าใหกบระบบ ซงการท าลายวตถจะเปนหนาทของอะไร ก. คอนสตรคเตอร ข. ดสตรคเตอร ค. วตถ ง. คลาส

188

เฉลยแบบทดสอบหลงเรยน บทท 10 เรอง กำรสบทอดคณสมบต

ขอท เฉลย

1 ค 2 ข 3 ก 4 ง 5 ก 6 ก 7 ข 8 ข

9 ง 10 ข

189

บทท 11 เรอง โพลมอรฟซม

190

แบบทดสอบกอนเรยน บทท 11 เรอง โพลมอรฟซม

ค ำชแจง 1. ใหนกศกษาเลอก กากบาท X ลงในกระดาษค าตอบทแจกใหโดยเลอกขอทถกทสดเพยงขอเดยว 2. ตอบถกไดคะแนนขอละ 1 คะแนน ตอบผดได 0 คะแนน 3. แบบทดสอบมทงหมด 10 ขอ ---------------------------------------------------------------------------------------------------------------------- 1. ขอใดมความหมายตรงกบค าวา โอเวอรโหลดดง ถกตองทสด

ก. การสบทอดคณสมบตจากคลาสแมมายงคลาสลก ข. ชอเมมเบอรฟงกชนของคลาสลกตรงกบชอเมมเบอรฟงกชนของคลาสแม ค. ชอเมมเบอรฟงกชนภายในคลาสเหมอนกนแตมการรบพารามเตอรตางกน ง. ชอเมมเบอรฟงกชนเหมอนกบชอของคลาส

2. ขอใดมความหมายตรงกบค าวา โอเวอรไรด ถกตองทสด ก. การสบทอดคณสมบตจากคลาสแมมายงคลาสลก ข. ชอเมมเบอรฟงกชนของคลาสลกตรงกบชอเมมเบอรฟงกชนของคลาสแม ค. ชอเมมเบอรฟงกชนภายในคลาสเหมอนกนแตมการรบพารามเตอรไมเหมอนกน ง. ชอเมมเบอรฟงกชนเหมอนกบชอของคลาส

3. โพลมอรฟซม คอ เมมเบอรฟงกชนเดยวแตสามารถท างานไดหลายรปแบบ ซงประกอบดวยอะไรบาง ขอใดตอไปนถกตองมากทสด ก. โอเวอรโหลดดง โอเวอรไรด สแตตกไบดดง ไดนามคสไบดดง ข. โอเวอรโหลดดง โอเวอรไรด เวอรชวลฟงกชน ไดนามคสไบดดง ค. โอเวอรโหลดดง โอเวอรไรด ไบดดง ง. โอเวอรโหลดดง โอเวอรไรด เวอรชวลฟงกชน ไบดดง

4. การท างานในลกษณะ พอยนเตอรของคลาสแมมความสามารถในการไบดการท างานไปยงคลาสลกได และแสดงผลขอมลของคลาสลกไดอยางถกตอง การท างานเชนนเรยกวาอะไร ก. ไดนามคสไบดดง ข. สแตตกไบดดง ค. ไบดดง ง. เวอรชวลฟงกชน

191

จากโปรแกรมดานลางตอไปนตอบค าถามขอท 5 – 10 1 #include <iostream>

2 using namespace std;

3 class A{

4 public :

5 A(){}

6 void output(){cout<<"Class A\n";}

7 };

8 class B : public A{

9 public:

10 B(){}

11 void output(){cout<<"Class B\n";}

12 };

13 class C : public A{

14 public:

15 C(){}

16 void output(){cout<<"Class C\n";}

17 };

18 int main( ){

19 A* ptra;

20 B b;

21 C c;

22 ptra = &b;

23 ptra->output();

24 ptra = &c;

25 ptra->output();

26 return 0;

27 }

5. จากโปรแกรมดงกลาวเมอรนโปรแกรม บรรทดท 23 จะแสดงผลลพธทางจอภาพตรงกบค าตอบ

ขอใด ก. Class A ข. Class B ค. Class C ง. Class A\n

192

6. จากโปรแกรมดงกลาวเมอรนโปรแกรม บรรทดท 25 จะแสดงผลลพธทางจอภาพตรงกบค าตอบขอใด ก. Class A\n ข. Class B ค. Class C ง. Class A

7. จากโปรแกรมดงกลาวเพมค าวา virtual หนาค าสงในบรรทดท 6 เมอรนโปรแกรม บรรทดท 23 จะแสดงผลลพธทางจอภาพตรงกบค าตอบขอใด ก. Class A ข. Class B ค. Class C ง. Class A\n

8. จากโปรแกรมดงกลาวเพมค าวา virtual หนาค าสงในบรรทดท 6 เมอรนโปรแกรม บรรทดท 25 จะแสดงผลลพธทางจอภาพตรงกบค าตอบขอใด ก. Class A ข. Class B ค. Class C ง. Class A\n

9. จากโปรแกรมดงกลาวเพมค าวา virtual หนาค าสงในบรรทดท 6 และเตมเครองหมาย คอมเมนตในบรรทดท 24 เมอรนโปรแกรม บรรทดท 25 จะแสดงผลลพธทางจอภาพตรงกบค าตอบขอใด ก. Class A ข. Class B ค. Class C ง. Class A\n

10. จากโปรแกรมดงกลาวเตมเครองหมาย คอมเมนตในบรรทดท 24 เมอรนโปรแกรม บรรทดท 25 จะแสดงผลลพธทางจอภาพตรงกบค าตอบขอใด ก. Class A ข. Class B ค. Class C ง. Class A\n

193

เฉลยแบบทดสอบกอนเรยน บทท 11 เรอง โพลมอรฟซม

ขอท เฉลย

1 ค 2 ข 3 ง 4 ก 5 ก 6 ง 7 ข 8 ค 9 ข

10 ก

194

ใบแบบฝกหดท 11 บทท 11 เรอง โพลมอรฟซม

ค ำชแจง 1. แบบฝกหดมทงหมด 5 ขอ คะแนนเตม 50 คะแนน 2. ใหนกศกษาท าหมดทกขอ --------------------------------------------------------------------------------------------------------------------- 1. ใหนกศกษาบอกความหมายของลกษณะการท างานแบบ โพลมอรฟซม ( 10 คะแนน ) 2. ใหนกศกษาบอกความหมายของ โอเวอรโหลดดง ( 10 คะแนน ) 3. ใหนกศกษาบอกความหมายของ โอเวอรไรด ( 10 คะแนน ) 4. ใหนกศกษาบอกความหมายของ ไบดสแตตค ( 10 คะแนน ) 5. ใหนกศกษาบอกความหมายของ ไบดไดนามคส ( 10 คะแนน )

195

ใบเฉลยแบบฝกหดท 11 บทท 11 เรอง โพลมอรฟซม

ค ำชแจง 1. แบบฝกหดทงหมดม 5 ขอ คะแนนเตม 50 คะแนน 2. ใหนกศกษาท าหมดทกขอ --------------------------------------------------------------------------------------------------------------------- 1. ใหนกศกษาบอกความหมายของลกษณะการท างานแบบ โพลมอรฟซม ( 10 คะแนน ) ตอบ โพลมอรฟซม คอ สมาชกฟงกชนตวเดยวสามารถมไดหลายรปแบบของการท างานประกอบ ดวยโอเวอรโหลดดง โอเวอรไรด เวอรชวลฟงกชน และการไบดดง 2. ใหนกศกษาบอกความหมายของ โอเวอรโหลดดง ( 10 คะแนน ) ตอบ ภายในคลาสเดยวกนสามารถสราง เมมเบอรฟงกชน ทชอเหมอนกนไดแตจะตองมการรบพารามเตอรไมเหมอนกน เรยกวา ฟงกชนโอเวอรโหลดดง 3. ใหนกศกษาบอกความหมายของ โอเวอรไรด ( 10 คะแนน ) ตอบ การสบทอดคณสมบตจากคลาสแมมายงคลาสลก สามารถมชอฟงกชนเหมอนกนไดแตมรายละเอยดภายในฟงกชนไมเหมอนกน หรอมการรบพารามเตอรไมเหมอนกน เรยกวา การโอเวอรไรดดง

4. ใหนกศกษาบอกความหมายของ ไบดสแตตค ( 10 คะแนน ) ตอบ เปนการสบทอดคณสมบตจากคลาสแมมายงคลาสลก จะมการผกของโปรแกรมขณะก าลงคอมไพล เมอโปรแกรมท างานการผกจะยงคงเหมอนเดมถงแมวาจะมการชไปยงวตถลกอน ๆ แลวกตาม 5. ใหนกศกษาบอกความหมายของ ไบดไดนามคส ( 10 คะแนน ) ตอบ เปนการสบทอดคณสมบตคลาสแมมายงคลาสลกมการผกขณะโปรแกรมก าลงท างาน สงผลการใหการชไปยงวตถลกอน ๆ ถกตองและเปนปจจบน

196

ใบงำน บทท 11 เรอง โพลมอรฟซม

ค ำชแจง 1. ใบงานมทงหมด 1 ขอ คะแนนเตม 50 คะแนน --------------------------------------------------------------------------------------------------------------------- 1. จากแผนภาพคลาสตอไปนเปนคลาสยานพาหนะ (vehicles) ซงเปนคลาสแม และประกอบดวยคลาสลกจ านวน2 คลาสคอ คลาสรถยนต (Car) และคลาสรถจกรยานยนต (CarBike) มเมมเบอรฟงกชนท างานในลกษณะโพลมอรฟซม คอ การเรงความเรว (accelerate)โดยรถยนตเรงความเรวดวยการเหยยบคนเรง (tread) แต รถจกรยานยนตเรงความเรวโดยการ บดคดเรง (twist) จากแผนภาพดงกลาวใหเขยนโปรแกรมภาษา C++ ( 50 คะแนน ) 1.1 แผนภาพภาษายเอมแอล

197

Vehicles

-brand : string

+virtual accelerate() : void

Car CarBike

+CarBike(string,string)

-volumn : double

+Vehicles(string,string)

+break : void

+virtual accelerate() : void+Vechicles(string,string)

+virtual accelerate() : void

-color : string-models : string

+setBrand(string) : void

+stop : void

+setModels(string) : void

+setVolumn(double) : void+setColor(string) : void

+getModels() : string

+getBrand() : string+getVolumn() : string+getColor() : string

+start : void

198

1.2 การสรางเฮดเดอรไฟลชอ Vehicle.h 1 //Vehicles.h

2 #ifndef VEHICLES_H_INCLUDED

3 #define VEHICLES_H_INCLUDED

4 #include<iostream>

5 using namespace std;

6 class Vehicles{

7 protected:

8 string brand;

9 string volumn;

10 string color;

11 string models;

12 public:

13 Vehicles(string,string);

14 void virtual accelerate();

15 void setBrand(string);

16 void setVolumn(string);

17 void setColor(string);

18 void setModels(string);

19 string getBrand();

20 string getVolumn();

21 string getColor();

22 string getModels();

23 void breaks();

24 void start();

25 void stop();

26 };

27 #endif // VEHICLES_H_INCLUDED

199

1.3 สรางอมพลเมนตเตชนไฟลชอ Vehicles.cpp 1 //Vehicles.cpp

2 #include"Vehicles.h"

3 using namespace std;

4 Vehicles::Vehicles(string b,string m){

5 brand = b;

6 models = m;

7 cout<<"Brand : "<<getBrand()<<endl;

8 cout<<"Models : "<<getModels()<<endl;

9 }

10 void Vehicles::accelerate(){

11 cout<<"accelerate by vehicles\n";

12 }

13 void Vehicles::setBrand(string b){ brand = b;}

14 void Vehicles::setVolumn(string v) { volumn = v;}

15 void Vehicles::setColor(string c){color = c;}

16 void Vehicles::setModels(string m){models = m;}

17 string Vehicles::getBrand(){return brand;}

18 string Vehicles::getVolumn(){return volumn;}

19 string Vehicles::getColor(){return color;}

20 string Vehicles::getModels(){return models;}

21 void Vehicles::start(){ cout<<"Start\n";}

22 void Vehicles::stop(){ cout<<"Stop\n";}

23 void Vehicles::breaks(){ cout<<"Break\n";}

1.4 สรางเฮดเดอรไฟลคลาสลกชอ Car.h ซงสบทอดคณสมบตจากคลาส Vehicles.h

1 //Car.h

2 #ifndef CAR_H_INCLUDED

3 #define CAR_H_INCLUDED

4 #include"Vehicles.h"

5 using namespace std;

6 class Car : public Vehicles{

7 public:

8 Car(string,string);

9 void virtual accelerate();

10 };

11 #endif // CAR_H_INCLUDED

200

1.5 สรางอมพลเมนตเตชนไฟลชอ Car.cpp 1 //Car.cpp

2 #include"Car.h"

3 using namespace std;

4 Car::Car(string b,string m):Vehicles(b,m){

5 }

6 void Car::accelerate(){

7 cout<<"tread\n";

8 }

1.6 สรางเฮดเดอรไฟลคลาสลกชอ CarBike.h ซงสบทอดคณสมบตจากคลาส Vehicles.h

1 //CarBike.h

2 #ifndef CARBIKE_H_INCLUDED

3 #define CARBIKE_H_INCLUDED

4 #include"Vehicles.h"

5 class CarBike : public Vehicles{

6 public:

7 CarBike(string,string);

8 void virtual accelerate();

9 };

10 #endif // CARBIKE_H_INCLUDED

1.7 สรางอมพลเมนตเตชนไฟลชอ CarBike.cpp

1 //CarBike.cpp

2 #include"CarBike.h"

3 using namespace std;

4 CarBike::CarBike(string b,string m):Vehicles(b,m){

5 }

6 void CarBike::accelerate(){

7 cout<<"twist\n";

8 }

201

1.8 สรางไฟลทดสอบการท างานชอ TestVehiclesDynamics.cpp 1 //TestVehicleDynamics.cpp

2 #include"Car.h"

3 #include"CarBike.h"

4 int main( ){

5 Vehicles* p;

6 Car c("Toyota","Vios");

7 p = &c;

8 p->accelerate();

9 CarBike cb("Yamaha","F80");

10 p = &cb;

11 p->accelerate();

12 return 0;

13 }

1.9 ผลลพธการท างานของโปรแกรม

202

เฉลยใบงำน บทท 11 เรอง โพลมอรฟซม

ค ำชแจง 1. ใบงานมทงหมด 1 ขอ คะแนนเตม 50 คะแนน 2. ใหนกศกษาท าหมดทกขอ --------------------------------------------------------------------------------------------------------------------- 1. จากแผนภาพคลาสตอไปนเปนคลาสยานพาหนะ (vehicles) ซงเปนคลาสแม และประกอบดวยคลาสลกจ านวน2 คลาสคอ คลาสรถยนต (Car) และคลาสรถจกรยานยนต (CarBike) มเมมเบอรฟงกชนท างานในลกษณะโพลมอรฟซม คอ การเรงความเรว (accelerate)โดยรถยนตเรงความเรวดวยการเหยยบคนเรง (tread) แต รถจกรยานยนตเรงความเรวโดยการ บดคดเรง (twist) จากแผนภาพดงกลาวใหเขยนโปรแกรมภาษา C++ ( 50 คะแนน )

203

1.1 แผนภาพภาษายเอมแอล

Vehicles

-brand : string

+virtual accelerate() : void

Car CarBike

+CarBike(string,string)

-volumn : double

+Vehicles(string,string)

+break : void

+virtual accelerate() : void+Vechicles(string,string)

+virtual accelerate() : void

-color : string-models : string

+setBrand(string) : void

+stop : void

+setModels(string) : void

+setVolumn(double) : void+setColor(string) : void

+getModels() : string

+getBrand() : string+getVolumn() : string+getColor() : string

+start : void

204

1.2 การสรางเฮดเดอรไฟลชอ Vehicle.h 1 //Vehicles.h

2 #ifndef VEHICLES_H_INCLUDED

3 #define VEHICLES_H_INCLUDED

4 #include<iostream>

5 using namespace std;

6 class Vehicles{

7 protected:

8 string brand;

9 string volumn;

10 string color;

11 string models;

12 public:

13 Vehicles(string,string);

14 void virtual accelerate();

15 void setBrand(string);

16 void setVolumn(string);

17 void setColor(string);

18 void setModels(string);

19 string getBrand();

20 string getVolumn();

21 string getColor();

22 string getModels();

23 void breaks();

24 void start();

25 void stop();

26 };

27 #endif // VEHICLES_H_INCLUDED

205

1.3 สรางอมพลเมนตเตชนไฟลชอ Vehicles.cpp 1 //Vehicles.cpp

2 #include"Vehicles.h"

3 using namespace std;

4 Vehicles::Vehicles(string b,string m){

5 brand = b;

6 models = m;

7 cout<<"Brand : "<<getBrand()<<endl;

8 cout<<"Models : "<<getModels()<<endl;

9 }

10 void Vehicles::accelerate(){

11 cout<<"accelerate by vehicles\n";

12 }

13 void Vehicles::setBrand(string b){ brand = b;}

14 void Vehicles::setVolumn(string v) { volumn = v;}

15 void Vehicles::setColor(string c){color = c;}

16 void Vehicles::setModels(string m){models = m;}

17 string Vehicles::getBrand(){return brand;}

18 string Vehicles::getVolumn(){return volumn;}

19 string Vehicles::getColor(){return color;}

20 string Vehicles::getModels(){return models;}

21 void Vehicles::start(){ cout<<"Start\n";}

22 void Vehicles::stop(){ cout<<"Stop\n";}

23 void Vehicles::breaks(){ cout<<"Break\n";}

1.4 สรางเฮดเดอรไฟลคลาสลกชอ Car.h ซงสบทอดคณสมบตจากคลาส Vehicles.h

1 //Car.h

2 #ifndef CAR_H_INCLUDED

3 #define CAR_H_INCLUDED

4 #include"Vehicles.h"

5 using namespace std;

6 class Car : public Vehicles{

7 public:

8 Car(string,string);

9 void virtual accelerate();

10 };

11 #endif // CAR_H_INCLUDED

206

1.5 สรางอมพลเมนตเตชนไฟลชอ Car.cpp 1 //Car.cpp

2 #include"Car.h"

3 using namespace std;

4 Car::Car(string b,string m):Vehicles(b,m){

5 }

6 void Car::accelerate(){

7 cout<<"tread\n";

8 }

1.6 สรางเฮดเดอรไฟลคลาสลกชอ CarBike.h ซงสบทอดคณสมบตจากคลาส Vehicles.h

1 //CarBike.h

2 #ifndef CARBIKE_H_INCLUDED

3 #define CARBIKE_H_INCLUDED

4 #include"Vehicles.h"

5 class CarBike : public Vehicles{

6 public:

7 CarBike(string,string);

8 void virtual accelerate();

9 };

10 #endif // CARBIKE_H_INCLUDED

1.7 สรางอมพลเมนตเตชนไฟลชอ CarBike.cpp

1 //CarBike.cpp

2 #include"CarBike.h"

3 using namespace std;

4 CarBike::CarBike(string b,string m):Vehicles(b,m){

5 }

6 void CarBike::accelerate(){

7 cout<<"twist\n";

8 }

207

1.8 สรางไฟลทดสอบการท างานชอ TestVehiclesDynamics.cpp 1 //TestVehicleDynamics.cpp

2 #include"Car.h"

3 #include"CarBike.h"

4 int main( ){

5 Vehicles* p;

6 Car c("Toyota","Vios");

7 p = &c;

8 p->accelerate();

9 CarBike cb("Yamaha","F80");

10 p = &cb;

11 p->accelerate();

12 return 0;

13 }

1.9 ผลลพธการท างานของโปรแกรม

Brand : Toyota

Model : Vios

tread

Brad : Yamaha

Model : F80

twist

208

แบบทดสอบหลงเรยน บทท 11 เรอง โพลมอรฟซม

ค ำชแจง 1. ใหนกศกษาเลอก กากบาท X ลงในกระดาษค าตอบทแจกใหโดยเลอกขอทถกทสดเพยงขอเดยว 2. ตอบถกไดคะแนนขอละ 1 คะแนน ตอบผดได 0 คะแนน 3. แบบทดสอบมทงหมด 10 ขอ ---------------------------------------------------------------------------------------------------------------------- 1. ขอใดมความหมายตรงกบค าวา โอเวอรไรด ถกตองทสด

ก. การสบทอดคณสมบตจากคลาสแมมายงคลาสลก ข. ชอเมมเบอรฟงกชนของคลาสลกตรงกบชอเมมเบอรฟงกชนของคลาสแม ค. ชอเมมเบอรฟงกชนภายในคลาสเหมอนกนแตมการรบพารามเตอรไมเหมอนกน ง. ชอเมมเบอรฟงกชนเหมอนกบชอของคลาส

2. ขอใดมความหมายตรงกบค าวา โอเวอรโหลดดง ถกตองทสด ก. การสบทอดคณสมบตจากคลาสแมมายงคลาสลก ข. ชอเมมเบอรฟงกชนของคลาสลกตรงกบชอเมมเบอรฟงกชนของคลาสแม ค. ชอเมมเบอรฟงกชนภายในคลาสเหมอนกนแตมการรบพารามเตอรตางกน ง. ชอเมมเบอรฟงกชนเหมอนกบชอของคลาส

3. โพลมอรฟซม คอ เมมเบอรฟงกชนเดยวแตสามารถท างานไดหลายรปแบบ ซงประกอบดวยอะไรบาง ขอใดตอไปนถกตองมากทสด ก. โอเวอรโหลดดง โอเวอรไรด สแตตกไบดดง ไดนามคสไบดดง ข. โอเวอรโหลดดง โอเวอรไรด เวอรชวลฟงกชน ไดนามคสไบดดง ค. โอเวอรโหลดดง โอเวอรไรด ไบดดง ง. โอเวอรโหลดดง โอเวอรไรด เวอรชวลฟงกชน ไบดดง

4. การท างานในลกษณะ พอยนเตอรของคลาสแมมความสามารถในการไบดการท างานไปยงคลาสลกได และแสดงผลขอมลของคลาสลกไดอยางถกตอง การท างานเชนนเรยกวาอะไร ก. ไดนามคสไบดดง ข. สแตตกไบดดง ค. ไบดดง ง. เวอรชวลฟงกชน

209

จากโปรแกรมดานลางตอไปนตอบค าถามขอท 5 – 10 1 #include <iostream>

2 using namespace std;

3 class A{

4 public :

5 A(){}

6 void output(){cout<<"Class A\n";}

7 };

8 class B : public A{

9 public:

10 B(){}

11 void output(){cout<<"Class B\n";}

12 };

13 class C : public A{

14 public:

15 C(){}

16 void output(){cout<<"Class C\n";}

17 };

18 int main( ){

19 A a;

20 B b;

21 C c;

22 a.out();

23 b.out();

24 c.out();

25 return 0;

26 }

5. จากโปรแกรมดงกลาวเมอรนโปรแกรม บรรทดท 22 จะแสดงผลลพธทางจอภาพตรงกบค าตอบ

ขอใด ก. Class A ข. Class B ค. Class C ง. Class A\n

6. จากโปรแกรมดงกลาวเมอรนโปรแกรม บรรทดท 23 จะแสดงผลลพธทางจอภาพตรงกบค าตอบขอใด ก. Class A ข. Class B ค. Class C ง. Class A\n

210

7. จากโปรแกรมดงกลาวเมอรนโปรแกรม บรรทดท 24 จะแสดงผลลพธทางจอภาพตรงกบค าตอบขอใด ก. Class A\n ข. Class B ค. Class C ง. Class A

8. จากโปรแกรมดงกลาวเพมค าวา virtual หนาค าสงในบรรทดท 6 เมอรนโปรแกรม บรรทดท 22 จะแสดงผลลพธทางจอภาพตรงกบค าตอบขอใด ก. Class A ข. Class B ค. Class C ง. Class A\n

9. จากโปรแกรมดงกลาวเพมค าวา virtual หนาค าสงในบรรทดท 6 เมอรนโปรแกรม บรรทดท 23 จะแสดงผลลพธทางจอภาพตรงกบค าตอบขอใด ก. Class A ข. Class B ค. Class C ง. Class A\n

10. จากโปรแกรมดงกลาวเพมค าวา virtual หนาค าสงในบรรทดท 6 เมอรนโปรแกรม บรรทดท 24 จะแสดงผลลพธทางจอภาพตรงกบค าตอบขอใด ก. Class A ข. Class B ค. Class C ง. Class A\n

211

เฉลยแบบทดสอบหลงเรยน บทท 11 เรอง โพลมอรฟซม

ขอท เฉลย

1 ข 2 ค 3 ง 4 ก 5 ก 6 ข 7 ค 8 ก 9 ข

10 ค

212

213

บทท 12 เรอง เทมเพลต

214

แบบทดสอบกอนเรยน บทท 12 เรอง เทมเพลต

ค ำชแจง 1. ใหนกศกษาเลอก กากบาท X ลงในกระดาษค าตอบทแจกใหโดยเลอกขอทถกทสดเพยงขอเดยว 2. ตอบถกไดคะแนนขอละ 1 คะแนน ตอบผดได 0 คะแนน 3. แบบทดสอบมทงหมด 10 ขอ ---------------------------------------------------------------------------------------------------------------------- 1. ขอความตอไปน กลาวถงเทมเพลตฟงกชน ในขอใดไมถกตอง

ก. เทมเพลตฟงกชนเปนการก าหนดรปแบบชนดขอมลโดยทวไปไมเฉพาะเจาะจง ข. เทมเพลตฟงกชนสามารถรองรบการท างานของชนดขอมลทแตกตางกนได ค. ในการใชงานเทมเพลตฟงกชนคอมไพลเลอรจะท าการสรางฟงกชนทใชงานกบชนดขอมล

ของอารกวเมนตใหอตโนมต ง. ภายในเทมเพลตฟงกชนสามารถรองรบลอจกการท างานทแตกตางกนได

2. ขอใดคอการก าหนดเทมเพลตฟงกชนทไมถกตอง ก. Template < typename T, typename X > ข. template < typename Y > ค. template < class T> ง. template < typename T, typename X >

3. ขอความตอไปน กลาวถงเทมเพลตคลาส ในขอใดไมถกตอง ก. ขนตอนการสรางเทมเพลตคลาสจะมขนตอนแตกตางจากการสรางคลาสปกต ข. เมอมการสรางวตถจากเทมเพลตคลาสจะตองระบชนดขอมลดวย ค. การอมพลเมนตเตชนเทมเพลตคลาสจะไมสามารถแยกไฟลในการอมพลเมนตเตชนได ง. รองรบการสรางวตถจากเทมเพลตคลาสทมชนดขอมลแตกตางกนได

4. มชอเทมเพลตฟงกชนเหมอนกนแตมพารามเตอรแตกตางกน คอลกษณะของอะไร ก. เทมเพลตฟงกชน ข. เทมเพลตฟงกชนเฉพาะ ค. โอเวอรโหลดดงเทมเพลตฟงกชน ง. โอเวอรไรดฟงกชน

215

จากโปรแกรมตอไปนตอบค าถามขอ 5 -7 1 #include<iostream>

2 template<typename ____1____>

3 void print(T t){std::cout<<t<<std::endl;}

4 template<typename T>

5 T __2__(T t1,T t2){return t1+t2;}

6 int main( ){

7 print(5);

8 std::cout<<add(4,9);

9 return 0;

10 }

5. จากโปรแกรมดงกลาวชองหมายเลข 1 จะตองเตมค าใดตอไปน

ก. t ข. T ค. print ง. add

6. จากโปรแกรมดงกลาวชองหมายเลข 2 จะตองเตมค าใดตอไปน ก. add ข. print ค. T ง. Template

7. จากโปรแกรมดงกลาวเมอท างานแลวไดผลลพธตรงกบขอใด ก. 5 ข. 5 9 ค. 13 5 ง. 5 13

216

จากโปรแกรมดงกลาวตอบค าถามขอ 8 - 10 1 #include<iostream>

2 template <class T,class __1___>

3 class Avg{

4 private:

5 T number1;

6 Q number2;

7 public:

8 Avg<T,Q>(T __2__,Q t2){number1 = t1; number2 = t2;}

9 Q cal(){return (number1 + number2)/2;}

10 };

11 int main( ){

12 Avg<int,double> a(2,3);

13 std::cout<<a.cal();

14 return 0;

15 }

8. จากโปรแกรมดงกลาวชองหมายเลข 1 จะตองเตมค าใดตอไปน

ก. T ข. Q ค. X ง. Z

9. จากโปรแกรมดงกลาวชองหมายเลข 2 จะตองเตมค าใดตอไปน ก. t1 ข. t2 ค. number1 ง. number2

10. จากโปรแกรมดงกลาวเมอท างานแลวไดผลลพธตรงกบขอใด ก. 1 ข. 2.00 ค. 2.50 ง. 2.5

217

เฉลยแบบทดสอบกอนเรยน บทท 12 เรอง เทมเพลต

ขอท เฉลย

1 ง 2 ก 3 ค 4 ค 5 ข 6 ก 7 ง 8 ข 9 ก

10 ง

218

ใบแบบฝกหด บทท 12 เรอง เทมเพลต

ค ำชแจง 1. แบบฝกหดมทงหมด 3 ขอ คะแนนเตม 100 คะแนน 2. ใหนกศกษาท าหมดทกขอ --------------------------------------------------------------------------------------------------------------------- 1. ใหนกศกษาบอกลกษณะการท างานของเทมเพลต ( 20 คะแนน ) 2. ใหนกศกษาบอกลกษณะการท างานของเทมเพลตฟงกชน ( 40 คะแนน ) 3. ใหนกศกษาบอกลกษณะการท างานของเทมเพลตคลาส ( 40 คะแนน )

219

ใบเฉลยแบบฝกหด บทท 12 เรอง เทมเพลต

ค ำชแจง 1. แบบฝกหดมทงหมด 3 ขอ คะแนนเตม 100 คะแนน 2. ใหนกศกษาท าหมดทกขอ --------------------------------------------------------------------------------------------------------------------- 1. ใหนกศกษาบอกลกษณะการท างานของเทมเพลต ( 20 คะแนน ) ตอบ เทมเพลต เปนการน ากลบมาใชอกรปแบบหนง ซงมการก าหนดไวแลวลวงหนา ไมใชเปนฟงกชนหรอคลาส โดยมชดการท างานเพยงชดเดยว แตสามาถน ามาใชงานแทนฟงกชนหรอหลายคลาส โดยมการใชชนดขอมลตางกน และเมอมการคอมไพลโปรแกรม คอมไพลเลอรจะท าการสรางฟงกชน หรอคลาส พรอมกบชนดขอมลทมการเรยกใช 2. ใหนกศกษาบอกลกษณะการท างานของเทมเพลตฟงกชน ( 40 คะแนน ) ตอบ คอ การสรางตนแบบของฟงกชนทตองการใชงานสามารถรองรบการท างานของขอมลตางชนดโดยการสรางตนแบบฟงกชนเพยงครงเดยว การก าหนดเทมเพลตฟงกชนจะเรมตนดวยคยเวรด template และตามดวยสญลกษณ < รายชอพารามเตอรชนดขอมลตาง ๆ ทก าหนดและปดดวยสญลกษณ > แตละพารามเตอรขอมลจะขนตนดวยคยเวรด class หรอ typename โดยพารามเตอรนจะเปนชนดขอมลเบองตน หรอชนดขอมลทผเขยนก าหนดเอง เทมเพลตฟงกชนสามารถท าการโอเวอรโหลดและสรางเปนเทมเพลตฟงกชนเฉพาะได โดยรปแบบของเทมเพลตฟงกชนมดงน template < typename T >

T function_name( T variable1, T variable2 ) {

return data type T;

}

3. ใหนกศกษาบอกลกษณะการท างานของเทมเพลตคลาส ( 40 คะแนน ) ตอบ คอ การสรางตนแบบของคลาสทตองการใชงานสามารถรองรบการท างานของขอมลตางชนดกน โดยการสรางตนแบบคลาสเพยงครงเดยว พารามเตอรชนดขอมล T จะมคยเวรด class หรอ typename น าหนา โดยอกษร T นนเปนตวรบอารกวเมนตเขามา ซงจะเปนชอชนดขอมลทสงมา และเมอมการเรยกใชงานเทมเพลตคลาส พารามเตอรชนดขอมล T ทก าหนดไวยงต าแหนงตาง ๆ ภายในคลาส จะมการถกแทนทดวยชนดขอมลทสงเขามา ดงนนในการสรางเทมเพลตคลาสจะมขนตอนเหมอนกบการสรางคลาสปกตทกอยาง แตจะไมมการระบชนด ชนดขอมลจะถกระบบททมการเรยกใชงานเทานน ส าหรบการอมพลเมนตเมมเบอรฟงกชนของเทมเพลตคลาสจะตองมการ

220

ระบ template < class T > กอน จากนนจะเปนการระบชอคลาส classname < T >:: classname( ) { } โดยมรปแบบตอไปน

template < class T>

class className{

private :

T data member;

protected:

T data member;

public:

T data member;

T member function

};

template < T >

className < T > :: member function

221

ใบงำน บทท 12 เรอง เทมเพลต

ค ำชแจง 1. ใบงานมทงหมด 2 ขอ คะแนนเตม 50 คะแนน 2. ใหนกศกษาท าหมดทกขอ --------------------------------------------------------------------------------------------------------------------- 1. ใหนกศกษาสรางเทมเพลตฟงกชนของการค านวณหาคาเฉลยของเลข 4 จ านวน พรอมทงเขยนโปรแกรมแสดงการท างานดวย (15 คะแนน)

1 #include<iostream>

2 using namespace std;

3 template <typename T>

4 T avg(___,___,___,___);

5 int main( ){

6 int t1,t2,t3,t4;

7 double d1,d2,d3,d4;

8 cout<<"Enter number :";cin>>___>>___>>___>>___;

9 _______<<"Average = "<<avg(t1,t2,t3,t4)<<endl;

10 cout<<"Enter number :";cin>>d1>>d2>>d3>>d4;

11 cout<<"Average = "<<_____________<<endl;

12 return 0;

13 }

14 template <__________>

15 T avg(T t1,T t2,T t3,T t4){return (t1+t2+t3+t4)/_____;}

16

ผลลพธกำรท ำงำนของโปรแกรม

222

2. ใหนกศกษาสรางเทมเพลตคลาสของการค านวณหาผลบวก ลบ คณ หาร โดยมการสรางเฮดเดอรไฟลแยกจากอมพลเมนตเตชนไฟล และไฟลในการทดสอบการท างาน (35 คะแนน) 2.1 สรางเฮดเดอรไฟลชอ Lab4.h

1 //Lab4.h

2 #ifndef LAB4_H_INCLUDED

3 #define LAB4_H_INCLUDED

4 template <class T>

5 class Cal{

6 private:

7 T number1, number2;

8 public:

9 Cal(T,T);

10 void setNumber1(T);

11 void setNumber2(T);

12 T getNumber1();

13 T getNumber2();

14 T add(T,T);

15 T sub(T,T);

16 T mul(T,T);

17 T div(T,T);

18 };

19 #include"Lab4.cpp"

20 #endif // LAB4_H_INCLUDED

223

2.2 อมพลเมนตเตชนไฟลชอ Lab4.cpp 1 //Lab4.cpp

2 #ifdef LAB4_H_INCLUDED

3 template <class T>

4 Cal<T>::Cal(T n1,T n2){number1 = n1; number2 = n2;}

5 template <class T>

6 void Cal<T>::setNumber1(T n1){number1 = n1;}

7 template <class T>

8 void Cal<T>::setNumber2(T n2){number2 = n2;}

9 template <class T>

10 T Cal<T>::getNumber1(){return number1;}

11 template <class T>

12 T Cal<T>::getNumber2(){return number2;}

13 template <class T>

14 T Cal<T>::add(T n1,T n2){return n1+n2;}

15 template <class T>

16 T Cal<T>::sub(T n1,T n2){return n1-n2;}

17 template <class T>

18 T Cal<T>::mul(T n1,T n2){return n1*n2;}

19 template <class T>

20 T Cal<T>::div(T n1,T n2){return n1/n2;}

21 #endif LAB4_H_INCLUDED

2.3 ทดสอบการท างานไฟลชอ TestLab4.cpp

224

1 //TestLab4.cpp

2 #include<iostream>

3 #include"Lab4.h"

4 using namespace std;

5 int main( ){

6 Cal<double> c(3.5,5.6);

7 c.setNumber1(20.5);

8 c.setNumber2(10.5);

9 cout<<c.getNumber1()<<" + "<<c.getNumber2()<<" = ";

10 cout<<c.add(c.getNumber1(),c.getNumber2())<<endl;

11 cout<<c.getNumber1()<<" - "<<c.getNumber2()<<" = ";

12 cout<<c.sub(c.getNumber1(),c.getNumber2())<<endl;

13 cout<<c.getNumber1()<<" * "<<c.getNumber2()<<" = ";

14 cout<<c.mul(c.getNumber1(),c.getNumber2())<<endl;

15 cout<<c.getNumber1()<<" / "<<c.getNumber2()<<" = ";

16 cout<<c.div(c.getNumber1(),c.getNumber2())<<endl;

17 return 0;

18 }

ผลลพธการท างานของโปรแกรม

225

เฉลยใบงำน บทท 12 เรอง เทมเพลต

ค ำชแจง 1. ใบงานมทงหมด 2 ขอ คะแนนเตม 50 คะแนน 2. ใหนกศกษาท าหมดทกขอ --------------------------------------------------------------------------------------------------------------------- 1. ใหนกศกษาสรางเทมเพลตฟงกชนของการค านวณหาคาเฉลยของเลข 4 จ านวน พรอมทงเขยนโปรแกรมแสดงการท างานดวย ( 15 คะแนน )

1 #include<iostream>

2 using namespace std;

3 template <typename T>

4 T avg(T,T,T,T);

5 int main( ){

6 int t1,t2,t3,t4;

7 double d1,d2,d3,d4;

8 cout<<"Enter number :";cin>>t1>>t2>>t3>>t4;

9 cout<<"Average = "<<avg(t1,t2,t3,t4)<<endl;

10 cout<<"Enter number :";cin>>d1>>d2>>d3>>d4;

11 cout<<"Average = "<<avg(d1,d2,d3,d4)<<endl;

12 return 0;

13 }

14 template <typename T>

15 T avg(T t1,T t2,T t3,T t4){return (t1+t2+t3+t4)/4;}

ผลลพธการท างานของโปรแกรม

Enter number : 2 3 4 5

Average = 3

Enter number : 3.5 4.6 9.9 8.9

Average = 6.725

226

2. ใหนกศกษาสรางเทมเพลตคลาสของการค านวณหาผลบวก ลบ คณ หาร โดยมการสรางเฮดเดอรไฟลแยกจากอมพลเมนตเตชนไฟล และไฟลในการทดสอบการท างาน ( 35 คะแนน ) 2.1 สรางเฮดเดอรไฟลชอ Lab4.h

1 //Lab4.h

2 #ifndef LAB4_H_INCLUDED

3 #define LAB4_H_INCLUDED

4 template <class T>

5 class Cal{

6 private:

7 T number1, number2;

8 public:

9 Cal(T,T);

10 void setNumber1(T);

11 void setNumber2(T);

12 T getNumber1();

13 T getNumber2();

14 T add(T,T);

15 T sub(T,T);

16 T mul(T,T);

17 T div(T,T);

18 };

19 #include"Lab4.cpp"

20 #endif // LAB4_H_INCLUDED

227

2.2 อมพลเมนตเตชนไฟลชอ Lab4.cpp 1 //Lab4.cpp

2 #ifdef LAB4_H_INCLUDED

3 template <class T>

4 Cal<T>::Cal(T n1,T n2){number1 = n1; number2 = n2;}

5 template <class T>

6 void Cal<T>::setNumber1(T n1){number1 = n1;}

7 template <class T>

8 void Cal<T>::setNumber2(T n2){number2 = n2;}

9 template <class T>

10 T Cal<T>::getNumber1(){return number1;}

11 template <class T>

12 T Cal<T>::getNumber2(){return number2;}

13 template <class T>

14 T Cal<T>::add(T n1,T n2){return n1+n2;}

15 template <class T>

16 T Cal<T>::sub(T n1,T n2){return n1-n2;}

17 template <class T>

18 T Cal<T>::mul(T n1,T n2){return n1*n2;}

19 template <class T>

20 T Cal<T>::div(T n1,T n2){return n1/n2;}

21 #endif LAB4_H_INCLUDED

ผลลพธการท างานของโปรแกรม 20.5 + 10.5 = 31

20.5 – 10.5 = 10

20.5 * 10.5 = 215.25

20.5 / 10.5 = 1.95238

228

แบบทดสอบหลงเรยน บทท 12 เรอง เทมเพลต

ค ำชแจง 1. ใหนกศกษาเลอก กากบาท X ลงในกระดาษค าตอบทแจกใหโดยเลอกขอทถกทสดเพยงขอเดยว 2. ตอบถกไดคะแนนขอละ 1 คะแนน ตอบผดได 0 คะแนน 3. แบบทดสอบมทงหมด 10 ขอ ---------------------------------------------------------------------------------------------------------------------- 1. ขอใดคอการก าหนดเทมเพลตฟงกชนทไมถกตอง

ก. Template < typename T, typename X > ข. template < typename Y > ค. template < class T> ง. template < typename T, typename X >

2. ขอความตอไปน กลาวถงเทมเพลตฟงกชน ในขอใดไมถกตอง ก. เทมเพลตฟงกชนเปนการก าหนดรปแบบชนดขอมลโดยทวไปไมเฉพาะเจาะจง ข. เทมเพลตฟงกชนสามารถรองรบการท างานของชนดขอมลทแตกตางกนได ค. ในการใชงานเทมเพลตฟงกชนคอมไพลเลอรจะท าการสรางฟงกชนทใชงานกบชนดขอมล

ของอารกวเมนตใหอตโนมต ง. ภายในเทมเพลตฟงกชนสามารถรองรบลอจกการท างานทแตกตางกนได

3. มชอเทมเพลตฟงกชนเหมอนกนแตมพารามเตอรแตกตางกน คอลกษณะของอะไร ก. เทมเพลตฟงกชน ข. เทมเพลตฟงกชนเฉพาะ ค. โอเวอรโหลดดงเทมเพลตฟงกชน ง. โอเวอรไรดฟงกชน

4. ขอความตอไปน กลาวถงเทมเพลตคลาส ในขอใดไมถกตอง ก. ขนตอนการสรางเทมเพลตคลาสจะมขนตอนแตกตางจากการสรางคลาสปกต ข. เมอมการสรางวตถจากเทมเพลตคลาสจะตองระบชนดขอมลดวย ค. การอมพลเมนตเตชนเทมเพลตคลาสจะไมสามารถแยกไฟลในการอมพลเมนตเตชนได ง. รองรบการสรางวตถจากเทมเพลตคลาสทมชนดขอมลแตกตางกนได

229

จากโปรแกรมตอไปนตอบค าถามขอ 5 -7 #include<iostream>

template<typename T>

void print(T __1__){std::cout<<t<<std::endl;}

template<typename T>

__2__ add(T t1,T t2){return t1+t2;}

int main( ){

print(5);

std::cout<<add(2,2);

return 0;

}

5. จากโปรแกรมดงกลาวชองหมายเลข 1 จะตองเตมค าใดตอไปน

ก. t ข. T ค. print ง. add

6. จากโปรแกรมดงกลาวชองหมายเลข 2 จะตองเตมค าใดตอไปน ก. add ข. print ค. T ง. Template

7. จากโปรแกรมดงกลาวเมอท างานแลวไดผลลพธตรงกบขอใด ก. 5 ข. 5 4 ค. 4 5 ง. 5 4

230

จากโปรแกรมดงกลาวตอบค าถามขอ 8 - 10 1 #include<iostream>

2 template <class T,class __1___>

3 class Avg{

4 private:

5 T number1;

6 Q number2;

7 public:

8 Avg<T,Q>(T __2__,Q t2){number1 = t1; number2 = t2;}

9 Q cal(){return (number1 + number2)/2;}

10 };

11 int main( ){

12 Avg<int,double> a(2,3);

13 std::cout<<a.cal();

14 return 0;

15 }

8. จากโปรแกรมดงกลาวชองหมายเลข 1 จะตองเตมค าใดตอไปน

ก. T ข. Q ค. X ง. Z

9. จากโปรแกรมดงกลาวชองหมายเลข 2 จะตองเตมค าใดตอไปน ก. t1 ข. t2 ค. number1 ง. number2

10. จากโปรแกรมดงกลาวเมอท างานแลวไดผลลพธตรงกบขอใด ก. 1 ข. 2.00 ค. 2.50 ง. 2.5

231

เฉลยแบบทดสอบหลงเรยน บทท 12 เรอง เทมเพลต

ขอท เฉลย

1 ก 2 ง 3 ค 4 ค 5 ก 6 ค 7 ง 8 ข 9 ก

10 ง

232

233

บทท 13 เรอง เอกเซพชน

234

แบบทดสอบกอนเรยน บทท 13 เรอง เอกเซพชน

ค ำชแจง 1. ใหนกศกษาเลอก กากบาท X ลงในกระดาษค าตอบทแจกใหโดยเลอกขอทถกทสดเพยงขอเดยว 2. ตอบถกไดคะแนนขอละ 1 คะแนน ตอบผดได 0 คะแนน 3. แบบทดสอบมทงหมด 10 ขอ ---------------------------------------------------------------------------------------------------------------------- 1. ขอผดพลาดของโปรแกรมคอมพวเตอรแบงออกไดเปนกประเภท

ก. 2 ประเภท ข. 3 ประเภท ค. 4 ประเภท ง. 5 ประเภท

2. ค าสงภาษา C++ ในการรบขอมลจากผใช cin<<number1 เกบไวในตวแปร number1 เปนความผดพลาดตรงกบขอใด ก. ขอผดพลาดทางไวยากรณของภาษา ข. ล าดบขนตอนการตความผดพลาด ค. ความผดพลาดขณะโปรแกรมท างาน ง. ความผดพลาดขณะคอมไพลโปรแกรม

3. จากนพจนตอไปน x = 10/0 เปนความผดพลาดตรงกบขอใด ก. ขอผดพลาดทางไวยากรณของภาษา ข. ล าดบขนตอนการตความผดพลาด ค. ความผดพลาดขณะโปรแกรมท างาน ง. ความผดพลาดขณะคอมไพลโปรแกรม

4. ความผดพลาดในขอใดทท าการคนหาและแกไขไดยากทสด ก. ขอผดพลาดทางไวยากรณของภาษา ข. ล าดบขนตอนการความผดพลาด ค. ความผดพลาดขณะโปรแกรมท างาน ง. ความผดพลาดขณะคอมไพลโปรแกรม

235

5. ขอใดคอค าสงในการดกจบการท างานทผดพลาดของโปรแกรมภาษา C++ ก. try ข. throw ค. catch ง. throw..catch

จากโปรแกรมตอไปนตอบค าถามขอท 6 - 7 1 #include<iostream>

2 using namespace std;

3 int main( ){

4 int number1,number2,sum;

5 cout<<"Enter number1,number2 :";

6 cin>>number1>>number2;

7 _____1______

8 if(number2 == 0)

9 throw "Division by zero";

10 sum = number1 / number2;

11 cout<<sum<<endl;

12 }

13 catch(______2_______){

14 cerr << "ERROR CODE: " << e;

15 }

16 return 0;

17 }

6. จากโปรแกรมดงกลาวบรรทดท 7 หมายเลข 1 เตมคาใดท าใหการท างานของโปรแกรมสมบรณ ก. { try ข. catch( ) ค. throw ง. try {

7. จากโปรแกรมดงกลาวบรรทดท 13 หมายเลข 2 เตมคาใดท าใหการท างานของโปรแกรมสมบรณ ก. char ข. const char e ค. const char* e ง. char* e

236

จากโปรแกรมตอไปนตอบค าถามขอท 8 - 9 1 #include <iostream>

2 #include <stdexcept>

3 #include <vector>

4 using namespace std;

5 int main () {

6 vector<int> v(30);

7 try {

8 v.at(___1___)=10;

9 }

10 catch (out_of_range& _____2_____) {

11 cerr << "Out of Range error: " << outOfRange.what();

12 }

13 return 0;

14 }

8. จากโปรแกรมดงกลาวในบรรทดท 8 หมายเลข 1 จะตองเตมโคดอะไรทท าใหมการโยนขอผดพลาดออกมา ก. 10 ข. 15 ค. 20 ง. 40

9. จากโปรแกรมดงกลาวในบรรทดท 10 หมายเลข 2 จะตองเตมโคดอะไรทท าใหโปรแกรมรบขอผดพลาดท างานไดอยางสมบรณ ก. OutOfRange ข. Out_of_range ค. Out_of_range& ง. int

10. การเขยนโปรแกรมภาษา C++ โดยเราตองการน าคลาสมาตรฐานในการดกจบขอผดพลาดในการท างานมาใชในการดกจบ การจองพนทหนวยความจ า ขอใดถกตอง ก. std::bad_alloc ข. std::runtime_error ค. std::out_of_range ง. std::length_error

237

เฉลยแบบทดสอบกอนเรยน บทท 13 เรอง เอกเซพชน

ขอท เฉลย

1 ข 2 ก 3 ค 4 ข 5 ก 6 ง 7 ค 8 ง 9 ก

10 ก

238

ใบแบบฝกหด บทท 13 เรอง เอกเซพชน

ค ำชแจง 1. แบบฝกหดมทงหมด 4 ขอ คะแนนเตม 50 คะแนน 2. ใหนกศกษาท าหมดทกขอ --------------------------------------------------------------------------------------------------------------------- 1. ใหนกศกษาบอกประเภทของขอผดพลาดของโปรแกรมคอมพวเตอรมอะไรบาง ( 10 คะแนน ) 2. บอกรปแบบการจดการขอผดพลาดดวย try…throw…catch ( 10 คะแนน ) 3. บอกรปแบบการใชค าสง catch มากกวาหนงตว ( 15 คะแนน ) 4. บอกคลาสมาตรฐานของการดกจบขอผดพลาดคออะไร ประกอบดวยอะไรบาง ( 15 คะแนน )

239

ใบเฉลยแบบฝกหด บทท 13 เรอง เอกเซพชน

ค ำชแจง 1. แบบฝกหดมทงหมด 4 ขอ คะแนนเตม 50 คะแนน 2. ใหนกศกษาท าหมดทกขอ --------------------------------------------------------------------------------------------------------------------- 1. ใหนกศกษาบอกประเภทของขอผดพลาดของโปรแกรมคอมพวเตอรมอะไรบาง ( 10 คะแนน ) ตอบ ประเภทของขอผดพลาด คอ เปนความผดพลาดของโปรแกรมคอมพวเตอรแบงออกเปน 3 ชนด คอ ขอผดพลาดทางไวยากรณของภาษา (Syntax error) 2. ขอผดพลาดจากการตความหมายผดพลาด(Logical error ) และ 3. ขอผดพลาดขณะโปรแกรมก าลงท างาน (Run-time error) 2. บอกรปแบบการจดการขอผดพลาดดวย try…throw…catch ( 10 คะแนน ) ตอบ การจดการขอผดพลาดดวย try...throw…catch เปนการใชงานค าสง try ตรวจสอบการท างานทผดพลาดของโปรแกรม เมอพบการท างานทผดพลาด กจะโยนความผดพลาดนนออกมาดวยค าสง throw จากนนใชค าสง catch ในการรบขอผดพลาดนนมา โดยมรปแบบค าสงตอไปน

try{

…………

throw statements;

}catch(exception& e){

………….

}

3. บอกรปแบบการใชค าสง catch มากกวาหนงตว ( 15 คะแนน ) ตอบ การใชค าสง catch มากกวาหนงตว เปนการการใชงานค าสงรบขอผดพลาดไดหลายกรณขนอยกบวา การโยนขอผดพลาดนนตรงกบเงอนไขของค าสง catch ไหน แลวค าสง catch ทรบความผดพลาดนนมาจะรบไปด าเนนการตอไป มรปแบบดงตอไปน

240

try {

statements;

throw statement;

statements;

throw statement;

}catch(datatype identifier ){

statements;

}catch(datatype identifier ) {

statements;

}

4. บอกคลาสมาตรฐานของการดกจบขอผดพลาดคออะไร ประกอบดวยอะไรบาง ( 15 คะแนน ) ตอบ คลาสมาตรฐานของการดกจบขอผดพลาด เปนการจดการขอผดพลาดทเกดขนโดยใชค าสงจากคลาสมาตรฐานของภาษา C++ ซงจะมคลาสแมชอวา std::exception และมคลาสลกทสบทอดม า ป ร ะ ก อ บ ด ว ย ค อ bad_alloc, bad_cast, bad_typeid, bad_exception, logic_failure แ ล ะ runtime_error ส วนคลาส logic_failure จะ มคลาสลก คอ domain_error, invalid_argument, length_error และ out_of_range ส วนคลาส runtime_error ประกอบดว ยคล าส ลก ค อ overflow_error, range_error และ underflow_error

241

ใบงำน บทท 13 เรอง เอกเซพชน

ค ำชแจง 1. ใบงานมทงหมด 3 ขอ คะแนนเตม 50 คะแนน 2. ใหนกศกษาท าหมดทกขอ --------------------------------------------------------------------------------------------------------------------- 1. จงเขยนโปรแกรมตอไปนใหสมบรณพรอมทงแสดงผลลพธ ( 15 คะแนน )

1 #include <iostream>

2 using namespace std;

3 double division(int a, int b){

4 if( b == 0 ){

5 throw "Division by zero";

6 }

7 return (a/b);

8 }

9 int main (){

10 int x = 50;

11 int y = 0;

12 double z = 0;

13 try {

14 z = division(x, y);

15 cout << z << endl;

16 }catch (_____________) {

17 cerr << err << endl;

18 }

19 return 0;

20 }

242

2. จงเขยนโปรแกรมตอไปนใหสมบรณพรอมทงแสดงผลลพธ ( 15 คะแนน ) 1 #include <iostream>

2 #include <stdexcept>

3 #include <vector>

4 using namespace std;

5 int main (void) {

6 vector<string> vector1(20);

7 try {

8 vector1.at(58)=10;

9 cout<<vector1.capacity();

10 }

11 catch (______________) {

12 cerr << "Out of Range error: " << oor.what();

13 }

14 return 0;

15 }

3. จงเขยนโปรแกรมตอไปนใหสมบรณพรอมทงแสดงผลลพธ ( 20 คะแนน ) 1 #include<iostream>

2 #include<stdexcept>

3 using namespace std;

4 int main( ){

5 string x;

6 try{

7 x.resize(x.max_size()+1);

8 }

9 catch(________________){

10 cerr << "ERROR : "<< e.what();

11 }

12 catch(int e){

13 cerr << "ERROR "<<e;

14 }

15 return 0;

16 }

243

เฉลยใบงำน บทท 13 เรอง เอกเซพชน

ค ำชแจง 1. ใบงานมทงหมด 3 ขอ คะแนนเตม 50 คะแนน 2. ใหนกศกษาท าหมดทกขอ --------------------------------------------------------------------------------------------------------------------- 1. จงเขยนโปรแกรมตอไปนใหสมบรณพรอมทงแสดงผลลพธ ( 15 คะแนน )

1 #include <iostream>

2 using namespace std;

3 double division(int a, int b){

4 if( b == 0 ){

5 throw "Division by zero";

6 }

7 return (a/b);

8 }

9 int main (){

10 int x = 50;

11 int y = 0;

12 double z = 0;

13 try {

14 z = division(x, y);

15 cout << z << endl;

16 }catch (const char* err) {

17 cerr << err << endl;

18 }

19 return 0;

20 }

ผลลพธกำรท ำงำนของโปรแกรม

Division by zero

244

2. จงเขยนโปรแกรมตอไปนใหสมบรณพรอมทงแสดงผลลพธ ( 15 คะแนน ) 1 #include <iostream>

2 #include <stdexcept>

3 #include <vector>

4 using namespace std;

5 int main (void) {

6 vector<string> vector1(20);

7 try {

8 vector1.at(58)=10;

9 cout<<vector1.capacity();

10 }

11 catch (out_of_range& oor) {

12 cerr << "Out of Range error: " << oor.what();

13 }

14 return 0;

15 }

ผลลพธกำรท ำงำนของโปรแกรม

Out of Range error: vector::_M_range_check

245

3. จงเขยนโปรแกรมตอไปนใหสมบรณพรอมทงแสดงผลลพธ ( 20 คะแนน ) 1 #include<iostream>

2 #include<stdexcept>

3 using namespace std;

4 int main( ){

5 string x;

6 try{

7 x.resize(x.max_size()+1);

8 }

9 catch(const length_error& e){

10 cerr << "ERROR : "<< e.what();

11 }

12 catch(int e){

13 cerr << "ERROR "<<e;

14 }

15 return 0;

16 }

ผลลพธกำรท ำงำนของโปรแกรม

ERROR : basic_string::resize

246

แบบทดสอบหลงเรยน บทท 13 เรอง เอกเซพชน

ค ำชแจง 1. ใหนกศกษาเลอก กากบาท X ลงในกระดาษค าตอบทแจกใหโดยเลอกขอทถกทสดเพยงขอเดยว 2. ตอบถกไดคะแนนขอละ 1 คะแนน ตอบผดได 0 คะแนน 3. แบบทดสอบมทงหมด 10 ขอ ---------------------------------------------------------------------------------------------------------------------- 1. ขอผดพลาดของโปรแกรมคอมพวเตอรแบงออกไดเปนกประเภท

ก. 2 ประเภท ข. 3 ประเภท ค. 4 ประเภท ง. 5 ประเภท

2. ค าสงภาษา C++ ในการรบขอมลจากผใช cin<<number1 เกบไวในตวแปร number1 เปนความผดพลาดตรงกบขอใด ก. ขอผดพลาดทางไวยากรณของภาษา ข. ล าดบขนตอนการตความผดพลาด ค. ความผดพลาดขณะโปรแกรมท างาน ง. ความผดพลาดขณะคอมไพลโปรแกรม

3. จากนพจนตอไปน x = 10/0 เปนความผดพลาดตรงกบขอใด ก. ขอผดพลาดทางไวยากรณของภาษา ข. ล าดบขนตอนการตความผดพลาด ค. ความผดพลาดขณะโปรแกรมท างาน ง. ความผดพลาดขณะคอมไพลโปรแกรม

4. ความผดพลาดในขอใดทท าการคนหาและแกไขไดยากทสด ก. ขอผดพลาดทางไวยากรณของภาษา ข. ล าดบขนตอนการความผดพลาด ค. ความผดพลาดขณะโปรแกรมท างาน ง. ความผดพลาดขณะคอมไพลโปรแกรม

247

5. ขอใดคอค าสงในการดกจบการท างานทผดพลาดของโปรแกรมภาษา C++ ก. try ข. throw ค. catch ง. throw..catch

จากโปรแกรมตอไปนตอบค าถามขอท 6 - 7 1 #include<iostream>

2 using namespace std;

3 int main( ){

4 int number1,number2,sum;

5 cout<<"Enter number1,number2 :";

6 cin>>number1>>number2;

7 _____1______

8 if(number2 == 0)

9 throw "Division by zero";

10 sum = number1 / number2;

11 cout<<sum<<endl;

12 }

13 catch(______2_______){

14 cerr << "ERROR CODE: " << e;

15 }

16 return 0;

17 }

6. จากโปรแกรมดงกลาวบรรทดท 7 หมายเลข 1 เตมคาใดท าใหการท างานของโปรแกรมสมบรณ ก. { try ข. catch( ) ค. throw ง. try {

7. จากโปรแกรมดงกลาวบรรทดท 13 หมายเลข 2 เตมคาใดท าใหการท างานของโปรแกรมสมบรณ ก. char ข. const char e ค. const char* e ง. char* e

248

จากโปรแกรมตอไปนตอบค าถามขอท 8 - 9 1 #include <iostream>

2 #include <stdexcept>

3 #include <vector>

4 using namespace std;

5 int main () {

6 vector<int> v(30);

7 try {

8 v.at(___1___)=10;

9 }

10 catch (out_of_range& _____2_____) {

11 cerr << "Out of Range error: " << outOfRange.what();

12 }

13 return 0;

14 }

8. จากโปรแกรมดงกลาวในบรรทดท 8 หมายเลข 1 จะตองเตมโคดอะไรทท าใหมการโยนขอผดพลาดออกมา ก. 10 ข. 15 ค. 20 ง. 40

9. จากโปรแกรมดงกลาวในบรรทดท 10 หมายเลข 2 จะตองเตมโคดอะไรทท าใหโปรแกรมรบขอผดพลาดท างานไดอยางสมบรณ ก. OutOfRange ข. Out_of_range ค. Out_of_range& ง. int

10. การเขยนโปรแกรมภาษา C++ โดยเราตองการน าคลาสมาตรฐานในการดกจบขอผดพลาดในการท างานมาใชในการดกจบ การจองพนทหนวยความจ า ขอใดถกตอง ก. std::bad_alloc ข. std::runtime_error ค. std::out_of_range ง. std::length_error

249

เฉลยแบบทดสอบหลงเรยน บทท 13 เรอง เอกเซพชน

ขอท เฉลย

1 ข 2 ก 3 ค 4 ข 5 ก 6 ง 7 ค 8 ง 9 ก

10 ก

250

251

บทท 14 เรอง กำรจดกำรไฟล

252

แบบทดสอบกอนเรยน บทท 14 เรอง กำรจดกำรไฟล

ค ำชแจง 1. ใหนกศกษาเลอก กากบาท X ลงในกระดาษค าตอบทแจกใหโดยเลอกขอทถกทสดเพยงขอเดยว 2. ตอบถกไดคะแนนขอละ 1 คะแนน ตอบผดได 0 คะแนน 3. แบบทดสอบมทงหมด 10 ขอ ---------------------------------------------------------------------------------------------------------------------- 1. คลาสในขอใดทใชส าหรบการจดการสตรมเอาทพต

ก. ofstream ข. fstream ค. ifstream ง. fstream

2. คลาสในขอใดทใชส าหรบการจดการสตรมอนพต ก. ofstream ข. fstream ค. ifstream ง. fstream

3. ขอใดเปนการก าหนดใหวตถเปดไฟลขนมาใชงาน ก. ifile(“data.dat”); ข. ifile(data.dat); ค. ofile(data.txt); ง. ofile.open(“data.txt”);

4. ขอใดคอการเปดไฟลในโหมดการเพมขอมลทายไฟล ก. ios_base :: in | ios_base :: app ข. ios_base :: in ค. ios_base :: out | ios_base :: app ง. ios_base :: out

253

5. การจดเกบขอมลภายในไฟลจะเปนโครงสรางขอมล สามารถเขยนอานขอมลทงชดเปนเรคอรดในครงเดยว คอลกษณะของการจดเกบไฟลแบบใด ก. Textfile ข. Binary file ค. Document file ง. Database file

จากโปรแกรมตอไปนใชตอบค าถามขอท 6 – 7 1 #include<iostream>

2 #include<fstream>

3 using namespace std;

4 int main( ){

5 ____1____ ofile;

6 ofile.open("person.dat");

7 ofile<<"Thailand";

8 ____2____

9 return 0;

10 }

6. จากโปรแกรมดงกลาวบรรทดท 5 หมายเลข 1 จะตองเตมค าสงใดทท าใหโปรแกรมท างานได ก. ofstream ข. fstream ค. ifstream ง. ifile

7. จากโปรแกรมดงกลาวบรรทดท 8 หมายเลข 2 จะตองเตมค าสงใดทท าใหโปรแกรมท างานได ก. ofile<< “phone”; ข. ofile.close(); ค. ofile.open(); ง. ofile(close);

254

จากโปรแกรมตอไปนใชตอบค าถามขอท 8 - 10 1 #include<iostream>

2 #include<fstream>

3 using namespace std;

4 struct ___1____{

5 char id_sub[10];

6 char name_sub[20];

7 double credit_sub = 0.00;

8 double grade_sub = 0.00;

9 };

10 subject sub;

11 int main( ){

12 ofstream ofile ( "stu.dat", ___2___ | ios_base::app );

13 int i = 1;

14 while(i<4){

15 cout<<"Enter id_sub =";

16 cin.getline(sub.id_sub,10);

17 cout<<"Enter name_sub =";

18 cin.getline(sub.name_sub,20);

19 cout<<"Enter credit_sub =";

20 cin>>sub.credit_sub;

21 cin.get();

22 cout<<"Enter grade_sub = ";

23 cin>>sub.grade_sub;

24 cin.get();

25 ___3___( ( char*)& sub, sizeof sub);

26 i++;

27 }

28 ofile.close();

29 }

30 return 0;

31 }

8. จากโปรแกรมบรรทดท 4 หมายเลข 1 จะตองเตมค าสงใดทท าใหโปรแกรมท างานได ก. class ข. main ค. ifile ง. subject

255

9. จากโปรแกรมบรรทดท 12 หมายเลข 2 จะตองเขยนโคดอยางไร จะตองเตมค าสงใดทท าใหโปรแกรมท างานได ก. ios_base::binary ข. ios_base::in ค. ios_base::out ง. ios_base::app

10. จากโปรแกรมบรรทดท 25 หมายเลข 1 จะตองเตมค าสงใดทท าใหโปรแกรมท างานได ก. ifile.write ข. ofile.write ค. ofile.out ง. ofile.in

256

เฉลยแบบทดสอบกอนเรยน บทท 14 เรอง กำรจดกำรไฟล

ขอท เฉลย

1 ก 2 ค 3 ง 4 ค 5 ข 6 ก 7 ข 8 ง 9 ก

10 ข

257

ใบแบบฝกหด บทท 14 เรอง กำรจดกำรไฟล

ค ำชแจง 1. แบบฝกหดมทงหมด 5 ขอ คะแนนเตม 50 คะแนน 2. ใหนกศกษาท าหมดทกขอ --------------------------------------------------------------------------------------------------------------------- 1. จงบอกลกษณะการอนพตขอมลในไฟล ( 10 คะแนน ) 2. จงบอกลกษณะการเอาทพตขอมลในไฟล ( 10 คะแนน ) 3. จงบอกการใชงานไฟลโหมดตาง ๆ ( 10 คะแนน ) 4. จงบอกลกษณะของไฟลแบบล าดบ ( 10 คะแนน ) 5. จงบอกลกษณะของไฟลไบนาร ( 10 คะแนน )

258

ใบเฉลยแบบฝกหด บทท 14 เรอง กำรจดกำรไฟล

ค ำชแจง 1. แบบฝกหดมทงหมด 5 ขอ คะแนนเตม 50 คะแนน 2. ใหนกศกษาท าหมดทกขอ --------------------------------------------------------------------------------------------------------------------- 1. จงบอกลกษณะการอนพตขอมลในไฟล ( 10 คะแนน ) ตอบ อนพตเปนการจดการกบอนพตสตรมโดยมการสรางวตถจากคลาส ifstream โดยจะตองน าเขาไฟล fstream เขามา หลงจากนนด าเนนการใหวตถตดตอกบไฟล ใชเมธอด open(“ชอไฟล”) การอานขอมลภายในไฟลจะใชเมธอดของคลาส istream กบคลาส ifstream การอานขอมลสามารถอานทละตวอกษร getch() และทละบรรทด getline() เมออานไฟลเสรจใชเมธอด close() ในการปดไฟล โดยมรปแบบตอไปน

#include<fstream> น าเขาไฟล fstream ifstream ifile; สรางวตถ ifile จากคลาส ifstream ifile.open(“data.dat”); วตถ ifile สงเปดไฟลชอ data.dat char ch; ประกาศตวแปร ch ชนดอกขระ ifile>>ch; อานขอมลจากไฟลทละอกขระ ifile.close(); วตถ ifile สงปดไฟล

2. จงบอกลกษณะการเอาทพตขอมลในไฟล ( 10 คะแนน ) ตอบ เอาทพตสตรมเปนการจดการเกยวกบสตรมเอาทพต โดยมการน าเขาไฟล fstream และท าการสรางวตถขนมา ใหวตถเชอมตอกบไฟลดวยเมธอด open(“ชอไฟล”) จากนนน าขอมลจดเกบในไฟลดวยค าสง cout หลงจากใชงานไฟลเสรจจะตองท าการปดไฟลดวยเมธอด close() มรปแบบตอไปน #include <fstream> น าเขา fstream ofstream ofile; สรางวตถ ofile จากคลาส ofstream ofile(“data.txt”); สงใหวตถ ofile ตดตอไฟล ofile << “Phangnga”; น าขอมล Phangnag เกบลงไฟล ofile.close(); วตถสงปดไฟลเมอท างานเสรจ

259

3. จงบอกการใชงานไฟลโหมดตาง ๆ ( 10 คะแนน ) ตอบ โหมดไฟล เปนการระบรายละเอยดในการเปดไฟลขนมาเพออาน เขยน หรอเพมขอมลตอจากบรรทดสดทาย โดยในการเปดไฟลนนสามารถระบอารกวเมนตจ านวน 2 ตว ตวแรกจะเปนชอไฟลสวนตวทสองจะเปนการระบโหมดไฟลในการเปด ในคลาส ios_base ไดมการก าหนดชนดโหมดเปดไฟลเปนตวแทนของโหมดตาง ๆ ซงเปนบตมารกและคาคงท และสามารถน ามารวมกนได โดยใชตวด าเนนการ OR ( | ) ดงตวอยางโหมดไฟลตอไปน

ios_base::in เปดไฟลส าหรบการอาน ios_base::out เปดไฟลส าหรบการเขยน ถามไฟลอยแลว ขอมลจะถกลบทงกอน ios::base::in| ios_base :: app เปดไฟลส าหรบการเขยนตอทายไฟลเทานน

รปแบบค าสงในการเปดไฟลส าหรบการอานหรอเขยน ifstream ifile(filename, filemode); ofstream ofile; ofile.open( filename, filemode ) 4. จงบอกลกษณะของไฟลแบบล าดบ ( 10 คะแนน ) ตอบ การเขาถงไฟลแบบล าดบ ในการจดเกบขอมลของไฟลแบบล าดบนนจะไมเปนโครงสราง ไมมการระบชนดขอมล การเขาไฟลสามารถเขาถงจากโปรแกรมอดสเตอรโดยทวไปได การอานขอมลจะมการอานจากบรรทดแรกตวอกษรตวแรก ไปจนกวาจะหมดขอความ และครบทกบรรทดและไมสามารถยอนกลบมาได การเขยนขอมลลงไปในไฟลจะเปนการเขยนตอจากบรรทดสดทายเทานน ดงตวอยางค าสงตอไปน การเปดไฟลส าหรบการเขยนตอจากขอมลเดม ofstream ofile; ofile.open(“student.txt”,ios_base::out | ios_base::app ) การเปดไฟลส าหรบการอาน ifstream ifile; ifile.open(“student.txt”,ios_base::in); 5. จงบอกลกษณะของไฟลไบนาร ( 10 คะแนน ) ตอบ ไบนารไฟล เปนการจดเกบขอมลเปนโครงสราง จะมการเกบขอมลในรปแบบของบตและขอมลทจดเกบดวยไบนารไฟลนนจะมสามารถเปดอานดวยโปรแกรมอดสเตอรโดยทวไปได มการก าหนดโหมดขอมลเปนไบนาร ( ios_base::binary) และมการจดเกบขอมลเปนเรคคอรดในครง

260

เดยวโดยมการใชงานเมธอด write() และอานดวยเมธอด read() ซงเปนเมธอดของคลาส fstream ดงตวอยางโครงสรางการจดเกบขอมลตอไปน

struct student ( char id[11]; char fname[25]; char lname[25]; }; student stu; ofstream ofile( “Student.dat”, ios_base::binary ); ส าหรบการเขยนขอมลของตวแปร stu ลงไบนารไฟล สามารถใชเมธอด write( ) ofile.write( ( char*)& stu, sizeof stu );

261

ใบงำนท 14 บทท 14 เรอง กำรจดกำรไฟล

ค ำชแจง 1. ใบงานมทงหมด 2 ขอ คะแนนเตม 50 คะแนน 2. ใหนกศกษาท าหมดทกขอ --------------------------------------------------------------------------------------------------------------------- 1. จงเขยนโปรแกรมการจดเกบขอมลไวในไฟลแบบตามล าดบ และน าขอมลมาแสดงผลได โดยจดเกบขอมลหนงสอ ประกอบดวย ชอหนงสอ(name_book) ผแตง(author) ราคา(price) จดเกบในชอไฟล Book.txt ( 25 คะแนน ) 2. จงเขยนโปรแกรมการจดเกบขอมลไวในไฟลแบบไบนาร โดยจดเกบขอมลหนงสอ ประกอบดวย ชอหนงสอ(name_book) ผแตง(author) ราคา(price) จดเกบในชอไฟล Book.dat ( 25 คะแนน )

262

เฉลยใบงำนท 14 บทท 14 เรอง กำรจดกำรไฟล

ค ำชแจง 1. ใบงานมทงหมด 2 ขอ คะแนนเตม 50 คะแนน 2. ใหนกศกษาท าหมดทกขอ --------------------------------------------------------------------------------------------------------------------- 1. จงเขยนโปรแกรมการจดเกบขอมลไวในไฟลแบบตามล าดบ และน าขอมลมาแสดงผลได โดยจดเกบขอมลหนงสอ ประกอบดวย ชอหนงสอ(name_book) ผแตง(author) ราคา(price) จดเกบในชอไฟล Book.txt ( 25 คะแนน ) 1 //Lab14_1.cpp

2 #include<iostream>

3 #include<fstream>

4 #include<iomanip>

5 using namespace std;

6 struct Book{

7 char namebook[11];

8 char authorbook[16];

9 double price;

10 };

11 Book book;

12 int main( ){

13 ofstream ofile ( "Book.txt");

14 if(!ofile.is_open()){

15 cout<<"Unable open file ";

16 }else{

17 int i = 1;

18 while(i<4){

19 cout<<"\nNameBook =";

20 cin.getline(book.namebook,11);

21 cout<<"AuthorBook =";

22 cin.getline(book.authorbook,16);

23 cout<<"Price =";

24 cin>>book.price;

25 cin.get();

26 ofile.write( ( char*)& book, sizeof book);

27 i++;

28 }

29 ofile.close();

30 }

31

32

33 ifstream ifile ( "Book.txt" );

34 if(!ifile.is_open()){

35 cout<<"Unable open file ";

263

36 }else{

37 ifile.read( ( char*)& book, sizeof book);

38 double sum = 0.00; int i = 1;

39 cout<<setprecision(6);

40 cout<<left<<setw(10)<<"Order"<<setw(15)<<"NameBook"<<

left<<setw(20)<<"AuthorBook"<<left

41 <<setw(20)<<"Price"<<endl;

42 cout<<"-----------------------------------------------------"<<endl;

43 while(!ifile.eof()){

44 cout<<left<<setw(10)<<i<<setw(15)<<book.namebook<<left

<<setw(20)<<book.authorbook<<left

45 <<setw(20)<<book.price<<endl;

46 sum += book.price;

47 i++;

48 ifile.read( ( char*)& book, sizeof book);

49 }

50 cout<<"-----------------------------------------------------"<<endl;

51 cout<<left<<setw(35)<<"Sum = "<<sum;

52 ifile.close();

53 }

54 return 0;

55 }

ผลลพธการท างานของโปรแกรม NameBook = Java

AuthorBook = Wuttiwong

Price = 500

NameBook = C++

AuthorBook = Jaroon

Price = 450

NameBook = HTML

AuthorBook = Luksamee

Price = 230

Order NameBook AuthorBook Price

------------------------------------------------------------------------

1 Java Wuttiwong 500

2 C++ Jaroon 450

3 HTML Luksamee 230

------------------------------------------------------------------------

Sum = 1180

------------------------------------------------------------------------

264

2. จงเขยนโปรแกรมการจดเกบขอมลไวในไฟลแบบไบนาร โดยจดเกบขอมลหนงสอ ประกอบดวย ชอหนงสอ(name_book) ผแตง(author) ราคา(price) จดเกบในชอไฟล Book.dat ( 25 คะแนน )

1 //Lab14_2.cpp

2 #include<iostream>

3 #include<fstream>

4 #include<iomanip>

5 using namespace std;

6 struct Book{

7 char namebook[11];

8 char authorbook[16];

9 double price;

10 };

11 Book book;

12 int main( ){

13 ofstream ofile ( "Book.dat", ios_base::binary |

ios_base::out | ios_base::app );

14 if(!ofile.is_open()){

15 cout<<"Unable open file ";

16 }else{

17 int i = 1;

18 while(i<4){

19 cout<<"\nNameBook =";

20 cin.getline(book.namebook,11);

21 cout<<"AuthorBook =";

22 cin.getline(book.authorbook,16);

23 cout<<"Price =";

24 cin>>book.price;

25 cin.get();

26 ofile.write( ( char*)& book, sizeof book);

27 i++;

28 }

29 ofile.close();

30 }

31 ifstream ifile ( "Book.dat", ios_base::binary | ios_base::in );

32 if(!ifile.is_open()){

33 cout<<"Unable open file ";

34 }else{

265

35 ifile.read( ( char*)& book, sizeof book);

36 double sum = 0.00; int i = 1;

37 cout<<setprecision(6);

38 cout<<left<<setw(10)<<"Order"<<setw(15)<<"NameBook

"<<left<<setw(20)<<"AuthorBook"<<left

39 <<setw(20)<<"Price"<<endl;

40 cout<<"-----------------------------------------------------"<<endl;

41 while(!ifile.eof()){

42 cout<<left<<setw(10)<<i<<setw(15)<<book.namebook

<<left<<setw(20)<<book.authorbook<<left

43 <<setw(20)<<book.price<<endl;

44 sum += book.price;

45 i++;

46 ifile.read( ( char*)& book, sizeof book);

47 }

48 cout<<"-----------------------------------------------------"<<endl;

49 cout<<left<<setw(35)<<"Sum = "<<sum;

50 ifile.close();

51 }

52 return 0;

53 }

ผลลพธการท างานของโปรแกรม NameBook = Java

AuthorBook = Wuttiwong

Price = 500

NameBook = C++

AuthorBook = Jaroon

Price = 450

NameBook = HTML

AuthorBook = Luksamee

Price = 230

Order NameBook AuthorBook Price

------------------------------------------------------------------------

1 Java Wuttiwong 500

2 C++ Jaroon 450

3 HTML Luksamee 230

------------------------------------------------------------------------

Sum = 1180

------------------------------------------------------------------------

266

แบบทดสอบหลงเรยน บทท 14 เรอง กำรจดกำรไฟล

ค ำชแจง 1. ใหนกศกษาเลอก กากบาท X ลงในกระดาษค าตอบทแจกใหโดยเลอกขอทถกทสดเพยงขอเดยว 2. ตอบถกไดคะแนนขอละ 1 คะแนน ตอบผดได 0 คะแนน 3. แบบทดสอบมทงหมด 10 ขอ ---------------------------------------------------------------------------------------------------------------------- 1. คลาสในขอใดทใชส าหรบการจดการสตรมเอาทพต

ก. ofstream ข. fstream ค. ifstream ง. fstream

2. คลาสในขอใดทใชส าหรบการจดการสตรมอนพต ก. ofstream ข. fstream ค. ifstream ง. fstream

3. ขอใดเปนการก าหนดใหวตถเปดไฟลขนมาใชงาน ก. ifile(“data.dat”); ข. ifile(data.dat); ค. ofile(data.txt); ง. ofile.open(“data.txt”);

4. ขอใดคอการเปดไฟลในโหมดการเพมขอมลทายไฟล ก. ios_base :: in | ios_base :: app ข. ios_base :: in ค. ios_base :: out | ios_base :: app ง. ios_base :: out

267

5. การจดเกบขอมลภายในไฟลจะเปนโครงสรางขอมลสามารถเขยนอานขอมลทงชดเปนเรคอรดในครงเดยว คอลกษณะของการจดเกบไฟลแบบใด ก. Textfile ข. Binary file ค. Document file ง. Database file

จากโปรแกรมตอไปนใชตอบค าถามขอท 6 – 7 1 #include<iostream>

2 #include<fstream>

3 using namespace std;

4 int main( ){

5 ____1____ ofile;

6 ofile.open("person.dat");

7 ofile<<"Thailand";

8 ____2____

9 return 0;

10 }

6. จากโปรแกรมดงกลาวบรรทดท 5 หมายเลข 1 จะตองเตมค าสงใดทท าใหโปรแกรมท างานได ก. ofstream ข. fstream ค. ifstream ง. ifile

7. จากโปรแกรมดงกลาวบรรทดท 8 หมายเลข 2 จะตองเตมค าสงใดทท าใหโปรแกรมท างานได ก. ofile<< “phone”; ข. ofile.close(); ค. ofile.open(); ง. ofile(close);

268

จากโปรแกรมตอไปนใชตอบค าถามขอท 8 - 10 1 #include<iostream>

2 #include<fstream>

3 using namespace std;

4 struct ___1____{

5 char id_sub[10];

6 char name_sub[20];

7 double credit_sub = 0.00;

8 double grade_sub = 0.00;

9 };

10 subject sub;

11 int main( ){

12 ofstream ofile ( "stu.dat", ___2___ | ios_base::app );

13 int i = 1;

14 while(i<4){

15 cout<<"Enter id_sub =";

16 cin.getline(sub.id_sub,10);

17 cout<<"Enter name_sub =";

18 cin.getline(sub.name_sub,20);

19 cout<<"Enter credit_sub =";

20 cin>>sub.credit_sub;

21 cin.get();

22 cout<<"Enter grade_sub = ";

23 cin>>sub.grade_sub;

24 cin.get();

25 ___3___( ( char*)& sub, sizeof sub);

26 i++;

27 }

28 ofile.close();

29 }

30 return 0;

31 }

8. จากโปรแกรมบรรทดท 4 หมายเลข 1 จะตองเตมค าสงใดทท าใหโปรแกรมท างานได ก. class ข. main ค. ifile ง. subject

269

9. จากโปรแกรมบรรทดท 12 หมายเลข 2 จะตองเขยนโคดอยางไร จะตองเตมค าสงใดทท าใหโปรแกรมท างานได ก. ios_base::binary ข. ios_base::in ค. ios_base::out ง. ios_base::app

10. จากโปรแกรมบรรทดท 25 หมายเลข 1 จะตองเตมค าสงใดทท าใหโปรแกรมท างานได ก. ifile.write ข. ofile.write ค. ofile.out ง. ofile.in

270

เฉลยแบบทดสอบหลงเรยน บทท 14 เรอง กำรจดกำรไฟล

ขอท เฉลย

1 ก 2 ค 3 ง 4 ค 5 ข 6 ก 7 ข 8 ง 9 ก

10 ข