คํานํ า การจัดการเรียนการสอนในประเทศไทยปั จจุบันนี้ จะเน้ นให้ผู้เรียนเป็ นศูนย์กลางสําหรับ
การศึกษาค้นคว้าข้อมูลด้วยตัวเอง ซึ่งได้มีการนํ าอุปกรณ์คอมพิวเตอร์และซอฟต์แวร์ต่างๆ มาใช้ ช่วยในการเรียนการสอนและทํางานวิจัยในหลายสาขาวิชา โดยมีการนํ าเสนอในรูปบทเรียนอิเล็ก
ทรอนิ กส์ เช่น ซีดี สื่อการเรียนการสอนผ่านทางโทรทัศน์และเครือข่ายดาวเทียม สื่อการเรียนการ สอนผ่านทางเครือข่ายอินเทอร์เน็ต (E-leaning) เป็ นต้น
โปรแกรม SCILAB เป็ นโปรแกรมภาษาขัน ้ สูงที่ถูกพัฒนาขึ้นโดยความร่วมมือกันระหว่าง
นั กวิจัยจากสถาบัน Institut National De Recherche En Informatique Et En Automatique (INRIA) และ École nationale des ponts et chausses (ENPC) ประเทศฝรั่งเศส ตัง้ แต่ ค.ศ.
1990 โดยมีจุดมุ่งหมายเพื่อใช้ในการคํานวณเชิงตัวเลขและแสดงผลกราฟิ กที่ซับซ้อนต่างๆ ได้ ดังนั ้น โปรแกรม SCILAB จึงเหมาะกับการใช้งานทางด้านวิศวกรรมและวิทยาศาสตร์ นอกจากนี้ โปรแกรม SCILAB ยังเป็ นโปรแกรมที่ให้ฟรี (freeware) อนุญาตให้ผู้ใช้สามารถนํ าไปพัฒนาต่อได้ และมี ความสามารถในการทํางานที่ใกล้เคียงกับโปรแกรม MATLAB ซึ่งเป็ นโปรแกรมที่นิยมใช้งานมาก
ทางด้านวิศวกรรมและวิทยาศาสตร์ แต่ค่าลิขสิทธิซ์ อฟต์แวร์ของ MATLAB มีราคาแพงมาก
หนั งสือ “การพัฒนาสื่อการสอนโดยใช้โปรแกรม SCILAB ร่วมกับ Visual Basic /
PHP / Flash Animation” มีจุดมุ่งหมายเพื่ออธิบายตัง้ แต่พ้ืนฐานการใช้งานโปรแกรม SCILAB การนํ าโปรแกรม SCILAB มาประยุกต์ใช้งานร่วมกับโปรแกรม Visual Basic, PHP และ Flash
Animation เพื่อสร้างบทเรียนช่วยสอนบนอินเทอร์เน็ตทางด้านวิศวกรรมและวิทยาศาสตร์ท่ีสามารถ
โต้ตอบกับผู้เรียนได้ นอกจากนี้ ยังช่วยให้นักศึกษาเข้าใจทฤษฏีในบทเรียนง่ายขึ้น รวมทัง้ สนุกกับ บทเรียนต่างๆ ที่มีภาพเคลื่อนไหวประกอบคําบรรยาย
หนั งสือเล่มนี้จะเริ่มต้นอธิบายจาก ความรู้ทวั่ ไปเกี่ยวกับโปรแกรม SCILAB เช่น ประวัติ
ความเป็ นมาของโปรแกรม SCILAB และการใช้งานคําสั่งพื้นฐานทั่วไป บทที่ 2 จะอธิบายเครื่องมือ
ต่างๆ ของโปรแกรม Visual Basic และขัน ้ ตอนการเขียนโปรแกรมติดต่อกับโปรแกรม SCILAB
บทที่ 3 ยกตัวอย่างการพัฒนาสื่อการเรียนการสอนด้วยโปรแกรม Visual Basic ร่วมกับ SCILAB เช่น การบวก/ลบ/คูณ/หาร ของเลขสองจํานวน การบวกและลบสมการพหุนาม และการวาดกราฟ สองมิติ บทที่ 4 อธิบายพื้นฐานการใช้งานโปรแกรมภาษา PHP รวมถึงการนํ าไปประยุกต์ใช้งาน
ร่วมกับโปรแกรม SCILAB บทที่ 5 ยกตัวอย่างการพัฒนาสื่อการเรียนการสอนผ่านเว็บไซต์หลายๆ
แบบโดยใช้โปรแกรมภาษา PHP ร่วมกับโปรแกรม SCILAB บทที่ 6 อธิบายความรู้เบื้องต้นเกี่ยวกับ การใช้งานโปรแกรม SWISH Max ที่ใช้สร้างไฟล์ภาพเคลื่อนไหวแบบแฟลช (Flash Animation)
เพื่อนํ าไปประยุกต์ใช้งานร่วมกับโปรแกรม SCILAB สุดท้ายบทที่ 7 ยกตัวอย่างการสร้างสื่อการสอน
ด้วยโปรแกรม SWISH Max และ SCILAB โดยโค้ดต้นฉบับทัง้ หมดของทุกตัวอย่างในหนั งสือ
เล่มนี้สามารถดาวน์โหลดได้ท่ี http://home.npru.ac.th/piya/webscilab/book2
หนั งสือเล่มนี้ จะไม่สามารถทําให้สําเร็จขึ้นมาได้ ถ้าหากขาดบุคคลต่างๆ ที่คอยให้ความ
ช่วยเหลือและเป็ นกําลังใจให้ข้าพเจ้าตลอดมา ดังนั ้นข้าพเจ้าขอกราบขอบพระคุณอาจารย์ทุกท่านที่
ให้ความรู้และคําปรึกษาตลอดระยะเวลาการศึกษา รวมทัง้ คุณเกียรติ โควินท์ทวีวัฒน์, คุณพรรณี
โควินท์ทวีวัฒน์, คุณรัชนิ ศ โรจนกิจ, คุณอนุทัศน์ โรจนกิจ, คุณฉั ตรชัย โควินท์ทวีวัฒน์, คุณกิตติ ศักดิ ์ โควินท์ทวีวัฒน์, พ.ญ.ศิรสุดา โสมนั ส, ดร.พัชรศักดิ ์ อาลัย, ร้อยตํารวจตรีบุญหลง บู๊ฮวดใช้,
จ่าสิบตํารวจพงษ์ พันธ์ บู๊ฮวดใช้, นางอําพร บู๊ฮวดใช้ (จันทรอําพร), และเจ้าหน้ าที่สถาบันวิจัยและ
พัฒนาทุกท่าน นอกจากนี้ ข้าพเจ้าขอขอบคุณมหาวิทยาลัยราชภัฏนครปฐมที่ให้การสนั บสนุนและ
ให้ความสะดวกแก่ข้าพเจ้าตลอดระยะเวลาในการเขียนหนั งสือเล่มนี้
ท้ายสุดนี้ ข้าพเจ้าพยายามอย่างยิ่งในการที่จะทําให้หนั งสือเล่มนี้ ง่ายต่อการเรียนรู้ เพื่อให้
ผู้อ่านสามารถทําความเข้าใจได้ด้วยตนเองอย่างรวดเร็วและมีประสิทธิผล ดังนั ้นหากมีข้อบกพร่อง
ประการใด ข้าพเจ้ามีความยินดีและจักขอบพระคุณยิ่ง ถ้าท่านผู้ใช้หนั งสือเล่มนี้จะส่งข้อคิดเห็นและ
คําแนะนํ าที่เป็ นประโยชน์ สําหรับการปรับปรุงหนั งสือเล่มนี้ มาที่อีเมล์ piya@npru.ac.th
หรือ
jirundon_bu@npru.ac.th เพื่อที่ข้าพเจ้าจะได้ดําเนิ นการปรับปรุงและแก้ไขในการพิมพ์ครัง้ ต่อไป
รศ.ดร.ปิ ยะ โควินท์ทวีวัฒน์
จิรันดร บู๊อวดใช้
มหาวิทยาลัยราชภัฏนครปฐม มิถุนายน พ.ศ. 2556
สารบัญ บทที่ 1 พื้นฐานการใช้งานโปรแกรม SCILAB......................................................... 1 1.1 ประวัตค ิ วามเป็ นมาของโปรแกรม SCILAB .................................................................... 1 1.2 การติดตัง้ โปรแกรม SCILAB ........................................................................................ 3 1.3 การสร้างสเกล่าร์ เวกเตอร์ และเมทริกซ์ ......................................................................... 3 1.3.1 การหาทรานส์โพส ดีเทอร์มิแนนต์ อินเวอร์สการคูณ ของเมทริกซ์ ...................... 7 1.3.2 การแก้ระบบสมการเชิงเส้น................................................................................. 8 1.4 พหุนาม ........................................................................................................................ 9 1.5 การดําเนิ นการทางคณิ ตศาสตร์ .................................................................................... 11 1.6 การดําเนิ นการทางคณิ ตศาสตร์ .................................................................................... 13 1.6.1 ฟั งก์ชน ั พื้นฐานที่เกี่ยวกับตัวเลข........................................................................ 13 1.6.2 ฟั งก์ชน ั ตรีโกณมิติ ........................................................................................... 15 1.6.3 ฟั งก์ชน ั พื้นฐานทางสถิติ ................................................................................... 16 1.7 เมทริกซ์พิเศษ ............................................................................................................ 17 1.7.1 เมทริกซ์สุ่ม ..................................................................................................... 18 1.8 การเขียนโปรแกรมด้วย SCILAB ................................................................................ 19 1.8.1 คําสัง่ วนซํา้ ...................................................................................................... 19 1.8.2 คําสัง่ ทดสอบเงื่อนไข ........................................................................................ 21 1.8.3 การเขียนฟั งก์ชันแบบอินไลน์............................................................................ 22 1.9 การวาดกราฟสองมิติ ................................................................................................... 23 1.9.1 กราฟเชิงขัว้ ...................................................................................................... 24 1.10 การวาดกราฟสามมิติ ................................................................................................. 26 1.11 สรุปท้ายบท .............................................................................................................. 29
1.12 แบบฝึ กหัดท้ายบท .................................................................................................... 29
บทที่ 2 การใช้งานโปรแกรม VISUAL BASIC ร่วมกับ SCILAB ....................... 31 2.1 ประวัตค ิ วามเป็ นมาของโปรแกรม VISUAL BASIC......................................................... 31 2.2 โปรแกรม VISUAL BASIC 2010 EXPRESS ................................................................... 32 2.2.1 แถบเมนู .......................................................................................................... 32 2.2.2 แถบเครื่องมือมาตราฐาน .................................................................................. 32 2.2.3 หน้ าต่างโซลูชน ั ................................................................................................ 33 2.2.4 หน้ าต่างคุณสมบัติ ........................................................................................... 34 2.2.5 หน้ าต่างกล่องเครื่องมือ .................................................................................... 35 2.2.6 ประเภทข้อมูลพื้นฐาน ...................................................................................... 35 2.3 การใช้งานโปรแกรม VISUAL BASIC ร่วมกับ SCILAB................................................. 35 2.3.1 ขัน ้ ตอนการเรียกใช้งานไลบรารี Microsoft Scripting Runtime ........................ 38 2.3.2 รูปแบบการใช้งาน FileSystemObject ............................................................... 39 2.3.3 ฟั งก์ชันที่เกี่ยวของโปรแกรม Visual Basic 2010 ............................................. 41 2.4 ฟั งก์ชน ั ที่เกี่ยวข้องของโปรแกรม SCILAB................................................................... 45 2.4.1 คําสัง่ file ........................................................................................................ 45 2.4.2 คําสัง่ fprintf ................................................................................................... 46 2.4.3 คําสัง่ exec ...................................................................................................... 47 2.4.4 คําสัง่ savematfile ........................................................................................... 48 2.4.5 คําสัง่ xs2gif .................................................................................................... 48 2.5 การเขียนโปรแกรม VISUAL BASIC ติดต่อกับ SCILAB ............................................... 49 2.5.1 การสร้างไฟล์สคริปต์ ........................................................................................ 50 2.5.2 การเขียนไฟล์สคริปต์........................................................................................ 52 2.5.3 การประมวลผลไฟล์สคริปต์ .............................................................................. 53 2.5.4 การบันทึกผลลัพธ์ลงไฟล์ข้อมูล......................................................................... 55 2.5.5 การแสดงผลลัพธ์ ............................................................................................. 58 2.6 สรุปท้ายบท ................................................................................................................ 60 2.7 แบบฝึ กหัดท้ายบท ...................................................................................................... 60
บทที่ 3 การสร้างสื่อการสอนด้วยโปรแกรม VISUAL BASIC ร่วมกับ SCILAB .... 61 3.1 การบวก/ลบ/คูณ/หาร ของเลขสองจํานวน .................................................................... 61 3.2 การหาดีเทอร์มิแนนต์และอินเวอร์สของเมทริกซ์ ........................................................... 64 3.2.1 ฟอร์มกําหนดขนาดของเมทริกซ์ ....................................................................... 65 3.2.2 ฟอร์มสําหรับหาดีเทอร์มแ ิ นนต์และอินเวอร์สของเมทริกซ์ขนาด 2×2 ................. 66 3.2.3 ฟอร์มสําหรับหาดีเทอร์มแ ิ นนต์และอินเวอร์สของเมทริกซ์ขนาด 3×3 ................. 72 3.2.4 ทดสอบการใช้งาน ............................................................................................ 77 ุ สมบัติของเมทริกซ์ ................................................................................. 80 3.3 การพิสูจน์คณ 3.3.1 การพิสูจน์คุณสมบัติ (kA)T = kAT................................................................... 80 3.3.2 การพิสูจน์คุณสมบัติ (A + B)T = AT + BT ................................................... 88 3.3.3 การพิสูจน์คุณสมบัติ (AB)T = BTAT ................................................................ 94 3.4 การหาค่าลอการิทึมฐานใดๆ ....................................................................................... 100 3.5 การบวกและลบสมการพหุนาม .................................................................................. 103 3.6 การวาดกราฟสองมิติ ................................................................................................. 107 3.7 สรุปท้ายบท .............................................................................................................. 110 3.8 แบบฝึ กหัดท้ายบท .................................................................................................... 110
บทที่ 4 ความรู้เบื้องต้นเกี่ยวกับภาษา PHP .......................................................... 111 4.1 ประวัตค ิ วามเป็ นมาของ PHP ..................................................................................... 111 4.2 การเตรียมตัวก่อนเขียนเว็บไซต์ด้วยภาษา PHP .......................................................... 111 4.2.1 การติดตัง้ โปรแกรม AppServ ......................................................................... 111 4.2.2 การติดตัง้ โปรแกรม Adobe Dreamweaver CS5.5 ......................................... 113 4.2.3 แนวทางการเขียนโปรแกรมเว็บไซต์ภาษา PHP ร่วมกับ SCILAB.................... 115 4.3 เริ่มต้นกับการเขียนภาษา PHP .................................................................................. 116 4.3.1 การแสดงผล .................................................................................................. 116 4.3.2 การเขียนคอมเมนต์ ........................................................................................ 116 4.3.3 การกําหนดตัวแปร ......................................................................................... 117 4.3.4 การใช้เครื่องหมายอัญประกาศเดี่ยวและเครื่องหมายอัญประกาศ ...................... 117 4.3.5 การนิยามตัวแปรล่วงหน้ า ............................................................................... 118
4.3.6 แบบชนิดข้อมูล .............................................................................................. 119 4.3.7 ตัวดําเนินการเลขคณิต .................................................................................... 119 4.3.8 ตัวดําเนินการเพิ่ม/ลดค่า ................................................................................. 119 4.3.9 ตัวดําเนินการเปรียบเทียบ............................................................................... 120 4.3.10 ตัวดําเนินการทางตรรกะ ............................................................................... 121 4.3.11 การทดสอบเงื่อนไข ...................................................................................... 121 4.3.12 การทําซํา้ ..................................................................................................... 125 4.4 ฟั งก์ชน ั และการใช้งาน ............................................................................................... 127 4.4.1 การสร้างฟั งก์ชัน ............................................................................................ 129 4.4.2 ฟั งก์ชันที่เกี่ยวกับสายอักขระ .......................................................................... 130 4.4.3 ฟั งก์ชันที่เกี่ยวกับตัวเลข ................................................................................. 134 4.5 การจัดการไฟล์ .......................................................................................................... 135 4.5.1 การสร้างไฟล์ ................................................................................................. 135 4.5.2 การอ่านไฟล์ .................................................................................................. 135 4.5.3 การลบไฟล์ .................................................................................................... 136 4.5.4 การใช้งานโปรแกรมภายนอก .......................................................................... 136 4.6 สรุปท้ายบท .............................................................................................................. 137 4.7 แบบฝึ กหัดท้ายบท .................................................................................................... 137
บทที่ 5 การสร้างสื่อการสอนผ่านเว็บไซต์.............................................................. 139 5.1 การบวก/ลบ/คูณ/หาร ของเลขสองจํานวน .................................................................. 139 5.2 การหาดีเทอร์มิแนนต์และอินเวอร์สของเมทริกซ์ ......................................................... 145 5.2.1 หน้ าเพจกําหนดขนาดของเมทริกซ์ .................................................................. 145 5.2.2 หน้ าเพจสําหรับหาดีเทอร์มิแนนต์และอินเวอร์สของเมทริกซ์ขนาด 2×2 ............ 149 5.2.3 หน้ าเพจสําหรับหาดีเทอร์มิแนนต์และอินเวอร์สของเมทริกซ์ขนาด 3×3 ............ 153 5.2.4 ทดสอบการใช้งาน .......................................................................................... 159 ุ สมบัติของเมทริกซ์ ............................................................................... 160 5.3 การพิสูจน์คณ 5.3.1 การพิสูจน์คุณสมบัติ (kA)T = kAT................................................................. 160 5.2.2 การพิสูจน์คุณสมบัติ (A+B)T = AT + BT ..................................................... 170
5.2.3 การพิสูจน์คุณสมบัติ (AB)T = ATBT .............................................................. 183 5.3 การหาค่าลอการิทึมฐานใดๆ ....................................................................................... 184 5.4 การบวกและลบของสมการพหุนาม ............................................................................ 190 5.5 การวาดกราฟสองมิติ ................................................................................................. 196 5.6 สรุปท้ายบท .............................................................................................................. 201 5.7 แบบฝึ กหัดท้ายบท .................................................................................................... 202
บทที่ 6 ความรู้เบื้องต้นโปรแกรม SWISH MAX ................................................ 203 6.1 ประวัตค ิ วามเป็ นมาของโปรแกรม SWISH MAX ........................................................ 203 6.2 การติดตัง้ โปรแกรม SWISH MAX4 .......................................................................... 204 6.3 ส่วนต่อประสานกับผ้ใู ช้ของโปรแกรม SWISH MAX4 ................................................ 207 6.4 การสร้างชิน ้ งานด้วยโปรแกรม SWISH MAX4 .......................................................... 213 6.4.1 การแทรกไฟล์รูปภาพ ..................................................................................... 214 6.4.2 การแทรกไฟล์เสียง......................................................................................... 216 6.4.3 การแทรกไฟล์วีดีโอ ........................................................................................ 217 6.4.4 การแทรกข้อความ .......................................................................................... 218 6.4.5 การวาดเส้นและวาดรูป ................................................................................... 220 6.4.6 การบันทึกชิน ้ งาน .......................................................................................... 221 6.4.7 การส่งออกชิน ้ งาน ......................................................................................... 221 6.5 การใส่ลูกเล่น............................................................................................................ 221 6.5.1 ตัวอย่างการใส่ลูกเล่นให้กบ ั ชิน ้ งาน ................................................................. 222 6.6 การใส่สคริปต์เบื้องต้น............................................................................................... 223 6.6.1 การใส่สคริปต์เกี่ยวกับการควบคุมการแสดงผล ................................................ 223 6.6.2 การใส่สคริปต์เพื่อสร้างการเชื่อมโยง ................................................................ 225 6.6.3 การใส่สคริปต์เกี่ยวกับเสียง ............................................................................ 226 6.7 สรุปท้ายบท .............................................................................................................. 226 6.8 แบบฝึ กหัดท้ายบท .................................................................................................... 227
บทที่ 7 การสร้างสื่อการสอนด้วยโปรแกรม SWISH MAX และ SCILAB........... 229 7.1 ประวัตค ิ วามเป็ นมาของแอคชันสคริปต์....................................................................... 229
7.2 ขัน ้ ตอนการเขียนสคริปต์โปรแกรม SWISH MAX ร่วมกับ SCILAB .............................. 229 7.2.1 การส่งหรือโหลดข้อมูลระหว่างไฟล์ภาพเคลื่อนไหวแบบแฟลชกับไฟล์ PHP........ 230 7.2.2 ตัวอย่างการสร้างเว็บไซต์ท่ม ี ีภาพเคลื่อนไหวแบบแฟลชร่วมกับ SCILAB........... 230 7.3 สรุปท้ายบท .............................................................................................................. 247 7.4 แบบฝึ กหัดท้ายบท .................................................................................................... 248
บรรณานุกรม ....................................................................................................... 249
1
บทที่ 1 พื้นฐานการใช้งานโปรแกรม SCILAB บทนี้จะสรุปพื้นฐานการใช้งานโปรแกรม SCILAB ที่จําเป็ นสําหรับการนํ าไปใช้งานร่วมกับโปรแกรม
ต่างๆ เพื่อสร้างสื่อการเรียนการสอนในบทต่อไป โดยบทนี้ จะเริ่มต้นกล่าวถึงประวัติความเป็ นมาของ โปรแกรม SCILAB จากนั ้ นจะอธิบายการสร้างตัวแปรสเกล่าร์ เวกเตอร์ เมทริกซ์ และพหุนาม
การใช้ตัวดําเนิ นการทางคณิ ตศาสตร์แบบต่างๆ รวมถึงวิธีการเขียนโปรแกรม และการวาดกราฟสอง
มิติและสามมิติด้วยโปรแกรม SCILAB
1.1 ประวัติความเป็ นมาของโปรแกรม SCILAB SCILAB เป็ นโปรแกรมภาษาขัน ้ สูงที่ถูกพัฒนาขึ้นโดยความร่วมมือกันระหว่างนั กวิจัยจากสถาบัน
Institut National De Recherche En Informatique Et En Automatique (INRIA) และ École
nationale des ponts et chausses (ENPC) ประเทศฝรัง่ เศส ตัง้ แต่ ค.ศ. 1989 [1] โดยมีจุดมุ่งหมาย
เพื่อใช้ในการคํานวณเชิงตัวเลขและแสดงผลกราฟิ กที่ซับซ้อน ดังนั ้นโปรแกรม SCILAB จึงเหมาะ
สําหรับการใช้งานทางด้านวิทยาศาสตร์และวิศวกรรมศาสตร์ นอกจากนี้ โปรแกรม SCILAB ยังเป็ น
โปรแกรมที่ให้ฟรี1 และอนุญาตให้ผู้ใช้สามารถนํ าไปพัฒนาต่อยอดได้ ผู้สนใจสามารถดาวน์โหลด
ไฟล์โปรแกรม SCILAB และข้อมูลที่เกี่ยวข้องต่างๆ ได้จากเว็บไซต์ http://www.scilab.org หรือที่ http://home.npru.ac.th/piya/webscilab
สิ่งที่สําคัญอีกประการหนึ่ งของโปรแกรม SCILAB2 คือความสามารถในการทํางานที่ใกล้
เคียงกับโปรแกรม MATLAB [3] ซึ่งเป็ นโปรแกรมที่นิยมมากสําหรับผู้ใช้งานทางด้านวิทยาศาสตร์ และวิศ วกรรมศาสตร์ แต่ค่า ลิข สิท ธิ ซ ์ อฟต์แ วร์ข องโปรแกรม MATLAB นั ้ น มีร าคาแพงมาก
1
ไม่ต้องเสียเงินค่าลิขสิทธิซ์ อฟต์แวร์ แต่การใช้งานต้องอยู่ภายใต้เงื่อนไขของใบอนุญาต CeCILL [2]
2
นอกจากนี้ ยังมีโปรแกรมอื่นๆ อีกที่ให้ฟรี (freeware) และทํางานคล้ายกับโปรแกรม SCILAB เช่น โปรแกรม Octave (http://www.octave.org) อย่างไรก็ตามจากการทดลองใช้งานพบว่าโปรแกรม SCILAB สามารถทํางานได้เป็ นอย่างดี รวมทัง้ ได้รับการพัฒนาอย่างต่อเนื่ องตลอดเวลา
2 เพราะฉะนั ้นในปั จจุบันนี้ หลายๆ หน่ วยงานทัง้ ภาคอุตสาหกรรมและภาคการศึกษาทัง้ ในและนอก
ประเทศได้เริ่มนํ าโปรแกรม SCILAB มาช่วยในการทํางาน การเรีย นการสอน และการทําวิจัย
ทัง้ นี้ เป็ นเพราะว่าโปรแกรม SCILAB สามารถทํางานได้อย่างมีประสิทธิภาพ และไม่ต้องเสียเงิน ค่าลิขสิทธิซ์ อฟต์แวร์
โดยทัว่ ไปโปรแกรม SCILAB มีข้อดีสรุปได้ดังนี้
มีความง่ายต่อการเรียนรู้และทําความเข้าใจ มีขน ั ้ ตอนการเขียนโปรแกรมไม่ยุ่งยาก มีฟังก์ชัน (function) สําหรับการคํานวณทางคณิ ตศาสตร์จํานวนมากพร้อมใช้งาน มีกล่องเครื่องมือ (toolbox) จํานวนมากที่ประกอบด้วยฟั งก์ชันต่างๆ ที่จําเป็ นสําหรับการแก้ไข ปั ญหาทางด้านวิทยาศาสตร์และวิศวกรรมศาสตร์ เช่น กล่องเครื่องมือด้านการควบคุมทนทาน (robust control), กล่องเครื่องมือด้านการประมวลผลสัญญาณ (signal processing), และ กล่องเครื่องมือด้านการหาค่าเหมาะที่สุด (optimization) เป็ นต้น
ประมวลผลข้อมูลที่อยู่ในรูปของเมทริกซ์ (matrix) และในรูปเชิงสัญลักษณ์ (symbolic) ได้ อย่างรวดเร็วและมีประสิทธิภาพ
สามารถพัฒนาฟั งก์ชันใหม่ๆ ขึน ้ มาใช้งานร่วมกับโปรแกรม SCILAB ได้โดยง่าย ใช้งานร่วมกับโปรแกรมภาษาฟอร์แทรน (FORTRAN), ภาษาซี (C) และ MATLAB ได้ ใช้งานร่วมกับโปรแกรม LabVIEW เพื่อทําการเชื่อมต่อกับอุปกรณ์ฮาร์ดแวร์ได้ สร้างโปรแกรมสําเร็จรูปสําหรับการจําลองระบบ (system simulation) ได้โดยใช้เครื่องมือของ โปรแกรม SCILAB ที่เรียกว่า “Xcos”
พัฒนาต่อยอดได้เนื่ องจากมีรหัสต้นฉบับ (source code) และคู่มือการใช้งานให้ ซึ่งสามารถ ดาวน์โหลดได้จากเว็บไซต์ http://www.scilab.org
จากที่กล่าวมาข้างต้นจะเห็นได้ว่าโปรแกรม SCILAB ทํางานได้หลากหลาย อย่างไรก็ตาม
บทนี้ จะสรุปเฉพาะพื้นฐานการใช้งานโปรแกรม SCILAB เพื่อให้ผู้อ่านสามารถนํ าไปใช้งานได้อย่าง
ถูกต้องและรวดเร็ว สําหรับผู้สนใจรายละเอียดของพื้นฐานการใช้งานโปรแกรม SCILAB สามารถ
ศึกษาได้จาก [4] นอกจากนี้ โปรแกรม SCILAB ยังสามารถใช้งานได้ในหลายระบบปฏิบัติการ เช่น ระบบปฏิบัติการวินโดวส์ (Windows XP, Vista, 7), ระบบปฏิบัติการลีนุกซ์ (Linux), และระบบ
ปฏิบัติการ Mac OS X โดยหนั งสือเล่มนี้ จะอ้างอิงถึงโปรแกรม SCILAB เวอร์ชัน 4.1.23 ที่ทํางาน
บนระบบปฏิบัติการวินโดวส์เท่านั ้น 3
ดาวน์โหลดได้ท่ี http://home.npru.ac.th/piya/webscilab/download.php ขนาด 15.3 เมกะไบต์
3
รูปที่ 1.1 การเลือกสารบบที่ต้องการติดตัง้ โปรแกรม SCILAB
1.2 การติดตัง้ โปรแกรม SCILAB ไฟล์ติดตัง้ โปรแกรม SCILAB เวอร์ชัน 4.1.2 นั่ นคือ “scilab-4.1.2.exe” (15.3 MB) สามารถ ดาวน์โหลดได้ท่เี ว็บไซต์ home.npru.ac.th/piya/webscilab/download.php หรือ www.scilab.org
และเมื่อได้ไฟล์ scilab-4.1.2.exe มาแล้ว ก็ให้ทําการดับเบิลคลิกที่ช่ ือไฟล์นี้ เพื่อติดตัง้ โปรแกรม SCILAB โดยจะต้องติดตัง้ โปรแกรมนี้ ไว้ท่ีสารบบ C:\WINDOWS ตามรูปที่ 1.1 จึงจะสามารถ
นํ ามาประยุกต์ใช้งานร่วมกับโปรแกรมอื่นๆ เพื่อสร้างสื่อการเรียนการสอนที่อธิบายในบทต่อไปได้ จากนั ้นกดป่ ุม Next ไปเรื่อยๆ จนกระทัง่ ติดตัง้ โปรแกรม SCILAB เสร็จ
1.3 การสร้างสเกล่าร์ เวกเตอร์ และเมทริกซ์ ค่าสเกลาร์ (scalar) สามารถกําหนดลงในตัวแปรได้ทันที เช่น ถ้าต้องการกําหนดให้ตัวแปร a มีค่า เท่ากับเลขเชิงซ้อน 2 + 3i และตัวแปร b มีค่าเท่ากับ 5 ก็ทําได้ดังนี้ -->a = 2 + 3*%i
//กําหนดให้ a = 2 + 3i
a 2. + 3.i -->b = 5; -->
//กําหนดให้ b = 5
4 เมื่อ %i คือค่าคงที่พิเศษที่ใช้ในการแสดงตัวเลขเชิงซ้อน โดยมีค่าเท่ากับหน่ วยจินตภาพ (imaginary unit) นั่ นคือ i = −1 ส่วนเครื่องหมายเครื่องหมายอัฒภาค (semicolon) “ ; ” ที่ใช้ปิด
ท้ายคําสั่งที่สองเป็ นการบอกให้โปรแกรมไม่ต้องแสดงผลลัพธ์ออกทางหน้ าต่างคําสั่ง ในขณะที่
เครื่องหมายทับสองอัน (double slash) “ // ” หรือเครื่องหมายคอมเมนต์ (comment) จะบอกให้ โปรแกรม SCILAB ไม่ทําการประมวลผลต่อคําสัง่ หรือข้อความที่อยู่หลังเครื่องหมายคอมเมนต์นี้
ในการใช้งานโปรแกรม SCILAB เครื่องหมายขึ้นบรรทัดใหม่ “ ... ” ซึ่งมีลักษณะเป็ น
จุดที่เรียงต่อกันสามจุด จะมีประโยชน์มากในการเขียนโปรแกรมโดยเฉพาะอย่างยิ่งเมื่อคําสั่งที่ใช้มี
้ สุด ดังนั ้น ความยาวมาก เครื่องหมายนี้ เอาไว้ใช้ต่อท้ายคําสั่งเพื่อบอกว่าคําสั่งในบรรทัดนั ้นยังไม่สิน
ถึงแม้ว่าจะกดป่ ุม Enter หลังเครื่องหมายขึ้นบรรทัดใหม่นี้ โปรแกรม SCILAB ก็ยังไม่นําคําสั่งนั ้น
ไปประมวลผล แต่จะรอรับข้อมูลส่วนที่เหลือที่จะเขียนต่อไปในบรรทัดใหม่จนกระทั่งหมดคําสั่งแล้ว กดป่ ุม Enter อีกครัง้ จากนั ้นโปรแกรม SCILAB จึงนํ าข้อความทัง้ หมดมารวมกันเป็ นประโยค
คําสัง่ เดียว แล้วจึงนํ าไปประมวลผล ตัวอย่างเช่น -->x = 5;
y = 3;
-->z = x + y z
//หาผลบวกของตัวแปร x กับตัวแปร y แล้วนํ าผลลัพธ์ท่ไี ด้ //ไปบรรจุไว้ในตัวแปร z
= 8.
-->z = x + ...
//หมายถึงยังไม่สิน ้ สุดคําสั่ง โปรแกรม SCILAB ยังไม่นําข้อมูลนี้ ไปประมวลผล
-->y
้ สุดคําสัง่ ที่ป้อนจากบรรทัดก่อนหน้ านี้ //เมื่อกดป่ ุม Enter ก็ถือว่าเป็ นการสิน
z
=
//โปรแกรม SCILAB จึงนํ าคําสัง่ ทัง้ หมดคือ z = x + y ไปประมวลผล
8.
//ผลลัพธ์ท่ไี ด้มีค่าเท่ากัน
นอกจากนี้ โปรแกรม SCILAB ได้เตรียมค่าคงที่พิเศษอื่นๆ เพื่อรองรับการคํานวณทาง
คณิ ตศาสตร์ ได้แก่
%pi คือค่าอัตราส่วนระหว่างความยาวเส้นรอบวงกับเส้นผ่านศูนย์กลางของวงกลม มีค่าเท่ากับ 3.1415927
%e คือค่าคงที่ตรีโกณมิติ (trigonometric constant) มีค่าเท่ากับ 2.7182818 %inf ใช้แทนตัวเลขที่มีค่าเป็ นอนั นต์ (infinity) นั่ นคือ %inf = ∞ เช่น ค่า 1/0 %eps มาจากคําว่า “epsilon” คือค่าหน่ วยย่อยขนาดเล็กสุด (≈ 2.22×10-16) ที่โปรแกรม
SCILAB รองรับได้ กล่าวคือตัวเลขที่มีค่าน้ อยกว่าค่า %eps โปรแกรม SCILAB ถือว่ามีค่า เท่ากับ 0
5 %nan ใช้แทนค่าที่ไม่สามารถแสดงให้อยู่ในรูปของตัวเลขได้ (มาจากคําว่า Not-A-Number) เช่น ค่า 0/0
ans คือตัวแปรชั่วคราว (temporary variable) ที่เก็บค่าของผลลัพธ์ท่ีได้จากการคํานวณของ คําสัง่ ซึ่งจะถูกนํ ามาใช้โดยอัตโนมัติ ในกรณี ท่ไี ม่มีการระบุตัวแปรมารับค่าของผลลัพธ์
%t หรือ %T ค่าคงตัวบูลน ี (Boolean constant) ที่แสดงว่าเป็ นจริง (True) %f หรือ %F ค่าคงตัวบูลน ี ที่แสดงว่าเป็ นเท็จ (False) เวกเตอร์ (vector) คือเมทริกซ์ (matrix) ขนาดหนึ่ งแถว หรือเมทริกซ์ขนาดหนึ่ งแนวตัง้
เวกเตอร์แถว (row vector) สามารถสร้างได้โดยการใช้เครื่องหมายจุลภาค (comma) “ , ” หรือ ช่องว่าง (space) เป็ นตัวแยกสมาชิกแต่ละสมาชิกในเวกเตอร์แถว ตัวอย่างเช่น -->v = [1, 2, -3] v = 1. 2. - 3. -->v = [1 2 v = 1. 2.
-3] - 3.
ถ้าต้องการทราบว่าเวกเตอร์ v มีความยาวเท่าใดหรือมีจํานวนสมาชิกทัง้ หมดเท่าใด ก็ทําได้โดยการ ใช้คําสัง่ length ดังนี้
-->length(v) ans = //หมายความว่าเวกเตอร์ v มีสมาชิกสามตัว
3.
ในขณะที่เวกเตอร์แนวตัง้ (column vector) สร้างได้โดยการทรานส์โพส (transpose)
เวกเตอร์แถวซึ่งใช้เครื่องหมายอะพอสทรอฟี (apostrophe) “ ' ” ตามหลังตัวแปรเวกเตอร์แถว
หรือสามารถสร้างเวกเตอร์แนวตัง้ ขึ้นมาได้โดยตรง โดยใช้เครื่องหมายอัฒภาค “ ; ” เป็ นตัวแยก
สมาชิกแต่ละสมาชิกในเวกเตอร์แนวตัง้ เช่น -->v = [1 2 3];
//สร้างเวกเตอร์แถว v
-->v'
//ใช้ทรานส์โพสกับเวกเตอร์แถวเพื่อให้ได้เป็ นเวกเตอร์แนวตัง้
ans
=
1.
6 2. 3. //สร้างเวกเตอร์แนวตัง้ ขึน ้ มาโดยใช้เครื่องหมายเซมิโคล่อน
-->w = [1; 2; -3] w
= 1. 2. - 3. นอกจากการกําหนดค่าโดยตรงให้กับเวกเตอร์แล้ว ผู้ใช้ยังสามารถกําหนดค่าของเวกเตอร์
ให้มีค่าเพิ่มขึ้นหรือลดลงแบบอัตโนมัติได้ โดยการใช้เครื่องหมายทวิภาค (colon) “ : ” ซึ่งมีรูปแบบ การใช้งานดังนี้
ชื่อตัวแปร = ค่าเริ่มต้น : ค่าที่เพิ่มขึ้น (หรือค่าที่ลดลง) : ค่าสุดท้าย ในกรณี ท่ไี ม่มก ี ารกําหนดค่าที่เพิ่มขึ้น (หรือค่าที่ลดลง) โปรแกรม SCILAB จะกําหนดให้เป็ นค่าที่ เพิ่มขึ้นเท่ากับ +1 โดยอัตโนมัติ (ค่าโดยปริยาย) ตัวอย่างเช่น
-->z = 1:2:10 z
= 1.
3.
-->z = 0:5 z
= 0.
1.
-->z = 5:0 z
//เริ่มต้นที่ค่า 1 แล้วเพิ่มขึน ้ ทีละ +2 จนกระทัง่ ถึงค่าที่มากสุดที่ไม่เกิน 10 5.
7.
9.
//เริ่มต้นที่ค่า 0 แล้วเพิ่มขึน ้ ทีละ +1 จนกระทัง่ ถึง 5 2.
3.
4.
5.
//ค่าเริ่มต้นที่ 5 ไม่สามารถเพิ่มขึน ้ ทีละ +1 จนถึง 0 ได้ ดังนั ้นผลลัพธ์ท่ไี ด้ //จึงมีค่าเท่ากับเมทริกซ์ว่าง (empty matrix) นั่ นคือมีจํานวนแถวกับจํานวน
= []
//แนวตัง้ เท่ากับศูนย์
เมทริกซ์ขนาด m×n คือเมทริกซ์ท่ีมีจํานวน m แถว และ n แนวตัง้ เช่น ถ้าต้องการสร้าง
เมทริกซ์ขนาด 2×3 ก็สร้างได้ เช่น -->A = [1 2 3; 4 5 6] A
=
7 1.
2.
3.
4.
5.
6.
และหากต้องการทราบว่าเมทริกซ์ A มีขนาดเท่าใด ก็ทําได้โดยใช้คําสัง่ size ดังนี้ -->size(A) ans
=
2.
งานดังนี้
3.
//บอกว่าเมทริกซ์ A มีขนาด 2×3 (หรือ 2 แถว และ 3 แนวตัง้ )
นอกจากนี้ ผู้ใช้ยังสามารถอ้างถึงสมาชิกแต่ละตัวในเมทริกซ์ได้โดยตรงตามรูปแบบการใช้
-->b = A(2, 3) b
= 6.
คําสั่งนี้ เป็ นการบอกโปรแกรม SCILAB ให้นําค่าของสมาชิกในแถวที่สองและแนวตัง้ ที่สามของ
เมทริกซ์ A ไปบรรจุไว้ในตัวแปร b ในทํานองเดียวกันผู้ใช้ยังสามารถกําหนดค่าให้แก่สมาชิกแต่ละ ตัวในเมทริกซ์ได้โดยตรง เช่น -->A(2, 3) = 10 A
= 1.
2.
3.
4.
5.
10.
ซึ่งเป็ นการกําหนดให้ค่าของสมาชิกในแถวที่สองและแนวตัง้ ที่สามของเมทริกซ์ A มีค่าเท่ากับ 10 ดังนั ้นเมทริกซ์ A จึงมีผลลัพธ์ตามที่แสดงไว้ข้างต้น
1.3.1 การหาทรานส์โพส ดีเทอร์มิแนนต์ อินเวอร์สการคูณ ของเมทริกซ์ ทรานส์โพสเมทริกซ์ (matrix transpose) เป็ นการเปลี่ยนแนวตัง้ ให้เป็ นแถว หรือการเปลี่ยนแถว
ให้เป็ นแนวตัง้ โปรแกรม SCILAB สามารถทําการทรานส์โพสเมทริกซ์ได้ 2 รูปแบบ คือ
1) ทรานส์โพสแบบสังยุค (conjugate transpose) จะใช้เครื่องหมาย “ ' ” เป็ นตัวดําเนิ นการ โดยทําหน้ าที่สร้างทรานส์โพสเมทริกซ์ พร้อมทัง้ ทําการสังยุคของตัวเลขเชิงซ้อนด้วย
2) ทรานส์โพสแบบธรรมดา (transpose) จะใช้เครื่องหมาย “ .' ” เป็ นตัวดําเนิ นการ โดยจะสร้าง เฉพาะทรานส์โพสเมทริกซ์เท่านั ้น
8 ตัวอย่างการใช้งานเช่น -->A = [1 + 2*%i; 3; 2 - %i]; //ใช้ทรานส์โพสแบบสังยุค
-->A' ans
=
1. - 2.i
3.
2. + i
//ใช้ทรานส์โพสแบบธรรมดา
-->A.' ans
//ทําการสังยุคของตัวเลขเชิงซ้อนด้วย
=
1. + 2.i
3.
2. - i
สําหรับการหาดีเทอร์มิแนนต์ (determinant) และอินเวอร์สการคูณของเมทริกซ์ A ทําได้
โดยการใช้คําสัง่ det(A) และ inv(A) ตามลําดับ เช่น -->A = [1 2; 3 4];
//สร้างเมทริกซ์ A
-->det(A)
//หาดีเทอร์มิแนนต์ ของเมทริกซ์ A
ans
=
- 2. //หาอินเวอร์สการคูณของเมทริกซ์ A
-->inv(A) ans
=
- 2. 1.5
1. - 0.5
1.3.2 การแก้ระบบสมการเชิงเส้น โปรแกรม SCILAB สามารถนํ ามาใช้แก้ไขปั ญหาระบบสมการเชิงเส้น (linear equation system)
ได้โดยง่าย ตัวอย่างเช่น ถ้าต้องการแก้สมการสองตัวแปรเพื่อหาค่าของตัวแปร x1 และ x2 จาก 2x1 + x2 = 3
(1.1)
x1 – x2 = 3
(1.2)
9 ถ้าใช้หลักการแก้สมการสองตัวแปรทั่วไปเพื่อแก้สมการที่ (1.1) และ (1.2) จะได้ผลลัพธ์คือ x1 = 2
และ x2 = -1 เช่นเดียวกันผู้ใช้สามารถแก้สมการทัง้ สองนี้ได้โดยใช้หลักการของเมทริกซ์ดังนี้ สมการที่ (1.1) และ (1.2) สามารถเขียนให้อยู่ในรูปของเมทริกซ์ได้คือ
⎡2 1 ⎤ ⎡x1 ⎤ ⎡3⎤ ⎢⎣1 -1⎥⎦ ⎢⎣x2 ⎥⎦ = ⎢⎣3⎥⎦ A
(1.3)
b
x
หรือ Ax = b ผลเฉลยของสมการ (1.3) หาได้โดยการนํ า A-1 (อินเวอส์การคูณของเมทริกซ์ A) มาคูณทัง้ สองข้างของสมการ (.3) ก็จะได้ผลลัพธ์เป็ น A Ax = A b นั่ นคือ x = A b ดังนั ้น -1
-1
-1
คําตอบของสมการที่ (1.1) และ (1.2) หาได้จากการใช้ชุดคําสัง่ ดังนี้
-->A = [2 1; 1 -1];
//เมทริกซ์ขนาด 2×2
-->b = [3; 3];
//เวกเตอร์แนวตัง้ ขนาด 2×1
-->x = inv(A)*b
//คําตอบของสมการสองตัวแปรเป็ นเวกเตอร์แนวตัง้ ขนาด 2×1
x
= 2.
- 1. ผลลัพธ์ท่ไี ด้คือ x1 = 2 และ x2 = -1
1.4 พหุนาม พหุนาม (polynomial) คือผลรวมของจํานวนที่เขียนในรูปการคูณของค่าคงตัวกับตัวแปรตัง้ แต่ 1 ตัวขึ้นไป โดยเลขชีก ้ ําลังของตัวแปรแต่ละตัวมีค่าเป็ นศูนย์หรือจํานวนเต็มบวก อย่างไรก็ตามในที่นี้
จะพิจารณาเฉพาะกรณี ที่พหุนามเป็ นฟั งก์ชันของตัวแปรเพียงตัวเดียวเท่านั ้น กล่าวคือโปรแกรม
SCILAB จะรองรับพหุนามที่มีรูปแบบดังนี้
y = a0 +a1x +a2x2 +… +anxn ี ส ี มาชิกแต่ละตัวเป็ นค่าสัมประสิทธิข์ องพหุนาม, x เมื่อ a = [a0 a1 a2 ... an] คือเวกเตอร์ท่ม
คือตัวแปรพหุนาม, n คือดีกรี (degree) ของพหุนาม, และ y คือสมการพหุนาม ในโปรแกรม SCILAB สมการพหุนามสร้างได้โดยใช้คําสัง่ poly ดังนี้
10
y = poly(a, "x", [flag])
ซึ่งมีรูปแบบการใช้งานอยู่ 2 แบบ คือ 1) ถ้าพารามิเตอร์ a เป็ นเวกเตอร์ ผลลัพธ์ท่ีได้คือสมการพหุนาม y ที่ถูกกําหนดโดยพารามิเตอร์
x และ flag เมื่อ x คือตัวแปรพหุนาม และ flag เป็ นตัวเลือก (option) ที่มีการเรียกใช้ งานดังนี้
flag = "coeff" สร้างสมการพหุนามจากค่าสัมประสิทธิท ์ ่ก ี ําหนดโดยเวกเตอร์ a flag = "roots" (ค่าโดยปริยาย) สร้างสมการพหุนามจากคําตอบของสมการพหุนามที่ ตัวอย่างเช่น
กําหนดโดยเวกเตอร์ a
-->q = poly([1 2 3], "x", "coeff") //สร้างสมการพหุนามจากค่าสัมประสิทธิ ์ q
= 2 1 + 2x + 3x
-->p = poly([1 p
2], "s")
//สร้างสมการพหุนามจากคําตอบของสมการพหุนาม
= 2 2 - 3s + s
//นั่ นคือ s = 1 และ s = 2 เป็ นคําตอบของ s2 – 3s + 2 = 0 //คําสัง่ ที่ใช้หาคําตอบของสมการพหุนาม p
-->roots(p) ans = 1. 2.
2) ถ้าพารามิเตอร์ a เป็ นเมทริกซ์ ผลลัพธ์ท่ีได้คือสมการลักษณะเฉพาะ (characteristic equation) ของเมทริกซ์ a ซึ่งในทางคณิ ตศาสตร์สมการลักษณะเฉพาะของเมทริกซ์ A หาได้จาก การการแก้สมการ det(A – λI) = 0 โดย λ คือค่าคงตัวใดๆ และ I คือเมทริกซ์เอกลักษณ์ ที่มีขนาดกับเมทริกซ์ A เช่น ถ้าให้เมทริกซ์ A = ⎡
1 2⎤ จะได้ว่าสมการลักษณะเฉพาะของ 4⎦ ⎥
⎣⎢3
เมทริกซ์ A คือสมการ λ -5λ -2 = 0 โปรแกรม SCILAB สามารถหาสมการลักษณะเฉพาะ 2
ของเมทริกซ์ A ได้โดยใช้คําสัง่ poly ดังนี้
11 -->A = [1
2;
3
4];
-->y = poly(A, "x") y
= 2 //ผลลัพธ์เท่ากันกับสมการ λ -5λ - 2 = 0 เมื่อแทนค่า x = λ 2
- 2 - 5x + x
1.5 การดําเนินการทางคณิตศาสตร์ การคํานวณทางคณิ ตศาสตร์ระหว่างค่าสเกลาร์กับค่าสเกลาร์ เครื่องหมายที่ใช้ในการคํานวณกับ เครื่องหมายที่ใช้ในโปรแกรม SCILAB จะแตกต่างกันเล็กน้ อยตามตารางที่ 1.1 ตัวอย่างเช่น
-->a = 3; -->b = 2; -->M = [a + b, a - b, a * b; a \b, a /b, a^b] M
= 5.
1.
6.
0.6666667
1.5
9.
ในขณะที่ตัวดําเนิ นการที่ใช้ในการคํานวณทางคณิ ตศาสตร์สําหรับเมทริกซ์ แสดงในตาราง
ที่ 1.2 ตัวอย่างเช่น
-->A = [1 2 3; 4 5 6]; -->B = [1 1 1; -1 -1 -1]; -->A + B ans = 2.
3.
4.
3.
4.
5.
0.
1.
2.
5.
6.
7.
-->A – B ans
=
12 ตารางที่ 1.1 การดําเนิ นการที่ใช้ในการคํานวณทางคณิ ตศาสตร์ของค่าสเกลาร์ การดําเนินการ
รูปแบบพีชคณิต
รูปแบบของ SCILAB
การบวก (addition)
a+b
a + b
การลบ (subtraction)
a–b
a – b
การคูณ (multiplication)
a×b
a * b
b
การหารซ้าย (left division)
a \ b
a a
การหารขวา (right division)
a / b
b ab
การยกกําลัง (exponentiation)
a^b หรือ a**b
ตารางที่ 1.2 ตัวดําเนิ นการที่ใช้ในการคํานวณทางคณิ ตศาสตร์ของเมทริกซ์ ตัวดําเนินการ
คําอธิบาย
+
การบวก (addition)
–
การลบ (subtraction)
*
การคูณ (multiplication)
.*
การคูณในระดับสมาชิก (element-wise multiplication)
.*.
การคูณแบบโครเนคเกอร์ (Kronecker product)
\
การหารซ้าย (left division)
.\
การหารซ้ายในระดับสมาชิก (element-wise left division)
.\.
การหารซ้ายแบบโครเนคเกอร์ (Kronecker left division)
/
การหารขวา (right division)
./
การหารขวาในระดับสมาชิก (element-wise right division)
./.
การหารขวาแบบโครเนคเกอร์ (Kronecker right division)
^ หรือ ** .^
-->A * B
การยกกําลัง (exponentiation) การยกกําลังในระดับสมาชิก (element-wise exponentiation)
//จํานวนแนวตัง้ ของตัวตัง้ ไม่เท่ากับจํานวนแถวของตัวคูณ
!--error 10 Inconsistent multiplication.
13 -->A * B' ans
=
6.
- 6.
15.
- 15. //การคูณในระดับสมาชิก
-->A .* B ans
=
1.
2.
3.
– 4.
– 5.
– 6. //การหารซ้ายในระดับสมาชิก
-->A .\ B ans
=
1. - 0.25
0.5
0.3333333
- 0.2
- 0.1666667 //การยกกําลังในระดับสมาชิก
-->A .^ B ans
=
1.
2.
3.
0.25
0.2
0.1666667
จะเห็นได้ว่าการดําเนิ นการในระดับสมาชิกเกิดขึน ้ ได้ ก็ต่อเมื่อเมทริกซ์ทงั ้ สองมีขนาดเท่ากัน
1.6 การดําเนินการทางคณิตศาสตร์ โปรแกรม SCILAB มีฟังก์ชันที่ใช้ในการคํานวณทางคณิ ตศาสตร์จํานวนมากพร้อมเรียกใช้งาน เช่น ฟั งก์ชันพื้นฐานที่เกี่ยวกับตัวเลข ฟั งก์ชันตรีโกณมิติ และฟั งก์ชันพื้นฐานทางสถิติ เป็ นต้น โดยมี
รายละเอียดดังต่อไปนี้
1.6.1 ฟั งก์ชน ั พื้นฐานที่เกี่ยวกับตัวเลข ตารางที่ 1.3 แสดงฟั งก์ชน ั พื้นฐานที่เกี่ยวกับตัวเลข ซึ่งมีตัวอย่างการใช้งานเช่น -->abs([1, %i, -2, -2*%i, 3 + 4*%i]) ans
=
1.
1.
2.
2.
5.
14 ตารางที่ 1.3 ตัวอย่างฟั งก์ชันพื้นฐานที่เกี่ยวกับตัวเลข ฟั งก์ชัน
คําอธิบาย
abs(x)
หาค่าสัมบูรณ์ (absolute value) ของตัวแปร x
sqrt(x)
หาค่ารากที่สอง (square root) ของตัวแปร x
modulo(m,n)
หาค่าเศษที่เหลือการหารตัวแปร n ด้วย m
ceil(x)
หาค่าจํานวนเต็มที่มีค่าใกล้กับค่า x ไปทางค่า ∞ มากที่สุด
floor(x)
หาค่าจํานวนเต็มที่มีค่าใกล้กับค่า x ไปทางค่า -∞ มากที่สุด
sign(x)
หาค่าเครื่องหมายของตัวแปร x
roots(p)
หาค่ารากหรือคําตอบของสมการพหุนาม p
real(x)
หาค่าจํานวนจริงของตัวแปร x
imag(x)
หาค่าจํานวนจินตภาพของตัวแปร x
conj(x)
หาค่าสังยุคของจํานวนจํานวนเชิงซ้อนของตัวแปร x
exp(x)
หาค่า ex ของตัวแปร x
log(x)
หาค่า log ฐาน e ของตัวแปร x
log2(x)
หาค่า log ฐาน 2 ของตัวแปร x
log10(x)
หาค่า log ฐาน 10 ของตัวแปร x
-->sqrt([2, 4, -1, -4]) ans
=
1.4142136
2.
i
2.i
-->real([0.1, %i, -1.5 + 2*%i, 2 - %i]) ans
=
0.1
0.
- 1.5
2.
-->imag([0.1, %i, -1.5 + 2*%i, 2 - %i]) ans
=
0.
1.
2.
- 1.
-->log([1, %e, 10, 20, 100]) ans
=
0.
1.
2.3025851
2.9957323
4.6051702
15 ตารางที่ 1.4 ฟั งก์ชันตรีโกณมิติและฟั งก์ชันตรีโกณมิติผกผัน ฟั งก์ชัน
คําอธิบาย
sin(x)
หาค่า sine ของตัวแปร x
cos(x)
หาค่า cosine ของตัวแปร x
tan(x)
หาค่า tangent ของตัวแปร x
asin(y)
หาค่า sine inverse ของตัวแปร y
acos(y)
หาค่า cosine inverse ของตัวแปร y
atan(y)
หาค่า tangent inverse ของตัวแปร y
-->log10([1, 2, 10, 20, 100]) ans
=
0.
0.30103
1.
1.30103
2.
1.6.2 ฟั งก์ชน ั ตรีโกณมิติ โปรแกรม SCILAB ได้เตรียมคําสั่งพื้นฐานสําหรับฟั งก์ชันตรีโกณมิติและฟั งก์ชันตรีโกณมิติผกผัน ไว้ตามตารางที่ 1.4 โดยค่ามุมที่ใช้หรือที่ได้รับจากฟั งก์ชันทางตรีโกณมิติจะต้องมีหน่ วยเป็ นเรเดียน (radian) ตัวอย่างเช่น
-->y = sin([0, 1, %pi/2, -%pi/2]) y
= 0.
0.8414710
1.
- 1.
-->x = asin(y) x
= 0.
1.
1.5707963
- 1.570796
//มีหน่ วยเป็ นเรเดียน
-->y = tan([0, %pi/6, %pi/4, %pi/3]) y
= 0.
0.5773503
1.
1.7320508
-->x = atan(y) x
= 0.
0.5235988
0.7853982
1.0471976
//มีหน่ วยเป็ นเรเดียน
16 ตารางที่ 1.5 ตัวอย่างฟั งก์ชันพื้นฐานทางสถิติ ฟั งก์ชัน
คําอธิบาย
min(x)
หาค่าตํ่าสุด (minimum) ของตัวเลขทัง้ หมดในตัวแปร x
max(x)
หาค่าสูงสุด (maximum) ของตัวเลขทัง้ หมดในตัวแปร x
mean(x)
หาค่าเฉลี่ย (mean) ของตัวเลขทัง้ หมดในตัวแปร x
median(x)
หาค่ามัธยฐาน (median) ของตัวเลขทัง้ หมดในตัวแปร x
variance(x)
หาค่าความแปรปรวน (variance) ของตัวเลขทัง้ หมดในตัวแปร x
sum(x)
หาค่าผลบวกของตัวเลขทัง้ หมดในตัวแปร x
cumsum(x)
หาค่าผลบวกสะสม (cumulative sum) ของตัวเลขทัง้ หมดในตัวแปร x
prod(x)
หาค่าผลคูณของตัวเลขทัง้ หมดในตัวแปร x
cumprod(x)
หาค่าผลคูณสะสม (cumulative product) ของตัวเลขทัง้ หมดในตัวแปร x
sort(x)
เรียงลําดับตัวเลขทัง้ หมดในตัวแปร x จากค่ามากไปหาค่าน้ อย
histplot(n,x)
วาดรูปฮิสโตแกรม (histogram) ของค่าทัง้ หมดในเวกเตอร์ x เป็ น จํานวน n ช่วงระหว่างค่าตํ่าสุดและค่าสูงสุดของเวกเตอร์ x
1.6.3 ฟั งก์ชน ั พื้นฐานทางสถิติ โปรแกรม SCILAB ได้เตรียมฟั งก์ชันสําหรับการใช้งานทางด้านสถิติ ตามที่แสดงในตารางที่ 1.5
ตัวอย่างเช่น
-->x = [3 1 4 9 2 5 7 8 6]; -->[min(x), max(x), mean(x), median(x), sum(x)] ans
= 1.
9.
5.
5.
45.
7.
6.
5.
-->sort(x) ans
=
9.
8.
4.
3.
2.
1.
ในการใช้งานทางด้านสถิติ คําสั่งที่นิยมใช้คือคําสั่ง histplot(n,x) ซึ่งเป็ นคําสั่งที่
ใช้วาดรูปฮิสโตแกรม (histogram) ของค่าทัง้ หมดในเวกเตอร์ x เป็ นจํานวน n ช่วงระหว่างค่าตํ่าสุด และค่าสูงสุดของเวกเตอร์ x ตัวอย่างเช่น
17
รูปที่ 1.2 ตัวอย่างรูปฮิสโตแกรม
-->d = rand(1, 10000, 'normal');
//สร้างตัวแปรสุ่มจํานวน 10000 ตัว
-->subplot(1,2,1); -->histplot(10, d, normalization = %F);
//รูปที่ 1.2 ด้านซ้าย
-->subplot(1,2,2); -->histplot(20, d, normalization = %F);
//รูปที่ 1.2 ด้านขวา
คําสั่งแรกจะทําการสร้างจํานวนสุ่ม (random number) จํานวน 10000 ตัว (บรรจุไว้ในเวกเตอร์ ขนาด 1×10000) โดยมีลักษณะการแจกแจงปรกติ (normal distribution) หรือการแจกแจงแบบ
เกาส์เซียน (Gaussian) นั่ นคือมีค่าเฉลี่ย (mean) เท่ากับค่า 0 และมีค่าความแปรปรวน (variance) เท่ากับค่า 1 จากนั ้นทําการวาดรูปฮิสโตแกรมของจํานวนสุ่มทัง้ หมดโดยแบ่งข้อมูลเป็ น 10 ช่วง
(รูปที่ 1.2 ด้านซ้าย) และแบ่งข้อมูลเป็ น 20 ช่วง (รูปที่ 1.2 ด้านขวา)
1.7 เมทริกซ์พิเศษ ในการประยุกต์ใช้งานเมทริกซ์ บางครัง้ มีความจําเป็ นต้องสร้างเมทริกซ์ท่ีมีรูปแบบเฉพาะ เช่น ถ้า
ต้องการสร้างเมทริกซ์ท่ีมีค่าเป็ น 1 ทัง้ หมดขนาด m×n เมื่อ m และ n มีค่ามาก โดยการพิมพ์ค่า แต่ละค่าเข้าไปอาจจะทําให้เสียเวลามากและอาจเกิดข้อผิดพลาดได้ง่าย ดังนั ้นโปรแกรม SCILAB
จึงได้เตรียมฟั งก์ชันพื้นฐานสําหรับสร้างเมทริกซ์พิเศษหลายรูปแบบขึ้นมาไว้ใช้งานตามตารางที่ 1.6 ตัวอย่างเช่น
18 ตารางที่ 1.6 ตัวอย่างเมทริกซ์พิเศษในโปรแกรม SCILAB คําสั่ง
คําอธิบาย
eye
เมทริกซ์เอกลักษณ์ (identity matrix)
ones
เมทริกซ์ค่าหนึ่ ง (one matrix)
zeros
เมทริกซ์ค่าศูนย์ (zero matrix)
rand
เมทริกซ์สุ่ม (random matrix)
diag
เมทริกซ์ทแยงมุม (diagonal matrix)
tril
เมทริกซ์สามเหลี่ยมด้านล่าง (lower triangular matrix)
triu
เมทริกซ์สามเหลี่ยมด้านบน (upper triangular matrix)
toeplitz
เมทริกซ์ Toeplitz (toeplitz matrix)
//สร้างเมทริกซ์เอกลักษณ์ท่ม ี ีขนาด 3×3
-->A = eye(3,3) A
= 1.
0.
0.
0.
1.
0.
0.
0.
1. //ค่า 1, 2, และ 3 อยู่ ณ เส้นทแยงมุมหลัก
-->diag([1 2 3]) ans
=
1.
0.
0.
0.
2.
0.
0.
0.
3.
1.7.1 เมทริกซ์สุ่ม เมทริกซ์สุ่ม (random matrix) เป็ นเมทริกซ์ท่ีมีสมาชิกเป็ นจํานวนสุ่ม โปรแกรม SCILAB สร้าง เมทริกซ์สุ่มได้โดยใช้คําสัง่ rand ซึ่งมีลักษณะการเรียกใช้งานดังนี้
rand(m1, m2, [key]) โดย
19
m1, m2
คือเลขจํานวนเต็มบวกที่ใช้กําหนดขนาดของเมทริกซ์สุ่มที่สร้างขึ้นมา เช่น คําสัง่
rand(m1,m2) จะสร้างเมทริกซ์สุ่มขนาด m1 แนวนอน และ m2 แนวตัง้
เป็ นตัวเลือกที่กําหนดลักษณะการแจกแจง (distribution) ของจํานวนสุ่มที่สร้าง
key
กล่าวคือถ้า
o
key = "uniform" จํานวนสุ่มที่สร้างขึ้นมาจะมีลักษณะการแจกแจงเอกรูปมีค่าอยู่ ระหว่าง 0 ถึง 1 (เป็ นค่าโดยปริยาย)
o
key = "normal" จํานวนสุ่มที่สร้างขึ้นมาจะมีลักษณะการแจกแจงปรกติ (หรือแบบ
เกาส์เซียน) ที่มีค่าเฉลี่ยเท่ากับ 0 และมีค่าความแปรปรวน (varaince) เท่ากับ 1 ตัวอย่างการใช้งานของคําสัง่ นี้ เช่น -->X = rand(2, 4, 'uniform') X
= 0.3095371 0.6762972
0.9706916 0.5441797
//สร้างเมทริกซ์สม ุ่ ขนาด 2×4 0.0204748 0.8941365
0.3490364 0.1105365
-->W = rand(1, 100000, 'normal'); -->[mean(W), variance(W)] ans = 0.0048048
//ค่าเฉลี่ยและค่าความแปรปรวนสอดคล้องกับ
//ลักษณะการแจกแจงปรกติ 0.9988003
1.8 การเขียนโปรแกรมด้วย SCILAB ในส่วนนี้ จะอธิบายวิธีการใช้งานคําสั่งวนซํา้ และคําสั่งทดสอบเงื่อนไข เพื่อให้ผู้อ่านสามารถเขียน โปรแกรมอย่างง่ายขึ้นมาใช้งานได้อย่างรวดเร็วและมีประสิทธิผล
1.8.1 คําสั่งวนซํา้ ในการเขียนโปรแกรม บางครัง้ มีความจําเป็ นต้องคํานวณชุดคําสั่งบางชุดซํา้ หลายครัง้ ซึ่งในกรณี นี้ การใช้คําสัง่ วนซํา้ จึงมีความจําเป็ นมาก โปรแกรม SCILAB ได้เตรียมคําสั่งสําหรับการวนซํา้ ไว้สอง รูปแบบคือ คําสัง่ for และคําสัง่ while ซึ่งมีหลักการใช้งานดังนี้
20
1.8.1.1 คําสั่ง for
คําสัง่ for เหมาะสําหรับการใช้งานที่ต้องการให้โปรแกรมทําซํา้ ชุดคําสัง่ เดิมที่อยู่ภายในลูป (loop)
เป็ นจํานวนรอบตามที่กําหนดไว้ในนิ พจน์ (expression) ซึ่งมีรูปแบบการใช้งานดังนี้ for
variable
=
expression
instruction_1;
instruction_n; end
กล่าวคือโปรแกรมจะทําซํา้ คําสัง่ (instruction) ทัง้ หมดภายในลูปเป็ นจํานวนรอบตามที่กําหนดโดย
ตัวแปรที่เป็ นไปตามเงื่อนไขของนิ พจน์ ตัวอย่างการใช้งานคําสัง่ for เช่น -->L = 5; -->x = []; -->for i = 1:L --> x(i) = i; -->end
ชุดคําสัง่ นี้ หมายความว่าเมื่อเริ่มต้นใช้งานตัวแปร L มีค่าเท่ากับ 5 และกําหนดให้ x เป็ นเมทริกซ์
ว่าง (empty matrix) จากนั ้นทําการวนซํา้ โดยใช้ตัวแปร i เป็ นตัวนั บจํานวนครัง้ นั่ นคือตัวแปร i
จะเริ่มจากค่า 1 แล้วเพิ่มขึ้นทีละ +1 จนถึงค่า 5 โดยค่าของตัวแปร i แต่ละค่าจะถูกบรรจุไว้ใน สมาชิกลําดับที่ i ของเวกเตอร์ x ผลลัพธ์ของการประมวลผลชุดคําสัง่ นี้คือ -->x' ans
=
1.
2.
3.
4.
5.
1.8.1.2 คําสั่ง while
คําสั่ง while มีลักษณะการทํางานคล้ายกับคําสั่ง for เพียงแต่คําสั่ง while จะมีการทดสอบ
เงื่อนไขที่ผู้เขียนโปรแกรมกําหนดไว้ในนิ พจน์ ทุกรอบของการวนซํา้ กล่าวคือถ้าผลการทดสอบให้ ค่าตรรกะเป็ นค่า 1 (เป็ นจริง) โปรแกรมก็จะทําซํา้ ชุดคําสั่งภายในลูปนั ้นต่ออีกหนึ่ งรอบ แต่ถ้าผล
การทดสอบให้ค่าตรรกะเป็ นค่า 0 (เป็ นเท็จ) โปรแกรมก็จะยกเลิกการทํางานชุดคําสัง่ ภายในลูปนั ้น
ทันที คําสัง่ while มีรูปแบบการใช้งานดังนี้
21
while
expression instruction_1;
instruction_n; end
ตัวอย่างเช่น -->L = 5;
x = [];
-->i = 1; -->while i <= L --> x(i) = i; --> i = i + 1; -->end ชุดคําสั่งนี้ ให้ผลลัพธ์เหมือนกับตัวอย่างของการใช้คําสั่ง for เพียงแต่การใช้คําสั่ง while ต้อง
กําหนดค่าเริ่มต้นของตัวแปร i ก่อนนํ าค่า i ไปทําการเปรียบเทียบกับค่า L ตามเงื่อนไขที่กําหนด
1.8.2 คําสั่งทดสอบเงื่อนไข คําสัง่ ทดสอบเงื่อนไขมีความจําเป็ นมากสําหรับการเขียนโปรแกรมคอมพิวเตอร์ท่ซ ี ับซ้อน โดยทัว่ ไป คําสัง่ ทดสอบเงื่อนไขที่นิยมใช้คอ ื คําสัง่ if ซึ่งมีหลักการใช้งานดังนี้ if
expression
then
instruction_1;
instruction_n; end
กล่าวคือถ้าผลการทดสอบเงื่อนไขในนิ พจน์เป็ นจริง โปรแกรม SCILAB ก็จะทําคําสัง่ ทัง้ หมดที่อยู่ ระหว่างคําว่า then และ end แต่ถ้าผลการทดสอบเป็ นเท็จ โปรแกรม SCILAB จะไม่ทําคําสัง่ ทัง้ หมดที่อยู่ระหว่างคําว่า then และ end
นอกจากนี้คําสัง่ if ยังสามารถนํ าไปใช้งานกับการตัดสินใจที่ซบ ั ซ้อนมากขึ้นได้โดยการ
ใช้งานร่วมกับ else ซึ่งมีรูปแบบการใช้งานคือ
22
if
expression
then
instructions_set1; else instructions_set2; end
กล่าวคือถ้าผลการทดสอบเงื่อนไขในนิ พจน์ เป็ นจริง โปรแกรม SCILAB จะทําคําสั่งทัง้ หมดที่อยู่
ระหว่างคําว่า then และ else แต่ถ้าผลการทดสอบเป็ นเท็จ โปรแกรม SCILAB จะทําคําสั่ง ทัง้ หมดที่อยู่ระหว่างคําว่า else และ end
ในการใช้งานที่มีการตัดสินใจที่ซับซ้อนมากยิ่งขึ้น ผู้ใช้ก็ยังคงสามารถใช้งานคําสั่ง if
ร่วมกับ elseif ได้ โดยมีรูปแบบการใช้งานดังนี้ if
expression_1
then
instructions_set1; elseif
expression_2
then
instructions_set2; else instructions_set3; end
นั่ นคือถ้าผลการทดสอบเงื่อนไขในนิ พจน์ expression_1 เป็ นจริง โปรแกรม SCILAB จะทํา ชุดคําสั่ง instructions_set1 แต่ถ้าผลการทดสอบเป็ นเท็จ โปรแกรม SCILAB ก็จะทํา การทดสอบเงื่อนไขในนิ พจน์ expression_2 ต่อไปทันที โดยที่ถ้าผลการทดสอบในนิ พจน์
expression_2 เป็ นจริง โปรแกรม SCILAB ก็จะทําชุดคําสัง่ instructions_set2 แต่
ถ้าผลการทดสอบเป็ นเท็จ ก็จะทําชุดคําสัง่ instructions_set3
1.8.3 การเขียนฟั งก์ชันแบบอินไลน์ โปรแกรม SCILAB อนุญาตให้ผู้ใช้สร้างฟั งก์ชันใหม่ๆ ขึ้นมาใช้งานร่วมกับโปรแกรม SCILAB ได้ ในที่นี้จะอธิบายเฉพาะการเขียนฟั งก์ชันแบบอินไลน์ (in-line function) ซึ่งมีลักษณะการใช้งานดังนี้ function [เอาต์พุต] = function_name(อินพุต), ชุดคําสัง่ , endfunction
23 นั่ นคือจะต้องเริ่มต้นด้วยคําว่า function และปิ ดท้ายด้วยคําว่า endfunction โดยที่ภายใน
ฟั งก์ชันจะมีคําสั่งแต่ละคําสั่งจะต้องคัน ้ ด้วยเครื่องหมายจุลภาค ตัวอย่างเช่นถ้าต้องการสร้างฟั งก์ชัน แบบอินไลน์ท่ช ี ่อ ื MyMax เพื่อใช้หาค่าสูงสุดของเลขจํานวนจริงสองจํานวน ก็ทําได้ดังนี้
-->function [y] = MyMax(x1, x2), if x1 >= x2 then y = x1, ... -->else y = x2; end; endfunction; //เรียกฟั งก์ชัน MyMax ขึน ้ มาใช้งาน
-->y = MyMax(1, 5) y
= 5.
นอกจากนี้ยังสามารถใช้คําสั่ง deff ในการสร้างฟั งก์ชันแบบอินไลน์ได้เช่นกัน โดยมีรูปแบบการ ใช้งานคือ
deff('[เอาต์พุต] = function_name(อินพุต)', 'ชุดคําสัง่ ') ตัวอย่างเช่น -->deff('y = MyMax(x1, x2)', 'if x1 > x2 then y = x1; ... -->else y = x2; end'); -->y = MyMax(1,5) y
= 5.
ซึ่งให้ผลลัพธ์เท่ากัน
1.9 การวาดกราฟสองมิติ คําสัง่ พื้นฐานสําหรับการวาดกราฟสองมิติบนระบบพิกด ั ฉาก x-y คือคําสัง่ plot ซึ่งมีรูปแบบการ
เรียกใช้งานดังนี้
plot(x, y)
24 เมื่อเวกเตอร์ x เป็ นตัวแปรอิสระที่กําหนดค่าในเส้นแกน x และเวกเตอร์ y ซึ่งเป็ นตัวแปรตามที่
กําหนดค่าในเส้นแกน y (โดยเวกเตอร์ y ต้องมีขนาดเท่ากับเวกเตอร์ x เสมอ) นอกจากนี้คําสัง่
plot ยังสามารถเรียกใช้งานได้ในอีกรูปแบบหนึ่ งคือ
plot(y) ซึ่งในกรณี นี้โปรแกรม SCILAB จะสมมติว่าพารามิเตอร์ x มีค่าเท่ากับค่า 1 ถึงจํานวนสมาชิก ทัง้ หมดของเวกเตอร์ y นั่ นคือ x = 1:length(y) โดยอัตโนมัติ
ตัวอย่างที่ 1.1 จงวาดกราฟของรูปสัญญาณไซนูซอยด์ (sinusoid waveform) ตามสมการ y =
sin(2πft) สําหรับเวลาที่ t = 0 ถึง 2 วินาที ถ้ากําหนดให้ความถี่ f = 1 เฮิตร์ซ (Hertz) วิธีทํา จากโจทย์สามารถเขียนเป็ นชุดคําสัง่ ของโปรแกรม SCILAB ได้ดังนี้ -->t = 0:0.01:2; -->f = 1; -->y = sin(2*%pi*f*t); -->plot(t, y) -->xtitle('A sinusoidal wave','Time (t)','Amplitude')
คําสัง่ แรกเป็ นการกําหนดให้ตัวแปร t ให้มีค่าอยู่ระหว่าง 0 ถึง 2 โดยสมาชิกแต่ละตัวที่อยู่ติดกัน จะมีค่าห่างกันเท่ากับ 0.01 (ขนาดของตัวแปร t คือ 1×201) จากนั ้นกําหนดให้ความถี่ f = 1
แล้วก็หาค่าของสัญญาณ y โดยค่า y ที่หามาได้จะมีขนาดเท่ากับตัวแปร t จากนั ้นก็สั่งให้วาดกราฟ
ขึ้นมา ซึ่งผลลัพธ์ท่ไี ด้จะเป็ นกราฟตามรูปที่ 1.3 ส่วนคําสั่ง xtitle เป็ นคําสั่งที่ใช้ในการกําหนด ชื่อของกราฟ ชื่อของเส้นแกน x และชื่อของเส้นแกน y
1.9.1 กราฟเชิงขัว้ โดยทัว่ ไปจุดพิกัด (x, y) ที่แสดงถึงตําแหน่ ง (location) บนรูปกราฟในระบบพิกัดฉากสามารถเปลี่ยน ให้อยู่ในรูปของจุดพิกัด (r, θ) ในระบบพิกัดเชิงขัว้ ได้ เมื่อ r คือขนาด และ θ คือมุมเรเดียน (เทียบ กับแกน x ในทิศทวนเข็มนาฬิกา) โดยอาศัยกฎของตรีโกณมิติ ดังนั ้นจากรูปที่ 1.4 จะได้ว่า 2
r = x +y
2
และ
θ = tan
y⎞ ⎜ ⎟ ⎝x⎠
−1 ⎛
25
รูปที่ 1.3 สัญญาณไซนูซอยด์ y = sin(2πft)
y
(x, y ) r
θ
x
รูปที่ 1.4 ความสัมพันธ์ระหว่างจุด (x, y) ในระบบพิกัดฉาก และจุด (r, θ) ในระบบพิกัดเชิงขัว้
ในทํานองเดียวกันจุดพิกัด (r, θ) ในระบบพิกัดเชิงขัว้ ก็สามารถแปลงกลับไปเป็ นจุดพิกัด (x, y)
ในระบบพิกัดฉากได้จากความสัมพันธ์ดังนี้
x = r cos ( θ )
และ
y = r sin ( θ )
การวาดกราฟเชิงขัว้ ในโปรแกรม SCILAB ทําได้โดยการใช้คําสัง่
polarplot(theta, r)
เมื่อพารามิเตอร์ theta คือค่ามุม θ (มีหน่ วยเป็ นเรเดียน) และพารามิเตอร์ r คือค่าความยาวของ รัศมี ตัวอย่างเช่น
26
รูปที่ 1.5 ตัวอย่างรูปกราฟแสดงผลลัพธ์จากการใช้คําสัง่ polarplot
-->t = 0:0.01:2*%pi; -->polarplot(sin(7*t), cos(8*t)) ผลลัพธ์แสดงในรูปที่ 1.5 หมายเหตุ นอกจากนี้โปรแกรม SCILAB ยังได้เตรียมคําสัง่ สําหรับการวาดกราฟสองมิติแบบอื่นๆ
ไว้ใช้งานเฉพาะด้านมากมายดังแสดงในตารางที่ 1.7
1.10 การวาดกราฟสามมิติ สมการคณิ ตศาสตร์แบบสามตัวแปรใดๆ สามารถแสดงให้อยู่ในรูปของกราฟสามมิติได้ เพื่อใช้แสดง
ความสัมพันธ์ของตัวแปรทัง้ สาม การใช้งานคําสั่งวาดกราฟสามมิตินั้นไม่ยากเพียงแต่ต้องเข้าใจถึง รูปแบบของข้อมูลที่จะป้ อนให้กับคําสั่งเหล่านี้ การวาดกราฟสามมิติใช้ข้อมูลทัง้ หมดสามชุดสําหรับ
เส้นแกน x, เส้นแกน y, และเส้นแกน z ที่อยู่ในพิกัดคาร์ทีเซียน (Cartesian coordinate) x-y-z
โดยเวกเตอร์ x จะเป็ นตัวกําหนดค่าในเส้นแกน x, เวกเตอร์ y จะเป็ นตัวกําหนดค่าในเส้นแกน y, และตัวแปรตามที่มีค่าเปลี่ยนแปลงไปตามค่า x และ y ซึ่งก็คือขนาดของค่าบนเส้นแกน z นั่ นเอง ดังนั ้นตัวแปรตาม z นี้ จะต้องมีจํานวนเท่ากับผลคูณของจํานวนข้อมูลในเวกเตอร์ x
ข้อมูลในเวกเตอร์ y
กับจํานวน
คําสัง่ พื้นฐานสําหรับวาดกราฟแบบสามมิตใิ นโปรแกรม SCILAB มีรูปแบบดังนี้
27 ตารางที่ 1.7 ตัวอย่างคําสัง่ ในการวาดกราฟสองมิติสําหรับการใช้งานเฉพาะด้าน คําสั่ง
คําอธิบาย
contour2d
วาดกราฟคอนทัวร์ (contour surface) จากรูปกราฟสองมิติ
champ
วาดกราฟสนามเวกเตอร์แบบสองมิติ (2-D vector field)
fchamp
วาดกราฟสนามเวกเตอร์แบบสองมิติ ที่กําหนดโดยสมการอนุพันธ์อันดับหนึ่ ง
(first-order ordinary differential equation)
bode
วาดกราฟของโบดไดอะแกรม (Bode diagram) ทัง้ กราฟแสดงขนาด (magnitude
gainplot
วาดกราฟแสดงขนาดของโบดไดอะแกรม
nyquist
วาดกราฟไนควิตซ์ (Nyquist plot)
evans
วาดกราฟอีแวนรูทโลคัส (Evans root locus)
plzr
วาดกราฟโพล-ซีโร่ (pole-zero plot)
plot) และกราฟแสดงมุม (phase plot) ซึ่งมีประโยชน์มากทางด้านวิศวกรรม
plot3d(x, y, z) เมื่อพารามิเตอร์ x และ y คือเวกเตอร์ท่ม ี ีขนาดเท่ากัน และพารามิเตอร์ z คือตัวแปรตามที่ขึ้นกับ ค่าของ x และ y ซึ่งมีจํานวนสมาชิกเท่ากับผลคูณของจํานวนสมาชิกในเวกเตอร์ x กับจํานวน สมาชิกในเวกเตอร์ y
ตัวอย่างที่ 1.2 กําหนดให้ตัวแปร x และ y มีคา่ ระหว่าง 0 ถึง 1 จงวาดกราฟสามมิติจากสมการ
z = 0.5 cos ( 2xπ ) cos ( 2yπ ) วิธีทํา จากโจทย์สามารถวาดกราฟสามมิติได้โดยใช้ชุดคําสัง่ ของโปรแกรม SCILAB ดังนี้ -->x = linspace(0, 1, 21); -->y = linspace(0, 1, 21); -->z = abs(0.5 * cos(2*%pi*x)' * cos(2*%pi*y)); -->plot3d(x, y, z); ผลลัพธ์ท่ไี ด้จากชุดคําสัง่ เหล่านี้แสดงในรูปที่ 1.6
28
รูปที่ 1.6 ตัวอย่างรูปกราฟแสดงผลลัพธ์จากการใช้คําสัง่ plot3d
ถ้าต้องการให้มก ี ารไล่โทนสีตามขนาดของค่าในแกน z ก็สามารถทําได้โดยการใช้คําสัง่
plot3d1 และถ้าต้องการทราบความสัมพันธ์ระหว่างสีกับขนาดของค่าในแกน z ก็สามารถทําได้โดย ใช้คําสัง่ colorbar ซึ่งมีรูปแบบการใช้งานคือ
colorbar(umin, umax, [colminmax]) โดยพารามิเตอร์ umin เป็ นเลขจํานวนจริงของค่าตํ่าสุดของขนาดของค่าในแกน z, umax เป็ นเลข จํานวนจริงของค่าสูงสุดของขนาดของค่าในแกน z, และ colminmax เป็ นตัวเลือกที่มีรูปแบบ
การใช้งานคือ colminmax = [1 nb_colors] เป็ นเวกเตอร์ขนาด 1×2 เมื่อ nb_colors
คือจํานวนสีท่ใี ช้ในรูปกราฟ ตัวอย่างการใช้งานคําสัง่ นี้ เช่น (ต่อเนื่ องจากรูปที่ 1.6) -->clf;
zmin = min(z);
-->zmax = max(z); -->colorbar(zmin, zmax, [1 30]); -->plot3d1(x, y, z); ผลลัพธ์ท่ไี ด้แสดงในรูปที่ 1.7 ซึ่งมีแถบสีแสดงความสัมพันธ์ระหว่างสีและขนาดของค่าในเส้นแกน z หมายเหตุ จากที่กล่าวมาทัง้ หมดนี้ เป็ นเพียงพื้นฐานการใช้งานโปรแกรม SCILAB สําหรับผู้ท่ีสนใจ วิธีการใช้งานโปรแกรม SCILAB เพิ่มเติมสามารถศึกษารายละเอียดได้จาก [4]
29
รูปที่ 1.7 ตัวอย่างรูปกราฟแสดงผลลัพธ์จากการใช้คําสัง่ colorbar ร่วมกับ plot3d1
1.11 สรุปท้ายบท บทนี้ได้สรุปพื้นฐานการใช้งานโปรแกรม SCILAB ที่จําเป็ นต่างๆ (เช่น การสร้างสเกล่าร์ เวกเตอร์
เมทริกซ์ และพหุนาม ตัวดําเนิ นการทางคณิ ตศาสตร์ ฟั งก์ชันพื้นฐานทางคณิ ตศาสตร์ รวมทัง้ อธิบาย
หลักการการเขียนโปรแกรมด้วย SCILAB และการวาดกราฟสองมิติและสามมิติ) เพื่อเป็ นแนวทาง ในการนํ าไปใช้งานร่วมกับโปรแกรมต่างๆ เพื่อสร้างสื่อการเรียนการสอนที่จะอธิบายในบทต่อไป
1.12 แบบฝึ กหัดท้ายบท 1.
จงคํานวณหาค่าของฟั งก์ชันต่อไปนี้ เมื่อ x มีค่าเท่ากับ −2, 0, 2, −2i และ 2i 1.1) f ( x ) = 2x − 5
2.
1.2) f ( x ) = x
3
−
(
2x + log10 3x − 5
)
กําหนดให้
⎡5 8 7 ⎤ A = ⎢4 2 6⎥ , ⎢9 8 9 ⎥ ⎣ ⎦
⎡−1 2 −3⎤ B = ⎢ 2 −4 5 ⎥ , ⎢2 3 1⎥ ⎣ ⎦
⎡ 3 1 2⎤ C = ⎢ −1 2 1 ⎥ ⎢−2 −1 1 ⎥ ⎣ ⎦
จงหาค่าต่อไปนี้ 2.1) AB + BC
2.2) (A + B)/C
2.3) (A + B)C
2.4) AE + CE
และ
⎡−2⎤ E=⎢0⎥ ⎢2⎥ ⎣ ⎦
30 3.
จงหาคําตอบของสมการลักษณะเฉพาะของเมทริกซ์ต่อไปนี้ 3.1) A =
4.
⎡ 2 3⎤ ⎢⎣ 4 5⎥⎦
3.2) B =
⎡ 1 −5⎤ ⎢⎣−2 3 ⎥⎦
จงแก้สมการเพื่อหาค่าของตัวแปรทัง้ หมดในระบบสมการเชิงเส้นต่อไปนี้ 4.1) 2x – 3y
−6x + 9y
=5
4.2) x + y + z
= −12
x – 2y + z
=6 =0
3x + y – 2z = −1 5.
6.
จงหารากหรือคําตอบของสมการต่อไปนี้ 5.1) x2 – 2x + 5 = 0
5.2) x3 – 6x2 + 11x – 6 = 0
5.3) x4 – 14x3 + 49x2 – 36x = 0
5.4) x7 + 3x5 – 2x3 + 5x2 – 10x = 0
กําหนดให้ตัวแปร N เป็ นเลขจํานวนเต็มบวกใดๆ จงเขียนโปรแกรมโดยใช้คําสัง่ for เพื่อหา ค่าต่อไปนี้ 6.1)
7.
N
∑i = 1+ 2 + 3 +…+ N i =1
6.2)
N
∑ i 2 = 12 + 22 + 32 + … + N 2 i =1
จงเขียนไฟล์ฟังก์ชันที่มีรูปแบบการเรียกใช้งานคือ [a, b, c, d] = MoneyExchange(m) เพื่อเปลี่ยนจํานวนเงิน m บาท ให้เป็ นธนบัตรใบละ 100 บาท จํานวน a ใบ, ธนบัตรใบละ 20
บาท จํานวน b ใบ, เหรียญสิบบาท จํานวน c เหรียญ และเหรียญหนึ่ งบาท จํานวน d เหรียญ
8.
กําหนดให้ y = (ex − e-x)/2 โดยที่ −10 ≤ x ≤ 10 8.1) วาดกราฟเชิงเส้น 8.2) วาดกราฟลอการิทึมทัง้ ในแนวแกน x และแกน y
9.
กําหนดให้ 0 ≤ x ≤ 1 และ 0 ≤ y ≤ 1 จงวาดกราฟสามมิติของฟั งก์ชันต่อไปนี้ 9.1) z = sin ( 2πx ) cos ( 3πy )
9.2) z = cos ( 2πx ) sin ( 2πy )
31
บทที่ 2 การใช้งานโปรแกรม Visual Basic ร่วมกับ SCILAB
ในบทนี้ จะกล่าวถึงพื้นฐานการใช้งานโปรแกรม Visual Basic เพื่อติดต่อกับโปรแกรม SCILAB โดยจะเริ่มจากประวัติความเป็ นมาของโปรแกรม Visual Basic จากนั ้นจะอธิบายหลักการใช้งาน
โปรแกรม Visual Basic 2010 Express4 รวมทัง้ การเชื่อมต่อกับโปรแกรม SCILAB สําหรับใช้
สร้างสื่อการเรียนการสอน
2.1 ประวัติความเป็ นมาของโปรแกรม Visual Basic Visual Basic [5, 6] เป็ นภาษาคอมพิวเตอร์ท่ีพัฒนาโดยบริษัทไมโครซอฟต์ (Microsoft) ซึ่งเป็ น
บริษัทที่สร้างระบบปฏิบัติการวินโดวส์ (Windows) โดยภาษานี้ มีรากฐานมาจากภาษา Basic [7] ย่อมาจาก “Beginner’s All Purpose Symbolic Instruction” ซึ่งแปลว่า ชุดคําสั่งหรือภาษา
คอมพิวเตอร์สําหรับผู้เริ่มต้น โดยทั่วไปภาษา Basic มีจุดเด่นคือผู้ใช้สามารถเรียนรู้และนํ าไปใช้งาน
ได้อย่างรวดเร็วโดยไม่จําเป็ นต้องมีพ้ืนฐานเรื่องการเขียนโปรแกรม (เมื่อเทียบกับการเรียนภาษา คอมพิวเตอร์อ่ น ื )
บริษัทไมโครซอฟต์ได้พัฒนาโปรแกรมภาษา Basic มาหลายสิบปี ตัง้ แต่ภาษา MBASIC
(Microsoft Basic), BASICA (Basic Advanced), GWBASIC และ QBASIC (QuickBasic)
ซึ่งได้ติดตัง้ มาพร้อมกับระบบปฏิบัติการ MSDOS โดยแต่ละเวอร์ชันที่ออกมา ได้มีการพัฒนาและ
เพิ่มเติมคําสัง่ ใหม่ๆ เข้าไป ในอดีตโปรแกรมภาษาเหล่านี้ จะทํางานในโหมดตัวอักษร (text mode) นั่ น คือไม่มีรูปกราฟิ กสวยงามแบบระบบวินโดวส์ท่ีใ ช้ใ นปั จจุบัน จนกระทั่งเมื่อระบบปฏิบัติการ วินโดวส์ได้เข้ามาแทนที่ระบบปฏิบัติการ MSDOS บริษัทไมโครซอฟต์จึงได้ปรับปรุงโปรแกรมภาษา
4
โปรแกรม Visual Basic 2010 Express ซึ่งเป็ นฟรีแวร์ (freeware) ที่ใช้ในบทนี้
32
รูปที่ 2.1 แถบเมนูของโปรแกรม Visual Basic 2010 Express
Basic ให้รองรับการทํางานในระบบปฏิบัติการวินโดวส์ จึงทําให้เกิดเป็ นโปรแกรม Visual Basic ตัง้ แต่นั้นเป็ นต้นมา ในบทนี้ จะพิจารณาเฉพาะโปรแกรม Visual Basic 20105 ซึ่งออกวางตลาด
ใน ค.ศ. 2010 พร้อมกับ Microsoft .NET Framework 4 เพื่อเพิ่มความสามารถในการเขียน
โปรแกรมติด ต่อกับเครือข่ายอิน เทอร์เน็ ต และการเชื่อมต่อกับระบบฐานข้อมูล รวมทัง้ ปรับ ปรุง เครื่องมือสําหรับการเขียนโปรแกรมเชิงวัตถุ (object oriented programming) ให้ใช้งานได้ง่ายขึ้น
2.2 โปรแกรม Visual Basic 2010 Express ในส่วนนี้จะแสดงเมนูต่างๆ ที่จําเป็ นสําหรับการใช้งานโปรแกรม Visual Basic 2010 Express ดังนี้
2.2.1 แถบเมนู เมื่อเรียกใช้งานโปรแกรม Visual Basic 2010 Express ก็จะพบว่าแถบเมนูหลัก (menu bar)
ตามรูปที่ 2.1 ซึ่งเป็ นแถบเมนูท่ีรวบรวมคําสั่งควบคุมการทํางานของโปรแกรม โดยเมนูท่ีนิยมใช้มี ดังนี้
Project
ประกอบด้วยคําสัง่ ที่ใช้จด ั การกับโปรเจ็ค (project) ที่กําลังทําอยู่
Build
เป็ นคําสัง่ ที่ใช้คอมไพล์ (compile) โปรเจ็ค
Debug
เป็ นคําสัง่ ที่ช่วยในการตรวจสอบหาข้อผิดพลาดของโปรแกรม
Data
เป็ นคําสัง่ ที่ใช้ตด ิ ต่อกับฐานข้อมูล
Format
เป็ นคําสัง่ ที่ใช้จด ั ตําแหน่ งให้กับอ็อบเจกต์ (object) ต่างๆ บนฟอร์ม (Form)
2.2.2 แถบเครื่องมือมาตราฐาน แถบเครื่องมือมาตราฐาน (standard
toolbar) เป็ นแถบเครื่องมือที่สามารถเลือกใช้งานได้ทันที
เพื่ออํานวยความสะดวกและความรวดเร็วในการดําเนิ นการคําสั่งที่นิยมใช้งานตามที่แสดงในรูปที่ 2.2 โดยแถบเครื่องมือที่ควรทราบแสดงในตารางที่ 2.1
5
โปรแกรม Visual Basic 2010 นี้ สนั บสนุนระบบปฏิบัติการ Windows 7 ซึ่งสามารถดาวน์ โหลดเวอร์ชัน Express ฟรี ได้ท่เี ว็บไซต์ http://www.microsoft.com/express/downloads/
33
รูปที่ 2.2 แถบเครื่องมือมาตราฐานของโปรแกรม Visual Basic 2010 Express ตารางที่ 2.1 แถบเครื่องมือมาตราฐานที่นิยมใช้ ใช้สร้างโปรเจ็คใหม่ หรือกดป่ ุม Ctrl + N (NEW) ใช้เปิ ดไฟล์ (Open File) ใช้เพิ่มไอเท็ม (Item) หรือกดป่ ุม Ctrl + Shift + A (Add New Item) ใช้บันทึกโปรเจ็ค หรือกดป่ ุม Ctrl + S (Save) ใช้ประมวลผลโปรแกรม หรือกดป่ ุม F5 (Run) ใช้หยุดโปรแกรมชัว่ คราว (Stop) ใช้เรียกหน้ าต่างโซลูชัน (Solution Explorer) ใช้เรียกหน้ าต่างคุณสมบัติ (Properties) ใช้เรียกหน้ าต่างกล่องเครื่องมือ (toolbox)
แถบเครื่องมือ
รูปที่ 2.3 หน้ าต่างโซลูชันของโปรแกรม Visual Basic 2010 Express
2.2.3 หน้ าต่างโซลูชัน หน้ าต่างโซลูชัน (Solution Explorer) จะแสดงรายชื่อไอเท็มที่เป็ นส่วนประกอบของโปรเจ็คและไฟล์ ต่างๆ ที่เกี่ยวข้องกับการแก้ไขโปรเจ็คที่ใช้งานในปั จจุบัน โดยมีแถบเครื่องมือตามตารางที่ 2.2
34 ตารางที่ 2.2 แถบเครื่องมือในหน้ าต่างโซลูชัน เรียกหน้ าต่างคุณสมบัติ (Properties) หรือกดป่ ุม Alt + Enter แสดงไฟล์ทงั ้ หมด (Show All File) ฟื้ นฟูไอเท็ม (Refresh) เรียกหน้ าต่างการเขียนโค้ด (View Code) เรียกหน้ าต่างฟอร์ม (View Designer)
รูปที่ 2.4 หน้ าต่างคุณสมบัติของโปรแกรม Visual Basic 2010 Express
2.2.4 หน้ าต่างคุณสมบัติ หน้ าต่างคุณสมบัติ (Properties) นิ ยมใช้ในการเปลี่ยนแปลงคุณสมบัติต่างๆ ของอ็อบเจกต์ระหว่าง
การออกแบบฟอร์ม โดยเมื่อทําการเลือกอ็อบเจกต์ในฟอร์ม หน้ าต่างคุณสมบัติก็จะแสดงคุณสมบัติ ของอ็อ บเจกต์นั้ น ซึ่ ง ถ้า ต้อ งการเปลี่ ย นแปลงคุณ สมบัติข องอ็อ บเจกต์ ก็ทํา ได้โ ดยการเลือ กที่
คุณสมบัตินั้นและป้ อนค่าใหม่ลงไป
35
รูปที่ 2.5 หน้ าต่างกล่องเครื่องมือของโปรแกรม Visual Basic 2010 Express
2.2.5 หน้ าต่างกล่องเครื่องมือ หน้ าต่างกล่องเครื่องมือ (toolbox) เป็ นส่วนที่บรรจุตัวควบคุมต่างๆ เพื่อใช้ออกแบบหน้ าจอของ โปรแกรม (นั่ นคือหน้ าต่างการออกแบบ ดูรูปที่ 2.10) ตามที่แสดงในรูปที่ 2.5 โดยทัว่ ไปหน้ าต่าง กล่องเครื่องมืออาจถูกซ่อนไว้ ซึ่งจะอยู่ทางด้านซ้ายมือของโปรแกรมคอนโทรลใน toolbox
2.2.6 ประเภทข้อมูลพื้นฐาน ประเภทข้อมูล (data type) ที่ใช้งานได้ในโปรแกรม Visual Basic 2010 Express แสดงใน ตารางที่ 2.3
2.3 การใช้งานโปรแกรม Visual Basic ร่วมกับ SCILAB การใช้งานโปรแกรม Visual Basic ร่วมกับ SCILAB จะมีลักษณะเป็ นการรับส่งข้อมูลผ่านไฟล์
ชั่วคราว (temporary file) โดยจะใช้โปรแกรม Visual Basic สร้างหน้ าต่างสําหรับส่วนต่อประสาน (interface) ได้แก่ ส่วนรับข้อมูล (Textbox) และป่ ุมควบคุม (Button) เพื่อเขียนข้อมูลลงในไฟล์ สคริปต์ (script file) ในขณะที่โปรแกรม SCILAB ทําหน้ าที่ประมวลผลลัพธ์ไฟล์สคริปต์ จากนั ้น
นํ าผลลัพธ์ท่ีได้เก็บในไฟล์ข้อมูล (text file) และส่งมาแสดงผลที่โปรแกรม Visual Basic ดังรูปที่ 2.6 แสดงแนวคิด6 ในการใช้งานร่วมกันระหว่างโปรแกรม Visual Basic และ SCILAB
6
โดยทัว่ ไปการส่งข้อมูลจากโปรแกรมหนึ่ งไปยังอีกโปรแกรมหนึ่ งทําได้ไม่ยาก (ขึ้นอยู่กับข้อกําหนดของแต่ละโปรแกรม) ดังนั ้นโปรแกรม SCILAB จึงสามารถนํ ามาประยุกต์ใช้งานร่วมกับโปรแกรมภาษาอื่นๆ ได้อีกด้วย เช่น ภาษาซี
36 ตารางที่ 2.3 ประเภทข้อมูลที่ใช้ในโปรแกรม Visual Basic 2010 Express ประเภทข้อมูล
ประเภท
ขนาด
การเก็บข้อมูลหรือช่วงข้อมูล
Integer
จํานวนเต็ม
2 ไบต์
–32,768 ถึง 32,767
Long
จํานวนเต็ม
4 ไบต์
–2,147,483,648 ถึง 2,147,483,647
Boolean
จํานวนเต็ม
2 ไบต์
เก็บค่า 0 และ 1 ซึ่งแทน False หรือ True
Byte
จํานวนเต็ม
1 ไบต์
เก็บค่าในช่วง 0 ถึง 255
Single
จํานวนทศนิ ยม
4 ไบต์
ค่าลบ –3.402823E38 ถึง –1.401298E-45 ค่าบวก 1.401298E-45 ถึง 3.402823E38
Double
จํานวนทศนิ ยม
8 ไบต์
ค่าลบ –1.79769313486232E308 ถึง -4.94065645841247E-324
ค่าบวก 4.94065645841247E-324 ถึง 1.79769313486232E308 Currency
จํานวนทศนิ ยม
8 ไบต์
เก็บตัวเลขจํานวนจริงที่มีค่าระหว่าง -922,337,203,685,477.5808 ถึง
922,337,203,685,477.5807 เหมาะสําหรับเก็บตัวเลข ทางการเงิน เพราะมีความละเอียดสูง
String
ข้อความ
1 ไบต์
ใช้เก็บตัวอักษร หรือข้อความ
Date
วันที่/เวลา
8 ไบต์
เก็บค่าระหว่าง 1 มกราคม ค.ศ. 100 ถึง 31 ธันวาคม
ค.ศ. 9999 และเวลาใดๆ โดยส่วนจํานวนเต็มเป็ นข้อมูล ของวัน และส่วนทศนิ ยมเป็ นข้อมูลของเวลา
Variant
Variant
16 ไบต์
ตัวแปรที่สามารถแทนตัวแปรชนิ ดอื่นๆ ได้ทุกตัวแปร แต่จะใช้พ้น ื ที่เก็บข้อมูลมากสุด
Object
อ็อบเจกต์
4 ไบต์
เก็บการอ้างอิงสําหรับแทนวัตถุ (หรืออ็อบเจกต์) ที่ Visual Basic สนั บสนุน
การเขียนโปรแกรม Visual Basic จะมีชุดอ็อบเจกต์ท่ีเกี่ยวข้องคือ FileSystemObject ซึ่ง
ใช้จัดการกับระบบไฟล์ของวินโดวส์ โดย FileSystemObject มีโครงสร้างตามรูปที่ 2.7 ซึ่งประกอบ ด้วยอ็อบเจกต์ย่อยอีก 4 ตัว ที่เป็ นตัวแทนของไดร์ฟ (Drive), โฟลเดอร์ (Folder), ไฟล์ (File), และไฟล์ข้อมูล (Text Stream) ดังนี้
FileSystemObject เป็ นอ็อบเจกต์หลักที่ใช้สร้างหรือลบข้อมูล และจัดการการทํางานของ
ไดร์ฟ โฟลเดอร์ ไฟล์ และไฟล์ขอ ้ มูล ได้โดยตรง
37
VISUAL BASIC
Temporary File
Script
TEXT
SCILAB รูปที่ 2.6 แนวคิดในการใช้งานร่วมกันระหว่างโปรแกรม Visual Basic และ SCILAB
รูปที่ 2.7 โครงสร้างของชุดอ็อบเจกต์ FileSystemObject
Drive เป็ นอ็อบเจกต์ท่ใี ห้ข้อมูลเกี่ยวกับไดร์ฟทัง้ หมดของระบบคอมพิวเตอร์ท่ก ี ําลังทํางานอยู่
Folder เป็ นอ็อบเจกต์ท่รี วบรวมวิธีการต่างๆ ที่เรียกใช้ เพื่อให้ข้อมูลและจัดการกับโฟลเดอร์
File
Text Stream เป็ นอ็อบเจกต์ท่ใี ช้ในการอ่านและเขียนไฟล์ขอ ้ มูล
เป็ นอ็อบเจกต์ท่รี วบรวมวิธีการต่างๆ ที่เรียกใช้ เพื่อให้ข้อมูลและจัดการกับไฟล์ ในทางปฏิบัติการใช้งานอ็อบเจกต์ FileSystemObject จะต้องมีการเรียกไลบรารีที่ช่ ือว่า
Microsoft Scripting Runtime ขึ้นมาก่อน จึงจะสามารถใช้งานอ็อบเจกต์อ่ ืนๆ ได้
38
คลิกเลือก New Project… รูปที่ 2.8 การสร้างโปรเจ็คใหม่ (New Project)
รูปที่ 2.9 ขัน ้ ตอนการสร้าง Window Forms Application ในหน้ าต่างโปรเจ็คใหม่
โดยในที่นี้จะอธิบายเฉพาะอ็อบเจกต์ Text Stream เท่านั ้น เพราะเป็ นส่วนที่ใช้ในการอ่านและเขียน ไฟล์เพื่อติดต่อกับโปรแกรม SCILAB สําหรับสร้างสื่อการเรียนการสอน
2.3.1 ขัน ้ ตอนการเรียกใช้งานไลบรารี Microsoft Scripting Runtime การเรียกใช้งานไลบรารีในโปรแกรม Visual Basic 2010 ทําได้โดยให้พิจารณาว่าอ็อบเจกต์นั้นคือ
ตัวแปรหนึ่ งตัวซึ่งมีประเภทเป็ น “อ็อบเจกต์” ดังนั ้ นขัน ้ ตอนการเรียกใช้งานไลบรารี Microsoft Scripting Runtime มีดังนี้
1) เปิ ดโปรแกรม Visual Basic 2010 Express แล้วสร้างโปรเจ็คใหม่ขึ้นมาใช้งาน โดยเลือกที่ New Project… ตามรูปที่ 2.8 ก็จะได้หน้ าต่างตามรูปที่ 2.9
39
หน้ าต่างการออกแบบ (Design)
รูปที่ 2.10 หน้ าต่าง Window Forms Application
2) จากนั ้นเลือก Visual Basic → Windows Forms Application และกดป่ ุม OK เพื่อสร้าง ฟอร์ม (Form) ขึ้นมาใช้งาน ก็จะได้หน้ าต่างตามรูปที่ 2.10
3) การเรียก FileSystemObject มาใช้งาน ต้องบอกให้โปรแกรม Visual Basic 2010 ให้ทราบ
ก่อน โดยการเลือกเมนู Project Æ Add Reference… ตามรูปที่ 2.11 ก็จะได้หน้ าต่าง Add Reference ตามรูปที่ 2.12
4) ที่หน้ าต่าง Add Reference ในรูปที่ 2.12 ให้ไปที่แถบ COM และเลือก Microsoft Scripting Runtime และคลิกป่ ุม OK ก็ถือว่าเสร็จขัน ้ ตอนการเรียกใช้งาน Microsoft Scripting Runtime
2.3.2 รูปแบบการใช้งาน FileSystemObject วิธีการใช้งานของ FileSystemObject จะมีรูปแบบที่เกี่ยวกับอ็อบเจกต์ Drive, Folder, File และ Text Stream โดยในที่นี้จะกล่าวถึงวิธีการใช้งานของอ็อบเจกต์ File และ Text Stream เท่านั ้น เพราะจะนํ ามาใช้ในการแลกเปลี่ยนข้อมูลกับโปรแกรม SCILAB โดยวิธีการใช้งานมีรูปแบบดังนี้
รูปแบบการประกาศตัวแปรแบบ FileSystemObject แสดงในรูปที่ 2.13
รูปแบบการเรียกใช้งาน FileSystemObject แสดงในรูปที่ 2.14
40
1
2
รูปที่ 2.11 การเลือกหน้ าต่าง Add Reference
1
2
3 รูปที่ 2.12 หน้ าต่าง Add Reference
Public fso As New Scripting . FileSystemObject ชื่อตัวแปรที่ตงั ้ ขึ้น
เครื่องหมายจุด
อ็อบเจกต์ท่ต ี ้องการ
รูปที่ 2.13 การประกาศตัวแปรแบบ FileSystemObject
41
oFileSysObj . Method วิธี ชื่ออ็อบเจกต์
เครื่องหมายจุด
รูปที่ 2.14 การเรียกใช้งาน FileSystemObject
หมายเหตุ โปรแกรม Visual Basic 2010 Express มีตัวช่วยเหลือในการเขียนโปรแกรมคือ เมื่อใส่ เครื่องหมายจุด “ . ” ต่อท้ายคําสั่ง ก็จะแสดงตัวช่วยที่ช่ ือว่า Auto List Members ซึ่งจะมีรายการ คุณสมบัติและฟั งก์ชันต่างๆ ที่เกี่ยวข้องกับอ็อบเจกต์ File และ Text Stream ตามรายละเอียดดังนี้
2.3.3 ฟั งก์ชน ั ที่เกี่ยวของโปรแกรม Visual Basic 2010 2.3.3.1 คําสั่งที่เกี่ยวข้องกับ FileSystemOject
FileSystemObject เป็ นการประกาศตัวแปรที่ใช้อ้างอิง FileSystemObject มีรูปแบบการ เรียกใช้งานดังนี้
Public fso As New Scripting.FileSystemObject ซึ่งเป็ นการกําหนดให้ fso เป็ นอ็อบเจกต์ FileSystemObject โดยจะต้องมีการใส่พารามิเตอร์
New เข้าไปในคําสั่งด้วย (ตัวแปรที่เป็ นอ็อบเจกต์ของ FileSystemObject ต้องใส่นิพจน์ New เสมอ)
CreateTextFile ใช้สร้างไฟล์ในระบบปฏิบต ั ก ิ ารวินโดวส์ ซึ่งมีรูปแบบการเรียกใช้งานดังนี้ oFileSysObj.CreateTextFile (Filename [, Overwrite[, Unicode]]) โดย oFileSysObj คืออ็อบเจกต์ท่ีเรียกใช้งาน, Filename คือชื่อไฟล์ท่ีมีประเภทข้อมูลเป็ นแบบ
String, Overwrite คือตัวเลือกที่บอกว่าสามารถเขียนทับไฟล์ท่ม ี ีช่ อ ื ซํา้ กันได้โดยมีประเภทข้อมูล
เป็ นแบบบูลีน (Boolean: True หรือ False), และ Unicode คือตัวเลือกที่บอกว่าไฟล์ท่ีสร้าง จะเก็บข้อมูลแบบ Unicode หรือ ASCII โดยมีประเภทข้อมูลแบบบูลีน
DeleteFile ใช้ลบไฟล์ข้อมูล โดยมีรป ู แบบการเรียกใช้งานดังนี้
42
oFileSysObj.DeleteFile( FileSpec [, Force]) เมื่อ oFileSysObj คืออ็อบเจกต์ท่เี รียกใช้งาน, FileSpec คือชื่อและที่อย่ข ู องไฟล์ท่ต ี อ ้ งการลบ
ซึ่งมีประเภทข้อมูลเป็ นแบบ String, และ Force คือตัวเลือกสําหรับการลบซึ่งมีประเภทข้อมูล เป็ นแบบบูลีน (โดยไม่สนใจว่าไฟล์นั้นเป็ นแบบไฟล์ท่อ ี ่านอย่างเดียวหรือไม่)
ู แบบการเรียกใช้งานดังนี้ FileExists ใช้ตรวจสอบว่าไฟล์ท่ก ี ําหนดมีอยู่จริงหรือไม่ โดยมีรป oFileSysObj.FileExists(FileSpec) เมื่อ oFileSysObj คืออ็อบเจกต์ท่เี รียกใช้งาน และ FileSpec คือชื่อและที่อยู่ของไฟล์ท่ีต้องการ ตรวจสอบซึ่งมีประเภทข้อมูลเป็ นแบบ String
GetFile ใช้รับค่าจากไฟล์ข้อมูล โดยมีรป ู แบบการเรียกใช้งานดังนี้ oFileSysObj.GetFile(FilePath) เมื่อ oFileSysObj คืออ็อบเจกต์ท่เี รียกใช้งาน และ FilePath คือชื่อและที่อยู่ของไฟล์ท่ม ี ีประเภท ข้อมูลเป็ นแบบ String
GetFileName ใช้รับค่ากลับมาเป็ นชื่อไฟล์ในตําแหน่ งที่ระบุไว้ มีรูปแบบการเรียกใช้งานคือ oFileSysObj.GetFileName(Path) เมื่อ oFileSysObj คืออ็อบเจกต์ท่เี รียกใช้งาน และ FilePath คือที่อยู่ของไฟล์ท่ีมีประเภทข้อมูล
เป็ นแบบ String และแสดงอยู่ภายในเครื่องหมาย “….” 2.3.3.2 คําสั่งที่เกี่ยวข้องกับ TextStream
TextStream เป็ นการประกาศตัวแปรที่ใช้อ้างอิง TextStream มีรูปแบบการเรียกใช้งานดังนี้ Public w_file As Scripting.TextStream ซึ่งเป็ นการกําหนดให้ w_file เป็ นอ็อบเจกต์ TextStream
43
Close ใช้ยกเลิกการเชื่อมต่อกับอ็อบเจกต์ TextStream มีรูปแบบการเรียกใช้งานดังนี้ oTextStreamObj.Close เมื่อ oTextStreamObj คืออ็อบเจกต์ TextStream ที่ต้องการยกเลิกการเชื่อมต่อ
Read ใช้อ่านข้อมูลตามจํานวนที่กําหนดจากไฟล์ข้อมูล มีรป ู แบบการเรียกใช้งานดังนี้ oTextStreamObj.Close เมื่อ oTextStreamObj คืออ็อบเจกต์ TextStream ที่ต้องการอ่านข้อมูล และ Character คือ
สายอักขระหรือจํานวนของอักษร (alphabet) ที่ต้องการอ่านจากไฟล์ข้อมูล โดยมีประเภทข้อมูล เป็ นแบบ Long (ดูตารางที่ 2.3)
ReadAll ใช้อ่านข้อมูลทัง้ หมดจากไฟล์ข้อมูล มีรูปแบบการเรียกใช้งานดังนี้ oTextStreamObj.ReadAll เมื่อ oTextStreamObj คืออ็อบเจกต์ TextStream ที่ต้องการอ่านข้อมูลทัง้ หมด
ReadLine ใช้อา่ นข้อมูลทีละหนึ่ งบรรทัดจากไฟล์ข้อมูล มีรป ู แบบการเรียกใช้งานคือ oTextStreamObj.ReadLine เมื่อ oTextStreamObj คืออ็อบเจกต์ TextStream ที่ต้องการอ่านอ่านข้อมูลทีละหนึ่ งบรรทัด
Skip ใช้กระโดดข้ามข้อมูลจากไฟล์ข้อมูลที่กําหนด มีรป ู แบบการเรียกใช้งานคือ oTextStreamObj.Skip(Characters) เมื่อ oTextStreamObj คืออ็อบเจกต์ TextStream ที่เรียกใช้งาน และ Characters คือสาย อักษระที่ไม่สนใจที่จะอ่าน (มีประเภทข้อมูลเป็ นแบบ Long)
SkipLine ใช้กระโดดข้ามข้อมูลจากไฟล์ข้อมูลทีละหนึ่ งบรรทัด มีรูปแบบการเรียกใช้งานคือ
44
oTextStreamObj.SkipLine เมื่อ oTextStreamObj คืออ็อบเจกต์ TextStream ที่เรียกใช้งาน
Write ใช้เขียนข้อมูลเก็บไว้ในไฟล์ท่ก ี ําหนด (เมื่อเขียนจบ จะไม่ขึ้นบรรทัดใหม่) โดยมีรูปแบบ การเรียกใช้งานดังนี้
oTextStreamObj.Write(Text) เมื่อ oTextStreamObj คืออ็อบเจกต์ TextStream ที่เรียกใช้งาน และ Text คือข้อความที่ ต้องการเขียนลงไปเก็บไว้ในไฟล์ โดยข้อความนี้ต้องอยู่ภายในเครื่องหมาย “….”
WriteLine ใช้เขียนข้อมูลลงไฟล์ข้อมูลทีละหนึ่ งบรรทัด (เมื่อเขียนจบ จะขึ้นบรรทัดใหม่ให้) มีรูปแบบการเรียกใช้งานดังนี้
oTextStreamObj.WriteLine(String) เมื่อ oTextStreamObj คืออ็อบเจกต์ TextStream ที่เรียกใช้งาน และ String คือข้อความแต่ละ
บรรทัดที่ต้องการเขียนลงในไฟล์ โดยข้อความนี้ต้องอยู่ภายในเครื่องหมาย “….”
WriteBlankLines ใช้เขียนไฟล์แล้วเว้นบรรทัดตามที่กําหนด มีรูปแบบการเรียกใช้งานคือ oTextStreamObj.WriteBlankLines(Lines) เมื่อ oTextStreamObj คืออ็อบเจกต์ TextStream ที่เรียกใช้งาน และ Lines คือจํานวนตัวอักษร หรืออักขระที่ต้องการเพิ่มลงในบรรทัดนั ้น โดยมีประเภทข้อมูลเป็ นแบบ Long
2.3.3.3 คําสั่งอื่นที่น่าสนใจ
Shell เป็ นฟั งก์ชันที่ใช้เรียกโปรแกรมประยุกต์ขน ึ้ มาทํางาน มีรป ู แบบการเรียกใช้งานคือ Shell(PathName, [Window Style])
45 โดย PathName คือที่อยู่ของโปรแกรมประยุกต์ท่ีต้องการ และ Window Style คือค่าสถานะ
ในการเรียกโปรแกรมนั ้น
Msgbox เป็ นฟั งก์ชันที่ใช้โต้ตอบระหว่างโปรแกรมกับผู้ใช้ โดยจะแสดงข้อมูลเพียงอย่างเดียว แล้วให้ผู้ใช้กดป่ ุมเลือก (ในกรณี ท่ต ี ้องการให้ผู้ใช้เลือกตอบ) มีรูปแบบการเรียกใช้งานคือ MsgBox Prompt[,Buttons][,Title] เมื่อ Prompt คือข้อความที่ต้องการแสดงในกล่องข้อความ (message box) ในกรณี ท่ต ี ้องการ
แสดงข้อมูลหลายบรรทัด ทําได้โดยนํ าข้อมูลในแต่ละบรรทัดมาเชื่อมด้วยว่า “+chr(13)+”,
Buttons คือส่วนที่ใช้กําหนดการแสดงป่ ุมและกําหนดสัญรูป (icon) ในกล่องข้อความ, และ Title คือข้อความที่ต้องการแสดงบนแถบด้านบนของกล่องข้อความ
Application.StartupPath เป็ นฟั งก์ชันที่ใช้ตงั ้ ค่าโฟลเดอร์ปัจจุบันให้ตรงกับโปรแกรมประยุกต์
โดยถ้าโปรแกรมประยุกต์ทํางานเริ่มจากเครื่องแม่ข่าย คุณสมบัติของ App.Path จะส่งออกค่า
เป็ นชื่อแบบ UNC (Universal Naming Convention) เช่น \ชื่อเครื่องแม่ข่าย\ชื่อโฟลเดอร์\… ซึ่งวิธีการเรียกใช้งานคือ
Application.StartupPath
2.4 ฟั งก์ชันที่เกี่ยวข้องของโปรแกรม SCILAB
ในหัวข้อนี้จะอธิบายฟั งก์ชน ั ต่างๆ ของโปรแกรม SCILAB ที่จําเป็ นสําหรับการนํ ามาใช้งานร่วมกับ
โปรแกรม Visual Basic เพื่อสร้างสื่อการเรียนการสอน ดังต่อไปนี้
2.4.1 คําสั่ง file เป็ นคําสัง่ ที่ใช้เปิ ดหรือปิ ดแฟ้ มข้อมูลหรือไฟล์ โดยมีรป ู แบบการใช้งานทัว่ ไปดังนี้ unit = file('open', filename, [status]) เมื่อ 'open' เป็ นการบอกโปรแกรมให้เปิ ดไฟล์ filename ขึ้นมาใช้งาน, filename คือชื่อ ไฟล์ข้อมูลที่ต้องการเรียกใช้งาน, status เป็ นการกําหนดสถานะของไฟล์ท่ีเปิ ดขึ้นมาใช้งานซึ่งมี
อยู่ 4 รูปแบบคือ
46 ตารางที่ 2.4 รหัสรูปแบบในโปรแกรม SCILAB รหัสรูปแบบ
คําอธิบาย
%d
แสดงผลเป็ นเลขจํานวนเต็มฐานสิบแบบมีเครื่องหมาย (signed integer)
%u
แสดงผลเป็ นเลขจํานวนเต็มฐานสิบแบบไม่มีเครื่องหมาย (unsigned integer)
%x หรือ %X
แสดงผลเป็ นเลขจํานวนเต็มฐานสิบหกแบบไม่มเี ครื่องหมาย
%f
แสดงผลเป็ นเลขจํานวนจริง
%e
แสดงผลเป็ นเลขจํานวนจริงในรูปของเลขยกกําลัง
%c
แสดงผลตัวอักขระ
%s
แสดงผลสายอักขระ
"new"
หมายถึงไฟล์ท่เี ปิ ดขึ้นมาต้องไม่เคยมีอยู่ในสารบบทํางาน (ค่าโดยปริยาย)
"old"
หมายถึงไฟล์ท่เี ปิ ดขึ้นมาต้องมีอยู่แล้วในสารบบทํางาน
"unknown"
หมายถึงไฟล์ท่เี ปิ ดขึ้นมาจะมีอยู่หรือไม่มีอยู่ในสารบบทํางานก็ได้
"scratch"
หมายถึงไฟล์ท่เี ปิ ดขึ้นมาจะถูกลบทิง้ หลังจากเสร็จสิน ้ การทํางาน
และ unit เป็ นเลขจํานวนเต็มที่โปรแกรมใช้อ้างถึงชื่อไฟล์ filename นั ้น โดยหลังจากใช้งาน ไฟล์ท่เี ปิ ดขึ้นมาเสร็จแล้ว ผู้ใช้จะต้องปิ ดการทํางานของไฟล์นั้นเสมอด้วยคําสัง่ file('close', unit)
2.4.2 คําสั่ง fprintf เป็ นคําสัง่ ที่ทําหน้ าที่พิมพ์ค่าของตัวแปรลงไปเก็บไว้ในไฟล์ แทนที่จะแสดงผลลัพธ์ออกมาที่หน้ าต่าง คําสัง่ รูปแบบการใช้งานของคําสัง่ นี้คือ
fprintf(fd, format, value_1, ..., value_n) โดย fd คือชื่อของไฟล์ท่ต ี ้องการเก็บค่าของตัวแปร value_i, format คือรหัสควบคุมการพิมพ์ (ตามตารางที่ 2.4 และ 2.5), และ value_i เป็ นตัวกําหนดว่าจะให้ข้อมูลใดแสดงผลออกมาที่ หน้ าต่างคําสัง่ ตัวอย่างการใช้งาน เช่น
-->fd = file('open', 'results.txt', 'unknown');
47 ตารางที่ 2.5 รหัสบังคับการพิมพ์ในโปรแกรม SCILAB รหัสบังคับการพิมพ์
คําอธิบาย
\n
ขึน ้ บรรทัดใหม่
\t
แท็ป (tab) ในแนวนอน
\v
แท็ปในแนวตัง้
\b
เลื่อนเคอร์เซอร์ไปลบตัวอักขระทางซ้ายมือหนึ่ งตัวอักขระ
\r
เครื่องหมาย return เหมือนกับการกดป่ ุม Enter
\f
ขึน ้ หน้ าใหม่
\a
ส่งเสียงดังออกลําโพงหนึ่ งครัง้
\\
เครื่องหมาย \ (backslash)
\’
เครื่องหมาย ' (single quote)
\”
เครื่องหมาย " (double quote)
\?
เครื่องหมาย ? (question mark)
\ooo
พิมพ์ตัวอักขระที่มีเลขฐานแปดตรงกับค่า ooo
\xhh
พิมพ์ตัวอักขระที่มีเลขฐานสิบหกตรงกับค่า hh
-->for t = 0:%pi/10:%pi --> fprintf(fd, 'time = %6.3f -->end
value = %6.3f\n', t, cos(t));
-->file('close', fd);
ผลลัพธ์ท่ีได้คือโปรแกรม SCILAB จะสร้างไฟล์ท่ีช่ ือว่า results.txt ในสารบบที่กําลังทํางาน อยู่ซ่งึ จะบันทึกข้อมูลที่กําหนดด้วยคําสัง่ fprintf ปรากฏอยู่ (นั่ นคือค่าของสัญญาณโคไซน์ ณ
เวลา t) โดยถ้าลองเปิ ดไฟล์ results.txt ด้วยโปรแกรมเอดิเตอร์ (เช่น Notepad) ก็จะพบ
ข้อมูลตามที่กําหนดไว้ดังแสดงในรูปที่ 2.15
2.4.3 คําสั่ง exec เป็ นคําสัง่ ที่ใช้โหลดฟั งก์ชันเข้ามาประมวลผลในโปรแกรม SCILAB โดยมีลก ั ษณะการใช้งานดังนี้ exec(filename) เมื่อ filename คือชื่อและที่อยู่ (path) ของไฟล์ ซึ่งต้องเขียนภายในเครื่องหมาย "…"
48
รูปที่ 2.15 ข้อมูลภายในไฟล์ results.txt โดยใช้โปรแกรม Notepad
2.4.4 คําสั่ง savematfile เป็ นคําสั่งที่ใช้บันทึกข้อมูลให้อยู่ในรูปไบนารี (binary) หรือแอสกี (ASCII) โดยมีรูปแบบการเรียก ใช้งานดังนี้
savematfile('filename', 'var1') เมื่อ filename คือชื่อและที่อยู่ของไฟล์ ซึ่งต้องเขียนภายในเครื่องหมาย "…" และ var1 คือ
ชื่อตัวแปรที่ต้องการเขียนลงในไฟล์ เช่น คําสั่ง savematfile('Test1.txt','x') จะ เป็ นการนํ าค่าของตัวแปร x ไปเก็บไว้ในไฟล์ Test1.txt
2.4.5 คําสั่ง xs2gif เป็ นคําสัง่ ที่ใช้บันทึกรูปกราฟที่วาดขึ้นด้วยโปรแกรม SCILAB ให้เป็ นไฟล์รูปภาพที่มีนามสกุลเป็ น
แบบ .gif โดยมีรูปแบบการเรียกใช้งานดังนี้
49
เริ่มต้น สร้างไฟล์สคริปต์ เขียนข้อมูลไฟล์สคริปต์
ประมวลผลไฟล์สคริปต์
บันทึกผลลัพธ์ลงไฟล์ข้อมูล
แสดงผลลัพธ์ จบ
รูปที่ 2.16 แผนภาพบล็อกแสดงการเขียนโปรแกรม Visual Basic เพื่อติดต่อกับ SCILAB
xs2gif(win_num, filename) เมื่อ win_num คือตัวเลขจํานวนเต็มบวกที่ใช้อ้างถึงหมายเลขของหน้ าต่างกราฟ และ filename คือชื่อไฟล์ (ที่มีนามสกุล .gif) ที่ต้องการบันทึกรูปกราฟที่ปรากฏในหน้ าต่างกราฟหมายเลข
win_num ตัวอย่างเช่น คําสั่ง xs2gif(1,'F1.gif') จะบันทึกรูปกราฟในหน้ าต่างกราฟ ื F1.gif หมายเลข 1 เป็ นไฟล์ช่ อ
2.5 การเขียนโปรแกรม Visual Basic ติดต่อกับ SCILAB ในส่วนนี้จะแสดงตัวอย่างการเขียนโปรแกรม Visual Basic ติดต่อกับ SCILAB ซึ่งมีการขัน ้ ตอน การทํางานตามแผนภาพบล็อกในรูปที่ 2.16 โดยซอฟต์แวร์ท่ใี ช้ประกอบด้วย
โปรแกรม Microsoft Visual Basic 2010 Express
โปรแกรม SCILAB เวอร์ชัน 4.1.2
ระบบปฏิบต ั ิการ Window XP
50
รูปที่ 2.17 ฟอร์มทดสอบการสร้างไฟล์สคริปต์
และฮาร์ดแวร์ท่ีใช้มีคุณลักษณะดังนี้ CPU แบบ Core2Duo 2.4 GHz, RAM ขนาด 1 GB, ฮาร์ด ดิสก์ไดรฟ์ ขนาด 160 GB, และการ์ดจอ VGA แบบ 128 MB
ในที่นี้จะยกตัวอย่างการหาค่าลอการิทึมฐานสอง7 ของเลขจํานวนเต็ม โดยจะใช้โปรแกรม
Visual Basic สร้างหน้ าต่างส่วนต่อประสาน (interface) เพื่อรับค่าตัวเลขที่ผู้ใช้ป้อนเข้าไป จากนั ้น เมื่อกดป่ ุมคํานวณ โปรแกรม Visual Basic ก็จะนํ าตัวเลขนี้ มาเขียนเป็ นไฟล์สคริปต์ แล้วส่งไปให้
โปรแกรม SCILAB คํานวณโดยใช้ฟังก์ชัน log2(x) เพื่อหาค่าลอการิทึมฐานสองของตัวแปร x
แล้วส่งผลลัพธ์ท่ไี ด้ไปแสดงผลที่หน้ าต่างส่วนต่อประสาน โดยขัน ้ ตอนการทํางานสรุปได้ดังนี้
2.5.1 การสร้างไฟล์สคริปต์ หัวข้อนี้ จะแสดงวิธีการสร้างไฟล์สคริปต์จากหน้ าต่างส่วนต่อประสานของโปรแกรม Visual Basic 2010 Express ดังต่อไปนี้
1) ให้เปิ ดโปรแกรม Visual Basic 2010 Express แล้วสร้างโปรเจ็กต์แบบ Windows Forms
Application จากนั ้นทําการออกแบบหน้ าฟอร์มโดยนํ าป่ ุม Button มาวางไว้ใน Form หนึ่ งป่ ุม
แล้วเปลี่ยนชื่อป่ ุมเป็ น “ทดสอบการสร้างไฟล์สคริปต์” ตามรูปที่ 2.17 2) กําหนดค่าคุณสมบัติของฟอร์มตามตารางที่ 2.6
3) เรียกฟั งก์ชัน FileSystemObject มาใช้งาน โดยเลือกที่เมนู Project → Add Reference…
→ Microsoft Scripting Runtime และกดป่ ุม OK (ตามรูปที่ 2.11 และ 2.12)
4) ดับเบิลคลิกที่ปุ่ม Button หรือกดป่ ุม View Code แล้วเขียนโค้ดโปรแกรมดังนี้
7
ที่หน้ าต่างโซลูชัน (Solution Explorer)
ลอการิทึม (logarithm) เป็ นฟั งก์ชันผกผันของฟั งก์ชันเอ็กซ์โพเนนเชียล กล่าวคือลอการิทึมฐาน b ของค่า x ก็คือค่า n ที่ทําให้สมการ x = bn หรือเขียนได้เป็ น logb(x) = n เป็ นจริง เช่น log2(128) = 7
51 ตารางที่ 2.6 การกําหนดค่าคุณสมบัติของฟอร์มที่ใช้ในรูปที่ 2.17 อ็อบเจกต์ / คอนโทรล
คุณสมบัติ
Form CommandButton
ค่าที่กําหนด
Text
ทดสอบการสร้างไฟล์สคริปต์
Name
Button1
Text
ทดสอบการสร้างไฟล์สคริปต์
รูปที่ 2.18 ผลลัพธ์ท่ไี ด้จากฟั งก์ชัน CreateTextFile
1
Public Class Form1
2
Public fso As New Scripting.FileSystemObject
3
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As
4 5 6
System.EventArgs) Handles Button1.Click
w_file = fso.CreateTextFile("D:\test.sce")
End Sub
'สร้างไฟล์สคริปต์
End Class
5) ทดสอบการทํางานของโปรแกรม โดยการคลิกที่ปุ่ม
หรือกดป่ ุม <F5> ที่คีย์บอร์ด จากนั ้น
ทดสอบโปรแกรมโดยกดป่ ุม “ทดสอบการสร้างไฟล์สคริปต์” ในรูปที่ 2.17 ก็จะได้ไฟล์สคริปต์ ที่มีช่ อ ื ว่า test.sce ปรากฏอยู่ในสารบบ D:\ ดังแสดงในรูปที่ 2.18
หมายเหตุ ฟั งก์ชัน CreateTextFile ในบรรทัดที่ 4 จะสร้างไฟล์สคริปต์ของโปรแกรม SCILAB ที่ช่ ือว่า test.sce เพื่อทําหน้ าที่เป็ นไฟล์ชั่วคราวสําหรับส่งข้อมูลต่างๆ ไปประมวลผลที่ โปรแกรม SCILAB
52
รูปที่ 2.19 ฟอร์มแสดงการเขียนข้อมูลลงไฟล์สคริปต์ ตารางที่ 2.7 การกําหนดค่าคุณสมบัติของฟอร์มที่ใช้ในรูปที่ 2.19 อ็อบเจกต์ / คอนโทรล Form CommandButton TextBox1
คุณสมบัติ
ค่าที่กําหนด
Text
ทดสอบการเขียนข้อมูลลงไฟล์สคริปต์
Name
Button1
Text
ทดสอบการเขียนข้อมูลลงไฟล์สคริปต์
Text
N/A
2.5.2 การเขียนไฟล์สคริปต์ ในที่นี้จะแสดงวิธีการนํ าข้อมูลที่ป้อนผ่านหน้ าต่างส่วนต่อประสานของโปรแกรม Visual Basic 2010
Express ไปเก็บไว้ในไฟล์สคริปต์ดังนี้
1) เปิ ดโปรแกรม Visual Basic 2010 Express แล้ว สร้า งโปรเจ็ก ต์แ บบ Windows Forms
Application จากนั ้นทําการออกแบบหน้ าฟอร์มโดยนํ าป่ ุม Button มาวาง 1 ตัว (เปลี่ยนชื่อเป็ น “ทดสอบการเขียนไฟล์สคริปต์”) และนํ า Textbox1 มาวาง 1 ตัว (เปลี่ยนชื่อเป็ น “Input”)
ตามรูปที่ 2.19
2) กําหนดค่าคุณสมบัติของฟอร์มตามตารางที่ 2.7 3) เรียกฟั งก์ชัน FileSystemObject มาใช้งานโดยเลือกที่เมนู Project → Add Reference…
→ Microsoft Scripting Runtime และกดป่ ุม OK (ตามรูปที่ 2.11 และ 2.12)
4) ดับเบิลคลิกที่ปุ่ม Button หรือคลิกที่ปุ่ม View Code โปรแกรมดังนี้
5) ทดสอบการทํางานของโปรแกรม โดยการกดป่ ุม
ที่หน้ าต่างโซลูชัน แล้วเขียนโค้ด หรือกดป่ ุม <F5> ที่คีย์บอร์ด จากนั ้น
ทําการทดสอบโปรแกรมโดยการป้ อนตัวเลขเข้าไป (เช่น เลข 5) และกดป่ ุม “ทดสอบการเขียน
ไฟล์สคริปต์” หนึ่ งครัง้ ก็จะได้ผลลัพธ์ตามรูปที่ 2.20
53
รูปที่ 2.20 ข้อมูลที่เขียนลงไฟล์สคริปต์ test.sce
1
Public Class Form1
2
Public fso As New Scripting.FileSystemObject
4
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As
3
Public w_file As Scripting.TextStream
System.EventArgs) Handles Button1.Click
5
w_file = fso.CreateTextFile("D:\test.sce")
'สร้างไฟล์สคริปต์
6
w_file.WriteLine("X=" & TextBox1.Text & ";")
'เขียนไฟล์สคริปต์
7 8
End Sub End Class
หมายเหตุ ฟั งก์ชัน WriteLine ในบรรทัดที่ 6 เป็ นการเขียนข้อมูลลงในไฟล์สคริปต์ท่ีสร้างขึ้น เพื่อนํ าข้อมูลไปประมวลผลที่โปรแกรม SCILAB ซึ่งเมื่อป้ อนค่าที่ต้องการ (เช่น เลข 5) ลงไป
ในช่อง Input แล้วกดป่ ุม “ทดสอบการเขียนข้อมูลลงไฟล์สคริปต์” ก็จะทําการสร้างไฟล์สคริปต์
test.sce ในสารบบ D:\ และเขียนข้อมูล X=5 ลงในไฟล์ (ตามที่กําหนดในบรรทัดที่ 6)
2.5.3 การประมวลผลไฟล์สคริปต์ ในที่นี้จะแสดงวิธีการนํ าข้อมูลที่ป้อนผ่านหน้ าต่างส่วนต่อประสานของโปรแกรม Visual Basic 2010
Express ไปเก็บไว้ในไฟล์สคริปต์ แล้วส่งไฟล์สคริปต์ไปประมวลผลที่โปรแกรม SCILAB ดังนี้
1) เปิ ดโปรแกรม Visual Basic 2010 Express แล้ว สร้า งโปรเจ็ก ต์แ บบ Windows Forms
Application จากนั ้นทําการออกแบบหน้ าฟอร์มโดยนํ าป่ ุม Button มาวาง 1 ตัว (เปลี่ยนชื่อ เป็ น “ทดสอบการประมวลผลไฟล์สคริปต์”) และนํ า Textbox1 มาวาง 1 ตัว (เปลี่ยนชื่อเป็ น
“Input”) และ Label มาวาง 1 ตัว ตามรูปที่ 2.21 2) กําหนดค่าคุณสมบัติของฟอร์มตามตารางที่ 2.8
54
รูปที่ 2.21 ฟอร์มทดสอบการประมวลผลไฟล์สคริปต์ ตารางที่ 2.8 การกําหนดค่าคุณสมบัติของฟอร์มที่ใช้ในรูปที่ 2.21 อ็อบเจกต์ / คอนโทรล Form CommandButton TextBox1
คุณสมบัติ
ค่าที่กําหนด
Text
ทดสอบการประมวลผลไฟล์สคริปต์
Name
Button1
Text
ทดสอบการประมวลผลไฟล์สคริปต์
Text
N/A
3) เรียกฟั งก์ชัน FileSystemObject มาใช้งานโดยเลือกที่เมนู Project → Add Reference…
→ Microsoft Scripting Runtime และกดป่ ุม OK (ตามรูปที่ 2.11 และ 2.12)
4) ดับเบิลคลิกที่ปุ่ม Button หรือคลิกที่ปุ่ม View Code โปรแกรมดังนี้
1 2
ที่หน้ าต่างโซลูชัน แล้วเขียนโค้ด
Public Class Form1
Public fso As New Scripting.FileSystemObject
3
Public w_file As Scripting.TextStream
4
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles Button1.Click
5
w_file = fso.CreateTextFile("D:\test.sce")
7
Shell("C:\WINDOWS\scilab-4.1.2\bin\Scilex.exe -f D:\test.sce", vbHide)
6
8 9
w_file.WriteLine("X=" & TextBox1.Text & ";") 'ประมวลผล
End Sub
End Class
'สร้างไฟล์สคริปต์
'เขียนไฟล์สคริปต์
55
รูปที่ 2.22 ฟอร์มทดสอบการบันทึกผลลัพธ์ลงไฟล์ข้อมูล
5) ทดสอบการทํางานของโปรแกรม โดยการกดป่ ุม
หรือกดป่ ุม <F5> ที่คีย์บอร์ด จากนั ้น
ทดสอบการทํางานของโปรแกรมโดยการป้ อนตัวเลข (เช่น เลข 5) ลงไป และกดป่ ุม “ทดสอบ การเขียนไฟล์สคริปต์” หนึ่ งครัง้ ก็จะได้ไฟล์สคริปต์ test.sce ในสารบบ D:\ ที่มีข้อมูล
X=5 จากนั ้นไฟล์สคริปต์นี้จะถูกนํ าไปประมวลผลในโปรแกรม SCILAB8 ผ่านทางคําสั่ง Shell
ตามบรรทัดที่ 7 โดยการประมวลผลไฟล์สคริปต์จะถูกซ่อนด้วยคําสั่ง vbHide (ในที่นี้จึงทําให้ ไม่มีการแสดงผลลัพธ์ใดๆ เกิดขึ้น)
2.5.4 การบันทึกผลลัพธ์ลงไฟล์ข้อมูล ในที่นี้จะแสดงวิธีการนํ าข้อมูลที่ป้อนผ่านหน้ าต่างส่วนต่อประสานของโปรแกรม Visual Basic 2010
Express ไปเก็บไว้ในไฟล์สคริปต์แล้วส่งไฟล์นี้ไปประมวลผล จากนั ้นนํ าผลลัพธ์ท่ีได้มาบันทึกเก็บ ไว้ในไฟล์ข้อมูล ดังแสดงต่อไปนี้
1) เปิ ดโปรแกรม Visual Basic 2010 Express แล้ว สร้า งโปรเจ็ก ต์แ บบ Windows Forms
Application จากนั ้นทําการออกแบบหน้ าฟอร์มโดยนํ าป่ ุม Button มาวาง 1 ตัว (เปลี่ยนชื่อเป็ น
“ทดสอบการบันทึกผลลัพธ์ลงเท็กซ์ไฟล์”) และนํ า Textbox1 มาวาง 1 ตัว (เปลี่ยนชื่อเป็ น “Input”) และ Label มาวาง 1 ตัว ตามรูปที่ 2.22
2) กําหนดค่าคุณสมบัติของฟอร์มตามตารางที่ 2.9 3) เรียกฟั งก์ชัน FileSystemObject มาใช้งานโดยเลือกที่เมนู Project → Add Reference…
→ Microsoft Scripting Runtime และกดป่ ุม OK (ตามรูปที่ 2.11 และ 2.12)
4) ดับเบิลคลิกที่ปุ่ม Button หรือคลิกที่ปุ่ม View Code โปรแกรมดังนี้
8
ไฟล์ท่ใี ช้ประมวลผลของโปรแกรม SCILAB เวอร์ชัน 4.1.2 คือไฟล์ Scilex.exe
ที่หน้ าต่างโซลูชัน แล้วเขียนโค้ด
56 ตารางที่ 2.9 การกําหนดค่าคุณสมบัติของฟอร์มที่ใช้ในรูปที่ 2.22 อ็อบเจกต์ / คอนโทรล Form CommandButton TextBox1 1
คุณสมบัติ
ค่าที่กําหนด
Text
ทดสอบการบันทึกผลลัพธ์ลงไฟล์ข้อมูล
Name
Button1
Text
ทดสอบการบันทึกผลลัพธ์ลงไฟล์ข้อมูล
Text
N\A
Public Class Form1
2
Public fso As New Scripting.FileSystemObject
4
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As
3
Public w_file As Scripting.TextStream
System.EventArgs) Handles Button1.Click
5
w_file = fso.CreateTextFile("D:\test.sce")
'สร้างไฟล์สคริปต์
6
w_file.WriteLine("X=" & TextBox1.Text & ";")
'เขียนไฟล์สคริปต์
8
w_file.WriteLine("savematfile('D:\001.txt', 'output')") w_file.WriteLine("exit();")
'บันทึกผลลัพธ์
'ออกจากโปรแกรม SCILAB
10
w_file.Close()
'ออกจากการเขียนไฟล์สคริปต์
11
Shell("C:\WINDOWS\scilab-4.1.2\bin\Scilex.exe -f D:\test.sce", vbHide)
7
w_file.WriteLine("output=log2(X);")
9
12 13
'เขียนไฟล์สคริปต์
'ประมวลผล
End Sub
End Class
5) ทดสอบการทํางานของโปรแกรม โดยการกดป่ ุม
หรือกดป่ ุม <F5> ที่คีย์บอร์ด จากนั ้น
ทําการทดสอบโปรแกรมโดยการป้ อนตัวเลข (เช่น เลข 8) ลงไปตามรูปที่ 2.22 และกดป่ ุม
“ทดสอบการบันทึกผลลัพธ์ลงเท็กซ์ไฟล์” หนึ่ งครัง้ ก็จะได้ผลลัพธ์ดังรูปที่ 2.23
หมายเหตุ การบัน ทึก ผลลัพ ธ์ล งในไฟล์ข้อ มูล จะต้อ งเขีย นโค้ด ลงในไฟล์ส คริป ต์ไ ว้ก่อ น
(บรรทัดที่ 8) โดยใช้คําสั่ง savematfile จากนั ้นออกจากการโปรแกรม SCILAB โดยใช้ คําสั่ง exit (บรรทัดที่ 9) และสิน ้ สุดการเขียนข้อมูล (บรรทัดที่ 10) หลังจากนั ้นเมื่อป้ อน
ข้อมูลลงไปและกดป่ ุม “ทดสอบการบันทึกผลลัพธ์ลงไฟล์ข้อมูล” ก็จะได้ไฟล์สคริปต์ที่ช่ ือว่า test.sce ปรากฏอยู่ในสารบบ D:\ และบันทึกผลลัพธ์ท่ีได้จากการประมวลผลเข้าไปเก็บ
ในไฟล์ข้อมูลที่ช่ ือว่า 001.txt ซึ่งเมื่อเปิ ดไฟล์ข้อมูล 001.txt เพื่อดูผลลัพธ์ก็จะได้ตาม
รูปที่ 2.24
57
รูปที่ 2.23 การบันทึกผลลัพธ์ลงไฟล์ข้อมูล 001.txt
รูปที่ 2.24 ผลลัพธ์ท่ไี ด้ในไฟล์ 001.txt แสดงด้วยโปรแกรม NotePad
รูปที่ 2.25 ฟอร์มการแสดงผลลัพธ์ของ Log ฐาน 2
58 ตารางที่ 2.10 การกําหนดค่าคุณสมบัติของฟอร์มที่ใช้ในรูปที่ 2.25 อ็อบเจกต์ / คอนโทรล Form
คุณสมบัติ
ค่าที่กําหนด
Text
การแสดงผลลัพธ์ของ Log ฐาน 2
Name
Button1
Text
ประมวลผลลัพธ์ Log ฐาน 2
Textbox1
Text
N\A
Textbox2
Text
N\A
Interval
1000
Enabled
False
CommandButton
Timer1
2.5.5 การแสดงผลลัพธ์ ในที่นี้จะแสดงวิธีการนํ าข้อมูลที่ป้อนผ่านหน้ าต่างส่วนต่อประสานของโปรแกรม Visual Basic 2010
Express ไปเก็บไว้ในไฟล์สคริปต์แล้วส่งไฟล์นี้ไปประมวลผล จากนั ้นนํ าผลลัพธ์ท่ีได้มาบันทึกเก็บ
ไว้ในไฟล์ข้อมูลแล้วส่งกลับมาแสดงผลที่หน้ าต่างส่วนต่อประสานของโปรแกรม Visual Basic 2010 Express ดังแสดงต่อไปนี้
1) เปิ ดโปรแกรม Visual Basic 2010 Express แล้วสร้างโปรเจ็ก ต์แบบ Windows Forms
Application จากนั้นทําการออกแบบหน้ าฟอร์มโดยนํ าป่ ุม Button มาวาง 1 ตัว (เปลี่ยนชื่อ
เป็ น “ประมวลผลลัพธ์ Log ฐาน 2”), Textbox1 มาวาง 2 ตัว (เปลี่ยนชื่อเป็ น “Input” และ
“Output”), Label มาวาง 2 ตัว, และ Timer1 มาวางไว้นอกฟอร์มอีก 1 ตัว ตามรูปที่ 2.25 2) กําหนดค่าคุณสมบัติของฟอร์มตามตารางที่ 2.10
3) เรียกฟั งก์ชัน FileSystemObject มาใช้งานโดยเลือกที่เมนู Project → Add Reference…
→ Microsoft Scripting Runtime และกดป่ ุม OK (ตามรูปที่ 2.11 และ 2.12)
4) ดับเบิลคลิกที่ปุ่ม Button หรือคลิกที่ปุ่ม View Code โปรแกรมดังนี้
1
ที่หน้ าต่างโซลูชัน แล้วเขียนโค้ด
Public Class Form1
2
Public fso As New Scripting.FileSystemObject
4
Public r_file As Scripting.TextStream
5
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As
3
Public w_file As Scripting.TextStream
System.EventArgs) Handles Button1.Click
59 6
w_file = fso.CreateTextFile("D:\test.sce")
'สร้างไฟล์สคริปต์
7
w_file.WriteLine("X=" & TextBox1.Text & ";")
'เขียนไฟล์สคริปต์
9
w_file.WriteLine("savematfile('D:\001.txt','output')")
'บันทึกผลลัพธ์
10
w_file.WriteLine("exit();")
12
Shell("C:\WINDOWS\scilab-4.1.2\bin\Scilex.exe -f D:\test.sce", vbHide)
8
11 13
w_file.WriteLine("output=log2(X);")
w_file.Close()
Timer1.Enabled = True
'เขียนไฟล์สคริปต์
'ออกจากโปรแกรม SCILAB
'ออกจากการเขียนไฟล์สคริปต์
'เริ่มการทํางานของ Timer1
14
End Sub
15
Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As
16 17
System.EventArgs) Handles Timer1.Tick If Timer1.Interval = 1000 Then
18
23 24
'อ่านข้อมูลจากไฟล์ข้อมูลจนจบ
TextBox2.Text = Val(r_file.ReadLine)
20 22
'เปิ ดไฟล์ข้อมูล
Do Until r_file.AtEndOfStream
19 21
'หน่ วยเวลาเพื่อรอประมวลผล
r_file = fso.OpenTextFile("D:\001.txt")
Loop End If
Timer1.Enabled = False
'แสดงข้อมูล Textbox2
'จบการทํางานของ Timer1
End Sub End Class
รูปที่ 2.26 ผลลัพธ์ของ Log ของเลข 256 ฐาน 2 (8 = log2(256))
5) ทดสอบการทํางานของโปรแกรม โดยการกดป่ ุม
หรือกดป่ ุม <F5> ที่คีย์บอร์ด จากนั ้น
ทําการทดสอบโปรแกรมโดยการป้ อนตัวเลข (เช่น เลข 256) และกดป่ ุม “ประมวลผลลัพธ์ Log
ฐาน 2” หนึ่ งครัง้ ก็จะได้ผลลัพธ์ดังรูปที่ 2.26
60
รูปที่ 2.27 ตัวอย่างโปรแกรมเข้าสู่ระบบ
2.6 สรุปท้ายบท บทนี้ได้สรุปพื้นฐานการใช้งานโปรแกรม Visual Basic เพื่อติดต่อกับโปรแกรม SCILAB โดยเริ่ม จากประวัติความเป็ นมาของโปรแกรม Visual Basic จากนั ้นอธิบายหลักการใช้งานของโปรแกรม
Visual Basic 2010 Express รวมทัง้ การเชื่อมต่อกับโปรแกรม SCILAB เพื่อเป็ นแนวทางใช้การ สร้างสื่อการเรียนการสอนที่จะอธิบายในบทต่อไป
2.7 แบบฝึ กหัดท้ายบท 1. จงอธิบายเมนูหลัก (menu bar) ที่นิยมใช้งานของโปรแกรม Visual Basic 2010 Express 2. การใช้งานอ็อบเจกต์ FileSystemObject จะต้องมีการเรียกไลบรารีท่ช ี ่อ ื ว่าอะไร 3. จงอธิบายความหมายและรูปแบบการใช้งานของฟั งก์ชัน Shell 4. ฟั งก์ชัน savematfile ของโปรแกรม SCILAB มีรูปแบบการใช้งานอย่างไร 5. จงออกแบบโปรแกรมเข้าสู่ระบบ โดยเมื่อป้ อนชื่อลงใน Textbox และคลิกที่ปุ่ม “เข้าสู่ระบบ” จะแสดงข้อความยินดีตอบรับและชื่อผู้ใช้งาน ดังตัวอย่างในรูปที่ 2.27
61
บทที่ 3 การสร้างสื่อการสอนด้วยโปรแกรม Visual Basic ร่วมกับ SCILAB
ในบทนี้ จะแสดงตัวอย่างขัน ้ ตอนการสร้างสื่อการสอนด้วยโปรแกรม Visual Basic (VB) ร่วมกับ SCILAB ซึ่งประกอบด้วยการบวก/ลบ/คูณ/หาร ของเลขสองจํานวน การหาดีเทอร์มิแนนต์และ
อินเวอร์สของเมทริกซ์ การพิสูจน์คุณสมบัติของเมทริกซ์ การหาค่าลอการิทึมฐานใดๆ การบวกและ ลบสมการพหุนาม และการวาดกราฟสองมิติ เพื่อเป็ นแนวทางให้ผู้อ่านสามารถนํ าไปพัฒนาต่อยอด หรือประยุกต์ใช้งานด้านอื่นได้
3.1 การบวก/ลบ/คูณ/หาร ของเลขสองจํานวน ในส่วนนี้จะแสดงการใช้โปรแกรม VB 2010 Express เพื่อสร้างหน้ าต่างส่วนต่อประสาน (interface) เพื่อใช้สําหรับการบวก ลบ คูณ และหาร ของเลขสองจํานวน ดังต่อไปนี้
1) เปิ ดโปรแกรม VB 2010 Express แล้วสร้างโปรเจ็กต์แบบ Windows Forms Application จากนั ้นออกแบบหน้ าฟอร์มตามรูปที่ 3.1
2) กําหนดค่าคุณสมบัติของฟอร์มในรูปที่ 3.1 ตามตารางที่ 3.1 3) เรียกฟั งก์ชัน FileSystemObject มาใช้งานโดยเลือกที่เมนู Project → Add Reference…
→ Microsoft Scripting Runtime และกดป่ ุม OK (ตามรูปที่ 2.11 และ 2.12)
4) ดับเบิลคลิกที่ฟอร์มหรือคลิกที่ป่ม ุ View Code แล้วเขียนโค้ดโปรแกรมดังนี้
ที่หน้ าต่างโซลูชัน (solution explorer)
62
รูปที่ 3.1 ฟอร์มสําหรับทําหน้ าที่การบวก ลบ คูณ และหาร ของเลขสองจํานวน ตารางที่ 3.1 ค่าคุณสมบัติของฟอร์มในรูปที่ 3.1 อ็อบเจกต์ / คอนโทรล Form
คุณสมบัติ
ค่าที่กําหนด
Text
การบวก/ลบ/คูณ/หาร ด้วย SCILAB
Name
Button1
Text
+ (บวก)
Name
Button2
Text
- (ลบ)
Name
Button3
Text
X (คูณ)
Name
Button4
Text
/ (หาร)
Textbox1 (A)
Text
N/A
Textbox2 (B)
Text
N/A
Textbox3 (C)
Text
N/A
Enabled
False
Interval
1000
CommandButton1 CommandButton2 CommandButton3 CommandButton4
Timer1
โค้ดของฟอร์มในรูปที่ 3.1 1 2
Public Class Form1
Public fso As New Scripting.FileSystemObject
63 3
Public w_file As Scripting.TextStream
4
Public r_file As Scripting.TextStream
6
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As
5
7 8 9
10 11 12 13 14 15 16 17 18 19 20 21 22
Public oparation As String
System.EventArgs) Handles Button1.Click oparation = "+"
'การบวก
F_scilab()
'เรียกใช้ฟังก์ชน ั F_scilab
End Sub
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click oparation = "-"
'การลบ
F_scilab()
'เรียกใช้ฟังก์ชัน F_scilab
End Sub
Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click oparation = "*"
'การคูณ
F_scilab()
'เรียกใช้ฟังก์ชัน F_scilab
End Sub
Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click oparation = "/"
'การหาร
F_scilab()
'เรียกใช้ฟังก์ชัน F_scilab
End Sub
Private Sub F_scilab()
'รายละเอียดของฟั งก์ชัน F_scilab
23
TextBox3.Text = ""
w_file = fso.CreateTextFile("D:\temp.sce")
'สร้างไฟล์สคริปต์ช่ อ ื temp.sce
25
w_file.WriteLine("A=" & TextBox1.Text & ";")
'ให้ตัวแปร A = Textbox1.Text
24 26 27 28
'ลบข้อมูลใน textbox3
w_file.WriteLine("B=" & TextBox2.Text & ";") w_file.WriteLine("C=A" & oparation & "B;") ตัวดําเนิ นการและ B
w_file.WriteLine("otext=string(C);")
'ให้ตัวแปร C มีค่าเท่ากับ A ตามด้วย
'แปลงข้อมูล C เป็ นสายอักขระเก็บไว้ท่ต ี ัวแปร otext
29
w_file.WriteLine("fid = mopen('D:\001.txt', 'w');")
31
30
'ให้ตัวแปร B = Textbox2.Text
w_file.WriteLine("mfprintf(fid,'%s\n', otext);")
'สร้างไฟล์ผลลัพธ์ 001.txt
'เขียนข้อมูล otext ลงในไฟล์ 001.txt
w_file.WriteLine("mclose(fid);")
'จบการเขียนข้อมูลลงไฟล์ 001.txt
32
w_file.WriteLine("exit")
'ออกจากโปรแกรม SCILAB
34
Shell("C:\WINDOWS\scilab-4.1.2\bin\Scilex.exe -f D:\temp.sce", vbHide) 'ประมวลผล
33
w_file.Close()
'จบการเขียนข้อมูลลงไฟล์สคริปต์
64 35 36 37 38
Timer1.Enabled = True
'เปิ ดการทํางาน Timer1
End Sub
Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles Timer1.Tick
If fso.FileExists("D:\001.txt") = True And Timer1.Interval = 1000 Then
'ตรวจสอบเงื่อนไขไฟล์ 001.txt มีอยู่จริงหรือไม่และหน่ วงเวลาเท่ากับ 1 วินาที
39
r_file = fso.OpenTextFile("D:\001.txt")
'เปิ ดไฟล์ 001.txt
40
Do Until r_file.AtEndOfStream
'ตรวจสอบเงื่อนไข อ่านข้อมูลจาก 001.txt จบหรือไม่
42
Loop
r_file.Close()
'วนลูปไปตรวจสอบเงื่อนไข
'จบการอ่านข้อมูล
44
Timer1.Enabled = False
'ปิ ดการทํางาน Timer1
41
TextBox3.Text = Val(r_file.ReadLine)
43 45 46 47
End If
End Sub
'นํ าข้อมูลที่อา่ นได้ใส่ลง textbox3.text
'จบทํางานเงื่อนไข
End Class
กดป่ ุมบวก
รูปที่ 3.2 ทดสอบการบวกเลขสองจํานวน
5) ทดสอบการทํางานของโปรแกรมโดยการกดป่ ุม
หรือกดป่ ุม <F5> ที่คีย์บอร์ด จากนั ้น
ป้ อนข้อมูลดังนี้ A มีค่าเท่ากับ 5 และ B มีค่าเท่ากับ 5 และกดป่ ุม “+ (บวก)” หนึ่ งครัง้ ก็จะได้ผลลัพธ์ตามรูปที่ 3.2 แต่ถ้ากดป่ ุม “× (คูณ)” หนึ่ งครัง้ ก็จะได้ผลลัพธ์ตามรูปที่ 3.3
3.2 การหาดีเทอร์มิแนนต์และอินเวอร์สของเมทริกซ์ ในที่นี้จะแสดงการหาดีเทอร์มิแนนต์ (determinant) และอินเวอร์ส (inverse) ของเมทริกซ์ขนาด 2×2 และ 3×3 โดยจะสร้างฟอร์มทัง้ หมด 3 หน้ าต่าง ดังรายละเอียดต่อไปนี้
65
กดป่ ุมคูณ
รูปที่ 3.3 ทดสอบการคูณเลขสองจํานวน
รูปที่ 3.4 ฟอร์มเลือกขนาดเมทริกซ์ 2×2 หรือ 3×3 (Form1)
Form1 คือฟอร์มกําหนดขนาดของเมทริกซ์ท่จี ะใช้งาน
Form2 คือฟอร์มสําหรับการหาดีเทอร์มิแนนต์และอินเวอร์สของเมทริกซ์ขนาด 2×2
Form3 คือฟอร์มสําหรับการหาดีเทอร์มิแนนต์และอินเวอร์สของเมทริกซ์ขนาด 3×3
3.2.1 ฟอร์มกําหนดขนาดของเมทริกซ์ การสร้างฟอร์มกําหนดขนาดของเมทริกซ์ (Form1) ทําได้ดังนี้ 1) เปิ ดโปรแกรม VB 2010 Express แล้วสร้างโปรเจ็กต์แบบ Windows Forms Application โดยหน้ าต่างนี้จะให้ผู้ใช้งานเลือกขนาดของเมทริกซ์ท่ีต้องการ โดยจะมีปุ่มเลือกเมทริกซ์ขนาด
2×2 และ 3×3 ดังแสดงในรูปที่ 3.4
2) กําหนดค่าคุณสมบัติของฟอร์มในรูปที่ 3.4 ตามตารางที่ 3.2
66 ตารางที่ 3.2 ค่าคุณสมบัติของฟอร์มในรูปที่ 3.4 อ็อบเจกต์ / คอนโทรล
คุณสมบัติ
Form CommandButton1 CommandButton2
ค่าที่กําหนด
Text
เมทริกซ์
StartPosition
CenterScreen
Name
Button1
Text
2x2
Name
Button2
Text
3x3
3) เรียกฟั งก์ชัน FileSystemObject มาใช้งานโดยเลือกที่เมนู Project → Add Reference…
→ Microsoft Scripting Runtime และกดป่ ุม OK (ตามรูปที่ 2.11 และ 2.12)
4) ดับเบิลคลิกที่ฟอร์มหรือคลิกที่ปุ่ม View Code ดังนี้
ที่หน้ าต่างโซลูชน ั แล้วเขียนโค้ดโปรแกรม
โค้ดของฟอร์ม Form1 ในรูปที่ 3.4 1 2 3 4 5 6 7 8 9 10
Public Class Form1 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles Button1.Click Hide()
Form2.Show()
End Sub
'ซ่อนฟอร์มที่ใช้งานอยู่ (Form1)
'แสดง Form2
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles Button2.Click Hide()
Form3.Show()
End Sub
'ซ่อนฟอร์มที่ใช้งานอยู่ (Form1)
'แสดง Form3
End Class
3.2.2 ฟอร์มสําหรับหาดีเทอร์มิแนนต์และอินเวอร์สของเมทริกซ์ขนาด 2×2 การสร้างฟอร์มสําหรับการหาดีเทอร์มิแนนต์และอินเวอร์สของเมทริกซ์ขนาด 2×2 (Form2) ทําได้
ดังนี้
67
ดีเทอร์มิแนนต์
อินเวอร์ส
รูปที่ 3.5 ฟอร์มสําหรับการหาดีเทอร์มิแนนต์และอินเวอร์สของเมทริกซ์ขนาด 2×2 (Form2)
รูปที่ 3.6 เครื่องมือ Panel ที่ใช้ในการออกแบบผลลัพธ์ของ Form2
1) เปิ ดโปรแกรม VB 2010 Express แล้วสร้างโปรเจ็กต์แบบ Windows Forms Application
โดยหน้ าต่างนี้จะใช้สําหรับหาดีเทอร์มิแนนต์และอินเวอร์สของเมทริกซ์ขนาด 2×2 ซึ่งต้องมีปุ่ม
สําหรับคํานวณ 2 ป่ ุม โดยการหาดีเทอร์มิแนนต์จะแสดง Textbox จํานวน 1 ช่อง เป็ น Panel ที่หนึ่ ง และการหาอินเวอร์สจะแสดง Textbox จํานวน 4 ช่อง เป็ น Panel ที่สอง ดังแสดงใน รูปที่ 3.5
หมายเหตุ การออกแบบฟอร์มผลลัพธ์นั้นจะใช้เครื่องมือ (Toolbox) ที่มีช่ ือว่า Panel ตามรูปที่
3.6 ซึ่งจะต้องสร้าง Panel สองอันซ้อนกัน ณ ตําแหน่ งที่แสดงผลลัพธ์ โดย Panel ที่หนึ่ งใช้
แสดงผลลัพธ์ของการหาดีเทอร์มิแนนต์ และ Panel ที่สองใช้แสดงผลลัพธ์ของการหาอินเวอร์ส นอกจากนี้จะต้องทําการซ่อน Panel ทัง้ สองไว้ก่อน โดยการกําหนดค่า Visible เท่ากับ False ตามรูปที่ 3.7
68
รูปที่ 3.7 การตัง้ ค่าการซ่อน Panel
แถวที่ 1 แนวตัง้ ที่ 2
รูปที่ 3.8 ตัวอย่างรหัสที่ใช้กําหนด Textbox (XY)
2) กําหนดค่าคุณสมบัติของฟอร์มในรูปที่ 3.5 ตามตารางที่ 3.3 หมายเหตุ รหัสที่ใช้ในการตัง้ ชื่อ Textbox (XY) หมายถึง Textbox แถวที่ X และแนวตัง้ ที่ Y เช่น ถ้ากําหนดให้ Textbox (12) จะหมายถึง Textbox แถวที่ 1 และแนวตัง้ ที่ 2 ตามที่ แสดงในรูปที่ 3.8
3) เรียกฟั งก์ชัน FileSystemObject มาใช้งานโดยเลือกที่เมนู Project → Add Reference…
→ Microsoft Scripting Runtime และกดป่ ุม OK (ตามรูปที่ 2.11 และ 2.12)
4) ดับเบิลคลิกที่ฟอร์มหรือคลิกที่ปุ่ม View Code ดังนี้
ที่หน้ าต่างโซลูชันแล้วเขียนโค้ดโปรแกรม
69 ตารางที่ 3.3 ค่าคุณสมบัติของฟอร์มในรูปที่ 3.5 อ็อบเจกต์ / คอนโทรล Form CommandButton1 CommandButton2 CommandButton3 Textbox (A11) Textbox (A12) Textbox (A21) Textbox (A22) Textbox (1) Panel1 Textbox (11) Panel2 Textbox (12) Panel2 Textbox (21) Panel2 Textbox (22) Panel2 Timer1
คุณสมบัติ
ค่าที่กําหนด
Text
เมทริกซ์ขนาด 2 × 2
StartPosition
CenterScreen
Name
Button1
Text
ดีเทอร์มิแนนต์
Name
Button2
Text
อินเวอร์ส
Name
Button3
Text
ยัอนกลับ
Name
a0
Text
N/A
Name
a1
Text
N/A
Name
a2
Text
N/A
Name
a3
Text
N/A
Name
da
Text
N/A
Name
inva0
Text
N/A
Name
inva1
Text
N/A
Name
inva2
Text
N/A
Name
inva3
Text
N/A
Enabled
False
Interval
1000
70 โค้ดของฟอร์ม Form2 ในรูปที่ 3.5 1 2
Public Class Form2
Public fso As New Scripting.FileSystemObject
3
Public w_file As Scripting.TextStream
5
Public codeline As String
4 6 7 8 9 10 11 12
Public r_file As Scripting.TextStream
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles Button1.Click da.Text = ""
'ลบข้อมูลใน da.Text
w_file = fso.CreateTextFile("D:\temp.sce") 'สร้างไฟล์สคริปต์ช่ อ ื ว่า temp.sce
w_file.WriteLine("A=[" & a0.Text & " " & a1.Text & ";" & a2.Text & " " & a3.Text & "];") 'สร้างตัวแปรเมทริกซ์ A เท่ากับ a0.text - a3.text ตามลําดับ w_file.WriteLine("output=det(A);")
'หาดีเทอร์มิแนนต์ของเมทริกซ์ A
w_file.WriteLine("otext=string(output);")
'แปลงข้อมูล output เป็ นสายอักขระเก็บไว้ท่ี
ตัวแปร otext
w_file.WriteLine("fid = mopen('D:\001.txt', 'w');")
'สร้างไฟล์ผลลัพธ์ 001.txt
13
w_file.WriteLine("mfprintf(fid,'%s\n',otext);") 'นํ าข้อมูล output เขียนลงในไฟล์ 001.txt
15
w_file.WriteLine("exit")
17
Shell("C:\WINDOWS\scilab-4.1.2\bin\Scilex.exe -f D:\temp.sce", vbHide)
14 16 18 19 20 21 22
w_file.WriteLine("mclose(fid);")
'จบการเขียนข้อมูลลงไฟล์ 001.txt
'ออกจากโปรแกรม SCILAB
w_file.Close()
'จบการเขียนข้อมูลลงไฟล์สคริปต์
Timer1.Enabled = True
'เปิ ดการทํางาน Timer1
End Sub
Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles Timer1.Tick
If fso.FileExists("D:\001.txt") = True And Timer1.Interval = 1000 Then
เงื่อนไขไฟล์ 001.txt มีอยู่จริงหรือไม่และหน่ วงเวลาเท่ากับ 1 วินาที r_file = fso.OpenTextFile("D:\001.txt")
'เปิ ดไฟล์ 001.txt
23
Do Until r_file.AtEndOfStream
25
Loop
'วนลูปไปตรวจสอบเงื่อนไข
26
r_file.Close()
'จบการอ่านข้อมูล
28
Panel1.Visible = True
24
27 29 30 31
'ตรวจสอบ
da.Text = r_file.ReadLine
Panel2.Visible = False Timer1.Enabled = False
End If End Sub
'ตรวจสอบเงื่อนไข อ่านข้อมูลจาก 001.txt จบหรือไม่ 'นํ าข้อมูลที่อ่านได้ใส่ลง da.text
'ปิ ด Panel2
'เปิ ด Panel1
'ปิ ดการทํางาน Timer1 'จบทํางานเงื่อนไข
71 32 33
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click inva0.Text = ""
'ลบข้อมูลใน inva0.text
35
inva2.Text = ""
'ลบข้อมูลใน inva2.text
37
w_file = fso.CreateTextFile("D:\temp.sce")
34
inva1.Text = ""
36 38 39 40 41 42
inva3.Text = ""
& "];")
'ลบข้อมูลใน inva1.text 'ลบข้อมูลใน inva3.text 'สร้างไฟล์สคริปต์ช่ อ ื ว่า temp.sce
w_file.WriteLine("A=[" & a0.Text & " " & a1.Text & ";" & a2.Text & " " & a3.Text 'สร้างตัวแปรเมทริกซ์ A เท่ากับ a0.text - a3.text ตามลําดับ
w_file.WriteLine("output=inv(A);")
w_file.WriteLine("otext=string(output);")
'หาอินเวอร์สของเมทริกซ์ A
'แปลงข้อมูล output เป็ นสายอักขระเก็บไว้ท่ี
ตัวแปร otext
w_file.WriteLine("fid = mopen('D:\001.txt', 'w');")
'สร้างไฟล์ผลลัพธ์ 001.txt
w_file.WriteLine("mfprintf(fid,'%s\n',otext(1));")
'นํ าข้อมูล otext(1) เขียนลงใน 001.txt
43
w_file.WriteLine("mfprintf(fid,'%s\n',otext(3));")
'นํ าข้อมูล otext(3) เขียนลงใน 001.txt
45
w_file.WriteLine("mfprintf(fid,'%s\n',otext(4));")
'นํ าข้อมูล otext(4) เขียนลงใน 001.txt
47
w_file.WriteLine("exit")
'ออกจากโปรแกรม SCILAB
49
w_file.Close()
'จบการเขียนข้อมูลลงไฟล์สคริปต์
Shell("C:\WINDOWS\scilab-4.1.2\bin\Scilex.exe -f D:\temp.sce", vbHide)
50
Timer2.Enabled = True
'เปิ ดการทํางาน Timer2
44 46 48
51 52 53 54 55
w_file.WriteLine("mfprintf(fid,'%s\n',otext(2));") w_file.WriteLine("mclose(fid);")
End Sub
'นํ าข้อมูล otext(2) เขียนลงใน 001.txt
'จบการเขียนข้อมูลลงไฟล์ 001.txt
Private Sub Timer2_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer2.Tick
If fso.FileExists("D:\001.txt") = True And Timer2.Interval = 1000 Then
'ตรวจสอบ
เงื่อนไขไฟล์ 001.txt มีอยู่จริงหรือไม่และหน่ วงเวลาเท่ากับ 1 วินาที r_file = fso.OpenTextFile("D:\001.txt")
Do Until r_file.AtEndOfStream
'เปิ ดไฟล์ 001.txt
'ตรวจสอบเงื่อนไข อ่านข้อมูลจาก 001.txt จบหรือไม่
56
inva0.Text = r_file.ReadLine
'นํ าข้อมูลที่อ่านได้ใส่ลง inva0.text
58
inva2.Text = r_file.ReadLine
'นํ าข้อมูลที่อ่านได้ใส่ลง inva2.text
57 59
inva1.Text = r_file.ReadLine inva3.Text = r_file.ReadLine
60
Loop
61
r_file.Close()
63
Panel2.Visible = True
62
Panel1.Visible = False
'นํ าข้อมูลที่อ่านได้ใส่ลง inva1.text 'นํ าข้อมูลที่อ่านได้ใส่ลง inva3.text 'วนลูปไปตรวจสอบเงื่อนไข
'จบการอ่านข้อมูล
'ปิ ด Panel1
'เปิ ด Panel2
72 64 65 66 67 68 69 70 71
Timer2.Enabled = False End If
'ปิ ดการทํางาน Timer2 'จบทํางานเงื่อนไข
End Sub
Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click Hide()
'ซ่อนฟอร์มที่ใช้งานอยู่ (Form2)
Form1.Show()
'แสดง Form1
End Sub
End Class
ดีเทอร์มิแนนต์
อินเวอร์ส
รูปที่ 3.9 ฟอร์มสําหรับการหาดีเทอร์มิแนนต์และอินเวอร์สของเมทริกซ์ขนาด 3×3 (Form3)
3.2.3 ฟอร์มสําหรับหาดีเทอร์มิแนนต์และอินเวอร์สของเมทริกซ์ขนาด 3×3 การสร้างฟอร์มสําหรับหาดีเทอร์มิแนนต์และอินเวอร์สของเมทริกซ์ขนาด 3×3 (Form3) ทําได้ดังนี้ 1) เปิ ดโปรแกรม VB 2010 Express แล้วสร้างโปรเจ็กต์แบบ Windows Forms Application โดยหน้ าต่างนี้ จะใช้สําหรับหาดีเทอร์มิแนนต์และอินเวอร์สของเมทริกซ์ขนาด 3×3 โดยการ
ออกแบบในส่วนแสดงผลลัพธ์จะมีลักษณะเหมือนกับแบบฟอร์มที่ 2 (Form2) โดยจะใช้ Panel ซ่อนผลลัพธ์ไว้ตามที่กําหนดในรูปที่ 3.6 และ 3.7 แต่จะมีขนาดของเมทริกซ์เป็ น 3×3 ตาม
รูปที่ 3.9
2) กําหนดค่าคุณสมบัติของฟอร์มในรูปที่ 3.9 ตามตารางที่ 3.4
73 ตารางที่ 3.4 ค่าคุณสมบัติของฟอร์มในรูปที่ 3.9 อ็อบเจกต์ / คอนโทรล Form CommandButton1 CommandButton2 CommandButton3 Textbox (A11) Textbox (A12) Textbox (A13) Textbox (A21) Textbox (A22) Textbox (A23) Textbox (A31) Textbox (A32) Textbox (A33) Textbox (1) Panel1
คุณสมบัติ
ค่าที่กําหนด
Text
เมทริกซ์ขนาด 3 × 3
StartPosition
CenterScreen
Name
Button1
Text
ดีเทอร์มิแนนต์
Name
Button2
Text
อินเวอร์ส
Name
Button3
Text
ยัอนกลับ
Name
a0
Text
N/A
Name
a1
Text
N/A
Name
a2
Text
N/A
Name
a3
Text
N/A
Name
a4
Text
N/A
Name
a5
Text
N/A
Name
a6
Text
N/A
Name
a7
Text
N/A
Name
a8
Text
N/A
Name
da
Text
N/A
74 อ็อบเจกต์ / คอนโทรล Textbox (11) Panel2 Textbox (12) Panel2 Textbox (13) Panel2 Textbox (21) Panel2 Textbox (22) Panel2 Textbox (23) Panel2 Textbox (31) Panel2 Textbox (32) Panel2 Textbox (33) Panel2 Timer1
คุณสมบัติ
ค่าที่กําหนด
Name
inva0
Text
N/A
Name
inva1
Text
N/A
Name
inva2
Text
N/A
Name
inva3
Text
N/A
Name
inva4
Text
N/A
Name
inva5
Text
N/A
Name
inva6
Text
N/A
Name
inva7
Text
N/A
Name
inva8
Text
N/A
Enabled
False
Interval
1000
หมายเหตุ การเรียงรหัส Textbox (XY) ในตารางที่ 3.4 จะเหมือนกับ Form2 ที่แสดงในตารางที่
3.3 เพียงแต่ขนาดเมทริกซ์จะเป็ น 3×3
3) เรียกฟั งก์ชัน FileSystemObject มาใช้งานโดยเลือกที่เมนู Project → Add Reference…
→ Microsoft Scripting Runtime และกดป่ ุม OK (ตามรูปที่ 2.11 และ 2.12)
4) ดับเบิลคลิกที่ฟอร์มหรือคลิกที่ปุ่ม View Code ดังนี้
ที่หน้ าต่างโซลูชน ั แล้วเขียนโค้ดโปรแกรม
75 โค้ดของฟอร์ม Form3 ในรูปที่ 3.9 1
Public Class Form3
2
Public fso As New Scripting.FileSystemObject
3
Public w_file As Scripting.TextStream
4
Public r_file As Scripting.TextStream
5
Public codeline As String
6
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles Button1.Click
7
da.Text = ""
'ลบข้อมูลใน da.text
8
w_file = fso.CreateTextFile("D:\temp.sce")
'สร้างไฟล์สคริปต์ช่ อ ื ว่า temp.sce
9
w_file.WriteLine("A=[" & a0.Text & " " & a1.Text & " " & a2.Text & ";" & a3.Text
& " " & a4.Text & " " & a5.Text & ";" & a6.Text & " " & a7.Text & " " & _ a8.Text & "];")
10 11
'สร้างตัวแปรเมทริกซ์ A เท่ากับ a0.text - a8.text ตามลําดับ
w_file.WriteLine("output=det(A);")
'หาดีเทอร์มิแนนต์ของเมทริกซ์ A
w_file.WriteLine("otext=string(output);")
'แปลงข้อมูล output เป็ นสายอักขระเก็บไว้ท่ี
ตัวแปร otext
12
w_file.WriteLine("fid = mopen('D:\001.txt', 'w');") 'สร้างไฟล์ผลลัพธ์ 001.txt
13
w_file.WriteLine("mfprintf(fid,'%s\n',otext);")
'นํ าข้อมูล otext เขียนลงใน 001.txt
14
w_file.WriteLine("mclose(fid);")
'จบการเขียนข้อมูลลงไฟล์ 001.txt
15
w_file.WriteLine("exit")
'ออกจากโปรแกรม SCILAB
16
w_file.Close()
'จบการเขียนข้อมูลลงไฟล์สคริปต์
17
Shell("C:\WINDOWS\scilab-4.1.2\bin\Scilex.exe -f D:\temp.sce", vbHide)
18
Timer1.Enabled = True
'เปิ ดการทํางาน Timer1
19
End Sub
20
Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As
21
System.EventArgs) Handles Timer1.Tick
If fso.FileExists("D:\001.txt") = True And Timer1.Interval = 1000 Then
22
r_file = fso.OpenTextFile("D:\001.txt")
23
Do Until r_file.AtEndOfStream
24
da.Text = r_file.ReadLine
'เปิ ดไฟล์ 001.txt
'ตรวจสอบเงื่อนไข อ่านข้อมูลจาก 001.txt จบหรือไม่ 'นํ าข้อมูลที่อ่านได้ใส่ลง da.text
25
Loop
'วนลูปไปตรวจสอบเงื่อนไข
26
r_file.Close()
'จบการอ่านข้อมูล
27
Panel2.Visible = False
'ปิ ด Panel2
28
Panel1.Visible = True
'เปิ ด Panel1
29
Timer1.Enabled = False
'ปิ ดการทํางาน Timer1
76 30
End If
'จบทํางานเงื่อนไข
31
End Sub
32
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles Button2.Click
33
inva0.Text = ""
'ลบข้อมูลใน inva0.text
34
inva1.Text = ""
'ลบข้อมูลใน inva1.text
35
inva2.Text = ""
'ลบข้อมูลใน inva2.text
36
inva3.Text = ""
'ลบข้อมูลใน inva3.text
37
inva4.Text = ""
'ลบข้อมูลใน inva4.text
38
inva5.Text = ""
'ลบข้อมูลใน inva5.text
39
inva6.Text = ""
'ลบข้อมูลใน inva6.text
40
inva7.Text = ""
'ลบข้อมูลใน inva7.text
41
inva8.Text = ""
'ลบข้อมูลใน inva8.text
42
w_file = fso.CreateTextFile("D:\temp.sce")
43
w_file.WriteLine("A=[" & a0.Text & " " & a1.Text & " " & a2.Text & ";" & a3.Text
& " " & a4.Text & " " & a5.Text & ";" & a6.Text & " " & a7.Text & " " & _ a8.Text & "];")
44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61
'สร้างไฟล์สคริปต์ช่ อ ื ว่า temp.sce
'สร้างตัวแปรเมทริกซ์ A เท่ากับ a0.text - a8.text ตามลําดับ w_file.WriteLine("output=inv(A);")
'หาอินเวอร์สของเมทริกซ์ A
w_file.WriteLine("otext=string(output);") w_file.WriteLine("fid = mopen('D:\001.txt', 'w');") 'สร้างไฟล์ผลลัพธ์ 001.txt w_file.WriteLine("mfprintf(fid,'%s\n',otext(1));")
'นํ าข้อมูล otext(1) เขียนลงใน 001.txt
w_file.WriteLine("mfprintf(fid,'%s\n',otext(4));")
'นํ าข้อมูล otext(4) เขียนลงใน 001.txt
w_file.WriteLine("mfprintf(fid,'%s\n',otext(7));")
'นํ าข้อมูล otext(7) เขียนลงใน 001.txt
w_file.WriteLine("mfprintf(fid,'%s\n',otext(2));")
'นํ าข้อมูล otext(2) เขียนลงใน 001.txt
w_file.WriteLine("mfprintf(fid,'%s\n',otext(5));")
'นํ าข้อมูล otext(5) เขียนลงใน 001.txt
w_file.WriteLine("mfprintf(fid,'%s\n',otext(8));")
'นํ าข้อมูล otext(8) เขียนลงใน 001.txt
w_file.WriteLine("mfprintf(fid,'%s\n',otext(3));")
'นํ าข้อมูล otext(3) เขียนลงใน 001.txt
w_file.WriteLine("mfprintf(fid,'%s\n',otext(6));")
'นํ าข้อมูล otext(6) เขียนลงใน 001.txt
w_file.WriteLine("mfprintf(fid,'%s\n',otext(9));")
'นํ าข้อมูล otext(9) เขียนลงใน 001.txt
w_file.WriteLine("mclose(fid);")
'จบการเขียนข้อมูลลงไฟล์ 001.txt
w_file.WriteLine("exit")
'ออกจากโปรแกรม SCILAB
w_file.Close()
'จบการเขียนข้อมูลลงไฟล์สคริปต์
Shell("C:\WINDOWS\scilab-4.1.2\bin\Scilex.exe -f D:\temp.sce", vbHide) Timer2.Enabled = True End Sub
'เปิ ดการทํางาน Timer2
77 62 63 64
Private Sub Timer2_Tick(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles Timer2.Tick
If fso.FileExists("D:\001.txt") = True And Timer2.Interval = 1000 Then
r_file = fso.OpenTextFile("D:\001.txt")
Do Until r_file.AtEndOfStream
65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86
'เปิ ดไฟล์ 001.txt
'ตรวจสอบเงื่อนไข อ่านข้อมูลจาก 001.txt จบหรือไม่
inva0.Text = r_file.ReadLine
'นํ าข้อมูลใส่ลง inva0.text
inva1.Text = r_file.ReadLine
'นํ าข้อมูลใส่ลง inva1.text
inva2.Text = r_file.ReadLine
'นํ าข้อมูลใส่ลง inva2.text
inva3.Text = r_file.ReadLine
'นํ าข้อมูลใส่ลง inva3.text
inva4.Text = r_file.ReadLine
'นํ าข้อมูลใส่ลง inva4.text
inva5.Text = r_file.ReadLine
'นํ าข้อมูลใส่ลง inva5.text
inva6.Text = r_file.ReadLine
'นํ าข้อมูลใส่ลง inva6.text
inva7.Text = r_file.ReadLine
'นํ าข้อมูลใส่ลง inva7.text
inva8.Text = r_file.ReadLine
'นํ าข้อมูลใส่ลง inva8.text
Loop
'วนลูปไปตรวจสอบเงื่อนไข
r_file.Close()
'จบการอ่านข้อมูล
Panel1.Visible = False
'ปิ ด Panel1
Panel2.Visible = True
'เปิ ด Panel2
Timer2.Enabled = False
'ปิ ดการทํางาน Timer2
End If
'จบการทํางานของเงื่อนไข
End Sub Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles Button3.Click Hide()
'ซ่อนฟอร์มที่ใช้งานอยู่ (Form3)
Form1.Show()
'แสดง Form1
End Sub End Class
3.2.4 ทดสอบการใช้งาน ในส่วนนี้จะทดสอบการทํางานของโปรแกรมการหาดีเทอร์มิแนนต์และอินเวอร์สของเมทริกซ์ขนาด
2×2 และ 3×3 ดังนี้
78
รูปที่ 3.10 ตัวอย่างการหาผลลัพธ์ของดีเทอร์มิแนนต์ของเมทริกซ์ขนาด 2×2
รูปที่ 3.11 ตัวอย่างการหาผลลัพธ์ของอินเวอร์สเมทริกซ์ขนาด 2×2
1) ทดสอบการทํางานของโปรแกรมโดยการกดป่ ุม
ทําการป้ อนข้อมูลโดยแบ่งออกเป็ น 2 ตัวอย่างต่อไปนี้
หรือกดป่ ุม <F5> ที่คีย์บอร์ด จากนั ้น
2) สําหรับตัวอย่างเมทริกซ์ขนาด 2×2 ให้กดเลือกขนาดของเมทริกซ์เป็ น 2×2 ในรูปที่ 3.4 ก็จะได้ หน้ าต่าง “เมทริกซ์ขนาด 2×2” ตามรูปที่ 3.10
• ป้ อนข้อมูลให้เมทริกซ์ A มีค่าเท่ากับ [1, 2; 3, 4] ตามรูปที่ 3.10 โดยถ้าต้องการหาค่า ดีเทอร์มิแนนต์ของเมทริกซ์ A ให้กดป่ ุมดีเทอร์มิแนนต์ในรูปที่ 3.10 ก็จะได้ผลลัพธ์เท่ากับ -2 ตามที่ต้องการ ในทํานองเดียวกันถ้าต้องการหาค่าดีเทอร์มิแนนต์ของเมทริกซ์ A ให้กด ป่ ุมอินเวอร์สในรูปที่ 3.11 ก็จะได้ผลลัพธ์เท่ากับ [-2, 1; 1.5, -0.5] ตามที่ต้องการ
79
รูปที่ 3.12 ตัวอย่างการหาผลลัพธ์ของดีเทอร์มิแนนต์ของเมทริกซ์ขนาด 3×3
รูปที่ 3.13 ตัวอย่างการหาผลลัพธ์ของอินเวอร์สเมทริกซ์ขนาด 3×3
3) สําหรับตัวอย่างเมทริกซ์ขนาด 3×3 ให้กดเลือกขนาดของเมทริกซ์เป็ น 3×3 ในรูปที่ 3.4 ก็จะได้ หน้ าต่าง “เมทริกซ์ขนาด 3×3” ตามรูปที่ 3.12
• ป้ อนข้อมูลให้เมทริกซ์ A มีค่าเท่ากับ [2, 2, 1; 1, 2, 4; 8, 2, 3] ตามรูปที่ 3.12 โดยถ้า ต้องการหาค่าดีเทอร์มิแนนต์ของเมทริกซ์ A ให้กดป่ ุมดีเทอร์มิแนนต์ของเมทริกซ์ A ให้ กดป่ ุมดีเทอร์มิแนนต์ในรูปที่ 3.12 ก็จะได้ผลลัพธ์เท่ากับ 40 ในทํานองเดียวกันถ้าต้องการ
หาค่าดีเทอร์มิแนนต์ของเมทริกซ์ A ให้กดป่ ุมอินเวอร์สในรูปที่ 3.13 ก็จะได้ผลลัพธ์เท่ากับ
[-0.05, -0.1, 0.15; 0.725, -0.05, -0.175; -0.35, 0.3, 0.05] ตามต้องการ
80
รูปที่ 3.14 เครื่องมือ TabControl ในกล่องเครื่องมือ
3.3 การพิสูจน์คุณสมบัติของเมทริกซ์ ในส่วนนี้ จะแสดงตัวอย่างการใช้โปรแกรม VB 2010 Express สร้างหน้ าต่างส่วนต่อประสานเพื่อ ใช้ในการพิสูจน์คุณสมบัติ (property) ของเมทริกซ์ 3 แบบคือ (kA)T = kAT (A + B)T = AT + BT (AB)T = BTAT เมื่อ k คือค่าคงตัว, A และ B คือเมทริกซ์จัตุรัสขนาด 2×2, และ (⋅)T คือทรานส์โพสของเมทริกซ์ ดังรายละเอียดต่อไปนี้
3.3.1 การพิสูจน์คุณสมบัติ (kA)T = kAT การสร้างหน้ าต่างส่วนต่อประสานเพื่อใช้ในการพิสูจน์คุณสมบัติ (kA)T = kAT ทําได้ดังนี้ 1) เปิ ดโปรแกรม VB 2010 Express แล้วสร้างโปรเจ็กต์แบบ Windows Forms Application จากนั ้นทําการออกแบบหน้ าฟอร์มสําหรับการเขียนโปรแกรมพิสูจน์คุณสมบัติของเมทริกซ์โดย
ในที่นี้จะใช้เครื่องมือที่เรียกว่า TabControl ตามรูปที่ 3.14 เพื่อออกแบบการพิสูจน์คุณสมบัติ ทัง้ 3 แบบลงในฟอร์มเดียวกัน รูปที่ 3.15 และ 3.16 แสดงตัวอย่างการออกแบบฟอร์มตาม Tab ที่หนึ่ ง
81
คลิกที่ Tab ที่ต้องการ
คลิกเลือกพื้นที่ (กรอบเส้นปะ)
รูปที่ 3.15 การกําหนดชื่อ Tab ทัง้ สามแบบ
2) กําหนดค่าคุณสมบัติของฟอร์มสําหรับ Tab ที่หนึ่ งในรูปที่ 3.16 ตามตารางที่ 3.5 หมายเหตุ การเรียงรหัสเลข Textbox (XX) จะเหมือนกับที่ใช้ในตารางที่ 3.4 ตัวอย่างเช่น
ส่วนแสดงผลลัพธ์ในช่อง Output ตามรูปที่ 3.17 ในที่นี้จะได้ว่า Textbox (21) หมายถึง Textbox แถวที่ 2 และแนวตัง้ ที่ 1 ในขณะที่ Textbox (25) หมายถึง Textbox แถวที่ 2
และแนวตัง้ ที่ 5
82
รูปที่ 3.16 ฟอร์มของ Tab ที่หนึ่ ง สําหรับการพิสูจน์ (kA)T = kAT
แถวที่ 2 แนวตัง้ ที่ 1
แถวที่ 2 แนวตัง้ ที่ 5
รูปที่ 3.17 ตัวอย่างรหัสที่ใช้กําหนด Textbox (Output)
83 ตารางที่ 3.5 ค่าคุณสมบัติของฟอร์มสําหรับ Tab ที่หนึ่ งในรูปที่ 3.16 อ็อบเจกต์ / คอนโทรล Form CommandButton1 Textbox (K) Input Textbox (A11) Input Textbox (A12) Input Textbox (A21) Input Textbox (A22) Input Textbox (11) output Textbox (12) output Textbox (13) output Textbox (14) output Textbox (15) output Textbox (16) output Textbox (17) output
คุณสมบัติ
ค่าที่กําหนด
Text
เมทริกซ์ขนาด 2 × 2 พิสูจน์คุณสมบัติ
StartPosition
CenterScreen
Name
Button1
Text
คํานวณ
Name
K
Text
N/A
Name
a0
Text
N/A
Name
a1
Text
N/A
Name
a2
Text
N/A
Name
a3
Text
N/A
Name
ako
Text
N/A
Name
aa0
Text
N/A
Name
ak1
Text
N/A
Name
aa1
Text
N/A
Name
bk0
Text
N/A
Name
ba0
Text
N/A
Name
bk1
Text
N/A
84 อ็อบเจกต์ / คอนโทรล Textbox (18) output Textbox (21) output Textbox (22) output Textbox (23) output Textbox (24) output Textbox (25) output Textbox (26) output Textbox (27) output Textbox (28) output Textbox C1(11) Output Textbox C1(12) Output Textbox C1(13) Output Textbox C1(14) Output Textbox C2(11) Output Textbox C2(12) Output
คุณสมบัติ
ค่าที่กําหนด
Name
ba1
Text
N/A
Name
ak2
Text
N/A
Name
aa2
Text
N/A
Name
ak3
Text
N/A
Name
aa3
Text
N/A
Name
bk2
Text
N/A
Name
ba2
Text
N/A
Name
bk3
Text
N/A
Name
ba3
Text
N/A
Name
ac0
Text
N/A
Name
ac1
Text
N/A
Name
ac2
Text
N/A
Name
ac3
Text
N/A
Name
bc0
Text
N/A
Name
bc1
85 อ็อบเจกต์ / คอนโทรล
Textbox C2(13) Output Textbox C2(14) Output Timer1
คุณสมบัติ
ค่าที่กําหนด
Text
N/A
Name
bc2
Text
N/A
Name
bc3
Text
N/A
Enabled
False
Interval
1000
3) เรียกฟั งก์ชัน FileSystemObject มาใช้งานโดยเลือกที่เมนู Project → Add Reference…
→ Microsoft Scripting Runtime และกดป่ ุม OK (ตามรูปที่ 2.11 และ 2.12)
4) ดับเบิลคลิกที่ฟอร์มหรือคลิกที่ปุ่ม View Code
ที่หน้ าต่างโซลูชน ั แล้วเขียนโค้ดโปรแกรม
ดังนี้
โค้ดของฟอร์มสําหรับ Tab ที่หนึ่งในรูปที่ 3.16 1
Public Class Form1
2
Public fso As New Scripting.FileSystemObject
4
Public r_file As Scripting.TextStream
3 5 6 7 8 9
Public w_file As Scripting.TextStream Public i As Integer
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
w_file = fso.CreateTextFile("D:\temp.sce")
'สร้างไฟล์สคริปต์ช่ อ ื ว่า temp.sce
w_file.WriteLine("A=[" & a0.Text & " " & a1.Text & ";" & a2.Text & " " & a3.Text & "];")
'สร้างตัวแปรเมทริกซ์ A เท่ากับ a0.text - a3.text ตามลําดับ
w_file.WriteLine("k=[" & k.Text & "];") 'สร้างตัวแปร k เท่ากับ k.text
10
w_file.WriteLine("output1=(k*A)';")
12
w_file.WriteLine("otext1=string(output1);")
'แปลงค่า output1 เป็ นข้อความ
13
w_file.WriteLine("otext2=string(output2);")
'แปลงค่า output2 เป็ นข้อความ
15
w_file.WriteLine("mfprintf(fid,'%s\n',otext1(1));") 'นํ าข้อมูล output1(1) เขียนลง 001.txt
17
w_file.WriteLine("mfprintf(fid,'%s\n',otext1(2));") 'นํ าข้อมูล output1(2) เขียนลง 001.txt
11
14 16
w_file.WriteLine("output2=k*A';")
'ให้ output1 มีค่าเท่ากับทรานส์โพสของ k×A
'ให้ output2 มีค่าเท่ากับ k คูณทรานส์โพสของ A
w_file.WriteLine("fid = mopen('D:\001.txt', 'w');") 'สร้างไฟล์ผลลัพธ์ 001.txt
w_file.WriteLine("mfprintf(fid,'%s\n',otext1(3));") 'นํ าข้อมูล output1(3) เขียนลง 001.txt
86 18
w_file.WriteLine("mfprintf(fid,'%s\n',otext1(4));") 'นํ าข้อมูล output1(4) เขียนลง 001.txt
19
w_file.WriteLine("mfprintf(fid,'%s\n',otext2(1));") 'นํ าข้อมูล output2(1) เขียนลง 001.txt
21
w_file.WriteLine("mfprintf(fid,'%s\n',otext2(2));") 'นํ าข้อมูล output2(2) เขียนลง 001.txt
20
w_file.WriteLine("mfprintf(fid,'%s\n',otext2(3));") 'นํ าข้อมูล output2(3) เขียนลง 001.txt
22
w_file.WriteLine("mfprintf(fid,'%s\n',otext2(4));") 'นํ าข้อมูล output2(4) เขียนลง 001.txt w_file.WriteLine("mclose(fid);")
'จบการเขียนข้อมูลลงไฟล์ 001.txt
24
w_file.WriteLine("exit")
'ออกจากโปรแกรม SCILAB
26
Shell("C:\WINDOWS\scilab-4.1.2\bin\Scilex.exe -f D:\temp.sce", vbHide)
27
Timer1.Enabled = True
23 25
w_file.Close()
'จบการเขียนข้อมูลลงไฟล์สคริปต์ 'เปิ ดการทํางาน Timer1
28
End Sub
29
Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As
30 31 32
System.EventArgs) Handles Timer1.Tick
If fso.FileExists("D:\001.txt") = True And Timer1.Interval = 1000 Then r_file = fso.OpenTextFile("D:\001.txt")
Do Until r_file.AtEndOfStream
'เปิ ดไฟล์ 001.txt
'ตรวจสอบเงื่อนไข อ่านข้อมูลจาก 001.txt จบหรือไม่
33
ac0.Text = r_file.ReadLine
'นํ าข้อมูลที่อา่ นได้ใส่ลง ac0.text
35
ac2.Text = r_file.ReadLine
'นํ าข้อมูลที่อา่ นได้ใส่ลง ac2.text
34
ac1.Text = r_file.ReadLine
'นํ าข้อมูลที่อา่ นได้ใส่ลง ac1.text
36
ac3.Text = r_file.ReadLine
'นํ าข้อมูลที่อา่ นได้ใส่ลง ac3.text
38
bc1.Text = r_file.ReadLine
'นํ าข้อมูลที่อา่ นได้ใส่ลง bc1.text
bc3.Text = r_file.ReadLine
'นํ าข้อมูลที่อา่ นได้ใส่ลง bc3.text
37 39 40
bc0.Text = r_file.ReadLine
'นํ าข้อมูลที่อา่ นได้ใส่ลง bc0.text
bc2.Text = r_file.ReadLine
'นํ าข้อมูลที่อา่ นได้ใส่ลง bc2.text
41
Loop
43
Dim con0() As TextBox = {a0, a1, a2, a3}
'ประกาศตัวแปร con0 มีข้อมูล
Dim con1() As TextBox = {ak0, ak1, ak2, ak3}
'ประกาศตัวแปร con1 มีข้อมูล
42
44 45 46 47 48
'วนลูปไปตรวจสอบเงื่อนไข
r_file.Close()
'จบการอ่านข้อมูล
array เท่ากับ a0 - a3
array เท่ากับ ak0 - ak3
Dim con2() As TextBox = {bk0, bk1, bk2, bk3}
array เท่ากับ bk0 - bk3
'ประกาศตัวแปร con2 มีข้อมูล
Dim con3() As TextBox = {aa0, aa1, aa2, aa3}
'ประกาศตัวแปร con3 มีข้อมูล
Dim con4() As TextBox = {ba0, ba1, ba2, ba3}
'ประกาศตัวแปร con4 มีข้อมูล
array เท่ากับ aa0 - aa3 array เท่ากับ ba0 - ba3
For Me.i = 0 To 3
'ลูป i = 0 จนถึง i = 3
87 49
con1(i).Text = k.Text
'นํ าข้อมูล k.text ส่งให้กับ con1(i)
50
con2(i).Text = k.Text
'นํ าข้อมูล k.text ส่งให้กับ con2(i)
52
con4(i).Text = con0(i).Text
'นํ าข้อมูล con0(i) ส่งให้กับ con4(i)
51
con3(i).Text = con0(i).Text
53
Next
54 55 56 57
Timer1.Enabled = False
End If
End Sub
End Class
'นํ าข้อมูล con0(i) ส่งให้กับ con3(i) 'วนลูปที่ไปที่ for จนสิน ้ สุดเงื่อนไข
'ปิ ดการทํางาน Timer1
'จบการทํางานของเงื่อนไข 'จบการทํางานของ Class เพื่อทดสอบการทํางานของ Tab ที่หนึ่ง
รูปที่ 3.18 ตัวอย่างการคํานวณเพื่อพิสูจน์คุณสมบัติ (kA)T = kAT
5) ทดสอบการทํางานของโปรแกรมโดยการกดป่ ุม
หรือกดป่ ม ุ <F5> ที่คียบ ์ อร์ด จากนั ้น
ทําการป้ อนข้อมูล k = 2 และเมทริกซ์ A เท่ากับ [1, 2; 3, 4] ตามรูปที่ 3.18
88
รูปที่ 3.19 ฟอร์มของ Tab ที่สอง สําหรับการพิสูจน์ (A+B)T = AT + BT
3.3.2 การพิสูจน์คุณสมบัติ (A + B)T = AT + BT การพิสูจน์คุณสมบัติท่ส ี องนี้จะทําการออกแบบภายในฟอร์มเดียวกัน แต่เปลี่ยนเป็ นการใช้ Tab ที่
สอง (แบบที่ 2) จากนั ้นทําการออกแบบฟอร์มภายใน Tab ที่สองตามรูปที่ 3.19 จากนั ้นทําตาม ขัน ้ ตอนดังนี้
1) กําหนดค่าคุณสมบัติของฟอร์มสําหรับ Tab ที่สองในรูปที่ 3.19 ตามตารางที่ 3.6 2) เนื่ องจากการเขียนโปรแกรม Tab ที่หนึ่ ง (หัวข้อที่ 3.3.1) ได้เรียกฟั งก์ชัน FileSystemObject มาใช้งานแล้ว ดังนั ้นจึงไม่จําเป็ นต้องเรียกฟั งก์ชันนี้ซาํ้ อีกครัง้
89 ตารางที่ 3.6 ค่าคุณสมบัติของฟอร์มสําหรับ Tab ที่สองในรูปที่ 3.19 อ็อบเจกต์ / คอนโทรล Form CommandButton2 Textbox (A11) Input Textbox (A12) Input Textbox (A21) Input Textbox (A22) Input Textbox (B11) Input Textbox B12) Input Textbox (B21) Input Textbox (B22) Input Textbox (11) Output Textbox (12) Output Textbox (13) Output Textbox (14) Output
คุณสมบัติ
ค่าที่กําหนด
Text
เมทริกซ์ขนาด 2 × 2 พิสูจน์คุณสมบัติ
StartPosition
CenterScreen
Name
Button2
Text
คํานวณ
Name
at0
Text
N/A
Name
at1
Text
N/A
Name
at2
Text
N/A
Name
at3
Text
N/A
Name
bt0
Text
N/A
Name
bt1
Text
N/A
Name
bt2
Text
N/A
Name
bt3
Text
N/A
Name
ata0
Text
N/A
Name
ata1
Text
N/A
Name
bta0
Text
N/A
Name
bta1
Text
N/A
90 อ็อบเจกต์ / คอนโทรล Textbox (15) Output Textbox (16) Output Textbox (17) Output Textbox (18) Output Textbox (21) Output Textbox (22) Output Textbox (23) Output Textbox (24) Output Textbox (25) Output Textbox (26) Output Textbox (27) Output Textbox (28) Output Textbox C1(11) Output Textbox C1(12) Output Textbox C1(13) Output
คุณสมบัติ
ค่าที่กําหนด
Name
atb0
Text
N/A
Name
atb1
Text
N/A
Name
btb0
Text
N/A
Name
btb1
Text
N/A
Name
ata2
Text
N/A
Name
ata3
Text
N/A
Name
bta2
Text
N/A
Name
bta3
Text
N/A
Name
atb2
Text
N/A
Name
atb3
Text
N/A
Name
btb2
Text
N/A
Name
btb3
Text
N/A
Name
tac0
Text
N/A
Name
tac1
Text
N/A
Name
tac2
91 อ็อบเจกต์ / คอนโทรล
คุณสมบัติ
Textbox C1(14) Output Textbox C2(11) Output Textbox C2(12) Output Textbox C2(13) Output Textbox C2(14) Output Timer2
ค่าที่กําหนด
Text
N/A
Name
tac3
Text
N/A
Name
tbc0
Text
N/A
Name
tbc1
Text
N/A
Name
tbc2
Text
N/A
Name
tbc3
Text
N/A
Enabled
False
Interval
1000
3) ดับเบิลคลิกที่ฟอร์มหรือคลิกที่ปุ่ม View Code
ที่หน้ าต่างโซลูชน ั แล้วเขียนโค้ดโปรแกรม
9
โดยเขียนต่อจากบรรทัดที่ 56 (จากโค้ดของฟอร์มสําหรับ Tab ที่หนึ่ งในรูปที่ 3.16) ดังนี้
โค้ดของฟอร์มสําหรับ Tab ที่สองในรูปที่ 3.19 57 58 59 60 61 62 63
9
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
w_file = fso.CreateTextFile("D:\temp2.sce")
'สร้างไฟล์สคริปต์ช่ อ ื ว่า temp2.sce
w_file.WriteLine("A=[" & at0.Text & " " & at1.Text & ";" & at2.Text & " " &
at3.Text & "];")
'สร้างตัวแปรเมทริกซ์ A เท่ากับ at0.text - at3.text ตามลําดับ
w_file.WriteLine("B=[" & bt0.Text & " " & bt1.Text & ";" & bt2.Text & " " &
bt3.Text & "];")
'สร้างตัวแปรเมทริกซ์ B เท่ากับ bt0.text - bt3.text ตามลําดับ
w_file.WriteLine("output1=(A+B)';") w_file.WriteLine("output2=A'+B';")
กับทรานส์โพสของ B
'ให้ output1 มีค่าเท่ากับทรานส์โพสของ (A+B)
'ให้ output2 มีค่าเท่ากับทรานส์โพสของ A บวก
w_file.WriteLine("otext1=string(output1);") 'แปลง output1 เป็ นสายอักขระเก็บใน otext1
คําสัง่ End Class ที่ใช้ในบรรทัดที่ 57 ต้องตัดทิง้ ก่อน เพื่อใส่โค้ดของฟอร์มสําหรับ Tab ที่สอง ในทางปฏิบัติฟอร์มหนึ่ ง ฟอร์มจะต้องมี Public Class และ End Class เพียงคู่เดียวเท่านั ้น
92 64
w_file.WriteLine("otext2=string(output2);") 'แปลง output2 เป็ นสายอักขระเก็บใน otext2
65
w_file.WriteLine("fid = mopen('D:\002.txt', 'w');")
67
w_file.WriteLine("mfprintf(fid,'%s\n',otext1(3));") 'นํ าข้อมูล output1(3) เขียนลง 002.txt
66
'สร้างไฟล์ผลลัพธ์ 002.txt
w_file.WriteLine("mfprintf(fid,'%s\n',otext1(1));") 'นํ าข้อมูล output1(1) เขียนลง 002.txt
68
w_file.WriteLine("mfprintf(fid,'%s\n',otext1(2));") 'นํ าข้อมูล output1(2) เขียนลง 002.txt
70
w_file.WriteLine("mfprintf(fid,'%s\n',otext2(1));") 'นํ าข้อมูล output2(1) เขียนลง 002.txt
72
w_file.WriteLine("mfprintf(fid,'%s\n',otext2(2));") 'นํ าข้อมูล output2(2) เขียนลง 002.txt
69 71
w_file.WriteLine("mfprintf(fid,'%s\n',otext1(4));") 'นํ าข้อมูล output1(4) เขียนลง 002.txt w_file.WriteLine("mfprintf(fid,'%s\n',otext2(3));") 'นํ าข้อมูล output2(3) เขียนลง 002.txt
73
w_file.WriteLine("mfprintf(fid,'%s\n',otext2(4));") 'นํ าข้อมูล output2(4) เขียนลง 002.txt w_file.WriteLine("mclose(fid);")
'จบการเขียนข้อมูลลงไฟล์ 002.txt
75
w_file.WriteLine("exit")
77
w_file.Close()
'ออกจากโปรแกรม SCILAB
Shell("C:\WINDOWS\scilab-4.1.2\bin\Scilex.exe -f D:\temp2.sce", vbHide)
'จบการเขียนข้อมูลลงไฟล์สคริปต์
78
Timer2.Enabled = True
'เปิ ดการทํางาน Timer2
74 76
79
End Sub
80
Private Sub Timer2_Tick(ByVal sender As System.Object, ByVal e As
81 82
System.EventArgs) Handles Timer2.Tick
If fso.FileExists("D:\002.txt") = True And Timer2.Interval = 1000 Then r_file = fso.OpenTextFile("D:\002.txt")
83
Do Until r_file.AtEndOfStream
84
tac0.Text = r_file.ReadLine
86
tac2.Text = r_file.ReadLine
85
'เปิ ดไฟล์ 002.txt
'ตรวจสอบเงื่อนไข อ่านข้อมูลจาก 002.txt จบหรือไม่ 'นํ าข้อมูลที่อา่ นได้ใส่ลง tac0.text
tac1.Text = r_file.ReadLine
'นํ าข้อมูลที่อา่ นได้ใส่ลง tac1.text
87
tac3.Text = r_file.ReadLine
'นํ าข้อมูลที่อา่ นได้ใส่ลง tac3.text
89
tbc1.Text = r_file.ReadLine
'นํ าข้อมูลที่อา่ นได้ใส่ลง tbc1.text
88 90 91
tbc0.Text = r_file.ReadLine tbc2.Text = r_file.ReadLine tbc3.Text = r_file.ReadLine
'นํ าข้อมูลที่อา่ นได้ใส่ลง tac2.text 'นํ าข้อมูลที่อา่ นได้ใส่ลง tbc0.text 'นํ าข้อมูลที่อา่ นได้ใส่ลง tbc2.text 'นํ าข้อมูลที่อา่ นได้ใส่ลง tbc3.text
92
Loop
94
Dim con0() As TextBox = {at0, at1, at2, at3}
96
Dim con2() As TextBox = {ata0, ata1, ata2, ata3}
93 95
r_file.Close()
'วนลูปไปตรวจสอบเงื่อนไข
'จบการอ่านข้อมูล
Dim con1() As TextBox = {bt0, bt1, bt2, bt3}
97
Dim con3() As TextBox = {atb0, atb1, atb2, atb3}
99
Dim con5() As TextBox = {btb0, btb1, btb2, btb3}
98
Dim con4() As TextBox = {bta0, bta1, bta2, bta3}
93 100
For Me.i = 0 To 3
'ลูป i = 0 จนถึง i = 3
101
con2(i).Text = con0(i).Text
'นํ าข้อมูล con0(i) ส่งให้กับ con2(i)
103
con4(i).Text = con1(i).Text
'นํ าข้อมูล con1(i) ส่งให้กับ con4(i)
102
con3(i).Text = con0(i).Text
104
con5(i).Text = con1(i).Text
'นํ าข้อมูล con0(i) ส่งให้กับ con3(i) 'นํ าข้อมูล con1(i) ส่งให้กับ con5(i)
105
Next
'วนลูปที่ไปที่ for จนสิน ้ สุดเงื่อนไข
106
Timer2.Enabled = False
'ปิ ดการทํางาน Timer2
107 108 109
End If
End Sub End Class
'จบทํางานเงื่อนไข
'จบการทํางานของ Class เพื่อทดสอบการทํางานของ Tab ที่หนึ่งและสอง
รูปที่ 3.20 ตัวอย่างการคํานวณเพื่อพิสูจน์คุณสมบัติ (A + B)T = AT + BT
4) ทดสอบการทํางานของโปรแกรมโดยการกดป่ ุม
หรือกดป่ ุม <F5> ที่คีย์บอร์ด จากนั ้น
ป้ อนค่าเมทริกซ์ A เท่ากับ [1, 2; 3, 4] และเมทริกซ์ B เท่ากับ [5, 6; 7, 8] และกดที่ปุ่ม คํานวณก็จะได้ผลลัพธ์ตามรูปที่ 3.20
94
รูปที่ 3.21 ฟอร์มของ Tab ที่สาม สําหรับการพิสูจน์ (AB)T = BTAT
3.3.3 การพิสูจน์คุณสมบัติ (AB)T = BTAT ในทํานองเดียวกันการพิสูจน์คณ ุ สมบัตท ิ ่ส ี ามจะออกแบบภายในฟอร์มเดียวกัน แต่เปลี่ยนเป็ นการ ใช้ Tab ที่สาม (แบบที่ 3) จากนั ้นทําการออกแบบฟอร์มภายใน Tab ที่สามตามรูปที่ 3.21
จากนั ้นทําตามขัน ้ ตอนดังนี้
1) กําหนดค่าคุณสมบัติของฟอร์มสําหรับ Tab ที่สามในรูปที่ 3.21 ตามตารางที่ 3.7 2) เช่นเดียวกัน เนื่ องจากการเขียนโปรแกรม Tab ที่หนึ่ ง (หัวข้อที่ 3.3.1) ได้เรียกใช้งานฟั งก์ชน ั FileSystemObject แล้ว ดังนั ้นจึงไม่จําเป็ นต้องเรียกฟั งก์ชันนี้ซาํ้ อีกครัง้
95 ตารางที่ 3.7 ค่าคุณสมบัติของฟอร์มสําหรับ Tab ที่สามในรูปที่ 3.21 อ็อบเจกต์ / คอนโทรล Form CommandButton3 Textbox (A11) Input Textbox (A12) Input Textbox (A21) Input Textbox (A22) Input Textbox (B11) Input Textbox B12) Input Textbox (B21) Input Textbox (B22) Input Textbox (11) Output Textbox (12) Output Textbox (13) Output Textbox (14) Output
คุณสมบัติ
ค่าที่กําหนด
Text
เมทริกซ์ขนาด 2 × 2 พิสูจน์คุณสมบัติ
StartPosition
CenterScreen
Name
Button3
Text
คํานวณ
Name
au0
Text
N/A
Name
au1
Text
N/A
Name
au2
Text
N/A
Name
au3
Text
N/A
Name
bu0
Text
N/A
Name
bu1
Text
N/A
Name
bu2
Text
N/A
Name
bu3
Text
N/A
Name
aua0
Text
N/A
Name
aua1
Text
N/A
Name
bta0
Text
N/A
Name
bua1
Text
N/A
96 อ็อบเจกต์ / คอนโทรล Textbox (15) Output Textbox (16) Output Textbox (17) Output Textbox (18) Output Textbox (21) Output Textbox (22) Output Textbox (23) Output Textbox (24) Output Textbox (25) Output Textbox (26) Output Textbox (27) Output Textbox (28) Output Textbox C1(11) Output Textbox C1(12) Output Textbox C1(13) Output
คุณสมบัติ
ค่าที่กําหนด
Name
aub0
Text
N/A
Name
aub1
Text
N/A
Name
bub0
Text
N/A
Name
bub1
Text
N/A
Name
aua2
Text
N/A
Name
aua3
Text
N/A
Name
bua2
Text
N/A
Name
bua3
Text
N/A
Name
aub2
Text
N/A
Name
aub3
Text
N/A
Name
bub2
Text
N/A
Name
bub3
Text
N/A
Name
uac0
Text
N/A
Name
uac1
Text
N/A
Name
uac2
97 อ็อบเจกต์ / คอนโทรล
คุณสมบัติ
Textbox C1(14) Output Textbox C2(11) Output Textbox C2(12) Output Textbox C2(13) Output Textbox C2(14) Output Timer2
ค่าที่กําหนด
Text
N/A
Name
uac3
Text
N/A
Name
ubc0
Text
N/A
Name
ubc1
Text
N/A
Name
ubc2
Text
N/A
Name
ubc3
Text
N/A
Enabled
False
Interval
1000
3) ดับเบิลคลิกที่ฟอร์มหรือคลิกที่ปุ่ม View Code โดยเขียนต่อจากบรรทัดที่ 108
10
ที่หน้ าต่างโซลูชน ั แล้วเขียนโค้ดโปรแกรม
จากโค้ดของฟอร์มสําหรับ Tab ที่สองในรูปที่ 3.19 ดังนี้
โค้ดของฟอร์มสําหรับ Tab ที่สามในรูปที่ 3.21 109 110 111 112 113 114 115 116
10
Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
w_file = fso.CreateTextFile("D:\temp3.sce")
'สร้างไฟล์สคริปต์ช่ อ ื ว่า temp3.sce
w_file.WriteLine("A=[" & au0.Text & " " & au1.Text & ";" & au2.Text & " " &
au3.Text & "];")
'สร้างตัวแปรเมทริกซ์ A เท่ากับ au0.text - au3.text ตามลําดับ
w_file.WriteLine("B=[" & bu0.Text & " " & bu1.Text & ";" & bu2.Text & " " &
bu3.Text & "];")
'สร้างตัวแปรเมทริกซ์ B เท่ากับ bu0.text - bu3.text ตามลําดับ
w_file.WriteLine("output1=(A*B)';")
w_file.WriteLine("output2=B'*A';")
กับทรานส์โพสของ B
'ให้ output1 เท่ากับ A คูณ B
'ให้ output1 เท่ากับทรานส์โพสของ A คูณ
w_file.WriteLine("otext1=string(output1);") 'แปลง output1 เป็ นสายอักขระเก็บใน otext1 w_file.WriteLine("otext2=string(output2);") 'แปลง output2 เป็ นสายอักขระเก็บใน otext2
ต้องตัดคําสั่ง End Class ที่ใช้ในบรรทัดที่ 109 ออกก่อน เพื่อให้ฟอร์มที่สร้างขึ้นมาสามารถใช้งาน Tab ทัง้ สาม Tab ได้
98 117
w_file.WriteLine("fid = mopen('D:\003.txt', 'w');")
118
w_file.WriteLine("mfprintf(fid,'%s\n',otext1(1));") 'นํ าข้อมูล output1(1) เขียนลง 003.txt
120
w_file.WriteLine("mfprintf(fid,'%s\n',otext1(2));") 'นํ าข้อมูล output1(2) เขียนลง 003.txt
119
'สร้างไฟล์ผลลัพธ์ 003.txt
w_file.WriteLine("mfprintf(fid,'%s\n',otext1(3));") 'นํ าข้อมูล output1(3) เขียนลง 003.txt
121
w_file.WriteLine("mfprintf(fid,'%s\n',otext1(4));") 'นํ าข้อมูล output1(4) เขียนลง 003.txt
123
w_file.WriteLine("mfprintf(fid,'%s\n',otext2(3));") 'นํ าข้อมูล output2(3) เขียนลง 003.txt
125
w_file.WriteLine("mfprintf(fid,'%s\n',otext2(4));") 'นํ าข้อมูล output2(4) เขียนลง 003.txt
122 124
w_file.WriteLine("mfprintf(fid,'%s\n',otext2(1));") 'นํ าข้อมูล output2(1) เขียนลง 003.txt w_file.WriteLine("mfprintf(fid,'%s\n',otext2(2));") 'นํ าข้อมูล output2(2) เขียนลง 003.txt
126
w_file.WriteLine("mclose(fid);") w_file.WriteLine("exit")
'ออกจากโปรแกรม SCILAB
128
w_file.Close()
'จบการเขียนข้อมูลลงไฟล์สคริปต์
Timer3.Enabled = True
'เปิ ดการทํางาน Timer3
127 129 130 131 132 133 134
'จบการเขียนข้อมูลลงไฟล์ 003.txt
Shell("C:\WINDOWS\scilab-4.1.2\bin\Scilex.exe -f D:\temp3.sce", vbHide) End Sub
Private Sub Timer3_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer3.Tick
If fso.FileExists("D:\003.txt") = True And Timer3.Interval = 1000 Then
เงื่อนไขไฟล์ 003.txt มีอยู่จริงหรือไม่และหน่ วงเวลาเท่ากับ 1 วินาที r_file = fso.OpenTextFile("D:\003.txt")
'เปิ ดไฟล์ 003.txt
135
Do Until r_file.AtEndOfStream
136
uac0.Text = r_file.ReadLine
'นํ าข้อมูลที่อา่ นได้ใส่ลง uac0.text
138
uac2.Text = r_file.ReadLine
'นํ าข้อมูลที่อา่ นได้ใส่ลง uac2.text
137
uac1.Text = r_file.ReadLine
'ตรวจสอบเงื่อนไข อ่านข้อมูลจาก 003.txt จบหรือไม่ 'นํ าข้อมูลที่อา่ นได้ใส่ลง uac1.text
139
uac3.Text = r_file.ReadLine
'นํ าข้อมูลที่อา่ นได้ใส่ลง uac3.text
141
ubc1.Text = r_file.ReadLine
'นํ าข้อมูลที่อา่ นได้ใส่ลง ubc1.text
ubc3.Text = r_file.ReadLine
'นํ าข้อมูลที่อา่ นได้ใส่ลง ubc3.text
140 142 143
ubc0.Text = r_file.ReadLine ubc2.Text = r_file.ReadLine
'นํ าข้อมูลที่อา่ นได้ใส่ลง ubc0.text 'นํ าข้อมูลที่อา่ นได้ใส่ลง ubc2.text
144
Loop
146
Dim con0() As TextBox = {au0, au1, au2, au3}
148
Dim con2() As TextBox = {aua0, aua1, aua2, aua3}
145 147
r_file.Close()
'วนลูปไปตรวจสอบเงื่อนไข
'จบการอ่านข้อมูล
Dim con1() As TextBox = {bu0, bu1, bu2, bu3}
149
Dim con3() As TextBox = {aub0, aub1, aub2, aub3}
151
Dim con5() As TextBox = {bub0, bub1, bub2, bub3}
150
'ตรวจสอบ
Dim con4() As TextBox = {bua0, bua1, bua2, bua3}
99 152
For Me.i = 0 To 3
'ลูป i = 0 จนถึง i = 3
153
con2(i).Text = con0(i).Text
'นํ าข้อมูล con0(i) ส่งให้กับ con2(i)
155
con4(i).Text = con1(i).Text
'นํ าข้อมูล con1(i) ส่งให้กับ con4(i)
154
con3(i).Text = con0(i).Text
156
con5(i).Text = con1(i).Text
'นํ าข้อมูล con0(i) ส่งให้กับ con3(i) 'นํ าข้อมูล con1(i) ส่งให้กับ con5(i)
157
Next
'วนลูปที่ไปที่ for จนสิน ้ สุดเงื่อนไข
158
Timer3.Enabled = False
'ปิ ดการทํางาน Timer3
159 160 161
End If
End Sub End Class
'จบทํางานเงื่อนไข
'จบการทํางานของ Class เพื่อทดสอบการทํางานของ Tab ทัง้ สาม Tab
รูปที่ 3.22 ตัวอย่างการคํานวณเพื่อพิสูจน์คุณสมบัติ (AB)T = BTAT
100
รูปที่ 3.23 ฟอร์มสําหรับหาค่าลอการิทึมของ X ฐาน Base นั่ นคือหาค่า logBase(X)
4) ทดสอบการทํางานของโปรแกรมโดยการกดป่ ุม
หรือกดป่ ุม <F5> ที่คย ี ์บอร์ด จากนั ้นป้ อน
ค่าเมทริกซ์ A เท่ากับ [1, 2; 3, 4] และเมทริกซ์ B เท่ากับ [5, 6; 7, 8] และกดที่ปุ่มคํานวณ ก็จะได้ผลลัพธ์ตามรูปที่ 3.22
3.4 การหาค่าลอการิทึมฐานใดๆ ในส่วนนี้ จะแสดงการใช้โปรแกรม VB 2010 Express เพื่อสร้างหน้ าต่างส่วนต่อประสานสําหรับ
ใช้หาค่าลอการิทึมฐานใดๆ ดังต่อไปนี้
1) เปิ ดโปรแกรม VB 2010 Express แล้วสร้างโปรเจ็กต์แบบ Windows Forms Application จากนั ้นออกแบบหน้ าฟอร์มตามรูปที่ 3.23
2) กําหนดค่าคุณสมบัติของฟอร์มในรูปที่ 3.23 ตามตารางที่ 3.8 3) เรียกฟั งก์ชัน FileSystemObject มาใช้งานโดยเลือกที่เมนู Project → Add Reference…
→ Microsoft Scripting Runtime และกดป่ ุม OK (ตามรูปที่ 2.11 และ 2.12)
4) ดับเบิลคลิกที่ฟอร์มหรือคลิกที่ปุ่ม View Code ดังนี้
ที่หน้ าต่างโซลูชน ั แล้วเขียนโค้ดโปรแกรม
101 ตารางที่ 3.8 ค่าคุณสมบัติของฟอร์มในรูปที่ 3.23 อ็อบเจกต์ / คอนโทรล Form CommandButton1 Textbox (X) Input Textbox (Base) Input Textbox (log) output Timer1
คุณสมบัติ
ค่าที่กําหนด
Text
การหาผลลัพธ์ของ Log ฐานใด ๆ
StartPosition
CenterScreen
Name
Button1
Text
คํานวณ
Name
TextBox1
Text
N/A
Name
TextBox2
Text
N/A
Name
TextBox3
Text
N/A
Enabled
False
Interval
1000
โค้ดของฟอร์มในรูปที่ 3.23 1
Public Class Form1
2
Public fso As New Scripting.FileSystemObject
4
Public r_file As Scripting.TextStream
3 5
Public w_file As Scripting.TextStream
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles Button1.Click
6
TextBox3.Text = ""
8
w_file.WriteLine("x=" & TextBox1.Text & ";") 'สร้างตัวแปร x เท่ากับ Textbox1.text
7
w_file = fso.CreateTextFile("D:\temp.sce")
'ลบข้อมูลใน textbox3.text
'สร้างไฟล์สคริปต์ช่ อ ื ว่า temp.sce
9
w_file.WriteLine("Base=" & TextBox2.Text & ";") w_file.WriteLine("exec('D:\logXN.sci');")
'เรียกใช้งานฟั งก์ชัน logXN.sci
11
w_file.WriteLine("output=logXN(x, Base);")
'หาค่า Log(X) ฐาน Base
13
w_file.WriteLine("fid = mopen('D:\001.txt', 'w');") 'สร้างไฟล์ผลลัพธ์ 001.txt
10* 12
w_file.WriteLine("otext=string(output);")
'แปลง output เป็ นสายอักขระเก็บใน otext
14
w_file.WriteLine("mfprintf(fid,'%s\n',otext);")
'นํ าข้อมูล otext เขียนลงในไฟล์ 001.txt
16
w_file.WriteLine("exit")
18
w_file.Close()
'ออกจากโปรแกรม SCILAB
Shell("C:\WINDOWS\scilab-4.1.2\bin\Scilex.exe -f D:\temp.sce", vbHide)
'จบการเขียนข้อมูลลงไฟล์สคริปต์
19
Timer1.Enabled = True
'เปิ ดการทํางาน Timer1
15 17
w_file.WriteLine("mclose(fid);")
'จบการเขียนข้อมูลลงไฟล์ 001.txt
102 20
End Sub
21
Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles Timer1.Tick
22
If fso.FileExists("D:\001.txt") = True And Timer1.Interval = 1000 Then
23
r_file = fso.OpenTextFile("D:\001.txt")
24
Do Until r_file.AtEndOfStream
25
'เปิ ดไฟล์ 001.txt
'ตรวจสอบเงื่อนไข อ่านข้อมูลจาก 001.txt จบหรือไม่
TextBox3.Text = Val(r_file.ReadLine)
'นํ าข้อมูลที่อา่ นได้ใส่ลง textbox3.text
26
Loop
r_file.Close()
'จบการอ่านข้อมูล
28
Timer1.Enabled = False
'ปิ ดการทํางาน Timer1
27 29
End If
30
'วนลูปไปตรวจสอบเงื่อนไข
'จบทํางานเงื่อนไข
End Sub
31
End Class
รูปที่ 3.24 ตัวอย่างการหาค่าลอการิทึมของ 8 ฐาน 2 ซึ่งมีค่าเท่ากับ 3 นั่ นคือ log2(8) = 3
หมายเหตุ ในบรรทัดที่ 10 จะเป็ นการเรียกฟั งก์ชัน logXN.sci ในสารบบ D:\ ที่ผู้ใช้สร้าง ขึ้นมาตามข้อกําหนดของโปรแกรม SCILAB ดังนี้ 1 2 3
function y = logXN(x, N) y = log(x)/log(N); endfunction
5) ทดสอบการทํางานของโปรแกรมโดยการกดป่ ุม
หรือกดป่ ม ุ <F5> ที่คียบ ์ อร์ด จากนั ้น
ป้ อนข้อมูลดังนี้ ให้ X มีค่าเท่ากับ 8 และ Base มีค่าเท่ากับ 2 แล้วกดป่ ุม “คํานวณ” หนึ่ ง ครัง้ ก็จะได้ผลลัพธ์ตามรูปที่ 3.24
103
รูปที่ 3.25 ฟอร์มสําหรับการบวกและลบสมการหหุนาม
3.5 การบวกและลบสมการพหุนาม ในส่วนนี้จะแสดงการใช้โปรแกรม VB 2010 Express เพื่อสร้างหน้ าต่างส่วนต่อประสานสําหรับ
ใช้บวกและลบสมการพหุนาม ดังต่อไปนี้
1) เปิ ดโปรแกรม VB 2010 Express แล้วสร้างโปรเจ็กต์แบบ Windows Forms Application จากนั ้นออกแบบหน้ าฟอร์มตามรูปที่ 3.25
2) กําหนดค่าคุณสมบัติของฟอร์มในรูปที่ 3.25 ตามตารางที่ 3.9 3) เรียกฟั งก์ชัน FileSystemObject มาใช้งานโดยเลือกที่เมนู Project → Add Reference…
→ Microsoft Scripting Runtime และกดป่ ุม OK (ตามรูปที่ 2.11 และ 2.12)
4) ดับเบิลคลิกที่ฟอร์มหรือคลิกที่ปุ่ม View Code ดังนี้
ที่หน้ าต่างโซลูชน ั แล้วเขียนโค้ดโปรแกรม
104 ตารางที่ 3.9 ค่าคุณสมบัติของฟอร์มในรูปที่ 3.25 อ็อบเจกต์ / คอนโทรล Form CommandButton1 Textbox p(x) Input Textbox q(x) Input WebBrowser1 output Timer1
คุณสมบัติ
ค่าที่กําหนด
Text
การบวก ลบสมการหหุนามด้วย SCILAB
StartPosition
CenterScreen
Name
Button1
Text
คํานวณ
Name
TextBox1
Text
N/A
Name
TextBox2
Text
N/A
Name
WebBrowser1
ScrollBarsEnabled
False
Enabled
False
Interval
1000
โค้ดของฟอร์มในรูปที่ 3.25 1 2 3 4 5 6 7 8
Public Class Form1
Public fso As New Scripting.FileSystemObject Public w_file As Scripting.TextStream
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
w_file = fso.CreateTextFile("D:\temp.sce")
'สร้างไฟล์สคริปต์ช่ อ ื ว่า temp.sce
w_file.WriteLine("x=poly(0,'x');")
'สร้างตัวแปร x เป็ นตัวแปรพหุนาม
w_file.WriteLine("p=" & TextBox1.Text & ";")
'สร้างตัวแปร p เท่ากับ TextBox1.text
w_file.WriteLine("q=" & TextBox2.Text & ";") 'สร้างตัวแปร q เท่ากับ TextBox2.text
9
w_file.WriteLine("pq1=p+q;")
'ให้ pq1 มีคา่ เท่ากับ p บวก q
11*
w_file.WriteLine("exec('D:\pohtml01.sci',-1);")
'เรียกใช้ฟังก์ชัน pohtml01.sci
10
w_file.WriteLine("pq2=p-q;")
'ให้ pq2 มีค่าเท่ากับ p ลบ q
12*
w_file.WriteLine("exec('D:\pohtml02.sci',-1);")
14
w_file.WriteLine("p1 = pol2tex(p)")
16
w_file.WriteLine("pl1 = pol2tex(pq1)") 'แปลงข้อมูล pq1 เป็ น LaTeX และให้เท่ากับ pl1
13* 15 17
w_file.WriteLine("exec('D:\pohtml03.sci',-1);") w_file.WriteLine("q1 = pol2tex(q)")
'เรียกใช้ฟังก์ชัน pohtml02.sci 'เรียกใช้ฟังก์ชัน pohtml03.sci
'แปลงข้อมูล p เป็ น LaTeX และให้เท่ากับ p1 'แปลงข้อมูล p เป็ น LaTeX และให้เท่ากับ q1
w_file.WriteLine("pl2 = pol2tex(pq2)") 'แปลงข้อมูล pq2 เป็ น LaTeX และให้เท่ากับ p12
105 18
w_file.WriteLine("pohtml01('D:\001.html');")
'กําหนดชื่อไฟล์ D:\001.html ด้วยฟั งก์ชัน
pohtml01
19
w_file.WriteLine("pohtml02('D:\001.html',pl1,'p + q');")
'กําหนดเขียน p + q = pl1
w_file.WriteLine("pohtml02('D:\001.html',pl2,'p - q');")
'กําหนดเขียน p - q = pl2
ด้วยฟั งก์ชัน pohtml02
20
ด้วยฟั งก์ชัน pohtml02
21
w_file.WriteLine("pohtml03('D:\001.html');")
pohtml03
22
'จบไฟล์ D:\001.html ด้วยฟั งก์ชัน
w_file.WriteLine("exit")
'ออกจากโปรแกรม SCILAB
24
w_file.Close()
'จบการเขียนข้อมูลลงไฟล์สคริปต์
Shell("C:\WINDOWS\scilab-4.1.2\bin\Scilex.exe -f D:\temp.sce", vbHide)
25
Timer1.Enabled = True
'เปิ ดการทํางาน Timer1
23
26
End Sub
27
Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
28
If fso.FileExists("D:\001.html") = True And Timer1.Interval = 1000 Then
29
WebBrowser1.Navigate("D:\001.html")
30
Timer1.Enabled = False
31
End If
32
'อ่านไฟล์ 001.html
'ปิ ดการทํางาน Timer1 'จบทํางานของเงื่อนไข
End Sub
33
End Class
หมายเหตุ ในบรรทัดที่ 11 – 13 มีการเรียกฟั งก์ชัน pohtml01.sci, pohtml02.sci
และ pohtml03.sci ในสารบบ D:\ ที่ผู้ใช้สร้างขึ้นมาตามข้อกําหนดของโปรแกรม SCILAB
ดังนี้ 1
function [] = pohtml01(ftext)
2
fid = mopen(ftext, 'w');
3
mfprintf(fid, "<html>\n<head>\n");
4
mfprintf(fid, "<meta http-equiv=Content-Type ...
5
content=text/html; charset=windows-874>\n");
6
mfprintf(fid, "</head>\n");
7
mfprintf(fid, "<style type=text/css>\n");
8
mfprintf(fid, "body {\n");
9
mfprintf(fid, "margin-left: 0px;\n");
10
mfprintf(fid, "margin-top: 0px;\n");
106
11
mfprintf(fid, "margin-right: 0px;\n");
12
mfprintf(fid, "margin-bottom: 0px;\n");
13
mfprintf(fid, "}\n");
14
mfprintf(fid, "</style>\n");
15
mfprintf(fid, "<body>\n");
16
mclose(fid);
17
endfunction
1
function [] = pohtml02(ftext,stext,stype)
2
fid = mopen(ftext, 'a');
3
mfprintf(fid,"&nbsp;&nbsp;%s = ",stype);
4
mfprintf(fid,"&nbsp;&nbsp;");
5
Lstext = length(stext);
6
for i = 1:Lstext
7
L2stext = part(stext,i)
8
if L2stext =="^" then
9
elseif L2stext =="{" then
10
mfprintf(fid,"<sup>");
11
elseif L2stext =="}" then
12
mfprintf(fid,"</sup>");
13
elseif L2stext <> "\" & L2stext <> "*" then
14
mfprintf(fid,"%s",L2stext);
15
end
16
end
17
mfprintf(fid,"<br><br>\n");
18
mclose(fid);
19
endfunction
1
function [] = pohtml03(ftext)
2
fid = mopen(ftext, 'a');
3
mfprintf(fid,"</body>\n");
4
mfprintf(fid,"</html>\n"); mclose(fid);
5
endfunction
107
รูปที่ 3.26 ตัวอย่างการบวกและลบสมการหหุนาม
5) ทดสอบการทํางานของโปรแกรมโดยการกดป่ ุม
หรือกดป่ ุม <F5> ที่คย ี ์บอร์ด จากนั ้นป้ อน
ข้อมูลที่อย่ใู นรูปของ LaTeX ดังนี้ p(x) เท่ากับเลข x^2 + 50 และ q(x) เท่ากับ x^2 + 25 แล้วกดป่ ุม “คํานวณ” หนึ่ งครัง้ ก็จะได้ผลลัพธ์ตามรูปที่ 3.26
3.6 การวาดกราฟสองมิติ ในส่วนนี้จะแสดงการใช้โปรแกรม VB 2010 Express เพื่อสร้างหน้ าต่างส่วนต่อประสานสําหรับ
ใช้วาดกราฟสองมิติของสมการ y(x) นั่ นคือสมการ y ที่เป็ นฟั งก์ชันของตัวแปร x ดังนี้
1) เปิ ดโปรแกรม VB 2010 Express แล้วสร้างโปรเจ็กต์แบบ Windows Forms Application จากนั ้นออกแบบหน้ าฟอร์มตามรูปที่ 3.27
2) กําหนดค่าคุณสมบัติของฟอร์มในรูปที่ 3.27 ตามตารางที่ 3.10 3) เรียกฟั งก์ชัน FileSystemObject มาใช้งานโดยเลือกที่เมนู Project → Add Reference…
→ Microsoft Scripting Runtime และกดป่ ุม OK (ตามรูปที่ 2.11 และ 2.12)
4) ดับเบิลคลิกที่ฟอร์มหรือคลิกที่ปุ่ม View Code ดังนี้
ที่หน้ าต่างโซลูชน ั แล้วเขียนโค้ดโปรแกรม
108
ส่วนที่เป็ นเอาต์พุต (แสดงกราฟ)
ส่วนที่เป็ นอินพุต (ป้ อนสมการ y และช่วงของค่า x ที่ต้องการวาดกราฟ)
รูปที่ 3.27 ฟอร์มสําหรับวาดกราฟสองมิติ ตารางที่ 3.10 ค่าคุณสมบัติของฟอร์มในรูปที่ 3.27 อ็อบเจกต์ / คอนโทรล
Form
CommandButton1 Textbox1(x) ค่าเริ่มต้น Textbox2 (x) ค่าระหว่างขัน ้ Textbox3(x) ค่าสุดท้าย Textbox4 (y)
PictureBox1 output
Timer1
คุณสมบัติ
ค่าที่กาํ หนด
Text
การวาดกราฟ 2 มิติ
StartPosition
CenterScreen
TopMost
True
WindowState
Maximized
Name
Button1
Text
คํานวณ
Name
TextBox1
Text
N/A
Name
TextBox2
Text
N/A
Name
TextBox3
Text
N/A
Name
TextBox4
Text
N/A
Name
PictureBox1
BoderStyle
FixedSingle
Size
610, 461
Enabled
False
Interval
1000
109 โค้ดของฟอร์มในรูปที่ 3.27 1 2 3 4 5 6 7
Public Class Form1
Public fso As New Scripting.FileSystemObject Public w_file As Scripting.TextStream
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles Button1.Click PictureBox1.Refresh()
w_file = fso.CreateTextFile("D:\temp.sce")
'รีเฟรช PictureBox1
'สร้างไฟล์สคริปต์ช่ อ ื ว่า temp.sce
w_file.WriteLine("x=" & TextBox1.Text & ":" & TextBox2.Text & ":" & TextBox3.Text
& ";")
'สร้างตัวแปร x มีค่าเท่ากับค่าระหว่าง TextBox1 ถึง TexBox3 โดยมีคา่ ระยะห่างคงที่
เท่ากับ TextBox2 8
w_file.WriteLine("y=" & TextBox4.Text & ";") w_file.WriteLine("plot(x,y)" & ";")
'วาดกราฟ 2 มิติจากค่า X และ y
10
w_file.WriteLine("xs2gif(0,'D:\001.gif');")
'บันทึกกราฟเป็ นรูปรูปเก็บไว้ท่ี D:\001.gif
w_file.Close()
'จบการเขียนข้อมูลลงไฟล์สคริปต์
9 11 12 13 14 15 16 17 18 19 20 21 22
w_file.WriteLine("exit")
'สร้างตัวแปร y เท่ากับ TextBox4
'ออกจากโปรแกรม SCILAB
Shell("C:\WINDOWS\scilab-4.1.2\bin\Scilex.exe -f D:\temp.sce", vbHide) Timer1.Enabled = True
'เปิ ดการทํางาน Timer1
End Sub
Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles Timer1.Tick
If fso.FileExists("D:\001.gif") = True And Timer1.Interval = 1000 Then PictureBox1.ImageLocation = "D:\001.gif"
'อ่านไฟล์ 001.gif แสดง PictureBox1
Timer1.Enabled = False
'ปิ ดการทํางาน Timer1
End If
End Sub
'จบการทํางานของเงื่อนไข
End Class
6) ทดสอบการทํางานของโปรแกรมโดยการกดป่ ุม
หรือกดป่ ุม <F5> ที่คีย์บอร์ด จากนั ้น
ทําการวาดกราฟสองมิติ เช่น ถ้าต้องการวาดรูปสัญญาณ y = sin(2πfx) เมื่อความถี่ f = 1 เฮิรตซ์ ก็ให้ป้อนข้อมูลของอินพุต x = 0 : 0.01 : 2 และ y = sin(2*%pi*1*x) ตามรูปที่ 3.28 (เมื่อ %pi ≈ 22/7 คือค่า π) แล้วกดป่ ุม “คํานวณ” หนึ่ งครัง้ จะได้ผลลัพธ์ตามรูปที่ 3.28
110
อินพุต
เอาต์พุต
รูปที่ 3.28 ตัวอย่างการวาดกราฟสองมิติของสมการ y = sin(2*%pi*1*x)
3.7 สรุปท้ายบท บทนี้ ได้ยกตัวอย่างการสร้างสื่อการสอนด้วยโปรแกรม Visual Basic ร่วมกับ SCILAB เพื่อเป็ น แนวทางให้ผู้อ่านสามารถนํ าไปพัฒนาต่อยอดหรือประยุกต์ใช้งานในด้านอื่นๆ ได้ ซึ่งประกอบด้วย
การบวก/ลบ/คูณ/หาร ของเลขสองจํานวน การหาดีเทอร์มิแนนต์และอินเวอร์สของเมทริกซ์ การ
พิสูจน์ คุณสมบัติของเมทริกซ์ การหาค่าลอการิทึมฐานใดๆ การบวกและลบสมการพหุนาม และ การวาดกราฟสองมิติ
3.8 แบบฝึ กหัดท้ายบท 1. จงเขียนโปรแกรมหาค่าตัวคูณร่วมน้ อย (ครน.) จํานวน 3 ค่า 2. จงเขียนโปรแกรมแก้สมการพหุนามที่เป็ นฟั งก์ชน ั ของตัวแปรเดียว 3. จงเขียนโปรแกรมสําหรับวาดกราฟ 2 มิติ ดังรูปที่ 1.5 (คําสัง่ polarplot) 4. จงเขียนโปรแกรมสําหรับวาดกราฟ 3 มิติ ดังรูปที่ 1.6 (คําสัง่ plot3d)
111
บทที่ 4 ความร้เู บื้องต้นเกี่ยวกับภาษา PHP บทนี้ จะกล่าวถึงประวัติความเป็ นมาของภาษา PHP [8 – 10] โครงสร้างทั่วไป คําสั่งพื้นฐานของ ภาษา PHP และการจัดการไฟล์ สําหรับการนํ าไปประยุกต์ใช้งานร่วมกับโปรแกรม SCILAB
4.1 ประวัติความเป็ นมาของ PHP PHP ย่อมาจาก “PHP Hypertext Preprocessor” (เดิมย่อมาจาก Personal Home Page) โดย
คําสั่งของ PHP จะอยู่ในไฟล์ท่ีเรียกว่าสคริปต์ (script) ในทางปฏิบัติ PHP ถือเป็ นภาษาสคริปต์
ฝั่ งแม่ข่าย (server-side scripting language) ซึ่งหมายถึงการประมวลผลจะเกิดขึ้นบนเครื่องแม่ข่าย (server) แล้วส่งผลลัพธ์ท่ีได้มายังเครื่องลูกข่าย (client) โดยทั่วไปการเขียน PHP จะแทรกอยู่ใน เอกสาร HTML (HyperText Markup Language) ด้วยการเปิ ดป้ ายระบุ (tag) <?php และปิ ด
ด้วย ?> หรือใช้ป้ายระบุ <?...?> ก็ได้เช่นกัน ดังนั ้นภาษา PHP จึงเป็ นที่นิยมนํ ามาใช้เขียน
เว็บแอพลิเคชัน (web application) ที่สามารถทํางานโต้ตอบกับผู้ใช้งานได้ และเป็ นโอเพ่นซอร์ส
(open source) ซึ่งผู้ใช้สามารถนํ ามาใช้งานได้ฟรี เพราะฉะนั ้นภาษา PHP จึงได้รับการพัฒนาไป อย่างรวดเร็วและเป็ นที่นิยมใช้งานอย่างแพร่หลาย
4.2 การเตรียมตัวก่อนเขียนเว็บไซต์ด้วยภาษา PHP ในส่วนนี้ จะอธิบายการติดตัง้ โปรแกรม AppServ และ Adobe Dreamweaver CS5.5 ที่จําเป็ น สําหรับการเขียนโปรแกรมเว็บไซต์ภาษา PHP ร่วมกับ SCILAB
4.2.1 การติดตัง้ โปรแกรม AppServ หนั งสือเล่มนี้จะใช้โปรแกรม AppServ ซึ่งเป็ นชุดติดตัง้ ที่รวมซอฟต์แวร์ฟรีหลายๆ อย่างมารวมกัน โดยมีโปรแกรมสําเร็จ (package) คือ Apache, PHP, MySQL และ phpMyAdmin ผู้ใช้สามารถ
112
รูปที่ 4.1 ตัวอย่างการติดตัง้ โปรแกรม AppServ 2.5.10
รูปที่ 4.2 การจัดเก็บไฟล์และสารบบของโปรแกรม AppServ
ดาวน์โหลดได้ท่ีเว็บไซต์ www.appservnetwork.com โดยหนั งสือเล่มนี้ ได้ใช้ AppServ เวอร์ชัน
2.5.10 ตามรูปที่ 4.1 ซึ่งสามารถติดตัง้ โปรแกรมได้ตามปกติ (ผู้สนใจศึกษารายละเอียดการติดตัง้ โปรแกรมเพิ่มเติมได้จากเว็บไซต์ www.appservnetwork.com)
113 นอกจากนี้ การจัดเก็บไฟล์ PHP จะต้องจัดเก็บไว้ใน Document Root ที่ผู้ใช้กําหนดดัง
แสดงในรูปที่ 4.2 สําหรับค่าโดยปริยาย (default) ของ AppServ คือ C:\AppServ\www\ ซึ่งเป็ น
สิ่งสําคัญมากและมีผลต่อการประมวลผลไฟล์ PHP ถ้าไม่จัดเก็บไฟล์ไว้ใน Document Root ก็จะ ไม่สามารถประมวลผลไฟล์ PHP ได้ เนื่ องจาก PHP จะประมวลผลบนเครื่องแม่ข่ายเท่านั ้น ดังนั ้น
ในการเขียนโปรแกรม PHP ร่วมกับโปรแกรม SCILAB ไฟล์ต่างๆ ที่พัฒนาขึ้นมาจะต้องเก็บไว้ท่ี สารบบ www นี้เท่านั ้น
หมายเหตุ สําหรับการเขียนภาษา PHP ไฟล์ท่ีได้จะถูกเก็บไว้ในเครื่องแม่ข่ายจําลองด้วยโปรแกรม
AppServ นี้ การตัง้ หน้ าเริ่มต้นจะต้องตัง้ ชื่อไฟล์ว่า index.php (หรือ index.html) เพื่อที่จะชีไ้ ปยัง
หน้ าแรกของเว็บไซต์ได้อย่างถูกต้อง
4.2.2 การติดตัง้ โปรแกรม Adobe Dreamweaver CS5.5 หนั งสือเล่มนี้ จะใช้โปรแกรม Adobe Dreamweaver CS5.5 เพื่อช่วยในการออกแบบและเขียนหน้ า
เว็บเพจ (web page) ซึ่งเป็ นโปรแกรมที่มีลิขสิทธิซ์ อฟต์แวร์ อย่างไรก็ตามในที่นี้จะยกตัวอย่างการ ติดตัง้ โปรแกรม Adobe Dreamweaver CS5.5 แบบ 30 วัน (เวอร์ชันทดลองใช้งาน) ซึ่งสามารถ ดาวน์โหลดมาทดลองใช้งานได้ฟรี (trail version) โดยมีขน ั ้ ตอนดังนี้ 1) ดาวน์โหลดโปรแกรมได้ท่เี ว็บไซต์
http://home.npru.ac.th/piya/webscilab/book2/program/DreamweaverCS5.5.exe.rar หมายเหตุ ผู้ใช้สามารถเข้าไปดาวน์โหลดโปรแกรม Adobe Dreamweaver เวอร์ชันใหม่ ได้ท่ี เว็บไซด์ http://www.adobe.com/sea/downloads/
2) ทําการ Extract ไฟล์โปรแกรม Adobe Dreamweaver CS5.5 และคลิกที่ปุ่ม Next ตามรูปที่
4.3(ก) ก็จะได้หน้ าต่างในรูปที่ 4.3(ข) จากนั ้นกดป่ ุม ACCEPT เพื่อยอมรับเงื่อนไขลิขสิทธิ ์ ของโปรแกรม ก็จะได้หน้ าต่างในรูปที่ 4.3 (ค)
3) เลือกรายการ “Install this product as a trial.” ตามรูปที่ 4.3 (ค) เพื่อใช้งานแบบ 30 วัน และกดป่ ุม Next ก็จะได้หน้ าต่างในรูปที่ 4.3 (ง) เพื่อทําการเลือกที่อยู่สําหรับติดตัง้ โปรแกรม และกดป่ ุม INSTALL ตามรูปที่ 4.3 (ง) เพื่อเริ่มติดตัง้ โปรแกรม
4) เมื่อระบบติดตัง้ โปรแกรมเสร็จ ก็จะแสดงหน้ าต่าง “Thank You” ตามรูปที่ 4.3 (จ) จากนั ้น
ให้กดป่ ุม DONE ก็จะได้หน้ าต่างในรูปที่ 4.3 (ฉ) ซึ่งเตือนว่าสามารถใช้งานได้อย่างถูกต้อง ภายใน 30 วัน
5) กดป่ ุม START TRIAL ในรูปที่ 4.3 (ฉ) เพื่อทดสอบการใช้งานโปรแกรม Adobe Dreamweaver CS5.5 ก็จะได้หน้ าต่างเริ่มต้นใช้งานโปรแกรมนี้ตามรูปที่ 4.4
114
(ก)
(ข)
(ค)
(ง)
(จ)
(ฉ)
รูปที่ 4.3 ขัน ้ ตอนการติดตัง้ โปรแกรม Adobe Dreamweaver CS5.5
115
รูปที่ 4.4 หน้ าต่างเริ่มต้นใช้งานโปรแกรม Adobe Dreamweaver CS5.5
4.2.3 แนวทางการเขียนโปรแกรมเว็บไซต์ภาษา PHP ร่วมกับ SCILAB การสร้างเว็บไซต์โดยใช้ภาษา PHP ร่วมกับโปรแกรม SCILAB จะต้องติดตัง้ โปรแกรม SCILAB ไว้ท่ี C:\WINDOWS จึงสามารถเรียนใช้งานโปรแกรม SCILAB ผ่านบรรทัดคําสั่ง (command
line) ของดอส (DOS) ได้ ซึ่งเป็ นหัวใจสําคัญที่ทําให้สามารถใช้ฟังก์ชัน exec ของภาษา PHP ได้ โดยผู้เขียนสรุปโค้ดได้ดังนี้ 1
$path=$_SERVER["SystemRoot"];
2
$com = SCILAB -nwni -nb -f Parameter
3
exec($com);
เมื่อ $path หมายถึงที่อยู่ของสารบบหลักคือ “C:\WINDOWS”, $com คือตัวแปรสําหรับบันทึก
ค่าโค้ดประมวลผลคําสัง่ (command), SCILAB หมายถึงที่อยู่ของโปรแกรม Scilex.exe, -nwni
หมายถึงไม่ต้องแสดงหน้ าต่างของโปรแกรม SCILAB, -nb หมายถึงไม่แสดงข้อความต้อนรับ, -f
หมายถึงสัง่ ให้โปรแกรม SCILAB ประมวลผลไฟล์สคริปต์, Parameter หมายถึงไฟล์สคริปต์ท่ี ส่งให้โปรแกรม SCILAB ประมวลผล, และ exec หมายถึงคําสัง่ ประมวลผลโค้ดผ่านบรรทัดคําสัง่
116
4.3 เริ่มต้นกับการเขียนภาษา PHP 4.3.1 การแสดงผล คําสัง่ ที่นิยมใช้การแสดงผลลัพธ์ของ PHP คือคําสัง่ print และ echo ซึ่งมีรายละเอียดดังนี้ ฟั งก์ชัน print ฟั งก์ชัน print มีรูปแบบการใช้งานคือ
print(ผลลัพธ์);
หรือ
print ผลลัพธ์;
ก็จะแสดงคําว่า “ผลลัพธ์” ออกหน้ าจอ เช่น ถ้าใช้คําสัง่ print("SCILAB"); print "SCILAB";
จะได้คําว่า SCILAB ปรากฏที่หน้ าจอ ฟั งก์ชัน echo ฟั งก์ชัน echo นิ ยมนํ ามาใช้มากสุด เพราะทํางานได้รวดเร็วกว่าฟั งก์ชัน print เนื่ องจากคําสัง่ นี้ ไม่มีการตรวจสอบข้อผิดพลาดใดๆ รูปแบบการใช้งานคําสัง่ echo มีดังนี้
echo("ผลลัพธ์");
หรือ
echo "ผลลัพธ์";
ก็จะแสดงคําว่า “ผลลัพธ์” ออกหน้ าจอ เหมือนกับฟั งก์ชัน print
4.3.2 การเขียนคอมเมนต์ การคอมเมนต์ (comment) หรือการเขียนคําอธิบาย คือการแทรกข้อความเข้าไปในตัวโปรแกรม
(เพื่อใช้อธิบายตัวโปรแกรมซึ่งทําให้ง่ายต่อการทําความเข้าใจและแก้ไขโปรแกรมในภายหลัง) แต่จะ
ไม่ถูกนํ าไปประมวลผล การเขียนคอมเมนต์ในภาษา PHP จะมีลักษณะเดียวกับภาษาจาวาสคริปต์ (JavaScript) ซึ่งมี 2 รูปแบบคือ
117
การเขียนคอมเมนต์แบบหนึ่ งบรรทัดจะใช้เครื่องหมายทับสองอัน (double slash) “ // ” นํ าหน้ า
ข้อความที่ต้องการคอมเมนต์ทีละบรรทัด เช่น //Comment PHP
การเขียนคอมเมนต์แบบหลายบรรทัดจะใช้เครื่องหมาย /* เป็ นจุดเริ่มต้น และเครื่องหมาย */ เป็ นจุดสิน ้ สุด ของการคอมเมนต์ กล่าวคือข้อความทัง้ หมด (หลายบรรทัดก็ได้) ที่อยู่ภายใน เครื่องหมาย /* และ */ จะไม่ถูกนํ าไปประมวลผล ตัวอย่างเช่น
/* This is a comment for PHP. This is the multiple-line comment. */
4.3.3 การกําหนดตัวแปร การเขียนโปรแกรม PHP จะเหมือนกับการเขียนโปรแกรมด้วยภาษาอื่นๆ ซึ่งจะต้องมีการกําหนด
ตัวแปรเพื่อจองพื้นที่ในหน่ วยความจําสําหรับเก็บข้อมูล ในทางปฏิบัติการกําหนดตัวแปรที่ใช้ใน PHP
มีข้อกําหนดดังนี้
ตัวแปรทุกตัวต้องขึ้นต้นด้วยเครื่องหมาย “$” และตามด้วยตัวอักษร (ห้ามขึ้นต้นด้วยตัวเลข)
หรือเครื่องหมายสัญประกาศ (underscores) “ _ ” (สัญลักษณ์อ่ ืนห้ามใช้) เช่น $name, $data และ $_file เป็ นต้น
ตัวแปรใน PHP ไม่จําเป็ นต้องระบุแบบชนิ ดข้อมูล (data type) เพราะตัวแปรแต่ละตัวสามารถ เก็บข้อมูลชนิ ดใดก็ได้
โปรแกรม PHP จะพิจารณาถึงความแตกต่างของตัวอักษรตัวพิมพ์ใหญ่กับอักษรตัวพิมพ์เล็ก
ดังนั ้นตัวแปรที่มีช่ อ ื เหมือนกันแต่ใช้ตัวอักษรต่างกันจะถือว่าเป็ นตัวแปรคนละตัวกัน เช่น $abc $ABC และ $aBC ถือเป็ นคนละตัวกัน
หมายเหตุ การกําหนดค่าให้กับตัวแปรชนิ ดสายอักขระ (string) ต้องกําหนดให้อยู่ภายในเครื่องหมาย
อัญประกาศเดี่ยว “ '...' ” หรือเครื่องหมายอัญประกาศ “ "..." ” เช่น $name = "SCILAB"
ในขณะที่การกําหนดค่าให้กับตัวแปรที่เป็ นตัวเลข สามารถระบุค่าเข้าไปได้โดยไม่ต้องใส่เครื่องหมาย อัญประกาศเดี่ยว (หรือเครื่องหมายอัญประกาศ) เช่น $number = 12
4.3.4 การใช้เครื่องหมายอัญประกาศเดี่ยวและเครื่องหมายอัญประกาศ การกําหนดค่าให้กับตัวแปรชนิ ดสายอักขระใน PHP สามารถใช้ได้ทงั ้ เครื่องหมายอัญประกาศเดี่ยว
“ '...' ” หรือเครื่องหมายอัญประกาศ “ "..." ” อย่างไรก็ตามเครื่องหมายทัง้ สองนี้ มีข้อแตกต่าง
เล็กน้ อยในเรื่องของการแสดงผล กล่าวคือถ้าต้องการแสดงค่าของตัวแปรออกหน้ าจอผ่านทางคําสั่ง
118 print หรือ echo จะต้องใช้ร่วมกับเครื่องหมายอัญประกาศ ถ้าใช้กับเครื่องหมายอัญประกาศเดี่ยว จะไม่สามารถแสดงค่าของตัวแปรได้ แต่จะแสดงชื่อของตัวแปรแทน ให้พิจารณาชุดคําสัง่ ต่อไปนี้
<?php $sin = "SingleQuote";
$dou = "DoubleQuote";
echo 'This test is $sin และ $dou';
echo "This test is $sin และ $dou";
?>
ผลลัพธ์ท่ไี ด้คือ This test is $sin และ $dou
This test is SingleQuote และ DoubleQuote
ซึ่งจะเห็นได้ว่าค่าของตัวแปรจะถูกแสดงผลออกมา ก็ต่อเมื่อคําสั่ง echo ใช้ร่วมกับเครื่องหมาย อัญประกาศเท่านั ้น
4.3.5 การนิยามตัวแปรล่วงหน้ า ตัวแปรที่ถูกนิ ยามล่วงหน้ า (predefined variable) คือตัวแปรที่โปรแกรม PHP ได้สร้างไว้ล่วงหน้ า เพื่อความสะดวกและเป็ นค่าพื้นฐานสําหรับการใช้งาน โดยทั่วไปตัวแปรเหล่านี้ จะเก็บข้อมูลสําคัญ บางอย่างไว้และมีลักษณะเป็ นอาร์เรย์ (array) ในที่นี้จะกล่าวถึงตัวแปรที่ถูกนิ ยามล่วงหน้ าที่จําเป็ น
ต่อการใช้งานเพื่อติดต่อกับโปรแกรม SCILAB เท่านั ้น ผู้สนใจศึกษารายละเอียดเพิ่มเติมได้ท่ีไฟล์
phpinfo.php ไปที่หัวข้อ PHP Variables (อยู่ในสารบบชื่อ C:\AppServ\www) $_SERVER
ตัวแปร $_SERVER ที่ใช้เก็บข้อมูลที่เกี่ยวข้องกับการเชื่อมต่อระหว่างลูกข่าย (client) และเครื่อง แม่ข่าย (server) เช่น ชื่อโฮสต์ (host), เส้นทาง (path) ในการเก็บข้อมูล, และวิธี (method) ใน การส่งข้อมูล ตัวแปร $_SERVER เริ่มใช้งานตัง้ แต่ PHP 4.1.0 เป็ นต้นมา (เวอร์ชันก่อนหน้ านี้
จะใช้ช่ ือตัวแปรนี้ ว่า $HTTP_SERVER_VARS) การอ้างถึงข้อมูลในตัวแปร $_SERVER จะใช้ รูปแบบคือ
$_SERVER[‘variable_name’]
119 เมื่อ variable_name คือข้อมูลที่ผู้ใช้ต้องการทราบ ซึ่งการใช้งาน PHP เพื่อติดต่อกับโปรแกรม SCILAB จะมีการใช้งานฟั งก์ชน ั ต่อไปนี้
$_SERVER[‘SystemRoot’] เก็บชื่อสารบบที่เก็บไฟล์ของระบบปฏิบัตก ิ าร $_SERVER[‘DOCUMENT_ROOT’] เก็บสารบบสู่ท่เี ดิม (home directory) ซึ่งคือสารบบ ที่เก็บไฟล์เว็บไซต์ท่ผ ี ใู้ ช้สร้างขึ้นทัง้ หมด
4.3.6 แบบชนิดข้อมูล แบบชนิ ดข้อมูล (data type) พื้นฐานในโปรแกรม PHP มีดังนี้ แบบชนิดข้อมูล
คําอธิบาย
ตรรกศาสตร์
ค่าทางตรรกะ มีคา่ เป็ นจริง (True) หรือ เท็จ (False)
เลขจํานวนเต็ม
เลขจํานวนเต็มบวก จํานวนเต็มลบ หรือศูนย์
จํานวนจริง (float หรือ double)
เลขทศนิ ยม
สายอักขระ (string)
ตัวอักษรทัง้ หมด
4.3.7 ตัวดําเนินการเลขคณิต ตัวดําเนิ นการเลขคณิ ต (arithmetic operator) พื้นฐานในโปรแกรม PHP มีดังนี้ ตัวดําเนินการ
ความหมาย
ตัวอย่าง ($a=20 และ $b=3)
+
การบวก (addition)
$a + $b = 23
-
การลบ (subtraction)
$a - $b = 17
*
การคูณ (multiplication)
$a * $b = 60
/
การหาร (division)
$a / $b = 6.66
%
มอดุลัส (modulus) เป็ นการหาเศษที่ได้จากหาร
$a % $b = 2
4.3.8 ตัวดําเนินการเพิ่ม/ลดค่า ตัวดําเนิ นการเพิ่ม/ลดค่า (incrementing/decrementing operator) หมายถึงตัวดําเนิ นการ ++ หรือ
-- ซึ่งต้องการตัวถูกดําเนิ นการเพียงตัวเดียวและต้องเป็ นตัวแปรเท่านั ้น โดยจะเพิ่มค่าของตัวแปร
หนึ่ งค่าหรือลดค่าของตัวแปรหนึ่ งค่า ตามลําดับ การใช้งานมีทัง้ ระบุไว้หน้ าตัวแปรหรือหลังตัวแปร
ซึ่งจะมีความหมายต่างกัน (เหมือนกับวิธีการใช้ในภาษาซี) ดังรายละเอียดในต่อไปนี้
120 ตัวอย่างการใช้งาน ++$a
ผลลัพธ์ คําสัง่ นี้จะทําการเพิ่มค่าของตัวแปร $a ขึน ้ 1 ค่าก่อน นั่ นคือ $a = $a + 1 แล้วจึงนํ าตัวแปร $a ไปประมวลผลในชุดคําสัง่
$a++
คําสัง่ นี้จะนํ าตัวแปร $a ไปประมวลผลในชุดคําสัง่ ให้เรียบร้อยก่อน แล้วจึงเพิ่ม
--$a
คําสัง่ นี้จะทําการลดค่าของตัวแปร $a ขึน ้ 1 ค่าก่อน นั่ นคือ $a = $a - 1
$a--
ค่าของตัวแปร $a ขึน ้ 1 ค่า แล้วจึงนํ าตัวแปร $a ไปประมวลผลในชุดคําสัง่
คําสัง่ นี้จะนํ าตัวแปร $a ไปประมวลผลในชุดคําสัง่ ให้เรียบร้อยก่อน แล้วจึงลด ค่าของตัวแปร $a ขึน ้ 1 ค่า
4.3.9 ตัวดําเนินการเปรียบเทียบ ตัวดําเนิ นการเปรียบเทียบ (comparison operator) เป็ นตัวดําเนิ นการที่ใช้ในการตรวจสอบความ สัมพันธ์ระหว่างค่าของตัวแปร โดย
ถ้าความสัมพันธ์เป็ นจริง ผลลัพธ์ท่ไี ด้มีค่าเท่ากับ True (เป็ นจริง) หรือมีค่าทางตรรกะเท่ากับ 1 ถ้าความสัมพันธ์เป็ นเท็จ ผลลัพธ์ท่ไี ด้มีค่าเท่ากับ False (เป็ นเท็จ) หรือมีค่าทางตรรกะเท่ากับ 0 (แต่จะไม่แสดงผลลัพธ์ใดๆ ออกหน้ าจอ)
ตัวดําเนินการ
ชื่อ
ตัวอย่าง
เท่ากับ (equal)
$a == $b
ให้ค่า True เมื่อ $a มีค่าเท่ากับ $b
เหมือนกับ
$a === $b
ให้ค่า True เมื่อ $a มีค่าเท่ากับ $b และต้อง
ไม่เท่ากับ
$a != $b
ให้ค่า True เมื่อ $a มีค่าไม่เท่ากับ $b
ไม่เหมือนกับ
$a !=== $b
<
น้ อยกว่า
$a < $b
ให้ค่า True เมื่อ $a มีค่าน้ อยกว่า $b
>
มากกว่า
$a > $b
ให้ค่า True เมื่อ $a มีค่ามากกว่า $b
<=
น้ อยกว่า
หรือเท่ากับ
$a <= $b
ให้ค่า True เมื่อ $a มีค่ามากกว่าหรือเท่ากับ $b
>=
หรือเท่ากับ
มากกว่า
$a >= $b
ให้ค่า True เมื่อ $a มีค่าน้ อยกว่าหรือเท่ากับ $b
== === != หรือ <> !==
(identical)
คําอธิบาย
เป็ นข้อมูลชนิ ดเดียวกัน
ให้ค่า True เมื่อ $a มีค่าไม่เท่ากับ $b หรือเมื่อ เป็ นข้อมูลคนละชนิ ดกัน
121
4.3.10 ตัวดําเนินการทางตรรกะ ตัวดําเนิ นการตรรกะ (logical operator) เป็ นตัวดําเนิ นการที่ใช้เชื่อมความสัมพันธ์ระหว่างค่าของ ตัวแปรที่เกิดขึ้นจากตัวดําเนิ นการสัมพันธ์ โดย
ถ้าความสัมพันธ์สอดคล้องกันผลลัพธ์ท่ไี ด้ จะมีค่าเท่ากับ True หรือมีค่าทางตรรกะเท่ากับ 1
ถ้าความสัมพันธ์ไม่สอดคล้องกันผลลัพธ์ท่ไี ด้ จะมีค่าเท่ากับ False หรือมีค่าทางตรรกะเท่ากับ 0
ตัวดําเนิ นการตรรกะที่ใช้ในโปรแกรม PHP มีดังนี้ ตัวดําเนินการ && หรือ and
|| หรือ or
ชื่อ และ
หรือ
ตัวอย่าง $a && $b
คําอธิบาย ให้ค่า True ก็ต่อเมื่อ $a และ $b เป็ นจริงทัง้ คู่ (และในทางตรงกันข้าม)
ให้ค่า True เมื่อ $a หรือ $b ตัวใดตัวหนึ่ งเป็ นจริง
$a || $b
หรือเป็ นจริงทัง้ สองตัว มิฉะนั ้นจะให้ค่า False (และในทางตรงกันข้าม)
xor
!
exclusive or นิ เสธ
ให้ค่า True เมื่อ $a หรือ $b ตัวใดตัวหนึ่ งเป็ นจริง $a xor $b
เท่านั ้น แต่จะให้ค่า False เมื่อทัง้ สองตัวเป็ นจริง หรือเท็จ เหมือนกัน
!$a
ให้ค่าตรงกันข้ามกับ $a ถ้า $a เป็ นจริงจะได้ค่า False แต่ถา้ $a เป็ นเท็จจะได้ค่า True
4.3.11 การทดสอบเงื่อนไข การทดสอบเงื่อนไขมีความจําเป็ นมากสําหรับการเขียนโปรแกรมคอมพิวเตอร์ท่ซ ี บ ั ซ้อน เพื่อให้
โปรแกรมที่เขียนขึ้นมาสามารถทํางานได้ถก ู ต้องตรงตามความต้องการ หนั งสือเล่มนี้จะอธิบาย คําสัง่ ทดสอบเงื่อนไข 2 คําสัง่ คือ คําสัง่ if และ switch ซึ่งมีหลักการใช้งานดังนี้ คําสั่ง if
คําสัง่ if จะทําการทดสอบเงื่อนไขความสัมพันธ์ว่าเป็ นจริงหรือเท็จ โดยมีรูปแบบการใช้งานคือ if (expression) { instruction_1; instruction_n; }
122 กล่าวคือถ้าผลการทดสอบเงื่อนไขในนิ พจน์เป็ นจริง โปรแกรม PHP จะทําคําสั่งทัง้ หมดที่อยู่ระหว่าง เครื่องหมายปี กกาเปิ ด { และเครื่องหมายปี กกาปิ ด } แต่ถ้าผลการทดสอบเป็ นเท็จ โปรแกรม PHP
จะไม่ทําคําสัง่ ทัง้ หมดที่อยู่ระหว่างเครื่องหมายปี กกา { ... } ตัวอย่างเช่น <?php $a=200; if ($a) { echo 'ค่าของ $a คือ : ' .$a; } ?>
ซึ่งให้ผลลัพธ์เป็ น ค่าของ $a คือ : 200 คําสั่ง if ยังสามารถนํ าไปใช้ในการตัดสินใจที่ซับซ้อนมากขึ้นได้ โดยการใช้งานร่วมกับ
คําสัง่ else ซึ่งมีรูปแบบการใช้งานดังนี้
if expression { instructions_set1; } else { instructions_set2; } กล่าวคือโปรแกรม PHP จะทําชุดคําสั่ง instructions_set1 เมื่อผลการทดสอบเงื่อนไขใน นิ พจน์เป็ นจริง แต่จะทําชุดคําสัง่ instructions_set2 ถ้าผลการทดสอบเป็ นเท็จ ตัวอย่างเช่น
<?php $a = 200; $b = 100; if($a < $b){ echo "ค่าของ $a < $b ";
123 }else{ echo "ค่าของ $a > $b "; } ?>
ซึ่งให้ผลลัพธ์เป็ น ค่าของ 200 > 100 นอกจากนี้ในการใช้งานที่มีการตัดสินใจที่ซับซ้อนมากยิ่งขึ้น ผู้ใช้ก็สามารถใช้งานคําสั่ง if
ร่วมกับ elseif ได้ โดยมีรูปแบบการใช้งานดังนี้
if
expression_1 { instructions_set1;
} elseif
expression_2 {
instructions_set2; } else { instructions_set3; }
กล่าวคือถ้าผลการทดสอบเงื่อนไขในนิ พจน์ expression_1 เป็ นจริง โปรแกรม PHP จะทํา
ชุดคําสั่ง instructions_set1 แต่ถ้าผลการทดสอบเป็ นเท็จ โปรแกรม SCILAB ก็จะทํา การทดสอบเงื่อนไขในนิ พจน์ expression_2
ต่อไปทันที โดยถ้าผลการทดสอบในนิ พจน์
expression_2 เป็ นจริง โปรแกรม PHP ก็จะทําชุดคําสั่ง instructions_set2 แต่ถ้า
ผลการทดสอบเป็ นเท็จ ก็จะทําชุดคําสัง่ instructions_set3 คําสั่ง switch
คําสั่ง switch เป็ นการตัดสินใจแบบหลายทางเลือก โดยจะตรวจสอบเงื่อนไขต่างๆ ตามที่กําหนด ถ้าเงื่อนไขใดเป็ นจริงก็จะทําชุดคําสั่งที่อยู่ภายในเงื่อนไขนั ้น แล้วจึงออกจากคําสั่ง switch รูปแบบ การใช้งานคําสัง่ switch มีดังนี้
124
switch case
(var)
{
value1:
instructions_set1; break; case
value2:
instructions_set2; break; default: instructions_set3; break; }
นั่ นคือเริ่มต้นคําสัง่ switch จะตรวจสอบเงื่อนไขว่าตัวแปร var มีค่าเท่ากับเท่าใด (ตามที่กําหนด
ใน case) เช่น ถ้า var = value1 โปรแกรม PHP จะทําชุดคําสัง่ instructions_set1 และถ้า var = value2 ก็จะทําชุดคําสั่ง instructions_set2 แต่ถ้า var มีค่าไม่เท่ากับ ค่าใดๆ ใน case โปรแกรม PHP จะทําชุดคําสัง่ instructions_set3 ตัวอย่างเช่น
<?php $num = 100; switch ( $num ) { case 100 : echo "Number1 = $num"; break; case 50 : echo "Number2 = $num"; break; default : echo "Number3 = $num"; break; } ?>
ซึ่งให้ผลลัพธ์คือ Number1 = 100
125
4.3.12 การทําซํา้ บางครัง้ ในการเขียนโปรแกรมมีความจําเป็ นต้องคํานวณชุดคําสั่งบางอย่างซํา้ เป็ นจํานวนหลายรอบ
ตามที่กําหนด ซึ่งในกรณี นี้การใช้คําสั่งวนซํา้ จึงมีความจําเป็ นมาก โดยโปรแกรม PHP ได้เตรียม คําสั่งสําหรับการวนซํา้ ไว้อยู่ 3 คําสั่งคือ คําสัง่ for, while และ do-while ซึ่งมีหลักการใช้ งานดังนี้
คําสั่ง for คําสัง่ for เหมาะสําหรับการใช้งานที่ต้องการให้โปรแกรมทําซํา้ ชุดคําสัง่ เดิมที่อยู่ภายในลูป (loop)
เป็ นจํานวนรอบตามที่กําหนดไว้ในนิ พจน์ (expression) โดยมีรป ู แบบการใช้งานดังนี้
for (ค่าเริ่มต้น; ค่าสิน ้ สุด; ค่าสะสม) { instruction_1; instruction_n; }
กล่าวคือโปรแกรมจะทําซํา้ คําสัง่ (instruction) ทัง้ หมดภายในลูปเป็ นจํานวนรอบตามที่กําหนดโดย
ตัวแปรที่เป็ นไปตามเงื่อนไขของนิ พจน์ ตัวอย่างการใช้งานเช่น <?php for($i=1; $i<=5; $i++) { echo "Hello! ".$i."<br>";
//การเชื่อมข้อความกับตัวแปรจะใช้เครื่องหมายจุด .
} ?>
ชุดคําสั่งนี้ หมายความว่าเมื่อเริ่มต้นใช้งาน ตัวแปร $i จะมีค่าเท่ากับ 1 แล้วพิมพ์ผลออกหน้ าจอ เป็ นคําว่า “Hello! 1” และทําการขึ้นบรรทัดใหม่ด้วยคําสั่ง <br> จากนั ้นทําการวนซํา้ โดยใช้ตัว
แปร $i เป็ นตัวนั บจํานวนซํา้ จากค่า 1 เพิ่มขึ้นทีละ +1 จนถึงค่า 5 ซึ่งผลลัพธ์ของการประมวลผล
ชุดคําสัง่ นี้คือ
126
Hello! Hello! Hello! Hello! Hello!
1 2 3 4 5
คําสั่ง while คําสั่ง while มีลักษณะการทํางานคล้ายกับคําสั่ง for เพียงแต่คําสั่ง while จะมีการทดสอบ
เงื่อนไขตามที่กําหนดในนิ พจน์ทุกรอบของการวนซํา้ กล่าวคือถ้าผลการทดสอบให้ค่าตรรกะเป็ นจริง
โปรแกรมจะทําซํา้ ชุดคําสั่งภายในลูปนั ้นต่ออีกหนึ่ งรอบ แต่ถ้าผลการทดสอบให้ค่าตรรกะเป็ นเท็จ โปรแกรมจะยกเลิกการทํางานชุดคําสัง่ ภายในลูปนั ้นทันที คําสัง่ while มีรูปแบบการใช้งานดังนี้
while (expression) { instruction_1; instruction_n; }
ตัวอย่างเช่น <?php $i = 1; while ($i <= 5) { echo "Hello! ".$i ."<br>"; $i++; } ?>
ชุดคําสัง่ นี้ให้ผลลัพธ์เท่ากับตัวอย่างของการใช้คําสั่ง for เพียงแต่การใช้คําสั่ง while ต้องกําหนด ค่าเริ่มต้นของตัวแปร $i ก่อน เพื่อจะได้นําค่า $i มาเปรียบเทียบกับค่า 5 ตามเงื่อนไขที่กําหนด
ดังนั ้นสรุปได้ว่าคําสั่ง while และ for มีลักษณะการทํางานคล้ายกันมาก เพียงแต่คําสั่ง while จะมีการทดสอบเงื่อนไขก่อนตัดสินใจว่าจะสัง่ ให้โปรแกรมทํางานชุดคําสัง่ ภายในลูปหรือไม่
127
คําสั่ง do-while คําสัง่ do-while มีลักษณะการทํางานเหมือนกับคําสัง่ while เพียงแต่คําสัง่ do-while จะทํา
ชุดคําสัง่ ที่กําหนดก่อน แล้วจึงทําการตรวจสอบเงื่อนไขทีหลัง ถ้าเงื่อนไขเป็ นจริงก็จะกลับมาทํางาน ในชุดคําสัง่ เดิมอีกครัง้ ทําเช่นนี้ไปเรื่อยๆ จนกระทัง่ เงื่อนไขจะเป็ นเท็จ รูปแบบการใช้งานคือ
do { instruction_1; instruction_n; } while (expression);
ตัวอย่างเช่น <?php $i = 1; do { echo "Hello! ".$i ."<br>"; $i++; } while ($i <= 5) ?>
ซึ่งจะให้ผลลัพธ์ดังนี้เท่ากับตัวอย่างของการใช้คาํ สัง่ for และ while
4.4 ฟั งก์ชันและการใช้งาน ฟั งก์ชัน (function) คือกลุ่มคําสั่งที่ถูกรวบรวมไว้ด้วยกันเพื่อให้การทํางานตามที่กําหนดหรือสร้าง เป็ นคําสัง่ ใหม่ขึ้นมาใช้งานเพื่อความสะดวกและลดความซํา้ ซ้อนของโปรแกรมหลัก โดยทั่วไป PHP มีฟังก์ชันสองแบบคือ ฟั งก์ชันในตัว (built-in function) ซึ่งเป็ นฟั งก์ชันที่สามารถเรียกใช้ได้ทันที
(เช่น echo, fgets, fopen และ date) และฟั งก์ชันที่ผู้ใช้สร้างขึ้นมา (user-defined function)
ในบทนี้ จะอธิบายวิธีการสร้างฟั งก์ชันใหม่ขึ้นมาใช้งาน การเรียกใช้ฟังก์ชัน และฟั งก์ชัน
สําเร็จ รูป ที่นิย มใช้งาน ให้พิจ ารณาตัวอย่างต่อไปนี้ สําหรับการเขียนโปรแกรมแบบสร้างฟั งก์ชัน
ขึ้นมาใช้งาน
128 <?php hello("Hello", 2); hello("Project", 3); function hello($txt, $n) { for($i=1; $i<=$n; $i++) { echo "$txt $i <br>"; } } ?>
โปรแกรมนี้ จะมีการสร้างฟั งก์ชัน hello ขึ้นมา ซึ่งจะแสดงผลข้อความ $txt เป็ นจํานวน $n ครัง้ ออกหน้ าจอ ซึ่งผลลัพธ์ของโปรแกรมนี้คือ
Hello! 1 Hello! 2 Project! 1 Project! 2 Project! 3
จะเห็นได้ว่าการสร้างฟั งก์ชันขึ้นมาใช้งานทําให้สามารถแสดงผลซํา้ กันได้ด้วยคําสั่งเพียง
คําสั่งเดียว เช่น ต้องการให้แสดงคําว่า Hello จํานวน 2 ครัง้ และ Project จํานวน 3 ครัง้
ก็ใช้เพียงคําสั่ง hello("Hello", 2) และ hello("Project", 3) มิฉะนั ้นจะต้องเขียน
คําสัง่ แสดงผลลัพธ์ซาํ้ หลายๆ ครัง้ ดังนี้ <?php echo "Hello 1"; echo "Hello 2"; echo "Project 1"; echo "Project 2"; echo "Project 3"; ?>
129
4.4.1 การสร้างฟั งก์ชัน ถ้าต้องการสร้างฟั งก์ชันใหม่ขึ้นมาใช้งานในโปรแกรม PHP โดยมีลักษณะการทํางานเหมือนกับ
ฟั งก์ชันในตัว กล่าวคือมีการส่งผ่านค่าของตัวแปรต่างๆ ไปให้กับฟั งก์ชัน จากนั ้นฟั งก์ชันก็จะนํ าค่า
ของตัวแปรเหล่านี้ มาประมวลผลตามคําสั่งที่มีอยู่ภายในตัวฟั งก์ชัน แล้วก็ส่งผลลัพธ์ท่ีได้ออกมาจาก
ตัวฟั งก์ชัน ข้อดีของการสร้างฟั งก์ชันใหม่คือ ช่วยทําให้การดูแลแก้ไขโปรแกรมทําได้ง่ายขึ้น (เช่น
เมื่อต้องการแก้ไขชุดคําสั่งบางอย่างในโปรแกรม ถ้าสร้างเป็ นฟั งก์ชันก็สามารถแก้ไขได้โดยง่ายเพียง
จุดเดียว แต่ถ้าไม่มีการสร้างฟั งก์ชันก็ต้องแก้ไขให้ครบทุกจุดที่มีการใช้งานชุดคําสั่งนั ้น ซึ่งอาจเกิด ข้อผิดพลาดได้ง่าย) ดังนั ้นในส่วนนี้จะอธิบายการสร้างฟั งก์ชันลักษณะต่างๆ ดังนี้
ฟั งก์ชันที่ไม่มีการรับค่าอินพุต ฟั งก์ชันที่ไม่มีการรับค่าอินพุตจะมีรูปแบบคือ
function FuncName() { instruction_set; }
ตัวอย่างเช่น พิจารณาโปรแกรมคํานวณพื้นที่ส่เี หลี่ยมผืนผ้า (แบบไม่รับค่าอินพุต) ดังนี้ <?php area(); function area() { $a=3;
$b=5;
echo $a * $b; } ?>
ซึ่งจะพบว่าฟั งก์ชัน area ไม่มีการรับค่าอินพุต แต่จะกําหนดค่าให้กับตัวแปรอยู่ภายในฟั งก์ชัน เพราะฉะนั ้นฟั งก์ชันแบบนี้จะเป็ นฟั งก์ชันที่ไม่ยืดหยุ่นในการใช้งาน
ฟั งก์ชันที่มีการรับค่าอินพุต ฟั งก์ชันที่มีการรับค่าอินพุตจะมีรป ู แบบคือ
130
function FuncName(input1, ..., inputN) { instruction_set; }
จะเห็นได้ว่าฟั งก์ชันแบบนี้ มีการรับค่าตัวแปรอินพุต input1 ถึง inputN เข้าไปประมวลผลใน ชุด คําสั่ง instruction_set ตัวอย่างเช่น พิจารณาโปรแกรมคํานวณพื้น ที่สี่เหลี่ย มผืน ผ้า (แบบรับค่าอินพุต) ดังนี้
<?php echo area(5, 10); function area($a, $b) { return $a * $b; } ?>
ในที่นี้ฟังก์ชัน area จะรับค่าตัวแปรอินพุต $a และ $b เข้าไปคํานวณหาค่าพื้นที่ส่ีเหลี่ยมและ
ส่งผลลัพธ์ท่ีได้กลับด้วยคําสั่ง return นอกจากนี้ การแสดงผลลัพธ์ของฟั งก์ชันสามารถใช้คําสั่ง แสดงผล (echo หรือ print) ตามด้วยชื่อฟั งก์ชันที่ระบุค่าอาร์กิวเมนต์ได้เลย
4.4.2 ฟั งก์ชน ั ที่เกี่ยวกับสายอักขระ โดยทัว่ ไปการสร้างเว็บไซต์เพื่อติดต่อกับ SCILAB จะใช้ฟังก์ชันที่เกี่ยวข้องกับการจัดการสายอักขระ จํานวนมาก เนื่ องจากการแสดงผลลัพธ์ท่ีส่งมาจากโปรแกรม SCILAB จะมีรูปแบบไม่คงที่และไม่
สามารถนํ ามาแสดงผลบนเว็บเพจได้ทันที จําเป็ นต้องมีการจัดรูปแบบให้เหมาะสมก่อน ในที่นี้จะ อธิบายเฉพาะฟั งก์ชันที่น่าสนใจและเกี่ยวข้องกับการใช้งานร่วมกับ SCILAB ดังนี้
ฟั งก์ชัน strlen ฟั งก์ชัน strlen ใช้หาความยาวของสายอักขระ (string) หรือนั บจํานวนตัวอักษรในสายอักขระ (นั บช่องว่างเป็ น 1 ตัวอักษรด้วย) โดยรูปแบบการใช้เรียกงานคือ strlen("สายอักขระ")
131 ตัวอย่างเช่น <?php echo strlen("Hello world!"); ?>
จะให้ผลลัพธ์เท่ากับ 12 (นั่ นคือมีตัวอักษรทัง้ หมด 12 ตัว)
ฟั งก์ชัน explode ฟั งก์ชัน explode ใช้แยกสายอักขระออกเป็ นสายอักขระย่อยๆ ด้วยการกําหนดสายอักขระหรือ สัญลักษณ์ท่จี ะใช้แยก ผลลัพธ์ท่ไี ด้จะถูกเก็บอยู่ในรูปแบบของอาร์เรย์ รูปแบบการใช้เรียกงานคือ explode("สัญลักษณ์ท่ใี ช้แยก", "สายอักขระ") ตัวอย่างเช่น <?php $str = "Hello world."; print (explode(" ", $str)); ?>
ในที่นี้จะใช้ช่องว่าง (space) ในการแบ่งแยกสายอักขระ ซึ่งผลลัพธ์ท่ไี ด้คือ อาร์เรย์[0] จะเก็บค่า เท่ากับ "Hello" และอาร์เรย์[1] จะเก็บค่าเท่ากับ "world."
ฟั งก์ชัน implode หรือ join ฟั งก์ชันนี้จะทํางานตรงกันข้ามกับฟั งก์ชัน explode กล่าวคือเป็ นการนํ าสายอักขระย่อยมารวมกัน เป็ นสายอักขระเดียว ตามสัญลักษณ์ท่ใี ช้รวม รูปแบบการใช้เรียกงานคือ
implode("สัญลักษณ์ท่ใี ช้รวม", "อาร์เรย์ของสายอักขระ") ตัวอย่างเช่น
132 <?php $arr = array('Hello', 'World!', 'SCILAB', '&', 'PHP!'); echo implode(" ", $arr); ?>
ในที่นี้จะใช้ช่องว่างในการรวมสายอักขระแต่ละตัวที่อย่ใู นอาร์เรย์ ซึ่งจะให้ผลลัพธ์คือ Hello World! SCILAB& PHP!
ฟั งก์ชัน strstr ฟั งก์ชัน strstr ใช้ตัดเอาเฉพาะสายอักขระที่เริ่มต้นด้วยสายอักขระย่อยที่กําหนดจนถึงตัวอักษร สุดท้ายของสายอักขระต้นฉบับ รูปแบบการใช้เรียกงานคือ
strstr("สายอักขระย่อย", "สายอักขระต้นฉบับ") ตัวอย่างเช่น <?php echo strstr("Hello world!", "w"); ?>
ชุดคําสัง่ นี้จะตัดเอาสายอักขระที่เริ่มต้นด้วยตัวอักษร "w" จนถึงตัวอักษรสุดท้ายของคําว่า "Hello world!" เพราะฉะนั ้นในที่นี้จะได้ผลลัพธ์คือ
world!
ฟั งก์ชัน substr ฟั งก์ชัน substr ใช้ตด ั สายอักขระเหมือนกับฟั งก์ชัน strstr แต่สามารถกําหนดความยาวของ สายอักขระที่ต้องการได้ โดยมีรป ู แบบการใช้เรียกงานคือ
substr("สายอักขระต้นฉบับ", ตําแหน่ งเริ่มต้น, จํานวนตัวอักษรที่ต้องการ)
133 ตัวอย่างเช่น <?php echo substr("Hello world!", 6, 5); ?>
ชุดคําสั่งนี้ จะตัดเอาตัวอักษรลําดับที่ 6 จนถึงลําดับที่ 11 (รวม 5 ตัวอักษร) จากคําว่า "Hello world!" ดังนั ้นในที่นี้จะได้ผลลัพธ์คือ
world
ฟั งก์ชัน ltrim, rtrim และ trim ฟั งก์ชันนี้ใช้สําหรับการตัดช่องว่างที่อยู่ด้านซ้าย ด้านขวา และทัง้ สองข้างของสายอักขระออกทัง้ หมด มีรูปแบบการเรียกใช้งานคือ
ltrim("สายอักขระ") rtrim("สายอักขระ") trim("สายอักขระ")
ตัวอย่างเช่น <?php $str = " Hello "; echo ltrim($str)."<br>"; echo rtrim($str)."<br>"; echo trim($str)."<br>"; ?>
ซึ่งจะให้ผลลัพธ์คือ "Hello "
"
Hello"
" Hello
"
134
ฟั งก์ชัน stripslashes ในการส่งข้อมูลผ่านทางฟอร์มภาษา PHP หรือเพิ่มข้อมูลลงในฐานข้อมูล ตัวอักษรบางประเภท เช่น
เครื่องหมายอัญประกาศ ("..."), อัญประกาศเดี่ยว ('...') และค่า NULL จะถูกใส่ด้วยเครื่องหมาย
ทับกลับ (backslash) เพื่อให้ระบุความหมายในการเก็บข้อมูล ดังนั ้นในการนํ าข้อมูลเหล่านี้ มาใช้
งาน จึงจําเป็ นต้องตัดเครื่องหมายทับกลับออกจากข้อมูลก่อน โดยใช้ฟังก์ชัน stripslashes ดังนี้
stripslashes("สายอักขระ") ตัวอย่างเช่น echo stripslashes('H\xa0ello');
ฟั งก์ชันนี้จะทําการตัดเครื่องหมายทับกลับออก และแสดงข้อความ “Hxa0ello” เท่านั ้น
4.4.3 ฟั งก์ชน ั ที่เกี่ยวกับตัวเลข ในทางปฏิบัติผลลัพธ์ท่ีได้จากการคํานวณด้วยโปรแกรม SCILAB บางครัง้ ไม่สามารถนํ าไปใช้ได้
ทันที เพราะอาจอยู่ในรูปแบบของรหัสไบนารีหรือแอสกี ดังนั ้นจึงจําเป็ นต้องจัดรูปแบบของผลลัพธ์
ที่เป็ นตัวเลขเหล่านี้ ก่อนที่จะนํ าไปแสดงผล ใน PHP มีฟังก์ชันที่ใช้ในการจัดรูปแบบของตัวเลขมี
หลายฟั งก์ชัน ซึ่งในที่นี้จะกล่าวเฉพาะฟั งก์ชันสําคัญๆ ที่ใช้ในการทํางานร่วมกับโปรแกรม SCILAB
เท่านั ้น
ฟั งก์ชัน number_format ฟั งก์ชัน number_format มีรูปแบบการเรียกใช้งานดังนี้
number_format(Fnum [, Dum ]) หรือ number_format(Fnum, Dnum, Dpoint, Ssep)
135 เมื่อ Fnum คือเลขจํานวนจริง, Dnum คือเลขจํานวนเต็มที่ใช้กําหนดจํานวนตัวเลขหลังจุดทศนิ ยม,
Dpoint คือเครื่องหมายที่แทนจุดทศนิ ยม, และ Ssep คือเครื่องหมายที่ใช้แยกหลักพัน เช่น <?php $num = 2553.500; echo number_format($num, 2, ".", "," ); ?>
จะให้ผลลัพธ์เท่ากับ 2,553.50 (มีเลขหลังจุดทศนิ ยมเพียงสองตําแหน่ ง)
4.5 การจัดการไฟล์ ในส่วนนี้จะอธิบายการสร้างไฟล์ การอ่านไฟล์ การลบไฟล์ และการใช้งานโปรแกรมภายนอก ดังนี้
4.5.1 การสร้างไฟล์ การสร้างไฟล์สําหรับเขียนไฟล์สคริปต์ของโปรแกรม SCILAB put_contents ซึ่งมีรูปแบบการใช้งานดังนี้
ทําได้โดยอาศัยฟั งก์ชัน file_
file_put_contents(filename, data)
โดย filename คือชื่อไฟล์ที่ต้องการสร้าง (ระบุที่อยู่ของไฟล์ด้วย) และ data คือข้อมูลสาย อักขระที่ต้องการเขียนลงในไฟล์ ตัวอย่างเช่น
echo file_put_contents("test.txt", "This is test file");
จะให้ผลลัพธ์เป็ นไฟล์ test.txt ในสารบบที่กําลังใช้งาน โดยมีขอ ้ ความ This is test file ปรากฏอยู่ในไฟล์ test.txt
4.5.2 การอ่านไฟล์ การอ่านไฟล์ออกมาเป็ นสายอักขระเพื่อนํ าค่ามาแสดงในฟอร์มหรือหน้ าเว็บไซต์นั้น สามารถทําได้ โดยใช้ฟังก์ชัน file_get_contents ซึ่งมีรูปแบบการใช้งานคือ
136
file_get_contents(filename)
เมื่อ filename คือชื่อไฟล์ท่ต ี อ ้ งอ่านข้อมูล ตัวอย่างเช่น echo file_get_contents("test.txt");
จะให้ผลลัพธ์เป็ นข้อมูลที่อยู่ในไฟล์ test.txt ในสารบบที่กาํ ลังใช้งาน
4.5.3 การลบไฟล์ การลบไฟล์ใน PHP จะใช้ฟังก์ชัน unlink ซึ่งมีรูปแบบการใช้งานคือ
unlink(filename)
โดยถ้าการลบไฟล์สําเร็จจะให้ผลลัพธ์เป็ นค่าบูลีน True แต่ถ้าไม่สําเร็จก็จะให้ผลลัพธ์เป็ น False
4.5.4 การใช้งานโปรแกรมภายนอก การเรียกใช้ (หรือสั่งประมวลผล) โปรแกรมภายนอกทําได้ด้วยการใช้ฟังก์ชัน exec, system หรือ shell_exec ซึ่งมีลักษณะการทํางานคล้ายกัน แต่จะใช้งานแตกต่างกันเพื่อความสะดวก
ในการใช้งานและตรงตามรูปแบบของผลลัพธ์ท่ีต้องการ ในที่นี้จะอธิบายเพียงฟั งก์ชัน exec เท่านั ้น
ซึ่งมีรูปแบบการใช้งานคือ
exec($command [, array & $output [, int & $return_var]] ); เมื่อ $command คือคําสั่งที่ต้องการใช้งาน, $output คือตัวแปรที่ใช้เก็บค่าของผลลัพธ์ท่ีได้จาก คําสัง่ $command, และ return_var คือค่าที่คําสัง่ $command ให้คืนกลับมา ตัวอย่างเช่น
<?php exec(test.sci, $output); print_r($output); ?>
//การแสดงค่าที่เป็ น array ต้องใช้คําสัง่ print_r แทน echo
137 ชุดคําสัง่ นี้จะประมวลผลไฟล์ของโปรแกรม SCILAB ที่ช่ อ ื ว่า test.sci แล้วนํ าผลลัพธ์ท่อ ี ยู่ใน
รูปของอาร์เรย์ไปเก็บไว้ในตัวแปร output จากนั ้นจึงนํ ามาแสดงผลด้วยคําสัง่ print_r
4.6 สรุปท้ายบท บทนี้ ได้สรุปประวัติความเป็ นมาของภาษา PHP โครงสร้างทั่วไป คําสั่งพื้นฐานของภาษา PHP และการจั ด การไฟล์ ซึ่ งจะเป็ น แนวทางในการนํ าไปประยุ ก ต์ ใ ช้ง านร่ว มกั บ โปรแกรม SCILAB สําหรับใช้สร้างสื่อการเรียนการสอนที่จะอธิบายในบทต่อไป
4.7 แบบฝึ กหัดท้ายบท 1. จงอธิบายการใช้งานคําสัง่ stripslashes มาพอสังเขป 2. จงอธิบายการใช้งานคําสั่ง file_put_contents(), file_get_contents() และ unlink()มาพอสังเขป
3. จงเขียนโปรแกรมบวกเลข 1 ถึง 100 โดยใช้คําสัง่ for 4. จงเขียนโปรแกรมตัดเกรดจํานวน 4 เกรด คือ A, B, C และ D
138
139
บทที่ 5 การสร้างสื่อการสอนผ่านเว็บไซต์ ในบทนี้ จะแสดงตัวอย่างวิธีการสร้างสื่อการสอนผ่านเว็บไซต์โดยใช้โปรแกรมภาษา PHP ร่วมกับ โปรแกรม SCILAB ซึ่งประกอบด้วยการบวก/ลบ/คูณ/หาร ของเลขสองจํานวน การหาดีเทอร์ มิแนนต์และอินเวอร์สของเมทริกซ์ การพิสูจน์ สมบัติของเมทริกซ์ การหาค่าลอการิทึมฐานใดๆ
การบวกและลบสมการพหุนาม และการวาดกราฟสองมิติ เพื่อเป็ นแนวทางให้ผู้อ่านสามารถนํ าไป พัฒนาต่อยอดหรือประยุกต์ใช้งานด้านอื่นได้
ก่อ นการเขีย นโปรแกรม PHP เพื่ อ ติด ต่อ กับ โปรแกรม SCILAB ผู้ใ ช้จ ะต้อ งติด ตั ง้
โปรแกรม SCILAB ที่สารบบ C:\Windows\ และสร้างโฟลเดอร์ช่ ือว่า phptoscilab ไว้ในสารบบ
C:\AppServ\www เพื่อเก็บไฟล์ตัวอย่าง PHP นอกจากนี้ การเขียนโปรแกรมด้วยภาษา PHP ใน
บางตัวอย่างอาจมีรูปแบบที่ซับซ้อน ดังนั ้นในที่นี้จะใช้โปรแกรมสําเร็จรูป Adobe Dreamwaver มา ช่วยในการออกแบบฟอร์มต่างๆ เพื่อความสะดวกและรวดเร็วมากขึ้น
5.1 การบวก/ลบ/คูณ/หาร ของเลขสองจํานวน ในส่วนนี้จะแสดงการสร้างสื่อการสอนผ่านเว็บไซต์ เพื่อใช้สําหรับการบวก ลบ คูณ และหาร ของ
เลขสองจํานวน ดังต่อไปนี้
1) เปิ ดโปรแกรม Adobe Dreamweaver CS 5.5 และออกแบบหน้ าเว็บไซต์ตามรูปที่ 5.1 2) ไปที่เมนู Create New เพื่อสร้างไฟล์ PHP ขึ้นมา ตามรูปที่ 5.2 3) กดเลือกที่กล่องเมนู INSERT → Forms ตามรูปที่ 5.3 4) กดเลือกที่เครื่องมือ Forms และใส่ช่ อ ื เว็บเพจ calculator.php ที่ต้องการส่งข้อมูล (ในที่นี้คือ เว็บเพจของตนเอง) ซึ่งรูปแบบการส่งข้อมูลมีอยู่ 2 รูปแบบคือ
140
รูปที่ 5.1 ฟอร์ม (หน้ าเว็บไซต์) สําหรับการบวก ลบ คูณ และหาร ของเลขสองจํานวน
รูปที่ 5.2 การสร้างไฟล์ PHP
รูปที่ 5.3 การเลือกเครื่องมือที่เกี่ยวกับฟอร์ม (Forms)
POST คือรูปแบบการส่งข้อมูลของฟอร์มแบบไม่มีข้อจํากัดขนาดของข้อมูล ซึ่งจะไม่แสดง ข้อมูลให้เห็น เหมาะกับข้อมูลที่ต้องการความปลอดภัย โดยจะใช้ควบคู่กับคําสัง่ $_POST
141
รูปที่ 5.4 การใส่ช่ อ ื เว็บเพจ calculator.php ในฟอร์มสําหรับรูปที่ 5.1
รูปที่ 5.5 การเลือกเครื่องมือสําหรับสร้างตาราง (Table)
GET คือรูปแบบการส่งข้อมูลของฟอร์มแบบผ่านทาง URL ทําให้ผู้ใช้สามารถมองเห็น ข้อมูลที่ส่งไปได้ เหมาะกับข้อมูลที่เป็ น keyword ในการค้นหา
อย่างไรก็ตามบทนี้จะใช้เฉพาะวิธี POST ตามที่แสดงในรูปที่ 5.4 5) เริ่มสร้างตารางโดยการกดเลือกที่กล่องเมนู INSERT → Common และเลือกเครื่องมือ Table ตามรูปที่ 5.5
142
รูปที่ 5.6 การตัง้ ค่าตารางสําหรับรูปที่ 5.1
รูปที่ 5.7 การเลือกเครื่องมือ Text Field และ Button
6) กําหนดค่าพารามิเตอร์ต่างๆ ของตารางดังนี้ (แสดงผลลัพธ์ดังรูปที่ 5.6) Rows
เท่ากับ 1
Table width
เท่ากับ 31 percent
Columns
Border thickness Cell padding
Cell spacting
เท่ากับ 4
เท่ากับ 0 pixels เท่ากับ 4 เท่ากับ 4
7) กดที่กล่องเมนู INSERT → Forms ในรูปที่ 5.3 และเลือกเครื่องมือ Text Field และ Button ตามรูปที่ 5.7
143 ตารางที่ 5.1 การกําหนดค่าพารามิเตอร์ของ Text Filed และ Button ในรูปที่ 5.8 อ็อบเจกต์
ชื่อ
คุณสมบัติ
ค่าที่กําหนด
Text Field
a1
Char width = 2
<? echo $a1; ?>
Text Field
b1
Char width = 2
<? echo $b1; ?>
Button
submit
-
+ (บวก)
Button
submit
-
- (ลบ)
Button
submit
-
× (คูณ)
Button
submit
-
/ (หาร)
Table
สีเหลือง = #FFFF00 ,สีเขียว = #00CC66, สีนํ้าตาลอ่อน = #FF9966
รูปที่ 5.8 การใส่รายละเอียดเว็บเพจที่สมบูรณ์
รูปที่ 5.9 การเลือกเมนู Code
8) กําหนดค่าพารามิเตอร์ของ Text Filed, Button และใส่สีต่างๆ ตามตารางที่ 5.1 จะได้ผลลัพธ์ ตามรูปที่ 5.8
9) กดเลือกในส่วนของเมนู Code เพื่อทําการเขียนโปรแกรมภาษา PHP ตามรูปที่ 5.9 ทําการ บันทึกโปรแกรมในชื่อไฟล์ “calculator.php” ไว้ในสารบบ C:\AppServ\www\phptoscilab
144 โค้ดของการบวก/ลบ/คูณ/หาร ของเลขสองจํานวน 1 2
<?php
if($_POST["submit"]=="+ (บวก)") {
3 4 5 6
$cal = "+"; }
elseif ($_POST["submit"]=="- (ลบ) ") { $cal = "-";
7
}
8
elseif ($_POST["submit"]=="x (คูณ) ") {
9
$cal = "*";
10
}
11
elseif($_POST["submit"]=="/ (หาร) ") {
13
}
14
if($_POST[a1]!="" and $_POST[b1]!="") {
12
15 16
//ตรวจสอบค่าของ submit
$cal = "/";
$code = "int16([".stripslashes($_POST[a1])."$cal".stripslashes($_POST[b1])."])"; $code1 = "output = $code;\noutput = iconvert(output,0);
\nsavematfile('cal.txt','output');\nexit;";
17
file_put_contents("cal.sce", $code1);
//สร้างไฟล์ช่ อ ื cal.sce
18
$path=$_SERVER["SystemRoot"];
//สร้างตัวแปรที่อยู่ของวินโดวส์
19 20
$com = "$path/scilab-4.1.2/bin/Scilex.exe -nwni -nb -f cal.sce"; //สร้างตัวแปร สําหรับสัง่ ประมวลผลไฟล์สคริปต์ exec($com);
21 22 23
//ประมวลผลไฟล์สคริปต์
$output = number_format(file_get_contents("cal.txt"));
//อ่านไฟล์ผลลัพธ์
}
?>
หมายเหตุ โค้คทัง้ หมดนี้จะเขียนอย่บ ู นสุดของโค้ดภาษา HTML 10) ทดสอบการทํางานของโปรแกรมโดยการเปิ ดโปรแกรมค้นดูหรือเบราว์เซอร์ (browser) เช่น
internet explorer (IE) จากนั ้นพิมพ์ URL คือ http://127.0.0.1/phptoscilab/calculator.php และทําการป้ อนข้อมูลดังนี้ A เท่ากับ 5 และ B เท่ากับ 5 และกดป่ ุม + (บวก) 1 ครัง้ ก็จะได้
ผลลัพธ์ตามรูปที่ 5.10 ในทํานองเดียวกันถ้ากดป่ ุม “× (คูณ)” หนึ่ งครัง้ ก็จะได้ผลลัพธ์
เท่ากับ 25
145
รูปที่ 5.10 ทดสอบการบวกเลขสองจํานวน
5.2 การหาดีเทอร์มิแนนต์และอินเวอร์สของเมทริกซ์ ในที่นี้จะแสดงการหาดีเทอร์มิแนนต์และอินเวอร์สของเมทริกซ์ขนาด 2×2 และ 3×3 โดยจะสร้าง
หน้ าเพจเป็ น 3 หน้ าดังนี้
หน้ าเพจกําหนดขนาดของเมทริกซ์ หน้ าเพจสําหรับหาดีเทอร์มิแนนต์และอินเวอร์สของเมทริกซ์ขนาด 2×2 หน้ าเพจสําหรับหาดีเทอร์มิแนนต์และอินเวอร์สของเมทริกซ์ขนาด 3×3
5.2.1 หน้ าเพจกําหนดขนาดของเมทริกซ์ การสร้างหน้ าเพจกําหนดขนาดของเมทริกซ์ทําได้ดังนี้ 1) เปิ ดโปรแกรม Adobe Dreamweaver CS 5.5 และออกแบบหน้ าเว็บไซต์ตามรูปที่ 5.11 2) ไปที่เมนู Create New เพื่อสร้างไฟล์ PHP ขึ้นมา (ตามรูปที่ 5.2) 3) กดเลือกที่กล่องเมนู INSERT → Forms (ตามรูปที่ 5.3) 4) กดเลือกที่เครื่องมือ Forms และใส่ช่ ือเว็บเพจ menuinvdet.php ที่ต้องการส่งข้อมูล (ในที่นี้ คือเว็บเพจของตนเอง) ตามที่แสดงในรูปที่ 5.12
5) เริ่มสร้างตารางโดยการกดเลือกที่กล่องเมนู INSERT → Common และเลือกเครื่องมือ Table (ตามรูปที่ 5.5)
146
รูปที่ 5.11 หน้ าเพจเลือกขนาดเมทริกซ์ 2×2 หรือ 3×3
รูปที่ 5.12 การใส่ช่ อ ื เว็บเพจ menuinvdet.php ในฟอร์มสําหรับรูปที่ 5.11
6) กําหนดค่าพารามิเตอร์ต่างๆ ของตารางดังนี้ (แสดงผลลัพธ์ดังรูปที่ 5.13) Rows:
เท่ากับ 1
Table width:
34 percent
Columns:
เท่ากับ 1
Border thickness: 1 pixels
147
รูปที่ 5.13 การตัง้ ค่าตารางสําหรับรูปที่ 5.11
รูปที่ 5.14 การใช้เครื่องมือ Button สร้างป่ ุม
Cell padding
=
Height
=
bordercolor
=
4
Cell spacting =
4
bgcolor
"#CCCCCC"
=
116
"#333333"
7) กดที่กล่องเมนู INSERT → Forms (ตามรูปที่ 5.3) และเลือกเครื่องมือ Button เพื่อสร้าง ป่ ุม 2×2 และป่ ุม 3×3 ดังแสดงในรูปที่ 5.14
8) กดเลือกในส่วนของเมนู Code เพื่อทําการเขียนโปรแกรมภาษา PHP เพื่อเชื่อมโยงไปยังหน้ า เพจการหาดีเทอร์มิแนนต์และอินเวอร์สของเมทริกซ์ขนาด 2×2 และ 3×3 (ตามรูปที่ 5.9) และบันทึกโปรแกรมในชื่อ “menuinvdet.php” ไว้ในสารบบ C:\AppServ\www\phptoscilab
148 โค้ดของหน้ าเพจกําหนดขนาดของเมทริกซ์ 1 2 3 4 5 6
<?php
ob_start();
//โค้ดในส่วนของภาษา PHP ที่ทํางานร่วมกับโปรแกรม SCILAB
if($_POST["submit"]=="
2x2
") {
header('location:invdet2x2.php');
}elseif($_POST["submit"]=="
3x3
//ตรวจสอบค่าของ submit ") {
header('location:invdet3x3.php');
//ข้ามไปหน้ า invdet2x2.php //ข้ามไปหน้ า invdet3x3.php
7
}
8
?>
9
<html>
11
<meta http-equiv="Content-Type" content="text/html; charset=windows-874" />
13
</head>
14
<body>
10 12
15 16 17 18 19 20
<head>
<!--โค้ดในส่วนของภาษา HTML-->
<title>การหาดีเทอร์มิแนนต์และอินเวอร์สของเมทริกซ์ขนาด 2×2 และ 3×3</title>
<form id="form1" name="form1" method="post" action="menuinvdet.php"> <table width="34%" border="1" cellpadding="4" cellspacing="4" bordercolor=
"#333333" bgcolor="#CCCCCC"> <tr>
<td width="20%" height="116" valign="middle"> <div align="center">เมทริกซ์ขนาด<br><br>
21
<input name="submit" type="submit" id="Submit" value="
2×2
" />
23
<input name="submit" type="submit" id="Submit" value="
3×3
" />
22
&nbsp;&nbsp;
24
<br>
26
</div></td>
25
<br>
27
</tr>
28
</table>
29
</form>
31
</html>
30
</body>
149
a1
a2
a3
a4 output ดีเทอร์มิแนนต์
out1 out3
อินเวอร์ส
out2 out4
รูปที่ 5.15 หน้ าเพจของการหาดีเทอร์มิแนนต์และอินเวอร์สของเมทริกซ์ขนาด 2×2
รูปที่ 5.16 รูปแบบตารางของเมทริกซ์ขนาด 2×2 ที่ใช้ในรูปที่ 5.15
5.2.2 หน้ าเพจสําหรับหาดีเทอร์มิแนนต์และอินเวอร์สของเมทริกซ์ขนาด 2×2 การสร้างหน้ าเพจสําหรับการหาดีเทอร์มิแนนต์และอินเวอร์สของเมทริกซ์ขนาด 2×2 ทําได้ดังนี้ 1) หน้ าเพจสําหรับหาดีเทอร์มิแนนต์และอินเวอร์สของเมทริกซ์ขนาด 2×2 จะถูกออกแบบตาม
รูปที่ 5.15 และการออกแบบตารางตามรูปที่ 5.16 โดยในส่วนของ Action Form ให้ใส่ช่ ือ เว็บเพจ invdet2x2.php ที่ต้องการส่งข้อมูล (ในที่นี้คือเว็บเพจของตนเอง) ตามรูปที่ 5.17
150
รูปที่ 5.17 หน้ าเพจของการหาดีเทอร์มิแนนต์และอินเวอร์สของเมทริกซ์ขนาด 2×2 (ต่อ) ตารางที่ 5.2 การกําหนดค่าพารามิเตอร์ของ Text Filed และ Button ในรูปที่ 5.15 อ็อบเจกต์
ชื่อ
คุณสมบัติ
ค่าที่กําหนด
Text Field
a1
Char width = 2
<? echo $a1; ?>
Text Field
a2
Char width = 2
<? echo $a2; ?>
Text Field
a3
Char width = 2
<? echo $a3; ?>
Text Field
a4
Char width = 2
<? echo $a4; ?>
Text Field
output
Char width = 5
<? echo $output; ?>
Text Field
out1
Char width = 5
<? echo number_format($exp1,2,'.',''); ?>
Text Field
out2
Char width = 5
<? echo number_format($exp2,2,'.',''); ?>
Text Field
out3
Char width = 5
<? echo number_format($exp3,2,'.',''); ?>
Text Field
out4
Char width = 5
<? echo number_format($exp4,2,'.',''); ?>
Button
submit
-
ดีเทอร์มิแนนต์
Button
submit
-
อินเวอร์ส
Title bar
-
-
การหาดีเทอร์มิแนนต์และอินเวอร์สของเมทริกซ์ 2×2
2) กําหนดค่าพารามิเตอร์ของ Text Filed, Button และรายละเอียดสีต่างๆ ตามตารางที่ 5.2 ก็จะได้ผลลัพธ์ตามรูปที่ 5.15
151 หมายเหตุ การซ่อนผลลัพธ์ อธิบายโดยถ้าตัวแปร $sta เท่ากับ on1 จริงให้แสดงผลลัพธ์ของดีเทอร์มิแนนต์ ในบรรทัดที่ 45 แต่ถ้าตัวแปรมีค่าเท่ากับ on2 ให้แสดงผลลัพธ์ของอินเวอร์สในบรรทัดที่ 46 - 52
3) เขียนโค้ดภาษา PHP และบันทึกไฟล์ช่ อ ื ว่า “invdet2x2.php” ดังนี้ โค้ดของหน้ าเพจสําหรับหาดีเทอร์มิแนนต์และอินเวอร์สของเมทริกซ์ขนาด 2×2 1
<?php
2
if($_POST["submit"]=="ดีเทอร์มิแนนต์") {
3
$sta = "on1";
5
}elseif($_POST["submit"]=="
6
$cal = "inv";
7 8
}
9
11
//ตรวจสอบค่าของ submit
$cal = "det";
4
10
//โค้ดในส่วนของภาษา PHP ที่ทํางานร่วมกับโปรแกรม SCILAB
อินเวอร์ส
") {
$sta = "on2";
if($_POST[a1]!="" and $_POST[a2]!="" and $_POST[a3]!="" and $_POST[a4]!="") {
//ตรวจสอบค่าว่างของตัวแปร
$code = "[".stripslashes($_POST[a1])." ".stripslashes($_POST[a2]).";".stripslashes
($_POST[a3])." ".stripslashes($_POST[a4])."]";
$code1 = "output = $cal($code);\noutput = iconvert(output,0);\nsavematfile
('invdet2x2.txt','output');\nexit;"; 12
file_put_contents("invdet2x2.sce", $code1);
14
$com = "$path/scilab-4.1.2/bin/Scilex.exe -nwni -nb -f invdet2x2.sce";
13
//สร้างไฟล์สคริปต์
$path=$_SERVER["SystemRoot"];
//สร้างตัวแปรที่อยู่ของวินโดวส์
ตัวแปรสําหรับสัง่ ประมวลผลไฟล์สคริปต์
15
exec($com);
16
$output = number_format(file_get_contents("invdet2x2.txt"));
17 18
//ประมวลผลไฟล์สคริปต์
list($exp1, $exp2, $exp3, $exp4) = explode(" ("invdet2x2.txt"))); }
//สร้าง
//อ่านไฟล์ผลลัพธ์
", trim(file_get_contents
//แยกข้อมูลลงตัวแปร 4 ตัว
19
?>
20
<html>
22
<meta http-equiv="Content-Type" content="text/html; charset=windows-874" />
24
</head>
25
<body>
21 23
<head>
<!--โค้ดในส่วนของภาษา HTML-->
<title>การหาดีเทอร์มิแนนต์และอินเวอร์สของเมทริกซ์ 2×2</title>
152 26 27 28 29 30
<form id="form1" name="form1" method="post" action="invdet2x2.php"> <table width="42%" border="0" cellpadding="4" cellspacing="4" bgcolor="#CCCCCC"> <tr>
<td width="38%" height="78" valign="top" bgcolor="#FFFF00"><div align= "center">เมทริกซ์ A<br>
<input name="a1" type="text" size="2" value="<? echo $a1; ?>" />
31
&nbsp;
33
<br>
32
<input name="a2" type="text" size="2" value="<? echo $a2; ?>" />
34
<input name="a3" type="text" id="a3" value="<? echo $a3; ?>" size="2" />
36
<input name="a4" type="text" id="a4" value="<? echo $a4; ?>" size="2" />
35 37 38 39
&nbsp;
</div></td>
<td width="20%" valign="middle"> <div align="center">
40
<input name="submit" type="submit" id="Submit" value="ดีเทอร์มิแนนต์" />
41
<input name="submit" type="submit" id="Submit" value="
42 43 44 45
</div></td>
อินเวอร์ส
" />
<td width="42%" valign="top" bgcolor="#FF9966"><div align="center"> <p>ผลลัพธ์<br>
<input name="output" type="text" id="output" value="<? echo $output; ?>" size="5" <? if($sta=="on1"){echo "style='display:;'";}else{echo "style='display:none;'";}?> /><br>
46
<input name="out1" type="text" id="out1" value="<? echo number_format($exp1,2,'.',''); ?>"<? if($sta=="on2"){echo
"style='display:;'";}else{echo "style='display:none;'";} ?> size="5" /> 47 48
&nbsp;
<input name="out2" type="text" id="out2" value="<? echo number_format($exp2,2,'.',''); ?>"<? if($sta=="on2"){echo
49 50
"style='display:;'";}else{echo "style='display:none;'";}?> size="5" /> <br>
<input name="out3" type="text" id="out3" value="<? echo number_format($exp3,2,'.',''); ?>"<? if($sta=="on2"){echo
"style='display:;'";}else{echo "style='display:none;'";}?> size="5" /> 51
&nbsp;
153 52
<input name="out4" type="text" id="out4" value="<? echo number_format($exp4,2,'.',''); ?>"<? if($sta=="on2"){echo
"style='display:;'";}else{echo "style='display:none;'";}?> size="5" /> 53 54
</p> </div></td>
55
</tr>
56
</table>
58
</body>
59
</html>
57
</form>
a2 a1
a4 a7
a5
a8
a3 a6
a9
out2
output
out1 out4 out7 ดีเทอร์มิแนนต์
out5 อินเวอร์ส out8
out3 out6 out9
รูปที่ 5.18 หน้ าเพจของการหาดีเทอร์มิแนนต์และอินเวอร์สของเมทริกซ์ขนาด 3×3
5.2.3 หน้ าเพจสําหรับหาดีเทอร์มิแนนต์และอินเวอร์สของเมทริกซ์ขนาด 3×3 การสร้างหน้ าเพจสําหรับการหาดีเทอร์มิแนนต์และอินเวอร์สของเมทริกซ์ขนาด 3×3 ทําได้ดังนี้ 1) หน้ าเพจสําหรับหาดีเทอร์มิแนนต์และอินเวอร์สของเมทริกซ์ขนาด 3×3 จะถูกออกแบบตาม รูปที่ 5.18 และการออกแบบตารางตามรูปที่ 5.19 โดยในส่วนของ Action Form ให้ใส่ช่ อ ื เว็บเพจ invdet3x3.php ที่ต้องการส่งข้อมูล (ในที่นี้คือเว็บเพจของตนเอง) ตามรูปที่ 5.20
154
รูปที่ 5.19 รูปแบบตารางของเมทริกซ์ขนาด 3×3 ที่ใช้ในรูปที่ 5.18
รูปที่ 5.20 หน้ าเพจของการหาดีเทอร์มิแนนต์และอินเวอร์สของเมทริกซ์ขนาด 3×3 (ต่อ)
2) กําหนดค่าพารามิเตอร์ของ Text Filed และ Button ตามตารางที่ 5.3 ก็จะได้ผลลัพธ์ตามรูป ที่ 5.18
155 ตารางที่ 5.3 การกําหนดค่าพารามิเตอร์ของ Text Filed และ Button ในรูปที่ 5.18 อ็อบเจกต์
ชื่อ
คุณสมบัติ
ค่าที่กําหนด
Text Field
a1
Char width = 2
<? echo $a1; ?>
Text Field
a2
Char width = 2
<? echo $a2; ?>
Text Field
a3
Char width = 2
<? echo $a3; ?>
Text Field
a4
Char width = 2
<? echo $a4; ?>
Text Field
a5
Char width = 2
<? echo $a5; ?>
Text Field
a6
Char width = 2
<? echo $a6; ?>
Text Field
a7
Char width = 2
<? echo $a7; ?>
Text Field
a8
Char width = 2
<? echo $a8; ?>
Text Field
a9
Char width = 2
<? echo $a9; ?>
Text Field
output
Char width = 5
<? echo $output; ?>
Text Field
out1
Char width = 5
<? echo number_format($exp1,2,'.',''); ?>
Text Field
out2
Char width = 5
<? echo number_format($exp2,2,'.',''); ?>
Text Field
out3
Char width = 5
<? echo number_format($exp3,2,'.',''); ?>
Text Field
out4
Char width = 5
<? echo number_format($exp4,2,'.',''); ?>
Text Field
out5
Char width = 5
<? echo number_format($exp5,2,'.',''); ?>
Text Field
out6
Char width = 5
<? echo number_format($exp6,2,'.',''); ?>
Text Field
out7
Char width = 5
<? echo number_format($exp7,2,'.',''); ?>
Text Field
out8
Char width = 5
<? echo number_format($exp8,2,'.',''); ?>
Text Field
out9
Char width = 5
<? echo number_format($exp9,2,'.',''); ?>
Button
submit
-
ดีเทอร์มิแนนต์
Button
submit
-
อินเวอร์ส
Title bar
-
-
การหาดีเทอร์มิแนนต์และอินเวอร์สของเมทริกซ์ 3×3
หมายเหตุ การซ่อนผลลัพธ์ อธิบายโดยถ้าตัวแปร $sta เท่ากับ on1 จริงให้แสดงผลลัพธ์ของดีเทอร์มิแนนต์ ในบรรทัดที่ 58 แต่ถ้าตัวแปรมีค่าเท่ากับ on2 ให้แสดงผลลัพธ์ของอินเวอร์สในบรรทัดที่ 59 - 75
3) เขียนโค้ดภาษา PHP และบันทึกไฟล์ช่ อ ื ว่า “invdet3x3.php” ดังนี้ โค้ดของหน้ าเพจสําหรับหาดีเทอร์มิแนนต์และอินเวอร์สของเมทริกซ์ขนาด 3×3 1
<?php
2
if($_POST["submit"]=="ดีเทอร์มิแนนต์") {
4
$sta = "on1";
3
$cal = "det";
//โค้ดในส่วนของภาษา PHP ร่วมกับโปรแกรม SCILAB //ตรวจสอบค่าของ Submit
156 5
$sta2 = 1;
6
}elseif($_POST["submit"]=="
7
$cal = "inv";
8
$sta = "on2";
9
$sta2 = 2;
11
}
10 12
อินเวอร์ส
") {
$enter="\n"; if($_POST[a1]!="" and $_POST[a2]!="" and $_POST[a3]!="" and $_POST[a4]!=""
and $_POST[a5]!="" and $_POST[a6]!="" and $_POST[a7]!="" and $_POST[a8]!="" 13
and $_POST[a9]!=""){
$code = "[".stripslashes($_POST[a1])." ".stripslashes($_POST[a2])."
".stripslashes($_POST[a3]).";".stripslashes($_POST[a4])." ".stripslashes($_POST[a5])." ".stripslashes($_POST[a6]).";".stripslashes($_POST[a7])." ".stripslashes($_POST[a8])." ".stripslashes($_POST[a9])."]"; 14
$code1 = "output = $cal($code);\notext=string(output);\nfid = mopen('invdet3x3.txt',
'w'); if $sta2==1 then \nmfprintf(fid,'%s\\n',otext);\nmclose(fid);\n elseif $sta2==2 then
\nmfprintf(fid,'%s\\n',otext(1));\nmfprintf(fid,'%s\\n',otext(4));\nmfprintf(fid,'%s\\n',otext( 7));\nmfprintf(fid,'%s\\n',otext(2));\nmfprintf(fid,'%s\\n
',otext(5));\nmfprintf(fid,'%s\\n',otext(8));\nmfprintf(fid,'%s\\n',otext(3));\nmfprintf(fid,'% s\\n',otext(6));\nmfprintf(fid,'%s\\n',otext(9));\nmclose(fid);\n end\nexit;"; 15
file_put_contents("invdet3x3.sce", $code1); //สร้างไฟล์สคริปต์ช่ อ ื ว่า invdet3x3.sce
17
$com = "$path/scilab-4.1.2/bin/Scilex.exe -nwni -nb -f invdet3x3.sce"; //สร้างตัวแปร
$path=$_SERVER["SystemRoot"]; //สร้างตัวแปรที่อยู่ของ windows
16
สัง่ Run สคริปต์ exec($com); //ประมวลผลไฟล์สคริปต์
18 19 20
$output = file_get_contents("invdet3x3.txt"); //อ่านไฟล์ผลลัพธ์ list($exp1, $exp2, $exp3, $exp4, $exp5, $exp6, $exp7, $exp8, $exp9) = explode("\n",
trim(file_get_contents("invdet3x3.txt")));
21
//แยกข้อมูลลงตัวแปร 9 ตัว
}
22
?>
24
<head>
26
<title>การหาดีเทอร์มิแนนต์ และอินเวอร์สของเมทริกซ์ 3 x 3</title>
27
</head>
23 25
<html>
<!--โค้ดในส่วนของภาษา HTML-->
<meta http-equiv="Content-Type" content="text/html; charset=windows-874" />
157 28
<body>
29
<form id="form1" name="form1" method="post" action="invdet3x3.php">
30
<table width="73%" border="0" cellpadding="4" cellspacing="4"
bgcolor="#CCCCCC"> 31 32 33 34 35 36 37 38 39
<tr>
<td width="38%" height="166" valign="top" bgcolor="#FFFF00"><div
align="center">เมทริกซ์ A<br>
<input name="a1" type="text" size="2" value="<? echo $a1; ?>" />
&nbsp; <input name="a2" type="text" size="2" value="<? echo $a2; ?>" />
&nbsp;
<input name="a3" type="text" id="a3" value="<? echo $a3; ?>" size="2" />
<br>
<input name="a4" type="text" id="a4" value="<? echo $a4; ?>" size="2" />
40
&nbsp;
42
&nbsp;
44
<br>
45
<input name="a7" type="text" id="a7" value="<? echo $a7; ?>" size="2" />
41 43
46 47 48 49 50 51 52 53
<input name="a5" type="text" id="a5" value="<? echo $a5; ?>" size="2" /> <input name="a6" type="text" id="a6" value="<? echo $a6; ?>" size="2" />
&nbsp;
<input name="a8" type="text" id="a8" value="<? echo $a8; ?>" size="2" />
&nbsp;
<input name="a9" type="text" id="a9" value="<? echo $a9; ?>" size="2" /> </div></td>
<td width="18%" valign="middle"> <div align="center">
<input name="submit" type="submit" id="Submit" value="ดีเทอร์มิแนนต์" />
54 55 56 57 58
<input name="submit" type="submit" id="Submit" value="
อินเวอร์ส
" />
</div></td>
<td width="44%" valign="top" bgcolor="#FF9966"><div align="center"> <p>ผลลัพธ์<br>
<input name="output" type="text" id="output" value="<? echo $output; ?>" size="10" <? if($sta=="on1"){echo "style='display:;'";}else{echo "style='display:none;'";}?> /><br>
158 59
<input name="out1" type="text" id="out1" value="<? echo $exp1; ?>"<? if($sta=="on2"){echo "style='display:;'";}else{echo "style='display:none;'";}?> size="10" />
60
&nbsp;
61
<input name="out2" type="text" id="out2" value="<? echo $exp2; ?>"<?
62 63
if($sta=="on2"){echo "style='display:;'";}else{echo "style='display:none;'";}?> size="10" />
&nbsp; <input name="out3" type="text" id="out3" value="<? echo $exp3; ?>"<? if($sta=="on2"){echo "style='display:;'";}else{echo "style='display:none;'";}?> size="10" />
64 65
<br>
<input name="out4" type="text" id="out4" value="<? echo $exp4; ?>"<? if($sta=="on2"){echo "style='display:;'";}else{echo "style='display:none;'";}?> size="10"
66 67
/>
&nbsp; <input name="out5" type="text" id="out5" value="<? echo $exp5; ?>"<?
if($sta=="on2"){echo "style='display:;'";}else{echo "style='display:none;'";}?> size="10" />
68 69
&nbsp;
<input name="out6" type="text" id="out6" value="<? echo $exp6; ?>"<? if($sta=="on2"){echo "style='display:;'";}else{echo "style='display:none;'";}?> size="10" />
70 71
72 73
<br> <input name="out7" type="text" id="out7" value="<? echo $exp7; ?>"<?
if($sta=="on2"){echo "style='display:;'";}else{echo "style='display:none;'";}?> size="10" />
&nbsp; <input name="out8" type="text" id="out8" value="<? echo $exp8; ?>"<? if($sta=="on2"){echo "style='display:;'";}else{echo "style='display:none;'";}?> size="10" />
74 75
&nbsp;
<input name="out9" type="text" id="out9" value="<? echo $exp9; ?>"<? if($sta=="on2"){echo "style='display:;'";}else{echo "style='display:none;'";}?> size="10" />
159 76 77
</p> </div></td>
78
</tr>
79
</table>
80
</form>
82
</html>
81
</body>
รูปที่ 5.21 ตัวอย่างการหาผลลัพธ์ของอินเวอร์สเมทริกซ์ขนาด 2×2
5.2.4 ทดสอบการใช้งาน ในส่วนนี้ จะทดสอบการทํางานของเว็บเพจสําหรับหาดีเทอร์มิแนนต์และอินเวอร์สของเมทริกซ์ขนาด 2×2 และ 3×3 ดังนี้
1) ทดสอบการทํางานของโปรแกรมโดยการเปิ ดเบราว์เซอร์ IE จากนั ้นพิมพ์ URL คือ http:// 127.0.0.1/phptoscilab/menuinvdet.php และป้ อนข้อมูล โดยแบ่งออกเป็ น 2 ตัวอย่างดังนี้
2) สําหรับตัวอย่างเมทริกซ์ขนาด 2×2 เลือกขนาดของเมทริกซ์เป็ น 2×2 ในรูปที่ 5.11 ก็จะได้
เว็บเพจในรูปที่ 5.15 จากนั ้นป้ อนข้อมูลเมทริกซ์ A เท่ากับ [1, 2; 3, 4] และกดป่ ุมหาค่า อินเวอร์สของเมทริกซ์ A ก็จะได้ผลลัพธ์ตามรูปที่ 5.21 หรือถ้ากดป่ ุมดีเทอร์มิแนนต์ก็จะได้ ผลลัพธ์เท่ากับ -2
160
รูปที่ 5.22 ตัวอย่างการหาผลลัพธ์ของอินเวอร์สเมทริกซ์ขนาด 3×3
3) สําหรับตัวอย่างเมทริกซ์ขนาด 3×3 เลือกขนาดของเมทริกซ์เป็ น 3×3 ในรูปที่ 5.11 ก็จะได้
เว็บเพจในรูปที่ 5.18 จากนั ้นป้ อนข้อมูลเมทริกซ์ A เท่ากับ [2, 2, 1; 1, 2, 4; 8, 2, 3] และ กดป่ ุมหาค่าอินเวอร์สของเมทริกซ์ A จะได้ผลลัพธ์ตามรูปที่ 5.22 หรือถ้ากดป่ ุมดีเทอร์มิแนนต์ก็
จะได้ผลลัพธ์เท่ากับ 40
5.3 การพิสูจน์คุณสมบัติของเมทริกซ์ ในส่วนนี้จะแสดงตัวอย่างการใช้โปรแกรม PHP สร้างเว็บเพจสําหรับพิสูจน์คุณสมบัติของเมทริกซ์ 3 แบบคือ
(kA)T = kAT (A + B)T = AT + BT (AB)T = BTAT เมื่อ k คือค่าคงตัว, A และ B คือเมทริกซ์จัตุรัสขนาด 2×2, และ (⋅)T คือทรานส์โพสของเมทริกซ์ ดังรายละเอียดต่อไปนี้
5.3.1 การพิสูจน์คุณสมบัติ (kA)T = kAT การสร้างหน้ าต่างส่วนต่อประสานเพื่อใช้ในการพิสูจน์คุณสมบัติ (kA)T = kAT ทําได้ดังนี้ 1) เปิ ดโปรแกรม Adobe Dreamwaver CS 5.5 ออกแบบฟอร์มตามรูปที่ 5.23 และออกแบบ
รูปแบบตารางตามรูปที่ 5.24 โดยในส่วนของ Action Form ให้ใส่ช่ ือเว็บเพจ matrix01.php ดังแสดงในรูปที่ 5.25
161
k
k1
a11
k2
a22
k33
a333
k1
a11
a1
a2
a3
a4
a111
k11
a222
k33
a333
k33
a333
ao33
ao44
k11
I II
ao1
ao3
ao4
ao2
ao11
ao22
รูปที่ 5.23 เว็บเพจของการพิสูจน์คุณสมบัติ (kA)T = kAT
ตารางที่ 5.4 การกําหนดค่าพารามิเตอร์ของ Text Filed และ Button ในส่วนของ Input ในรูปที่ 5.23 อ็อบเจกต์
ชื่อ
คุณสมบัติ
ค่าที่กําหนด
Text Field
k
Char width = 2
<? echo $k; ?>
Text Field
a1
Char width = 2
<? echo $a1; ?>
Text Field
a2
Char width = 2
<? echo $a2; ?>
Text Field
a3
Char width = 2
<? echo $a3; ?>
Text Field
a4
Char width = 2
<? echo $a4; ?>
Button
submit2
-
คํานวณ
2) กําหนดค่าพารามิเตอร์ของ Text Filed และ Button ในฟอร์มต่างๆ ตามตารางที่ 5.4 – 5.6
162 ตารางที่ 5.5 การกําหนดค่าพารามิเตอร์ของ Text Filed ในส่วนของ Output I ในรูปที่ 5.23 อ็อบเจกต์
ชื่อ
คุณสมบัติ
ค่าที่กําหนด
Text Field
k1
Char width = 2
<? echo $k; ?>
Text Field
a11
Char width = 2
<? echo $a1; ?>
Text Field
k2
Char width = 2
<? echo $k; ?>
Text Field
a22
Char width = 2
<? echo $a2; ?>
Text Field
k3
Char width = 2
<? echo $k; ?>
Text Field
a33
Char width = 2
<? echo $a3; ?>
Text Field
k4
Char width = 2
<? echo $k; ?>
Text Field
a44
Char width = 2
<? echo $a4; ?>
Text Field
k11
Char width = 2
<? echo $k; ?>
Text Field
a111
Char width = 2
<? echo $a1; ?>
Text Field
k22
Char width = 2
<? echo $k; ?>
Text Field
a222
Char width = 2
<? echo $a2; ?>
Text Field
k33
Char width = 2
<? echo $k; ?>
Text Field
a333
Char width = 2
<? echo $a3; ?>
Text Field
k44
Char width = 2
<? echo $k; ?>
Text Field
a444
Char width = 2
<? echo $a4; ?>
ตารางที่ 5.6 การกําหนดค่าพารามิเตอร์ของ Text Filed ในส่วนของ Output II ในรูปที่ 5.23 อ็อบเจกต์
ชื่อ
คุณสมบัติ
ค่าที่กําหนด
Text Field
ao1
Char width = 2
<? echo number_format($out1,2,'.',''); ?>
Text Field
ao2
Char width = 2
<? echo number_format($out2,2,'.','');; ?>
Text Field
ao3
Char width = 2
<? echo number_format($out3,2,'.','');; ?>
Text Field
ao4
Char width = 2
<? echo number_format($out4,2,'.','');; ?>
Text Field
ao11
Char width = 2
<? echo number_format($out11,2,'.',''); ?>
Text Field
ao22
Char width = 2
<? echo number_format($out22,2,'.',''); ?>
Text Field
ao33
Char width = 2
<? echo number_format($out33,2,'.',''); ?>
Text Field
ao44
Char width = 2
<? echo number_format($out44,2,'.',''); ?>
163
รูปที่ 5.24 รูปแบบตารางของการพิสูจน์คุณสมบัติ (kA)T = kAT
164
รูปที่ 5.25 การออกแบบการพิสูจน์คุณสมบัติ (kA)T = kAT
3) เขียนโค้ดภาษา PHP และบันทึกไฟล์ช่ อ ื ว่า “matrix01.php” ดังนี้ โค้ดของหน้ าเพจสําหรับการพิสูจน์คณ ุ สมบัติ (kA)T = kAT 1
<?php
//โค้ดในส่วนของภาษา PHP ร่วมกับโปรแกรม SCILAB
2
if($_POST[a1]!="" and $_POST[a2]!="" and $_POST[a3]!="" and $_POST[a4]!=""
3
$a = "[".stripslashes($_POST[a1])."
and $_POST[k]!=""){
".stripslashes($_POST[a2]).";".stripslashes($_POST[a3])." ".stripslashes($_POST[a4])."]";
4
$k = stripslashes($_POST[k]);
165 5
$code1 = "output1 = ($k*$a)'\noutput2 = $k*$a'\noutput1 = iconvert(output1,0);\nsavematfile('output1.txt','output1');\noutput2 = iconvert(output2,0);\nsavematfile('output2.txt','output2');\nexit;";
6
file_put_contents("matrix01.sce", $code1);
7
$path=$_SERVER["SystemRoot"]; //สร้างตัวแปรที่อยู่ของ windows
8 9
$com = "$path/scilab-4.1.2/bin/Scilex.exe -f matrix01.sce"; //สร้างตัวแปรสัง่ Run
สคริปต์
exec($com); //ประมวลผลไฟล์สคริปต์
10 11 12
//สร้างไฟล์สคริปต์ช่ อ ื ว่า invdet2x2.sce
list($out1, $out2, $out3, $out4) = explode("
",
trim(file_get_contents("output1.txt"))); //แยกข้อมูลลงตัวแปร 4 ตัว list($out11, $out22, $out33, $out44) = explode("
",
trim(file_get_contents("output2.txt"))); //แยกข้อมูลลงตัวแปร 4 ตัว }
13
?>
14
<html>
16
<meta http-equiv="Content-Type" content="text/html; charset=windows-874" />
18
<style type="text/css">
19
<!--
21
-->
23
</head>
24
<body>
26
<table width="66%" border="0" cellpadding="4" cellspacing="4"
15 17
20 22
25
27 28
29
<head>
<!--โค้ดในส่วนของภาษา HTML-->
<title>การพิสูจน์คุณสมบัติท่ี 1</title>
.style4 {font-size: 60px} </style>
<form id="form1" name="form1" method="post" action="matrix01.php"> bgcolor="#CCCCCC"> <tr> <td width="100%" height="32" valign="top" bgcolor="#FFFFFF"><div
align="center"><strong>คุณสมบัติท่ี 1(KA)<sup>T</sup> = KA<sup>T</sup></strong></div></td> </tr>
30
</table>
31
<br>
166 32
Input<br>
33
<table width="66%" border="0" cellpadding="4" cellspacing="4"
34 35 36 37 38 39 40
bgcolor="#CCCCCC"> <tr>
<td width="37%" height="107" valign="top" bgcolor="#FFFF99"><div
align="center"><br> k=
&nbsp;</div></td> <td width="63%" valign="top" bgcolor="#FFFF99"><div align="center"> <table width="100%" border="0" cellpadding="0" cellspacing="0">
41
<tr>
42
<td width="41%" align="center" valign="middle">เมทริกซ์ A =</td>
43 44 45 46 47
<td width="59%"><table width="100%" border="0" cellspacing="0" cellpadding="0"> <tr>
<td width="17%" valign="top"><span class="style4">[</span></td> <td width="45%" valign="middle"><br>
<input name="a1" type="text" id="a1" value="<? echo $a1; ?>" size="2" />
48
&nbsp;
50
<br>
52
&nbsp;
49 51
53
<input name="k" type="text" id="k" value="<? echo $k; ?>" size="2" />
<input name="a2" type="text" id="a2" value="<? echo $a2; ?>" size="2" /> <input name="a3" type="text" id="a3" value="<? echo $a3; ?>" size="2" />
<input name="a4" type="text" id="a4" value="<? echo $a4; ?>" size="2" /></td>
54
<td width="38%" valign="top"><span class="style4">]</span></td>
55
</tr>
56
</table>
57
</td>
58
</tr>
59
</table>
60
</div></td>
61
</tr>
62
<tr>
167 63 64
<td height="44" colspan="2" valign="middle" bgcolor="#FFFFFF"><div align="center">
<input name="submit2" type="submit" id="submit" value="
65
</div></td>
66
</tr>
67 68 69 70 71 72 73 74
คํานวณ
" />
</table> <br>
Output<br> <table width="66%" border="0" cellpadding="4" cellspacing="4" bgcolor="#CCCCCC"> <tr>
<td height="66" valign="top" bgcolor="#99FF99"><table width="100%"
border="0" cellspacing="0" cellpadding="0"> <tr>
<td width="47%"><table width="100%" border="0" cellspacing="0"
cellpadding="0">
75
<tr>
77
<td width="82%" valign="middle"><br>
78
<input name="k1" type="text" id="k1" value="<? echo $k; ?>" size="2" />
80
<input name="a11" type="text" id="a11" value="<? echo $a1; ?>" size="2" />
82
<input name="k2" type="text" id="k2" value="<? echo $k; ?>" size="2" />
76
79 81 83
<td width="8%" valign="middle"><span class="style4">(</span></td>
x
&nbsp;&nbsp; x
84
<input name="a22" type="text" id="a22" value="<? echo $a2; ?>" size="2" />
85
<br>
86 87
<input name="k3" type="text" id="k3" value="<? echo $k; ?>" size="2" /> x
88
<input name="a33" type="text" id="a33" value="<? echo $a3; ?>" size="2" />
90
<input name="k4" type="text" id="k4" value="<? echo $k; ?>" size="2" />
92
<input name="a44" type="text" id="a44" value="<? echo $a4; ?>" size="2" /></td>
89 91 93
&nbsp;&nbsp; x
<td width="10%" valign="middle"><span class="style4">)</span></td>
168 </tr>
94 95
</table></td>
96
<td width="9%"><span class="style4"><sup>T&nbsp;</sup>=</span></td>
97
<td width="37%"><table width="96%" border="0" align="center"
98 99
100
cellpadding="0" cellspacing="0"> <tr>
<td valign="top"><br>
<input name="k11" type="text" id="k11" value="<? echo $k; ?>" size="2" />
101 102 103
x <input name="a111" type="text" id="a111" value="<? echo $a1; ?>" size="2" />
&nbsp;&nbsp;
104
<input name="k22" type="text" id="k22" value="<? echo $k; ?>" size="2" />
106
<input name="a222" type="text" id="a222" value="<? echo $a2; ?>" size="2" />
107
<br>
105
108 109 110 111
x
<input name="k33" type="text" id="k33" value="<? echo $k; ?>" size="2" /> x
<input name="a333" type="text" id="a333" value="<? echo $a3; ?>" size="2" /> &nbsp;&nbsp;
112
<input name="k44" type="text" id="k44" value="<? echo $k; ?>" size="2" />
114
<input name="a444" type="text" id="a444" value="<? echo $a4; ?>" size="2"
113
x
/></td>
115
</tr>
116
</table></td>
117 118 119
<td width="7%"><span class="style4"><sup>T</sup></span></td> </tr>
</table></td>
120
</tr>
121
<tr>
122 123 124
<td height="95" valign="top" bgcolor="#FFCCCC"><table width="100%"
border="0" cellspacing="0" cellpadding="0"> <tr>
<td width="51%" align="center"><table width="62%" border="0" cellpadding="0" cellspacing="0">
169 125 126 127
<tr> <td width="22%" align="center" valign="middle">C1 =</td>
<td width="78%"><table width="100%" border="0" cellspacing="0" cellpadding="0">
128
<tr>
129
<td width="18%" valign="top"><span class="style4">[</span></td>
130
<td width="62%" valign="middle"><br>
131
<input name="ao1" type="text" id="ao1" value="<? echo number_format($out1,2,'.',''); ?>" size="2" />
132 133 134 135 136 137
&nbsp;
<input name="ao2" type="text" id="ao2" value="<? echo number_format($out2,2,'.','');; ?>" size="2" /> <br>
<input name="ao3" type="text" id="ao3" value="<? echo number_format($out3,2,'.','');; ?>" size="2" /> &nbsp;
<input name="ao4" type="text" id="ao4" value="<? echo
number_format($out4,2,'.','');; ?>" size="2" /></td>
138
<td width="20%" valign="top"><span class="style4">]</span></td>
139
</tr>
140 141 142 143 144 145 146
</table></td> </tr>
</table></td> <td width="49%"><table width="62%" border="0" cellpadding="0" cellspacing="0"> <tr>
<td width="22%" align="center" valign="middle">C2 =</td>
<td width="78%"><table width="100%" border="0" cellspacing="0" cellpadding="0">
147
<tr>
149
<td width="70%" valign="middle"><br>
148 150
<td width="18%" valign="top"><span class="style4">[</span></td> <input name="ao11" type="text" id="ao11" value="<? echo number_format($out11,2,'.',''); ?>" size="2" />
151
&nbsp;
170 152 153
<input name="ao22" type="text" id="ao22" value="<? echo number_format($out22,2,'.',''); ?>" size="2" /> <br>
154 155 156
<input name="ao33" type="text" id="ao33" value="<? echo number_format($out33,2,'.',''); ?>" size="2" /> &nbsp;
<input name="ao44" type="text" id="ao44" value="<? echo
number_format($out44,2,'.',''); ?>" size="2" /></td>
157
<td width="12%" valign="top"><span class="style4">]</span></td>
158
</tr>
159
</table></td>
160
</tr>
161
</table></td>
162
</tr>
163
</table></td>
164
</tr>
165
</table>
166
</form>
167
</body>
168
</html>
4) ทดสอบการทํางานของโปรแกรมโดยการเปิ ดเบราว์เซอร์ IE จากนั ้นพิมพ์ URL คือ 127.0.0.1/ phptoscilab/matrix01.php จากนั ้นป้ อนข้อมูล k เท่ากับ 2 และเมทริกซ์ A เท่ากับ [1, 2; 3,
4] แล้วกดป่ ุม “คํานวณ” หนึ่ งครัง้ ก็จะได้ผลลัพธ์ตามรูปที่ 5.26
5.2.2 การพิสูจน์คุณสมบัติ (A+B)T = AT + BT การพิสูจน์คุณสมบัตท ิ ่ส ี องนี้จะทําการออกแบบตามรูปที่ 5.27 โดยทําตามขัน ้ ตอนดังนี้ 1) เปิ ดโปรแกรม Adobe Dreamwaver CS 5.5 ออกแบบฟอร์มตามรูปที่ 5.27 และออกแบบ
รูปแบบตารางตามรูปที่ 5.28 โดยในส่วนของ Action Form ให้ใส่ช่ ือเว็บเพจ matrix02.php ดังแสดงในรูปที่ 5.29
2) กําหนดค่าพารามิเตอร์ของ Text Filed และ Button ในฟอร์มต่างๆ ตามตารางที่ 5.7 – 5.10
171
รูปที่ 5.26 เว็บเพจแสดงผลลัพธ์ของการพิสูจน์คุณสมบัติ (kA)T = kAT
a1
a2
b1
b2
a3
a4
b3
b4
a11 a22
b11 b22
a111 a222
b111 b222
a33 a44
b33 b44
a333 a444
b333 b444
I II
ao1
ao3
ao4
ao2
ao11
ao33 ao44
ao22
รูปที่ 5.27 เว็บเพจของการพิสูจน์คุณสมบัติ (A+B)T = AT + BT
172
รูปที่ 5.28 รูปแบบตารางของการพิสูจน์คุณสมบัติ (A+B)T = AT + BT
173
รูปที่ 5.29 การออกแบบการพิสูจน์คุณสมบัติ (A+B)T = AT + BT
ตารางที่ 5.7 การกําหนดค่าพารามิเตอร์ของ Text Filed ในส่วนของ Input A ในรูปที่ 5.27 อ็อบเจกต์
ชื่อ
คุณสมบัติ
ค่าที่กําหนด
Text Field
a1
Char width = 2
<? echo $a1; ?>
Text Field
a2
Char width = 2
<? echo $a2; ?>
Text Field
a3
Char width = 2
<? echo $a3; ?>
Text Field
a4
Char width = 2
<? echo $a4; ?>
174 ตารางที่ 5.8 การกําหนดค่าพารามิเตอร์ของ Text Filed และ Button ในส่วนของ Input B ในรูปที่ 5.27 อ็อบเจกต์
ชื่อ
คุณสมบัติ
ค่าที่กําหนด
Text Field
b1
Char width = 2
<? echo $b1; ?>
Text Field
b2
Char width = 2
<? echo $b2; ?>
Text Field
b3
Char width = 2
<? echo $b3; ?>
Text Field
b4
Char width = 2
<? echo $b4; ?>
Button
submit2
-
คํานวณ
ตารางที่ 5.9 การกําหนดค่าพารามิเตอร์ของ Text Filed ในส่วนของ Output I ในรูปที่ 5.27 อ็อบเจกต์
ชื่อ
คุณสมบัติ
ค่าที่กําหนด
Text Field
a11
Char width = 2
<? echo $a1; ?>
Text Field
a22
Char width = 2
<? echo $a2; ?>
Text Field
a33
Char width = 2
<? echo $a3; ?>
Text Field
a44
Char width = 2
<? echo $a4; ?>
Text Field
b11
Char width = 2
<? echo $b1; ?>
Text Field
b22
Char width = 2
<? echo $b2; ?>
Text Field
b33
Char width = 2
<? echo $b3; ?>
Text Field
b44
Char width = 2
<? echo $b4; ?>
Text Field
a111
Char width = 2
<? echo $a1; ?>
Text Field
a222
Char width = 2
<? echo $a2; ?>
Text Field
a333
Char width = 2
<? echo $a3; ?>
Text Field
a444
Char width = 2
<? echo $a4; ?>
Text Field
b111
Char width = 2
<? echo $b1; ?>
Text Field
b222
Char width = 2
<? echo $b2; ?>
Text Field
b333
Char width = 2
<? echo $b3; ?>
Text Field
b444
Char width = 2
<? echo $b4; ?>
175 ตารางที่ 5.10 การกําหนดค่าพารามิเตอร์ของ Text Filed ในส่วนของ Output II ในรูปที่ 5.27 อ็อบเจกต์
ชื่อ
คุณสมบัติ
ค่าที่กําหนด
Text Field
ao1
Char width = 2
<? echo number_format($out1,2,'.',''); ?>
Text Field
ao2
Char width = 2
<? echo number_format($out2,2,'.','');; ?>
Text Field
ao3
Char width = 2
<? echo number_format($out3,2,'.','');; ?>
Text Field
ao4
Char width = 2
<? echo number_format($out4,2,'.','');; ?>
Text Field
ao11
Char width = 2
<? echo number_format($out11,2,'.',''); ?>
Text Field
ao22
Char width = 2
<? echo number_format($out22,2,'.',''); ?>
Text Field
ao33
Char width = 2
<? echo number_format($out33,2,'.',''); ?>
Text Field
ao44
Char width = 2
<? echo number_format($out44,2,'.',''); ?>
3) เขียนโค้ดภาษา PHP และบันทึกไฟล์ช่ อ ื ว่า “matrix02.php” ดังนี้ โค้ดของหน้ าเพจสําหรับการพิสูจน์คณ ุ สมบัติ (A+B)T = AT + BT 1 2 3 4
<?php
//โค้ดในส่วนของภาษา PHP ร่วมกับโปรแกรม SCILAB
if($_POST[a1]!="" and $_POST[a2]!="" and $_POST[a3]!="" and $_POST[a4]!="" and $_POST[b1]!="" and $_POST[b2]!="" and $_POST[b3]!="" and $_POST[b4]!="") { $a = "[".stripslashes($_POST[a1])." ".stripslashes($_POST[a2]).";".
stripslashes($_POST[a3])." ".stripslashes($_POST[a4])."]";
$b = "[".stripslashes($_POST[b1])." ".stripslashes($_POST[b2]).";".
stripslashes($_POST[b3])." ".stripslashes($_POST[b4])."]"; 5
6
$code1 = "output1 = ($a+$b)'\noutput2 = $a'+$b'\noutput1 = iconvert(output1,0);
\nsavematfile('output1.txt','output1');\noutput2 = iconvert(output2,0);\nsavematfile ('output2.txt','output2');\nexit;";
file_put_contents("matrix02.sce", $code1);
//สร้างไฟล์สคริปต์ช่ อ ื ว่า matrix02.sce
7
$path=$_SERVER["SystemRoot"];
//สร้างตัวแปรที่อยู่ของวินโดวส์
8
$com = "$path/scilab-4.1.2/bin/Scilex.exe -nwni -nb -f matrix02.sce";
10
list($out1, $out2, $out3, $out4) = explode(" ", trim(file_get_contents("output1.txt")));
9
exec($com);
11
list($out11, $out22, $out33, $out44) = explode(" ",trim(file_get_contents("output2.txt")));
12
}
13
?>
15
<head>
14
//ประมวลผลไฟล์สคริปต์
<html>
<!--โค้ดในส่วนของภาษา HTML-->
176 16
<meta http-equiv="Content-Type" content="text/html; charset=windows-874" />
17
<title>การพิสูจน์คุณสมบัติท่ี 2</title>
19
<!--
20
.style4 {font-size: 60px}
22
-->
24
</head>
25
<body>
18
21 23
26 27 28 29 30
31
<style type="text/css">
.style6 {font-size: 36px} </style>
<form id="form1" name="form1" method="post" action="matrix02.php"> <div align="center">
<table width="66%" border="0" cellpadding="4" cellspacing="4" bgcolor="#CCCCCC"> <tr> <td width="100%" height="32" valign="top" bgcolor="#FFFFFF"><div align=
"center"><strong>คุณสมบัติท่ี 2 (A+B)<sup>T</sup> = A<sup>T</sup> + B<sup>T </sup> </strong></div></td> </tr>
32
</table>
33
<br>
35
<table width="66%" border="0" cellpadding="4" cellspacing="4" bgcolor="#CCCCCC">
37
<td width="51%" height="107" valign="top" bgcolor="#FFFF99"><div align=
34 36
38 39 40 41 42 43
Input<br> <tr>
"center">
<table width="100%" border="0" cellpadding="0" cellspacing="0"> <tr>
<td width="28%" align="center" valign="middle">INPUT A =</td> <td width="72%"><table width="100%" border="0" cellspacing="0"
cellpadding="0"> <tr>
44
<td width="17%" valign="top"><span class="style4">[</span></td>
46
<input name="a1" type="text" id="a1" value="<? echo $a1; ?>" size="2" />
45
<td width="45%" valign="middle"><br> &nbsp;
177 47
<input name="a2" type="text" id="a2" value="<? echo $a2; ?>" size="2" />
48
<br>
50
&nbsp;
51
<input name="a4" type="text" id="a4" value="<? echo $a4; ?>" size="2" /></td>
49
52
<input name="a3" type="text" id="a3" value="<? echo $a3; ?>" size="2" />
<td width="38%" valign="top"><span class="style4">]</span></td>
53
</tr>
55
</tr>
56
</table>
54
</table></td>
57
</div></td>
58
<td width="49%" valign="top" bgcolor="#FFFF99"><div align="center">
60
<tr>
61
<td width="28%" align="center" valign="middle">INPUT B =</td>
59
62 63
<table width="100%" border="0" cellpadding="0" cellspacing="0">
<td width="72%"><table width="100%" border="0" cellspacing="0" cellpadding="0"> <tr>
64
<td width="17%" valign="top"><span class="style4">[</span></td>
65
<td width="48%" valign="middle"><br>
66 67 68 69
<input name="b1" type="text" id="b1" value="<? echo $b1; ?>" size="2" /> &nbsp;
<input name="b2" type="text" id="b2" value="<? echo $b2; ?>" size="2" /> <br>
70
<input name="b3" type="text" id="b3" value="<? echo $b3; ?>" size="2" />
72
<input name="b4" type="text" id="b4" value="<? echo $b4; ?>" size="2" /></td>
71 73 74
&nbsp;
<td width="35%" valign="top"><span class="style4">]</span></td> </tr>
75
</table></td>
77
</table>
76 78 79 80
</tr>
</div></td> </tr> <tr>
178 81 82 83 84 85 86 87 88 89 90 91 92 93 94
<td height="44" colspan="2" valign="middle" bgcolor="#FFFFFF"><div align= "center">
<input name="submit2" type="submit" id="submit" value="
คํานวณ
" />
</div></td> </tr>
</table> <br>
Output<br> <table width="75%" border="0" cellpadding="4" cellspacing="4" bgcolor="#CCCCCC"> <tr>
<td height="66" valign="top" bgcolor="#99FF99"><table width="100%"
border="0" cellspacing="0" cellpadding="0"> <tr>
<td width="40%" valign="top"><table width="100%" border="0" cellspacing="0" cellpadding="0"> <tr>
<td width="42%"><table width="100%" border="0" cellspacing="0"
cellpadding="0">
95
<tr>
96
<td width="12%" valign="middle"><span class="style4">(</span></td>
98
<input name="a11" type="text" id="a11" value="<? echo $a1; ?>" size="2" />
100
<br>
101
<input name="a33" type="text" id="a33" value="<? echo $a3; ?>" size="2" />
97 99
102 103 104 105 106 107
<td valign="middle"><br>
<input name="a22" type="text" id="a22" value="<? echo $a2; ?>" size="2" />
<input name="a44" type="text" id="a44" value="<? echo $a4; ?>" size="2"
/></td>
</tr>
</table></td> <td width="15%" align="left"><span class="style6">+</span></td> <td width="43%"><table width="92%" border="0" cellspacing="0" cellpadding="0"> <tr>
108
<td width="79%" valign="middle"><br>
109
<input name="b11" type="text" id="b11" value="<? echo $b1; ?>" size="2" />
179 110
<input name="b22" type="text" id="b22" value="<? echo $b2; ?>" size="2" />
111
<br>
113
<input name="b44" type="text" id="b44" value="<? echo $b4; ?>" size="2"
112
114
<input name="b33" type="text" id="b33" value="<? echo $b3; ?>" size="2" /> /></td>
<td width="21%" valign="middle"><span class="style4">)</span></td>
115
</tr>
116 117 118 119 120
</table></td> </tr> </table></td>
<td width="11%" align="left" valign="top"><span class="style4"><span class="style6"><sup>T</sup></span>=</span></td>
<td width="49%"><table width="100%" border="0" cellspacing="0"
cellpadding="0"> 121 122 123
<tr>
<td width="48%"><table width="100%" border="0" cellspacing="0" cellpadding="0"> <tr>
124
<td width="10%" valign="middle"><span class="style4">(</span></td>
125
<td width="57%" valign="middle"><br>
127
<input name="a222" type="text" id="a222" value="<? echo $a2; ?>" size="2" />
129
<input name="a333" type="text" id="a333" value="<? echo $a3; ?>" size="2" />
126 128 130 131
<input name="a111" type="text" id="a111" value="<? echo $a1; ?>" size="2" /> <br>
<input name="a444" type="text" id="a444" value="<? echo $a4; ?>" size="2"
/></td>
<td width="33%" valign="middle"><span class="style4">)<span
class="style6"><sup>T</sup></span></span></td>
132
</tr>
133
</table></td>
134 135 136 137
<td width="6%"><span class="style6">+</span></td> <td width="46%"><table width="100%" border="0" cellspacing="0"
cellpadding="0"> <tr>
<td width="9%" valign="middle"><span class="style4">(</span></td>
180 138
<td width="57%" valign="middle"><br>
139
<input name="b111" type="text" id="b111" value="<? echo $b1; ?>" size="2" />
140 141 142 143 144
<input name="b222" type="text" id="b222" value="<? echo $b2; ?>" size="2" /> <br> <input name="b333" type="text" id="b333" value="<? echo $b3; ?>" size="2" /> <input name="b444" type="text" id="b444" value="<? echo $b4; ?>" size="2" /></td>
<td width="34%" valign="middle"><span class="style4">)<span
class="style6"><sup>T</sup></span></span></td> 145
</tr>
146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165
</table></td> </tr>
</table></td> </tr> </table>
<br></td> </tr> <tr>
<td height="95" valign="top" bgcolor="#FFCCCC"><table width="100%" border="0" cellspacing="0" cellpadding="0"> <tr>
<td width="51%" align="center"><table width="62%" border="0"
cellpadding="0" cellspacing="0"> <tr>
<td width="22%" align="center" valign="middle">C1 =</td>
<td width="78%"><table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr> <td width="18%" valign="top"><span class="style4">[</span></td> <td width="62%" valign="middle"><br>
<input name="ao1" type="text" id="ao1" value="<? echo
number_format($out1,2,'.',''); ?>" size="2" /> &nbsp;
<input name="ao2" type="text" id="ao2" value="<? echo number_format($out2,2,'.','');; ?>" size="2" />
181 166
<br>
167
<input name="ao3" type="text" id="ao3" value="<? echo
number_format($out3,2,'.','');; ?>" size="2" />
168
&nbsp;
169
<input name="ao4" type="text" id="ao4" value="<? echo
170 171 172 173 174 175 176 177 178 179
number_format($out4,2,'.','');; ?>" size="2" /></td>
<td width="20%" valign="top"><span class="style4">]</span></td> </tr>
</table></td> </tr>
</table></td> <td width="49%"><table width="62%" border="0" cellpadding="0"
cellspacing="0"> <tr>
<td width="22%" align="center" valign="middle">C2 =</td>
<td width="78%"><table width="100%" border="0" cellspacing="0" cellpadding="0"> <tr>
180
<td width="18%" valign="top"><span class="style4">[</span></td>
181
<td width="70%" valign="middle"><br>
182 183 184 185 186
<input name="ao11" type="text" id="ao11" value="<? echo number_format($out11,2,'.',''); ?>" size="2" /> &nbsp;
<input name="ao22" type="text" id="ao22" value="<? echo number_format($out22,2,'.',''); ?>" size="2" /> <br>
<input name="ao33" type="text" id="ao33" value="<? echo
number_format($out33,2,'.',''); ?>" size="2" />
187
&nbsp;
188
<input name="ao44" type="text" id="ao44" value="<? echo
number_format($out44,2,'.',''); ?>" size="2" /></td>
189
<td width="12%" valign="top"><span class="style4">]</span></td>
191
</table></td>
190 192
</tr>
</tr>
182 193 194 195
</table></td> </tr>
</table></td>
196
</tr>
197
</table>
198
</div>
199
</form>
201
</html>
200
</body>
รูปที่ 5.30 เว็บเพจแสดงผลลัพธ์ของการพิสูจน์คุณสมบัติ (A+B)T = AT + BT
4) ทดสอบการทํางานของโปรแกรมโดยการเปิ ดเบราว์เซอร์ IE จากนั ้นพิมพ์ URL คือ 127.0.0.1/ phptoscilab/matrix02.php จากนั ้นป้ อนข้อมูลเมทริกซ์ A เท่ากับ [2, 3; 4, 5] และเมทริกซ์
A เท่ากับ [4, 5; 6, 7] และกดป่ ุม “คํานวณ” หนึ่ งครัง้ ก็จะได้ผลลัพธ์ตามรูปที่ 5.30
183
รูปที่ 5.31 การเปลี่ยนแถบชื่อเรื่องด้วยโปรแกรม Dreamweaver
รูปที่ 5.32 การเปลี่ยนชื่อไฟล์ของฟอร์มเว็บไซต์เป็ น matrix03.php ด้วยโปรแกรม Dreamweaver
5.2.3 การพิสูจน์คุณสมบัติ (AB)T = ATBT ในทํานองเดียวกันการพิสูจน์คณ ุ สมบัตท ิ ่ส ี ามจะออกแบบตามรูปที่ 5.31 โดยทําตามขัน ้ ตอนดังนี้ 1) เปิ ดโปรแกรม Adobe Dreamwaver CS 5.5 และทําการคัดลอกโค้ดหรือไฟล์ตัวอย่างการ
พิสูจน์คุณสมบัติท่ี 2 โดยให้แก้ไขโค้ดบางบรรทัดและบันทึกเป็ นชื่อไฟล์ว่า “matrix03.php” ดังต่อไปนี้
บรรทัดที่ 5 เปลี่ยนเครื่องหมายบวกเป็ นเครื่องหมายคูณดังนี้ 5
$code1 = "output1 = ($a*$b)'\noutput2 = $a'*$b'\noutput1 =
iconvert(output1,0);\nsavematfile('output1.txt','output1');\noutput2 = iconvert(output2,0);\nsavematfile('output2.txt','output2');\nexit;";
บรรทัดที่ 6 เปลี่ยนชื่อไฟล์เป็ น matrix03.sce ดดังนี้ 6
file_put_contents("matrix03.sce", $code1);
บรรทัดที่ 17 เปลี่ยนชื่อแถบชื่อเรื่องเป็ น “การพิสูจน์คุณสมบัติท่ี 3” ดังนี้ (รูปที่ 5.31) 17
<title>การพิสูจน์คุณสมบัติท่ี 3</title>
บรรทัดที่ 26 แก้ไขชื่อไฟล์ของฟอร์มเว็บไซต์เป็ น matrix03.php ดังนี้ (รูปที่ 5.32) 26
<form id="form1" name="form1" method="post" action="matrix03.php">
184
รูปที่ 5.33 การเปลี่ยนสมการของคุณสมบัติท่ี 2 เป็ นคุณสมบัติท่ี 3
รูปที่ 5.34 การเปลี่ยนเครื่องหมายบวกเป็ นเครื่องหมายคูณ “×”
บรรทัดที่ 30 แก้ไขสมการของคุณสมบัตท ิ ่ี 2 เป็ นคุณสมบัตท ิ ่ี 3 ดังนี้ (รูปที่ 5.33) 30
<td width="100%" height="32" valign="top" bgcolor="#FFFFFF"><div align= "center"><strong>คุณสมบัติท่ี 3 (AB)<sup>T</sup> = A<sup>T</sup> B<sup>T</sup> </strong></div></td>
บรรทัดที่ 105 และ 134 เปลี่ยนเครื่องหมายบวกเป็ นเครื่องหมายคูณดังนี้ (รูปที่ 5.34) 105
<td width="15%" align="left"><span class="style6">×</span></td>
134
<td width="6%"><span class="style6">×</span></td>
2) ทดสอบการทํางานของโปรแกรมโดยการเปิ ดเบราว์เซอร์ IE จากนั ้นพิมพ์ URL คือ 127.0.0.1/ phptoscilab/matrix03.php จากนั ้นป้ อนข้อมูลเมทริกซ์ A เท่ากับ [2, 3; 4, 5] และเมทริกซ์
B เท่ากับ [4, 5; 6, 7] แล้วกดป่ ุม “คํานวณ” หนึ่ งครัง้ ก็จะได้ผลลัพธ์ตามรูปที่ 5.35
5.3 การหาค่าลอการิทึมฐานใดๆ ในส่วนนี้จะแสดงตัวอย่างการใช้โปรแกรม PHP สร้างเว็บเพจสําหรับหาค่าลอการิทึมฐานใดๆ ดังนี้
185
รูปที่ 5.35 เว็บเพจแสดงผลลัพธ์ของการพิสูจน์คุณสมบัติ (AB)T = ATBT
รูปที่ 5.36 ฟอร์มการหาหาค่าลอการิทึมฐานใดๆ
1) เริ่มต้นเปิ ดโปรแกรม Adobe Dreamwaver CS 5.5 ขึ้นมา และออกแบบฟอร์มตามรูปที่ 5.36
186
รูปที่ 5.37 ตารางในส่วนป้ อนข้อมูลของรูปที่ 5.36
รูปที่ 5.38 ตัวอย่างการใส่สีของพื้นตารางด้วย Tab Editor
รูปที่ 5.39 การสร้างตารางในส่วนแสดงผลลัพธ์ของรูปที่ 5.36
2) สร้างฟอร์มและออกแบบตารางในส่วนป้ อนข้อมูล และใส่ Textbox ตามรูปที่ 5.37 โดยใส่สี เส้นขอบเท่ากับ #FFCC00 และสีพ้น ื เท่ากับ #FFFF99 ผ่านทาง Tab Editor ตามรูปที่ 5.38
3) ออกแบบตารางในส่วนผลลัพธ์ Textbox และป่ ุมคํานวณ ตามรูปที่ 5.39 – 5.40 และใส่สี เส้นขอบเท่ากับ #CCCC00 และสีพ้น ื เท่ากับ #CCFF99 (ผ่านทาง Tab Editor)
187
รูปที่ 5.40 การสร้างป่ ุมคํานวณของรูปที่ 5.36 ตารางที่ 5.11 การกําหนดค่าพารามิเตอร์ของ Text Filed และ Button ในรูปที่ 5.36 อ็อบเจกต์
ชื่อ
คุณสมบัติ
ค่าที่กําหนด
Text Field
x
Char width = 10
<? echo $x; ?>
Text Field
base
Char width = 10
<? echo $base; ?>
Button
submit2
-
คํานวณ
Text Field
out
Char width = 10
<? echo $out; ?>
รูปที่ 5.41 การกําหนดชื่อเว็บเพจในฟอร์ม Action ของรูปที่ 5.36
4) กําหนดค่าพารามิเตอร์ของ Text Filed และ Button ในฟอร์มต่างๆ ตามตารางที่ 5.11
188 5) ในส่วนของฟอร์ม Action ให้ใส่ช่ อ ื เว็บเพจ logx.php ตามรูปที่ 5.41 6) เขียนโค้ดภาษา PHP และบันทึกไฟล์ช่ อ ื ว่า “logx.php” ดังนี้ โค้ดของหน้ าเพจสําหรับการหาค่าลอการิทึมฐานใดๆ 1 2 3 4*
<?php
//โค้ดในส่วนของภาษา PHP ร่วมกับโปรแกรม SCILAB
if($_POST[x]!="" and $_POST[base]!="") {
$path1=$_SERVER["DOCUMENT_ROOT"];
//สร้างตัวแปรที่อยู่ของไฟล์ www
$code1 = "exec('$path1/phptoscilab/logXN.sci');\noutput=logXN($x, $base);
\nsavematfile('logx.txt','output');\nexit;";
//เขียนโค้ด SCILAB
5
file_put_contents("logx.sce", $code1);
//สร้างไฟล์สคริปต์ช่ อ ื ว่า logx.sce
6
$path2=$_SERVER["SystemRoot"];
//สร้างตัวแปรที่อยู่ของ windows
8
exec($com);
//ประมวลผลไฟล์สคริปต์
7
$com = "$path2/scilab-4.1.2/bin/Scilex.exe -nwni -nb -f logx.sce";
9
$out = number_format(file_get_contents("logx.txt"));
10
}
11
?>
13
<head>
15
<title>การหาผลลัพธ์ Log ฐานใดๆ ด้วย SCILAB </title>
16
</head>
12 14
17 18 19 20 21 22 23
<html>
<!--โค้ดในส่วนของภาษา HTML-->
<meta http-equiv="Content-Type" content="text/html; charset=windows-874" />
<body>
<form id="form1" name="form1" method="post" action="logx.php"> <p>การหาผลลัพธ์ Log ฐานใดๆ<br> <br> ป้ อนข้อมูล</p>
<table width="34%" border="1" cellpadding="0" cellspacing="0" bordercolor= "#FFCC00" bgcolor="#FFFF99"> <tr>
24
<td height="51"><div align="center">x =
25
<input name="x" type="text" id="x" value="<? echo $x; ?>" size="10" />
26 27 28
&nbsp;&nbsp;Base =
<input name="base" type="text" id="base" value="<? echo $base; ?>" size="10" /> </div></td>
</tr>
189 29
</table>
30
<br>
31
<table width="34%" border="1" cellpadding="0" cellspacing="0" bordercolor= "#CCCC00" bgcolor="#CCFF99">
32
<tr>
33 34 35 36 37 38 39 40
<td height="51"><div align="center">Log x<sub>Base</sub> =&nbsp; <input name="out" type="text" id="out" value="<? echo $out; ?>" size="10" /> <br>
</div></td> </tr>
</table> <br>
<table width="34%" cellpadding="0" cellspacing="0">
41
<tr>
42
<td height="51"><div align="center">
43
<input type="submit" name="Submit" value="
44
</div></td>
46
</tr>
47
</table>
49
" />
<br>
45
48
คํานวณ
<p>&nbsp;</p>
50
</body>
51
</html>
</form>
หมายเหตุ บรรทัดที่ 4 จะเรียกฟั งก์ชันที่สร้างขึ้นใหม่จากโปรแกรม SCILAB ซึ่งมีการทํางาน
เหมือนกับฟั งก์ชัน logXN.sci ที่ใช้ในหัวข้อที่ 3.4 โดยจะต้องเก็บไฟล์นี้ไว้ท่ีสารบบ C:\
AppServ\www\phptoscilab
7) ทดสอบการทํางานของโปรแกรมโดยการเปิ ดเบราว์เซอร์ IE จากนั ้นพิมพ์ URL คือ
127.0.0.1/phptoscilab/logx.php จากนั ้นป้ อนข้อมูลดังนี้ ให้ X มีค่าเท่ากับ 8 และ Base มี ค่าเท่ากับ 2 แล้วกดป่ ุม “คํานวณ” หนึ่ งครัง้ ก็จะได้ผลลัพธ์ตามรูปที่ 5.42
190
รูปที่ 5.42 ตัวอย่างการหาค่าลอการิทึมของ 8 ฐาน 2 ซึ่งมีค่าเท่ากับ 3 ผ่านเว็บไซต์ ตารางที่ 5.12 การกําหนดค่าพารามิเตอร์ของ Text Filed และ Button ในรูปที่ 5.43 อ็อบเจกต์
ชื่อ
คุณสมบัติ
ค่าที่กําหนด
Text Field
p
Char width = 20
<? echo $p; ?>
Text Field
q
Char width = 20
<? echo $q; ?>
Button
Submit
-
คํานวณ
OUTPUT
<iframe src="<? echo $url; rand(1,3000); ?>" frameborder="0" height="100"></iframe>
5.4 การบวกและลบของสมการพหุนาม ในส่วนนี้จะแสดงตัวอย่างการใช้โปรแกรม PHP สร้างเว็บเพจสําหรับบวกและลบสมการพหุนามดังนี้ 1) เริ่มต้นเปิ ดโปรแกรม Adobe Dreamwaver CS 5.5 ขึ้นมา และออกแบบฟอร์มตามรูปที่ 5.43 2) สร้างฟอร์มและออกแบบตารางในส่วนป้ อนข้อมูล และใส่ Textbox ตามรูปที่ 5.44 โดยใส่สี เส้นขอบเท่ากับ #FFCC00 และสีพ้น ื เท่ากับ #FFFF99 (ผ่านทาง Tab Editor)
3) ออกแบบตารางในส่วนผลลัพธ์ Textbox และป่ ุมคํานวณ ตามรูปที่ 5.45 และใส่สีเส้นขอบ เท่ากับ #CCCC00 และสีพ้น ื เท่ากับ #CCFF99 (ผ่านทาง Tab Editor)
4) กําหนดค่าพารามิเตอร์ของ Text Filed และ Button ในฟอร์มต่างๆ ตามตารางที่ 5.12
191
รูปที่ 5.43 เว็บเพจของการบวกและลบสมการหหุนาม
รูปที่ 5.44 การสร้างตารางในส่วนป้ อนข้อมูลของรูปที่ 5.43
192
<iframe src="<? echo $url; rand(1,3000); ?>" frameborder="0" height="100"></iframe>
รูปที่ 5.45 การสร้างตารางในส่วนแสดงผลลัพธ์
รูปที่ 5.46 การกําหนดชื่อเว็บเพจในฟอร์ม Action ของรูปที่ 5.43
5) ในส่วนของฟอร์ม Action ให้ใส่ช่ อ ื เว็บเพจ polyx.php ตามรูปที่ 5.46
193 6) เขียนโค้ดภาษา PHP และบันทึกไฟล์ช่ อ ื ว่า “polyx.php” ดังนี้ โค้ดของหน้ าเพจสําหรับการบวกและลบสมการพหุนาม 1 2 3
<?php
//โค้ดในส่วนของภาษา PHP ร่วมกับโปรแกรม SCILAB
$url = "";
//สร้างตัวแปร url เท่ากับค่าว่าง
if($_POST[p]!="" and $_POST[q]!="") {
4
$path1=$_SERVER["DOCUMENT_ROOT"];
6*
$code1 = "x=poly(0,'x');\np=$p;\nq=$q;\npq1=p+q;\npq2=p-q;\n
5
$url = "001.html";
//สร้างตัวแปรที่อยู่ของไฟล์ www
//สร้างตัวแปร url เท่ากับไฟล์ 001.html
exec('$path1/phptoscilab/pohtml01.sci',-1);\nexec('$path1/phptoscilab/pohtml02.sci',1);\nexec('$path1/phptoscilab/pohtml03.sci',-1);\np1= pol2tex(p);\nq1= pol2tex(q);\n pl1= pol2tex(pq1);\npl2= pol2tex(pq2);\npohtml01('$path1/phptoscilab/001.html');\n pohtml02('$path1/phptoscilab/001.html',pl1,'p + q&nbsp;&nbsp;&nbsp;');\n pohtml02('$path1/phptoscilab/001.html',pl2,'p - q&nbsp;&nbsp;&nbsp;');\n 7
pohtml03('$path1/phptoscilab/001.html');\nexit;"; file_put_contents("polyx.sce", $code1);
//เขียนโค้ด SCILAB
//สร้างไฟล์สคริปต์ช่ อ ื ว่า polyx.sce
8
$path2=$_SERVER["SystemRoot"];
//สร้างตัวแปรที่อยู่ของวินโดวส์
10
exec($com);
//ประมวลผลไฟล์สคริปต์
9 11
$com = "$path2/scilab-4.1.2/bin/Scilex.exe -nwni -nb -f polyx.sce"; }
12
?>
13
<html>
15
<meta http-equiv="Content-Type" content="text/html; charset=windows-874" />
16
<title>การบวกและลบสมการพหุนาม</title>
18
<body>
14
17 19
<head>
</head>
<form id="form1" name="form1" method="post" action="polyx.php">
20
<p>การบวกและลบสมการพหุนาม<br>
21
<br>
22 23
<!--โค้ดในส่วนของภาษา HTML-->
ป้ อนข้อมูล</p> <table width="34%" border="1" cellpadding="0" cellspacing="0" bordercolor=
"#009933" bgcolor="#CCFFCC">
24
<tr>
25
<td height="76"><div align="center">
194 26 27
<table width="100%" border="0" align="center" cellpadding="0" cellspacing="0"> <tr>
28
<td width="23%"><div align="center">p(x)&nbsp;</div></td>
29
<td width="77%">=
30 31 32
<input name="p" type="text" id="p" value="<? echo $p; ?>" size="20" /></td>
</tr> <tr>
33
<td><div align="center">q(x)</div></td>
34
<td>=
35 36 37 38 39 40 41 42
<input name="q" type="text" id="q" value="<? echo $q; ?>" size="20" /></td> </tr>
</table> </div></td> </tr>
</table> <br>
<table width="34%" border="1" cellpadding="0" cellspacing="0" bordercolor= "#FF3399" bgcolor="#FF99FF">
43
<tr>
45
<iframe src="<? echo $url; rand(1,3000); ?>" frameborder="0" height="100"></iframe>
44
46 47 48 49 50 51 52 53 54
<td height="82" align="center" valign="middle"><br> </td>
</tr> </table>
<br> <table width="34%" cellpadding="0" cellspacing="0">
<tr>
<td height="51"><div align="center"> <input type="submit" name="Submit" value="
<br>
</div></td>
55
</tr>
56
</table>
57
<p>&nbsp;</p>
คํานวณ
" />
195 58 59 60
</form> </body> </html>
หมายเหตุ บรรทัดที่ 6 จะมีการเรียกฟั งก์ชันที่สร้างขึ้นใหม่จากโปรแกรม SCILAB ซึ่งมีการ
ทํางานเหมือนกับฟั งก์ชัน pohtml01.sci, pohtml02.sci และ pohtml03.sci ที่ใช้ในหัวข้อที่
3.5 โดยจะต้องเก็บไฟล์ทงั ้ หมดนี้ไว้ท่ส ี ารบบ C:\AppServ\www\phptoscilab
7) ทดสอบการทํางานของโปรแกรมโดยการเปิ ดเบราว์เซอร์ IE จากนั ้นพิมพ์ URL คือ 127.0.0.1/ phptoscilab/polyx.php จากนั ้นป้ อนข้อมูลที่อยู่ในรูปของ LaTeX ดังนี้ p(x) เท่ากับเลข
x^2 + 50 และ q(x) เท่ากับ x^2 + 25 แล้วกดป่ ุม “คํานวณ” หนึ่ งครัง้ ก็จะได้ผลลัพธ์ตาม รูปที่ 5.47
รูปที่ 5.47 ตัวอย่างการการบวกและลบสมการหหุนามผ่านเว็บไซต์
196
รูปที่ 5.48 เว็บเพจของการวาดกราฟสองมิติ
5.5 การวาดกราฟสองมิติ ในส่วนนี้จะแสดงตัวอย่างการใช้โปรแกรม PHP สร้างเว็บเพจสําหรับวาดกราฟสองมิติดังนี้ 1) เริ่มต้นเปิ ดโปรแกรม Adobe Dreamwaver CS 5.5 ขึ้นมา และออกแบบฟอร์มตามรูปที่ 5.48 2) สร้างฟอร์มและออกแบบตารางในส่วนป้ อนข้อมูล และใส่ Textbox และ Button ตามรูปที่ 5.49 โดยสีพ้น ื เท่ากับ #FFFF99 (ผ่านทาง Tab Editor)
3) ออกแบบในส่วนผลลัพธ์ (แสดงผลลัพธ์เป็ นรูปภาพ) โดยใช้เครื่องมือตามรูปที่ 5.50 4) กําหนดค่าพารามิเตอร์ของ Text Filed และ Button ในฟอร์มต่างๆ ตามตารางที่ 5.11 5) ในส่วนของฟอร์ม Action ให้ใส่ช่ อ ื เว็บเพจ v2d.php ตามรูปที่ 5.51
197
รูปที่ 5.49 การสร้างตารางในส่วนป้ อนข้อมูลของรูปที่ 5.48
<img src="test.gif?<?=rand(1,3000); ?>" width="610" height="461" border="1" >
รูปที่ 5.50 การออกแบบส่วนแสดงผลลัพธ์ของรูปที่ 5.48 ตารางที่ 5.13 การกําหนดค่าพารามิเตอร์ของ Text Filed และ Button ในรูปที่ 5.48 อ็อบเจกต์
ชื่อ
คุณสมบัติ
ค่าที่กําหนด
Text Field
x1
Char width = 4, Max chars = 2
<? echo $x1; ?>
Text Field
x2
Char width = 4, Max chars = 4
<? echo $x2; ?>
Text Field
x3
Char width = 4, Max chars = 2
<? echo $x3; ?>
Text Field
f1
Char width = 4, Max chars = 2
<? echo $f1; ?>
Text Field
y1
Char width = 30, Max chars = 30
<? echo $y1; ?>
Button
Submit
-
คํานวณ
OUTPUT
<img src="test.gif?<?=rand(1,3000); ?>" width="610" height="461" border="1" >
198
รูปที่ 5.51 การกําหนดชื่อเว็บเพจในฟอร์ม Action ของรูปที่ 5.48
6) เขียนโค้ดภาษา PHP และบันทึกไฟล์ช่ อ ื ว่า “logx.php” ดังนี้ โค้ดของหน้ าเพจสําหรับการวาดกราฟสองมิติ 1 2
<?php
//โค้ดในส่วนของภาษา PHP ร่วมกับโปรแกรม SCILAB
if($_POST[x1]!="" and $_POST[x2]!="" and $_POST[x3]!="" and $_POST[f1]!=""
and $_POST[y1]!="") { 3
$y1 = stripslashes($_POST[y1]);
$path1=$_SERVER["DOCUMENT_ROOT"];
//สร้างตัวแปรที่อยู่ของไฟล์ www
5
$path2=$_SERVER["SystemRoot"];
//สร้างตัวแปรที่อยู่วินโดวส์
4 6
$code1 = "x = $_POST[x1]:$_POST[x2]:$_POST[x3];\n f = $_POST[f1];\n y = $y1;\n plot(x, y);\nxs2gif(0,'$path1/phptoscilab/test.gif');exit();";
7
file_put_contents("v2d.sce", $code1);
//สร้างไฟล์สคริปต์ช่ อ ื v2d.sce
9
exec($com);
//ประมวลผลไฟล์สคริปต์
8 10
$com = "$path2/scilab-4.1.2/bin/Scilex.exe -nwni -nb -f v2d.sce"; }
199 11
?>
12
<html>
14
<meta http-equiv="Content-Type" content="text/html; charset=windows-874">
15
<title>การใช้งานวาดกราฟ 2 มิต< ิ /title>
17
<!--
19
-->
20
</style>
22
<body>
13
16 18
21 23 24 25
<!--โค้ดในส่วนของภาษา HTML-->
<head>
<style type="text/css">
.style1 {font-size: 12px}
</head> <form id="form1" name="form1" method="post" action="v2d.php"> <div align="center">การใช้งานวาดกราฟ 2 มิติ<br> <br>
26
</div>
27
<table width="100%" border="0" cellspacing="0" cellpadding="0">
28 29 30 31
<tr>
<td width="64%"><img src="test.gif?<?=rand(1,3000); ?>" width="610" height="461" border="1" ></td>
<td width="36%" align="center" valign="top"><table border="0" cellpadding="4"
cellspacing="4" bgcolor="#FFFF99"> <tr>
32
<td width="24" height="40">x =</td>
33
<td width="46"><div align="center"><span class="style1">ค่าเริ่มต้น</span><br>
34 35 36
</div>
<div align="center">
<input name="x1" type="text" size="4" maxlength="2" value="<? echo $x1; ?>" />
37
</div></td>
38
<td width="65"><div align="center"><span class="style1">ค่าระหว่างขัน ้
39 40
</span><br> :
<input name="x2" type="text" size="4" maxlength="4" value="<? echo $x2; ?>" />
41
</div></td>
42
<td width="61"><div align="center"><span class="style1">ค่าสุดท้าย
200 </span><br> 43 44
:
<input name="x3" type="text" size="4" maxlength="2" value="<? echo $x3; ?>" />
45
</div></td>
46
</tr>
47
<tr>
48
<td>f = </td>
49 50
<td><div align="center"> <input name="f1" type="text" size="4" maxlength="2" value="<? echo $f1; ?>" />
51
</div></td>
52
<td><div align="center"></div></td>
53
<td><div align="center"></div></td>
54
</tr>
55
<tr>
56
<td>y = </td>
57 58
<td colspan="3"><div align="center"> />
<input name="y1" type="text" size="30" maxlength="30" value="<? echo $y1; ?>"
59
</div></td>
60
</tr>
61 62 63
<tr>
<td colspan="4" bgcolor="#FFFFFF"><div align="center"> <input type="submit" name="Submit" value="
64 65 66 67
</div></td> </tr>
</table></td> </tr>
68
</table>
69
<br>
70
</form>
71
</body>
72
</html>
คํานวณ
" />
201
กราฟสองมิติ
รูปที่ 5.52 ตัวอย่างการวาดกราฟสองมิติของสมการ y = sin(2*%pi*f*x) ผ่านเว็บไซต์
7) ทดสอบการทํางานของโปรแกรมโดยการเปิ ดเบราว์เซอร์ IE จากนั ้นพิมพ์ URL คือ 127.0.0.1/ phptoscilab/v2d.php จากนั ้น ทําการวาดกราฟสองมิติ เช่น ถ้าต้องการวาดรูปสัญญาณ y = sin(2πfx) เมื่อ f คือความถี่มีหน่ วยเป็ นเฮิรตซ์ ก็ให้ป้อนข้อมูลของอินพุต x = 0 : 0.01 : 2, f =1 และ y = sin(2*%pi*f*x) แล้วกดป่ ุม “คํานวณ” หนึ่ งครัง้ ก็จะได้ผลลัพธ์ตามรูปที่ 5.52
5.6 สรุปท้ายบท บทนี้ ได้นําเสนอตัวอย่างวิธีการสร้างสื่อการสอนผ่านเว็บไซต์โดยใช้โปรแกรมภาษา PHP ร่วมกับ โปรแกรม SCILAB
ซึ่งประกอบด้วย การบวก/ลบ/คูณ/หาร ของเลขสองจํานวน การหาดีเทอร์
มิแนนต์และอินเวอร์สของเมทริกซ์ การพิสูจน์คุณสมบัติของเมทริกซ์ การหาค่าลอการิทึมฐานใดๆ
การบวกและลบสมการพหุนาม และการวาดกราฟสองมิติ เพื่อเป็ นแนวทางให้ผู้อ่านสามารถนํ าไป
พัฒนาต่อยอดหรือประยุกต์ใช้งานด้านอื่นได้
202
5.7 แบบฝึ กหัดท้ายบท 1.
จงเขียนโปรแกรมหาค่าจํานวนเฉพาะตัง้ แต่ 1 ถึง N ผ่านเว็บไซต์
2.
จงเขียนโปรแกรมหาค่าตัวคูณร่วมน้ อย (ครน.) จํานวน 3 จํานวน ผ่านเว็บไซต์
3.
จงสร้างโปรแกรมแก้สมการพหุนามที่เป็ นฟั งก์ชน ั ของตัวแปรเดียว ผ่านเว็บไซต์
4.
จงเขียนโปรแกรมวาดกราฟ 2 มิติดังรูปที่ 1.5 (คําสัง่ polarplot) ผ่านเว็บไซต์
5.
จงเขียนโปรแกรมวาดกราฟ 3 มิติดังรูปที่ 1.6 (คําสัง่ plot3d) ผ่านเว็บไซต์
203
บทที่ 6 ความร้เู บื้องต้นโปรแกรม SWISH Max ในบทนี้จะอธิบายพื้นฐานการใช้งานโปรแกรม SWISH Max [11 – 13] ที่ใช้สําหรับสร้างไฟล์ภาพ
เคลื่อนไหวแบบแฟลช (flash animation) โดยจะเริ่มจากเครื่องมือต่างๆ ของโปรแกรม SWISH Max และคําสัง่ พื้นฐานสําหรับการนํ าไปประยุกต์ใช้งานร่วมกับโปรแกรม SCILAB
6.1 ประวัติความเป็ นมาของโปรแกรม SWISH Max SWISH Max เป็ นโปรแกรมที่พัฒนาโดยบริษัท SWiSHzone.com สําหรับใช้สร้างงานทางด้าน
กราฟิ ก เช่น โลโก้โฆษณา แถบประกาศ เมนู รวมถึงการสร้างเว็บไซต์แบบพลวัต (dynamic) ที่ สามารถโต้ตอบกับผู้ใช้ได้ นอกจากนี้ ยังสามารถสร้างงานแบบภาพเคลื่อนไหว (animation) เช่น
การสร้างรูปภาพเคลื่อนไหวที่มีการเล่นเสียงเพลงพร้อมกันในเวลาเดียวกัน เหมือนโปรแกรมแฟลช
แต่ทําได้สะดวกและรวดเร็วกว่า เพราะฉะนั ้นจึงทําให้ SWISH Max เป็ นโปรแกรมที่น่าสนใจสําหรับ ผู้ท่ีต้องการสร้างงานแบบภาพเคลื่อนไหวเพื่อนํ าเสนองานผ่านทางเว็บไซต์ รวมถึงการออกแบบ และพัฒนาเว็บไซต์ให้มีรูปแบบใหม่ท่น ี ่ าสนใจ
โดยทัว่ ไปโปรแกรม SWISH Max มีข้อดีดังนี้
มีเครื่องมือต่างๆ ที่ช่วยสร้างชิน ้ งานได้หลากหลาย (ทัง้ การสร้างภาพนิ่ งและภาพเคลื่อนไหว) ที่ สามารถใส่ลก ู เล่น (effect) ได้มากกว่า 230 แบบ
ควบคุมการทํางานด้วยสคริปต์ (script) เพื่อให้งานที่สร้างขึ้นเป็ นไปตามความต้องการ
แสดงผลในโปรแกรม Flash Player, Browser และ Media Player ได้โดยไม่ต้องติดตัง้ โปรแกรม Macromedia Flash ในเครื่องคอมพิวเตอร์
นํ าเสนองานในรูปแบบของไฟล์ Shockwave Flash (.swf) ทําให้นําไปใช้สร้างเว็บเพจได้ แปลงเป็ นไฟล์ avi เพื่อใช้ในการตัดต่อภาพยนตร์ได้
โปรแกรม SWISH Max มีลิขสิทธิซ์ อฟต์แวร์ อย่างไรก็ตามหนั งสือเล่มนี้จะใช้โปรแกรม
SWISH Max4 เวอร์ชันทดลอง (trail version) ซึ่งดาวน์โหลดได้ท่เี ว็บไซต์ www.swishzone.com
204
ยอมรับข้อตกลงการใช้งาน
(ก)
(ข)
เลือกสารบบในการติดตัง้ โปรแกรม ติดตัง้ ตัวเข้ารหัส LAME ACM เพิ่มเติม
(ค)
(ง)
ติดตัง้ โปรแกรม
(จ)
(ฉ) รูปที่ 6.1 ขัน ้ ตอนการติดตัง้ โปรแกรม SWISH Max4
6.2 การติดตัง้ โปรแกรม SWISH Max4 หนั งสือเล่มนี้ จะกล่าวถึงโปรแกรม SWISH Max เวอร์ชันทดลอง (ใช้ได้ฟรี 15 วัน) โดยหลังจาก ทําการดาวน์โหลดไฟล์ SetupSWISH Max4.exe เสร็จแล้ว ให้ทําตามขัน ้ ตอนดังนี้
1) กดดับเบิลคลิกที่ไฟล์นี้เพื่อทําการติดตัง้ โปรแกรม SWISH Max ตามขัน ้ ตอนในรูปที่ 6.1 (ก) – (ง) จากนั ้นกดป่ ุม “Install” ในรูปที่ 6.1 (จ) เพื่อเริ่มติดตัง้ โปรแกรม
205
เลือกสารบบในการติดตัง้ LameACM
(ก)
(ข)
(ค)
(ง)
เปิ ดใช้งาน
โปรแกรม Swishmax
(จ)
(ฉ) รูปที่ 6.2 ขัน ้ ตอนการติดตัง้ LameACM (ตัวเข้ารหัส MP3)
2) ระหว่างการติดตัง้ โปรแกรม ก็จะปรากฏหน้ าต่างให้ติดตัง้ LameACM (MP3 encoder) ตาม รูปที่ 6.1 (ฉ) ให้กดป่ ุม OK เพื่อทําการติดตัง้ LameACM ตามขัน ้ ตอนในรูปที่ 6.2 (ก) – (ฉ)
3) เมื่อกดป่ ุม “Finish” ในรูปที่ 6.2 (ฉ) ก็จะได้หน้ าต่างเริ่มต้นการใช้งานโปรแกรม SWISH Max4 ตามรูปที่ 6.3
4) กดป่ ุม Try ในรูปที่ 6.3 เพื่อไปที่หน้ าเว็บเพจตามรูปที่ 6.4
206
ช่องใส่รหัสผ่าน
รูปที่ 6.3 หน้ าต่างเริ่มต้นการใช้งานโปรแกรม SWISH Max4
รูปที่ 6.4 เว็บเพจสําหรับการลงทะเบียนแบบชัว่ คราวของโปรแกรม SWISH Max4
5) ป้ อนอีเมล์สําหรับการลงทะเบียนแบบชัว่ คราวในรูปที่ 6.4 จากนั ้นกดป่ ุม “Go” ก็จะได้หน้ าต่าง โปรแกรม SWISH Max4 ตามรูปที่ 6.5
6) เปิ ดอีเมล์ท่ีใช้ลงทะเบียน และเปิ ดอีเมล์ท่ีส่งมาจากบริษัท SWiSHzone.com จะพบรหัสผ่าน
ให้นํารหัสผ่านนี้ มาวางในช่องใส่รหัสผ่านในรูปที่ 6.3 ก็จะสามารถใช้งานโปรแกรม SWISH
Max4 ได้ตามปกติ
207
บอกว่ารหัสผ่านได้ถูกส่งมาที่อีเมล์ท่ล ี งทะเบียนแล้ว
รูปที่ 6.5 เว็บเพจหลังจากผ่านการลงทะเบียนแบบชัว่ คราว
6.3 ส่วนต่อประสานกับผู้ใช้ของโปรแกรม SWISH Max4 เมื่อเปิ ดโปรแกรม SWISH Max4 จะได้หน้ าต่างตามรูปที่ 6.6 โดยสามารถเริ่มต้นใช้งานได้โดยการ สร้างงานใหม่ขึ้นมา (New) ก็จะได้หน้ าต่างในรูปที่ 6.7 ซึ่งมีส่วนต่อประสานกับผู้ใช้ดังนี้
หมายเลข 1 คือเมนูเพิ่มสคริปต์ (script) และลูกเล่น (effect) ลงในซีน (scene) หมายเลข 2 คือเฟรมแสดงช่วงเวลา (timeline) ของภาพเคลื่อนไหว หมายเลข 3 คือเครื่องมือ (tools) หรือกล่องเครื่องมือที่ใช้สําหรับเครื่องมือพื้นฐานทัว่ ไป ตามที่แสดงในตารางที่ 6.1
หมายเลข 4 คือซีนจัดหน้ า (layout scene) สําหรับแสดงรูปและตัวอักษรที่จัดวางไว้ หมายเลข 5 คือ Properties ใช้แก้ไขค่าคุณสมบัตต ิ ่างๆ หมายเลข 6 คือหน้ าต่างแสดงอ็อบเจกต์ (object) ต่างๆ ที่ใส่เข้ามาในซีน หมายเลข 7 คือเมนูหลัก (main menu) หมายเลข 8 คือแถบเครื่องมือเล่นภาพยนตร์ (Play Movie)
208
รูปที่ 6.6 หน้ าต่างโปรแกรม SWISH Max4
7
8 5
1
2
3 4
รูปที่ 6.7 ส่วนต่อประสานกับผู้ใช้ของโปรแกรม SWISH Max4
6
209 ตารางที่ 6.1 รายละเอียดของเครื่องมือพื้นฐาน สัญลักษณ์
อุปกรณ์
รายละเอียด
เลือก (Select)
เลือก และย้ายวัตถุได้ตามต้องการ
เปลี่ยนรูปร่าง (Reshape)
เมื่อกดคลิกขวาที่จุดของ Shape เลือก Smooth จะ เปลี่ยนความโค้งได้
จัดการภาพ (Fill Transform)
แก้ไข หรือปรับขนาดภาพที่อยู่ใน Image เช่น ภาพถ่าย
เคลื่อนไหว (Motion)
กําหนดตําแหน่ งใหม่ ให้วัตถุ move ไปถึงตําแหน่ งนั ้น
เส้น (Line)
เขียนเส้นตรง ถ้ากําหนด effect เป็ น move จะกําหนด properties ของ Rotate to เป็ น + หรือ - ก็ได้
ดินสอ (Pencil)
วาดเส้นได้โดยอิสระ
รูปหลายเหลี่ยม (Bezier)
กําหนดจุด จนคลิกจุดเดิม หรือกดดับเบิลคลิก
ข้อความ (Text)
เขียนข้อความเป็ นภาษาไทยหรือภาษาอังกฤษ
วงกลม (Ellipse)
วาดวงกลม หรือวงรี
สี่เหลี่ยม (Rectangle)
วาดสี่เหลี่ยม
สี่เหลี่ยมมน (Autoshape)
วาดสี่เหลี่ยมที่เปลี่ยนเป็ นวงกลมหรือวงรีได้
เลื่อน (Pan)
ย้ายมุมมอง
ย่อ/ขยาย (Zoom)
การย่อและขยายมุมมอง (กด Shift จะลดขนาด)
แก้ขนาด (Scale)
ปรับขนาด กว้าง และสูง (ไม่ทําให้ frame1 เปลี่ยน ถ้า ปรับ frame20 ใน move)
แก้ขนาด (Resize)
ปรับขนาด กว้าง และสูง (มีผลต่อ frame1 ถ้าปรับ frame20 ใน move)
หมุน (Rotate)
หมุนภาพตามตําแหน่ ง Anchor
เลื่อนจุด (Distort)
ย้ายเฉพาะมุมใดมุมหนึ่ ง ไม่มีผลต่อมุมอื่น
นอกจากนี้แถบเมนูหลัก (หมายเลข 7) ในรูปที่ 6.7 รวบรวมคําสัง่ ที่นิยมใช้งานดังนี้ เมนู File ประกอบด้วย คําสั่ง
รายละเอียด
New
สร้างไฟล์ใหม่
New Movie
การสร้างไฟล์ใหม่สําหรับ Movie
Open
เรียกไฟล์ท่ต ี ้องการใช้งานโดยมีนามสกุลเป็ น .swf
210 คําสั่ง
รายละเอียด
Save
การบันทึกงานชิน ้ งานปั จจุบันที่ต้องการเก็บไว้
Save as
การบันทึกงานชิน ้ งานปั จจุบันที่ต้องการโดยเปลี่ยนเป็ นชื่อไฟล์อ่ น ื
Save All
การบันทึกงานทัง้ หมด
Close
ปิ ดชิน ้ งานปั จจุบัน
Close
ปิ ดชิน ้ งานทัง้ หมด
New Project
การสร้างไฟล์ใหม่สําหรับ Project
Open Project
เรียกไฟล์ท่ต ี ้องการใช้งานโดยมีนามสกุลเป็ น .swp
Samples
เปิ ดงานตัวอย่างที่โปรแกรม SWISH Max4 มีมาให้ เพื่อใช้ในการศึกษา
Import to Libray
การนํ าข้อความ ภาพนิ่ ง ภาพเคลื่อนไหว เสียง เข้ามาใช้งาน โดยจะวางไว้ใน
Import to Stage
การนํ าข้อความ ภาพนิ่ ง ภาพคลื่อนไหว เสียง เข้ามาใช้งาน โดยวางภาพบน
ไลบรารีก่อน แล้วจึงเรียกออกมาใช้งานทีหลัง
หน้ างานทันที Test
ทดสอบงานที่สร้าง (ก่อน export งานไปใช้จริง) ซึ่งสามารถทดสอบแบบ
Export
การส่งออกงานที่สร้างขึน ้ เพื่อนํ าไปใช้งาน (ปกติจะเป็ นไฟล์นามสกุล
เล่นผ่านโปรแกรม SWISH Max หรือทดสอบผ่านทางเบราว์เซอร์ก็ได้ *.swf แต่สามารถแปลงเป็ น .html หรือ .avi ก็ได้)
Export Seting
การตัง้ ค่าของการส่งออกงาน
Conver Video to FLV
แปลงไฟล์วีดิโอเป็ นไฟล์ FLV
Recent Movies
แสดงไฟล์งานที่เคยเปิ ดมาแล้ว
Exit
ออกจากโปรแกรม SWISH Max4
เมนู Edit ประกอบด้วย คําสั่ง
รายละเอียด
Undo
ยกเลิกขัน ้ ตอนที่กําลังทํา ณ ขณะนั ้น
Redo
ยกเลิกการกระทําของ Undo
Cut object
ตัดอ็อบเจกต์
Copy object
คัดลอกอ็อบเจกต์
Paste EMF
การวางเป็ นไฟล์ emf (ที่ตัดหรือคัดลอกมา)
Paste in Place
การวางในพื้นที่ (ที่ตัดหรือคัดลอกมา)
Paste Special
การวางแบบพิเศษ (ที่ตัดหรือคัดลอกมา)
Delete Scene
ลบอ็อบเจกต์
Select all Objects
เลือกทุกอ็อบเจกต์ในพื้นที่กําลังทํางาน (working space)
Deselect All
ยกเลิกการเลือกอ็อบเจกต์ทงั ้ หมด
211 คําสั่ง
รายละเอียด
Find
การค้นหาอ็อบเจกต์
Replace
การแทนที่
Properties
แสดงคุณสมบัติของอ็อบเจกต์ท่เี ลือก
Preference
เป็ นเมนูใช้ปรับทางเลือกการตัง่ ค่าโปรแกรมสําหรับผู้ใช้งาน
เมนู View ประกอบด้วย คําสั่ง
รายละเอียด
Toolbar
แถบเครื่องมือ (มีเมนูย่อยให้เปิ ดใช้งานต่างๆ เช่น Control bar)
Zoom
ขยาย/ลด มุมมอง (เช่น Zoom in, Zoom out, View at 100%)
Show
แสดงไม้บรรทัดเพื่ออํานวยความสะดวกในการกําหนดระยะ โดยจะมีเมนูย่อย เช่น Show rulers และ Show grid เป็ นต้น
Guides
ระบุเส้นกริดแบบแนวนอน (Horizontal) และแนวตัง้ (Vertical)
Snap to Grid
ให้อ็อบเจกต์ว่งิ เข้าหาเส้นกริด (เมื่อนํ าอ็อบเจกต์มาวางใกล้เส้นกริด) เพื่อทําให้ง่าย ต่อการวางอ็อบเจกต์ให้อยู่ในแนวเดียวกัน
เมนู Insert ประกอบด้วย คําสั่ง
รายละเอียด
Scene
การแทรกซีน (ภายในชิน ้ งาน)
Button
การแทรกป่ ุม (ภายในชิน ้ งาน)
Movie clip
การแทรกคลิปวิดิโอ (ภายในชิน ้ งาน)
External media
การแทรกสื่อมีเดียภายนอก (ภายในชิน ้ งาน)
Import Sound
การแทรกเสียง (ภายนอกชิน ้ งาน)
Import Video
การแทรกไฟล์วิดิโอ (ภายนอกชิน ้ งาน)
Import Image
การแทรกภาพ โดยทัว่ ไปเป็ นภาพนิ่ ง แต่สามารถแทรกภาพเคลื่อนไหว
ประเภท gif ได้ (ภายนอกชิน ้ งาน)
Import Animation
การแทรกภาพเคลื่อนไหวประเภท swf, exe หรือ gif (ภายนอกชิน ้ งาน)
Import Vector
การแทรกภาพนิ่ งประเภท vector เช่นไฟล์ wmf (ภายนอกชิน ้ งาน)
Import Text
การแทรกข้อความ (ปรับแต่งคุณสมบัติต่างๆ ของข้อความได้ท่ี Properties)
Effect
การแทรกลูกเล่น (effect) ให้กับอ็อบเจกต์มีให้เลือกมากกว่า 230 แบบ
Script
การแทรกสคริปต์
Insert Frame
การแทรกเฟม 1 ครัง้ (F5)
Delete Frame
การลบเฟม 1 ครัง้ (Shift+F5)
Insert Second
การแทรกจํานวนวินาทีของลูกเล่นครัง้ ที่ 2 (Ctrl+F5)
212 คําสั่ง Delete Second
รายละเอียด การแทรกจํานวนวินาทีของลูกเล่นครัง้ ที่ 2 (Ctrl+Shift+F5)
เมนู Modify ประกอบด้วย คําสั่ง
รายละเอียด
Movie
เปลี่ยน Properties ของ Movie (Ctrl+J)
Scenes
แบ่งซีนออกเป็ นซีนเล็กๆ
Convert
เปลี่ยน Object ที่เลือกเป็ นรูปแบบอื่นๆ เช่นเป็ นป่ ุม (button) เป็ น ภาพเคลื่อนไหว (Sprite) หรือเป็ นรูปทรง (Shape) เป็ นต้น
เมนู Control ประกอบด้วย คําสั่ง Play movie
รายละเอียด แสดงภาพเคลื่อนไหวทัง้ ไฟล์ โดยจะเริ่มจากซีนแรกไปจนถึงซีนสุดท้าย (ที่ได้กําหนดไว้ในโปรแกรม)
Play Timeline
การแสดงผลของงานของลูกเล่นใน Timeline
Play effect
ทดสอบการแสดงผลของลูกเล่น
Preview Frame
ดูการแสดงผลในเฟรม
Stop
หยุดการแสดงผลของภาพเคลื่อนไหว
Step forward
แสดงผลของเฟรมต่อไป
Step back
ย้อนกลับไปดูการแสดงผลของเฟรมก่อนหน้ านี้ 1 เฟรม
Cue to End
ดูเฟรมสุดท้ายของซีน
Rewind to start
ดูเฟรมแรกสุดของซีน
เมนู Tools ประกอบด้วย คําสั่ง
รายละเอียด
Update Content
ปรับปรุงเนื้ อหา เช่น Project Movie เป็ นต้น
FTP
ปรับแต่งการ upload ไฟล์ชน ิ้ งานขึ้น webserver
Preference
ปรับทางเลือกสําหรับผู้ใช้
Customize
ปรับแต่งโปรแกรมให้เหมาะกับความต้องการผู้ใช้
Keyboard map
แสดงคีย์ลัด
เมนู Window ประกอบเมนูท่แ ี สดง Panel ของโปรแกรม SWISH Max4 ทัง้ หมด เมนู Help ประกอบด้วยคู่มือและตัวอย่างการใช้งานโปรแกรม SWISH Max4 ทัง้ หมด
213
รูปที่ 6.8 หน้ าต่าง “New Movie or Project” ของโปรแกรม SWISH Max4
รูปที่ 6.9 แสดงการตัง้ ค่าคุณสมบัตข ิ องภาพยนตร์ (Movie Properties)
6.4 การสร้างชิน ้ งานด้วยโปรแกรม SWISH Max4 ในที่นี้จะแสดงตัวอย่างการสร้างชิน ้ งานด้วยโปรแกรม SWISH Max4 ดังนี้ 1) เปิ ดโปรแกรม SWISH Max4 ขึ้นมา จะได้หน้ าต่าง “New Movie or Project” ตามรูปที่ 6.8 2) เลือก default และกดป่ ุม OK ในรูปที่ 6.8 จะได้หน้ าต่างในรูปที่ 6.9 จากนั ้นคลิกที่ปุ่ม Movie
properties (หมายเลข 5 ในรูปที่ 6.7) และกําหนดขนาดความกว้างเท่ากับ 500 pixels, ความสูง เท่ากับ 400 pixels, และ Frame Rate เท่ากับ 25 ก็จะได้หน้ าต่างตามรูปที่ 6.10
214
รูปที่ 6.10 หน้ าต่างพื้นที่ใช้งานที่ได้กําหนดตามรูปที่ 6.9
รูปที่ 6.11 การเลือกเมนูย่อยแทรกไฟล์เสียง (Import Sound), แทรกไฟล์วีดีโอ (Import Video), แทรกไฟล์ รูปภาพ (Import Image), และแทรกข้อความ (Import Text) ในเมนู Insert
6.4.1 การแทรกไฟล์รูปภาพ เมื่อได้หน้ าต่างพื้นที่ใช้งานตามรูปที่ 6.10 ถ้าต้องการแทรกไฟล์รูปภาพเข้าไปในพื้นที่ใช้งานก็ทําได้
ดังนี้ ให้เลือกที่เมนู Insert → Import Image ตามรูปที่ 6.11 จากนั ้นเลือกรูปในสารบบที่ต้องการ แล้วกดป่ ุม “Open” ในรูปที่ 6.12 ก็จะได้รูปนั ้นมาปรากฏบนพื้นที่ใช้งานดังรูปที่ 6.13
215
รูปที่ 6.12 การเลือกไฟล์รูปภาพในเมนูย่อย Import Image
รูปภาพที่แทรกเข้ามา
รูปที่ 6.13 สัญรูปและรูปภาพที่แทรกเข้ามา
216
รูปที่ 6.14 การเลือกไฟล์เสียงในเมนูย่อย Import Sound
รูปที่ 6.15 สัญรูปของไฟล์เสียงและไฟล์รูปภาพในหน้ าต่างแสดงอ็อบเจกต์
รูปที่ 6.16 การกดป่ ุม Play Movie
6.4.2 การแทรกไฟล์เสียง ในทํานองเดียวกันถ้าต้องการแทรกไฟล์เสียงเข้าไปในพื้นที่ใช้งานในรูปที่ 6.10 ก็ทําได้ดังนี้ ให้ไปที่ เมนู Insert → Import Sound ตามรูปที่ 6.11 จากนั ้นเลือกไฟล์เสียงในสารบบที่ต้องการ แล้วกด
ป่ ุม “Open” ในรูปที่ 6.14 จะได้สัญรูปของไฟล์เสียงปรากฏในหน้ าต่างแสดงอ็อบเจกต์ (หมายเลข 6
ในรูปที่ 6.7) ตามรูปที่ 6.15 จากนั ้นทดสอบฟั งเสียงโดยการคลิกที่ปุ่ม Play Movie (Ctrl+Enter)
ตามรูปที่ 6.16 จะได้ยินเสียงเพลงที่ได้แทรกเข้ามา
217
รูปที่ 6.17 การเลือกไฟล์วีดีโอในเมนูย่อย Import Video
รูปที่ 6.18 หน้ าต่าง Import Video
6.4.3 การแทรกไฟล์วีดีโอ ในทํานองเดียวกันถ้าต้องการแทรกไฟล์วีดีโอเข้าไปในพื้นที่ใช้งานในรูปที่ 6.10 ก็ทําได้ดังนี้ ไปที่ เมนู Insert → Import Video ตามรูปที่ 6.11 จากนั ้นเลือกไฟล์วีดีโอในสารบบที่ต้องการ แล้วกด
ป่ ุม “Open” ในรูปที่ 6.17 ก็จะแสดงหน้ าต่าง Import Video ในรูปที่ 6.18 ให้เลือกช่อง Import
218
วีดีโอที่แทรกเข้ามา
รูปที่ 6.19 สัญรูปและวีดิโอที่แทรกเข้ามา
As เป็ น Embedded Video (ฝั งไฟล์วีดีโอเข้าไปในไฟล์แฟลช) และคลิกที่ปุ่ม Import จากนั ้นทดสอบ
การใช้งานโดยการกดป่ ุม Play Movie (Ctrl+Enter) ตามรูปที่ 6.16 จะเล่นไฟล์ Video ที่นําเข้ามา
จะเล่นทัง้ รูปและเสียงดังรูปที่ 6.19
6.4.4 การแทรกข้อความ นอกจากนี้ถ้าต้องการแทรกข้อความเข้าไปในพื้นที่ใช้งานในรูปที่ 6.10 ก็ทําได้ดังนี้ ไปที่เมนู Insert
→ Import Text ตามรูปที่ 6.11 จากนั ้นเลือกไฟล์ข้อความ (นามสกุล .txt) ในสารบบที่ต้องการ แล้วกดป่ ุม “Open” ในรูปที่ 6.20 ก็จะผลลัพธ์ตามรูปที่ 6.21
หมายเหตุ นอกจากนี้โปรแกรม SWISH Max ได้เตรียมหน้ าต่างเครื่องมือ (หมายเลข 3 ในรูปที่ 6.7)
สําหรับใช้สร้างข้อความโดยตรงดังแสดงในรูปที่ 6.22 กล่าวคือถ้าต้องการเขียนข้อความลงในพื้นที่
ใช้งาน (หมายเลข 4 ในรูปที่ 6.7) ก็ให้กดเลือกที่สัญรูป
และคลิกที่พ้น ื ที่ใช้งาน จากนั ้นพิมพ์
ข้อความ “มหาวิทยาลัยราชภัฏนครปฐม” ก็จะได้ผลลัพธ์ตามรูปที่ 6.21 เช่นกัน
219
รูปที่ 6.20 การเลือกไฟล์ข้อความในเมนูย่อย Import Text
ข้อความที่แทรกเข้ามา
รูปที่ 6.21 สัญรูปและข้อความที่แทรกเข้ามา
220
รูปที่ 6.22 หน้ าต่างเครื่องมือ (หมายเลข 3 ในรูปที่ 6.6)
รูปที่ 6.23 การเปลี่ยน (ซ้าย) ขนาดของเส้น และ (ขวา) สีเส้น ในเมนู Properties
6.4.5 การวาดเส้นและวาดรูป การวาดเส้นลงในชิน ้ งานสามารถทําได้โดยใช้เครื่องมือ เครื่องมือในรูปที่ 6.22) หรือใช้เครื่องมือ
สําหรับวาดเส้นตรง (อยู่ในหน้ าต่าง
สําหรับวาดเส้นโค้ง โดยผู้ใช้สามารถเปลี่ยนลักษณะ
ของเส้น (เช่น ความหนา หรือสี) ในเมนู Properties ตัวอย่างเช่น กําหนดค่าความหนา (Thick-
ness) เพื่อเปลี่ยนขนาดของเส้นตามรูปที่ 6.23 (ซ้าย) หรือกําหนดสีของเส้นตามรูปที่ 6.23 (ขวา) ที่สัญรูป
นอกจากนี้โปรแกรม SWISH Max ยังมีเครื่องมือสร้างรูปที่ช่ ือว่า Autoshape เมื่อกดเลือก จะแสดงเมนู 3 รายการคือ 2D, 3D และ Frames ถ้าสมมุติว่าต้องการสร้างรูปดาว
แบบสองมิติ ก็ให้เลือกที่รายการ 2D → Star ตามรูปที่ 6.24 (ซ้าย) แล้วนํ ามาวาดที่พ้ืนที่ใช้งาน ก็จะได้รูปดาวตามรูปที่ 6.24 (ขวา)
221
รูปที่ 6.24 (ซ้าย) การเลือกรูปดาวในสัญรูป Autoshape และ (ขวา) รูปดาวในพื้นที่ใช้งาน
6.4.6 การบันทึกชิน ้ งาน เมื่อสร้างชิน ้ งานเสร็จแล้ว ถ้าต้องการบันทึกชิน ้ งานที่สร้างขึ้น ก็ทําได้โดยการคลิกเลือกที่เมนู File
→ Save และตัง้ ชื่อไฟล์ตามต้องการ แล้วกดป่ ุม Save สังเกตว่าเครื่องหมาย * ตรงแถบชื่อเรื่อง (Title bar) จะหายไป
6.4.7 การส่งออกชิน ้ งาน โปรแกรม SWISH Max สามารถส่งออก (export) ชิน ้ งานจากไฟล์นามสกุล .swi (นามสกุลของไฟล์
ในโปรแกรม SWISH Max) ไปเป็ นไฟล์นามสกุล .swf, .html, .exe หรือ .avi และสามารถนํ าไปใช้
นํ าเสนอชิน ้ งานในเว็บไซต์ วีดีโอ หรือสื่ออื่นๆ ได้ โดยการคลิกเลือกที่เมนู File → Export และเลือก
ชนิ ดของไฟล์ท่ต ี ้องการเปลี่ยน เช่น swf และเลือกสารบบที่ต้องเก็บไฟล์ท่ส ี ่งมาไว้ และกดป่ ุม save
6.5 การใส่ลูกเล่น โปรแกรม SWISH Max สามารถใส่ลูกเล่น (Effect) เพื่อทําให้อ็อบเจกต์สามารถแสดงผลในรูปของ ภาพเคลื่อนไหวได้หลากหลาย ในที่นี้จะขอยกตัวอย่างลูกเล่นที่น่าสนใจดังนี้
Fade in ใช้สําหรับแสดงอ็อบเจกต์ขึ้นมาอย่างช้าๆ ในตําแหน่ งที่ต้องการ
Fade out ใช้สําหรับแสดงอ็อบเจกต์ให้หายไปอย่างช้าๆ ในตําแหน่ งที่ต้องการ
Zoom in ใช้สาํ หรับแสดงการขยายอ็อบเจกต์ (เหมือนมองอ็อบเจกต์ในระยะใกล้)
Zoom out ใช้สําหรับแสดงการย่ออ็อบเจกต์ (เหมือนมองอ็อบเจกต์ในระยะไกล)
222
1 2
3
4
รูปที่ 6.25 ขัน ้ ตอนการใส่ลูกเล่นลงในอ็อบเจกต์ท่ต ี ้องการ
Slide in ใช้สําหรับแสดงการเคลื่อนที่ของอ็อบเจกต์เป็ นเส้นตรง จากภายนอกหน้ าจอเข้ามาสู่
ภายในจอ โดยจะมีคําสัง่ ย่อยให้เลือกว่าต้องการให้เคลื่อนที่มาจากทิศทางใด
Slide out ใช้สําหรับแสดงการเคลื่อนที่ของอ็อบเจกต์เป็ นเส้นตรง จากภายในหน้ าจอไปสู่
ภายนอกจอ โดยจะมีคําสัง่ ย่อยให้เลือกว่าต้องการให้เคลื่อนที่ออกไปในทิศทางใด
Blur ใช้สําหรับแสดงผลอ็อบเจกต์อย่างช้าๆ โดยเริ่มจากภาพที่ไม่ชัดจนเปลี่ยนมาเป็ นภาพที่ชด ั
Appear into position ใช้สําหรับแสดงอ็อบเจกต์ให้ปรากฏขึ้นมาอย่างช้าๆ โดยจะมีลูกเล่น
ย่อยให้เลือกอีกว่าต้องการให้หายหรือปรากฏในรูปแบบใด
Disappear from position ใช้สําหรับแสดงอ็อบเจกต์ในหายไปอย่างช้าๆ โดยจะมีลูกเล่นย่อย
ให้เลือกอีกว่าต้องการให้หายไปในรูปแบบใด
Looping continuously ใช้สําหรับแสดงอ็อบเจกต์ในลักษณะทําซํา้ แบบต่อเนื่ องไปเรื่อยๆ
โดยจะมีลูกเล่นย่อยให้เลือกอีกว่าต้องการแสดงซํา้ ในรูปแบบใด
One off ใช้สําหรับแสดงอ๊อบเจกต์โดยไม่แสดง frame แรกโดยจะมีลูกเล่นย่อยให้เลือกอีก
ว่าต้องการแสดงแบบใด
Return to start ใช้สําหรับแสดงผลอ็อบเจกต์ในลักษณะการกลับสู่จุดเริ่มต้นโดยจะมีลูกเล่น
ย่อยให้เลือกอีกว่าต้องการให้กลับสู่จุดเริ่มต้นในรูปแบบใด
6.5.1 ตัวอย่างการใส่ลก ู เล่นให้กับชิน ้ งาน การใส่ Effect ให้กับชิน ้ งาน ทําได้โดยกดเลือกอ็อบเจกต์ท่ีต้องการใส่ลูกเล่น (เช่น รูปดาว) ตาม รูปที่ 6.25 (หมายเลข 1) จากนั ้นกดป่ ุม Add
Effect (หมายเลข 2) และเลือกลูกเล่นที่ต้องการ
เช่น ถ้าเลือกลูกเล่นแบบจางเข้ามา ก็ให้กดเลือกที่ Fade → Fade In (หมายเลข 3 – 4)
223
ใส่ค่า 20
รูปที่ 6.26 การปรับแต่งลูกเล่นของ Fade In
(ก) เฟรมที่ 1
(ข) เฟรมที่ 10
(ค) เฟรมที่ 20
รูปที่ 6.27 ผลลัพธ์ท่ไี ด้จากการใช้ลก ู เล่น Fade In ณ เฟรมต่างๆ
นอกจากนี้ยังสามารถปรับแต่งลูกเล่นได้โดยกดเลือกที่เมนู Effect ในหน้ าต่างแสดงอ็อบ
เจกต์ (หมายเลข 6 ในรูปที่ 6.7) ซึ่งจะแสดงคุณสมบัติของลูกเล่นที่ใช้อยู่ปรากฏขึ้นมา โดยในที่นี้
จะปรากฏ Fade In ตามรูปที่ 6.26 จากนั ้นจึงสามารถปรับแต่งค่าตามต้องการได้ เช่น สมมุติว่า
เปลี่ยนการแสดงผลหน่ วยเวลาจาก 10 เป็ น 20 ตามรูปที่ 6.26 จากนั ้นทดสอบโดยการกดป่ ุม Play
Movie
(หมายเลข 8 ในรูปที่ 6.7) ก็จะได้ผลลัพธ์ ณ ตําแหน่ งของเฟรมที่ 1, 10 และ 20
ดังแสดงในรูปที่ 6.27
6.6 การใส่สคริปต์เบื้องต้น โปรแกรม SWISH Max มีสคริปต์เตรียมไว้ให้มากมาย ในที่นี้จะกล่าวถึงสคริปต์ท่น ี ิ ยมใช้งานดังนี้
6.6.1 การใส่สคริปต์เกี่ยวกับการควบคุมการแสดงผล การใส่สคริปต์เพื่อควบคุมเฟรมมีหลายรูปแบบ ในที่นี้จะยกตัวอย่างการกระโดดไปยังเฟรมที่ต้องการ โดยเลือกที่เมนู Add Script → Movie Control → Goto and stop → gotoAndStop(FRAME)
224
1 2
3
4
รูปที่ 6.28 ขัน ้ ตอนการใส่สคริปต์สําหรับการกระโดดไปยังเฟรมที่ต้องการ (gotoAndPlay)
รูปที่ 6.29 การแก้ไขสคริปต์ในคําสัง่ gotoAndPlay(FRAME) ตารางที่ 6.2 สคริปต์อ่ น ื ๆ ที่เกี่ยวข้องกับควบคุมการแสดงผล สคริปต์
รายละเอียด
Movie Control>gotoAndPlay>gotoAndPlay(FRAME)
แสดงเฟรมที่ต้องการ
Movie Control>gotoAndPlay>nextFrameAndPlay()
แสดงเฟรมถัดไป
Movie Control>gotoAndPlay>prevFrameAndPlay()
แสดงเฟรมก่อนหน้ า
Movie Control>gotoAndPlay>nextSceneAndPlay()
แสดงซีน (Scene) ถัดไป
Movie Control>gotoAndPlay>prevSceneAndPlay()
แสดงซีน (Scene) ก่อนหน้ า
ตามรูปที่ 6.28 ก็จะปรากฏหน้ าต่างสคริปต์ในรูปที่ 6.29 จากนั ้นให้ทดลองแก้ไขสคริปต์โดยเปลี่ยน
ค่า onFrame จาก 1 เป็ น 20 และค่า GotoAndPlay จาก 1 เป็ น 10 ตามรูปที่ 6.28 ซึ่งในการ
ทํางาน เมื่อเล่นไปถึงเฟรมที่ 20 แล้วจะกระโดดกลับมาที่เล่นเฟรมที่ 10 (ซํา้ ไปเรื่อยๆ) ตารางที่ 6.2 แสดงตัวอย่างสคริปต์อ่ น ื ๆ ที่เกี่ยวข้องกับควบคุมการแสดงผล
225
1
2
3
รูปที่ 6.30 ขัน ้ ตอนการใส่สคริปต์เพื่อเชื่อมโยงไปยังภายนอก (getURL)
รูปที่ 6.31 การแก้ไขสคริปต์ในคําสัง่ getURL
6.6.2 การใส่สคริปต์เพื่อสร้างการเชื่อมโยง การใส่สคริปต์เพื่อเชื่อมโยงไปยังภายนอก เช่น มหาวิทยาลัยราชภัฏนครปฐม (www.npru.ac.th)
ทําได้โดยการเลือกชิน ้ งานหรืออ็อบเจกต์ท่ีต้องการ และกดเลือกที่เมนู Add Script → Browser/
Network → getURL ตามรูปที่ 6.30 จากนั ้นใส่ช่ ือเว็บไซต์ http://www.npru.ac.th ในช่อง URL และเลือก _blank ในช่อง Window (นั่ นคือการสร้างหน้ าเพจขึ้นมาใหม่) ดังแสดงในรูปที่ 6.31
แล้วทําการ Export ไฟล์ออกมาเป็ นโดยการเลือกที่เมนู File → Export → HTML+SWF... ก็จะ
ได้ไฟล์ Movie1.html
และ Movie1.swf
โดยจะต้องนํ าไปวางในสารบบ www เพื่อทดสอบการ
ทํางาน ซึ่งทําได้โดยการเปิ ดเบราว์เซอร์ขึ้นมาและใส่ช่ ือ URL เป็ น 127.0.0.1/Movie1.html ก็จะ ปรากฏหน้ าเว็บตามรูปที่ 6.32 มหาวิทยาลัยราชภัฏนครปฐม
จากนั ้ นให้กดคลิกที่รูปดาว ก็จะได้หน้ าต่างใหม่เป็ นหน้ าเว็บของ
226
คลิกที่รูปดาว
รูปที่ 6.32 การทดสอบการทํางานของสคริปต์ getURL
รูปที่ 6.33 ขัน ้ ตอนการใส่สคริปต์เกี่ยวกับเสียง
6.6.3 การใส่สคริปต์เกี่ยวกับเสียง การใส่สคริปต์เกี่ยวกับเสียงทําได้โดยการเลือกเฟรมหรือซีนที่ต้องการใส่เสียง ตัวอย่างเช่น สมมุติว่า เลือก Scene_1 และเลือกวินาทีแรกตามรูปที่ 6.33 ให้กดเลือกที่เมนู Add Script → Sound →
playSound(…) และกดป่ ุม Import ตามรูปที่ 6.34 จากนั ้นเลือกไฟล์เสียงที่ต้องการและคลิกที่ปุ่ม
Open (เช่นเดียวกับรูปที่ 6.14) ก็จะแสดงสัญรูปเพลงปรากฏอยู่ในรายการตามรูปที่ 6.35 และใน
ส่วนของหน้ าต่างสคริปต์ ให้ใส่ช่ ือไฟล์เสียงที่จะแทรกอยู่ในสคริปต์ ในทํานองเดียวกันถ้าต้องการ ทดสอบการทํางานก็ให้กดป่ ุม Play Movie (ตามรูปที่ 6.16)
6.7 สรุปท้ายบท บทนี้ ได้อธิบายพื้นฐานการใช้งานโปรแกรม SWISH Max ที่ใช้สําหรับสร้างไฟล์ภาพเคลื่อนไหว
แบบแฟลช โดยเริ่มจากวิธีการติดตัง้ โปรแกรม SWISH Max การใช้เมนูและเครื่องมือต่างๆ ของ
โปรแกรม SWISH Max รวมทัง้ คําสั่งพื้นฐานที่จําเป็ นสําหรับการนํ าไปประยุกต์ใช้งานร่วมกับ โปรแกรม SCILAB เพื่อสร้างสื่อการเรียนการสอน ซึ่งจะอธิบายในบทต่อไป
227
รูปที่ 6.34 ขัน ้ ตอนการใส่ สคริปต์ เกี่ยวกับเสียง (ต่อ)
รูปที่ 6.35 การใส่ไฟล์เสียงเข้าไปในเฟรมที่ต้องการ
6.8 แบบฝึ กหัดท้ายบท 1. จงอธิบายประวัตค ิ วามเป็ นมาของโปรแกรม SWISH Max พอสังเขป 2. จงอธิบายการใช้งาน Import to Libray และ Import to Stage ว่าแตกต่างกันอย่างไร 3. จงยกตัวอย่างลูกเล่น (effect) ที่ใช้ได้ในโปรแกรม SWISH Max มา 5 ลูกเล่น 4. ถ้าต้องการแสดงผลอ็อบเจกต์ (object) โดยเริ่มจากภาพที่ไม่ชด ั ให้เปลี่ยนมาเป็ นภาพที่ชด ั ควรใช้ ลูกเล่น (effect) ใด
228 5. ถ้าต้องการสร้างวัตถุเพื่อเชื่อมโยงเว็บไซต์ Google ควรใช้สคริปต์อะไร 6. จงสร้างชิน ้ งานเพื่อนํ าเสนอรูปตัวเอง ใส่เสียงเพลง และลูกเล่นไม่น้อยกว่า 20 วินาที
229
บทที่ 7 การสร้างสื่อการสอนด้วยโปรแกรม SWISH Max และ SCILAB
ในบทนี้ จะกล่าวถึงการเขียนแอคชันสคริปต์ (AS: action script) ของโปรแกรม SWISH Max เพื่อ นํ ามาประยุกต์ใช้สร้างสื่อการสอนร่วมกับโปรแกรม SCILAB โดยเริ่มจากประวัติความเป็ นมาของ แอคชันสคริปต์ การส่งหรือโหลดข้อมูลระหว่างไฟล์ภาพเคลื่อนไหวแบบแฟลช (flash animation) กับไฟล์ PHP และแสดงตัวอย่างการสร้างสื่อการสอนผ่านเว็บไซต์ท่ีมีภาพเคลื่อนไหวแบบแฟลช
ร่ ว มกั บ โปรแกรม SCIlAB ซึ่ งประกอบด้ ว ย การหากระแสภายในวงจรไฟฟ้ า การหาตั ว
คูณร่วมน้ อย และการวาดกราฟสองมิติ
7.1 ประวัติความเป็ นมาของแอคชันสคริปต์ แอคชันสคริปต์ (หรือเรียกสัน ้ ๆ ว่า AS) เป็ นภาษาที่ใช้งานกับไฟล์แฟลชเป็ นหลัก โดยสามารถ
เขียนได้จากโปรแกรมอื่นๆ เช่น AIR (Adobe integrated runtime) [14], FlexBuilder [15] หรือ FlashDevelop [16] โดยประโยชน์ของ AS คือช่วยให้ผู้ท่ีใช้งานแฟลชสามารถโต้ตอบกับอ็อบเจกต์
ต่างๆ ได้ นอกจากนี้ เมื่อ AS พัฒนาไปมากขึ้น การเชื่อมต่อกับแหล่งข้อมูลอื่นๆ ก็ทําได้มากขึ้น
รวมถึ ง บางสิ่ ง ที่ แ ฟลชต้ อ งอาศั ย ภาษาอื่ นช่ ว ยในอดี ต ก็ ส ามารถทํ า ได้ ด้ ว ยตนเองในปั จจุ บั น เพราะฉะนั ้นนั กพัฒนา (developer) จึงจําเป็ นต้องติดตามการพัฒนาเหล่านี้อยู่สมํ่าเสมอ
7.2 ขัน ้ ตอนการเขียนสคริปต์โปรแกรม SWISH Max ร่วมกับ SCILAB การเขียนสคริปต์โปรแกรม SWISH Max ร่วมกับ SCILAB สามารถอธิบายได้ตามแผนภาพ บล็อกตามรูปที่ 7.1
230
Flash Animation (.swf)
โปรแกรม SWISH Max
ไฟล์ PHP
โปรแกรม Dreamweaver
SCILAB
โปรแกรม SCILAB
รูปที่ 7.1 แผนภาพบล็อกแสดงการเขียนสคริปต์โปรแกรม SWISH Max ร่วมกับโปรแกรม SCILAB
7.2.1 การส่งหรือโหลดข้อมูลระหว่างไฟล์ภาพเคลื่อนไหวแบบแฟลชกับไฟล์ PHP การเขียนแอคชันสคริปต์ในโปรแกรม SWISH Max เพื่อส่งหรือโหลดข้อมูลระหว่างไฟล์ภาพ เคลื่อนไหวแบบแฟลช (.swf) กับไฟล์ PHP มีสคริปต์ท่ใี ช้งานหลักดังนี้ สคริปต์การส่งข้อมูลไปยังไฟล์ PHP 1
sendAndLoad(url, target, method);
เมื่อ url คือชื่อไฟล์ท่ีรับส่งข้อมูล (เช่น test.php), target คือตัวแปรอ็อบเจกต์ท่ีเป็ น LoadVars หรือ XML, และ method คือวิธีการส่งข้อมูล (เช่น POST, GET เป็ นต้น) สคริปต์การโหลดข้อมูลมายังไฟล์ภาพเคลื่อนไหวแบบแฟลช 1
target.onLoad = function(){
3
}
2
Parmeter1 = Parmeter2;
เมื่อ target คือตัวแปรอ็อบเจกต์ท่ีเป็ น LoadVars หรือ XML, Parameter1 คือตัวแปรรับข้อมูลใน สคริปต์ของโปรแกรม SWISH Max, และ Parameter2 คือตัวแปรส่งข้อมูลจากไฟล์ PHP
7.2.2 ตัวอย่างการสร้างเว็บไซต์ท่ม ี ีภาพเคลื่อนไหวแบบแฟลชร่วมกับ SCILAB ในหัวข้อนี้ จะแสดงตัวอย่างการสร้างสื่อการสอนผ่านเว็บไซต์ท่ีมีภาพเคลื่อนไหวแบบแฟลชร่วมกับ โปรแกรม SCIlAB ทัง้ สามแบบดังนี้
231 7.2.2.1 การคํานวณหากระแสไฟฟ้ าแบบภาพเคลื่อนไหว จากกฎของโอห์ม (Ohm’s law) กระแสไฟฟ้ า (I) ภายในวงจรไฟฟ้ าหาได้จาก I=
V R
(แอมแปร์)
โดยที่ V คือแรงดันไฟฟ้ ามีหน่ วยเป็ นโวลต์ และ R คือตัวความต้านทานมีหน่ วยเป็ นโอห์ม (ohm) ดังนั ้นการสร้างสื่อการสอนผ่านเว็บไซต์เพื่อใช้คํานวณหากระแสไฟฟ้ าในวงจรไฟฟ้ าทําได้ดังนี้
1) เปิ ดโปรแกรม Adobe Dreamweaver CS 5.5 ขึ้นมา และให้ตงั ้ ชื่อไฟล์ว่า test.php เก็บไว้ใน สารบบ C:\AppServ\www\Flashtoscilab โดยให้พิมพ์โค้ดในไฟล์ดังนี้
โค้ดภายในไฟล์ test.php 1
<?php
2 3 4
$V = stripslashes($_POST['V']);
//รับข้อมูลจากแฟลชให้ $V
$R = stripslashes($_POST['R']);
//รับข้อมูลจากแฟลชให้ $R
$output = "";
5
//เริ่มต้นตัวแปร
$code1 = "result = $V/$R;\nsavematfile('elec.txt','result');\nexit;"; ตัวแปรชื่อว่า $code1
6
file_put_contents("elec.sce", $code1);
//สร้างไฟล์ช่ อ ื elec.sce
7
$path=$_SERVER["SystemRoot"];
9
exec($com);
10
$output = number_format(file_get_contents("elec.txt"));
8
//เขียนโค้ดลงใน
$com = "$path/scilab-4.1.2/bin/Scilex.exe -nwni -nb -f elec.sce";
11 12 13
?>
//ประมวลผลไฟล์สคริปต์
echo ("&total=$output");
//ส่งผลลัพธ์ (total) ไปยังไฟล์แฟลช
echo ("&code=$code1");
//ส่งผลลัพธ์ (code) ไปยังไฟล์แฟลช
2) เปิ ดโปรแกรม SWISH Max ขึ้นมา และออกแบบฟอร์มของภาพเคลื่อนไหวแบบแฟลช โดยมี การกําหนด Textbox ที่สําคัญดังนี้ (ตามรูปที่ 7.2) Textbox
รายละเอียด
คุณสมบัติ
V
ใช้รับข้อมูล V แรงดันไฟฟ้ า
Input
R
ใช้รับข้อมูล R ตัวต้านทาน
Input
total_a
แสดงค่า I (กระแส)
Dynamic
total_b
แสดงโค้ดจากโปรแกรม SCILAB
Dynamic
232
รูปที่ 7.2 การกําหนดคุณสมบัติของตัวแปร R, V, total_a และ total_b
รูปที่ 7.3 คุณสมบัติสําหรับความสว่างของหลอดไฟ (Light)
3) ในที่นี้ภาพเคลื่อนไหวจะเป็ นแสงสว่างของหลอดไฟที่มีขนาดเล็กหรือขนาดใหญ่ โดยถ้า R มีค่า มาก หลอดไฟก็จะสว่างน้ อย แต่ถ้า R มีค่าน้ อย หลอดไฟก็จะสว่างมาก โดยในที่นี้จะมีการใช้
Shape ซึ่งกําหนดค่าเริ่มต้นความกว้างเท่ากับ 0 และความยาวเท่ากับ 0 และตัง้ ชื่อว่า Light
ดังแสดงในรูปที่ 7.3 - 7.4
233
R V button
รูปที่ 7.4 การออกแบบส่วนต่อประสาน และการตัง้ ชื่อ Shape เท่ากับ Light
4) จากนั ้นคลิกป่ ุม “คํานวณ” (ที่สร้างขึ้นจาก Shape และตัง้ ชื่อว่า button) และคลิกที่ Tab สคริปต์ และพิมพ์สคริปต์ดังต่อไปนี้
สคริปต์ 1 2 3 4
on (release){
if (R.text >= 100){
//ตรวจสอบค่า R ว่ามีขนาดเท่าใด
Light._xscale = 0; Light._yscale = 0;
5
}else if(R.text >= 90){
6
Light._xscale = 10;
8
}else if(R.text >= 80){
7 9
Light._yscale = 10; Light._xscale = 20;
10
Light._yscale = 20;
11
}else if(R.text >= 70){
12
Light._xscale = 30;
234 13
Light._yscale = 30;
14
}else if(R.text >= 60){
16
Light._yscale = 40;
17
}else if(R.text >= 50){
19
Light._yscale = 50;
15
Light._xscale = 40;
18
Light._xscale = 50;
20
}else if(R.text >= 40){
21
Light._xscale = 60;
22
Light._yscale = 60;
23
}else if(R.text >= 30){
24
Light._xscale = 70;
26
}else if(R.text >= 20){
27
Light._xscale = 80;
29
}else if(R.text >= 10){
25
Light._yscale = 70;
28
Light._yscale = 80;
30
Light._xscale = 90;
31
Light._yscale = 90;
32
}else if(R.text >= 5){
33
Light._xscale = 100;
34
Light._yscale = 100;
35
}else if(R.text >= 1){
36
Light._xscale = 120;
37 38
}
Light._yscale = 120;
39
var lv = new LoadVars(); lv.V = V.text;
//ส่งค่าตัวแปร V.text ให้กับ lv.V
41
lv.R = R.text;
//ส่งค่าตัวแปร R.text ให้กับ lv.R
42
lv.sendAndLoad("test.php",lv, "POST");
40
43
lv.onLoad = function(){
44
total_a.text = this.total;
45
//ส่งค่า V, R ไปยัง test.php ในรูปแบบ POST
//โหลดผลลัพธ์จาก php มายังตัวแปรในแฟลช
//รับค่าตัวแปร total มายังตัวแปร total_a.text (ภายในแฟลช)
total_b.text = this.code; //รับค่าตัวแปร code มายังตัวแปร total_b.text (ภายในแฟลช)
46 47
//สร้างตัวแปรอ็อบเจกต์ช่ อ ื ว่า lv
} }
235
รูปที่ 7.5 ขัน ้ ตอนการ Export ไฟล์งาน
5) ทําการ Export ไฟล์ออกมา โดยเลือกที่ File → Export → HTML + SWF หรือกด Ctrl + P
ดังรูปที่ 7.5 จากนั ้นเลือกสารบบที่ C:\AppServ\www\flashtoscilab และตัง้ ชื่อว่า electric.html คลิกป่ ุม save
6) ทดสอบการทํางานโดยการเปิ ดโปรแกรม Google Chrome และพิมพ์ URL คือ 127.0.0.1/ flashtoscilab/electric.html ตามรูปที่ 7.6
7) ทดลองป้ อนค่า V = 5 และใส่ค่า R = 70 จากนั ้นกดป่ ุมคํานวณ 1 ครัง้ ซึ่งจะพบว่าหลอดไฟ มีความสว่างน้ อย แต่ถ้าใส่ค่า R = 1 จะพบว่าหลอดไฟมีความสว่างมาก ตามรูปที่ 7.7
236
รูปที่ 7.6 ผลลัพธ์ของเว็บไซต์ electic.html
R = 1
รูปที่ 7.7 ผลลัพธ์การป้ อนข้อมูลเว็บไซต์ electic.html
237 7.2.2.2 การหาตัวคูณร่วมน้ อยแบบภาพเคลื่อนไหว
การสร้างสื่อการสอนผ่านเว็บไซต์เพื่อใช้คํานวณหาตัวคูณร่วมน้ อย (ครน.) แบบภาพเคลื่อนไหว ทําได้ดังนี้
1) เปิ ดโปรแกรม Adobe Dreamweaver CS 5.5 ขึ้นมา และให้ตงั ้ ชื่อไฟล์ว่า lcm.php เก็บไว้ใน สารบบ C:\AppServ\www\Flashtoscilab โดยให้พิมพ์โค้ดในไฟล์ดังนี้
โค้ดภายในไฟล์ lcm.php 1
<?php
2
$input1 = stripslashes($_POST['input1']);
//รับข้อมูลจากแฟลชให้ $input1
3
$input2 = stripslashes($_POST['input2']);
//รับข้อมูลจากแฟลชให้ $input2
4
$input3 = stripslashes($_POST['input3']);
//รับข้อมูลจากแฟลชให้ $input3
5
$output = "";
6
$code1 = "result = lcm(int16([$input1 $input2 $input3]));\noutput =
iconvert(result,0);\nsavematfile('lcm.txt','output');\nexit;";
//เขียนโค้ดลงในตัวแปร
ชื่อว่า $code1 7
file_put_contents("lcm.sce", $code1);
9
$com = "$path/scilab-4.1.2/bin/Scilex.exe -nwni -nb -f lcm.sce";
11
$output = number_format(file_get_contents("lcm.txt"));
12
echo ("&output=$output");
8
$path=$_SERVER["SystemRoot"];
10
13
exec($com);
?>
//สร้างไฟล์ช่ อ ื lcm.sce
//ประมวลผลไฟล์สคริปต์
//ส่งผลลัพธ์ (output) ไปยังไฟล์แฟลช
2) เปิ ดโปรแกรม SWISH Max ขึ้นมา และออกแบบฟอร์มของภาพเคลื่อนไหวแบบแฟลชตาม รูปที่ 7.8 โดยมีการกําหนด Textbox ที่สําคัญดังนี้ (ตามรูปที่ 7.9)
Textbox
รายละเอียด
คุณสมบัติ
input1
กล่องข้อความสําหรับค่าอินพุตตัวที่ 1
Input
input2
กล่องข้อความสําหรับค่าอินพุตตัวที่ 2
Input
input3
กล่องข้อความสําหรับค่าอินพุตตัวที่ 3
Input
output
กล่องข้อความสําหรับแสดงผลลัพธ์
Dynamic
238
bginput input1
input2
input3 bgoutput
output button รูปที่ 7.8 การออกแบบส่วนต่อประสานการหาตัวคูณร่วมน้ อย (ครน.)
รูปที่ 7.9 การกําหนดคุณสมบัติของตัวแปร input1, input2, input3 และ output
3) ในที่นี้จะใช้ลูกเล่นที่มีช่ ือว่า “Squeeze and cascade in” สําหรับแสดงภาพเคลื่อนไหว โดยให้ Duration เท่ากับ 20 สําหรับ bginput และ bgoutput แสดงดังในรูปที่ 7.10
239
รูปที่ 7.10 แสดง Time line ที่แทรกลูกเล่นไว้เรียบร้อยแล้ว
4) จากนั ้นคลิกป่ ุม “คํานวณ” (ที่สร้างขึ้นจาก Shape และตัง้ ชื่อว่า button) และคลิกที่ Tab สคริปต์ และพิมพ์สคริปต์ดังต่อไปนี้
สคริปต์ 1
on (release){
var lv = new LoadVars();
//สร้างตัวแปรอ็อบเจกต์ช่ อ ื ว่า lv
3
lv.input1 = input1.text;
//ส่งค่าตัวแปร input1.text ให้กับ lv.input1
4
lv.input2 = input2.text;
//ส่งค่าตัวแปร input2.text ให้กับ lv.input2
6
lv.sendAndLoad("lcm.php",lv, "POST"); //ส่งค่า input1, input2 และ input3 ไปยัง
7
lv.onLoad = function(){
2
5
lv.input3 = input3.text;
//ส่งค่าตัวแปร input3.text ให้กับ lv.input3
lcm.php ในรูปแบบ POST
8
output.text = this.output; //รับค่าตัวแปร code มายังตัวแปร total_b.text (ภายในแฟลช)
9
}
10
}
5) ทําการ Export ไฟล์ออกมา โดยเลือกที่ File → Export → HTML + SWF หรือกด Ctrl + P จากนั ้นเลือกสารบบที่ C:\AppServ\www\flashtoscilab และตัง้ ชื่อว่า lcm.html คลิกป่ ุม save
6) ทดสอบการทํางานโดยการเปิ ดโปรแกรม Google Chrome และพิมพ์ URL คือ 127.0.0.1/ flashtoscilab/lcm.html ตามรูปที่ 7.11
240
รูปที่ 7.11 ผลลัพธ์เว็บไซต์ lcm.html
รูปที่ 7.12 ผลลัพธ์ท่ไี ด้จากการป้ อนข้อมูลผ่านเว็บไซต์ lcm.html
7) ทดลองป้ อนค่าตัวเลขสามจํานวนคือ 12, 15 และ 30 จากนั ้นกดป่ ุมคํานวณก็จะได้ผลลัพธ์เป็ น ค่าตัวคูณร่วมน้ อยของเลขสามจํานวนนี้เท่ากับ 60 และแสดงเปลี่ยนสีสลับไปมาตามรูปที่ 7.12
7.2.2.3 การวาดกราฟสองมิตแ ิ บบภาพเคลื่อนไหว
การสร้างสื่อการสอนผ่านเว็บไซต์เพื่อใช้การวาดกราฟสองมิติแบบภาพเคลื่อนไหวทําได้ดังนี้ 1) เปิ ดโปรแกรม Adobe Dreamweaver CS 5.5 ขึ้นมา และให้ตัง้ ชื่อไฟล์ว่า 2d.php เก็บไว้ใน สารบบ C:\AppServ\www\Flashtoscilab โดยให้พิมพ์โค้ดในไฟล์ดังนี้
241 โค้ดภายในไฟล์ 2d.php 1
<?php
2
$x1 = stripslashes($_POST['x1']);
//รับข้อมูลจากแฟลชให้ $x1
3
$x2 = stripslashes($_POST['x2']);
//รับข้อมูลจากแฟลชให้ $x2
4
$x3 = stripslashes($_POST['x3']); $f = stripslashes($_POST['f']);
//รับข้อมูลจากแฟลชให้ $f
6
$y = stripslashes($_POST['y']);
//รับข้อมูลจากแฟลชให้ $y
5 7
//รับข้อมูลจากแฟลชให้ $x3
$code1 = "x = $x1:$x2:$x3;\n f = $f;\n y = $y;\n plot(x, y);\n xs2gif(0,'test.gif');exit();";
//เขียนโค้ดลงในตัวแปรชื่อว่า $code1
8
file_put_contents("f2d.sce", $code1);
10
$com = "$path/scilab-4.1.2/bin/Scilex.exe -nwni -nb -f f2d.sce";
9
$path=$_SERVER["SystemRoot"];
11 12
exec($com);
//สร้างไฟล์ช่ อ ื f2d.sce
//ประมวลผลไฟล์สคริปต์
?>
2) เปิ ดโปรแกรม SWISH Max ขึ้นมา และออกแบบฟอร์มของภาพเคลื่อนไหวแบบแฟลชตามรูป ที่ 7.13 โดยมีการกําหนด Textbox ที่สําคัญดังนี้ (ตามรูปที่ 7.14) Textbox
รายละเอียด
คุณสมบัติ
x1
สําหรับตัวแปร x1 ค่าเริ่มต้น
Input
x2
สําหรับตัวแปร x2 ค่าระหว่างขัน ้
Input
x3
สําหรับตัวแปร x3 ค่าสุดท้าย
Input
f
สําหรับตัวแปร f ค่าความถี่
Input
Y
สําหรับตัวแปร y ค่าสมการ
Input
242
x1
x2
x3 f
y
รูปที่ 7.13 การออกแบบส่วนต่อประสานการวาดกราฟสองมิติแบบภาพเคลื่อนไหว
รูปที่ 7.14 การกําหนดคุณสมบัติของตัวแปร x1, x2, x3, f และ y
243
2 1
4
3
รูปที่ 7.15 ขัน ้ ตอนการเปลี่ยน Shape เป็ นรูปแบบ Movie Clip
3) ในที่นี้จะใช้ Shape สีฟ้าค่อยๆ จางออก และแสดงกราฟที่สร้างขึ้นจากสมการเพื่อแสดงภาพ
เคลื่อนไหว โดยการวาด Shape ที่มีขนาด 610×461 pixels และตัง้ ชื่อว่า pic จากนั ้นกดคลิก
ขวา และเลือก Convert → Convert to Movie Clip ตามที่แสดงในรูปที่ 7.15
4) จากนั ้นสร้าง Shape สีฟ้าขนาด 550×512 pixels ปิ ดทับ pic และใช้ลูกเล่นโดยการกดคลิกขวา ที่ Time Line และเลือก Fade → Fade out ตามรูปที่ 7.16 และ 7.17
244
5
6
7
รูปที่ 7.16 ขัน ้ ตอนใส่ลูกเล่น Fade Out
รูปที่ 7.17 แสดง Time line ที่ใส่ลูกเล่น Fade Out
5) สร้างป่ ุมคํานวณโดยใช้เครื่องมือ Rectangle tool วาดรูปสี่เหลี่ยมจํานวน 1 อัน และใช้เครื่องมือ Text tool พิมพ์ข้อความ “คํานวณ” ตามรูปที่ 7.18
245
รูปที่ 7.18 การสร้างป่ ุม “คํานวณ”
6) จากนั ้นคลิกป่ ุม “คํานวณ” (ที่สร้างขึ้นจาก Shape ชื่อว่า button) และคลิกที่ Tab สคริปต์ และ พิมพ์สคริปต์ดังต่อไปนี้
สคริปต์ 1
on (press) {
2
var lv = new LoadVars(); lv.x1 = x1.text;
//ส่งค่าตัวแปร x1.text ให้กับ lv.x1
4
lv.x2 = x2.text;
//ส่งค่าตัวแปร x2.text ให้กับ lv.x2
5
lv.x3 = x3.text; lv.f = f.text;
//ส่งค่าตัวแปร x3.text ให้กับ lv.x3
//ส่งค่าตัวแปร f.text ให้กับ lv.f
7
lv.y = y.text;
//ส่งค่าตัวแปร y.text ให้กับ lv.y
3
6 8
//สร้างตัวแปรอ็อบเจกต์ช่ อ ื ว่า lv
lv.sendAndLoad("2d.php", lv, "POST");
//ส่งค่า x1, x2, x3, f และ y ไปยัง 2d.php ใน
รูปแบบ POST 9
10
lv.onLoad = function(){ d = new Date();
//สร้างตัวแปรอ็อบเจกต์ช่ อ ื ว่า d
11
kill = d.getTime();
12
pic.loadMovie("test.gif"+"?kill="+kill); //โหลดไฟล์รูปกราฟ (test.gif) เข้ามาโดยสร้าง
ตัวแปรชื่อว่า kill เพื่อระบุรูปกราฟล่าสุดในขณะนั ้น (ถ้าไม่ใส่จะไม่เปลียนรูปกราฟ)
13
gotoAndPlay(1);
15
pic._x = -30;
16
pic._y = 0;
14
17
//สร้างตัวแปร kill ให้มีค่าเท่ากับเวลาปั จจุบัน
play();
pic._xscale = 100;
246 18
pic._yscale = 100;
19
}
20
}
รูปที่ 7.19 ผลลัพธ์ของเว็บไซต์ f2d.html
7) ทําการ Export ไฟล์ออกมา โดยเลือกที่ File → Export → HTML + SWF หรือกด Ctrl + P จากนั ้นเลือกสารบบที่ C:\AppServ\www\flashtoscilab และตัง้ ชื่อว่า f2d.html คลิกป่ ุม save
8) ทดสอบการทํางานโดยการเปิ ดโปรแกรม Google Chrome และพิมพ์ URL คือ 127.0.0.1/ flashtoscilab/f2d.html ตามรูปที่ 7.19
9) ทดลองป้ อนค่า x = 0 : 0.01 : 2, f = 1, และ y = sin(2*%pi*x*f) จากนั ้นกดป่ ุม “คํานวณ” ก็จะพบว่ามีการ Fade Out ของ Shape สีฟ้า 1 ครัง้ แล้วจึงเปลี่ยนเป็ นรูปกราฟที่โปรแกรม SCILAB วาดขึ้นมา ดังรูปที่ 7.20
247
รูปที่ 7.20 ผลลัพธ์ท่ไี ด้จากการทดลองวาดกราฟ y = sin(2*%pi*x*f)
7.3 สรุปท้ายบท บทนี้สรุปขัน ้ ตอนการเขียนแอคชันสคริปต์ของโปรแกรม SWISH Max เพื่อนํ ามาประยุกต์ใช้สร้าง
สื่อการสอนร่วมกับโปรแกรม SCILAB โดยเริ่มจากประวัติความเป็ นมาของแอคชันสคริปต์ การส่ง
หรือโหลดข้อมูลระหว่างไฟล์ภาพเคลื่อนไหวแบบแฟลชกับไฟล์ PHP และแสดงตัวอย่างการสร้าง
สื่อการสอนผ่านเว็บไซต์ท่ีมีภาพเคลื่อนไหวแบบแฟลชร่วมกับโปรแกรม SCIlAB นอกจากนี้ ผู้เขียน ได้พัฒนาตัวอย่างสื่อการสอนแบบภาพเคลื่อนไหวเรื่อง “เมทริกซ์” เพื่อให้ผู้อ่านได้ทดลองใช้งาน ซึ่งสามารถดูศึกษาได้ท่เี ว็บไซต์ http://scilab.npru.ac.th/matrix/index.php
248
7.4 แบบฝึ กหัดท้ายบท 1. จงเขียนโปรแกรมการบวกเมทริกซ์สองเมทริกซ์แบบภาพเคลื่อนไหว 2. จงเขียนโปรแกรมการหาค่าดีเทอร์มิแนนท์ (Determinant) ของเมทริกซ์แบบภาพเคลื่อนไหว 3. จงสร้างโปรแกรมการหาไมเนอร์ (Minor) ของเมทริกซ์แบบภาพเคลื่อนไหว 4. จงเขียนโปรแกรมวาดกราฟ 2 มิติโดยใส่ลูกเล่น 1 วิธี ตามรูปที่ 1.5 (คําสัง่ polarplot) 5. จงเขียนโปรแกรมวาดกราฟ 3 มิติโดยใส่ลูกเล่น 1 วิธี ตามรูปที่ 1.6 (คําสัง่ plot3d)
249
บรรณานุกรม [1] SCILAB [online], Available http://www.scilab.org [Access: October 17, 2012] [2] CeCILL [online], Available http://www.cecill.info/index.en.html [Access: October 17, 2012]
[3] MATWORKS [online], Available http://www.mathworks.com [Access: October 17, 2012]
[4] ปิ ยะ โควินท์ทวีวัฒน์, คู่มือโปรแกรมภาษา SCILAB สําหรับผู้เริ่มต้น (ฉบับปรับปรุงใหม่), เพชรเกษมการพิมพ์, 2551
[5] Visual Basic [online], Available http://msdn.microsoft.com/en-us/library/vstudio/ 2x7h1hfk.aspx [Access: April 13, 2013].
[6] พร้อมเลิศ หล่อวิจิตร, คู่มือเรียน Visual Basic 2010, ซีเอ็ดยูเคชัน ่ , มีนาคม 2554. [7] PHP [online], Available http://php.net/ [Access: April 14, 2013] [8] ภาษาพีเอชพี [online], Available http://th.wikipedia.org/wiki/ภาษาพีเอชพี [Access: April 14, 2013]
[9] PHP Tutorial [online], Available http://www.w3schools.com/php/ [Access: April 14, 2013]
[10] PHP [online], Available http://www.thaicreate.com/php.html [Access: April 14, 2013]
[11] Swishmax [online], Available http://www.swishzone.com [Access: April 14, 2013] [12] bmk2 [online], Available http://www.bmk2.net/study/swishmax.doc [Access: April 14, 2013]
[13] thaiall [online], Available http://www.thaiall.com/swishmax/indexo.html [Access: April 14, 2013]
250 [14] Adobe AIR [online], Available http://www.adobe.com/products/air.html [Access: April 14, 2013]
[15] Google Developer [online], Available https://developers.google.com/maps/ documentation/flash/tutorial-flexbuilder [Access: April 14, 2013]
[16] FlashDevelop [online], Available http://www.flashdevelop.org/ [Access: April 14, 2013]