อกสารประกอบการสอนportal5.udru.ac.th/ebook/pdf/upload/183vz1zwU80p1p052289.pdf ·...
Transcript of อกสารประกอบการสอนportal5.udru.ac.th/ebook/pdf/upload/183vz1zwU80p1p052289.pdf ·...
เอกสารประกอบการสอน
รายวชาการเขยนโปรแกรมคอมพวเตอรเพองานสารสนเทศ 1
(Computer Programming for Information Work 1)
รหสวชา IS50202
วราภรณ ขยายผล
วท.ม. (เทคโนโลยสารสนเทศ)
สาขาวชาสารสนเทศศาสตร คณะมนษยศาสตรและสงคมศาสตร มหาวทยาลยราชภฏอดรธาน
2560
ค ำน ำ เอกสารประกอบการสอนรายวชา การเขยนโปรแกรมคอมพวเตอรเพองานสารสนเทศ 1
รหสวชา IS50202 น เปนรายวชาเอกบงคบส าหรบนกศกษาสาขาวชาสารสนเทศศาสตร เอกสารเลมนจะชวยใหนกศกษมความรความเขาใจเนอหาในรายวชามากยงขน โดยผเขยนไดแบงเนอหาในการเรยนการสอนไว 7 หวขอเรอง ประกอบดวย ความรพนฐานส าหรบการเขยนโปรแกรม โครงสรางการเขยนโปรแกรม ความรพนฐานการเขยนโปรแกรมบนอนเทอรเนต ความรพนฐานเกยวกบภาษา PHP
ฟงกชน (Functions) ของภาษา PHP การจดการไฟลและไดเรคทอรดวยภาษา PHP และการสรางฟอรม (HTML Form) รบสงขอมล
ผเขยนไดศกษาคนควาขอมลเอกสาร ต ารา และแนวความคดจากเจาของผลงานตางๆ ดงทปรากฏในเอกสารอางอง ผเขยนขอขอบพระคณเปนอยางสงไว ณ ทน ผเขยนหวงวาเอกสารเลมนจะอ านวยประโยชนตามจดประสงคทตงไว
วราภรณ ขยายผล
มนาคม 2560
สารบญ
หนา
ค าน า ................................................................................................................................. ก
สารบญ ............................................................................................................................. ค
สารบญภาพ ...................................................................................................................... ช
สารบญตาราง ..................................................................................................................... ฎ
แผนบรหารการสอนประจ ารายวชา .................................................................................... ฐ
แผนบรหารการสอนประจ าบทท 1....................................................................................... 1
บทท 1 ความรพนฐานส าหรบการเขยนโปรแกรม ............................................................... 3
ระบบคอมพวเตอร ................................................................ .......................................... 3 โปรแกรมคอมพวเตอร ................................................................ .................................... 4
ความหมายของโปรแกรมคอมพวเตอร .................................................................... 4 ภาษาคอมพวเตอร ............................................................................................... .... 4 อลกอรทม ............................................................................................ .................... 6 ขนตอนการเขยนโปรแกรม ...................................................................................... 24
สรป ........................................................................................ ........................................ 27 แบบฝกหด ................................................................................... ................................... 28 เอกสารอางอง ................................................................................... .............................. 29
แผนบรหารการสอนประจ าบทท 2....................................................................................... 31
บทท 2 โครงสรางการเขยนโปรแกรม ................................................................................. 33
โครงสรางแบบตามล าดบ (Sequence Structure) ....................................................... 33 โครงสรางแบบทางเลอก (Selection Structure) …....................................................... 35 โครงสรางแบบวนรอบ (Loop Structure) ..................................................................... 38 สรป ........................................................................................ ........................................ 42 แบบฝกหด ........................................................................................ .............................. 42 เอกสารอางอง ..................................................................................... ............................ 43
แผนบรหารการสอนประจ าบทท 3....................................................................................... 45
บทท 3 ความรพนฐานการเขยนโปรแกรมบนอนเทอรเนต .................................................. 47
อนเทอรเนต ........................................................................................ ............................ 47 เวลดไวดเวบ (World Wide Web : WWW) .................................................................. 49
ง สารบญ (ตอ)
หนา
เวบเบราวเซอร (Web Browsers) .................................................................................. 50 เวบเซรฟเวอร (Web Servers) ....................................................................................... 51 ยอารแอล (Uniform Resource Locators : URL) ....................................................... 51 โพรโทคอลเอชททพ (The Hypertext Transfer Protocol : HTTP) ........................... 52 ภาษาทใชในการเขยนโปรแกรม ..................................................................................... 52
ภาษา HTML ........................................................................................................... 52 ภาษา PHP .............................................................................................................. 53
การเตรยมความพรอมในการเขยนโปรแกรมภาษา PHP ................................................ 54 สรป ........................................................................................ ........................................ 55 แบบฝกหด ........................................................................................ .............................. 55 เอกสารอางอง .......................................................................................... ....................... 56
แผนบรหารการสอนประจ าบทท 4....................................................................................... 57
บทท 4 ความรเบองตนเกยวกบภาษา PHP ........................................................................ 59
หลกการท างานของภาษา PHP ...................................................................................... 59 รปแบบของภาษา ........................................................................................................... 60 ตวแปร (Variable) และคาคงท (Constant) .................................................................. 61 ค าสงภาษา PHP เบองตน .............................................................................................. 66 ตวด าเนนการ .................................................................................................................. 70 โครงสรางควบคม ………………………………........................................................................ 75
กลมค าสงแบบทางเลอก .......................................................................................... 75 กลมค าสงแบบวนรอบ ............................................................................................. 81 กลมค าสงแบบกระโดดออกจากค าสงวนรอบ .......................................................... 87
สรป ........................................................................................ ........................................ 89 แบบฝกหด .................................................................................. .................................... 89 เอกสารอางอง ............................................................................. .................................... 91
แผนบรหารการสอนประจ าบทท 5....................................................................................... 93
บทท 5 ฟงกชน (Functions) ของภาษา PHP ................................................................... 95
ลกษณะทวไปของฟงกชน ........................................................................ ....................... 95 การประกาศฟงกชน ................................................................................. ....................... 95 การเรยกใชงานแบบไมมการสงผานคา ........................................................................... 96 การเรยกใชงานแบบมการสงผานคา ............................................................................... 97
จ
สารบญ (ตอ) หนา
การคนคาจากฟงกชน ................................................................................................ 98 การสงผานคาใหแกฟงกชน ....................................................................................... 98 ขอบเขตการเรยกใชตวแปร ....................................................................................... 100
การน าเขาสครปตจากไฟลอนมาใชงาน ..................................................................... 102
การเรยกใชฟงกชนทมอยใน PHP ……....................................................................... 103 สรป ........................................................................................ ..................................... 114 แบบฝกหด ........................................................................................ .......................... 115 เอกสารอางอง ............................................................................................................. 116
แผนบรหารการสอนประจ าบทท 6....................................................................................... 117
บทท 6 การจดการไฟลดวยภาษา PHP .............................................................................. 119
ไฟลขอมล ....................................................................................................................... 119 การเปดและปดไฟลขอมล ........................................................................................ 120 การอานขอมลจากไฟลขอมล ................................................................................... 122 การเขยนขอมลลงไฟลขอมล .................................................................................... 125 การจดการไฟล ........................................................................................................ 127
ไดเรกทอร ....................................................................................................................... 130
การเปดและปดไดเรกทอร ....................................................................................... 131 การอานรายชอไฟลและไดเรกทอรยอยในไดเรกทอร .............................................. 131 การสรางไดเรกทอร ................................................................................................. 132 การลบไดเรกทอร .................................................................................................... 133 การหาไดเรกทอรปจจบน ........................................................................................ 133
สรป ........................................................................................... ..................................... 135
แบบฝกหด ............................................................................................ .......................... 135
เอกสารอางอง ................................................................................................................ 136
แผนบรหารการสอนประจ าบทท 7....................................................................................... 137
บทท 7 การสรางฟอรม (HTML Form) รบสงขอมล .......................................................... 139
การท างานของฟอรม ...................................................................................................... 139 การสรางฟอรมรบขอมล ................................................................................................. 140 ชองรบขอมลตางๆ ในฟอรม ........................................................................................... 142 การสงผานขอมลระหวางเวบเพจ .................................................................................... 161 คกก (Cookie) และ เซสชน (Session) .......................................................................... 162 สรป ........................................................................................ ........................................ 164
ฉ หนา
แบบฝกหด .................................................................................... .................................. 165 เอกสารอางอง ............................................................................. .................................... 167
บรรณานกรม ...................................................................................................................... 169
.
สารบญภาพ
ภาพท หนา
1.1 ผงงานระบบการสรางใบก ากบสนคา ................................................................................. 14 1.2 ผงงานโปรแกรมส าหรบหาผลรวมของตวแปร a, b และ c แลวเกบไวในตวแปร sum ....... 15 1.3 ผงงานโปรแกรมแสดงการหาผลรวมตวเลข 2 จ านวน ......................................................... 20 1.4 ผงงานโปรแกรมแสดงการวดผลการเรยนของนกเรยน ........................................................ 21 1.5 ผงงานโปรแกรมใหแสดงคาทเกบในตวแปร N ..................................................................... 22 1.6 ผงงานโปรแกรมแสดงผลรวมของตวเลขตงแต 1 ถง N ........................................................ 23 1.7 ขนตอนการวเคราะหปญหา ................................................... ...................... ...................... 24 2.1 ผงงานและรหสเทยมโปรแกรมโครงสรางแบบตามล าดบ ..................................................... 33 2.2 ผงงานและรหสเทยมโปรแกรมหาผลคณของตวเลข ............................................................ 34 2.3 ผงงานและรหสเทยมโปรแกรมโครงสรางแบบทางเลอก ...................................................... 35 2.4 ผงงานและรหสเทยมโปรแกรมโครงสรางแบบ 1 ทางเลอก ................................................. 36 2.5 ผงงานและรหสเทยมโปรแกรมโครงสรางแบบหลายทางเลอก ............................................. 37 2.6 ผงงานและรหสเทยมโปรแกรมโครงสรางแบบวนรอบ ......................................................... 39 2.7 ผงงานและรหสเทยมโปรแกรมโครงสรางแบบด าเนนการวนรอบกอนแลวจงตรวจสอบเงอนไขเพอท าซ า ........................................................................................................................
40
2.8 ผงงานและรหสเทยมโปรแกรมโครงสรางแบบท าซ าตามจ านวนรอบทก าหนด .................... 41 3.1 เครอขายอนเทอรเนต .................................................................... ....................................... 49 3.2 บรการเวลดไวดเวบ .............................................................................................................. 50 3.3 โปรแกรมเวบเบราวเซอร ...................................................................................................... 51 3.4 ตวอยางเวบเซรฟเวอรทใชงานอยในปจจบน ........................................................................ 51 3.5 การพมพยอารแอล ............................................................................................................... 52 3.6 โครงสรางและแทกมาตรฐานภาษา HTML .......................................................................... 53 3.7 การเขยนโปรแกรมภาษา PHP ดวย DreamweaverCS6 ................................................... 54 3.8 การทดสอบโปรแกรมภาษา PHP ผานทางเวบเบราวเซอร .................................................. 55 4.1 หลกการท างานของภาษา PHP (ทมา guru99, 2017) ........................................................ 59 4.2 การใสค าอธบายลงในโปรแกรม ........................................................................................... 66 4.3 ค าสง if แสดงในรปแบบผงงาน .......................................................................................... 76 4.4 ค าสง if…else แสดงในรปแบบผงงาน ................................................................................ 77 4.5 ค าสง if… elseif แสดงในรปแบบผงงาน ............................................................................ 79 4.6 ค าสง switch … case แสดงในรปแบบผงงาน, ทมา : (zentut, 2017) ............................. 81
ซ
สารบญภาพ (ตอ)
หนา
4.7 ค าสง while แสดงในรปแบบผงงาน .................................................................................... 82 4.8 ค าสง do … while แสดงในรปแบบผงงาน ......................................................................... 83 4.9 ค าสง for แสดงในรปแบบผงงาน ......................................................................................... 85 7.1 หนาจอลอกอน (Login Form) ....................................................................... ..................... 139 7.2 การท างานของฟอรม (Form HTML) ............................................................................... ... 140 7.3 ผลการสงขอมลแบบ get ..................................................................................................... 141 7.4 ผลการสงขอมลแบบ post ................................................................................................... 142 7.5 เครองมอ Forms ทใชในการสรางฟอรม ............................................................................. 143 7.6 การสรางฟอรมรบขอมลดวยโปรแกรม Dreamweaver ...................................................... 144 7.7a การเลอกแทก <table> .................................................................................................... 145 7.7b ขนตอนการสรางตาราง .................................................................................................... 145 7.7c ตารางและการก าหนดคณสมบตของตาราง ....................................................................... 146 7.8a ใสรายละเอยดทตองการลงในตาราง .................................................................................. 146 7.8b การก าหนด Properties ของ “text field” ส าหรบกรอกชอ .......................................... 147 7.8c การก าหนด Properties ของ “text field” ส าหรบกรอกนามสกล .................................. 147 7.9 ผลลพธและชดค าสงการแทรกชองรบบรรทดเดยวส าหรบกรอกชอ และนามสกล .............. 147 7.10 แทรกชองรบบรรทดเดยวส าหรบกรอกรหสผใช ................................................................ 149 7.11 แทรกชองรบรหสผานบรรทดเดยวส าหรบกรอกรหสผาน .................................................. 149 7.12 ผลลพธการแทรกชองรบรหสผานบรรทดเดยวส าหรบกรอกรหสผใช และรหสผาน ………. 149 7.13 ขนตอนการเพมชองรบขอมลแบบกลองตวเลอก (checkbox) “วชาการ หนงสอเรยน” .. 150 7.14 เพมกลองตวเลอก “นวนยาย เรองสน การตน” ................................................................ 151 7.15 เพมกลองตวเลอก “วารสาร หนงสอพมพ นตยสาร” ........................................................ 151 7.16 เพมกลองตวเลอก “ทวไป” ............................................................................................... 152 7.17 การเพมกลองตวเลอกของประเภทหนงสอทชอบอาน ....................................................... 152 7.18 ขนตอนการเพมปมตวเลอก “เพศ” (radio button) ส าหรบ “ชาย” .............................. 153 7.19 ขนตอนการเพมปมตวเลอก “เพศ” (radio button) ส าหรบ “หญง” .............................. 154 7.20 การเพมปมตวเลอก “เพศ” ปมทใหเลอกคอ “ชาย” และ “หญง” ................................... 154 7.21 ขนตอนการเพมชองรบชอไฟล .......................................................................................... 155 7.22 ขนตอนการเพมปม “Submit” ......................................................................................... 156 7.23 ขนตอนการเพมปม “Reset” ...................................................................................... ...... 157 7.24 ขนตอนการเพมชองรบหลายบรรทด “ทอย” .................................................................... 158
ฌ
สารบญภาพ (ตอ)
หนา 7.25 ขนตอนการเพมรายการตวเลอก “คณะทสงกด” .............................................................. 160 7.26 หนาจอฟอรมรบสมครสมาชกหองสมด .............................................................................. 161 7.27 การก าหนดแอตตรบวตของแทก <form> ท DreamweaverCS6 ................................... 161 7.28 ชดค าสงในโปรแกรม member_list.php ส าหรบแสดงคาออกทางหนาเวบ .................... 162
ญ
ฎ
สารบญตาราง ตารางท หนา
1.1 สญลกษณ ล าดบความส าคญของการท างานของเครองหมายการค านวณ .......................... 8 1.2 ผลลพธของการเปรยบเทยบประโยคค าสงเงอนไขตามหลกการทางพชคณตแบบบลน ....... 9 1.3 สญลกษณมาตรฐานในการเขยนผงงานโปรแกรม ................................................................ 16 4.1 ตวด าเนนการเกยวกบตวเลข ............................................................................................... 70 4.2 ตวด าเนนการในการก าหนดคาใหกบตวแปร ....................................................................... 72 4.3 ตวด าเนนการเปรยบเทยบ ................................................................................................... 73 4.4 ตวด าเนนการทางตรรกะ ..................................................................................................... 74 5.1 รหสรปแบบการแสดงผลวนท และเวลา ............................................................................. 105 6.1 ฟงกชนในภาษา PHP ส าหรบจดการไฟล ............................................................................ 120 6.2 วธการเปดไฟลในภาษา PHP ............................................................................................... 120 6.3 ฟงกชนในภาษา PHP ส าหรบจดการไดเรกทอร .................................................................. 130 7.1 รายละเอยดแอตตรบวตหลกของ แทก <form> ................................................................. 141 7.2 รายละเอยดคาทก าหนดใหกบแอตตรบวต type ของแทก <input> ................................. 142
ฏ
ฐ
แผนบรหารการสอนประจ าวชา รหสวชา IS50202
รายวชา การเขยนโปรแกรมคอมพวเตอรเพองานสารสนเทศ 1 3(2-2-5) (Computer Programming for Information Work 1)
ค าอธบายรายวชา
ศกษาหลกการพนฐานในการเขยนโปรแกรมคอมพวเตอร ภาษาคอมพวเตอร โครงสรางโปรแกรม ขนตอนการพฒนาโปรแกรม แนวคดทางคณตศาสตรและหลกไวยากรณส าหรบการเขยนโปรแกรม ฝกปฏบตการเขยนโปรแกรมคอมพวเตอรเบองตนเพองานสารสนเทศ
วตถประสงคทวไป
1. เพอใหมความรความเขาใจเกยวกบหลกการพนฐานในการเขยนโปรแกรมคอมพวเตอร ภาษาคอมพวเตอร และโครงสรางโปรแกรม
2. เพอใหมความรความเขาใจเกยวกบขนตอนการพฒนาโปรแกรม แนวคดทางคณตศาสตรและหลกไวยากรณส าหรบการเขยนโปรแกรม
3. เพอใหสามารถเขยนโปรแกรมคอมพวเตอรเบองตนเพองานสารสนเทศ
เนอหา
บทท 1 ความรพนฐานส าหรบการเขยนโปรแกรม 8 ชวโมง ระบบคอมพวเตอร โปรแกรมคอมพวเตอร
ความหมายของโปรแกรมคอมพวเตอร ภาษาคอมพวเตอร อลกอรทม ขนตอนการเขยนโปรแกรม
สรป แบบฝกหด
บทท 2 โครงสรางการเขยนโปรแกรม 8 ชวโมง
โครงสรางแบบตามล าดบ (Sequence Structure)
ฑ
โครงสรางแบบทางเลอก (Selection Structure) โครงสรางแบบวนรอบ (Loop Structure) สรป แบบฝกหด
บทท 3 ความรพนฐานการเขยนโปรแกรมบนอนเทอรเนต 8 ชวโมง
อนเทอรเนต เวลดไวดเวบ (World Wide Web : WWW) เวบเบราวเซอร (Web Browsers) เวบเซรฟเวอร (Web Servers) ยอารแอล (Uniform Resource Locators : URL) โพรโทคอลเอชททพ (The Hypertext Transfer Protocol : HTTP) ภาษาทใชในการเขยนโปรแกรม
ภาษา HTML ภาษา PHP
การเตรยมความพรอมในการเขยนโปรแกรมภาษา PHP สรป แบบฝกหด
บทท 4 ความรเบองตนเกยวกบภาษา PHP 12 ชวโมง
หลกการท างานของภาษา PHP รปแบบของภาษา ตวแปร (Variable) และคาคงท (Constant) ค าสงภาษา PHP เบองตน ตวด าเนนการ โครงสรางควบคม
กลมค าสงแบบทางเลอก กลมค าสงแบบวนรอบ กลมค าสงแบบกระโดดออกจากค าสงวนรอบ
สรป แบบฝกหด
บทท 5 ฟงกชน (Functions) ของภาษา PHP 8 ชวโมง
ลกษณะทวไปของฟงกชน การประกาศฟงกชน การเรยกใชงานแบบไมมการสงผานคา
ฒ
การเรยกใชงานแบบมการสงผานคา การคนคาจากฟงกชน การสงผานคาใหแกฟงกชน ขอบเขตการเรยกใชตวแปร
การน าเขาสครปตจากไฟลอนมาใชงาน
การเรยกใชฟงกชนทมอยใน PHP สรป แบบฝกหด
บทท 6 การจดการไฟลดวยภาษา PHP 4 ชวโมง
ไฟลขอมล การเปดและปดไฟลขอมล การอานขอมลจากไฟลขอมล การเขยนขอมลลงไฟลขอมล การจดการไฟล
ไดเรกทอร
การเปดและปดไดเรกทอร การอานรายชอไฟลและไดเรกทอรยอยในไดเรกทอร การสรางไดเรกทอร การลบไดเรกทอร การหาไดเรกทอรปจจบน
สรป
แบบฝกหด
บทท 7 การสรางฟอรม (HTML Form) รบสงขอมล 16 ชวโมง
การท างานของฟอรม การสรางฟอรมรบขอมล ชองรบขอมลตางๆ ในฟอรม การสงผานขอมลระหวางเวบเพจ คกก (Cookie) และ เซสชน (Session) สรป แบบฝกหด
ณ
วธสอนและกจกรรม
1. ตงค าถามใหนกศกษาตอบพรอมแสดงความคดเหน 2. รวมอภปรายเนอหาและท าแบบฝกหดในชนเรยน 3. มอบหมายแบบฝกหดเปนการบาน 4. บรรยายและสาธตโดยใชตวอยางประกอบ 5. สาธตการเขยนโปรแกรมดวยโปรแกรม Adobe Dreamweaver 6. นกศกษาฝกเขยนโปรแกรมดวยโปรแกรม Adobe Dreamweaver
สอการเรยนการสอน
1. เอกสารประกอบการสอนการเขยนโปรแกรมคอมพวเตอรเพองานสารสนเทศ 1
2. เครองคอมพวเตอร 3. โปรแกรม Microsoft PowerPoint 4. โปรแกรม Appserv
5. โปรแกรม Adobe Dreamweaver 6. โปรแกรมประเภท Web Browser : Google Chrome
7. สอออนไลนชวยสอน : โปรแกรม Google Classroom
การวดผลและการประเมนผล
1. การวดผล 1.1. คะแนนระหวางภาคเรยน 70 คะแนน
1.1.1. ความสนใจและการมสวนรวมในชนเรยน 10 คะแนน 1.1.2. งานและกจกรรมทไดรบมอบหมาย 35 คะแนน 1.1.3. ทดสอบกลางภาคเรยน 25 คะแนน
1.2. คะแนนปลายภาคเรยน ทดสอบโดยการปฏบต 30 คะแนน 2. การประเมนผล เกณฑการใหคะแนนระดบองเกณฑดงน
ระดบคะแนน เกรด
80 - 100 A
75 - 79 B+
70 - 74 B
65 - 69 C+
60 - 64 C
55 - 59 D+
50 - 54 D
0 - 49 F
ด
แผนบรหารการสอนประจ าบทท 1
เนอหาประจ าบทท 1 ความรพนฐานส าหรบการเขยนโปรแกรม
ระบบคอมพวเตอร โปรแกรมคอมพเตอร ความหมายของโปรแกรมคอมพวเตอร ภาษาคอมพวเตอร อลกอรทม
ขนตอนการเขยนโปรแกรม
วตถประสงคเชงพฤตกรรม
เมอศกษาบทเรยนนแลว ผเรยนมพฤตกรรมดงน 1. อธบายความหมายเกยวกบระบบคอมพวเตอร โปรแกรมคอมพวเตอร ภาษาคอมพวเตอร และอลกอรทม 2. จ าแนกประเภทของภาษาคอมพวเตอร 3. จ าแนกการท างานพนฐานของระบบคอมพวเตอร
4. สามารถบอกขนตอนการเขยนโปรแกรม 5. สามารถเขยนอลกอรทมในรปแบบผงงานและรหสเทยมแกไขปญหาตามแบบฝกหดประจ าบทได
วธสอนและกจกรรมการเรยนการสอน
1. วธสอน
1.1 บรรยาย 1.2 อภปราย คนควาเพมเตม 1.3 นกศกษาท าแบบฝกหด และผสอนตรวจแบบฝกหด 1.4 มอบหมายแบบฝกหดเปนการบานเพอทบทวนบทเรยน
2. กจกรรมการเรยนการสอน
สปดาห 1-2 (8 ชวโมง) 2.1 ผสอนชแจงค าอธบายรายวชา วธการเรยนการสอน การประเมนผลใหผเรยน
ทราบ และสรางขอตกลงรวมกนในชนเรยน 2.2 ผสอนอธบายเนอหา เปดโอกาสใหผเรยนซกถามปญหาในหวขอทยงไมเขาใจ
ใหผเรยนคนควาเพมเตมจากอนเตอรเนตและเอกสารประกอบการสอน อภปราย และสรปเนอหาสาระส าคญ
2 2.3 ผเรยนท าแบบฝกหดประจ าบทและตอบค าถามลงใน Google Classroom
เพอใหผสอนตรวจ อธบายเพมเตม และสรปค าตอบทถกตอง
สอการเรยนการสอน
1. เอกสารประกอบการสอนการเขยนโปรแกรมคอมพวเตอรเพองานสารสนเทศ 1 2. เครองคอมพวเตอร 3. PowerPoint เนอหาบทท 1 4. สอออนไลนชวยสอน : โปรแกรม Google Classroom
การวดผลและประเมนผล
1. การวดผล
สงเกตจากการตอบค าถาม ตรวจแบบฝกหด 2. การประเมนผล
ผเรยนสามารถตอบค าถามและท าแบบฝกหดไดถกตอง รอยละ 80
บทท 1 ความรพนฐานส าหรบการเขยนโปรแกรม
การเขยนโปรแกรมคอมพวเตอรใหตรงตามความตองการในการใชงานนน ผเขยนโปรแกรมควรศกษารายละเอยดทเกยวของ เพอจะไดน าไปประยกตในการเขยนโปรแกรมระบบงานตางๆ ไดอยางเหมาะสมและมประสทธภาพ ซงในบทนไดเตรยมเนอหาส าหรบผเรมตนและสนใจการเขยนโปรแกรมคอมพวเตอร โดยมเนอหาเกยวกบระบบคอมพเตอร ความหมายโปรแกรมคอมพวเตอร ภาษาคอมพวเตอร ความหมายและหลกการเขยนอลกอรทม และขนตอนการเขยนโปรแกรม
ระบบคอมพวเตอร
ระบบคอมพวเตอรหมายถงการท างานบนเครองคอมพวเตอรทมองคประกอบของฮารดแวร ซอฟตแวร ขอมลน าเขา กระบวนการ และผลลพธทท างานประสานกน เพอท างานบางอยางใหเสรจสน ซงรายละเอยดขององคประกอบตางๆ มดงน (โอภาส เอยมสรวงค , 2557: 31; Joyce Farrell, 2013: 2-4)
1. ฮารดแวร (Hardware) หมายถงอปกรณตางๆ ทเกยวของหรอท างานรวมกนกบเเครองคอมพวเตอร สามารถมองเหนดวยตาและจบตองได เชน แปนพมพ จอภาพ เมาส ล าโพง และเครองพมพ เปนตน ฮารดแวรสามารถแบงออกได 4 หนวยตามลกษณะการท างาน ดงน 1.1 หนวยรบขอมล (Input Unit) หนาทของหนวยนคอ น าเขาขอมลจากผใชไปยงหนวยประมวลผลกลาง ฮารดแวรทท าหนาทในหนวยนคอ แปนพมพ เมาส เครองอานภาพ ปากกาแสง และหนาจอแบบสมผส เปนตน
1.2 หนวยประมวลผลกลาง (Central Processing Unit : CPU) ท าหนาทปฏบตตามค าสงทรบเขามาจากหนวยรบขอมล เพอประมวลผลใหไดผลลพธตามทตองการ
1.3 หนวยแสดงผล (Output Unit) มหนาทน าขอมลหรอผลลพธทไดจากการประมวลผลไปแสดงออกใหผใชงานไดรบร สามารถแสดงออกในลกษณะกระดาษผานเครองพมพ เสยงผานล าโพง และผานจอภาพ เปนตน
1.4 หนวยเกบขอมลส ารอง (Storage Unit) หนวยนจะท าหนาทเกบขอมลทไดจากการประมวลผลน าไปเกบไวในหนวยความจ าส ารอง (ฮารดดสก) ของเครองคอมพวเตอร เพอจะไดน าขอมลทเกบไวนนไปใชในประมวลผลงานบางอยางตอไป 2. ซอฟตแวร (Software) หมายถง โปรแกรมหรอชดค าสงทนกเขยนโปรแกรมสรางขนมาสงใหคอมพวเตอรท างานตามขนตอนทสงใหด าเนนการ หรอควบคมการท างานของฮารดแวร ซงเขยนขนดวยภาษาคอมพวเตอร สามารถแบงออกเปน 2 ประเภทคอ 2.1 ซอฟตแวรระบบ (System Software) เปนโปรแกรมทพฒนาขนมาเพอควบคมการท างานของฮารดแวร เพอรองรบการประมวลผลหรอท างานตามค าสงของผใช ควบคมการเขาใชทรพยากรของเครองคอมพวเตอร แบงปนการใชงานอปกรณเพอหลกเลยงการท างานทขดแยงกน ตวอยางซอฟตแวรประเภทนเชน Windows, Linux หรอ UNIX เปนตน
4
2.2 ซอฟตแวรประยกต (Application Software) เปนโปรแกรมทพฒนาขนมาเพอท างานอยางใดอยางหนงตามความตองการของผใชเปนหลก อกทงยงท างานอยบนซอฟตแวรระบบ เชน โปรแกรมประมวลผลค า (word processing programs) โปรแกรมตารางค านวณ (spreadsheets) โปรแกรมเงน เด อน (payroll programs) โปรแกรมคล งส นค า (inventory programs) และ โปรแกรมเกม เปนตน
3. สวนน าเขา (Input) เปนสงทน าเขาสระบบ เพอใหโปรแกรมน าไปประมวลผลใหไดผลลพธตามวตถประสงคทก าหนดไว ตวอยางขอมลน าเขา เชน ขอมลสนคา ลกคา และบคคล เปนตน ขอมลเหลานสามารถน าเขาในลกษณะของรปภาพ เสยง ขอความและตวเลข เกบไวในหนวยความจ าของคอมพวเตอร 4. กระบวนการ (Processing) การประมวลผลขอมลทน าเขาสระบบคอมพวเตอร ซงอาจประมวลผลเกยวกบการตรวจสอบความถกตองของขอมล การค านวณคาบางคา การจดเกบขอมลบางอยาง จากงานทกลาวมาขางตนจะเปนหนาทของฮารดแวรประเภทหนวยประมวลผลกลาง (CPU) 5. ผลลพธ (Output) หรอสงทน าออกจากกระบวนการเพอน าไปจดเกบไวในหนวยความจ าของเครองคอมพเตอรในลกษณะฐานขอมล มการสงตอไปยงกระบวนการถดไป หรอสงไปเครองพมพหรอจอภาพ เปนตน
โปรแกรมคอมพวเตอร เพอใหเขาใจถงการเขยนโปรแกรมคอมพวเตอรในหวขอนจงไดกลาวถงความหมาย
ภาษาคอมพวเตอร อลกอรทมดงมรายละเอยดตอไปน (รงทวา เสารสงห, 2546: 20-35; สานนท เจรญฉาย, 2544: 10-28; Joyce Farrell, 2013: 7-14) 1. ความหมายของโปรแกรมคอมพวเตอร
โปรแกรมคอมพวเตอร (computer program) หมายถง ชดของค าสงทเขยนขนเพอสงใหคอมพวเตอรท างานตามทตองการ สวนการเขยนโปรแกรม (programming) หมายถง การเขยนชดค าสงดวยภาษาคอมพวเตอรภาษาใดภาษาหนง เพอใหคอมพวเตอรท างานตามโปรแกรมทเราเขยนขน ดงนนผเขยนโปรแกรม (programmer) จ าเปนตองเรยนรภาษาคอมพวเตอร แลวฝกทกษะการเขยนโปรแกรมดวยภาษาคอมพวเตอรทตองการใชงานใหเกดความช านาญ เพอใหสามารถเขยนโปรแกรมคอมพวเตอรไดอยางมประสทธภาพ
2. ภาษาคอมพวเตอร
ภาษาคอมพวเตอร (computer language) หมายถง สญลกษณทผคดพฒนาภาษาก าหนดขนมาเพอใชแทนค าสงสอสาร สงงานระหวางมนษยกบตวเครองคอมพวเตอรและอปกรณตอพวงอน ๆ (รงทวา เสารสงห, 2546: 25)
ภาษาคอมพวเตอร หมายถง ภาษาทใชสอสารกบเครองคอมพวเตอร และสามารถน ามาใชเขยนโปรแกรมคอมพวเตอรสงใหคอมพวเตอรท างานตามค าสงนนได
5
2.1 ประเภทของภาษาคอมพวเตอร สามารถแยกได 4 ประเภทดงน 2.1.1 ภาษาเครอง (machine language) เปนภาษาทสามารถตดตอสอสารกบ
เครองคอมพวเตอรไดโดยตรง เพราะวาการเขยนค าสงและขอมลในภาษาเครองใชระบบเลขฐานสอง (binary number system) คอใชตวเลข 0 และ 1 ทเครองคอมพวเตอรสามารถเขาใจไดโดยไมตองแปล
ตวอยางเชน การบวกแทนดวยรหสทเปนภาษาเครองคอ 10101010 หรอ เลข 9 เปลยนเปนเลขฐานสอง 00001001 เปนตน
ขอเสยของภาษาเครอง คอ เครองคอมพวเตอรตางชนดกนมลกษณะการเขยนภาษาเครองทแตกตางกน และเกดความยงยากในการปรบปรงแกไข ท าใหเกดความไมสะดวกในการใชงาน ดงนนภาษาเครองจงไมเหมาะกบผเรมตนเขยนโปรแกรม
ขอดของภาษาเครอง คอ สามารถเขาถงตวเครองโดยตรงได โดยไมตองผานการแปลรหสเหมอนภาษาประเภทอน จงสามารถประมวลผลรหสค าสงไดอยางรวดเรว
2.1.2 ภาษาแอสเซมบล (assembly language) หรอภาษาสญลกษณ สามารถเรยกอกอยางวาภาษาระดบต า ซงเปนภาษาคอมพวเตอรทพฒนาขนมาเพอใหผเขยนโปรแกรมสามารถเขยนโปรแกรมตดตอกบคอมพวเตอรไดงายกวาภาษาเครอง สวนการเขยนค าสงในภาษาแอสเซมบลจะใชค ายอของภาษาองกฤษและอางถงต าแหนงทอยภายในคอมพวเตอรเปนสวนใหญ เชน เขยนค าสงภาษาแอสเซมบลในการบวกเลข 2 จ านวนคอ 8 กบ 10 ดงน
MOV AX, 8
MOV BX, 10
ADD AX, BX
2.1.3 ภาษาระดบสง (high level language) เปนภาษาทพฒนาตอเนองจากภาษาระดบต าทผเขยนโปรแกรมสามารถเขาใจไดงายกวาภาษาแอสเซมบลและภาษาเครอง ทงนกเพราะการเขยนค าสงของภาษาระดบสงมลกษณะเปนภาษาองกฤษ ซงอานแลวเขาใจไดงายกวาภาษาแอสเซมบล เชน ใชค าวา READ, WRITE, PRINT และ COMPUTE เปนตน ตวอยางของภาษาระดบสงไดแก ภาษาฟอรแทรน (FORTRAN) ภาษาโคบอล (COBOL) ภาษาเบสก (BASIC) ภาษาปาสคาล (PASCAL) และภาษาซ (C) เปนตน
2.1.4 ภาษาระดบสงมาก (very high level language) ภาษาระดบสงมาก
บางครงเรยกวา Fourth Generation Languages (4GLs) เปนภาษาทมลกษณะส าคญ คอ ผเขยนโปรแกรมไมตองบอกวธการท างานโดยละเอยด เพยงแตระบค าสงใหท างานสน ๆ ใหภาษาระดบสงมากเขาใจกพอ สวนวธการค านวณหรอการท างานภาษาระดบสงมากจะเปนผจดการเองทงสน
บางครงเรยกวา non-procedure language ตวอยางภาษาระดบสงมาก ไดแก ภาษาเอสควแอล (Structured Query Language : SQL) ซงนยมใชกนในซอรฟแวรระบบจดการฐานขอมล เชน
ORACLE, SQL Server และ MySQL เปนตน
6 2.2 ตวแปลภาษาคอมพวเตอร (Translator Program) คอโปรแกรมส าหรบแปลภาษาท
พฒนาขนเปนภาษาเครองหรอแปลงเปนเลขฐานสอง จากการพฒนาภาษาคอมพวเตอรประเภทตางๆ ตงแตภาษาสญลกษณไปจนถงภาษาระดบสงมาก จะมการพฒนาโปรแกรมส าหรบแปลภาษาควบคไปดวย เพอใหเครองสามารถประมวลผลค าสงของภาษาคอมพวเตอรได ตวแปลภาษาสามารถแบงตามลกษณะการแปลไดดงน
2.2.1 โปรแกรมแปลภาษาแบบแอสเซมเบลอร (Assembler) เปนโปรแกรมทใชแปลค าสงในการเขยนโปรแกรมทพฒนาดวยภาษาแอสเซมบลเปนภาษาเครอง
2.2.2 โปรแกรมแปลภาษาแบบอนเตอรพรเทอร (Interpreter) ท าหนาทแปลโปรแกรมภาษาระดบสงเปนภาษาเครอง โดยจะแปลโปรแกรมทละประโยค เมอพบขอผดพลาดจะหยดท างาน เพอใหด าเนนการแกไขค าสงทผด จากนนจงจะเรมประมวลผลค าสงใหม
2.2.3 โปรแกรมแปลภาษาแบบคอมไพเลอร (Compiler) แปลโปรแกรมภาษาระดบสงเชนเดยวกบแบบอนเตอรพรเทอร แตเปนการแปลทงโปรแกรม ผลลพธการแปลทงโปรแกรมเรยกวา ออบเจคโคด (Object Code) หลงจากนนจงน าโปรแกรมดงกลาวเชอมโยงเขากบระบบเพอเปลเปนภาษาเครอง
3. อลกอรทม
การศกษาอลกอรทมใหเขาใจจะท าใหผเรยนสามารถน าไปประยกตในการเขยนโปรแกรมไดอยางเหมาะสมและมแนวทางการแกไขปญหา ซงมรายละเอยดของอลกอรทมดงน
3.1 ความหมายของอลกอรทม
ค าวา Algorithm มทมาจากชอของนกคณตศาสตรชาวเปอรเซยในยคศตวรรษท 9 อ ะบ อ บ ด ล ห าห บ น ม ซ า อ ล ค อ วาร ซ ม ย (Abu Abdillah Muhammad bin Musa al-
Khawarizmi) ค าวา al-Khawarizmi ไดเพยนเปน Algorithm เมองานเขยนของเขาไดรบการแปลเปนภาษาละตน แลวกลายเปน Algorithm ซงหมายถงกฎทใชในการคดค านวณเลขคณต และไดกลายมาเปนค าวา ขนตอนวธการ ในชวงศตวรรษท 18 ในปจจบนค านไดมความหมายทกวางขน โดยหมายรวมถงขนตอนวธการในการแกปญหาตางๆ
ราชบณฑตยสถาน ไดบญญตค าวา อลกอรทม เปนภาษาไทยวา ขนตอนวธ ซงมความหมายวา เปนล าดบของขนตอนการค านวณทใชแกปญหา โดยการเปลยนขอมลน าเขาของปญหา (input) ออกมาเปนผลลพธ (output) ขนตอนวธดงกลาวนนสามารถน ามาเขยนเปนโปรแกรมคอมพวเตอรได (ราชบณฑตยสถาน พ.ศ. 2546, 2546: 5)
อลกอรทม หรอ ขนตอนวธ หมายถง ขนตอนการประมวลผลหรอวธการท างานอยางใดอยางหนง ซงสามารถแบงออกเปนขนตอนยอย ๆ มการอธบายล าดบขนตอนการประมวลผลในลกษณะขอความเรมตงแตตนจนจบสนการท างาน อลกอรทมชวยใหนกเขยนโปรแกรมเหนขนตอน
7 การเขยนโปรแกรมในการแกไขปญหาทชดเจนขน จากอลกอรทมสามารถแปลงเปนภาษาทางคอมพวเตอรเพอสงใหคอมพวเตอรท างานตามทตองการได
ตวอยางท 1.1 อลกอรทมของการเดนทางมาเรยนมดงน
1. หลงตนนอน อาบน า ลางหนา แปรงฟน
2. แตงตวมาเรยน
3. กนอาหารเชา
4. เดนทางมาเรยน
5. เขาหองเรยน
เมอไดปฏบตตามอลกอรทมดงกลาวแลวกสามารถเดนทางมาเรยนหนงสอได แตอลกอรทมทจะเดนทางมาเรยนนนมดวยกนหลายวธ ซงไมจ าเปนตองเหมอนกนกได นนหมายความวา อลกอรทมทใชในการแกไขปญหาทางคอมพวเตอรสามารถมไดหลายวธขนอยกบความเหมาะสมและแนวทางทคดวาดทสดในแตละสถานการณ อลกอรทมทใชในการแกไขปญหาทางคอมพวเตอรกไมตางจากอลกอรทมของการเดนทางมาเรยน แตจะตางกนตรงรปแบบของประโยคทใช โดยอลกอรทมทใชในการแกไขปญหาทางคอมพวเตอรจะเขยนเปนประโยคภาษาองกฤษทไมมรปแบบการเขยนทชดเจน
3.2 หลกการเขยนอลกอรทม
เพอใหไดอลกอรทมทสามารถน าไปใชไดอยางมประสทธภาพและเหมาะสม ดงนนจงมหลกการเขยนอลกอรทมพนฐานดงน
3.2.1 ภาษาทใชควรอานเขาใจงาย ไมก ากวม
3.2.2 มล าดบขนตอนการท างานกอน-หลง ทชดเจน
3.2.3 ไดผลลพธทถกตองเมอใชในการแกไขปญหา 3.2.4 สามารถประมวลผลดวยเครองคอมพวเตอรได 3.2.5 อลกอรทมตองมจดสนสด หลงจากด าเนนงานตามระยะเวลาทก าหนด
3.3 คณสมบตการท างานพนฐานของระบบคอมพวเตอร กอนทจะศกษาการเขยนอลกอรทม ควรมความเขาใจถงคณสมบตการท างานพนฐานของระบบคอมพวเตอรกอน เพอน าไปใชในการเขยนอลกอรทมไดถกตอง ซงระบบคอมพวเตอรมคณสมบตการท างานพนฐาน 5 ดานดงน
3.3.1 ดานหนวยความจ า ส าหรบการเขยนโปรแกรมคอมพวเตอรตองเกยวของกบการใชงานพนทในหนวยความจ าของระบบคอมพวเตอร ซงจะก าหนดเปนสญลกษณแทนพนทในหนวยความจ าเรยกวา ตวแปร โดยตวแปรนนจะใชอางองขอมลหรอพนทในหนวยความจ า เชน
8 X= 10
จากประโยคขางตนเปนการก าหนดคา 10 เกบไวในพนทในหนวยความจ าทชอ X หรอตวแปร X
Total= Total + Sum
จากประโยคขางตนเปนการน าคาในตวแปร Sum ไปบวกเขากบคาในตวแปร Total แลวน าผลลพธทไดเกบไวทตวแปร Total ซงคาใหมทไดจะเกบทบคาเดมในตวแปร Total ค าสงประเภทนจะใชในการสะสมคา หรอเปลยนแปลงคาในตวแปรเดม
Tax = Salary * 0.07
จากประโยคขางตนเปนการน าคาทเกบไวในตวแปร Salary คณกบ 0.07 แลวน าผลลพธทไดเกบไวทตวแปร Tax
3.3.2 ดานการค านวณ ระบบคอมพวเตอรสามารถท าการบวก ลบ คณ หาร โดยจะพจารณาเลอกประมวลผลตามล าดบความส าคญของเครองหมายการค านวณทแสดงในนพจน เครองหมายการค านวณและล าดบความส าคญของการท างานดงแสดงตามตารางท 1.1
ตารางท 1.1 สญลกษณ ล าดบความส าคญของการท างานของเครองหมายการค านวณ
เครองหมายการค านวณ การท างาน ล าดบความส าคญของการท างาน
() วงเลบ 1 ** หรอ ˆ ยกก าลง 2
/ หาร 3 * คณ 3 - ลบ 4 + บวก 4
โดยจะด าเนนการในวงเลบกอน ตอดวยยกก าลง หรอกรณทล าดบความส าคญเทากน เชน การหาร และการคณ จะด าเนนการจากซายไปขวา เปนตน
3.3.3 ดานการเปรยบเทยบเชงตรรกะ ระบบคอมพวเตอรมความสามารถในการประมวลผลเชงเปรยบเทยบ โดยพจารณาเงอนไขตามหลกการทางพชคณต เพอก าหนดทางเลอกการท างาน หรอตดสนใจวาหากเงอนไขเปนจรงจะใหด าเนนการค าสงใด กรณเปนเทจใหด าเนนการค าสงใด ดงนนในการเขยนโปรแกรมคอมพวเตอรจะตองศกษาวธใชสญลกษณในการเขยนประโยคค าสงแบบเงอนไขของแตละภาษาคอมพวเตอรทก าหนดใหเลอกใช สญลกษณพชคณตในการเขยนประโยคค าสงเงอนไขดงน = (เทากบ), > (มากกวา), < (นอยกวา), <= (นอยกวาหรอเทากบ), >= (มากกวาหรอเทากบ), <> (ไมเทากบ) เปนตวอยาง 1.2 การน าสญลกษณพชคณตไปใชงาน
9 ตวอยาง 1.2 การเขยนนพจน
Sex= Female
IF (Sex = Male)
Discount = Total* 0.05
Else
Discount = Total* 0.02
End IF
จากนพจนขางตน ก าหนดใหตวแปร Sex มคาเทากบ Female มประโยคค าสงเงอนไขคอ Sex=Male (ถามวาเปนผชายหรอไม) และประโยคส าหรบสงใหท างานม 2 กรณ คอถาเปนจรงใหท าประโยคค าสง Discount = Total*0.05 (มสวนลดส าหรบผชาย 5%) และถาเปนเทจใหท าประโยคค าสง Discount = Total*0.02 (มสวนลดส าหรบผหญง 2%)
สวนสญลกษณพชคณตทใชเชอมประโยคค าสงเงอนไข จะตองใชสญลกษณเพมเตม เพอใหไดขอสรปการท างานวาเปนจรงหรอเปนเทจ สมมตให X และ Y เปนผลลพธของการเปรยบเทยบประโยคค าสงเงอนไข และตองการหาขอสรปของการท างาน โดยจะน าหลกการทางพชคณตแบบบลนมาพจารณาดงตารางท 1.2
ตารางท 1.2 ผลลพธของการเปรยบเทยบประโยคค าสงเงอนไขตามหลกการทางพชคณตแบบบลน
X Y X AND Y X OR Y NOT X T T F F
T F T F
T F F F
T T T F
F F T T
ตวอยาง 1.3 การเขยนนพจนทใชเชอมประโยคค าสงเงอนไข
Sex= Female, Total= 500
IF (Sex = Male) AND (Total > = 1000)
Discount = Total* 0.05
Else
Discount = Total* 0.02
End IF
NetTotal= Total-Discount
Write NetTotal
ค าสงเงอนไข
ค าสงเงอนไข
ค าเชอมประโยค
ค าสงเงอนไข
10 จากนพจนขางตน ก าหนดใหตวแปร Sex มคาเทากบ Female และตวแปร Total
มคาเทากบ 500 มประโยคค าสงเงอนไขคอ Sex=Male (ถามวาเปนผชายหรอไม) และ Total
>=1000 (คาทเกบไวในตวแปร total มคามากกวาหรอเทากบ 1000 หรอไม) โดยใช “AND” เชอมทง 2 ประโยคค าสงเงอนไข สวนประโยคส าหรบสงใหท างานม 2 กรณ คอถาเปนจรงทง 2 เงอนไขใหท าประโยคค าสง Discount = Total*0.05 (มสวนลดให 5%) และถาเปนเทจเงอนไขใดเงอนไขหนงใหท าประโยคค าสง Discount = Total*0.02 (มสวนลดให 2%) แลวเกบคาสวนลดไวในตวแปร Discount จากนนน าสวดลดไปค านวณหาคาใหตวแปร NetTotal นนคอ Total-Discount แลวแสดงคาตวแปร NetTotal ดวยค าสง Write
3.3.4 ดานการแสดงคาขอมล ระบบคอมพวเตอรจะอานคาขอมลจากตวแปรหรอพนทในหนวยความจ าทไดเขยนค าสงน าคาขอมลหรอคาขอมลทไดจากการค านวณนนไปเกบไว มาแสดงผลลพธในรปแบบหรอต าแหนงทตองการ
3.3.5 ดานการจดล าดบการท างาน ระบบคอมพวเตอรมการท างานทละค าสง ตามล าดบจากบนลงลาง (1 บรรทด คอ 1 ค าสง) โดยจะท างานตามค าสงทอยบรรทดบนสดกอน แลวท าค าสงในบรรทดถดไป จนถงค าสงบรรทดสดทาย
3.4 ลกษณะการเขยนอลกอรทม
การเขยนอลกอรทมสามารถเขยนออกมาในรปแบบของรหสเทยม (Pseudo Code)
หรอผงงาน (Flow Chart) โดยผงงานจะแสดงขนตอนการท างานท ใชสญลกษณรปภาพแทนความหมายตางๆ และใชลกศรก าหนดทศทางการด าเนนงาน สวนรหสเทยมคอการน าภาษาธรรมชาตมาใชรวมกบภาษาโปรแกรมชนสง สวนมาตรฐานของไวยากรณนนมรปแบบค าสงทไมชดเจน ท าใหรปแบบการเขยนรหสเทยมแตกตางกนขนอยกบผเขยน ในการใชงานจรงๆ รหสเทยมมกถกน ามาใชเปนตวแทนของอลกอรทม เพราะเขยนงายและเขาใจมากกวาผงงาน ซงหลกวธการเขยนรหสเทยมนนจะใชหลกการเดยวกบหลกการเขยนอลกอรทมทไดกลาวไวกอนหนา
3.4.1 การเขยนอลกอรทมในรปแบบรหสเทยม อลกอรทมในรปแบบรหสเทยมสามารถน าปฏบตการพนฐานของระบบคอมพวเตอรมาใชในการเขยนได ซงมรายละเอยดของปฏบตการพนฐานดงน
3.4.1.1 การรบขอมล ระบบคอมพวเตอรสามารถรบขอมลจากอปกรณอนพตขอมลเชน เมาท คยบอรด และอานจากไฟลขอมล เปนตน สามารถใชค าตางๆ เชน read หรอ get ในการเขยนรหสเทยม ซงจะใช read เมอตองการอานรายการจากไฟลหรอฐานขอมล สวน get จะใชรบขอมลจากคยบอรด เชน
11 Read employeeName, Address
จากประโยคขางตนเปนการอานขอมล employeeName และ Address
Get N, Discount ,Sex
จากประโยคขางตนเปนการรบขอมลจากอปกรณอนพตมาเกบไวในตวแปร N,
Discount และ Sex
Read Salary
จากประโยคขางตนเปนการอานขอมล Salary
3.4.1.2 การแสดงผลลพธ ในการเขยนรหสเทยมทตองการแสดงผลลพธ ซงระบบคอมพวเตอรมการแสดงผลลพธหลายรปแบบ ซงค ากรยาทใชในการเขยนค าสงในรหสเทยมมดงน print, write, output, display โดย print ใชส าหรบแสดงผลลพธออกทางเครองพมพ write
ใชส าหรบแสดงผลลพธเมอตองการจดเกบลงในไฟลขอมล ฐานขอมล หรอตวแปร สวน output หรอ display ใชส าหรบแสดงผลลพธออกทางหนาจอ เชน
Print “Result is 88”
เปนประโยคสงใหแสดงขอความ “Result is 88” ออกทางเครองพมพ
Write Student record to student file
เปนประโยคสงใหจดเกบขอมลนกเรยนลงในไฟล student
Output “My name is Tom”
เปนประโยคสงใหแสดงขอความ “My name is Tom” ออกทางหนาจอ
Display “My name is Jone”
เปนประโยคสงใหแสดงขอความ “My name is Jone” ออกทางหนาจอ
3.4.1.3 การค านวณ โปรแกรมคอมพวเตอรสวนมากตองการใหค านวณสตรทางคณตศาสตร ซงสญลกษณทใชค านวณมดงน
+ ใชแทนการบวก (Add)
- ใชแทนการลบ (Subtract)
* ใชแทนการคณ (Multiply)
/ ใชแทนการหาร (Divide)
12 () ใชแทนเครองหมายวงเลบ (Parenthesis)
ส าหรบค ากรยาทใชแทนการค านวณสามารถใช compute หรอ calculate
แตสามารถเลยงโดยการเขยนเปนสตรค านวณทางคณตศาสตรไดเชนกน เชน
Compute taxTotal = NetTotal* 0.07
จากประโยคขางตนเปนค าสงใหน าคาในตวแปร NetTotal คณกบ 0.07 แลวน าผลลพธไปเกบไวในตวแปร taxTotal และสามารถเขยนเปนอกรปแบบหนงได เชน
taxTotal = NetTotal* 0.07
ถาสตรการค านวณคอนขางซบซอนและตองการใหผลการค านวณถกตองใหใชเครองหมายวงเลบชวยจดล าดบการค านวณ
3.4.1.4 การก าหนดคาตวแปร ในการเขยนรหสเทยมสามารถก าหนดตวแปรไดหลายรปแบบ ไมวาจะเปนการใชค ากรยา initialize หรอ set ในการก าหนดคาเรมตนใหกบตวแปร และยงสามารถใชเครองหมาย = เพอก าหนดคาใหกบตวแปร ตวอยางเชน
Set NetTotal to 0
จากประโยคขางตนเปนการก าหนดเรมตนใหกบตวแปร NetTotal มคาเทากบ 0
Init ialize PriceTotal to 0
จากประโยคขางตนเปนการก าหนดเรมตนใหกบตวแปร PriceTotal มคาเทากบ 0
N= 0
จากประโยคขางตนเปนการก าหนดเรมตนใหกบตวแปร N มคาเทากบ 0
K= 1
จากประโยคขางตนเปนการก าหนดเรมตนใหกบตวแปร K มคาเทากบ 0
3.4.1.5 การก าหนดเงอนไข กรณโปรแกรมทสรางขนตองการเปรยบเทยบ หรอก าหนดเงอนไขเพอเลอกทางเลอกใดทางเลอกหนงภายในรหสเทยมจะใชค าสงเฉพาะคอ
if (เงอนไข) then ด ำเนนกำรกรณจรง else ด ำเนนกำรกรณเทจ end if
โดยใหระบเงอนไขในการเปรยบเทยบหลง if เมอมการเปรยบเทยบเงอนไขแลว หากผลของเงอนไขเปนจรงจะด าเนนการค าสงทอยหลง then และผลของเงอนไขเปนเทจจะด าเนนการค าสงทอยหลง else โดยขอบเขตของประโยคการตรวจสอบเงอนไขจะลงทายดวย end if
13 เสมอ เชน ตองการนบจ านวนของผชายและผหญง โดยจะตองตรวจสอบเงอนไขกอนวา คนทตองการนบเปนเพศชายหรอไม ถาใชใหด าเนนการหลงค าสง then โดยเพมคา 1 ใหกบตวแปร manCount
ถาไมใชใหท าค าสงหลง else คอ เพมคา 1 ใหกบตวแปร femaleCount สามารถเขยนเปนรหสเทยมไดดงน
I f sex is man then
Add 1 to manCount
Else
Add 1 to femaleCount
End if
3.4.1.6 การใชในลกษณะวนซ า คอการประมวลผลขนตอนการท างานซ าๆ สามารถใชค าเฉพาะคอ Dowhile ……….. Enddo เชน ตองการอานรายการขอมลพนกงานในไฟลเพอพมพรายงาน จนกระทงจบไฟล สามารถเขยนเปนรหสเทยมไดดงน
Dowhile not end of file
Read employee record
Print emp_fname,emp_lname,address to report
Enddo
ตวอยาง 1.4 อลกอรทมของการค านวณเกรด โดยใชเงอนไขในการค านวณดงน
คะแนน เกรด นอยกวา 50 F ระหวาง 50 ถง 54 D ระหวาง 55 ถง 59 D+ ระหวาง 60 ถง 64 C ระหวาง 65 ถง 69 C+ ระหวาง 70 ถง 74 B ระหวาง 75 ถง 79 B+ 80 ขนไป A
ประโยคเงอนไข ด าเนนการกรณเปนจรง
ด าเนนการกรณเปนเทจ
ประโยคเงอนไขในการท างาน
ด าเนนการซ ากรณเปนจรง
14 ตามตารางเงอนไขขางตนน ามาพจารณาเขยนอลกอรทมของการค านวณเกรด โดยมการ
ท างานตามล าดบ ยกเวนอลกอรทมในบางขออาจมการก าหนดใหไปท างานทขออน ซงสามารถขามไปท างานทขอนนไดเลย ดงน
get score of student
if score < 50 then
write “grade is F”
else if score < 55 then
write “grad is D”
else if score < 60 then
write “grade is D+”
else if score < 65 then
write “grade is C”
else if score < 70 then
write “grade is C+”
else if score < 75 then
write “grade is B”
else if score < 80 then
write “grade is B+”
else
write “grade is A”
end if
3.4.2 การเขยนอลกอรทมในรปแบบผงงาน อลกอรทมนอกจากจะเขยนในรปแบบของรหสเทยมแลว ยงสามารถเขยนในรปแบบผงงานทใชสญลกษณรปภาพแสดงขนตอนการท างาน ประเภทของผงงานสามารถจ าแนกออกได 2 ประเภทดงน
3.4.2.1 ผงงานระบบ (system flowchart) หมายถง ผงงานทแสดงถงขนตอนวธการท างานของระบบงานใดระบบหนง ซงในผงงานระบบจะแสดงใหเหนถงสอทใชรบขอมล บนทกขอมล วธการประมวลผล ขนตอนการท างานและความสมพนธของสวนตาง ๆ ในระบบงานอยางกวาง ๆ เพอใหเหนภาพรวมของระบบงานใดระบบงานหนง เชน
ภาพท 1.1 ผงงานระบบการสรางใบก ากบสนคา
สรางใบก ากบสนคา
รายละเอยดการสงซอ รายละเอยดใบก ากบสนคา
รายงานใบก ากบสนคา
ขอมลลกคา
ขอมลสนคา
ถา score มคานอยกวา 60 ใหแสดง grade is D+
ถา score มคานอยกวา 55 ใหแสดง grade is D
ถา score มคานอยกวา 65 ใหแสดง grade is C
ถา score มคานอยกวา 50 ใหแสดง grade is F
ถา score มคานอยกวา 70 ใหแสดง grade is C+
ถา score มคาไมตรงเงอนไขใดเลยใหแสดง grade is A
ถา score มคานอยกวา 80 ใหแสดง grade is B+
ถา score มคานอยกวา 75 ใหแสดง grade is B
15 จากภาพระบบการสรางใบก ากบสนคา ประกอบดวยขอมลทน าเขาคอ รายละเอยด
การสงซอผานหนาจอ ไฟลขอมลลกคาและสนคา สวนขอมลผลลพธจะแสดงรายละเอยดใบก ากบสนคาทางหนาจอ และออกรายงานใบก ากบสนคาทางเครองพมพ
3.4.2.2 ผงงานโปรแกรม (program flowchart) หมายถงผงงานทแสดงขนตอน วธการท างานของโปรแกรมทตองการเขยน ภายในผงงานโปรแกรมจะแสดงใหเหนขนตอน วธการท างานของโปรแกรมอยางละเอยด เพอใหคอมพวเตอรสามารถท างานตามทเขยนไวในผงงานโปรแกรมไดอยางถกตอง โดยเราสามารถน าขนตอนวธการท างานของโปรแกรมในขนการวเคราะหงาน มาเขยนเปนผงงานโปรแกรมไดทนท จากนนกสามารถน าผงงานโปรแกรมไปเขยนโปรแกรมดวยภาษาโปรแกรมคอมพวเตอรทถนด ตวอยางภาพท 1.2 แสดงผงงานโปรแกรม
ภาพท 1.2 ผงงานโปรแกรมส าหรบหาผลรวมของตวแปร a, b และ c แลวเกบไวในตวแปร sum จากนนน าคาจากตวแปร sum แสดงออกทางหนาจอ
สญลกษณมาตรฐานทใชเขยนผงงานโปรแกรม โดยสถาบนมาตรฐานแหงชาตของสหรฐอเมรกา (American National Standard Institute) และองคกรระหวางประเทศวาดวยการมาตรฐาน (International Organization for Standardization) ได รวมกนก าหนดสญลกษณมาตรฐานทใชเขยนผงงานโปรแกรม โดยสญลกษณทนยมน ามาใชในเขยนผงงานโปรแกรม มรายละเอยดตามตารางท 1.3
Start
Read a,b,c
Sum=0
Sum=a + b + c
Write sum
Stop
16 ตารางท 1.3 สญลกษณมาตรฐานในการเขยนผงงานโปรแกรม
สญลกษณ/ชอเรยก หนาท การใชงาน
Terminal/Interrupt (เรมตน/สนสด)
แสดงจดเรมตนหรอสนสดของผงงาน ซงผงงานจะตองมจดเรมตนและสนสดเพยงจดเดยวเทานน
แสดงจดเรมตนหรอสนสดของผงงานโปรแกรม
Assignment(การก าหนดคา) Computation (การค านวณ) Process (การประมวลผล)
แสดงการประมวลผล การก าหนดคา และการค านวณ
เปนการก าหนดคาใหกบตวแปร x มคาเปน 1
Input (การน าขอมลเขา) Output (การน าขอมลออก)
การรบขอมลเขา หรอการแสดงขอมลทไมไดก าหนดอปกรณในการรบคา
รบขอมลมาเกบไวทตวแปร N
Input (การน าขอมลเขา)
การรบขอมลเขาทางแปนพมพ (keyboard) หรอดวยตนเอง
รบขอมลมาเกบไวทตวแปร X,Y
Display (การแสดงคาขอมลออกทางจอภาพ)
แสดงคาขอมลออกทางจอภาพ
แสดงค าวา “ผลรวมเปน” ตามดวยคาทเกบในตวแปร sum ออกทางจอภาพ
Start
Stop
X=1
Read N
Read X,Y
“ผลรวมเปน ”
sum
17 สญลกษณ/ชอเรยก หนาท การใชงาน
Document(การแสดงคาขอมลออกในรปเอกสารหรอทางเครองพมพ)
แสดงคาขอมลออกทางเครองพมพหรอในรปเอกสาร
แสดงค าวา “ผลรวมเปน” ตามดวยคาทเกบในตวแปร sum ออกในรปเอกสาร
Decision(การตดสนใจ หรอการเปรยบเทยบ)
ใชส าหรบการตดสนใจเลอกท าอยางใดอยางหนง หรอการเปรยบเทยบ
พจารณาคาทเกบในตวแปร Sex ถามคาเปน M ใหท าขนตอนในทศทางดาน Y และถาคาในตวแปร Sex ไม เปน M ใหท าขนตอนทอยดาน N
Flowchart Connector (จดเชอมตอผงงาน)
จดเชอมตอผงงานในหนาเดยวกน หรอเชอมตอ กรณขนตอนการท างาน 2 ขนตอนเชอมตอกนเพอท าขนตอนเดยวกน
ผงงานดานซายมอเขยนยงไมเสรจแตหนากระดาษไมพอเขยนใหใชสญลกษณจดเชอมตอ ก าหนดชอใหจดเชอมคอ 1 จากนนเรมตนเขยนผงงานตอทางดานขวามอ โดยใหเรมตนดวยจดเชอมตอทชอ 1 แลวตามดวยขนตอนการท างานถดไป
Flowchart Off Page Connector
จดเชอมตอผงงานทอยคนละหนา
ผงงานทเขยนในหนาแรกซงเขยนยงไมเสรจใหใชสญลกษณจดเชอมตอคนละหนา แลวก าหนดชอใหจดเชอมคอ 1
“ผลรวมเปน ” sum
Sex=’M’ Y N
1
1
1
1
18 สญลกษณ/ชอเรยก หนาท การใชงาน
จากนนเรมตนเขยนผงงานในหนาใหม โดยใหเรมตนดวยจดเชอมตอทชอ 1 แลวตามดวยขนตอนการท างานถดไป
Arrow(ลกศร)
ลกศรแสดงทศทางการไหลของผงงาน
แสดงทศทางการไหลของขนตอนการท างานในผงงานจากบนลงลาง
Call Procedure (การเรยนใชโปรแกรมยอย)
การเรยกใชโปรแกรมยอย จากผงงานเปนการเรยนใชโปรแกรมยอยทชอ Sum
File or Database (ไฟลหรอฐานขอมล)
แหลงเกบขอมลหรอหนวยความจ าส ารอง
นยมน าไปใชในการเขยนผงงานแบบผงงานระบบ จากรปเปน
Start
Read N
Start
Read N
Call Procedure
Sum
Student
file
Read student data
19 สญลกษณ/ชอเรยก หนาท การใชงาน
การอานขอมลของนกศกษาเพอน าไปเกบไวทไฟลขอมลนกศกษา (student file)
จากสญลกษณทแสดงในตารางขางตน จ าเปนตองเลอกใชใหเหมาะสมตามขนตอนหรอวธการประมวลผลทวเคราะหงานไวแลวเพอน าไปเขยนเปนผงงาน โดยมการพจารณาล าดบกอนหลงของการท างานเพอจดล าดบภาพของผงงานใหเหมาะสม ซงการเขยนผงงานมล าดบในการเขยนดงน
1) การก าหนดคาเรมตน ตวแปรตางๆ ทใชในผงงานจะตองมการก าหนดคาเรมตน 2) การรบขอมลเขา ใหพจารณาขอมลทจะรบเขามาประมวลผลในโปรแกรม แลว
น าคาดงกลาวไปเกบไวในตวแปรทไดก าหนดเอาไว 3) การประมวลผล เปนการประมวลผลหรอค านวณตางๆ ทตองท าตามล าดบ
ขนตอนการท างานของโปรแกรมทไดวเคราะหไวแลว 4) การแสดงผลลพธ หลงจากทท าการประมวลผลหรอค านวณตางๆ แลวตองการ
แสดงผลลพธทได ซงสามารถแสดงทางจอภาพหรอทางเครองพมพ(เอกสาร)
ขอสงเกตเพมเตม 1) ผงงานใดๆ จะมจดเรมตนและสนสดเพยงแหงเดยว
2) ทศทางล าดบขนตอนการท างานเขยนจากซายไปขวา หรอจากบนลงลาง 3) ทกสญลกษณทใชจะมทศทางเขาและออกเพยง 1 แหงเทานน ยกเวนจดเรมตน
จดสนสด จดเชอมตอ และการตดสนใจ 4) หลกเลยงการเขยนเสนโยงไปมาในลกษณะตดกน กรณจ าเปนตองโยงเสนตดกน
ใหใชจดเชอมตอแทน 5) ทกสญลกษณทใชจะตองมลกศรก ากบทศทางการไหลการท างาน 6) ใชค าอธบายการท างานทสนและเขาใจงาย ควรเขยนใหอยในสญลกษณทเลอกใช
กรณทตองการอธบายเพมเตมใหเขยนไวบนสญลกษณดานขวา 7) ผงงานทเขยนจะตองสะอาด เปนระเบยบเรยบรอย
ตอไปนเปนตวอยางการเขยนผงงาน เพอใหเขาใจและสามารถเขยนผงงานไดอยางมประสทธภาพ
20 ตวอยาง 1.5 ผงงานแสดงการหาผลรวมของตวเลข a, b ซงเปนผงงานแบบล าดบ
ภาพท 1.3 ผงงานโปรแกรมแสดงการหาผลรวมตวเลข 2 จ านวน
จากผงงานขางตนสามารถอธบายขนตอนการท างานไดดงน 1. เรมตน 2. รบคาตวเลข 2 คามาเกบไวทตวแปร a และ b 3. ก าหนดคาเรมตนใหกบตวแปร sum 4. ค านวณผลรวมของตวแปร a และ b แลวน ามาเกบไวทตวแปร sum 5. แสดงผลลพธจากการค านวณ ซงเกบไวทตวแปร sum ออกทางจอภาพ 6. จบการท างาน
Start
Sum=a + b
Stop
Sum=0
Read a, b
Write sum
Start
Read a,b
Sum= 0
Sum= a+ b
Write sum
Stop
เขยนเปนรหสเทยมดงน
21 ตวอยาง 1.6 ผงงานแสดงแบบใหเลอกท าหรอเปรยบเทยบทเกยวกบการวดผลการเรยนของนกเรยน
ภาพท 1.4 ผงงานโปรแกรมแสดงการวดผลการเรยนของนกเรยน
จากผงงานขางตนสามารถอธบายขนตอนการท างานไดดงน 1. เรมตน 2. รบคะแนนของนกเรยนมาเกบไวทตวแปร Score 3. ถา Score >= 60 แลว
a. พมพขอความวา “สอบผาน” มฉะนนแลว b. พมพขอความวา “สอบไมผาน”
4. จบการท างาน
Start
Read Score
I f Score> = 60 then
Write “สอบผำน” Else
Write “สอบไมผำน” End IF
Stop
เขยนเปนรหสเทยมดงน
Stop
Score>=60
Y N
Write “สอบไมผาน” Write “สอบผาน”
Start
Read Score
22 ตวอยาง 1.7 ผงงานแสดงแบบวนรอบการท างานหรอท าซ าแบบท าในขณะท (Do While)
ภาพท 1.5 ผงงานโปรแกรมใหแสดงคาทเกบในตวแปร N
จากผงงานแสดงตวเลขทเกบในตวแปร N ออกทางอปกรณทไมไดระบ โดยใหแสดงตวเลขไปเรอยๆ จนกวาคาของ N จะนอยกวา 0 สามารถอธบายขนตอนการท างานไดดงน
1. เรมตน 2. รบคาตวเลขมาเกบไวทตวแปร N 3. ในขณะทคาทเกบในตวแปร N มากกวาหรอเทากบ 0 แลวท า
a. แสดงคา N b. N=N-1 (ท าการลดคาของ N ลง 1 แลวเกบคาไวทตวแปร N
เหมอนเดม) 4. จบการท างาน
ในการเขยนผงงานแบบวนรอบการท างานสามารถใชค าวา ในขณะท แลวตามดวยเงอนไขในการตดสนใจวาจะท าหรอไม แลวตามดวยค าวา แลวท ำ จากนนเปนขนตอนการท างาน สามารถเรยกการท าซ าหรอวนรอบแบบนวา Do While นอกจากนยงสามารถเขยนรหสเทยมแบบวนรอบอกแบบไดคอ Do Until (ท าจนกระทง) ดงตวอยาง 1.8
Stop
Read N
N
Y
Write N
Start
N=N-1
N >=0
Start
Read N
Do While N> = 0
Write N
N= N-1
End Do
Stop
เขยนเปนรหสเทยมดงน
23 ตวอยาง 1.8 ผงงานแสดงการวนรอบการท างานหรอท าซ าแบบจนกระทงวา (Do Until)
ภาพท 1.6 ผงงานโปรแกรมแสดงผลรวมของตวเลขตงแต 1 ถง N
จากผงงานแสดงผลรวมตวเลขตงแต 1 ถงตวเลขทเกบไวในตวแปร N สามารถอธบายไดดงน
1. เรมตน 2. รบคาตวเลขมาเกบไวทตวแปร N ก าหนดคาเรมตนใหตวแปร Sum เทากบ 0 3. ท าจนกระทง คาทเกบในตวแปร N มคานอยกวา 1
3.1 บวกคาทเกบในตวแปร N กบคาในตวแปร Sum แลวเกบไวทตวแปร Sum 3.2 N=N-1 (ท าการลดคาของ N ลง 1 แลวเกบคาไวทตวแปร N)
4 แสดงขอความ “Summary is” และคาในตวแปร Sum 5 จบการท างาน
Read N
N
Start
Stop
N <1 Y
Write “Summary is” Sum
Sum=Sum + N
N=N-1
Sum=0
Start
Read N
Sum = 0
Do
Sum= Sum+ N
N= N-1
Until N< 1
Write “Summary is” Sum
Stop
เขยนเปนรหสเทยมดงน
24 4. ขนตอนการเขยนโปรแกรม
กอนทจะเขยนโปรแกรมคอมพวเตอรภาษาใดภาษาหนงเพอแกปญหาทางคอมพวเตอร ควรมการศกษาขนตอนวธการทางคอมพวเตอร เพอใหเกดความรความเขาใจทถกตองตามขนตอนวธการพฒนาหรอเขยนโปรแกรม ซงมขนตอนการท างานดงน (ณฐพงษ วารประเสรฐ และ สธ พงศาสกลชย, 2552: 15-20)
4.1 การวเคราะหปญหา ขนตอนนตองกระท าอยางระมดระวงและละเอยด โดยจะตองศกษาปญหาจนเขาใจถง
แกนของปญหาจรงๆ จ าเปนตองอานทบทวนหลายๆ รอบ แลวตความถงความตองการทแทจรงของปญหาทเกด เพอใหไดกระบวนการท างานทจะน าไปใชในการแกไขปญหาอยางมประสทธภาพ การวเคราะหปญหาโดยปกตประกอบดวย 3 สวน ดงภาพท 1.7 ซงมรายละเอยดดงน
ภาพท 1.7 ขนตอนการวเคราะหปญหา
4.1.1 สวนขอมลน าเขา (Input) คอ ขอมลทจะน ามาใชในการประมวลผลเพอใหไดผลลพธทตองการมอะไรบาง โดยพจารณาจากผลลพธของโปรแกรม และตองค านงถงขนตอนวธการท างาน ขอมลทจ าเปนตองใสเขาไปเพอใหไดผลลพธดงกลาว ซงเราสามารถระบขอมลน าเขาไดหลายแนวทาง เชน ก าหนดลงในโปรแกรมโดยตรง ผเขยนโปรแกรมเปนผก าหนด หรอรบขอมลน าเขาจากแปนพมพหรอไฟลขอมล เปนตน
4.1.2 สวนผลลพธ (Output) คอ รปแบบของผลลพธทตองการ สามารถมไดหลายผลลพธหรอมเพยงผลลพธเดยวกได ส าหรบคาทเปนไปไดของผลลพธอาจจะเปนตวเลข ขอความ ตาราง หรอคาทางตรรกะ (จรงหรอเทจ) ขนอยกบผเขยนโปรแกรม แตสวนมากการแสดงผลลพธจะตองอยในรปแบบทเขาใจงายไมซบซอน
4.1.3 สวนการประมวลผล (Process) คอ ขนตอนการท างานตางๆ ทางคอมพวเตอร เพอใหไดผลลพธตามทตองการ ส าหรบการประมวลผลทางคอมพวเตอรจ าเปนตองมการก าหนดตวแปรเพอน ามาใชประมวลผลในโปรแกรม ซงตวแปรจะเปนชอทผเขยนโปรแกรมตงขนมาเองตามหลกการตงชอตวแปรของภาษาคอมพวเตอรทน ามาเขยนโปรแกรม โดยตวแปรตงขนมาเพอใชในการอางองการเกบขอมลในหนวยความจ าและเรยกใชขอมลทเกบภายในตวแปรนนๆ ดงนนผเขยนโปรแกรมจะตองตงชอตวแปรทใชในการเกบขอมลทงหมดทใชในโปรแกรม ไมวาจะเปนขอมลน าเขา ผลลพธ หรอตวแปรบางตวทใชในการนบจ านวนรอบของการท างานในโปรแกรมซงจะเกดขนบางกรณ
2.Process 3.Output 1.Input
25 ตวอยาง 1.9 ปญหาการบวกเลข 2 จ านวน สามารถสรปการวเคราะหปญหาได ดงน
ขนตอนท 1 วเคราะหสวนประกอบทง 3 สวนคอ สวนขอมลน าเขา (input) สวนผลลพธ (output)
และสวนการประมวลผล (process) วาแตละสวนประกอบดวยอะไรบาง ขนตอนท 2 พจารณาขนตอนการท างานหรอ process วาประกอบดวยขนตอนอะไรบางอยางละเอยด ขนตอนท 3 สรปผลการวเคราะหปญหา ดงแสดงไวในตารางท 1.4 ดงน
ตารางท 1.4 ตวอยางการวเคราะหปญหาการบวกเลข 2 จ านวน
Input Process Output ตวเลขทจะน ามาบวกกน 2 จ านวน จากนนก าหนดตวแปร 2 ตวแปร เพอเกบคาตวเลข
1. อานหรอรบคาขอมลตวเลข 2 จ านวนและเกบไวในตวแปรทก าหนด
2. บวกตวเลขทง 2 3. แสดงผลรวม ตามรปแบบท
ผเขยนโปรแกรมก าหนด
ผลรวมของทง 2 ตวเลข ตองมการก าหนดตวแปรส าหรบเกบผลรวม
4.2 การเขยนอลกอรทม
การเขยนอลกอรทมเปนการน าเสนอขนตอนวธการแกไขปญหาใหกบผทเกยวของไดเขาใจวธการอยางคราวๆ ทใชในการแกไขปญหาทไดออกแบบไว จากหวขอกอนหนานไดอธบายวธการเขยนอลกอรทมไวแลว ผเขยนโปรแกรมสามารถศกษาท าความเขาใจกอนลงมอเขยนอลกอรทม จากนนน าผลลพธทไดจากขนตอนการวเคราะหปญหามาเขยนอลกอรทม โดยพจารณาจากสวนของการประมวลผล (process) เปนหลก ซงผเขยนโปรแกรมสามารถเขยนอลกอรทมออกมาในรปแบบของรหสเทยมหรอผงงานโปรแกรมกไดขนอยกบความถนดของผเขยนโปรแกรมแตละคน
4.3 การเขยนโปรแกรม
การเขยนโปรแกรมเปนการน าอลกอรทมมาเขยนใหอยในรปแบบของชดค าสงของภาษาคอมพวเตอร ซงมวธการออกแบบโปรแกรมทอาศยหลกการพนฐานเกยวกบการรบขอมล ประมวลผล และแสดงผลลพธดงน 4.3.1 การออกแบบโปรแกรมแบบ Procedure-Driven ซงมแนวคดวากระบวนการ (Procedure) หรอฟงกชน (Function) อะไรบางทตองกระท า แตละกระบวนการจะมการไหลของขอมลเขาและขอมลออกอะไรบาง โดยแตกการท างานเหลานนออกเปนสวนๆ สวนรายละเอยดของโครงสรางทแทจรงของขอมลจะน ามาพจารณาทหลงจนกวาจะก าหนดการท างานแลว
4.3.2 การออกแบบโปรแกรมแบบ Event-Driven อาศยแนวคดของแตละเหตการณหรอการโตตอบจากภายนอกเปนส าคญ ทสงผลกระทบตอโปรแกรมในดานของการเปลยนแปลงในแตละสถานะ โดยสถานะเรมตนของโปรแกรมจะถกก าหนดขนมาเพอใชเปนตวแทนในการน าเสนอตอ
26 เหตการณในขณะนน แตละเหตการณจะสงผลตอการเปลยนแปลงโปรแกรมทเกดขนในแตละสถานะ ซงท าใหปรากฏเหตการณในล าดบถดไปตามแตละสถานะ เชน เมอผใชตดสนใจกดปมเมาสดานซาย ดานขวา กดปมเมาส 2 ครง และลากเมาส เปนตน ซงแตละเหตการณทผใชกระท าจะสงผลใหเกดล าดบเหตการณทแตกตางกน กลาวคอ ผลของโปรแกรมจะขนอยกบสถานะทผใชคลก การเปลยนแปลของเหตการณจะขนอยกบการกระท าในแตละสถานะ
4.3.3 การออกแบบโปรแกรมแบบ Data-Driven ใชแนวคดของขอมลในโปรแกรม โดยเรมตนจากการวเคราะหขอมลและความสมพนธระหวางขอมล ก าหนดโครงสรางขอมลเบองตน พจารณาความตองการขอมลน าเขาของผลลพธ วามกระบวนการใดทจะท าการแปลงขอมลน าเขาเพอใหไดผลลพธทตองการ
4.4 การทดสอบโปรแกรม หลงจากเขยนโปรแกรมเสรจแลว ขนตอนตอไปคอ การทดสอบการท างานของ
โปรแกรมทเขยนขนวาถกตอง และท างานไดตามตองการหรอไม โดยการแปลภาษาและสงท างาน ส าหรบการทดสอบสามารถท าไดดวยการน าเขาหรอปอนขอมลผานหนาจอทออกแบบไวตามวธการทดสอบโปรแกรมทก าหนดไว โดยสามารถพจารณาจากขอผดพลาดทเกดขนได ซงสามารถแบงออกได 2 ชนดดงน
4.4.1 ความผดพลาดทางไวยากรณภาษา (syntax error) เปนความผดพลาดทเกดจากการเขยนค าสงของภาษาคอมพวเตอรผด เชน ค าสง echo( ) ซงเปนค าสงส าหรบแสดงผลลพธในภาษา php ตองเขยนดวยตวอกษรตวเลก แตเขยนเปน ECHO( ) ตวแปลภาษาของภาษา php จะไมสามารถท างานได เปนตน ส าหรบความผดพลาดทางไวยากรณจะถกตรวจสอบพบเมอมการแปลโปรแกรมใหเปนภาษาเครอง ซงสามารถแกไขโดยการเขยนค าสงใหถกตองตามหลกไวยากรณของแตละภาษา
4.4.2 ความผดพลาดทางตรรกะ (logical error) เปนความผดพลาดทเกดจากการล าดบการท างานผดหรอปอนสตรค านวณผด เชน ตองการหาคา X = X + Y แตปอนสตรเปน X = X * Y ซงผลลพธทไดไมใชตามทตองการ เปนตน วธการตรวจหาความผดพลาดแบบน คอ ตรวจสอบการค านวณผลลพธของโปรแกรมวาตรงกบผลลพธทค านวณดวยมอหรอเครองคดเลขหรอไม ถาไมตรงกนแสดงวาเกดความผดพลาดทางตรรกะขน วธการแกไขคอ การแกไขสตรใหถกตอง หรอแกไขล าดบการท างานใหถกตอง
4.5 การจดท าเอกสารประกอบ
เมอผ เขยนโปรแกรมไดท าการทดสอบโปรแกรมและแกไขขอผดพลาดท เกดขนเรยบรอยแลว ขนตอนตอไปกควรจดท าคมอการใชโปรแกรม เพราะจะท าใหผใชโปรแกรมสามารถใชงานไดถกตอง โดยคมอการใชโปรแกรมทดควรจดท าในลกษณะทแสดงการท างานเปนขนตอน ผใชโปรแกรมสามารถปฏบตตามไดจรง สวนประกอบในเอกสารควรมดงน วตถประสงคของระบบงาน ขนตอนของล าดบการท างาน โดยอาจเปนรหสเทยมหรอผงงาน โปรแกรมตนฉบบ ผลลพธของการท างาน และวธการตดตงโปรแกรม เปนตน
27 4.6 การบ ารงรกษาโปรแกรม
การบ ารงรกษาโปรแกรมทพฒนาขนตองด าเนนการเพอใหโปรแกรมสามารถท างานไดอยางไมตดขด เชน รปแบบรายงานมการเปลยนแปลง ผใชตองการรายงานเพม จ าเปนตองมการแกไขโปรแกรมเพอใหรองรบกบความตองการของผใชทเปลยนแปลง อกทงตองมค าแนะน าใหผใ ชโปรแกรมปฏบต เชน การเกบโปรแกรมตนฉบบ ควรเกบไวในกลองทมดชด ปองกนฝนได ไมควรเกบไวบนโตะท างาน ไมควรเกบไวในรถยนตเพราะอาจถกอากาศรอนท าใหเสยหายได นอกจากนตองมการส าเนาโปรแกรมตนฉบบเอาไว อยางนอย 1 ชด แลวน าชดทส าเนาไปใช ไมควรใชโปรแกรมตนฉบบโดยตรง ควรเกบเอาไวส าหรบกรณทโปรแกรมส าเนาเกดปญหาจะไดน าโปรแกรมตนฉบบมาท าส าเนาและใชงานไดทนท
สรป
ระบบคอมพวเตอรหมายถงการท างานบนเครองคอมพวเตอรทมองคประกอบของฮารดแวร ซอฟตแวร ขอมลน าเขา กระบวนการ และผลลพธ รวมกนท างานเพอใหเสรจสนตามวตถประสงค โปรแกรมคอมพวเตอรหมายถง ชดค าสงทเขยนขนเพอสงใหคอมพวเตอรท างานตามทตองการดวยภาษาคอมพวเตอรทมอยหลายประเภทคอภาษาเครอง ภาษาแอสเซมบล ภาษาระดบสง และภาษาระดบสงมาก และเพอใหเครองคอมพวเตอรท างานและเขาใจค าสงทเขยนขนจะตองใชโปรแกรมส าหรบแปลภาษาดงน โปรแกรมแปลแบบภาษาแอสเซมเบลร แบบอนเตอรพรเทอร และแบบคอมไพเลอร อลกอรทม หรอ ขนตอนวธ หมายถง ขนตอนการประมวลผลหรอวธการท างานอยางใดอยางหนง ซงสามารถแบงออกเปนขนตอนยอย ๆ มการอธบายล าดบขนตอนการประมวลผลในลกษณะขอความเรมตงแตตนจนจบสนการท างาน มหลกการเขยนอลกอรทมพนฐานมดงน ภาษาทใชควรอานเขาใจงาย ไมก ากวม มล าดบขนตอนการท างานกอน-หลงทชดเจน ไดผลลพธทถกตองเมอใชในการแกไขปญหา สามารถประมวลผลดวยเครองคอมพวเตอรได อลกอรทมตองมจดสนสด หลงจากด าเนนงานตามระยะเวลาทก าหนด ส าหรบคณสมบตการท างานพนฐานของระบบคอมพวเตอร ทตองท าความเขาใจเพอน าไปใชในการเขยนอลกอรทมไดถกตอง ประกอบดวยดานตางๆ ดงน ดานหนวยความจ า ดานการค านวณ ดานการเปรยบเทยบเชงตรรกะ ดานการแสดงคาขอมล ดานการจดล าดบการท างาน ลกษณะการเขยนอลกอรทมสามารถเขยนออกมาในรปแบบของรหสเทยม (Pseudo Code) หรอผงงาน (Flow Chart) โดยผงงานจะแสดงขนตอนการท างานทใชสญลกษณรปภาพแทนความหมายตางๆ และใชลกศรก าหนดทศทางการด าเนนงาน สวนรหสเทยมคอการน าภาษาธรรมชาตมาใชรวมกบภาษาโปรแกรมชนสง ขนตอนวธการทางคอมพวเตอร ประกอบดวยขนตอนการท างาน ดงน การวเคราะหปญหา การเขยนอลกอรทม การเขยนโปรแกรม การทดสอบโปรแกรม และการจดท าเอกสารประกอบ และการบ ารงรกษาโปรแกรม
28
แบบฝกหด
1. จงบอกองคประกอบของระบบคอมพวเตอร 2. ภาษาคอมพวเตอรคออะไร แบงออกไดกประเภท
3. จงอธบายความหมายของอลกอรทก
4. จงอธบายคณบตการท างานพนฐานของระบบคอมพวเตอร 5. จงเขยนอลกอรทมในการเลยงปลาในตปลา
6. จงเขยนผงงานและรหสเทยมในการหาพนทวงกลม
29
เอกสารอางอง ณฐพงษ วารประเสรฐ และ สธ พงศาสกลชย. (2552). โครงสรางขอมลและอลกอรทม. กรงเทพฯ:
เคทพ คอมพ แอนด คอนซลท. รงทวา เสารสงห. (2546). การเขยนโปรแกรมคอมพวเตอรเบองตน. กรงเทพฯ: ซเอดยเคชน.
สานนท เจรญฉาย. (2544). การเขยนโปรแกรมและอลกอรทม(กรณตวอยางภาษาซ). กรงเทพฯ : โรงพมพมหาจฬาลงกรณราชวทยาลย วดมหาธาต.
โอภาส เอยมสรวงค. (2557). วทยาการคอมพวเตอรและเทคโนโลยสารสนเทศ (ฉบบปรบปรง เพมเตม). กรงเทพฯ: ซเอดยเคชน. Joyce Farrell. (2013). A Beginner’s Guide to Programming Logic and Design
Introductory. 7th ed. China: Course Technology, Cengage Learning.
แผนบรหารการสอนประจ าบทท 2
เนอหาประจ าบทท 2 โครงสรางการเขยนโปรแกรม
โครงสรางแบบตามล าดบ (Sequence)
โครงสรางแบบทางเลอก (Selection)
โครงสรางแบบวนซ า (Loop)
วตถประสงคเชงพฤตกรรม
เมอศกษาบทเรยนน แลว ผเรยนมพฤตกรรมดงน 1. อธบายความหมายเกยวกบโครงสรางพ นฐานการเขยนโปรแกรม 2. จ าแนกโครงสรางพ นฐานการเขยนโปรแกรม 3. สามารถเขยนอลกอรทมโดยน าโครงสรางรปแบบตางๆ ไปใชแกไขปญหาตามแบบฝกหด
ประจ าบทไดอยางเหมาะสม
วธสอนและกจกรรมการเรยนการสอน
1. วธสอน
1.1 บรรยาย 1.2 อภปราย คนควาเพมเตม 1.3 นกศกษาท าแบบฝกหด และผสอนตรวจแบบฝกหด 1.4 มอบหมายแบบฝกหดเปนการบานเพอทบทวนบทเรยน
2. กจกรรมการเรยนการสอน
สปดาห 3-4 (8 ชวโมง) 2.1 ผสอนอธบายเน อหา เปดโอกาสใหผเรยนซกถามปญหาในหวขอทยงไมเขาใจ
ใหผเรยนคนควาเพมเตมจากอนเตอรเนตและเอกสารประกอบการสอน อภปราย และสรปเน อหาสาระส าคญ
2.2 ผเรยนท าแบบฝกหดประจ าบทและตอบค าถามลงใน Google Classroom เพอใหผสอนตรวจ อธบายเพมเตม และสรปค าตอบทถกตอง
สอการเรยนการสอน
1. เอกสารประกอบการสอนการเขยนโปรแกรมคอมพวเตอรเพองานสารสนเทศ 1 2. เครองคอมพวเตอร 3. PowerPoint เน อหาบทท 2 4. สอออนไลนชวยสอน : โปรแกรม Google Classroom
32
การวดผลและประเมนผล
1. การวดผล
สงเกตจากการตอบค าถาม ตรวจแบบฝกหด 2. การประเมนผล
ผเรยนสามารถตอบค าถามและท าแบบฝกหดไดถกตอง รอยละ 80
บทท 2 โครงสรางการเขยนโปรแกรม
การเขยนโปรแกรมแมวาจะสลบซบซอนหรอมความยาวหลายพนบรรทด ถาไมมการออกแบบโครงสรางโปรแกรมทด อาจไดโปรแกรมทท างานพดพลาด และยากตอการแกไข ตดตาม และพฒนาตอไปได และเพอใหโปรแกรมดเขาใจงาย และสะดวกตอการแกไขเมอพบปญหาในภายหลง จงจ าเปนตองเขยนผงงานหรอรหสเทยบแบบมโครงสรางควบคม ไมวาจะเขยนโปรแกรมคอมพวเตอรดวยภาษาใดกตาม ในบทนมเนอหาเกยวกบโครงสรางการเขยนโปรแกรมทเปนพนฐานส าคญททกโปรแกรมตองมการน าไปใชรวมกนประกอบดวย 3 รปแบบคอ โครงสรางแบบตามล าดบ โครงสรางแบบทางเลอก และโครงสรางแบบวนรอบ
โครงสรางแบบตามล าดบ (Sequence Structure)
โครงสรางแบบตามล าดบ หมายถง การเขยนโปรแกรมใหท างานสงหนงแลวท าอกสงหนงเรยงตอเนองกนไปจากบนลงลาง ประกอบดวยการท างานกขนตอนกไดแตตองกระท าตอเนองกน เขยนรหสค าสงเปนบรรทดและท าทละบรรทดจากบรรทดบนสดไปจนถงบรรทดลางสด แสดงเปนผงงานและรหสเทยมไดดงภาพท 2.1 (วไลพร กลตงวฒนา, 2554: 5; Joyce Farrell, 2013: 86-87)
ภาพท 2.1 ผงงานและรหสเทยมโปรแกรมโครงสรางแบบตามล าดบ
จากภาพขางตนเปนการเขยนโปรแกรมใหมกระบวนการท างาน 3 กระบวนการคอ “Process1”, “Process2” และ “Process3” เรยงตอเนองกนไปตามล าดบ
Process 1
Process 2
Process 3
34 ตวอยางท 2.1 ผงงานและรหสเทยมโปรแกรมโครงสรางแบบตามล าดบ
ภาพท 2.2 ผงงานและรหสเทยมโปรแกรมหาผลคณของตวเลข
ทมา (Joyce Farrell, 2013: 40)
จากตวอยางขางตนผงงานประกาศตวแปรชนดตวเลข (num) ชอ “myNumber” และ “myAnswer” จากนนก าหนดใหรบคาจากแปนพมพ (input) มาเกบไวทตวแปร “myNumber” แลวก าหนดคาใหกบตวแปร “myAnswer” โดยการน าคาทเกบไวในตวแปร “myNumber” มาคณกบตวเลข 2 แลวใหแสดงผล (output) คาของตวแปร “myAnswer” ออกทางอปกรณแสดงผลลพธ เชน จอภาพ หรอเครองพมพ เปนตน
start
stop
Num myNumber
Num myAnswer
Input myNumber
Set myAnswer= MyNumber * 2
Output myAnswer
Start
Num myNumber
Num myAnswer
Input myNumber Set myAnswer= MyNumber * 2
Output myAnswer Stop
35
โครงสรางแบบทางเลอก (Selection Structure)
โครงสรางแบบทางเลอกเปนการเขยนโปรแกรมแบบทดสอบเงอนไขกอนทจะท างานอยางใดอยางหนงหรอเลอกกระท า โดยปกตจะมเหตการณใหท า 2 กระบวนการ ถาเงอนไขเปนจรงจะกระท ากระบวนการหนง และถาเปนเทจจะกระท าอกกระบวนการหนง แตถาซบซอนมากขน จะตองใชเงอนไขหลายชน เชน การตดเกรดนกศกษา เปนตน แสดงเปนผงงานและรหสเทยมไดดงภาพท 2.3
(วไลพร กลตงวฒนา, 2554: 5-8; Joyce Farrell, 2013: 87-88)
ภาพท 2.3 ผงงานและรหสเทยมโปรแกรมโครงสรางแบบทางเลอก
จากภาพขางตนผงงานและรหสเทยมจะท าการทดสอบเงอนไขกอนเพอเลอกด าเนนการอยางใดอยางหนง ถาเงอนไขเปนจรงจะเลอกด าเนนการ “Process 1” และถาเงอนไขเปนเทจจะเลอกด าเนนการ “Process 2” สนสดการทดสอบและออกจากโปรแกรม ส าหรบโครงสรางแบบทางเลอกสามารถแบงออกได 3 รปแบบ ดงน
1. โครงสรางแบบทดสอบเงอนไข 1 ทางเลอก นนคอ ทดสอบเงอนไขกอน ถาเปนจรงใหด าเนนการตามกระบวนการทก าหนด แตถาเปนเทจไมตองด าเนนการใหขามไปด าเนนการในสวนอนทเหลอหรออาจสนสดโปรแกรม ดงแสดงตามภาพท 2.4 พรอยพจารณาตวอยางท 2.2
Start
If Decision is true then
Process 1
Else
Process 2
End if Stop
1 2
36
ภาพท 2.4 ผงงานและรหสเทยมโปรแกรมโครงสรางแบบ 1 ทางเลอก
จากภาพขางตน ผงงานและรหสเทยมกอนด าเนนการจะทดสอบเงอนไข “ConditionH” วาเปนจรงหรอไม ถาเปนจรงจะด าเนนการ “Step J” ตอดวย “Step K” ถดมาเปน “Step L” และออกจากสวนนไปท าสวนถดไป และถาเงอนไขเปนเทจจะไมด าเนนการอะไรพรอมไปท าสวนถดไปเชนกน
ตวอยางท 2.2 รหสเทยมโปรแกรมโครงสรางแบบทดสอบเงอนไข 1 ทางเลอก
Start
Set CustomerAge= 50
Set Sales= 1500
Set Discount= 0
I f CustomerAge> = 65 then
Discount = Sales * 0.50
End if
Set Net= Sales-Discount
Output Net
stop
จากตวอยางขางตนรหสเทยมก าหนดคาให CustomerAge เปน 50 Sales เปน 1500 และคา Discount เปน 0 ทดสอบเงอนไขวา อายของลกคา (customerAge) มคามากกวาหรอเทากบ 65 หรอไม ถาเงอนไขเปนจรงใหก าหนดคาของ Discount เปนการน าคาของ Sales คณดวย 0.50 ถาเงอนไขเปนเทจไมตองด าเนนการในสวนนใหไปก าหนดคาของ Net โดยเกดจากน าคาของ Sales ลบออกดวย Discount พรอมแสดงคาของ Net ออกทางจอภาพ สนสดการท างานของโปรแกรม
ConditionH ?
Step J
Step K
Step L
Start
If ConditionH is true then
Step J
Step K
Step L
End if Stop
No Yes
37 2. โครงสรางแบบทดสอบเงอนไข 2 ทางเลอก เปนการทดสอบเงอนไขกอน ถาเปนจรงใหด าเนนการกระบวนการทเปนจรง แตถาเปนเทจใหเลอกด าเนนการกระบวนการทเปนเทจ แสดงดงภาพท 2.3 พรอมพจารณาตวอยางท 2.3
ตวอยางท 2.3 รหสเทยมโปรแกรมโครงสรางแบบทดสอบเงอนไข 2 ทางเลอก
Start
Set CustomerAge= 50
Set Sales= 1500
I f CustomerAge> = 65 then
Discount = Sales * 0.50
Else
Discount = Sales * 0.25
End if
Set Net= Sales-Discount
Output Net
stop
จากตวอยางขางตนรหสเทยมก าหนดคาให CustomerAge เปน 50 Sales เปน 1500 และคา Discount เปน 0 ทดสอบเงอนไขวา อายของลกคา (customerAge) มคามากกวาหรอเทากบ 65 หรอไม ถาเงอนไขเปนจรงใหก าหนดคาของ Discount เปนการน าคาของ Sales คณดวย 0.50 ถาเงอนไขเปนเทจใหก าหนดคาของ Discount เปนการน าคาของ Sales คณดวย 0.25 สนสดการท างานในสวนการทดสอบเงอนไข แลวใหไปก าหนดคาของ Net โดยเกดจากน าคาของ Sales ลบออกดวย Discount พรอมแสดงคาของ Net ออกทางจอภาพ สนสดการท างานของโปรแกรม
3. โครงสรางแบบทดสอบเงอนไขหลายทางเลอก กอนด าเนนการทางเลอกใดจะทดสอบเงอนไขเสมอ ถาเปนจรงเงอนไขใดใหด าเนนการตามกระบวนการของเงอนไขนน
ภาพท 2.5 ผงงานและรหสเทยมโปรแกรมโครงสรางแบบหลายทางเลอก
ConditionA ? Step J
Step K
Start
If ConditionA is true then
Step J
ElseIf ConditionB is true then
Step K
End if Stop
No
Yes
ConditionB ?
No
Yes
38 จากภาพขางตน ผงงานและรหสเทยมกอนด าเนนการจะทดสอบเงอนไข “ConditionA” วาเปนจรงหรอไม ถาเปนจรงจะด าเนนการ “Step J” ถาเปนเทจ ใหทดสอบเงอนไข “ConditionB” วาเปนจรงหรอไม ถาเปนจรงจะด าเนนการ “Step K” ถดมาเปน “Step L” และถาเงอนไขเปนเทจจะไมด าเนนการอะไรพรอมไปท าสวนถดไปเชนกน พจารณาตวอยางท 2.4 ตอไปน
ตวอยางท 2.4 รหสเทยมโปรแกรมโครงสรางแบบทดสอบเงอนไขหลายทางเลอก
Start
Set CustomerAge= 50
Set Sales= 1500
I f CustomerAge> = 65 then
Discount = Sales * 0.50
Elseif CustomerAge> = 55 then
Discount = Sales * 0.25
End if
Set Net= Sales-Discount
Output Net
stop
จากตวอยางขางตนรหสเทยมก าหนดคาให CustomerAge เปน 50 Sales เปน 1500 และคา Discount เปน 0 ทดสอบเงอนไขวา อายของลกคา (customerAge) มคามากกวาหรอเทากบ 65 หรอไม ถาเงอนไขเปนจรงใหก าหนดคาของ Discount เปนการน าคาของ Sales คณดวย 0.50 ถาเงอนไขเปนเทจใหทดสอบเงอนไขถดไปวา อายของลกคา (customerAge) มคามากกวาหรอเทากบ 55 หรอไม ถาเงอนไขเปนจรงใหก าหนดคาของ Discount เปนการน าคาของ Sales คณดวย 0.25 สนสดการท างานในสวนการทดสอบเงอนไข แลวใหไปก าหนดคาของ Net โดยเกดจากน าคาของ Sales ลบออกดวย Discount พรอมแสดงคาของ Net ออกทางจอภาพ สนสดการท างานของโปรแกรม
โครงสรางแบบวนรอบ (Loop Structure)
โครงสรางแบบวนรอบ คอการด าเนนการกระบวนการอยางหนงหลายครง ถาเงอนไขเปนจรง และจะท าซ าไปจนกระทงเเงอนไขเปนเทจ จงหยดด าเนนการและออกจากสวนนไปท าสวนถดไปของโปรแกรม โครงรางแบบวนรอบสามารถแบงออกเปน 3 รปแบบ ดงน (วไลพร กลตงวฒนา, 2554: 9-16; Joyce Farrell, 2013: 88-93)
1. โครงสรางแบบตรวจสอบเงอนไขกอนแลวจงท าซ า โครงสรางแบบนจะตรวจสอบเงอนไขกอน ถาเปนจรงจะด าเนนการภายในการวนรอบ จากนนวนกลบไปตรวจสอบเงอนไขอกครง ด าเนนการซ า ๆ ไปจนกวาเงอนไขจะเปนเทจ จงออกนอกการวนรอบท างานซ า แสดงดงภาพท 2.6
39
ภาพท 2.6 ผงงานและรหสเทยมโปรแกรมโครงสรางแบบวนรอบ
จากตวอยางผงงานและรหสเทยมขางตน แสดงค าสงวนรอบ (while) ซงหมายถงการท าซ า (statement) ในขณะท เปนจรง (Condition is true) และเลกการท าซ าเมอเงอนไขเปน เทจ (Condition is false) จบการประมวลผลโปรแกรม พจารณาตวอยางท 2.5 ตอไปน
ตวอยางท 2.5 รหสเทยมโปรแกรมโครงรางแบบวนรอบ
Start
Set Count= 0
While Count< 4
Output “Hello”
Count= Count+ 1
End while
Output “Goodbye”
Stop
จากตวอยางขางตนรหสเทยมก าหนดคาให Count เปน 0 ใชค าสง While เพอตรวจสอบเงอนไขวา คาของ Count นอยกวา 4 หรอไม ถาเปนจรงใหแสดงขอความ “Hello” ออกทางจอภาพ แลวเพมคาให Count ขน 1 คา แลววนกลบไปตรวจสอบเงอนไขซ าอก ด าเนนการซ าไปจนกระทงเงอนไขเปนเทจ นนคอคา Count เทากบ 4 จงหยดการท างานแลวออกนอกการวนรอบไปท าค าสงแสดงขอความ “Goodbye” ออกทางจอภาพ แลวสนสดการประมวลผลโปรแกรม ผลลพธของโปรแกรมจะแสดงขอความ “Hello” จ านวน 4 ครง และแสดง “Goodbye” จ านวน 1 ครง
2. โครงสรางแบบด าเนนการกอนแลวจงตรวจสอบเงอนไขเพอท าซ า จะด าเนนการตามชดค าสงภายในการวนรอบกอน 1 รอบ แลวจงตรวจสอบเงอนไข ถาเงอนไขเปนจรงใหกลบไปท างาน
Start
While Condition is true
Statement
End while Stop
Yes
No
40 ภายในการวนรอบอก ท าซ าเชนนไปจนกระทงเงอนไขเปนเทจ จงหยดการท างานและออกนอกการวนรอบ แสดงดงภาพท 2.7
ภาพท 2.7 ผงงานและรหสเทยมโปรแกรมโครงสรางแบบด าเนนการวนรอบกอนแลวจงตรวจสอบเงอนไขเพอท าซ า
จากตวอยางผงงานและรหสเทยมขางตน แสดงค าสงวนรอบ (do…while) จะด าเนนการสวน statement กอนแลวจงตรวจสอบเงอนไข กรณ เปนจรง (Condition is true) ใหวนกลบไปท า statement ซ าจนกวาเงอนไขเปนเทจ (Condition is false) จงหยดการท า statement ซ าและจบการประมวลผลโปรแกรม พจารณาตวอยางท 2.6 ตอไปน
ตวอยางท 2.6 รหสเทยมโปรแกรมแบบท ากอนแลวจงตรวจสอบเงอนไขเพอท าซ า
Start
Set Count= 0
Do
Output “Hello”
Count= Count+ 1
While Count< 4
Output “Goodbye”
Stop
จากตวอยางขางตนรหสเทยมก าหนดคาให Count เปน 0 สวนค าสง Do เปนการบอกจดเรมตนในการท าซ า โดยจะแสดงขอความ “Hello” ออกทางจอภาพ แลวเพมคาให Count ขน 1 คา ใชค าสง While ตรวจสอบเงอนไขวา คาของ Count นอยกวา 4 หรอไม ถาเปนจรงใหแลววนกลบไปท าซ าอก ด าเนนการซ าไปจนกระทงเงอนไขเปนเทจ นนคอคา Count เทากบ 4 จงหยดการ
Yes
No
Start
Do
Statement
While Condition is true
Stop
41 ท างานแลวออกนอกการวนรอบไปท าค าสงแสดงขอความ “Goodbye” ออกทางจอภาพ แลวสนสดการประมวลผลโปรแกรม ผลลพธของโปรแกรมจะแสดงขอความ “Hello” จ านวน 5 ครง และแสดง “Goodbye” จ านวน 1 ครง
3. โครงสรางแบบท าซ าตามจ านวนรอบทก าหนด เปนโครงสรางทสามารถระบจ านวนรอบในการท าซ า แสดงดงภาพท 2.8
ภาพท 2.8 ผงงานและรหสเทยมโปรแกรมโครงสรางแบบท าซ าตามจ านวนรอบทก าหนด
จากภาพขางตนโปรแกรมจะก าหนดคาเรมตนของตวแปรนบรอบ (initialization) ซงเปนตวแปรทจะน าไปตรวจสอบในเงอนไข จากนนเขาไปตรวจสอบเงอนไข (Loop Condition) ถาเงอนไขเปนจรงใหด าเนนการ statement และเพมคาใหตวแปรนบรอบ แลววนกลบไปตรวจสอบเงอนไขอกครงกอนเขาด าเนนการซ า ท าจนกระทงเงอนไขเปนเทจ จงหยดและออกจากการวนรอบไปท าในสวนถดไปของโปรแกรม ใหพจารณาตวอยางท 2.7 ตอไปน
ตวอยางท 2.7 รหสเทยมจากตวอยางท 2.5 สามารถเขยนโปรแกรมแบบท าซ าตามจ านวนรอบทก าหนด ซงสนและกระชบกวา
Start
For (count= 0; Count< 4; count= count+ 1)
Output “Hello”
End for
Output “Goodbye”
Stop
จากตวอยางขางตนเมอประมวลผลแลวจะท างานเหมอนตวอยางท 2.5
Start
For (initialization; loop Condition; increment)
Statement
End for
Stop
Yes
No Loop Condition
42
สรป
โครงสรางการเขยนโปรแกรมทใชในการเขยนโปรแกรมคอมพวเตอร แบงออกเปน 3 รปแบบคอ โครงสรางแบบตามล าดบทเปนการเขยนโปรแกรมใหท างานตอเนองจากบนลงลางตามล าดบ โครงสรางแบบทางเลอกทเปนการเขยนโปรแกรมแบบทดสอบเงอนไขทจะท างานอยางใดอยางหนง โดยจะประกอบดวยโครงสรางยอย 3 รปแบบคอ โครงสรางแบบทดสอบเงอนไข 1 ทางเลอก โครงสรางแบบทดสอบเงอนไข 2 ทางเลอก และโครงสรางแบบทดสอบเงอนไขหลายทางเลอก สดทายโครงสรางแบบวนรอบทใชในการด าเนนการกระบวนการอยางหนงหลายครง ประกอบดวยโครงสรางยอย 3 รปแบบคอ แบบตรวจสอบเงอนไขกอนแลวจงท าซ า แบบด าเนนการกอนแลวจงตรวจสอบเงอนไขเพอท าซ า และแบบท าซ าตามจ านวนรอบทก าหนด
แบบฝกหด
1. จงอธบายหลกการท างานของโครงสรางแบบทางเลอก 2. จงอธบายหลกการท างานของโครงสรางแบบวนรอบ 3. จงบอกความแตกตางของโครงสรางแบบตรวจสอบเงอนไขกนอแลวจ าท าซ า และแบบด าเนนการ
กอนแลวจงตรวจสอบเงอนไขเพอท าซ า 4. จงเขยนผงงานและรหสเทยมของโปรแกรมส าหรบการตรวจสอบวา ถาคะแนนสอบไดมากกวา
หรอเทากบ 60 ใหแสดงขอความวา “สอบผาน” และถาคะแนนนอยกวา 60 ใหแสดงขอความวา “สอบไมผาน”
5. จงเขยนรหสเทยมและผงงานแกไขปญหาตอไปน 5.1. ค านวณรายรบหลงหกภาษของพนกงานแตละคน โดยมเงอนไขวา หากพนกงานมรายได
มากกวา 20,000 บาท ใหหกภาษ ณ ทจาย 5% หากมรายไดต ากวานไมตองหกภาษ ก าหนดใหแสดงคาตอไปน ชอ-สกลพนกงาน รายรบ ภาษหก ณ ทจาย รายรบหลงหกภาษ
5.2. การค านวณคาคอมมชชนของพนกงานขายในแตละเดอน โดยมเงอนไขการคดคาคอมมชชน ดงน
5.2.1. ถายอดขาย มากกวา 25,000 บาท ใหคาคอมมชชน 7% ของยอดขาย
5.2.2. ถายอดขาย 2,000 -25,000 บาท ใหคาคอมมชชน 4% ของยอดขาย
5.2.3. ถายอดขาย ต ากวา 2,000 บาท ใหคาคอมมชชน 2% ของยอดขาย
5.2.4. ก าหนดใหแสดงคาดงน ชอ-นามสกลพนกงาน ยอดขาย คาคอมมชชนทไดรบ
43
เอกสารอางอง
วไลพร กลตงวฒนา. (2554). โครงสรางขอมลและขนตอนวธ. อดรธาน: มหาวทยาลยอดรธาน Joyce Farrell. (2013). A Beginner’s Guide to Programming Logic and Design
Introductory. 7th ed. China: Course Technology, Cengage Learning.
แผนบรหารการสอนประจ าบทท 3
เนอหาประจ าบทท 3 ความรพนฐานการเขยนโปรแกรมบนอนเทอรเนต
อนเทอรเนต เวลดไวดเวบ ( World Wide Web : WWW)
เวบเบราวเซอร (Web Browsers) เวบเซรฟเวอร (Web Servers) ยอารแอล (Uniform Resource Locators : URL)
โพรโทคอลเอชททพ (The Hypertext Transfer Protocol : HTTP)
ภาษาทใชในการเขยนโปรแกรม
การเตรยมความพรอมในการเขยนโปรแกรมภาษา PHP
วตถประสงคเชงพฤตกรรม
เมอศกษาบทเรยนนแลว ผเรยนมพฤตกรรมดงน 1. อธบายเกยวกบอนเทอรเนต เวลดไวดเวบ เวบเบราวเซอร เวบเซรฟเวอร ยอารแอล และ เอชททพ
2. สามารถเขยนโปรแกรมดวยภาษา HTML และ PHP แกไปปญหาตามแบบฝกหดประจ าบทไดอยางเหมาะสม
วธสอนและกจกรรมการเรยนการสอน
1. วธสอน
1.1 บรรยาย และสาธต 1.2 อภปราย คนควาเพมเตม 1.3 นกศกษาท าแบบฝกหด และผสอนตรวจแบบฝกหด 1.4 มอบหมายแบบฝกหดเปนการบานเพอทบทวนบทเรยน
2. กจกรรมการเรยนการสอน
สปดาห 5-6 (8 ชวโมง) 2.1 ผสอนอธบายและสาธตเนอหา เปดโอกาสใหผเรยนซกถามปญหาในหวขอทยง
ไมเขาใจ ใหผเรยนคนควาเพมเตมจากอนเทอรเนตและเอกสารประกอบการสอน อภปราย และสรปเนอหาสาระส าคญรวมกน
2.2 ผเรยนท าแบบฝกหดประจ าบทและตอบค าถามลงใน Google Classroom เพอใหผสอนตรวจ อธบายและชแจงค าตอบทถกตอง
46
สอการเรยนการสอน
1. เอกสารประกอบการสอนการเขยนโปรแกรมคอมพวเตอรเพองานสารสนเทศ 1 2. เครองคอมพวเตอร 3. PowerPoint เนอหาบทท 3 4. สอออนไลนชวยสอน : โปรแกรม Google Classroom
การวดผลและประเมนผล
1. การวดผล
สงเกตจากการตอบค าถาม ตรวจแบบฝกหด 2. การประเมนผล
ผเรยนสามารถตอบค าถามและท าแบบฝกหดไดถกตอง รอยละ 80
บทท 3 ความรพนฐานการเขยนโปรแกรมบนอนเทอรเนต
การใชอนเทอรเนตหรอบรการตางๆ บนเวรดไวดเวบเขามามบทบาทตอการด ารงชวตในสงคมปจจบนเปนอยางมาก ไมวาจะเปนการตดตอสอสารกบเพอน การซอขายสนคา การเรยนรออนไลน หรอการดหนงฟงเพลง เปนตน ซงบรการทไดกลาวมานนถกพฒนาขนมาในลกษณะโปรแกรมบนเวบ (Web Based Application) ทการแสดงผลของโปรแกรมจะอยบนเวบเบราวเซอรทผใชสามารถเขาถงไดงายผานเครอขายอนเทอรเนต เนอหาภายในบทจะเกยวกบทมาและความหมายของอนเทอรเนต หลกการท างานของเวลดไวดเวบ บรการทมบนอนเทอรเนต รายละเอยดของเวบเบราวเซอรและเวบเซรฟเวอร ยอารแอลหรอทอยของเวบไซต เอชททพทไดจดเตรยมสวนตอประสาน (Interface) ไวส าหรบสอสารระหวางเวบเบราวเซอรกบเวบเซรฟเวอร ภาษาทใชในการเขยนโปรแกรม นนคอภาษา HTML และภาษา PHP ทายบทเปนการเตรยมความพรอมในการเขยนโปรแกรม ซงเปนเนอหาพนฐานทนกเขยนโปรแกรมจ าเปนตองเรยนรกอนจะศกษาภาษา PHP ซงมลกษณะของการเขยนโปรแกรมบนเวบและยงเปนพนฐานในการเรยนรการเขยนโปรแกรมบนเวบในบทถดไป
อนเทอรเนต อนเทอรเนต (Internet) ค าวา Internet มาจากค าวา Interconnection network เปน
เครอขายคอมพวเตอรขนาดใหญทประกอบดวยเครอขายยอยจ านวนมากทมการเชอมตอกนดวยโพรโทคอลทซพ/ไอพ (TCP/IP) ซงเปนโพรโทคอลทถกใชในการเชอมตอขอมลระหวางเครองคอมพวเตอรตนทางและปลายทางในเครอขาย ท าใหสามารถตดตอสอสารและท างานรวมกนไดอยางด (สาขาวชาวทยาศาสตรและเทคโนโลย, 2556: 3-9)
อนเทอรเนตก าเนดขนครงแรกในประเทศสหรฐอเมรกา เมอป พ.ศ. 2512 โดยองคกรทางทหารของสหรฐอเมรกา ชอวา ย.เอส.ดเฟนซ ดพารทเมนท ( U.S. Defence Department ) เปนผคดคนระบบขนมา มวตถประสงคเพอใหมระบบเครอขายทไมมวนตายแมจะมสงคราม ระบบการสอสารถกท าลายหรอตดขาด แตระบบเครอขายแบบนยงท างานได ซงระบบดงกลาวจะใชวธการสงขอมลในรปของคลนไมโครเวฟ ฝายวจยขององคกรจงไดจดตงระบบเนตเวรกขนมา เรยกวา ARPAnet
ยอมาจากค าวา Advance Research Project Agency net ซงประสบความส าเรจและไดรบความนยมในหมของหนวยงานทหาร องคกร รฐบาล และสถาบนการศกษาตางๆ เปนอยางมาก เมอ ARPAnet ประสบความส าเรจ กมองคกรมหาวทยาลยตางๆ ใหความสนใจเขามารวมในโครงขายมากขน โดยเนนการรบสงจดหมายอเลกทรอนกส ( Electronic Mail ) ระหวางกนเปนหลก ตอมากไดขยายการบรการไปถงการสงแฟมขอมลขาวสารและสงขาวสารความรทวไป แตไมไดใชในเชงพาณชย
48 เนนการใหบรการดานวชาการเปนหลก ในป พ.ศ. 2523 คนทวไปเรมสนใจอนเทอรเนตมากขน มการน าอนเทอรเนตมาใชในเชงพาณชย มการท าธรกจบนอนเทอรเนต บรษท หางรานตางๆ กเขารวมเครอขายอนเทอรเนตมากขน (ประสาท เนองเฉลม, 2557: 45-46)
ประเทศไทยไดเรมตดตอกบอนเทอรเนตในป พ.ศ. 2530 ในลกษณะการใชบรการ จดหมายอเลกทรอนกสแบบแลกเปลยนอเมลเปนครงแรก โดยเรมทมหาวทยาลยสงขลานครนทร วทยาเขตหาดใหญ (Prince of Songkla University) และสถาบนเทคโนโลยแหงเอเชยหรอสถาบนเอไอท ( AIT ) ภายใตโครงการความรวมมอระหวางประเทศไทยและออสเตรเลย (โครงการ IDP) ซงเปนการตดตอเชอมโยงโดยสายโทรศพท จนกระทงป พ.ศ. 2531 มหาวทยาลยสงขลานครนทร วทยาเขตหาดใหญ ไดยนขอทอยอนเทอรเนตในประเทศไทย โดยไดรบทอยอนเทอรเนตเปน Sritrang.psu.th
ซงนบเปนทอยอนเทอรเนตแหงแรกของประเทศไทย ตอมาป พ.ศ. 2534 บรษท DEC (Thailand)
จ ากดไดขอทอยอนเทอรเนตเพอใชประโยชนภายในของบรษท โดยไดรบทอย อนเทอรเนตเปน dect.co.th โดยทค า “th” เปนสวนทเรยกวา โดเมน (Domain) ซงเปนสวนทแสดงโซนของเครอขายอนเทอรเนตในประเทศไทย โดยยอมาจากค าวา Thailand กลาวไดวาการใชงานอนเทอรเนตชนดเตมรปแบบตลอด 24 ชวโมง ในประเทศไทยเกดขนเปนครงแรกเมอเดอน กรกฎาคม ป พ.ศ. 2535 โดยสถาบนวทยบรการ จฬาลงกรณมหาวทยาลยไดเชาวงจรสอสารความเรว 9600 บตตอวนาท จากการสอสารแหงประเทศไทยเพอเชอมเขาส อนเทอรเนตทบรษท ยยเนตเทคโนโลย (UUNET
Technologies) ประเทศสหรฐอเมรกา ในปเดยวกน ไดมหนวยงานทเชอมตอแบบออนไลนกบเครอขายอนเทอรเนตผานจฬาลงกรณมหาวทยาลยหลายแหงดวยกน ไดแก สถาบนเทคโนโลยแหงเอเชย ( AIT ) มหาวทยาลยมหดล สถาบนเทคโนโลยพระจอมเกลา เจาคณทหารลาดกระบง มหาวทยาลยเชยงใหม และมหาวทยาลยอสสมชญบรหารธรกจ โดยเรยกเครอขายนวาเครอขาย “ไทยเนต” (THAInet) ซงนบเปนเครอขายทม “เกตเวย” ( Gateway ) หรอประตส เครอขายอนเทอรเนตเปนแหงแรกของประเทศไทย ปจจบนไดมผรจกและใชอนเทอรเนตมากขน มอตราการเตบโตมากกวา 100% สมาชกของอนเทอร เนตขยายจากอาจารยและนสตนกศกษาในระดบอดมศกษาไปสประชาชนทวไป (ประสาท เนองเฉลม, 2557: 46-50)
49
ภาพท 3.1 เครอขายอนเทอรเนต
ทมา (Redes Estruturadas, 2016)
เวลดไวดเวบ ( World Wide Web : WWW)
การใชหลกการแบบไคแอนต-เซรฟเวอร ท าใหอนเทอรเนตมการใหบรการตางๆ มากมาย ผใชบรการสามารถเรยกใชบรการเหลานจากระยะไกลได เครอขายอนเทอรเนตจงเปนเครอขายทไมขนอยกบระยะทาง แมวาผใชบรการจะอยคนละซกโลก และมระบบการท างานเปนแบบโลกาภวฒน คอ สามารถตดตอถงกนไดทวโลก
ประมาณป พ.ศ. ๒๕๓๔ มการพฒนาระบบการเชอมโยงขาวสารแบบไฮเปอรเทกซบนเครอขาย สวนของไฮเปอรเทกซเปนเอกสารทเชอมโยงกนไดทวทงเครอขาย จงเรยกระบบสารเชอมโยงขอมลขาวสารนวา WWW (World Wide Web) ระบบขาวสารเวลดไวดเวบ เปนระบบขาวสารทมประโยชนมาก มการใชกนอยางกวางขวาง และเปนทนยมของผใชอนเทอรเนต หากยอนกลบไปในอดตความคดในเรองไฮเปอรเทกซมมานานแลว โดยเฉพาะในสมยทบรษทแอปเปลคอมพวเตอร สรางเครองแมคอนทอช และระบบกราฟกยสเซอรอนเทอรเฟส (GUI) บรษทแอปเปลคอมพวเตอรไดสรางรปแบบของการเกบขอมลแบบไฮเปอรเทกซไว ระบบการเกบขอมลแบบไฮเปอรเทกซ จงเปนทรจกกนดในกลมผใชเครองแอปเปลแมคอนทอช เมออนเทอรเนตแพรหลาย ความคดในการท าไฮเปอรเทกซมาประยกตบนเครอขายกเรมเปนรปราง โดยมการพฒนากลไกขนมา ๓ สวน สวนแรกคอ ตวเนอหา หรอขอมล ซงกคอ ตวหนงสออเลกทรอนกส ทรวมรปภาพ เสยง และภาพเคลอนไหวไว หรอมลกษณะเปนแบบมลตมเดย หนงสออเลกทรอนกสนมลกษณะเฉพาะตามมาตรฐานทก าหนด โดยเนนการผลตตวหนงสออเลกทรอนกสทแยกออกไป การจดรปแบบหนงสอใชมาตรฐาน HTML สวนทสองคอ สวนจดการหนงสออเลกทรอนกสและเชอมโยงบนเครอขาย ซงไดม
50 การก าหนดโพรโทคอลพเศษ ส าหรบการเชอมโยงบนเครอขายคอมพวเตอร เรยกวา โพรโทคอล http
(hypertext transfer protocol) โพรโทคอลนมลกษณะท างานรวมกนไดอยางมประสทธภาพ สวนทสามคอ เครองเปดอานหนงสอ หรอทเรยกวา เบราวเซอร (browser) เครองเปดอานหนงสอจะเชอมโยงเขาสเครอขายตามโพรโทคอลทก าหนด และเชอมโยงเพอน าขอมลหนงสอ (ไฮเปอรเทกซ) มาแสดงผลบราวเซอรสามารถแสดงผลแบบมลตมเดยได เมอรวมทง ๓ สวนนเขาดวยกน จงกลายมาเปนสงทมประโยชนอยางมากมาย เราเรยกระบบขาวสารทเชอมโยงเปนเครอขายวา เวลดไวดเวบ
(โครงการสารานกรมไทยส าหรบเยาวชน, 2559)
ภาพท 3.2 บรการเวลดไวดเวบ
ทมา (123RF, 2016)
เวบเบราวเซอร (Web Browsers) เวบเบราวเซอรหรอโปรแกรมคนดเวบ คอโปรแกรมคอมพวเตอรทผใชสามารถดขอมลและ
โตตอบกบขอมลสารสนเทศทจดเกบในเวบเพจทสรางดวยภาษาเฉพาะ เชน ภาษาเอชทเอมแอล และภาษาพเอชพ เปนตน ทจดเกบไวทเวบเซอรวซ เวบเซรฟเวอร หรอระบบคลงขอมลอน ๆ โดยโปรแกรมคนดเวบเปรยบเสมอนเครองมอในการตดตอกบเครอขายคอมพวเตอรขนาดใหญทเรยกวา เวลดไวดเวบ สวนเวบเบราวเซอรตวแรกของโลกชอ “เวลดไวดเวบ” ซงในปจจบนมเวบเบราวเซอรใหใชงานดงน กเกลโครม (Google Chrome) มอซลลาไฟรฟอกซ (Mozilla Firefox) และอนเทอรเนตเอกซพลอเรอร (Internet Explorer : IE) เปนตน (Robert W.Sebesta, 2002: 7)
51
ภาพท 3.3 โปรแกรมเวบเบราวเซอร ทมา (Peter O'Shaughnessy, 2016)
เวบเซรฟเวอร (Web Servers) เวบเซรฟเวอรเปนเครองคอมพวเตอรประสทธภาพสงทท าหนาทเปนแหลงเกบเวบไซตททก
คนสามารถใชเวบเบราวเซอรตดตอเพอขอดขอมลภายในเวบเพจได เวบเซรฟเวอรสวนใหญจะตดตอกบเครอขายอนเทอรเนตตลอดเวลา โดยใชสายสงขอมลความเรวสงเพอใหบรการผทเชอมตอเขาเยยมชมเวบไซต (Robert W.Sebesta, 2002: 8; Web Developers Notes, 2016)
ภาพท 3.4 ตวอยางเวบเซรฟเวอรทใชงานอยในปจจบน
ทมา (fastwebhost, 2016)
ยอารแอล (Uniform Resource Locators : URL)
ตวชแหลงในอนเทอรเนต หรอ โปรแกรมชแหลงทรพยากรสากล (องกฤษ: Uniform
Resource Locator, Universal Resource Locator) เรยกโดยยอวา ยอารแอล (องกฤษ: URL) คอตวระบแหลงทรพยากรสากล (URI) ประเภทหนง ซงใชส าหรบระบแหลงทอยของทรพยากรทตองการ และมกลไกบางอยางส าหรบดงขอมลทรพยากรนนมา ในการใชในเอกสารทางเทคนคและการอภปรายทวไป มกจะใชยอารแอลแทนความหมายทคลายกบยอารไอ ซงไมใชความหมายทถกตองและอาจท าใหเกดความสบสนในภาษาพดทวไป ยอารแอลอาจหมายถง ทอยบนเวบ หรอ ทอยอนเทอรเนตกได ซงปกตแลวเรามกพมพยอารแอลในแถบทอยของเวบเบราวเซอรเพอเรยกขอมลจากเวบไซตทวไป (Berners-Lee, 1994)
52
ภาพท 3.5 การพมพยอารแอล
โพรโทคอลเอชททพ (The Hypertext Transfer Protocol : HTTP)
โพรโทคอลเอชทท พ ถกพฒนาขน โดย World Wide Web Consortium (W3C) กบ Internet Engineering Task Force (IETF) ในป พ.ศ. 2542 เปนชดเอกสารทเรยกวา RFC 2616 ซงเปนขอก าหนดของ HTTP/1.1 รนทใชกนอยางกวางขวางในปจจบน มหนาทหลกในการก าหนดกฎเกณฑขนมาเพอเปนมาตรฐานส าหรบควบคมดแลการแลกเปลยนหรอสงขอมลระหวางเวบเพจ หรอโปรแกรมเวบเบราวเซอรจากเครองไอคเอนตกบเครองใหบรการ (Web Server) กอนการตดตอสอสารกนโพรโทคอลจะท าการสงการรองขอขอมลเพอสรางการเชอมตอ ซงโพรโทคอลเปนตวชวยใหเครองคอมพวเตอรทมระบบแตกตางกนสามารถสอสารกนไดอยางเขาใจ สวนภาษา HTML กสามารถท างานบนแพลตฟอรมทตางกนได นนคอภาษา HTML สามารถท างานในเวบเบราวเซอรไดทกประเภท รปแบบของขอมลทสงผานโพรโทคอลเอชททพ เชน ขอความ ภาพ หรอเสยงเปนตน (สาขาวชาวทยาศาสตรและเทคโนโลย, 2556: 1-5)
ภาษาทใชในการเขยนโปรแกรม
ภาษาทใชส าหรบเขยนโปรแกรมในลกษณะเวบแอพพลเคชนทตองศกษาม 2 ภาษาดงน 1. ภาษา HTML เปนภาษาพนฐานส าคญในการใชสรางเวบเพจ มโครงสรางการเขยนอยางชดเจนและเขาใจงาย โดยมการระบสวนของเนอหาและการจดการรปแบบการน าเสนอขอมลบนเวบ ภาษาเอชทเอมแอลถกพฒนาขนโดย ทม เบอรเนอรส ล (Tim Berners Lee) ซงท างานภายใตบรษทไอบเอม (IBM) ปจจบน HTML ถอเปนมาตรฐานหนงของไอเอสโอ ซงควบคมโดยองคกร World Wide Web Consortium (W3C) ซงเปนองคกรทก าหนดมาตรฐานเพอใหองคกรขนาดใหญน ามาตรฐานดงกลาวไปใชในการจดรปแบบและหมวดหมเอกสารออนไลนทมจ านวนมากในการใชงานใหเปนมาตรฐานเดยวกน สามารถเชอมโยง เขาใจความหมาย และท างานรวมกนได (สาขาวชาวทยาศาสตรและเทคโนโลย, 2556: 4_11-4_15; Robert W.Sebesta, 2002: 27-31)
ภาษา HTML จะแสดงโครงสรางของขอมลในการแสดงหวขอ ยอหนา รายการ ลงก รวมถงการสรางแบบฟอรม การเชอมโยงภาพหรอวดโอ โครงสรางของภาษาจะอยภายในวงเลบสามเหลยม (< >) สามารถเขยนค าสงเปนตวพมพใหญหรอพมพเลกกได เชน <html> หรอ <HTML> ซงทงสองค าสงนมความหมายเหมอนกน โดยจะเรยกค าสงของภาษา HTML วาแทก (tag) ซงน าไปใช
แถบทอย ระบ URL
53 ในการก าหนดรปแบบของขอความบนเวบเพจทสรางขน ภาพท 3.6 แสดงโครงสรางและแทกมาตรฐานของภาษา HTML
ภาพท 3.6 โครงสรางและแทกมาตรฐานภาษา HTML
จากภาพขางตนแทกพนฐานของภาษา HTML ม <html>…</html> ก าหนดจดเรมตนของภาษา แทก <head>…</head> ใชส าหรบแสดงสวนแถบหวของเวบเบราวเซอร แทก<title>…</title> จะตองก าหนดไวระหวางแทก <head> เพอระบขอความทจะแสดงบนแถบหว สวนแทก <body>…</body> พนทบรเวณนมไวเพอแสดงขอความ รปภาพ วดโอตางๆ บนเวบเพจ
2. ภาษา PHP
ภาษา PHP ถกพฒนาขนโดย Rasmas Lerdorf ในป 1994 เพอใชเปนเครองมอในการพฒนาเวบไซตสวนตว โดยพฒนามาจากภาษา C ทสามารถแยกประมวลผลรหสค าสงสวนของภาษา HTML ออกจากสวนของภาษา C แลวสรางรหสค าสงของภาษา HTML ขนมาใหม โดยตงชอโปรแกรมนวา Personal Home Page (PHP tools) และไดแจกจายรหสค าสงออกไปใหผสนใจหรอนกเขยนโปรแกรมไดใชงานฟร ตอมาจงไดเรมเปดใหผสนใจเขามารวมพฒนาตอในลกษณะ Open Source จนไดภาษา PHP รน PHP/FI จนกระทงในป 1997 ถง 1999 นกเขยนโปรแกรมชอ Zeev Suraski และ Andi Gutmans ไดรวมกนปรบปรงพฒนาดานประสทธภาพ การสนบสนนการเขยนโปรแกรมเชงวตถจนไดภาษา PHP รน PHP 3 ซงเปนรนทไดรบความนยมเปนอยางมาก และยงมการพฒนาอยางตอเนอง จนในปจจบนภาษา PHP ไดถกพฒนาจนถงรน PHP 7 ทนกเขยนโปรแกรมสามารถดาวนโหลดมาใชงานไดฟรจากเวบไซต http://php.net/downloads.php และยงสามารถศกษารายละเอยดการตดตงโปรแกรมและการใชงานไดท http://php.net/docs.php จงเปนอกภาษาหนงทนาจะเปนทางเลอกส าหรบนกเขยนโปรแกรม เนองจากเปนภาษาทเขยนงาย สามารถน าไปใชพฒนาเวบเพจทตองการตอบสนองกบผใช อกทงยงสามารถใชในการน าขอมลจากฐานขอมลมาแสดงผลในเวบเพจได จงเหมาะกบการน าไปใชในการสรางเวบแอพพลเคชนเพอใชงานในองคกร ระบบพาณชยอเลกทรอนคส เปนตน
<html>
<head>
<title>ชอเวบเพจหรอหวเรอง</title>
</head>
<body>
ขอความทตองการแสดงบนเวบเพจ
</body>
</html>
54
การเตรยมความพรอมในการเขยนโปรแกรมภาษา PHP
การเขยนโปรแกรมภาษา PHP สงทนกเขยนโปรแกรมจะตองเตรยมมดงน เครองเซรฟเวอร (สามารถใชเครองคอมพวเตอรสวนบคคลได) เครองไคลเอนต (อาจใชเครองเดยวกนกบเครองเซรฟเวอรกได) โปรแกรมเวบเซรฟเวอร เชน Apache ซงท างานไดดกบภาษา PHP เปนตน โปรแกรม PHP Engine หรอตวแปลภาษา PHP โปรแกรมฐานขอมล เชน MySQL, Oracle หรอ MS Access เปนตน โปรแกรม Web Authoring หรอ Editor ทใชส าหรบสรางเวบเพจดวยภาษา PHP เชน Dreamweaver, Editplus หรอ Notepad เปนตน สดทายเมอตองการดผลลพธของโปรแกรมจะตองดผานโปรแกรมเวบเบราวเซอร เชน Google Chrome, Internet Explorer (IE) หรอ Firefox เปนตน ส าหรบรายละเอยดการตดตงโปรแกรมเพอใชในการพฒนาโปรแกรมภาษา PHP นนสามารถศกษาไดจาก https://www.appserv.org/th ซงเนอหาภายในเลมนเลอกใชชดโปรแกรม Appserv ทรวมซอฟรแวรประเภท Open Source หลายอยางมารวมกนโดยม Package หลกดงน Apache, PHP Engine, MySQL และ phpMyAdmin (appserv.org, 2559; Robert W.Sebesta, 2002: 461-462)
การเขยนและทดสอบการท างานของโปรแกรมภาษา PHP สามารถด าเนนการไดดงน 1. เปดโปรแกรม DreamweaverCS6 ส าหรบเขยนรหสค าสง จากนนบนทกไฟลใหม
นามสกลเปน .php โดยเกบไฟลไวภายใต “AppServ\www” ซงสามารถสรางโฟลเดอรยอยขนมาได ดงแสดงตามภาพท 3.7
ภาพท 3.7 การเขยนโปรแกรมภาษา PHP ดวย DreamweaverCS6
1.พมพรหสค าสงภาษา PHP
2. บนทกไฟล เลอกเมน SAVE
3.ไฟลมนามสกล .php
4.กดปม Save
55 2. การทดสอบการท างานของโปรแกรม เมอเขยนโปรแกรมเรยบรอยแลวและตองการ
ทดสอบและดผลลพธการท างานผานทางโปรแกรมเวบเบราวเซอร โดยพมพ “localhost/” ตามดวยชอไฟล เชน ถาไฟลทตองการทดสอบการท างานชอ test.php ใหพมพ “localhost/test.php” ทชองระบยอารแอลของเวบเบราวเซอร ดงภาพท 3.8
ภาพท 3.8 การทดสอบโปรแกรมภาษา PHP ผานทางเวบเบราวเซอร
สรป
อนเทอรเนตเปนเครอขายคอมพวเตอรขนาดใหญทประกอบดวยเครอขายยอยจ านวนมากทมการเชอมตอกนดวยโพรโทคอลทซพ/ไอพ (TCP/IP) และมบรการทเรยกวา เวลดไวดเวบ ซงมการใหบรการตางๆ มากมาย ผใชบรการสามารถเรยกใชบรการเหลานจากระยะไกลได เครอขายอนเทอรเนตจงเปนเครอขายทไมขนอยกบระยะทาง แมวาผใชบรการจะอยคนละซกโลก ผใชสามารถใชโปรแกรมเวบเบราวเซอรในการใชบรการเวลดไวดเวบ ทเกบอยในเครองคอมพวเตอรประสทธภาพสงทเรยกวา เวบเซอรฟเวอร ในการเขาถงเวบไซตผใชบรการสามารถพมพยอารแอลของเวบไซตท “แถวทอย” ของเวบเบราวเซอร ส าหรบภาษาพนฐานทใชในการเขยนเวบเพจคอภาษา HTML และเพอใหเวบเพจทสรางขนมปฏสมพนธกบผใชสามารถแทรกสครปตภาษา PHP ลงไปในโปรแกรมภาษา HTML ได สวนเครองมอทใชในการเขยนเวบคอโปรแกรมประเภท Web Authoring หรอ Editor เชน Dreamweaver หรอ Notepad เปนตน
แบบฝกหด
1. จงบอกความหมายและยกตวอยางของเวบเบราวเซอร และเวบเซอรเวอร 2. จงยกตวอยางบรการเวลดไวดเวบทใชในชวตประจ าวน
3. จงบอกความแตกตางระหวางภาษา HTML กบภาษา PHP
4. ใหนกศกษาเขยนโปรแกรมภาษา PHP ดวยโปรแกรม DreamweaverCS6 ในการแสดงรหสนกศกษา ชอ และนามสกล ออกทางเวบเบราวเซอร
1.พมพ “localhost/test.php”
2.ผลลพธของโปรแกรม
56
เอกสารอางอง โครงการสารานกรมไทยส าหรบเยาวชน. (2559). อนเทอรเนต. [ออนไลน], แหลงทมา HTTP:
http://kanchanapisek.or.th/kp6/sub/book/book.php?book=25&chap=6&page=c
hap6.htm
ประสาท เนองเฉลม. (2557). อนเทอรเนตเพอการเรยนร. กรงเทพฯ: โอเดยนสโตร. 123RF. (2016). Vector - social network laptop.communication in the global
computer networks. 2016, July 25. [online], Available HTTP:
https://www.123rf.com/photo_11888394_social-network-laptop-
communication-in-the-global-computer-networks.html
Aditya varma. (2016). What is Web Server and Different Types of Web Servers?.
2016, July 25. [online], Available HTTP: https://www.fastwebhost.in/blog/ what-is-web-server-and-different-types-of-web-servers/
Appserv. (2559). AppServ คออะไร. [ออนไลน], แหลงทมา HTTP:
https://www.appserv.org/th/
ASAP. (2016). Redes Estruturadas. 2016, July 10. [online], Available HTTP:
http://www.asap-mz.com/?page_id=151
Berners-Lee. (1994). Addressing. 2016, July 20. [online], Available HTTP:
https://www.w3.org/Addressing/URL/url-spec.txt
Peter O'Shaughnessy. (2016). Think you know the top web browsers?.
2016, June 25. [online], Available HTTP: https://medium.com/samsung-
internet-dev/think-you-know-the-top-web-browsers-458a0a070175
Robert W.Sebesta. (2006). Programming the World Wide Web 3rd ed. (3nd ed.pp.6- 13,pp.475-519). USA : Pearson Education,Inc. Web Developers Notes. (2016). What is web server – a computer OR a
program?. 2016, July 12. [online], Available HTTP:
https://www.webdevelopersnotes.com/what-is-web-server
แผนบรหารการสอนประจ าบทท 4
เนอหาประจ าบทท 4 ความรเบองตนเกยวกบภาษา PHP
หลกการท างานของภาษา PHP
รปแบบของภาษา
การใชงาน PHP รวมกบ HTML
การใสค าอธบาย
การแสดงผลลพธ ตวแปรและคาคงท
ตวด าเนนการ
โครงสรางควบคม
วตถประสงคเชงพฤตกรรม
เมอศกษาบทเรยนนแลว ผเรยนมพฤตกรรมดงน 1. อธบายหลกการท างานของภาษา PHP และรปแบบของภาษา 2. อธบายการใชงานตวแปร คาคงท และตวด าเนนการ 3. จ าแนกโครงสรางควบคมประเภทตางๆ ได 4. สามารถเขยนโปรแกรมภาษา PHP แทรกในไฟล HTML ได 5. สามารถใสค าอธบายลงในโปรแกรมทสรางขนได 6. สามารถเขยนโปรแกรมแสดงผลลพธ น าตวแปรหรอคาคงท และตวด าเนนการไปใชงานได 7. สามารถเขยนโปรแกรมทน าโครงสรางควบคมประเภทตางๆ มาใชงานไดอยางเหมาะสม
วธสอนและกจกรรมการเรยนการสอน
1. วธสอน
1.1 บรรยาย และสาธต 1.2 อภปราย คนควาเพมเตม 1.3 นกศกษาท าแบบฝกหด และผสอนตรวจแบบฝกหด 1.4 มอบหมายแบบฝกหดเปนการบานเพอทบทวนบทเรยน
2. กจกรรมการเรยนการสอน
สปดาห 7-9 (12 ชวโมง) 2.1 ผสอนอธบายและสาธตเนอหา เปดโอกาสใหผเรยนซกถามปญหาในหวขอทยง
ไมเขาใจ ใหผเรยนคนควาเพมเตมจากอนเตอรเนตและเอกสารประกอบการสอน อภปราย และสรปเนอหาสาระส าคญรวมกน
58 2.2 ผเรยนท าแบบฝกหดประจ าบทและตอบค าถามลงใน Google Classroom
เพอใหผสอนตรวจ อธบายและชแจงค าตอบทถกตอง
สอการเรยนการสอน
1. เอกสารประกอบการสอนการเขยนโปรแกรมคอมพวเตอรเพองานสารสนเทศ 1 2. เครองคอมพวเตอร 3. PowerPoint เนอหาบทท 4 4. สอออนไลนชวยสอน : โปรแกรม Google Classroom
การวดผลและประเมนผล
1. การวดผล
สงเกตจากการตอบค าถาม ตรวจแบบฝกหด 2. การประเมนผล
ผเรยนสามารถตอบค าถามและท าแบบฝกหดไดถกตอง รอยละ 80
บทท 4 ความรเบองตนเกยวกบภาษา PHP
การเขยนโปรแกรมคอมพวเตอร นกเขยนโปรแกรมจ าเปนตองศกษารายละเอยดของภาษาคอมพวเตอรทจะน ามาใชในเขยนโปรแกรมระบบงานตางๆ ตามทตองการ เพอจะไดเขาใจและน าไปใชงานไดอยางเหมาะสม ในบทนจงไดกลาวถงเนอหาพนฐานส าหรบการเขยนโปรแกรมดวยภาษา PHP ทมประเดนเกยวกบหลกการท างานของภาษา PHP รปแบบของภาษา การใชงาน PHP
รวมกบเอกสาร HTML ค าสงในการใสค าอธบายและการแสดงผลลพธ ตวแปรและคาคงท ตวด าเนนการ และโครงสรางควบคมตามหลกไวยกรณของภาษา PHP เพอเปนพนฐานส าหรบการศกษาเนอหาในบทถดไป
หลกการท างานของภาษา PHP
สมศกด โชคชยชตกล (2550, 15) ไดกลาวถงหลกการท างานของภาษา PHP ไววา ภาษา PHP รนแรกจนถงรน 3 มการท างานแบบแปลตามล าดบทละประโยค (Interpretation process) คอ แปลไปท างานไปตามล าดบค าสงเหมอนกบภาษา HTML ตงแตรน 4 เปนตนมามกระบวนการท างานโดยจะแปล (compile) ทงโปรแกรมเกบไวในหนวยความจ าแลวจงท างาน สงผลใหสครปตในสวนทมการเรยกใชซ าจะประมวลผลไดเรวขนมาก การด าเนนการดงกลาวจะกระท าทฝงเซรฟเวอร (server side) นนคอเมอโปรแกรมภาษา PHP ทเกบอยในเครองเซรฟเวอรถกเรยกใชจากเวบเบราวเซอรทวไปจากเครองไอคเอนตจะประมวลผลและสรางผลลพธเปนไฟล HTML สงมายงเครองไคลเอนตเพอใหเวบเบราวเซอรแสดงผล ดงภาพท 4.1
ภาพท 4.1 หลกการท างานของภาษา PHP (ทมา guru99, 2016)
1. เครองไคลเอนตสงค ารองไปยงเครองเซอรเวอร
2.เครองเซอรเวอรตรวจสอบหาสครปต PHP
3.ถามสครปต PHP
จะแยกไปประมวลผลตามค ารองขอ
4.สรางผลลพธเปนไฟล HTML สงกลบไปยงเครองไคลเอนต
60
รปแบบของภาษา
ชดค าสงหรอสครปตภาษา PHP สามารถเขยนแทรกไวภายในไฟล HTML หรอเขยนเฉพาะสครปตภาษา PHP หรอเขยนสครปตเพอสรางรหสค าสงของภาษา HTML กไดเชนกน และตองบนท าไฟลใหมนามสกลเปน “.php” เชน ไฟล output.php เปนตน ส าหรบการเขยนสครปตภาษา PHP จะมแทกทใชส าหรบบอกจดเรมตนและสนสดของค าสงภาษา PHP นยมใชอย 2 รปแบบคอ รปแบบแรกคอการเปดดวยแทก <?php ตามดวยชดค าสงภาษา PHP และปดดวยแทก ?> หรอรปแบบทสองจะเปดดวยแทก <script language= “php”> ตามดวยชดค าสงภาษา PHP และปดดวย </script> ซงมรปแบบการใชงานดงน (สมศกด โชคชยชตกล, 2550: 15-16)
ตวอยางท 4.1 การเขยนโปรแกรมเฉพาะสครปตภาษา PHP โดยใชแทก <?php ... ?>
< ?php
echo "Hello everyone";
?>
จากตวอยางท 4.1 ค าสงภาษา PHP ใหแสดงขอความ “Hello everyone” ออกทางเวบเบราวเซอรดวยค าสง echo
ตวอยางท 4.2 การเขยนโปรแกรมเฉพาะสครปตภาษา PHP โดยใชแทก <script language= “php”> ... </script>
<script language= “php”>
echo "Hello everyone";
< /script>
จากตวอยางท 4.2 เปนค าสงทท างานเหมอนกบตวอยางท 4.1 แตตางกนตรงการน าแทกมาใชเพอบอกจดเรมตนและจดสนสดของค าสงภาษา PHP
ตวอยางท 4.3 การแทรกสครปตภาษา PHP ลงไปในไฟลภาษา HTML
< html>
< body>
< h1> My first PHP script< /h1>
< ?php
echo "Hello Everyone";
?>
< /body>
< /html>
สครปตภาษา PHP
61 จากตวอยางท 4.3 สามารถแทรกสครปตภาษา PHP ไวในไฟลภาษา HTML โดยเปดแทก <?php เพอก าหนดจดเรมตนของสครปต และปดดวยแทก ?> ในการก าหนดจดสนสดของสครปต
ตวอยางท 4.4 การเขยนโปรแกรมเฉพาะค าสงภาษา PHP เพอสรางรหสค าสงภาษา HTML
< ?php
echo “<body>”;
echo “<h1>My first PHP script</h1>”;
echo “Hello Everyone”;
echo “</body>”;
?>
จากตวอยางท 4.4 เปนการเขยนโปรแกรมเฉพาะสครปตภาษา PHP โดยสามารถเขยนใหสรางรหสชดค าสงภาษา HTML ผลการประมวลผลจะเหมอนกบการเขยนโปรแกรมเฉพาะสครปตภาษา HTML
ตวแปร (Variables) และคาคงท (Constant)
ระบบคอมพวเตอรเมอจะประมวลผลกระบวนการใดๆ กตามจะตองมการเกบขอมลหรอผลลพธไวในหนวยความจ าเพอจะไดน าขอมลเหลานนไปใชเปนขอมลน าเขาของการประมวลผลของกระบวนการถดไป จงตองมการจดสรรพนทหนวยความจ าในการจดเกบขอมล ซงพนทเหลานนจะเรยกวา ตวแปรหรอคาคงท โดยมรายละเอยดดงน
1. ตวแปร (Variable) หมายถง ตวแทนพนทในหนวยความจ าทจดสรรไวใชเกบขอมลในระหวางการประมวลผลโปรแกรมของระบบคอมพวเตอร ซงมประเดนทส าคญดงน (สมศกด โชคชยชตกล, 2550: 16-26)
1.1 การประกาศตวแปร ส าหรบการประกาศตวแปรในภาษา PHP นนจะขนตนดวยสญลกษณ $ (dollar sign) แลวจงตามดวยชอตวแปร สวนการตงชอตวแปรจะตองขนตนดวยตวอกษร หรอเครองหมาย _ เทานน ตวอกษรถดไปของชอตวแปรสามารถเปนตวอกษร ตวเลข หรอเครองหมาย _ น ามาผสมกนได และชอของตวแปรมคณสมบตเปน case-sensitive นนคอ ตวอกษรภาษาองกฤษพมพเลก และพมพใหญจะหมายถงคนละตว เชน ตวแปร $Z กบ $z ในภาษา PHP จะมองเปนคนละตว เปนตน เพราะฉะนนในการเรยกใชงานตวแปรจะตองพมพตวอกษรเปนพมพใหญหรอพมพเลกใหถกตอง การประกาศตวแปรในภาษา PHP ไดแสดงไวในดงตวอยางท 4.5 ดงน
ตวอยางท 4.5 การประกาศตวแปร
< ?php / / Defining variables
$txt = "Hello World!";
$num = 123456789;
$colors = "Red"; ?>
62 จากตวอยางขางตน มการประกาศตวแปรไวใชงาน 3 ตวแปรคอ txt มคาเปน “Hello World!” ตวแปร num มคาเปน “123456789” และตวแปร colors มคาเปน “Red”
1.2 ชนดของขอมล ขอมลทสามารถจดเกบไวในตวแปร สามารถแบงออกได 7 ชนดดงน 1.2.1 ขอมลชนดตรรกะ (boolean) คาทเกบในตวแปรประเภทนจะเปนคาจรง (true) หรอคาเทจ (false) นยมใชเพอตรวจสอบเงอนไขบางอยางวาเปนจรงหรอเทจ
ตวอยางท 4.6 การประกาศตวแปรเกบขอมลชนดตรรกะ
< ?php
/ / Assign the value TRUE to a variable
$show_error = true;
var_dump($show_error);
?>
จากตวอยางขางตนประกาศตวแปร “show_error” เปนขอมลชนดตรรกะมคาเปนจรง (true) แลวเรยกใชฟงกชน var_dump() ทภาษา PHP มไวใหใชงาน ซงเปนฟงกชนส าหรบแสดงชนดและคาของตวแปร “show_error” ออกทางเวบเบราวเซอร 1.2.2 ขอมลชนดตวเลขจ านวนเตม (integer) สามารถเกบคาเปนเลขฐานสบ ฐานแปด และฐานสบหกได โดยถาใสเลข 0 น าหนาตวเลขจ านวนเตมเพอบอกวาเปนเลขฐานแปด และใส 0x เพอเปนการบอกวาเปนเลขฐานสบหก ตวเลขจ านวนเตมแบงออกเปน 3 กลมคอ จ านวนเตมบวก (1, 2, 3, ...) จ านวนเตมลบ (-1, -2, -3, ...) และจ านวนเตมศนย
ตวอยางท 4.7 การประกาศตวแปรเกบขอมลชนดตวเลขจ านวนเตมฐานสบ ฐานแปด และฐานสบหก
< ?php
$a = 123; / / decimal number
var_dump($a);
echo "< br> ";
$b = -123; / / a negative number
var_dump($b);
echo "< br> ";
$c = 0x1A; / / hexadecimal number
var_dump($c);
echo "< br> ";
$d = 0123; / / octal number
var_dump($d);
?>
จากตวอยางขางตนประกาศตวแปร “a” เกบตวเลขจ านวนเตมบวกฐานสบ 123 ตามดวยการเรยกใชฟงกชน var_dump() เพอแสดงชนดและคาของตวแปร “a” ออกทางเวบเบราวเซอร จากนนจะแสดง “<br>” ดวยค าสง echo ซงเปนแทกภาษา HTML หมายถงใหขนบรรทดใหม ตวแปร “b” เกบตวเลขจ านวนเตมบวกฐานสบ -123 ตอดวยการเรยกใชฟงกชน var_dump() เพอแสดงผลชนดและคาของตวแปร “b” ออกทางเวบเบราวเซอร แลวใหแสดง “<br>” นนคอใหขน
63 บรรทดใหม ตวแปร “c” เกบตวเลขจ านวนเตมบวกฐานสบหก 1A ตามดวยการเรยกใชฟงกชน var_dump() ซงจะแสดงผลชนดและคาของตวแปร “c” ออกทางเวบเบราวเซอร ตามดวยใหแสดง “<br>” เพอใหขนบรรทดใหม ตวแปร “d” เกบตวเลขจ านวนเตมบวกฐานแปด 0123 เรยกใชฟงกชน var_dump() เพอแสดงผลชนดและคาของตวแปร “d” ออกทางเวบเบราวเซอร จบการประมวลผลโปรแกรม
1.2.3 ขอมลชนดตวเลขจ านวนทศนยม (floating point number) หมายถงตวเลขทมจดทศนยมหลงเลขจ านวนเตม ตวเลขแบบเศษสวน และตวเลขยกก าลง เปนตน ขอมลชนดน จะรวมถงขอมลชนด float, double และ real พจารณาตวอยางท 4.8 ตอไปน
ตวอยางท 4.8 การประกาศตวแปรเกบขอมลชนดตวเลขจ านวนทศนยม
< ?php
$a = 1.234;
var_dump($a);
echo "< br> ";
$b = 10.2e3;
var_dump($b);
?>
จากตวอยางท 4.8 โปรแกรมประกาศตวแปร “a” มคาเปนตวเลขจ านวนทศนยม 1.234 ตามดวยเรยกใช ฟงกชน var_dump() ใหแสดงผลชนดและคาของตวแปร “a” คอ “float(1.234)” ออกทางเวบเบราวเซอร จากนนจะแสดง “<br>” ซงเปนแทกภาษา HTML หมายถงให ข นบรรทด ใหม ต วแปร “b” เกบต ว เลขยกก าล ง 10 .2x103 ตอด วย เร ยกใช ฟ งกชน var_dump() เพอแสดงผลชนดและคาของตวแปร “b” คอ “float(10200)” ออกทางเวบเบราวเซอร
1.2.4 ขอมลชนดตวอกษร (string) คอขอมลทประกอบดวยตวอกษรหลายตวน ามารวมกน ส าหรบตวอกษรจะก าหนดคาอยในเครองหมายอญประกาศ ( “ ” หรอ Double quote) หรอ อญประการเดยว (‘ ’ หรอ single quote) ทกครง
ผลลพธ
64 ตวอยางท 4.9 การประกาศตวแปรเกบขอมลชนดตวอกษร
< ?php
$a = 'Hello world!';
echo $a;
echo "< br> ";
$b = "Hello world!";
echo $b;
echo "< br> ";
$c = 'Stay here, I \ 'll be back.';
echo $c;
?>
จากตวอยางขางตนประกาศใหตวแปร “a”, “b” และ “c” เกบขอมลชนดตวอกษร จากนนแสดงตวแปรออกทางเวบเบราวเซอรดวยค าสง echo พรอมสงใหขนบรรทดใหมดวยค าสง echo ตามดวย “<br>” กอนแสดงคาตวแปรถดไป
1.2.5 ขอมลชนดอารเรย (array) หรอตวแปรชด จะเกบขอมลชนดเดยวกนภายใตชอตวแปรเดยวเรยงตอเนองกนในหนวยความจ า มดชน (index) เปนตวระบต าแหนงของแตละขอมลทอยภายใน คาของดชนสามารถเปนไดทงตวเลขหรอตวอกษร โดยดชนของอารเรยจะเรมตนต าแหนงทศนย ส าหรบการประกาศตวแปรประเภทนสามารถท าได 2 รปแบบคอ รปแบบทไมก าหนดดชน และรปแบบทก าหนดดชน ดงตวอยางท 4.10
ตวอยางท 4.10 การประกาศตวแปรเกบขอมลชนดอารเรย ทงแบบก าหนดและไมก าหนดคย
< ?php
$colors = array("Red", "Green", "Blue");
var_dump($colors);
echo "< br> ";
$color_codes = array(
"Red" = > "# ff0000",
"Green" = > "# 00ff00",
"Blue" = > "# 0000ff"
);
var_dump($color_codes);
?>
จากตวอยางขางตนประกาศตวแปร “colors” ในรปแบบไมก าหนดดชน มสมาชก 3 ตวคอ “Red”, “Green” และ “Blue” สวนตวแปร “colors_codes” ประกาศแบบก าหนดดชน มดชน 3 คา คอ “Red”, “Green” และ “Blue” และสมาชกคอ “#ff0000”, “#00ff00” และ “#0000ff”
ผลลพธ
ไมก ำหนดดชน
ก ำหนดดชน
ผลลพธ
65 1.2.6 ขอมลชนดวตถ (object) เปนชนดขอมลทน าไปใชในการเขยนโปรแกรมเชงวตถ ซงเนอหาในเลมนเนนการเขยนโปรแกรมเชงโครงสรางจงไมขอกลาวในรายละเอยด
1.2.7 ขอมลชนดนล (NULL) เปนตวแปรทไมมคาใดอยเลย แตไมใชคาวางทเกบอยในตวแปรชนดตวอกษร
ตวอยางท 4.11 การประกาศตวแปรเกบขอมลชนดนล
< ?php
$a = NULL;
var_dump($a);
echo "< br> ";
$b = "Hello World!";
$b = NULL;
var_dump($b);
?>
จากตวอยางขางตนโปรแกรมประกาศตวแปร “a” ใหมคาเปน “NULL” ซงเปนการก าหนดใหตวแปรมขอมลชนดนล ตามดวยเรยกใชฟงกชน var_dump() ใหแสดงผลชนดและคาของตวแปร “a” ออกทางเวบเบราวเซอร พรอมสงใหขนบรรทดใหมดวยค าสง echo ตามดวย “<br>” จากนนประกาศตวแปร “b” ใหมคาเปน “Hello world” ถดมาเปลยนใหมคาเปน “NULL” แลวเรยกใชฟงกชน var_dump() ใหแสดงผลชนดและคาของตวแปร “b” ออกทางเวบเบราวเซอร
2. คาคงท (Constant) เปนตวแปรทก าหนดขนมาเพอเกบคาใดๆ ทไมคอยมการเปลยนแปลงเมอมการประมวลผลโปรแกรม รปแบบการใชงานมดงน (ชาญชย ศภอรรถกร, 2558: 41)
ตวอยางท 4.12 การก าหนดคาคงทและการน าตวแปรคาคงทไปใชงาน
< ?php
/ / Defining constant
define("IS_SITE_URL", "http:/ / is.udru.ac.th/ ");
/ / Using constant
echo 'Thank you for visiting - ' . IS_SITE_URL;
?>
define (ชอตวแปร,คา)
รปแบบ
ผลลพธ
66 จากตวอยางขางตนก าหนดคาคงทชอ “IS_SITE_URL” มคาเปน “http://is.udru.ac.th/” จากนนน าคาคงทไปแสดงรวมกบขอความ “Thank you for visiting-” เมอประมวลผลโปรแกรมจะแสดงขอความ “Thank you for visiting - http://is.udru.ac.th/” ออกทางเวบเบราวเซอร
ค าสงภาษา PHP เบองตน
ค าสงในภาษา PHP เบองตนทนกเขยนโปรแกรมมอใหมจ าเปนตองท าความรจก เนองจากเปนค าสงทมการใชงานบอยมากมดงน (ชาญชย ศภอรรถกร, 2558: 19-22; TUTORIAL REPUBLIC,
2016)
1. การใสค าอธบาย ในการเขยนโปรแกรมจ าเปนตองใสค าอธบายเพอใหเขาใจชดค าสงของโปรแกรม โปรแกรมทสรางขนมาเพอด าเนนการเกยวกบอะไร ใครเปนคนสราง หรอสรางเมอไร เปนตน อกทงยงเปนการชวยนกเขยนโปรแกรมคนอนทเขามาดรหสค าสงเขาใจรายละเอยดของโปรแกรมได ค าอธบายทใสลงไปนนจะไมถกประมวลผลและแสดงคาออกทางเวบเบราวเซอร ภาษา PHP
สามารถใสค าอธบายลงในโปรแกรมได 2 รปแบบ คอ การใสค าอธบายบรรทดเดยว และการใสค าอธบายหลายบรรทด ภาพท 4.2 แสดงการใสค าอธบายลงในโปรแกรม
ภาพท 4.2 การใสค าอธบายลงในโปรแกรม ทมา: (guru99, 2016)
แบบหลายบรรทด
แบบบรรทดเดยว
67 2. การแสดงผลลพธ ค าสงทใชในการแสดงผลลพธของโปรแกรมภาษา PHP ทใชบอยม 2
ค าสงดงน 2.1 ค าสง echo เปนค าสงทใชเพอแสดงขอความ ตวเลข คาของตวแปร และผลลพธของ
นพจนหรอสมการ ตวอยางการใชงานมดงน
ตวอยางท 4.13 การใชค าสง echo แสดงขอความออกทางเวบเบราวเซอร
< ?php
/ / Displaying string of text
echo "Hello World!";
?>
จากตวอยางท 4.13 โปรแกรมจะใชค าสง echo แสดงขอความ “Hello World!” ออกทางเวบเบราวเซอร
ตวอยางท 4.14 การใชค าสง echo ในการแสดงรหสค าสงภาษา HTML
< ?php
/ / Displaying HTML code
echo "< h4> This is a simple heading.< /h4> ";
echo "< h4 style= 'color: red; '> This is heading with style.< /h4> "
?>
จากตวอยางท 4.14 โปรแกรมใชค าสง echo แสดงขอความ “This is a simple heading.” และ “This is heading with style.” จากการประมวลผลจะแสดงขอมลเหมอนกบการใชแทกภาษา HTML และเปนตวหนาทมขนาดเปน <h4> และขอความ “This is heading with style.” เปนสแดง (style= ‘color:red;’) ออกทางเวบเบราวเซอร
ตวอยางท 4.15 การประกาศตวแปรและแสดงคาของตวแปรออกทางเวบเบราวเซอร
< ?php
/ / Defining variables
$txt = "Hello World!"; $num = 123456789;
$colors = "Red";
/ / Displaying variables
echo $txt;
echo "< br> ";
ประกาศตวแปร
แสดงคาของตวแปร
68 echo $num;
echo "< br> ";
echo $colors;
?>
จากตวอยางท 4.15 โปรแกรมประกาศตวแปร “txt” ทมคาเปน “Hello World!” ตวแปร “num” มคาเปน 123456789 ตวแปร “colors” มคาเปน “red” จากนนใชค าสง echo
แสดงคาตวแปรทไดประกาศไว และกอนแสดงคาตวแปรถดไปจะสงใหขนบรรทดใหมตามชดค าสง echo “<br>” สนสดการประมวลผล
ตวอยางท 4.16 น าขอความกบนพจนมาแสดงรวมกน ทคนดวยคอมมา (,)
< ?php
echo "10+ 5= ",10+ 5;
?>
จากตวอยางท 4.16 เมอประมวลผลโปรแกรมจะแสดงขอความ “10+5=” และตอ
ดวยผลของการบวกของนพจน 10+5 นนคอ “15”
2.2 ค าสง print เปนอกหนงค าสงใหเลอกใชเพอแสดงผลลพธออกทางเวบเบราวเซอร ซงจะท างานเหมอนค าสง echo แตค าสง print จะไมสามารถแยกขอความกบนพจน หรอคาของตวแปรใดๆ ดวยเครองหมายคอมมา (,) ได ตามตวอยางท 4.17 - 4.19 เปนการน าค าสง print มาใชงานแทนค าสง echo ซงเมอประมวลผลจะท างานเหมอนกบการใชค าสง echo ในตวอยางท 4.13-4.15 แตตวอยางท 4.16 ทผานมาไมสามารถใชค าสง print แทนค าสง echo ได เนองจากค าสง print ไมสามารถแยกขอความ “10+5=” กบนพจน 10+5 ทคนดวยคอมมาได
ขอความ อยระหวาง “ ”
นพจน
ขนบรรทดใหม
69 ตวอยางท 4.17 แสดงขอความออกทางเวบเบราวเซอรทเหมอนกบตวอยางท 4.13
< ?php
/ / Displaying string of text
print "Hello World!";
?>
ตวอยางท 4.18 รหสค าสงภาษา HTML ออกทางเวบเบราวเซอรทเหมอนกบตวอยางท 4.14
< ?php
/ / Displaying HTML code
print "< h4> This is a simple heading.< /h4> ";
print "< h4 style= 'color: red; '> This is heading with style.< /h4> "
?>
ผลลพธ
ผลลพธ
70 ตวอยางท 4.19 แสดงคาของตวแปรออกทางเวบเบราวเซอรทเหมอนกบตวอยางท 4.15
< ?php
/ / Defining variables
$txt = "Hello World!";
$num = 123456789;
$colors = "Red";
/ / Displaying variables
print $txt;
print "< br> ";
print $num;
print "< br> ";
print $colors;
?>
ตวด าเนนการ (Operators)
ตวด าเนนการ หมายถง สญลกษณทใชด าเนนการบางอยางระหวางคาสองคา หรอตวแปรสองตว ซงในภาษา PHP มตวด าเนนการดวยกนอยหลายประเภททนกเขยนโปรแกรมจะตองศกษาและท าความเขาใจ เพอจะไดน าไปใชในการเขยนโปรแกรมไดอยางถกตองและมประสทธภาพ ตวด าเนนการแบงออกได 4 ประเภทดงน (ชาญชย ศภอรรถกร, 2558: 43-51; สมศกด โขคชยชตกล, 2550: 27-33; TUTORIAL REPUBLIC, 2016) 1. ตวด าเนนการเกยวกบตวเลข (Arithmetic operators) เปนตวด าเนนการทใชเกยวกบการค านวณทางคณตศาสตร หรอด าเนนการกบคาตวเลข เชน การบวก การลบ การคณ และการหารเปนตน ดงมรายละเอยดตามตารางท 4.1
ตารางท 4.1 ตวด าเนนการเกยวกบตวเลข
ตวด าเนนการ ชอ ตวอยาง ผลลพธ
+ การบวก 1+2 3
- การลบ 5-1 4
* การคณ 5*5 25
/ การหาร 20/5 4
% การหารเอาเศษ 10%3 1
ผลลพธ
71
++ การเพมคาขน 1 5++ 6
-- การลดคาลง 1 4-- 3
ตวอยางท 4.20 การใชตวด าเนนการเกยวกบตวเลข
< ?php
$x = 10;
$y = 4;
echo($x + $y); / / 0utputs: 14
echo($x - $y); / / 0utputs: 6
echo($x * $y); / / 0utputs: 40
echo($x / $y); / / 0utputs: 2.5
echo($x % $y); / / 0utputs: 2
?>
จากตวอยางขางตนก าหนดคาใหตวแปร “x” เปน 10 ตวแปร “y” เปน 4 น าคาของทงสองตวแปรมาด าเนนการบวก ลบ คณ หาร และหารเอาเศษ พรอมแสดงผลลพธออกทางเวบเบราวเซอรดวยค าสง echo
ตวอยางท 2.21 การน าตวด าเนนการ ++ และ -- ไปใชงาน
< ?php
$x = 10;
echo + + $x; / / Outputs: 11
echo $x; / / Outputs: 11
$x = 10;
echo $x+ + ; / / Outputs: 10
echo $x; / / Outputs: 11
$x = 10;
echo --$x; / / Outputs: 9
echo $x; / / Outputs: 9
$x = 10;
echo $x--; / / Outputs: 10
echo $x; / / Outputs: 9
?>
จากตวอยางท 4.21 โปรแกรมประกาศคาตวแปร “x” มคาเปน 10 แลวเพมหรอลดคาใหตวแปร “x” ซงมกรณตางๆ ดงน กรณเพมคาขน 1 ใหกบตวแปรจะเพมคาใหตวแปรกอนแลวจงน าคานนไปแสดงดวยค าสง ++$x สวนอกกรณจะแสดงคาของตวแปรกอนเพมคาขน 1 คาใหกบตวแปรดวยค าสง $x++ สวนการลดคาลง 1 คาของตวแปรนนจะท างานคลายกนกบการเพมคา ดงนนการ
ผลลพธ
เพมคา 1 ใหกบตวแปรกอน แลวจงแสดงคาทได
แสดงคาในตวแปรกอนจากนนจงเพมคาขน 1
ลดคาลง 1 คาใหกบตวแปรกอนแลวจงแสดงคาทได
แสดงคาในตวแปรกอนจากนนจงลดคาลง 1
72 วางเครองหมาย ++ หรอ -- ไวหนาหรอหลงตวแปรจะใหผลลพธทตางกน จงควรพจารณาใหดกอนน าไปใชงาน
2. ตวด าเนนการในการก าหนดคา (Assignment operators) เปนตวด าเนนการส าหรบก าหนดคาใหกบตวแปร มตวด าเนนการทใชคอ เทากบ (=) นอกจากนยงม += , -=, *=, /= และ .= ซงมรายละเอยดดงน
ตารางท 4.2 ตวด าเนนการในการก าหนดคาใหกบตวแปร
ตวด าเนนการ รายละเอยด ตวอยาง ผลลพธ
= ก าหนดคาใหตวแปร $x=4; 4
+= เพมคาใหตวแปร $x=4; $x+=1; 5
-= ลดคาของตวแปร $x=5; $x-=2 3
*= คณคาของตวแปร $x=0; $x*=10; 0
/= หารคาของตวแปร $x=50; $x/=10; 5
.= น าคามาตอทายตวแปร $x= “Pretty”; $x.= “Cool”;
Pretty Cool
ตวอยางท 4.22 การน าตวด าเนนการก าหนดคาใหกบตวแปรไปใชงาน
< ?php
$x = 10; echo $x; / / Outputs: 10
$x = 20;
$x + = 30; echo $x; / / Outputs: 50
$x = 50;
$x -= 20;
echo $x; / / Outputs: 30
$x = 5;
$x * = 25;
echo $x; / / Outputs: 125
$x = 50;
$x /= 10;
echo $x; / / Outputs: 5
?>
ก าหนดคา 10 ใหกบตวแปร x และแสดงคาทเกบในตวแปร
ก าหนดคา 20 ใหกบตวแปร x แลวบวกตวแปร x
อก 30 จากนนแสดงคาลาสดของตวแปร x เปน 50
ก าหนดคา 20 ใหกบตวแปร x แลวลบตวแปร x ออก 20 จากนนแสดงคาลาสดของตวแปร x เปน 30
ก าหนดคา 5 ใหกบตวแปร x แลวคณตวแปร x ดวย 25 จากนนแสดงคาลาสดของตวแปร x เปน 125
ก าหนดคา 100 ใหกบตวแปร x แลวหารตวแปร x ดวย 15 จากนนแสดงคาลาสดของตวแปร x เปน 5
73 จากตวอยางขางตน โปรแกรมจะเรมดวยการก าหนดคาใหกบตวแปร “x” จากนนจะท าการ บวก (+=) ลบ (-=) คณ (*=) และหาร (/=) ตวแปรกบตวเลขทก าหนด แลวใชค าสง echo เพอแสดงคาของตวแปร “x” เชน ก าหนดคาใหตวแปร “x” เปน 20 เมอประมวลผลมาถงค าสง “$x+=30” จะหมายถงใหบวกตวแปร “x” อก 30 แลวแสดงคาทเกบในตวแปรลาสดคอ 50 ออกทางเวบเบราวเซอร
3. ตวด าเนนการเปรยบเทยบ (Comparison operators) เปนตวด าเนนการทใชในการเปรยบเทยบตวแปรกบตวแปร คาคงทกบตวแปร รายละเอยดแสดงในตารางท 4.3
ตารางท 4.3 ตวด าเนนการเปรยบเทยบ
ตวด าเนนการ
ชอ ตวอยาง ผลลพธ
== เทากน $x == $y เปนจรงเมอ คาของตวแปร x เทากบคาของตวแปร y
=== เหมอนกน $x === $y เปนจรงเมอ คาของตวแปร x เทากบคาของตวแปร y และตองเปนชนดขอมลเหมอนกน
!=, <> ไมเทากน $x != $y เปนจรงเมอ คาของตวแปร x ไมเทากบคาของตวแปร y
!== ไมเหมอนกน $x !== $y เปนจรงเมอ คาของตวแปร x ไมเทากบคาของตวแปร y หรอชนดขอมลตางกน
< นอยกวา $x < $y เปนจรงเมอ คาของตวแปร x นอยกวาคาของตวแปร y
> มากกวา $x > $y เปนจรงเมอ คาของตวแปร x มากกวาคาของตวแปร y
<= นอยกวาหรอเทากบ
$x <= $y เปนจรงเมอ คาของตวแปร x นอยกวาหรอเทากบคาของตวแปร y
>= มากกวาหรอเทากบ
$x >= $y เปนจรงเมอ คาของตวแปร x มากกวาหรอเทากบคาของตวแปร y
74 ตวอยางท 4.23 การน าตวด าเนนการเปรยบเทยบไปใชงาน
< ?php
$x = 25;
$y = 35;
$z = "25";
var_dump($x = = $z); / / Outputs: boolean true
var_dump($x != $y); / / Outputs: boolean true
var_dump($x < $y); / / Outputs: boolean true
var_dump($x > $y); / / Outputs: boolean false
var_dump($x < = $z); / / Outputs: boolean true
var_dump($x > = $y); / / Outputs: boolean false
?>
จากตวอยางขางตน ก าหนดคาใหตวแปร “x” เปน 25 ตวแปร “y” เปน 35 และตวแปร “z” เปน 25 จากนนน ามาด าเนนการเปรยนเทยบในแตละตวด าเนนการดงน เทากบ ($x==$z) ไมเทากน ($x!=$y) นอยกวา ($x<$y) มากกวา ($x>$y) นอยกวาหรอเทากบ ($x<=$z) และมากกวาหรอเทากบ ($x>=$y) เรยกใชฟงกชน var_dump มาแสดงผลของการเปรยบเทยบ ซงผลลพธของการเปลยนเทยบจะเปนขอมลชนดตรรกะ (จรง หรอ เทจ)
4. ตวด าเนนการทางตรรกะ (Logical operators) เปนตวด าเนนการทใชเปรยบเทยบหาคาความจรงของตวแปรหรอนพจน ผลลพธทไดจะเปนคาความจรง ( true) หรอ เทจ (false) ซงจะน าไปใชกบค าสงตรวจสอบเงอนไข เชน ค าสง if(...), while(...) หรอ do… while(...) เปนตน รายละเอยดตวด าเนนการทางตรรกะดงแสดงในตารางท 4.4
ตารางท 4.4 ตวด าเนนการทางตรรกะ
ตวด าเนนการ ชอ ตวอยาง ผลลพธ
and หรอ && และ $x and $y, $x && $y
เปนจรงเมอคาของ $x และ $y เปนจรงทงค กรณอนจะใหคาเปนเทจ
or หรอ || หรอ $x or $y, $x || $y
เปนเทจเมอคาของ $x และ $y เปนเทจทงค กรณอนจะใหคาเปนจรง
! นเสธ !$x เปนจรงเมอ $x เปนเทจ และจะใหคาเปนเทจเมอ $x เปนจรง
xor exclusive or $x xor $y เปนเทจเมอ คาของ $x และ $y เปนจรงทงคหรอเทจทงค กรณทเหลอจะใหคาเปนจรง
เงอนไขในการเปรยบเทยบตามแตละตวด าเนนการ
75 ตวอยางท 4.24 การน าตวด าเนนการทางตรรกะมาใชงาน
< ?php
$x= 1;
&y= 18
if ($x< 5 && $y< 20)
{ echo “Condition is True”; }
else
{ echo “Condition is False”; }
?>
จากตวอยางขางตน ก าหนดใหตวแปร “x” มคาเปน 1 และตวแปร “y” มคาเปน 18 ใชค าสง if(...) ในการตรวจสอบเงอนไขทมอย 2 เงอนไข โดยเงอนไขแรกคอ “$x<5” นนคอคาของตวแปร x นอยกวา 5 หรอไม และเงอนไขทสองคอ “$y<20” จะตรวจสอบคาของตวแปร “y” นอยกวา 20 หรอไม โดยใชตวด าเนนการเปรยบเทยบ “และ” (&& เปนจรง เมอทกเงอนไขเปนจรง) นนคอทง 2 เงอนไขจะตองเปนจรง จงจะแสดงขอความ “Condition is True” แตถาเปนกรณอนใหแสดงขอความ “Condition is False” ออกทางเวบเบราวเซอร
โครงสรางควบคม
ภาษา PHP มค าสงควบคมทศทางการท างานของโปรแกรมอย 3 กลม ดงน (พรวนา รตนชโชค, 2557: 35-56)
1. กลมค าสงแบบทางเลอก ซงเปนค าสงเปรยบเทยบเงอนไข เพอเลอกกระท าอยางใดอยางหนงในสองทางเลอก หลายทางเลอก หรอทางเลอกเดยว ในทนเงอนไขจะหมายถงนพจนหรอสมการทางคณตศาสตร เชน x=5, y >10 หรอ z<= 50 เปนตน ซงในภาษา PHP มค าสงแบบทางเลอกดงน
1.1 ค าสง if เปนค าสงในการเปรยบเทยบหรอตรวจสอบเงอนไขแบบทางเลอกเดยว หรอมทางเลอกเดยวใหด าเนนการ กรณเงอนไขเปนจรงเทานน มรปแบบการใชค าสงดงน
if(condition){
/ / Code to be executed
}
รปแบบ เงอนไขในการตรวจสอบ
ชดค าสงทตองประมวลผลกรณเงอนไขเปนจรง
76 สามารถแสดงในรปแบบผงงานดงภาพท 4.3
ภาพท 4.3 ค าสง if แสดงในรปแบบผงงาน
ทมา : (zentut, 2016)
ตวอยางท 4.25 การใชประโยคค าสง if (zentut, 2016)
< ?php
$x = 11;
if(($x > 10){
echo "$x is greater than 10";
}
?>
จากตวอยางขางตน โปรแกรมประกาศตวแปรชอ “x” มคาเปน 11 จากค าสง if จะท าการตรวจสอบเงอนไข โดยเงอนไขของโปรแกรมคอ คาทเกบไวในตวแปร “x” มคามากกวา 10 หรอไม ถาเงอนไขเปนจรง คอมคามากกวา 10 ใหแสดงผล คาตวแปรใน “x” ตอดวย “ is greater than
10” ออกทางเวบเบราวเซอร ถาเปนเทจจะไมมค าสงใหด าเนนการ จบการท างานของโปรแกรม ผลลพธของโปรแกรมคอ “11 is greater than 10” ทงนเพราะคาของตวแปร “x” มคาเปน 11 ซงมากกวา 10
1.2 ค าสง if…else ค าสงเปรยบเทยบเงอนไขแบบสองทางเลอก ซงจะตรวจสอบเงอนไขเหมอนค าสง if แตจะเพมการด าเนนการในสวนของเงอนไขทเปนเทจ มรปแบบและตวอยางการใชงานดงน
ประมวลเมอเงอนไขเปนจรง
เงอนไขในการตรวจสอบ
77
สามารถแสดงในรปแบบผงงานดงภาพท 4.4
ภาพท 4.4 ค าสง if…else แสดงในรปแบบผงงาน ทมา : (SoraTemplates, 2016)
if(condition){
/ / Code to be executed if condition is true
} else{
/ / Code to be executed if condition is false
}
รปแบบ
ชดค าสงทตองประมวลผลกรณเปนจรง
ชดค าสงทตองประมวลผลกรณเปนเทจ
เงอนไขในการตรวจสอบ
เงอนไขในการตรวจสอบ
ชดค าสงทตองประมวลผลกรณเปนจรง
ชดค าสงทตองประมวลผลกรณเปนเทจ
78 ตวอยางท 4.26 การใชประโยคค าสง if...else (zentut, 2016)
< ?php
$x = 2;
if($x > 10){
echo "$x is greater than 10";
} else{
echo "$x is less than 10";
}
?>
จากตวอยางโปรแกรมขางตนจะประกาศตวแปรชอ “x” มคาเปน 2 จากนนใชค าสง if ()ตรวจสอบเงอนไข “$x>10” นนคอคาทเกบไวในตวแปร “x” มคามากกวา 10 หรอไม ถาเงอนไขเปนจรง คอมคามากกวา 10 ใหแสดงคาตวแปร x ตามดวย “ is greater than 10” ออกทางเวบเบราวเซอร ถาเปนเทจ คอมคานอยกวา 10 ใหแสดงคาตวแปร x ตามดวย “ is less than 10” ออกทางเวบเบราวเซอร จบการท างานของโปรแกรม หลงจากประมวลผลชดค าสงขางตนแลวจะไดผลลพธของโปรแกรมคอ “2 is less than 10” ทงนเพราะคาของตวแปร “x” มคาเปน 2 ซงนอยกวา 10
1.3 ค าสงเปรยบเทยบเงอนไขแบบหลายทางเลอก หรอมทางเลอกจ านวนมากใหเลอกด าเนนการ ในภาษา PHP มใหเลอกใชงาน 2 ค าสงคอ if…elseif และ switch…case มรายละเอยดดงน
1.3.1 ค าสง if…elseif ซงเปนค าสงส าหรบตรวจสอบเงอนไข ถาเปนจรงกจะด าเนนการตามทก าหนดไว แตถาเปนเทจจะตรวจสอบเงอนไขถดไปทอยหลงค าสง elseif(…) ถายงเปนจรงจะด าเนนการค าสงทอยภายในวงเลบปกกา แตถาเปนเทจกจะตรวจสอบเงอนไขถดไปอกจนกวาจะไมมเงอนไขใดเปนจรงเลยจงจะด าเนนการหลงค าสง else มรปแบบและตวอยางการใชงานดงน
if(condition1){
/ / Code to be executed if condition1 is true
} elseif(condition2){
/ / Code to be executed if the condition1 is false
and condition2 is true
} else{
/ / Code to be executed if both condition1 and
condition2 are false
}
รปแบบ
เงอนไขแรกทใชการตรวจสอบ ชดค าสงทตองประมวลผล
กรณเงอนไขแรกเปนจรง
ชดค าสงทตองประมวลผลกรณเปนเทจ
ชดค าสงทตองประมวลผลกรณเงอนไขแรกเปนเทจ แตเงอนไขท 2 เปนจรง
เงอนไขท 2 ทใชในการตรวจสอบ
79 สามารถแสดงในรปแบบผงงานดงภาพท 4.5
ภาพท 4.5 ค าสง if… elseif แสดงในรปแบบผงงาน
ทมา : (zentut, 2016)
ตวอยางท 4.27 การใชประโยคค าสง if...elseif (zentut, 2016)
< ?php
$x = 20;
if($x > 0){
echo "$x is greater than zero";
} elseif($x = = 0){
echo "$x is zero";
} else{
echo "$x is less than zero";
}
?>
จากตวอยางโปรแกรมขางตนประกาศตวแปรชอ “x” มคาเปน 20 จากค าสง if() ใชตรวจสอบเงอนไข ($x>0) นนคอคาทเกบไวในตวแปร “x” มคามากกวา 0 หรอไม ถาเงอนไขเปนจรง คอมคามากกวา 0 ใหแสดงคาตวแปร x ตามดวย “ is greater than zero” ออกทางเวบเบราวเซอร ถาเปนเทจใหตรวจสอบเงอนไขหลงค าสง elseif นนคอ ตวแปร “x” มคาเทากบ 0 หรอไม ($x==0) ถาเปนจรงใหแสดงคาตวแปร x ตามดวย “ is zero” ออกทางเวบเบราวเซอร กรณเปนเทจใหแสดงคาตวแปร x ตามดวย “ is less than zero” แลวจบการท างานของโปรแกรม ผลลพธจากการ
ประมวลผลเมอเงอนไขแรกเปนจรง
ประมวลผลเมอเงอนไข 2 เปนจรง
ประมวลผลเมอเงอนไข 3 เปนจรง
เงอนไขแรกในการตรวจสอบ
เงอนไขท 2 ทใชในการตรวจสอบ
เงอนไขท 3 ทใชในการตรวจสอบ
80 ประมวลผลของโปรแกรมคอ “20 is greater than zero” ทงนเพราะคาของตวแปร “x” มคาเปน 20 ซงมากกวา 0
1.3.2 ค าสง switch…case เปนค าสงทท างานคลายกบค าสง if… elseif แตเปนค าสงทชวยใหการเขยนโปรแกรมสนกระชบขน และแตละทางเลอกการท างานจะมค าสงหยดตรวจสอบเงอนไขดวย break แตถาผลการตรวจสอบไมตรงกบเงอนไขใดเลยจะเขาไปท างานหลงค าสง default
มรปแบบและตวอยางการใชงานดงน
สามารถแสดงในรปแบบผงงานดงภาพท 4.6
ภาพท 4.6 ค าสง switch … case แสดงในรปแบบผงงาน, ทมา : (zentut, 2016)
switch(ตวแปรหรอเงอนไข){
case คาตวแรกทใชเปรยบเทยบกบตวแปรหรอเงอนไข:
/ / code block 1 break;
case คาตวท 2 ทใชเปรยบเทยบกบตวแปรหรอเงอนไข:
/ / code block 2
break;
…
default:
/ / default code block break;
}
รปแบบ
ประมวลผลมอเงอนไขแรก
เปนจรง
ประมวลผลมอเงอนไข 2
เปนจรง
ประมวลผลมอเงอนไข 3
เปนจรง
ประมวลผลเมอเงอนไขเปนเทจ
เงอนไขหรอคาตวแปรทใชตรวจสอบ
คาแรกทใชเปรยบเทยบกบเงอนไข
คาท 2 ทใชเปรยบเทยบกบเงอนไข
คาท 3 ทใชเปรยบเทยบกบเงอนไข
81 ตวอยางท 4.28 การใชประโยคค าสง switch … case (zentut, 2016)
< ?php
$x = rand(0,3);
switch($x){
case 0: echo '$x is equal 0';
break;
case 1: echo '$x is equal 1';
break;
case 2: echo '$x is equal 2';
break;
case 3: echo '$x is equal 3';
break;
}
?>
จากตวอยางโปรแกรมขางตนประกาศตวแปรชอ “x” ในการก าหนดคาใหตวแปร “x” จะเรยกใชฟงกชน rand เพอสมตวเลขทอยระหวาง 0 ถง 3 เมอไดตวเลขมาจะน าไปเกบในตวแปร “x” แลวใชค าสง switch() ตรวจสอบคาของตวแปร “x” มคาเทากบคาใด ถามคาเปน 0 ใหแสดงคาตวแปร “x” ตามดวย “ is equal 0” ออกทางเวบเบราวเซอร แตถามคาเปน 1 ใหแสดงคาตวแปร “x” ตามดวย “ is equal 1” ออกทางเวบเบราวเซอร แตถามคาเทากบ 2 ใหแสดงคาตวแปร “x” ตามดวย “ is equal 2” ออกทางเวบเบราวเซอร แตถามคาเปน 3 ใหแสดงคาตวแปร “x” ตามดวย “ is equal 3” ออกทางเวบเบราวเซอร จบการท างานของโปรแกรม ซงการประมวลผลโปรแกรมแตละครงจะไดผลลพธทแตกตางกน เนองจากผลลพธของฟงกชน rand จะเกดจากการสมตวเลขทอยระหวางชวงตวเลขทก าหนด
2. กลมค าสงแบบวนรอบ
ภาษา PHP มค าสงใหด าเนนการแบบวนรอบหรอการประมวลผลชดค าสงซ าๆ แตท าอยางมเงอนไข นนคอค าสง while, do … while, for และ foreach ซงมรายละเอยดดงน
2.1 ค าสง while เปนค าสงใหด าเนนการแบบวนรอบไปจนกวาเงอนไขเปนเทจ จงจะหยดการท างานตามทก าหนด ในการท างานรอบแรกจะตรวจสอบเงอนไขกอน หากเงอนไขเปนจรงจะเขาไปท างานค าสงทอยภายในวงเลบปกกา เมอท างานเรยบรอยจะวนกลบไปตรวจสอบเงอนไขอกครง ถาหากเงอนไขยงเปนจรงจะกลบเขาไปท างานค าสงภายในวงเลบปกกาอก ด าเนนการซ าไปจนกระทงการตรวจสอบเงอนไขเปนเทจจงหยดการท างานแลวออกไปท าค าสงทอยนอกวงเลบปกกา มรปแบบและตวอยางการใชงานดงน
while(condition){
/ / code block to be executed
}
รปแบบ
เงอนไขในการตรวจสอบ
ค าสงทตองด าเนนการซ า
82 สามารถแสดงในรปแบบผงงานดงภาพท 4.7
ภาพท 4.7 ค าสง while แสดงในรปแบบผงงาน
ทมา : (zentut, 2016)
ตวอยางท 4.29 การใชประโยคค าสง while (zentut, 2016)
< ?php
define('MAX',10);
$counter = 1;
while($counter < = MAX){
echo "The current value of the counter is { $counter} < br> ";
$counter+ + ;
}
?>
จากตวอยางขางตนโปรแกรมมการประกาศคาคงทชอ “MAX” มคาเทากบ 10 แลวประกาศตวแปรชอ “counter” มคาเปน 1 จากนนเรมตรวจสอบเงอนไขดวยค าสง while วาคาทเกบในตวแปร “counter” มคานอยกวาหรอเทากบคาคงท “MAX” หรอไม ($counter<=MAX) ถาเปนจรงใหแสดงขอความ “The current value of the counter is { คาในตวแปร counter }” และขนบรรทดใหม (<br>) ดวยค าสง echo ออกทางเวบเบราวเซอร แลวเพมคาใหกบตวแปร “counter” ขน 1 คา ท าการวนรอบตรวจสอบเงอนไขอก หากเงอนไขเปนจรงจะวนกลบไปท างานซ าไปเรอยๆ จนกวาเงอนไขจะเปนเทจ นนคอ คาของตวแปร “counter” มากกวาคาคงท “MAX” จงหยดการท างาน สนสดการท างานของโปรแกรม
เงอนไขในการตรวจสอบ
ค าสงทตองด าเนนการซ า
83 2.2 ค าสง do…while เปนค าสงใหด าเนนการแบบวนรอบไปจนกวาเงอนไขจะเปนเทจ จง
จะหยดการท างานตามทก าหนด คลายกบค าสง while แตตางกนตรงรอบแรกของการท างาน ค าสง do…while จะใหเขาไปท างานไดโดยไมตองตรวจสอบเงอนไขหลงท างานเสรจในรอบแรกแลวจงจะตรวจสอบเงอนไข หากเงอนไขเปนจรงจะวนกลบไปท างานซ าไปเรอยๆ จนกวาเงอนไขจะเปนเทจ จงหยดการท างานแลวออกจากการวนรอบ ขอสงเกต ค าสง do…while จะท างานชดค าสงทอยภายในวงเลบปกกาอยางนอยหนงครงเสมอ แมวาเงอนไขในการตรวจสอบจะเปนเทจตงแตรอบแรก.
สามารถแสดงในรปแบบผงงานดงภาพท 4.8
ภาพท 4.8 ค าสง do … while แสดงในรปแบบผงงาน
ทมา : (zentut, 2016)
do {
/ / code block to be executed
} while (expression);
รปแบบ
เงอนไขการตรวจสอบใหสนสดการท างานซ า
ค าสงทตองด าเนนการซ า
เงอนไขการตรวจสอบใหสนสดการท างานซ า
ค าสงทตองด าเนนการซ า
84 ตวอยางท 4.30 การใชประโยคค าสง do … while (zentut, 2016)
< ?php
$i = 10;
do {
echo $i . '< br> ';
$i--;
} while ($i > 0);
?>
จากตวอยางขางตนโปรแกรมประกาศตวแปรชอ “i” มคาเปน 10 เรมท างานชดค าสงภายในวงเลบปกกาหลงค าสง do โดยรอบแรกจะแสดงคาของตวแปร “i” ออกทางเวบเบราวเซอร แลวขนบรรทดใหม (<br>) จากนนลดคาตวแปร “i” ลง 1 คา ($i--) แลวตรวจสอบเงอนไขวา คาตวแปร “i” มากกวา 0 หรอไม หากเงอนไขเปนจรงใหกลบไปด าเนนการซ าไปเรอยๆ จนกระทงเงอนไขเปนเทจ จงหยดการท างาน สนสดการท างานของโปรแกรม
2.3 ค าสง for เปนค าสงใหด าเนนการแบบวนรอบทระบจ านวนรอบทตองประมวลผลแนนอน จะด าเนนการไปจนกระทงคาตวแปรมคาครบตามเงอนไขทก าหนด โดยค าสง for จะก าหนดคาตวแปรเรมตน เงอนไขการตรวจสอบใหสนสดการท างานซ า และการเพมหรอลดคาตวแปร มรปแบบและตวอยางดงน
for(init_expr; condition_expr; increment_expr){
/ / code block to be executed.
}
รปแบบ
เงอนไขการตรวจสอบใหสนสดการท างานซ า ก าหนดคาตวแปรเรมตน
การเพมหรอลดคาตวแปร
85 สามารถแสดงในรปแบบผงงานดงภาพท 4.9
ภาพท 4.9 ค าสง for แสดงในรปแบบผงงาน
ทมา : (zentut, 2016)
ตวอยางท 4.31 การใชประโยคค าสง for (zentut, 2016)
< ?php
for ($i = 1; $i < 5; $i+ + ) {
echo $i . '< br/ > ';
}
?>
จากตวอยางขางตนโปรแกรมประกาศคาตวแปรเรมตน เงอนไขการตรวจสอบใหสนสดการท างานซ า และการเพมคาของตวแปรไวภายในวงเลบของค าสง for นนคอตวแปร “i” มคาเปน 1
( $i=1 ) จากนนตรวจสอบเงอนไขวาคาตวแปร “i” นอยกวา 5 หรอไม ( $i < 5 ) พรอมก าหนดใหเพมคาตวแปร “i” ขน 1 คา ( $i++ ) ถาเงอนไขเปนจรงใหแสดง (echo) คาตวแปร “i” ออกทางเวบ
เงอนไขการตรวจสอบใหสนสดการท างานซ า
ค าสงทตองด าเนนการซ า
ก าหนดคาตวแปรเรมตน
การเพมหรอลดคาตวแปร
ก าหนดคาตวแปรเรมตน เงอนไขการตรวจสอบใหสนสดการท างานซ า
การเพมคาตวแปรขน 1 คา
86 เบราวเซอร พรอมขนบรรทดไม (<br>) ด าเนนงานซ าไปจนกระทงเงอนไขเปนเทจ จงหยดการท างานซ า นนคอคาตวแปร “i” มากกวาคา 5 จบการท างานของโปรแกรม
2.3 ค าสง foreach เปนค าสงวนรอบการท างานเหมอนค าสง for แตค าสงนจะใชกบตวแปรทมขอมลชนดอารเรย ซงจะใชเพอเขาถงขอมลชนดน ส าหรบการวนรอบนนจะวนเทากบจ านวนสมาชกทจดเกบไวในตวแปรอารเรย มรปแบบและตวอยางการใชงานดงน.
จากรปแบบขางตน ค าสง foreach จะดงขอมลจากสมาชกแตละตวของตวแปรอารเรย “array” มาใสไวในตวแปร “element” ทเกบคาสมาชก โดยจะดงตงแตตวแรกไปจนถงตวสดทาย ดงนน ในแตละรอบของการวนรอบดวยค าสง foreach คาทเกบไวในตวแปร “element” จะเปลยนแปลงไปในแตละรอบตามคาสมาชกทเกบไวในตวแปร “array”
ตวอยางท 4.32 การใชประโยคค าสง foreach (zentut, 2016)
< ?php
$scores = [ 1,2,3] ;
foreach ($scores as $score) {
echo $score;
}
?>
จากตวอยางขางตนโปรแกรมประกาศตวแปรชนดอารเรยชอ “scores” โดยมสมาชก 3 คาคอ 1, 2 และ 3 จากนนเรมประมวลผลค าสง foreach โดยน าคาสมาชกของตวแปร “scores” ไปเกบไวในตวแปร “score” คาแรกคอ 1 แลวเขาไปด าเนนการค าสงภายในวงเลบปกกา โดยใหแสดงคาตวแปร “score” ออกทางเวบเบราวเซอร วนรอบแสดงคาทเกบในตวแปร “score” ซ าไปจนถงสมาชกตวสดทายทเกบอยในตวแปร “scores”
foreach ($array as $element) {
/ / process element here;
}
รปแบบ
ตวแปรอารเรย
ค าสงทตองด าเนนการซ า
87 3. กลมค าสงแบบกระโดดออกจากค าสงวนรอบ
การท างานแบบการวนรอบ บางครงอาจตองหยดการท างานของค าสงนนทนท ถงแมจ านวนการวนรอบจะยงท างานไมครบกตาม ซงในภาษา PHP มกลมค าสงทสามารถท างานในลกษณะกระโดดขามการท างาน หรอหยดการท างานดงน
3.1 ค าสง continue เมอโปรแกรมประมวลผลแลวพบค าสงนจะถอวาการท างานของรอบนนสนสดลง และจะกระโดดไปท างานของการวนรอบถดไปทนท โดยไมสนใจค าสงทเหลอของการวนรอบทพบค าสง continue ดงตวอยางท 4.33
ตวอยางท 4.33 การใชประโยคค าสง continue ทเขยนสครปตแทรกอยระหวางแทกภาษา HTML
< html>
< body>
< ?php
$array = array( 1, 2, 3, 4, 5);
foreach( $array as $value ) {
if( $value = = 3 )continue;
echo "Value is $value < br> ";
}
?>
< /body>
< /html>
จากตวอยางขางตน โปรแกรมประกาศตวแปรอารเรยชอ “array” มสมาชกเปนตวเลข 1 ถง 5 แลวใชค าสง foreach() น าคาสมาชกของตวแปร “array” ไปเกบไวในตวแปร “value” คาแรกคอ 1 จากนนใชค าสง if() ตรวจสอบคาของตวแปร “value” วามคาเทากบ 3 หรอไม กรณเปนจรงจะพบค าสง continue ซงจะเปนการก าหนดใหสนสดการท างานของรอบน ไมท าค าสงทเหลอ (echo
“Value is $value <br>”) ออกนอกรอบไปท างานรอบถดไปเลย กรณเปนเทจจะแสดงขอความ “Value is ” ตามดวยคาตวแปร “value” และขนบรรทดใหม (<br>)
3.2 ค าสง break เปนค าสงกระโดดออกจากการท างานนนไปเลย หรอออกจากการวนซ าทงหมด เชน ค าสง for, while, do…while เปนตน โดยไมสนวาเงอนไขการท างานเปนจรงหรอเทจ หรอวนครบรอบการท างานหรอไม ดงตวอยางท 4.34
สนสดรอบ แลววนรอบถดไป
Value is 1
Value is 2
Value is 4
Value is 5 ผลลพธ
88 ตวอยางท 4.34 การใชประโยคค าสง break ทเขยนสครปตแทรกอยระหวางแทกภาษา HTML
< html>
< body>
< ?php
$i = 0;
while( $i < 10) {
$i+ + ;
if( $i = = 3 ) break;
echo $i ; echo “<br>”; }
echo ("Loop stopped at i = $i" );
?>
< /body>
< /html>
จากตวอยางขางตน โปรแกรมประกาศตวแปร “i” มคาเปน 0 แลวใชค าสง while
ตรวจสอบเงอนไขการท าซ าวา คาตวแปร “i” มคานอยกวา 10 หรอไม ($i<10) ถาเงอนไขเปนจรงใหเพมคาตวแปร “i” ขน 1 คา ($i++) แลวตรวจสอบเงอนไขถดมาวา คาตวแปร “i” มคาเทากบ 3 หรอไม ($i==3) ถาเปนจรงใหสนสดการท างานแลวออกนอกการวนรอบไปท าค าสงถดไปคอ ใหแสดงขอความ “Loop stopped at i = ” ตามดวยคาตวแปร i และถาเปนเทจ ($i ไมเทากบ 3) จะประมวลผลสง “echo $i” และ “echo <br>” ซงเปนการสงใหแสดงคาตวแปร “i” และขนบรรทดใหม
ผลลพธ
89
สรป
โปรแกรมทเขยนดวยภาษา PHP จะถกประมวลผลทฝงเซอรเวอร โดยเมอถกเรยกใชจากเวบเบราวเซอรจะประมวลผลและสรางผลลพธเปนไฟล HTML สงมายงเครองไคลเอนตเพอใหเวบเบราวเซอรแสดงผล มรปแบบของภาษาคอ จะใชแทกส าหรบบอกจดเรมตนและสนสดของค าส งภาษา 2 รปแบบคอ <?php ...?> และ <script language= “php”> … </script> ภาษา PHP มตวแปรและคาคงททเปนตวแทนพนทในหนวยความจ าส าหรบใชในการเกบขอมลระหวางการประมวลผลโปรแกรม มค าสงเบองตนทใชงานบอยคอ echo และ print ซงเปนค าสงในการแสดงผลของตวแปรออกทางเวบเบราวเซอร ตวด าเนนการทใชในภาษาแบงออกได 4 ประเภทคอ ตวด าเนนการเกยวกบตวเลข ตวด าเนนการในการก าหนดคา ตวด าเนนการในการเปรยบเทยบ และตวด าเนนการทางตรรกะ โครงสรางควบคมของภาษามอย 3 รปแบบดงน กลมค าสงแบบทางเลอกทใชเปรยบเทยงเงอนไข เพอเลอกท าทประกอบดวยค าสง if, if...else, if...elseif และ switch...case กลมค าสงแบบวนรอบทจะด าเนนการแบบวนรอบชดค าสงซ าๆ มค าสง while, do...while, for และ foreach สดทายกลมค าสงแบบกระโดดออกจากค าสงวนรอบ มใชงานอย 2 ค าสงคอ continue และ break
แบบฝกหด
1. จงอธบายความหมายของตวแปร 2. ชนดของตวแปรมกชนด อะไรบางจงอธบาย 3. ใหนกศกษาเขยนโปรแกรมตามรายละเอยดของอลกอรทมตอไปน
Stop
Score=65
Score>=60
Y N
Write “สอบไมผาน” Write “สอบผาน”
Start
90 4. ใหนกศกษาเขยนโปรแกรมตามรายละเอยดของอลกอรทมตอไปน
Start
a=25, b=10
sum=0
sum=a + b
Write sum
Stop
91
เอกสารอางอง
ชาญชย ศภอรรถกร. (2558). สรางเวบแอพพรเคชน PHP MySQL+AJAX jQuery ฉบบสมบรณ. กรงเทพฯ: รไววา. พรวนา รตนชโชค. (2557). การโปรแกรมบนเวลดไวดเวบ. [ม.ป.ท.]. สมศกด โชคชยชตกล. (2550). Insight PHP ฉบบสมบรณ. กรงเทพฯ: โปรวชน
Guru99. (2016). PHP forms handing. 2016, May 31. [online], Available HTTP: https://www.guru99.com/control-structures-and-loops.html SoraTemplates. (2016). Conditional if-else statement with example in c
language. 2016, May 31. [online], Available HTTP: https://dotprogramming. blogspot.com/2016/02/ conditional-if-else-statement-with.html.
Tutorial Republic. (2016). PHP-tutorial. 2016, May 31. [online], Available HTTP: https://www.tutorialrepublic.com/php-tutorial/php-if-else-statements.php Tutorialspoint. (2016). PHP-Loop Types. 2016, June 25. [online], Available HTTP: https://www.tutorialspoint.com/php/php_loop_types.htm. Zentut. (2016). PHP if Statement. 2016, June 25. [online], Available HTTP: http://www.zentut.com/php-tutorial/php-if/
แผนบรหารการสอนประจ าบทท 5
เนอหาประจ าบทท 5 ฟงกชน (Functions) ของภาษา PHP
ลกษณะทวไปของฟงกชน
การประกาศฟงกชน
การเรยกใชงานแบบไมมการสงผานคา
การเรยกใชงานแบบมการสงผานคา
การสรางฟงกชนไวใชงาน
การคนคาจากฟงกชน
การสงผานคาใหแกฟงกชน
ขอบเขตการเรยกใชตวแปร
การน าเขาสครปตจากไฟลอนมาใชงาน
การเรยกใชฟงกชนทมอยใน PHP
วตถประสงคเชงพฤตกรรม
เมอศกษาบทเรยนนแลว ผเรยนมพฤตกรรมดงน 1. อธบายเกยวกบฟงกชน พารามเตอร การคนและสงผานคาในฟงกชน 2. จ าแนกประเภทของการสงผานคาใหแกฟงกชน 3. บอกขอบเขตการเรยกใชตวแปรของฟงกชน 4. สามารถเขยนโปรแกรมสรางและเรยกใชงานฟงกชนทสรางขนมาเองหรอส าเรจรปของภาษา PHP ตามแบบฝกหดประจ าบทไดอยางเหมาะสม
วธสอนและกจกรรมการเรยนการสอน
1. วธสอน
1.1 บรรยาย และสาธต 1.2 อภปราย คนควาเพมเตม 1.3 นกศกษาท าแบบฝกหด และผสอนตรวจแบบฝกหด 1.4 มอบหมายแบบฝกหดเปนการบานเพอทบทวนบทเรยน
2. กจกรรมการเรยนการสอน
สปดาห 10-11 (8 ชวโมง) 2.1 ผสอนอธบายและสาธตเนอหา เปดโอกาสใหผเรยนซกถามปญหาในหวขอทยง
ไมเขาใจ ใหผเรยนคนควาเพมเตมจากอนเตอรเนตและเอกสารประกอบการสอน อภปราย และสรปเนอหาสาระส าคญรวมกน
94 2.2 ผเรยนท าแบบฝกหดประจ าบทและตอบค าถามลงใน Google Classroom
เพอใหผสอนตรวจ อธบายและชแจงค าตอบทถกตอง
สอการเรยนการสอน
1. เอกสารประกอบการสอนการเขยนโปรแกรมคอมพวเตอรเพองานสารสนเทศ 1 2. เครองคอมพวเตอร 3. PowerPoint เนอหาบทท 5 4. สอออนไลนชวยสอน : โปรแกรม Google Classroom
การวดผลและประเมนผล
1. การวดผล
สงเกตจากการตอบค าถาม ตรวจแบบฝกหด 2. การประเมนผล
ผเรยนสามารถตอบค าถามและท าแบบฝกหดไดถกตอง รอยละ 80
บทท 5 ฟงกชน (Functions)
การเขยนโปรแกรมยอยหรอฟงกชนเปนการเขยนโปรแกรมทชวยใหการจดการตางๆ ท าไดงายขน เชน การเพม การแกไข และลบค าสงในโปรแกรม เปนตน เนองจากแตละฟงกชนจะแบงหนาทการท างานชดเจน สวนใหญจะเลอกลกษณะการท างานซ า ๆ มาเขยนเปนฟงกชนหรอมการเรยกใหฟงกชนนนท างานหลายครง ซงภายในบทมเนอหาเกยวกบลกษณะทวไปของฟงกชน การประกาศฟงกชน การเรยกใชงานแบบไมมการสงผานคา การเรยกใชงานแบบมการสงผานคา การคนคาจากฟงกชน การสงผานคาใหแกฟงกชน ขอบเขตการเรยกใชงานตวแปร การน าเขาสครปตจากไฟลอนมาใชงาน การเรยกใชฟงกชนทมอยใน PHP เพอเปนการเพมความสะดวกและงายในการเขยนโปรแกรมใหกบนกเขยนโปรแกรม
ลกษณะทวไปของฟงกชน
ฟงกชน หมายถงโปรแกรมยอยทเขยนขนมาเพอท างานอยางใดอยางหนงทมการท างานบอยครง ภาษา PHP จะมฟงกชนอย 2 ประเภทคอ (ชาญชย ศภอรรถกร, 2558: 69) 1. ฟงกชนทผใชงานสรางขนมาเอง (User defined functions) ซงเปนฟงกชนทนกเขยนโปรแกรมสรางขนมาเพอวตถประสงคบางอยาง สวนรายละเอยดจะกลาวในหวขอถดไป
2. ฟงกชนทมอยใน PHP (Built in functions) เปนฟงกชนท PHP มใหเรยกใชอยแลว เชน ฟงกชน var_dump(), trim(), substr(), max(), min() และ date() เปนตน ซงในบทนจะแนะน าฟงกชนทมการเรยกใชงานบอยและเหมาะทจะน ามาใชในการเขยนโปรแกรม
การประกาศฟงกชน
การประกาศฟงกชนเปนการสรางฟงกชนขนมาใชงานตามวตถประสงคทตองการ เมอสรางฟงกชนขนมาแลวการใชงานฟงกชนจะตองมการเรยกชอฟงกชนจงจะสามารถใชงานได สวนการตงชอฟงกชนจะใชหลกการเดยวกนกบการตงชอใหกบตวแปร ควรตงใหสมพนธกบการท างานหรอหนาทของฟงกชนและไมซ ากน รปแบบของการประกาศฟงกชนมดงน
function functionName(){
/ / Code to be executed
}
รปแบบ
ชอฟงกชน ชดค าสงทจะประมวลผลเขยนไวภายใน {…}
96 ในการสรางฟงกชนขนมาใชงานสามารถเขยนแทรกไวในภาษา HTML หรอเขยนเฉพาะสครปตภาษา PHP กได ตวอยางท 5.1 แสดงการสรางฟงกชนแทรกไวในไฟลภาษา HTML
ตวอยางท 5.1 การประกาศหรอสรางฟงกชนขนมาใชงานเอง < html>
< head>
< tit le> Writing PHP Function< / tit le>
< /head>
< body>
< ?php
/ * Defining a PHP Function * /
function writeMessage() {
echo "You are really a nice person, Have a nice time!";
}
/ * Calling a PHP Function * /
writeMessage();
?>
< /body>
< /html>
จากตวอยางขางตน โปรแกรมสรางหรอประกาศฟงกชนชอ “writeMessage” โดยท าหนาทแสดงขอความ “You are really a nice person, Have a nice time!” จบการท างานของฟงกชนเมอในโปรแกรมมการสรางฟงกชนแลวจะเรยกใชโดยการเรยกชอฟงกชน ถาไมเรยกใชฟงกชน ฟงกชนกจะไมถกประมวลผล
การเรยกใชงานแบบไมมการสงผานคา
หลงจากทประกาศฟงกชนแลวและตองการใชงานฟงกชนสามารถท าไดโดยเรยกชอฟงกชนเทานน ซงการเรยนใชงานฟงกชนแบบไมมการสงผานคาจะหมายถงเรยกแคชอฟงกชน ไมตองสงคาอะไรไปใหฟงกชนน าไปประมวลผล ดงแสดงตามตวอยางท 5.2 (ชาญชย ศภอรรถกร, 2558: 70) ตวอยางท 5.2 การเรยกใชงานฟงกชนแบบไมมการสงผานคา ทสรางโดยใชเฉพาะสครปตภาษา PHP เทานน
< ?php
/ / define a function that displays add number function
function add_numbers(){
echo 1 + 2;
}
/ / Calling function
add_numbers ();
?>
จากตวอยางท 5.2 โปรแกรมมการประกาศฟงกชนชอ “add_number” ทท าหนาทบวกตวเลข 2 จ านวน คอ 1 กบ 2 แลวแสดงผลรวมออกทางเวบเบราวเซอร สนสดชดค าสงในฟงกชน เมอ
ประกาศฟงกชน
เรยกใชฟงกชน
เรยกใชฟงกชน โดยไมมการสงผานคา
97 ตองการใชงานฟงกชนเพยงเรยกชอฟงกชน นนคอ “add_number();” ซงเปนการเรยกใชฟงกชนแบบไมมการสงผานคา
การเรยกใชงานแบบมการสงผานคา
ในบางครงการใชงานฟงกชนตองการความยดหยนมากขน โดยผเขยนโปรแกรมสามารถสรางฟงกชนในลกษณะทมการสงผานคา หรอการสงคาบางคาไปใหฟงกชนน าไปประมวลผลซงมความยดหยนในการใชงานมากกวาการเรยกใชงานแบบไมมการสงผานคา ดงมรปแบบตามตวอยางท 5.3 และ 5.4 ดงน (ชาญชย ศภอรรถกร, 2558: 71) ตวอยางท 5.3 การเรยกใชงานฟงกชนแบบมการสงผานคา
< html>
< head>
< tit le> Writing PHP Function with Parameters< / tit le>
< /head>
< body>
< ?php
/ /define a function
function addFunction($num1, $num2) {
$sum = $num1 + $num2;
echo "Sum of the two numbers is : $sum";
}
/ / Calling function
addFunction(10, 20); ?>
< /body>
< /html>
จากตวอยางขางตนเปนโปรแกรมส าหรบสรางฟงกชน “addFunction” แทรกไวระหวางแทก <body>…</body> ของภาษา HTML ฟงกชนนมหนาทบวกตวเลข 2 จ านวนทไดจากการสงผานคาตอนเรยกใชงานฟงกชนคอ ตวแปร “num1” และ “num2” น าคาของทง 2 ตวแปรมาบวกกนแลวเกบไวในตวแปร “sum” แลวแสดงขอความ “Sum of the two numbers is : ” ตามดวยคาผลรวมทเกบไวในตวแปร “sum” จบการท างานของฟงกชน เมอประกาศฟงกชนแลวโปรแกรมเรยกใชงานฟงกชนแบบมการสงผานคา 2 คาไปใหฟงกชนคอ 10 กบ 20 น าไปเกบไวในตวแปร “num1” และ “num2” ของฟงกชนตามล าดบ
ตวอยางท 5.4 การเรยกใชงานฟงกชนแบบมการสงผานคา
< ?php
/ /define a function that displays name
function display_name($name)
{
echo "Hello " . $name;
}
/ / Calling function
display_name("Martin Luther King");
?>
เรยกใชฟงกชน โดยมการสงผานคา 2 คาคอ 10 และ 20
เรยกใชฟงกชน โดยมการสงผานคา
98 จากตวอยางข างตน เปนโปรแกรมสร างฟงกชนทม เฉพาะสครปตภาษา PHP ชอ
“display_name” ซงมหนาทแสดงขอความ “Hello” ตามดวยคาทเกบไวในตวแปร “name” สนสดการประกาศฟงกชน จากนนโปรแกรมมการเรยกใชงานฟงกชนแบบมการสงผานคา 1 คาตามทฟงกชนตองการคอ “Martin Luther King” ไปใหฟงกชนแสดงผล
การคนคาจากฟงกชน
จากหวขอทผานมาการเรยกใชงานฟงกชนสามารถสงผานคาไปใหฟงกชนประมวลผลเพยงอยางเดยว แตยงไมมการคนคาใดๆ จากฟงกชนทไดเรยกใชงาน ในภาษา PHP สามารถกระท าไดโดยใชค าสง return ตามดวยตวแปรหรอคาทตองการสงคน ตวอยางท 5.5 แสดงฟงกชนทมการคนคาจากฟงกชน ดงน (ชาญชย ศภอรรถกร, 2558: 72) ตวอยางท 5.5 การสรางฟงกชนทมการคนคากลบไปยงต าแหนงทเรยกใชฟงกชน
< ?php
/ / Defining function
function getSum($num1, $num2){
$total = $num1 + $num2;
return $total;
}
/ / Calling Function and Printing returned value
echo getSum(5, 10); / / Outputs: 15
?>
จากตวอยางท 5.5 โปรแกรมสรางฟงกชน “getSum” โดยท าหนาทบวกตวเลข 2 จ านวนทเกบไวในตวแปร “num1” และ “num2” แลวเกบผลบวกนนไวในตวแปร “total” พรอมสงคานนกลบคนไปยงต าแหนงทมการเรยกใชงาน สนสดการประกาศฟงกชน จากนนโปรแกรมเรยกใชงานฟงกชนแบบมการสงผานคา 2 คาตามทฟงกชนตองการคอ 5 และ 10 ไปใหฟงกชน เมอฟงกชนสงคากลบคนมาจะน าคานนไปแสดงผลออกทางเวบเบราวเซอรดวยค าสง echo
การสงผานคาใหแกฟงกชน
ในการสงผานคาของตวแปรใหกบฟงกชน มวธการสงผานคาอย 2 รปแบบคอ (ชาญชย ศภอรรถกร, 2558: 73-74; สมศกด โชคชยชตกล, 2550: 126-127) 1 การสงผานดวยคา (Pass by value) เปนการสงคาผานตวแปรทเรยกวาพารามเตอรเขาไปในฟงกชน สวนภายในฟงกชนจะมตวแปรรบทเรยกวา อารกวเมนท รอรบคาทสงมาตอนเรยกใชงนฟงกชน หากภายในฟงกชนมการเปลยนแปลงคาของตวแปรดงกลาว จะไมสงผลตอคาของตวแปรทอยนอกฟงกชน ซงถงวาเปนตวแปรคนละตวกน ดงแสดงไวในตวอยางท 5.6
การคนคา
99
ตวอยางท 5.6 การสงผานดวยคา (Pass by value)
< ?php
/ * Defining a function that addition a number
by itself and return the new value * /
function selfAddition($number){ $number += $number;
return $number;
}
$mynum = 10;
echo $mynum; / / Outputs: 10
selfAddition($mynum);
echo $mynum; / / Outputs: 10
?>
จากตวอยางขางตน โปรแกรมสรางฟงกชน “selfAddition” มหนาทบวกตวเลขทเกบอยในตวแปร “number” ทมการสงผานดวยคา แลวเกบผลรวมไวในตวแปร “number” เหมอนเดม พรอมสงคานนกลบคนไปยงต าแหนงทมการเรยกใชงาน สนสดการประกาศฟงกชน จากนนโปรแกรมก าหนดคาตวแปร “mynum” เปน 10 น าคาตวแปรแสดงผลออกทางหนาจอดวยค าสง echo มการเรยกใชงานฟงกชนแบบมการสงผานตวแปรพารามเตอร “mynum” วธการสงผานดวยคาจะท าใหตวแปร “mynum” ทอยนอกไฟลชนกบตวแปร “number” ทอยในฟงกชนเปนคนละตวแปร เมอมการเปลยนแปลงคาตวแปร “number” จากค าสง “$number += $number;” ทภายในฟงกชนจะไมสงผลใหตวแปร “mynum” ทอยนอกฟงกชนมคาเปลยนไป ดงนนเมอแสดงคาทเกบในตวแปร “mynum” ซงยงคงมเปนเปน 10 เทาเดมตามทไดก าหนดใหกอนเรยกใชงานฟงกชน
2 การสงผานดวยการอางอง (Pass by reference) เปนการสงคาผานตวแปรทเรยกวาพารามเตอรเขาไปในฟงกชน หากภายในฟงกชนมการเปลยนแปลงคาของตวแปรดงกลาว จะสงผลใหคาของตวแปรทอยนอกฟงกชนเปลยนไปดวย ซงเราจะถงวาเปนตวแปรตวเดยวกน เมอตองการสงผานดวยวธนจะน าสญลกษณ & มาวางไวหนาตวแปรทเรยกวาอารกวเมนต ซงเปนตวแปรรบของฟงกชน ดงตวอยางท 5.7
ตวอยางท 5.7 การสงผานดวยการอางอง (Pass by reference)
< ?php
/ * Defining a function that multiply a number
by itself and return the new value * /
function selfMultiply(&$number){ $number * = $number;
return $number;
สงผานดวยการอางอง ผานตวแปรอารกวเมนต หรอตวแปรรบ
สงผานดวยคา ผานตวแปรอารกวเมนต
ตวแปรพารามเตอร
100 }
$mynum = 5;
echo $mynum; / / Outputs: 5
/ / Calling Function
selfMultiply($mynum);
echo $mynum; / / Outputs: 25
?>
จากตวอยางขางตน โปรแกรมสรางฟงกชน “selfMultiply” มหนาทคณตวเลขทเกบอยในตวแปร “number” ทสงผานดวยการอางอง แลวเกบผลคณไวในตวแปร “number” เหมอนเดม พรอมสงคานนกลบคนไปยงต าแหนงทมการเรยกใชงาน สนสดการประกาศฟงกชน จากนนโปรแกรมก าหนดคาตวแปร “mynum” เปน 5 น าคาตวแปรแสดงผลออกทางหนาจอดวยค าสง echo มการเรยกใชงานฟงกชนแบบมการสงคาผานตวแปรพารามเตอร “mynum” จากการสงผานดวยวธอางองสงผลใหตวแปรทอยนอกฟงกชนเปนตวเดยวกนกบทอยภายในฟงกชน ดงนนตวแปร “mynum” กบตวแปร “number” เปนตวเดยวกน เมอมการเปลยนแปลงคาตวแปร “number” จากค าสง “$number *= $number;” ทอยภายในฟงกชนจะสงผลใหตวแปร “mynum” ทอยนอกฟงกชนเปลยนตามไปดวย ดงนนเมอแสดงคาทเกบในตวแปร “mynum” จงมคาเดยวกนกบคาในตวแปร “number” คอ 25
ขอบเขตการเรยกใชตวแปร ในการประกาศตวแปรไวใชงาน ถาประกาศไวภายนอกฟงกชนจะไมสามารถน ามาใชภายในฟงกชนได เชนเดยวกบการประกาศตวแปรไวภายในฟงกชนกไมสามารถน ามาใชงานภายนอกฟงกชนได สวนตวแปรทเปนคาคงท หรอทถกประกาศโดยฟงกชน define() จะมคณสมบตเปนโกลบอล คอสามารถเรยกใชงานจากภายนอกหรอภายในฟงกชนได ซงในภาษา PHP แบงประเภทของตวแปรออกเปน 2 ประเภทคอ (ชาญชย ศภอรรถกร, 2558: 73-74) 1 ตวแปรโลคอล (Local Variable) เปนตวแปรทมขอบเขตการใชงานอยภายในฟงกชนเทานน ถามการประกาศตวแปรชอเดยวกนไวทงภายในและภายนอกฟงกชน ซงจะถอวาเปนตวแปรคนละตวกน สามารถพจารณาจากตวอยางท 5.8 และ 5.9 ดงน ตวอยางท 5.8 การประกาศใชงานตวแปรแบบโลคอลไวภายในฟงกชน (TutorialRepublic, 2016)
< ?php
/ / Defining function
function test(){
$greet = "Hello World!";
echo $greet;
}
test(); / / Outputs: Hello World!
echo $greet; / / Generate undefined variable error
?>
ตวแปรพารามเตอร หรอตวแปรสง
101 จากตวอยางขางตน โปรแกรมไดประกาศฟงกชนชอ “test” และภายในฟงกชนไดประกาศ
ตวแปรชอ “greet” มคาเปน “Hello World!” แลวแสดงขอความดงกลาวออกทางหนาจอดวยค าสง echo สนสดการท างานของฟงกชน ภายนอกฟงกชนมการเรยกใชงานฟงกชนโดยระบชอฟงกชน “test();” จากนนแสดงขอความดงกลาวออกทางหนาจอดวยค าสง echo อกครง แตพบขอผดพลาดในการประมวลผล คอไมพบการก าหนดคาใหตวแปร “greet” หรอไมสามารถเรยกใชงานตวแปร “greet” นอกฟงกชนได เนองจากไดประกาศไวภายในฟงกชน ตวอยางท 5.9 การประกาศใชงานตวแปรแบบโลคอลไวภายอนกฟงกชน (TutorialRepublic, 2016)
< ?php
$greet = "Hello World!";
/ / Defining function
function test(){
echo $greet;
}
test(); / / Generate undefined variable error
echo $greet; / / Outputs: Hello World!
?>
จากตวอยางขางตน โปรแกรมไดประกาศตวแปรชอ “greet” และก าหนดใหเปน “Hello World!” จากนนประกาศฟงกชนชอ “test” มหนาทแสดงขอความทเปนในตวแปร “greet” ดวยค าสง echo จบการท างานของฟงกชน เมอประกาศฟงกชนแลวโปรแกรมท าการเรยกใชงานฟงกชนดวยการระบชอฟงกชนเปน “test()” แตพบขอผดพลาดขน เนองจากภายในฟงกชนน าตวแปร “greet” ทประกาศไวภายนอกฟงกชนไปใชงาน จากนนแสดงขอความทเกบในตวแปร “greet” ออกทางหนาจอดวยค าสง echo ซงสามารถประมวลผลไดเนองจากเปนตวแปรทประกาศไวนอกฟงกชน
2 ตวแปรโกลบอล (Global Variable) เปนตวแปรประเภททสามารถเรยกใชงานไดทงโปรแกรม หรอทงภายในและนอกฟงกชน เมอภายในฟงกชนตองการใชคาของตวแปรทอยนอกฟงกชน นอกจากการสงผานคาแลวยงสามารถใชการประกาศตวแปรแบบโกลบอลได โดยใชค าสง global วางไวหนาชอตวแปรนน สามารถพจารณาจากตวอยางท 5.10 ดงน ตวอยางท 5.10 การประกาศใชงานตวแปรแบบโกลบอล (TutorialRepublic, 2016)
< ?php
$greet = "Hello World!";
/ / Defining function
function test(){
global $greet;
echo $greet; }
test(); / / Outpus: Hello World!
echo $greet; / / Outpus: Hello World!
/ / Assign a new value to variable
$greet = "Goodbye";
102
test(); / / Outputs: Goodbye
echo $greet; / / Outputs: Goodbye ?>
จากตวอยางขางตน โปรแกรมไดประกาศตวแปรชอ “greet” และก าหนดใหมคาเปน “Hello World!” จากนนประกาศฟงกชนชอ “test” ภายในฟงกชนตองการใชงานตวแปร “greet” ทอยนอกฟงกชน จงตองประกาศตวแปรแบบโกลบอลดวยใชค าสง “global” วางไวหนาตวแปร “greet” จากนนแสดงขอความทเปนในตวแปร “greet” ดวยค าสง echo จบการท างานของฟงกชน โปรแกรมเรยกใชงานฟงกชนทไดประกาศไวดวยการระบชอฟงกชนเปน “test()” ซงสามารถประมวลผลได สวนค าสง “echo $greet” กสามารถประมวลไดเชนกน นนคอใหแสดงขอความทเกบในตวแปร “greet” ออกทางหนาจอ จากนนโปรแกรมมการก าหนดคาใหมใหกบตวแปร “greet” เปนคา “Goodbye” เรยกใชงานฟงกชนเหมอนเดม โปรแกรมสามารถประมวลผลได โดยจะแสดงขอความใหมทเกบในตวแปร “greet” ออกทางหนาจอตามล าดบ
การน าเขาสครปตจากไฟลอนมาใชงาน
ในภาษา PHP สามารถเขยนสครปตไวคนละไฟล เมอตองการใชงานไฟลไหนสามารถเรยกเขามาใชงานในไฟลหลกได ซงการน าเขาสครปตจากไฟลอนเขามาใชงานจะใชค าสง include มรปแบบดงน (พรวนา รตนชโชค, 2557: 96-97)
ส าหรบตวอยางการน าไปใชงานไดแสดงไวในตวอยางท 5.11 และ 5.12 ดงน ตวอยางท 5.11 โปรแกรมส าหรบก าหนดคาใหกบตวแปร ตงชอไฟลเปน “vars.php”
< ?php
$color= “red” ; $car= “jeep cherokee”;
?>
จากตวอยางขางตนเปนการเขยนโปรแกรมประกาศตวแปร 2 ตวคอ “color” มคาเปน
“red” และตวแปร “car” มคาเปน “jeep cherokee”
ตวอยางท 5 .12 โปรแกรมใชค าส ง ในการน าไฟล “vars.php” เขามาใช ในโปรแกรมช อ test_include.php
< html>
< body>
< ?php
include 'vars.php';
echo "I have a $color $car";
?>
include(“ชอไฟล”);
รปแบบ
น าตวแปรไปใชงานตอ
103 < /body>
< /html>
จากตวอยางขางตนโปรแกรมจะน าไฟล vars.php มาใชงาน จากนนจะแสดงขอความ “I have a rea jeep cherokee” ออกทางเวบเบราวเซอรโดยเขยนเฉพาะสครปตภาษา PHP แทรกไวในภาษา HTML
การเรยกใชฟงกชนทมอยใน PHP
จากหวขอทผานมาเราไดเรยนรการสรางฟงกชนไวใชงาน แตเพอความสะดวกโปรแกรมภาษา PHP ไดจดเตรยมฟงกชนส าเรจรปไวใหใชงานอยหลายฟงกชน จากบททผานมาจะพบฟงกชนและการเรยนใชงานอยหลายฟงกชน เชน echo(), print(), var_dump() และ define() เปนตน ดงนนจงขอกลาวเฉพาะฟงกชนทจ าเปนและใชงานบอยเพมเตมจากทไดเรยนรไปบางแลว ดงน (พรวนา รตนชโชค, 2557: 61-88) 1 ฟงกชน isset() ใชเพอตรวจสอบตวแปรวามการก าหนดคาใหตวแปรหรอไม ฟงกชนนจะสงผลการเรยกใชงานเปนจรงหรอเทจ โดยถามการก าหนดคาใหแลวจะสงผลลพธเปนจรง กรณอนจะสงคากลบเปนเทจ มกใชงานรวมกบค าสงเงอนไข เชน ค าสง if เปนตน มรปแบบและตวอยางการเรยกใชงานดงน
ตวอยางท 5.13 การเรยกใชงานฟงกชน isset()
< ?php
$greet = "Hello World!";
if(isset($greet))
{ echo $greet; }
else
{ echo “The variable is not null”; }
?>
จากตวอยางขางตนแสดงการประกาศและก าหนดคาใหตวแปร “greet” มคาเปน “Hello World!” แลวใชค าสง if() รวมกบฟงกชน isset() เพอตรวจสอบการก าหนดใหกบตวแปร “greet” ถาก าหนดคาแลวเงอนไขจะเปนจรงใหแสดงคาตวแปร “greet” ออกทางเวบเบราวเซอร ถายงไมก าหนดคาเงอนไขจะเปนเทจใหแสดงขอความ “The variable is not null” ออกทางเวบเบราวเซอร 2 ฟงกชน unset() ใชยกเลกคาของตวแปร หรอท าลายตวแปรทไมใชงานแลว มรปแบบและตวอยางการเรยกใชงานดงน
isset($ตวแปร)
รปแบบ
unset($ตวแปร)
รปแบบ
104
ตวอยางท 5.14 การเรยกใชฟงกชน unset()
< ?php
$greet = "Hello World!";
echo $greet; / /Outputs is Hello World!
/ / Calling Function
unset($greet);
echo $greet; / /Outputs is Null
?>
จากตวอยางขางตน แสดงการประกาศ ก าหนดคา และแสดงคาตวแปร “greet” มคาเปน “Hello World!” จากนนเรยกใชงานฟงกชน unset() เพอยกเลกคาตวแปร เมอใชค าสง echo แสดงคาตวแปรอกครง จงแสดงคานลออกทางเวบเบราวเซอร 3 ฟงกชน gettype() ฟงกชนนใชตรวจสอบหาชนดของตวแปรวาเปนชนดใด เชน ตวเลขจ านวนเตม ตวเลขจดทศนยม หรอตวอกษร เปนตน มรปแบบและตวอยางการเรยกใชงานดงน
ตวอยางท 5.15 การเรยกใชฟงกชน gettype()
< ?php
$var1 = "Hello World!";
$var2= 50;
/ / Calling Function
echo $var1 . “ has ” . gettype($var1) . “ data type” ; echo “<br>”; echo $var2 . “ has ” . gettype($var2) . “ data type” ;
?>
จากตวอยางขางตน แสดงการประกาศ และก าหนดคาใหกบตวแปร “var1” เปน “Hello World!” และตวแปร “var2” เปน 50 จากนนเรยกใชงานฟงกชน gettype() เพอตรวจสอบหาชนดของตวแปร พรอมแสดงคาและชนดของตวแปรออกทางหนาจอ
4 ฟงกชน settype() เปนฟงกชนทใชเปลยนชนดขอมลของตวแปร ซงในบางครงจ าเปนตองมการเปลยนชนดขอมลเพอใหสามารถท างานได เชน เปลยนชนดขอมลจากขอความ เปนตวเลขเพอใชในการค านวณ เปนตน มรปแบบและตวอยางการเรยกใชงานดงน
gettype($ตวแปร)
รปแบบ
settype($ตวแปร, “ชนดของตวแปรทตองการเปลยน”)
รปแบบ
105
ตวอยางท 5.16 การเรยกใชฟงกชน settype()
< ?php
$data = 42.3;
echo $data; / / outputs is 42.3
echo “<br>”; / / Calling Function
settype($data,integer);
echo $data; / / outputs is 42
?>
จากตวอยางขางตนแสดงการประกาศ และก าหนดคาใหกบตวแปร “data” เปน 42.3 แสดงคาตวแปร (echo) และขนบรรทดใหม (<br>) จากนนเรยกใชงานฟงกชน settype() เพอเปลยนชนดของตวแปรจากตวเลขจ านวนทศนยมเปนตวเลขจ านวนเตม พรอมแสดงคาตวแปร “data” ซงจะมคาเปลยนไปเปน 42
5 ฟงกชน date() เรยกใชฟงกชนนเพอตองการใหแสดงวนทและเวลาปจจบนออกมาตามรหสรปแบบทก าหนด เชน d m y เปนตน ซงรหสรปแบบการแสดงผลวนท และเวลาไดแสดงไวในตารางท 5.1 สวนรปแบบและตวอยางการเรยกใชงานดงน
ตารางท 5.1 รหสรปแบบการแสดงผลวนท และเวลา (php.net, 2016)
รหส รายละเอยด ตวอยางคาทสงกลบ
วน
d วนทแบบเลข 2 หลก 01 ถง 31
D ชอวนภาษาองกฤษแบบยอ Mon ถง Sun
j วนทแบบไมมเลข 0 น าหนา 1 ถง 31
l ชอวนภาษาองกฤษแบบเตม Sunday ถง Saturday
เดอน
F ชอเดอนภาษาองกฤษแบบเตม January ถง December
m เดอนแบบตวเลข 2 หลก 01 ถง 12
date(รหสรปแบบการแสดงผล)
รปแบบ
106
รหส รายละเอยด ตวอยางคาทสงกลบ
M ชอเดอนภาษาองกฤษแบบยอ Jan ถง Dec
n เดอนแบบไมมเลข 0 น าหนา 1 ถง 12
t จ านวนวนของแตละเดอน 28 ถง 31
ป
Y ป ค.ศ. 4 หลก เชน 1999 หรอ 2003
y ป ค.ศ. 2 หลก เชน 99 หรอ 03
เวลา
a แสดงค าวา am หรอ pm ตวพมพเลก am หรอ pm
A แสดงค าวา AM หรอ PM ตวพมพใหญ AM หรอ PM
g ชวโมงเปนตวเลขแบบไมมเลข 0 น าหนา 1 ถง 12
G ชวโมงเปนตวเลขแบบไมมเลข 0 น าหนา 0 ถง 23
h ชวโมงเปนตวเลข 2 หลก 00 ถง 12
H ชวโมงเปนตวเลข 2 หลก 00 ถ ง23
i นาทเปนตวเลข 2 หลก 00 ถง 59
s วนาทเปนตวเลข 2 หลก 00 ถง 59
ตวอยางท 5.17 การเรยกใชฟงกชน date()
< ?php
echo date("Y-m-d H:i:s"); / /Outputs is 2016-06-16 17:24:31
?>
จากตวอยางขางตนแสดงการเรยกใชฟงกชน date() เพอแสดงวนทปจจบนตามรปแบบทก าหนด ผลลพธจากการประมวลผลจะแสดงวนทปจจบน เชน 2016-06-16 17:24:31
107 6 ฟงกชน strtoupper() เปนฟงกชนเปลยนขอความตวอกษาภาษาองกฤษจากตวพมพเลก
เปนพมพใหญ ซงตวอกษาภาษาไทยไมสามารถใชงานได มรปแบบและตวอยางการเรยกใชงานดงน
ตวอยางท 5.18 การเรยกใชฟงกชน strtoupper()
< ?php
$str = "Mary Had A Little Lamb and She LOVED I t So";
$str = strtoupper($str);
echo $str; / / Prints “MARY HAD A LITTLE LAMB AND SHE LOVED IT SO”
?>
จากตวอยางขางตนแสดงการประกาศ และก าหนดคาใหตวแปร “str” มคาเปน “Mary Had A Little Lamb and She LOVED It So” จากนนเรยกใชฟงกฟง strtoupper() เพอแปลงขอความทเกบในตวแปร “str” เปนตวพมพใหญทงหมด เมอประมวลผลโปรแกรมจะแสดงขอความ “MARY HAD A LITTLE LAMB AND SHE LOVED IT SO” ออกทางเวบเบราวเซอร
7 ฟงกชน strtolower() เปนฟงกชนเปลยนขอความตวอกษาภาษาองกฤษจากตวพมพใหญ เปนพมพเลก ซงตวอกษาภาษาไทยไมสามารถใชงานได มรปแบบและตวอยางการเรยกใชงานดงน
ตวอยางท 5.19 การเรยกใชฟงกชน strtolower()
< ?php
$str = "Mary Had A Little Lamb and She LOVED I t So";
$str = strtolower($str);
echo $str; / / Prints “mary had a litt le lamb and she loved it so”
?>
จากตวอยางขางตนแสดงการประกาศ และก าหนดคาใหตวแปร “str” มคาเปน “Mary Had A Little Lamb and She LOVED It So” จากนนเรยกใชฟงกฟง strtolower() เพอแปลงขอความทเกบในตวแปร “str” เปนตวพมพเลกทงหมด เมอประมวลผลโปรแกรมจะแสดงขอความ “mary had a little lamb and she loved it so” ออกทางเวบเบราวเซอร
strtoupper(ขอความ)
รปแบบ
strtolower(ขอความ)
รปแบบ
108 8 ฟงกชน substr() ใชส าหรบตดค าในชวงขอความทตองการ โดยระบต าแหนงแรกของ
ขอความทตองการตดค า และจ านวนตวอกษรทตองการตด โดยภาษา PHP จะก าหนดต าแหนงเรมตนของตวอกษรตวแรกของขอความเปนต าแหนงท 0 มรปแบบและตวอยางการเรยกใชงานดงน
ตวอยางท 5.20 การเรยกใชฟงกชน substr()
< ?php
echo substr('abcdef', 1); / / bcdef
echo substr('abcdef', 1, 3); / / bcd
echo substr('abcdef', 0, 4); / / abcd
echo substr('abcdef', 0, 8); / / abcdef
echo substr('abcdef', -1, 1); / / f
?>
จากตวอยางขางตนแสดงการเรยกใชฟงกชน substr() เพอตดค าทตองการและแสดงผลออกทางเวบเบราวเซอร 9 ฟงกชน trim() ใชตดชองวางทอยขางหนาและหลงของขอความ แตไมสามารถตดชองวางระหวางขอความได มรปแบบและตวอยางการเรยกใชงานดงน
substr(ขอความ,ต าแหนงเรมตนของค าทตองการ,จ านวนตวอกษรทตองการ)
รปแบบ
trim(ขอความหรอตวแปร)
รปแบบ
ขอความทจะตดค า
ต าแหนงเรมตนเปน 1 คอเรมท b ไมระบจ านวนตวอกษรทตองการจะหมายถงใหตดค าถงต าแหนงสดทายของขอความ จะได bcdef
ต าแหนงเรมตนเปน 1 คอเรมท b ระบจ านวนตวอกษรทตองการ 3 ตวอกษร จะได bcd
ต าแหนงเรมตนเปน 0 คอเรมท a ระบจ านวนตวอกษรทตองการ 4 ตวอกษร จะได abcd
ต าแหนงเรมตนเปน 0 คอเรมท a ระบจ านวนตวอกษรทตองการ 8 ตวอกษร จะได abcdef
ต าแหนงเรมตนเปน -1 จะเปนการระบจากขวามาซาย นนคอเรมท f ระบจ านวนตวอกษรทตองการ 1 ตวอกษร จะได f
109 ตวอยางท 5.21 การเรยกใชฟงกชน trim()
< ?php
$text = "\ t\ tThese are a few words\ t\ t\ t";
var_dump($text);
echo "< p> ";
/ /Calling Functions
$trimmed = trim($text);
var_dump($trimmed);
?>
จากตวอยางขางตนแสดงการประกาศและก าหนดคาตวแปร “text” มคาเปน “\t\tThese are a few words\t\t\t” แลวเรยกใชฟงกชน var_dump ในการแสดงคาและชนดของขอมลของตวแปร “text” จากนนเรยกใชฟงกชน trim() ตวชองวางตวแปร “text” แลวน าไปเกบไวในตวแปร “trimmed” แลวเรยกใชฟงกชน var_dump ในการแสดงคาและชนดของขอมลของตวแปร “trimmed”
10 ฟงกชน explode() ใชเพอแยกขอความออกเปนสวนๆ โดยจะตองระบสญลกษณทใชแยกขอความได เชน ชองวาง (“ ”) หรอคอมมา (,) เปนตน สวนผลลพธทไดจะเกบไวในตวแปรชนดอารเรย มรปแบบและตวอยางการเรยกใชงานดงน
ตวอยางท 5.22 การเรยกใชฟงกชน explode()
< ?php
$pizza = "piece1 piece2 piece3";
$pieces = explode(" ", $pizza);
echo $pieces[0] ; / / piece1
echo $pieces[1] ; / / piece2
echo $pieces[2] ; / / piece3
?>
จากตวอยางขางตนแสดงการประกาศและก าหนดคาใหตวแปร “pizza” มคาเปน “piece1 piece2 piece3” จากนนเรยกใชฟกงชน explode เพอแยกขอความออกจากกนโดยใชชองวาง ซงผลลพธทไดจะเกบไวในตวแปรอารเรย “pieces” แลวใหแสดงคาทเกบในตวแปรอารเรยออกทางเวบเบราวเซอร
explode(“สญลกษณทใชแยกขอความ”,ขอความ)
รปแบบ
\t หมายถง ชองวาง 1 ชอง
ผลลพธ
แยกขอความดวยชองวาง (“ ”)
110 11 ฟงกชน strlen() ฟงกชนนใชหาความยาวของขอความวามกตวอกษร มรปแบบและตวอยางการเรยกใชงานดงน
ตวอยางท 5.23 การเรยกใชฟงกชน strlen()
< ?php
$str = 'abcdef';
echo strlen($str); / / 6
?>
จากตวอยางขางตนแสดงการประกาศและก าหนดคาใหตวแปร “str” มคาเปน “abcdef” จากนนเรยกใชฟงกชน strlen เพอหาความยาวของตวอกษรทเกบในตวแปร “str” แลวใหแสดงความยาวของตวอกษรในตวแปร “str” ออกทางเวบเบราวเซอร คาทแสดงจะเปน “6” 12 ฟงกชน str_replace() เปนฟงกชนใชส าหรบการแทนทค า โดยก าหนดขอความทตองการแทนท และค าทตองการใชแสดงแทนท เชน การแทนทค าทไมสภาพดวย “zzz” เปนตน มรปแบบและตวอยางการเรยกใชงานดงน
ตวอยางท 5.24 การเรยกใชฟงกชน str_replace()
< ?php
echo str_replace(“ubon”, “udon”, “ubonthani”);
?>
จากตวอยางขางตนแสดงการเรยกใชฟงกชน str_replace โดยก าหนด “ubon” เปนขอความทตองการแทนท “udon” ค าทใชแทนท สวน “ubonthani” คอขอความทจะไปแทนท แลว แสดงผลลพธทไดคอ “udonthani” ออกทางเวบเบราวเซอร 13 ฟงกชน floor() ส าหรบฟงกชนจะใชในการปดเศษทศนยมลงเสมอไมสนใจหลกทางคณตศาสตรในการปดเศษจดทศนยม มรปแบบและตวอยางการเรยกใชงานดงน
strlen(ขอความ)
รปแบบ
str_replace(ขอความทตองการแทนท,ค าทใชแทนท,ขอความ)
รปแบบ
floor(ตวเลขทศนยม)
รปแบบ
111 ตวอยางท 5.25 การเรยกใชฟงกชน floor()
< ?php
echo floor(4.3); / / 4
echo floor(9.999); / / 9
echo floor(-3.14); / / -4
?>
จากตวอยางขางตนแสดงการเรยกใชฟงกชน floor ในการปดเศษทศนยมลงเสมอของตวเลข 4.3 จะได 4 ตวเลข 9.999 จะได 9 และตวเลข -3.14 จะได -4 พรอมแสดงคาออกทางเวบเบราวเซอร 14 ฟงกชน ceil() ส าหรบฟงกชนจะใชในการปดเศษทศนยมขนเสมอไมสนใจหลกทางคณตศาสตรในการปดเศษจดทศนยม มรปแบบและตวอยางการเรยกใชงานดงน
ตวอยางท 5.26 การเรยกใชฟงกชน ceil()
< ?php
echo ceil(4.3); / / 5
echo ceil(9.999); / / 10
echo ceil(-3.14); / / -3
?>
จากตวอยางขางตนแสดงการเรยกใชฟงกชน ceil ในการปดเศษทศนยมขนเสมอของตวเลข 4.3 จะได 5 ตวเลข 9.999 จะได 10 และตวเลข -3.14 จะได -3 พรอมแสดงคาออกทางเวบเบราวเซอร
15 ฟงกชน round() เปนฟงกชนทใชส าหรบการปดเศษจดทศนยมตามหลกคณตศาสตร คอหากมคามากกวาหรอเทากบ 0.5 จะปดคาขน แตถามคานอยกวา 0.5 จะปดลงหรอทง และสามารถก าหนดจ านวนหลกของตวเลขทศนยมได มรปแบบและตวอยางการเรยกใชงานดงน
ตวอยางท 5.27 การเรยกใชฟงกชน round()
< ?php
echo round(3.49); // output is 3
?>
ceil(ตวเลขทศนยม)
รปแบบ
round(ตวเลขทศนยม,ต าแหนงทศนยม)
รปแบบ
112 จากตวอยางขางตนแสดงการเรยกใชฟงกชน round เพอปดเศษจดทศนยมตามหลกคณตศาสตรของตวเลข 3.49 จะไดผลลพธคอ 3 พรอมแสดงคาออกทางเวบเบราวเซอร 16 ฟงกชน rand() เปนฟงกชนส าหรบสมตวเลขทออกมาเปนจ านวนเตม โดยการเรยกใชฟงกชนจะตองสงคาเรมตนหรอตวเลขต าสดกบคาสนสดหรอตวเลขสงสดในการสมไปใหฟงกชนประมวลผลดวย มรปแบบและตวอยางการเรยกใชงานดงน
ตวอยางท 5.28 การเรยกใชฟงกชน rand()
< ?php
echo rand(1,10); / / Outputs is number between 1 and 10
?>
จากตวอยางขางตนแสดงการเรยกใชฟงกชน rand สมแสดงตวเลขทอยระหวาง 1 ถง 10 ออกทางหนาเวบเบราวเซอร 17 ฟงกชน sort() หนาทในการจดเรยงล าดบขอมลในตวแปรชนดอารเรย มรปแบบและตวอยางเรยกใชงานดงน
ตวอยางท 5.29 การเรยกใชฟงกชน sort()
< ?php
$fruits = array("lemon", "orange", "banana", "apple");
sort($fruits);
foreach ($fruits as $key = > $val) {
echo "fruits[ " . $key . "] = " . $val . "< br> ";
}
?>
จากตวอยางขางตนแสดงการประกาศ และก าหนดตวแปร “fruits” มขอมลเปนอารเรย
จากนนเรยกใชฟงกชน sort() เพอเรยงล าดบขอมล แลวใชค าสง foreach เพอวนรอบแสดงขอมลของตวแปร “fruits” ทมเรยงล าดบออกทางหนาเวบเบราวเซอร
sort($ตวแปรอารเรย)
รปแบบ
rand(ตวเลขต าสด,ตวเลขสงสด)
รปแบบ
113 18 ฟงกชน is_number() ใชตรวจสอบคาในตวแปรคาเปนตวเลขหรอไม ฟงกชนนจะสงคา
กลบเปนจรงหรอเทจ นนคอเปนจรงเมอคาของตวแปรมชนดขอมลเปนตวเลข มรปแบบและตวอยางเรยกใชงานดงน
ตวอยางท 5.29 การเรยกใชฟงกชน is_number()
< ?php
if(is_numeric("guru"))
{
echo "true";
}
else
{
echo "false";
}
?>
จากตวอยางขางตนแสดงการใชค าสง if() รวมกบฟงกชน is_number() เพอตรวจสอบคา “guru” เปนตวเลขหรอไม ถาเงอนไขเปนจรงจะแสดงขอความ “true” และถาเปนเทจจะแสดงขอความ “false” ออกทางเวบเบราวเซอร ผลลพธจากการประมวลผลโปรแกรมจะแสดงขอความ “false” เนองจากไมใชตวเลข
ตวอยางท 5.30 การเรยกใชฟงกชน is_number()
< ?php
if(is_numeric (123))
{
echo "true";
}
else
{
echo "false";
}
?>
จากตวอยางขางตนแสดงการใชค าสง if() รวมกบฟงกชน is_number() เพอตรวจสอบคา 123 เปนตวเลขหรอไม ถาเงอนไขเปนจรงจะแสดงขอความ “true” และถาเปนเทจจะแสดงขอความ “false” ออกทางเวบเบราวเซอร ผลลพธจากการประมวลผลโปรแกรมจะแสดงขอความ “true” เนองจากเปนตวเลข
is_number($ตวแปรหรอคาขอมล)
รปแบบ
114
สรป
ฟงกชนหมายถงโปรแกรมยอยทเขยนขนมาเพอท างานอยางใดอยางหนงทมการท างานบอยครง ในภาษา PHP มฟงกชน 2 ประเภทคอ ฟงกชนทผใชงานสรางขนมาเอง ซงในการสรางฟงกชนขนมาใชเอง และฟงกชนทมอยในภาษา PHP อยแลวสรางขนมาใหใชงานไดเลย เชน echo,
print, var_dump(), trim() และ date() เปนตน การสรางฟงกชนสามารถท าไดโดยประกาศฟงกชนและเรยกใชงานฟงกชน ซงการเรยนใชงานม 2 วธคอ แบบไมมการสงผานคา และแบบมการสงผานคา สวนฟงกชนทเรยกใชงานจะมการคนคาไปยงต าแหนงทเรยกใชงาน หรอไมมการคนคากได การสงผานคาใหแกฟงกชนม 2 รปแบบคอ การสงผานดวยคาทจะสงคาผานตวแปรทเรยกวาพารามเตอรเขาไปในฟงกชน สวนภายในฟงกชนจะมตวแปรทเรยกวา อารกวเมนท รอรบคาทสงมาตอนเรยกใชงานฟงกชน อกรปแบบคอ การสงผานดวยการอางองทจะสงคาผานตวแปรเขาไปในฟงกชน หากภายในฟงกชนมการเปลยนแปลงคาตวแปรนน จะท าใหคาตวแปรทอยนอกฟงกชนเปลยนไปดวย ขอบเขตการเรยกใชตวแปรมทงทเปนตวแปรโลคอลทมขอบเขตการเรยกใชอยภายในฟงกชน และตวแปรโกลบอลมขอบเขตการเรยกใชเปนทงโปรแกรม
115
แบบฝกหด
1. จงบอกความหมายของฟงกชน พรอมยกตวอยางประกอบ
2. ประเภทของการสงผานคาใหแกฟงกชนมกประเภท จงอธบาย
3. ขอบเขตการเรยกใชตวแปรของฟงกชนคออะไร จงอธบาย
4. จงเขยนฟงกชนเพอหาพนทสเหลยม พรอมกบเรยกใชงานฟงกชนดงกลาว การแสดงผลลพธทไดใหก าหนดตามความเหมาะสม (2101_sq.php)
พนท = กวาง x ยาว
5. จงเขยนฟงกชนเพอหาพนทสามเหลยม พรอมกบเรยกใชงานฟงกชนดงกลาว การแสดงผลลพธทไดใหก าหนดตามความเหมาะสม (2101_rec.php)
พนท = 0.5 x ฐาน x สง 6. จงสรางเมนเพอเรยกใชโปรแกรมทสรางทงหมดในชนเรยน โดยน าหลกการท างานของ PHP
Include File มาใช (ชอไฟลเปน รหสนศ.php และ menu.php) เชน
4.1 ไฟล 2101.php มรายละเอยดทตองแสดง (ปรบแตงใหสวยงานและเหมาะสม) ดงน
ผลงานการพฒนาโปรแกรม
วชา...................... ประจ าปการศกษา 2/2559
รหสนกศกษา
ชอ-นามสกล
4.2 ไฟล menu.php เพอท าการเชอมโยงไปยงไฟลกอนหนามรายละเอยดทตองแสดงดงน
โปรแกรมค านวณหาพนท 4 เหลยม
โปรแกรมค านวณหาพนท 3 เหลยม
116
เอกสารอางอง ชาญชย ศภอรรถกร. (2558). สรางเวบแอพพรเคชน PHP MySQL+AJAX jQuery ฉบบสมบรณ. กรงเทพฯ: รไววา. พรวนา รตนชโชค. (2557). การโปรแกรมบนเวลดไวดเวบ. [ม.ป.ท.]. สมศกด โชคชยชตกล. (2550). Insight PHP ฉบบสมบรณ. กรงเทพฯ: โปรวชน
Guru99. (2016). PHP Function: Numeric, Built in, String, Date, User Defined. 2016, May 10. [online], Available HTTP: https://www.guru99.com/functions-in-
php.html
Php. (2016). Function Reference. 2016, September 20. [online], Available HTTP:
http://php.net/manual/en/function.explode.php
Tutorial Republic. (2016). PHP Functions. 2016, September 20. [online], Available
HTTP: https://www.tutorialrepublic.com/php-tutorial/php-functions.php
Tutorialspoint. (2016). PHP – Functions. 2016, September 25. [online], Available
HTTP: https://www.tutorialspoint.com/php/php_functions.htm
แผนบรหารการสอนประจ าบทท 6
เนอหาประจ าบทท 6 การจดการไฟลและไดเรคทอรดวยภาษา PHP
ไฟลขอมล การเปดและปดไฟล การอานขอมลจากไฟล การเขยนขอมลลงไฟล การจดการไฟล การเปลยนชอไฟล การยายไฟล การลบไฟล การท าส าเนาไฟล การอพโหลดไฟล
ไดเรกทอร การเปดและปดไดเรกทอร การอานรายชอไฟลและไดเรกทอรยอยในไดเรกทอร การสรางไดเรกทอร การลบไดเรกทอร การเปลยนชอไดเรกทอร
วตถประสงคเชงพฤตกรรม
เมอศกษาบทเรยนนแลว ผเรยนมพฤตกรรมดงน 1. อธบายเกยวกบไฟลขอมล ไดเรกทอร 2. สามารถเขยนโปรแกรมจดการไดเรคทอร และไฟลขอมลตามแบบฝกหดประจ าบทไดอยางเหมาะสม
วธสอนและกจกรรมการเรยนการสอน
1. วธสอน
1.1 บรรยาย และสาธต 1.2 อภปราย คนควาเพมเตม 1.3 นกศกษาท าแบบฝกหด และผสอนตรวจแบบฝกหด 1.4 มอบหมายแบบฝกหดเปนการบานเพอทบทวนบทเรยน
118 2. กจกรรมการเรยนการสอน
สปดาห 12 (4 ชวโมง) 2.1 ผสอนอธบายและสาธตเนอหา เปดโอกาสใหผเรยนซกถามปญหาในหวขอทยง
ไมเขาใจ ใหผเรยนคนควาเพมเตมจากอนเตอรเนตและเอกสารประกอบการสอน อภปราย และสรปเนอหาสาระส าคญรวมกน
2.2 ผเรยนท าแบบฝกหดประจ าบทและตอบค าถามลงใน Google Classroom เพอใหผสอนตรวจ อธบายและชแจงค าตอบทถกตอง
สอการเรยนการสอน
1. เอกสารประกอบการสอนการเขยนโปรแกรมคอมพวเตอรเพองานสารสนเทศ 1 2. เครองคอมพวเตอร 3. PowerPoint เนอหาบทท 6 4. สอออนไลนชวยสอน : โปรแกรม Google Classroom
การวดผลและประเมนผล
1. การวดผล
สงเกตจากการตอบค าถาม ตรวจแบบฝกหด 2. การประเมนผล
ผเรยนสามารถตอบค าถามและท าแบบฝกหดไดถกตอง รอยละ 80
บทท 6 การจดการไฟลและไดเรคทอรดวยภาษา PHP
การจดเกบขอมลของระบบคอมพวเตอรจะอยในรปไฟลขอมล ในหนวยความจ า แตละหนวยความจ าจะมคาประจ าต าแหนงทเรยกวา แอดเดรส (address) หรอหมายเลขอางอง ซงถอวาเปนขอมลประเภทหนง ระบบคอมพวเตอรจะเกบแอดเดรสไวในตวแปรชนดพอยนเตอร (pointer) ทชไปยงต าแหนงทเกบขอมลจรงในหนวยความจ าและยงสามารถเปลยนแปลงต าแหนงชขอมลไดรวดเรวดวย สวนแหลงทเกบหลายๆ ไฟลขอมลไวดวยกนจะเรยกวา ไดเรกทอรหรอโฟลเดอร ซงจะเปนการจดกลมไฟลงานใหสะดวกตอการคนหา ส าหรบการจดการกบไดเรกทอรและไฟลขอมลดวยภาษา PHP นนมความยดหยนสง มฟงกชนในการจดการไฟลใหใชงานจ านวนมาก ซงในบางครงการเขยนโปรแกรมบางงานอาจไมตองการจดเกบขอมลลงในฐานขอมล จดเกบไวในไฟลขอมลกได เชน งานทตองเกบรายละเอยดการเขาใชงานเครองเซรฟเวอรลงในไฟลเพอตรวจสอบวามใครเขาใชงานบาง และเขามากระท าอะไรในเครองเซรฟเวอร เปนตน เนอหาทจะกลาวในบทนประกอบดวยการเปด การปด อานและเขยนขอมลในไฟล และจดการไฟล สวนการจดการกบไดเรกทอรมการกระท าดงน การเปด การปด การอานรายชอไฟลและไดเรกทอรยอยในไดเรกทอรหลก การสราง การลบ และการเปลยนชอไดเรกทอร
ไฟลขอมล ไฟลคอมพวเตอรเปนแหลงจดเกบขอมลในหนวยความจ าถาวรของระบบคอมพวเตอร ตวอยางหนวยความจ าถาวร เชน ฮารดดกส แผน DVD หรอ ไดรฟประเภท USB เปนตน ไฟลคอมพวเตอรแบงออกเปน 2 ชนดดงน (สมศกด โชคชยชตกล, 2550: 137-154; ชาญชย ศภอรรถกร,
2558: 93-99; Joyce Farrell, 2013: 258-259; W. Jason Gilmore, 2010: 229-250)
1. เทกซไฟล (Text files) เปนไฟลทเกบขอมลอกขระ รปภาพ หรอตารางทขอมลมรปแบบเปนรหส ASCII สามารถอาน สงพมพ แสดงออกทางหนาจอ และแกไขดวยโปรแกรมส าหรบจดการเอกสารทวไป เชน โปรแกรม Notepad หรอ MS Word เปนตน
2. ไบนารไฟล (Binary files) ไฟลประเภทนเครองคอมพวเตอรเทานนทสามารถอานได โดยสรางและประมวลผลขนตามลกษณะเฉพาะของแตละระบบงาน
ส าหรบฟงกชนทใชจดการไฟลในภาษา PHP มรายละเอยดดงตารางท 6.1 สวนรายละเอยดการน าไปใชจะกลาวในหวขอถดไป
120 ตารางท 6.1 ฟงกชนในภาษา PHP ส าหรบจดการไฟล
ฟงกชน หนาท
fopen() เปดไฟล
fclose() ปดไฟล
fgets() อานขอมลจากไฟลทละ 1 บรรทด
fgetc() อานขอมลจากไฟลทละตวอกษร
fread() อานขอมลจากไฟลทสามารถระบจ านวนความยาวหรอไบตทตองการได
fputs() เขยนขอมลลงสไฟล โดยสามารถก าหนดจ านวนตวอกษรทตองการเขยนได
fwrite() เขยนขอมลลงสไฟล
1 การเปดและปดไฟล
กอนจะด าเนนการใดๆ กบไฟลจะตองเปดไฟลกอนทกครง และหลกจากเปดไฟลและด าเนนการกบไฟลเรยบรอยแลวทกครงจะตองปดไฟลกอนจบโปรแกรม การเปดไฟลเปนการระบชอและพาธของไฟลทตองการเปด พรอมบอกวตถประสงคทเปดไฟลดวย ซงรายละเอยดเกยวกบวตถประสงคหรอวธการเปดไฟล (Mode) ไดแสดงไวในตารางท 6.2 สวนฟงกชนส าหรบการเปดไฟลคอ fopen() มรปแบบการใชงานดงน
ตารางท 6.2 วธการเปดไฟลในภาษา PHP
วธการเปดไฟล (Mode) รายละเอยด
r เปดไฟลทมอยแลว เพออานอยางเดยว ตวชจะเรมทต าแหนงเรมตนของไฟล
r+ เปดไฟลทมอยแลว เพออานและเขยนขอมลในไฟล ตวชจะเรมทต าแหนงเรมตนของไฟล
w เปดไฟลทมอยแลว เพอเขยนทบขอมลเดมของไฟลนน ตวชจะเรมทต าแหนงเรมตนของไฟล กรณทไมมไฟลนนอยในเครองคอมพวเตอร ระบบจะสรางไฟลขนมาใหม
fopen(พาธและชอไฟล,วธการเปดไฟล)
รปแบบ
121
วธการเปดไฟล (Mode) รายละเอยด
w+ เปดไฟลทมอยแลว เพออานและเขยนทบขอมลเดมของไฟลนน ตวชจะเรมทต าแหนงเรมตนของไฟล กรณทไมมไฟลนนอยในเครองคอมพวเตอร ระบบจะสรางไฟลขนมาใหม
a เปดไฟลทมอยแลว เพอเขยนขอมลตอทายไฟลนน ตวชจะเรมทต าแหนงสนสดของไฟล กรณทไมมไฟลนนอยในเครองคอมพวเตอร ระบบจะสรางไฟลขนมาใหม
a+ เปดไฟลทมอยแลว เพออานและเขยนขอมลตอทายไฟลนน ตวชจะเรมทต าแหนงสนสดของไฟล กรณทไมมไฟลนนอยในเครองคอมพวเตอร ระบบจะสรางไฟลขนมาใหม
เมอใชงานไฟลเรยบรอยกอนจบโปรแกรมใหปดไฟลทกครงดวยฟงกชน fclose() มรปแบบการใชงานดงน
ตวอยางท 6.1 การใชงานฟงกชน fopen() และ fclose()
< ?php
$fh = fopen(“my_settings.txt”, “w”); fclose($fh);
?>
จากชดค าสงขางตนเปนการเปดไฟลชอ “my_settings.txt” เพอเขยนขอมลทบลงไปในไฟลดงกลาว ฟงกชน fopen() จะสงคากลบมาแลวน าไปเกบไวในตวแปร fh ซงเปนหมายเลขอางองหรอต าแหนงทเกบไฟลในหนวยความจ า เมอเปดไฟลแลวทกครงกอนจบโปรแกรมใหปดไฟลดวยฟงกชน fclose() ตามหมายเลขอางองทเกบในตวแปร fh
fclose(หมายเลขอางองไฟล)
รปแบบ
ชอไฟลทตองการเปด
วตถประสงคทเปด
ตวแปรพอยนเตอร
122 ตวอยางท 6.2 การใชงานฟงกชน fopen() และ fclose() ทมการตรวจสอบไฟลกอนวามอยหรอไม (Tutorial Republic, 2016)
< ?php
$file = "data.txt";
/ / Check the existence of file
if(file_exists($file)){
/ / Open the file for reading
$handle = fopen($file, "r") or die("ERROR: Cannot open the file.");
/ * Some code to be executed * /
/ / Closing the file handle
fclose($handle);
} else{
echo "ERROR: File does not exist.";
}
?>
จากชดค าสงตวอยางท 6.2 ตองการเปดไฟลชอ “data.txt” ซงเกบชอไฟลไวในตวแปร file กอนเปดไฟลจะตรวจสอบวาไฟลดงกลาวมอยจรงหรอไมในระบบคอมพวเตอรดวยฟงกชน file_exists() ถามอยจรงใหเปดไฟลเพออานอยางเดยว ส าหรบฟงกชน fopen() จะสงหมายเลขอางองไฟลกลบมาใหโปรแกรมแลวน าคานนไปเกบไวในตวแปร handle หรอถาเปดไฟลไมไดจะแสดงขอความ “ERROR: Cannot open the file.” แลวออกจากโปรแกรม หลงจากเปดไฟลแลวนกเขยนโปรแกรมสามารถเขยนชดค าสงใหด าเนนการกบไฟลตามตองการไดกอนปดไฟลดวยฟงกชน fclose() สวนกรณทไมมไฟลนนอยในระบบใหแสดงขอความวา “ERROR: File does not exist.”
2 การอานขอมลจากไฟล
ในภาษา PHP ไดเตรยมฟงกชนส าหรบอานขอมลจากไฟลหลายฟงกชน เชน fread(),
fgetc() และ fgets() เปนตน ดงมรปแบบและการน าไปใชงานดงน
2.1 ฟงกชน fread() เหมาะส าหรบอานขอมลจากไบนารไฟล สามารถก าหนดจ านวนความยาวหรอจ านวนไบตทตองการอานได จะหยดอานเมอพบจดสนสดของไฟล (End Of File: EOF) มรปแบบและการน าไปใชงานของฟงกชนดงน
fread(หมายเลขอางองไฟล,จ านวนไบตทใหอาน)
รปแบบ
ฟงกชน file_exists() ตรวจสอบวาไฟลมอยหรอไม
123 ตวอยางท 6.3 การใชงานฟงกชน fread() อานขอมลจากไฟล data.txt โดยอานขอมลอยางเดยว (Tutorial Republic, 2016)
< ?php
$file = "data.txt";
/ / Check the existence of file
if(file_exists($file)){
/ / Open the file for reading
$handle = fopen($file, "r") or die("ERROR: Cannot open the file.");
/ / Reading the entire file
$content = fread($handle, filesize($file));
/ / Closing the file handle
fclose($handle);
/ / Display the file content
echo $content;
} else{
echo "ERROR: File does not exist."; }
?>
จากชดค าสงตวอยางท 6.3 มการใชงานหลายฟงกชนดงน file_exists() ใชส าหรบตรวจสอบวาไฟล “data.txt” ทเกบชอไฟลไวในตวแปร file มอยหรอไม ถามจะใชฟงกชน fopen() เปดไฟลนนแบบอานอยางเดยว (mode= “r”) ฟงกชน fread() จะอานขอมลจากไฟลตามหมายเลขอางองทเกบไวในตวแปร handle โดยขนาดขอมลทอานจะเทากบคาทไดรบจากการใชฟงกชน
filesize() ซงเปนฟงกชนตรวจสอบขนาดของไฟลทมหนวยเปนไบต จากนนน าขอมลทอานไดไปเกบไวในตวแปร content แลวท าการปดไฟลดวยฟงกชน fclose() ตอดวยน าคาในตวแปร content มาแสดงออกทางหนาจอดวยค าสง echo หลงค าสง else เปนกรณทไมพบไฟล “data.txt” โปรแกรมจะแสดงขอความ “ERROR: File does not exits.” ออกทางหนาจอแทน
2.2 ฟงกชน fgetc() จะอานขอมลทละตวอกษร หากพบจดสนสดของไฟล (EOF) คนคาเปน false และสนสดการท างาน มรปแบบและตวอยางการใชงานฟงกชนดงน
fgetc(หมายเลขอางองไฟล)
รปแบบ
หรอระบเปนตวเลข เชน 50 กได
124 ตวอยางท 6.4 การใชงานฟงกชน fgetc() ส าหรบอานขอมลจากไฟล fgetc.txt ทเกบอยในโฟลเดอร phpbook ในไดรฟ c ซงเปดอานขอมลอยางเดยว
< ?php
/ / file name is fgetc.php
$file=fopen(“c:/phpbook/fgetc.txt”, “r”);
if($file= = NULL) {
print “ไมสามารถเปดไฟลได”;
} else {
print “ทดสอบการอานไฟลดวยฟงกชน fgetc <hr>”;
while (feof($file)= = false){
$ch = fgetc($file);
print $ch;
}
}
fclose($file);
?>
จากชดค าสงตวอยางท 6.4 ท าการเปดไฟล “fgetc.txt” แบบอานอยางเดยวดวยฟงกชน fopen() ซงฟงกชนนจะคนคาหมายเลขอางองไฟล จากนนน าคาดงกลาวไปเกบไวในตวแปร file
จากนนตรวจสอบวา คาทเกบในตวแปร file เปนคานลหรอไม ถาเปนจรงหรอเปนคานลใหแสดง (print) ขอความ “ไมสามารถเปดไฟลได” แลวไปท าการปดไฟลดวยฟงกชน fclose() และจบการท างานของโปรแกรม แตถาเปนเทจหรอคาไมเปนนลใหแสดงขอความ “ทดสอบการอานไฟลดงฟงกชน fgetc” จากนนวนรอบ (while) อานขอมลจากไฟลดวยฟงกชน fgetc() แลวน าคาไปเกบไวในตวแปร ch พรอมแสดงคานนดวยจนกวาจะสนสดไฟล ซงไดน าฟงกชน feof() มาตรวจสอบจดสนสดของไฟล โดยฟงกชน feof() จะคนคาเปน true เมอพบจดสนสดไฟล แลวโปรแกรมจะออกจากการวนรอบอานไฟล กอนจบโปรแกรมปดไฟลดวยฟงกชน fclose()
2.3 ฟงกชน fgets() ฟงกชนนจะอานขอมลทละ 1 บรรทดนบจากหมายเลขอางองปจจปนและไมเกนจ านวนไบตทก าหนด รปแบบการใชงานฟงกชนมดงน
fgets(หมายเลขอางองไฟล,จ านวนไบตทตองการ)
รปแบบ
125 ตวอยางท 6.5 การใชฟงกชน fgets() อานไฟล users.txt อยางเดยว
< ?php
/ / Open a handle to users.txt
$fh = fopen('/home/www/data/users.txt', 'r');
/ / While the EOF isn't reached, read in another line and output it
while (!feof($fh)) echo fgets($fh);
/ / Close the handle
fclose($fh);
?>
จากชดค าส งต วอย า งท 6 .5 ท าการ เปด ไฟล “users.txt” ท เ กบ ในโฟล เ ดอร
“/home/www/data/” แบบอานอยางเดยวดวยฟงกชน fopen() ซงฟงกชนนจะคนคาหมายเลข
อางองไฟล แลวน าคาดงกลาวไปเกบไวในตวแปร fh จากนนใชค าสง while วนรอบอานขอมลจาก
ไฟลดวยฟงกชน fgets() และแสดงคาทอานดวยค าสง echo จนกวาจะพบจดสนสดของไฟลโดยใช
ฟงกชน feof() ตรวจสอบวาหาจดสนสดไฟล ถาพบจดสนสดไฟลใหหยดอานไฟล แตกอนจบโปรแกรม
ใหปดไฟลตามหมายเลขไฟลทเกบในตวแปร fh ดวยฟงกชน fclose()
3 การเขยนขอมลลงไฟล
ส าหรบฟงกชนในการเขยนขอมลลงไฟลในภาษา PHP สามารถใชฟงกชน fwrite() และ
fputs() ดงมรายละเอยดการใชงานดงน
3.1 ฟงกชน fwrite() เปนฟงกชนทเหมาะส าหรบเขยนขอมลลงไบนารไฟล มรปแบบและตวอยางการใชงานของฟงกชนดงน
fwrite(หมายเลขอางองไฟล,ขอมลทจะเขยนลงไฟล[ ,จ านวนไบตทใหเขยน] )
รปแบบ
126 ตวอยางท 6.6 การใชงานฟงกชน fwrite() เขยนขอมลลงไฟล note.txt สามารถเขยนเปนค าสงภาษา PHP ดงน (Tutorial Republic, 2016)
< ?php
$file = "note.txt";
/ / String of data to be written
$data = "The quick brown fox jumps over the lazy dog.";
/ / Open the file for writing
$handle = fopen($file, "w") or die("ERROR: Cannot open the file.");
/ / Write data to the file
fwrite($handle, $data) or die ("ERROR: Cannot write the file.") ;
/ / Closing the file handle
fclose($handle);
echo "Data written to the file successfully.";
?>
จากชดค าสงตวอยางท 6.6 ก าหนดใหตวแปร file เกบชอไฟล “note.txt” จากนนก าหนดใหตวแปร data เกบคา “The quick brown fox jumps over the lazy dog.” แลวเปดไฟลดวยฟงกชน fopen() เพอเขยนขอมลลงไฟล (mode= “w”) น าหมายเลขอางองทไดจากฟงกชนเปดไฟลไปเกบไวในตวแปร handle หรอถาไมสามารถเปดไฟลดงกลาวไดอาจเกดเนองจากไมมไฟลอยจรงใหแสดงขอความ “ERROR: Cannot open the file.” แลวออกจากโปรแกรม กรณทไมเกดขอผดพลาดใดๆ ใหกระท าการเขยนขอมลจากตวแปร data ลงไปในไฟลตามหมายเลขอางองในตวแปร handle ดวยฟงกชน fwrite() และถาไมสามารถเขยนขอมลลงไฟลไดใหแสดงขอความ “ERROR: Cannot write the file.” แลวออกจากโปรแกรม กรณไมเกดขอผดพลาดและเขยนขอมลเรยบรอยใหท าการปดไฟลดวยฟงกชน fclose() กอนจบโปรแกรมพมพขอความ “Data written to
the file successfully.” ดวยค าสง echo
3.2 ฟงกชน fputs() เปนฟงกชนทใชเขยนขอมลลงเทกซไฟล มรปแบบและตวอยางการใชงานของฟงกชนทไมแตกตางจากฟงกชน fwrite() ดงน
fputs(หมายเลขอางองไฟล,ขอมลทจะเขยนลงไฟล [ ,จ านวนไบตทใหเขยน] )
รปแบบ
127 ตวอยางท 6.7 การใชงานฟงกชน fputs() เปดไฟล webdictionary.txt เพอเขยนขอมลลงไฟล สามารถเขยนค าสงภาษา PHP ดงน
< ?php
$myfile = fopen("webdictionary.txt","w") or die("Unable to open file!");
/ / Output one line until end-of-file
fputs($myfile,”Add this to the file”);
fclose($myfile);
$myfile = fopen("webdictionary.txt","r") or die("Unable to open file!");
while(!feof($myfile))
{
echo fgetc($myfile);
}
fclose($myfile);
?>
จากชดค าสงตวอยาง 6.7 เปดไฟลชอ “webdictionary.txt” เพอเขยนขอมลลง
ไฟล เมอเปดไฟลไดใหเขยนขอความ “Add this to the file” และปดไฟล หรอกรณทเปดไฟลไมได
ใหแสดงขอความ “Unable to open file!” แลวออกจากโปรแกรม จากนนให เปดไฟลช อ
“webdictionary.txt” แบบอานอยางเดยวอกครง แลวเกบหมายเลขอางองไฟลไวทตวแปร myfile
หรอถาเปดไฟลไมส าเรจใหแสดงขอความ “Unable to open file!” แลวออกจากโปรแกรม กรณ
เปดไฟลส าเรจใหวนรอบอานไฟลและแสดงขอมลในไฟลออกทางหนาจอจนกลาวจะพบจดสนสดไฟล
กอนจบโปรแกรมใหท าการปดไฟล
4 การจดการไฟล
ไฟลขอมลสามารถจดการไดหลายอยาง เชน การเปลยนชอไฟล การลบไฟล และการส าเนาไฟล เปนตน รายละเอยดฟงกชนการจดการไฟลและการใชงานมดงน
4.1 การยายและเปลยนชอไฟล ภาษา PHP ใชฟงกชน rename() เพอด าเนนการดงกลาว และฟงกชนนยงสามารถใชในการเปลยนชอไดเรกทอรได ซงมรปแบบและตวอยางการใชงานดงน
rename(หมายเลขอางองไฟลเกา,พาธและชอไฟลใหม)
รปแบบ
128 ตวอยางท 6.8 การใชงานฟงกชน rename() เพอเปลยนชอไฟล file.txt เปน newfile.txt แตเกบไวในไดเรกทอรเดม (Tutorial Republic, 2016)
< ?php
$file = "file.txt";
/ / Check the existence of file
if(file_exists($file)){
/ / Attempt to rename the file
if(rename($file, "newfile.txt")){
echo "File renamed successfully.";
} else{
echo "ERROR: File cannot be renamed.";
}
} else{
echo "ERROR: File does not exist.";
}
?>
จากชดค าสงตวอยาง 6.8 เกบชอไฟลเกา “file.txt” ไวในตวแปร file จากนนตรวจสอบวาไฟลนนมอยจรงหรอไม ถามใหเปลยนชอไฟลใหมเปน “newfile.txt” พรอมตรวจสอบดวยวาเปลยนชอไฟลส าเรจหรอไม ถาส าเรจใหแสดงขอความ “File renamed successfully” ออกทางหนาจอ และถาไมส าเรจใหแสดงขอความ “ERROR: File cannot be renamed.” ออกทางหนาจอ จบการตรวจสอบการเปลยนชอไฟล กรณตรวจหาไฟลไมพบใหแสดงขอความ “ERROR: File does not exist.” ออกทางหนาจอและออกจากโปรแกรม
4.2 การลบไฟล ภาษา PHP ใชฟงกชน unlink() ในการลบไฟลออกจากระบบคอมพวเตอร มรปแบบและตวอยางการน าไปใชงานดงน (Tutorial Republic, 2016)
unlink(พาธและชอไฟลทตองการลบ)
รปแบบ
129 ตวอยางท 6.9 การใชงานฟงกชน unlink() เพอลบไฟล note.txt ออกจะระบบคอมพวเตอร
< ?php
$file = "note.txt";
/ / Check the existence of file
if(file_exists($file)){
/ / Attempt to delete the file
if(unlink($file)){
echo "File removed successfully.";
} else{
echo "ERROR: File cannot be removed.";
}
} else{
echo "ERROR: File does not exist.";
}
?>
จากชดค าสงตวอยาง 6.9 น าชอไฟล “note.txt” ทตองการลบไปเกบไวในตวแปร file
จากนนตรวจสอบกอนวามไฟลทตองการลบหรอไม ถามใหใชฟงกชน unlink() ในการลบไฟล พรอมตรวจสอบการลบไฟล ถาลบไฟลส าเรจใหแสดงขอความ “File removed successfully.” ถาไมสามารถลบไฟลไดใหแสดงขอความ “ERROR: File cannot be removed.” ออกทางหนาจอจบการตรวจสอบการลบไฟล สวนกรณไมมไฟลทตองการลบใหแสดงขอความ “ERROR: File does not exists.” ออกทางหนาจอและสนสดการท างานของโปรแกรม
4.3 การท าส าเนาไฟล ภาษา PHP จะใชฟงกชน copy() ในการส าเนาไฟลมรปแบบและตวอยางการน าไปใชงานดงน
ตวอยางท 6.10 การใชงานฟงกชน copy() ในการส าเนาไฟล example.txt ไปเกบไวในไดเรกทอร backup
< ?php
/ / Source file path
$file = "example.txt";
/ / Destination file path
$newfile = "backup/example.txt";
/ / Check the existence of file
copy(พาธและชอไฟลทตองการท าส าเนา,พาธและชอไฟลปลายทาง)
รปแบบ
130 if(file_exists($file)){
/ / Attempt to copy file
if(copy($file, $newfile)){
echo "File copied successfully.";
} else{
echo "ERROR: File could not be copied.";
}
} else{
echo "ERROR: File does not exist.";
}
?>
จากชดค าสงตวอยาง 6.10 ก าหนดไฟลทตองการส าเนาคอ “example.txt” น าไปเกบไวในตวแปร file และก าหนดปลายทางทตองการส าเนา “backup/example.txt” ไวในตวแปร newfile จากนนตรวจสอบกอนวามไฟลทตองการส าเนาหรอไม ถามใหใชฟงกชน copy() ส าเนาไฟลไปไวในต าแหนงปลายทาง พรอมตรวจสอบการส าเนาไฟล ถาส าเนาไฟลส าเรจใหแสดงขอความ “File
copied successfully.” ถาไมสามารถส าเนาไฟลไดใหแสดงขอความ “ERROR: File could not be
copied.” ออกทางหนาจอจบการตรวจสอบการท าส าเนาไฟล กรณไมมไฟลทตองการส าเนาใหแสดงขอความ “ERROR: File does not exists.” ออกทางหนาจอและสนสดการท างานของโปรแกรม
ไดเรกทอร ไดเรกทอรหรอโฟลเดอรเปนพนทบนระบบคอมพวเตอรทใชเกบหลายๆ ไฟลหรอหลายๆ
ไดเรกทอรยอยไวภายใน ส าหรบภาษา PHP ไดเตรยมฟงกชนส าหรบจดการกบไดเรกทอรไวหลายฟงกชนดงสรปไวในตารางท 6.3 (สมศกด โชคชยชตกล, 2550: 155-157; ชาญชย ศภอรรถกร ,
2558: 102-106)
ตารางท 6.3 ฟงกชนในภาษา PHP ส าหรบจดการไดเรกทอร
ฟงกชน หนาท
opendir() เปดไดเรกทอร
closedir() ปดไดเรกทอร
readdir() อานวามไดเรกทอรยอยหรอไฟลอะไรอยภายในไดเรกทอรหลก
getcwd() ตรวจสอบไดเรกทอรทก าลงท างานอย
131
ฟงกชน หนาท
chdir() เปลยนไปท างานอกไดเรกทอร
mkdir() สรางไดเรกทอร
rmdir() ลบไดเรกทอร
1 การเปดและปดไดเรกทอร ภาษา PHP ใชฟงกชน opendir() ส าหรบเปดไดเรกทอร และฟงกชน closedir() ส าหรบปดไดเรกทอร มรปแบบการใชงานฟงกชนดงน
2 การอานรายชอไฟลและไดเรกทอรยอยในไดเรกทอร ใชฟงกชน readdir() ซงการอานรายชอไฟลหรอไดเรกทอรยอยจะตองใชค าสงวนรอบเรยกใชฟงกชนนหลายครงเพอจะไดแสดงขอมลไดทงหมด มรปแบบการใชงานฟงกชนดงน
ตวอยางท 6.11 การใชงานฟงกชน opendir(), closedir() และ readdir() มชดค าสงดงน < ?php
$dir=opendir(“c:/phpbook”);
$file=“”;
while(($file= readdir($dir))= = true)
{ print $file . “<br>”; }
closedir($dir);
?>
จากชดค าสงตวอยางท 6.11 ใชฟงกชน opendir() เปดไดเรกทอร “phpbook” ทอยในไดรฟ c แลวน าหมายเลขอางองทไดจากการใชฟงกชน opendir() ไปเกบไวในตวแปร dir ถดมา
opendir(พาธและชอไดเรกทอรทตองการเปด)
รปแบบ
closedir(หมายเลขอางองไดเรกทอรทตองการปด)
รปแบบ
readdir(หมายเลขอางองไดเรกทอร) รปแบบ
132 ก าหนดคาใหตวแปร file เปนคาวาง ใชค าสง while วนรอบอานรายชอไฟลและไดเรกทอรยอยทอยในไดเรกทอร “phpbook” ดวยฟงกชน readdir() แลวเกบรายชอเหลานนไวในตวแปร file และแสดงคาเหลานนออกทางหนาจอจนกวาจะไมพบไฟลหรอไดเรกทอรยอย ซงฟงกชน readdir() จะคนคาเปน false ใหออกจากค าส ง while จากนนใช ฟงกชน closedir() ในการปดไดเรกทอร “phpbook”
3 การสรางไดเรกทอร ในภาษา PHP ใชฟงกชน mkdir() ส าหรบสรางไดเรกทอรใหม ซงมรปแบบการใชงานฟงกชนดงน
ตวอยางท 6.12 การสรางไดเรกทอรชอ testdir ดวยฟงกชน mkdir() (Tutorial Republic, 2016) < ?php
/ / The directory path
$dir = "testdir";
/ / Check the existence of directory
if(!file_exists($dir)){
/ / Attempt to create directory
if(mkdir($dir)){
echo "Directory created successfully.";
} else{
echo "ERROR: Directory could not be created.";
}
} else{
echo "ERROR: Directory already exists.";
}
?>
จากชดค าสงตวอยาง 6.12 ก าหนดใหตวแปร dir มคาเปน “testdir” ซงเปนชอไดเรกทอรทตองการสราง จากนนตรวจสอบวามไดเรกทอรนแลวหรอยงดวยฟงกชน file_exits() ถาไมมใหสรางไดเรกทอร “testdir” ดวยฟงกชน mkdir() ถาสรางส าเรจใหแสดงขอความ “Directory created successfully” ถาไมสามารถสร า ง ได ให แสดงขอความ “ERROR: Directory could not be created.” จบการตรวจสอบการสรางไดเรกทอร สวนกรณทพบไดเรกทอรทจะสรางแลวในระบบคอมพวเตอรใหแสดงขอความ “ERROR: Directory already exits” สนสดการท างานของโปรแกรม
mkdir(พาธและชอไดเรกทอรทตองการสราง)
รปแบบ
133 4 การลบไดเรกทอร ใชฟงกชน rmdir() ถาลบไดเรกทอรส าเรจฟงกชนจะคนคา true และถา
ลบไมส าเรจจะคนคา false รปแบบการใชงานฟงกชนมดงน
ตวอยางท 6.13 การลบไดเรกทอร “temp” ดวยฟงกชน rmdir() มชดค าสงดงน < ?php
/ / The directory path
$deldir = "temp";
/ / Attempt to delete directory
if(rmdir($deldir)){
echo "Directory deleted successfully.";
} else{
echo "ERROR: Directory could not be deleted.";
}
?>
จากชดค าสงตวอยางท 6.13 เกบชอไดเรกทอร “temp” ทตองการลบไวในตวแปร deldir
จากนนใชฟงกชน rmdir() ลบไดเรกทอรตามชอทเกบไวในตวแปร deldir และตรวจสอบการลบดวยค าสง if() ถาลบไดเรกทอรส าเรจฟงกชน rmdir() จะคนคาเปน true แลวแสดงขอความ “Directory deleted successfully.” สวนกรณทไมสามารถลบไดเรกทอรจะคนคาเปน false สงผลใหโปรแกรมด าเนนการค าสงหลง else โดยจะแสดงขอความ “ERROR: Directory could not be deleted.”
5 การหาไดเรกทอรปจจบน และการเปลยนไดเรกทอร จะใชฟงกชน chdir() ในการเปลยนไดเรกทอร และใชฟงกชน getcwd() ในการตรวจหาไดเรกทอรปจจบนทก าลงท างานอย รปแบบการใชงานทง 2 ฟงกชนมดงน
และ
rmdir(พาธและชอไดเรกทอรทตองการลบ)
รปแบบ
chdir(พาธและชอไดเรกทอรทตองการเปลยน) รปแบบ
getcwd()
รปแบบ
134 ตวอยางท 6.14 การใชงานฟงกชน chdir() และ getcwd() มชดค าสงดงน
< ?php
echo “Current directory is ” . getcwd() . “<br>”;
/ / The directory path
$chdir = "temp-change";
/ / Attempt to change directory
if(chdir($chdir)){
echo "Current directory is changed to " . getcwd();
} else{
echo "ERROR: Current directory could not be changed.";
}
?>
จากชดค าสงตวอยางท 6.14 แสดงขอความ “Current directory is ” และชอไดเรกทอรทท างานปจจบน ซงเปนคาทไดจากฟงกชน getcwd() จบขอความใหขนบรรทดใหม ซงเปนผลจากค าสง <br> จากนนเกบชอไดเรกทอร “temp-change” ทตองการเปลยนไวในตวแปร chdir จากนนใชฟงกชน chdir() เปลยนไดเรกทอรตามชอทเกบไวในตวแปร chdir และตรวจสอบการเปลยนดวยค าสง if() ถาเปลยนไดเรกทอรส าเรจฟงกชน chdir() จะคนคาเปน true แลวแสดงขอความ “Current
directory is changed to ” สวนกรณทไมสามารถเปลยนไดเรกทอรจะคนคาเปน false สงผลใหโปรแกรมด าเนนการค าสงหลง else โดยจะแสดงขอความ “ERROR: Current directory could not
be changed.”
135
สรป
ไฟลในระบบคอมพวเตอรสามารถแบงออกได 2 ชนดคอ เทกไฟล และไบนารไฟล ซงในภาษา PHP ไดเตรยมฟงกชนในการจดการกบไฟลไวหลายฟงกชน เชน ฟงกชนในการเปดและปดไฟล อานขอมลจากไฟล และเขยนขอมลลงสไฟล เปนตน ส าหรบฟงกชนในการอานขอมลจากไฟลมใหเลอกใชงานอยหลายฟงกชน เชน fread(), fgetc() และ fgets() เปนตน ซงฟงกชนเหลานตองใชควบคกบฟงกชนส าหรบเปดไฟล นนคอ fopen() และฟงกชนในการปดไฟล นนคอ fclose() สวนฟงกชนส าหรบเขยนขอมลลงไฟล เชน fwrite และ fputs() เปนตน ส าหรบการจดการไฟลสามารถด าเนนการไดหลายรปแบบ เชน การเปลยนชอหรอยาย การลบ และการส าเนาไฟล เปนตน ถดมาเปนเนอหาเกยวกบการจดการกบไดเรกทอร ซงเปนแหลงทจดเกบหลายๆ ไฟลหรอไดเรกทอรยอยไวรวมกน สามารถน าฟงกชนตางๆ ทมในภาษา PHP มาจดการ เชน ใชฟงกชน opendir() ในการเปดไดเรกทอร ฟงกชน closedir() ส าหรบปดไดเรกทอร ฟงกชน readdir() จะใชอานรายชอไฟลและไดเรกทอรยอย ฟงกชน chdir() เพอเปลยนไปท างานอกไดเรกทอรหนง ฟงกชน mkdir() เพอสรางไดเรกทอร และฟงกชน rmdir() เพอลบไดเรกทอรออกจากระบบคอมพวเตอร เปนตน
แบบฝกหด
1. จงบอกความหมายของไฟลขอมล จ าแนกออกเปนกประเภทอะไรบางจงอธบาย 2. จงเขยนโปรแกรมตงชอเปน manage_file_รหสนศ 4 ตวทาย .php ทมรายละเอยดดงน
1. ใหโปรแกรมสราง directory ชอ รหสนกศกษา 4 ตวทาย ไวท drive : D 2. แลวใหสรางไฟลชอ myprofile.txt เกบไวใน directory ดงกลาว ใหเขยนขอความ
ตอไปนลงในไฟล myprofile.txt 2.1 รหสนกศกษา 2.2 ชอ-นามสกล 2.3 สาขาวชา คณะ มหาวทยาลย 2.4 ความสามารถพเศษ
3. จากนนใหอานขอความจากไฟลดงกลาวใหแสดงออกทางโปรแกรมเบราวเซอร
136
เอกสารอางอง ชาญชย ศภอรรถกร. (2558). สรางเวบแอพพรเคชน PHP MySQL+AJAX jQuery ฉบบสมบรณ. กรงเทพฯ: รไววา. สมศกด โชคชยชตกล. (2550). Insight PHP ฉบบสมบรณ. กรงเทพฯ: โปรวชน
Joyce Farrell. (2013). A Beginner’s Guide to Programming Logic and Design Introductory. 7th ed. China: Course Technology, Cengage Learning. Tutorial Republic. (2016). PHP-tutorial. 2016, May 31. [online], Available HTTP: https://www.tutorialrepublic.com/php-tutorial/ W. Jason Gilmore. (2010). Beginning PHP and MySQL From Novice to Professional. 4th ed. USA.
แผนบรหารการสอนประจ าบทท 7
เนอหาประจ าบทท 7 การสรางฟอรม (HTML Form) รบสงขอมล การท างานของฟอรม
การสรางฟอรมรบขอมล
ชองรบขอมลตางๆ ในฟอรม การสงผานขอมลระหวางเวบเพจ คกก (Cookie) และ เซสชน (Session)
วตถประสงคเชงพฤตกรรม
เมอศกษาบทเรยนนแลว ผเรยนมพฤตกรรมดงน 1. อธบายเกยวกบฟอรม องคประกอบของฟอรม และการสงผานขอมลระหวางเวบเพจ 2. บอกหลกการท างานของคกก และเซสชน
3. สามารถเขยนโปรแกรมสรางฟอรมรบสงขอมล และแสดงผลขอมลทรบมาจากเวบเซรฟเวอรตามแบบฝกหดประจ าบทไดอยางเหมาะสม 4. สามารถเขยนโปรแกรมทน าคกกหรอเซสชนไปประยกตได
วธสอนและกจกรรมการเรยนการสอน
1. วธสอน
1.1 บรรยาย สาธต 1.2 อภปราย คนควาเพมเตม 1.3 นกศกษาท าแบบฝกหด และผสอนตรวจแบบฝกหด 1.4 มอบหมายแบบฝกหดเปนการบานเพอทบทวนบทเรยน
2. กจกรรมการเรยนการสอน
สปดาห 13-16 (16 ชวโมง) 2.1 ผสอนอธบายและสาธตเนอหา เปดโอกาสใหผเรยนซกถามปญหาในหวขอทยง
ไมเขาใจ ใหผเรยนคนควาเพมเตมจากอนเตอรเนตและเอกสารประกอบการสอน อภปราย และสรปเนอหาสาระส าคญรวมกน
2.2 ผเรยนท าแบบฝกหดประจ าบทและตอบค าถามลงใน Google Classroom เพอใหผสอนตรวจ อธบายและชแจงค าตอบทถกตอง
138
สอการเรยนการสอน
1. เอกสารประกอบการสอนการเขยนโปรแกรมคอมพวเตอรเพองานสารสนเทศ 1 2. เครองคอมพวเตอร 3. PowerPoint เนอหาบทท 7 4. สอออนไลนชวยสอน : โปรแกรม Google Classroom
การวดผลและประเมนผล
1. การวดผล
สงเกตจากการตอบค าถาม ตรวจแบบฝกหด 2. การประเมนผล
ผเรยนสามารถตอบค าถามและท าแบบฝกหดไดถกตอง รอยละ 80
บทท 7 การสรางฟอรม (HTML Form) รบสงขอมล
การเขยนโปรแกรมบางระบบงานตองการใหผใชกรอกขอมลบางอยางตามทตองการนนจ าเปนจะตองศกษาเกยวกบฟอรมหรอชองรบขอมลเพอทจะไดเลอกใชงานอยางเหมาะสม เชน ระบบงานรบสมครสมาชกหองสมด ทผสมครจะตองกรอกขอมลสวนตวใหกบระบบ เปนตน ซงภายในบทนจะกลาวถงหลกการท างานของฟอรม การสรางฟอรมเพอกรอกรายละเอยดทตองการดวยภาษา HTML การสงผานขอมลระหวางเวบเพจ ทายบทไดเพมเนอหาเกยวกบหลกการท างานของตวแปรประเภทคกก และเซสชนทใชในการตดตามการท างานของผใชในระบบ โดยจะเกบขอมลการใชงานตางๆ ของผใชไว ท าใหงายในการตดตามและเพมความปลอดภยของขอมล เพอเปนพนฐานในการเขยนโปรแกรมระบบงานทมการจดเกบขอมลลงในฐานขอมลตอไป
การท างานของฟอรม
ฟอรม (Form) คอหนาเวบทรวมชองรบขอมลตางๆ เชน ชองกรอกขอความบรรทดเดยว
(text field) ชองกรอกขอความแบบหลายบรรทด (text area) กลองตวเลอก (checkbox) ปมตวเลอก (radio button) รายการตวเลอก (select) และปมกด (button) เปนตน โดยสามารถสรางดวยภาษา HTML พรอมก าหนดวธการสงขอมล และระบไฟลปลายทางทจะสงขอมลไปประมวลผล ซงเปนไฟลประเภทสครปตทสรางดวยภาษาตางๆ เชน สรางดวยภาษา PHP, ASP, JavaScript และ
Perl เปนตน ไฟลสคปตเหลานจะท างานกตอเมอมการรองขอ (request) เขาไปยงเครองเซรฟเวอรเทานน ฟอรมจะไมสามารถแสดงผลจากการปอนขอมลออกทางเวบเบราวเซอรได ตวอยางฟอรมรบขอมลจากภาพท 7.1 เปนหนาจอแรกส าหรบลอกอนกอนเขาใชงานระบบสารสนเทศตางๆ ทผใชมสทธ และภาพท 7.2 แสดงการท างานของฟอรม (guru99, 2016)
ภาพท 7.1 หนาจอลอกอน (Login Form)
140
ภาพท 7.2 การท างานของฟอรม (Form HTML)
ทมา : (guru99, 2016)
จากภาพท 7.2 หนาเวบ Login form ส าหรบใหผใชกรอกรายละเอยดตามทระบบงานตองการ จากนนกดปมยนยนการท างาน เพอสงขอมลดงกลาวตามวธการสงทก าหนดไปยงไฟลปลายทางทเกบไวในเครองเซรฟเวอร (server.php) ไฟลดงกลาวเมอถกรองขอจะประมวลผลทฝงเซรฟเวอร
การสรางฟอรมรบขอมล
ส าหรบการสรางฟอรมรบขอมลนนจะสรางจากค าสงภาษา HTML ผานเครองมอหรอโปรแกรมประเภท “text editor” เชน Notepad หรอ Editplus เปนตน หรอใช โปรแกรม DreamweaverCS6 กไดตามความถนดของนกเขยนโปรแกรม ค าสงในภาษา HTML ทใชคอ แทก
<form>….</form> มรปแบบการสรางดงน (สมศกด โชคชยชตกล, 2550: 162-162; พรวนา รตนชโชค, 2557: 107-108)
จากรปแบบขางตน แทก <form> ประกอบดวยแอตตรบวตหลกทจะตองก าหนดส าหรบการใชงาน ซงมรายละเอยดทแสดงไวในตารางท 7.1 ดงน
< form name= "form_name" method= "get| post" action= "url">
....
< / form>
รปแบบ
ชอฟอรม วธการสงขอมล
ไฟลปลายทางทจะสงไปประมวลผล
141 ตารางท 7.1 รายละเอยดแอตตรบวตหลกของ แทก <form>
แอตตรบวต รายละเอยด
Name ก าหนดชอฟอรม เพอใชในการอางถงฟอรม
Action ก าหนดพาธและชอไฟลปลายทางทจะสงขอมลใหไปประมวลผล หรอสามารถระบเปน url ได
Method ก าหนดวธการสงขอมลไปยงไฟลปลายทางทระบไวใน แอตตรบวต Action มอย 2 วธใหเลอกคอ
1. get วธนจะน าคาของชองรบขอมลรวมไปกบไฟลปลายทาง หรอ url ดงภาพท 7.3
2. post การสงขอมลวธนเหมาะกบงานทตองการเกบขอมลเปนความลบ โดยจะไมเหนคาของชองรบขอมลทสงไปยงไฟลปลายทาง ดงภาพท 7.4
Enctype ก าหนดชนดการเขารหสขอมล โดยคาโดยปรยายคอ “application/x-www-form-urlencode” สวนกรณทมการอพโหลดไฟลขนไปเกบไวเซอรเฟอรจะก าหนดคาเปน “multipart/form-data”
ภาพท 7.3 ผลการสงขอมลแบบ get
ทมา : (guru99, 2016)
จากภาพท 7.3 แทก <form> ในภาษา HTML ไดก าหนดคาของแอตตรบวต action เปน
registration_form.php ซงเปนไฟลปลายทางทจะสงขอมลจากชองรบขอมลไปประมวลผล จากนนก าหนดคาของแอตตรบวต method เปน get ซงเปนวธการสงขอมลทน าคาจากชองรบขอมลตอทายไปกบ url ซงจะมองเหนคาขอมลทสงไปมอะไรบาง
142
ภาพท 7.4 ผลการสงขอมลแบบ post
ทมา : (guru99, 2016)
จากภาพท 7.4 มการก าหนดคาใหกบแอตตรบวตเหมอนกบไฟลในภาพท 7.3 แตตางกนตรงการก าหนดคาใหกบแอตตรบวต method ซงก าหนดคาเปน post นนคอจะไมสามารถมองเหนวาสงคาอะไรบางจากชองรบขอมลไปใหไฟลปลายทางทจะประมวลผล
ชองรบขอมลตางๆ ในฟอรม
ภายในแทก <form> มชองรบขอมลใหเลอกใชตามความเหมาะสมอยหลายชนด สามารถสรางชองรบขอมลโดยใชแทกของภาษา HTML คอ <input>, <textarea>…..</textarea> และ <select>…</select> โดยจะแทรกลงไประหวางแทก <form>...</form> ซงมรายละเอยดการใชงานดงน (ชาญชย ศภอรรถกร, 2558: 140-150; tutorialspoint, 2016) 1. การสรางชองรบขอมลดวยแทก <input> ผานการก าหนดคาใหกบแอตตรบวต type ของแทก <input> ซงมดวยกนอยหลายประเภทดงแสดงตามตารางท 7.2
ตารางท 7.2 รายละเอยดคาทก าหนดใหกบแอตตรบวต type ของแทก <input>
แอตตรบวต type รายละเอยด
<input type="text"> ชองรบบรรทดเดยว ทสามารถก าหนดจ านวนตวอกษรทรบไดและความกวางของชองรบ
<input type="password"> ชองรบรหสผานบรรทดเดยว
<input type="hidden"> ชองรบซอนคา คาทรบจะไมแสดงทหนาเวบ แตสงไปมาระหวางหนาเวบได
143
แอตตรบวต type รายละเอยด
<input type="checkbox"> กลองตวเลอก เปนตวเลอกทเลอกไดหลายตวเลอก
<input type="radio"> ปมตวเลอก เปนตวเลอกทสามารถเลอกไดเพยงตวเลอกเดยว
<input type="submit"> ปมกดยนยนการท างาน
<input type="reset"> ปมกดยกเลกการท างาน
<input type="button"> ปมกด
<input type="file"> ชองรบชอไฟล ใชส าหรบเลอกชอไฟล เพออพโหลดไปเกบไวบนเซรฟเวอร
ตวอยางการใชงานแทก <input> และก าหนดคาใหกบแอตตรบวต type ทท าไปแทรกไวในแทก <form> ซงในการสรางฟอรมรบขอมลนนจะใชโปรแกรม Dreamweaver ในการด าเนนงาน โดยโปรแกรมไดเตรยมเครองมอ Forms เพอใชสรางฟอรมดงภาพท 7. 5 ดงน
ภาพท 7.5 เครองมอ Forms ทใชในการสรางฟอรม
เครองมอ Form แทก <form> ชองรบบรรทดเดยว ชองรบซอนคา ชองรบหลายบรรทด
กลองตวเลอก ปมตวเลอก รายการตวเลอก ชองรบชอไฟล ปมกด
144 การสรางฟอรมรบขอมลดวยโปรแกรม Dreamweaver สามารถด าเนนการดงภาพท 7.6
ภาพท 7.6 การสรางฟอรมรบขอมลดวยโปรแกรม Dreamweaver
จากภาพท 7.6 ชดค าสงภาษา HTML เรมตนทโปรแกรม Dreamweaver สรางไวใหคอ
< html>
< body>
< form name= "form1" method= "post" action= "">
< / form>
< /body>
< /html>
ซงสามารถก าหนดคาแอตตรบวตหลกของแทก <form> ไดตามการน าไปใชงาน เชน จากชดค าสงขางตน แอตตรบวต name มคาเปน “form1” แอตตรบวต method มคาเปน “post” และแอตตรบวต action ยงไมระบคา เปนตน นกเขยนโปรแกรมสามารถแกไขหรอก าหนดคาของแอตตรบวตอนเพมเตมไดเชนกน
เมอเรมตนสรางฟอรมดวยแทก <form> แลวตอจากนนจะเปนการเพมชองรบขอมลทน าแทก <input> รปแบบตางๆ มาแทรกภายในแทก <form> ดงน
1. คลกท Form
2.ปรากฏเสนประสแดงหนาจอออกแบบ
3.ท Properties สามารถก าหนดแอตตรบวตของ <form> ได 4.ไฟลปลายทางในการสง
ขอมลไปประมวลผล
5.ชอฟอรม 6.วธการสงขอมล 7.วธการเขารหสขอมล
145 ตวอยางท 7.1 เพมและก าหนดคณสมบต (Properties) ของชองรบบรรทดเดยว (text field) มขนตอนดงน
1. แทรกตารางหรอแทก <table> เพอจดต าแหนงของชองรบขอมลบนหนาจอใหนาใชงาน ซงจะตองแทรกระหวางแทก <form> หรอเสนประสแดง นนคอตองวางเคารเซอรในเสนประสแดงกอน แลวจงเรมด าเนนการตามขนตอนในภาพท 7.7a ภาพท 7.7b และ ภาพท 7.7c
ภาพท 7.7a การเลอกแทก <table>
ภาพท 7.7b ขนตอนการสรางตาราง
1. ท Insert แลวเลอก Common 2. คลกท Table
จะแสดงหนาจอดงภาพท 7.7b
3. เบองตนก าหนดจ านวนแถวและคอลมนของ Table
4. เลอกรปแบบของ Table
ใหหวตารางแสดงตวอกษรเขม
5. กดปม OK แลวจะแสดงดงหนาจอภาพท 7.7c
146
ภาพท 7.7c ตารางและการก าหนดคณสมบตของตาราง
2. แทรกชองรบบรรทดเดยวหรอ “text field” วางเคอรเซอรในต าแหนงทจะแทรก จากนนด าเนนการตามขนตอนในภาพท 7.8a ภาพท 7.8b และ ภาพท 7.8c
ภาพท 7.8a ใสรายละเอยดทตองการลงในตาราง
6. ตาราง 2 คอลมน 9 แถว แทรกอยในแทก <form>
7. คณสมบตของตารางใหก าหนดคาดงน ความกวาง (W) ของตารางเปน 60%
ต าแหนงตาราง (Align) เปน “Center”
3. ท Forms คลก “text field” เพอแทรกในต าแหนงทจะใหกรอกชอ
1. พมพขอความตามตวอยาง
2. คลกต าแหนงทจะแทรก “text field”
147
ภาพท 7.8b การก าหนด Properties ของ “text field” ส าหรบกรอกชอ
ส าหรบการสรางชองรบบรรทดเดยวส าหรบกรอกนามสกลใหท าซ าขนตอนท 2-4 จากนนก าหนด Properties ของ “text field” ส าหรบกรอกนามสกลรายละเอยดตามภาพท 7.8c
ภาพท 7.8c การก าหนด Properties ของ “text field” ส าหรบกรอกนามสกล ผลลพธทไดจะแสดงดงภาพท 7.9
ภาพท 7.9 ผลลพธและชดค าสงการแทรกชองรบบรรทดเดยวส าหรบกรอกชอ และนามสกล
5. Properties ของ “text field” ส าหรบกรอกชอ
4. คลกท “text field” เพอก าหนด Properties
148 ตวอยางท 7.2 เพมและก าหนดคณสมบต (Properties) ของชองรบรหสผานบรรทดเดยว (text field) โดยจะแทรกตอทายการสรางชองรบขอมลจากตวอยางท 7.1 มขนตอนดงน
ภาพท 7.10 แทรกชองรบบรรทดเดยวส าหรบกรอกรหสผใช
1. พมพขอความตามตวอยาง
2. คลกต าแหนงทจะแทรก “text field”
3. ท Forms คลก “text field” เพอแทรกในต าแหนงทจะใหกรอกรหสผใช
4. คลกท “text field” เพอก าหนด Properties
5. Properties ของ “text field” ส าหรบกรอกรหสผใช
149 จากนนใหแทรกชองรบรหสผานบรรทดเดยว เพอใหกรอกรหสผาน โดยด าเนนการซ าตามขนตอนท 2-5 ของภาพท 7.10 จากนนก าหนดรายละเอยดเพมเตมดงภาพท 7.11
ภาพท 7.11 แทรกชองรบรหสผานบรรทดเดยวส าหรบกรอกรหสผาน
จะไดผลลพธดงภาพท 7.12
ภาพท 7.12 ผลลพธการแทรกชองรบรหสผานบรรทดเดยวส าหรบกรอกรหสผใช และรหสผาน
6. คลกท “text field” เพอก าหนด Properties
7. Properties ของ “text field” ส าหรบกรอกรหสผาน
150 ตวอยางท 7.3 เพมและก าหนดคณสมบต (Properties) ของกลองตวเลอก (checkbox) โดยจะแทรกตอทายการสรางชองรบขอมลจากตวอยางท 7.2 มขนตอนดงน
ภาพท 7.13 ขนตอนการเพมชองรบขอมลแบบกลองตวเลอก (checkbox) “วชาการ หนงสอเรยน”
1. พมพขอความตามตวอยาง
2. คลกต าแหนงทจะแทรก “checkbox”
3. ท Forms คลก “checkbox”
4. แสดง “checkbox” พมพขอความตามตวอยางตอทาย “checkbox”
5. คลก “checkbox” เพอก าหนด Properties
6. ชอของ “checkbox” เปน “check_book”
7. คาของ “checkbox” เปน “1”
151 กลองตวเลอกสามารถสรางไดหลายตว โดยใหท าซ าขนตอน 2-7 แลวก าหนดคณสมบตของแตละกลองตวเลอก ซงชอของกลองตวเลอกจะตงเปนชอเดยวกน เนองจากเปนขอมลประเภทเดยวกน ดงภาพท 7.14
ภาพท 7.14 เพมกลองตวเลอก “นวนยาย เรองสน การตน”
ภาพท 7.15 เพมกลองตวเลอก “วารสาร หนงสอพมพ นตยสาร”
8. ท าซ าขนตอน 2-7 พมพขอความตามตวอยาง
9. คลก “checkbox” เพอก าหนด Properties
10. ชอของ “checkbox” เปน “check_book”
11. คาของ “checkbox” เปน “2”
12. ท าซ าขนตอน 2-7 พมพขอความตามตวอยาง
13. คลก “checkbox” เพอก าหนด Properties
14. ชอของ “checkbox” เปน “check_book”
15. คาของ “checkbox” เปน “3”
152
ภาพท 7.16 เพมกลองตวเลอก “ทวไป”
ผลลพธจากการเพมกลองตวเลอกแสดงดงภาพท 7.17
ภาพท 7.17 การเพมกลองตวเลอกของประเภทหนงสอทชอบอาน
12. ท าซ าขนตอน 2-7 พมพขอความตามตวอยาง
13. คลก “checkbox” เพอก าหนด Properties
14. ชอของ “checkbox” เปน “check_book”
15. คาของ “checkbox” เปน “4”
16. คลกเมอตองการให “checkbox” มคาเรมตนเปนถกเลอก (Checked)
153 ตวอยางท 7.4 เพมและก าหนดคณสมบต (Properties) ของปมตวเลอก โดยจะแทรกตอทายการสรางชองรบขอมลจากตวอยางท 7.3 มขนตอนดงน
ภาพท 7.18 ขนตอนการเพมปมตวเลอก “เพศ” (radio button) ส าหรบ “ชาย”
3. ท Forms คลก “radio button”
1. พมพ “เพศ”
2. คลกต าแหนงทจะแทรก “radio button”
4. แสดง “radio
button” พมพ “ชาย” ตอทาย “checkbox”
5. คลก “radio button” เพอก าหนด Properties
6. ชอของ “radio button” เปน “gender” 7. คาของ “radio button” เปน “1”
154 ปมตวเลอก “เพศ” ตองมทง “ชาย” และ “หญง” ซงปมตวเลอก “ชาย” ไดสรางไปแลว ถดมาใหสรางปมตวเลอก “หญง” ซงจะมขนตอนเหมอนกน ตางกนตรงก าหนดคณสมบตของปมเลอก นนคอใหท าซ าขนตอน 2-6 สวนขนตอนท 7 ก าหนดคาของปมตวเลอกเปน “2” ดงภาพท 7.19
ภาพท 7.19 ขนตอนการเพมปมตวเลอก “เพศ” (radio button) ส าหรบ “หญง”
ผลลพธจากการเพมปมตวเลอก “เพศ” แสดงดงภาพท 7.20
ภาพท 7.20 การเพมปมตวเลอก “เพศ” ปมทใหเลอกคอ “ชาย” และ “หญง”
1. คลก “radio button” เพอก าหนด Properties
2. ชอของ “radio button” เปน “gender” 3. คาของ “radio button” เปน “2”
155 ตวอยางท 7.5 เพมและก าหนดคณสมบต (Properties) ของชองรบชอไฟล (file field) โดยจะแทรกตอทายการสรางชองรบขอมลจากตวอยางท 7.4 มขนตอนดงน
ภาพท 7.21 ขนตอนการเพมชองรบชอไฟล
3. ท Forms คลก “file field”
1. พมพ “ไฟลภาพผสมคร”
2. คลกต าแหนงทจะแทรก “file field”
4. แสดง “file field” และปม “Browse…” คกน
5. คลก “file field” เพอก าหนด Properties
6. ตงชอเปน “FF_photo”
7.ก าหนดความกวางของ “file field” เปน 40
8.จ านวนตวอกษรท “file field” รบได ถาไมก าหนด “file field” จะรบตวอกษรไดไมจ ากด
156 ตวอยางท 7.6 เพมและก าหนดคณสมบต (Properties) ของปมกดยนยนและยกเลกการท างาน ปมกดทวไป โดยจะแทรกไวต าแหนงทายของฟอรมมขนตอนดงน
ภาพท 7.22 ขนตอนการเพมปม “Submit”
2. ท Forms คลก “button”
1. เตรยมพนทในการแทรก “button”
3. แสดงปม จากนนใหคลกทปมเพอก าหนด Properties
4. ตงชอเปน “btn_submit” 5. ก าหนดคาเปน “Submit”
6. ประเภทของปม เลอก “Submit form” จะเปนการยนยนสงขอมล
157 ถดไปท าการเพมปม “Reset” เพอยกเลกขอมล โดยท าซ าขนตอน 1-3 จากภาพท 7.22 จากนนก าหนดคณสมบตใหปมตามรายละเอยดดงภาพท 7.23
ภาพท 7.23 ขนตอนการเพมปม “Reset”
2. การสรางชองรบขอมลดวยแทก <textarea>…..</textarea> หรอชองรบหลายบรรทด ซงเปนชองรบขอควาหลายบรรทด สามารถก าหนดขนาดความกวางและจ านวนบรรทดของชองรบขอมลได รายละเอยดการใชงานตามตวอยางท 7.7
ตวอยางท 7.7 เพมและก าหนดคณสมบต (Properties) ของชองรบหลายบรรทด โดยจะแทรกไวกอนการสรางชองรบขอมลในตวอยางท 7.6 มขนตอนดงน
1. แสดงปม จากนนคลกทปมเพอก าหนด Properties
2. ตงชอเปน “btn_reset” 3. ก าหนดคาเปน “Reset”
4. ประเภทของปม เลอก “reset form” จะเปนการยกเลกขอมล
5. ประเภทของปม เลอก “None” จะเปนปมทวไป
1. พมพ “ทอย” 2. คลกต าแหนงทจะแทรก “Textarea”
158
ภาพท 7.24 ขนตอนการเพมชองรบหลายบรรทด “ทอย”
3. การสรางชองรบขอมลดวยแทก <select>…</select> หรอรายการตวเลอก เปนชองรบขอมลแบบแสดงรายการใหเลอกมลกษณะคลายเมน ดงรายละเอยดตามตวอยางการใชงานท 7.8
3. ท Forms คลก “Textarea”
4. แสดง “Textarea” ใหคลกเพอก าหนด Properties
5. ตงชอเปน “address”
6. ก าหนดความกวางของชองรบเปน 45
8. เลอกเปน “Multi line” เทานน
7. ก าหนดจ านวนบรรทดของชองรบเปน 5 โดยไมปรากฏ scroll bar
Scroll bar
9. คาเรมตน “Init val” ไมตองก าหนด
10. เลอก “Disabled” เมอตองการให “Textarae” แสดงอยางเดยว และเลอก “Read-only” เมอตองการให “Textarae” อานไดอยางเดยว
159 ตวอยางท 7.8 เพมและก าหนดคณสมบต (Properties) ของรายการตวเลอก หรอ Select (List/Menu) โดยจะแทรกไวตอทายการสรางชองรบขอมลในตวอยางท 7.7 มขนตอนดงน
3. ท Forms คลก “Select(List/Menu)”
1. พมพ “คณะทสงกด”
2. คลกต าแหนงทจะแทรก “Select (List/Menu)”
4. แสดง “Select(List/Menu)” ใหคลกเพอก าหนด Properties
5. ตงชอเปน “dept” 6. เลอกชนดเปน “List”
7. กดปม “List Values” เพอก าหนดรายการตวเลอก
160
ภาพท 7.25 ขนตอนการเพมรายการตวเลอก “คณะทสงกด”
12. กดเพม (+) หรอลบ (-) รายการตวเลอกได
14. กดปม “OK” เมอก าหนดรายการตวเลอกเรยบรอย และกลบไปยงหนาจอก าหนด Properties
10.เพมรายการตวเลอกและคาของรายการ
9.ปรากฏหนาจอ “List Values” ใหกรอกรายการตวเลอก
11.เพมรายการตวเลอกถดไป
13. กดเพอจดล าดบรายการตวเลอกกอนหลง
15. กดเลอกรายการตวเลอก ใหเปนคาเรมตน
161 ผลลพธในการสรางฟอรมรบขอมลในการสมครสมาชดหองสมด แสดงดงภาพท 7.26
ภาพท 7.26 หนาจอฟอรมรบสมครสมาชกหองสมด
การสงผานขอมลระหวางเวบเพจ
จากหวขอทผานมาเราไดสรางฟอรมรบขอมลตางๆ แลวตอไปจะเปนการการเขยนโปรแกรมเพอท าการรบขอมลน าเขาจากฟอรม และน าไปประมวลผล จากฟอรมรบสมครสมาชกเมอผใชกรอกขอมลเรยบรอยแลว และกดปม “Submit” ยนยนการสงขอมลไปยงไฟลทชอ member_list.php ประมวลผลโดยก าหนดทแอตตรบวต action ดงภาพท 7.27
ภาพท 7.27 การก าหนดแอตตรบวตของแทก <form> ท DreamweaverCS6
1. ก าหนดไฟลปลายทาง member_list.php
2. ก าหนดวธการสงขอมล (Method) เปน GET
162 สวนโปรแกรม member_list.php มหนาทรบคาทผ ใชน าเขา ผานตวแปร $_POST
หรอ$_GET ทก าหนดใหกบแอตตรบวต method โดยใชชอของชองรบขอมลเปนดชน เชน $_GET[‘fname’] เปนคาในชองชอ $_GET[‘lname’] เปนคาในชองนามสกล เปนตน
การแสดงผลลพธวามขอมลน าเขาอะไรบาง จะใชค าสง echo แสดงคาของชองรบขอมลตางๆ ผานตวแปร $_GET ทอางองดวยชอชองรบขอมล รายละเอยดดงภาพท 7.28
ภาพท 7.28 ชดค าสงในโปรแกรม member_list.php ส าหรบแสดงคาออกทางหนาเวบ
คกก (Cookie) และ เซสชน (Session) คณสมบตอกอยางหนงของโปรแกรมภาษา PHP คอ คกกและเซสชน ทมไวส าหรบตดตามและตรวจสอบการท างานของผใช ซงจะชวยเพมความปลอดภย และรกษาขอมลบางอยางของผใชไว เชน การลอกอนเขาสระบบ ระบบจะเกบชอผใชงานไวตลอดจนกวาผใชจะออกจากระบบหรอหมดเวลาการใชงาน เปนตน การท างานในลกษณะนจะสามารถท าไดโดยใชคกก และเซสชน ซงมรายละเอยดดงน (พรวนา รตนชโชค, 2557: 137-150)
ผลลพธ
ผลจากการสงขอมล ซงสามารถปรบรปแบบการแสดงได
163
1. คกก (Cookie) คกก เปนตวแปรทเครองเซรฟเวอรสงไปเกบไวในเครองของผใช โดยเวบเบราวเซอรจะสงขอมลของผใชทจดเกบไวในเครองมายงเวบเซรฟเวอร พรอมทงน าคกกดงกลาวมาเกบไวในตวแปรท าใหสามารถตรวจสอบคาตางๆ ของผใชได การสรางและใชงานคกกดงตวอยางท 7.9 ตวอยางท 7.9 การใชงานตวแปรคกก
< ?php
$cookie_name = "user";
$cookie_value = "waraporn_kh";
setcookie($cookie_name, $cookie_value, time() + (86400 * 30));
/ / 86400 = 1 day
?>
< html>
< body>
< ?php
if(isset($_COOKIE[$cookie_name] )) {
echo "Cookie '" . $cookie_name . "' is set!< br> ";
echo "Value is: " . $_COOKIE[$cookie_name] ;
} else {
echo "Cookie named '" . $cookie_name . "' is not set!";
}
?>
< /body>
< /html>
จากตวอยางขางตนประกาศตวแปรชอ “cookie_name” มคาเปน “user” และตวแปร “cookie_value” มคาเปน “waraporn_kh” จากนนเรยกใชฟงกชน setcookie เพอสรางตวแปรคกกตามคาทเกบในตวแปร “cookie_name” และมคาตามคาทเกบในตวแปร “cookie_value” และก าหนดตวแปรคกกใหมอาย 30 วน (หนวยเปนวนาท) จากนนแทรกสครปตภาษา PHP ในภาษา HTML โดยใชค าสง if เพอตรวจสอบตวแปรกอนวามคาจรงอยหรอไม หรอหมดอายไปแลว จากการเรยกใชฟงกชน isset() ถายงมคาอยหรอเงอนไขเปนจรงใหแสดงขอความ “Cookie ” ตามดวยชอตวแปร “cookie_name” ตามดวย “ is set !” แลวใหขนบรรทดใหม จากนนแสดงขอความ “Value is: ” ตามดวยคาของตวแปรคกก "cookie_name" ออกทางเวบเบราวเซอร แตถาเงอนไขเปนเทจจะแสดงขอความ “Cookie named ” ตามดวยคาตวแปร “cookie_name” และขอความ “is not set!”
2. เซสชน (Session) เซสชน เปนตวแปรทใชเกบขอมลบางอยางของผใชไวทเครองเซรฟเวอร สามารถน าขอมลไปใชงานในเวบเพจอนๆ ได เนองจากคาของขอมลทเกบในตวแปรเซสชนจะยงอยจนกวาจะถกท าลายหรอเมอผใชปดเวบเบราวเซอร โดยจะมการท างานเมอผใชรองขอเวบเพจผานทางเวบเบราวเซอร เมอเซรฟเวอรไดรบการรองขอจะประมวลผลและสงเวบเพจดงกลาวกลบมาใหกบผใช หากหนาเวบเพจท
164 มการเรยกใชมค าสง session_start() ซงเปนการก าหนดใหโปรแกรมเรมตนเกบคาของตวแปรเซสชน โดย PHP จะสรางหมายเลขเซสชน (Session ID) แลวสงมายงเครองของผใช ถามผใชหลายคนทรองขอเวบเพจเดยวกน ในเวลาเดยวกนกจะไดรบหมายเลขเซสชนแตจะมคาไมซ ากน มตวอยางการใชงานดงน ตวอยางท 7.10 การใชงานตวแปรเซสชน
< ?php
/ / Start the session
session_start();
?>
< !DOCTYPE html>
< html>
< body>
< ?php
/ / Set session variables
$_SESSION["fav_color"] = "green";
$_SESSION["fav_animal"] = "cat";
echo "Session variables are set.";
?>
< /body>
< /html>
จากตวอยางขางตนโปรแกรมเรยกใชฟงกชน session_start() เพอประกาศการเรมตนใชงาน
ตวแปรเซสชน จากนนแทรกสครปตภาษา PHP ในภาษา HTML โดยก าหนดตวแปรเซสชนชอ “fav_color” มคาเปน “green” และตวแปร “fav_animal” เปน “cat” จากนนแสดงขอความวา “Session variable are set.” นนคอไดก าหนดคาใหตวแปรเซสชนแลว
สรป
ฟอรมหมายถงเวบเพจทรวมชองรบขอมล เชน ชองกรอกขอความ กลองตวเลอก รายการตวเลอก หรอปมกด เปนตน สามารถสรางดวยภาษา HTML พรอมก าหนดวธการสงขอมล (Method)
ระบไฟลปลายทาง (Action) ทจะสงไปประมวลผล การสรางฟอรมขอมลสามารถใชเครองมอประเภท Text Editor เชน โปแกรม Notepad หรอ Editplus และเพอใหสามารถสรางฟอรมไดงายในเอกสารชดนไดเลอกใชโปรแกรม DreamweaverCS6 ซงโปรแกรมไดเตรยมชองรบขอมลตางๆ ในฟอรมใหเลอกใชงาน การก าหนดแอตตรบวตของแตละชองรบขอมล ก าหนดวธการการสงขอมลไปประมวลผลยงไฟลปลายทางทก าหนด และภาษา PHP มตวแปรส าหรบการตดตามและตรวจสอบการท างานของผใชดวยตวแปรคกก และเซสชน โดยตวแปรคกกจะเกบขอมลของผใชไวทเครองไอคเอนตของผใชแลวสงขอมลกลบไปยงเครองเซรฟเวอร และตวแปรเซสชนเปนตวแปรทใชเกบขอมลบางอยางของผใชไวทเครองเซรฟเวอร
165
แบบฝกหด
ใหนกศกษาเขยนโปรแกรมจากโจทนตอไปน โดยใหรบคาทจ าเปนตองใชในการค านวณผานหนอจอ และหนาจอใหออกแบบตามความเหมาะสม
1. ใหนกศกษาเขยนโปรแกรมรบคา a b และ c จากหนาจอ ตามรายละเอยดทแสดงในผงงานตอไปน
2. ใหนกศกษาเขยนโปรแกรมรบคา score จากหนาจอ ตามรายละเอยดทแสดงในผงงานตอไปน
Start
Read a,b,c
Sum= 0
Sum= a + b + c
Write sum
Stop
Stop
Read Score
Score> = 60
Y N
Write “สอบไมผาน” Write “สอบผาน”
Start
166 3. ใหเขยนโปรแกรมค านวณรายรบหลงหกภาษของพนกงานแตละคน โดยมเงอนไขวา หากพนกงานมรายไดมากกวา 20,000 บาท ใหหกภาษ ณ ทจาย 5% หากมรายไดต ากวานไมตองหกภาษ ก าหนดใหแสดงคาตอไปน ชอ-สกลพนกงาน รายรบ ภาษหก ณ ทจาย และรายรบหลงหกภาษ
4. เขยนโปรแกรมค านวณคาคอมมชชนของพนกงานขายในแตละเดอน โดยมเงอนไขการคดคาคอมมชชน ดงน
1.1. ถายอดขาย มากกวา 25,000 บาท ใหคาคอมมชชน 7% ของยอดขาย
1.2. ถายอดขาย 2,000 -25,000 บาท ใหคาคอมมชชน 4% ของยอดขาย
1.3. ถายอดขาย ต ากวา 2,000 บาท ใหคาคอมมชชน 2% ของยอดขาย
1.4. ก าหนดใหแสดงคาดงน ชอ-นามสกลพนกงาน ยอดขาย และคาคอมมชชนทไดรบ
5. จงเขยนฟงกชนเพอหาพนทสเหลยม พรอมกบเรยกใชงานฟงกชนดงกลาว การแสดงผลลพธทไดใหก าหนดตามความเหมาะสม
พนท = กวาง x ยาว
6. จงเขยนฟงกชนเพอหาพนทสามเหลยม พรอมกบเรยกใชงานฟงกชนดงกลาว การแสดงผลลพธทไดใหก าหนดตามความเหมาะสม
พนท = 0.5 x ฐาน x สง
7. เขยนโปรแกรมตดเกรด โดยก าหนดเงอนไขดงน โปรแกรมประกอบดวย 2 ไฟล ดงน 7.1 โปรแกรมส าหรบปอน ชอ นามสกล รหสนกศกษา และ คะแนน
7.2 โปรแกรมส าหรบแสดงผลเกรดทได ของนกศกษาคนนนๆ
เงอนไขการตดเกรดใหพจารณาจากตารางตอไปน ระดบคะแนน ความหมาย คาระดบคะแนน คารอยละ
A ดเยยม 4.0 80
B+ ดมาก 3.5 75-79
B ด 3.0 70-74
C+ ดพอใช 2.5 65-69
C พอใช 2.0 60-64
D+ ออน 1.5 55-59
D ออนมาก 1.0 50-54
E ตก 0.0 0-49
167
เอกสารอางอง
ชาญชย ศภอรรถกร. (2558). สรางเวบแอพพรเคชน PHP MySQL+AJAX jQuery ฉบบสมบรณ. กรงเทพฯ: รไววา. พรวนา รตนชโชค. (2557). การโปรแกรมบนเวลดไวดเวบ. [ม.ป.ท.]. สมศกด โชคชยชตกล. (2550). Insight PHP ฉบบสมบรณ. กรงเทพฯ: โปรวชน
Guru99. (2016). PHP forms handing. 2016, May 31. [online], Available HTTP: https://www.guru99.com/php-forms-handling.html Tutorial Republic. (2016). PHP-tutorial. 2016, May 31. [online], Available HTTP: https://www.tutorialrepublic.com/php-tutorial/
บรรณานกรม
โครงการสารานกรมไทยส าหรบเยาวชน. (2559). อนเทอรเนต. [ออนไลน], แหลงทมา HTTP:
http://kanchanapisek.or.th/kp6/sub/book/book.php?book=25&chap=6&page=c
hap6.htm
ชาญชย ศภอรรถกร. (2558). สรางเวบแอพพรเคชน PHP MySQL+AJAX jQuery ฉบบสมบรณ. กรงเทพฯ: รไววา. ณฐพงษ วารประเสรฐ และ สธ พงศาสกลชย. (2552). โครงสรางขอมลและอลกอรทม. กรงเทพฯ:
เคทพ คอมพ แอนด คอนซลท. ประสาท เนองเฉลม. (2557). อนเทอรเนตเพอการเรยนร. กรงเทพฯ: โอเดยนสโตร. พรวนา รตนชโชค. (2557). การโปรแกรมบนเวลดไวดเวบ. [ม.ป.ท.]. รงทวา เสารสงห. (2546). การเขยนโปรแกรมคอมพวเตอรเบองตน. กรงเทพฯ: ซเอดยเคชน. วไลพร กลตงวฒนา. (2554). โครงสรางขอมลและขนตอนวธ. อดรธาน: มหาวทยาลยอดรธาน สมศกด โชคชยชตกล. (2550). Insight PHP ฉบบสมบรณ. กรงเทพฯ: โปรวชน
สานนท เจรญฉาย. (2544). การเขยนโปรแกรมและอลกอรทม(กรณตวอยางภาษาซ). กรงเทพฯ: โรงพมพมหาจฬาลงกรณราชวทยาลย วดมหาธาต. อนรรฆนงค คณมณ. (2550). Basic of PHP. นนทบร: ไอดซฯ. โอภาส เอยมสรวงค. (2557). วทยาการคอมพวเตอรและเทคโนโลยสารสนเทศ (ฉบบปรบปรง เพมเตม). กรงเทพฯ: ซเอดยเคชน. 123RF. (2016). Vector - social network laptop.communication in the global
computer networks. 2016, July 25. [online], Available HTTP:
https://www.123rf.com/photo_11888394_social-network-laptop-
communication-in-the-global-computer-networks.html
Aditya varma. (2016). What is Web Server and Different Types of Web Servers?.
2016, July 25. [online], Available HTTP: https://www.fastwebhost.in/blog/ what-is-web-server-and-different-types-of-web-servers/
Appserv. (2559). AppServ คออะไร. [ออนไลน], แหลงทมา HTTP:
https://www.appserv.org/th/
ASAP. (2016). Redes Estruturadas. 2016, July 10. [online], Available HTTP:
http://www.asap-mz.com/?page_id=151
Berners-Lee. (1994). Addressing. 2016, July 20. [online], Available HTTP:
https://www.w3.org/Addressing/URL/url-spec.txt
170 IBM Knowledge Center. (2016). Type of files. สบคนเมอ 27 พฤษภาคม 2561, จาก https://www.ibm.com/support/knowledgecenter/en/ssw_aix_71/ com.ibm.aix. osdevice /filetypes.htm. Guru99. (2016). PHP forms handing. 2016, May 31. [online], Available HTTP: https://www.guru99.com/control-structures-and-loops.html Joyce Farrell. (2013). A Beginner’s Guide to Programming Logic and Design Introductory. 7th ed. China: Course Technology, Cengage Learning. Peter O'Shaughnessy. (2016). Think you know the top web browsers?.
2016, June 25. [online], Available HTTP: https://medium.com/samsung-
internet-dev/think-you-know-the-top-web-browsers-458a0a070175
Php. (2016). Function Reference. 2016, September 20. [online], Available HTTP:
http://php.net/manual/en/function.explode.php
Robert W.Sebesta. (2006). Programming the World Wide Web. 3rd ed. USA: Pearson Education,Inc. SoraTemplates. (2016). Conditional if-else statement with example in c
language.2016, May 31. [online], Available HTTP: https://dotprogramming. blogspot.com/2016/02/ conditional-if-else-statement-with.html.
Tutorial Republic. (2016). PHP-tutorial. 2016, May 31. [online], Available HTTP: https://www.tutorialrepublic.com/php-tutorial/php-if-else-statements.php Tutorialspoint. (2016). PHP-Loop Types. 2016, June 25. [online], Available HTTP: https://www.tutorialspoint.com/php/php_loop_types.htm. W3schools.com. (1999-2018). PHP 5 Tutorial. 2016, July 25. [online], Available HTTP: https://www.w3schools.com/php/default.asp Web Developers Notes. (2016). What is web server – a computer OR a
program?. 2016, July 12. [online], Available HTTP:
https://www.webdevelopersnotes.com/what-is-web-server
W. Jason Gilmore. (2010). Beginning PHP and MySQL From Novice to Professional. 4th ed. USA. Zentut. (2016). PHP if Statement. 2016, June 25. [online], Available HTTP: http://www.zentut.com/php-tutorial/php-if/