9 scilab book2

Page 1


คํานํ า การจัดการเรียนการสอนในประเทศไทยปั จจุบันนี้ จะเน้ นให้ผู้เรียนเป็ นศูนย์กลางสําหรับ

การศึกษาค้นคว้าข้อมูลด้วยตัวเอง ซึ่งได้มีการนํ าอุปกรณ์คอมพิวเตอร์และซอฟต์แวร์ต่างๆ มาใช้ ช่วยในการเรียนการสอนและทํางานวิจัยในหลายสาขาวิชา โดยมีการนํ าเสนอในรูปบทเรียนอิเล็ก

ทรอนิ กส์ เช่น ซีดี สื่อการเรียนการสอนผ่านทางโทรทัศน์และเครือข่ายดาวเทียม สื่อการเรียนการ สอนผ่านทางเครือข่ายอินเทอร์เน็ต (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,"  %s = ",stype);

4

mfprintf(fid,"  ");

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

  

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

 

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

 

</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

 

<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

 


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; ?>" />

  <input name="a2" type="text" size="2" value="<? echo $a2; ?>" />

 

<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

 

42

 

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" />

 

<input name="a8" type="text" id="a8" value="<? echo $a8; ?>" size="2" />

 

<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

 

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" />

  <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

/>

  <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

 

<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" />

  <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

 

<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=

 </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

 

50

<br>

52

 

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

   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

   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 </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" />

  

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" />   

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

 

<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" />  

<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

 


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" />  

<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>  


177 47

<input name="a2" type="text" id="a2" value="<? echo $a2; ?>" size="2" />

48

<br>

50

 

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" />  

<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

 

<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" />  

<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

 

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" />  

<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

 

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

  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> =  <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> </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   ');\n pohtml02('$path1/phptoscilab/001.html',pl2,'p - q   ');\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) </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> </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]




Turn static files into dynamic content formats.

Create a flipbook
Issuu converts static files into: digital portfolios, online yearbooks, online catalogs, digital photo albums and more. Sign up and create your flipbook.