เอกสารประกอบการสอน รายวิชา 3652204...

158
อ.วิทูรย คงผล www.dusittrang.com/professor/witoon เอกสารประกอบการสอน รายวิชา 3652204 การโปรแกรมคอมพิวเตอรทางธุรกิจเบื้องตน (Introduction to Business Computer Programming)

Upload: others

Post on 09-Jul-2020

4 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: เอกสารประกอบการสอน รายวิชา 3652204 การโปรแกรมคอมพิวเตอร ... · เอกสารประกอบการสอน

อ.วทรย คงผล www.dusittrang.com/professor/witoon

เอกสารประกอบการสอน

รายวชา 3652204 การโปรแกรมคอมพวเตอรทางธรกจเบองตน

(Introduction to Business Computer Programming)

Page 2: เอกสารประกอบการสอน รายวิชา 3652204 การโปรแกรมคอมพิวเตอร ... · เอกสารประกอบการสอน

(1)

คานา

เอกสารประกอบการสอนรายวชา วชา 3652204 การโปรแกรมคอมพวเตอรทางธรกจเบองตน มง เนนใหผ เรยนมความรความความเขาใจเกยวกบศกษาหลกการออกแบบและลงรหสโปรแกรม รปแบบไวยากรณภาษา องคประกอบของภาษาคอมพวเตอร ทเกยวของกบงานทางดานธรกจ เกยวกบคาสงนาเขาและสงออก(Input/Output) ชนดของขอมลแบบตาง ๆ รปแบบการดาเนนการ(Operation) การวนรอบ(Looping) โปรแกรมยอย(Procedure) ฟงกชน(Function) และการใชแฟมขอมลเบองตน โดยการใชภาษาคอมพวเตอรททนสมยในการฝกพฒนาโปรแกรมโดยไดมการปรบปรงเนอหาใหมทนตาม ยคสมย และสามารถเรยนรในเรองการเขยนโปรแกรมไดเขาใจไดงายยงขน ทงนเพอใหผเรยนสามารถเรยนรและนาไปประยกตใชงานไดจรง

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

วทรย คงผล มถนายน 2555

Page 3: เอกสารประกอบการสอน รายวิชา 3652204 การโปรแกรมคอมพิวเตอร ... · เอกสารประกอบการสอน

(2)

สารบญ

หนา

คานา (1) สารบญ (2) สารบญภาพ (6) สารบญตาราง (8) แผนการบรหารการสอนประจาบทท 1 1 บทท 1 ภาษาคอมพวเตอรและการพฒนาโปรแกรมคอมพวเตอร 3

1.1 ภาษาคอมพวเตอร 3 1.1.1 ภาษาเครอง (Machine language) 3 1.1.2 ภาษาแอสแซมบล (Assembly language) 4 1.1.3 ภาษาปาสคาล (Pascal language) 4 1.1.4 ภาษาซ (C language) 5 1.1.5 ภาษาเบสค (Basic language) 5 1.1.6 ภาษาจาวา (Java language) 6 1.1.7 ภาษา เอช ท เอม แอล (HTML language) 7 1.1.8 ภาษา พ เอช พ (PHP language) 7

1.2 ระดบของภาษาคอมพวเตอร 8 1.2.1 ภาษาระดบตา (Low level language) 8 1.2.2 ภาษาระดบสง (High level language) 8

1.3 การพฒนาโปรแกรมคอมพวเตอร 9

1.3.1 ขนการวเคราะหปญหา (Program Analysis) 10

1.3.2 ขนการออกแบบโปรแกรม (Program Design) 11 1.3.3 ขนการเขยนโปรแกรม (Program Coding) 11 1.3.4 การทดสอบโปรแกรม (Program Testing) 12 1.3.5 ขนการจดทาคมอโปรแกรม (Program Manual) 12

สรปทายบท 14 คาถามทบทวน 14

แผนการบรหารการสอนประจาบทท 2 16 บทท 2 การออกแบบการทางานโปรแกรมคอมพวเตอร 17

2.1 รหสจาลอง (Pseudo code) 17 2.2 ผงงาน (Flowchart) 20

2.2.1 ประโยชนของผงงาน 20

Page 4: เอกสารประกอบการสอน รายวิชา 3652204 การโปรแกรมคอมพิวเตอร ... · เอกสารประกอบการสอน

(3)

สารบญ (ตอ)

หนา

2.2.2 วธการเขยนผงงานทด 20 2.2.3 สญลกษณผงงาน (Flowchart) 20 2.2.4 ลกษณะรปแบบของผงงาน 21

สรปทายบท 30 คาถามทบทวน 30

แผนการบรหารการสอนประจาบทท 3 32 บทท 3 ความเปนมาของภาษาซและการใชงานโปรแกรมภาษาซ 33

3.1 ประวตภาษาซ 33 3.2 ววฒนาการของภาษาซ 34 3.3 จดเดนของภาษาซ 35 3.4 การใชงานโปรแกรมภาษาซดวยโปรแกรม Turbo 35

3.4.1 การใชงานโปรแกรม Turbo C เบองตน 36 1.) การเปดใชงานโปรแกรม 36 2.) การสรางหนาตางโปรแกรมภาษาซใหม 37 3.) การปอนคาสงภาษาซ 38 4.) การจดเกบโปรแกรมทพฒนาขน 38 5.) การแปลภาษาซหรอการคอมไพลโปรแกรม 39 6.) การสงใหโปรแกรมทางานหรอการทดสอบการทางานของโปรแกรม 40

สรปทายบท 41 คาถามทบทวน 41

แผนการบรหารการสอนประจาบทท 4 43 บทท 4 โครงสรางพนฐานของภาษาซ 44

4.1 หวฟงกชน 45 4.2 ฟงกชนหลก 45 4.3 ชดคาสง 45 4.4 การอธบายโปรแกรม 45 4.5 คาสงวน 47 4.6 ตวดาเนนการ 47 สรปทายบท 51 คาถามทบทวน 52

Page 5: เอกสารประกอบการสอน รายวิชา 3652204 การโปรแกรมคอมพิวเตอร ... · เอกสารประกอบการสอน

(4)

สารบญ (ตอ)

หนา

แผนการบรหารการสอนประจาบทท 5 53 บทท 5 ชนดขอมลและการประกาศตวแปรในภาษาซ 54

5.1 ชนดขอมล 54 5.2 ตวแปร 55 5.3 กฎของการตงชอตวแปรในภาษาซ 55 5.4 รปแบบการประกาศตวแปรในภาษาซ 55 5.5 การแปลงชนดขอมลของภาษาซ 57 สรปทายบท 57 คาถามทบทวน 59

แผนการบรหารการสอนประจาบทท 6 60 บทท 6 ขนตอนการพฒนาโปรแกรมและคาสงการทางานของภาษาซ 61

6.1 ขนตอนการพฒนาโปรแกรมของภาษาซ 61 6.2 คาสงการทางานของภาษาซ 63

6.2.1 คาสง printf 63 6.2.2 คาสง putchar 69 6.2.3 คาสง puts 70 6.2.4 คาสง scanf 71 6.2.5 คาสง getchar 73 6.2.6 คาสง getch 74 6.2.7 คาสง clrscr 75 6.2.8 คาสง goto 76

สรปทายบท 77 คาถามทบทวน 78

แผนการบรหารการสอนประจาบทท 7 80 บทท 7 โครงสรางการควบคมการทางานแบบทางเลอก 81

7.1 คาสง if 81 7.1.1 คาสง if แบบเลอกทาทางเดยว (if) 81 7.1.2 คาสง if แบบเลอกทาสองทาง (if… else) 85 7.1.3 คาสง if แบบเลอกทาหลายทาง (if… else if) 91

7.2 คาสง switch 97 สรปทายบท 103

Page 6: เอกสารประกอบการสอน รายวิชา 3652204 การโปรแกรมคอมพิวเตอร ... · เอกสารประกอบการสอน

(5)

สารบญ (ตอ)

หนา

คาถามทบทวน 103

แผนการบรหารการสอนประจาบทท 8 105 บทท 8 โครงสรางการควบคมการทางานแบบวนรอบ 106

8.1 คาสง for loop 106 8.2 คาสง while loop 112 8.3 คาสง do while 116 สรปทายบท 119 คาถามทบทวน 119

แผนการบรหารการสอนประจาบทท 9 121 บทท 9 ตวแปรชนดอารเรย 122

9.1 ตวแปรอารเรยแบบ 1 มต 122 9.2 ตวแปรอารเรยแบบ 2 มต 129 สรปทายบท 136 คาถามทบทวน 138

แผนการบรหารการสอนประจาบทท 10 139 บทท 10 ฟงกชนและการสรางฟงกชนในภาษาซ 140

10.1 ฟงกชนมาตรฐานในภาษาซ 140 10.2 ฟงกชนทผพฒนาโปรแกรมสรางขน 141 สรปทายบท 147 คาถามทบทวน 148

Page 7: เอกสารประกอบการสอน รายวิชา 3652204 การโปรแกรมคอมพิวเตอร ... · เอกสารประกอบการสอน

(6)

สารบญภาพ

ภาพท หนา

1.1 ตวอยางชดคาสงภาษาเครอง 3 1.2 ตวอยางชดคาสงภาษาแอสแซมบล 3 1.3 ตวอยางชดคาสงภาษาปาสคาล 3 1.4 ตวอยางชดคาสงภาษาซ 5 1.5 ตวอยางชดคาสงภาษาเบสค 6 1.6 ตวอยางชดคาสงภาษาจาวา 6 1.7 ตวอยางชดคาสงภาษา HTML 7 1.8 ตวอยางชดคาสงภาษา PHP 8 1.9 โฟรชารจแสดงขนตอนการพฒนาโปรแกรมคอมพวเตอร 9 1.10 โฟรชารจแสดงขนตอนการวเคราะหปญหาในการพฒนาโปรแกรมคอมพวเตอร 10 2.1 ลกษณะรปแบบทวไปของการออกแบบรหสจาลอง 17 2.2 รปแบบผงงานแบบลาดบ 21 2.3 ผงงานแบบทางเลอกแบบ 1 เสนทาง 22 2.4 ผงงานแบบทางเลอกแบบ 2 เสนทาง 23 2.5 ผงงานแบบทางเลอกแบบหลายเสนทาง 24 2.6 แสดงการออกแบบผงงานในการทางานของโปรแกรมการบวกเลข 25 2.7 แสดงการออกแบบผงงานโดยมเงอนไขเปรยบเทยบแบบสองทาง 26 2.8 แสดงการออกแบบผงงานโดยมเงอนไขเปรยบเทยบแบบหลายทาง 27 2.9 แสดงการออกแบบผงงานการทางานของโปรแกรมในการตดเกรดนกศกษา 28 2.10 แสดงการออกแบบผงงานโดยมเงอนไขในการวนวปกบไปทางานซา 29 3.1 เดนนส รดช (Dennis Ritche) ผพฒนาภาษาซ 34 3.2 แสดงหนาหลกโปรแกรม Turbo C++ เวอรชน 4.5 36 3.3 แสดงการสรางหนาตาโปรแกรมภาษาซ 37 3.4 แสดงการสรางหนาตาง Editor Screen 37 3.5 แสดงการปอนคาสงภาษาซลงในโปรแกรม Turbo C++ 4.5 38 3.6 แสดงการจดเกบโปรแกรมทพฒนาขนจากโปรแกรม Turbo C++ 4.5 38 3.7 แสดงการแปลภาษาซหรอการคอมไพลจากโปรแกรม Turbo C++ 4.5 39 3.8 แสดงการทดสอบการทางานของโปรแกรม 40 3.9 แสดงผลลพธของโปรแกรม 40 4.1 โครงสรางพนฐานของภาษาซ 44 6.1 ผงงานแสดงขนตอนการพฒนาโปรแกรมภาษาซ 61 7.1 ผงงานแสดงการทางานของคาสง if แบบเลอกทาทางเดยว 82 7.2 ผงงานแสดงการทางานของคาสง if แบบเลอกทาสองทาง 86

Page 8: เอกสารประกอบการสอน รายวิชา 3652204 การโปรแกรมคอมพิวเตอร ... · เอกสารประกอบการสอน

(7)

สารบญภาพ (ตอ)

ภาพท หนา

7.3 ผงงานแสดงการทางานของคาสง if แบบเลอกทาหลายทาง 92 7.4 ผงงานแสดงการทางานของคาสง switch 98 8.1 ผงงานแสดงการทางานของคาสง for loop 107 8.2 ผงงานแสดงการทางานของคาสง while loop 112 8.3 ผงงานแสดงการทางานของคาสง do while 116

Page 9: เอกสารประกอบการสอน รายวิชา 3652204 การโปรแกรมคอมพิวเตอร ... · เอกสารประกอบการสอน

(8)

สารบญตาราง

ตารางท หนา

2.1 แสดงสญลกษณผงงาน 20 4.1 ตวอยางโปรเซสเซอรไดเรกทฟทมการใชงาน 45 4.2 แสดงตวดาเนนการคณตศาสตร 47 4.3 แสดงตวดาเนนการความสมพนธ 48 4.4 แสดงตวดาเนนการเชงตรรกะ 48 4.5 แสดงตวดาเนนการเพมคาและลดคา 48 4.6 แสดงตวดาเนนการบตไวส 49 4.7 แสดงตวดาเนนการกาหนดคา 49 4.8 แสดงลาดบการทางานของตวดาเนนการในภาษาซ 50 5.1 ชนดขอมลในภาษาซ 54 5.2 การแปลงชนดขอมลของภาษาซ 57 6.1 รหสควบคมรปแบบการแสดงผลคาของตวแปรออกทางหนาจอ 63 6.2 การจดระแบบระเบยบขอความดวยอกขระควบคมการแสดงผล 63 10.1 ตวอยางฟงกชนมาตรฐานในภาษาซ 140

Page 10: เอกสารประกอบการสอน รายวิชา 3652204 การโปรแกรมคอมพิวเตอร ... · เอกสารประกอบการสอน

1

บทท 1

ภาษาคอมพวเตอรและการพฒนาโปรแกรมคอมพวเตอร

แผนการสอนประจาบท หวขอเนอหา 1.1 ภาษาคอมพวเตอร

1.1.1 ภาษาเครอง (Machine language) 1.1.2 ภาษาแอสแซมบล (Assembly language) 1.1.3 ภาษาปาสคาล (Pascal language) 1.1.4 ภาษาซ (C language) 1.1.5 ภาษาเบสค (Basic language) 1.1.6 ภาษาจาวา (Java language) 1.1.7 ภาษา เอช ท เอม แอล (HTML language) 1.1.8 ภาษา พ เอช พ (PHP language)

1.2 ระดบของภาษาคอมพวเตอร 1.2.1 ภาษาระดบตา (Low level language) 1.2.2 ภาษาระดบสง (High level language)

1.3 การพฒนาโปรแกรมคอมพวเตอร 1.3.1 ขนการวเคราะหปญหา (Program Analysis) 1.3.2 ขนการออกแบบโปรแกรม (Program Design) 1.3.3 ขนการเขยนโปรแกรม (Program Coding) 1.3.4 การทดสอบโปรแกรม (Program Testing) 1.3.5 ขนการจดทาคมอโปรแกรม (Program Manual)

วตถประสงคเชงพฤตกรรม 1. ผเรยนสามารถอธบายและเขาใจภาษาคอมพวเตอรทมใชงานอยในปจจบนได 2. ผเรยนสามารถเขาใจและอธบายระดบของภาษาคอมพวเตอรในระดบตาง ๆ ได 3. ผเรยนสามารถเขาใจขบวนการการพฒนาโปรแกรมคอมพวเตอรในแตละขนตอนได วธการสอน 1. สอนแบบบรรยายโดยใชเอกสารประกอบการสอน 2. สอนแบบบรรยายโดยใช Slide Power Point

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

Page 11: เอกสารประกอบการสอน รายวิชา 3652204 การโปรแกรมคอมพิวเตอร ... · เอกสารประกอบการสอน

2

สอการเรยนการสอน 1. เอกสารประกอบการสอน

2. Slide Power Point 3. ตวอยางโปรแกรมหรอบทความ

การวดผลและประเมนผล 1. การทาแบบฝกหด

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

Page 12: เอกสารประกอบการสอน รายวิชา 3652204 การโปรแกรมคอมพิวเตอร ... · เอกสารประกอบการสอน

3

บทท 1

ภาษาคอมพวเตอรและการพฒนาโปรแกรมคอมพวเตอร

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

ดงนนสงสาคญในการพฒนาโปรแกรมคอมพวเตอรขนมานนกคอ “ภาษาคอมพวเตอร” ภาษาคอมพวเตอรถอไดวาเปนหวใจหลกในการสรางโปรแกรมคอมพวเตอรทมอยในปจจบนนขนมา โดยภาษาคอมพวเตอรทมอยในปจจบนมอยมากมายมายหลายภาษา สามารถนามาพฒนาโปรแกรมคอมพวเตอรไดอยางหลากหลายรปแบบ ไมวาจะเปนการพฒนาโปรแกรมบนเครองคอมพวเตอร การพฒนาโปรแกรมบนระบบเซรฟเวอร หรอการพฒนาโปรแกรมบนโทรศพทมอถอหรอแทปแลต เปนตน

1.1 ภาษาคอมพวเตอร 1.1.1 ภาษาเครอง (Machine language)

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

ภาพท 1.1 ตวอยางชดคาสงภาษาเครอง (ทมา http://disinfo.s3.amazonaws.com/wp-content/uploads/2013/03/binary-code.jpg)

Page 13: เอกสารประกอบการสอน รายวิชา 3652204 การโปรแกรมคอมพิวเตอร ... · เอกสารประกอบการสอน

4

1.1.2 ภาษาแอสแซมบล (Assembly language) ภาษาแอสแซมบลหรอหลายคนอาจเรยกวา ภาษาแอสแซมเบลอร โดยภาษา

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

ภาพท 1.2 ตวอยางชดคาสงภาษาแอสแซมบล (ทมา http://www.johnloomis.org/ece314/notes/carch/img357.gif)

1.1.3 ภาษาปาสคาล (Pascal language)

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

ภาพท 1.3 ตวอยางชดคาสงภาษาปาสคาล (ทมา http://www.cathedron.com/Content/Afbeeldingen/Cat_Pascal_Script.gif)

Page 14: เอกสารประกอบการสอน รายวิชา 3652204 การโปรแกรมคอมพิวเตอร ... · เอกสารประกอบการสอน

5

1.1.4 ภาษาซ (C language) ภาษาซจดเปนภาษาทมลกษณะเปนภาษาโครงสราง สามารถประยกตใชไดกบ

งานในลกษณะตางๆ ไดหลากหลาย เชน ใชพฒนางานดานโปรแกรมคอมพวเตอร หรอนาไปใชพฒนาโปรแกรมทางดานไมโครคอนโทรลเลอร เปนตน และภาษาซเปนภาษาทใกลเคยงกบภาษามนษย คอมโครงสรางภาษาเปนภาษาองกฤษซงงายตอการเขาใจ โดยนกพฒนาโปรแกรมจะสามารถเขยนโปรแกรมไดอยางคลองตวโดยไมมขอจากดในการวางตาแหนงฟงกชนในโปรแกรม ภาษาซจงเปนภาษาทงายตอการเขาใจและเปนภาษาทนยมนาไปใชงานในการพฒนาโปรแกรมตาง ๆ การสรางโปรแกรมภาษาซจะเรมจากการเขยนโปรแกรมตนกาเนด แลวนาไปทาการแปลดวยตวแปลภาษาซเกดเปนโปรแกรมประสงค หลงจากนนจงนาโปรแกรมประสงคไปทาการเชอมโยง เพอใหเกดเปนโปรแกรมทาการทสามารถทางานไดอยางรวดเรว ดงนนภาษาซอาจจะถอไดวาเปนภาษาหนงทผเรมตนในการพฒนาโปรแกรมคอมพวเตอรควรเรยนรเปนพนฐานหลกในการเขยนโปรแกรมขนพน ทงนภาษาซจะเปนภาษาโครงสรางพนฐานของภาษาอนๆ เชน ภาษา Java หรอภาษา PHP เปนตน

ภาพท 1.4 ตวอยางชดคาสงภาษาซ (ทมา http://www.mathworks.com/help/matlab/matlab_external/msvs_breakpoint.gif)

1.1.5 ภาษาเบสค (Basic language)

ภาษาเบสคเปนภาษาทมโครงสรางทไมซบซอน งายตอการศกษาและทาความ

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

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

งานไดงายและรวดเรว และเหมาะสมกบงานทตองการผลลพธอนรวดเรว โดยภาษาเบสคมชอเรยกตาง ๆ

กน เชน QBASIC , BASICA, GWBASIC , VISUAL BASIC เปนตน

Page 15: เอกสารประกอบการสอน รายวิชา 3652204 การโปรแกรมคอมพิวเตอร ... · เอกสารประกอบการสอน

6

ภาพท 1.5 ตวอยางชดคาสงภาษาเบสค

1.1.6 ภาษาจาวา (Java language) ภาษาจาวาปจจบนนถอไดวาเปนภาษาทไดรบความนยมสง เนองจากเปนภาษาท

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

ภาพท 1.6 ตวอยางชดคาสงภาษาจาวา (ทมา https://netbeans.org/images_www/articles/70/java/javase-jdk7/converted.png)

Page 16: เอกสารประกอบการสอน รายวิชา 3652204 การโปรแกรมคอมพิวเตอร ... · เอกสารประกอบการสอน

7

1.1.7 ภาษา เอช ท เอม แอล (HTML language) ภาษา HTML เปนภาษาคอมพวเตอรทใชในการแสดงผลของเอกสารบนเวบไซค

หรอทเรยกกนวาเวบเพจ ภาษา HTML เปนภาษาทสาหรบการสรางหรอพฒนาเวบไซค โดยใชภาษา HTML สามารถพฒนาไดโดยใชโปรแกรม Text Editor ตางๆ เชน Notepad, Editplus หรอจะอาศยโปรแกรมทเปนเครองมอชวยสรางเวบไซค เชน Microsoft FrontPage, Dream Weaver ซงอานวยความสะดวกในการสรางหนา HTML สวนการเรยกใชงานหรอทดสอบการทางานของเอกสาร HTML จะใชโปรแกรมเวบเบราเซอร เชน Microsoft Internet Explorer , Mozilla Firefox, Safari, Opera, และ Netscape Navigator เปนตน

ภาพท 1.7 ตวอยางชดคาสงภาษา HTML (ทมา http://akorra.com/wp-content/uploads/2011/07/HTML.png)

1.1.8 ภาษา พ เอช พ (PHP language)

ภาษาพเอชพเปนภาษาทเกบอยในไฟลทเรยกวาสครปต (script) และเวลาใชงานตองอาศยตวแปลชดคาสง ตวอยางของภาษาสครป เชน JavaScript, Perl เปนตน ลกษณะของภาษาพเอชพทแตกตางจากภาษาสครปตแบบอน ๆ คอ ภาษาพเอชพไดรบการพฒนาและออกแบบมา เพอใชงานในการสรางเอกสารแบบ HTML โดยสามารถสอดแทรกหรอแกไขเนอหาไดโดยอตโนมต ดงนนภาษาพเอชพถอไดวาเปนเครองมอทสาคญชนดหนง ทชวยใหเราสามารถสรางเอกสารในรปแบบ HTML ไดอยาง มประสทธภาพและมลกเลนตาง ๆ มากยงขน

Page 17: เอกสารประกอบการสอน รายวิชา 3652204 การโปรแกรมคอมพิวเตอร ... · เอกสารประกอบการสอน

8

ภาพท 1.8 ตวอยางชดคาสงภาษา PHP (ทมา http://akorra.com/wp-content/uploads/2011/85/PHP.png)

1.2 ระดบของภาษาคอมพวเตอร

จากภาษาคอมพวเตอรท ไดยกตวอย างไวขางตน เปนแคสวนหน ง เทานนของภาษาคอมพวเตอรทมการใชงานอยในปจจบน ทงนยงมภาษาคอมพวเตอรอกมากมายทมใชงานอย และจากการยกตวอยางของภาษาคอมพวเตอรจะสงเกตไดวาแตละภาษาคอมพวเตอรจะมหนาทการทางานทมความโดดเดนแตกตาง ๆ กนไป ท งน ย งมส งหน งทผพฒนาโปรแกรมควรทราบคอ ระดบของภาษาคอมพวเตอร โดยระดบของภาษาคอมพวเตอรสามารถแบงออกเปนกวาง ๆ ไดเปน 2 ระดบ ดงน 1.2.1 ภาษาระดบตา (Low level language) ภาษาระดบตาจะเปนภาษาทใชเลขฐานสองแทนขอมล และคาสงตาง ๆ ทงหมดจะเปนภาษาทขนอยกบชนดของเครองคอมพวเตอร หรอหนวยประมวลผลทใช นนคอแตละเครองกจะมรปแบบของคาสงเฉพาะของตนเอง ซงนกคานวณและนกเขยนโปรแกรมในสมยกอนตองรจกวธทจะรวมตวเลขเพอแทนคาสงตาง ๆ ทาใหการเขยนโปรแกรมยงยากมาก ตวอยางของภาษาระดบตานนก คอ ภาษาเครอง (Machine language) และภาษาแอสแซมบล (Assembly language) นนเอง

1.2.2 ภาษาระดบสง (High level language) ภาษาระดบสงเปนภาษาททาความเขาใจไดไมยากสามารถเขาใจคาสงโปรแกรมไดงาย โดยคาสงการทางานมลกษณะเหมอนภาษาองกฤษ สามารถสอความหมายในการเขยนโปรแกรมหรอคาสงไดงายและสะดวกตอการใชงานหรอแกไขคาสงการของโปรแกรม ปจจบนเปนทนยมอยางมากในการพฒนาโปรแกรมคอมพวเตอร ตวอยางของภาษาระดบสง เชน ภาษาปาสคาล ภาษาซ ภาษาเบสก ภาษาจาวา ภาษา HTML ภาษา PHP เปนตน

Page 18: เอกสารประกอบการสอน รายวิชา 3652204 การโปรแกรมคอมพิวเตอร ... · เอกสารประกอบการสอน

9

1.3 การพฒนาโปรแกรมคอมพวเตอร ในการพฒนาโปรแกรมคอมพวเตอรผพฒนาโปรแกรมคอมพวเตอรควรมขนตอนใน การพฒนาโปรแกรมคอมพวเตอรใหถกตองตามขบวนการ ทงนจะสงผลใหการพฒนาโปรแกรมคอมพวเตอรเกดขอผดพลาดนอยทสดในการพฒนาโปรแกรมคอมพวเตอรในแตละครง และสงสาคญจะทาใหผพฒนาเขาใจระบบหรอรปแบบของโปรแกรมคอมพวเตอรทจะทาการพฒนาขนทงหมด และจะทาใหผพฒนาไดเหนถงปญหาหรอจดบกพรองในการพฒนาโปรแกรมคอมพวเตอรไดในระดบ สผลใหผพฒนาสามารถแกไขปญหาดงกลาวไดทนถวงท โดยขนตอนของการพฒนาโปรแกรมคอมพวเตอร มขนตอนของการพฒนาการพฒนาโปรแกรมคอมพวเตอรดงขนตอนตอไปน 1.การวเคราะหปญหา (Program Analysis) 2.การออกแบบโปรแกรม (Program Design) 3.การเขยนโปรแกรม (Program Coding) 4.การทดสอบโปรแกรม (Program Testing) และ 5.การจดทาคมอโปรแกรม (Program Manual)

ภาพท 1.9 โฟรชารจแสดงขนตอนการพฒนาโปรแกรมคอมพวเตอร

วเคราะหปญหา (Program Analysis)

ออกแบบโปรแกรม (Program Design)

เขยนโปรแกรม (Program Coding)

ทดสอบโปรแกรม (Program Testing)

จดทาคมอโปรแกรม (Program Manual)

เรมตน

จบการทางาน

Page 19: เอกสารประกอบการสอน รายวิชา 3652204 การโปรแกรมคอมพิวเตอร ... · เอกสารประกอบการสอน

10

1.3.1 ขนการวเคราะหปญหา (Program Analysis) การวเคราะหปญหาในขนตอนนจะเปนขนตอนแรกสดทผพฒนาโปรแกรม

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

1.2.1.1 การระบขอมลเขา (Input Specification) ผพฒนาโปรแกรมตองรวา มขอมลอะไรทจะตองปอนเขาสคอมพวเตอรพรอมกบโปรแกรม เพอใหโปรแกรมทา การประมวลผลและออกผลลพธ

1.2.1.2 การระบขอมลออก (Output Specification) ผพฒนาโปรแกรม จะพจารณาวางานททา มเปาหมายหรอวตถประสงคอะไร ตองหารผลลพธทมรปรางหนาตาเปนอยางไร โดยจะตองคานงถงผใหงานโปรแกรมเปนหลกในการออกแบบ

1.2.1.3 กาหนดวธการประมวลผล (Process Specification) ผพฒนาโปรแกรมตองรวธการประมวลผลเพอใหไดผลลพธตามตองการ ซงจะเปนวธใดนนจะตองทดลองผดลองถกไปเรอย ๆ จนกวาจะไดวธการประมวลผลโปรแกรมทสมบรณหรอดทสด

ภาพท 1.10 โฟรชารจแสดงขนตอนการวเคราะหปญหาในการพฒนาโปรแกรมคอมพวเตอร

ขอมลเขา

ประมวลผล

ผลลพธ

เรมตน

จบการทางาน

Page 20: เอกสารประกอบการสอน รายวิชา 3652204 การโปรแกรมคอมพิวเตอร ... · เอกสารประกอบการสอน

11

1.3.2 ขนการออกแบบโปรแกรม (Program Design) หลงจากขนตอนการวเคราะหปญหาแลว ขนตอนถดไปคอการออกแบบโปรแกรม

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

1.3.2.1 อลกอรทม (Algorithm)

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

1.3.2.2 ผงงาน (Flowchart)

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

1.3.2.3 รหสจาลอง (Pseudo code)

รหสจาลองเปนเครองมอทใชขอความทเปนภาษาองกฤษหรอภาษาไทยในการแสดงขนตอนการทางานของโปรแกรม แตรหสจาลองจะมการใชคาเฉพาะ(reserve words) ทมอยในภาษาโปรแกรมมาชวยในการเขยน โดยโครงของรหสจาลองจะมสวนทคลายกบการเขยนโปรแกรมมาก ดงนนรหสจาลองจงเปนเครองมออกแบบหนงทนยมใชกนมากในการออกแบบพฒนาโปรแกรมเชนกน

1.3.3 ขนการเขยนโปรแกรม (Program Coding) หลงจากทผานขนตอนทสอง คอ การออกแบบโปรแกรมแลว ขนตอไปคอ

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

Page 21: เอกสารประกอบการสอน รายวิชา 3652204 การโปรแกรมคอมพิวเตอร ... · เอกสารประกอบการสอน

12

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

1.3.4 การทดสอบโปรแกรม (Program Testing) ในบางครงโปรแกรมอาจผานการแปล โดยไมมขอผดพลาดใด ๆ แจงออกมา แต

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

1.) การใสขอมลทถกตอง (valid case) เปนการทดสอบโดยเมอมการรนโปรแกรม โดยผพฒนาโปรแกรมทาการใสขอมลทถกตองลงไปในโปรแกรม และดวาผลลพธทไดจากโปรแกรมถกตองตามความเปนจรงหรอตรงกบทตองการหรอไม

2.) การใชของเขตและความถกตองของขอมล (Range check and Completeness check) เปนการทดสอบโดยตรวจสอบขอบเขตของขอมลทปอนเขาสโปรแกรม เชน ถาโปรแกรมใหมการปอนวนท กจะตองตรวจสอบวาวนททปอนจะไมเกนวนท 31 ถาผใชปอนวนททเปนเลข 32 โปรแกรมจะตองไมยอมใหปอนวนทนได หรอการตรวจสอบความสมบรณของขอมล เชน การรบขอมลทเปน วน/เดอน/ป กจะตองใสเปนตวเลข 6 ตวในลกษณะ dd/mm/yy ถาใสนอยกวา 6 ตวโปรแกรมจะตองไมรบหรอฟองแจงเตอนผใชงานได

3.) การใชความสมเหตสมผล (Consistency Check) ตวอยางเชน ถาโปรแกรมมการออกแบบใหผใชปอนขอมลลงไปในฟอรมทมขอมลแบงเปนเพศหญงและเพศชาย ดงนนรายละเอยดสวนตวของแตละเพศจะตองมสวนทแตกตางกนในบางสวน เชนในสวนวนหยดกรณลาคลอด จะตองมเฉพาะเพศหญง แตในเพศชายไมควรจะมวนหยดกรณลาคลอด เปนตน

4.) ขอมลทเปนตวเลขและตวอกษร (Correct No. and Type character check) เปนการตรวจสอบวาถาโปรแกรมใหผปอนขอมลในฟลดทตองรบขอมลทเปนตวเลขอยางเชน ฟลดทเปนจานวนเงน โดยโปรแกรมควรจะยอมใหผใชปอนขอมลไดเฉพาะตวเลขเทานน ไมอนญาตใหใสตวอกษรในฟลดนนได หรอถาเปนฟลดทรบขอมลทเปนตวอกษรเชน ฟลดชอนามสกล กจะปอนไดเฉพาะตวอกษรเทานน และจะปอนตวเลขไมได เปนตน

5.) ขอมลเปนไปตามขอกาหนด (Existence Check) คอขอมลทปอนในฟลดตองเปนไปตามทกาหนดไวแนนอนแลวเทานน เชน กาหนดใหฟลดนปอนขอมลไดเฉพาะตวเลขทอยในกลม 1,2,5,7 ไดเทานน จะปอนเปนตวเลขอนทไมอยในกลมนไมได

1.3.5 ขนการจดทาคมอโปรแกรม (Program Manual)

ขนการจดทาคมอโปรแกรม หมายถง เอกสารตาง ๆ ทใชกากบอธบายโปรแกรมและชวยใหผใชโปรแกรมทา งานไดสะดวกขน เชน คมอปฏบตงานเครอง (Operation Manual) คมอผใช (User manual) ปจจบนเอกสารประกอบโปรแกรม มอยในหลายสอ เชน มอยในซอฟตแวรไดแก คา อธบาย (Help function) โปรแกรมสาธต (Demo program) เปนตน การทา เอกสารประกอบโปรแกรม คอการอธบายรายละเอยดของโปรแกรมวา จดประสงคของโปรแกรมคออะไร สามารถทา อะไร

Page 22: เอกสารประกอบการสอน รายวิชา 3652204 การโปรแกรมคอมพิวเตอร ... · เอกสารประกอบการสอน

13

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

1.) เอกสารประกอบโปรแกรมสาหรบผใช (User Documentation) เหมาะสาหรบผใชทไมตองเกยวของกบการพฒนาโปรแกรม แตเปนผท

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

2 . ) เอกสารประกอบโปรแกรมส าหรบผ เ ข ยนโปรแกรม (Technical Documentation) โดยสามารถแบงไดออกเปน 2 สวน คอ

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

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

Page 23: เอกสารประกอบการสอน รายวิชา 3652204 การโปรแกรมคอมพิวเตอร ... · เอกสารประกอบการสอน

14

สรปทายบท

โปรแกรมคอมพวเตอรในปจจบนและอนาคตมบทบาทอยางยงในการสรางพฒนางานดานตาง ๆ ไมวาจะเปนงานทางดาน การจดการเอกสาร งานทางดานกราฟฟก งานทางดานการเกบฐานขอมล หรองานทางดานการพฒนาโปรแกรมในระบบมอถอหรอแทปเลต ดงนนสงสาคญในการพฒนาโปรแกรมคอมพวเตอรขนมานนกคอ “ภาษาคอมพวเตอร” ภาษาคอมพวเตอรถอไดวาเปนหวใจหลกในการสรางโปรแกรมคอมพวเตอรทมอยในปจจบนนขนมา โดยภาษาคอมพวเตอรทมอยในปจจบนมอยมากมายมายหลายภาษา สามารถนามาพฒนาโปรแกรมคอมพวเตอรไดอยางหลากหลายรปแบบ ไมวาจะเปนการพฒนาโปรแกรมบนเครองคอมพวเตอร การพฒนาโปรแกรมบนระบบเซรฟเวอร หรอการพฒนาโปรแกรมบนโทรศพทมอถอหรอแทปแลต เปนตน ทงนยงมสงหนงทผพฒนาโปรแกรมควรทราบคอ ระดบของภาษาคอมพวเตอร โดยระดบของภาษาคอมพวเตอรสามารถแบงออกเปนกวาง ๆ ไดเปน 2 ระดบ ดงนภาษาระดบตา (Low level language) คอ ภาษาเครอง และภาษาแอสแซมบล และภาษาระดบสง (High level language) เชน ภาษาปาสคาล ภาษาซ ภาษาเบสก ภาษาจาวา ภาษา HTML ภาษา PHP เปนตน และสงสาคญอกประการ คอ ขนตอนของการพฒนาโปรแกรมคอมพวเตอร ซงขนตอนของ การพฒนาการพฒนาโปรแกรมคอมพวเตอรมขนตอนทควรปฏบต 5 ขนตอนดงน 1.การวเคราะหปญหา (Program Analysis) 2.การออกแบบโปรแกรม (Program Design) 3.การเขยนโปรแกรม (Program Coding) 4.การทดสอบโปรแกรม (Program Testing) และ 5.การจดทาคมอโปรแกรม (Program Manual)

คาถามทบทวน

1. ภาษาคอมพวเตอรสามารถแบงออกเปนกระดบอะไรบาง พรอมทงอธบายลกษณะในแตระดบ 2. ขอแตกตางของภาษาคอมพวเตอรแตละระดบมขอแตกตางกนอยางไรจงอธบาย 3. จงอธบายคณสมบตของภาษาคอมพวเตอรดงกลาวนวามคณสมบตอยางไร และภาษาคอมพวเตอรดงกลาวนาไปพฒนางานในดานใด 3.1 ภาษาเครอง 3.2 ภาษาภาษาแอสแซมบล 3.3 ภาษาซ 3.4 ภาษาเบสค 3.5 ภาษาจาวา 3.6 ภาษา PHP 4. ขนตอนของการพฒนาโปรแกรมคอมพวเตอรมขนตอนการพฒนากขนตอน และจงอธบายคณสมบตในแตละขนตอนวามหนาทอยางไร 5. ถาผพฒนาคอมพวเตอรไดมการพฒนาโปรแกรม แตผพฒนาขาดการวเคราะหปญหา และขาดการจดทาคมอโปรแกรม หากขาดขนตอนดงกลาวจะสงผลอยางไรตอการพฒนาโปรแกรมจงอธบาย

Page 24: เอกสารประกอบการสอน รายวิชา 3652204 การโปรแกรมคอมพิวเตอร ... · เอกสารประกอบการสอน

15

เอกสารอางอง

คะชา ชาญศลป. (2548). ภาษาซสาหรบผเรมตน. กรงเทพมหานคร: วรตนเอดดเคชน. ธรวฒน ประกอบผล. (2553). คมอการเขยนโปรแกรมภาษา C. กรงเทพมหานคร: ซมพลฟลาย. สระสทธ ทรงมา และภรพจน แกวยอง. (2552). การโปรแกรมคอมพวเตอร.: มหาวทยาลยราชภฏ

สวนดสต. อรพน ประวตบรสทธ. (2554). คมอการเรยนภาษา C ฉบบปรบปรงใหม (พมพครงท 10).

กรงเทพมหานคร: โปรวชน. http://www.bcoms.net/php/php01.asp http:/www.thaigoodview.com/library/contest2552/type2/tech04/22/cit/3_2.html http://www.cptd.chandra.ac.th/selfstud/it4life/sub%20soft3.htm http://www.ns2.spw.ac.th/poo/computer54/m354/lesson/lesson_1.html

Page 25: เอกสารประกอบการสอน รายวิชา 3652204 การโปรแกรมคอมพิวเตอร ... · เอกสารประกอบการสอน

16

บทท 2

การออกแบบการทางานโปรแกรมคอมพวเตอร

แผนการสอนประจาบท หวขอเนอหา 2.1 รหสจาลอง (Pseudo code)

2.2 ผงงาน (Flowchart) 2.2.1 ประโยชนของผงงาน 2.2.2 วธการเขยนผงงานทด 2.2.3 สญลกษณผงงาน (Flowchart) 2.2.4 ลกษณะรปแบบของผงงาน

วตถประสงคเชงพฤตกรรม 1. ผเรยนสามารถเขาใจและสามารถออกแบบรหสจาลอง (Pseudo code) เพอการพฒนาโปรแกรมคอมพวเตอรได 2. ผเรยนสามารถเขาใจและสามารถออกแบบผงงาน (Flowchart) เพอการพฒนาโปรแกรมคอมพวเตอรได 3. ผเรยนสามารถวเคราะหและประยกตรหสจาลอง (Pseudo code) และผงงาน (Flowchart) เพอการพฒนาโปรแกรมในรปแบบตาง ๆ ได วธการสอน 1. สอนแบบบรรยายโดยใชเอกสารประกอบการสอน 2. สอนแบบบรรยายโดยใช Slide Power Point

3. สอนโดยใหผเรยนเปนสวนกลาง โดยใชวธถามตอบกบผเรยนระหวางบรรยาย และใชวธการลงปฏบตการทาตามโจทยคาสงดวยตนเอง

4. ใหผเรยนสรปและอธบายหวขอทผเรยนทไดรบมอบหมาย สอการเรยนการสอน 1. เอกสารประกอบการสอน

2. Slide Power Point 3. ตวอยางโจทยคาสง

การวดผลและประเมนผล 1. การทาตามตวอยางโจทยคาสงและการทาแบบฝกหด

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

Page 26: เอกสารประกอบการสอน รายวิชา 3652204 การโปรแกรมคอมพิวเตอร ... · เอกสารประกอบการสอน

17

บทท 2

การออกแบบการทางานโปรแกรมคอมพวเตอร

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

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

ใชการเขยนอธบายขบบวนการทางานหรออลกอรทม (Algorithm) แบบงาย ๆ ขนมากอน หรอ

ผพฒนาโปรแกรมอาจจะใชการเขยนอธบายการทางานของโปรแกรมดวยผงงาน (Flowchart) หรอยงมอก

หนงวธคอการใชรหสจาลอง (Pseudo code) ซงวธการตาง ๆ เหลานจะเปนวธทจะใหผพฒนาสามารถ

มองเหนการทางานของโปรแกรมในภาพรวมทงหมดได และจะสามารถทาใหเราสามารถทราบถงปญหา

ตาง ๆ ทอาจจะเกดขนในการพฒนาโปรแกรมได

2.1 รหสจาลอง (Pseudo code) รหสจาลอง (Pseudo code) เปนการอธบายขนตอนการทางานของโปรแกรมคอมพวเตอร โดยใชคาผสมกนระหวางภาษาองกฤษและภาษาการเขยนโปรแกรมแบบโครงสราง หรอบางครงหากผพฒนาไมมความถนดดานภาษาองกฤษ ผพฒนาอาจจะใชภาษาไทยกไดเชนเดยวกน แตหากเปนไปไดควรใชหลกของภาษาองกฤษเพราะคาสงการทางานของโปรแกรมทงหมดเปนภาษาองกฤษ การเขยนเขยนรหสจาลอง (Pseudo code) ทดจะตองมความชดเจน สน กะทดรดเขาใจงาย และไดใจความ รปแบบทวไปของรหสจาลอง (Pseudo code)

ภาพท 2.1 ลกษณะรปแบบทวไปของการออกแบบรหสจาลอง

Algorithm <ชออลกอรทม> 1. ……………………………………………………………….. 2. ……………………………………………………………….. 3. ……………………………………………………………….. 4. ……………………………………………………………….. 5. ……………………………………………………………….. 6. ……………………………………………………………….. ……………………………………………………………….. ……………………………………………………………….. ……………………………………………………………….. ……………………………………………………………….. END

Page 27: เอกสารประกอบการสอน รายวิชา 3652204 การโปรแกรมคอมพิวเตอร ... · เอกสารประกอบการสอน

18

ตวอยางท 2.1 จงเขยนรหสจาลอง (Pseudo code) โดยรบคาจากผใชงาน 2 คา แลวนาคาทมา

ทาการบวกกนแลวแสดงคาตอบ

วธทา

จากตวอยางท 2.1 จะเหนวาหากผพฒนาไดเขยนรหสจาลอง (Pseudo code) เพอ

ออกแบบการทางานของโปรแกรม จะทาใหผพฒนาโปรแกรมเหนวาจะตองใชตวแปรใดบาง แลวมขนตอน

การทางานทงหมดของโปรแกรมอยางไร และหากลองเขยนใหเปนรปแบบภาษาองกฤษตามหลกการเขยน

โปรแกรมจะได ดงน

จากตวอยางขางตนในกรณทเราเขยนเปนรปแบบภาษาองกฤษจะทาใหผพฒนาเขาใจไดด

ยงขน เพราะวาเวลาเขยนโปรแกรมจะมรปแบบของคาสงใกลเคยงกบรปแบบทเราเขยนรหสจาลอง

(Pseudo code)

Algorithm < การบวกเลข > 1. ประกาศตวแปร 3 ตวแปร 2. รบคาจากผใชงานมาใสตวแปรท 1 3. รบคาจากผใชงานมาใสตวแปรท 2 4. ตวแปรท 3 = ตวแปรท 1 + ตวแปรท 2 5. แสดงผลตวแปรท 3 6. จบ

Algorithm < Sum > 1. int a,b,c 2. input a 3. input b 4. c = a + b 5. output c 6. END

Page 28: เอกสารประกอบการสอน รายวิชา 3652204 การโปรแกรมคอมพิวเตอร ... · เอกสารประกอบการสอน

19

ตวอยางท 2.2 จงเขยนรหสจาลอง (Pseudo code) โดยรบคาจากผใชงาน 2 คาแลวนาคาทงสอง

มาเปรยบกน โดยมเงอนไขวาถาคาใดมากกวาใหแสดงผลคานนออกทางจอใหผใชงานทราบ

วธทา

ตวอยางท 2.3 จงเขยนรหสจาลอง (Pseudo code) โดยรบคาจากผใชงาน 1 คาแลวนาคาทไดมาแสดงผลตามจานวนทผใชงานไดปอนเขามา ตวอยาง เชน หากผใชงานปอน 3 โปรแกรมจะแสดง 1 2 3

หากผใชงานปอน 8 โปรแกรมจะแสดง 1 2 3 4 5 6 7 8

วธทา

Algorithm < Compare > 1. int a,b 2. input a 3. input b 4. if a > b { 5. output a 6. } 7. if a < b { 8. output b 9. } 10 END

Algorithm < Compare > 1. int a , i = 1 2. input a 3. for 1 to a { 4. i = i +1 5. output i 6. } 7. END

Page 29: เอกสารประกอบการสอน รายวิชา 3652204 การโปรแกรมคอมพิวเตอร ... · เอกสารประกอบการสอน

20

2.2 ผงงาน (Flowchart) ผงงาน (Flowchart) คอ การเขยนแผนภาพทมการใชสญลกษณรปภาพและลกศรทแสดงถงขนตอนการทางานของโปรแกรมหรอระบบทละขนตอน รวมไปถงทศทางการไหลของขอมลตงแตแรกจนไดผลลพธตามทตองการ การเขยนผงงาน (Flowchart) เปนรปแบบการเขยนทนยมอยางมากในการออกแบบเพอพฒนางานทางดานโปรแกรม เพราะการเขยนผงงาน (Flowchart) ออกแบบงาย มความเขาใจงายและเปนสากล ทาใหบคคลอน ๆ ทมาศกษาสามารถเขาใจระบบงานทงหมดไดงายและตรงกน

2.2.1 ประโยชนของผงงาน 1.) ชวยลาดบขนตอนการทางานของโปรแกรม และสามารถนาไปเขยนโปรแกรม

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

มากขน

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

โปรแกรม

2.2.3 สญลกษณผงงาน (Flowchart) การเขยนผงงาน (Flowchart) จะประกอบไปดวยการใชสญลกษณมาตรฐาน

ตาง ๆ ทเรยกวา สญลกษณ ANSI ( American National Standards Institute ) ในการสรางผงงาน ตวอยางทแสดงในรปตอไปนเปนผงงาน (Flowchart) ทนยมใชกนมากในการออกแบบพฒนาโปรแกรมคอมพวเตอร

ตารางท 2.1 แสดงสญลกษณผงงาน

ลาดบ สญลกษณ คาอธบาย 1

เรมตน , สนสด

2

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

3

ใชในการประมวลผลการทางาน หรอ คานวณคาตาง ๆ

Page 30: เอกสารประกอบการสอน รายวิชา 3652204 การโปรแกรมคอมพิวเตอร ... · เอกสารประกอบการสอน

21

ตารางท 2.1 แสดงสญลกษณผงงาน (ตอ)

ลาดบ สญลกษณ คาอธบาย 4

ใชในการตรวจสอบเงอนไข

5

ลกศรแสดงทศทางการทางานของโปรแกรม

6

แสดงผลลพธหรอรายงานทางเครองพมพ

7

จดเชอมตอของผงงาน

2.2.4 ลกษณะรปแบบของผงงาน ลกษณะรปแบบของผงงานทใชงานในงานทว ๆ ไปจะมรปแบบทนยมใชงานกนอยหลายรปแบบ แตในการพฒนาโปรแกรมจะมรปแบบการเขยนผงงานอยไมกรปแบบ ซงรปแบบการเขยนผงงานในการพฒนาโปรแกรมโดยทวไปจะมอย 2 แบบดงน

1.) รปแบบผงงานแบบลาดบ 2.) รปแบบผงงานแบบทางเลอก

2.2.4.1 รปแบบผงงานแบบลาดบ

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

ภาพท 2.2 รปแบบผงงานแบบลาดบ

ประมวลผล

เรมตน

จบการทางาน

แสดงผล

รบขอมล

Page 31: เอกสารประกอบการสอน รายวิชา 3652204 การโปรแกรมคอมพิวเตอร ... · เอกสารประกอบการสอน

22

2.2.4.2 รปแบบผงงานแบบทางเลอก รปแบบผงงานแบบทางเลอกจะเปนรปแบบการทางานทมรปแบบผงงานแบบ

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

1.) ผงงานแบบทางเลอกแบบ 1 เสนทาง

ผงงานแบบทางเลอกแบบ 1 เสนทางจะทางานเฉพาะเงอนไขทเปนจรงเทานน ดงตวอยาง ภาพท 2.3

ภาพท 2.3 ผงงานแบบทางเลอกแบบ 1 เสนทาง

เรมตน

ทาคาสง

รบขอมล

ตรวจสอบ เงอนไข

จรง

เทจ

Page 32: เอกสารประกอบการสอน รายวิชา 3652204 การโปรแกรมคอมพิวเตอร ... · เอกสารประกอบการสอน

23

2.) ผงงานแบบทางเลอกแบบ 2 เสนทาง ผงงานแบบทางเลอกแบบ 2 เสนทางจะทางานโดยพจารณาทงเงอนไขทเปนจรงและเปนเงอนไขท

เปนเทจ โดยคาสงการทางานจะมคาสงทแตกตางกนออกไปในแตละเงอนไข ดงตวอยางภาพท 2.4

ภาพท 2.4 ผงงานแบบทางเลอกแบบ 2 เสนทาง

เรมตน

รบขอมล

ทาคาสงท 1

ตรวจสอบ เงอนไข

ทาคาสงท 2

เทจ จรง

Page 33: เอกสารประกอบการสอน รายวิชา 3652204 การโปรแกรมคอมพิวเตอร ... · เอกสารประกอบการสอน

24

3.) ผงงานแบบทางเลอกแบบหลายเสนทาง ผงงานแบบทางเลอกแบบหลายเสนทางจะทางานโดยพจารณาทง

เงอนไขทเกดขนวาตรงกบเงอนไขใด ๆ โดยคาสงการทางานจะมคาสงทแตกตางกนออกไปในแตละเงอนไข ดงตวอยางภาพท 2.5

ภาพท 2.5 ผงงานแบบทางเลอกแบบหลายเสนทาง

เรมตน

รบขอมล

ทาคาสงท 1

ตรวจสอบ เงอนไข ( i )

ทาคาสงท 4 ทาคาสงท 2 ทาคาสงท 3

i = 1 i = 2 i = 3 i = 4

Page 34: เอกสารประกอบการสอน รายวิชา 3652204 การโปรแกรมคอมพิวเตอร ... · เอกสารประกอบการสอน

25

ตวอยางท 2.4 จงเขยนผงงาน (Flowchart) โดยรบคาจากผใชงาน 2 คา แลวนาคาทมาทา

การบวกกนแลวแสดงคาตอบ

วธทา

ภาพท 2.6 แสดงการออกแบบผงงานในการทางานของโปรแกรมการบวกเลข

จากตวอยางท 2.6 เปนการออกแบบผงงานในการทางานของโปรแกรมการบวกเลข จะสงเกตไดวาจากโจทยขอนจะมเงอนไขการตรวจสอบทงสน ดงนนการออกแบบผงงานในขอนจะมลกษณะของผงงานทเปนรปแบบผงงานแบบลาดบ

C = A + B

เรมตน

จบการทางาน

แสดงผล

รบขอมล A

ประกาศตวแปร A , B , C

รบขอมล B

Page 35: เอกสารประกอบการสอน รายวิชา 3652204 การโปรแกรมคอมพิวเตอร ... · เอกสารประกอบการสอน

26

ตวอยางท 2.5 จงเขยนผงงาน (Flowchart) โดยรบคาจากผใชงาน 2 คาแลวนาคาทงสองมา

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

วธทา

ภาพท 2.7 แสดงการออกแบบผงงานโดยมเงอนไขเปรยบเทยบแบบสองทาง

เรมตน

จบการทางาน

รบขอมล A

ประกาศตวแปร A , B

รบขอมล B

ตรวจสอบ A > B

แสดงผลคาตวแปร B แสดงผลคาตวแปร A

จรง

เทจ

Page 36: เอกสารประกอบการสอน รายวิชา 3652204 การโปรแกรมคอมพิวเตอร ... · เอกสารประกอบการสอน

27

ตวอยางท 2.6 จงเขยนผงงาน (Flowchart) โดยรบคาจากผใชงาน 2 คาแลวนาคาทงสองมาเปรยบกน โดยมเงอนไขดงน ถาคาใดมากกวาใหแสดงผลคานนออกทางเครองพมพ แตถาคาทงสองเทากนใหแสดงคาวา “Equal” ออกทางเครองพมพ

วธทา

ภาพท 2.8 แสดงการออกแบบผงงานโดยมเงอนไขเปรยบเทยบแบบหลายทาง

เรมตน

จบการทางาน

รบขอมล A

ประกาศตวแปร A , B

รบขอมล B

ตรวจสอบ A > B

แสดงผลคาตวแปร B

แสดงผลคาตวแปร A

จรง

เทจ

ตรวจสอบ A < B

แสดงผลคาวา “Equal”

จรง

เทจ

Page 37: เอกสารประกอบการสอน รายวิชา 3652204 การโปรแกรมคอมพิวเตอร ... · เอกสารประกอบการสอน

28

ตวอยางท 2.7 จงเขยนผงงาน (Flowchart) โดยรบคาคะแนนจากนกศกษา แลวนาคาทนกศกษาไดปอนมาทาตดเกรด โดยมเงอนไขของคาคะแนนเกรดดงน

1.) คาคะแนน 90 – 100 เกรด A 2.) คาคะแนน 80 – 89 เกรด B

3.) คาคะแนน 60 – 79 เกรด C 4.) คาคะแนน 50 – 59 เกรด D 5.) คาคะแนนตากวา 50 เกรด F

วธทา

ภาพท 2.9 แสดงการออกแบบผงงานการทางานของโปรแกรมในการตดเกรดนกศกษา

เรมตน

จบการทางาน

ประกาศตวแปร Y

รบคาคะแนน Y

เกรด A Y >= 90 จรง

เทจ

เกรด B Y >= 80 จรง

เทจ

เกรด C Y >= 60 จรง

เทจ

เกรด D Y >= 50 จรง

เทจ

เกรด F

Page 38: เอกสารประกอบการสอน รายวิชา 3652204 การโปรแกรมคอมพิวเตอร ... · เอกสารประกอบการสอน

29

ตวอยางท 2.8 จงเขยนผงงาน (Flowchart) โดยรบคาจากผใชงาน 1 คาแลวนาคาทไดมาแสดงผลตามจานวนทผใชงานไดปอนเขามา ตวอยาง เชน หากผใชงานปอน 5 โปรแกรมจะแสดง 0 1 2 3 4 5

หากผใชงานปอน 9 โปรแกรมจะแสดง 0 1 2 3 4 5 6 7 8 9 วธทา

ภาพท 2.10 แสดงการออกแบบผงงานโดยมเงอนไขในการวนวปกบไปทางานซา

เรมตน

จบการทางาน

รบขอมล a

ประกาศตวแปร a , i = 0

แสดงผลขอมล i

ตรวจสอบ i <= a

จรง

เทจ

i = i + 1

Page 39: เอกสารประกอบการสอน รายวิชา 3652204 การโปรแกรมคอมพิวเตอร ... · เอกสารประกอบการสอน

30

สรปทายบท

ในการพฒนาโปรแกรมคอมพวเตอรผพฒนาโปรแกรมคอมพวเตอรจาเปนจะตองมหลกใน การเขยนโปรแกรม โดยอาจจะใชการเขยนอธบายขบบวนการทางานหรออลกอรทม (Algorithm) แบบงาย ๆ หรอผพฒนาโปรแกรมอาจจะใชการเขยนอธบายการทางานของโปรแกรมดวยผงงาน (Flowchart) หรอยงมอกหนงวธคอการใชรหสจาลอง (Pseudo code) ซงวธการตาง ๆ เหลานจะเปนวธทจะใหผพฒนาสามารถมองเหนการทางานของโปรแกรมในภาพรวมทงหมดได และจะสามารถทาใหผพฒนาโปรแกรมสามารถทราบถงปญหาตาง ๆ ทอาจจะเกดขนในการพฒนาโปรแกรมได

รหสจาลอง (Pseudo code) เปนการอธบายขนตอนการทางานของโปรแกรมคอมพวเตอร โดยใชคาผสมกนระหวางภาษาองกฤษและภาษาการเขยนโปรแกรมแบบโครงสราง หรอบางครงหากผพฒนาไมมความถนดดานภาษาองกฤษ ผพฒนาอาจจะใชภาษาไทยกไดเชนเดยวกน แตหากเปนไปไดควรใชหลกของภาษาองกฤษเพราะคาสงการทางานของโปรแกรมทงหมดเปนภาษาองกฤษ การเขยนเขยนรหสจาลอง (Pseudo code) ทดจะตองมความชดเจน สน กะทดรดเขาใจงาย และไดใจความ

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

1. จงอธบายคณสมบตของรหสจาลอง (Pseudo code) และผงงาน (Flowchart) 2. จงอธบายขอแตกตางของรหสจาลอง (Pseudo code) กบผงงาน (Flowchart) วามความแตกตางกนอยางไร 3. จงเขยนรหสจาลอง (Pseudo code) โดยรบคาจากผใชงาน 2 คา แลวนาคาทมาทาการคณกนแลวแสดงคาตอบ และนาคาตอบมาทาการหาคา หากมคาคาตอบมากกวา 100 ใหโปรแกรมแสดงคาวา “Big” แตถาคานอยกวาหรอเทากบ 100 ใหโปรแกรมแสดงคาวา “Small” 4. จงเขยนรหสจาลอง (Pseudo code) โดยรบคาจากผใชงาน 3 คาแลวนาคาทงสามมาเปรยบกน โดยมเงอนไขวาถาคาใดมคามากทสดใหแสดงผลคานนออกทางจอใหผใชงานทราบ 5. จงเขยนผงงาน (Flowchart) โดยรบคาจากผใชงาน 3 คาแลวนาคาทงสามมาเปรยบกน โดยมเงอนไขวาถาคาใดมคามากทสดใหแสดงผลคานนออกทางจอใหผใชงานทราบ

6. จงเขยนผงงาน (Flowchart) โดยรบคาจากผใชงาน 5 คาแลวหาคาเฉลย 7. จงเขยนผงงาน (Flowchart) โดยรบคาตวอกษรจากผใชงาน หากผใชงานปอน ‘A’ ให

โปรแกรมแสดงผลคาวา “good” และหากผใชงานปอน ‘Z’ ใหแสดงคาวา “bad” หากปอนคาอน ๆ ใหแสดงคาวา “Error”

Page 40: เอกสารประกอบการสอน รายวิชา 3652204 การโปรแกรมคอมพิวเตอร ... · เอกสารประกอบการสอน

31

เอกสารอางอง

คะชา ชาญศลป. (2548). ภาษาซสาหรบผเรมตน. กรงเทพมหานคร: วรตนเอดดเคชน. ประภาพร ชางไม. (2545). คมอการเขยนโปรแกรมภาษา C ฉบบผเรมตน. กรงเทพมหานคร:

อนโฟเพรส. ธรวฒน ประกอบผล. (2553). คมอการเขยนโปรแกรมภาษา C. กรงเทพมหานคร: ซมพลฟลาย. สระสทธ ทรงมา และภรพจน แกวยอง. (2552). การโปรแกรมคอมพวเตอร.: มหาวทยาลยราชภฏ

สวนดสต. สานนท เจรญฉาย. (2543). การเขยนโปรแกรมและอลกอรทม. กรงเทพมหานคร: มหาจฬาลงกรณราช

วทยาลย. http://www.bcoms.net/site/bit//lesson/2_1.html http:/www.thaigoodview.com/library/contest2552/type2/tech02.html http://www.cptd.chandra.ac.th/selfstud/it4life/sub%20soft1.htm http://ns2.spw.ac.th/poo/computer54/m354/lesson/lesson_2.html https://sites.google.com/site/bbmm2553/prawati-khwam-pen-ma-khxng-phasa-si.html http://boingboing.net/2011/10/12/dennis-ritchie-1941-2011creator-c-co-inventor.html http://images.samartj.multiply.multiplycontent.com

Page 41: เอกสารประกอบการสอน รายวิชา 3652204 การโปรแกรมคอมพิวเตอร ... · เอกสารประกอบการสอน

32

บทท 3

ความเปนมาของภาษาซและการใชงานโปรแกรมภาษาซ

แผนการสอนประจาบท หวขอเนอหา 3.1 ประวตภาษาซ

3.2 ววฒนาการของภาษาซ 3.3 จดเดนของภาษาซ 3.4 การใชงานโปรแกรมภาษาซดวยโปรแกรม Turbo

3.4.1 การเปดใชงานโปรแกรม 3.4.2 การสรางหนาตางโปรแกรมภาษาซใหม 3.4.3 การปอนคาสงภาษาซ 3.4.4 การจดเกบโปรแกรมทพฒนาขน 3.4.5 การแปลภาษาซหรอการคอมไพลโปรแกรม 3.4.6 การสงใหโปรแกรมทางานหรอการทดสอบการทางานของโปรแกรม

วตถประสงคเชงพฤตกรรม 1. ผเรยนสามารถอธบายประวตความเปนมาและววฒนาการของภาษาซได 2. ผเรยนสามารถอธบายและเขาใจถงจดเดนของภาษาซได 3. ผเรยนสามารถเขาใจสวนตาง ๆ ในการทางานของโปรแกรม Turbo C ได วธการสอน 1. สอนแบบบรรยายโดยใชเอกสารประกอบการสอน 2. สอนแบบบรรยายโดยใช Slide Power Point

3. สอนโดยใหผเรยนเปนสวนกลาง โดยใชวธถามตอบกบผเรยนระหวางบรรยาย 4. สอนโดยการลงปฏบตการใชงานโปรแกรม 5. ใหผเรยนสรปและอธบายหวขอทผเรยนทไดรบมอบหมาย

สอการเรยนการสอน 1. เอกสารประกอบการสอน

2. Slide Power Point 3. โปรแกรม Turbo C

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

2. ความตงใจในชนเรยน การตอบคาถาม และการรวมกจกรรมในชนเรยน

Page 42: เอกสารประกอบการสอน รายวิชา 3652204 การโปรแกรมคอมพิวเตอร ... · เอกสารประกอบการสอน

33

บทท 3

ความเปนมาของภาษาซและการใชงานโปรแกรมภาษาซ

ภาษาซ เปนภาษาคอมพวเตอรทใชในการการเขยนโปรแกรมตาง ๆ โดยผพฒนาโปรแกรมสามารถประยกตใชกบงานตาง ๆ ไดอยางมากมาย เชน ระบบปฏบตการคอมพวเตอรทางคณตศาสตร โปรแกรมทางระบบไฟฟา โปรแกรมทางระบบอเลกทรอนกส หรอไมโครคอนโทรลเลอร โปรแกรมทางดานระบบฐานขอมล เปนตน และภาษาซถอไดวาเปนรากฐานพนฐานทสาคญของภาษาอน ๆ ไมวาภาษา C++ ภาษาจาวา (Java) ภาษา PHP กใชโครงสรางคาสงแบบเดยวกนกบภาษาซ หรอแมกระทงระบบลนกซกถกพฒนามาจากระบบยนกซ ซงกเปนทรโดยทวไปวาระบบปฏบตการตระกลยนกซมการพฒนามาจากรากฐานของภาษาซ ภาษาซเปนภาษาระดบกลาง คอ ไมเปนภาษาระดบตาแบบภาษาเครอง หรอภาษาแอสเซมบล

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

ผพฒนาโปรแกรมสามารถควบคมฮารดแวรผานทางภาษาซ ไดราวกบภาษาแอสเซมบล ดวยขอดตาง ๆ

ทหลากหลายทาใหโปรแกรมทถกเขยนดวยภาษาซมความเรวในการปฏบตงานสงกวาภาษาทว ๆ ไป

3.1 ประวตภาษาซ ภาษาซเปนภาษาทถกพฒนาโดยเดนนส รดช (Dennis Ritche) แหงหองทดลอง ทเมอรรฮล มลรฐนวเจอรซ โดยเดนนสไดใชหลกการของภาษาบซพแอล (BCPL : Basic Combine Programming Language) ซงพฒนาขนโดยเคน ทอมสน (Ken Tomson) การออกแบบและพฒนาภาษาซของเดนนส รดช มจดมงหมายใหเปนภาษาสาหรบใชเขยนโปรแกรมปฏบตการระบบยนกซ และไดตงชอวา ซ (C) เพราะเหนวา ซ (C) เปนตวอกษรตอจากบ (B) ของภาษา BCPL ภาษาซถอวาเปนภาษาระดบสงและภาษาระดบตา ทงนเพราะ ภาษาซมวธใชขอมลและมโครงสรางการควบคมการทางานของโปรแกรมเปนอยางเดยวกบภาษาของโปรแกรมระดบสงอน ๆ จงถอวาเปนภาษาระดบสง ในดานทถอวาภาษาซเปนภาษาระดบตา เพราะภาษาซมวธการเขาถงในระดบตาทสดของฮารดแวรความสามารถทงสองดานของภาษานเปนสงทเกอหนนซงกนและกน ความสามารถระดบตาทาใหภาษาซสามารถใชเฉพาะเครองได และความสามารถระดบสง ทาใหภาษาซเปนอสระจากฮารดแวร ภาษาซสามารถสรางรหสภาษาเครอง ซงตรงกบชนดของขอมลนนไดเอง ทาใหโปรแกรมทเขยนดวยภาษาซทเขยนบนเครองหนง สามารถนาไปใชกบอกเครองหนงได ประกอบกบการใชพอยนเตอรในภาษาซ นบไดวาเปนตวอยางทดของการเปนอสระจากฮารดแวร

Page 43: เอกสารประกอบการสอน รายวิชา 3652204 การโปรแกรมคอมพิวเตอร ... · เอกสารประกอบการสอน

34

ภาพท 3.1 เดนนส รดช (Dennis Ritche) ผพฒนาภาษาซ (ทมา http://media.boingboing.net/wp-content/uploads/2011/10/dennis_ritchie.jpg) 3.2 ววฒนาการของภาษาซ

- ค.ศ. 1970 มการพฒนาภาษา B โดย Ken Thompson ซงทางานบนเครอง DEC PDP-7 ซง ทางานบนเครองไมโครคอมพวเตอรไมได และยงมขอจากดในการใชงานอย (ภาษา B สบทอดมาจาก ภาษา BCPL ซงเขยนโดย Marth Richards)

- ค.ศ. 1972 Dennis M. Ritchie และ Ken Thompson ไดสรางภาษา C เพอเพมประสทธภาพ ภาษา B ใหดยงขน ในระยะแรกภาษา C ไมเปนทนยมแกนกโปรแกรมเมอรโดยทวไปนก

- ค.ศ. 1978 Brian W. Kernighan และ Dennis M. Ritchie ไดเขยนหนงสอเลมหนงชอวา The C Programming Language และหนงสอเลมนทาใหบคคลทวไปรจกและนยมใชภาษา C ในการเขยน โปรแกรมมากขน

- ค. ศ. 1981 แตเดมภาษา C ใช Run บนเครองคอมพวเตอร 8 bit ภายใตระบบปฏบตการ CP/M ของ IBM PC ซงในชวงป ค. ศ. 1981 เปนชวงของการพฒนาเครองไมโครคอมพวเตอร ภาษา C จงม บทบาทสาคญในการนามาใชบนเครอง PC ตงแตนนเปนตนมา และมการพฒนาตอมาอกหลาย ๆ คาย ดงนนเพอกาหนดทศทางการใชภาษา C ใหเปนไปแนวทางเดยวกน ANSI (American National Standard Institute) ไดกาหนดขอตกลงทเรยกวา 3J11 เพอสรางภาษา C มาตรฐานขนมา เรยนวา ANSI C

- ค.ศ. 1983 Bjarne Stroustrup แหงหองปฏบตการเบล (Bell Laboratories) ไดพฒนาภาษา C++ ขนรายละเอยดและความสามารถของ C++ มสวนขยายเพมจาก C ทสาคญ ๆ ไดแก แนวความคดของการเขยนโปรแกรมแบบกาหนดวตถเปาหมายหรอแบบ OOP (Object Oriented Programming) ซงเปนแนวการเขยนโปรแกรมทเหมาะกบการพฒนาโปรแกรมขนาดใหญทมความสลบซบซอนมาก มขอมลทใชในโปรแกรมจานวนมาก จงนยมใชเทคนคของการเขยนโปรแกรมแบบ OOP ในการพฒนาโปรแกรมขนาดใหญในปจจบนน

Page 44: เอกสารประกอบการสอน รายวิชา 3652204 การโปรแกรมคอมพิวเตอร ... · เอกสารประกอบการสอน

35

3.3 จดเดนของภาษาซ 3.3.1 ภาษาซเปนภาษาทมลกษณะเปนโครงสรางจงเขยนโปรแกรมงาย โปรแกรมทเขยนขนจะทางานไดอยางมประสทธภาพสง สงงานคอมพวเตอรไดรวดเรวกวาภาษาระดบสงอน ๆ

3.3.2. ภาษาซเปนภาษาทสามารถสงงานอปกรณระบบคอมพวเตอรไดเกอบทกภาคสวนของฮารดแวร ซงภาษาระดบระดบสงในภาษาอนทางานดงกลาวไดนอยกวา

3.3.3 คอมไพเลอรภาษาซทกโปรแกรมจะทางานอางองมาตรฐาน ANSI (American National Standards Institute) เกอบทงหมด จงทาใหโปรแกรมทเขยนขนดวยภาษาซสามารถนาไปใชกบคอมพวเตอรไดทกรนทมาตรฐาน ANSI รบรอง

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

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

3.3.6 ภาษาซมโปรแกรมชวย (tool box) ทชวยในการเขยนโปรแกรมมาก และราคา ไมแพงหาซอไดงาย เชน vitanin c หรออน ๆ

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

3.3.8 ภาษาซสามารถประยกตใชในงานสอสารขอมล และงานควบคมทตองการความแมนยาในเรองเวลา (real time application) ไดดกวาภาษาระดบสงอน ๆ หลาย ๆ ภาษา

3.3.9 ภาษาซสามารถเขยนโปรแกรมดวยเทคนคแบบโอโอพ OOP (Object Oriented Programming) ไดหากใชภาษาซรน Turbo C++ ขนไป ทาใหสามารถพฒนาโปรแกรมประยกตเพอใชงานไดกวางขวางมากยงขนกวาเดม 3.4 การใชงานโปรแกรมภาษาซ ในการพฒนาโปรแกรมภาษาซผพฒนาโปรแกรมจะตองมโปรแกรมทใชในการเขยนและคอมไพ (Compile) ภาษาซขนมากอน จงจะสามารถพฒนาโปรแกรมตาง ๆ ขนทตองมาได โดยโปรแกรมทใชในการเขยนและคอมไพเลอร (Compile) ภาษาซมหลายโปรแกรมดวยกน เชน Borland C หรออาจจะเรยกวา Turbo C , Dev C++ , Visual C++ เปนตน ดงนนในการเลอกใชงานวาผพฒนาโปรแกรมจะใชงานตวใดนน ตองจะคานงถงงานทผพฒนาโปรแกรมตองการวาจะใหงานออกมาในรปแบบใด แตสาหรบผทตองการศกษาภาษาเบองตน ควรใชโปรแกรม Turbo C กอนเนองจากโปรแกรม Turbo C จดเปนโปรแกรมทใชงานงาย สะดวก และทสาคญจะเปนโปรแกรมพนฐานสดในการทดลองคาสงของภาษาซ

Page 45: เอกสารประกอบการสอน รายวิชา 3652204 การโปรแกรมคอมพิวเตอร ... · เอกสารประกอบการสอน

36

3.4.1 การใชงานโปรแกรม Turbo C เบองตน ในการใชงานโปรแกรม Turbo C ในการทดลองคาสงภาษาซครงน จะเลอกใช

งานโปรแกรม Turbo C++ เวอรชน 4.5 ซงผลตโดยบรษท Borland เปนซอฟตแวรทมหนาททสาคญหลายประการ ดงน

1.) ใชในการสรางและแกไขโปรแกรมภาษาซ (Create, Edit) 2.) ใชในการแปลภาษาซเปนภาษาเครอง (Compiler) 3.) ใชในการทดสอบการทางานของโปรแกรม (Run) 4.) ใชในการตรวจสอบจดบกพรองของโปรแกรม การใชงานโปรแกรม Turbo C++ 4.5 มการใชงานทงายไมซบซอน โดยการใช

งานโปรแกรม Turbo C++ 4.5 มสวนทสาคญของโปรแกรมดงน 1.) การเปดใชงานโปรแกรม Turbo C++ 4.5

หลงจากการทผใชงานไดทาการตดตงโปรแกรม Turbo C++ 4.5 ดงนนผใชงานสามารถเรยกใชงาน Turbo C++ 4.5 ขนมาได โดยการเขาไปท Start --> Programs --> Turbo

C++ 4.5 --> Turbo C++ จากนนโปรแกรมจะแสดงโปรแกรม Turbo C++ 4.5 ดงภาพท 3.2

ภาพท 3.2 แสดงหนาหลกโปรแกรม Turbo C++ เวอรชน 4.5 (ทมา http://abarm2007.blogspot.com/2011/01/turbo-c-45.html)

- Editor Screen คอหนาจอสาหรบสรางหรอแกไขโปรแกรมภาษาซ โดยผใชงานโปรแกรมม

หนาทในการสรางโปรแกรมในหนาจอน หรอนาโปรแกรมทเคยสรางไวเรยกคนมาแกไข - เมน ประกอบดวยเมนหลกและเมนยอย มไวสาหรบสงปฏบตงานใด ๆ กบโปรแกรมภาษาซใน

จอภาพ Editor Screen เชน Compile, Run หรอ Debug

Page 46: เอกสารประกอบการสอน รายวิชา 3652204 การโปรแกรมคอมพิวเตอร ... · เอกสารประกอบการสอน

37

2.) การสรางหนาตางโปรแกรมภาษาซใหมในโปรแกรม Turbo C++ 4.5 การสรางหนาตาโปรแกรมภาษาซใหมนนจะใชเมน File -> New

ดงภาพท 3.3 และจากนนโปรแกรมจะแสดงหนาตา Editor Screen ขนมาใหมเพอใชในการเขยนโปรแกรม

ดงภาพท 3.4

ภาพท 3.3 แสดงการสรางหนาตาโปรแกรมภาษาซ (ทมา http://abarm2007.blogspot.com/2011/01/turbo-c-45.html)

ภาพท 3.4 แสดงการสรางหนาตาง Editor Screen (ทมา http://abarm2007.blogspot.com/2011/01/turbo-c-45.html)

Page 47: เอกสารประกอบการสอน รายวิชา 3652204 การโปรแกรมคอมพิวเตอร ... · เอกสารประกอบการสอน

38

3.) การปอนคาสงภาษาซลงในโปรแกรม Turbo C++ 4.5 การปอนคาสงภาษาซลงในโปรแกรม Turbo C++ 4.5 สามารถทาได

โดยการพมพคาสงตาง ๆ ของภาษาซลงไปในหนาตาง Editor Screen ดงภาพท 3.5 ทงนคาสงทพมพลงไป

จะตองถกหลกไวยากรณของคาสงของภาษาซทไดมกาหนดเอาไว

ภาพท 3.5 แสดงการปอนคาสงภาษาซลงในโปรแกรม Turbo C++ 4.5 (ทมา http://abarm2007.blogspot.com/2011/01/turbo-c-45.html)

4.) การจดเกบโปรแกรมทพฒนาขนจากโปรแกรม Turbo C++ 4.5

ในการจดเกบโปรแกรมทสรางหรอพฒนาขน ผใชงานสามารถสามารถ

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

คลายกบการจดเกบเอกสารตาง ๆ โดยการจดเกบโปรแกรมทพฒนาขนจากโปรแกรม Turbo C++ 4.5

สามารถทาไดโดยการไปทใชเมน File -> Save ดงภาพท 3.6

ภาพท 3.6 แสดงการจดเกบโปรแกรมทพฒนาขนจากโปรแกรม Turbo C++ 4.5 (ทมา http://abarm2007.blogspot.com/2011/01/turbo-c-45.html)

Page 48: เอกสารประกอบการสอน รายวิชา 3652204 การโปรแกรมคอมพิวเตอร ... · เอกสารประกอบการสอน

39

5.) การแปลภาษาซหรอการคอมไพลโปรแกรม การแปลภาษาซหรอการคอมไพล (Compile) คอการตรวจสอบ

โปรแกรมทเขยนขนถกตองตามหลกไวยากรณของคาสงของภาษาซหรอไม หรอกลาวอกนยหนงวาการ

คอมไพลในภาษาซ คอ การแปลโปรแกรมภาษาซใหเปนภาษาเครอง หากแปลไดหมดกสามารถสงให

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

ภาษาซใหถกตองเสยกอนจงเรยกคอมไพลใหม โดยการแปลภาษาซหรอการคอมไพล (Compile)

จากโปรแกรม Turbo C++ 4.5 สามารถทาไดโดยการไปทใชเมน Project -> Compile ดงภาพท 3.7

ภาพท 3.7 แสดงการแปลภาษาซหรอการคอมไพลจากโปรแกรม Turbo C++ 4.5 (ทมา http://abarm2007.blogspot.com/2011/01/turbo-c-45.html)

Page 49: เอกสารประกอบการสอน รายวิชา 3652204 การโปรแกรมคอมพิวเตอร ... · เอกสารประกอบการสอน

40

6.) การสงใหโปรแกรมทางานหรอการทดสอบการทางานของโปรแกรม การสงใหโปรแกรมทางานหรอการทดสอบการทางานของโปรแกรม หรอหลายคนนยมเรยกวาการรนโปนแกรม (RUN) ซงการ Run โปรแกรม คอ การสงใหโปรแกรมทางานตามขนตอนทกาหนดในโปรแกรมภาษาซทเขยนขน การ Run โปรแกรมจากโปรแกรม Turbo C++ 4.5 ทาไดโดยเลอกเมน Debug ->Run ดงภาพท 3.8 หลงจากสงใหโปรแกรมทางานแลวผลลพธของโปรแกรมจะปรากฏในจอภาพอกจอภาพหนง โดยจอภาพดงกลาวชอวา User Screen ดงภาพท 3.9

ภาพท 3.8 แสดงการทดสอบการทางานของโปรแกรม (ทมา http://abarm2007.blogspot.com/2011/01/turbo-c-45.html)

ภาพท 3.9 แสดงผลลพธของโปรแกรม (ทมา http://abarm2007.blogspot.com/2011/01/turbo-c-45.html)

Page 50: เอกสารประกอบการสอน รายวิชา 3652204 การโปรแกรมคอมพิวเตอร ... · เอกสารประกอบการสอน

41

สรปทายบท

ภาษาซเปนภาษาคอมพวเตอรทใชในการการเขยนโปรแกรมตาง ๆ โดยผพฒนาโปรแกรมสามารถประยกตใชกบงานตาง ๆ ไดอยางมากมาย เชน ระบบปฏบตการคอมพวเตอรทางคณตศาสตร โปรแกรมทางระบบไฟฟา โปรแกรมทางระบบอเลกทรอนกส หรอไมโครคอนโทรลเลอร โปรแกรมทางดานระบบฐานขอมล เปนตน และภาษาซถอไดวาเปนรากฐานพนฐานทสาคญของภาษาอน ๆ ไมวาภาษา C++ ภาษาจาวา ภาษา PHP กใชโครงสรางคาสงแบบเดยวกนกบภาษาซ หรอแมกระทงระบบลนกซกถกพฒนามาจากระบบยนกซ ซงกเปนทรโดยทวไปวาระบบปฏบตการตระกลยนกซมการพฒนามาจากรากฐานของภาษาซ ภาษาซเปนภาษาระดบกลาง คอ ไมเปนภาษาระดบตาแบบภาษาเครอง หรอภาษาแอสเซมบล เนองจากผพฒนาโปรแกรมสามารถจดการเกยวกบเรองของคาสงไดอยางสะดวกและอสระ และในบางครงผพฒนาโปรแกรมสามารถควบคมฮารดแวรผานทางภาษาซ ไดราวกบภาษาแอสเซมบล ดวยขอดตาง ๆ ทหลากหลายทาใหโปรแกรมทถกเขยนดวยภาษาซมความเรวในการปฏบตงานสงกวาภาษาคอมพวเตอรทวไป

จดเดนของภาษาซ เปนภาษาทมลกษณะเปนโครงสรางจงเขยนโปรแกรมงาย โปรแกรมทเขยนขนจะทางานไดอยางมประสทธภาพสง ภาษาซเปนภาษาทสามารถสงงานอปกรณระบบคอมพวเตอรไดเกอบทกภาคสวนของฮารดแวร คอมไพเลอรภาษาซทกโปรแกรมจะทางานอางองมาตรฐาน ANSI (American National Standards Institute) ภาษาซสามารถนาไปใชในการเขยนโปรแกรมประยกตไดหลายระดบ เชน การเขยนโปรแกรมจดระบบงาน (OS) คอมไพเลอรของภาษาอน โปรแกรมสอสารขอมลโปรแกรม จดฐานขอมล ภาษาซมโปรแกรมชวยทชวยในการเขยนโปรแกรมไดงายมากขนมาก ภาษาซสามารถประกาศขอมลไดหลายชนดและหลายรปแบบ ทาใหสะดวกรวดเรวตอการพฒนาโปรแกรมตามวตถประสงคของผใช ภาษาซสามารถประยกตใชในงานสอสารขอมล และงานควบคมทตองการความแมนยาในเรองเวลา ภาษาซสามารถเขยนโปรแกรมดวยเทคนคแบบโอโอพ OOP (Object Oriented Programming) ทาใหสามารถพฒนาโปรแกรมประยกตเพอใชงานไดกวางขวางมากยงขนกวาเดม

คาถามทบทวน

1. จงอธบายประวตความเปนมาของภาษาซมาใหเขาใจ 2. จงอธบายววฒนาการของภาษาซ 3. จงอธบายจดเดนของภาษาซ 4. จงอธบายเหตผลใดทผเรยนจงตองเลอกใชภาษาซในการพฒนาโปรแกรมคอมพวเตอร 5. จงอธบายการใชงานโปรแกรม Turbo C++ 4.5 มาใหพอสงเขป เอกสารอางอง

คะชา ชาญศลป. (2548). ภาษาซสาหรบผเรมตน. กรงเทพมหานคร: วรตนเอดดเคชน. ประภาพร ชางไม. (2545). คมอการเขยนโปรแกรมภาษา C ฉบบผเรมตน. กรงเทพมหานคร:

อนโฟเพรส. ธรวฒน ประกอบผล. (2553). คมอการเขยนโปรแกรมภาษา C. กรงเทพมหานคร: ซมพลฟลาย. สระสทธ ทรงมา และภรพจน แกวยอง. (2552). การโปรแกรมคอมพวเตอร.: มหาวทยาลยราชภฏ

สวนดสต.

Page 51: เอกสารประกอบการสอน รายวิชา 3652204 การโปรแกรมคอมพิวเตอร ... · เอกสารประกอบการสอน

42

อรพน ประวตบรสทธ. (2554). คมอการเรยนภาษา C ฉบบปรบปรงใหม (พมพครงท 10). กรงเทพมหานคร: โปรวชน.

https://www.sites.google.com/site/bbmm2553/prawati-khwam-pen-ma-khxng.html http://www.boingboing.net/2009/10/12/dennis-computer-scientist-unix-c-co-inventor.html http://www.images.samartj.multiply.multiplycontent.com/attachment1-08.html http://www.iam.hunsa.com/s505420123/article/22094.html http://www.media.boingboing.net/wp-content/uploads/2011/10/dennis_ritchie.jpg http://www.abarm2007.blogspot.com/2011/01/turbo-c-45.html

Page 52: เอกสารประกอบการสอน รายวิชา 3652204 การโปรแกรมคอมพิวเตอร ... · เอกสารประกอบการสอน

43

บทท 4

โครงสรางพนฐานของภาษาซ

แผนการสอนประจาบท หวขอเนอหา 4.1 หวฟงกชน

4.2 ฟงกชนหลก 4.3 ชดคาสง 4.4 การอธบายโปรแกรม 4.5 คาสงวน 4.6 ตวดาเนนการ

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

ในแตละประเภทไปใชงานไดถกตอง วธการสอน 1. สอนแบบบรรยายโดยใชเอกสารประกอบการสอน 2. สอนแบบบรรยายโดยใช Slide Power Point

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

สอการเรยนการสอน 1. เอกสารประกอบการสอน

2. Slide Power Point 3. ตวอยางแบบทดสอบ

การวดผลและประเมนผล 1. การทาแบบฝกหด

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

Page 53: เอกสารประกอบการสอน รายวิชา 3652204 การโปรแกรมคอมพิวเตอร ... · เอกสารประกอบการสอน

44

บทท 4

โครงสรางพนฐานของภาษาซ

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

ภาพท 4.1 โครงสรางพนฐานของภาษาซ

4.1 หวฟงกชน (สวนท 1) สวนหวของฟงกชนหรออาจจะเรยกวา พรโปรเซสเซอรไดเรกทฟ (Preprocessor directives) เปนสวนททกโปรแกรมตองมใชสาหรบเรยกไฟลทโปรแกรมตองการและกาหนดคาตาง ๆ ซงจะตองเรมตนดวยเครองหมายไดเรกทฟ (#) และตามดวยชอทตองการกาหนดคา ตวอยางไดเรกทฟทใชบอย คอ คาสง #include เปนการบอกใหตวแปลคาสง (compiler) อานไฟลอนเขามารวมในการคอมไพล

#include "stdio.h"

main() { Code Program_1;

Code Program_2; Code Program_3; /* comment */

}

สวนท 1

สวนท 2

สวนท 3

สวนท 4

Page 54: เอกสารประกอบการสอน รายวิชา 3652204 การโปรแกรมคอมพิวเตอร ... · เอกสารประกอบการสอน

45

ตารางท 4.1 ตวอยางโปรเซสเซอรไดเรกทฟทมการใชงาน

คาสง คาอธบาย #include Include text from a file #define Define a macro #undef Undefined a macro #if Test if a compile-time condition holed #ifdef Test if a symbol is defined #else Indicate alternative if a test file fail #line Give a line number for compiler message

4.2 ฟงกชนหลก (สวนท 2)

สวนของฟงกชนหลกหรอในหรอ main program เปนสวนทภาษาซทกโปรแกรมจะตองม เพราะจะเปนสวนทจะประกาศใหตวแปลคาสง (compiler) รวาคาสงขางในชดปกกา { } ของ main() เปนชดคาสงทเปนการทางานหลกของโปรแกรม

4.3 ชดคาสง (สวนท 3)

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

4.4 การอธบายโปรแกรม (สวนท 4) สวนของการอธบายโปรแกรมหรอคอมเมนท (comment) เปนสวนทใชในการอธบายการทางานตาง ๆ ของผพฒนาทตองการขยายความ เพอสรางความเขาใจของตนหรอเพอใหผทมาศกษาตอสามารถเขาใจโปรแกรมในสวนทไดอธบายหรอคอมเมนทเอาไว ทงนการอธบายโปรแกรมหรอคอมเมนท (comment) จะไมผลใด ๆ ตอการทางานของโปรแกรม ซงการอธบายโปรแกรมหรอคอมเมนท (comment) ในภาษาซสามารถทาได 2 ลกษณะ ดงน 4.4.1 กรณอธบายโปรแกรมเพยง 1 บรรทด กรณผพฒนาโปรแกรมตองการอธบายโปรแกรมเพยง 1 บรรทด สามารถทาไดโดยการใสเครองหมาย // (2 อน) หลงจากเครองหมายดงกลาวกสามารถใสคาอธบายโปรแกรมไดทนท ดงตวอยาง

#include "stdio.h" main()

{ int i , a , b; // ประกาศตวแปรแบบ int printf (”witoon kongphon”); // คาสงแสดงผล

}

Page 55: เอกสารประกอบการสอน รายวิชา 3652204 การโปรแกรมคอมพิวเตอร ... · เอกสารประกอบการสอน

46

4.4.2 กรณอธบายโปรแกรมหลายบรรทด กรณผพฒนาโปรแกรมตองการอธบายโปรแกรมหลายบรรทด สามารถทาไดโดยการใสเครอง /* */ ภายในเครองหมายดงกลาวกสามารถใสคาอธบายโปรแกรมไดทนท ดงตวอยาง ทงนในการอธบายโปรแกรมหรอคอมเมนท (comment) ผพฒนาโปรแกรมสามารถนาทง 2 วธ มาใชในโปรแกรมเดยวได ดงตวอยาง

#include "stdio.h" /* โปรแกรมตอไปนคอโปรแกรมทใชในการแสดงผลตวเลข

โดยมการประกาศตวแปรเพอรบคาแลวนาคานนแสดงผล */ main()

{ int num ; scanf(“%d”, &num); printf (“Number :”, num”);

} }

#include "stdio.h" /* โปรแกรมตอไปนคอโปรแกรมทใชในการแสดงผลตวเลข

โดยมการประกาศตวแปรเพอรบคาแลวนาคานนแสดงผล */ main()

{ int num ; // ประกาศตวแปรแบบ int scanf(“%d”, &num); // รบคาจากผใชงาน printf (“Number :”, num”); // แสดงผลขอมล

} }

Page 56: เอกสารประกอบการสอน รายวิชา 3652204 การโปรแกรมคอมพิวเตอร ... · เอกสารประกอบการสอน

47

4.5 คาสงวน คาสงวน หมายถง คาทสงวนไวสาหรบใชในคาสงภาษาซเปนการเฉพาะ ทงนคาสงวน

เหลานผพฒนาโปรแกรมไมสามารถนาใชในการประกาศตวแปรตาง ๆ ได โดยในภาษาซจะมคาสงวนไว ดงน

4.6 ตวดาเนนการ ตวดาเนนการบางครงเรยกวา “เครองหมาย” จะเขาใจงายกวา ในภาษา C สามารถ

แบงตวดาเนนการไดหลายประเภท ดงน

4.6.1 ตวดาเนนการคณตศาสตร

ตารางท 4.2 แสดงตวดาเนนการคณตศาสตร

สญลกษณ (symbol) ตวดาเนนการ (operators) ตวอยาง + บวก (addition) a+b - ลบ (subtraction) a-b * คณ (multiplication) a*b / หาร (division) a/b % หารเอาเศษ (remainder) a%b

โดยผลลพธทไดจากการคานวณทางคณตศาสตรจะอยในรปของตวเลข

คาสงวนในภาษาซ

auto default float register struct volatile break do for return switch while case double goto short typedef char else if signed union const enum int sizeof unsigned continue extern long static void

Page 57: เอกสารประกอบการสอน รายวิชา 3652204 การโปรแกรมคอมพิวเตอร ... · เอกสารประกอบการสอน

48

4.6.2 ตวดาเนนการความสมพนธ

ตารางท 4.3 แสดงตวดาเนนการความสมพนธ

สญลกษณ (symbol) ตวดาเนนการ (operators) ตวอยาง < นอยกวา (less than) A<b > มากกวา (greater than) a>b <= นอยกวาหรอเทากบ

(less than or equal) A<=b

>= มากกวาหรอเทากบ (greater than or equal)

a>=b

== เทากบ (equal) A==b != ไมเทากบ (not equal) a!=b

โดยผลลพธทไดจากตวดาเนนการความสมพนธ จะไดคาจรง (1) หรอคาเทจ (0) เทานน

4.6.3 ตวดาเนนการเชงตรรกะ

ตารางท 4.4 แสดงตวดาเนนการเชงตรรกะ

สญลกษณ (symbol) ตวดาเนนการ (operators) ตวอยาง && และ (AND) A<b && c>d || หรอ (OR) a<b || c>d ! ไม (NOT) !(a<b)

โดยผลลพธทไดจากตวดาเนนการเชงตรรกะ จะไดคาจรง (1) หรอคาเทจ (0) เทานน 4.6.4 ตวดาเนนการเพมคาและลดคา

ตารางท 4.5 แสดงตวดาเนนการเพมคาและลดคา

สญลกษณ (symbol) ตวดาเนนการ (operators) ตวอยาง ++ เพมคา (increment) a++ หรอ ++a -- ลดคา (decrement) a-- หรอ --a

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

Page 58: เอกสารประกอบการสอน รายวิชา 3652204 การโปรแกรมคอมพิวเตอร ... · เอกสารประกอบการสอน

49

4.6.5 ตวดาเนนการบตไวส

ตารางท 4.6 แสดงตวดาเนนการบตไวส

สญลกษณ (symbol) ตวดาเนนการ (operators) ตวอยาง & AND a&b | inclusive OR a|b ^ exclusive OR a^b ~ Complement ~a >> right shift a>>2 << left shift a<<3

4.6.6 ตวดาเนนการกาหนดคา

ตารางท 4.7 แสดงตวดาเนนการกาหนดคา

สญลกษณ (symbol) ตวดาเนนการ (operators) ตวอยาง = Assignment a=b += Addition a+=b หมายถง (a=a+b) -= Subtraction a-=b หมายถง (a=a-b) *= Multiplication a*=b หมายถง (a=a*b) /= Division a/=b หมายถง (a=a/b) %= Remainder a%=b หมายถง (a=a%b) &= bitwise AND a&=b หมายถง (a=a&b) |= bitwise Inclusive OR a|=b หมายถง (a=a|b) ^= bitwise exclusive OR a^=b หมายถง (a=a^b) <<= right shift a<<2 หมายถง (a=a<<2) >>= left shift a>>3 หมายถง (a=a>>3)

Page 59: เอกสารประกอบการสอน รายวิชา 3652204 การโปรแกรมคอมพิวเตอร ... · เอกสารประกอบการสอน

50

4.6.8 ลาดบการทางานของตวดาเนนการ

ตารางท 4.8 แสดงลาดบการทางานของตวดาเนนการในภาษาซ

ลาดบท ตวดาเนนการ 1 ( ) [ ] . -> 2 - ~ ! * & 3 ++ - - 4 * / % 5 + - 6 << >> 7 < > < = >= 8 = = != 9 & (bitwise AND) 10 ^ (bitwise exclu OR) 11 | (bitwise inclu OR) 12 && 13 || 14 ?: 15 = += -= /= %= 16 <<= >>=

ตวดาเนนการทมลาดบการทางานอนดบท 1 จะทางานกอนอนดบท 2 โดยการทางานจะม การทางานไปเรอย ๆ จนกระทงหมดตวดาเนนการตอการประมวลนน ๆ สวนลกษณะการทางานของ ตวดาเนนการทอยในอนดบเดยวกนจะเปนการทางานจากซายไปขวาเปนหลก ตวอยางทแสดงขนตอนการทางานของตวดาเนนการ ตวอยางท 4.1

A = 8 + 5 * 3 A = 4 + 15 A = 19

ตวอยางท 4.2

B = 10 / 2 + 5 – 3 B = 5 + 5 – 3 B = 10 - 3 B = 7

Page 60: เอกสารประกอบการสอน รายวิชา 3652204 การโปรแกรมคอมพิวเตอร ... · เอกสารประกอบการสอน

51

ตวอยางท 4.3 C = 9 * 3 - 20 / 5 + 6 C = 27 - 20 / 5 + 6 C = 27 - 4 + 6 C = 23 + 6 C = 29

ตวอยางท 4.4

D = 16 * (3 – 2) / (2 + 6) D = 16 * 1/ (2 + 6) D = 16 * 1/ 8 D = 16 / 8 D = 2

สรปทายบท

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

- หวฟงกชน เปนสวนหวของฟงกชนหรออาจจะเรยกวา พรโปรเซสเซอรไดเรกทฟ (Preprocessor directives) เปนสวนททกโปรแกรมตองมใชสาหรบเรยกไฟลทโปรแกรมตองการและกาหนดคาตาง ๆ ซงจะตองเรมตนดวยเครองหมายไดเรกทฟ (#) และตามดวยชอทตองการกาหนดคา ตวอยางไดเรกทฟทใชบอย คอ คาสง #include เปนการบอกใหตวแปลคาสง (compiler) อานไฟลอนเขามารวมในการคอมไพล

- ฟงกชนหลก เปนสวนของฟงกชนหลกหรอในหรอ main program เปนสวนทภาษาซทกโปรแกรมจะตองม เพราะจะเปนสวนทจะประกาศใหตวแปลคาสง (compiler) รวาคาสงขางในชดปกกา { } ของ main() เปนชดคาสงทเปนการทางานหลกของโปรแกรม

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

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

- คาสงวน เปนคาทสงวนไวสาหรบใชในคาสงภาษาซเปนการเฉพาะ ทงนคาสงวนเหลานผพฒนาโปรแกรมไมสามารถนาใชในการประกาศตวแปรตาง ๆ ได

Page 61: เอกสารประกอบการสอน รายวิชา 3652204 การโปรแกรมคอมพิวเตอร ... · เอกสารประกอบการสอน

52

- ตวดาเนนการ บางครงเรยกวา “เครองหมาย” เปนเครองหมายทจะทาใหการเขยนโปรแกรมเขาใจงายและสะดวกในการพฒนาโปรแกรม ในภาษา C สามารถแบงตวดาเนนการไดหลายประเภท ดงน

- ตวดาเนนการคณตศาสตร - ตวดาเนนการความสมพนธ - ตวดาเนนการเชงตรรกะ - ตวดาเนนการเพมคาและลดคา - ตวดาเนนการบตไวส - ตวดาเนนการกาหนดคา - ลาดบการทางานของตวดาเนนการ

คาถามทบทวน

1. โครงสรางของภาษาซมโครงสรางทสาคญใดบางจงอธบาย 2. การอธบายโปรแกรมหรอคอมเมนท (comment) ของภาษาซมการอธบายโปรแกรมในรปแบบใดบางจงอธบาย 3. จงอธบายตวดาเนนการแตละประเภทวามคณสมบตทสาคญอยางไรตอการเขยนโปรแกรม

4. จงหาคาตอบของโจทยตวอยางตอไปน 4.1 A = 50 – 3 + 2 – 1 4.2 B = 5 * (2+3) – 1 * (1-1) 4.3 C = (5+ (2+3)) – (1+2) * 2 4.4 D = (3-3 + ((2-2) + (1-1))) – 2 * 3 4.5 F = ((3.5 + 3.1 – 9) + (5-2.2) + (8-1)) * 0

เอกสารอางอง

คะชา ชาญศลป. (2548). ภาษาซสาหรบผเรมตน. กรงเทพมหานคร: วรตนเอดดเคชน. ประภาพร ชางไม. (2545). คมอการเขยนโปรแกรมภาษา C ฉบบผเรมตน. กรงเทพมหานคร:

อนโฟเพรส. ธรวฒน ประกอบผล. (2553). คมอการเขยนโปรแกรมภาษา C. กรงเทพมหานคร: ซมพลฟลาย. สระสทธ ทรงมา และภรพจน แกวยอง. (2552). การโปรแกรมคอมพวเตอร.: มหาวทยาลยราชภฏ

สวนดสต. สานนท เจรญฉาย. (2543). การเขยนโปรแกรมและอลกอรทม. กรงเทพมหานคร: มหาจฬาลงกรณราช

วทยาลย. อรพน ประวตบรสทธ. (2554). คมอการเรยนภาษา C ฉบบปรบปรงใหม (พมพครงท 10).

กรงเทพมหานคร: โปรวชน. http://www.mwit.ac.th/~cs/download/tech30101/TECH30101_ch6.html http://www.eng.su.ac.th/ee/618240/variable.html http://www.e-learning.snru.ac.th/els/program1/lesson2/page2_5.html

Page 62: เอกสารประกอบการสอน รายวิชา 3652204 การโปรแกรมคอมพิวเตอร ... · เอกสารประกอบการสอน

53

บทท 5

ชนดขอมลและการประกาศตวแปรในภาษาซ

แผนการสอนประจาบท หวขอเนอหา 5.1 ชนดขอมล

5.2 ตวแปร 5.3 กฎของการตงชอตวแปรในภาษาซ 5.4 รปแบบการประกาศตวแปรในภาษาซ 5.5 การแปลงชนดขอมลของภาษาซ

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

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

วธการสอน 1. สอนแบบบรรยายโดยใชเอกสารประกอบการสอน 2. สอนแบบบรรยายโดยใช Slide Power Point

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

สอการเรยนการสอน 1. เอกสารประกอบการสอน

2. Slide Power Point 3. ตวอยางแบบทดสอบ

การวดผลและประเมนผล 1. การทาแบบฝกหด

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

Page 63: เอกสารประกอบการสอน รายวิชา 3652204 การโปรแกรมคอมพิวเตอร ... · เอกสารประกอบการสอน

54

บทท 5

ชนดขอมลและการประกาศตวแปรในภาษาซ

5.1 ชนดขอมล ในการเขยนโปรแกรมคอมพวเตอรจะมขอมลตาง ๆ เขามาเกยวของหลากหลายสวน

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

โดยชนดขอมลทสาคญในการใชงานในภาษาซ มดงน

5.1.1 ขอมลชนดตวอกษร (Character) คอ ขอมลทเปนรหสแทนตวอกษรหรอคาจานวนเตมไดแก ตวอกษร ตวเลข และกลมตวอกขระพเศษใชพนทในการเกบขอมล 1 ไบต

5.1.2 ขอมลชนดจานวนเตม (Integer) คอ ขอมลทเปนเลขจานวนเตม ไดแก จานวนเตมบวก จานวนเตมลบ ศนย ใชพนทในการเกบ 2 ไบต

5.1.3 ขอมลชนดจานวนเตมทมขนาด 2 เทา (Long Integer) คอ ขอมลทมเลขเปนจานวนเตม ใชพนท 4 ไบต

5.1.4 ขอมลชนดเลขทศนยม (Float) คอ ขอมลทเปนเลขทศนยม ขนาด 4 ไบต 5.1.5 ขอมลชนดเลขทศนยมอยางละเอยด (Double) คอขอมลทเปนเลขทศนยม

ใชพนทในการเกบ 8 ไบต โดยในภาษาซไดมการแบงชนดของขอมลออกเปนหลายชนดดงตารางท 5.1

ตารางท 5.1 ชนดขอมลในภาษาซ

ชนดขอมล ขนาด (ไบต)

ขอบเขต ขอมลทเกบ

char 1 -128 ถง 127 ขอมลชนดอกขระ unsigned char 1 0 ถง 255 ขอมลชนดอกขระ

int 2 -32,768 ถง 32,767 ขอมลชนดจานวนเตม unsigned int 2 0 ถง 65,535 ขอมลชนดจานวนเตม

short 1 -128 ถง 127 ขอมลชนดจานวนเตมแบบสน unsigned short 1 0 ถง 255 ขอมลชนดจานวนเตมแบบสน

long 4 -2,147,483,648 ถง 2,147,483,649 ขอมลชนดจานวนเตมแบบยาว unsigned long 4 0 ถง 4,294,967,296 ขอมลชนดจานวนเตมแบบยาว

float 4 3.4*10e(-38) ถง 3.4*10e(38) ขอมลชนดเลขทศนยม double 8 3.4*10e(-308) ถง 3.4*10e(308) ขอมลชนดเลขทศนยม

long double 16 3.4*10e(-4032) ถง 1.1*10e(4032) ขอมลชนดเลขทศนยม

Page 64: เอกสารประกอบการสอน รายวิชา 3652204 การโปรแกรมคอมพิวเตอร ... · เอกสารประกอบการสอน

55

5.2 ตวแปร ตวแปร (Variable) คอ การจองพนทในหนวยความจาของคอมพวเตอรสาหรบเกบขอมล

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

5.2.1 หามตงชอตรงกบคาสงวน และตองไมมเครองหมายคานวณใด ๆ 5.2.2 ตองขนตนดวยอกษร และหามขนตนดวยตวเลข 5.2.3 หามเวนวรรค หากตองการเวนวรรคตองใชเครองหมาย _ (underscore) 5.2.4 ตวอกษรใหญและตวอกษรเลก ถอเปนคนละตวแปร

5.4 รปแบบการประกาศตวแปรในภาษาซ 5.4.1 ตวอยางการประกาศตวแปรในภาษาซ

1.) กรณการประกาศตวแปรแบบตวแปรเดยว int num; int num_1 = 1; char name[ ];

char name[10]; float id_2;

float id_2 = 2.80;

2.) กรณการประกาศตวแปรแบบหลายตวแปร int num , num_1;

int num1 = 1 , num2 = 2; char name[ ] , address[];

char name1[10] , address2[20]; float id_2 , sum , sum1;

float id1 = 1 , sum2 = 2.0 , sum3 = 3.00;

ชนดขอมล ชอตวแปร;

Page 65: เอกสารประกอบการสอน รายวิชา 3652204 การโปรแกรมคอมพิวเตอร ... · เอกสารประกอบการสอน

56

นอกจากนในภาษาซ ชอตวแปร ทประกอบไปดวยอกษรเลก หรอใหญ กมความแตกตางกน หรอทเรยกวา Case sensitive ตวอยาง เชน

‘X’ และ ‘x’ เปนตวแปรตางกน ‘Ex1’ และ ‘EX1’ เปนตวแปรตางกน ‘bookno1’ และ ‘bookNo1’ เปนตวแปรตางกน ‘XTREME’ และ ‘xtreme’ เปนตวแปรตางกน ‘x_1’ และ ‘x1’ เปนตวแปรตางกน ‘Witoon’ และ ‘witOOn’ เปนตวแปรตางกน

ดงนนในการประกาศตวแปรในภาษาซจะตองคานงถงกฎของการตงชอตวแปรในภาษาซอยางเครงครด ทงนในการเลอกใชชนดขอมลจะตองเลอกใชชนดขอมลใหถกตองกบขอมลทผพฒนาตองการจดเกบ และเมอจบการประกาศตวแปรทกครงจะตองจบดวยเครองหมายเซมโคลอน ; (Semicolon) เพราะหากประกาศตวแปรผดรปแบบทกาหนดจะสงผลใหโปรแกรมมปญหาในการทดสอบโปรแกรมได

5.4.2 ตวอยางการประกาศตวแปรในภาษาซพรอมคาอธบาย

1.) char d, c[30]; ประกาศตวแปรชอ d และ c มชนดเปน character และตวแปรสตรง c

มขนาด 30 bytes

2.) int a, b; ประกาศตวแปรชอ a และ b มชนดเปน int คอใชเนอทใน

หนวยความจา 2 bytes และสามารถเกบตวเลขจานวนเตมทมคาอยในชวง -32768 ถง 32767

3.) float k, m, n; ประกาศตวแปรชอ k, m และ n มชนดเปน float คอใชเนอทใน

หนวยความจา 4 bytes สามารถเกบจานวนทศนยมและตวเลขทอยในรป E ยกกาลงได

4.) double w, x, y, z ประกาศตวแปรชอ w, x, y และ z มชนดเปน double คอใชเนอทใน

หนวยความจา 8 bytes สามารถเกบจานวนทศนยมหรอตวเลขทอยในรป E ยกกาลงทมความละเอยดสงกวาชนด float

Page 66: เอกสารประกอบการสอน รายวิชา 3652204 การโปรแกรมคอมพิวเตอร ... · เอกสารประกอบการสอน

57

5.5 การแปลงชนดขอมลของภาษาซ เมอผพฒนาไดเขยนโปรแกรมมกจะพบวา ในแตละโปรแกรมทซบซอนมกมตวดาเนนการ กบตวแปรของชนดขอมลทแตกตางกน ดงนนเพออานวยความสะดวกในการเขยนโปรแกรม ภาษาซจงไดกาหนดกฎเกณฑการแปลงชนดขอมลไวอยางอตโนมต ดงน ถาคาตวแปรหรอคาคงทตางชนดกน ใหทาการเปลยนชนดของขอมลทมขนาดเลกใหเปนชนดของขอมลทใหญขน โดยกฎเกณฑการแปลงชนดขอมลสามารถศกษารายละเอยดในตารางท 5.1

ตารางท 5.2 การแปลงชนดขอมลของภาษาซ

ชนดของขอมล x ชนดของขอมล y ผลลพธทไดจากการแปลง int long long

char int int int float float int double double

float double double long double double

ชนดขอมลตาง ๆ long double long double จากตารางท 5.2 แถวท 1 จะสงเกตเหนวาตวแปร x เปนตวแปรชนดขอมลแบบ int และตวแปร y เปนตวแปรขอมลแบบ long เมอนา x และ y มาทาการบวก ลบ คณ หรอหารกน ผลลพธทไดจะเปนชนดขอมลแบบ long เพราะ long มพสยในการเกบขอมลกวางกวา int

ตวอยางเชน

int x=20; float y = 10;

ถา x/2 จะไดผลลพธเปน 10 (เปนชนดขอมลแบบ int) ถา x/y จะไดผลลพธเปน 10.000000 (เปนชนดขอมลแบบ float)

สรปทายบท

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

โดยชนดขอมลทสาคญในการใชงานในภาษาซ มดงน - ขอมลชนดตวอกษร (Character) คอ ขอมลทเปนรหสแทนตวอกษรหรอคาจานวนเตม

ไดแก ตวอกษร ตวเลข และกลมตวอกขระพเศษใชพนทในการเกบขอมล 1 ไบต

Page 67: เอกสารประกอบการสอน รายวิชา 3652204 การโปรแกรมคอมพิวเตอร ... · เอกสารประกอบการสอน

58

- ขอมลชนดจานวนเตม (Integer) คอ ขอมลทเปนเลขจานวนเตม ไดแก จานวนเตมบวก จานวนเตมลบ ศนย ใชพนทในการเกบ 2 ไบต

- ขอมลชนดจานวนเตมทมขนาด 2 เทา (Long Integer) คอ ขอมลทมเลขเปนจานวนเตม ใชพนท 4 ไบต

- ขอมลชนดเลขทศนยม (Float) คอ ขอมลทเปนเลขทศนยม ขนาด 4 ไบต - ขอมลชนดเลขทศนยมอยางละเอยด (Double) คอขอมลทเปนเลขทศนยม ใชพนทใน

การเกบ 8 ไบต

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

- หามตงชอตรงกบคาสงวน และตองไมมเครองหมายคานวณใด ๆ - ตองขนตนดวยอกษร และหามขนตนดวยตวเลข - หามเวนวรรค หากตองการเวนวรรคตองใชเครองหมาย _ (underscore) - ตวอกษรใหญและตวอกษรเลก ถอเปนคนละตวแปร - ตวอยางการประกาศตวแปรในภาษาซพรอมคาอธบาย

ตวอยางการประกาศตวแปรในภาษาซ char x, y[10]; เปนการประกาศตวแปรชอ x และ y มชนดเปน character และตวแปรสตรงมขนาด

10 bytes int A1, A_1; เปนการประกาศตวแปรชอ A1 และ A_1 มชนดเปน int คอใชเนอทในหนวยความจา

2 bytes และสามารถเกบตวเลขจานวนเตมทมคาอยในชวง -32768 ถง 32767 float number, monney; เปนการประกาศตวแปรชอ number และ monney มชนดเปน float คอใชเนอทใน

หนวยความจา 4 bytes สามารถเกบจานวนทศนยมและตวเลขทอยในรป E ยกกาลงได double dusit_trang, witoon; เปนการประกาศตวแปรชอ dusit_trang และ witoon มชนดเปน double คอใชเนอ

ทในหนวยความจา 8 bytes สามารถเกบจานวนทศนยมหรอตวเลขทอยในรป E ยกกาลงทมความละเอยดสงกวาชนด float

รปแบบการประกาศตวแปรในภาษาซ

ชนดขอมล ชอตวแปร;

Page 68: เอกสารประกอบการสอน รายวิชา 3652204 การโปรแกรมคอมพิวเตอร ... · เอกสารประกอบการสอน

59

คาถามทบทวน

1. จงอธบายขอแตกตางระหวางชนดขอมล int กบชนดขอมลแบบ long มความแตกตางกนอยางไร

2. จงอธบายขอแตกตางระหวางชนดขอมล float กบชนดขอมลแบบ double มความแตกตางกนอยางไร

3. ตวแปรคออะไรมความสาคญอยางไรตอการเขยนโปรแกรม 4. ในการเขยนโปรแกรมทกโปรแกรมจาเปนทตองมการประกาศตวแปรหรอไมจงอธบาย 5. จงประกาศตวแปรเพอเกบคาตวเลข 3 หลก 6. จงประกาศตวแปรเพอเกบคาตวเลข 7 หลก 7. จงประกาศตวแปรเพอเกบคาตวเลขแบบทศนยม โดยตวแปรจะตองมตวเลขประกอบดวย 8. จงประกาศตวแปรเพอเกบตวอกษร โดยตวแปรจะตองมตวเลขประกอบดวย 9. จงประกาศตวแปร 5 ตวเพอเกบคาตวเลข 10. จงประกาศตวแปร 4 ตวเพอเกบคาตวเลขแบบทศนยม 7 ตาแหนง

เอกสารอางอง

คะชา ชาญศลป. (2548). ภาษาซสาหรบผเรมตน. กรงเทพมหานคร: วรตนเอดดเคชน. ประภาพร ชางไม. (2545). คมอการเขยนโปรแกรมภาษา C ฉบบผเรมตน. กรงเทพมหานคร:

อนโฟเพรส. ธรวฒน ประกอบผล. (2553). คมอการเขยนโปรแกรมภาษา C. กรงเทพมหานคร: ซมพลฟลาย. สระสทธ ทรงมา และภรพจน แกวยอง. (2552). การโปรแกรมคอมพวเตอร.: มหาวทยาลยราชภฏ

สวนดสต. สานนท เจรญฉาย. (2543). การเขยนโปรแกรมและอลกอรทม. กรงเทพมหานคร: มหาจฬาลงกรณราช

วทยาลย. อรพน ประวตบรสทธ. (2554). คมอการเรยนภาษา C ฉบบปรบปรงใหม (พมพครงท 10).

กรงเทพมหานคร: โปรวชน. https://www.sites.google.com/site/khasangphasac/tawpaer-phasac.html http://www.e-learning.snru.ac.th/els/program1/lesson2/page2_5.html

Page 69: เอกสารประกอบการสอน รายวิชา 3652204 การโปรแกรมคอมพิวเตอร ... · เอกสารประกอบการสอน

60

บทท 6

ขนตอนการพฒนาโปรแกรมและคาสงการทางานของภาษาซ

แผนการสอนประจาบท หวขอเนอหา 6.1 ขนตอนการพฒนาโปรแกรมของภาษาซ

6.2 คาสงการทางานของภาษาซ 6.2.1 คาสง printf 6.2.2 คาสง putchar 6.2.3 คาสง puts 6.2.4 คาสง scanf 6.2.5 คาสง getchar 6.2.6 คาสง getch 6.2.7 คาสง clrscr 6.2.8 คาสง goto

วตถประสงคเชงพฤตกรรม 1. ผเรยนสามารถอธบายและเขาใจขนตอนการพฒนาโปรแกรมของภาษาซไดอยางถกตอง 2. ผเรยนสามารถเขาใจและอธบายการทางานของภาษาซไดอยางถกตอง 3. ผเรยนสามารถเลอกนาคาสงการทางานของภาษาซไปพฒนาโปรแกรมไดอยางถกตอง วธการสอน 1. สอนแบบบรรยายโดยใชเอกสารประกอบการสอน 2. สอนแบบบรรยายโดยใช Slide Power Point 3. สอนโดยใชโปรแกรม Turbo C++ 4.5 เพอลงมอปฏบตในการเขยนโปรแกรมภาษาซ

4. สอนโดยใหผเรยนเปนสวนกลาง โดยใชวธถามตอบกบผเรยนระหวางบรรยาย 5. ใหผเรยนสรปและอธบายหวขอทผเรยนทไดรบมอบหมาย

สอการเรยนการสอน 1. เอกสารประกอบการสอน

2. Slide Power Point 3. โปรแกรม Turbo C++ 4.5 4. ตวอยางแบบทดสอบ

การวดผลและประเมนผล 1. การทาโจทยทดลอง และการทาแบบฝกหด

2. ความตงใจในชนเรยน การตอบคาถามและการรวมทากจกรรมในชนเรยน

Page 70: เอกสารประกอบการสอน รายวิชา 3652204 การโปรแกรมคอมพิวเตอร ... · เอกสารประกอบการสอน

61

บทท 6

ขนตอนการพฒนาโปรแกรมและคาสงการทางานของภาษาซ

6.1 ขนตอนการพฒนาโปรแกรมของภาษาซ

ภาพท 6.1 ผงงานแสดงขนตอนการพฒนาโปรแกรมภาษาซ

ไมถกตอง

ไมถกตอง

ถกตอง

เรมตน

จบการทางาน

เขยนโปรแกรมตนฉบบ

ตรวจสอบ ไวยากรณภาษา

ถกตอง

แปลโปรแกรมภาษาเครอง

Execute Program

ตรวจสอบความ ถกตองของผลลพธ

C Compiler

แสดงผลลพธ

C Library

Page 71: เอกสารประกอบการสอน รายวิชา 3652204 การโปรแกรมคอมพิวเตอร ... · เอกสารประกอบการสอน

62

จากภาพท 6.1 เปนผงงานแสดงขนตอนการพฒนาโปรแกรมภาษาซ ซงสามารถอธบายใน การทางานในแตละมขนตอน ดงน

6.1.1 เขยนโปรแกรมตนฉบบดวยภาษาซ ใชการเขยนโปรแกรมภาษาซในการศกษาคร งนจะใช โปรแกรม Turbo C ในการเขยนและพฒนาโปรแกรม ซงการเขยนโปรแกรมผพฒนาจะตองเขยนโปรแกรมตนฉบบดวยภาษาซขนมากอนหนงโปรแกรม โดยการเขยนจะตองคานงถงหลกไวยากรณของภาษาเปนหลก จากนนทาการบนทกโปรแกรมพรอมกบตงชอแฟมไว โดยแฟมทไดจะมนามสกล *.c หรอ เชน simple1.c เปนตน 6.1.2 แปลโปรแกรมภาษาซไปเปนโปรแกรมภาษาเครอง ในการแปลโปรแกรมภาษาซไปเปนโปรแกรมภาษาเครอง เปนการใชคาสง compile เพอแปลโปรแกรมภาษาซไปเปนโปรแกรมภาษาเครอง แฟมทไดจะมนามสกล *.obj ซงในขนตอนนโปรแกรมตนฉบบอาจเกดความผดพลาดทางไวยากรณภาษาขนได จงตองยอนกลบไปแกไขโปรแกรมตนฉบบตามขนตอนทหนงใหถกตองเสยกอน 6.1.3 เชอมโยงโปรแกรมภาษาเครองเขากบ library function ของภาษาซ

การเชอมโยงโปรแกรมภาษาเครองเขากบ library function ของภาษาซ จะไดเปนการ execute program โดยใชคาสง link แฟมทไดจะมนามสกล *.exe 6.1.4 การ execute program เพอแสดงผลลพธออกมา

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

Page 72: เอกสารประกอบการสอน รายวิชา 3652204 การโปรแกรมคอมพิวเตอร ... · เอกสารประกอบการสอน

63

6.2 คาสงการทางานของภาษาซ คาสงการทางานของภาษาซ คอ ชดคาสงทผพฒนาโปรแกรมตองการใหโปรแกรมคอมพวเตอรทางานตามผลลพธทตองการใหแสดง โดยคาสงการงานในภาษาซมมากมายหลายคาสง ซงจะมการศกษาคาสงจากคาสงพนฐานจนถงคาสงระดบสงขนไป 6.2.1 คาสง printf( ) คาสง printf ถอวาเปนคาสงพนฐานทสดในการแสดงผลขอมลทกชนดออกทางหนาจอ ไมวาจะเปนจานวนเตม ( int ) , ทศนยม ( float ) , ขอความ ( string ) หรออกขระ นอกจากนคาสงยงมความยดหยนสง โดยผพฒนาโปรแกรมสามารถกาหนดหรอจดรปแบบการแสดงผลใหมระเบยบหรอเหมาะสมตามความตองการ ดงตารางแสดงรหสควบคมดงตารางท 6.1 และนอกจากนผพฒนาโปรแกรมยงสามารถจดรปแบบการแสดงผลใหดเปนระเบยบมากขน เชน การขนบรรทดใหมหลงแสดงขอความ หรอเวนระยะแทบระหวางขอความ โดยใชอกขระควบคมการแสดงผลรวมกบคาสง printf ในภาษาซมอกขระควบคมการแสดงผลหลายรปแบบดวยกน ดงแสดงไวในตารางท 6.2

ตารางท 6.1 รหสควบคมรปแบบการแสดงผลคาของตวแปรออกทางหนาจอ

รหสควบคมรปแบบ การนาไปใชงาน %d สาหรบแสดงผลคาของตวแปรชนดจานวนเตม ( int, short, unsigned

short, long, unsigned long) %u สาหรบแสดงผลตวเลขจานวนเตมบวก ( unsigned short, unsigned

long ) %o สาหรบแสดงผลออกมาในรปแบบของเลขฐานแปด %x สาหรบแสดงผลออกมาในรปแบบของเลขฐานสบหก %f สาหรบแสดงผลคาของตวแปรชนดจานวนทศนยม ( float, double, long

double ) %e สาหรบแสดงผลตวเลขทศนยมออกมาในรปแบบของ ( E หรอ e ) ยกกาลง

( float, double, long double ) %c สาหรบแสดงผลอกขระ 1 ตว ( char ) %s สาหรบแสดงผลขอความ ( string หรออกขระมากกวา 1 ตว) %p สาหรบแสดงผลตวชตาแหนง ( pointer )

ตารางท 6.2 การจดระแบบระเบยบขอความดวยอกขระควบคมการแสดงผล

อกขระควบคมการแสดงผล ความหมาย \n ขนบรรทดใหม \t เวนชองวางเปนระยะ 1 แทบ (6 ตวอกษร) \r กาหนดใหเคอรเซอรไปอยตนบรรทด \f เวนชองวางเปนระยะ 1 หนาจอ \b ลบอกขระสดทายออก 1 ตว

Page 73: เอกสารประกอบการสอน รายวิชา 3652204 การโปรแกรมคอมพิวเตอร ... · เอกสารประกอบการสอน

64

ในการใชเรยกใชงานคาสง printf( ) จะมรปแบบการเรยกใชคาสง printf( ) อย 2 กรณหลก โดยแสดงวธการใชงานคาสง printf( ) ทงสองกรณดงน 6.2.1.1 กรณแสดงขอความอยางเดยว

format คอ ขอความทตองการใหแสดงออกทางหนาจอโดยขอมลนตองเขยนไวในเครองหมาย “ ” ซงการทางานแสดงผลไวดงตวอยาง

ตวอยางท 6.1 แสดงการทางานของคาสง printf( ) กรณแสดงขอความอยางเดยว

ผลลพธเมอทดสอบโปรแกรม

ตวอยางท 6.2 แสดงการทางานของคาสง printf( ) กรณแสดงขอความอยางเดยวแตแสดงหลายขอความ

printf(“ format ”);

// โคดโปรแกรม #include "stdio.h" main( )

{ printf (“Dusittrang”);

} }

Dusittrang }

// โคดโปรแกรม #include "stdio.h" main( )

{ printf (“Dusittrang”); printf (“ Dusittrang”); printf (“ Dusittrang”);

}

Page 74: เอกสารประกอบการสอน รายวิชา 3652204 การโปรแกรมคอมพิวเตอร ... · เอกสารประกอบการสอน

65

ผลลพธเมอทดสอบโปรแกรม

ตวอยางท 6.3 แสดงการทางานของคาสง printf( ) กรณแสดงขอความอยางเดยว แตแสดงหลาย

ขอความ และมการเวนใหขนบรรทดใหมเมอมขอความใหม โดยการใชอกขระควบคม \n

ผลลพธเมอทดสอบโปรแกรม

Dusittrang Dusittrang Dusittrang }

// โคดโปรแกรม #include "stdio.h" main( )

{ printf (“Dusittrang\n”); printf (“ Dusittrang\n”); printf (“ Dusittrang\n”); printf (“ Dusittrang”);

}

Dusittrang Dusittrang

Dusittrang Dusittrang

Page 75: เอกสารประกอบการสอน รายวิชา 3652204 การโปรแกรมคอมพิวเตอร ... · เอกสารประกอบการสอน

66

6.2.1.2 กรณแสดงขอความพรอมทงแสดงขอมลในตวแปร

format คอ ขอมลทตองการแสดงออกทางหนาจอโดยขอมลนตองเขยนไวในเครองหมาย “ ” ขอมลทสามารถแสดงผลไดมอย 2 ประเภท คอ ขอความธรรมดา และคาทเกบไวในตวแปร ซงถาเปนคาทเกบไวในตวแปรตองใสรหสควบคมรปแบบใหตรงกบชนดของขอมลทเกบไวในตวแปรนนดวย

variable คอ ตวแปรหรอนพจนทตองการนาคาไปแสดงผลใหตรงกบรหสควบคมรปแบบทกาหนดไว

ตวอยางท 6.4 แสดงการทางานของคาสง printf( ) กรณแสดงขอความพรอมทงแสดงขอมลใน ตวแปร

ผลลพธเมอทดสอบโปรแกรม

ตวอยางท 6.5 แสดงการทางานของคาสง printf( ) กรณแสดงหลายตวแปร

printf(“ format ” , variable);

// โคดโปรแกรม #include "stdio.h" main( )

{ int num = 10;

printf (“Ans : %d” , num); } }

Ans : 10 }

// โคดโปรแกรม #include "stdio.h" main( )

{ int num1 = 10 , num2 = 20 num3 = 30;

printf (“Ans : %d,%d,%d ” , num1,num2,num3); }

Page 76: เอกสารประกอบการสอน รายวิชา 3652204 การโปรแกรมคอมพิวเตอร ... · เอกสารประกอบการสอน

67

ผลลพธเมอทดสอบโปรแกรม

ตวอยาง 6.6 แสดงการทางานของคาสง printf( ) กรณแสดงหลายตวแปรแตตองการเวนชองวาง โดยการใชอกขระควบคม \t

ผลลพธเมอทดสอบโปรแกรม

ตวอยางท 6.7 แสดงการทางานของคาสง printf( ) กรณแสดงขอความพรอมทงแสดงขอมลในตว

แปรทเปนตวเลขทศนยม

ผลลพธเมอทดสอบโปรแกรม

Ans : 102030 }

// โคดโปรแกรม #include "stdio.h" main( )

{ int num1 = 10 , num2 = 20 num3 = 30;

printf (“Ans : %d\t,%d\t,%d ” , num1,num2,num3); }

Ans : 10 20 30

// โคดโปรแกรม #include "stdio.h" main( )

{ float num = 10.00; printf (“Ans : %f” , num);

} }

Ans : 10.000000 }

Page 77: เอกสารประกอบการสอน รายวิชา 3652204 การโปรแกรมคอมพิวเตอร ... · เอกสารประกอบการสอน

68

ตวอยางท 6.8 แสดงการทางานของคาสง printf( ) กรณแสดงขอความพรอมทงแสดงขอมลใน ตวแปรทเปนตวเลขทศนยม แตกาหนดจานวนเลขทศนยม โดยการใช %._f เปนตวกาหนดจานวนทศนยม

ผลลพธเมอทดสอบโปรแกรม

ตวอยางท 6.9 แสดงการทางานของคาสง printf( ) กรณแสดงขอความพรอมทงแสดงขอมลใน ตวแปรทเปนตวเลขทศนยม แตตดตวเลขทศนยมตวสดทายออกดวยการใช โดยการใชอกขระควบคม \b

// โคดโปรแกรม #include "stdio.h" main( )

{ float num = 35.4589; printf (“Ans : %f\n” , num); printf (“Ans : %.2f\n” , num); printf (“Ans : %.3f\n” , num); printf (“Ans : %.4f\n” , num); printf (“Ans : %.5f\n” , num);

} }

Ans : 35.458900 Ans : 35.45 Ans : 35.458 Ans : 35.4589 Ans : 35.45890

// โคดโปรแกรม #include "stdio.h" main( )

{ float num = 12.4567; printf (“Ans : %f\n” , num); printf (“Ans : %\b\n” , num); printf (“Ans : %f\b\b\n” , num); printf (“Ans : %f\b\b\b\n” , num); printf (“Ans : %f\b\b\b\b\n” , num);

} }

Page 78: เอกสารประกอบการสอน รายวิชา 3652204 การโปรแกรมคอมพิวเตอร ... · เอกสารประกอบการสอน

69

ผลลพธเมอทดสอบโปรแกรม

6.2.2 คาสง putchar() ในการแสดงผลตวอกษรหรออกขระ (char) ออกทางหนาจอ นอกจากใชคาสง printf( )

พรอมกบกาหนดรหสควบคมรปแบบ %c แลว เราสามารถเรยกใชคาสงสาหรบแสดงตวอกษรหรออกขระโดยเฉพาะไดอกดวย โดยคาสงนน คอ คาสง putchar( ) ซงมรปแบบการเรยกใชคาสงแสดงไวดงตอไปน

ch คอ ตวอกษรหรออกขระเขยนอยภายในเครองหมาย ‘c' หรอตวแปรชนด char

ตวอยางท 6.10 แสดงการทางานของคาสง putchar( )

ผลลพธเมอทดสอบโปรแกรม

Ans : 12.345670 Ans : 12.34567 Ans : 12.3456 Ans : 12.345 Ans : 12.34

putchar(ch);

// โคดโปรแกรม #include "stdio.h" main( )

{ putchar(‘w’);

putchar(‘i’); putchar(‘t’); putchar(‘o’); putchar(‘o’); putchar(‘n’);

} }

witoon }

Page 79: เอกสารประกอบการสอน รายวิชา 3652204 การโปรแกรมคอมพิวเตอร ... · เอกสารประกอบการสอน

70

6.2.3 คาสง puts() คาสง puts() คอ คาสงในการแสดงผลขอความหรออกษรออกทางหนา

จอคอมพวเตอร ดงนนขอแตกตางระหวางคาสง putchar( ) กบคาสง puts() คอ putchar( ) จะสามารถแสดงผลแคตวอกษรหรออกขระ แต puts() สามารถแสดงผลเปนขอความได ซงมรปแบบการเรยกใชคาสง puts() แสดงไวดงตอไปน

ตวอยางท 6.11 แสดงการทางานของคาสง puts( )

ผลลพธเมอทดสอบโปรแกรม

ตวอยางท 6.12 แสดงการทางานของคาสง puts( ) โดยมการแสดงจากตวแปร

ผลลพธเมอทดสอบโปรแกรม

puts( );

// โคดโปรแกรม #include "stdio.h" main( )

{ puts(“witoon”);

puts(“kongphon”); } }

witoon kongphon

}

// โคดโปรแกรม #include "stdio.h" main( ) {

char name1[ ] = “Somsak”; char name2[ ] = “Ratthai”; puts(name1);

puts(name2); } }

Somsak Ratthai

}

Page 80: เอกสารประกอบการสอน รายวิชา 3652204 การโปรแกรมคอมพิวเตอร ... · เอกสารประกอบการสอน

71

6.2.4 คาสง scanf( ) คาสง scanf( ) เปนคาสงพนฐานทใชในการรบผลขอมลจากผใชงาน และในภาษาซ การรบขอมลจากคยบอรดสามารถทาไดโดยการเรยกใชฟงกชน scanf( ) ซงเปนฟงกชนมาตรฐานสาหรบรบขอมลจากคยบอรด โดยสามารถรบขอมลไดทกประเภท ไมวาจะเปนจานวนเตม (int) , ทศนยม (float) ,อกขระ (char) หรอขอความกตาม รปแบบการเรยกใชคาสง scanf( ) คลายกบการเรยกใชคาสง printf( ) ดงแสดงรปแบบของคาสง scanf( ) ไวดงตอไปน

format คอ การกาหนดรหสควบคมรปแบบ เพอกาหนดชนดของขอมลทจะรบเขามาจากคยบอรด โดยรหสควบคมรปแบบจะใชชดเดยวกบรหสควบคมรปแบบของคาสง printf( )

variable คอ ตวแปรทจะใชเกบคาขอมลทรบเขามาจากคยบอรด โดยชนดของตวแปรจะตองตรงกบรหสควบคมรปแบบทกาหนดไว นอกจากน หนาชอของตวแปรจะตองนาหนาดวยเครองหมาย & ยกเวนตวแปรสตรงสาหรบเกบขอความเทานนทไมตองนาหนาดวยเครองหมาย &

ตวอยางท 6.13 แสดงการทางานของคาสง scanf( ) กรณรบขอมลชนดเลขจานวนเตม (int)

ผลลพธเมอทดสอบโปรแกรม

scanf(“ format ” , &variable);

// โคดโปรแกรม #include "stdio.h" main( )

{ int num;

printf("Enter number :"); scanf("%d" ,&num);

printf("\nAns = %d", num);}

}

Enter number : 12345 Ans : 12345

}

Page 81: เอกสารประกอบการสอน รายวิชา 3652204 การโปรแกรมคอมพิวเตอร ... · เอกสารประกอบการสอน

72

ตวอยางท 6.14 แสดงการทางานของคาสง scanf( ) กรณรบขอมลชนดเลขทศนยม (float)

ผลลพธเมอทดสอบโปรแกรม

ตวอยาง 6.15 แสดงการทางานของคาสง scanf( ) กรณรบขอมลชนดตวอกษร (char)

ผลลพธเมอทดสอบโปรแกรม

// โคดโปรแกรม #include "stdio.h" main( )

{ float num;

printf("Enter number :"); scanf("%f", &num);

printf("\nAns = %f", num); printf("\nAns = %.2f", num);} }

}

Enter number : 987.56 Ans : 987.559998 Ans : 987.56

// โคดโปรแกรม #include "stdio.h" main( )

{ char ch[20]; printf("Name :"); scanf("%s" ,&ch); printf("\n Wellcome %s",ch); }

Name : Witoon Wellcome : Witoon

Page 82: เอกสารประกอบการสอน รายวิชา 3652204 การโปรแกรมคอมพิวเตอร ... · เอกสารประกอบการสอน

73

6.2.5 คาสง getchar( ) ในการรบคาในภาษาซนอกจากใชคาสง scanff( ) แลว ผพฒนาโปรแกรม

สามารถเรยกใชคาสง getchar( ) เพอการรบคาไดอกดวย โดยรปแบบการเรยกใชคาสง getchar( ) แสดงไวดงตอไปน

ch คอ ตวแปรชนด char เพอใชเกบคาของอกขระหรอตวอกษรทรบเขามา

ตวอยางท 6.16 แสดงการทางานของคาสง getchar( )

ผลลพธเมอทดสอบโปรแกรม

ch = getchar( );

// โคดโปรแกรม #include "stdio.h" main( )

{ char ch; printf("name :"); ch = getchar(); printf("\n Hello :%s",ch);}

}

name : witoon Hello : witoon

}

Page 83: เอกสารประกอบการสอน รายวิชา 3652204 การโปรแกรมคอมพิวเตอร ... · เอกสารประกอบการสอน

74

6.2.6 คาสง getch( ) ในการรบคาอกษระในภาษาซ นอกจากใชคาสง scanff( ) และคาสง getchar( )

แลว ผพฒนาโปรแกรมสามารถเรยกใชคาสง getch( ) เพอใชในการรบขอมลไดอกคาสงหนง ขอสงเกตถงแมวาทงคาสง getchar( ) และ getch( ) จะใชสาหรบรบขอมลชนดอกขระเหมอนกน แตทง 2 คาสงนมความแตกตางกนอยตรงท คาสง getchar( ) เมอปอนอกขระเขามาแลว จะตองกดปม <Enter> โปรแกรมจงจะกลบไปทางานตอได และตวอกขระทเราปอนจะแสดงขนมาใหเหนบนหนาจอดวย สวนคาสง getch( ) ไมตองกดปม <Enter> เพยงแคผใชงานปอนอกขระเขามา 1 ตว โปรแกรมจะกลบไปทางานตอทนท และตวอกขระทเราปอนจะไมแสดงขนมาใหเหน โดยรปแบบการเรยกใชคาสง getchar( ) แสดงไวดงตอไปน

ch คอ ตวแปรชนด char เพอใชเกบคาของอกขระหรอตวอกษรทรบเขามา

ตวอยางท 6.17 แสดงการทางานของคาสง getch( )

ผลลพธเมอทดสอบโปรแกรม

ch = getch( );

// โคดโปรแกรม #include "stdio.h" main( )

{ char ch; printf("Enter :"); ch = getch(); printf("\n Ans :%c",ch);}

}

Enter : 1 Ans : 1

}

Page 84: เอกสารประกอบการสอน รายวิชา 3652204 การโปรแกรมคอมพิวเตอร ... · เอกสารประกอบการสอน

75

6.2.7 คาสง clrscr( ) คาสง clrscr( ) เปนคาสงทใชในการเคลยรหรอลางหนาจอ ประโยชนหลกของ

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

ตวอยางท 6.18 แสดงการทางานของคาสง clrscr( )

ผลลพธเมอทดสอบโปรแกรม

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

clrscr( );

// โคดโปรแกรม #include "stdio.h" main( )

{ char ch;

printf("Hello witoon"); ch = getch(); clrscr( ) ; printf("Wellcome to Thailand");

}

Hello witoon }

Wellcome to Thailand

Page 85: เอกสารประกอบการสอน รายวิชา 3652204 การโปรแกรมคอมพิวเตอร ... · เอกสารประกอบการสอน

76

6.2.8 คาสง goto คาสง goto เปนคาสงทใชในการขามหรอกระโดดกลบไปทางานในคาสงอน ๆ

ตามทผพฒนาโปรแกรมตองการ โดยรปแบบการเรยกใชคาสง goto แสดงไวดงตอไปน

loop คอ ตาแหนงทตองการใหโปรแกรมกระโดดไปทางานในตาแหนงนน ๆ

ตวอยางท 6.19 แสดงการทางานของคาสง goto

ผลลพธเมอทดสอบโปรแกรม

จากโปรแกรมจะสงเกตวา เมอโปรแกรมเจอคาสง goto เมอไร โปรแกรมจะทาการกระโดดไปทางานตามทตาแหนง loop กาหนดไว

goto loop;

// โคดโปรแกรม #include "stdio.h" main( )

{ printf("1\n"); goto loop1;

printf("2\n"); loop1: printf("3\n");

goto loop2; printf("4\n");

loop2: printf("5\n"); }

1 3 5

Page 86: เอกสารประกอบการสอน รายวิชา 3652204 การโปรแกรมคอมพิวเตอร ... · เอกสารประกอบการสอน

77

สรปทายบท

ขนตอนของการพฒนาโปรแกรมภาษาซ

ในขนตอนของการพฒนาโปรแกรมภาษาซ จะมขนตอนในการทางาน ดงน 1. เขยนโปรแกรมตนฉบบดวยภาษาซ

ซงการเขยนโปรแกรมผพฒนาจะตองเขยนโปรแกรมตนฉบบดวยภาษาซขนมากอนหนงโปรแกรม โดยการเขยนจะตองคานงถงหลกไวยากรณของภาษาเปนหลก จากนนทาการบนทกโปรแกรมพรอมกบตงชอแฟมไว โดยแฟมทไดจะมนามสกล *.c หรอ เชน simple1.c เปนตน

2. แปลโปรแกรมภาษาซไปเปนโปรแกรมภาษาเครอง ในการแปลโปรแกรมภาษาซไปเปนโปรแกรมภาษาเครอง เปนการใชคาสง compile เพอแปลโปรแกรมภาษาซไปเปนโปรแกรมภาษาเครอง แฟมทไดจะมนามสกล *.obj ซงในขนตอนนโปรแกรมตนฉบบอาจเกดความผดพลาดทางไวยากรณภาษาขนได จงตองยอนกลบไปแกไขโปรแกรมตนฉบบตามขนตอนทหนงใหถกตองเสยกอน 3. เชอมโยงโปรแกรมภาษาเครองเขากบ library function ของภาษาซ

การเชอมโยงโปรแกรมภาษาเครองเขากบ library function ของภาษาซ จะไดเปนการ execute program โดยใชคาสง link แฟมทไดจะมนามสกล *.exe 4. การ execute program เพอแสดงผลลพธออกมา

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

คาสงพนฐานในการทางานของภาษาซ คาสง printf( ) ถอวาเปนคาสงพนฐานทสดในการแสดงผลขอมลทกชนดออกทางหนาจอ

ไมวาจะเปนจานวนเตม ( int ) , ทศนยม ( float ) , ขอความ ( string ) หรออกขระ คาสง putchar( ) คอ คาสงในการแสดงผลตวอกษรหรออกขระ (char) ออกทางหนาจอ นอกจากใชคาสง printf( ) พรอมกบกาหนดรหสควบคมรปแบบ %c แลว เราสามารถเรยกใชคาสงสาหรบแสดงตวอกษรหรออกขระโดยเฉพาะไดอกดวย

คาสง puts( ) คอ คาสงในการแสดงผลขอความหรออกษรออกทางหนาจอคอมพวเตอร ดงนนขอแตกตางระหวางคาสง putchar( ) กบคาสง puts() คอ putchar( ) จะสามารถแสดงผลแคตวอกษรหรออกขระ แต puts( ) สามารถแสดงผลเปนขอความได

คาสง scanf( ) เปนคาสงพนฐานทใชในการรบผลขอมลจากผใชงาน และในภาษาซ การรบขอมลจากคยบอรดสามารถทาไดโดยการเรยกใชฟงกชน scanf( ) ซงเปนฟงกชนมาตรฐานสาหรบรบขอมลจากคยบอรด โดยสามารถรบขอมลไดทกประเภท ไมวาจะเปนจานวนเตม (int) , ทศนยม (float) ,อกขระ (char) หรอขอความกตาม

คาสง getchar( ) โดยในการรบคาขอมลตาง ๆ ในภาษาซนอกจากใชคาสง scanff( ) แลว ผพฒนาโปรแกรมสามารถเรยกใชคาสง getchar( ) เพอการรบคาไดอกดว

คาสง getch( ) ในการรบคาอกษระในภาษาซ นอกจากใชคาสง scanff( ) และคาสง getchar( ) แลว ผพฒนาโปรแกรมสามารถเรยกใชคาสง getch( ) เพอใชในการรบขอมลไดอกคาสงหนง ขอสงเกตถงแมวาทงคาสง getchar( ) และ getch( ) จะใชสาหรบรบขอมลชนดอกขระเหมอนกน แตทง 2

Page 87: เอกสารประกอบการสอน รายวิชา 3652204 การโปรแกรมคอมพิวเตอร ... · เอกสารประกอบการสอน

78

คาสงนมความแตกตางกนอยตรงท คาสง getchar( ) เมอปอนอกขระเขามาแลว จะตองกดปม <Enter> โปรแกรมจงจะกลบไปทางานตอได และตวอกขระทเราปอนจะแสดงขนมาใหเหนบนหนาจอดวย สวนคาสง getch( ) ไมตองกดปม <Enter> เพยงแคผใชงานปอนอกขระเขามา 1 ตว โปรแกรมจะกลบไปทางานตอทนท และตวอกขระทเราปอนจะไมแสดงขนมาใหเหน

คาสง clrscr( ) เปนคาสงทใชในการเคลยรหรอลางหนาจอ ประโยชนหลกของคาสงน คอ ผพฒนาโปรแกรมสามารถทจะทาการลางหนาจอรายงานตาง ๆ ของขอมลออกไปได

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

1. จงอธบายขนตอนของการพฒนาโปรแกรมภาษาซวามกขนตอนอะไรบาง และแตละขนตอนมความสาคญอยางไรตอการเขยนโปรแกรมคอมพวเตอร

2. จงเขยนโปรแกรมใหแสดงผลขอมลดงน I Love Dusittrang.

3. จงเขยนโปรแกรมใหแสดงผลขอมลดงน C Programming C Programming C Programming C Programming C Programming C Programming

4. จงเขยนโปรแกรมเพอรบคาตวอกขระพรอมทงแสดงผลตวอกขระทรบเขามา แลวใหโปรแกรมขนไปรบคาใหม ดงตวอยางตอไปน Enter Character : a Show Character : a

Enter Character : Z Show Character : Z

Enter Character : y Show Character : y 5. จงเขยนโปรแกรมเพอรบคาตวเลขพรอมทงแสดงผลตวเลขทรบเขามา จากนนใหโปรแกรมรอรบคาใด ๆ จากคยบอรด หากมการปอนคาใด ๆ จากคยบอรดใหโปรแกรมจะลางขอมลทหนาจอใหม แลวใหโปรแกรมขนไปรบคาใหมอกครง ดงตวอยางตอไปน

Enter Number : 55.01 Numbe = 55.01

หากมกดคยบอรด (โปรแกรมจะลางขอมลหนาจอใหม แลวใหโปรแกรมขนไปรบคาใหมอกครง) Enter Number :

Page 88: เอกสารประกอบการสอน รายวิชา 3652204 การโปรแกรมคอมพิวเตอร ... · เอกสารประกอบการสอน

79

6. จงเขยนโปรแกรมแปลงคาจากหนวยเมตรเปนหนวยเซนตเมตร ดงตวอยาง Meter = 1

Centimeter = 100

Meter = 2.5 Centimeter = 2500

7. จงเขยนโปรแกรมคานวณหาพนทสามเหลยม โดยโปรแกรมทาการรบคา ฐาน และ สง แลว

นามาคานวณตามสตรพนทสามเหลยม = (1/2) x ฐาน x สง ดงตวอยาง base = 10

high = 20 triangle = 100.00

base = 8 high = 15 triangle = 60.00

เอกสารอางอง

คะชา ชาญศลป. (2548). ภาษาซสาหรบผเรมตน. กรงเทพมหานคร: วรตนเอดดเคชน. ประภาพร ชางไม. (2545). คมอการเขยนโปรแกรมภาษา C ฉบบผเรมตน. กรงเทพมหานคร:

อนโฟเพรส. ธรวฒน ประกอบผล. (2553). คมอการเขยนโปรแกรมภาษา C. กรงเทพมหานคร: ซมพลฟลาย. สระสทธ ทรงมา และภรพจน แกวยอง. (2552). การโปรแกรมคอมพวเตอร.: มหาวทยาลยราชภฏ

สวนดสต. สานนท เจรญฉาย. (2543). การเขยนโปรแกรมและอลกอรทม. กรงเทพมหานคร: มหาจฬาลงกรณราช

วทยาลย. สมชาย รตนเลศนสรณ. (2553). การเขยนโปรแกรมคอมพวเตอรดวยภาษาซ. กรงเทพมหานคร: สมาคม

สงเสรมเทคโนโลย (ไทย-ญปน) ส.ส.ท. อรพน ประวตบรสทธ. (2554). คมอการเรยนภาษา C ฉบบปรบปรงใหม (พมพครงท 10).

กรงเทพมหานคร: โปรวชน. http://www.mwit.ac.th/~cs/download/tech30101/TECH30101_ch7.html http://www.e-learning.snru.ac.th/els/program1/lesson2/page2_4.html https://www.sites.google.com/site/cprogramingbypanus/kar-saedng-phllaphth/printf1.html http://www.krubpk.com/com_2/pan7/pan7.html

Page 89: เอกสารประกอบการสอน รายวิชา 3652204 การโปรแกรมคอมพิวเตอร ... · เอกสารประกอบการสอน

80

บทท 7

โครงสรางการควบคมการทางานแบบทางเลอก

แผนการสอนประจาบท หวขอเนอหา 7.1 คาสง if 7.1.1 คาสง if แบบเลอกทาทางเดยว (if) 7.1.2 คาสง if แบบเลอกทาสองทาง (if… else) 7.1.3 คาสง if แบบเลอกทาหลายทาง (if… else if)

7.2 คาสง switch วตถประสงคเชงพฤตกรรม 1. ผเรยนสามารถเขาใจหลกการทางานของคาสง if ไดอยางเขาใจและถกตอง 2. ผเรยนสามารถนาคาสง if ไปใชงานในการเขยนโปรแกรมในกรณตาง ๆ ไดอยางถกตอง 3. ผเรยนสามารถเขาใจหลกการทางานของคาสง switch ไดอยางเขาใจและถกตอง

4. ผเรยนสามารถนาคาสง switch ไปใชงานในการเขยนโปรแกรมในกรณตาง ๆ ไดอยางถกตอง วธการสอน 1. สอนแบบบรรยายโดยใชเอกสารประกอบการสอน 2. สอนแบบบรรยายโดยใช Slide Power Point 3. สอนโดยใชโปรแกรม Turbo C++ 4.5 เพอลงมอปฏบตในการเขยนโปรแกรมภาษาซ

4. สอนโดยใหผเรยนเปนสวนกลาง โดยใชวธถามตอบกบผเรยนระหวางบรรยาย 5. ใหผเรยนสรปและอธบายหวขอทผเรยนทไดรบมอบหมาย

สอการเรยนการสอน 1. เอกสารประกอบการสอน

2. Slide Power Point 3. โปรแกรม Turbo C++ 4.5 4. ตวอยางแบบทดสอบ

การวดผลและประเมนผล 1. การทาตามตวอยางโจทยคาสงและการทาแบบฝกหด

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

Page 90: เอกสารประกอบการสอน รายวิชา 3652204 การโปรแกรมคอมพิวเตอร ... · เอกสารประกอบการสอน

81

บทท 7

โครงสรางการควบคมการทางานแบบทางเลอก

ในการพฒนาหรอเขยนโปรแกรมคอมพวเตอรไมวาจะเปนภาษาคอมพวเตอรใด ๆ กตามเงอนไขหนงทมการเรยกใชงานอยางบอยครง คอ เงอนไขแบบทางเลอก โดยในภาษาซจะมคาสงทเปนการเลอกเงอนไขการทางานอย 2 คาสง คอ คาสง if และคาสง switch แตคาสงทมการใชงานมากนนกคอคาสง if ดงนนนนผทคดจะพฒนาโปรแกรมคอมพวเตอรจะตองมความเชยวชาญในการใชคาสง if ใหมาก เพราะเปนคาสงทตองมาใชในการตดสนใจในทางเลอกทางทางานใหกบโปรแกรม ซงในการพฒนาโปรแกรมคอมพวเตอร ผพฒนาจะมการเรยกใชงานคาสง if ไดหลายรปแบบขนอยกบความเหมาะสมกบเงอนไขนน ๆ โดยคาสง if จะมรปแบบหลกอย 3 รปแบบ คอ

1.) คาสง if แบบเลอกทาทางเดยว (if) 2.) คาสง if แบบเลอกทาสองทาง (if… else) 3.) คาสง if แบบเลอกทาหลายทาง (if… else if)

7.1 คาสง if

7.1.1 คาสง if แบบเลอกทาทางเดยว (if) คาสง if แบบเลอกทาทางเดยว เปนคาสงทใชในการตรวจสอบเงอนไขของผใชงาน โดยจะตรวจสอบแบบทางเดยว คอ จะทางานเฉพาะกรณทเงอนไขเปนจรงเทานน หากเงอนไขเปนเทจจะไมทางาน โดยเงอนไขทเปนจรง คอ คาสงทอยใน { } ของคาสง if เทานน ซงคาสง if แบบเลอกทาทางเดยวมรปแบบการทางานของคาสง if แบบเลอกทาทางเดยวแสดงไว ดงน

If (เงอนไข) { // ชดคาสงทเปนจรง คาสง…… 1

คาสง…… 2 คาสง…… 3

คาสง…… คาสง…… คาสง……

}

Page 91: เอกสารประกอบการสอน รายวิชา 3652204 การโปรแกรมคอมพิวเตอร ... · เอกสารประกอบการสอน

82

ภาพท 7.1 ผงงานแสดงการทางานของคาสง if แบบเลอกทาทางเดยว ตวอยางการใชคาสง if แบบเลอกทาทางเดยว

ตวอยางท 7.1 ใหโปรแกรมรบคานาหนกจากผใชงาน แลวใหตรวจสอบวาคานาหนกทรบรบมามคามากกวา 100 หรอไม ถามากกวาหรอเทากบ 80 ใหโปรแกรมแสดงคาวา “Fat” ออกมาทางหนาจอ

// โคดโปรแกรม #include "stdio.h" main( )

{ float weight; printf("Please fill weight : ");

scanf(“%f”,& weight); if (weight >= 80)

{ printf("\nYou fat.");

} }

จรง

คาสง

ตรวจสอบ เงอนไข

เทจ

Page 92: เอกสารประกอบการสอน รายวิชา 3652204 การโปรแกรมคอมพิวเตอร ... · เอกสารประกอบการสอน

83

ผลลพธเมอทดสอบโปรแกรม

และหากกรณใสคานาหนกมากวา 80 โปรแกรมจะแสดงผล ดงน

ตวอยางท 7.2 ใหโปรแกรมรบคาตวเลขจานวนเตมจากผใชงาน 2 คา แลวใหโปรแกรม

ตรวจสอบวาหากคาแรกทปอนเขามามคามากกวาใหแสดงผลออกทางหนาจอวา “Bingo” จากนนให ผใชงานกดคยบอรดใด ๆ แลวใหโปรแกรมขนรบคาใหมแลวตรวจสอบเงอนไขเชนเดมอกครง

Please fill weight :

Please fill weight : 90 You fat.

// โคดโปรแกรม #include "stdio.h" main( )

{ int num1 , num2; char ch; loop1: printf("Please Number1: "); scanf("%d",&num1); printf("\nPlease Number2: "); scanf("%d",&num2); if (num1 > num2) { printf("\nBiggo ");

} ch = getch(); goto loop1;

}

Page 93: เอกสารประกอบการสอน รายวิชา 3652204 การโปรแกรมคอมพิวเตอร ... · เอกสารประกอบการสอน

84

ผลลพธเมอทดสอบโปรแกรม

- กรณใสคาตวแรกมากกวากวาตวทสอง จากนนกดคยบอรด 1 ครง

- กรณใสคาตวแรกนอยกวากวาตวทสอง จากนนกดคยบอรด 1 ครง

- กรณใสคาตวแรกมากกวากวาตวทสอง จากนนกดคยบอรด 1 ครง และใสคาตวแรกมากกวากวาตวทสองอกครง

Please Number1: 100 Please Number2: 50

Biggo

Please Number1: _

Please Number1: 3000 Please Number2: 5000

Please Number1: _

Please Number1: 100 Please Number2: 50

Biggo

Please Number1: 8000 Please Number2: 7999

Biggo

Page 94: เอกสารประกอบการสอน รายวิชา 3652204 การโปรแกรมคอมพิวเตอร ... · เอกสารประกอบการสอน

85

7.1.2 คาสง if แบบเลอกทาสองทาง (if… else) คาสง if แบบเลอกทาสองทางเปนคาสงทใชในการตรวจสอบเงอนไขของผใชงาน โดยจะตรวจสอบการทางานทงสองเงอนไข คอ กรณทเงอนไขเปนจรงกจะทางานคาสงทอยใน { } ของเงอนไขทเปนจรง แตหากกรณทเปนเทจจะทางานคาสงทอยใน { } ภายใตเงอนไข else รปแบบการทางานของคาสง if แบบเลอกทาสองทางแสดงไวดงน

If (เงอนไข) { // ชดคาสงทเปนจรง คาสง…… 1

คาสง…… 2 คาสง…… 3

คาสง…… } else { // ชดคาสงทเปนเทจ คาสง…… 1

คาสง…… 2 คาสง…… 3

คาสง…… }

Page 95: เอกสารประกอบการสอน รายวิชา 3652204 การโปรแกรมคอมพิวเตอร ... · เอกสารประกอบการสอน

86

ภาพท 7.2 ผงงานแสดงการทางานของคาสง if แบบเลอกทาสองทาง ตวอยางการใชคาสง if แบบเลอกทาสองทาง

ตวอยางท 7.3 ใหโปรแกรมรบคาตวเลขจานวนเตมจากผใชงาน 2 คา แลวใหโปรแกรมตรวจสอบวาหากคาใดมากกวากนใหแสดงคาตอบคานนออกทางหนาจอ

จรง

คาสง 1

ตรวจสอบ เงอนไข

เทจ

คาสง 2

// โคดโปรแกรม #include "stdio.h" main( )

{ int num1 , num2; printf("Please Number1: "); scanf("%d",&num1); printf("\nPlease Number2: "); scanf("%d",&num2); if (num1 > num2) { printf("\n%d",num1);

} else

{ printf("\n%d",num2);

} }

Page 96: เอกสารประกอบการสอน รายวิชา 3652204 การโปรแกรมคอมพิวเตอร ... · เอกสารประกอบการสอน

87

ผลลพธเมอทดสอบโปรแกรม

- กรณใสคาตวหนงมากกวาตวทสอง

- กรณใสคาตวสองมากกวาตวทหนง

- กรณใสคาตวแรกเทากบตวทสอง

Please Number1: 450 Please Number2: 150

450

Please Number1: 1999 Please Number2: 2001

2001

Please Number1: 100 Please Number2: 100 100

Page 97: เอกสารประกอบการสอน รายวิชา 3652204 การโปรแกรมคอมพิวเตอร ... · เอกสารประกอบการสอน

88

ตวอยางท 7.4 ใหโปรแกรมรบคาตวเลขจานวนเตม 1 จานวน แลวตรวจสอบวาคาเทากบ 100 หรอไม ถาคาทรบเขามามคาเทากบ 100 ใหโปรแกรมแสดงคาวา “Biggo” ออกมาทางหนาจอ แตถาหากไมใชใหโปรแกรมเคลยรหนาจอ แลวขนไปรบคาใหมแลว

ผลลพธเมอทดสอบโปรแกรม

- กรณใสคาตวเลขจานวนเตมใด ๆ ทไมเทากบ 100

จากนนโปรแกรมจะทาเคลยรหนาจอแลวขนไปรบคาใหมอกครง

// โคดโปรแกรม #include "stdio.h" main( )

{ int num;

loop_Y: printf("Enter Number : "); scanf("%d",&num); if (num == 100) { printf("\nBiggo");

} else

{ clrscr(); goto loop_Y;

} }

Enter Number : 300

Enter Number :

Page 98: เอกสารประกอบการสอน รายวิชา 3652204 การโปรแกรมคอมพิวเตอร ... · เอกสารประกอบการสอน

89

- กรณใสคาตวเลขจานวนเตมเทากบ 100

ตวอยางท 7.5 ใหโปรแกรมแสดงขอความวา “You are a man.” ถาผใชโปรแกรมตอบ y ใหแสดงคาวา “Man” แตถาตอบอน ๆ ใหแสดงคาวา “Women” จากนนใหโปรแกรมขนไปรบคาใหมอกครง

Enter Number : 300

Biggo

// โคดโปรแกรม #include "stdio.h" main( )

{ char ch;

loop1: printf("\nYou are a man. (y) : "); ch = getch(); if (ch == ‘y’) { printf("\nMen");

} else

{ printf("\nWomen"); } goto loop1; }

Page 99: เอกสารประกอบการสอน รายวิชา 3652204 การโปรแกรมคอมพิวเตอร ... · เอกสารประกอบการสอน

90

ผลลพธเมอทดสอบโปรแกรม

- กรณใสคาอกษระทไมใช “y” (ตวพมพเลก)

- กรณใสคาอกษระทเปนตว “y” (ตวพมพเลก)

You are a man. (y) : m

Women

You are a man. (y) : a

Women

You are a man. (y) : Y

Women

You are a man. (y) :

You are a man. (y) : m

Men

You are a man. (y) :

Page 100: เอกสารประกอบการสอน รายวิชา 3652204 การโปรแกรมคอมพิวเตอร ... · เอกสารประกอบการสอน

91

7.1.3 คาสง if แบบเลอกทาหลายทาง (if… else if) คาสง if แบบเลอกทาหลายทาง จะเปนคาสงทใชในการตรวจสอบเงอนไขของผใชงานทมเงอนไขมากกวาสองทางเลอก โดยการตรวจสอบการทางานในเงอนไขใด ๆ ทเปนจรงเทานน แตถาไมมเงอนไขใด ๆ เปนจรง โปรแกรมจะไปทางานภายใตเงอนไข else รปแบบการทางานของคาสง if แบบเลอกทาหลายทางแสดงไวดงน

If (เงอนไขท 1) { // ชดคาสงของเงอนไขท 1 คาสง……

คาสง…… } else If (เงอนไขท 2) { // ชดคาสงของเงอนไขท 2 คาสง……

คาสง…… } else If (เงอนไขท 3) { // ชดคาสงของเงอนไขท 3 คาสง……

คาสง…… } else If (เงอนไขท n) { // ชดคาสงของเงอนไขท n คาสง……

คาสง…… } else { // ชดคาสงทเปนเทจ (หากกรณทเงอน if ใด ๆ เปนเทจทงหมด) คาสง……

คาสง…… }

Page 101: เอกสารประกอบการสอน รายวิชา 3652204 การโปรแกรมคอมพิวเตอร ... · เอกสารประกอบการสอน

92

ภาพท 7.3 ผงงานแสดงการทางานของคาสง if แบบเลอกทาหลายทาง

จรง คาสง 1

ตรวจสอบ เงอนไขท 1 (if)

เทจ

คาสง 2 ตรวจสอบ

เงอนไขท 2 (if else)

เทจ

คาสง 3 ตรวจสอบ

เงอนไขท 3 (if else)

เทจ

คาสง n ตรวจสอบ

เงอนไขท n (if else)

เทจ

คาสงภายใตเงอนไข else

จรง

จรง

จรง

Page 102: เอกสารประกอบการสอน รายวิชา 3652204 การโปรแกรมคอมพิวเตอร ... · เอกสารประกอบการสอน

93

ตวอยางการใชคาสง if แบบเลอกทาหลายทาง

ตวอยางท 7.6 ใหโปรแกรมรบคาตวเลขจานวนเตมจากผใชงาน 2 คา แลวใหโปรแกรมตรวจสอบ โดยมเงอนไขดงน - หากคาแรกทรบเขามามคามากกวาคาทสองใหแสดงคาวา “Number 1 : Bingo”

- หากคาแรกทรบเขามามคานอยกวาคาทสองใหแสดงคาวา “Number 2 : Bingo” - หากคาแรกทรบเขามามคาเทากบคาทสองใหแสดงคาวา “Error” - เมอโปรแกรมแสดงผลใด ๆ เสรจสนใหโปรแกรมขนรบคาใหมอกครง

// โคดโปรแกรม #include "stdio.h" main( )

{ int num1 , num2;

loop_new: printf("\n\nPlease Number1: "); scanf("%d",&num1); printf("\nPlease Number2: "); scanf("%d",&num2); if (num1 > num2) { printf("\nNumber 1 : Bingo"); } else if (num1 < num2) { printf("\nNumber 2 : Bingo"); } else { printf("\nError"); } goto loop_new; }

Page 103: เอกสารประกอบการสอน รายวิชา 3652204 การโปรแกรมคอมพิวเตอร ... · เอกสารประกอบการสอน

94

ผลลพธเมอทดสอบโปรแกรม

Please Number1: 111 Please Number2: 101

Number 1 : Bingo

Please Number1: 9876 Please Number2: 9998

Number 2 : Bingo

Please Number1: 1001 Please Number2: 1001

Error

Please Number1: 434 Please Number2: 343

Number 1 : Bingo

Please Number1: _

Page 104: เอกสารประกอบการสอน รายวิชา 3652204 การโปรแกรมคอมพิวเตอร ... · เอกสารประกอบการสอน

95

ตวอยางท 7.7 โปรแกรมตดเกรดโดยใหรบคาจากผใชงาน 3 คา ซงคาท 1 คอ คะแนนเกบ คาท 2 คอ คะแนนสอบกลางภาค และคาท 3 คอ คะแนนปลายภาค จากนนนาคาทง 3 มารวมกนจากนนนาคะแนนรวมทไดมาตรวจสอบเกรดแลวใหแสดงผลคะแนนเกรดดงระดบคาคะแนน ดงน

คาคะแนนรวม 90 - 100 = A คาคะแนนรวม 70 - 89 = B คาคะแนนรวม 60 - 69 = C คาคะแนนรวม 50 - 59 = D คาคะแนนรวม 0 - 49 = F

// โคดโปรแกรม #include "stdio.h" main( )

{ int num1 , num2 , num3 , num4; printf("\nCollection points.: "); scanf("%d",&num1); printf("\nCentral points.: "); scanf("%d",&num2); printf("\nFinal score.: "); scanf("%d",&num3); num4 = num1+num2+num3; printf("\nAggregate.: %d " ,num4); if (num4>= 90 && num4<= 100) { printf("\n\nGrade 'A'"); } else if (num4>= 70 && num4<= 89) { printf("\n\nGrade 'B'"); } else if (num4>= 60 && num4<= 69) { printf("\n\nGrade 'C'"); } else if (num4>= 50 && num4<= 59) { printf("\n\nGrade 'D'"); } else { printf("\n\nGrade 'F'"); } }

Page 105: เอกสารประกอบการสอน รายวิชา 3652204 การโปรแกรมคอมพิวเตอร ... · เอกสารประกอบการสอน

96

ผลลพธเมอทดสอบโปรแกรม

Collection points.: 10 Central points.: 30 Final score.: 30 Aggregate.: 70 Grade 'B' Collection points.: 25 Central points.: 40 Final score.: 30 Aggregate.: 95 Grade 'A' Collection points.: 15 Central points.: 15 Final score.: 10 Aggregate.: 40 Grade 'F' Collection points.: 25 Central points.: 5 Final score.: 25 Aggregate.: 55 Grade 'D' Collection points.: 22 Central points.: 22 Final score.: 22 Aggregate.: 66 Grade 'C' Collection points.: _

Page 106: เอกสารประกอบการสอน รายวิชา 3652204 การโปรแกรมคอมพิวเตอร ... · เอกสารประกอบการสอน

97

7.2 คาสง switch

คาสง switch เปนคาสงทมทางเลอกแบบหลายทางเชนเดยวกบคาสง if แบบเลอกทาหลายทาง แตคาสง switch เปนคาสงทตดสนใจทางเลอกกรณทมตวแปรเดยว และเมอจบการทางานในคาสงใด ๆ ในเงอนไขนน ๆ จะตองจบการทางานดวยคาสง break; โดยรปแบบการทางานของคาสง switch แสดงไวดงน

switch (ตวแปร) { case 1 : // ชดคาสงของเงอนไขท 1 คาสง……

คาสง…… break;

case 2 : // ชดคาสงของเงอนไขท 2 คาสง……

คาสง…… break;

case 3 : // ชดคาสงของเงอนไขท 3 คาสง……

คาสง…… break;

case 4 : // ชดคาสงของเงอนไขท 4 คาสง……

คาสง…… break;

case n : // ชดคาสงของเงอนไขท n คาสง……

คาสง…… break;

default : /* ชดคาสงกรณทเงอนใน case ใดๆ ไมมเงอนไขใดเปนจรง */

คาสง…… คาสง……

}

Page 107: เอกสารประกอบการสอน รายวิชา 3652204 การโปรแกรมคอมพิวเตอร ... · เอกสารประกอบการสอน

98

ภาพท 7.4 ผงงานแสดงการทางานของคาสง switch

จรง คาสง 1

ตรวจสอบ case 1

เทจ

คาสง 2 ตรวจสอบ case 2

เทจ

คาสง 3 ตรวจสอบ case 3

เทจ

คาสง n ตรวจสอบ case 4

เทจ

คาสงภายใตเงอนไข default

จรง

จรง

จรง

Page 108: เอกสารประกอบการสอน รายวิชา 3652204 การโปรแกรมคอมพิวเตอร ... · เอกสารประกอบการสอน

99

ตวอยางท 7.8 จงเขยนโปรแกรมใหรบคาตวเลขจานวนเตมจากผใชงานหนงตวเลข โดยใหโปรแกรมรบคาตวเลขจานวนเตมเลข 1 ถง 10 จากนนโปรแกรมจะพมพคาของตวเลขทผใชงานไดกรอกเขาไป แตหากตวเลขจานวนเตมไมไดอยในชวงทกาหนด โปรแกรมจะแสดงคาวา “Error” เมอโปรแกรมแสดงผลใด ๆ เสรจสนโปรแกรมจะขนไปคาตวเลขใหมอกครง

// โคดโปรแกรม #include "stdio.h" main( )

{ int num; loop1: printf("\n\nEnter Number : "); scanf("%d",&num); switch(num) { case 1: printf("\none"); break; case 2: printf("\ntwo"); break; case 3: printf("\nthree"); break; case 4: printf("\nfour"); break; case 5: printf("\nfive"); break; case 6: printf("\nsix"); break; case 7: printf("\nseven"); break; case 8: printf("\neigth"); break; case 9: printf("\nnine"); break; case 10: printf("\nten"); break; default: printf("\nerror"); } goto loop1; }

Page 109: เอกสารประกอบการสอน รายวิชา 3652204 การโปรแกรมคอมพิวเตอร ... · เอกสารประกอบการสอน

100

ผลลพธเมอทดสอบโปรแกรม

Enter Number : 1 one Enter Number : 2 two Enter Number : 3 three Enter Number : 4 four Enter Number : 5 five Enter Number : 6 six Enter Number : 7 seven Enter Number : 8 eight Enter Number : 9 nine Enter Number : 10 ten Enter Number : 11 error Enter Number : _

Page 110: เอกสารประกอบการสอน รายวิชา 3652204 การโปรแกรมคอมพิวเตอร ... · เอกสารประกอบการสอน

101

ตวอยางท 7.9 ตวอยางนเปนการใชโจทยทดลองจากโจทยตวอยางท 7.8 แตครงจะทาการทดลองตดคาสง break; ในบางบรรทด ทงนเพอจะใหผพฒนาผโปรแกรมเหนวาหากไมมคาสง break; โปรแกรมจะไมหยดการทางาน โดยโปรแกรมจะทาการแสดงผลไปเรอย ๆ จนกวาจะเจอคาสง break; ดงตวอยางโคดคาสงตอไปน

// โคดโปรแกรม #include "stdio.h" main( )

{ int num; loop1: printf("\n\nEnter Number : "); scanf("%d",&num); switch(num) { case 1: printf("\none"); case 2: printf("\ntwo"); case 3: printf("\nthree"); break; case 4: printf("\nfour"); break; case 5: printf("\nfive"); case 6: printf("\nsix"); break; case 7: printf("\nseven"); case 8: printf("\neight"); case 9: printf("\nnine"); case 10: printf("\nten"); default: printf("\nerror"); } goto loop1; }

Page 111: เอกสารประกอบการสอน รายวิชา 3652204 การโปรแกรมคอมพิวเตอร ... · เอกสารประกอบการสอน

102

ผลลพธเมอทดสอบโปรแกรม

Enter Number : 1 one two three Enter Number : 2 two three Enter Number : 3 three Enter Number : 4 four Enter Number : 5 five six Enter Number : 6 six Enter Number : 7 seven eight nine ten error Enter Number : 10 ten error Enter Number : 11 error Enter Number : _

Page 112: เอกสารประกอบการสอน รายวิชา 3652204 การโปรแกรมคอมพิวเตอร ... · เอกสารประกอบการสอน

103

สรปทายบท

ในการพฒนาหรอเขยนโปรแกรมคอมพวเตอรไมวาจะเปนภาษาคอมพวเตอรใด ๆ กตามเงอนไขหนงทมการเรยกใชงานอยางบอยครง คอ เงอนไขแบบทางเลอก โดยในภาษาซจะมคาสงทเปนการเลอกเงอนไขการทางานอย 2 คาสง คอ คาสง if และคาสง switch แตคาสงทมการใชงานมากนนกคอคาสง if ดงนนนนผทคดจะพฒนาโปรแกรมคอมพวเตอรจะตองมความเชยวชาญในการใชคาสง if ใหมาก เพราะเปนคาสงทตองมาใชในการตดสนใจในทางเลอกทางทางานใหกบโปรแกรม

คาสง if คาสง if มหลายรปแบบขนอยกบความเหมาะสมกบเงอนไขนน ๆ โดยคาสง if จะม

รปแบบหลกอย 3 รปแบบ คอ 1.) คาสง if แบบเลอกทาทางเดยว (if)

คาสง if แบบเลอกทาทางเดยว เปนคาสงทใชในการตรวจสอบเงอนไขของผใชงาน โดยจะตรวจสอบแบบทางเดยว คอ จะทางานเฉพาะกรณทเงอนไขเปนจรงเทานน หากเงอนไขเปนเทจจะไมทางาน โดยเงอนไขทเปนจรง คอ คาสงทอยใน { } ของคาสง if เทานน 2.) คาสง if แบบเลอกทาสองทาง (if… else) คาสง if แบบเลอกทาสองทางเปนคาสงทใชในการตรวจสอบเงอนไขของผใชงาน โดยจะตรวจสอบการทางานทงสองเงอนไข คอ กรณทเงอนไขเปนจรงกจะทางานคาสงทอยใน { } ของเงอนไขทเปนจรง แตหากกรณทเปนเทจจะทางานคาสงทอยใน { } ภายใตเงอนไข else 3.) คาสง if แบบเลอกทาหลายทาง (if… else if) คาสง if แบบเลอกทาหลายทาง จะเปนคาสงทใชในการตรวจสอบเงอนไขของผใชงานทมเงอนไขมากกวาสองทางเลอก โดยการตรวจสอบการทางานในเงอนไขใด ๆ ทเปนจรงเทานน แตถาไมมเงอนไขใด ๆ เปนจรง โปรแกรมจะไปทางานภายใตเงอนไข else

คาสง switch คาสง switch เปนคาสงทมทางเลอกแบบหลายทางเชนเดยวกบคาสง if แบบเลอกทา

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

1. จงเขยนโปรแกรมตรวจสอบคาความสง หากความสงมากกวาหรอเทากบ 180 ใหโปรแกรมแสดงคาวา “High” และหากความสงนอยกวา 180 ใหโปรแกรมแสดงคาวา “Short” 2. จงเขยนโปรแกรมเรยงลาดบจากนอยไปมาก โดยใหรบคาตวเลขจานวนเตม 3 จานวน

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

คาคะแนน ดงน คาคะแนนรวม 90 - 100 = A คาคะแนนรวม 85 - 89 = B+ คาคะแนนรวม 75 - 84 = B

Page 113: เอกสารประกอบการสอน รายวิชา 3652204 การโปรแกรมคอมพิวเตอร ... · เอกสารประกอบการสอน

104

คาคะแนนรวม 70 - 74 = C+ คาคะแนนรวม 60 - 69 = C คาคะแนนรวม 55 - 59 = D+ คาคะแนนรวม 54 - 50 = D คาคะแนนรวม 0 - 49 = F

และหากผใชงานปอนคาคะแนนไมอยชวงทกาหนดใหโปรแกรมแสดงคาวา “Error”

5. จงเขยนโปรแกรมโดยใชคาสง switch โดยใหโปรแกรมรบคาตวอกขระจากผใชงาน แลวแสดงผลดงน ถาผใชงานปอน ‘A’ โปรแกรมจะแสดงคาวา “Apple”

ถาผใชงานปอน ‘B’ โปรแกรมจะแสดงคาวา “Book” ถาผใชงานปอน ‘C’ โปรแกรมจะแสดงคาวา “Cat”

ถาผใชงานปอน ‘D’ โปรแกรมจะแสดงคาวา “Dusit” ถาผใชงานปอน ‘E’ โปรแกรมจะแสดงคาวา “Eagle” และหากผใชงานปอนคาตวอกขระไมอยในคาทกาหนดใหโปรแกรมแสดงคาวา “Error”

เอกสารอางอง

คะชา ชาญศลป. (2548). ภาษาซสาหรบผเรมตน. กรงเทพมหานคร: วรตนเอดดเคชน. ประภาพร ชางไม. (2545). คมอการเขยนโปรแกรมภาษา C ฉบบผเรมตน. กรงเทพมหานคร:

อนโฟเพรส. ธรวฒน ประกอบผล. (2553). คมอการเขยนโปรแกรมภาษา C. กรงเทพมหานคร: ซมพลฟลาย. สระสทธ ทรงมา และภรพจน แกวยอง. (2552). การโปรแกรมคอมพวเตอร.: มหาวทยาลยราชภฏ

สวนดสต. สมชาย รตนเลศนสรณ. (2553). การเขยนโปรแกรมคอมพวเตอรดวยภาษาซ. กรงเทพมหานคร: สมาคม

สงเสรมเทคโนโลย (ไทย-ญปน) ส.ส.ท. สานนท เจรญฉาย. (2543). การเขยนโปรแกรมและอลกอรทม. กรงเทพมหานคร: มหาจฬาลงกรณราช

วทยาลย. อรพน ประวตบรสทธ. (2554). คมอการเรยนภาษา C ฉบบปรบปรงใหม (พมพครงท 10).

กรงเทพมหานคร: โปรวชน. http://www.mwit.ac.th/~cs/download/tech30101/TECH30101_ch8.html http://www.e-learning.snru.ac.th/els/program1/lesson2/page5_1.html https://www.sites.google.com/site/cprogramingbypanus/kar-saedng-phllaphth/printf4.html http://www.krubpk.com/com_2/pan7/pan7_1.html

Page 114: เอกสารประกอบการสอน รายวิชา 3652204 การโปรแกรมคอมพิวเตอร ... · เอกสารประกอบการสอน

105

บทท 8

โครงสรางการควบคมการทางานแบบวนรอบ

แผนการสอนประจาบท หวขอเนอหา 8.1 คาสง for loop

8.2 คาสง while loop 8.3 คาสง do while

วตถประสงคเชงพฤตกรรม 1. ผเรยนสามารถเขาใจหลกการทางานของคาสง for loop ไดอยางเขาใจและถกตอง 2. ผเรยนสามารถนาคาสง for loop ไปใชงานในการเขยนโปรแกรมในกรณตาง ๆ ไดอยางถกตอง 3. ผเรยนสามารถเขาใจหลกการทางานของคาสง while loop ไดอยางเขาใจและถกตอง

4. ผเรยนสามารถนาคาสง while loop ไปใชงานในการเขยนโปรแกรมในกรณตาง ๆ ไดอยางถกตอง

5. ผเรยนสามารถเขาใจหลกการทางานของคาสง do while ไดอยางเขาใจและถกตอง 6. ผเรยนสามารถนาคาสง do while ไปใชงานในการเขยนโปรแกรมในกรณตาง ๆ ไดอยาง

ถกตอง วธการสอน 1. สอนแบบบรรยายโดยใชเอกสารประกอบการสอน 2. สอนแบบบรรยายโดยใช Slide Power Point 3. สอนโดยใชโปรแกรม Turbo C++ 4.5 เพอลงมอปฏบตในการเขยนโปรแกรมภาษาซ

4. สอนโดยใหผเรยนเปนสวนกลาง โดยใชวธถามตอบกบผเรยนระหวางบรรยาย 5. ใหผเรยนสรปและอธบายหวขอทผเรยนทไดรบมอบหมาย

สอการเรยนการสอน 1. เอกสารประกอบการสอน

2. Slide Power Point 3. โปรแกรม Turbo C++ 4.5 4. ตวอยางแบบทดสอบ

การวดผลและประเมนผล 1. การทาตามตวอยางโจทยคาสงและการทาแบบฝกหด

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

Page 115: เอกสารประกอบการสอน รายวิชา 3652204 การโปรแกรมคอมพิวเตอร ... · เอกสารประกอบการสอน

106

บทท 8

โครงสรางการควบคมการทางานแบบวนรอบ

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

1.) คาสง for loop 2.) คาสง while loop 3.) คาสง do while

8.1 คาสง for loop คาสง for loop เปนคาสงทใชงานงายและมการกาหนดรอบทาซาทแนนอนวาจะตองทาซากรอบ อกทงรปแบบของ for loop จะเปนรปแบบเดยวกนกบภาษาทพฒนามาจากภาษาซ เชน php, java เปนตน ซงรปแบบคาสง for loop มรปแบบการใชงานดงน

for (คาเรมตน ; เงอนไขตรวจสอบ ; เพมหรอลดจานวน ) { // ชดคาสงกรณทเงอนไขตรวจสอบเปนจรง คาสง…… 1

คาสง…… 2 คาสง…… 3

คาสง…… 4 คาสง…… คาสง…… n

}

Page 116: เอกสารประกอบการสอน รายวิชา 3652204 การโปรแกรมคอมพิวเตอร ... · เอกสารประกอบการสอน

107

ภาพท 8.1 ผงงานแสดงการทางานของคาสง for loop ตวอยางการใชคาสง for loop

ตวอยางท 8.1 ใหโปรแกรมแสดงตวเลข 1 ถง 10 โดยการใชคาสง for loop

ผลลพธเมอทดสอบโปรแกรม

// โคดโปรแกรม #include "stdio.h" main( )

{ int i; for (i=1; i<=10; i++) { printf("%d ",i); } }

จรง

ทาคาสง

ตรวจสอบ เงอนไข

เทจ

กาหนดคาเรมตน

1 2 3 4 5 6 7 8 9 10

Page 117: เอกสารประกอบการสอน รายวิชา 3652204 การโปรแกรมคอมพิวเตอร ... · เอกสารประกอบการสอน

108

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

ผลลพธเมอทดสอบโปรแกรม

// โคดโปรแกรม #include "stdio.h" main( )

{ int i , num;

loop1: printf("\n\nEnter number : "); scanf("%d",&num); for (i=1; i<=num; i++) { printf("%d ",i); } goto loop1; }

Enter number : 10 1 2 3 4 5 6 7 8 9 10

Enter number : 5 1 2 3 4

Enter number : 1 1 Enter number : 0

Enter number : 3 1 2 3

Enter number :_

Page 118: เอกสารประกอบการสอน รายวิชา 3652204 การโปรแกรมคอมพิวเตอร ... · เอกสารประกอบการสอน

109

ตวอยางท 8.3 โปรแกรมแสดงผลเลขคเลขค โดยมเงอนไขคอหากผใชงานปอนคา ‘x’ โปรแกรมจะทาการแสดงเลขคจาก 0 - 20 และหากผใชงานปอนคา ‘y’ โปรแกรมจะทาการแสดงเลขคจาก 1 - 19 แตหากผใชงานปอนคาอน ๆ โปรแกรมจะทาการแสดงคาวา “Error” ออกมา

// โคดโปรแกรม #include "stdio.h" main( )

{ int i; char ch;

loop1: printf("\n\nEnter number : "); ch = getch(); if(ch == 'x') { // สวนการแสดงเลขค for (i=0; i<=20; i= i+2) { printf("%d ",i); } } else if(ch == 'y') { // สวนการแสดงเลขค for (i=1; i<=20; i= i+2) { printf("%d ",i); } } else { printf("Error"); } goto loop1; }

Page 119: เอกสารประกอบการสอน รายวิชา 3652204 การโปรแกรมคอมพิวเตอร ... · เอกสารประกอบการสอน

110

ผลลพธเมอทดสอบโปรแกรม

ตวอยางท 8.4 การใชคาสง for ในการเขยนโปรแกรม Bingo โดยรบคาตวเลขจานวนเตมจากผใชงาน 1 คา แลวตรวจสอบคาตวเลขทรบมคาเทากบ “10” หรอไม ถาเทากบ “10” ใหโปรแกรมแสดงคาวา “Bingo” ออกมา และโปรแกรมสามารถบอกจานวนครงทผใชงานปอนไปกครงถงจะ Bingo ได

// กรณผใชงานปอน ‘x’ Enter number : 0 2 4 6 8 10 12 14 16 18 20

// กรณผใชงานปอน ‘y’ Enter number : 1 3 5 7 9 11 13 15 17 19

// กรณผใชงานปอนคาอน ๆ ทไมใช ‘x’ หรอ ‘y’ Enter number :_Error

Enter number : _

// โคดโปรแกรม #include "stdio.h" main( )

{ int i, x; for (i=1; i<=5000; i++) //กาหนดคาใหมากไวเพราะไมทราบจานวนลปทแนนอน { printf("\n\nEnter number : "); scanf("%d",&x); if(x == 10) { printf("\nBingo\n"); printf("Number of times: %d\n",i); i = 5001; // กาหนดคาเพอใหออกจาก for loop } } }

Page 120: เอกสารประกอบการสอน รายวิชา 3652204 การโปรแกรมคอมพิวเตอร ... · เอกสารประกอบการสอน

111

ผลลพธเมอทดสอบโปรแกรม

หมายเหต จากตวอยางขางตนเปนการนาคาสง for loop มาใชในกรณทไมทราบจานวนลปท

แนนอน ซงจรง ๆ แลวหากผพฒนาโปรแกรมไมทราบจานวนลปทแนนอน สวนใหญจะไมนยมนาคาสง for loop มาใชงาน เพราะคาสง for loop เหมาะสาหรบวนลปทมจานวนลปทแนนอน ดงนนหากจะวนลปทมจานวนลปทไมแนนอน ผพฒนาโปรแกรมสวนใหญจะนยมใชคาสง while เปนคาสงในการทางาน ในกรณดงกลาว

Enter number : 1 Enter number : 2

Enter number : 3 Enter number : 4

Enter number : 5 Enter number : 6

Enter number : 7 Enter number : 8

Enter number : 9 Enter number : 10 Number of times: 10

Page 121: เอกสารประกอบการสอน รายวิชา 3652204 การโปรแกรมคอมพิวเตอร ... · เอกสารประกอบการสอน

112

8.2 คาสง while loop คาสง while loop เปนคาสงทใชในกรณทผพฒนาโปรแกรมไมทราบจานวนลปทแนนอน ทแนนอนวาจะตองทาซากรอบ ลกษณะเดนอยางหนงของคาสง while คอ จะมตรวจสอบเงอนไขกอนวาเปนจรงหรอเทจ ซงในการตรวจสอบครงแรก ถาเงอนไขตรวจสอบเปนเทจ กจะไมเขาไปทาในวนรอบของการทาซาเลย แตในทานองเดยวกนถาตวตรวจสอบเงอนไขเปนจรงตลอด โปรแกรมจะทาซาไปไมสนสด ดงนนขอสาคญของการใชคาสง while loop คอ ผพฒนาโปรแกรมจะตองระมดระวง โดยควรเขยนโปรแกรมใหมโอกาสออกจากการวนรอบทาซาใหได เพราะถาวนลปคางจะสงผลใหโปรแกรมทางานคางหรอหยดการทางานไปเลยกได ซงรปแบบคาสง while loop มรปแบบการใชงานดงน

ภาพท 8.2 ผงงานแสดงการทางานของคาสง while loop

จรง

ทาคาสง

ตรวจสอบ เงอนไข

เทจ

while (เงอนไขตรวจสอบ) { // ชดคาสงกรณทเงอนไขตรวจสอบเปนจรง คาสง…… 1

คาสง…… 2 คาสง…… 3

คาสง…… 4 คาสง…… คาสง…… n

}

Page 122: เอกสารประกอบการสอน รายวิชา 3652204 การโปรแกรมคอมพิวเตอร ... · เอกสารประกอบการสอน

113

ตวอยางการใชคาสง while loop

ตวอยางท 8.5 การใชคาสง while loop ในการเขยนโปรแกรม Bingo โดยรบคาตวเลขจานวนเตมจากผใชงาน 1 คา แลวตรวจสอบคาตวเลขทรบมคาเทากบ “10” หรอไม ถาเทากบ “10” ใหโปรแกรมแสดงคาวา “Bingo” ออกมา และโปรแกรมสามารถบอกจานวนครงทผใชงานปอนไปกครงถงจะ Bingo ได (เปนโจทยตวอยางเดยวกบตวอยางท 8.4 แตตวอยางนจะใชคาสง while แทนคาสง for)

ผลลพธเมอทดสอบโปรแกรม

// โคดโปรแกรม #include "stdio.h" main( ) {

int i , x , w; i = x = w =0;

while(w == 0) { printf("\n\nEnter number : "); scanf("%d",&x); i++; if(x == 5) { printf("\nBingo\n"); printf("Number of times: %d\n",i); w = 1; } }

}

Enter number : 7 Enter number : 8

Enter number : 9 Enter number : 10 Number of times: 4

Page 123: เอกสารประกอบการสอน รายวิชา 3652204 การโปรแกรมคอมพิวเตอร ... · เอกสารประกอบการสอน

114

ตวอยางท 8.6 การใชคาสง while loop ในการเขยนโปรแกรมรหสลบแบบ 2 ชน โดยชนแรกผใชงานจะตองปอนรหสคาวา ‘A’ หากปอนถกโปรแกรมจะใหไปถอดรหสชนทสอง โดยมรหสคาวา ‘Z’ หากปอนถกทงสองชนโปรแกรมจะแสดงคาวา “*** WINNING ***” ซงในแตละชนผใชงานสามารถปอนกครงกไดจนกวาจะปอนตรงรหสลบทตงไว

// โคดโปรแกรม #include "stdio.h" main( ) { int i=0 , x=0; char ch; // ตรวจสอบรหสลบชนท 1 while(i == 0) { printf("\n\nEnter Text (1) : "); scanf("%s",&ch); x++; if (ch == 'A') { i = 1; } }

printf("\n*** Pass (1) ***\n"); printf("Number of times: %d\n",x); x = 0;

// ตรวจสอบรหสลบชนท 2 while(i == 1) { printf("\n\nEnter Text (2) : "); scanf("%s",&ch);

x++; if (ch == 'Z') { i = 2; } } printf("\n*** WINNING ***");

printf("Number of times: %d\n",x); }

Page 124: เอกสารประกอบการสอน รายวิชา 3652204 การโปรแกรมคอมพิวเตอร ... · เอกสารประกอบการสอน

115

ผลลพธเมอทดสอบโปรแกรม

Enter Text (1) : a Enter Text (1) : b Enter Text (1) : c Enter Text (1) : d Enter Text (1) : x Enter Text (1) : V Enter Text (1) : Z Enter Text (1) : A *** Pass (1) *** Number of times: 8 Enter Text (2) : F Enter Text (2) : D Enter Text (2) : z Enter Text (2) : Z *** WINNING *** "Number of times: 4

Page 125: เอกสารประกอบการสอน รายวิชา 3652204 การโปรแกรมคอมพิวเตอร ... · เอกสารประกอบการสอน

116

8.3 คาสง do while คาสง do while เปนคาสงใหมการทาซาเปนลป(loop) โดยมลกษณะการทางานทานองเดยวกบคาสง while ซงจะแตกตางกนตรงทคาสง do while นจะมการทางานตามคาสงไป 1 รอบกอนทจะทดสอบเงอนไข ถาเงอนไขทเปนจรงจะทางานตอไป ถาเงอนไขเปนเทจจงจะออกจากคาสง ขอควรระวงของคาสง do while กเชนเดยวกนกบคาสง while ซงผพฒนาจะตองกาหนดการวนลปใหมโอกาสทเงอนสามารถหลดออกจากลปได มฉะนนจะมปญหาทโปรแกรมทางานแบบวนซาแบบไมมทสนสด ซงรปแบบคาสง do while มรปแบบการใชงานดงน

ภาพท 8.3 ผงงานแสดงการทางานของคาสง do while

จรง

ทาคาสง

ตรวจสอบ เงอนไข

เทจ

do { คาสง…… 1

คาสง…… 2 คาสง…… 3

คาสง…… 4 คาสง…… คาสง…… n

} while (เงอนไขตรวจสอบ);

Page 126: เอกสารประกอบการสอน รายวิชา 3652204 การโปรแกรมคอมพิวเตอร ... · เอกสารประกอบการสอน

117

ตวอยางการใชคาสง do while

ตวอยางท 8.7 การใชคาสง do loop เพอตรวจสอบรหสลบ โดยรหสลบทตงไวคอ ‘9’ ดงนนหากผใชงานปอนรหสตรงกบ ‘9’ โปรแกรมจะทาการแสดงคาวา “Bingo”

ผลลพธเมอทดสอบโปรแกรม

// โคดโปรแกรม #include "stdio.h" main( ) { int i=0; char ch; do { printf("\nEnter Code : "); ch = getch(); putchar(ch); if (ch == '9') { i = 1; } } while (i == 0); printf("\n\n+++ Bingo +++"); }

Enter Code : a

Enter Code : 8 Enter Code : c Enter Code : 9 +++ Bingo +++

Page 127: เอกสารประกอบการสอน รายวิชา 3652204 การโปรแกรมคอมพิวเตอร ... · เอกสารประกอบการสอน

118

ตวอยางท 8.8 การใชคาสง do loop โดยใหโปรแกรมรบคาตวเลขจานวนเตมจากผใชงาน 1 คา จากนนใหโปรแกรมแสดงจานวนตวเลขจาก 1 ถง จานวนทผใชปอนเขาไป

ผลลพธเมอทดสอบโปรแกรม

// โคดโปรแกรม #include "stdio.h" main( ) { int i,x;

loop1: i=1; x=0; printf("\n\nEnter Number : "); scanf("%d",&x); do { printf("%d ",i); i++; } while(i<=x); goto loop1; }

Enter Number : 5 1 2 3 4 5 Enter Number : 8 1 2 3 4 5 6 7 8 Enter Number : 11 1 2 3 4 5 6 7 8 9 10 11 Enter Number : 3 1 2 3 Enter Number : _

Page 128: เอกสารประกอบการสอน รายวิชา 3652204 การโปรแกรมคอมพิวเตอร ... · เอกสารประกอบการสอน

119

สรปทายบท

ในการพฒนาหรอเขยนโปรแกรมคอมพวเตอรเพอใหโปรแกรมคอมพวเตอรทางานอะไรซา ๆ หลาย ๆ ครงคาตอบทงานทสด คอ การเรยกใชงานคาสงโปรแกรมทเรยกวา ลป (loop) ซงลปมหลายรปแบบ ทง for loop while loop และ do while และในภาษาซการใชงานคาสงวนลปมการใชงานทงาย และมการกาหนดรอบทาซาไดแนนอนชดเจน โดยคาสงวนลปในภาษามคาสงในการทางานของโปรแกรม ดงน

คาสง for loop คาสง for loop เปนคาสงทใชงานงายและมการกาหนดรอบทาซาทแนนอนวาจะตอง

ทาซากรอบ อกทงรปแบบของ for loop จะเปนรปแบบทเขาใจงาย และแกไขเงอนไขตาง ๆ ไดสะดวก

คาสง while loop คาสง while loop เปนคาสงทใชในกรณทผพฒนาโปรแกรมไมทราบจานวนลปทแนนอน

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

คาสง do while คาสง do while เปนคาสงใหมการทาซาเปนลป(loop) โดยมลกษณะการทางานทานองเดยวกบคาสง while ซงจะแตกตางกนตรงทคาสง do while นจะมการทางานตามคาสงไป 1 รอบกอนทจะทดสอบเงอนไข ถาเงอนไขทเปนจรงจะทางานตอไป ถาเงอนไขเปนเทจจงจะออกจากคาสง ขอควรระวงของคาสง do while กเชนเดยวกนกบคาสง while ซงผพฒนาจะตองกาหนดการวนลปใหมโอกาสทเงอนสามารถหลดออกจากลปได มฉะนนจะมปญหาทโปรแกรมทางานแบบวนซาแบบไมมทสนสด คาถามทบทวน

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

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

โดย หลกทหนงรหสตวเลข 9 หลกทสองรหสตวเลข 8 หลกทสามรหสตวเลข 7

Page 129: เอกสารประกอบการสอน รายวิชา 3652204 การโปรแกรมคอมพิวเตอร ... · เอกสารประกอบการสอน

120

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

โดย หลกทหนงรหสตวเลข 11 หลกทสองรหสตวอกขระ A หลกทสามรหสตวอกขระ z

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

เอกสารอางอง

คะชา ชาญศลป. (2548). ภาษาซสาหรบผเรมตน. กรงเทพมหานคร: วรตนเอดดเคชน. ประภาพร ชางไม. (2545). คมอการเขยนโปรแกรมภาษา C ฉบบผเรมตน. กรงเทพมหานคร:

อนโฟเพรส. ธรวฒน ประกอบผล. (2553). คมอการเขยนโปรแกรมภาษา C. กรงเทพมหานคร: ซมพลฟลาย. สระสทธ ทรงมา และภรพจน แกวยอง. (2552). การโปรแกรมคอมพวเตอร.: มหาวทยาลยราชภฏ

สวนดสต. สมชาย รตนเลศนสรณ. (2553). การเขยนโปรแกรมคอมพวเตอรดวยภาษาซ. กรงเทพมหานคร: สมาคม

สงเสรมเทคโนโลย (ไทย-ญปน) ส.ส.ท. สานนท เจรญฉาย. (2543). การเขยนโปรแกรมและอลกอรทม. กรงเทพมหานคร: มหาจฬาลงกรณราช

วทยาลย. อรพน ประวตบรสทธ. (2554). คมอการเรยนภาษา C ฉบบปรบปรงใหม (พมพครงท 10).

กรงเทพมหานคร: โปรวชน. http://www.61.7.214.35/c/webbase/unit8/while.php http://www.mwit.ac.th/~cs/download/tech30101/TECH30101_ch9.html http://www.e-learning.snru.ac.th/els/program1/lesson2/page6_1.html http://www.krubpk.com/com_2/pan7/pan8_2.html

Page 130: เอกสารประกอบการสอน รายวิชา 3652204 การโปรแกรมคอมพิวเตอร ... · เอกสารประกอบการสอน

121

บทท 9

ตวแปรชนดอารเรย

แผนการสอนประจาบท หวขอเนอหา 9.1 ตวแปรอารเรยแบบ 1 มต

9.2 ตวแปรอารเรยแบบ 2 มต

วตถประสงคเชงพฤตกรรม 1. ผเรยนสามารถเขาใจหลกการทางานของตวแปรอารเรยแบบ 1 มตไดอยางเขาใจและถกตอง 2. ผเรยนสามารถประกาศตวแปรอารเรยแบบ 1 มต ไดอยางถกตองและสามารถนาตวแปรอารเรยแบบ 1 มตไปใชงานในการเขยนโปรแกรมในกรณตาง ๆ ไดอยางถกตอง 3. ผเรยนสามารถเขาใจหลกการทางานของตวแปรอารเรยแบบ 2 มตไดอยางเขาใจและถกตอง 4. ผเรยนสามารถประกาศตวแปรอารเรยแบบ 2 มต ไดอยางถกตองและสามารถนาตวแปรอารเรยแบบ 2 มตไปใชงานในการเขยนโปรแกรมในกรณตาง ๆ ไดอยางถกตอง วธการสอน 1. สอนแบบบรรยายโดยใชเอกสารประกอบการสอน 2. สอนแบบบรรยายโดยใช Slide Power Point 3. สอนโดยใชโปรแกรม Turbo C++ 4.5 เพอลงมอปฏบตในการเขยนโปรแกรมภาษาซ

4. สอนโดยใหผเรยนเปนสวนกลาง โดยใชวธถามตอบกบผเรยนระหวางบรรยาย 5. ใหผเรยนสรปและอธบายหวขอทผเรยนทไดรบมอบหมาย

สอการเรยนการสอน 1. เอกสารประกอบการสอน

2. Slide Power Point 3. โปรแกรม Turbo C++ 4.5 4. ตวอยางแบบทดสอบ

การวดผลและประเมนผล 1. การทาตามตวอยางโจทยคาสงและการทาแบบฝกหด

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

Page 131: เอกสารประกอบการสอน รายวิชา 3652204 การโปรแกรมคอมพิวเตอร ... · เอกสารประกอบการสอน

122

บทท 9

ตวแปรชนดอารเรย

อารเรย (Arrays) เปนโครงสรางขอมลของกลมสมาชกทใชเกบขอมลชนดเดยวกน แลวมาจดเรยงกนอยางตอเนอง โดยขอมลชนดเดยวกน คอ ขอมลทกตวทอยในอารเรยจะตองเปนขอมลชนดเดยวกนเทานน เชน ถาเปนอารเรยชนดจานวนเตม ขอมลทกตวในอารเรยกตองเปนชนดจานวนเตมไมสามารถเกบขอมลตางชนดกนได โดยอารเรยจะจดเกบชดขอมลในหนวยความจาในแบบตอเนองกนไป ซงแตกตางจากตวแปรธรรมดา โดยขอมลแตละตวจะมลาดบของสมาชก เรยกวา element ซงแตละ element จะม อนเดกซ (index) เปนตวชตาแหนงของขอมลในหนวยความจา โดยทอนเดกซในตาแหนงแรกจะเรมจาก ศนย (0)

9.1 ตวแปรอารเรยแบบ 1 มต ตวแปรอารเรยแบบ 1 มต จะเปนการเกบขอมลตอเนองกนไปเปนแถว การประกาศชอตวแปรอารเรยแบบ 1 มตจะใชชอเพยงชอเดยวตามดวยเครองหมาย [ ] ครอมตวเลขทบอกถงจานวนของขอมลทตองการจองพนทเอาไว

รปแบบการประกาศตวแปร

ตวอยางการประกาศตวแปรอารเรยแบบ 1 มต (แบบจองพนทอยางเดยว)

ประกาศตวแปรอารเรยชนด int int num[5];

num[0] num[1] num[2] num[3] num[4] num

2 bytes 2 bytes 2 bytes 2 bytes 2 bytes

ประกาศตวแปรอารเรยชนด float float score[7];

score[0] score[1] score[2] score[3] score[4] score[5] score[6] score

4 bytes 4 bytes 4 bytes 4 bytes 4 bytes 4 bytes 4 bytes

ชนดขอมล ชอตวแปร [ขนาดของอารเรย];

Page 132: เอกสารประกอบการสอน รายวิชา 3652204 การโปรแกรมคอมพิวเตอร ... · เอกสารประกอบการสอน

123

ประกาศตวแปรอารเรยชนด char char ch[4];

ch [0] ch[1] ch[2] ch[3] ch

1 bytes 1 bytes 1 bytes 1 bytes

การประกาศต วแปรอาร เ รย นอกจากจะประกาศแบบจองพ นท เพ ย งอย า ง เด ย ว ผพฒนาโปรแกรมสามารถประกาศตวแปรแบบอารเรยพรอมทงกาหนดคาเรมตนใหกบอารเรยแบบ 1 มตได โดยการกาหนดคาเรมตนใหกบ array ไดตงแตตอนประกาศตวแปรคาทกาหนดตองอยในเครองหมาย { } และถามมากกวา 1 คา ตองแยกจากกนดวยเครองหมาย , (comma)

ตวอยางการประกาศตวแปรอารเรยแบบ 1 มต (แบบกาหนดคาในพนท)

ประกาศตวแปรอารเรยชนด int int num[5] = { 10,20,30,40,50 } ;

num[0] num[1] num[2] num[3] num[4]

num 10 20 30 40 50 2 bytes 2 bytes 2 bytes 2 bytes 2 bytes

ประกาศตวแปรอารเรยชนด float

float score[7] = { 1.00,2.00,33.33, 46.78,10.45,1.50,2.0 } ;

score[0] score[1] score[2] score[3] score[4] score[5] score[6] score 1.00 2.00 33.33 46.78 10.45 1.50 2.0

4 bytes 4 bytes 4 bytes 4 bytes 4 bytes 4 bytes 4 bytes

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

ถากาหนดคาเรมตนตงแตตอนประกาศตวแปรแตกาหนดไมครบ ในกรณทเปนอารเรยแบบตวเลขทงจานวนเตมและจานวนจรง คาทเหลอจะถกกาหนดเปน 0 โดยอตโนมต

เชน float cost[5] = {10.1,12.45,11.3} ;

cost[0] cost[1] cost [2] cost [3] cost [4] cost 10.1 12.45 11.03 0.0 0.0

4 bytes 4 bytes 4 bytes 4 bytes 4 bytes

Page 133: เอกสารประกอบการสอน รายวิชา 3652204 การโปรแกรมคอมพิวเตอร ... · เอกสารประกอบการสอน

124

บางครงถากาหนดคาเรมตนใหแกอารเรยเลย เราไมจาเปนตองใสขนาดของอารเรยกได

เชน int num[ ] = {1,2,3,4,5} ;

ความหมายคอ เปนการกาหนดตวแปรอารเรยของจานวนจรงแบบ float ขนาด 5 ชอง แตถากาหนดตวแปรอารเรยโดยไมใสขนาดของอารเรย และไมไดกาหนดคาเรมตนใหกบมน

เชน int num[ ] ; // เปนการประกาศตวแปรแบบอารเรยทผด

วธการแบบนไมสามารถประกาศตวแปรอารเรยโดยไมใสขนาดของอารเรยได ยกเวนมการกาหนดคาเรมตนใหกบมนตงแตแรก

ประกาศตวแปรอารเรยชนด char

char ch[7] = “witoon” ;

ch [0] ch[1] ch[2] ch[3] ch[4] ch[5] ch[6] ch w i t o o n \0

1 bytes 1 bytes 1 bytes 1 bytes 1 bytes 1 bytes 1 bytes

ในการประกาศตวแปรแบบอารเรยชนด char โดยทตาแหนง สดทายของขอมลระบบ จะเกบคา \0 ไวอตโนมต เพอแสดงการสนสดขอความ

char name[ ] = “Dusit Trang”; จะได

[0] [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] name D u s i t T r a n g \0

1 byte

1 byte

1 byte

1 byte

1 byte

1 byte

1 byte

1 byte

1 byte

1 byte

1 byte

1 byte

โดยทตาแหนง name[11] จะเกบคา \0 ไวอตโนมต เพอแสดงการสนสดขอความ

หรอ char name[13] = “Dusit Trang”; จะได

[0] [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12] name D u s i t T r a n g \0 1

byte 1

byte 1

byte 1

byte 1

byte 1

byte 1

byte 1

byte 1

byte 1

byte 1

byte 1

byte 1

byte

โดยทตาแหนง name[11] จะเกบคา \0 ไวอตโนมต เพอแสดงการสนสดขอความเชนเดยวกน และตาแหนงท 12 จะวาง

Page 134: เอกสารประกอบการสอน รายวิชา 3652204 การโปรแกรมคอมพิวเตอร ... · เอกสารประกอบการสอน

125

หรอถาตองการกาหนดคาใหกบอารเรยเปนอกขระสามารถทาไดดงน

char name[9] = { ‘D’, ‘u’, ‘s’, ‘i’, ‘t’, ‘ ’, } ; จะได

[0] [1] [2] [3] [4] [5] [6] [7] [8] name D u s i t \0 1

byte 1

byte 1

byte 1

byte 1

byte 1

byte 1

byte 1

byte 1

byte

โดยทตาแหนง name[6] จะเกบคา \0 ไวอตโนมต เพอแสดงการสนสดขอความเชนเดยวกน และตาแหนงท 7 และ 8 จะวางเนองจากไมมขอมลใด ๆ

ดงนนในการประกาศใหตวแปรทเปนสตรง จะตองคานงถงจานวนตวอกขระทตองการ

จดเกบดวย เชน หากตองการเกบชอซงมความยาวไมเกน 20 ตวอกษร จะตองประกาศตวแปรใหเปนอารเรยขนาด 21 ชอง หรอมากกวาเลกนอย เพอมพนทสาหรบเกบคา \0 หรอคา null)

ตวอยาง การทดลองการประกาศตวแปรอารเรยแบบ 1 มต

ตวอยางท 9.1 โปรแกรมแสดงตวเลขทไดเกบไวในตวแปรอารเรยแบบ 1 มต

ผลลพธเมอทดสอบโปรแกรม

// โคดโปรแกรม #include "stdio.h" main( )

{ int n[5] = { 5, 4 , 3, 2, 1 } ; int i ; for ( i = 0; i < 5; i++ ) { printf( "%d ",n[ i ] ); } }

5 4 3 2 1

Page 135: เอกสารประกอบการสอน รายวิชา 3652204 การโปรแกรมคอมพิวเตอร ... · เอกสารประกอบการสอน

126

ตวอยางท 9.2 โปรแกรมแสดงอกขระทไดเกบไวในตวแปรอารเรยแบบ 1 มต

ผลลพธเมอทดสอบโปรแกรม

ตวอยางท 9.3 โปรแกรมแสดงอกขระทไดเกบไวในตวแปรอารเรยแบบ 1 มต พรอม

แสดงผลตาแหนงในอารเรยแตละตวทไดจดเกบ

// โคดโปรแกรม #include "stdio.h" main( ) {

char ch[ ] = "witoon"; int i; for ( i = 0; i < 6; i++ ) { printf( "%c ",ch[ i ] ); }

}

w i t o o n

// โคดโปรแกรม #include "stdio.h" main( ) {

char ch[ ] = "Dusit Trang"; int i; for ( i = 0; i < 11; i++ ) { printf( "\n ch[%d] = %c ", i , ch[i] );

} }

Page 136: เอกสารประกอบการสอน รายวิชา 3652204 การโปรแกรมคอมพิวเตอร ... · เอกสารประกอบการสอน

127

ผลลพธเมอทดสอบโปรแกรม

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

ch[0] = D ch[1] = u ch[2] = s ch[3] = i ch[4] = t ch[5] = ch[6] = T ch[7] = r ch[8] = a ch[9] = n ch[10] = g

// โคดโปรแกรม #include "stdio.h" main( ) {

int x[10]; int i; for ( i = 0; i < 10; i++ ) { printf( "Enter Number : " ); scanf("%d",&x[i]); } for ( i = 0; i < 10; i++ ) { printf( "\n x[%d] = %d ", i , x[i] ); } }

Page 137: เอกสารประกอบการสอน รายวิชา 3652204 การโปรแกรมคอมพิวเตอร ... · เอกสารประกอบการสอน

128

ผลลพธเมอทดสอบโปรแกรม

Enter Number : 9

Enter Number : 8

Enter Number : 7

Enter Number : 6

Enter Number : 5

Enter Number : 4

Enter Number : 3

Enter Number : 2

Enter Number : 1

Enter Number : 0

x[0] = 9

x[1] = 8

x[2] = 7

x[3] = 6

x[4] = 5

x[5] = 4

x[6] = 3

x[7] = 2

x[8] = 1

x[9] = 0

Page 138: เอกสารประกอบการสอน รายวิชา 3652204 การโปรแกรมคอมพิวเตอร ... · เอกสารประกอบการสอน

129

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

วชา A วชา B วชา C วชา D วชา E

นศ.คนท 1 นศ.คนท 2 นศ.คนท 3 นศ.คนท 4 นศ.คนท 5 นศ.คนท 6 นศ.คนท 7 นศ.คนท 8 นศ.คนท 9

นศ.คนท 10

รปแบบการประกาศตวแปร

ตวอยางการประกาศตวแปรอารเรยแบบ 2 มต (แบบจองพนทอยางเดยว)

ประกาศตวแปรอารเรยชนด int int b[5][4];

Column (คอลมน) b [0] [1] [2] [3]

Row

(แถว

)

[0] b[0][0] b[0][1] b[0][2] b[0][3] [1] b[1][0] b[1][1] b[1][2] b[1][3] [2] b[2][0] b[2][1] b[2][2] b[2][3] [3] b[3][0] b[3][1] b[3][2] b[3][3] [4] b[4][0] b[4][1] b[4][2] b[4][3]

ชนดขอมล ชอตวแปร [row][column];

Page 139: เอกสารประกอบการสอน รายวิชา 3652204 การโปรแกรมคอมพิวเตอร ... · เอกสารประกอบการสอน

130

ประกาศตวแปรอารเรยชนด float int float cost[10][5];

Column (คอลมน) cost [0] [1] [2] [3] [4]

Row

(แถว

)

[0] [0][0] [0][1] [0][2] [0][3] [0][4] [1] [1][0] [1][1] [1][2] [1][3] [1][4] [2] [2][0] [2][1] [2][2] [2][3] [2][4] [3] [3][0] [3][1] [3][2] [3][3] [3][4] [4] [4[0] [4][1] [4][2] [4][3] [4][4] [5] [5][0] [5][1] [5][2] [5][3] [5][4] [6] [6][0] [1][1] [1][2] [1][3] [1][3] [7] [7][0] [7][1] [7][2] [7][3] [7][4] [8] [8][0] [8][1] [8][2] [8][3] [8][4] [9] [9][0] [9][1] [9][2] [9][3] [9][4]

ประกาศตวแปรอารเรยชนด char

int char name[15][2];

Column (คอลมน) name [0] [1]

Row

(แถว

)

[0] name [0][0] name [0][1] [1] name [1][0] name [1][1] [2] name [2][0] name [2][1] [3] name [3][0] name [3][1] [4] name [4[0] name [4][1] [5] name [5][0] name [5][1] [6] name [6][0] name [1][1] [7] name [7][0] name [7][1] [8] name [8][0] name [8][1] [9] name [9][0] name [9][1]

[10] name [10][0] name [10][1] [11] name [11][0] name [11][1] [12] name [12][0] name [12][1] [13] name [13][0] name [13][1] [14] name [14][0] name [14][1]

Page 140: เอกสารประกอบการสอน รายวิชา 3652204 การโปรแกรมคอมพิวเตอร ... · เอกสารประกอบการสอน

131

ตวอยางการประกาศตวแปรอารเรยแบบ 2 มต (แบบกาหนดคาในพนท)

ประกาศตวแปรอารเรยชนด int int num[2][4] = { {1,2,3,4},

{5,6,7,8} };

Column num [0] [1] [2] [3]

Row

[0] 1 2 3 4 [1] 5 6 7 8

ประกาศตวแปรอารเรยชนด float float cost[5][5] ={ {1.0,2.0,3.0,4.0,5.0},

{11.1,22.22,33.33,44.44,55.55}, {0,0,3.3,4.4,5.5},

{0,0,0,0,0} };

Column cost [0] [1] [2] [3] [4]

Row

[0] 1.0 2.0 3.0 4.0 5.0 [1] 11.1 22.22 33.33 44.44 55.55 [3] 0 0 3.3 4.4 5.5 [4] 0 0 0 0 0

ประกาศตวแปรอารเรยชนด char char ch[6][5] ={ {‘W’,’i’,’t’,’o’,’o’},

{‘n’, ’ ‘ ,’D’,’u’,’s’},

{‘I’,’t’} };

Column ch [0] [1] [2] [3] [4]

Row

[0] W i t o o [1] n D u s [3] i t [4] [5]

Page 141: เอกสารประกอบการสอน รายวิชา 3652204 การโปรแกรมคอมพิวเตอร ... · เอกสารประกอบการสอน

132

ตวอยาง การทดลองการประกาศตวแปรอารเรยแบบ 2 มต

ตวอยางท 9.5 โปรแกรมแสดงตวเลขทไดเกบไวในตวแปรอารเรยแบบ 2 มต

ผลลพธเมอทดสอบโปรแกรม

// โคดโปรแกรม #include "stdio.h" main( )

{ int i , j ; int num[3][3] = { { 1,2,3 } ,

{ 4,5,6 } , { 7,8,9 } } ;

for ( j = 0 ; j <= 2 ; j++ ) { for ( i = 0 ; i <= 2 ; i++ )

{ printf( " %d \t " , num[i][j] ) ; } printf( "\n" ) ; } }

1 2 3 4 5 6 7 8 9

Page 142: เอกสารประกอบการสอน รายวิชา 3652204 การโปรแกรมคอมพิวเตอร ... · เอกสารประกอบการสอน

133

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

ผลลพธเมอทดสอบโปรแกรม

// โคดโปรแกรม #include "stdio.h" main( )

{ char ch[2][4] ={ {'W','i','t','o'}, {'0','n',} }; for ( j = 0 ; j <= 1 ; j++ ) {

for ( i = 0 ; i <= 3 ; i++ ) {

printf( " ch[%d][%d] = %c \t " , j,i,ch[j][i] ) ; } printf( "\n" ) ; } }

ch[0][0] = W ch[0][1] = i ch[0][2] = t ch[0][3] = o ch[1][0] = o ch[1][1] = n ch[1][2] = ch[1][3] =

Page 143: เอกสารประกอบการสอน รายวิชา 3652204 การโปรแกรมคอมพิวเตอร ... · เอกสารประกอบการสอน

134

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

// โคดโปรแกรม #include "stdio.h" main( )

{ int i , j ; char ch[3][3]; for ( j = 0 ; j <= 2 ; j++ )

{ for ( i = 0 ; i <= 2 ; i++ ) { printf("\n\n Enter Character :" ); ch[j][i] = getch(); putchar(ch[j][i]); }

} printf( "\n" ) ; for ( j = 0 ; j <= 2 ; j++ ) {

for ( i = 0 ; i <= 2 ; i++ ) {

printf( " ch[%d][%d] = %c \t " , j , i , ch[j][i] ); } printf( "\n" ) ;

} }

Page 144: เอกสารประกอบการสอน รายวิชา 3652204 การโปรแกรมคอมพิวเตอร ... · เอกสารประกอบการสอน

135

ผลลพธเมอทดสอบโปรแกรม

Enter Character : A Enter Character : B Enter Character : C Enter Character : 1 Enter Character : 2 Enter Character : 3 Enter Character : x Enter Character : y Enter Character : z ch[0][0] = A ch[0][1] = B ch[0][2] = C ch[1][0] = 1 ch[1][1] = 2 ch[1][2] = 3

ch[2][0] = x ch[2][1] = y ch[2][2] = z

Page 145: เอกสารประกอบการสอน รายวิชา 3652204 การโปรแกรมคอมพิวเตอร ... · เอกสารประกอบการสอน

136

สรปทายบท

อารเรย (Arrays) เปนโครงสรางขอมลของกลมสมาชกทใชเกบขอมลชนดเดยวกน แลวมาจดเรยงกนอยางตอเนอง โดยขอมลชนดเดยวกน คอ ขอมลทกตวทอยในอารเรยจะตองเปนขอมลชนดเดยวกนเทานน เชน ถาเปนอารเรยชนดจานวนเตม ขอมลทกตวในอารเรยกตองเปนชนดจานวนเตมไมสามารถเกบขอมลตางชนดกนได โดยอารเรยจะจดเกบชดขอมลในหนวยความจาในแบบตอเนองกนไป ซงแตกตางจากตวแปรธรรมดา โดยขอมลแตละตวจะมลาดบของสมาชก เรยกวา element ซงแตละ element จะม อนเดกซ (index) เปนตวชตาแหนงของขอมลในหนวยความจา โดยทอนเดกซในตาแหนงแรกจะเรมจาก ศนย (0)

1. ตวแปรอารเรยแบบ 1 มต ตวแปรอารเรยแบบ 1 มต จะเปนการเกบขอมลตอเนองกนไปเปนแถว การประกาศชอตวแปรอารเรยแบบ 1 มตจะใชชอเพยงชอเดยวตามดวยเครองหมาย [ ] ครอมตวเลขทบอกถงจานวนของขอมลทตองการจองพนทเอาไว

รปแบบการประกาศตวแปรอารเรยแบบ 1 มต

ตวอยางการประกาศตวแปรอารเรยแบบ 1 มต (แบบจองพนทอยางเดยว)

ประกาศตวแปรอารเรยชนด int int num[5];

ประกาศตวแปรอารเรยชนด float float score[7];

ประกาศตวแปรอารเรยชนด char char ch[4];

ตวอยางการประกาศตวแปรอารเรยแบบ 1 มต (แบบกาหนดคาในพนท)

ประกาศตวแปรอารเรยชนด int int num[5] = { 10,20,30,40,50 } ;

ประกาศตวแปรอารเรยชนด float float score[7] = { 1.00,2.00,33.33, 46.78,10.45,1.50,2.0 } ;

ประกาศตวแปรอารเรยชนด char char ch[7] = “witoon” ;

ชนดขอมล ชอตวแปร [ขนาดของอารเรย];

Page 146: เอกสารประกอบการสอน รายวิชา 3652204 การโปรแกรมคอมพิวเตอร ... · เอกสารประกอบการสอน

137

หรอถาตองการกาหนดคาใหกบอารเรยเปนอกขระสามารถทาไดดงน char name[9] = { ‘D’, ‘u’, ‘s’, ‘i’, ‘t’, ‘ ’, } ;

2. ตวแปรอารเรยแบบ 2 มต

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

รปแบบการประกาศตวแปรอารเรยแบบ 2 มต

ตวอยางการประกาศตวแปรอารเรยแบบ 2 มต (แบบจองพนทอยางเดยว)

ประกาศตวแปรอารเรยชนด int int b[5][4];

ประกาศตวแปรอารเรยชนด float int float cost[10][5];

ประกาศตวแปรอารเรยชนด char int char name[15][2];

ตวอยางการประกาศตวแปรอารเรยแบบ 2 มต (แบบกาหนดคาในพนท)

ประกาศตวแปรอารเรยชนด int int num[2][4] = { {1,2,3,4},

{5,6,7,8} };

ประกาศตวแปรอารเรยชนด float float cost[5][5] = { {1.0,2.0,3.0,4.0,5.0},

{11.1,22.22,33.33,44.44,55.55}, {0,0,3.3,4.4,5.5},

{0,0,0,0,0} };

ประกาศตวแปรอารเรยชนด char char ch[6][5] = { {‘W’,’i’,’t’,’o’,’o’},

{‘n’, ’ ‘ ,’D’,’u’,’s’},

{‘I’,’t’} };

ชนดขอมล ชอตวแปร [row][column];

Page 147: เอกสารประกอบการสอน รายวิชา 3652204 การโปรแกรมคอมพิวเตอร ... · เอกสารประกอบการสอน

138

คาถามทบทวน

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

2. จงเขยนโปรแกรมเกบคาตวอกษรจากผใชงานจานวน 12 ตวอกษรไวในตวแปรแบบอารเรย จากนนเมอผใชงานปอนเสรจ ใหโปรแกรมแสดงคาตวอกษรในอารเรยออกมาทงหมด

3. จงเขยนโปรแกรมเกบขอมลของนกศกษา 5 คน โดยขอมลประกอบไปดวย ชอ อาย คะแนนวชา A คะแนนวชา B เมอโปรแกรมรบขอมลเสรจใหโปรแกรมแสดงขอมลทงหมดออกมา

4. จงเขยนโปรแกรมเกบขอมลของนกศกษา 5 คน โดยขอมลประกอบไปดวย ชอ อาย คะแนนวชา A คะแนนวชา B และเกรดวชา A และเกรดวชา B เมอโปรแกรมรบขอมลเสรจสนใหโปรแกรมถามชอวาตองการดขอมลของใคร และเมอผใชงานปอนชอคนนนใหโปรแกรมแสดงขอมลคนนนออกมา เอกสารอางอง

คะชา ชาญศลป. (2548). ภาษาซสาหรบผเรมตน. กรงเทพมหานคร: วรตนเอดดเคชน. ประภาพร ชางไม. (2545). คมอการเขยนโปรแกรมภาษา C ฉบบผเรมตน. กรงเทพมหานคร:

อนโฟเพรส. ธรวฒน ประกอบผล. (2553). คมอการเขยนโปรแกรมภาษา C. กรงเทพมหานคร: ซมพลฟลาย. สระสทธ ทรงมา และภรพจน แกวยอง. (2552). การโปรแกรมคอมพวเตอร.: มหาวทยาลยราชภฏ

สวนดสต. สมชาย รตนเลศนสรณ. (2553). การเขยนโปรแกรมคอมพวเตอรดวยภาษาซ. กรงเทพมหานคร: สมาคม

สงเสรมเทคโนโลย (ไทย-ญปน) ส.ส.ท. สานนท เจรญฉาย. (2543). การเขยนโปรแกรมและอลกอรทม. กรงเทพมหานคร: มหาจฬาลงกรณราช

วทยาลย. อรพน ประวตบรสทธ. (2554). คมอการเรยนภาษา C ฉบบปรบปรงใหม (พมพครงท 10).

กรงเทพมหานคร: โปรวชน. http://www.61.7.214.35/c/webbase/unit9/arrays.php http://www.mwit.ac.th/~cs/download/tech30101/ch12.html http://www.krubpk.com/com_3/pan8/pan9_3.html http://www.bcoms.net/php/php08.asp http://www.thaigoodview.com/library/contest2552/type2/tech04/22/cit/6_1.html

Page 148: เอกสารประกอบการสอน รายวิชา 3652204 การโปรแกรมคอมพิวเตอร ... · เอกสารประกอบการสอน

139

บทท 10

ฟงกชนและการสรางฟงกชนในภาษาซ

แผนการสอนประจาบท หวขอเนอหา 10.1 ฟงกชนมาตรฐานในภาษาซ

10.2 ฟงกชนทผพฒนาโปรแกรมสรางขน วตถประสงคเชงพฤตกรรม 1. ผเรยนสามารถเขาใจหลกการทางานของคาสง if ไดอยางเขาใจและถกตอง 2. ผเรยนสามารถนาคาสง if ไปใชงานในการเขยนโปรแกรมในกรณตาง ๆ ไดอยางถกตอง 3. ผเรยนสามารถเขาใจหลกการทางานของคาสง switch ไดอยางเขาใจและถกตอง

4. ผเรยนสามารถนาคาสง switch ไปใชงานในการเขยนโปรแกรมในกรณตาง ๆ ไดอยางถกตอง วธการสอน 1. สอนแบบบรรยายโดยใชเอกสารประกอบการสอน 2. สอนแบบบรรยายโดยใช Slide Power Point 3. สอนโดยใชโปรแกรม Turbo C++ 4.5 เพอลงมอปฏบตในการเขยนโปรแกรมภาษาซ

4. สอนโดยใหผเรยนเปนสวนกลาง โดยใชวธถามตอบกบผเรยนระหวางบรรยาย 5. ใหผเรยนสรปและอธบายหวขอทผเรยนทไดรบมอบหมาย

สอการเรยนการสอน 1. เอกสารประกอบการสอน

2. Slide Power Point 3. โปรแกรม Turbo C++ 4.5 4. ตวอยางแบบทดสอบ

การวดผลและประเมนผล 1. การทาตามตวอยางโจทยคาสงและการทาแบบฝกหด

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

Page 149: เอกสารประกอบการสอน รายวิชา 3652204 การโปรแกรมคอมพิวเตอร ... · เอกสารประกอบการสอน

140

บทท 10

ฟงกชนและการสรางฟงกชนในภาษาซ

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

10.1 ฟงกชนมาตรฐานในภาษาซ

ฟงกชนมาตรฐานในภาษาซ ซงจะอยในไลบรารภาษาซมาตรฐาน (C Standard Library) ไลบรารภาษาซมาตรฐานประกอบดวยฟงกชนตาง ๆ มากมาย ไมวาจะใชสาหรบการคานวณทางคณตศาสตร การจดการกบขอความ การจดการกบ input/output และอนๆ ซงจะทาใหงานของโปรแกรมเมอรงายขน โดยการใชงานฟงกชนประเภทนจะตองรวม (include) ไลบรารทตองการใชงาน เพอใหตวแปลภาษารวาฟงกชนทโปรแกรมเมอรตองการใชอยในไลบรารมาตรฐานตวใด

ในบางครงอาจเรยกวา library functions ปกตฟงกชนเหลานจะจดเกบไวใน header files ดงนนผใชจะตองรวาฟงกชนนนอยใน header file ใด จงจะนาไปเรยกใชในสวนตนของโปรแกรม ดวย #include <header file.h> ได เชน #include <stdio.h> ตวอยาง เชน หากตองการใชฟงกชน printf () ซงอยในไลบรารมาตรฐานสาหรบเกยวกบอนพตและเอาตพต (standard input/output) ทชอ stdio โดยจะตองเรยกใชฟงกชน #include<stdio.h> โดยท stdio.h เปนชอ header file ของไลบรารมาตรฐาน stdio หรอหากตองการใชฟงกชน clrscr() ของไลบรารมาตรฐาน conio เพอลางหนาจอ โดยจะตองเรยกใชฟงกชน #include<conio.h>

ตารางท 10.1 ตวอยางฟงกชนมาตรฐานในภาษาซ

ไลบราร ฟงกชน คาอธบาย

Stdio.h printf( ) คาสงใชในการแสดงผล scanf( ) คาสงใชในการรบขอมล

conio.h

getchar( ) คาสงใชในการรบคาขอมลอกขระ getch( ) คาสงใชในการรบคาขอมลอกขระ putchar( ) คาสงใชในการแสดงผลอกขระ clrscr( ) คาสงเคลยรหรอลางขอมลหนาจอคอมพวเตอร

math.h

abs(X) คานวณคาสมบรณของ X arctan(X) คานวณคา arctan ของ X cos(X) คานวณคา cosine ของ X exp(X) คานวณคา ex โดย e = 2.71828 เปนเลขฐานของลอการทม

Page 150: เอกสารประกอบการสอน รายวิชา 3652204 การโปรแกรมคอมพิวเตอร ... · เอกสารประกอบการสอน

141

ตารางท 10.1 ตวอยางฟงกชนมาตรฐานในภาษาซ (ตอ)

ไลบราร ฟงกชน คาอธบาย

math.h

Ln(X) คานวณคาลอการธมธรรมชาตของ X โดย X > 0 Odd(X) ทดสอบวา X เปนเลขจานวนคหรอไมโดยใหคาเปนจรง ถา X เปน

เลขจานวนคมฉะนนใหคาเปนเทจ Sin(X) คานวณคา sine ของ X Round(X) ใหคาเลขจานวนเตมทใกล X ทสด โดยเศษตงแต 0.5 ขนไปปดขน Sqr(X) คานวณคายกกาลงทสองของ X Sqrt(X) คานวณคารากทสองของ X Trunc(X) ใหคาเลขจานวนเตมทปดเศษทศนยมของเลขจานวนจรง X ทง Chr(X) ใหคาตวอกขระทมรหสแอสกเปน X Ord(X) ใหคารหสแอสกทตรงกบตวอกขระ X Pred(X) ใหคาขอมลลาดบกอนหนา X ตามลาดบในตารางรหสแอสก Succ(X) ใหคาขอมลลาดบถดจาก X ตามลาดบในตารางรหสแอสก Upcase(X) ใหคาตวอกขระใหญของ X ในกรณท X เปนตวอกขระเลก มฉะนนให

คาเปนตวอกขระ X ตามเดม Floor(X) ใหคาจานวนเตมทมากทสดทนอยกวา X Ceiling(X) ใหคาจานวนเตมทนอยทสดทมากกวา X Pi ใหคาคงตวของ p = 3.1417

10.2 ฟงกชนทผพฒนาโปรแกรมสรางขน

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

ประเภทขอมล ชอฟงกชน(พารามเตอร) { คาสง…………... 1;

คาสง…………... 2; คาสง…………... 3; คาสง…………... คาสง…………... คาสง…………... n; return ;

}

Page 151: เอกสารประกอบการสอน รายวิชา 3652204 การโปรแกรมคอมพิวเตอร ... · เอกสารประกอบการสอน

142

ประเภทขอมล หมายถง ประเภทของขอมลทสงกลบ สวนนจะมหรอไมมกไดขนอยกบการทางานของฟงกชนนน ๆ ถาหากฟงกชนไมมการสงคากลบสวนนจะประกาศเปน Void

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

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

return หมายถง สวนทใชในการสงคากลบไปยงสวนอน ๆ สวนนจะมหรอไมมกไดขนอยกบการทางานของฟงกชนนน ๆ

ตวอยางการสรางฟงกชนในภาษาซ จากตวอยางขางตน ชอฟงกชนนมชอวา name() จะไมมขอมลในการสงกลบ และไมมการผาน

คาพารามเตอร การทางานกคอเมอมเรยกใชงานฟงกชน name() โปรแกรมจะพมพคาวา I love Dusit

Trang ออกทางหนาจอคอมพวเตอร

จากตวอยางขางตน เปนฟงกชนทใชในการบวกเลข โดยมชอฟงกชนวา number( ) และมการผาน

คาพารามเตอรทางตวแปร a และตวแปร b ในการทางานกคอเมอมเรยกใชงานฟงกชน number( )

โปรแกรมจะนาคาสงผานมามาเกบคาไวในตวแปร a และ b จากนนกจะคานวณตามทโปรแกรมสงงานไว

และเมอคานวณเสรจสน โปรแกรมจะทาการคนคาผลบวกกลบไปผานทางตวแปร x

void name( ) { printf (“I love Dusit Trang”);

}

int number(int a ,int b) { Int x; x = a + b; return x;

}

Page 152: เอกสารประกอบการสอน รายวิชา 3652204 การโปรแกรมคอมพิวเตอร ... · เอกสารประกอบการสอน

143

ตวอยางท 10.1 การเรยกใชงานฟงกชนยอย โดยในฟงกชน main จะมการเรยกใชงานฟงกชนยอยทชอวา name( ) และในคาสงของฟงกชนยอยจะมการแสดงผลขอมลคาวา I love Dusit Trang จานวน 5 ขอความ

ผลลพธเมอทดสอบโปรแกรม

// โคดโปรแกรม #include "stdio.h" void name( ) // ฟงกชนยอย { int i; for (i=0;i<5;i++) { printf ("I love Dusit Trang\n\n"); }

} main( ) // ฟงกชนหลก { name( ); }

I love Dusit Trang I love Dusit Trang I love Dusit Trang I love Dusit Trang I love Dusit Trang

Page 153: เอกสารประกอบการสอน รายวิชา 3652204 การโปรแกรมคอมพิวเตอร ... · เอกสารประกอบการสอน

144

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

ผลลพธเมอทดสอบโปรแกรม

// โคดโปรแกรม #include "stdio.h" int sum(int a ,int b) // ฟงกชนยอยใชในการคานวณการบวก { int c; c = a + b; return c; } main() // ฟงกชนหลก { int x,y;

loop1: printf("\nEnter : "); scanf("%d",&x); printf("\nEnter : "); scanf("%d",&y); printf("\n%d + %d = %d\n",x,y,sum(x,y)); goto loop1; }

Enter : 1

Enter : 2 1 + 2 = 3 Enter : 10

Enter : 20 10 + 20 = 30 Enter : 88

Enter : 99 88 + 99 = 187 Enter : _

Page 154: เอกสารประกอบการสอน รายวิชา 3652204 การโปรแกรมคอมพิวเตอร ... · เอกสารประกอบการสอน

145

ตวอยางท 10.3 การเรยกใชงานฟงกชนยอย โดยการทดลองจะเปนการเขยนโปรแกรมบวกเลข ลบเลข โดยจะมฟงกชนยอย 2 ฟงกชน คอ ฟงกชน summation ใชในการบวก และฟงกชน Deletion ใชในการลบ

// โคดโปรแกรม #include "stdio.h" int summation(int a1 ,int b1) { //ฟงกชนยอยสาหรบการบวก int c1; c1 = a1 + b1; return c1;

} int deletion(int a2 ,int b2) { //ฟงกชนยอยสาหรบการลบ int c2; c2 = a2 - b2; return c2;

} main() { //ฟงกชนหลก int x,y,z; loop1: printf("\n\nYou want to + (1) or - (2) : "); scanf("%d",&z); printf("\nEnter : "); scanf("%d",&x); printf("\nEnter : "); scanf("%d",&y); if(z==1) { printf("\n%d + %d = %d\n",x,y,summation(x,y)); } else if (z==2) { printf("\n%d - %d = %d\n",x,y,deletion(x,y)); } Else { printf("\nYou put the wrong value."); } goto loop1; }

Page 155: เอกสารประกอบการสอน รายวิชา 3652204 การโปรแกรมคอมพิวเตอร ... · เอกสารประกอบการสอน

146

ผลลพธเมอทดสอบโปรแกรม

You want to + (1) or - (2) : 1 Enter : 99

Enter : 1 99 + 1 = 100 You want to + (1) or - (2) : 1 Enter : 1000

Enter : 1001 1000 + 1001 = 2001 You want to + (1) or - (2) : 2 Enter : 100

Enter : 20 100 - 20 = 80 You want to + (1) or - (2) : 2 Enter : 590

Enter : 876 590 - 876 = -286 You want to + (1) or - (2) : 3 Enter : 88

Enter : 99 You put the wrong value. You want to + (1) or - (2) : 100 Enter : 245

Enter : 123 You put the wrong value.

Page 156: เอกสารประกอบการสอน รายวิชา 3652204 การโปรแกรมคอมพิวเตอร ... · เอกสารประกอบการสอน

147

สรปทายบท

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

1. ฟงกชนมาตรฐานในภาษาซ ฟงกชนมาตรฐานในภาษาซ ซงจะอยในไลบรารภาษาซมาตรฐาน (C Standard

Library) ไลบรารภาษาซมาตรฐานประกอบดวยฟงกชนตาง ๆ มากมาย ไมวาจะใชสาหรบการคานวณทางคณตศาสตร การจดการกบขอความ การจดการกบ input/output และอนๆ ซงจะทาใหงานของโปรแกรมเมอรงายขน โดยการใชงานฟงกชนประเภทนจะตองรวม (include) ไลบรารทตองการใชงาน เพอใหตวแปลภาษารวาฟงกชนทโปรแกรมเมอรตองการใชอยในไลบรารมาตรฐานตวใด ในบางครงอาจเรยกวา library functions ปกตฟงกชนเหลานจะจดเกบไวใน header files ดงนนผใชจะตองรวาฟงกชนนนอยใน header file ใด จงจะนาไปเรยกใชในสวนตนของโปรแกรมดวย #include <header file.h> ได เชน #include <stdio.h> , #include<conio.h> เปนตน

2. ฟงกชนทผพฒนาโปรแกรมสรางขน

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

ประเภทขอมล หมายถง ประเภทของขอมลทสงกลบ สวนนจะมหรอไมมกไดขนอยกบการทางานของฟงกชนนน ๆ ถาหากฟงกชนไมมการสงคากลบสวนนจะประกาศเปน Void

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

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

return หมายถง สวนทใชในการสงคากลบไปยงสวนอน ๆ สวนนจะมหรอไมมกไดขนอยกบการทางานของฟงกชนนน ๆ

ประเภทขอมล ชอฟงกชน(พารามเตอร) { คาสง…………... 1;

คาสง…………... 2; คาสง…………... n; return ;

}

Page 157: เอกสารประกอบการสอน รายวิชา 3652204 การโปรแกรมคอมพิวเตอร ... · เอกสารประกอบการสอน

148

คาถามทบทวน

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

2. จงเขยนโปรแกรมรบคาตวเลขจากผใชงาน 1 คา จากนนใหโปรแกรมคานวณคา cosine ของตวเลขทรบเขามา

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

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

โปรแกรมแสดง * ตามจานวนทผใชงานไดปอนเขาไป 6. จงเขยนโปรแกรมโดยสรางฟงกชนยอย โดยโปรแกรมจะทาการรบคาจากผใชงาน 2 คา

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

คะชา ชาญศลป. (2548). ภาษาซสาหรบผเรมตน. กรงเทพมหานคร: วรตนเอดดเคชน. ประภาพร ชางไม. (2545). คมอการเขยนโปรแกรมภาษา C ฉบบผเรมตน. กรงเทพมหานคร:

อนโฟเพรส. ธรวฒน ประกอบผล. (2553). คมอการเขยนโปรแกรมภาษา C. กรงเทพมหานคร: ซมพลฟลาย. สระสทธ ทรงมา และภรพจน แกวยอง. (2552). การโปรแกรมคอมพวเตอร.: มหาวทยาลยราชภฏ

สวนดสต. สมชาย รตนเลศนสรณ. (2553). การเขยนโปรแกรมคอมพวเตอรดวยภาษาซ. กรงเทพมหานคร: สมาคม

สงเสรมเทคโนโลย (ไทย-ญปน) ส.ส.ท. สานนท เจรญฉาย. (2543). การเขยนโปรแกรมและอลกอรทม. กรงเทพมหานคร: มหาจฬาลงกรณราช

วทยาลย. อรพน ประวตบรสทธ. (2554). คมอการเรยนภาษา C ฉบบปรบปรงใหม (พมพครงท 10).

กรงเทพมหานคร: โปรวชน. http://www.bitcom/com1/pan8/cp_11.html http://www.bcoms.net/php/php12.asp http://www.thaigoodview.com/library/contest2552/type2/tech04/22/cit/8_2.html

Page 158: เอกสารประกอบการสอน รายวิชา 3652204 การโปรแกรมคอมพิวเตอร ... · เอกสารประกอบการสอน

ความพยายามอยทไหน

ความสาเรจอยทนน

มหาวทยาลยราชภฏสวนดสต ศนยการศกษานอกทตง ตรง