You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
คํานํา<br />
การจัดการเรียนการสอนในประเทศไทยปัจจุบันนี้จะเน้นให้ผู้เรียนเป็นศูนย์กลางสําหรับ<br />
การศึกษาค้นคว้าข้อมูลด้วยตัวเอง ซึ ่งได้มีการนําอุปกรณ์คอมพิวเตอร์และซอฟต์แวร์ต่างๆ มาใช้<br />
ช่วยในการเรียนการสอนและทํางานวิจัยในหลายสาขาวิชา โดยมีการนําเสนอในรูปบทเรียนอิเล็ก<br />
ทรอนิกส์ เช่น ซีดี สื ่อการเรียนการสอนผ่านทางโทรทัศน์และเครือข่ายดาวเทียม สื ่อการเรียนการ<br />
สอนผ่านทางเครือข่ายอินเทอร์เน็ต (E-leaning) เป็นต้น<br />
โปรแกรม SCILAB เป็นโปรแกรมภาษาขั้นสูงที ่ถูกพัฒนาขึ้นโดยความร่วมมือกันระหว่าง<br />
นักวิจัยจากสถาบัน Institut National De Recherche En Informatique Et En Automatique<br />
(INRIA) และ École nationale des ponts et chausses (ENPC) ประเทศฝรั่งเศส ตั้งแต่ ค.ศ.<br />
1990 โดยมีจุดมุ่งหมายเพื ่อใช้ในการคํานวณเชิงตัวเลขและแสดงผลกราฟิกที ่ซับซ้อนต่างๆ ได้ ดังนั้น<br />
โปรแกรม SCILAB จึงเหมาะกับการใช้งานทางด้านวิศวกรรมและวิทยาศาสตร์ นอกจากนี้โปรแกรม<br />
SCILAB ยังเป็นโปรแกรมที ่ให้ฟรี (freeware) อนุญาตให้ผู้ใช้สามารถนําไปพัฒนาต่อได้ และมี<br />
ความสามารถในการทํางานที ่ใกล้เคียงกับโปรแกรม MATLAB ซึ ่งเป็นโปรแกรมที ่นิยมใช้งานมาก<br />
ทางด้านวิศวกรรมและวิทยาศาสตร์ แต่ค่าลิขสิทธิ์ซอฟต์แวร์ของ MATLAB มีราคาแพงมาก<br />
หนังสือ “การพัฒนาสื ่อการสอนโดยใช้โปรแกรม SCILAB ร่วมกับ Visual Basic /<br />
PHP / Flash Animation” มีจุดมุ่งหมายเพื ่ออธิบายตั้งแต่พื ้นฐานการใช้งานโปรแกรม SCILAB<br />
การนําโปรแกรม SCILAB มาประยุกต์ใช้งานร่วมกับโปรแกรม Visual Basic, PHP และ Flash<br />
Animation เพื ่อสร้างบทเรียนช่วยสอนบนอินเทอร์เน็ตทางด้านวิศวกรรมและวิทยาศาสตร์ที ่สามารถ<br />
โต้ตอบกับผู้เรียนได้ นอกจากนี้ยังช่วยให้นักศึกษาเข้าใจทฤษฏีในบทเรียนง่ายขึ้น รวมทั้งสนุกกับ<br />
บทเรียนต่างๆ ที ่มีภาพเคลื ่อนไหวประกอบคําบรรยาย<br />
หนังสือเล่มนี้จะเริ ่มต้นอธิบายจาก ความรู้ทั่วไปเกี ่ยวกับโปรแกรม SCILAB เช่น ประวัติ<br />
ความเป็นมาของโปรแกรม SCILAB และการใช้งานคําสั่งพื ้นฐานทั่วไป บทที ่ 2 จะอธิบายเครื ่องมือ<br />
ต่างๆ ของโปรแกรม Visual Basic และขั้นตอนการเขียนโปรแกรมติดต่อกับโปรแกรม SCILAB<br />
บทที ่ 3 ยกตัวอย่างการพัฒนาสื ่อการเรียนการสอนด้วยโปรแกรม Visual Basic ร่วมกับ SCILAB<br />
เช่น การบวก/ลบ/คูณ/หาร ของเลขสองจํานวน การบวกและลบสมการพหุนาม และการวาดกราฟ<br />
สองมิติ บทที ่ 4 อธิบายพื ้นฐานการใช้งานโปรแกรมภาษา PHP รวมถึงการนําไปประยุกต์ใช้งาน
ร่วมกับโปรแกรม SCILAB บทที ่ 5 ยกตัวอย่างการพัฒนาสื ่อการเรียนการสอนผ่านเว็บไซต์หลายๆ<br />
แบบโดยใช้โปรแกรมภาษา PHP ร่วมกับโปรแกรม SCILAB บทที ่ 6 อธิบายความรู้เบื ้องต้นเกี ่ยวกับ<br />
การใช้งานโปรแกรม SWISH Max ที ่ใช้สร้างไฟล์ภาพเคลื ่อนไหวแบบแฟลช (Flash Animation)<br />
เพื ่อนําไปประยุกต์ใช้งานร่วมกับโปรแกรม SCILAB สุดท้ายบทที ่ 7 ยกตัวอย่างการสร้างสื ่อการสอน<br />
ด้วยโปรแกรม SWISH Max และ SCILAB โดยโค้ดต้นฉบับทั้งหมดของทุกตัวอย่างในหนังสือ<br />
เล่มนี้สามารถดาวน์โหลดได้ที ่ http://home.npru.ac.th/piya/webscilab/book2<br />
หนังสือเล่มนี้จะไม่สามารถทําให้สําเร็จขึ้นมาได้ ถ้าหากขาดบุคคลต่างๆ ที ่คอยให้ความ<br />
ช่วยเหลือและเป็นกําลังใจให้ข้าพเจ้าตลอดมา ดังนั้นข้าพเจ้าขอกราบขอบพระคุณอาจารย์ทุกท่านที ่<br />
ให้ความรู้และคําปรึกษาตลอดระยะเวลาการศึกษา รวมทั้งคุณเกียรติ โควินท์ทวีวัฒน์, คุณพรรณี<br />
โควินท์ทวีวัฒน์, คุณรัชนิศ โรจนกิจ, คุณอนุทัศน์ โรจนกิจ, คุณฉัตรชัย โควินท์ทวีวัฒน์, คุณกิตติ<br />
ศักดิ์ โควินท์ทวีวัฒน์, พ.ญ.ศิรสุดา โสมนัส, ดร.พัชรศักดิ์ อาลัย, ร้อยตํารวจตรีบุญหลง บู๊ฮวดใช้,<br />
จ่าสิบตํารวจพงษ์พันธ์ บู๊ฮวดใช้, นางอําพร บู๊ฮวดใช้ (จันทรอําพร), และเจ้าหน้าที ่สถาบันวิจัยและ<br />
พัฒนาทุกท่าน นอกจากนี้ข้าพเจ้าขอขอบคุณมหาวิทยาลัยราชภัฏนครปฐมที ่ให้การสนับสนุนและ<br />
ให้ความสะดวกแก่ข้าพเจ้าตลอดระยะเวลาในการเขียนหนังสือเล่มนี้<br />
ท้ายสุดนี้ข้าพเจ้าพยายามอย่างยิ ่งในการที ่จะทําให้หนังสือเล่มนี้ง่ายต่อการเรียนรู้ เพื ่อให้<br />
ผู้อ่านสามารถทําความเข้าใจได้ด้วยตนเองอย่างรวดเร็วและมีประสิทธิผล ดังนั้นหากมีข้อบกพร่อง<br />
ประการใด ข้าพเจ้ามีความยินดีและจักขอบพระคุณยิ ่ง ถ้าท่านผู้ใช้หนังสือเล่มนี้จะส่งข้อคิดเห็นและ<br />
คําแนะนําที ่เป็นประโยชน์สําหรับการปรับปรุงหนังสือเล่มนี้มาที ่อีเมล์ piya@npru.ac.th หรือ<br />
jirundon_bu@npru.ac.th เพื ่อที ่ข้าพเจ้าจะได้ดําเนินการปรับปรุงและแก้ไขในการพิมพ์ครั้งต่อไป<br />
รศ.ดร.ปิยะ โควินท์ทวีวัฒน์<br />
จิรันดร บู๊อวดใช้<br />
มหาวิทยาลัยราชภัฏนครปฐม<br />
มิถุนายน พ.ศ. 2556
สารบัญ<br />
บทที ่ 1 พื ้นฐานการใช้งานโปรแกรม SCILAB ......................................................... 1<br />
1.1 ประวัติความเป็นมาของโปรแกรม SCILAB .................................................................... 1<br />
1.2 การติดตั้งโปรแกรม SCILAB ........................................................................................ 3<br />
1.3 การสร้างสเกล่าร์ เวกเตอร์ และเมทริกซ์ ......................................................................... 3<br />
1.3.1 การหาทรานส์โพส ดีเทอร์มิแนนต์ อินเวอร์สการคูณ ของเมทริกซ์ ...................... 7<br />
1.3.2 การแก้ระบบสมการเชิงเส้น ................................................................................. 8<br />
1.4 พหุนาม ........................................................................................................................ 9<br />
1.5 การดําเนินการทางคณิตศาสตร์.................................................................................... 11<br />
1.6 การดําเนินการทางคณิตศาสตร์.................................................................................... 13<br />
1.6.1 ฟังก์ชันพื ้นฐานที ่เกี ่ยวกับตัวเลข ........................................................................ 13<br />
1.6.2 ฟังก์ชันตรีโกณมิติ ........................................................................................... 15<br />
1.6.3 ฟังก์ชันพื ้นฐานทางสถิติ ................................................................................... 16<br />
1.7 เมทริกซ์พิเศษ ............................................................................................................ 17<br />
1.7.1 เมทริกซ์สุ่ม ..................................................................................................... 18<br />
1.8 การเขียนโปรแกรมด้วย SCILAB ................................................................................ 19<br />
1.8.1 คําสั่งวนซํ้า ...................................................................................................... 19<br />
1.8.2 คําสั่งทดสอบเงื ่อนไข ........................................................................................ 21<br />
1.8.3 การเขียนฟังก์ชันแบบอินไลน์............................................................................ 22<br />
1.9 การวาดกราฟสองมิติ................................................................................................... 23<br />
1.9.1 กราฟเชิงขั้ว ...................................................................................................... 24<br />
1.10 การวาดกราฟสามมิติ ................................................................................................. 26<br />
1.11 สรุปท้ายบท .............................................................................................................. 29
1.12 แบบฝึกหัดท้ายบท .................................................................................................... 29<br />
บทที ่ 2 การใช้งานโปรแกรม VISUAL BASIC ร่วมกับ SCILAB ....................... 31<br />
2.1 ประวัติความเป็นมาของโปรแกรม VISUAL BASIC ......................................................... 31<br />
2.2 โปรแกรม VISUAL BASIC 2010 EXPRESS ................................................................... 32<br />
2.2.1 แถบเมนู.......................................................................................................... 32<br />
2.2.2 แถบเครื ่องมือมาตราฐาน .................................................................................. 32<br />
2.2.3 หน้าต่างโซลูชัน ................................................................................................ 33<br />
2.2.4 หน้าต่างคุณสมบัติ ........................................................................................... 34<br />
2.2.5 หน้าต่างกล่องเครื ่องมือ .................................................................................... 35<br />
2.2.6 ประเภทข้อมูลพื ้นฐาน ...................................................................................... 35<br />
2.3 การใช้งานโปรแกรม VISUAL BASIC ร่วมกับ SCILAB................................................. 35<br />
2.3.1 ขั้นตอนการเรียกใช้งานไลบรารี Microsoft Scripting Runtime ........................ 38<br />
2.3.2 รูปแบบการใช้งาน FileSystemObject ............................................................... 39<br />
2.3.3 ฟังก์ชันที ่เกี ่ยวของโปรแกรม Visual Basic 2010 ............................................. 41<br />
2.4 ฟังก์ชันที ่เกี ่ยวข้องของโปรแกรม SCILAB ................................................................... 45<br />
2.4.1 คําสั่ง file ........................................................................................................ 45<br />
2.4.2 คําสั่ง fprintf ................................................................................................... 46<br />
2.4.3 คําสั่ง exec ...................................................................................................... 47<br />
2.4.4 คําสั่ง savematfile ........................................................................................... 48<br />
2.4.5 คําสั่ง xs2gif .................................................................................................... 48<br />
2.5 การเขียนโปรแกรม VISUAL BASIC ติดต่อกับ SCILAB ............................................... 49<br />
2.5.1 การสร้างไฟล์สคริปต์........................................................................................ 50<br />
2.5.2 การเขียนไฟล์สคริปต์........................................................................................ 52<br />
2.5.3 การประมวลผลไฟล์สคริปต์ .............................................................................. 53<br />
2.5.4 การบันทึกผลลัพธ์ลงไฟล์ข้อมูล ......................................................................... 55<br />
2.5.5 การแสดงผลลัพธ์ ............................................................................................. 58<br />
2.6 สรุปท้ายบท ................................................................................................................ 60<br />
2.7 แบบฝึกหัดท้ายบท ...................................................................................................... 60
บทที ่ 3 การสร้างสื ่อการสอนด้วยโปรแกรม VISUAL BASIC ร่วมกับ SCILAB .... 61<br />
3.1 การบวก/ลบ/คูณ/หาร ของเลขสองจํานวน .................................................................... 61<br />
3.2 การหาดีเทอร์มิแนนต์และอินเวอร์สของเมทริกซ์........................................................... 64<br />
3.2.1 ฟอร์มกําหนดขนาดของเมทริกซ์ ....................................................................... 65<br />
3.2.2 ฟอร์มสําหรับหาดีเทอร์มิแนนต์และอินเวอร์สของเมทริกซ์ขนาด 2×2 ................. 66<br />
3.2.3 ฟอร์มสําหรับหาดีเทอร์มิแนนต์และอินเวอร์สของเมทริกซ์ขนาด 3×3 ................. 72<br />
3.2.4 ทดสอบการใช้งาน ............................................................................................ 77<br />
3.3 การพิสูจน์คุณสมบัติของเมทริกซ์................................................................................. 80<br />
3.3.1 การพิสูจน์คุณสมบัติ (kA) T = kA T ................................................................... 80<br />
3.3.2 การพิสูจน์คุณสมบัติ (A + B) T = A T + B T ................................................... 88<br />
3.3.3 การพิสูจน์คุณสมบัติ (AB) T = B T A T ................................................................ 94<br />
3.4 การหาค่าลอการิทึมฐานใดๆ ....................................................................................... 100<br />
3.5 การบวกและลบสมการพหุนาม .................................................................................. 103<br />
3.6 การวาดกราฟสองมิติ................................................................................................. 107<br />
3.7 สรุปท้ายบท .............................................................................................................. 110<br />
3.8 แบบฝึกหัดท้ายบท .................................................................................................... 110<br />
บทที ่ 4 ความรู้เบื ้องต้นเกี ่ยวกับภาษา PHP .......................................................... 111<br />
4.1 ประวัติความเป็นมาของ PHP ..................................................................................... 111<br />
4.2 การเตรียมตัวก่อนเขียนเว็บไซต์ด้วยภาษา PHP .......................................................... 111<br />
4.2.1 การติดตั้งโปรแกรม AppServ ......................................................................... 111<br />
4.2.2 การติดตั้งโปรแกรม Adobe Dreamweaver CS5.5 ......................................... 113<br />
4.2.3 แนวทางการเขียนโปรแกรมเว็บไซต์ภาษา PHP ร่วมกับ SCILAB .................... 115<br />
4.3 เริ ่มต้นกับการเขียนภาษา PHP .................................................................................. 116<br />
4.3.1 การแสดงผล .................................................................................................. 116<br />
4.3.2 การเขียนคอมเมนต์........................................................................................ 116<br />
4.3.3 การกําหนดตัวแปร ......................................................................................... 117<br />
4.3.4 การใช้เครื ่องหมายอัญประกาศเดี ่ยวและเครื ่องหมายอัญประกาศ ...................... 117<br />
4.3.5 การนิยามตัวแปรล่วงหน้า ............................................................................... 118
4.3.6 แบบชนิดข้อมูล .............................................................................................. 119<br />
4.3.7 ตัวดําเนินการเลขคณิต .................................................................................... 119<br />
4.3.8 ตัวดําเนินการเพิ ่ม/ลดค่า ................................................................................. 119<br />
4.3.9 ตัวดําเนินการเปรียบเทียบ ............................................................................... 120<br />
4.3.10 ตัวดําเนินการทางตรรกะ ............................................................................... 121<br />
4.3.11 การทดสอบเงื ่อนไข ...................................................................................... 121<br />
4.3.12 การทําซํ้า ..................................................................................................... 125<br />
4.4 ฟังก์ชันและการใช้งาน ............................................................................................... 127<br />
4.4.1 การสร้างฟังก์ชัน ............................................................................................ 129<br />
4.4.2 ฟังก์ชันที ่เกี ่ยวกับสายอักขระ .......................................................................... 130<br />
4.4.3 ฟังก์ชันที ่เกี ่ยวกับตัวเลข ................................................................................. 134<br />
4.5 การจัดการไฟล์.......................................................................................................... 135<br />
4.5.1 การสร้างไฟล์ ................................................................................................. 135<br />
4.5.2 การอ่านไฟล์ .................................................................................................. 135<br />
4.5.3 การลบไฟล์ .................................................................................................... 136<br />
4.5.4 การใช้งานโปรแกรมภายนอก .......................................................................... 136<br />
4.6 สรุปท้ายบท .............................................................................................................. 137<br />
4.7 แบบฝึกหัดท้ายบท .................................................................................................... 137<br />
บทที ่ 5 การสร้างสื ่อการสอนผ่านเว็บไซต์ .............................................................. 139<br />
5.1 การบวก/ลบ/คูณ/หาร ของเลขสองจํานวน .................................................................. 139<br />
5.2 การหาดีเทอร์มิแนนต์และอินเวอร์สของเมทริกซ์......................................................... 145<br />
5.2.1 หน้าเพจกําหนดขนาดของเมทริกซ์.................................................................. 145<br />
5.2.2 หน้าเพจสําหรับหาดีเทอร์มิแนนต์และอินเวอร์สของเมทริกซ์ขนาด 2×2 ............ 149<br />
5.2.3 หน้าเพจสําหรับหาดีเทอร์มิแนนต์และอินเวอร์สของเมทริกซ์ขนาด 3×3 ............ 153<br />
5.2.4 ทดสอบการใช้งาน .......................................................................................... 159<br />
5.3 การพิสูจน์คุณสมบัติของเมทริกซ์............................................................................... 160<br />
5.3.1 การพิสูจน์คุณสมบัติ (kA) T = kA T ................................................................. 160<br />
5.2.2 การพิสูจน์คุณสมบัติ (A+B) T = A T + B T ..................................................... 170
5.2.3 การพิสูจน์คุณสมบัติ (AB) T = A T B T .............................................................. 183<br />
5.3 การหาค่าลอการิทึมฐานใดๆ ....................................................................................... 184<br />
5.4 การบวกและลบของสมการพหุนาม ............................................................................ 190<br />
5.5 การวาดกราฟสองมิติ................................................................................................. 196<br />
5.6 สรุปท้ายบท .............................................................................................................. 201<br />
5.7 แบบฝึกหัดท้ายบท .................................................................................................... 202<br />
บทที ่ 6 ความรู้เบื ้องต้นโปรแกรม SWISH MAX ................................................ 203<br />
6.1 ประวัติความเป็นมาของโปรแกรม SWISH MAX ........................................................ 203<br />
6.2 การติดตั้งโปรแกรม SWISH MAX4 .......................................................................... 204<br />
6.3 ส่วนต่อประสานกับผู้ใช้ของโปรแกรม SWISH MAX4 ................................................ 207<br />
6.4 การสร้างชิ้นงานด้วยโปรแกรม SWISH MAX4 .......................................................... 213<br />
6.4.1 การแทรกไฟล์รูปภาพ ..................................................................................... 214<br />
6.4.2 การแทรกไฟล์เสียง ......................................................................................... 216<br />
6.4.3 การแทรกไฟล์วีดีโอ ........................................................................................ 217<br />
6.4.4 การแทรกข้อความ .......................................................................................... 218<br />
6.4.5 การวาดเส้นและวาดรูป ................................................................................... 220<br />
6.4.6 การบันทึกชิ้นงาน .......................................................................................... 221<br />
6.4.7 การส่งออกชิ้นงาน ......................................................................................... 221<br />
6.5 การใส่ลูกเล่น ............................................................................................................ 221<br />
6.5.1 ตัวอย่างการใส่ลูกเล่นให้กับชิ้นงาน ................................................................. 222<br />
6.6 การใส่สคริปต์เบื ้องต้น............................................................................................... 223<br />
6.6.1 การใส่สคริปต์เกี ่ยวกับการควบคุมการแสดงผล ................................................ 223<br />
6.6.2 การใส่สคริปต์เพื ่อสร้างการเชื ่อมโยง ................................................................ 225<br />
6.6.3 การใส่สคริปต์เกี ่ยวกับเสียง ............................................................................ 226<br />
6.7 สรุปท้ายบท .............................................................................................................. 226<br />
6.8 แบบฝึกหัดท้ายบท .................................................................................................... 227<br />
บทที ่ 7 การสร้างสื ่อการสอนด้วยโปรแกรม SWISH MAX และ SCILAB ........... 229<br />
7.1 ประวัติความเป็นมาของแอคชันสคริปต์....................................................................... 229
7.2 ขั้นตอนการเขียนสคริปต์โปรแกรม SWISH MAX ร่วมกับ SCILAB .............................. 229<br />
7.2.1 การส่งหรือโหลดข้อมูลระหว่างไฟล์ภาพเคลื ่อนไหวแบบแฟลชกับไฟล์ PHP ........ 230<br />
7.2.2 ตัวอย่างการสร้างเว็บไซต์ที ่มีภาพเคลื ่อนไหวแบบแฟลชร่วมกับ SCILAB ........... 230<br />
7.3 สรุปท้ายบท .............................................................................................................. 247<br />
7.4 แบบฝึกหัดท้ายบท .................................................................................................... 248<br />
บรรณานุกรม ....................................................................................................... 249
1<br />
บทที ่ 1<br />
พื ้นฐานการใช้งานโปรแกรม SCILAB<br />
บทนี้จะสรุปพื ้นฐานการใช้งานโปรแกรม SCILAB ที ่จําเป็นสําหรับการนําไปใช้งานร่วมกับโปรแกรม<br />
ต่างๆ เพื ่อสร้างสื ่อการเรียนการสอนในบทต่อไป โดยบทนี้จะเริ ่มต้นกล่าวถึงประวัติความเป็นมาของ<br />
โปรแกรม SCILAB จากนั้นจะอธิบายการสร้างตัวแปรสเกล่าร์ เวกเตอร์ เมทริกซ์ และพหุนาม<br />
การใช้ตัวดําเนินการทางคณิตศาสตร์แบบต่างๆ รวมถึงวิธีการเขียนโปรแกรม และการวาดกราฟสอง<br />
มิติและสามมิติด้วยโปรแกรม SCILAB<br />
1.1 ประวัติความเป็นมาของโปรแกรม SCILAB<br />
SCILAB เป็นโปรแกรมภาษาขั้นสูงที ่ถูกพัฒนาขึ้นโดยความร่วมมือกันระหว่างนักวิจัยจากสถาบัน<br />
Institut National De Recherche En Informatique Et En Automatique (INRIA) และ École<br />
nationale des ponts et chausses (ENPC) ประเทศฝรั่งเศส ตั้งแต่ ค.ศ. 1989 [1] โดยมีจุดมุ่งหมาย<br />
เพื ่อใช้ในการคํานวณเชิงตัวเลขและแสดงผลกราฟิกที ่ซับซ้อน ดังนั้นโปรแกรม SCILAB จึงเหมาะ<br />
สําหรับการใช้งานทางด้านวิทยาศาสตร์และวิศวกรรมศาสตร์ นอกจากนี้โปรแกรม SCILAB ยังเป็น<br />
โปรแกรมที ่ให้ฟรี1 และอนุญาตให้ผู้ใช้สามารถนําไปพัฒนาต่อยอดได้ ผู้สนใจสามารถดาวน์โหลด<br />
ไฟล์โปรแกรม SCILAB และข้อมูลที ่เกี ่ยวข้องต่างๆ ได้จากเว็บไซต์ http://www.scilab.org หรือที ่<br />
http://home.npru.ac.th/piya/webscilab<br />
สิ ่งที ่สําคัญอีกประการหนึ ่งของโปรแกรม SCILAB 2 คือความสามารถในการทํางานที ่ใกล้<br />
เคียงกับโปรแกรม MATLAB [3] ซึ ่งเป็นโปรแกรมที ่นิยมมากสําหรับผู้ใช้งานทางด้านวิทยาศาสตร์<br />
และวิศวกรรมศาสตร์ แต่ค่าลิขสิทธิ์ซอฟต์แวร์ของโปรแกรม MATLAB นั้นมีราคาแพงมาก<br />
1 ไม่ต้องเสียเงินค่าลิขสิทธิ์ซอฟต์แวร์ แต่การใช้งานต้องอยู่ภายใต้เงื ่อนไขของใบอนุญาต CeCILL [2]<br />
2<br />
นอกจากนี้ยังมีโปรแกรมอื ่นๆ อีกที ่ให้ฟรี (freeware) และทํางานคล้ายกับโปรแกรม SCILAB เช่น โปรแกรม Octave<br />
(http://www.octave.org) อย่างไรก็ตามจากการทดลองใช้งานพบว่าโปรแกรม SCILAB สามารถทํางานได้เป็นอย่างดี<br />
รวมทั้งได้รับการพัฒนาอย่างต่อเนื ่องตลอดเวลา
2<br />
เพราะฉะนั้นในปัจจุบันนี้หลายๆ หน่วยงานทั้งภาคอุตสาหกรรมและภาคการศึกษาทั้งในและนอก<br />
ประเทศได้เริ่มนําโปรแกรม SCILAB มาช่วยในการทํางาน การเรียนการสอน และการทําวิจัย<br />
ทั้งนี้เป็นเพราะว่าโปรแกรม SCILAB สามารถทํางานได้อย่างมีประสิทธิภาพ และไม่ต้องเสียเงิน<br />
ค่าลิขสิทธิ์ซอฟต์แวร์<br />
โดยทั่วไปโปรแกรม SCILAB มีข้อดีสรุปได้ดังนี้<br />
• มีความง่ายต่อการเรียนรู้และทําความเข้าใจ<br />
• มีขั้นตอนการเขียนโปรแกรมไม่ยุ่งยาก<br />
• มีฟังก์ชัน (function) สําหรับการคํานวณทางคณิตศาสตร์จํานวนมากพร้อมใช้งาน<br />
• มีกล่องเครื ่องมือ (toolbox) จํานวนมากที ่ประกอบด้วยฟังก์ชันต่างๆ ที ่จําเป็นสําหรับการแก้ไข<br />
ปัญหาทางด้านวิทยาศาสตร์และวิศวกรรมศาสตร์ เช่น กล่องเครื ่องมือด้านการควบคุมทนทาน<br />
(robust control), กล่องเครื ่องมือด้านการประมวลผลสัญญาณ (signal processing), และ<br />
กล่องเครื ่องมือด้านการหาค่าเหมาะที ่สุด (optimization) เป็นต้น<br />
• ประมวลผลข้อมูลที่อยู่ในรูปของเมทริกซ์ (matrix) และในรูปเชิงสัญลักษณ์ (symbolic) ได้<br />
อย่างรวดเร็วและมีประสิทธิภาพ<br />
• สามารถพัฒนาฟังก์ชันใหม่ๆ ขึ้นมาใช้งานร่วมกับโปรแกรม SCILAB ได้โดยง่าย<br />
• ใช้งานร่วมกับโปรแกรมภาษาฟอร์แทรน (FORTRAN), ภาษาซี (C) และ MATLAB ได้<br />
• ใช้งานร่วมกับโปรแกรม LabVIEW เพื ่อทําการเชื ่อมต่อกับอุปกรณ์ฮาร์ดแวร์ได้<br />
• สร้างโปรแกรมสําเร็จรูปสําหรับการจําลองระบบ (system simulation) ได้โดยใช้เครื ่องมือของ<br />
โปรแกรม SCILAB ที ่เรียกว่า “Xcos”<br />
• พัฒนาต่อยอดได้เนื ่องจากมีรหัสต้นฉบับ (source code) และคู่มือการใช้งานให้ ซึ ่งสามารถ<br />
ดาวน์โหลดได้จากเว็บไซต์ http://www.scilab.org<br />
จากที ่กล่าวมาข้างต้นจะเห็นได้ว่าโปรแกรม SCILAB ทํางานได้หลากหลาย อย่างไรก็ตาม<br />
บทนี้จะสรุปเฉพาะพื ้นฐานการใช้งานโปรแกรม SCILAB เพื ่อให้ผู้อ่านสามารถนําไปใช้งานได้อย่าง<br />
ถูกต้องและรวดเร็ว สําหรับผู้สนใจรายละเอียดของพื ้นฐานการใช้งานโปรแกรม SCILAB สามารถ<br />
ศึกษาได้จาก [4] นอกจากนี้โปรแกรม SCILAB ยังสามารถใช้งานได้ในหลายระบบปฏิบัติการ เช่น<br />
ระบบปฏิบัติการวินโดวส์ (Windows XP, Vista, 7), ระบบปฏิบัติการลีนุกซ์ (Linux), และระบบ<br />
ปฏิบัติการ Mac OS X โดยหนังสือเล่มนี้จะอ้างอิงถึงโปรแกรม SCILAB เวอร์ชัน 4.1.2 3 ที ่ทํางาน<br />
บนระบบปฏิบัติการวินโดวส์เท่านั้น<br />
3 ดาวน์โหลดได้ที ่ http://home.npru.ac.th/piya/webscilab/download.php ขนาด 15.3 เมกะไบต์
3<br />
รูปที ่ 1.1 การเลือกสารบบที ่ต้องการติดตั้งโปรแกรม SCILAB<br />
1.2 การติดตั้งโปรแกรม SCILAB<br />
ไฟล์ติดตั้งโปรแกรม SCILAB เวอร์ชัน 4.1.2 นั่นคือ “scilab-4.1.2.exe” (15.3 MB) สามารถ<br />
ดาวน์โหลดได้ที ่เว็บไซต์ home.npru.ac.th/piya/webscilab/download.php หรือ www.scilab.org<br />
และเมื ่อได้ไฟล์ scilab-4.1.2.exe มาแล้ว ก็ให้ทําการดับเบิลคลิกที ่ชื ่อไฟล์นี้เพื ่อติดตั้งโปรแกรม<br />
SCILAB โดยจะต้องติดตั้งโปรแกรมนี้ไว้ที ่สารบบ C:\WINDOWS ตามรูปที ่ 1.1 จึงจะสามารถ<br />
นํามาประยุกต์ใช้งานร่วมกับโปรแกรมอื ่นๆ เพื ่อสร้างสื ่อการเรียนการสอนที ่อธิบายในบทต่อไปได้<br />
จากนั้นกดปุ่ม Next ไปเรื ่อยๆ จนกระทั่งติดตั้งโปรแกรม SCILAB เสร็จ<br />
1.3 การสร้างสเกล่าร์ เวกเตอร์ และเมทริกซ์<br />
ค่าสเกลาร์ (scalar) สามารถกําหนดลงในตัวแปรได้ทันที เช่น ถ้าต้องการกําหนดให้ตัวแปร a มีค่า<br />
เท่ากับเลขเชิงซ้อน 2 + 3i และตัวแปร b มีค่าเท่ากับ 5 ก็ทําได้ดังนี้<br />
-->a = 2 + 3*%i<br />
a<br />
2. + 3.i<br />
//กําหนดให้ a = 2 + 3i<br />
-->b = 5; //กําหนดให้ b = 5<br />
-->
4<br />
เมื ่อ %i คือค่าคงที ่พิเศษที ่ใช้ในการแสดงตัวเลขเชิงซ้อน โดยมีค่าเท่ากับหน่วยจินตภาพ (imaginary<br />
unit) นั่นคือ i = −1<br />
ส่วนเครื ่องหมายเครื ่องหมายอัฒภาค (semicolon) “ ; ” ที ่ใช้ปิด<br />
ท้ายคําสั่งที่สองเป็นการบอกให้โปรแกรมไม่ต้องแสดงผลลัพธ์ออกทางหน้าต่างคําสั่ง ในขณะที ่<br />
เครื ่องหมายทับสองอัน (double slash) “ // ” หรือเครื ่องหมายคอมเมนต์ (comment) จะบอกให้<br />
โปรแกรม SCILAB ไม่ทําการประมวลผลต่อคําสั่งหรือข้อความที ่อยู่หลังเครื ่องหมายคอมเมนต์นี้<br />
ในการใช้งานโปรแกรม SCILAB เครื ่องหมายขึ้นบรรทัดใหม่ “ ... ” ซึ ่งมีลักษณะเป็น<br />
จุดที ่เรียงต่อกันสามจุด จะมีประโยชน์มากในการเขียนโปรแกรมโดยเฉพาะอย่างยิ ่งเมื ่อคําสั่งที ่ใช้มี<br />
ความยาวมาก เครื ่องหมายนี้เอาไว้ใช้ต่อท้ายคําสั่งเพื ่อบอกว่าคําสั่งในบรรทัดนั้นยังไม่สิ้นสุด ดังนั้น<br />
ถึงแม้ว่าจะกดปุ่ม Enter หลังเครื ่องหมายขึ้นบรรทัดใหม่นี้ โปรแกรม SCILAB ก็ยังไม่นําคําสั่งนั้น<br />
ไปประมวลผล แต่จะรอรับข้อมูลส่วนที ่เหลือที ่จะเขียนต่อไปในบรรทัดใหม่จนกระทั่งหมดคําสั่งแล้ว<br />
กดปุ่ม Enter อีกครั้ง จากนั้นโปรแกรม SCILAB จึงนําข้อความทั้งหมดมารวมกันเป็นประโยค<br />
คําสั่งเดียว แล้วจึงนําไปประมวลผล ตัวอย่างเช่น<br />
-->x = 5; y = 3;<br />
-->z = x + y<br />
z =<br />
8.<br />
-->z = x + ...<br />
-->y<br />
z =<br />
//หาผลบวกของตัวแปร x กับตัวแปร y แล้วนําผลลัพธ์ที ่ได้<br />
//ไปบรรจุไว้ในตัวแปร z<br />
//หมายถึงยังไม่สิ้นสุดคําสั่ง โปรแกรม SCILAB ยังไม่นําข้อมูลนี้ไปประมวลผล<br />
//เมื ่อกดปุ่ม Enter ก็ถือว่าเป็นการสิ้นสุดคําสั่งที ่ป้อนจากบรรทัดก่อนหน้านี้<br />
//โปรแกรม SCILAB จึงนําคําสั่งทั้งหมดคือ z = x + y ไปประมวลผล<br />
8. //ผลลัพธ์ที ่ได้มีค่าเท่ากัน<br />
นอกจากนี้โปรแกรม SCILAB ได้เตรียมค่าคงที ่พิเศษอื ่นๆ เพื ่อรองรับการคํานวณทาง<br />
คณิตศาสตร์ ได้แก่<br />
• %pi คือค่าอัตราส่วนระหว่างความยาวเส้นรอบวงกับเส้นผ่านศูนย์กลางของวงกลม มีค่าเท่ากับ<br />
3.1415927<br />
• %e คือค่าคงที ่ตรีโกณมิติ (trigonometric constant) มีค่าเท่ากับ 2.7182818<br />
• %inf ใช้แทนตัวเลขที ่มีค่าเป็นอนันต์ (infinity) นั่นคือ %inf = ∞ เช่น ค่า 1/0<br />
• %eps มาจากคําว่า “epsilon” คือค่าหน่วยย่อยขนาดเล็กสุด (≈ 2.22×10 -16 ) ที่โปรแกรม<br />
SCILAB รองรับได้ กล่าวคือตัวเลขที ่มีค่าน้อยกว่าค่า %eps โปรแกรม SCILAB ถือว่ามีค่า<br />
เท่ากับ 0
5<br />
• %nan ใช้แทนค่าที ่ไม่สามารถแสดงให้อยู่ในรูปของตัวเลขได้ (มาจากคําว่า Not-A-Number)<br />
เช่น ค่า 0/0<br />
• ans คือตัวแปรชั่วคราว (temporary variable) ที ่เก็บค่าของผลลัพธ์ที ่ได้จากการคํานวณของ<br />
คําสั่ง ซึ ่งจะถูกนํามาใช้โดยอัตโนมัติ ในกรณีที ่ไม่มีการระบุตัวแปรมารับค่าของผลลัพธ์<br />
• %t หรือ %T ค่าคงตัวบูลีน (Boolean constant) ที ่แสดงว่าเป็นจริง (True)<br />
• %f หรือ %F ค่าคงตัวบูลีนที ่แสดงว่าเป็นเท็จ (False)<br />
เวกเตอร์ (vector) คือเมทริกซ์ (matrix) ขนาดหนึ ่งแถว หรือเมทริกซ์ขนาดหนึ ่งแนวตั้ง<br />
เวกเตอร์แถว (row vector) สามารถสร้างได้โดยการใช้เครื ่องหมายจุลภาค (comma) “ , ” หรือ<br />
ช่องว่าง (space) เป็นตัวแยกสมาชิกแต่ละสมาชิกในเวกเตอร์แถว ตัวอย่างเช่น<br />
-->v = [1, 2, -3]<br />
v =<br />
1. 2. - 3.<br />
-->v = [1 2 -3]<br />
v =<br />
1. 2. - 3.<br />
ถ้าต้องการทราบว่าเวกเตอร์ v มีความยาวเท่าใดหรือมีจํานวนสมาชิกทั้งหมดเท่าใด ก็ทําได้โดยการ<br />
ใช้คําสั่ง length ดังนี้<br />
-->length(v)<br />
ans =<br />
3. //หมายความว่าเวกเตอร์ v มีสมาชิกสามตัว<br />
ในขณะที่เวกเตอร์แนวตั้ง (column vector) สร้างได้โดยการทรานส์โพส (transpose)<br />
เวกเตอร์แถวซึ ่งใช้เครื ่องหมายอะพอสทรอฟี (apostrophe) “ ' ” ตามหลังตัวแปรเวกเตอร์แถว<br />
หรือสามารถสร้างเวกเตอร์แนวตั้งขึ้นมาได้โดยตรง โดยใช้เครื ่องหมายอัฒภาค “ ; ” เป็นตัวแยก<br />
สมาชิกแต่ละสมาชิกในเวกเตอร์แนวตั้ง เช่น<br />
-->v = [1 2 3];<br />
-->v'<br />
ans =<br />
1.<br />
//สร้างเวกเตอร์แถว v<br />
//ใช้ทรานส์โพสกับเวกเตอร์แถวเพื ่อให้ได้เป็นเวกเตอร์แนวตั้ง
6<br />
2.<br />
3.<br />
-->w = [1; 2; -3] //สร้างเวกเตอร์แนวตั้งขึ้นมาโดยใช้เครื ่องหมายเซมิโคล่อน<br />
w =<br />
1.<br />
2.<br />
- 3.<br />
นอกจากการกําหนดค่าโดยตรงให้กับเวกเตอร์แล้ว ผู้ใช้ยังสามารถกําหนดค่าของเวกเตอร์<br />
ให้มีค่าเพิ ่มขึ้นหรือลดลงแบบอัตโนมัติได้ โดยการใช้เครื ่องหมายทวิภาค (colon) “ : ” ซึ ่งมีรูปแบบ<br />
การใช้งานดังนี้<br />
ชื ่อตัวแปร = ค่าเริ ่มต้น : ค่าที ่เพิ ่มขึ้น (หรือค่าที ่ลดลง) : ค่าสุดท้าย<br />
ในกรณีที ่ไม่มีการกําหนดค่าที ่เพิ ่มขึ้น (หรือค่าที ่ลดลง) โปรแกรม SCILAB จะกําหนดให้เป็นค่าที ่<br />
เพิ ่มขึ้นเท่ากับ +1 โดยอัตโนมัติ (ค่าโดยปริยาย) ตัวอย่างเช่น<br />
-->z = 1:2:10 //เริ ่มต้นที ่ค่า 1 แล้วเพิ ่มขึ้นทีละ +2 จนกระทั่งถึงค่าที ่มากสุดที ่ไม่เกิน 10<br />
z =<br />
1. 3. 5. 7. 9.<br />
-->z = 0:5 //เริ ่มต้นที ่ค่า 0 แล้วเพิ ่มขึ้นทีละ +1 จนกระทั่งถึง 5<br />
z =<br />
0. 1. 2. 3. 4. 5.<br />
-->z = 5:0<br />
z =<br />
//ค่าเริ ่มต้นที ่ 5 ไม่สามารถเพิ ่มขึ้นทีละ +1 จนถึง 0 ได้ ดังนั้นผลลัพธ์ที ่ได้<br />
//จึงมีค่าเท่ากับเมทริกซ์ว่าง (empty matrix) นั่นคือมีจํานวนแถวกับจํานวน<br />
[] //แนวตั้งเท่ากับศูนย์<br />
เมทริกซ์ขนาด m×n คือเมทริกซ์ที ่มีจํานวน m แถว และ n แนวตั้ง เช่น ถ้าต้องการสร้าง<br />
เมทริกซ์ขนาด 2×3 ก็สร้างได้ เช่น<br />
-->A = [1 2 3; 4 5 6]<br />
A =
7<br />
1. 2. 3.<br />
4. 5. 6.<br />
และหากต้องการทราบว่าเมทริกซ์ A มีขนาดเท่าใด ก็ทําได้โดยใช้คําสั่ง size ดังนี้<br />
-->size(A)<br />
ans =<br />
2. 3. //บอกว่าเมทริกซ์ A มีขนาด 2×3 (หรือ 2 แถว และ 3 แนวตั้ง)<br />
งานดังนี้<br />
นอกจากนี้ผู้ใช้ยังสามารถอ้างถึงสมาชิกแต่ละตัวในเมทริกซ์ได้โดยตรงตามรูปแบบการใช้<br />
-->b = A(2, 3)<br />
b =<br />
6.<br />
คําสั่งนี้เป็นการบอกโปรแกรม SCILAB ให้นําค่าของสมาชิกในแถวที่สองและแนวตั้งที่สามของ<br />
เมทริกซ์ A ไปบรรจุไว้ในตัวแปร b ในทํานองเดียวกันผู้ใช้ยังสามารถกําหนดค่าให้แก่สมาชิกแต่ละ<br />
ตัวในเมทริกซ์ได้โดยตรง เช่น<br />
-->A(2, 3) = 10<br />
A =<br />
1. 2. 3.<br />
4. 5. 10.<br />
ซึ ่งเป็นการกําหนดให้ค่าของสมาชิกในแถวที ่สองและแนวตั้งที ่สามของเมทริกซ์ A มีค่าเท่ากับ 10<br />
ดังนั้นเมทริกซ์ A จึงมีผลลัพธ์ตามที ่แสดงไว้ข้างต้น<br />
1.3.1 การหาทรานส์โพส ดีเทอร์มิแนนต์ อินเวอร์สการคูณ ของเมทริกซ์<br />
ทรานส์โพสเมทริกซ์ (matrix transpose) เป็นการเปลี ่ยนแนวตั้งให้เป็นแถว หรือการเปลี ่ยนแถว<br />
ให้เป็นแนวตั้ง โปรแกรม SCILAB สามารถทําการทรานส์โพสเมทริกซ์ได้ 2 รูปแบบ คือ<br />
1) ทรานส์โพสแบบสังยุค (conjugate transpose) จะใช้เครื ่องหมาย “ ' ” เป็นตัวดําเนินการ<br />
โดยทําหน้าที ่สร้างทรานส์โพสเมทริกซ์ พร้อมทั้งทําการสังยุคของตัวเลขเชิงซ้อนด้วย<br />
2) ทรานส์โพสแบบธรรมดา (transpose) จะใช้เครื ่องหมาย “ .' ” เป็นตัวดําเนินการ โดยจะสร้าง<br />
เฉพาะทรานส์โพสเมทริกซ์เท่านั้น
8<br />
ตัวอย่างการใช้งานเช่น<br />
-->A = [1 + 2*%i; 3; 2 - %i];<br />
-->A'<br />
//ใช้ทรานส์โพสแบบสังยุค<br />
ans =<br />
1. - 2.i 3. 2. + i //ทําการสังยุคของตัวเลขเชิงซ้อนด้วย<br />
-->A.'<br />
//ใช้ทรานส์โพสแบบธรรมดา<br />
ans =<br />
1. + 2.i 3. 2. - i<br />
สําหรับการหาดีเทอร์มิแนนต์ (determinant) และอินเวอร์สการคูณของเมทริกซ์ A ทําได้<br />
โดยการใช้คําสั่ง det(A) และ inv(A) ตามลําดับ เช่น<br />
-->A = [1 2; 3 4];<br />
//สร้างเมทริกซ์ A<br />
-->det(A)<br />
//หาดีเทอร์มิแนนต์ ของเมทริกซ์ A<br />
ans =<br />
- 2.<br />
-->inv(A)<br />
//หาอินเวอร์สการคูณของเมทริกซ์ A<br />
ans =<br />
- 2. 1.<br />
1.5 - 0.5<br />
1.3.2 การแก้ระบบสมการเชิงเส้น<br />
โปรแกรม SCILAB สามารถนํามาใช้แก้ไขปัญหาระบบสมการเชิงเส้น (linear equation system)<br />
ได้โดยง่าย ตัวอย่างเช่น ถ้าต้องการแก้สมการสองตัวแปรเพื ่อหาค่าของตัวแปร x 1 และ x 2 จาก<br />
2x 1 + x 2 = 3 (1.1)<br />
x 1 – x 2 = 3 (1.2)
9<br />
ถ้าใช้หลักการแก้สมการสองตัวแปรทั่วไปเพื ่อแก้สมการที ่ (1.1) และ (1.2) จะได้ผลลัพธ์คือ x 1 = 2<br />
และ x 2 = -1 เช่นเดียวกันผู้ใช้สามารถแก้สมการทั้งสองนี้ได้โดยใช้หลักการของเมทริกซ์ดังนี้<br />
สมการที ่ (1.1) และ (1.2) สามารถเขียนให้อยู่ในรูปของเมทริกซ์ได้คือ<br />
⎡2 1 ⎤⎡x1<br />
⎤ ⎡3⎤<br />
⎢<br />
⎣<br />
⎥<br />
⎦<br />
⎢ ⎥<br />
=<br />
1 -1 ⎣x<br />
⎢ ⎥<br />
2<br />
⎦<br />
⎣3<br />
⎦<br />
A<br />
x<br />
b<br />
(1.3)<br />
หรือ Ax = b ผลเฉลยของสมการ (1.3) หาได้โดยการนํา A -1 (อินเวอส์การคูณของเมทริกซ์ A)<br />
-1 -1<br />
-1<br />
มาคูณทั้งสองข้างของสมการ (.3) ก็จะได้ผลลัพธ์เป็น A Ax = A b นั่นคือ x=A b ดังนั้น<br />
คําตอบของสมการที ่ (1.1) และ (1.2) หาได้จากการใช้ชุดคําสั่งดังนี้<br />
-->A = [2 1; 1 -1]; //เมทริกซ์ขนาด 2×2<br />
-->b = [3; 3]; //เวกเตอร์แนวตั้งขนาด 2×1<br />
-->x = inv(A)*b //คําตอบของสมการสองตัวแปรเป็นเวกเตอร์แนวตั้งขนาด 2×1<br />
x =<br />
2.<br />
- 1.<br />
ผลลัพธ์ที ่ได้คือ x 1 = 2 และ x 2 = -1<br />
1.4 พหุนาม<br />
พหุนาม (polynomial) คือผลรวมของจํานวนที ่เขียนในรูปการคูณของค่าคงตัวกับตัวแปรตั้งแต่ 1<br />
ตัวขึ้นไป โดยเลขชี้กําลังของตัวแปรแต่ละตัวมีค่าเป็นศูนย์หรือจํานวนเต็มบวก อย่างไรก็ตามในที ่นี้<br />
จะพิจารณาเฉพาะกรณีที่พหุนามเป็นฟังก์ชันของตัวแปรเพียงตัวเดียวเท่านั้น กล่าวคือโปรแกรม<br />
SCILAB จะรองรับพหุนามที ่มีรูปแบบดังนี้<br />
2 n<br />
0 1 2 … +anx<br />
y=a +a x+a x +<br />
เมื ่อ a = [a 0 a 1 a 2 ... a n ] คือเวกเตอร์ที ่มีสมาชิกแต่ละตัวเป็นค่าสัมประสิทธิ์ของพหุนาม, x<br />
คือตัวแปรพหุนาม, n คือดีกรี (degree) ของพหุนาม, และ y คือสมการพหุนาม ในโปรแกรม<br />
SCILAB สมการพหุนามสร้างได้โดยใช้คําสั่ง poly ดังนี้
10<br />
y = poly(a, "x", [flag])<br />
ซึ ่งมีรูปแบบการใช้งานอยู่ 2 แบบ คือ<br />
1) ถ้าพารามิเตอร์ a เป็นเวกเตอร์ ผลลัพธ์ที ่ได้คือสมการพหุนาม y ที ่ถูกกําหนดโดยพารามิเตอร์<br />
x และ flag เมื ่อ x คือตัวแปรพหุนาม และ flag เป็นตัวเลือก (option) ที ่มีการเรียกใช้<br />
งานดังนี้<br />
flag = "coeff" สร้างสมการพหุนามจากค่าสัมประสิทธิ์ที ่กําหนดโดยเวกเตอร์ a<br />
flag = "roots" (ค่าโดยปริยาย) สร้างสมการพหุนามจากคําตอบของสมการพหุนามที ่<br />
ตัวอย่างเช่น<br />
กําหนดโดยเวกเตอร์ a<br />
-->q = poly([1 2 3], "x", "coeff") //สร้างสมการพหุนามจากค่าสัมประสิทธิ์<br />
q =<br />
2<br />
1 + 2x + 3x<br />
-->p = poly([1 2], "s") //สร้างสมการพหุนามจากคําตอบของสมการพหุนาม<br />
p =<br />
2<br />
2 - 3s + s //นั่นคือ s = 1 และ s = 2 เป็นคําตอบของ s 2 – 3s + 2 = 0<br />
-->roots(p)<br />
ans =<br />
1.<br />
2.<br />
//คําสั่งที ่ใช้หาคําตอบของสมการพหุนาม p<br />
2) ถ้าพารามิเตอร์ a เป็นเมทริกซ์ ผลลัพธ์ที ่ได้คือสมการลักษณะเฉพาะ (characteristic equation)<br />
ของเมทริกซ์ a ซึ ่งในทางคณิตศาสตร์สมการลักษณะเฉพาะของเมทริกซ์ A หาได้จาก<br />
การการแก้สมการ det(A – λI) = 0 โดย λ คือค่าคงตัวใดๆ และ I คือเมทริกซ์เอกลักษณ์<br />
ที ่มีขนาดกับเมทริกซ์ A เช่น ถ้าให้เมทริกซ์<br />
⎡1 2<br />
A=<br />
⎤<br />
จะได้ว่าสมการลักษณะเฉพาะของ<br />
⎢⎣<br />
3 4⎥⎦<br />
เมทริกซ์ A คือสมการ λ<br />
2 -5λ-2=0 โปรแกรม SCILAB สามารถหาสมการลักษณะเฉพาะ<br />
ของเมทริกซ์ A ได้โดยใช้คําสั่ง poly ดังนี้
11<br />
-->A = [1 2; 3 4];<br />
-->y = poly(A, "x")<br />
y =<br />
2<br />
- 2 - 5x + x //ผลลัพธ์เท่ากันกับสมการ λ 2 -5λ-2=0 เมื ่อแทนค่า x = λ<br />
1.5 การดําเนินการทางคณิตศาสตร์<br />
การคํานวณทางคณิตศาสตร์ระหว่างค่าสเกลาร์กับค่าสเกลาร์ เครื ่องหมายที ่ใช้ในการคํานวณกับ<br />
เครื ่องหมายที ่ใช้ในโปรแกรม SCILAB จะแตกต่างกันเล็กน้อยตามตารางที ่ 1.1 ตัวอย่างเช่น<br />
-->a = 3;<br />
-->b = 2;<br />
-->M = [a + b, a - b, a * b; a \b, a /b, a^b]<br />
M =<br />
5. 1. 6.<br />
0.6666667 1.5 9.<br />
ในขณะที ่ตัวดําเนินการที ่ใช้ในการคํานวณทางคณิตศาสตร์สําหรับเมทริกซ์ แสดงในตาราง<br />
ที ่ 1.2 ตัวอย่างเช่น<br />
-->A = [1 2 3; 4 5 6];<br />
-->B = [1 1 1; -1 -1 -1];<br />
-->A + B<br />
ans =<br />
2. 3. 4.<br />
3. 4. 5.<br />
-->A – B<br />
ans =<br />
0. 1. 2.<br />
5. 6. 7.
12<br />
ตารางที ่ 1.1 การดําเนินการที ่ใช้ในการคํานวณทางคณิตศาสตร์ของค่าสเกลาร์<br />
การดําเนินการ รูปแบบพีชคณิต รูปแบบของ SCILAB<br />
การบวก (addition) a + b a + b<br />
การลบ (subtraction) a – b a – b<br />
การคูณ (multiplication) a × b a * b<br />
การหารซ้าย (left division)<br />
การหารขวา (right division)<br />
b<br />
a<br />
a<br />
b<br />
a \ b<br />
a / b<br />
การยกกําลัง (exponentiation) a b a^b หรือ a**b<br />
ตารางที ่ 1.2 ตัวดําเนินการที ่ใช้ในการคํานวณทางคณิตศาสตร์ของเมทริกซ์<br />
ตัวดําเนินการ<br />
คําอธิบาย<br />
+ การบวก (addition)<br />
– การลบ (subtraction)<br />
* การคูณ (multiplication)<br />
.* การคูณในระดับสมาชิก (element-wise multiplication)<br />
.*. การคูณแบบโครเนคเกอร์ (Kronecker product)<br />
\ การหารซ้าย (left division)<br />
.\ การหารซ้ายในระดับสมาชิก (element-wise left division)<br />
.\. การหารซ้ายแบบโครเนคเกอร์ (Kronecker left division)<br />
/ การหารขวา (right division)<br />
./ การหารขวาในระดับสมาชิก (element-wise right division)<br />
./. การหารขวาแบบโครเนคเกอร์ (Kronecker right division)<br />
^ หรือ **<br />
การยกกําลัง (exponentiation)<br />
.^ การยกกําลังในระดับสมาชิก (element-wise exponentiation)<br />
-->A * B<br />
//จํานวนแนวตั้งของตัวตั้งไม่เท่ากับจํานวนแถวของตัวคูณ<br />
!--error 10<br />
Inconsistent multiplication.
13<br />
-->A * B'<br />
ans =<br />
6. - 6.<br />
15. - 15.<br />
-->A .* B<br />
ans =<br />
1. 2. 3.<br />
– 4. – 5. – 6.<br />
-->A .\ B<br />
ans =<br />
1. 0.5 0.3333333<br />
- 0.25 - 0.2 - 0.1666667<br />
-->A .^ B<br />
ans =<br />
1. 2. 3.<br />
0.25 0.2 0.1666667<br />
//การคูณในระดับสมาชิก<br />
//การหารซ้ายในระดับสมาชิก<br />
//การยกกําลังในระดับสมาชิก<br />
จะเห็นได้ว่าการดําเนินการในระดับสมาชิกเกิดขึ้นได้ ก็ต่อเมื ่อเมทริกซ์ทั้งสองมีขนาดเท่ากัน<br />
1.6 การดําเนินการทางคณิตศาสตร์<br />
โปรแกรม SCILAB มีฟังก์ชันที ่ใช้ในการคํานวณทางคณิตศาสตร์จํานวนมากพร้อมเรียกใช้งาน เช่น<br />
ฟังก์ชันพื ้นฐานที ่เกี ่ยวกับตัวเลข ฟังก์ชันตรีโกณมิติ และฟังก์ชันพื ้นฐานทางสถิติ เป็นต้น โดยมี<br />
รายละเอียดดังต่อไปนี้<br />
1.6.1 ฟังก์ชันพื ้นฐานที ่เกี ่ยวกับตัวเลข<br />
ตารางที ่ 1.3 แสดงฟังก์ชันพื ้นฐานที ่เกี ่ยวกับตัวเลข ซึ ่งมีตัวอย่างการใช้งานเช่น<br />
-->abs([1, %i, -2, -2*%i, 3 + 4*%i])<br />
ans =<br />
1. 1. 2. 2. 5.
14<br />
ตารางที ่ 1.3 ตัวอย่างฟังก์ชันพื ้นฐานที ่เกี ่ยวกับตัวเลข<br />
ฟังก์ชัน<br />
abs(x)<br />
sqrt(x)<br />
modulo(m,n)<br />
ceil(x)<br />
floor(x)<br />
sign(x)<br />
roots(p)<br />
real(x)<br />
imag(x)<br />
conj(x)<br />
คําอธิบาย<br />
หาค่าสัมบูรณ์ (absolute value) ของตัวแปร x<br />
หาค่ารากที ่สอง (square root) ของตัวแปร x<br />
หาค่าเศษที ่เหลือการหารตัวแปร n ด้วย m<br />
หาค่าจํานวนเต็มที ่มีค่าใกล้กับค่า x ไปทางค่า ∞ มากที ่สุด<br />
หาค่าจํานวนเต็มที ่มีค่าใกล้กับค่า x ไปทางค่า -∞ มากที ่สุด<br />
หาค่าเครื ่องหมายของตัวแปร x<br />
หาค่ารากหรือคําตอบของสมการพหุนาม p<br />
หาค่าจํานวนจริงของตัวแปร x<br />
หาค่าจํานวนจินตภาพของตัวแปร x<br />
หาค่าสังยุคของจํานวนจํานวนเชิงซ้อนของตัวแปร x<br />
exp(x) หาค่า e x ของตัวแปร x<br />
log(x)<br />
log2(x)<br />
log10(x)<br />
หาค่า log ฐาน e ของตัวแปร x<br />
หาค่า log ฐาน 2 ของตัวแปร x<br />
หาค่า log ฐาน 10 ของตัวแปร x<br />
-->sqrt([2, 4, -1, -4])<br />
ans =<br />
1.4142136 2. i 2.i<br />
-->real([0.1, %i, -1.5 + 2*%i, 2 - %i])<br />
ans =<br />
0.1 0. - 1.5 2.<br />
-->imag([0.1, %i, -1.5 + 2*%i, 2 - %i])<br />
ans =<br />
0. 1. 2. - 1.<br />
-->log([1, %e, 10, 20, 100])<br />
ans =<br />
0. 1. 2.3025851 2.9957323 4.6051702
15<br />
ตารางที ่ 1.4 ฟังก์ชันตรีโกณมิติและฟังก์ชันตรีโกณมิติผกผัน<br />
ฟังก์ชัน<br />
คําอธิบาย<br />
sin(x)<br />
cos(x)<br />
tan(x)<br />
asin(y)<br />
acos(y)<br />
atan(y)<br />
หาค่า sine ของตัวแปร x<br />
หาค่า cosine ของตัวแปร x<br />
หาค่า tangent ของตัวแปร x<br />
หาค่า sine inverse ของตัวแปร y<br />
หาค่า cosine inverse ของตัวแปร y<br />
หาค่า tangent inverse ของตัวแปร y<br />
-->log10([1, 2, 10, 20, 100])<br />
ans =<br />
0. 0.30103 1. 1.30103 2.<br />
1.6.2 ฟังก์ชันตรีโกณมิติ<br />
โปรแกรม SCILAB ได้เตรียมคําสั่งพื ้นฐานสําหรับฟังก์ชันตรีโกณมิติและฟังก์ชันตรีโกณมิติผกผัน<br />
ไว้ตามตารางที ่ 1.4 โดยค่ามุมที ่ใช้หรือที ่ได้รับจากฟังก์ชันทางตรีโกณมิติจะต้องมีหน่วยเป็นเรเดียน<br />
(radian) ตัวอย่างเช่น<br />
-->y = sin([0, 1, %pi/2, -%pi/2])<br />
y =<br />
0. 0.8414710 1. - 1.<br />
-->x = asin(y)<br />
x =<br />
0. 1. 1.5707963 - 1.570796 //มีหน่วยเป็นเรเดียน<br />
-->y = tan([0, %pi/6, %pi/4, %pi/3])<br />
y =<br />
0. 0.5773503 1. 1.7320508<br />
-->x = atan(y)<br />
x =<br />
0. 0.5235988 0.7853982 1.0471976 //มีหน่วยเป็นเรเดียน
16<br />
ตารางที ่ 1.5 ตัวอย่างฟังก์ชันพื ้นฐานทางสถิติ<br />
ฟังก์ชัน<br />
คําอธิบาย<br />
min(x) หาค่าตํ่าสุด (minimum) ของตัวเลขทั้งหมดในตัวแปร x<br />
max(x)<br />
mean(x)<br />
median(x)<br />
variance(x)<br />
sum(x)<br />
cumsum(x)<br />
prod(x)<br />
cumprod(x)<br />
sort(x)<br />
histplot(n,x)<br />
หาค่าสูงสุด (maximum) ของตัวเลขทั้งหมดในตัวแปร x<br />
หาค่าเฉลี ่ย (mean) ของตัวเลขทั้งหมดในตัวแปร x<br />
หาค่ามัธยฐาน (median) ของตัวเลขทั้งหมดในตัวแปร x<br />
หาค่าความแปรปรวน (variance) ของตัวเลขทั้งหมดในตัวแปร x<br />
หาค่าผลบวกของตัวเลขทั้งหมดในตัวแปร x<br />
หาค่าผลบวกสะสม (cumulative sum) ของตัวเลขทั้งหมดในตัวแปร x<br />
หาค่าผลคูณของตัวเลขทั้งหมดในตัวแปร x<br />
หาค่าผลคูณสะสม (cumulative product) ของตัวเลขทั้งหมดในตัวแปร x<br />
เรียงลําดับตัวเลขทั้งหมดในตัวแปร x จากค่ามากไปหาค่าน้อย<br />
วาดรูปฮิสโตแกรม (histogram) ของค่าทั้งหมดในเวกเตอร์ x เป็น<br />
จํานวน n ช่วงระหว่างค่าตํ่าสุดและค่าสูงสุดของเวกเตอร์ x<br />
1.6.3 ฟังก์ชันพื ้นฐานทางสถิติ<br />
โปรแกรม SCILAB ได้เตรียมฟังก์ชันสําหรับการใช้งานทางด้านสถิติ ตามที ่แสดงในตารางที ่ 1.5<br />
ตัวอย่างเช่น<br />
-->x = [3 1 4 9 2 5 7 8 6];<br />
-->[min(x), max(x), mean(x), median(x), sum(x)]<br />
ans =<br />
1. 9. 5. 5. 45.<br />
-->sort(x)<br />
ans =<br />
9. 8. 7. 6. 5. 4. 3. 2. 1.<br />
ในการใช้งานทางด้านสถิติ คําสั่งที ่นิยมใช้คือคําสั่ง histplot(n,x) ซึ ่งเป็นคําสั่งที ่<br />
ใช้วาดรูปฮิสโตแกรม (histogram) ของค่าทั้งหมดในเวกเตอร์ x เป็นจํานวน n ช่วงระหว่างค่าตํ่าสุด<br />
และค่าสูงสุดของเวกเตอร์ x ตัวอย่างเช่น
17<br />
รูปที ่ 1.2 ตัวอย่างรูปฮิสโตแกรม<br />
-->d = rand(1, 10000, 'normal'); //สร้างตัวแปรสุ่มจํานวน 10000 ตัว<br />
-->subplot(1,2,1);<br />
-->histplot(10, d, normalization = %F);<br />
//รูปที ่ 1.2 ด้านซ้าย<br />
-->subplot(1,2,2);<br />
-->histplot(20, d, normalization = %F);<br />
//รูปที ่ 1.2 ด้านขวา<br />
คําสั่งแรกจะทําการสร้างจํานวนสุ่ม (random number) จํานวน 10000 ตัว (บรรจุไว้ในเวกเตอร์<br />
ขนาด 1×10000) โดยมีลักษณะการแจกแจงปรกติ (normal distribution) หรือการแจกแจงแบบ<br />
เกาส์เซียน (Gaussian) นั่นคือมีค่าเฉลี ่ย (mean) เท่ากับค่า 0 และมีค่าความแปรปรวน (variance)<br />
เท่ากับค่า 1 จากนั้นทําการวาดรูปฮิสโตแกรมของจํานวนสุ่มทั้งหมดโดยแบ่งข้อมูลเป็น 10 ช่วง<br />
(รูปที ่ 1.2 ด้านซ้าย) และแบ่งข้อมูลเป็น 20 ช่วง (รูปที ่ 1.2 ด้านขวา)<br />
1.7 เมทริกซ์พิเศษ<br />
ในการประยุกต์ใช้งานเมทริกซ์ บางครั้งมีความจําเป็นต้องสร้างเมทริกซ์ที ่มีรูปแบบเฉพาะ เช่น ถ้า<br />
ต้องการสร้างเมทริกซ์ที ่มีค่าเป็น 1 ทั้งหมดขนาด m×n เมื ่อ m และ n มีค่ามาก โดยการพิมพ์ค่า<br />
แต่ละค่าเข้าไปอาจจะทําให้เสียเวลามากและอาจเกิดข้อผิดพลาดได้ง่าย ดังนั้นโปรแกรม SCILAB<br />
จึงได้เตรียมฟังก์ชันพื ้นฐานสําหรับสร้างเมทริกซ์พิเศษหลายรูปแบบขึ้นมาไว้ใช้งานตามตารางที ่ 1.6<br />
ตัวอย่างเช่น
18<br />
ตารางที ่ 1.6 ตัวอย่างเมทริกซ์พิเศษในโปรแกรม SCILAB<br />
คําสั่ง คําอธิบาย<br />
eye<br />
ones<br />
zeros<br />
เมทริกซ์เอกลักษณ์ (identity matrix)<br />
เมทริกซ์ค่าหนึ ่ง (one matrix)<br />
เมทริกซ์ค่าศูนย์ (zero matrix)<br />
rand เมทริกซ์สุ่ม (random matrix)<br />
diag<br />
tril<br />
triu<br />
toeplitz<br />
เมทริกซ์ทแยงมุม (diagonal matrix)<br />
เมทริกซ์สามเหลี ่ยมด้านล่าง (lower triangular matrix)<br />
เมทริกซ์สามเหลี ่ยมด้านบน (upper triangular matrix)<br />
เมทริกซ์ Toeplitz (toeplitz matrix)<br />
-->A = eye(3,3)<br />
//สร้างเมทริกซ์เอกลักษณ์ที ่มีขนาด 3×3<br />
A =<br />
1. 0. 0.<br />
0. 1. 0.<br />
0. 0. 1.<br />
-->diag([1 2 3]) //ค่า 1, 2, และ 3 อยู่ ณ เส้นทแยงมุมหลัก<br />
ans =<br />
1. 0. 0.<br />
0. 2. 0.<br />
0. 0. 3.<br />
1.7.1 เมทริกซ์สุ่ม<br />
เมทริกซ์สุ่ม (random matrix) เป็นเมทริกซ์ที ่มีสมาชิกเป็นจํานวนสุ่ม โปรแกรม SCILAB สร้าง<br />
เมทริกซ์สุ่มได้โดยใช้คําสั่ง rand ซึ ่งมีลักษณะการเรียกใช้งานดังนี้<br />
rand(m1, m2, [key])<br />
โดย
19<br />
• m1, m2 คือเลขจํานวนเต็มบวกที ่ใช้กําหนดขนาดของเมทริกซ์สุ่มที ่สร้างขึ้นมา เช่น คําสั่ง<br />
rand(m1,m2) จะสร้างเมทริกซ์สุ่มขนาด m1 แนวนอน และ m2 แนวตั้ง<br />
• key เป็นตัวเลือกที ่กําหนดลักษณะการแจกแจง (distribution) ของจํานวนสุ่มที ่สร้าง<br />
กล่าวคือถ้า<br />
o key = "uniform" จํานวนสุ่มที ่สร้างขึ้นมาจะมีลักษณะการแจกแจงเอกรูปมีค่าอยู่<br />
ระหว่าง 0 ถึง 1 (เป็นค่าโดยปริยาย)<br />
o key = "normal" จํานวนสุ่มที ่สร้างขึ้นมาจะมีลักษณะการแจกแจงปรกติ (หรือแบบ<br />
เกาส์เซียน) ที ่มีค่าเฉลี ่ยเท่ากับ 0 และมีค่าความแปรปรวน (varaince) เท่ากับ 1<br />
ตัวอย่างการใช้งานของคําสั่งนี้ เช่น<br />
-->X = rand(2, 4, 'uniform') //สร้างเมทริกซ์สุ่มขนาด 2×4<br />
X =<br />
0.3095371 0.9706916 0.0204748 0.3490364<br />
0.6762972 0.5441797 0.8941365 0.1105365<br />
-->W = rand(1, 100000, 'normal');<br />
-->[mean(W), variance(W)]<br />
ans =<br />
//ค่าเฉลี ่ยและค่าความแปรปรวนสอดคล้องกับ<br />
//ลักษณะการแจกแจงปรกติ<br />
0.0048048 0.9988003<br />
1.8 การเขียนโปรแกรมด้วย SCILAB<br />
ในส่วนนี้จะอธิบายวิธีการใช้งานคําสั่งวนซํ้าและคําสั่งทดสอบเงื ่อนไข เพื ่อให้ผู้อ่านสามารถเขียน<br />
โปรแกรมอย่างง่ายขึ้นมาใช้งานได้อย่างรวดเร็วและมีประสิทธิผล<br />
1.8.1 คําสั่งวนซํ้า<br />
ในการเขียนโปรแกรม บางครั้งมีความจําเป็นต้องคํานวณชุดคําสั่งบางชุดซํ้าหลายครั้ง ซึ ่งในกรณีนี้<br />
การใช้คําสั่งวนซํ้าจึงมีความจําเป็นมาก โปรแกรม SCILAB ได้เตรียมคําสั่งสําหรับการวนซํ้าไว้สอง<br />
รูปแบบคือ คําสั่ง for และคําสั่ง while ซึ ่งมีหลักการใช้งานดังนี้
20<br />
1.8.1.1 คําสั่ง for<br />
คําสั่ง for เหมาะสําหรับการใช้งานที ่ต้องการให้โปรแกรมทําซํ้าชุดคําสั่งเดิมที ่อยู่ภายในลูป (loop)<br />
เป็นจํานวนรอบตามที ่กําหนดไว้ในนิพจน์ (expression) ซึ ่งมีรูปแบบการใช้งานดังนี้<br />
for variable = expression<br />
instruction_1;<br />
end<br />
instruction_n;<br />
กล่าวคือโปรแกรมจะทําซํ้าคําสั่ง (instruction) ทั้งหมดภายในลูปเป็นจํานวนรอบตามที ่กําหนดโดย<br />
ตัวแปรที ่เป็นไปตามเงื ่อนไขของนิพจน์ ตัวอย่างการใช้งานคําสั่ง for เช่น<br />
-->L = 5;<br />
-->x = [];<br />
-->for i = 1:L<br />
--> x(i) = i;<br />
-->end<br />
ชุดคําสั่งนี้หมายความว่าเมื ่อเริ ่มต้นใช้งานตัวแปร L มีค่าเท่ากับ 5 และกําหนดให้ x เป็นเมทริกซ์<br />
ว่าง (empty matrix) จากนั้นทําการวนซํ้าโดยใช้ตัวแปร i เป็นตัวนับจํานวนครั้ง นั่นคือตัวแปร i<br />
จะเริ ่มจากค่า 1 แล้วเพิ่มขึ้นทีละ +1 จนถึงค่า 5 โดยค่าของตัวแปร i แต่ละค่าจะถูกบรรจุไว้ใน<br />
สมาชิกลําดับที ่ i ของเวกเตอร์ x ผลลัพธ์ของการประมวลผลชุดคําสั่งนี้คือ<br />
-->x'<br />
ans =<br />
1. 2. 3. 4. 5.<br />
1.8.1.2 คําสั่ง while<br />
คําสั่ง while มีลักษณะการทํางานคล้ายกับคําสั่ง for เพียงแต่คําสั่ง while จะมีการทดสอบ<br />
เงื ่อนไขที ่ผู้เขียนโปรแกรมกําหนดไว้ในนิพจน์ทุกรอบของการวนซํ้า กล่าวคือถ้าผลการทดสอบให้<br />
ค่าตรรกะเป็นค่า 1 (เป็นจริง) โปรแกรมก็จะทําซํ้าชุดคําสั่งภายในลูปนั้นต่ออีกหนึ ่งรอบ แต่ถ้าผล<br />
การทดสอบให้ค่าตรรกะเป็นค่า 0 (เป็นเท็จ) โปรแกรมก็จะยกเลิกการทํางานชุดคําสั่งภายในลูปนั้น<br />
ทันที คําสั่ง while มีรูปแบบการใช้งานดังนี้
21<br />
while expression<br />
instruction_1;<br />
end<br />
instruction_n;<br />
ตัวอย่างเช่น<br />
-->L = 5; x = [];<br />
-->i = 1;<br />
-->while i x(i) = i;<br />
--> i = i + 1;<br />
-->end<br />
ชุดคําสั่งนี้ให้ผลลัพธ์เหมือนกับตัวอย่างของการใช้คําสั่ง for เพียงแต่การใช้คําสั่ง while ต้อง<br />
กําหนดค่าเริ ่มต้นของตัวแปร i ก่อนนําค่า i ไปทําการเปรียบเทียบกับค่า L ตามเงื ่อนไขที ่กําหนด<br />
1.8.2 คําสั่งทดสอบเงื ่อนไข<br />
คําสั่งทดสอบเงื ่อนไขมีความจําเป็นมากสําหรับการเขียนโปรแกรมคอมพิวเตอร์ที ่ซับซ้อน โดยทั่วไป<br />
คําสั่งทดสอบเงื ่อนไขที ่นิยมใช้คือ คําสั่ง if ซึ ่งมีหลักการใช้งานดังนี้<br />
if expression then<br />
instruction_1;<br />
end<br />
instruction_n;<br />
กล่าวคือถ้าผลการทดสอบเงื ่อนไขในนิพจน์เป็นจริง โปรแกรม SCILAB ก็จะทําคําสั่งทั้งหมดที ่อยู่<br />
ระหว่างคําว่า then และ end แต่ถ้าผลการทดสอบเป็นเท็จ โปรแกรม SCILAB จะไม่ทําคําสั่ง<br />
ทั้งหมดที ่อยู่ระหว่างคําว่า then และ end<br />
นอกจากนี้คําสั่ง if ยังสามารถนําไปใช้งานกับการตัดสินใจที ่ซับซ้อนมากขึ้นได้โดยการ<br />
ใช้งานร่วมกับ else ซึ ่งมีรูปแบบการใช้งานคือ
22<br />
if expression then<br />
instructions_set1;<br />
else<br />
instructions_set2;<br />
end<br />
กล่าวคือถ้าผลการทดสอบเงื ่อนไขในนิพจน์เป็นจริง โปรแกรม SCILAB จะทําคําสั่งทั้งหมดที ่อยู่<br />
ระหว่างคําว่า then และ else แต่ถ้าผลการทดสอบเป็นเท็จ โปรแกรม SCILAB จะทําคําสั่ง<br />
ทั้งหมดที ่อยู่ระหว่างคําว่า else และ end<br />
ในการใช้งานที่มีการตัดสินใจที่ซับซ้อนมากยิ่งขึ้น ผู้ใช้ก็ยังคงสามารถใช้งานคําสั่ง if<br />
ร่วมกับ elseif ได้ โดยมีรูปแบบการใช้งานดังนี้<br />
if expression_1 then<br />
instructions_set1;<br />
elseif expression_2 then<br />
instructions_set2;<br />
else<br />
instructions_set3;<br />
end<br />
นั่นคือถ้าผลการทดสอบเงื ่อนไขในนิพจน์ expression_1 เป็นจริง โปรแกรม SCILAB จะทํา<br />
ชุดคําสั่ง instructions_set1 แต่ถ้าผลการทดสอบเป็นเท็จ โปรแกรม SCILAB ก็จะทํา<br />
การทดสอบเงื ่อนไขในนิพจน์ expression_2 ต่อไปทันที โดยที่ถ้าผลการทดสอบในนิพจน์<br />
expression_2 เป็นจริง โปรแกรม SCILAB ก็จะทําชุดคําสั่ง instructions_set2 แต่<br />
ถ้าผลการทดสอบเป็นเท็จ ก็จะทําชุดคําสั่ง instructions_set3<br />
1.8.3 การเขียนฟังก์ชันแบบอินไลน์<br />
โปรแกรม SCILAB อนุญาตให้ผู้ใช้สร้างฟังก์ชันใหม่ๆ ขึ้นมาใช้งานร่วมกับโปรแกรม SCILAB ได้<br />
ในที ่นี้จะอธิบายเฉพาะการเขียนฟังก์ชันแบบอินไลน์ (in-line function) ซึ ่งมีลักษณะการใช้งานดังนี้<br />
function [เอาต์พุต] = function_name(อินพุต), ชุดคําสั่ง, endfunction
23<br />
นั่นคือจะต้องเริ ่มต้นด้วยคําว่า function และปิดท้ายด้วยคําว่า endfunction โดยที ่ภายใน<br />
ฟังก์ชันจะมีคําสั่งแต่ละคําสั่งจะต้องคั้นด้วยเครื ่องหมายจุลภาค ตัวอย่างเช่นถ้าต้องการสร้างฟังก์ชัน<br />
แบบอินไลน์ที ่ชื ่อ MyMax เพื ่อใช้หาค่าสูงสุดของเลขจํานวนจริงสองจํานวน ก็ทําได้ดังนี้<br />
-->function [y] = MyMax(x1, x2), if x1 >= x2 then y = x1, ...<br />
-->else y = x2; end; endfunction;<br />
-->y = MyMax(1, 5)<br />
//เรียกฟังก์ชัน MyMax ขึ้นมาใช้งาน<br />
y =<br />
5.<br />
นอกจากนี้ยังสามารถใช้คําสั่ง deff ในการสร้างฟังก์ชันแบบอินไลน์ได้เช่นกัน โดยมีรูปแบบการ<br />
ใช้งานคือ<br />
deff('[เอาต์พุต] = function_name(อินพุต)', 'ชุดคําสั่ง')<br />
ตัวอย่างเช่น<br />
-->deff('y = MyMax(x1, x2)', 'if x1 > x2 then y = x1; ...<br />
-->else y = x2; end');<br />
-->y = MyMax(1,5)<br />
y =<br />
5.<br />
ซึ ่งให้ผลลัพธ์เท่ากัน<br />
1.9 การวาดกราฟสองมิติ<br />
คําสั่งพื ้นฐานสําหรับการวาดกราฟสองมิติบนระบบพิกัดฉาก x-y คือคําสั่ง plot ซึ ่งมีรูปแบบการ<br />
เรียกใช้งานดังนี้<br />
plot(x, y)
24<br />
เมื ่อเวกเตอร์ x เป็นตัวแปรอิสระที ่กําหนดค่าในเส้นแกน x และเวกเตอร์ y ซึ ่งเป็นตัวแปรตามที ่<br />
กําหนดค่าในเส้นแกน y (โดยเวกเตอร์ y ต้องมีขนาดเท่ากับเวกเตอร์ x เสมอ) นอกจากนี้คําสั่ง<br />
plot ยังสามารถเรียกใช้งานได้ในอีกรูปแบบหนึ ่งคือ<br />
plot(y)<br />
ซึ ่งในกรณีนี้โปรแกรม SCILAB จะสมมติว่าพารามิเตอร์ x มีค่าเท่ากับค่า 1 ถึงจํานวนสมาชิก<br />
ทั้งหมดของเวกเตอร์ y นั่นคือ x = 1:length(y) โดยอัตโนมัติ<br />
ตัวอย่างที ่ 1.1 จงวาดกราฟของรูปสัญญาณไซนูซอยด์ (sinusoid waveform) ตามสมการ y =<br />
sin(2πft) สําหรับเวลาที ่ t = 0 ถึง 2 วินาที ถ้ากําหนดให้ความถี ่ f = 1 เฮิตร์ซ (Hertz)<br />
วิธีทํา จากโจทย์สามารถเขียนเป็นชุดคําสั่งของโปรแกรม SCILAB ได้ดังนี้<br />
-->t = 0:0.01:2;<br />
-->f = 1;<br />
-->y = sin(2*%pi*f*t);<br />
-->plot(t, y)<br />
-->xtitle('A sinusoidal wave','Time (t)','Amplitude')<br />
คําสั่งแรกเป็นการกําหนดให้ตัวแปร t ให้มีค่าอยู่ระหว่าง 0 ถึง 2 โดยสมาชิกแต่ละตัวที ่อยู่ติดกัน<br />
จะมีค่าห่างกันเท่ากับ 0.01 (ขนาดของตัวแปร t คือ 1×201) จากนั้นกําหนดให้ความถี่ f = 1<br />
แล้วก็หาค่าของสัญญาณ y โดยค่า y ที ่หามาได้จะมีขนาดเท่ากับตัวแปร t จากนั้นก็สั่งให้วาดกราฟ<br />
ขึ้นมา ซึ ่งผลลัพธ์ที ่ได้จะเป็นกราฟตามรูปที ่ 1.3 ส่วนคําสั่ง xtitle เป็นคําสั่งที ่ใช้ในการกําหนด<br />
ชื ่อของกราฟ ชื ่อของเส้นแกน x และชื ่อของเส้นแกน y<br />
1.9.1 กราฟเชิงขั้ว<br />
โดยทั่วไปจุดพิกัด (x, y) ที ่แสดงถึงตําแหน่ง (location) บนรูปกราฟในระบบพิกัดฉากสามารถเปลี ่ยน<br />
ให้อยู่ในรูปของจุดพิกัด (r, θ) ในระบบพิกัดเชิงขั้วได้ เมื ่อ r คือขนาด และ θ คือมุมเรเดียน (เทียบ<br />
กับแกน x ในทิศทวนเข็มนาฬิ กา) โดยอาศัยกฎของตรีโกณมิติ ดังนั้นจากรูปที ่ 1.4 จะได้ว่า<br />
2 2<br />
r = x + y และ<br />
θ = tan<br />
−1 ⎛y<br />
⎞<br />
⎜ ⎟<br />
⎝ ⎠<br />
x
25<br />
รูปที ่ 1.3 สัญญาณไซนูซอยด์ y = sin(2πft)<br />
y<br />
r<br />
( x,y)<br />
θ<br />
x<br />
รูปที ่ 1.4 ความสัมพันธ์ระหว่างจุด (x, y) ในระบบพิกัดฉาก และจุด (r, θ) ในระบบพิกัดเชิงขั้ว<br />
ในทํานองเดียวกันจุดพิกัด (r, θ) ในระบบพิกัดเชิงขั้วก็สามารถแปลงกลับไปเป็นจุดพิกัด (x, y)<br />
ในระบบพิกัดฉากได้จากความสัมพันธ์ดังนี้<br />
x = r cos( θ)<br />
และ y = r sin( θ)<br />
การวาดกราฟเชิงขั้วในโปรแกรม SCILAB ทําได้โดยการใช้คําสั่ง<br />
polarplot(theta, r)<br />
เมื ่อพารามิเตอร์ theta คือค่ามุม θ (มีหน่วยเป็นเรเดียน) และพารามิเตอร์ r คือค่าความยาวของ<br />
รัศมี ตัวอย่างเช่น
26<br />
รูปที ่ 1.5 ตัวอย่างรูปกราฟแสดงผลลัพธ์จากการใช้คําสั่ง polarplot<br />
-->t = 0:0.01:2*%pi;<br />
-->polarplot(sin(7*t), cos(8*t))<br />
ผลลัพธ์แสดงในรูปที ่ 1.5<br />
หมายเหตุ นอกจากนี้โปรแกรม SCILAB ยังได้เตรียมคําสั่งสําหรับการวาดกราฟสองมิติแบบอื ่นๆ<br />
ไว้ใช้งานเฉพาะด้านมากมายดังแสดงในตารางที ่ 1.7<br />
1.10 การวาดกราฟสามมิติ<br />
สมการคณิตศาสตร์แบบสามตัวแปรใดๆ สามารถแสดงให้อยู่ในรูปของกราฟสามมิติได้ เพื ่อใช้แสดง<br />
ความสัมพันธ์ของตัวแปรทั้งสาม การใช้งานคําสั่งวาดกราฟสามมิตินั้นไม่ยากเพียงแต่ต้องเข้าใจถึง<br />
รูปแบบของข้อมูลที ่จะป้อนให้กับคําสั่งเหล่านี้ การวาดกราฟสามมิติใช้ข้อมูลทั้งหมดสามชุดสําหรับ<br />
เส้นแกน x, เส้นแกน y, และเส้นแกน z ที ่อยู่ในพิกัดคาร์ทีเซียน (Cartesian coordinate) x-y-z<br />
โดยเวกเตอร์ x จะเป็นตัวกําหนดค่าในเส้นแกน x, เวกเตอร์ y จะเป็นตัวกําหนดค่าในเส้นแกน y,<br />
และตัวแปรตามที ่มีค่าเปลี ่ยนแปลงไปตามค่า x และ y ซึ ่งก็คือขนาดของค่าบนเส้นแกน z นั่นเอง<br />
ดังนั้นตัวแปรตาม z นี้จะต้องมีจํานวนเท่ากับผลคูณของจํานวนข้อมูลในเวกเตอร์ x กับจํานวน<br />
ข้อมูลในเวกเตอร์ y<br />
คําสั่งพื ้นฐานสําหรับวาดกราฟแบบสามมิติในโปรแกรม SCILAB มีรูปแบบดังนี้
27<br />
ตารางที ่ 1.7 ตัวอย่างคําสั่งในการวาดกราฟสองมิติสําหรับการใช้งานเฉพาะด้าน<br />
คําสั่ง คําอธิบาย<br />
contour2d<br />
champ<br />
fchamp<br />
bode<br />
gainplot<br />
nyquist<br />
evans<br />
plzr<br />
วาดกราฟคอนทัวร์ (contour surface) จากรูปกราฟสองมิติ<br />
วาดกราฟสนามเวกเตอร์แบบสองมิติ (2-D vector field)<br />
วาดกราฟสนามเวกเตอร์แบบสองมิติ ที ่กําหนดโดยสมการอนุพันธ์อันดับหนึ ่ง<br />
(first-order ordinary differential equation)<br />
วาดกราฟของโบดไดอะแกรม (Bode diagram) ทั้งกราฟแสดงขนาด (magnitude<br />
plot) และกราฟแสดงมุม (phase plot) ซึ ่งมีประโยชน์มากทางด้านวิศวกรรม<br />
วาดกราฟแสดงขนาดของโบดไดอะแกรม<br />
วาดกราฟไนควิตซ์ (Nyquist plot)<br />
วาดกราฟอีแวนรูทโลคัส (Evans root locus)<br />
วาดกราฟโพล-ซีโร่ (pole-zero plot)<br />
plot3d(x, y, z)<br />
เมื ่อพารามิเตอร์ x และ y คือเวกเตอร์ที ่มีขนาดเท่ากัน และพารามิเตอร์ z คือตัวแปรตามที ่ขึ้นกับ<br />
ค่าของ x และ y ซึ ่งมีจํานวนสมาชิกเท่ากับผลคูณของจํานวนสมาชิกในเวกเตอร์ x กับจํานวน<br />
สมาชิกในเวกเตอร์ y<br />
ตัวอย่างที ่ 1.2 กําหนดให้ตัวแปร x และ y มีค่าระหว่าง 0 ถึง 1 จงวาดกราฟสามมิติจากสมการ<br />
( 2xπ) ( 2yπ)<br />
z = 0.5 cos cos<br />
วิธีทํา จากโจทย์สามารถวาดกราฟสามมิติได้โดยใช้ชุดคําสั่งของโปรแกรม SCILAB ดังนี้<br />
-->x = linspace(0, 1, 21);<br />
-->y = linspace(0, 1, 21);<br />
-->z = abs(0.5 * cos(2*%pi*x)' * cos(2*%pi*y));<br />
-->plot3d(x, y, z);<br />
ผลลัพธ์ที ่ได้จากชุดคําสั่งเหล่านี้แสดงในรูปที ่ 1.6
28<br />
รูปที ่ 1.6 ตัวอย่างรูปกราฟแสดงผลลัพธ์จากการใช้คําสั่ง plot3d<br />
ถ้าต้องการให้มีการไล่โทนสีตามขนาดของค่าในแกน z ก็สามารถทําได้โดยการใช้คําสั่ง<br />
plot3d1 และถ้าต้องการทราบความสัมพันธ์ระหว่างสีกับขนาดของค่าในแกน z ก็สามารถทําได้โดย<br />
ใช้คําสั่ง colorbar ซึ ่งมีรูปแบบการใช้งานคือ<br />
colorbar(umin, umax, [colminmax])<br />
โดยพารามิเตอร์ umin เป็นเลขจํานวนจริงของค่าตํ่าสุดของขนาดของค่าในแกน z, umax เป็นเลข<br />
จํานวนจริงของค่าสูงสุดของขนาดของค่าในแกน z, และ colminmax เป็นตัวเลือกที ่มีรูปแบบ<br />
การใช้งานคือ colminmax = [1 nb_colors] เป็นเวกเตอร์ขนาด 1×2 เมื ่อ nb_colors<br />
คือจํานวนสีที ่ใช้ในรูปกราฟ ตัวอย่างการใช้งานคําสั่งนี้ เช่น (ต่อเนื ่องจากรูปที ่ 1.6)<br />
-->clf; zmin = min(z);<br />
-->zmax = max(z);<br />
-->colorbar(zmin, zmax, [1 30]);<br />
-->plot3d1(x, y, z);<br />
ผลลัพธ์ที ่ได้แสดงในรูปที ่ 1.7 ซึ ่งมีแถบสีแสดงความสัมพันธ์ระหว่างสีและขนาดของค่าในเส้นแกน z<br />
หมายเหตุ จากที ่กล่าวมาทั้งหมดนี้เป็นเพียงพื ้นฐานการใช้งานโปรแกรม SCILAB สําหรับผู้ที ่สนใจ<br />
วิธีการใช้งานโปรแกรม SCILAB เพิ ่มเติมสามารถศึกษารายละเอียดได้จาก [4]
29<br />
รูปที ่ 1.7 ตัวอย่างรูปกราฟแสดงผลลัพธ์จากการใช้คําสั่ง colorbar ร่วมกับ plot3d1<br />
1.11 สรุปท้ายบท<br />
บทนี้ได้สรุปพื ้นฐานการใช้งานโปรแกรม SCILAB ที ่จําเป็นต่างๆ (เช่น การสร้างสเกล่าร์ เวกเตอร์<br />
เมทริกซ์ และพหุนาม ตัวดําเนินการทางคณิตศาสตร์ ฟังก์ชันพื ้นฐานทางคณิตศาสตร์ รวมทั้งอธิบาย<br />
หลักการการเขียนโปรแกรมด้วย SCILAB และการวาดกราฟสองมิติและสามมิติ) เพื ่อเป็นแนวทาง<br />
ในการนําไปใช้งานร่วมกับโปรแกรมต่างๆ เพื ่อสร้างสื ่อการเรียนการสอนที ่จะอธิบายในบทต่อไป<br />
1.12 แบบฝึกหัดท้ายบท<br />
1. จงคํานวณหาค่าของฟังก์ชันต่อไปนี้ เมื ่อ x มีค่าเท่ากับ −2, 0, 2, −2i และ 2i<br />
1.1) f ( x)<br />
2x 5<br />
2. กําหนดให้<br />
3<br />
= − 1.2) f ( x) = x − 2x + log10<br />
( 3x − 5)<br />
⎡<br />
⎢<br />
⎢<br />
⎣<br />
5 8 7<br />
A = 4 2 6<br />
9 8 9<br />
⎤<br />
⎥ ,<br />
⎥<br />
⎦<br />
⎡<br />
⎢<br />
⎢<br />
⎣<br />
−1 2 −3<br />
B = 2 −4 5<br />
2 3 1<br />
⎤<br />
⎥ ,<br />
⎥<br />
⎦<br />
⎡<br />
⎢<br />
⎢<br />
⎣<br />
3 1 2<br />
C = −1 2 1<br />
−2 −1 1<br />
⎤<br />
⎥<br />
⎥<br />
⎦<br />
และ<br />
⎡<br />
⎢<br />
⎢<br />
⎣<br />
−2<br />
E = 0<br />
2<br />
⎤<br />
⎥<br />
⎥<br />
⎦<br />
จงหาค่าต่อไปนี้<br />
2.1) AB + BC 2.2) (A + B)/C<br />
2.3) (A + B)C 2.4) AE + CE
30<br />
3. จงหาคําตอบของสมการลักษณะเฉพาะของเมทริกซ์ต่อไปนี้<br />
3.1)<br />
2 3<br />
A = ⎡ ⎢<br />
⎤<br />
4 5⎥<br />
⎣<br />
⎦<br />
3.2) B =<br />
⎡<br />
⎢<br />
⎣<br />
1 −5<br />
−2 3<br />
⎤<br />
⎥<br />
⎦<br />
4. จงแก้สมการเพื ่อหาค่าของตัวแปรทั้งหมดในระบบสมการเชิงเส้นต่อไปนี้<br />
4.1) 2x – 3y = 5 4.2) x + y + z = 6<br />
−6x + 9y = −12 x – 2y + z = 0<br />
5. จงหารากหรือคําตอบของสมการต่อไปนี้<br />
3x + y – 2z = −1<br />
5.1) x 2 – 2x + 5 = 0 5.2) x 3 – 6x 2 + 11x – 6 = 0<br />
5.3) x 4 – 14x 3 + 49x 2 – 36x = 0 5.4) x 7 + 3x 5 – 2x 3 + 5x 2 – 10x = 0<br />
6. กําหนดให้ตัวแปร N เป็นเลขจํานวนเต็มบวกใดๆ จงเขียนโปรแกรมโดยใช้คําสั่ง for เพื ่อหา<br />
ค่าต่อไปนี้<br />
6.1)<br />
N<br />
∑ i = 1+ 2+ 3+ … + N 6.2)<br />
i=<br />
1<br />
N 2 2 2 2 2<br />
∑ i = 1 + 2 + 3 + … + N<br />
i=<br />
1<br />
7. จงเขียนไฟล์ฟังก์ชันที ่มีรูปแบบการเรียกใช้งานคือ<br />
[a, b, c, d] = MoneyExchange(m)<br />
เพื ่อเปลี ่ยนจํานวนเงิน m บาท ให้เป็นธนบัตรใบละ 100 บาท จํานวน a ใบ, ธนบัตรใบละ 20<br />
บาท จํานวน b ใบ, เหรียญสิบบาท จํานวน c เหรียญ และเหรียญหนึ ่งบาท จํานวน d เหรียญ<br />
8. กําหนดให้ y = (e x − e -x )/2 โดยที ่ −10 ≤ x ≤ 10<br />
8.1) วาดกราฟเชิงเส้น<br />
8.2) วาดกราฟลอการิทึมทั้งในแนวแกน x และแกน y<br />
9. กําหนดให้ 0 ≤ x ≤ 1 และ 0 ≤ y ≤ 1 จงวาดกราฟสามมิติของฟังก์ชันต่อไปนี้<br />
9.1) z = sin( 2πx) cos( 3πy)<br />
9.2) z = cos( 2πx) sin( 2πy)
31<br />
บทที ่ 2<br />
การใช้งานโปรแกรม Visual Basic<br />
ร่วมกับ SCILAB<br />
ในบทนี้จะกล่าวถึงพื ้นฐานการใช้งานโปรแกรม Visual Basic เพื ่อติดต่อกับโปรแกรม SCILAB<br />
โดยจะเริ ่มจากประวัติความเป็นมาของโปรแกรม Visual Basic จากนั้นจะอธิบายหลักการใช้งาน<br />
โปรแกรม Visual Basic 2010 Express 4 รวมทั้งการเชื ่อมต่อกับโปรแกรม SCILAB สําหรับใช้<br />
สร้างสื ่อการเรียนการสอน<br />
2.1 ประวัติความเป็นมาของโปรแกรม Visual Basic<br />
Visual Basic [5, 6] เป็นภาษาคอมพิวเตอร์ที ่พัฒนาโดยบริษัทไมโครซอฟต์ (Microsoft) ซึ ่งเป็น<br />
บริษัทที ่สร้างระบบปฏิบัติการวินโดวส์ (Windows) โดยภาษานี้มีรากฐานมาจากภาษา Basic [7]<br />
ย่อมาจาก “Beginner’s All Purpose Symbolic Instruction” ซึ ่งแปลว่า ชุดคําสั่งหรือภาษา<br />
คอมพิวเตอร์สําหรับผู้เริ ่มต้น โดยทั่วไปภาษา Basic มีจุดเด่นคือผู้ใช้สามารถเรียนรู้และนําไปใช้งาน<br />
ได้อย่างรวดเร็วโดยไม่จําเป็นต้องมีพื ้นฐานเรื ่องการเขียนโปรแกรม (เมื ่อเทียบกับการเรียนภาษา<br />
คอมพิวเตอร์อื ่น)<br />
บริษัทไมโครซอฟต์ได้พัฒนาโปรแกรมภาษา Basic มาหลายสิบปี ตั้งแต่ภาษา MBASIC<br />
(Microsoft Basic), BASICA (Basic Advanced), GWBASIC และ QBASIC (QuickBasic)<br />
ซึ ่งได้ติดตั้งมาพร้อมกับระบบปฏิบัติการ MSDOS โดยแต่ละเวอร์ชันที ่ออกมา ได้มีการพัฒนาและ<br />
เพิ ่มเติมคําสั่งใหม่ๆ เข้าไป ในอดีตโปรแกรมภาษาเหล่านี้จะทํางานในโหมดตัวอักษร (text mode)<br />
นั่นคือไม่มีรูปกราฟิกสวยงามแบบระบบวินโดวส์ที ่ใช้ในปัจจุบัน จนกระทั่งเมื ่อระบบปฏิบัติการ<br />
วินโดวส์ได้เข้ามาแทนที ่ระบบปฏิบัติการ MSDOS บริษัทไมโครซอฟต์จึงได้ปรับปรุงโปรแกรมภาษา<br />
4 โปรแกรม Visual Basic 2010 Express ซึ ่งเป็นฟรีแวร์ (freeware) ที ่ใช้ในบทนี้
32<br />
รูปที ่ 2.1 แถบเมนูของโปรแกรม Visual Basic 2010 Express<br />
Basic ให้รองรับการทํางานในระบบปฏิบัติการวินโดวส์ จึงทําให้เกิดเป็นโปรแกรม Visual Basic<br />
ตั้งแต่นั้นเป็นต้นมา ในบทนี้จะพิจารณาเฉพาะโปรแกรม Visual Basic 2010 5 ซึ ่งออกวางตลาด<br />
ใน ค.ศ. 2010 พร้อมกับ Microsoft .NET Framework 4 เพื ่อเพิ่มความสามารถในการเขียน<br />
โปรแกรมติดต่อกับเครือข่ายอินเทอร์เน็ตและการเชื ่อมต่อกับระบบฐานข้อมูล รวมทั้งปรับปรุง<br />
เครื ่องมือสําหรับการเขียนโปรแกรมเชิงวัตถุ (object oriented programming) ให้ใช้งานได้ง่ายขึ้น<br />
2.2 โปรแกรม Visual Basic 2010 Express<br />
ในส่วนนี้จะแสดงเมนูต่างๆ ที ่จําเป็นสําหรับการใช้งานโปรแกรม Visual Basic 2010 Express ดังนี้<br />
2.2.1 แถบเมนู<br />
เมื ่อเรียกใช้งานโปรแกรม Visual Basic 2010 Express ก็จะพบว่าแถบเมนูหลัก (menu bar)<br />
ตามรูปที ่ 2.1 ซึ ่งเป็นแถบเมนูที ่รวบรวมคําสั่งควบคุมการทํางานของโปรแกรม โดยเมนูที ่นิยมใช้มี<br />
ดังนี้<br />
• Project<br />
• Build<br />
• Debug<br />
• Data<br />
• Format<br />
ประกอบด้วยคําสั่งที ่ใช้จัดการกับโปรเจ็ค (project) ที ่กําลังทําอยู่<br />
เป็นคําสั่งที ่ใช้คอมไพล์ (compile) โปรเจ็ค<br />
เป็นคําสั่งที ่ช่วยในการตรวจสอบหาข้อผิดพลาดของโปรแกรม<br />
เป็นคําสั่งที ่ใช้ติดต่อกับฐานข้อมูล<br />
เป็นคําสั่งที ่ใช้จัดตําแหน่งให้กับอ็อบเจกต์ (object) ต่างๆ บนฟอร์ม (Form)<br />
2.2.2 แถบเครื ่องมือมาตราฐาน<br />
แถบเครื ่องมือมาตราฐาน (standard<br />
toolbar) เป็นแถบเครื ่องมือที ่สามารถเลือกใช้งานได้ทันที<br />
เพื ่ออํานวยความสะดวกและความรวดเร็วในการดําเนินการคําสั่งที ่นิยมใช้งานตามที ่แสดงในรูปที ่<br />
2.2 โดยแถบเครื ่องมือที ่ควรทราบแสดงในตารางที ่ 2.1<br />
5 โปรแกรม Visual Basic 2010 นี้สนับสนุนระบบปฏิบัติการ Windows 7 ซึ ่งสามารถดาวน์โหลดเวอร์ชัน Express ฟรี<br />
ได้ที ่เว็บไซต์ http://www.microsoft.com/express/downloads/
33<br />
รูปที ่ 2.2 แถบเครื ่องมือมาตราฐานของโปรแกรม Visual Basic 2010 Express<br />
ตารางที ่ 2.1 แถบเครื ่องมือมาตราฐานที ่นิยมใช้<br />
ใช้สร้างโปรเจ็คใหม่ หรือกดปุ่ม Ctrl + N (NEW)<br />
ใช้เปิดไฟล์ (Open File)<br />
ใช้เพิ ่มไอเท็ม (Item) หรือกดปุ่ม Ctrl + Shift + A (Add New Item)<br />
ใช้บันทึกโปรเจ็ค หรือกดปุ่ม Ctrl + S (Save)<br />
ใช้ประมวลผลโปรแกรม หรือกดปุ่ม F5 (Run)<br />
ใช้หยุดโปรแกรมชั่วคราว (Stop)<br />
ใช้เรียกหน้าต่างโซลูชัน (Solution Explorer)<br />
ใช้เรียกหน้าต่างคุณสมบัติ (Properties)<br />
ใช้เรียกหน้าต่างกล่องเครื ่องมือ (toolbox)<br />
แถบเครื ่องมือ<br />
รูปที ่ 2.3 หน้าต่างโซลูชันของโปรแกรม Visual Basic 2010 Express<br />
2.2.3 หน้าต่างโซลูชัน<br />
หน้าต่างโซลูชัน (Solution Explorer) จะแสดงรายชื ่อไอเท็มที ่เป็นส่วนประกอบของโปรเจ็คและไฟล์<br />
ต่างๆ ที ่เกี ่ยวข้องกับการแก้ไขโปรเจ็คที ่ใช้งานในปัจจุบัน โดยมีแถบเครื ่องมือตามตารางที ่ 2.2
34<br />
ตารางที ่ 2.2 แถบเครื ่องมือในหน้าต่างโซลูชัน<br />
เรียกหน้าต่างคุณสมบัติ (Properties) หรือกดปุ่ม Alt + Enter<br />
แสดงไฟล์ทั้งหมด (Show All File)<br />
ฟื ้นฟูไอเท็ม (Refresh)<br />
เรียกหน้าต่างการเขียนโค้ด (View Code)<br />
เรียกหน้าต่างฟอร์ม (View Designer)<br />
รูปที ่ 2.4 หน้าต่างคุณสมบัติของโปรแกรม Visual Basic 2010 Express<br />
2.2.4 หน้าต่างคุณสมบัติ<br />
หน้าต่างคุณสมบัติ (Properties) นิยมใช้ในการเปลี ่ยนแปลงคุณสมบัติต่างๆ ของอ็อบเจกต์ระหว่าง<br />
การออกแบบฟอร์ม โดยเมื ่อทําการเลือกอ็อบเจกต์ในฟอร์ม หน้าต่างคุณสมบัติก็จะแสดงคุณสมบัติ<br />
ของอ็อบเจกต์นั้น ซึ ่งถ้าต้องการเปลี่ยนแปลงคุณสมบัติของอ็อบเจกต์ ก็ทําได้โดยการเลือกที ่<br />
คุณสมบัตินั้นและป้อนค่าใหม่ลงไป
35<br />
รูปที ่ 2.5 หน้าต่างกล่องเครื ่องมือของโปรแกรม Visual Basic 2010 Express<br />
2.2.5 หน้าต่างกล่องเครื ่องมือ<br />
หน้าต่างกล่องเครื ่องมือ (toolbox) เป็นส่วนที ่บรรจุตัวควบคุมต่างๆ เพื ่อใช้ออกแบบหน้าจอของ<br />
โปรแกรม (นั่นคือหน้าต่างการออกแบบ ดูรูปที ่ 2.10) ตามที ่แสดงในรูปที ่ 2.5 โดยทั่วไปหน้าต่าง<br />
กล่องเครื ่องมืออาจถูกซ่อนไว้ ซึ ่งจะอยู่ทางด้านซ้ายมือของโปรแกรมคอนโทรลใน toolbox<br />
2.2.6 ประเภทข้อมูลพื ้นฐาน<br />
ประเภทข้อมูล (data type) ที ่ใช้งานได้ในโปรแกรม Visual Basic 2010 Express แสดงใน<br />
ตารางที ่ 2.3<br />
2.3 การใช้งานโปรแกรม Visual Basic ร่วมกับ SCILAB<br />
การใช้งานโปรแกรม Visual Basic ร่วมกับ SCILAB จะมีลักษณะเป็นการรับส่งข้อมูลผ่านไฟล์<br />
ชั่วคราว (temporary file) โดยจะใช้โปรแกรม Visual Basic สร้างหน้าต่างสําหรับส่วนต่อประสาน<br />
(interface) ได้แก่ ส่วนรับข้อมูล (Textbox) และปุ่มควบคุม (Button) เพื ่อเขียนข้อมูลลงในไฟล์<br />
สคริปต์ (script file) ในขณะที ่โปรแกรม SCILAB ทําหน้าที ่ประมวลผลลัพธ์ไฟล์สคริปต์ จากนั้น<br />
นําผลลัพธ์ที ่ได้เก็บในไฟล์ข้อมูล (text file) และส่งมาแสดงผลที ่โปรแกรม Visual Basic ดังรูปที ่<br />
2.6 แสดงแนวคิด 6 ในการใช้งานร่วมกันระหว่างโปรแกรม Visual Basic และ SCILAB<br />
6 โดยทั่วไปการส่งข้อมูลจากโปรแกรมหนึ ่งไปยังอีกโปรแกรมหนึ ่งทําได้ไม่ยาก (ขึ้นอยู่กับข้อกําหนดของแต่ละโปรแกรม)<br />
ดังนั้นโปรแกรม SCILAB จึงสามารถนํามาประยุกต์ใช้งานร่วมกับโปรแกรมภาษาอื ่นๆ ได้อีกด้วย เช่น ภาษาซี
36<br />
ตารางที ่ 2.3 ประเภทข้อมูลที ่ใช้ในโปรแกรม Visual Basic 2010 Express<br />
ประเภทข้อมูล ประเภท ขนาด การเก็บข้อมูลหรือช่วงข้อมูล<br />
Integer จํานวนเต็ม 2 ไบต์ –32,768 ถึง 32,767<br />
Long จํานวนเต็ม 4 ไบต์ –2,147,483,648 ถึง 2,147,483,647<br />
Boolean จํานวนเต็ม 2 ไบต์ เก็บค่า 0 และ 1 ซึ ่งแทน False หรือ True<br />
Byte จํานวนเต็ม 1 ไบต์ เก็บค่าในช่วง 0 ถึง 255<br />
Single จํานวนทศนิยม 4 ไบต์ ค่าลบ –3.402823E38 ถึง –1.401298E-45<br />
ค่าบวก 1.401298E-45 ถึง 3.402823E38<br />
Double จํานวนทศนิยม 8 ไบต์ ค่าลบ –1.79769313486232E308 ถึง<br />
-4.94065645841247E-324<br />
ค่าบวก 4.94065645841247E-324 ถึง<br />
1.79769313486232E308<br />
Currency จํานวนทศนิยม 8 ไบต์ เก็บตัวเลขจํานวนจริงที ่มีค่าระหว่าง<br />
-922,337,203,685,477.5808 ถึง<br />
922,337,203,685,477.5807 เหมาะสําหรับเก็บตัวเลข<br />
ทางการเงิน เพราะมีความละเอียดสูง<br />
String ข้อความ 1 ไบต์ ใช้เก็บตัวอักษร หรือข้อความ<br />
Date<br />
วันที ่/เวลา 8 ไบต์ เก็บค่าระหว่าง 1 มกราคม ค.ศ. 100 ถึง 31 ธันวาคม<br />
ค.ศ. 9999 และเวลาใดๆ โดยส่วนจํานวนเต็มเป็นข้อมูล<br />
ของวัน และส่วนทศนิยมเป็นข้อมูลของเวลา<br />
Variant Variant 16 ไบต์ ตัวแปรที ่สามารถแทนตัวแปรชนิดอื ่นๆ ได้ทุกตัวแปร<br />
แต่จะใช้พื ้นที ่เก็บข้อมูลมากสุด<br />
่<br />
Object อ็อบเจกต์ 4 ไบต์ เก็บการอ้างอิงสําหรับแทนวัตถุ (หรืออ็อบเจกต์) ที<br />
Visual Basic สนับสนุน<br />
การเขียนโปรแกรม Visual Basic จะมีชุดอ็อบเจกต์ที ่เกี ่ยวข้องคือ FileSystemObject ซึ ่ง<br />
ใช้จัดการกับระบบไฟล์ของวินโดวส์ โดย FileSystemObject มีโครงสร้างตามรูปที ่ 2.7 ซึ ่งประกอบ<br />
ด้วยอ็อบเจกต์ย่อยอีก 4 ตัว ที่เป็นตัวแทนของไดร์ฟ (Drive), โฟลเดอร์ (Folder), ไฟล์ (File),<br />
และไฟล์ข้อมูล (Text Stream) ดังนี้<br />
• FileSystemObject เป็นอ็อบเจกต์หลักที ่ใช้สร้างหรือลบข้อมูล และจัดการการทํางานของ<br />
ไดร์ฟ โฟลเดอร์ ไฟล์ และไฟล์ข้อมูล ได้โดยตรง
37<br />
VISUAL BASIC<br />
Temporary File<br />
Script<br />
TEXT<br />
SCILAB<br />
รูปที ่ 2.6 แนวคิดในการใช้งานร่วมกันระหว่างโปรแกรม Visual Basic และ SCILAB<br />
รูปที ่ 2.7 โครงสร้างของชุดอ็อบเจกต์ FileSystemObject<br />
• Drive เป็นอ็อบเจกต์ที ่ให้ข้อมูลเกี ่ยวกับไดร์ฟทั้งหมดของระบบคอมพิวเตอร์ที ่กําลังทํางานอยู่<br />
• Folder เป็นอ็อบเจกต์ที ่รวบรวมวิธีการต่างๆ ที ่เรียกใช้ เพื ่อให้ข้อมูลและจัดการกับโฟลเดอร์<br />
• File เป็นอ็อบเจกต์ที ่รวบรวมวิธีการต่างๆ ที ่เรียกใช้ เพื ่อให้ข้อมูลและจัดการกับไฟล์<br />
• Text Stream เป็นอ็อบเจกต์ที ่ใช้ในการอ่านและเขียนไฟล์ข้อมูล<br />
ในทางปฏิบัติการใช้งานอ็อบเจกต์ FileSystemObject จะต้องมีการเรียกไลบรารีที่ชื ่อว่า<br />
Microsoft Scripting Runtime ขึ้นมาก่อน จึงจะสามารถใช้งานอ็อบเจกต์อื ่นๆ ได้
38<br />
คลิกเลือก New Project…<br />
รูปที ่ 2.8 การสร้างโปรเจ็คใหม่ (New Project)<br />
รูปที ่ 2.9 ขั้นตอนการสร้าง Window Forms Application ในหน้าต่างโปรเจ็คใหม่<br />
โดยในที ่นี้จะอธิบายเฉพาะอ็อบเจกต์ Text Stream เท่านั้น เพราะเป็นส่วนที ่ใช้ในการอ่านและเขียน<br />
ไฟล์เพื ่อติดต่อกับโปรแกรม SCILAB สําหรับสร้างสื ่อการเรียนการสอน<br />
2.3.1 ขั้นตอนการเรียกใช้งานไลบรารี Microsoft Scripting Runtime<br />
การเรียกใช้งานไลบรารีในโปรแกรม Visual Basic 2010 ทําได้โดยให้พิจารณาว่าอ็อบเจกต์นั้นคือ<br />
ตัวแปรหนึ ่งตัวซึ ่งมีประเภทเป็น “อ็อบเจกต์” ดังนั้นขั้นตอนการเรียกใช้งานไลบรารี Microsoft<br />
Scripting Runtime มีดังนี้<br />
1) เปิดโปรแกรม Visual Basic 2010 Express แล้วสร้างโปรเจ็คใหม่ขึ้นมาใช้งาน โดยเลือกที ่<br />
New Project… ตามรูปที ่ 2.8 ก็จะได้หน้าต่างตามรูปที ่ 2.9
39<br />
หน้าต่างการออกแบบ (Design)<br />
รูปที ่ 2.10 หน้าต่าง Window Forms Application<br />
2) จากนั้นเลือก Visual Basic → Windows Forms Application และกดปุ่ม OK เพื ่อสร้าง<br />
ฟอร์ม (Form) ขึ้นมาใช้งาน ก็จะได้หน้าต่างตามรูปที ่ 2.10<br />
3) การเรียก FileSystemObject มาใช้งาน ต้องบอกให้โปรแกรม Visual Basic 2010 ให้ทราบ<br />
ก่อน โดยการเลือกเมนู Project Add Reference… ตามรูปที ่ 2.11 ก็จะได้หน้าต่าง Add<br />
Reference ตามรูปที ่ 2.12<br />
4) ที ่หน้าต่าง Add Reference ในรูปที ่ 2.12 ให้ไปที ่แถบ COM และเลือก Microsoft Scripting<br />
Runtime และคลิกปุ่ม OK ก็ถือว่าเสร็จขั้นตอนการเรียกใช้งาน Microsoft Scripting Runtime<br />
2.3.2 รูปแบบการใช้งาน FileSystemObject<br />
วิธีการใช้งานของ FileSystemObject จะมีรูปแบบที ่เกี ่ยวกับอ็อบเจกต์ Drive, Folder, File และ<br />
Text Stream โดยในที ่นี้จะกล่าวถึงวิธีการใช้งานของอ็อบเจกต์ File และ Text Stream เท่านั้น<br />
เพราะจะนํามาใช้ในการแลกเปลี ่ยนข้อมูลกับโปรแกรม SCILAB โดยวิธีการใช้งานมีรูปแบบดังนี้<br />
• รูปแบบการประกาศตัวแปรแบบ FileSystemObject แสดงในรูปที ่ 2.13<br />
• รูปแบบการเรียกใช้งาน FileSystemObject แสดงในรูปที ่ 2.14
40<br />
1<br />
2<br />
รูปที ่ 2.11 การเลือกหน้าต่าง Add Reference<br />
1<br />
2<br />
รูปที ่ 2.12 หน้าต่าง Add Reference<br />
3<br />
Public fso As New Scripting . FileSystemObject<br />
ชื ่อตัวแปรที ่ตั้งขึ้น เครื ่องหมายจุด<br />
อ็อบเจกต์ที ่ต้องการ<br />
รูปที ่ 2.13 การประกาศตัวแปรแบบ FileSystemObject
41<br />
oFileSysObj . Method<br />
วิธี<br />
ชื ่ออ็อบเจกต์<br />
เครื ่องหมายจุด<br />
รูปที ่ 2.14 การเรียกใช้งาน FileSystemObject<br />
หมายเหตุ โปรแกรม Visual Basic 2010 Express มีตัวช่วยเหลือในการเขียนโปรแกรมคือ เมื ่อใส่<br />
เครื ่องหมายจุด “ . ” ต่อท้ายคําสั่ง ก็จะแสดงตัวช่วยที ่ชื ่อว่า Auto List Members ซึ ่งจะมีรายการ<br />
คุณสมบัติและฟังก์ชันต่างๆ ที ่เกี ่ยวข้องกับอ็อบเจกต์ File และ Text Stream ตามรายละเอียดดังนี้<br />
2.3.3 ฟังก์ชันที ่เกี ่ยวของโปรแกรม Visual Basic 2010<br />
2.3.3.1 คําสั่งที ่เกี ่ยวข้องกับ FileSystemOject<br />
• FileSystemObject เป็นการประกาศตัวแปรที่ใช้อ้างอิง FileSystemObject มีรูปแบบการ<br />
เรียกใช้งานดังนี้<br />
Public fso As New Scripting.FileSystemObject<br />
ซึ ่งเป็นการกําหนดให้ fso เป็นอ็อบเจกต์ FileSystemObject โดยจะต้องมีการใส่พารามิเตอร์<br />
New เข้าไปในคําสั่งด้วย (ตัวแปรที ่เป็นอ็อบเจกต์ของ FileSystemObject ต้องใส่นิพจน์ New<br />
เสมอ)<br />
• CreateTextFile ใช้สร้างไฟล์ในระบบปฏิบัติการวินโดวส์ ซึ ่งมีรูปแบบการเรียกใช้งานดังนี้<br />
oFileSysObj.CreateTextFile (Filename [, Overwrite[, Unicode]])<br />
โดย oFileSysObj คืออ็อบเจกต์ที ่เรียกใช้งาน, Filename คือชื ่อไฟล์ที ่มีประเภทข้อมูลเป็นแบบ<br />
String, Overwrite คือตัวเลือกที ่บอกว่าสามารถเขียนทับไฟล์ที ่มีชื ่อซํ้ากันได้โดยมีประเภทข้อมูล<br />
เป็นแบบบูลีน (Boolean: True หรือ False), และ Unicode คือตัวเลือกที ่บอกว่าไฟล์ที ่สร้าง<br />
จะเก็บข้อมูลแบบ Unicode หรือ ASCII โดยมีประเภทข้อมูลแบบบูลีน<br />
• DeleteFile ใช้ลบไฟล์ข้อมูล โดยมีรูปแบบการเรียกใช้งานดังนี้
42<br />
oFileSysObj.DeleteFile( FileSpec [, Force])<br />
เมื ่อ oFileSysObj คืออ็อบเจกต์ที ่เรียกใช้งาน, FileSpec คือชื ่อและที ่อยู่ของไฟล์ที ่ต้องการลบ<br />
ซึ ่งมีประเภทข้อมูลเป็นแบบ String, และ Force คือตัวเลือกสําหรับการลบซึ ่งมีประเภทข้อมูล<br />
เป็นแบบบูลีน (โดยไม่สนใจว่าไฟล์นั้นเป็นแบบไฟล์ที ่อ่านอย่างเดียวหรือไม่)<br />
• FileExists ใช้ตรวจสอบว่าไฟล์ที ่กําหนดมีอยู่จริงหรือไม่ โดยมีรูปแบบการเรียกใช้งานดังนี้<br />
oFileSysObj.FileExists(FileSpec)<br />
เมื ่อ oFileSysObj คืออ็อบเจกต์ที ่เรียกใช้งาน และ FileSpec คือชื ่อและที ่อยู่ของไฟล์ที ่ต้องการ<br />
ตรวจสอบซึ ่งมีประเภทข้อมูลเป็นแบบ String<br />
• GetFile ใช้รับค่าจากไฟล์ข้อมูล โดยมีรูปแบบการเรียกใช้งานดังนี้<br />
oFileSysObj.GetFile(FilePath)<br />
เมื ่อ oFileSysObj คืออ็อบเจกต์ที ่เรียกใช้งาน และ FilePath คือชื ่อและที ่อยู่ของไฟล์ที ่มีประเภท<br />
ข้อมูลเป็นแบบ String<br />
• GetFileName ใช้รับค่ากลับมาเป็นชื ่อไฟล์ในตําแหน่งที ่ระบุไว้ มีรูปแบบการเรียกใช้งานคือ<br />
oFileSysObj.GetFileName(Path)<br />
เมื ่อ oFileSysObj คืออ็อบเจกต์ที ่เรียกใช้งาน และ FilePath คือที ่อยู่ของไฟล์ที ่มีประเภทข้อมูล<br />
เป็นแบบ String และแสดงอยู่ภายในเครื ่องหมาย “….”<br />
2.3.3.2 คําสั่งที ่เกี ่ยวข้องกับ TextStream<br />
• TextStream เป็นการประกาศตัวแปรที ่ใช้อ้างอิง TextStream มีรูปแบบการเรียกใช้งานดังนี้<br />
Public w_file As Scripting.TextStream<br />
ซึ ่งเป็นการกําหนดให้ w_file เป็นอ็อบเจกต์ TextStream
43<br />
• Close ใช้ยกเลิกการเชื ่อมต่อกับอ็อบเจกต์ TextStream มีรูปแบบการเรียกใช้งานดังนี้<br />
oTextStreamObj.Close<br />
เมื ่อ oTextStreamObj คืออ็อบเจกต์ TextStream ที ่ต้องการยกเลิกการเชื ่อมต่อ<br />
• Read ใช้อ่านข้อมูลตามจํานวนที ่กําหนดจากไฟล์ข้อมูล มีรูปแบบการเรียกใช้งานดังนี้<br />
oTextStreamObj.Close<br />
เมื ่อ oTextStreamObj คืออ็อบเจกต์ TextStream ที ่ต้องการอ่านข้อมูล และ Character คือ<br />
สายอักขระหรือจํานวนของอักษร (alphabet) ที ่ต้องการอ่านจากไฟล์ข้อมูล โดยมีประเภทข้อมูล<br />
เป็นแบบ Long (ดูตารางที ่ 2.3)<br />
• ReadAll ใช้อ่านข้อมูลทั้งหมดจากไฟล์ข้อมูล มีรูปแบบการเรียกใช้งานดังนี้<br />
oTextStreamObj.ReadAll<br />
เมื ่อ oTextStreamObj คืออ็อบเจกต์ TextStream ที ่ต้องการอ่านข้อมูลทั้งหมด<br />
• ReadLine ใช้อ่านข้อมูลทีละหนึ ่งบรรทัดจากไฟล์ข้อมูล มีรูปแบบการเรียกใช้งานคือ<br />
oTextStreamObj.ReadLine<br />
เมื ่อ oTextStreamObj คืออ็อบเจกต์ TextStream ที ่ต้องการอ่านอ่านข้อมูลทีละหนึ ่งบรรทัด<br />
• Skip ใช้กระโดดข้ามข้อมูลจากไฟล์ข้อมูลที ่กําหนด มีรูปแบบการเรียกใช้งานคือ<br />
oTextStreamObj.Skip(Characters)<br />
เมื ่อ oTextStreamObj คืออ็อบเจกต์ TextStream ที่เรียกใช้งาน และ Characters คือสาย<br />
อักษระที ่ไม่สนใจที ่จะอ่าน (มีประเภทข้อมูลเป็นแบบ Long)<br />
• SkipLine ใช้กระโดดข้ามข้อมูลจากไฟล์ข้อมูลทีละหนึ ่งบรรทัด มีรูปแบบการเรียกใช้งานคือ
44<br />
oTextStreamObj.SkipLine<br />
เมื ่อ oTextStreamObj คืออ็อบเจกต์ TextStream ที ่เรียกใช้งาน<br />
• Write ใช้เขียนข้อมูลเก็บไว้ในไฟล์ที ่กําหนด (เมื ่อเขียนจบ จะไม่ขึ้นบรรทัดใหม่) โดยมีรูปแบบ<br />
การเรียกใช้งานดังนี้<br />
oTextStreamObj.Write(Text)<br />
เมื ่อ oTextStreamObj คืออ็อบเจกต์ TextStream ที่เรียกใช้งาน และ Text คือข้อความที ่<br />
ต้องการเขียนลงไปเก็บไว้ในไฟล์ โดยข้อความนี้ต้องอยู่ภายในเครื ่องหมาย “….”<br />
• WriteLine ใช้เขียนข้อมูลลงไฟล์ข้อมูลทีละหนึ ่งบรรทัด (เมื ่อเขียนจบ จะขึ้นบรรทัดใหม่ให้)<br />
มีรูปแบบการเรียกใช้งานดังนี้<br />
oTextStreamObj.WriteLine(String)<br />
เมื ่อ oTextStreamObj คืออ็อบเจกต์ TextStream ที ่เรียกใช้งาน และ String คือข้อความแต่ละ<br />
บรรทัดที ่ต้องการเขียนลงในไฟล์ โดยข้อความนี้ต้องอยู่ภายในเครื ่องหมาย “….”<br />
• WriteBlankLines ใช้เขียนไฟล์แล้วเว้นบรรทัดตามที ่กําหนด มีรูปแบบการเรียกใช้งานคือ<br />
oTextStreamObj.WriteBlankLines(Lines)<br />
เมื ่อ oTextStreamObj คืออ็อบเจกต์ TextStream ที ่เรียกใช้งาน และ Lines คือจํานวนตัวอักษร<br />
หรืออักขระที ่ต้องการเพิ ่มลงในบรรทัดนั้น โดยมีประเภทข้อมูลเป็นแบบ Long<br />
2.3.3.3 คําสั่งอื ่นที ่น่าสนใจ<br />
• Shell เป็นฟังก์ชันที ่ใช้เรียกโปรแกรมประยุกต์ขึ้นมาทํางาน มีรูปแบบการเรียกใช้งานคือ<br />
Shell(PathName, [Window Style])
45<br />
โดย PathName คือที ่อยู่ของโปรแกรมประยุกต์ที ่ต้องการ และ Window Style คือค่าสถานะ<br />
ในการเรียกโปรแกรมนั้น<br />
• Msgbox เป็นฟังก์ชันที ่ใช้โต้ตอบระหว่างโปรแกรมกับผู้ใช้ โดยจะแสดงข้อมูลเพียงอย่างเดียว<br />
แล้วให้ผู้ใช้กดปุ่มเลือก (ในกรณีที ่ต้องการให้ผู้ใช้เลือกตอบ) มีรูปแบบการเรียกใช้งานคือ<br />
MsgBox Prompt[,Buttons][,Title]<br />
เมื ่อ Prompt คือข้อความที ่ต้องการแสดงในกล่องข้อความ (message box) ในกรณีที ่ต้องการ<br />
แสดงข้อมูลหลายบรรทัด ทําได้โดยนําข้อมูลในแต่ละบรรทัดมาเชื ่อมด้วยว่า “+chr(13)+”,<br />
Buttons คือส่วนที ่ใช้กําหนดการแสดงปุ่มและกําหนดสัญรูป (icon) ในกล่องข้อความ, และ<br />
Title คือข้อความที ่ต้องการแสดงบนแถบด้านบนของกล่องข้อความ<br />
• Application.StartupPath เป็นฟังก์ชันที ่ใช้ตั้งค่าโฟลเดอร์ปัจจุบันให้ตรงกับโปรแกรมประยุกต์<br />
โดยถ้าโปรแกรมประยุกต์ทํางานเริ ่มจากเครื ่องแม่ข่าย คุณสมบัติของ App.Path จะส่งออกค่า<br />
เป็นชื ่อแบบ UNC (Universal Naming Convention) เช่น \ชื ่อเครื ่องแม่ข่าย\ชื ่อโฟลเดอร์\…<br />
ซึ ่งวิธีการเรียกใช้งานคือ<br />
Application.StartupPath<br />
2.4 ฟังก์ชันที ่เกี ่ยวข้องของโปรแกรม SCILAB<br />
ในหัวข้อนี้จะอธิบายฟังก์ชันต่างๆ ของโปรแกรม SCILAB ที ่จําเป็นสําหรับการนํามาใช้งานร่วมกับ<br />
โปรแกรม Visual Basic เพื ่อสร้างสื ่อการเรียนการสอน ดังต่อไปนี้<br />
2.4.1 คําสั่ง file<br />
เป็นคําสั่งที ่ใช้เปิดหรือปิดแฟ้มข้อมูลหรือไฟล์ โดยมีรูปแบบการใช้งานทั่วไปดังนี้<br />
unit = file('open', filename, [status])<br />
เมื ่อ 'open' เป็นการบอกโปรแกรมให้เปิดไฟล์ filename ขึ้นมาใช้งาน, filename คือชื ่อ<br />
ไฟล์ข้อมูลที ่ต้องการเรียกใช้งาน, status เป็นการกําหนดสถานะของไฟล์ที ่เปิดขึ้นมาใช้งานซึ ่งมี<br />
อยู่ 4 รูปแบบคือ
46<br />
ตารางที ่ 2.4 รหัสรูปแบบในโปรแกรม SCILAB<br />
รหัสรูปแบบ<br />
คําอธิบาย<br />
%d แสดงผลเป็นเลขจํานวนเต็มฐานสิบแบบมีเครื ่องหมาย (signed integer)<br />
%u แสดงผลเป็นเลขจํานวนเต็มฐานสิบแบบไม่มีเครื ่องหมาย (unsigned integer)<br />
%x หรือ %X แสดงผลเป็นเลขจํานวนเต็มฐานสิบหกแบบไม่มีเครื ่องหมาย<br />
%f แสดงผลเป็นเลขจํานวนจริง<br />
%e แสดงผลเป็นเลขจํานวนจริงในรูปของเลขยกกําลัง<br />
%c แสดงผลตัวอักขระ<br />
%s แสดงผลสายอักขระ<br />
• "new" หมายถึงไฟล์ที ่เปิดขึ้นมาต้องไม่เคยมีอยู่ในสารบบทํางาน (ค่าโดยปริยาย)<br />
• "old" หมายถึงไฟล์ที ่เปิดขึ้นมาต้องมีอยู่แล้วในสารบบทํางาน<br />
• "unknown" หมายถึงไฟล์ที ่เปิดขึ้นมาจะมีอยู่หรือไม่มีอยู่ในสารบบทํางานก็ได้<br />
• "scratch" หมายถึงไฟล์ที ่เปิดขึ้นมาจะถูกลบทิ้งหลังจากเสร็จสิ้นการทํางาน<br />
และ unit เป็นเลขจํานวนเต็มที ่โปรแกรมใช้อ้างถึงชื ่อไฟล์ filename นั้น โดยหลังจากใช้งาน<br />
ไฟล์ที ่เปิดขึ้นมาเสร็จแล้ว ผู้ใช้จะต้องปิดการทํางานของไฟล์นั้นเสมอด้วยคําสั่ง<br />
file('close', unit)<br />
2.4.2 คําสั่ง fprintf<br />
เป็นคําสั่งที ่ทําหน้าที ่พิมพ์ค่าของตัวแปรลงไปเก็บไว้ในไฟล์ แทนที ่จะแสดงผลลัพธ์ออกมาที ่หน้าต่าง<br />
คําสั่ง รูปแบบการใช้งานของคําสั่งนี้คือ<br />
fprintf(fd, format, value_1, ..., value_n)<br />
โดย fd คือชื ่อของไฟล์ที ่ต้องการเก็บค่าของตัวแปร value_i, format คือรหัสควบคุมการพิมพ์<br />
(ตามตารางที ่ 2.4 และ 2.5), และ value_i เป็นตัวกําหนดว่าจะให้ข้อมูลใดแสดงผลออกมาที ่<br />
หน้าต่างคําสั่ง ตัวอย่างการใช้งาน เช่น<br />
-->fd = file('open', 'results.txt', 'unknown');
47<br />
ตารางที ่ 2.5 รหัสบังคับการพิมพ์ในโปรแกรม SCILAB<br />
รหัสบังคับการพิมพ์<br />
คําอธิบาย<br />
\n ขึ้นบรรทัดใหม่<br />
\t แท็ป (tab) ในแนวนอน<br />
\v แท็ปในแนวตั้ง<br />
\b เลื ่อนเคอร์เซอร์ไปลบตัวอักขระทางซ้ายมือหนึ ่งตัวอักขระ<br />
\r เครื ่องหมาย return เหมือนกับการกดปุ่ม Enter<br />
\f ขึ้นหน้าใหม่<br />
\a ส่งเสียงดังออกลําโพงหนึ ่งครั้ง<br />
\\ เครื ่องหมาย \ (backslash)<br />
\’ เครื ่องหมาย ' (single quote)<br />
\” เครื ่องหมาย " (double quote)<br />
\? เครื ่องหมาย ? (question mark)<br />
\ooo<br />
\xhh<br />
พิมพ์ตัวอักขระที ่มีเลขฐานแปดตรงกับค่า ooo<br />
พิมพ์ตัวอักขระที ่มีเลขฐานสิบหกตรงกับค่า hh<br />
-->for t = 0:%pi/10:%pi<br />
--> fprintf(fd, 'time = %6.3f value = %6.3f\n', t, cos(t));<br />
-->end<br />
-->file('close', fd);<br />
ผลลัพธ์ที ่ได้คือโปรแกรม SCILAB จะสร้างไฟล์ที ่ชื ่อว่า results.txt ในสารบบที ่กําลังทํางาน<br />
อยู่ซึ ่งจะบันทึกข้อมูลที ่กําหนดด้วยคําสั่ง fprintf ปรากฏอยู่ (นั่นคือค่าของสัญญาณโคไซน์ ณ<br />
เวลา t) โดยถ้าลองเปิดไฟล์ results.txt ด้วยโปรแกรมเอดิเตอร์ (เช่น Notepad) ก็จะพบ<br />
ข้อมูลตามที ่กําหนดไว้ดังแสดงในรูปที ่ 2.15<br />
2.4.3 คําสั่ง exec<br />
เป็นคําสั่งที ่ใช้โหลดฟังก์ชันเข้ามาประมวลผลในโปรแกรม SCILAB โดยมีลักษณะการใช้งานดังนี้<br />
exec(filename)<br />
เมื ่อ filename คือชื ่อและที ่อยู่ (path) ของไฟล์ ซึ ่งต้องเขียนภายในเครื ่องหมาย "…"
48<br />
รูปที ่ 2.15 ข้อมูลภายในไฟล์ results.txt โดยใช้โปรแกรม Notepad<br />
2.4.4 คําสั่ง savematfile<br />
เป็นคําสั่งที ่ใช้บันทึกข้อมูลให้อยู่ในรูปไบนารี (binary) หรือแอสกี (ASCII) โดยมีรูปแบบการเรียก<br />
ใช้งานดังนี้<br />
savematfile('filename', 'var1')<br />
เมื ่อ filename คือชื ่อและที ่อยู่ของไฟล์ ซึ ่งต้องเขียนภายในเครื ่องหมาย "…" และ var1 คือ<br />
ชื ่อตัวแปรที ่ต้องการเขียนลงในไฟล์ เช่น คําสั่ง savematfile('Test1.txt','x') จะ<br />
เป็นการนําค่าของตัวแปร x ไปเก็บไว้ในไฟล์ Test1.txt<br />
2.4.5 คําสั่ง xs2gif<br />
เป็นคําสั่งที ่ใช้บันทึกรูปกราฟที ่วาดขึ้นด้วยโปรแกรม SCILAB ให้เป็นไฟล์รูปภาพที ่มีนามสกุลเป็น<br />
แบบ .gif โดยมีรูปแบบการเรียกใช้งานดังนี้
49<br />
เริ ่มต้น<br />
สร้างไฟล์สคริปต์<br />
เขียนข้อมูลไฟล์สคริปต์<br />
ประมวลผลไฟล์สคริปต์<br />
บันทึกผลลัพธ์ลงไฟล์ข้อมูล<br />
แสดงผลลัพธ์<br />
จบ<br />
รูปที ่ 2.16 แผนภาพบล็อกแสดงการเขียนโปรแกรม Visual Basic เพื ่อติดต่อกับ SCILAB<br />
xs2gif(win_num, filename)<br />
เมื ่อ win_num คือตัวเลขจํานวนเต็มบวกที ่ใช้อ้างถึงหมายเลขของหน้าต่างกราฟ และ filename<br />
คือชื ่อไฟล์ (ที่มีนามสกุล .gif) ที่ต้องการบันทึกรูปกราฟที่ปรากฏในหน้าต่างกราฟหมายเลข<br />
win_num ตัวอย่างเช่น คําสั่ง xs2gif(1,'F1.gif') จะบันทึกรูปกราฟในหน้าต่างกราฟ<br />
หมายเลข 1 เป็นไฟล์ชื ่อ F1.gif<br />
2.5 การเขียนโปรแกรม Visual Basic ติดต่อกับ SCILAB<br />
ในส่วนนี้จะแสดงตัวอย่างการเขียนโปรแกรม Visual Basic ติดต่อกับ SCILAB ซึ ่งมีการขั้นตอน<br />
การทํางานตามแผนภาพบล็อกในรูปที ่ 2.16 โดยซอฟต์แวร์ที ่ใช้ประกอบด้วย<br />
• โปรแกรม Microsoft Visual Basic 2010 Express<br />
• โปรแกรม SCILAB เวอร์ชัน 4.1.2<br />
• ระบบปฏิบัติการ Window XP
50<br />
รูปที ่ 2.17 ฟอร์มทดสอบการสร้างไฟล์สคริปต์<br />
และฮาร์ดแวร์ที ่ใช้มีคุณลักษณะดังนี้ CPU แบบ Core2Duo 2.4 GHz, RAM ขนาด 1 GB, ฮาร์ด<br />
ดิสก์ไดรฟ์ขนาด 160 GB, และการ์ดจอ VGA แบบ 128 MB<br />
ในที ่นี้จะยกตัวอย่างการหาค่าลอการิทึมฐานสอง 7 ของเลขจํานวนเต็ม โดยจะใช้โปรแกรม<br />
Visual Basic สร้างหน้าต่างส่วนต่อประสาน (interface) เพื ่อรับค่าตัวเลขที ่ผู้ใช้ป้อนเข้าไป จากนั้น<br />
เมื ่อกดปุ่มคํานวณ โปรแกรม Visual Basic ก็จะนําตัวเลขนี้มาเขียนเป็นไฟล์สคริปต์ แล้วส่งไปให้<br />
โปรแกรม SCILAB คํานวณโดยใช้ฟังก์ชัน log2(x) เพื ่อหาค่าลอการิทึมฐานสองของตัวแปร x<br />
แล้วส่งผลลัพธ์ที ่ได้ไปแสดงผลที ่หน้าต่างส่วนต่อประสาน โดยขั้นตอนการทํางานสรุปได้ดังนี้<br />
2.5.1 การสร้างไฟล์สคริปต์<br />
หัวข้อนี้จะแสดงวิธีการสร้างไฟล์สคริปต์จากหน้าต่างส่วนต่อประสานของโปรแกรม Visual Basic<br />
2010 Express ดังต่อไปนี้<br />
1) ให้เปิดโปรแกรม Visual Basic 2010 Express แล้วสร้างโปรเจ็กต์แบบ Windows Forms<br />
Application จากนั้นทําการออกแบบหน้าฟอร์มโดยนําปุ่ม Button มาวางไว้ใน Form หนึ ่งปุ่ม<br />
แล้วเปลี ่ยนชื ่อปุ่มเป็น “ทดสอบการสร้างไฟล์สคริปต์” ตามรูปที ่ 2.17<br />
2) กําหนดค่าคุณสมบัติของฟอร์มตามตารางที ่ 2.6<br />
3) เรียกฟังก์ชัน FileSystemObject มาใช้งาน โดยเลือกที ่เมนู Project → Add Reference…<br />
→ Microsoft Scripting Runtime และกดปุ่ม OK (ตามรูปที ่ 2.11 และ 2.12)<br />
4) ดับเบิลคลิกที ่ปุ่ม Button หรือกดปุ่ม View Code<br />
แล้วเขียนโค้ดโปรแกรมดังนี้<br />
ที ่หน้าต่างโซลูชัน (Solution Explorer)<br />
7 ลอการิทึม (logarithm) เป็นฟังก์ชันผกผันของฟังก์ชันเอ็กซ์โพเนนเชียล กล่าวคือลอการิทึมฐาน b ของค่า x ก็คือค่า n<br />
ที ่ทําให้สมการ x = b n หรือเขียนได้เป็น log b (x) = n เป็นจริง เช่น log 2 (128) = 7
51<br />
ตารางที ่ 2.6 การกําหนดค่าคุณสมบัติของฟอร์มที ่ใช้ในรูปที ่ 2.17<br />
อ็อบเจกต์ / คอนโทรล คุณสมบัติ ค่าที ่กําหนด<br />
Form Text ทดสอบการสร้างไฟล์สคริปต์<br />
CommandButton<br />
Name<br />
Text<br />
Button1<br />
ทดสอบการสร้างไฟล์สคริปต์<br />
รูปที ่ 2.18 ผลลัพธ์ที ่ได้จากฟังก์ชัน CreateTextFile<br />
1<br />
2<br />
3<br />
4<br />
5<br />
6<br />
Public Class Form1<br />
Public fso As New Scripting.FileSystemObject<br />
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As<br />
System.EventArgs) Handles Button1.Click<br />
w_file = fso.CreateTextFile("D:\test.sce") 'สร้างไฟล์สคริปต์<br />
End Sub<br />
End Class<br />
5) ทดสอบการทํางานของโปรแกรม โดยการคลิกที ่ปุ่ม<br />
หรือกดปุ่ม ที ่คีย์บอร์ด จากนั้น<br />
ทดสอบโปรแกรมโดยกดปุ่ม “ทดสอบการสร้างไฟล์สคริปต์” ในรูปที ่ 2.17 ก็จะได้ไฟล์สคริปต์<br />
ที ่มีชื ่อว่า test.sce ปรากฏอยู่ในสารบบ D:\ ดังแสดงในรูปที ่ 2.18<br />
หมายเหตุ ฟังก์ชัน CreateTextFile ในบรรทัดที ่ 4 จะสร้างไฟล์สคริปต์ของโปรแกรม SCILAB<br />
ที่ชื ่อว่า test.sce เพื ่อทําหน้าที่เป็นไฟล์ชั่วคราวสําหรับส่งข้อมูลต่างๆ ไปประมวลผลที ่<br />
โปรแกรม SCILAB
52<br />
รูปที ่ 2.19 ฟอร์มแสดงการเขียนข้อมูลลงไฟล์สคริปต์<br />
ตารางที ่ 2.7 การกําหนดค่าคุณสมบัติของฟอร์มที ่ใช้ในรูปที ่ 2.19<br />
อ็อบเจกต์ / คอนโทรล คุณสมบัติ ค่าที ่กําหนด<br />
Form Text ทดสอบการเขียนข้อมูลลงไฟล์สคริปต์<br />
CommandButton<br />
Name<br />
Text<br />
Button1<br />
ทดสอบการเขียนข้อมูลลงไฟล์สคริปต์<br />
TextBox1 Text N/A<br />
2.5.2 การเขียนไฟล์สคริปต์<br />
ในที ่นี้จะแสดงวิธีการนําข้อมูลที ่ป้อนผ่านหน้าต่างส่วนต่อประสานของโปรแกรม Visual Basic 2010<br />
Express ไปเก็บไว้ในไฟล์สคริปต์ดังนี้<br />
1) เปิดโปรแกรม Visual Basic 2010 Express แล้วสร้างโปรเจ็กต์แบบ Windows Forms<br />
Application จากนั้นทําการออกแบบหน้าฟอร์มโดยนําปุ่ม Button มาวาง 1 ตัว (เปลี ่ยนชื ่อเป็น<br />
“ทดสอบการเขียนไฟล์สคริปต์”) และนํา Textbox1 มาวาง 1 ตัว (เปลี ่ยนชื ่อเป็น “Input”)<br />
ตามรูปที ่ 2.19<br />
2) กําหนดค่าคุณสมบัติของฟอร์มตามตารางที ่ 2.7<br />
3) เรียกฟังก์ชัน FileSystemObject มาใช้งานโดยเลือกที ่เมนู Project → Add Reference…<br />
→ Microsoft Scripting Runtime และกดปุ่ม OK (ตามรูปที ่ 2.11 และ 2.12)<br />
4) ดับเบิลคลิกที ่ปุ่ม Button หรือคลิกที ่ปุ่ม View Code<br />
โปรแกรมดังนี้<br />
ที ่หน้าต่างโซลูชัน แล้วเขียนโค้ด<br />
5) ทดสอบการทํางานของโปรแกรม โดยการกดปุ่ม หรือกดปุ่ม ที ่คีย์บอร์ด จากนั้น<br />
ทําการทดสอบโปรแกรมโดยการป้อนตัวเลขเข้าไป (เช่น เลข 5) และกดปุ่ม “ทดสอบการเขียน<br />
ไฟล์สคริปต์” หนึ ่งครั้ง ก็จะได้ผลลัพธ์ตามรูปที ่ 2.20
53<br />
รูปที ่ 2.20 ข้อมูลที ่เขียนลงไฟล์สคริปต์ test.sce<br />
1<br />
2<br />
3<br />
4<br />
5<br />
6<br />
7<br />
8<br />
Public Class Form1<br />
Public fso As New Scripting.FileSystemObject<br />
Public w_file As Scripting.TextStream<br />
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As<br />
System.EventArgs) Handles Button1.Click<br />
w_file = fso.CreateTextFile("D:\test.sce")<br />
'สร้างไฟล์สคริปต์<br />
w_file.WriteLine("X=" & TextBox1.Text & ";") 'เขียนไฟล์สคริปต์<br />
End Sub<br />
End Class<br />
หมายเหตุ ฟังก์ชัน WriteLine ในบรรทัดที ่ 6 เป็นการเขียนข้อมูลลงในไฟล์สคริปต์ที ่สร้างขึ้น<br />
เพื ่อนําข้อมูลไปประมวลผลที ่โปรแกรม SCILAB ซึ ่งเมื ่อป้อนค่าที ่ต้องการ (เช่น เลข 5) ลงไป<br />
ในช่อง Input แล้วกดปุ่ม “ทดสอบการเขียนข้อมูลลงไฟล์สคริปต์” ก็จะทําการสร้างไฟล์สคริปต์<br />
test.sce ในสารบบ D:\ และเขียนข้อมูล X=5 ลงในไฟล์ (ตามที ่กําหนดในบรรทัดที ่ 6)<br />
2.5.3 การประมวลผลไฟล์สคริปต์<br />
ในที ่นี้จะแสดงวิธีการนําข้อมูลที ่ป้อนผ่านหน้าต่างส่วนต่อประสานของโปรแกรม Visual Basic 2010<br />
Express ไปเก็บไว้ในไฟล์สคริปต์ แล้วส่งไฟล์สคริปต์ไปประมวลผลที ่โปรแกรม SCILAB ดังนี้<br />
1) เปิดโปรแกรม Visual Basic 2010 Express แล้วสร้างโปรเจ็กต์แบบ Windows Forms<br />
Application จากนั้นทําการออกแบบหน้าฟอร์มโดยนําปุ่ม Button มาวาง 1 ตัว (เปลี ่ยนชื ่อ<br />
เป็น “ทดสอบการประมวลผลไฟล์สคริปต์”) และนํา Textbox1 มาวาง 1 ตัว (เปลี ่ยนชื ่อเป็น<br />
“Input”) และ Label มาวาง 1 ตัว ตามรูปที ่ 2.21<br />
2) กําหนดค่าคุณสมบัติของฟอร์มตามตารางที ่ 2.8
54<br />
รูปที ่ 2.21 ฟอร์มทดสอบการประมวลผลไฟล์สคริปต์<br />
ตารางที ่ 2.8 การกําหนดค่าคุณสมบัติของฟอร์มที ่ใช้ในรูปที ่ 2.21<br />
อ็อบเจกต์ / คอนโทรล คุณสมบัติ ค่าที ่กําหนด<br />
Form Text ทดสอบการประมวลผลไฟล์สคริปต์<br />
CommandButton<br />
Name<br />
Text<br />
Button1<br />
TextBox1 Text N/A<br />
ทดสอบการประมวลผลไฟล์สคริปต์<br />
3) เรียกฟังก์ชัน FileSystemObject มาใช้งานโดยเลือกที ่เมนู Project → Add Reference…<br />
→ Microsoft Scripting Runtime และกดปุ่ม OK (ตามรูปที ่ 2.11 และ 2.12)<br />
4) ดับเบิลคลิกที ่ปุ่ม Button หรือคลิกที ่ปุ่ม View Code<br />
โปรแกรมดังนี้<br />
ที ่หน้าต่างโซลูชัน แล้วเขียนโค้ด<br />
1<br />
2<br />
3<br />
4<br />
5<br />
6<br />
7<br />
8<br />
9<br />
Public Class Form1<br />
Public fso As New Scripting.FileSystemObject<br />
Public w_file As Scripting.TextStream<br />
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As<br />
System.EventArgs) Handles Button1.Click<br />
w_file = fso.CreateTextFile("D:\test.sce")<br />
'สร้างไฟล์สคริปต์<br />
w_file.WriteLine("X=" & TextBox1.Text & ";") 'เขียนไฟล์สคริปต์<br />
Shell("C:\WINDOWS\scilab-4.1.2\bin\Scilex.exe -f D:\test.sce", vbHide)<br />
'ประมวลผล<br />
End Sub<br />
End Class
55<br />
รูปที ่ 2.22 ฟอร์มทดสอบการบันทึกผลลัพธ์ลงไฟล์ข้อมูล<br />
5) ทดสอบการทํางานของโปรแกรม โดยการกดปุ่ม หรือกดปุ่ม ที ่คีย์บอร์ด จากนั้น<br />
ทดสอบการทํางานของโปรแกรมโดยการป้อนตัวเลข (เช่น เลข 5) ลงไป และกดปุ่ม “ทดสอบ<br />
การเขียนไฟล์สคริปต์” หนึ ่งครั้ง ก็จะได้ไฟล์สคริปต์ test.sce ในสารบบ D:\ ที่มีข้อมูล<br />
X=5 จากนั้นไฟล์สคริปต์นี้จะถูกนําไปประมวลผลในโปรแกรม SCILAB 8 ผ่านทางคําสั่ง Shell<br />
ตามบรรทัดที ่ 7 โดยการประมวลผลไฟล์สคริปต์จะถูกซ่อนด้วยคําสั่ง vbHide (ในที ่นี้จึงทําให้<br />
ไม่มีการแสดงผลลัพธ์ใดๆ เกิดขึ้น)<br />
2.5.4 การบันทึกผลลัพธ์ลงไฟล์ข้อมูล<br />
ในที ่นี้จะแสดงวิธีการนําข้อมูลที ่ป้อนผ่านหน้าต่างส่วนต่อประสานของโปรแกรม Visual Basic 2010<br />
Express ไปเก็บไว้ในไฟล์สคริปต์แล้วส่งไฟล์นี้ไปประมวลผล จากนั้นนําผลลัพธ์ที ่ได้มาบันทึกเก็บ<br />
ไว้ในไฟล์ข้อมูล ดังแสดงต่อไปนี้<br />
1) เปิดโปรแกรม Visual Basic 2010 Express แล้วสร้างโปรเจ็กต์แบบ Windows Forms<br />
Application จากนั้นทําการออกแบบหน้าฟอร์มโดยนําปุ่ม Button มาวาง 1 ตัว (เปลี ่ยนชื ่อเป็น<br />
“ทดสอบการบันทึกผลลัพธ์ลงเท็กซ์ไฟล์”) และนํา Textbox1 มาวาง 1 ตัว (เปลี่ยนชื ่อเป็น<br />
“Input”) และ Label มาวาง 1 ตัว ตามรูปที ่ 2.22<br />
2) กําหนดค่าคุณสมบัติของฟอร์มตามตารางที ่ 2.9<br />
3) เรียกฟังก์ชัน FileSystemObject มาใช้งานโดยเลือกที่เมนู Project → Add Reference…<br />
→ Microsoft Scripting Runtime และกดปุ่ม OK (ตามรูปที ่ 2.11 และ 2.12)<br />
4) ดับเบิลคลิกที ่ปุ่ม Button หรือคลิกที ่ปุ่ม View Code<br />
โปรแกรมดังนี้<br />
ที ่หน้าต่างโซลูชัน แล้วเขียนโค้ด<br />
8 ไฟล์ที ่ใช้ประมวลผลของโปรแกรม SCILAB เวอร์ชัน 4.1.2 คือไฟล์ Scilex.exe
56<br />
ตารางที ่ 2.9 การกําหนดค่าคุณสมบัติของฟอร์มที ่ใช้ในรูปที ่ 2.22<br />
อ็อบเจกต์ / คอนโทรล คุณสมบัติ ค่าที ่กําหนด<br />
Form Text ทดสอบการบันทึกผลลัพธ์ลงไฟล์ข้อมูล<br />
CommandButton<br />
Name<br />
Text<br />
Button1<br />
TextBox1 Text N\A<br />
ทดสอบการบันทึกผลลัพธ์ลงไฟล์ข้อมูล<br />
1<br />
2<br />
3<br />
4<br />
5<br />
6<br />
7<br />
8<br />
9<br />
10<br />
11<br />
12<br />
13<br />
Public Class Form1<br />
Public fso As New Scripting.FileSystemObject<br />
Public w_file As Scripting.TextStream<br />
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As<br />
System.EventArgs) Handles Button1.Click<br />
w_file = fso.CreateTextFile("D:\test.sce")<br />
'สร้างไฟล์สคริปต์<br />
w_file.WriteLine("X=" & TextBox1.Text & ";") 'เขียนไฟล์สคริปต์<br />
w_file.WriteLine("output=log2(X);")<br />
'เขียนไฟล์สคริปต์<br />
w_file.WriteLine("savematfile('D:\001.txt', 'output')") 'บันทึกผลลัพธ์<br />
w_file.WriteLine("exit();") 'ออกจากโปรแกรม SCILAB<br />
w_file.Close()<br />
'ออกจากการเขียนไฟล์สคริปต์<br />
Shell("C:\WINDOWS\scilab-4.1.2\bin\Scilex.exe -f D:\test.sce", vbHide)<br />
'ประมวลผล<br />
End Sub<br />
End Class<br />
5) ทดสอบการทํางานของโปรแกรม โดยการกดปุ่ม หรือกดปุ่ม ที ่คีย์บอร์ด จากนั้น<br />
ทําการทดสอบโปรแกรมโดยการป้อนตัวเลข (เช่น เลข 8) ลงไปตามรูปที่ 2.22 และกดปุ่ม<br />
“ทดสอบการบันทึกผลลัพธ์ลงเท็กซ์ไฟล์” หนึ ่งครั้ง ก็จะได้ผลลัพธ์ดังรูปที ่ 2.23<br />
หมายเหตุ การบันทึกผลลัพธ์ลงในไฟล์ข้อมูลจะต้องเขียนโค้ดลงในไฟล์สคริปต์ไว้ก่อน<br />
(บรรทัดที ่ 8) โดยใช้คําสั่ง savematfile จากนั้นออกจากการโปรแกรม SCILAB โดยใช้<br />
คําสั่ง exit (บรรทัดที ่ 9) และสิ้นสุดการเขียนข้อมูล (บรรทัดที ่ 10) หลังจากนั้นเมื ่อป้อน<br />
ข้อมูลลงไปและกดปุ่ม “ทดสอบการบันทึกผลลัพธ์ลงไฟล์ข้อมูล” ก็จะได้ไฟล์สคริปต์ที่ชื ่อว่า<br />
test.sce ปรากฏอยู่ในสารบบ D:\ และบันทึกผลลัพธ์ที ่ได้จากการประมวลผลเข้าไปเก็บ<br />
ในไฟล์ข้อมูลที ่ชื ่อว่า 001.txt ซึ ่งเมื ่อเปิดไฟล์ข้อมูล 001.txt เพื ่อดูผลลัพธ์ก็จะได้ตาม<br />
รูปที ่ 2.24
57<br />
รูปที ่ 2.23 การบันทึกผลลัพธ์ลงไฟล์ข้อมูล 001.txt<br />
รูปที ่ 2.24 ผลลัพธ์ที ่ได้ในไฟล์ 001.txt แสดงด้วยโปรแกรม NotePad<br />
รูปที ่ 2.25 ฟอร์มการแสดงผลลัพธ์ของ Log ฐาน 2
58<br />
ตารางที ่ 2.10 การกําหนดค่าคุณสมบัติของฟอร์มที ่ใช้ในรูปที ่ 2.25<br />
อ็อบเจกต์ / คอนโทรล คุณสมบัติ ค่าที ่กําหนด<br />
Form Text การแสดงผลลัพธ์ของ Log ฐาน 2<br />
CommandButton<br />
Name<br />
Button1<br />
Text ประมวลผลลัพธ์ Log ฐาน 2<br />
Textbox1 Text N\A<br />
Textbox2 Text N\A<br />
Timer1<br />
Interval 1000<br />
Enabled<br />
False<br />
2.5.5 การแสดงผลลัพธ์<br />
ในที ่นี้จะแสดงวิธีการนําข้อมูลที ่ป้อนผ่านหน้าต่างส่วนต่อประสานของโปรแกรม Visual Basic 2010<br />
Express ไปเก็บไว้ในไฟล์สคริปต์แล้วส่งไฟล์นี้ไปประมวลผล จากนั้นนําผลลัพธ์ที ่ได้มาบันทึกเก็บ<br />
ไว้ในไฟล์ข้อมูลแล้วส่งกลับมาแสดงผลที ่หน้าต่างส่วนต่อประสานของโปรแกรม Visual Basic 2010<br />
Express ดังแสดงต่อไปนี้<br />
1) เปิดโปรแกรม Visual Basic 2010 Express แล้วสร้างโปรเจ็กต์แบบ Windows Forms<br />
Application จากนั้นทําการออกแบบหน้าฟอร์มโดยนําปุ่ม Button มาวาง 1 ตัว (เปลี ่ยนชื ่อ<br />
เป็น “ประมวลผลลัพธ์ Log ฐาน 2”), Textbox1 มาวาง 2 ตัว (เปลี ่ยนชื ่อเป็น “Input” และ<br />
“Output”), Label มาวาง 2 ตัว, และ Timer1 มาวางไว้นอกฟอร์มอีก 1 ตัว ตามรูปที ่ 2.25<br />
2) กําหนดค่าคุณสมบัติของฟอร์มตามตารางที ่ 2.10<br />
3) เรียกฟังก์ชัน FileSystemObject มาใช้งานโดยเลือกที ่เมนู Project → Add Reference…<br />
→ Microsoft Scripting Runtime และกดปุ่ม OK (ตามรูปที ่ 2.11 และ 2.12)<br />
4) ดับเบิลคลิกที ่ปุ่ม Button หรือคลิกที ่ปุ่ม View Code<br />
โปรแกรมดังนี้<br />
ที ่หน้าต่างโซลูชัน แล้วเขียนโค้ด<br />
1<br />
2<br />
3<br />
4<br />
5<br />
Public Class Form1<br />
Public fso As New Scripting.FileSystemObject<br />
Public w_file As Scripting.TextStream<br />
Public r_file As Scripting.TextStream<br />
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As<br />
System.EventArgs) Handles Button1.Click
59<br />
6<br />
7<br />
8<br />
9<br />
10<br />
11<br />
12<br />
13<br />
14<br />
15<br />
16<br />
17<br />
18<br />
19<br />
20<br />
21<br />
22<br />
23<br />
24<br />
w_file = fso.CreateTextFile("D:\test.sce")<br />
w_file.WriteLine("X=" & TextBox1.Text & ";")<br />
w_file.WriteLine("output=log2(X);")<br />
'สร้างไฟล์สคริปต์<br />
'เขียนไฟล์สคริปต์<br />
'เขียนไฟล์สคริปต์<br />
w_file.WriteLine("savematfile('D:\001.txt','output')") 'บันทึกผลลัพธ์<br />
w_file.WriteLine("exit();")<br />
w_file.Close()<br />
'ออกจากโปรแกรม SCILAB<br />
'ออกจากการเขียนไฟล์สคริปต์<br />
Shell("C:\WINDOWS\scilab-4.1.2\bin\Scilex.exe -f D:\test.sce", vbHide)<br />
Timer1.Enabled = True<br />
End Sub<br />
'เริ ่มการทํางานของ Timer1<br />
Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As<br />
System.EventArgs) Handles Timer1.Tick<br />
If Timer1.Interval = 1000 Then<br />
r_file = fso.OpenTextFile("D:\001.txt")<br />
Do Until r_file.AtEndOfStream<br />
Loop<br />
End If<br />
TextBox2.Text = Val(r_file.ReadLine)<br />
Timer1.Enabled = False<br />
End Sub<br />
End Class<br />
'หน่วยเวลาเพื ่อรอประมวลผล<br />
'เปิดไฟล์ข้อมูล<br />
'อ่านข้อมูลจากไฟล์ข้อมูลจนจบ<br />
'แสดงข้อมูล Textbox2<br />
'จบการทํางานของ Timer1<br />
รูปที ่ 2.26 ผลลัพธ์ของ Log ของเลข 256 ฐาน 2 (8 = log 2 (256))<br />
5) ทดสอบการทํางานของโปรแกรม โดยการกดปุ่ม หรือกดปุ่ม ที ่คีย์บอร์ด จากนั้น<br />
ทําการทดสอบโปรแกรมโดยการป้อนตัวเลข (เช่น เลข 256) และกดปุ่ม “ประมวลผลลัพธ์ Log<br />
ฐาน 2” หนึ ่งครั้ง ก็จะได้ผลลัพธ์ดังรูปที ่ 2.26
60<br />
รูปที ่ 2.27 ตัวอย่างโปรแกรมเข้าสู่ระบบ<br />
2.6 สรุปท้ายบท<br />
บทนี้ได้สรุปพื ้นฐานการใช้งานโปรแกรม Visual Basic เพื ่อติดต่อกับโปรแกรม SCILAB โดยเริ ่ม<br />
จากประวัติความเป็นมาของโปรแกรม Visual Basic จากนั้นอธิบายหลักการใช้งานของโปรแกรม<br />
Visual Basic 2010 Express รวมทั้งการเชื ่อมต่อกับโปรแกรม SCILAB เพื ่อเป็นแนวทางใช้การ<br />
สร้างสื ่อการเรียนการสอนที ่จะอธิบายในบทต่อไป<br />
2.7 แบบฝึกหัดท้ายบท<br />
1. จงอธิบายเมนูหลัก (menu bar) ที ่นิยมใช้งานของโปรแกรม Visual Basic 2010 Express<br />
2. การใช้งานอ็อบเจกต์ FileSystemObject จะต้องมีการเรียกไลบรารีที ่ชื ่อว่าอะไร<br />
3. จงอธิบายความหมายและรูปแบบการใช้งานของฟังก์ชัน Shell<br />
4. ฟังก์ชัน savematfile ของโปรแกรม SCILAB มีรูปแบบการใช้งานอย่างไร<br />
5. จงออกแบบโปรแกรมเข้าสู่ระบบ โดยเมื ่อป้อนชื ่อลงใน Textbox และคลิกที ่ปุ่ม “เข้าสู่ระบบ”<br />
จะแสดงข้อความยินดีตอบรับและชื ่อผู้ใช้งาน ดังตัวอย่างในรูปที ่ 2.27
61<br />
บทที ่ 3<br />
การสร้างสื ่อการสอนด้วยโปรแกรม Visual<br />
Basic ร่วมกับ SCILAB<br />
ในบทนี้จะแสดงตัวอย่างขั้นตอนการสร้างสื ่อการสอนด้วยโปรแกรม Visual Basic (VB) ร่วมกับ<br />
SCILAB ซึ ่งประกอบด้วยการบวก/ลบ/คูณ/หาร ของเลขสองจํานวน การหาดีเทอร์มิแนนต์และ<br />
อินเวอร์สของเมทริกซ์ การพิสูจน์คุณสมบัติของเมทริกซ์ การหาค่าลอการิทึมฐานใดๆ การบวกและ<br />
ลบสมการพหุนาม และการวาดกราฟสองมิติ เพื ่อเป็นแนวทางให้ผู้อ่านสามารถนําไปพัฒนาต่อยอด<br />
หรือประยุกต์ใช้งานด้านอื ่นได้<br />
3.1 การบวก/ลบ/คูณ/หาร ของเลขสองจํานวน<br />
ในส่วนนี้จะแสดงการใช้โปรแกรม VB 2010 Express เพื ่อสร้างหน้าต่างส่วนต่อประสาน (interface)<br />
เพื ่อใช้สําหรับการบวก ลบ คูณ และหาร ของเลขสองจํานวน ดังต่อไปนี้<br />
1) เปิดโปรแกรม VB 2010 Express แล้วสร้างโปรเจ็กต์แบบ Windows Forms Application<br />
จากนั้นออกแบบหน้าฟอร์มตามรูปที ่ 3.1<br />
2) กําหนดค่าคุณสมบัติของฟอร์มในรูปที ่ 3.1 ตามตารางที ่ 3.1<br />
3) เรียกฟังก์ชัน FileSystemObject มาใช้งานโดยเลือกที ่เมนู Project → Add Reference…<br />
→ Microsoft Scripting Runtime และกดปุ่ม OK (ตามรูปที ่ 2.11 และ 2.12)<br />
4) ดับเบิลคลิกที ่ฟอร์มหรือคลิกที ่ปุ่ม View Code<br />
แล้วเขียนโค้ดโปรแกรมดังนี้<br />
ที ่หน้าต่างโซลูชัน (solution explorer)
62<br />
รูปที ่ 3.1 ฟอร์มสําหรับทําหน้าที ่การบวก ลบ คูณ และหาร ของเลขสองจํานวน<br />
ตารางที ่ 3.1 ค่าคุณสมบัติของฟอร์มในรูปที ่ 3.1<br />
อ็อบเจกต์ / คอนโทรล คุณสมบัติ ค่าที ่กําหนด<br />
Form Text การบวก/ลบ/คูณ/หาร ด้วย SCILAB<br />
CommandButton1<br />
CommandButton2<br />
CommandButton3<br />
CommandButton4<br />
Name<br />
Text<br />
Name<br />
Text<br />
Name<br />
Text<br />
Name<br />
Text<br />
Button1<br />
+ (บวก)<br />
Button2<br />
- (ลบ)<br />
Button3<br />
X (คูณ)<br />
Button4<br />
/ (หาร)<br />
Textbox1 (A) Text N/A<br />
Textbox2 (B) Text N/A<br />
Textbox3 (C) Text N/A<br />
Timer1<br />
Enabled<br />
False<br />
Interval 1000<br />
โค้ดของฟอร์มในรูปที ่ 3.1<br />
1<br />
2<br />
Public Class Form1<br />
Public fso As New Scripting.FileSystemObject
63<br />
3<br />
4<br />
5<br />
6<br />
7<br />
8<br />
9<br />
10<br />
11<br />
12<br />
13<br />
14<br />
15<br />
16<br />
17<br />
18<br />
19<br />
20<br />
21<br />
22<br />
23<br />
24<br />
25<br />
26<br />
27<br />
28<br />
29<br />
30<br />
31<br />
32<br />
33<br />
34<br />
Public w_file As Scripting.TextStream<br />
Public r_file As Scripting.TextStream<br />
Public oparation As String<br />
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As<br />
System.EventArgs) Handles Button1.Click<br />
oparation = "+"<br />
F_scilab()<br />
End Sub<br />
'การบวก<br />
'เรียกใช้ฟังก์ชัน F_scilab<br />
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As<br />
System.EventArgs) Handles Button2.Click<br />
oparation = "-"<br />
F_scilab()<br />
End Sub<br />
'การลบ<br />
'เรียกใช้ฟังก์ชัน F_scilab<br />
Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As<br />
System.EventArgs) Handles Button4.Click<br />
oparation = "*"<br />
F_scilab()<br />
End Sub<br />
'การคูณ<br />
'เรียกใช้ฟังก์ชัน F_scilab<br />
Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As<br />
System.EventArgs) Handles Button3.Click<br />
oparation = "/"<br />
F_scilab()<br />
End Sub<br />
Private Sub F_scilab()<br />
TextBox3.Text = ""<br />
'การหาร<br />
'เรียกใช้ฟังก์ชัน F_scilab<br />
'รายละเอียดของฟังก์ชัน F_scilab<br />
'ลบข้อมูลใน textbox3<br />
w_file = fso.CreateTextFile("D:\temp.sce")<br />
w_file.WriteLine("A=" & TextBox1.Text & ";")<br />
w_file.WriteLine("B=" & TextBox2.Text & ";")<br />
w_file.WriteLine("C=A" & oparation & "B;")<br />
ตัวดําเนินการและ B<br />
w_file.WriteLine("otext=string(C);")<br />
w_file.WriteLine("fid = mopen('D:\001.txt', 'w');")<br />
w_file.WriteLine("mfprintf(fid,'%s\n', otext);")<br />
w_file.WriteLine("mclose(fid);")<br />
w_file.WriteLine("exit")<br />
w_file.Close()<br />
'สร้างไฟล์สคริปต์ชื ่อ temp.sce<br />
'ให้ตัวแปร A = Textbox1.Text<br />
'ให้ตัวแปร B = Textbox2.Text<br />
'ให้ตัวแปร C มีค่าเท่ากับ A ตามด้วย<br />
'แปลงข้อมูล C เป็นสายอักขระเก็บไว้ที ่ตัวแปร otext<br />
'สร้างไฟล์ผลลัพธ์ 001.txt<br />
'เขียนข้อมูล otext ลงในไฟล์ 001.txt<br />
'จบการเขียนข้อมูลลงไฟล์ 001.txt<br />
'ออกจากโปรแกรม SCILAB<br />
'จบการเขียนข้อมูลลงไฟล์สคริปต์<br />
Shell("C:\WINDOWS\scilab-4.1.2\bin\Scilex.exe -f D:\temp.sce", vbHide) 'ประมวลผล
64<br />
35<br />
36<br />
37<br />
38<br />
39<br />
40<br />
41<br />
42<br />
43<br />
44<br />
45<br />
46<br />
47<br />
Timer1.Enabled = True<br />
End Sub<br />
'เปิดการทํางาน Timer1<br />
Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As<br />
System.EventArgs) Handles Timer1.Tick<br />
If fso.FileExists("D:\001.txt") = True And Timer1.Interval = 1000 Then<br />
'ตรวจสอบเงื ่อนไขไฟล์ 001.txt มีอยู่จริงหรือไม่และหน่วงเวลาเท่ากับ 1 วินาที<br />
r_file = fso.OpenTextFile("D:\001.txt")<br />
Do Until r_file.AtEndOfStream<br />
Loop<br />
End If<br />
End Sub<br />
End Class<br />
TextBox3.Text = Val(r_file.ReadLine)<br />
r_file.Close()<br />
Timer1.Enabled = False<br />
'เปิดไฟล์ 001.txt<br />
'ตรวจสอบเงื ่อนไข อ่านข้อมูลจาก 001.txt จบหรือไม่<br />
'นําข้อมูลที ่อ่านได้ใส่ลง textbox3.text<br />
'วนลูปไปตรวจสอบเงื ่อนไข<br />
'จบการอ่านข้อมูล<br />
'ปิดการทํางาน Timer1<br />
'จบทํางานเงื ่อนไข<br />
กดปุ่มบวก<br />
รูปที ่ 3.2 ทดสอบการบวกเลขสองจํานวน<br />
5) ทดสอบการทํางานของโปรแกรมโดยการกดปุ่ม หรือกดปุ่ม ที ่คีย์บอร์ด จากนั้น<br />
ป้อนข้อมูลดังนี้ A มีค่าเท่ากับ 5 และ B มีค่าเท่ากับ 5 และกดปุ่ม “+ (บวก)” หนึ ่งครั้ง<br />
ก็จะได้ผลลัพธ์ตามรูปที ่ 3.2 แต่ถ้ากดปุ่ม “× (คูณ)” หนึ ่งครั้ง ก็จะได้ผลลัพธ์ตามรูปที ่ 3.3<br />
3.2 การหาดีเทอร์มิแนนต์และอินเวอร์สของเมทริกซ์<br />
ในที ่นี้จะแสดงการหาดีเทอร์มิแนนต์ (determinant) และอินเวอร์ส (inverse) ของเมทริกซ์ขนาด<br />
2×2 และ 3×3 โดยจะสร้างฟอร์มทั้งหมด 3 หน้าต่าง ดังรายละเอียดต่อไปนี้
65<br />
กดปุ่มคูณ<br />
รูปที ่ 3.3 ทดสอบการคูณเลขสองจํานวน<br />
รูปที ่ 3.4 ฟอร์มเลือกขนาดเมทริกซ์ 2×2 หรือ 3×3 (Form1)<br />
• Form1 คือฟอร์มกําหนดขนาดของเมทริกซ์ที ่จะใช้งาน<br />
• Form2 คือฟอร์มสําหรับการหาดีเทอร์มิแนนต์และอินเวอร์สของเมทริกซ์ขนาด 2×2<br />
• Form3 คือฟอร์มสําหรับการหาดีเทอร์มิแนนต์และอินเวอร์สของเมทริกซ์ขนาด 3×3<br />
3.2.1 ฟอร์มกําหนดขนาดของเมทริกซ์<br />
การสร้างฟอร์มกําหนดขนาดของเมทริกซ์ (Form1) ทําได้ดังนี้<br />
1) เปิดโปรแกรม VB 2010 Express แล้วสร้างโปรเจ็กต์แบบ Windows Forms Application<br />
โดยหน้าต่างนี้จะให้ผู้ใช้งานเลือกขนาดของเมทริกซ์ที ่ต้องการ โดยจะมีปุ่มเลือกเมทริกซ์ขนาด<br />
2×2 และ 3×3 ดังแสดงในรูปที ่ 3.4<br />
2) กําหนดค่าคุณสมบัติของฟอร์มในรูปที ่ 3.4 ตามตารางที ่ 3.2
66<br />
ตารางที ่ 3.2 ค่าคุณสมบัติของฟอร์มในรูปที ่ 3.4<br />
อ็อบเจกต์ / คอนโทรล คุณสมบัติ ค่าที ่กําหนด<br />
Form<br />
Text<br />
StartPosition<br />
เมทริกซ์<br />
CenterScreen<br />
CommandButton1<br />
CommandButton2<br />
Name<br />
Button1<br />
Text 2 x 2<br />
Name<br />
Button2<br />
Text 3 x 3<br />
3) เรียกฟังก์ชัน FileSystemObject มาใช้งานโดยเลือกที ่เมนู Project → Add Reference…<br />
→ Microsoft Scripting Runtime และกดปุ่ม OK (ตามรูปที ่ 2.11 และ 2.12)<br />
4) ดับเบิลคลิกที ่ฟอร์มหรือคลิกที ่ปุ่ม View Code<br />
ดังนี้<br />
ที ่หน้าต่างโซลูชัน แล้วเขียนโค้ดโปรแกรม<br />
โค้ดของฟอร์ม Form1 ในรูปที ่ 3.4<br />
1<br />
2<br />
3<br />
4<br />
5<br />
6<br />
7<br />
8<br />
9<br />
10<br />
Public Class Form1<br />
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As<br />
System.EventArgs) Handles Button1.Click<br />
Hide()<br />
Form2.Show()<br />
End Sub<br />
'ซ่อนฟอร์มที ่ใช้งานอยู่ (Form1)<br />
'แสดง Form2<br />
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As<br />
System.EventArgs) Handles Button2.Click<br />
Hide()<br />
Form3.Show()<br />
End Sub<br />
End Class<br />
'ซ่อนฟอร์มที ่ใช้งานอยู่ (Form1)<br />
'แสดง Form3<br />
3.2.2 ฟอร์มสําหรับหาดีเทอร์มิแนนต์และอินเวอร์สของเมทริกซ์ขนาด 2×2<br />
การสร้างฟอร์มสําหรับการหาดีเทอร์มิแนนต์และอินเวอร์สของเมทริกซ์ขนาด 2 ×2 (Form2) ทําได้<br />
ดังนี้
67<br />
ดีเทอร์มิแนนต์<br />
อินเวอร์ส<br />
รูปที ่ 3.5 ฟอร์มสําหรับการหาดีเทอร์มิแนนต์และอินเวอร์สของเมทริกซ์ขนาด 2×2 (Form2)<br />
รูปที ่ 3.6 เครื ่องมือ Panel ที ่ใช้ในการออกแบบผลลัพธ์ของ Form2<br />
1) เปิดโปรแกรม VB 2010 Express แล้วสร้างโปรเจ็กต์แบบ Windows Forms Application<br />
โดยหน้าต่างนี้จะใช้สําหรับหาดีเทอร์มิแนนต์และอินเวอร์สของเมทริกซ์ขนาด 2×2 ซึ ่งต้องมีปุ่ม<br />
สําหรับคํานวณ 2 ปุ่ม โดยการหาดีเทอร์มิแนนต์จะแสดง Textbox จํานวน 1 ช่อง เป็น Panel<br />
ที ่หนึ ่ง และการหาอินเวอร์สจะแสดง Textbox จํานวน 4 ช่อง เป็น Panel ที ่สอง ดังแสดงใน<br />
รูปที ่ 3.5<br />
หมายเหตุ การออกแบบฟอร์มผลลัพธ์นั้นจะใช้เครื ่องมือ (Toolbox) ที ่มีชื ่อว่า Panel ตามรูปที ่<br />
3.6 ซึ ่งจะต้องสร้าง Panel สองอันซ้อนกัน ณ ตําแหน่งที ่แสดงผลลัพธ์ โดย Panel ที ่หนึ ่งใช้<br />
แสดงผลลัพธ์ของการหาดีเทอร์มิแนนต์ และ Panel ที ่สองใช้แสดงผลลัพธ์ของการหาอินเวอร์ส<br />
นอกจากนี้จะต้องทําการซ่อน Panel ทั้งสองไว้ก่อน โดยการกําหนดค่า Visible เท่ากับ False<br />
ตามรูปที ่ 3.7
68<br />
รูปที ่ 3.7 การตั้งค่าการซ่อน Panel<br />
แถวที ่ 1 แนวตั้งที ่ 2<br />
รูปที ่ 3.8 ตัวอย่างรหัสที ่ใช้กําหนด Textbox (XY)<br />
2) กําหนดค่าคุณสมบัติของฟอร์มในรูปที ่ 3.5 ตามตารางที ่ 3.3<br />
หมายเหตุ รหัสที ่ใช้ในการตั้งชื ่อ Textbox (XY) หมายถึง Textbox แถวที ่ X และแนวตั้งที ่<br />
Y เช่น ถ้ากําหนดให้ Textbox (12) จะหมายถึง Textbox แถวที ่ 1 และแนวตั้งที ่ 2 ตามที ่<br />
แสดงในรูปที ่ 3.8<br />
3) เรียกฟังก์ชัน FileSystemObject มาใช้งานโดยเลือกที ่เมนู Project → Add Reference…<br />
→ Microsoft Scripting Runtime และกดปุ่ม OK (ตามรูปที ่ 2.11 และ 2.12)<br />
4) ดับเบิลคลิกที ่ฟอร์มหรือคลิกที ่ปุ่ม View Code<br />
ดังนี้<br />
ที ่หน้าต่างโซลูชันแล้วเขียนโค้ดโปรแกรม
69<br />
ตารางที ่ 3.3 ค่าคุณสมบัติของฟอร์มในรูปที ่ 3.5<br />
อ็อบเจกต์ / คอนโทรล คุณสมบัติ ค่าที ่กําหนด<br />
Form<br />
Text เมทริกซ์ขนาด 2 × 2<br />
StartPosition<br />
CenterScreen<br />
CommandButton1<br />
CommandButton2<br />
CommandButton3<br />
Textbox (A11)<br />
Textbox (A12)<br />
Textbox (A21)<br />
Textbox (A22)<br />
Textbox (1) Panel1<br />
Textbox (11) Panel2<br />
Textbox (12) Panel2<br />
Textbox (21) Panel2<br />
Textbox (22) Panel2<br />
Name<br />
Text<br />
Name<br />
Text<br />
Name<br />
Text<br />
Name<br />
Text<br />
Name<br />
Text<br />
Name<br />
Text<br />
Name<br />
Text<br />
Name<br />
Text<br />
Name<br />
Text<br />
Name<br />
Text<br />
Name<br />
Text<br />
Name<br />
Text<br />
Button1<br />
ดีเทอร์มิแนนต์<br />
Button2<br />
อินเวอร์ส<br />
Button3<br />
ยัอนกลับ<br />
a0<br />
N/A<br />
a1<br />
N/A<br />
a2<br />
N/A<br />
a3<br />
N/A<br />
da<br />
N/A<br />
inva0<br />
N/A<br />
inva1<br />
N/A<br />
inva2<br />
N/A<br />
inva3<br />
N/A<br />
Timer1<br />
Enabled<br />
False<br />
Interval 1000
70<br />
โค้ดของฟอร์ม Form2 ในรูปที ่ 3.5<br />
1<br />
2<br />
3<br />
4<br />
5<br />
6<br />
7<br />
8<br />
9<br />
10<br />
11<br />
12<br />
13<br />
14<br />
15<br />
16<br />
17<br />
18<br />
19<br />
20<br />
21<br />
22<br />
23<br />
24<br />
25<br />
26<br />
27<br />
28<br />
29<br />
30<br />
31<br />
Public Class Form2<br />
Public fso As New Scripting.FileSystemObject<br />
Public w_file As Scripting.TextStream<br />
Public r_file As Scripting.TextStream<br />
Public codeline As String<br />
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As<br />
System.EventArgs) Handles Button1.Click<br />
da.Text = ""<br />
'ลบข้อมูลใน da.Text<br />
w_file = fso.CreateTextFile("D:\temp.sce") 'สร้างไฟล์สคริปต์ชื ่อว่า temp.sce<br />
w_file.WriteLine("A=[" & a0.Text & " " & a1.Text & ";" & a2.Text & " " & a3.Text<br />
& "];") 'สร้างตัวแปรเมทริกซ์ A เท่ากับ a0.text - a3.text ตามลําดับ<br />
ตัวแปร otext<br />
w_file.WriteLine("output=det(A);")<br />
'หาดีเทอร์มิแนนต์ของเมทริกซ์ A<br />
w_file.WriteLine("otext=string(output);") 'แปลงข้อมูล output เป็นสายอักขระเก็บไว้ที ่<br />
w_file.WriteLine("fid = mopen('D:\001.txt', 'w');")<br />
'สร้างไฟล์ผลลัพธ์ 001.txt<br />
w_file.WriteLine("mfprintf(fid,'%s\n',otext);") 'นําข้อมูล output เขียนลงในไฟล์ 001.txt<br />
w_file.WriteLine("mclose(fid);")<br />
w_file.WriteLine("exit")<br />
w_file.Close()<br />
'จบการเขียนข้อมูลลงไฟล์ 001.txt<br />
'ออกจากโปรแกรม SCILAB<br />
'จบการเขียนข้อมูลลงไฟล์สคริปต์<br />
Shell("C:\WINDOWS\scilab-4.1.2\bin\Scilex.exe -f D:\temp.sce", vbHide)<br />
Timer1.Enabled = True<br />
End Sub<br />
'เปิดการทํางาน Timer1<br />
Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As<br />
System.EventArgs) Handles Timer1.Tick<br />
If fso.FileExists("D:\001.txt") = True And Timer1.Interval = 1000 Then 'ตรวจสอบ<br />
เงื ่อนไขไฟล์ 001.txt มีอยู่จริงหรือไม่และหน่วงเวลาเท่ากับ 1 วินาที<br />
r_file = fso.OpenTextFile("D:\001.txt")<br />
Do Until r_file.AtEndOfStream<br />
Loop<br />
End If<br />
End Sub<br />
da.Text = r_file.ReadLine<br />
r_file.Close()<br />
Panel2.Visible = False<br />
Panel1.Visible = True<br />
Timer1.Enabled = False<br />
'เปิดไฟล์ 001.txt<br />
'ตรวจสอบเงื ่อนไข อ่านข้อมูลจาก 001.txt จบหรือไม่<br />
'นําข้อมูลที ่อ่านได้ใส่ลง da.text<br />
'วนลูปไปตรวจสอบเงื ่อนไข<br />
'จบการอ่านข้อมูล<br />
'ปิด Panel2<br />
'เปิด Panel1<br />
'ปิดการทํางาน Timer1<br />
'จบทํางานเงื ่อนไข
71<br />
32<br />
33<br />
34<br />
35<br />
36<br />
37<br />
38<br />
39<br />
40<br />
41<br />
42<br />
43<br />
44<br />
45<br />
46<br />
47<br />
48<br />
49<br />
50<br />
51<br />
52<br />
53<br />
54<br />
55<br />
56<br />
57<br />
58<br />
59<br />
60<br />
61<br />
62<br />
63<br />
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As<br />
System.EventArgs) Handles Button2.Click<br />
& "];")<br />
ตัวแปร otext<br />
inva0.Text = ""<br />
inva1.Text = ""<br />
inva2.Text = ""<br />
inva3.Text = ""<br />
'ลบข้อมูลใน inva0.text<br />
'ลบข้อมูลใน inva1.text<br />
'ลบข้อมูลใน inva2.text<br />
'ลบข้อมูลใน inva3.text<br />
w_file = fso.CreateTextFile("D:\temp.sce")<br />
'สร้างไฟล์สคริปต์ชื ่อว่า temp.sce<br />
w_file.WriteLine("A=[" & a0.Text & " " & a1.Text & ";" & a2.Text & " " & a3.Text<br />
'สร้างตัวแปรเมทริกซ์ A เท่ากับ a0.text - a3.text ตามลําดับ<br />
w_file.WriteLine("output=inv(A);")<br />
w_file.WriteLine("otext=string(output);")<br />
'หาอินเวอร์สของเมทริกซ์ A<br />
'แปลงข้อมูล output เป็นสายอักขระเก็บไว้ที ่<br />
w_file.WriteLine("fid = mopen('D:\001.txt', 'w');") 'สร้างไฟล์ผลลัพธ์ 001.txt<br />
w_file.WriteLine("mfprintf(fid,'%s\n',otext(1));") 'นําข้อมูล otext(1) เขียนลงใน 001.txt<br />
w_file.WriteLine("mfprintf(fid,'%s\n',otext(3));") 'นําข้อมูล otext(3) เขียนลงใน 001.txt<br />
w_file.WriteLine("mfprintf(fid,'%s\n',otext(2));") 'นําข้อมูล otext(2) เขียนลงใน 001.txt<br />
w_file.WriteLine("mfprintf(fid,'%s\n',otext(4));") 'นําข้อมูล otext(4) เขียนลงใน 001.txt<br />
w_file.WriteLine("mclose(fid);")<br />
w_file.WriteLine("exit")<br />
w_file.Close()<br />
'จบการเขียนข้อมูลลงไฟล์ 001.txt<br />
'ออกจากโปรแกรม SCILAB<br />
'จบการเขียนข้อมูลลงไฟล์สคริปต์<br />
Shell("C:\WINDOWS\scilab-4.1.2\bin\Scilex.exe -f D:\temp.sce", vbHide)<br />
Timer2.Enabled = True<br />
End Sub<br />
'เปิดการทํางาน Timer2<br />
Private Sub Timer2_Tick(ByVal sender As System.Object, ByVal e As<br />
System.EventArgs) Handles Timer2.Tick<br />
If fso.FileExists("D:\001.txt") = True And Timer2.Interval = 1000 Then 'ตรวจสอบ<br />
เงื ่อนไขไฟล์ 001.txt มีอยู่จริงหรือไม่และหน่วงเวลาเท่ากับ 1 วินาที<br />
r_file = fso.OpenTextFile("D:\001.txt")<br />
Do Until r_file.AtEndOfStream<br />
Loop<br />
inva0.Text = r_file.ReadLine<br />
inva1.Text = r_file.ReadLine<br />
inva2.Text = r_file.ReadLine<br />
inva3.Text = r_file.ReadLine<br />
r_file.Close()<br />
Panel1.Visible = False<br />
Panel2.Visible = True<br />
'เปิดไฟล์ 001.txt<br />
'ตรวจสอบเงื ่อนไข อ่านข้อมูลจาก 001.txt จบหรือไม่<br />
'นําข้อมูลที ่อ่านได้ใส่ลง inva0.text<br />
'นําข้อมูลที ่อ่านได้ใส่ลง inva1.text<br />
'นําข้อมูลที ่อ่านได้ใส่ลง inva2.text<br />
'นําข้อมูลที ่อ่านได้ใส่ลง inva3.text<br />
'วนลูปไปตรวจสอบเงื ่อนไข<br />
'จบการอ่านข้อมูล<br />
'ปิด Panel1<br />
'เปิด Panel2
72<br />
64<br />
65<br />
66<br />
67<br />
68<br />
69<br />
70<br />
71<br />
End If<br />
End Sub<br />
Timer2.Enabled = False<br />
'ปิดการทํางาน Timer2<br />
'จบทํางานเงื ่อนไข<br />
Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As<br />
System.EventArgs) Handles Button3.Click<br />
Hide()<br />
Form1.Show()<br />
End Sub<br />
End Class<br />
'ซ่อนฟอร์มที ่ใช้งานอยู่ (Form2)<br />
'แสดง Form1<br />
ดีเทอร์มิแนนต์<br />
อินเวอร์ส<br />
รูปที ่ 3.9 ฟอร์มสําหรับการหาดีเทอร์มิแนนต์และอินเวอร์สของเมทริกซ์ขนาด 3×3 (Form3)<br />
3.2.3 ฟอร์มสําหรับหาดีเทอร์มิแนนต์และอินเวอร์สของเมทริกซ์ขนาด 3×3<br />
การสร้างฟอร์มสําหรับหาดีเทอร์มิแนนต์และอินเวอร์สของเมทริกซ์ขนาด 3 ×3 (Form3) ทําได้ดังนี้<br />
1) เปิดโปรแกรม VB 2010 Express แล้วสร้างโปรเจ็กต์แบบ Windows Forms Application<br />
โดยหน้าต่างนี้จะใช้สําหรับหาดีเทอร์มิแนนต์และอินเวอร์สของเมทริกซ์ขนาด 3×3 โดยการ<br />
ออกแบบในส่วนแสดงผลลัพธ์จะมีลักษณะเหมือนกับแบบฟอร์มที ่ 2 (Form2) โดยจะใช้ Panel<br />
ซ่อนผลลัพธ์ไว้ตามที ่กําหนดในรูปที ่ 3.6 และ 3.7 แต่จะมีขนาดของเมทริกซ์เป็น 3×3 ตาม<br />
รูปที ่ 3.9<br />
2) กําหนดค่าคุณสมบัติของฟอร์มในรูปที ่ 3.9 ตามตารางที ่ 3.4
73<br />
ตารางที ่ 3.4 ค่าคุณสมบัติของฟอร์มในรูปที ่ 3.9<br />
อ็อบเจกต์ / คอนโทรล คุณสมบัติ ค่าที ่กําหนด<br />
Form<br />
Text เมทริกซ์ขนาด 3 × 3<br />
StartPosition<br />
CenterScreen<br />
CommandButton1<br />
CommandButton2<br />
CommandButton3<br />
Textbox (A11)<br />
Textbox (A12)<br />
Textbox (A13)<br />
Textbox (A21)<br />
Textbox (A22)<br />
Textbox (A23)<br />
Textbox (A31)<br />
Textbox (A32)<br />
Textbox (A33)<br />
Textbox (1) Panel1<br />
Name<br />
Text<br />
Name<br />
Text<br />
Name<br />
Text<br />
Name<br />
Text<br />
Name<br />
Text<br />
Name<br />
Text<br />
Name<br />
Text<br />
Name<br />
Text<br />
Name<br />
Text<br />
Name<br />
Text<br />
Name<br />
Text<br />
Name<br />
Text<br />
Name<br />
Text<br />
Button1<br />
ดีเทอร์มิแนนต์<br />
Button2<br />
อินเวอร์ส<br />
Button3<br />
ยัอนกลับ<br />
a0<br />
N/A<br />
a1<br />
N/A<br />
a2<br />
N/A<br />
a3<br />
N/A<br />
a4<br />
N/A<br />
a5<br />
N/A<br />
a6<br />
N/A<br />
a7<br />
N/A<br />
a8<br />
N/A<br />
da<br />
N/A
74<br />
อ็อบเจกต์ / คอนโทรล คุณสมบัติ ค่าที ่กําหนด<br />
Textbox (11) Panel2<br />
Textbox (12) Panel2<br />
Textbox (13) Panel2<br />
Textbox (21) Panel2<br />
Textbox (22) Panel2<br />
Textbox (23) Panel2<br />
Textbox (31) Panel2<br />
Textbox (32) Panel2<br />
Textbox (33) Panel2<br />
Name<br />
Text<br />
Name<br />
Text<br />
Name<br />
Text<br />
Name<br />
Text<br />
Name<br />
Text<br />
Name<br />
Text<br />
Name<br />
Text<br />
Name<br />
Text<br />
Name<br />
Text<br />
inva0<br />
N/A<br />
inva1<br />
N/A<br />
inva2<br />
N/A<br />
inva3<br />
N/A<br />
inva4<br />
N/A<br />
inva5<br />
N/A<br />
inva6<br />
N/A<br />
inva7<br />
N/A<br />
inva8<br />
N/A<br />
Timer1<br />
Enabled<br />
False<br />
Interval 1000<br />
หมายเหตุ การเรียงรหัส Textbox (XY) ในตารางที ่ 3.4 จะเหมือนกับ Form2 ที ่แสดงในตารางที ่<br />
3.3 เพียงแต่ขนาดเมทริกซ์จะเป็น 3×3<br />
3) เรียกฟังก์ชัน FileSystemObject มาใช้งานโดยเลือกที ่เมนู Project → Add Reference…<br />
→ Microsoft Scripting Runtime และกดปุ่ม OK (ตามรูปที ่ 2.11 และ 2.12)<br />
4) ดับเบิลคลิกที ่ฟอร์มหรือคลิกที ่ปุ่ม View Code<br />
ดังนี้<br />
ที ่หน้าต่างโซลูชัน แล้วเขียนโค้ดโปรแกรม
75<br />
โค้ดของฟอร์ม Form3 ในรูปที ่ 3.9<br />
1<br />
2<br />
3<br />
4<br />
5<br />
6<br />
7<br />
8<br />
9<br />
10<br />
11<br />
12<br />
13<br />
14<br />
15<br />
16<br />
17<br />
18<br />
19<br />
20<br />
21<br />
22<br />
23<br />
24<br />
25<br />
26<br />
27<br />
28<br />
29<br />
Public Class Form3<br />
Public fso As New Scripting.FileSystemObject<br />
Public w_file As Scripting.TextStream<br />
Public r_file As Scripting.TextStream<br />
Public codeline As String<br />
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As<br />
System.EventArgs) Handles Button1.Click<br />
da.Text = ""<br />
w_file = fso.CreateTextFile("D:\temp.sce")<br />
'ลบข้อมูลใน da.text<br />
'สร้างไฟล์สคริปต์ชื ่อว่า temp.sce<br />
w_file.WriteLine("A=[" & a0.Text & " " & a1.Text & " " & a2.Text & ";" & a3.Text<br />
& " " & a4.Text & " " & a5.Text & ";" & a6.Text & " " & a7.Text & " " & _ a8.Text &<br />
"];") 'สร้างตัวแปรเมทริกซ์ A เท่ากับ a0.text - a8.text ตามลําดับ<br />
ตัวแปร otext<br />
w_file.WriteLine("output=det(A);")<br />
w_file.WriteLine("otext=string(output);")<br />
'หาดีเทอร์มิแนนต์ของเมทริกซ์ A<br />
'แปลงข้อมูล output เป็นสายอักขระเก็บไว้ที ่<br />
w_file.WriteLine("fid = mopen('D:\001.txt', 'w');") 'สร้างไฟล์ผลลัพธ์ 001.txt<br />
w_file.WriteLine("mfprintf(fid,'%s\n',otext);")<br />
w_file.WriteLine("mclose(fid);")<br />
w_file.WriteLine("exit")<br />
w_file.Close()<br />
'นําข้อมูล otext เขียนลงใน 001.txt<br />
'จบการเขียนข้อมูลลงไฟล์ 001.txt<br />
'ออกจากโปรแกรม SCILAB<br />
'จบการเขียนข้อมูลลงไฟล์สคริปต์<br />
Shell("C:\WINDOWS\scilab-4.1.2\bin\Scilex.exe -f D:\temp.sce", vbHide)<br />
Timer1.Enabled = True<br />
End Sub<br />
'เปิดการทํางาน Timer1<br />
Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As<br />
System.EventArgs) Handles Timer1.Tick<br />
If fso.FileExists("D:\001.txt") = True And Timer1.Interval = 1000 Then<br />
r_file = fso.OpenTextFile("D:\001.txt")<br />
Do Until r_file.AtEndOfStream<br />
Loop<br />
da.Text = r_file.ReadLine<br />
r_file.Close()<br />
Panel2.Visible = False<br />
Panel1.Visible = True<br />
Timer1.Enabled = False<br />
'เปิดไฟล์ 001.txt<br />
'ตรวจสอบเงื ่อนไข อ่านข้อมูลจาก 001.txt จบหรือไม่<br />
'นําข้อมูลที ่อ่านได้ใส่ลง da.text<br />
'วนลูปไปตรวจสอบเงื ่อนไข<br />
'จบการอ่านข้อมูล<br />
'ปิด Panel2<br />
'เปิด Panel1<br />
'ปิดการทํางาน Timer1
76<br />
30<br />
31<br />
32<br />
33<br />
34<br />
35<br />
36<br />
37<br />
38<br />
39<br />
40<br />
41<br />
42<br />
43<br />
44<br />
45<br />
46<br />
47<br />
48<br />
49<br />
50<br />
51<br />
52<br />
53<br />
54<br />
55<br />
56<br />
57<br />
58<br />
59<br />
60<br />
61<br />
End If<br />
End Sub<br />
'จบทํางานเงื ่อนไข<br />
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As<br />
System.EventArgs) Handles Button2.Click<br />
inva0.Text = ""<br />
inva1.Text = ""<br />
inva2.Text = ""<br />
inva3.Text = ""<br />
inva4.Text = ""<br />
inva5.Text = ""<br />
inva6.Text = ""<br />
inva7.Text = ""<br />
inva8.Text = ""<br />
'ลบข้อมูลใน inva0.text<br />
'ลบข้อมูลใน inva1.text<br />
'ลบข้อมูลใน inva2.text<br />
'ลบข้อมูลใน inva3.text<br />
'ลบข้อมูลใน inva4.text<br />
'ลบข้อมูลใน inva5.text<br />
'ลบข้อมูลใน inva6.text<br />
'ลบข้อมูลใน inva7.text<br />
'ลบข้อมูลใน inva8.text<br />
w_file = fso.CreateTextFile("D:\temp.sce")<br />
'สร้างไฟล์สคริปต์ชื ่อว่า temp.sce<br />
w_file.WriteLine("A=[" & a0.Text & " " & a1.Text & " " & a2.Text & ";" & a3.Text<br />
& " " & a4.Text & " " & a5.Text & ";" & a6.Text & " " & a7.Text & " " & _ a8.Text &<br />
"];") 'สร้างตัวแปรเมทริกซ์ A เท่ากับ a0.text - a8.text ตามลําดับ<br />
w_file.WriteLine("output=inv(A);")<br />
w_file.WriteLine("otext=string(output);")<br />
'หาอินเวอร์สของเมทริกซ์ A<br />
w_file.WriteLine("fid = mopen('D:\001.txt', 'w');") 'สร้างไฟล์ผลลัพธ์ 001.txt<br />
w_file.WriteLine("mfprintf(fid,'%s\n',otext(1));") 'นําข้อมูล otext(1) เขียนลงใน 001.txt<br />
w_file.WriteLine("mfprintf(fid,'%s\n',otext(4));") 'นําข้อมูล otext(4) เขียนลงใน 001.txt<br />
w_file.WriteLine("mfprintf(fid,'%s\n',otext(7));") 'นําข้อมูล otext(7) เขียนลงใน 001.txt<br />
w_file.WriteLine("mfprintf(fid,'%s\n',otext(2));") 'นําข้อมูล otext(2) เขียนลงใน 001.txt<br />
w_file.WriteLine("mfprintf(fid,'%s\n',otext(5));") 'นําข้อมูล otext(5) เขียนลงใน 001.txt<br />
w_file.WriteLine("mfprintf(fid,'%s\n',otext(8));") 'นําข้อมูล otext(8) เขียนลงใน 001.txt<br />
w_file.WriteLine("mfprintf(fid,'%s\n',otext(3));") 'นําข้อมูล otext(3) เขียนลงใน 001.txt<br />
w_file.WriteLine("mfprintf(fid,'%s\n',otext(6));") 'นําข้อมูล otext(6) เขียนลงใน 001.txt<br />
w_file.WriteLine("mfprintf(fid,'%s\n',otext(9));") 'นําข้อมูล otext(9) เขียนลงใน 001.txt<br />
w_file.WriteLine("mclose(fid);")<br />
w_file.WriteLine("exit")<br />
w_file.Close()<br />
'จบการเขียนข้อมูลลงไฟล์ 001.txt<br />
'ออกจากโปรแกรม SCILAB<br />
'จบการเขียนข้อมูลลงไฟล์สคริปต์<br />
Shell("C:\WINDOWS\scilab-4.1.2\bin\Scilex.exe -f D:\temp.sce", vbHide)<br />
Timer2.Enabled = True<br />
End Sub<br />
'เปิดการทํางาน Timer2
77<br />
62<br />
63<br />
64<br />
65<br />
66<br />
67<br />
68<br />
69<br />
70<br />
71<br />
72<br />
73<br />
74<br />
75<br />
76<br />
77<br />
78<br />
79<br />
80<br />
81<br />
82<br />
83<br />
84<br />
85<br />
86<br />
Private Sub Timer2_Tick(ByVal sender As System.Object, ByVal e As<br />
System.EventArgs) Handles Timer2.Tick<br />
If fso.FileExists("D:\001.txt") = True And Timer2.Interval = 1000 Then<br />
r_file = fso.OpenTextFile("D:\001.txt")<br />
'เปิดไฟล์ 001.txt<br />
Do Until r_file.AtEndOfStream 'ตรวจสอบเงื ่อนไข อ่านข้อมูลจาก 001.txt จบหรือไม่<br />
Loop<br />
End If<br />
End Sub<br />
inva0.Text = r_file.ReadLine<br />
inva1.Text = r_file.ReadLine<br />
inva2.Text = r_file.ReadLine<br />
inva3.Text = r_file.ReadLine<br />
inva4.Text = r_file.ReadLine<br />
inva5.Text = r_file.ReadLine<br />
inva6.Text = r_file.ReadLine<br />
inva7.Text = r_file.ReadLine<br />
inva8.Text = r_file.ReadLine<br />
r_file.Close()<br />
Panel1.Visible = False<br />
Panel2.Visible = True<br />
Timer2.Enabled = False<br />
'นําข้อมูลใส่ลง inva0.text<br />
'นําข้อมูลใส่ลง inva1.text<br />
'นําข้อมูลใส่ลง inva2.text<br />
'นําข้อมูลใส่ลง inva3.text<br />
'นําข้อมูลใส่ลง inva4.text<br />
'นําข้อมูลใส่ลง inva5.text<br />
'นําข้อมูลใส่ลง inva6.text<br />
'นําข้อมูลใส่ลง inva7.text<br />
'นําข้อมูลใส่ลง inva8.text<br />
'วนลูปไปตรวจสอบเงื ่อนไข<br />
'จบการอ่านข้อมูล<br />
'ปิด Panel1<br />
'เปิด Panel2<br />
'ปิดการทํางาน Timer2<br />
'จบการทํางานของเงื ่อนไข<br />
Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As<br />
System.EventArgs) Handles Button3.Click<br />
Hide()<br />
Form1.Show()<br />
End Sub<br />
End Class<br />
'ซ่อนฟอร์มที ่ใช้งานอยู่ (Form3)<br />
'แสดง Form1<br />
3.2.4 ทดสอบการใช้งาน<br />
ในส่วนนี้จะทดสอบการทํางานของโปรแกรมการหาดีเทอร์มิแนนต์และอินเวอร์สของเมทริกซ์ขนาด<br />
2 ×2 และ 3 ×3 ดังนี้
78<br />
รูปที ่ 3.10 ตัวอย่างการหาผลลัพธ์ของดีเทอร์มิแนนต์ของเมทริกซ์ขนาด 2×2<br />
รูปที ่ 3.11 ตัวอย่างการหาผลลัพธ์ของอินเวอร์สเมทริกซ์ขนาด 2×2<br />
1) ทดสอบการทํางานของโปรแกรมโดยการกดปุ่ม หรือกดปุ่ม ที ่คีย์บอร์ด จากนั้น<br />
ทําการป้อนข้อมูลโดยแบ่งออกเป็น 2 ตัวอย่างต่อไปนี้<br />
2) สําหรับตัวอย่างเมทริกซ์ขนาด 2×2 ให้กดเลือกขนาดของเมทริกซ์เป็น 2×2 ในรูปที ่ 3.4 ก็จะได้<br />
หน้าต่าง “เมทริกซ์ขนาด 2×2” ตามรูปที ่ 3.10<br />
• ป้อนข้อมูลให้เมทริกซ์ A มีค่าเท่ากับ [1, 2; 3, 4] ตามรูปที ่ 3.10 โดยถ้าต้องการหาค่า<br />
ดีเทอร์มิแนนต์ของเมทริกซ์ A ให้กดปุ่มดีเทอร์มิแนนต์ในรูปที ่ 3.10 ก็จะได้ผลลัพธ์เท่ากับ<br />
-2 ตามที ่ต้องการ ในทํานองเดียวกันถ้าต้องการหาค่าดีเทอร์มิแนนต์ของเมทริกซ์ A ให้กด<br />
ปุ่มอินเวอร์สในรูปที ่ 3.11 ก็จะได้ผลลัพธ์เท่ากับ [-2, 1; 1.5, -0.5] ตามที ่ต้องการ
79<br />
รูปที ่ 3.12 ตัวอย่างการหาผลลัพธ์ของดีเทอร์มิแนนต์ของเมทริกซ์ขนาด 3×3<br />
รูปที ่ 3.13 ตัวอย่างการหาผลลัพธ์ของอินเวอร์สเมทริกซ์ขนาด 3×3<br />
3) สําหรับตัวอย่างเมทริกซ์ขนาด 3×3 ให้กดเลือกขนาดของเมทริกซ์เป็น 3×3 ในรูปที ่ 3.4 ก็จะได้<br />
หน้าต่าง “เมทริกซ์ขนาด 3×3” ตามรูปที ่ 3.12<br />
• ป้อนข้อมูลให้เมทริกซ์ A มีค่าเท่ากับ [2, 2, 1; 1, 2, 4; 8, 2, 3] ตามรูปที ่ 3.12 โดยถ้า<br />
ต้องการหาค่าดีเทอร์มิแนนต์ของเมทริกซ์ A ให้กดปุ่มดีเทอร์มิแนนต์ของเมทริกซ์ A ให้<br />
กดปุ่มดีเทอร์มิแนนต์ในรูปที ่ 3.12 ก็จะได้ผลลัพธ์เท่ากับ 40 ในทํานองเดียวกันถ้าต้องการ<br />
หาค่าดีเทอร์มิแนนต์ของเมทริกซ์ A ให้กดปุ่มอินเวอร์สในรูปที ่ 3.13 ก็จะได้ผลลัพธ์เท่ากับ<br />
[-0.05, -0.1, 0.15; 0.725, -0.05, -0.175; -0.35, 0.3, 0.05] ตามต้องการ
80<br />
รูปที ่ 3.14 เครื ่องมือ TabControl ในกล่องเครื ่องมือ<br />
3.3 การพิสูจน์คุณสมบัติของเมทริกซ์<br />
ในส่วนนี้จะแสดงตัวอย่างการใช้โปรแกรม VB 2010 Express สร้างหน้าต่างส่วนต่อประสานเพื ่อ<br />
ใช้ในการพิสูจน์คุณสมบัติ (property) ของเมทริกซ์ 3 แบบคือ<br />
• (kA) T = kA T<br />
• (A + B) T = A T + B T<br />
• (AB) T = B T A T<br />
เมื ่อ k คือค่าคงตัว, A และ B คือเมทริกซ์จัตุรัสขนาด 2×2, และ (⋅) T คือทรานส์โพสของเมทริกซ์<br />
ดังรายละเอียดต่อไปนี้<br />
3.3.1 การพิสูจน์คุณสมบัติ (kA) T = kA T<br />
การสร้างหน้าต่างส่วนต่อประสานเพื ่อใช้ในการพิสูจน์คุณสมบัติ (kA) T = kA T ทําได้ดังนี้<br />
1) เปิดโปรแกรม VB 2010 Express แล้วสร้างโปรเจ็กต์แบบ Windows Forms Application<br />
จากนั้นทําการออกแบบหน้าฟอร์มสําหรับการเขียนโปรแกรมพิสูจน์คุณสมบัติของเมทริกซ์โดย<br />
ในที ่นี้จะใช้เครื ่องมือที ่เรียกว่า TabControl ตามรูปที ่ 3.14 เพื ่อออกแบบการพิสูจน์คุณสมบัติ<br />
ทั้ง 3 แบบลงในฟอร์มเดียวกัน รูปที ่ 3.15 และ 3.16 แสดงตัวอย่างการออกแบบฟอร์มตาม<br />
Tab ที ่หนึ ่ง
81<br />
คลิกที ่ Tab ที ่ต้องการ<br />
คลิกเลือกพื ้นที ่ (กรอบเส้นปะ)<br />
รูปที ่ 3.15 การกําหนดชื ่อ Tab ทั้งสามแบบ<br />
2) กําหนดค่าคุณสมบัติของฟอร์มสําหรับ Tab ที ่หนึ ่งในรูปที ่ 3.16 ตามตารางที ่ 3.5<br />
หมายเหตุ การเรียงรหัสเลข Textbox (XX) จะเหมือนกับที ่ใช้ในตารางที ่ 3.4 ตัวอย่างเช่น<br />
ส่วนแสดงผลลัพธ์ในช่อง Output ตามรูปที ่ 3.17 ในที ่นี้จะได้ว่า Textbox (21) หมายถึง<br />
Textbox แถวที ่ 2 และแนวตั้งที ่ 1 ในขณะที ่ Textbox (25) หมายถึง Textbox แถวที ่ 2<br />
และแนวตั้งที ่ 5
82<br />
รูปที ่ 3.16 ฟอร์มของ Tab ที ่หนึ ่ง สําหรับการพิสูจน์ (kA) T = kA T<br />
แถวที ่ 2 แนวตั้งที ่ 1<br />
แถวที ่ 2 แนวตั้งที ่ 5<br />
รูปที ่ 3.17 ตัวอย่างรหัสที ่ใช้กําหนด Textbox (Output)
83<br />
ตารางที ่ 3.5 ค่าคุณสมบัติของฟอร์มสําหรับ Tab ที ่หนึ ่งในรูปที ่ 3.16<br />
อ็อบเจกต์ / คอนโทรล คุณสมบัติ ค่าที ่กําหนด<br />
Form<br />
CommandButton1<br />
Textbox (K) Input<br />
Textbox (A11) Input<br />
Textbox (A12) Input<br />
Textbox (A21) Input<br />
Textbox (A22) Input<br />
Textbox (11) output<br />
Textbox (12) output<br />
Textbox (13) output<br />
Textbox (14) output<br />
Textbox (15) output<br />
Textbox (16) output<br />
Textbox (17) output<br />
Text<br />
StartPosition<br />
Name<br />
Text<br />
Name<br />
Text<br />
Name<br />
Text<br />
Name<br />
Text<br />
Name<br />
Text<br />
Name<br />
Text<br />
Name<br />
Text<br />
Name<br />
Text<br />
Name<br />
Text<br />
Name<br />
Text<br />
Name<br />
Text<br />
Name<br />
Text<br />
Name<br />
Text<br />
เมทริกซ์ขนาด 2 × 2 พิสูจน์คุณสมบัติ<br />
CenterScreen<br />
Button1<br />
คํานวณ<br />
K<br />
N/A<br />
a0<br />
N/A<br />
a1<br />
N/A<br />
a2<br />
N/A<br />
a3<br />
N/A<br />
ako<br />
N/A<br />
aa0<br />
N/A<br />
ak1<br />
N/A<br />
aa1<br />
N/A<br />
bk0<br />
N/A<br />
ba0<br />
N/A<br />
bk1<br />
N/A
84<br />
อ็อบเจกต์ / คอนโทรล คุณสมบัติ ค่าที ่กําหนด<br />
Textbox (18) output<br />
Textbox (21) output<br />
Textbox (22) output<br />
Textbox (23) output<br />
Textbox (24) output<br />
Textbox (25) output<br />
Textbox (26) output<br />
Textbox (27) output<br />
Textbox (28) output<br />
Textbox C1(11) Output<br />
Textbox C1(12) Output<br />
Textbox C1(13) Output<br />
Textbox C1(14) Output<br />
Textbox C2(11) Output<br />
Name<br />
Text<br />
Name<br />
Text<br />
Name<br />
Text<br />
Name<br />
Text<br />
Name<br />
Text<br />
Name<br />
Text<br />
Name<br />
Text<br />
Name<br />
Text<br />
Name<br />
Text<br />
Name<br />
Text<br />
Name<br />
Text<br />
Name<br />
Text<br />
Name<br />
Text<br />
Name<br />
Text<br />
ba1<br />
N/A<br />
ak2<br />
N/A<br />
aa2<br />
N/A<br />
ak3<br />
N/A<br />
aa3<br />
N/A<br />
bk2<br />
N/A<br />
ba2<br />
N/A<br />
bk3<br />
N/A<br />
ba3<br />
N/A<br />
ac0<br />
N/A<br />
ac1<br />
N/A<br />
ac2<br />
N/A<br />
ac3<br />
N/A<br />
bc0<br />
N/A<br />
Textbox C2(12) Output Name bc1
85<br />
อ็อบเจกต์ / คอนโทรล คุณสมบัติ ค่าที ่กําหนด<br />
Textbox C2(13) Output<br />
Textbox C2(14) Output<br />
Text<br />
Name<br />
Text<br />
Name<br />
Text<br />
N/A<br />
bc2<br />
N/A<br />
bc3<br />
N/A<br />
Timer1<br />
Enabled<br />
False<br />
Interval 1000<br />
3) เรียกฟังก์ชัน FileSystemObject มาใช้งานโดยเลือกที ่เมนู Project → Add Reference…<br />
→ Microsoft Scripting Runtime และกดปุ่ม OK (ตามรูปที ่ 2.11 และ 2.12)<br />
4) ดับเบิลคลิกที ่ฟอร์มหรือคลิกที ่ปุ่ม View Code<br />
ดังนี้<br />
ที ่หน้าต่างโซลูชัน แล้วเขียนโค้ดโปรแกรม<br />
โค้ดของฟอร์มสําหรับ Tab ที ่หนึ ่งในรูปที ่ 3.16<br />
1<br />
2<br />
3<br />
4<br />
5<br />
6<br />
7<br />
8<br />
9<br />
10<br />
11<br />
12<br />
13<br />
14<br />
15<br />
16<br />
17<br />
Public Class Form1<br />
Public fso As New Scripting.FileSystemObject<br />
Public w_file As Scripting.TextStream<br />
Public r_file As Scripting.TextStream<br />
Public i As Integer<br />
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As<br />
System.EventArgs) Handles Button1.Click<br />
& "];")<br />
w_file = fso.CreateTextFile("D:\temp.sce")<br />
'สร้างไฟล์สคริปต์ชื ่อว่า temp.sce<br />
w_file.WriteLine("A=[" & a0.Text & " " & a1.Text & ";" & a2.Text & " " & a3.Text<br />
'สร้างตัวแปรเมทริกซ์ A เท่ากับ a0.text - a3.text ตามลําดับ<br />
w_file.WriteLine("k=[" & k.Text & "];") 'สร้างตัวแปร k เท่ากับ k.text<br />
w_file.WriteLine("output1=(k*A)';")<br />
w_file.WriteLine("output2=k*A';")<br />
w_file.WriteLine("otext1=string(output1);")<br />
w_file.WriteLine("otext2=string(output2);")<br />
'ให้ output1 มีค่าเท่ากับทรานส์โพสของ k×A<br />
'ให้ output2 มีค่าเท่ากับ k คูณทรานส์โพสของ A<br />
'แปลงค่า output1 เป็นข้อความ<br />
'แปลงค่า output2 เป็นข้อความ<br />
w_file.WriteLine("fid = mopen('D:\001.txt', 'w');") 'สร้างไฟล์ผลลัพธ์ 001.txt<br />
w_file.WriteLine("mfprintf(fid,'%s\n',otext1(1));") 'นําข้อมูล output1(1) เขียนลง 001.txt<br />
w_file.WriteLine("mfprintf(fid,'%s\n',otext1(3));") 'นําข้อมูล output1(3) เขียนลง 001.txt<br />
w_file.WriteLine("mfprintf(fid,'%s\n',otext1(2));") 'นําข้อมูล output1(2) เขียนลง 001.txt
86<br />
18<br />
19<br />
20<br />
21<br />
22<br />
23<br />
24<br />
25<br />
26<br />
27<br />
28<br />
29<br />
30<br />
31<br />
32<br />
33<br />
34<br />
35<br />
36<br />
37<br />
38<br />
39<br />
40<br />
41<br />
42<br />
43<br />
44<br />
45<br />
46<br />
47<br />
48<br />
w_file.WriteLine("mfprintf(fid,'%s\n',otext1(4));") 'นําข้อมูล output1(4) เขียนลง 001.txt<br />
w_file.WriteLine("mfprintf(fid,'%s\n',otext2(1));") 'นําข้อมูล output2(1) เขียนลง 001.txt<br />
w_file.WriteLine("mfprintf(fid,'%s\n',otext2(3));") 'นําข้อมูล output2(3) เขียนลง 001.txt<br />
w_file.WriteLine("mfprintf(fid,'%s\n',otext2(2));") 'นําข้อมูล output2(2) เขียนลง 001.txt<br />
w_file.WriteLine("mfprintf(fid,'%s\n',otext2(4));") 'นําข้อมูล output2(4) เขียนลง 001.txt<br />
w_file.WriteLine("mclose(fid);")<br />
w_file.WriteLine("exit")<br />
w_file.Close()<br />
'จบการเขียนข้อมูลลงไฟล์ 001.txt<br />
'ออกจากโปรแกรม SCILAB<br />
'จบการเขียนข้อมูลลงไฟล์สคริปต์<br />
Shell("C:\WINDOWS\scilab-4.1.2\bin\Scilex.exe -f D:\temp.sce", vbHide)<br />
Timer1.Enabled = True<br />
End Sub<br />
'เปิดการทํางาน Timer1<br />
Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As<br />
System.EventArgs) Handles Timer1.Tick<br />
If fso.FileExists("D:\001.txt") = True And Timer1.Interval = 1000 Then<br />
r_file = fso.OpenTextFile("D:\001.txt")<br />
Do Until r_file.AtEndOfStream<br />
Loop<br />
ac0.Text = r_file.ReadLine<br />
ac1.Text = r_file.ReadLine<br />
ac2.Text = r_file.ReadLine<br />
ac3.Text = r_file.ReadLine<br />
bc0.Text = r_file.ReadLine<br />
bc1.Text = r_file.ReadLine<br />
bc2.Text = r_file.ReadLine<br />
bc3.Text = r_file.ReadLine<br />
r_file.Close()<br />
Dim con0() As TextBox = {a0, a1, a2, a3}<br />
array เท่ากับ a0 - a3<br />
Dim con1() As TextBox = {ak0, ak1, ak2, ak3}<br />
array เท่ากับ ak0 - ak3<br />
Dim con2() As TextBox = {bk0, bk1, bk2, bk3}<br />
array เท่ากับ bk0 - bk3<br />
Dim con3() As TextBox = {aa0, aa1, aa2, aa3}<br />
array เท่ากับ aa0 - aa3<br />
Dim con4() As TextBox = {ba0, ba1, ba2, ba3}<br />
array เท่ากับ ba0 - ba3<br />
'เปิดไฟล์ 001.txt<br />
'ตรวจสอบเงื ่อนไข อ่านข้อมูลจาก 001.txt จบหรือไม่<br />
'นําข้อมูลที ่อ่านได้ใส่ลง ac0.text<br />
'นําข้อมูลที ่อ่านได้ใส่ลง ac1.text<br />
'นําข้อมูลที ่อ่านได้ใส่ลง ac2.text<br />
'นําข้อมูลที ่อ่านได้ใส่ลง ac3.text<br />
'นําข้อมูลที ่อ่านได้ใส่ลง bc0.text<br />
'นําข้อมูลที ่อ่านได้ใส่ลง bc1.text<br />
'นําข้อมูลที ่อ่านได้ใส่ลง bc2.text<br />
'นําข้อมูลที ่อ่านได้ใส่ลง bc3.text<br />
'วนลูปไปตรวจสอบเงื ่อนไข<br />
'จบการอ่านข้อมูล<br />
For Me.i = 0 To 3 'ลูป i = 0 จนถึง i = 3<br />
'ประกาศตัวแปร con0 มีข้อมูล<br />
'ประกาศตัวแปร con1 มีข้อมูล<br />
'ประกาศตัวแปร con2 มีข้อมูล<br />
'ประกาศตัวแปร con3 มีข้อมูล<br />
'ประกาศตัวแปร con4 มีข้อมูล
87<br />
49<br />
50<br />
51<br />
52<br />
53<br />
54<br />
55<br />
56<br />
57<br />
Next<br />
End If<br />
End Sub<br />
End Class<br />
con1(i).Text = k.Text<br />
con2(i).Text = k.Text<br />
con3(i).Text = con0(i).Text<br />
con4(i).Text = con0(i).Text<br />
Timer1.Enabled = False<br />
'นําข้อมูล k.text ส่งให้กับ con1(i)<br />
'นําข้อมูล k.text ส่งให้กับ con2(i)<br />
'นําข้อมูล con0(i) ส่งให้กับ con3(i)<br />
'นําข้อมูล con0(i) ส่งให้กับ con4(i)<br />
'วนลูปที ่ไปที ่ for จนสิ้นสุดเงื ่อนไข<br />
'ปิดการทํางาน Timer1<br />
'จบการทํางานของเงื ่อนไข<br />
'จบการทํางานของ Class เพื ่อทดสอบการทํางานของ Tab ที ่หนึ ่ง<br />
รูปที ่ 3.18 ตัวอย่างการคํานวณเพื ่อพิสูจน์คุณสมบัติ (kA) T = kA T<br />
5) ทดสอบการทํางานของโปรแกรมโดยการกดปุ่ม หรือกดปุ่ม ที ่คีย์บอร์ด จากนั้น<br />
ทําการป้อนข้อมูล k = 2 และเมทริกซ์ A เท่ากับ [1, 2; 3, 4] ตามรูปที ่ 3.18
88<br />
รูปที ่ 3.19 ฟอร์มของ Tab ที ่สอง สําหรับการพิสูจน์ (A+B) T = A T + B T<br />
3.3.2 การพิสูจน์คุณสมบัติ (A + B) T = A T + B T<br />
การพิสูจน์คุณสมบัติที ่สองนี้จะทําการออกแบบภายในฟอร์มเดียวกัน แต่เปลี ่ยนเป็นการใช้ Tab ที ่<br />
สอง (แบบที ่ 2) จากนั้นทําการออกแบบฟอร์มภายใน Tab ที ่สองตามรูปที ่ 3.19 จากนั้นทําตาม<br />
ขั้นตอนดังนี้<br />
1) กําหนดค่าคุณสมบัติของฟอร์มสําหรับ Tab ที ่สองในรูปที ่ 3.19 ตามตารางที ่ 3.6<br />
2) เนื ่องจากการเขียนโปรแกรม Tab ที ่หนึ ่ง (หัวข้อที ่ 3.3.1) ได้เรียกฟังก์ชัน FileSystemObject<br />
มาใช้งานแล้ว ดังนั้นจึงไม่จําเป็นต้องเรียกฟังก์ชันนี้ซํ้าอีกครั้ง
89<br />
ตารางที ่ 3.6 ค่าคุณสมบัติของฟอร์มสําหรับ Tab ที ่สองในรูปที ่ 3.19<br />
อ็อบเจกต์ / คอนโทรล คุณสมบัติ ค่าที ่กําหนด<br />
Form<br />
CommandButton2<br />
Textbox (A11) Input<br />
Textbox (A12) Input<br />
Textbox (A21) Input<br />
Textbox (A22) Input<br />
Textbox (B11) Input<br />
Textbox B12) Input<br />
Textbox (B21) Input<br />
Textbox (B22) Input<br />
Textbox (11) Output<br />
Textbox (12) Output<br />
Textbox (13) Output<br />
Textbox (14) Output<br />
Text<br />
StartPosition<br />
Name<br />
Text<br />
Name<br />
Text<br />
Name<br />
Text<br />
Name<br />
Text<br />
Name<br />
Text<br />
Name<br />
Text<br />
Name<br />
Text<br />
Name<br />
Text<br />
Name<br />
Text<br />
Name<br />
Text<br />
Name<br />
Text<br />
Name<br />
Text<br />
Name<br />
Text<br />
เมทริกซ์ขนาด 2 × 2 พิสูจน์คุณสมบัติ<br />
CenterScreen<br />
Button2<br />
คํานวณ<br />
at0<br />
N/A<br />
at1<br />
N/A<br />
at2<br />
N/A<br />
at3<br />
N/A<br />
bt0<br />
N/A<br />
bt1<br />
N/A<br />
bt2<br />
N/A<br />
bt3<br />
N/A<br />
ata0<br />
N/A<br />
ata1<br />
N/A<br />
bta0<br />
N/A<br />
bta1<br />
N/A
90<br />
อ็อบเจกต์ / คอนโทรล คุณสมบัติ ค่าที ่กําหนด<br />
Textbox (15) Output<br />
Textbox (16) Output<br />
Textbox (17) Output<br />
Textbox (18) Output<br />
Textbox (21) Output<br />
Textbox (22) Output<br />
Textbox (23) Output<br />
Textbox (24) Output<br />
Textbox (25) Output<br />
Textbox (26) Output<br />
Textbox (27) Output<br />
Textbox (28) Output<br />
Textbox C1(11) Output<br />
Textbox C1(12) Output<br />
Name<br />
Text<br />
Name<br />
Text<br />
Name<br />
Text<br />
Name<br />
Text<br />
Name<br />
Text<br />
Name<br />
Text<br />
Name<br />
Text<br />
Name<br />
Text<br />
Name<br />
Text<br />
Name<br />
Text<br />
Name<br />
Text<br />
Name<br />
Text<br />
Name<br />
Text<br />
Name<br />
Text<br />
atb0<br />
N/A<br />
atb1<br />
N/A<br />
btb0<br />
N/A<br />
btb1<br />
N/A<br />
ata2<br />
N/A<br />
ata3<br />
N/A<br />
bta2<br />
N/A<br />
bta3<br />
N/A<br />
atb2<br />
N/A<br />
atb3<br />
N/A<br />
btb2<br />
N/A<br />
btb3<br />
N/A<br />
tac0<br />
N/A<br />
tac1<br />
N/A<br />
Textbox C1(13) Output Name tac2
91<br />
อ็อบเจกต์ / คอนโทรล คุณสมบัติ ค่าที ่กําหนด<br />
Textbox C1(14) Output<br />
Textbox C2(11) Output<br />
Textbox C2(12) Output<br />
Textbox C2(13) Output<br />
Textbox C2(14) Output<br />
Text<br />
Name<br />
Text<br />
Name<br />
Text<br />
Name<br />
Text<br />
Name<br />
Text<br />
Name<br />
Text<br />
N/A<br />
tac3<br />
N/A<br />
tbc0<br />
N/A<br />
tbc1<br />
N/A<br />
tbc2<br />
N/A<br />
tbc3<br />
N/A<br />
Timer2<br />
Enabled<br />
False<br />
Interval 1000<br />
3) ดับเบิลคลิกที ่ฟอร์มหรือคลิกที ่ปุ่ม View Code<br />
ที ่หน้าต่างโซลูชัน แล้วเขียนโค้ดโปรแกรม<br />
โดยเขียนต่อจากบรรทัดที ่ 56 9 (จากโค้ดของฟอร์มสําหรับ Tab ที ่หนึ ่งในรูปที ่ 3.16) ดังนี้<br />
โค้ดของฟอร์มสําหรับ Tab ที ่สองในรูปที ่ 3.19<br />
57<br />
58<br />
59<br />
60<br />
61<br />
62<br />
63<br />
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)<br />
Handles Button2.Click<br />
w_file = fso.CreateTextFile("D:\temp2.sce")<br />
'สร้างไฟล์สคริปต์ชื ่อว่า temp2.sce<br />
w_file.WriteLine("A=[" & at0.Text & " " & at1.Text & ";" & at2.Text & " " &<br />
at3.Text & "];")<br />
'สร้างตัวแปรเมทริกซ์ A เท่ากับ at0.text - at3.text ตามลําดับ<br />
w_file.WriteLine("B=[" & bt0.Text & " " & bt1.Text & ";" & bt2.Text & " " &<br />
bt3.Text & "];")<br />
'สร้างตัวแปรเมทริกซ์ B เท่ากับ bt0.text - bt3.text ตามลําดับ<br />
w_file.WriteLine("output1=(A+B)';")<br />
w_file.WriteLine("output2=A'+B';")<br />
กับทรานส์โพสของ B<br />
'ให้ output1 มีค่าเท่ากับทรานส์โพสของ (A+B)<br />
'ให้ output2 มีค่าเท่ากับทรานส์โพสของ A บวก<br />
w_file.WriteLine("otext1=string(output1);") 'แปลง output1 เป็นสายอักขระเก็บใน otext1<br />
9 คําสั่ง End Class ที ่ใช้ในบรรทัดที ่ 57 ต้องตัดทิ้งก่อน เพื ่อใส่โค้ดของฟอร์มสําหรับ Tab ที ่สอง ในทางปฏิบัติฟอร์มหนึ ่ง<br />
ฟอร์มจะต้องมี Public Class และ End Class เพียงคู่เดียวเท่านั้น
92<br />
64<br />
65<br />
66<br />
67<br />
68<br />
69<br />
70<br />
71<br />
72<br />
73<br />
74<br />
75<br />
76<br />
77<br />
78<br />
79<br />
80<br />
81<br />
82<br />
83<br />
84<br />
85<br />
86<br />
87<br />
88<br />
89<br />
90<br />
91<br />
92<br />
93<br />
94<br />
95<br />
96<br />
97<br />
98<br />
99<br />
w_file.WriteLine("otext2=string(output2);") 'แปลง output2 เป็นสายอักขระเก็บใน otext2<br />
w_file.WriteLine("fid = mopen('D:\002.txt', 'w');")<br />
'สร้างไฟล์ผลลัพธ์ 002.txt<br />
w_file.WriteLine("mfprintf(fid,'%s\n',otext1(1));") 'นําข้อมูล output1(1) เขียนลง 002.txt<br />
w_file.WriteLine("mfprintf(fid,'%s\n',otext1(3));") 'นําข้อมูล output1(3) เขียนลง 002.txt<br />
w_file.WriteLine("mfprintf(fid,'%s\n',otext1(2));") 'นําข้อมูล output1(2) เขียนลง 002.txt<br />
w_file.WriteLine("mfprintf(fid,'%s\n',otext1(4));") 'นําข้อมูล output1(4) เขียนลง 002.txt<br />
w_file.WriteLine("mfprintf(fid,'%s\n',otext2(1));") 'นําข้อมูล output2(1) เขียนลง 002.txt<br />
w_file.WriteLine("mfprintf(fid,'%s\n',otext2(3));") 'นําข้อมูล output2(3) เขียนลง 002.txt<br />
w_file.WriteLine("mfprintf(fid,'%s\n',otext2(2));") 'นําข้อมูล output2(2) เขียนลง 002.txt<br />
w_file.WriteLine("mfprintf(fid,'%s\n',otext2(4));") 'นําข้อมูล output2(4) เขียนลง 002.txt<br />
w_file.WriteLine("mclose(fid);")<br />
w_file.WriteLine("exit")<br />
w_file.Close()<br />
'จบการเขียนข้อมูลลงไฟล์ 002.txt<br />
'ออกจากโปรแกรม SCILAB<br />
'จบการเขียนข้อมูลลงไฟล์สคริปต์<br />
Shell("C:\WINDOWS\scilab-4.1.2\bin\Scilex.exe -f D:\temp2.sce", vbHide)<br />
Timer2.Enabled = True<br />
End Sub<br />
'เปิดการทํางาน Timer2<br />
Private Sub Timer2_Tick(ByVal sender As System.Object, ByVal e As<br />
System.EventArgs) Handles Timer2.Tick<br />
If fso.FileExists("D:\002.txt") = True And Timer2.Interval = 1000 Then<br />
r_file = fso.OpenTextFile("D:\002.txt")<br />
Do Until r_file.AtEndOfStream<br />
Loop<br />
tac0.Text = r_file.ReadLine<br />
tac1.Text = r_file.ReadLine<br />
tac2.Text = r_file.ReadLine<br />
tac3.Text = r_file.ReadLine<br />
tbc0.Text = r_file.ReadLine<br />
tbc1.Text = r_file.ReadLine<br />
tbc2.Text = r_file.ReadLine<br />
tbc3.Text = r_file.ReadLine<br />
r_file.Close()<br />
Dim con0() As TextBox = {at0, at1, at2, at3}<br />
'เปิดไฟล์ 002.txt<br />
'ตรวจสอบเงื ่อนไข อ่านข้อมูลจาก 002.txt จบหรือไม่<br />
'นําข้อมูลที ่อ่านได้ใส่ลง tac0.text<br />
'นําข้อมูลที ่อ่านได้ใส่ลง tac1.text<br />
'นําข้อมูลที ่อ่านได้ใส่ลง tac2.text<br />
'นําข้อมูลที ่อ่านได้ใส่ลง tac3.text<br />
'นําข้อมูลที ่อ่านได้ใส่ลง tbc0.text<br />
'นําข้อมูลที ่อ่านได้ใส่ลง tbc1.text<br />
'นําข้อมูลที ่อ่านได้ใส่ลง tbc2.text<br />
'นําข้อมูลที ่อ่านได้ใส่ลง tbc3.text<br />
'วนลูปไปตรวจสอบเงื ่อนไข<br />
'จบการอ่านข้อมูล<br />
Dim con1() As TextBox = {bt0, bt1, bt2, bt3}<br />
Dim con2() As TextBox = {ata0, ata1, ata2, ata3}<br />
Dim con3() As TextBox = {atb0, atb1, atb2, atb3}<br />
Dim con4() As TextBox = {bta0, bta1, bta2, bta3}<br />
Dim con5() As TextBox = {btb0, btb1, btb2, btb3}
93<br />
100<br />
101<br />
102<br />
103<br />
104<br />
105<br />
106<br />
107<br />
108<br />
109<br />
For Me.i = 0 To 3 'ลูป i = 0 จนถึง i = 3<br />
Next<br />
End If<br />
End Sub<br />
End Class<br />
con2(i).Text = con0(i).Text<br />
con3(i).Text = con0(i).Text<br />
con4(i).Text = con1(i).Text<br />
con5(i).Text = con1(i).Text<br />
Timer2.Enabled = False<br />
'นําข้อมูล con0(i) ส่งให้กับ con2(i)<br />
'นําข้อมูล con0(i) ส่งให้กับ con3(i)<br />
'นําข้อมูล con1(i) ส่งให้กับ con4(i)<br />
'นําข้อมูล con1(i) ส่งให้กับ con5(i)<br />
'วนลูปที ่ไปที ่ for จนสิ้นสุดเงื ่อนไข<br />
'ปิดการทํางาน Timer2<br />
'จบทํางานเงื ่อนไข<br />
'จบการทํางานของ Class เพื ่อทดสอบการทํางานของ Tab ที ่หนึ ่งและสอง<br />
รูปที ่ 3.20 ตัวอย่างการคํานวณเพื ่อพิสูจน์คุณสมบัติ (A + B) T = A T + B T<br />
4) ทดสอบการทํางานของโปรแกรมโดยการกดปุ่ม หรือกดปุ่ม ที ่คีย์บอร์ด จากนั้น<br />
ป้อนค่าเมทริกซ์ A เท่ากับ [1, 2; 3, 4] และเมทริกซ์ B เท่ากับ [5, 6; 7, 8] และกดที ่ปุ่ม<br />
คํานวณก็จะได้ผลลัพธ์ตามรูปที ่ 3.20
94<br />
รูปที ่ 3.21 ฟอร์มของ Tab ที ่สาม สําหรับการพิสูจน์ (AB) T = B T A T<br />
3.3.3 การพิสูจน์คุณสมบัติ (AB) T = B T A T<br />
ในทํานองเดียวกันการพิสูจน์คุณสมบัติที ่สามจะออกแบบภายในฟอร์มเดียวกัน แต่เปลี ่ยนเป็นการ<br />
ใช้ Tab ที ่สาม (แบบที ่ 3) จากนั้นทําการออกแบบฟอร์มภายใน Tab ที ่สามตามรูปที ่ 3.21<br />
จากนั้นทําตามขั้นตอนดังนี้<br />
1) กําหนดค่าคุณสมบัติของฟอร์มสําหรับ Tab ที ่สามในรูปที ่ 3.21 ตามตารางที ่ 3.7<br />
2) เช่นเดียวกัน เนื ่องจากการเขียนโปรแกรม Tab ที ่หนึ ่ง (หัวข้อที ่ 3.3.1) ได้เรียกใช้งานฟังก์ชัน<br />
FileSystemObject แล้ว ดังนั้นจึงไม่จําเป็นต้องเรียกฟังก์ชันนี้ซํ้าอีกครั้ง
95<br />
ตารางที ่ 3.7 ค่าคุณสมบัติของฟอร์มสําหรับ Tab ที ่สามในรูปที ่ 3.21<br />
อ็อบเจกต์ / คอนโทรล คุณสมบัติ ค่าที ่กําหนด<br />
Form<br />
CommandButton3<br />
Textbox (A11) Input<br />
Textbox (A12) Input<br />
Textbox (A21) Input<br />
Textbox (A22) Input<br />
Textbox (B11) Input<br />
Textbox B12) Input<br />
Textbox (B21) Input<br />
Textbox (B22) Input<br />
Textbox (11) Output<br />
Textbox (12) Output<br />
Textbox (13) Output<br />
Textbox (14) Output<br />
Text<br />
StartPosition<br />
Name<br />
Text<br />
Name<br />
Text<br />
Name<br />
Text<br />
Name<br />
Text<br />
Name<br />
Text<br />
Name<br />
Text<br />
Name<br />
Text<br />
Name<br />
Text<br />
Name<br />
Text<br />
Name<br />
Text<br />
Name<br />
Text<br />
Name<br />
Text<br />
Name<br />
Text<br />
เมทริกซ์ขนาด 2 × 2 พิสูจน์คุณสมบัติ<br />
CenterScreen<br />
Button3<br />
คํานวณ<br />
au0<br />
N/A<br />
au1<br />
N/A<br />
au2<br />
N/A<br />
au3<br />
N/A<br />
bu0<br />
N/A<br />
bu1<br />
N/A<br />
bu2<br />
N/A<br />
bu3<br />
N/A<br />
aua0<br />
N/A<br />
aua1<br />
N/A<br />
bta0<br />
N/A<br />
bua1<br />
N/A
96<br />
อ็อบเจกต์ / คอนโทรล คุณสมบัติ ค่าที ่กําหนด<br />
Textbox (15) Output<br />
Textbox (16) Output<br />
Textbox (17) Output<br />
Textbox (18) Output<br />
Textbox (21) Output<br />
Textbox (22) Output<br />
Textbox (23) Output<br />
Textbox (24) Output<br />
Textbox (25) Output<br />
Textbox (26) Output<br />
Textbox (27) Output<br />
Textbox (28) Output<br />
Textbox C1(11) Output<br />
Textbox C1(12) Output<br />
Name<br />
Text<br />
Name<br />
Text<br />
Name<br />
Text<br />
Name<br />
Text<br />
Name<br />
Text<br />
Name<br />
Text<br />
Name<br />
Text<br />
Name<br />
Text<br />
Name<br />
Text<br />
Name<br />
Text<br />
Name<br />
Text<br />
Name<br />
Text<br />
Name<br />
Text<br />
Name<br />
Text<br />
aub0<br />
N/A<br />
aub1<br />
N/A<br />
bub0<br />
N/A<br />
bub1<br />
N/A<br />
aua2<br />
N/A<br />
aua3<br />
N/A<br />
bua2<br />
N/A<br />
bua3<br />
N/A<br />
aub2<br />
N/A<br />
aub3<br />
N/A<br />
bub2<br />
N/A<br />
bub3<br />
N/A<br />
uac0<br />
N/A<br />
uac1<br />
N/A<br />
Textbox C1(13) Output Name uac2
97<br />
อ็อบเจกต์ / คอนโทรล คุณสมบัติ ค่าที ่กําหนด<br />
Textbox C1(14) Output<br />
Textbox C2(11) Output<br />
Textbox C2(12) Output<br />
Textbox C2(13) Output<br />
Textbox C2(14) Output<br />
Text<br />
Name<br />
Text<br />
Name<br />
Text<br />
Name<br />
Text<br />
Name<br />
Text<br />
Name<br />
Text<br />
N/A<br />
uac3<br />
N/A<br />
ubc0<br />
N/A<br />
ubc1<br />
N/A<br />
ubc2<br />
N/A<br />
ubc3<br />
N/A<br />
Timer2<br />
Enabled<br />
False<br />
Interval 1000<br />
3) ดับเบิลคลิกที ่ฟอร์มหรือคลิกที ่ปุ่ม View Code<br />
ที ่หน้าต่างโซลูชัน แล้วเขียนโค้ดโปรแกรม<br />
โดยเขียนต่อจากบรรทัดที ่ 108 10 จากโค้ดของฟอร์มสําหรับ Tab ที ่สองในรูปที ่ 3.19 ดังนี้<br />
โค้ดของฟอร์มสําหรับ Tab ที ่สามในรูปที ่ 3.21<br />
109<br />
110<br />
111<br />
112<br />
113<br />
114<br />
115<br />
116<br />
Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)<br />
Handles Button3.Click<br />
w_file = fso.CreateTextFile("D:\temp3.sce")<br />
'สร้างไฟล์สคริปต์ชื ่อว่า temp3.sce<br />
w_file.WriteLine("A=[" & au0.Text & " " & au1.Text & ";" & au2.Text & " " &<br />
au3.Text & "];")<br />
'สร้างตัวแปรเมทริกซ์ A เท่ากับ au0.text - au3.text ตามลําดับ<br />
w_file.WriteLine("B=[" & bu0.Text & " " & bu1.Text & ";" & bu2.Text & " " &<br />
bu3.Text & "];")<br />
'สร้างตัวแปรเมทริกซ์ B เท่ากับ bu0.text - bu3.text ตามลําดับ<br />
w_file.WriteLine("output1=(A*B)';")<br />
w_file.WriteLine("output2=B'*A';")<br />
กับทรานส์โพสของ B<br />
'ให้ output1 เท่ากับ A คูณ B<br />
'ให้ output1 เท่ากับทรานส์โพสของ A คูณ<br />
w_file.WriteLine("otext1=string(output1);") 'แปลง output1 เป็นสายอักขระเก็บใน otext1<br />
w_file.WriteLine("otext2=string(output2);") 'แปลง output2 เป็นสายอักขระเก็บใน otext2<br />
10 ต้องตัดคําสั่ง End Class ที ่ใช้ในบรรทัดที ่ 109 ออกก่อน เพื ่อให้ฟอร์มที ่สร้างขึ้นมาสามารถใช้งาน Tab ทั้งสาม Tab ได้
98<br />
117<br />
118<br />
119<br />
120<br />
121<br />
122<br />
123<br />
124<br />
125<br />
126<br />
127<br />
128<br />
129<br />
130<br />
131<br />
132<br />
133<br />
134<br />
135<br />
136<br />
137<br />
138<br />
139<br />
140<br />
141<br />
142<br />
143<br />
144<br />
145<br />
146<br />
147<br />
148<br />
149<br />
150<br />
151<br />
w_file.WriteLine("fid = mopen('D:\003.txt', 'w');") 'สร้างไฟล์ผลลัพธ์ 003.txt<br />
w_file.WriteLine("mfprintf(fid,'%s\n',otext1(1));") 'นําข้อมูล output1(1) เขียนลง 003.txt<br />
w_file.WriteLine("mfprintf(fid,'%s\n',otext1(3));") 'นําข้อมูล output1(3) เขียนลง 003.txt<br />
w_file.WriteLine("mfprintf(fid,'%s\n',otext1(2));") 'นําข้อมูล output1(2) เขียนลง 003.txt<br />
w_file.WriteLine("mfprintf(fid,'%s\n',otext1(4));") 'นําข้อมูล output1(4) เขียนลง 003.txt<br />
w_file.WriteLine("mfprintf(fid,'%s\n',otext2(1));") 'นําข้อมูล output2(1) เขียนลง 003.txt<br />
w_file.WriteLine("mfprintf(fid,'%s\n',otext2(3));") 'นําข้อมูล output2(3) เขียนลง 003.txt<br />
w_file.WriteLine("mfprintf(fid,'%s\n',otext2(2));") 'นําข้อมูล output2(2) เขียนลง 003.txt<br />
w_file.WriteLine("mfprintf(fid,'%s\n',otext2(4));") 'นําข้อมูล output2(4) เขียนลง 003.txt<br />
w_file.WriteLine("mclose(fid);")<br />
w_file.WriteLine("exit")<br />
w_file.Close()<br />
'จบการเขียนข้อมูลลงไฟล์ 003.txt<br />
'ออกจากโปรแกรม SCILAB<br />
'จบการเขียนข้อมูลลงไฟล์สคริปต์<br />
Shell("C:\WINDOWS\scilab-4.1.2\bin\Scilex.exe -f D:\temp3.sce", vbHide)<br />
Timer3.Enabled = True<br />
End Sub<br />
'เปิดการทํางาน Timer3<br />
Private Sub Timer3_Tick(ByVal sender As System.Object, ByVal e As<br />
System.EventArgs) Handles Timer3.Tick<br />
If fso.FileExists("D:\003.txt") = True And Timer3.Interval = 1000 Then 'ตรวจสอบ<br />
เงื ่อนไขไฟล์ 003.txt มีอยู่จริงหรือไม่และหน่วงเวลาเท่ากับ 1 วินาที<br />
r_file = fso.OpenTextFile("D:\003.txt")<br />
Do Until r_file.AtEndOfStream<br />
Loop<br />
uac0.Text = r_file.ReadLine<br />
uac1.Text = r_file.ReadLine<br />
uac2.Text = r_file.ReadLine<br />
uac3.Text = r_file.ReadLine<br />
ubc0.Text = r_file.ReadLine<br />
ubc1.Text = r_file.ReadLine<br />
ubc2.Text = r_file.ReadLine<br />
ubc3.Text = r_file.ReadLine<br />
r_file.Close()<br />
'เปิดไฟล์ 003.txt<br />
'ตรวจสอบเงื ่อนไข อ่านข้อมูลจาก 003.txt จบหรือไม่<br />
'นําข้อมูลที ่อ่านได้ใส่ลง uac0.text<br />
'นําข้อมูลที ่อ่านได้ใส่ลง uac1.text<br />
'นําข้อมูลที ่อ่านได้ใส่ลง uac2.text<br />
'นําข้อมูลที ่อ่านได้ใส่ลง uac3.text<br />
'นําข้อมูลที ่อ่านได้ใส่ลง ubc0.text<br />
'นําข้อมูลที ่อ่านได้ใส่ลง ubc1.text<br />
'นําข้อมูลที ่อ่านได้ใส่ลง ubc2.text<br />
'นําข้อมูลที ่อ่านได้ใส่ลง ubc3.text<br />
'วนลูปไปตรวจสอบเงื ่อนไข<br />
'จบการอ่านข้อมูล<br />
Dim con0() As TextBox = {au0, au1, au2, au3}<br />
Dim con1() As TextBox = {bu0, bu1, bu2, bu3}<br />
Dim con2() As TextBox = {aua0, aua1, aua2, aua3}<br />
Dim con3() As TextBox = {aub0, aub1, aub2, aub3}<br />
Dim con4() As TextBox = {bua0, bua1, bua2, bua3}<br />
Dim con5() As TextBox = {bub0, bub1, bub2, bub3}
99<br />
152<br />
153<br />
154<br />
155<br />
156<br />
157<br />
158<br />
159<br />
160<br />
161<br />
For Me.i = 0 To 3 'ลูป i = 0 จนถึง i = 3<br />
Next<br />
End If<br />
End Sub<br />
End Class<br />
con2(i).Text = con0(i).Text<br />
con3(i).Text = con0(i).Text<br />
con4(i).Text = con1(i).Text<br />
con5(i).Text = con1(i).Text<br />
Timer3.Enabled = False<br />
'นําข้อมูล con0(i) ส่งให้กับ con2(i)<br />
'นําข้อมูล con0(i) ส่งให้กับ con3(i)<br />
'นําข้อมูล con1(i) ส่งให้กับ con4(i)<br />
'นําข้อมูล con1(i) ส่งให้กับ con5(i)<br />
'วนลูปที ่ไปที ่ for จนสิ้นสุดเงื ่อนไข<br />
'ปิดการทํางาน Timer3<br />
'จบทํางานเงื ่อนไข<br />
'จบการทํางานของ Class เพื ่อทดสอบการทํางานของ Tab ทั้งสาม Tab<br />
รูปที ่ 3.22 ตัวอย่างการคํานวณเพื ่อพิสูจน์คุณสมบัติ (AB) T = B T A T
100<br />
รูปที ่ 3.23 ฟอร์มสําหรับหาค่าลอการิทึมของ X ฐาน Base นั่นคือหาค่า log Base (X)<br />
4) ทดสอบการทํางานของโปรแกรมโดยการกดปุ่ม หรือกดปุ่ม ที ่คีย์บอร์ด จากนั้นป้อน<br />
ค่าเมทริกซ์ A เท่ากับ [1, 2; 3, 4] และเมทริกซ์ B เท่ากับ [5, 6; 7, 8] และกดที ่ปุ่มคํานวณ<br />
ก็จะได้ผลลัพธ์ตามรูปที ่ 3.22<br />
3.4 การหาค่าลอการิทึมฐานใดๆ<br />
ในส่วนนี้จะแสดงการใช้โปรแกรม VB 2010 Express เพื ่อสร้างหน้าต่างส่วนต่อประสานสําหรับ<br />
ใช้หาค่าลอการิทึมฐานใดๆ ดังต่อไปนี้<br />
1) เปิดโปรแกรม VB 2010 Express แล้วสร้างโปรเจ็กต์แบบ Windows Forms Application<br />
จากนั้นออกแบบหน้าฟอร์มตามรูปที ่ 3.23<br />
2) กําหนดค่าคุณสมบัติของฟอร์มในรูปที ่ 3.23 ตามตารางที ่ 3.8<br />
3) เรียกฟังก์ชัน FileSystemObject มาใช้งานโดยเลือกที ่เมนู Project → Add Reference…<br />
→ Microsoft Scripting Runtime และกดปุ่ม OK (ตามรูปที ่ 2.11 และ 2.12)<br />
4) ดับเบิลคลิกที ่ฟอร์มหรือคลิกที ่ปุ่ม View Code<br />
ดังนี้<br />
ที ่หน้าต่างโซลูชัน แล้วเขียนโค้ดโปรแกรม
101<br />
ตารางที ่ 3.8 ค่าคุณสมบัติของฟอร์มในรูปที ่ 3.23<br />
อ็อบเจกต์ / คอนโทรล คุณสมบัติ ค่าที ่กําหนด<br />
Form<br />
CommandButton1<br />
Textbox (X) Input<br />
Textbox (Base) Input<br />
Textbox (log) output<br />
Timer1<br />
Text<br />
การหาผลลัพธ์ของ Log ฐานใด ๆ<br />
StartPosition CenterScreen<br />
Name<br />
Button1<br />
Text<br />
คํานวณ<br />
Name<br />
TextBox1<br />
Text<br />
N/A<br />
Name<br />
TextBox2<br />
Text<br />
N/A<br />
Name<br />
TextBox3<br />
Text<br />
N/A<br />
Enabled<br />
False<br />
Interval 1000<br />
โค้ดของฟอร์มในรูปที ่ 3.23<br />
1<br />
2<br />
3<br />
4<br />
5<br />
6<br />
7<br />
8<br />
9<br />
10*<br />
11<br />
12<br />
13<br />
14<br />
15<br />
16<br />
17<br />
18<br />
19<br />
Public Class Form1<br />
Public fso As New Scripting.FileSystemObject<br />
Public w_file As Scripting.TextStream<br />
Public r_file As Scripting.TextStream<br />
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As<br />
System.EventArgs) Handles Button1.Click<br />
TextBox3.Text = ""<br />
w_file = fso.CreateTextFile("D:\temp.sce")<br />
'ลบข้อมูลใน textbox3.text<br />
'สร้างไฟล์สคริปต์ชื ่อว่า temp.sce<br />
w_file.WriteLine("x=" & TextBox1.Text & ";") 'สร้างตัวแปร x เท่ากับ Textbox1.text<br />
w_file.WriteLine("Base=" & TextBox2.Text & ";")<br />
w_file.WriteLine("exec('D:\logXN.sci');")<br />
w_file.WriteLine("output=logXN(x, Base);")<br />
w_file.WriteLine("otext=string(output);")<br />
'เรียกใช้งานฟังก์ชัน logXN.sci<br />
'หาค่า Log(X) ฐาน Base<br />
'แปลง output เป็นสายอักขระเก็บใน otext<br />
w_file.WriteLine("fid = mopen('D:\001.txt', 'w');") 'สร้างไฟล์ผลลัพธ์ 001.txt<br />
w_file.WriteLine("mfprintf(fid,'%s\n',otext);")<br />
w_file.WriteLine("mclose(fid);")<br />
w_file.WriteLine("exit")<br />
w_file.Close()<br />
'นําข้อมูล otext เขียนลงในไฟล์ 001.txt<br />
'จบการเขียนข้อมูลลงไฟล์ 001.txt<br />
'ออกจากโปรแกรม SCILAB<br />
'จบการเขียนข้อมูลลงไฟล์สคริปต์<br />
Shell("C:\WINDOWS\scilab-4.1.2\bin\Scilex.exe -f D:\temp.sce", vbHide)<br />
Timer1.Enabled = True<br />
'เปิดการทํางาน Timer1
102<br />
20<br />
21<br />
22<br />
23<br />
24<br />
25<br />
26<br />
27<br />
28<br />
29<br />
30<br />
31<br />
End Sub<br />
Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As<br />
System.EventArgs) Handles Timer1.Tick<br />
If fso.FileExists("D:\001.txt") = True And Timer1.Interval = 1000 Then<br />
r_file = fso.OpenTextFile("D:\001.txt")<br />
Do Until r_file.AtEndOfStream<br />
Loop<br />
End If<br />
End Sub<br />
End Class<br />
'เปิดไฟล์ 001.txt<br />
'ตรวจสอบเงื ่อนไข อ่านข้อมูลจาก 001.txt จบหรือไม่<br />
TextBox3.Text = Val(r_file.ReadLine) 'นําข้อมูลที ่อ่านได้ใส่ลง textbox3.text<br />
r_file.Close()<br />
Timer1.Enabled = False<br />
'วนลูปไปตรวจสอบเงื ่อนไข<br />
'จบการอ่านข้อมูล<br />
'ปิดการทํางาน Timer1<br />
'จบทํางานเงื ่อนไข<br />
รูปที ่ 3.24 ตัวอย่างการหาค่าลอการิทึมของ 8 ฐาน 2 ซึ ่งมีค่าเท่ากับ 3 นั่นคือ log 2 (8) = 3<br />
หมายเหตุ ในบรรทัดที ่ 10 จะเป็นการเรียกฟังก์ชัน logXN.sci ในสารบบ D:\ ที ่ผู้ใช้สร้าง<br />
ขึ้นมาตามข้อกําหนดของโปรแกรม SCILAB ดังนี้<br />
1<br />
2<br />
3<br />
function y = logXN(x, N)<br />
y = log(x)/log(N);<br />
endfunction<br />
5) ทดสอบการทํางานของโปรแกรมโดยการกดปุ่ม หรือกดปุ่ม ที ่คีย์บอร์ด จากนั้น<br />
ป้อนข้อมูลดังนี้ ให้ X มีค่าเท่ากับ 8 และ Base มีค่าเท่ากับ 2 แล้วกดปุ่ม “คํานวณ” หนึ ่ง<br />
ครั้งก็จะได้ผลลัพธ์ตามรูปที ่ 3.24
103<br />
รูปที ่ 3.25 ฟอร์มสําหรับการบวกและลบสมการหหุนาม<br />
3.5 การบวกและลบสมการพหุนาม<br />
ในส่วนนี้จะแสดงการใช้โปรแกรม VB 2010 Express เพื ่อสร้างหน้าต่างส่วนต่อประสานสําหรับ<br />
ใช้บวกและลบสมการพหุนาม ดังต่อไปนี้<br />
1) เปิดโปรแกรม VB 2010 Express แล้วสร้างโปรเจ็กต์แบบ Windows Forms Application<br />
จากนั้นออกแบบหน้าฟอร์มตามรูปที ่ 3.25<br />
2) กําหนดค่าคุณสมบัติของฟอร์มในรูปที ่ 3.25 ตามตารางที ่ 3.9<br />
3) เรียกฟังก์ชัน FileSystemObject มาใช้งานโดยเลือกที ่เมนู Project → Add Reference…<br />
→ Microsoft Scripting Runtime และกดปุ่ม OK (ตามรูปที ่ 2.11 และ 2.12)<br />
4) ดับเบิลคลิกที ่ฟอร์มหรือคลิกที ่ปุ่ม View Code<br />
ดังนี้<br />
ที ่หน้าต่างโซลูชัน แล้วเขียนโค้ดโปรแกรม
104<br />
ตารางที ่ 3.9 ค่าคุณสมบัติของฟอร์มในรูปที ่ 3.25<br />
อ็อบเจกต์ / คอนโทรล คุณสมบัติ ค่าที ่กําหนด<br />
Form<br />
CommandButton1<br />
Textbox p(x) Input<br />
Textbox q(x) Input<br />
WebBrowser1 output<br />
Text<br />
StartPosition<br />
Name<br />
Text<br />
Name<br />
Text<br />
Name<br />
Text<br />
Name<br />
ScrollBarsEnabled<br />
การบวก ลบสมการหหุนามด้วย SCILAB<br />
CenterScreen<br />
Button1<br />
คํานวณ<br />
TextBox1<br />
N/A<br />
TextBox2<br />
N/A<br />
WebBrowser1<br />
False<br />
Timer1<br />
Enabled<br />
False<br />
Interval 1000<br />
โค้ดของฟอร์มในรูปที ่ 3.25<br />
1<br />
2<br />
3<br />
4<br />
5<br />
6<br />
7<br />
8<br />
9<br />
10<br />
11*<br />
12*<br />
13*<br />
14<br />
15<br />
16<br />
17<br />
Public Class Form1<br />
Public fso As New Scripting.FileSystemObject<br />
Public w_file As Scripting.TextStream<br />
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As<br />
System.EventArgs) Handles Button1.Click<br />
w_file = fso.CreateTextFile("D:\temp.sce")<br />
w_file.WriteLine("x=poly(0,'x');")<br />
'สร้างไฟล์สคริปต์ชื ่อว่า temp.sce<br />
'สร้างตัวแปร x เป็นตัวแปรพหุนาม<br />
w_file.WriteLine("p=" & TextBox1.Text & ";") 'สร้างตัวแปร p เท่ากับ TextBox1.text<br />
w_file.WriteLine("q=" & TextBox2.Text & ";") 'สร้างตัวแปร q เท่ากับ TextBox2.text<br />
w_file.WriteLine("pq1=p+q;")<br />
w_file.WriteLine("pq2=p-q;")<br />
'ให้ pq1 มีค่าเท่ากับ p บวก q<br />
'ให้ pq2 มีค่าเท่ากับ p ลบ q<br />
w_file.WriteLine("exec('D:\pohtml01.sci',-1);") 'เรียกใช้ฟังก์ชัน pohtml01.sci<br />
w_file.WriteLine("exec('D:\pohtml02.sci',-1);") 'เรียกใช้ฟังก์ชัน pohtml02.sci<br />
w_file.WriteLine("exec('D:\pohtml03.sci',-1);") 'เรียกใช้ฟังก์ชัน pohtml03.sci<br />
w_file.WriteLine("p1 = pol2tex(p)")<br />
w_file.WriteLine("q1 = pol2tex(q)")<br />
'แปลงข้อมูล p เป็น LaTeX และให้เท่ากับ p1<br />
'แปลงข้อมูล p เป็น LaTeX และให้เท่ากับ q1<br />
w_file.WriteLine("pl1 = pol2tex(pq1)") 'แปลงข้อมูล pq1 เป็น LaTeX และให้เท่ากับ pl1<br />
w_file.WriteLine("pl2 = pol2tex(pq2)") 'แปลงข้อมูล pq2 เป็น LaTeX และให้เท่ากับ p12
105<br />
18<br />
19<br />
20<br />
21<br />
22<br />
23<br />
24<br />
25<br />
26<br />
27<br />
28<br />
29<br />
30<br />
31<br />
32<br />
33<br />
pohtml01<br />
w_file.WriteLine("pohtml01('D:\001.html');")<br />
w_file.WriteLine("pohtml02('D:\001.html',pl1,'p + q');")<br />
ด้วยฟังก์ชัน pohtml02<br />
w_file.WriteLine("pohtml02('D:\001.html',pl2,'p - q');")<br />
ด้วยฟังก์ชัน pohtml02<br />
pohtml03<br />
w_file.WriteLine("pohtml03('D:\001.html');")<br />
w_file.WriteLine("exit")<br />
w_file.Close()<br />
'กําหนดชื ่อไฟล์ D:\001.html ด้วยฟังก์ชัน<br />
'กําหนดเขียน p + q = pl1<br />
'กําหนดเขียน p - q = pl2<br />
'จบไฟล์ D:\001.html ด้วยฟังก์ชัน<br />
'ออกจากโปรแกรม SCILAB<br />
'จบการเขียนข้อมูลลงไฟล์สคริปต์<br />
Shell("C:\WINDOWS\scilab-4.1.2\bin\Scilex.exe -f D:\temp.sce", vbHide)<br />
Timer1.Enabled = True<br />
End Sub<br />
'เปิดการทํางาน Timer1<br />
Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As<br />
System.EventArgs) Handles Timer1.Tick<br />
If fso.FileExists("D:\001.html") = True And Timer1.Interval = 1000 Then<br />
End If<br />
End Sub<br />
End Class<br />
WebBrowser1.Navigate("D:\001.html")<br />
Timer1.Enabled = False<br />
'อ่านไฟล์ 001.html<br />
'ปิดการทํางาน Timer1<br />
'จบทํางานของเงื ่อนไข<br />
หมายเหตุ ในบรรทัดที ่ 11 – 13 มีการเรียกฟังก์ชัน pohtml01.sci, pohtml02.sci<br />
และ pohtml03.sci ในสารบบ D:\ ที ่ผู้ใช้สร้างขึ้นมาตามข้อกําหนดของโปรแกรม SCILAB<br />
ดังนี้<br />
1<br />
2<br />
3<br />
4<br />
5<br />
6<br />
7<br />
8<br />
9<br />
10<br />
function [] = pohtml01(ftext)<br />
fid = mopen(ftext, 'w');<br />
mfprintf(fid, "\n\n");<br />
mfprintf(fid, "\n");<br />
mfprintf(fid, "\n");<br />
mfprintf(fid, "\n");<br />
mfprintf(fid, "body {\n");<br />
mfprintf(fid, "margin-left: 0px;\n");<br />
mfprintf(fid, "margin-top: 0px;\n");
106<br />
11<br />
12<br />
13<br />
14<br />
15<br />
16<br />
17<br />
mfprintf(fid, "margin-right: 0px;\n");<br />
mfprintf(fid, "margin-bottom: 0px;\n");<br />
mfprintf(fid, "}\n");<br />
mfprintf(fid, "\n");<br />
mfprintf(fid, "\n");<br />
mclose(fid);<br />
endfunction<br />
1<br />
2<br />
3<br />
4<br />
5<br />
6<br />
7<br />
8<br />
9<br />
10<br />
11<br />
12<br />
13<br />
14<br />
15<br />
16<br />
17<br />
18<br />
19<br />
function [] = pohtml02(ftext,stext,stype)<br />
fid = mopen(ftext, 'a');<br />
mfprintf(fid," %s = ",stype);<br />
mfprintf(fid," ");<br />
Lstext = length(stext);<br />
for i = 1:Lstext<br />
L2stext = part(stext,i)<br />
if L2stext =="^" then<br />
elseif L2stext =="{" then<br />
mfprintf(fid,"");<br />
elseif L2stext =="}" then<br />
mfprintf(fid,"");<br />
elseif L2stext "\" & L2stext "*" then<br />
mfprintf(fid,"%s",L2stext);<br />
end<br />
end<br />
mfprintf(fid,"\n");<br />
mclose(fid);<br />
endfunction<br />
1<br />
2<br />
3<br />
4<br />
5<br />
function [] = pohtml03(ftext)<br />
fid = mopen(ftext, 'a');<br />
mfprintf(fid,"\n");<br />
mfprintf(fid,"\n");<br />
mclose(fid);<br />
endfunction
107<br />
รูปที ่ 3.26 ตัวอย่างการบวกและลบสมการหหุนาม<br />
5) ทดสอบการทํางานของโปรแกรมโดยการกดปุ่ม หรือกดปุ่ม ที ่คีย์บอร์ด จากนั้นป้อน<br />
ข้อมูลที ่อยู่ในรูปของ LaTeX ดังนี้ p(x) เท่ากับเลข x^2 + 50 และ q(x) เท่ากับ x^2 + 25<br />
แล้วกดปุ่ม “คํานวณ” หนึ ่งครั้งก็จะได้ผลลัพธ์ตามรูปที ่ 3.26<br />
3.6 การวาดกราฟสองมิติ<br />
ในส่วนนี้จะแสดงการใช้โปรแกรม VB 2010 Express เพื ่อสร้างหน้าต่างส่วนต่อประสานสําหรับ<br />
ใช้วาดกราฟสองมิติของสมการ y(x) นั่นคือสมการ y ที ่เป็นฟังก์ชันของตัวแปร x ดังนี้<br />
1) เปิดโปรแกรม VB 2010 Express แล้วสร้างโปรเจ็กต์แบบ Windows Forms Application<br />
จากนั้นออกแบบหน้าฟอร์มตามรูปที ่ 3.27<br />
2) กําหนดค่าคุณสมบัติของฟอร์มในรูปที ่ 3.27 ตามตารางที ่ 3.10<br />
3) เรียกฟังก์ชัน FileSystemObject มาใช้งานโดยเลือกที ่เมนู Project → Add Reference…<br />
→ Microsoft Scripting Runtime และกดปุ่ม OK (ตามรูปที ่ 2.11 และ 2.12)<br />
4) ดับเบิลคลิกที ่ฟอร์มหรือคลิกที ่ปุ่ม View Code<br />
ดังนี้<br />
ที ่หน้าต่างโซลูชัน แล้วเขียนโค้ดโปรแกรม
108<br />
ส่วนที ่เป็นเอาต์พุต<br />
(แสดงกราฟ)<br />
ส่วนที ่เป็นอินพุต (ป้อนสมการ y<br />
และช่วงของค่า x ที ่ต้องการวาดกราฟ)<br />
รูปที ่ 3.27 ฟอร์มสําหรับวาดกราฟสองมิติ<br />
ตารางที ่ 3.10 ค่าคุณสมบัติของฟอร์มในรูปที ่ 3.27<br />
อ็อบเจกต์ / คอนโทรล คุณสมบัติ ค่าที ่กําหนด<br />
Form<br />
CommandButton1<br />
Textbox1(x) ค่าเริ ่มต้น<br />
Textbox2 (x) ค่าระหว่างขั้น<br />
Textbox3(x) ค่าสุดท้าย<br />
Textbox4 (y)<br />
PictureBox1 output<br />
Timer1<br />
Text<br />
การวาดกราฟ 2 มิติ<br />
StartPosition CenterScreen<br />
TopMost<br />
True<br />
WindowState Maximized<br />
Name<br />
Button1<br />
Text<br />
คํานวณ<br />
Name<br />
TextBox1<br />
Text<br />
N/A<br />
Name<br />
TextBox2<br />
Text<br />
N/A<br />
Name<br />
TextBox3<br />
Text<br />
N/A<br />
Name<br />
TextBox4<br />
Text<br />
N/A<br />
Name<br />
PictureBox1<br />
BoderStyle<br />
FixedSingle<br />
Size 610, 461<br />
Enabled<br />
False<br />
Interval 1000
109<br />
โค้ดของฟอร์มในรูปที ่ 3.27<br />
1<br />
2<br />
3<br />
4<br />
5<br />
6<br />
7<br />
8<br />
9<br />
10<br />
11<br />
12<br />
13<br />
14<br />
15<br />
16<br />
17<br />
18<br />
19<br />
20<br />
21<br />
22<br />
Public Class Form1<br />
Public fso As New Scripting.FileSystemObject<br />
Public w_file As Scripting.TextStream<br />
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As<br />
System.EventArgs) Handles Button1.Click<br />
& ";")<br />
PictureBox1.Refresh()<br />
w_file = fso.CreateTextFile("D:\temp.sce")<br />
'รีเฟรช PictureBox1<br />
'สร้างไฟล์สคริปต์ชื ่อว่า temp.sce<br />
w_file.WriteLine("x=" & TextBox1.Text & ":" & TextBox2.Text & ":" & TextBox3.Text<br />
เท่ากับ TextBox2<br />
'สร้างตัวแปร x มีค่าเท่ากับค่าระหว่าง TextBox1 ถึง TexBox3 โดยมีค่าระยะห่างคงที ่<br />
w_file.WriteLine("y=" & TextBox4.Text & ";") 'สร้างตัวแปร y เท่ากับ TextBox4<br />
w_file.WriteLine("plot(x,y)" & ";")<br />
w_file.WriteLine("xs2gif(0,'D:\001.gif');")<br />
w_file.WriteLine("exit")<br />
w_file.Close()<br />
'วาดกราฟ 2 มิติจากค่า X และ y<br />
'บันทึกกราฟเป็นรูปรูปเก็บไว้ที ่ D:\001.gif<br />
'ออกจากโปรแกรม SCILAB<br />
'จบการเขียนข้อมูลลงไฟล์สคริปต์<br />
Shell("C:\WINDOWS\scilab-4.1.2\bin\Scilex.exe -f D:\temp.sce", vbHide)<br />
Timer1.Enabled = True<br />
End Sub<br />
'เปิดการทํางาน Timer1<br />
Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As<br />
System.EventArgs) Handles Timer1.Tick<br />
If fso.FileExists("D:\001.gif") = True And Timer1.Interval = 1000 Then<br />
End If<br />
End Sub<br />
End Class<br />
PictureBox1.ImageLocation = "D:\001.gif" 'อ่านไฟล์ 001.gif แสดง PictureBox1<br />
Timer1.Enabled = False<br />
'ปิดการทํางาน Timer1<br />
'จบการทํางานของเงื ่อนไข<br />
6) ทดสอบการทํางานของโปรแกรมโดยการกดปุ่ม หรือกดปุ่ม ที ่คีย์บอร์ด จากนั้น<br />
ทําการวาดกราฟสองมิติ เช่น ถ้าต้องการวาดรูปสัญญาณ y = sin(2πfx) เมื ่อความถี ่ f = 1<br />
เฮิรตซ์ ก็ให้ป้อนข้อมูลของอินพุต x = 0 : 0.01 : 2 และ y = sin(2*%pi*1*x) ตามรูปที ่<br />
3.28 (เมื ่อ %pi ≈ 22/7 คือค่า π) แล้วกดปุ่ม “คํานวณ” หนึ ่งครั้ง จะได้ผลลัพธ์ตามรูปที ่ 3.28
110<br />
อินพุต<br />
เอาต์พุต<br />
รูปที ่ 3.28 ตัวอย่างการวาดกราฟสองมิติของสมการ y = sin(2*%pi*1*x)<br />
3.7 สรุปท้ายบท<br />
บทนี้ได้ยกตัวอย่างการสร้างสื ่อการสอนด้วยโปรแกรม Visual Basic ร่วมกับ SCILAB เพื ่อเป็น<br />
แนวทางให้ผู้อ่านสามารถนําไปพัฒนาต่อยอดหรือประยุกต์ใช้งานในด้านอื ่นๆ ได้ ซึ ่งประกอบด้วย<br />
การบวก/ลบ/คูณ/หาร ของเลขสองจํานวน การหาดีเทอร์มิแนนต์และอินเวอร์สของเมทริกซ์ การ<br />
พิสูจน์คุณสมบัติของเมทริกซ์ การหาค่าลอการิทึมฐานใดๆ การบวกและลบสมการพหุนาม และ<br />
การวาดกราฟสองมิติ<br />
3.8 แบบฝึกหัดท้ายบท<br />
1. จงเขียนโปรแกรมหาค่าตัวคูณร่วมน้อย (ครน.) จํานวน 3 ค่า<br />
2. จงเขียนโปรแกรมแก้สมการพหุนามที ่เป็นฟังก์ชันของตัวแปรเดียว<br />
3. จงเขียนโปรแกรมสําหรับวาดกราฟ 2 มิติ ดังรูปที ่ 1.5 (คําสั่ง polarplot)<br />
4. จงเขียนโปรแกรมสําหรับวาดกราฟ 3 มิติ ดังรูปที ่ 1.6 (คําสั่ง plot3d)
111<br />
บทที ่ 4<br />
ความรู้เบื ้องต้นเกี ่ยวกับภาษา PHP<br />
บทนี้จะกล่าวถึงประวัติความเป็นมาของภาษา PHP [8 – 10] โครงสร้างทั่วไป คําสั่งพื ้นฐานของ<br />
ภาษา PHP และการจัดการไฟล์ สําหรับการนําไปประยุกต์ใช้งานร่วมกับโปรแกรม SCILAB<br />
4.1 ประวัติความเป็นมาของ PHP<br />
PHP ย่อมาจาก “PHP Hypertext Preprocessor” (เดิมย่อมาจาก Personal Home Page) โดย<br />
คําสั่งของ PHP จะอยู่ในไฟล์ที ่เรียกว่าสคริปต์ (script) ในทางปฏิบัติ PHP ถือเป็นภาษาสคริปต์<br />
ฝั่งแม่ข่าย (server-side scripting language) ซึ ่งหมายถึงการประมวลผลจะเกิดขึ้นบนเครื ่องแม่ข่าย<br />
(server) แล้วส่งผลลัพธ์ที ่ได้มายังเครื ่องลูกข่าย (client) โดยทั่วไปการเขียน PHP จะแทรกอยู่ใน<br />
เอกสาร HTML (HyperText Markup Language) ด้วยการเปิดป้ายระบุ (tag) หรือใช้ป้ายระบุ ก็ได้เช่นกัน ดังนั้นภาษา PHP จึงเป็นที ่นิยมนํามาใช้เขียน<br />
เว็บแอพลิเคชัน (web application) ที ่สามารถทํางานโต้ตอบกับผู้ใช้งานได้ และเป็นโอเพ่นซอร์ส<br />
(open source) ซึ ่งผู้ใช้สามารถนํามาใช้งานได้ฟรี เพราะฉะนั้นภาษา PHP จึงได้รับการพัฒนาไป<br />
อย่างรวดเร็วและเป็นที ่นิยมใช้งานอย่างแพร่หลาย<br />
4.2 การเตรียมตัวก่อนเขียนเว็บไซต์ด้วยภาษา PHP<br />
ในส่วนนี้จะอธิบายการติดตั้งโปรแกรม AppServ และ Adobe Dreamweaver CS5.5 ที่จําเป็น<br />
สําหรับการเขียนโปรแกรมเว็บไซต์ภาษา PHP ร่วมกับ SCILAB<br />
4.2.1 การติดตั้งโปรแกรม AppServ<br />
หนังสือเล่มนี้จะใช้โปรแกรม AppServ ซึ ่งเป็นชุดติดตั้งที ่รวมซอฟต์แวร์ฟรีหลายๆ อย่างมารวมกัน<br />
โดยมีโปรแกรมสําเร็จ (package) คือ Apache, PHP, MySQL และ phpMyAdmin ผู้ใช้สามารถ
112<br />
รูปที ่ 4.1 ตัวอย่างการติดตั้งโปรแกรม AppServ 2.5.10<br />
รูปที ่ 4.2 การจัดเก็บไฟล์และสารบบของโปรแกรม AppServ<br />
ดาวน์โหลดได้ที ่เว็บไซต์ www.appservnetwork.com โดยหนังสือเล่มนี้ได้ใช้ AppServ เวอร์ชัน<br />
2.5.10 ตามรูปที ่ 4.1 ซึ ่งสามารถติดตั้งโปรแกรมได้ตามปกติ (ผู้สนใจศึกษารายละเอียดการติดตั้ง<br />
โปรแกรมเพิ ่มเติมได้จากเว็บไซต์ www.appservnetwork.com)
113<br />
นอกจากนี้การจัดเก็บไฟล์ PHP จะต้องจัดเก็บไว้ใน Document Root ที ่ผู้ใช้กําหนดดัง<br />
แสดงในรูปที ่ 4.2 สําหรับค่าโดยปริยาย (default) ของ AppServ คือ C:\AppServ\www\ ซึ ่งเป็น<br />
สิ ่งสําคัญมากและมีผลต่อการประมวลผลไฟล์ PHP ถ้าไม่จัดเก็บไฟล์ไว้ใน Document Root ก็จะ<br />
ไม่สามารถประมวลผลไฟล์ PHP ได้ เนื ่องจาก PHP จะประมวลผลบนเครื ่องแม่ข่ายเท่านั้น ดังนั้น<br />
ในการเขียนโปรแกรม PHP ร่วมกับโปรแกรม SCILAB ไฟล์ต่างๆ ที ่พัฒนาขึ้นมาจะต้องเก็บไว้ที ่<br />
สารบบ www นี้เท่านั้น<br />
หมายเหตุ สําหรับการเขียนภาษา PHP ไฟล์ที ่ได้จะถูกเก็บไว้ในเครื ่องแม่ข่ายจําลองด้วยโปรแกรม<br />
AppServ นี้ การตั้งหน้าเริ ่มต้นจะต้องตั้งชื ่อไฟล์ว่า index.php (หรือ index.html) เพื ่อที ่จะชี้ไปยัง<br />
หน้าแรกของเว็บไซต์ได้อย่างถูกต้อง<br />
4.2.2 การติดตั้งโปรแกรม Adobe Dreamweaver CS5.5<br />
หนังสือเล่มนี้จะใช้โปรแกรม Adobe Dreamweaver CS5.5 เพื ่อช่วยในการออกแบบและเขียนหน้า<br />
เว็บเพจ (web page) ซึ ่งเป็นโปรแกรมที ่มีลิขสิทธิ์ซอฟต์แวร์ อย่างไรก็ตามในที ่นี้จะยกตัวอย่างการ<br />
ติดตั้งโปรแกรม Adobe Dreamweaver CS5.5 แบบ 30 วัน (เวอร์ชันทดลองใช้งาน) ซึ ่งสามารถ<br />
ดาวน์โหลดมาทดลองใช้งานได้ฟรี (trail version) โดยมีขั้นตอนดังนี้<br />
1) ดาวน์โหลดโปรแกรมได้ที ่เว็บไซต์<br />
http://home.npru.ac.th/piya/webscilab/book2/program/DreamweaverCS5.5.exe.rar<br />
หมายเหตุ ผู้ใช้สามารถเข้าไปดาวน์โหลดโปรแกรม Adobe Dreamweaver เวอร์ชันใหม่ ได้ที ่<br />
เว็บไซด์ http://www.adobe.com/sea/downloads/<br />
2) ทําการ Extract ไฟล์โปรแกรม Adobe Dreamweaver CS5.5 และคลิกที ่ปุ่ม Next ตามรูปที ่<br />
4.3(ก) ก็จะได้หน้าต่างในรูปที ่ 4.3(ข) จากนั้นกดปุ่ม ACCEPT เพื ่อยอมรับเงื ่อนไขลิขสิทธิ์<br />
ของโปรแกรม ก็จะได้หน้าต่างในรูปที ่ 4.3 (ค)<br />
3) เลือกรายการ “Install this product as a trial.” ตามรูปที ่ 4.3 (ค) เพื ่อใช้งานแบบ 30 วัน<br />
และกดปุ่ม Next ก็จะได้หน้าต่างในรูปที ่ 4.3 (ง) เพื ่อทําการเลือกที ่อยู่สําหรับติดตั้งโปรแกรม<br />
และกดปุ่ม INSTALL ตามรูปที ่ 4.3 (ง) เพื ่อเริ ่มติดตั้งโปรแกรม<br />
4) เมื ่อระบบติดตั้งโปรแกรมเสร็จ ก็จะแสดงหน้าต่าง “Thank You” ตามรูปที ่ 4.3 (จ) จากนั้น<br />
ให้กดปุ่ม DONE ก็จะได้หน้าต่างในรูปที ่ 4.3 (ฉ) ซึ ่งเตือนว่าสามารถใช้งานได้อย่างถูกต้อง<br />
ภายใน 30 วัน<br />
5) กดปุ่ม START TRIAL ในรูปที ่ 4.3 (ฉ) เพื ่อทดสอบการใช้งานโปรแกรม Adobe Dreamweaver<br />
CS5.5 ก็จะได้หน้าต่างเริ ่มต้นใช้งานโปรแกรมนี้ตามรูปที ่ 4.4
114<br />
(ก)<br />
(ข)<br />
(ค)<br />
(ง)<br />
(จ)<br />
(ฉ)<br />
รูปที ่ 4.3 ขั้นตอนการติดตั้งโปรแกรม Adobe Dreamweaver CS5.5
115<br />
รูปที ่ 4.4 หน้าต่างเริ ่มต้นใช้งานโปรแกรม Adobe Dreamweaver CS5.5<br />
4.2.3 แนวทางการเขียนโปรแกรมเว็บไซต์ภาษา PHP ร่วมกับ SCILAB<br />
การสร้างเว็บไซต์โดยใช้ภาษา PHP ร่วมกับโปรแกรม SCILAB จะต้องติดตั้งโปรแกรม SCILAB<br />
ไว้ที ่ C:\WINDOWS จึงสามารถเรียนใช้งานโปรแกรม SCILAB ผ่านบรรทัดคําสั่ง (command<br />
line) ของดอส (DOS) ได้ ซึ ่งเป็นหัวใจสําคัญที ่ทําให้สามารถใช้ฟังก์ชัน exec ของภาษา PHP ได้<br />
โดยผู้เขียนสรุปโค้ดได้ดังนี้<br />
1 $path=$_SERVER["SystemRoot"];<br />
2 $com = SCILAB -nwni -nb -f Parameter<br />
3 exec($com);<br />
เมื ่อ $path หมายถึงที ่อยู่ของสารบบหลักคือ “C:\WINDOWS”, $com คือตัวแปรสําหรับบันทึก<br />
ค่าโค้ดประมวลผลคําสั่ง (command), SCILAB หมายถึงที ่อยู่ของโปรแกรม Scilex.exe, -nwni<br />
หมายถึงไม่ต้องแสดงหน้าต่างของโปรแกรม SCILAB, -nb หมายถึงไม่แสดงข้อความต้อนรับ, -f<br />
หมายถึงสั่งให้โปรแกรม SCILAB ประมวลผลไฟล์สคริปต์, Parameter หมายถึงไฟล์สคริปต์ที ่<br />
ส่งให้โปรแกรม SCILAB ประมวลผล, และ exec หมายถึงคําสั่งประมวลผลโค้ดผ่านบรรทัดคําสั่ง
116<br />
4.3 เริ ่มต้นกับการเขียนภาษา PHP<br />
4.3.1 การแสดงผล<br />
คําสั่งที ่นิยมใช้การแสดงผลลัพธ์ของ PHP คือคําสั่ง print และ echo ซึ ่งมีรายละเอียดดังนี้<br />
ฟังก์ชัน print<br />
ฟังก์ชัน print มีรูปแบบการใช้งานคือ<br />
print(ผลลัพธ์); หรือ print ผลลัพธ์;<br />
ก็จะแสดงคําว่า “ผลลัพธ์” ออกหน้าจอ เช่น ถ้าใช้คําสั่ง<br />
print("SCILAB");<br />
print "SCILAB";<br />
จะได้คําว่า SCILAB ปรากฏที ่หน้าจอ<br />
ฟังก์ชัน echo<br />
ฟังก์ชัน echo นิยมนํามาใช้มากสุด เพราะทํางานได้รวดเร็วกว่าฟังก์ชัน print เนื ่องจากคําสั่งนี้<br />
ไม่มีการตรวจสอบข้อผิดพลาดใดๆ รูปแบบการใช้งานคําสั่ง echo มีดังนี้<br />
echo("ผลลัพธ์"); หรือ echo "ผลลัพธ์";<br />
ก็จะแสดงคําว่า “ผลลัพธ์” ออกหน้าจอ เหมือนกับฟังก์ชัน print<br />
4.3.2 การเขียนคอมเมนต์<br />
การคอมเมนต์ (comment) หรือการเขียนคําอธิบาย คือการแทรกข้อความเข้าไปในตัวโปรแกรม<br />
(เพื ่อใช้อธิบายตัวโปรแกรมซึ ่งทําให้ง่ายต่อการทําความเข้าใจและแก้ไขโปรแกรมในภายหลัง) แต่จะ<br />
ไม่ถูกนําไปประมวลผล การเขียนคอมเมนต์ในภาษา PHP จะมีลักษณะเดียวกับภาษาจาวาสคริปต์<br />
(JavaScript) ซึ ่งมี 2 รูปแบบคือ
117<br />
• การเขียนคอมเมนต์แบบหนึ ่งบรรทัดจะใช้เครื ่องหมายทับสองอัน (double slash) “ // ” นําหน้า<br />
ข้อความที ่ต้องการคอมเมนต์ทีละบรรทัด เช่น //Comment PHP<br />
• การเขียนคอมเมนต์แบบหลายบรรทัดจะใช้เครื ่องหมาย /* เป็นจุดเริ ่มต้น และเครื ่องหมาย */<br />
เป็นจุดสิ้นสุด ของการคอมเมนต์ กล่าวคือข้อความทั้งหมด (หลายบรรทัดก็ได้) ที ่อยู่ภายใน<br />
เครื ่องหมาย /* และ */ จะไม่ถูกนําไปประมวลผล ตัวอย่างเช่น<br />
/* This is a comment for PHP.<br />
*/<br />
This is the multiple-line comment.<br />
4.3.3 การกําหนดตัวแปร<br />
การเขียนโปรแกรม PHP จะเหมือนกับการเขียนโปรแกรมด้วยภาษาอื ่นๆ ซึ ่งจะต้องมีการกําหนด<br />
ตัวแปรเพื ่อจองพื ้นที ่ในหน่วยความจําสําหรับเก็บข้อมูล ในทางปฏิบัติการกําหนดตัวแปรที ่ใช้ใน PHP<br />
มีข้อกําหนดดังนี้<br />
• ตัวแปรทุกตัวต้องขึ้นต้นด้วยเครื ่องหมาย “$” และตามด้วยตัวอักษร (ห้ามขึ้นต้นด้วยตัวเลข)<br />
หรือเครื ่องหมายสัญประกาศ (underscores) “ _ ” (สัญลักษณ์อื ่นห้ามใช้) เช่น $name,<br />
$data และ $_file เป็นต้น<br />
• ตัวแปรใน PHP ไม่จําเป็นต้องระบุแบบชนิดข้อมูล (data type) เพราะตัวแปรแต่ละตัวสามารถ<br />
เก็บข้อมูลชนิดใดก็ได้<br />
• โปรแกรม PHP จะพิจารณาถึงความแตกต่างของตัวอักษรตัวพิมพ์ใหญ่กับอักษรตัวพิมพ์เล็ก<br />
ดังนั้นตัวแปรที ่มีชื ่อเหมือนกันแต่ใช้ตัวอักษรต่างกันจะถือว่าเป็นตัวแปรคนละตัวกัน เช่น $abc<br />
$ABC และ $aBC ถือเป็นคนละตัวกัน<br />
หมายเหตุ การกําหนดค่าให้กับตัวแปรชนิดสายอักขระ (string) ต้องกําหนดให้อย่ ูภายในเครื ่องหมาย<br />
อัญประกาศเดี ่ยว “ '...' ” หรือเครื ่องหมายอัญประกาศ “ "..." ” เช่น $name = "SCILAB"<br />
ในขณะที ่การกําหนดค่าให้กับตัวแปรที ่เป็นตัวเลข สามารถระบุค่าเข้าไปได้โดยไม่ต้องใส่เครื ่องหมาย<br />
อัญประกาศเดี ่ยว (หรือเครื ่องหมายอัญประกาศ) เช่น $number = 12<br />
4.3.4 การใช้เครื ่องหมายอัญประกาศเดี ่ยวและเครื ่องหมายอัญประกาศ<br />
การกําหนดค่าให้กับตัวแปรชนิดสายอักขระใน PHP สามารถใช้ได้ทั้งเครื ่องหมายอัญประกาศเดี ่ยว<br />
“ '...' ” หรือเครื ่องหมายอัญประกาศ “ "..." ” อย่างไรก็ตามเครื ่องหมายทั้งสองนี้มีข้อแตกต่าง<br />
เล็กน้อยในเรื ่องของการแสดงผล กล่าวคือถ้าต้องการแสดงค่าของตัวแปรออกหน้าจอผ่านทางคําสั่ง
118<br />
print หรือ echo จะต้องใช้ร่วมกับเครื ่องหมายอัญประกาศ ถ้าใช้กับเครื ่องหมายอัญประกาศเดี ่ยว<br />
จะไม่สามารถแสดงค่าของตัวแปรได้ แต่จะแสดงชื ่อของตัวแปรแทน ให้พิจารณาชุดคําสั่งต่อไปนี้<br />
<br />
$dou = "DoubleQuote";<br />
echo 'This test is $sin และ $dou';<br />
echo "This test is $sin และ $dou";<br />
ผลลัพธ์ที ่ได้คือ<br />
This test is $sin และ $dou<br />
This test is SingleQuote และ DoubleQuote<br />
ซึ ่งจะเห็นได้ว่าค่าของตัวแปรจะถูกแสดงผลออกมา ก็ต่อเมื ่อคําสั่ง echo ใช้ร่วมกับเครื ่องหมาย<br />
อัญประกาศเท่านั้น<br />
4.3.5 การนิยามตัวแปรล่วงหน้า<br />
ตัวแปรที ่ถูกนิยามล่วงหน้า (predefined variable) คือตัวแปรที ่โปรแกรม PHP ได้สร้างไว้ล่วงหน้า<br />
เพื ่อความสะดวกและเป็นค่าพื ้นฐานสําหรับการใช้งาน โดยทั่วไปตัวแปรเหล่านี้จะเก็บข้อมูลสําคัญ<br />
บางอย่างไว้และมีลักษณะเป็นอาร์เรย์ (array) ในที ่นี้จะกล่าวถึงตัวแปรที ่ถูกนิยามล่วงหน้าที ่จําเป็น<br />
ต่อการใช้งานเพื ่อติดต่อกับโปรแกรม SCILAB เท่านั้น ผู้สนใจศึกษารายละเอียดเพิ ่มเติมได้ที ่ไฟล์<br />
phpinfo.php ไปที ่หัวข้อ PHP Variables (อยู่ในสารบบชื ่อ C:\AppServ\www)<br />
$_SERVER<br />
ตัวแปร $_SERVER ที ่ใช้เก็บข้อมูลที ่เกี ่ยวข้องกับการเชื ่อมต่อระหว่างลูกข่าย (client) และเครื ่อง<br />
แม่ข่าย (server) เช่น ชื ่อโฮสต์ (host), เส้นทาง (path) ในการเก็บข้อมูล, และวิธี (method) ใน<br />
การส่งข้อมูล ตัวแปร $_SERVER เริ ่มใช้งานตั้งแต่ PHP 4.1.0 เป็นต้นมา (เวอร์ชันก่อนหน้านี้<br />
จะใช้ชื ่อตัวแปรนี้ว่า $HTTP_SERVER_VARS) การอ้างถึงข้อมูลในตัวแปร $_SERVER จะใช้<br />
รูปแบบคือ<br />
$_SERVER[‘variable_name’]
119<br />
เมื ่อ variable_name คือข้อมูลที ่ผู้ใช้ต้องการทราบ ซึ ่งการใช้งาน PHP เพื ่อติดต่อกับโปรแกรม<br />
SCILAB จะมีการใช้งานฟังก์ชันต่อไปนี้<br />
• $_SERVER[‘SystemRoot’] เก็บชื ่อสารบบที ่เก็บไฟล์ของระบบปฏิบัติการ<br />
• $_SERVER[‘DOCUMENT_ROOT’] เก็บสารบบสู่ที ่เดิม (home directory) ซึ ่งคือสารบบ<br />
ที ่เก็บไฟล์เว็บไซต์ที ่ผู้ใช้สร้างขึ้นทั้งหมด<br />
4.3.6 แบบชนิดข้อมูล<br />
แบบชนิดข้อมูล (data type) พื ้นฐานในโปรแกรม PHP มีดังนี้<br />
แบบชนิดข้อมูล<br />
ตรรกศาสตร์<br />
เลขจํานวนเต็ม<br />
จํานวนจริง (float หรือ double)<br />
สายอักขระ (string)<br />
คําอธิบาย<br />
ค่าทางตรรกะ มีค่าเป็นจริง (True) หรือ เท็จ (False)<br />
เลขจํานวนเต็มบวก จํานวนเต็มลบ หรือศูนย์<br />
เลขทศนิยม<br />
ตัวอักษรทั้งหมด<br />
4.3.7 ตัวดําเนินการเลขคณิต<br />
ตัวดําเนินการเลขคณิต (arithmetic operator) พื ้นฐานในโปรแกรม PHP มีดังนี้<br />
ตัวดําเนินการ ความหมาย ตัวอย่าง ($a=20 และ $b=3)<br />
+ การบวก (addition) $a + $b = 23<br />
- การลบ (subtraction) $a - $b = 17<br />
* การคูณ (multiplication) $a * $b = 60<br />
/ การหาร (division) $a / $b = 6.66<br />
% มอดุลัส (modulus) เป็นการหาเศษที ่ได้จากหาร $a % $b = 2<br />
4.3.8 ตัวดําเนินการเพิ ่ม/ลดค่า<br />
ตัวดําเนินการเพิ ่ม/ลดค่า (incrementing/decrementing operator) หมายถึงตัวดําเนินการ ++ หรือ<br />
-- ซึ ่งต้องการตัวถูกดําเนินการเพียงตัวเดียวและต้องเป็นตัวแปรเท่านั้น โดยจะเพิ ่มค่าของตัวแปร<br />
หนึ ่งค่าหรือลดค่าของตัวแปรหนึ ่งค่า ตามลําดับ การใช้งานมีทั้งระบุไว้หน้าตัวแปรหรือหลังตัวแปร<br />
ซึ ่งจะมีความหมายต่างกัน (เหมือนกับวิธีการใช้ในภาษาซี) ดังรายละเอียดในต่อไปนี้
120<br />
ตัวอย่างการใช้งาน<br />
++$a<br />
$a++<br />
--$a<br />
$a--<br />
ผลลัพธ์<br />
คําสั่งนี้จะทําการเพิ ่มค่าของตัวแปร $a ขึ้น 1 ค่าก่อน นั่นคือ $a = $a + 1<br />
แล้วจึงนําตัวแปร $a ไปประมวลผลในชุดคําสั่ง<br />
คําสั่งนี้จะนําตัวแปร $a ไปประมวลผลในชุดคําสั่งให้เรียบร้อยก่อน แล้วจึงเพิ ่ม<br />
ค่าของตัวแปร $a ขึ้น 1 ค่า<br />
คําสั่งนี้จะทําการลดค่าของตัวแปร $a ขึ้น 1 ค่าก่อน นั่นคือ $a = $a - 1<br />
แล้วจึงนําตัวแปร $a ไปประมวลผลในชุดคําสั่ง<br />
คําสั่งนี้จะนําตัวแปร $a ไปประมวลผลในชุดคําสั่งให้เรียบร้อยก่อน แล้วจึงลด<br />
ค่าของตัวแปร $a ขึ้น 1 ค่า<br />
4.3.9 ตัวดําเนินการเปรียบเทียบ<br />
ตัวดําเนินการเปรียบเทียบ (comparison operator) เป็นตัวดําเนินการที ่ใช้ในการตรวจสอบความ<br />
สัมพันธ์ระหว่างค่าของตัวแปร โดย<br />
• ถ้าความสัมพันธ์เป็นจริง ผลลัพธ์ที ่ได้มีค่าเท่ากับ True (เป็นจริง) หรือมีค่าทางตรรกะเท่ากับ 1<br />
• ถ้าความสัมพันธ์เป็นเท็จ ผลลัพธ์ที ่ได้มีค่าเท่ากับ False (เป็นเท็จ) หรือมีค่าทางตรรกะเท่ากับ 0<br />
(แต่จะไม่แสดงผลลัพธ์ใดๆ ออกหน้าจอ)<br />
ตัวดําเนินการ<br />
ชื ่อ ตัวอย่าง คําอธิบาย<br />
== เท่ากับ (equal) $a == $b ให้ค่า True เมื ่อ $a มีค่าเท่ากับ $b<br />
===<br />
เหมือนกับ<br />
(identical)<br />
$a === $b<br />
ให้ค่า True เมื ่อ $a มีค่าเท่ากับ $b และต้อง<br />
เป็นข้อมูลชนิดเดียวกัน<br />
!= หรือ ไม่เท่ากับ $a != $b ให้ค่า True เมื ่อ $a มีค่าไม่เท่ากับ $b<br />
!== ไม่เหมือนกับ $a !=== $b<br />
ให้ค่า True เมื ่อ $a มีค่าไม่เท่ากับ $b หรือเมื ่อ<br />
เป็นข้อมูลคนละชนิดกัน<br />
< น้อยกว่า $a < $b ให้ค่า True เมื ่อ $a มีค่าน้อยกว่า $b<br />
> มากกว่า $a > $b ให้ค่า True เมื ่อ $a มีค่ามากกว่า $b<br />
= $b<br />
ให้ค่า True เมื ่อ $a มีค่าน้อยกว่าหรือเท่ากับ<br />
$b
121<br />
4.3.10 ตัวดําเนินการทางตรรกะ<br />
ตัวดําเนินการตรรกะ (logical operator) เป็นตัวดําเนินการที ่ใช้เชื ่อมความสัมพันธ์ระหว่างค่าของ<br />
ตัวแปรที ่เกิดขึ้นจากตัวดําเนินการสัมพันธ์ โดย<br />
• ถ้าความสัมพันธ์สอดคล้องกันผลลัพธ์ที ่ได้ จะมีค่าเท่ากับ True หรือมีค่าทางตรรกะเท่ากับ 1<br />
• ถ้าความสัมพันธ์ไม่สอดคล้องกันผลลัพธ์ที ่ได้ จะมีค่าเท่ากับ False หรือมีค่าทางตรรกะเท่ากับ 0<br />
ตัวดําเนินการตรรกะที ่ใช้ในโปรแกรม PHP มีดังนี้<br />
ตัวดําเนินการ<br />
ชื ่อ ตัวอย่าง คําอธิบาย<br />
&& หรือ and และ $a && $b<br />
|| หรือ or หรือ $a || $b<br />
ให้ค่า True ก็ต่อเมื ่อ $a และ $b เป็นจริงทั้งคู่<br />
(และในทางตรงกันข้าม)<br />
ให้ค่า True เมื ่อ $a หรือ $b ตัวใดตัวหนึ ่งเป็นจริง<br />
หรือเป็นจริงทั้งสองตัว มิฉะนั้นจะให้ค่า False<br />
(และในทางตรงกันข้าม)<br />
xor<br />
exclusive<br />
or<br />
$a xor $b<br />
ให้ค่า True เมื ่อ $a หรือ $b ตัวใดตัวหนึ ่งเป็นจริง<br />
เท่านั้น แต่จะให้ค่า False เมื ่อทั้งสองตัวเป็นจริง<br />
หรือเท็จ เหมือนกัน<br />
! นิเสธ !$a<br />
ให้ค่าตรงกันข้ามกับ $a ถ้า $a เป็นจริงจะได้ค่า<br />
False แต่ถ้า $a เป็นเท็จจะได้ค่า True<br />
4.3.11 การทดสอบเงื ่อนไข<br />
การทดสอบเงื ่อนไขมีความจําเป็นมากสําหรับการเขียนโปรแกรมคอมพิวเตอร์ที ่ซับซ้อน เพื ่อให้<br />
โปรแกรมที ่เขียนขึ้นมาสามารถทํางานได้ถูกต้องตรงตามความต้องการ หนังสือเล่มนี้จะอธิบาย<br />
คําสั่งทดสอบเงื ่อนไข 2 คําสั่งคือ คําสั่ง if และ switch ซึ ่งมีหลักการใช้งานดังนี้<br />
คําสั่ง if<br />
คําสั่ง if จะทําการทดสอบเงื ่อนไขความสัมพันธ์ว่าเป็นจริงหรือเท็จ โดยมีรูปแบบการใช้งานคือ<br />
if (expression) {<br />
instruction_1;<br />
}<br />
instruction_n;
122<br />
กล่าวคือถ้าผลการทดสอบเงื ่อนไขในนิพจน์เป็นจริง โปรแกรม PHP จะทําคําสั่งทั้งหมดที ่อยู่ระหว่าง<br />
เครื ่องหมายปีกกาเปิด { และเครื ่องหมายปีกกาปิด } แต่ถ้าผลการทดสอบเป็นเท็จ โปรแกรม PHP<br />
จะไม่ทําคําสั่งทั้งหมดที ่อยู่ระหว่างเครื ่องหมายปีกกา { ... } ตัวอย่างเช่น<br />
<br />
ซึ ่งให้ผลลัพธ์เป็น<br />
ค่าของ $a คือ : 200<br />
คําสั่ง if ยังสามารถนําไปใช้ในการตัดสินใจที ่ซับซ้อนมากขึ้นได้ โดยการใช้งานร่วมกับ<br />
คําสั่ง else ซึ ่งมีรูปแบบการใช้งานดังนี้<br />
if expression {<br />
instructions_set1;<br />
}<br />
else {<br />
}<br />
instructions_set2;<br />
กล่าวคือโปรแกรม PHP จะทําชุดคําสั่ง instructions_set1 เมื ่อผลการทดสอบเงื ่อนไขใน<br />
นิพจน์เป็นจริง แต่จะทําชุดคําสั่ง instructions_set2 ถ้าผลการทดสอบเป็นเท็จ ตัวอย่างเช่น<br />
123<br />
}else{<br />
echo "ค่าของ $a > $b ";<br />
}<br />
?><br />
ซึ ่งให้ผลลัพธ์เป็น<br />
ค่าของ 200 > 100<br />
นอกจากนี้ในการใช้งานที ่มีการตัดสินใจที ่ซับซ้อนมากยิ ่งขึ้น ผู้ใช้ก็สามารถใช้งานคําสั่ง if<br />
ร่วมกับ elseif ได้ โดยมีรูปแบบการใช้งานดังนี้<br />
if expression_1 {<br />
instructions_set1;<br />
}<br />
elseif expression_2 {<br />
instructions_set2;<br />
}<br />
else {<br />
instructions_set3;<br />
}<br />
กล่าวคือถ้าผลการทดสอบเงื ่อนไขในนิพจน์ expression_1 เป็นจริง โปรแกรม PHP จะทํา<br />
ชุดคําสั่ง instructions_set1 แต่ถ้าผลการทดสอบเป็นเท็จ โปรแกรม SCILAB ก็จะทํา<br />
การทดสอบเงื ่อนไขในนิพจน์ expression_2 ต่อไปทันที โดยถ้าผลการทดสอบในนิพจน์<br />
expression_2 เป็นจริง โปรแกรม PHP ก็จะทําชุดคําสั่ง instructions_set2 แต่ถ้า<br />
ผลการทดสอบเป็นเท็จ ก็จะทําชุดคําสั่ง instructions_set3<br />
คําสั่ง switch<br />
คําสั่ง switch เป็นการตัดสินใจแบบหลายทางเลือก โดยจะตรวจสอบเงื ่อนไขต่างๆ ตามที ่กําหนด<br />
ถ้าเงื ่อนไขใดเป็นจริงก็จะทําชุดคําสั่งที ่อยู่ภายในเงื ่อนไขนั้น แล้วจึงออกจากคําสั่ง switch รูปแบบ<br />
การใช้งานคําสั่ง switch มีดังนี้
124<br />
switch (var) {<br />
case value1:<br />
instructions_set1;<br />
break;<br />
case value2:<br />
instructions_set2;<br />
break;<br />
default:<br />
instructions_set3;<br />
break;<br />
}<br />
นั่นคือเริ ่มต้นคําสั่ง switch จะตรวจสอบเงื ่อนไขว่าตัวแปร var มีค่าเท่ากับเท่าใด (ตามที ่กําหนด<br />
ใน case) เช่น ถ้า var = value1 โปรแกรม PHP จะทําชุดคําสั่ง instructions_set1<br />
และถ้า var = value2 ก็จะทําชุดคําสั่ง instructions_set2 แต่ถ้า var มีค่าไม่เท่ากับ<br />
ค่าใดๆ ใน case โปรแกรม PHP จะทําชุดคําสั่ง instructions_set3 ตัวอย่างเช่น<br />
<br />
ซึ ่งให้ผลลัพธ์คือ<br />
Number1 = 100
125<br />
4.3.12 การทําซํ้า<br />
บางครั้งในการเขียนโปรแกรมมีความจําเป็นต้องคํานวณชุดคําสั่งบางอย่างซํ้าเป็นจํานวนหลายรอบ<br />
ตามที ่กําหนด ซึ ่งในกรณีนี้การใช้คําสั่งวนซํ้าจึงมีความจําเป็นมาก โดยโปรแกรม PHP ได้เตรียม<br />
คําสั่งสําหรับการวนซํ้าไว้อยู่ 3 คําสั่งคือ คําสั่ง for, while และ do-while ซึ ่งมีหลักการใช้<br />
งานดังนี้<br />
คําสั่ง for<br />
คําสั่ง for เหมาะสําหรับการใช้งานที ่ต้องการให้โปรแกรมทําซํ้าชุดคําสั่งเดิมที ่อยู่ภายในลูป (loop)<br />
เป็นจํานวนรอบตามที ่กําหนดไว้ในนิพจน์ (expression) โดยมีรูปแบบการใช้งานดังนี้<br />
for (ค่าเริ ่มต้น; ค่าสิ้นสุด; ค่าสะสม) {<br />
instruction_1;<br />
}<br />
instruction_n;<br />
กล่าวคือโปรแกรมจะทําซํ้าคําสั่ง (instruction) ทั้งหมดภายในลูปเป็นจํานวนรอบตามที ่กําหนดโดย<br />
ตัวแปรที ่เป็นไปตามเงื ่อนไขของนิพจน์ ตัวอย่างการใช้งานเช่น<br />
<br />
ชุดคําสั่งนี้หมายความว่าเมื ่อเริ ่มต้นใช้งาน ตัวแปร $i จะมีค่าเท่ากับ 1 แล้วพิมพ์ผลออกหน้าจอ<br />
เป็นคําว่า “Hello! 1” และทําการขึ้นบรรทัดใหม่ด้วยคําสั่ง จากนั้นทําการวนซํ้าโดยใช้ตัว<br />
แปร $i เป็นตัวนับจํานวนซํ้าจากค่า 1 เพิ ่มขึ้นทีละ +1 จนถึงค่า 5 ซึ ่งผลลัพธ์ของการประมวลผล<br />
ชุดคําสั่งนี้คือ
126<br />
Hello! 1<br />
Hello! 2<br />
Hello! 3<br />
Hello! 4<br />
Hello! 5<br />
คําสั่ง while<br />
คําสั่ง while มีลักษณะการทํางานคล้ายกับคําสั่ง for เพียงแต่คําสั่ง while จะมีการทดสอบ<br />
เงื ่อนไขตามที ่กําหนดในนิพจน์ทุกรอบของการวนซํ้า กล่าวคือถ้าผลการทดสอบให้ค่าตรรกะเป็นจริง<br />
โปรแกรมจะทําซํ้าชุดคําสั่งภายในลูปนั้นต่ออีกหนึ ่งรอบ แต่ถ้าผลการทดสอบให้ค่าตรรกะเป็นเท็จ<br />
โปรแกรมจะยกเลิกการทํางานชุดคําสั่งภายในลูปนั้นทันที คําสั่ง while มีรูปแบบการใช้งานดังนี้<br />
while (expression) {<br />
instruction_1;<br />
}<br />
instruction_n;<br />
ตัวอย่างเช่น<br />
<br />
ชุดคําสั่งนี้ให้ผลลัพธ์เท่ากับตัวอย่างของการใช้คําสั่ง for เพียงแต่การใช้คําสั่ง while ต้องกําหนด<br />
ค่าเริ ่มต้นของตัวแปร $i ก่อน เพื ่อจะได้นําค่า $i มาเปรียบเทียบกับค่า 5 ตามเงื ่อนไขที ่กําหนด<br />
ดังนั้นสรุปได้ว่าคําสั่ง while และ for มีลักษณะการทํางานคล้ายกันมาก เพียงแต่คําสั่ง while<br />
จะมีการทดสอบเงื ่อนไขก่อนตัดสินใจว่าจะสั่งให้โปรแกรมทํางานชุดคําสั่งภายในลูปหรือไม่
127<br />
คําสั่ง do-while<br />
คําสั่ง do-while มีลักษณะการทํางานเหมือนกับคําสั่ง while เพียงแต่คําสั่ง do-while จะทํา<br />
ชุดคําสั่งที ่กําหนดก่อน แล้วจึงทําการตรวจสอบเงื ่อนไขทีหลัง ถ้าเงื ่อนไขเป็นจริงก็จะกลับมาทํางาน<br />
ในชุดคําสั่งเดิมอีกครั้ง ทําเช่นนี้ไปเรื ่อยๆ จนกระทั่งเงื ่อนไขจะเป็นเท็จ รูปแบบการใช้งานคือ<br />
do {<br />
instruction_1;<br />
instruction_n;<br />
} while (expression);<br />
ตัวอย่างเช่น<br />
<br />
ซึ ่งจะให้ผลลัพธ์ดังนี้เท่ากับตัวอย่างของการใช้คําสั่ง for และ while<br />
4.4 ฟังก์ชันและการใช้งาน<br />
ฟังก์ชัน (function) คือกลุ่มคําสั่งที ่ถูกรวบรวมไว้ด้วยกันเพื ่อให้การทํางานตามที ่กําหนดหรือสร้าง<br />
เป็นคําสั่งใหม่ขึ้นมาใช้งานเพื ่อความสะดวกและลดความซํ้าซ้อนของโปรแกรมหลัก โดยทั่วไป PHP<br />
มีฟังก์ชันสองแบบคือ ฟังก์ชันในตัว (built-in function) ซึ ่งเป็นฟังก์ชันที ่สามารถเรียกใช้ได้ทันที<br />
(เช่น echo, fgets, fopen และ date) และฟังก์ชันที ่ผู้ใช้สร้างขึ้นมา (user-defined function)<br />
ในบทนี้จะอธิบายวิธีการสร้างฟังก์ชันใหม่ขึ้นมาใช้งาน การเรียกใช้ฟังก์ชัน และฟังก์ชัน<br />
สําเร็จรูปที่นิยมใช้งาน ให้พิจารณาตัวอย่างต่อไปนี้สําหรับการเขียนโปรแกรมแบบสร้างฟังก์ชัน<br />
ขึ้นมาใช้งาน
128<br />
<br />
โปรแกรมนี้จะมีการสร้างฟังก์ชัน hello ขึ้นมา ซึ ่งจะแสดงผลข้อความ $txt เป็นจํานวน $n<br />
ครั้งออกหน้าจอ ซึ ่งผลลัพธ์ของโปรแกรมนี้คือ<br />
Hello! 1<br />
Hello! 2<br />
Project! 1<br />
Project! 2<br />
Project! 3<br />
จะเห็นได้ว่าการสร้างฟังก์ชันขึ้นมาใช้งานทําให้สามารถแสดงผลซํ้ากันได้ด้วยคําสั่งเพียง<br />
คําสั่งเดียว เช่น ต้องการให้แสดงคําว่า Hello จํานวน 2 ครั้ง และ Project จํานวน 3 ครั้ง<br />
ก็ใช้เพียงคําสั่ง hello("Hello", 2) และ hello("Project", 3) มิฉะนั้นจะต้องเขียน<br />
คําสั่งแสดงผลลัพธ์ซํ้าหลายๆ ครั้ง ดังนี้<br />
129<br />
4.4.1 การสร้างฟังก์ชัน<br />
ถ้าต้องการสร้างฟังก์ชันใหม่ขึ้นมาใช้งานในโปรแกรม PHP โดยมีลักษณะการทํางานเหมือนกับ<br />
ฟังก์ชันในตัว กล่าวคือมีการส่งผ่านค่าของตัวแปรต่างๆ ไปให้กับฟังก์ชัน จากนั้นฟังก์ชันก็จะนําค่า<br />
ของตัวแปรเหล่านี้มาประมวลผลตามคําสั่งที ่มีอยู่ภายในตัวฟังก์ชัน แล้วก็ส่งผลลัพธ์ที ่ได้ออกมาจาก<br />
ตัวฟังก์ชัน ข้อดีของการสร้างฟังก์ชันใหม่คือ ช่วยทําให้การดูแลแก้ไขโปรแกรมทําได้ง่ายขึ้น (เช่น<br />
เมื ่อต้องการแก้ไขชุดคําสั่งบางอย่างในโปรแกรม ถ้าสร้างเป็นฟังก์ชันก็สามารถแก้ไขได้โดยง่ายเพียง<br />
จุดเดียว แต่ถ้าไม่มีการสร้างฟังก์ชันก็ต้องแก้ไขให้ครบทุกจุดที ่มีการใช้งานชุดคําสั่งนั้น ซึ ่งอาจเกิด<br />
ข้อผิดพลาดได้ง่าย) ดังนั้นในส่วนนี้จะอธิบายการสร้างฟังก์ชันลักษณะต่างๆ ดังนี้<br />
ฟังก์ชันที ่ไม่มีการรับค่าอินพุต<br />
ฟังก์ชันที ่ไม่มีการรับค่าอินพุตจะมีรูปแบบคือ<br />
function FuncName() {<br />
}<br />
instruction_set;<br />
ตัวอย่างเช่น พิจารณาโปรแกรมคํานวณพื ้นที ่สี ่เหลี ่ยมผืนผ้า (แบบไม่รับค่าอินพุต) ดังนี้<br />
<br />
ซึ ่งจะพบว่าฟังก์ชัน area ไม่มีการรับค่าอินพุต แต่จะกําหนดค่าให้กับตัวแปรอยู่ภายในฟังก์ชัน<br />
เพราะฉะนั้นฟังก์ชันแบบนี้จะเป็นฟังก์ชันที ่ไม่ยืดหยุ่นในการใช้งาน<br />
ฟังก์ชันที ่มีการรับค่าอินพุต<br />
ฟังก์ชันที ่มีการรับค่าอินพุตจะมีรูปแบบคือ
130<br />
function FuncName(input1, ..., inputN) {<br />
}<br />
instruction_set;<br />
จะเห็นได้ว่าฟังก์ชันแบบนี้มีการรับค่าตัวแปรอินพุต input1 ถึง inputN เข้าไปประมวลผลใน<br />
ชุดคําสั่ง instruction_set ตัวอย่างเช่น พิจารณาโปรแกรมคํานวณพื ้นที่สี่เหลี่ยมผืนผ้า<br />
(แบบรับค่าอินพุต) ดังนี้<br />
<br />
ในที ่นี้ฟังก์ชัน area จะรับค่าตัวแปรอินพุต $a และ $b เข้าไปคํานวณหาค่าพื ้นที ่สี ่เหลี ่ยมและ<br />
ส่งผลลัพธ์ที ่ได้กลับด้วยคําสั่ง return นอกจากนี้การแสดงผลลัพธ์ของฟังก์ชันสามารถใช้คําสั่ง<br />
แสดงผล (echo หรือ print) ตามด้วยชื ่อฟังก์ชันที ่ระบุค่าอาร์กิวเมนต์ได้เลย<br />
4.4.2 ฟังก์ชันที ่เกี ่ยวกับสายอักขระ<br />
โดยทั่วไปการสร้างเว็บไซต์เพื ่อติดต่อกับ SCILAB จะใช้ฟังก์ชันที ่เกี ่ยวข้องกับการจัดการสายอักขระ<br />
จํานวนมาก เนื ่องจากการแสดงผลลัพธ์ที ่ส่งมาจากโปรแกรม SCILAB จะมีรูปแบบไม่คงที ่และไม่<br />
สามารถนํามาแสดงผลบนเว็บเพจได้ทันที จําเป็นต้องมีการจัดรูปแบบให้เหมาะสมก่อน ในที ่นี้จะ<br />
อธิบายเฉพาะฟังก์ชันที ่น่าสนใจและเกี ่ยวข้องกับการใช้งานร่วมกับ SCILAB ดังนี้<br />
ฟังก์ชัน strlen<br />
ฟังก์ชัน strlen ใช้หาความยาวของสายอักขระ (string) หรือนับจํานวนตัวอักษรในสายอักขระ<br />
(นับช่องว่างเป็น 1 ตัวอักษรด้วย) โดยรูปแบบการใช้เรียกงานคือ<br />
strlen("สายอักขระ")
131<br />
ตัวอย่างเช่น<br />
<br />
จะให้ผลลัพธ์เท่ากับ 12 (นั่นคือมีตัวอักษรทั้งหมด 12 ตัว)<br />
ฟังก์ชัน explode<br />
ฟังก์ชัน explode ใช้แยกสายอักขระออกเป็นสายอักขระย่อยๆ ด้วยการกําหนดสายอักขระหรือ<br />
สัญลักษณ์ที ่จะใช้แยก ผลลัพธ์ที ่ได้จะถูกเก็บอยู่ในรูปแบบของอาร์เรย์ รูปแบบการใช้เรียกงานคือ<br />
explode("สัญลักษณ์ที ่ใช้แยก", "สายอักขระ")<br />
ตัวอย่างเช่น<br />
<br />
ในที ่นี้จะใช้ช่องว่าง (space) ในการแบ่งแยกสายอักขระ ซึ ่งผลลัพธ์ที ่ได้คือ อาร์เรย์[0] จะเก็บค่า<br />
เท่ากับ "Hello" และอาร์เรย์[1] จะเก็บค่าเท่ากับ "world."<br />
ฟังก์ชัน implode หรือ join<br />
ฟังก์ชันนี้จะทํางานตรงกันข้ามกับฟังก์ชัน explode กล่าวคือเป็นการนําสายอักขระย่อยมารวมกัน<br />
เป็นสายอักขระเดียว ตามสัญลักษณ์ที ่ใช้รวม รูปแบบการใช้เรียกงานคือ<br />
implode("สัญลักษณ์ที ่ใช้รวม", "อาร์เรย์ของสายอักขระ")<br />
ตัวอย่างเช่น
132<br />
<br />
ในที ่นี้จะใช้ช่องว่างในการรวมสายอักขระแต่ละตัวที ่อยู่ในอาร์เรย์ ซึ ่งจะให้ผลลัพธ์คือ<br />
Hello World! SCILAB& PHP!<br />
ฟังก์ชัน strstr<br />
ฟังก์ชัน strstr ใช้ตัดเอาเฉพาะสายอักขระที ่เริ ่มต้นด้วยสายอักขระย่อยที ่กําหนดจนถึงตัวอักษร<br />
สุดท้ายของสายอักขระต้นฉบับ รูปแบบการใช้เรียกงานคือ<br />
strstr("สายอักขระย่อย", "สายอักขระต้นฉบับ")<br />
ตัวอย่างเช่น<br />
<br />
ชุดคําสั่งนี้จะตัดเอาสายอักขระที ่เริ ่มต้นด้วยตัวอักษร "w" จนถึงตัวอักษรสุดท้ายของคําว่า "Hello<br />
world!" เพราะฉะนั้นในที ่นี้จะได้ผลลัพธ์คือ<br />
world!<br />
ฟังก์ชัน substr<br />
ฟังก์ชัน substr ใช้ตัดสายอักขระเหมือนกับฟังก์ชัน strstr แต่สามารถกําหนดความยาวของ<br />
สายอักขระที ่ต้องการได้ โดยมีรูปแบบการใช้เรียกงานคือ<br />
substr("สายอักขระต้นฉบับ", ตําแหน่งเริ ่มต้น, จํานวนตัวอักษรที ่ต้องการ)
133<br />
ตัวอย่างเช่น<br />
<br />
ชุดคําสั่งนี้จะตัดเอาตัวอักษรลําดับที ่ 6 จนถึงลําดับที ่ 11 (รวม 5 ตัวอักษร) จากคําว่า "Hello<br />
world!" ดังนั้นในที ่นี้จะได้ผลลัพธ์คือ<br />
world<br />
ฟังก์ชัน ltrim, rtrim และ trim<br />
ฟังก์ชันนี้ใช้สําหรับการตัดช่องว่างที ่อยู่ด้านซ้าย ด้านขวา และทั้งสองข้างของสายอักขระออกทั้งหมด<br />
มีรูปแบบการเรียกใช้งานคือ<br />
ltrim("สายอักขระ")<br />
rtrim("สายอักขระ")<br />
trim("สายอักขระ")<br />
ตัวอย่างเช่น<br />
<br />
ซึ ่งจะให้ผลลัพธ์คือ<br />
"Hello "<br />
" Hello"<br />
" Hello "
134<br />
ฟังก์ชัน stripslashes<br />
ในการส่งข้อมูลผ่านทางฟอร์มภาษา PHP หรือเพิ ่มข้อมูลลงในฐานข้อมูล ตัวอักษรบางประเภท เช่น<br />
เครื ่องหมายอัญประกาศ ("..."), อัญประกาศเดี ่ยว ('...') และค่า NULL จะถูกใส่ด้วยเครื ่องหมาย<br />
ทับกลับ (backslash) เพื ่อให้ระบุความหมายในการเก็บข้อมูล ดังนั้นในการนําข้อมูลเหล่านี้มาใช้<br />
งาน จึงจําเป็นต้องตัดเครื ่องหมายทับกลับออกจากข้อมูลก่อน โดยใช้ฟังก์ชัน stripslashes<br />
ดังนี้<br />
stripslashes("สายอักขระ")<br />
ตัวอย่างเช่น<br />
echo stripslashes('H\xa0ello');<br />
ฟังก์ชันนี้จะทําการตัดเครื ่องหมายทับกลับออก และแสดงข้อความ “Hxa0ello” เท่านั้น<br />
4.4.3 ฟังก์ชันที ่เกี ่ยวกับตัวเลข<br />
ในทางปฏิบัติผลลัพธ์ที ่ได้จากการคํานวณด้วยโปรแกรม SCILAB บางครั้งไม่สามารถนําไปใช้ได้<br />
ทันที เพราะอาจอยู่ในรูปแบบของรหัสไบนารีหรือแอสกี ดังนั้นจึงจําเป็นต้องจัดรูปแบบของผลลัพธ์<br />
ที ่เป็นตัวเลขเหล่านี้ก่อนที ่จะนําไปแสดงผล ใน PHP มีฟังก์ชันที ่ใช้ในการจัดรูปแบบของตัวเลขมี<br />
หลายฟังก์ชัน ซึ ่งในที ่นี้จะกล่าวเฉพาะฟังก์ชันสําคัญๆ ที ่ใช้ในการทํางานร่วมกับโปรแกรม SCILAB<br />
เท่านั้น<br />
ฟังก์ชัน number_format<br />
ฟังก์ชัน number_format มีรูปแบบการเรียกใช้งานดังนี้<br />
number_format(Fnum [, Dum ])<br />
หรือ<br />
number_format(Fnum, Dnum, Dpoint, Ssep)
135<br />
เมื ่อ Fnum คือเลขจํานวนจริง, Dnum คือเลขจํานวนเต็มที ่ใช้กําหนดจํานวนตัวเลขหลังจุดทศนิยม,<br />
Dpoint คือเครื ่องหมายที ่แทนจุดทศนิยม, และ Ssep คือเครื ่องหมายที ่ใช้แยกหลักพัน เช่น<br />
<br />
จะให้ผลลัพธ์เท่ากับ 2,553.50 (มีเลขหลังจุดทศนิยมเพียงสองตําแหน่ง)<br />
4.5 การจัดการไฟล์<br />
ในส่วนนี้จะอธิบายการสร้างไฟล์ การอ่านไฟล์ การลบไฟล์ และการใช้งานโปรแกรมภายนอก ดังนี้<br />
4.5.1 การสร้างไฟล์<br />
การสร้างไฟล์สําหรับเขียนไฟล์สคริปต์ของโปรแกรม SCILAB ทําได้โดยอาศัยฟังก์ชัน file_<br />
put_contents ซึ ่งมีรูปแบบการใช้งานดังนี้<br />
file_put_contents(filename, data)<br />
โดย filename คือชื ่อไฟล์ที่ต้องการสร้าง (ระบุที่อยู่ของไฟล์ด้วย) และ data คือข้อมูลสาย<br />
อักขระที ่ต้องการเขียนลงในไฟล์ ตัวอย่างเช่น<br />
echo file_put_contents("test.txt", "This is test file");<br />
จะให้ผลลัพธ์เป็นไฟล์ test.txt ในสารบบที ่กําลังใช้งาน โดยมีข้อความ This is test<br />
file ปรากฏอยู่ในไฟล์ test.txt<br />
4.5.2 การอ่านไฟล์<br />
การอ่านไฟล์ออกมาเป็นสายอักขระเพื ่อนําค่ามาแสดงในฟอร์มหรือหน้าเว็บไซต์นั้น สามารถทําได้<br />
โดยใช้ฟังก์ชัน file_get_contents ซึ ่งมีรูปแบบการใช้งานคือ
136<br />
file_get_contents(filename)<br />
เมื ่อ filename คือชื ่อไฟล์ที ่ต้องอ่านข้อมูล ตัวอย่างเช่น<br />
echo file_get_contents("test.txt");<br />
จะให้ผลลัพธ์เป็นข้อมูลที ่อยู่ในไฟล์ test.txt ในสารบบที ่กําลังใช้งาน<br />
4.5.3 การลบไฟล์<br />
การลบไฟล์ใน PHP จะใช้ฟังก์ชัน unlink ซึ ่งมีรูปแบบการใช้งานคือ<br />
unlink(filename)<br />
โดยถ้าการลบไฟล์สําเร็จจะให้ผลลัพธ์เป็นค่าบูลีน True แต่ถ้าไม่สําเร็จก็จะให้ผลลัพธ์เป็น False<br />
4.5.4 การใช้งานโปรแกรมภายนอก<br />
การเรียกใช้ (หรือสั่งประมวลผล) โปรแกรมภายนอกทําได้ด้วยการใช้ฟังก์ชัน exec, system<br />
หรือ shell_exec ซึ ่งมีลักษณะการทํางานคล้ายกัน แต่จะใช้งานแตกต่างกันเพื ่อความสะดวก<br />
ในการใช้งานและตรงตามรูปแบบของผลลัพธ์ที ่ต้องการ ในที ่นี้จะอธิบายเพียงฟังก์ชัน exec เท่านั้น<br />
ซึ ่งมีรูปแบบการใช้งานคือ<br />
exec($command [, array & $output [, int & $return_var]] );<br />
เมื ่อ $command คือคําสั่งที ่ต้องการใช้งาน, $output คือตัวแปรที ่ใช้เก็บค่าของผลลัพธ์ที ่ได้จาก<br />
คําสั่ง $command, และ return_var คือค่าที ่คําสั่ง $command ให้คืนกลับมา ตัวอย่างเช่น<br />
137<br />
ชุดคําสั่งนี้จะประมวลผลไฟล์ของโปรแกรม SCILAB ที ่ชื ่อว่า test.sci แล้วนําผลลัพธ์ที ่อยู่ใน<br />
รูปของอาร์เรย์ไปเก็บไว้ในตัวแปร output จากนั้นจึงนํามาแสดงผลด้วยคําสั่ง print_r<br />
4.6 สรุปท้ายบท<br />
บทนี้ได้สรุปประวัติความเป็นมาของภาษา PHP โครงสร้างทั่วไป คําสั่งพื ้นฐานของภาษา PHP<br />
และการจัดการไฟล์ ซึ ่งจะเป็นแนวทางในการนําไปประยุกต์ใช้งานร่วมกับโปรแกรม SCILAB<br />
สําหรับใช้สร้างสื ่อการเรียนการสอนที ่จะอธิบายในบทต่อไป<br />
4.7 แบบฝึกหัดท้ายบท<br />
1. จงอธิบายการใช้งานคําสั่ง stripslashes มาพอสังเขป<br />
2. จงอธิบายการใช้งานคําสั่ง file_put_contents(), file_get_contents() และ<br />
unlink()มาพอสังเขป<br />
3. จงเขียนโปรแกรมบวกเลข 1 ถึง 100 โดยใช้คําสั่ง for<br />
4. จงเขียนโปรแกรมตัดเกรดจํานวน 4 เกรด คือ A, B, C และ D
138
139<br />
บทที ่ 5<br />
การสร้างสื ่อการสอนผ่านเว็บไซต์<br />
ในบทนี้จะแสดงตัวอย่างวิธีการสร้างสื ่อการสอนผ่านเว็บไซต์โดยใช้โปรแกรมภาษา PHP ร่วมกับ<br />
โปรแกรม SCILAB ซึ ่งประกอบด้วยการบวก/ลบ/คูณ/หาร ของเลขสองจํานวน การหาดีเทอร์<br />
มิแนนต์และอินเวอร์สของเมทริกซ์ การพิสูจน์สมบัติของเมทริกซ์ การหาค่าลอการิทึมฐานใดๆ<br />
การบวกและลบสมการพหุนาม และการวาดกราฟสองมิติ เพื ่อเป็นแนวทางให้ผู้อ่านสามารถนําไป<br />
พัฒนาต่อยอดหรือประยุกต์ใช้งานด้านอื ่นได้<br />
ก่อนการเขียนโปรแกรม PHP เพื ่อติดต่อกับโปรแกรม SCILAB ผู้ใช้จะต้องติดตั้ง<br />
โปรแกรม SCILAB ที ่สารบบ C:\Windows\ และสร้างโฟลเดอร์ชื ่อว่า phptoscilab ไว้ในสารบบ<br />
C:\AppServ\www เพื ่อเก็บไฟล์ตัวอย่าง PHP นอกจากนี้การเขียนโปรแกรมด้วยภาษา PHP ใน<br />
บางตัวอย่างอาจมีรูปแบบที ่ซับซ้อน ดังนั้นในที ่นี้จะใช้โปรแกรมสําเร็จรูป Adobe Dreamwaver มา<br />
ช่วยในการออกแบบฟอร์มต่างๆ เพื ่อความสะดวกและรวดเร็วมากขึ้น<br />
5.1 การบวก/ลบ/คูณ/หาร ของเลขสองจํานวน<br />
ในส่วนนี้จะแสดงการสร้างสื ่อการสอนผ่านเว็บไซต์ เพื ่อใช้สําหรับการบวก ลบ คูณ และหาร ของ<br />
เลขสองจํานวน ดังต่อไปนี้<br />
1) เปิดโปรแกรม Adobe Dreamweaver CS 5.5 และออกแบบหน้าเว็บไซต์ตามรูปที ่ 5.1<br />
2) ไปที ่เมนู Create New เพื ่อสร้างไฟล์ PHP ขึ้นมา ตามรูปที ่ 5.2<br />
3) กดเลือกที ่กล่องเมนู INSERT → Forms ตามรูปที ่ 5.3<br />
4) กดเลือกที ่เครื ่องมือ Forms และใส่ชื ่อเว็บเพจ calculator.php ที ่ต้องการส่งข้อมูล (ในที ่นี้คือ<br />
เว็บเพจของตนเอง) ซึ ่งรูปแบบการส่งข้อมูลมีอยู่ 2 รูปแบบคือ
140<br />
รูปที ่ 5.1 ฟอร์ม (หน้าเว็บไซต์) สําหรับการบวก ลบ คูณ และหาร ของเลขสองจํานวน<br />
รูปที ่ 5.2 การสร้างไฟล์ PHP<br />
รูปที ่ 5.3 การเลือกเครื ่องมือที ่เกี ่ยวกับฟอร์ม (Forms)<br />
• POST คือรูปแบบการส่งข้อมูลของฟอร์มแบบไม่มีข้อจํากัดขนาดของข้อมูล ซึ ่งจะไม่แสดง<br />
ข้อมูลให้เห็น เหมาะกับข้อมูลที ่ต้องการความปลอดภัย โดยจะใช้ควบคู่กับคําสั่ง $_POST
141<br />
รูปที ่ 5.4 การใส่ชื ่อเว็บเพจ calculator.php ในฟอร์มสําหรับรูปที ่ 5.1<br />
รูปที ่ 5.5 การเลือกเครื ่องมือสําหรับสร้างตาราง (Table)<br />
• GET คือรูปแบบการส่งข้อมูลของฟอร์มแบบผ่านทาง URL ทําให้ผู้ใช้สามารถมองเห็น<br />
ข้อมูลที ่ส่งไปได้ เหมาะกับข้อมูลที ่เป็น keyword ในการค้นหา<br />
อย่างไรก็ตามบทนี้จะใช้เฉพาะวิธี POST ตามที ่แสดงในรูปที ่ 5.4<br />
5) เริ่มสร้างตารางโดยการกดเลือกที่กล่องเมนู INSERT → Common และเลือกเครื ่องมือ<br />
Table ตามรูปที ่ 5.5
142<br />
รูปที ่ 5.6 การตั้งค่าตารางสําหรับรูปที ่ 5.1<br />
รูปที ่ 5.7 การเลือกเครื ่องมือ Text Field และ Button<br />
่ 6) กําหนดค่าพารามิเตอร์ต่างๆ ของตารางดังนี้ (แสดงผลลัพธ์ดังรูปที 5.6)<br />
• Rows เท่ากับ 1<br />
• Columns เท่ากับ 4<br />
• Table width เท่ากับ 31 percent<br />
• Border thickness เท่ากับ 0 pixels<br />
• Cell padding เท่ากับ 4<br />
• Cell spacting เท่ากับ 4<br />
7) กดที ่กล่องเมนู INSERT → Forms ในรูปที ่ 5.3 และเลือกเครื ่องมือ Text Field และ Button<br />
ตามรูปที ่ 5.7
143<br />
ตารางที ่ 5.1 การกําหนดค่าพารามิเตอร์ของ Text Filed และ Button ในรูปที ่ 5.8<br />
อ็อบเจกต์<br />
ชื ่อ คุณสมบัติ ค่าที ่กําหนด<br />
Text Field a1 Char width = 2 <br />
Text Field b1 Char width = 2 <br />
Button submit - + (บวก)<br />
Button submit - - (ลบ)<br />
Button submit - × (คูณ)<br />
Button submit - / (หาร)<br />
Table<br />
สีเหลือง = #FFFF00 ,สีเขียว = #00CC66, สีนํ้าตาลอ่อน = #FF9966<br />
รูปที ่ 5.8 การใส่รายละเอียดเว็บเพจที ่สมบูรณ์<br />
รูปที ่ 5.9 การเลือกเมนู Code<br />
8) กําหนดค่าพารามิเตอร์ของ Text Filed, Button และใส่สีต่างๆ ตามตารางที ่ 5.1 จะได้ผลลัพธ์<br />
ตามรูปที ่ 5.8<br />
9) กดเลือกในส่วนของเมนู Code เพื ่อทําการเขียนโปรแกรมภาษา PHP ตามรูปที ่ 5.9 ทําการ<br />
บันทึกโปรแกรมในชื ่อไฟล์ “calculator.php” ไว้ในสารบบ C:\AppServ\www\phptoscilab
144<br />
โค้ดของการบวก/ลบ/คูณ/หาร ของเลขสองจํานวน<br />
1<br />
2<br />
3<br />
4<br />
5<br />
6<br />
7<br />
8<br />
9<br />
10<br />
11<br />
12<br />
13<br />
14<br />
15<br />
16<br />
17<br />
18<br />
19<br />
20<br />
21<br />
22<br />
23<br />
145<br />
รูปที ่ 5.10 ทดสอบการบวกเลขสองจํานวน<br />
5.2 การหาดีเทอร์มิแนนต์และอินเวอร์สของเมทริกซ์<br />
ในที ่นี้จะแสดงการหาดีเทอร์มิแนนต์และอินเวอร์สของเมทริกซ์ขนาด 2×2 และ 3×3 โดยจะสร้าง<br />
หน้าเพจเป็น 3 หน้าดังนี้<br />
• หน้าเพจกําหนดขนาดของเมทริกซ์<br />
• หน้าเพจสําหรับหาดีเทอร์มิแนนต์และอินเวอร์สของเมทริกซ์ขนาด 2×2<br />
• หน้าเพจสําหรับหาดีเทอร์มิแนนต์และอินเวอร์สของเมทริกซ์ขนาด 3×3<br />
5.2.1 หน้าเพจกําหนดขนาดของเมทริกซ์<br />
การสร้างหน้าเพจกําหนดขนาดของเมทริกซ์ทําได้ดังนี้<br />
1) เปิดโปรแกรม Adobe Dreamweaver CS 5.5 และออกแบบหน้าเว็บไซต์ตามรูปที ่ 5.11<br />
2) ไปที ่เมนู Create New เพื ่อสร้างไฟล์ PHP ขึ้นมา (ตามรูปที ่ 5.2)<br />
3) กดเลือกที ่กล่องเมนู INSERT → Forms (ตามรูปที ่ 5.3)<br />
4) กดเลือกที ่เครื ่องมือ Forms และใส่ชื ่อเว็บเพจ menuinvdet.php ที ่ต้องการส่งข้อมูล (ในที ่นี้<br />
คือเว็บเพจของตนเอง) ตามที ่แสดงในรูปที ่ 5.12<br />
5) เริ่มสร้างตารางโดยการกดเลือกที่กล่องเมนู INSERT → Common และเลือกเครื ่องมือ<br />
Table (ตามรูปที ่ 5.5)
146<br />
รูปที ่ 5.11 หน้าเพจเลือกขนาดเมทริกซ์ 2×2 หรือ 3×3<br />
รูปที ่ 5.12 การใส่ชื ่อเว็บเพจ menuinvdet.php ในฟอร์มสําหรับรูปที ่ 5.11<br />
6) กําหนดค่าพารามิเตอร์ต่างๆ ของตารางดังนี้ (แสดงผลลัพธ์ดังรูปที ่ 5.13)<br />
• Rows: เท่ากับ 1<br />
• Columns: เท่ากับ 1<br />
• Table width: 34 percent<br />
• Border thickness: 1 pixels
147<br />
รูปที ่ 5.13 การตั้งค่าตารางสําหรับรูปที ่ 5.11<br />
รูปที ่ 5.14 การใช้เครื ่องมือ Button สร้างปุ่ม<br />
• Cell padding = 4<br />
• Cell spacting = 4<br />
• Height = 116<br />
• bgcolor = "#CCCCCC"<br />
• bordercolor = "#333333"<br />
7) กดที ่กล่องเมนู INSERT → Forms (ตามรูปที ่ 5.3) และเลือกเครื ่องมือ Button เพื ่อสร้าง<br />
ปุ่ม 2×2 และปุ่ม 3×3 ดังแสดงในรูปที ่ 5.14<br />
8) กดเลือกในส่วนของเมนู Code เพื ่อทําการเขียนโปรแกรมภาษา PHP เพื ่อเชื ่อมโยงไปยังหน้า<br />
เพจการหาดีเทอร์มิแนนต์และอินเวอร์สของเมทริกซ์ขนาด 2×2 และ 3×3 (ตามรูปที ่ 5.9)<br />
และบันทึกโปรแกรมในชื ่อ “menuinvdet.php” ไว้ในสารบบ C:\AppServ\www\phptoscilab
148<br />
โค้ดของหน้าเพจกําหนดขนาดของเมทริกซ์<br />
1<br />
2<br />
3<br />
4<br />
5<br />
6<br />
7<br />
8<br />
9<br />
10<br />
11<br />
12<br />
13<br />
14<br />
15<br />
16<br />
17<br />
18<br />
19<br />
20<br />
21<br />
22<br />
23<br />
24<br />
25<br />
26<br />
27<br />
28<br />
29<br />
30<br />
31<br />
<br />
header('location:invdet3x3.php');<br />
<br />
<br />
<br />
//ข้ามไปหน้า invdet2x2.php<br />
//ข้ามไปหน้า invdet3x3.php<br />
<br />
การหาดีเทอร์มิแนนต์และอินเวอร์สของเมทริกซ์ขนาด 2×2 และ 3×3<br />
<br />
<br />
<br />
<br />
<br />
<br />
เมทริกซ์ขนาด<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
149<br />
a1<br />
a3<br />
a2<br />
a4<br />
output<br />
ดีเทอร์มิแนนต์<br />
out1<br />
out3<br />
อินเวอร์ส<br />
out2<br />
out4<br />
รูปที ่ 5.15 หน้าเพจของการหาดีเทอร์มิแนนต์และอินเวอร์สของเมทริกซ์ขนาด 2×2<br />
รูปที ่ 5.16 รูปแบบตารางของเมทริกซ์ขนาด 2×2 ที ่ใช้ในรูปที ่ 5.15<br />
5.2.2 หน้าเพจสําหรับหาดีเทอร์มิแนนต์และอินเวอร์สของเมทริกซ์ขนาด 2×2<br />
การสร้างหน้าเพจสําหรับการหาดีเทอร์มิแนนต์และอินเวอร์สของเมทริกซ์ขนาด 2 ×2 ทําได้ดังนี้<br />
1) หน้าเพจสําหรับหาดีเทอร์มิแนนต์และอินเวอร์สของเมทริกซ์ขนาด 2×2 จะถูกออกแบบตาม<br />
รูปที ่ 5.15 และการออกแบบตารางตามรูปที ่ 5.16 โดยในส่วนของ Action Form ให้ใส่ชื ่อ<br />
เว็บเพจ invdet2x2.php ที ่ต้องการส่งข้อมูล (ในที ่นี้คือเว็บเพจของตนเอง) ตามรูปที ่ 5.17
150<br />
รูปที ่ 5.17 หน้าเพจของการหาดีเทอร์มิแนนต์และอินเวอร์สของเมทริกซ์ขนาด 2×2 (ต่อ)<br />
ตารางที ่ 5.2 การกําหนดค่าพารามิเตอร์ของ Text Filed และ Button ในรูปที ่ 5.15<br />
อ็อบเจกต์<br />
ชื ่อ คุณสมบัติ ค่าที ่กําหนด<br />
Text Field a1 Char width = 2 <br />
Text Field a2 Char width = 2 <br />
Text Field a3 Char width = 2 <br />
Text Field a4 Char width = 2 <br />
Text Field output Char width = 5 <br />
Text Field out1 Char width = 5 <br />
Text Field out2 Char width = 5 <br />
Text Field out3 Char width = 5 <br />
Text Field out4 Char width = 5 <br />
Button submit - ดีเทอร์มิแนนต์<br />
Button submit - อินเวอร์ส<br />
Title bar - - การหาดีเทอร์มิแนนต์และอินเวอร์สของเมทริกซ์ 2×2<br />
2) กําหนดค่าพารามิเตอร์ของ Text Filed, Button และรายละเอียดสีต่างๆ ตามตารางที่ 5.2<br />
ก็จะได้ผลลัพธ์ตามรูปที ่ 5.15
151<br />
หมายเหตุ การซ่อนผลลัพธ์ อธิบายโดยถ้าตัวแปร $sta เท่ากับ on1 จริงให้แสดงผลลัพธ์ของดีเทอร์มิแนนต์<br />
ในบรรทัดที ่ 45 แต่ถ้าตัวแปรมีค่าเท่ากับ on2 ให้แสดงผลลัพธ์ของอินเวอร์สในบรรทัดที ่ 46 - 52<br />
3) เขียนโค้ดภาษา PHP และบันทึกไฟล์ชื ่อว่า “invdet2x2.php” ดังนี้<br />
โค้ดของหน้าเพจสําหรับหาดีเทอร์มิแนนต์และอินเวอร์สของเมทริกซ์ขนาด 2×2<br />
1<br />
2<br />
3<br />
4<br />
5<br />
6<br />
7<br />
8<br />
9<br />
10<br />
11<br />
12<br />
13<br />
14<br />
15<br />
16<br />
17<br />
18<br />
19<br />
20<br />
21<br />
22<br />
23<br />
24<br />
25<br />
152<br />
26<br />
27<br />
28<br />
29<br />
30<br />
31<br />
32<br />
33<br />
34<br />
35<br />
36<br />
37<br />
38<br />
39<br />
40<br />
41<br />
42<br />
43<br />
44<br />
45<br />
46<br />
47<br />
48<br />
49<br />
50<br />
51<br />
<br />
<br />
<br />
เมทริกซ์ A<br />
153<br />
52<br />
53<br />
54<br />
55<br />
56<br />
57<br />
58<br />
59<br />
154<br />
รูปที ่ 5.19 รูปแบบตารางของเมทริกซ์ขนาด 3×3 ที ่ใช้ในรูปที ่ 5.18<br />
รูปที ่ 5.20 หน้าเพจของการหาดีเทอร์มิแนนต์และอินเวอร์สของเมทริกซ์ขนาด 3×3 (ต่อ)<br />
2) กําหนดค่าพารามิเตอร์ของ Text Filed และ Button ตามตารางที ่ 5.3 ก็จะได้ผลลัพธ์ตามรูป<br />
ที ่ 5.18
155<br />
ตารางที ่ 5.3 การกําหนดค่าพารามิเตอร์ของ Text Filed และ Button ในรูปที ่ 5.18<br />
อ็อบเจกต์<br />
ชื ่อ คุณสมบัติ ค่าที ่กําหนด<br />
Text Field a1 Char width = 2 <br />
Text Field a2 Char width = 2 <br />
Text Field a3 Char width = 2 <br />
Text Field a4 Char width = 2 <br />
Text Field a5 Char width = 2 <br />
Text Field a6 Char width = 2 <br />
Text Field a7 Char width = 2 <br />
Text Field a8 Char width = 2 <br />
Text Field a9 Char width = 2 <br />
Text Field output Char width = 5 <br />
Text Field out1 Char width = 5 <br />
Text Field out2 Char width = 5 <br />
Text Field out3 Char width = 5 <br />
Text Field out4 Char width = 5 <br />
Text Field out5 Char width = 5 <br />
Text Field out6 Char width = 5 <br />
Text Field out7 Char width = 5 <br />
Text Field out8 Char width = 5 <br />
Text Field out9 Char width = 5 <br />
Button submit - ดีเทอร์มิแนนต์<br />
Button submit - อินเวอร์ส<br />
Title bar - - การหาดีเทอร์มิแนนต์และอินเวอร์สของเมทริกซ์ 3×3<br />
หมายเหตุ การซ่อนผลลัพธ์ อธิบายโดยถ้าตัวแปร $sta เท่ากับ on1 จริงให้แสดงผลลัพธ์ของดีเทอร์มิแนนต์<br />
ในบรรทัดที ่ 58 แต่ถ้าตัวแปรมีค่าเท่ากับ on2 ให้แสดงผลลัพธ์ของอินเวอร์สในบรรทัดที ่ 59 - 75<br />
3) เขียนโค้ดภาษา PHP และบันทึกไฟล์ชื ่อว่า “invdet3x3.php” ดังนี้<br />
โค้ดของหน้าเพจสําหรับหาดีเทอร์มิแนนต์และอินเวอร์สของเมทริกซ์ขนาด 3×3<br />
1<br />
2<br />
3<br />
4<br />
156<br />
5<br />
6<br />
7<br />
8<br />
9<br />
10<br />
11<br />
12<br />
13<br />
14<br />
15<br />
16<br />
17<br />
18<br />
19<br />
20<br />
21<br />
22<br />
23<br />
24<br />
25<br />
26<br />
27<br />
$sta2 = 1;<br />
}elseif($_POST["submit"]==" อินเวอร์ส ") {<br />
$cal = "inv";<br />
$sta = "on2";<br />
$sta2 = 2;<br />
$enter="\n";<br />
}<br />
if($_POST[a1]!="" and $_POST[a2]!="" and $_POST[a3]!="" and $_POST[a4]!=""<br />
and $_POST[a5]!="" and $_POST[a6]!="" and $_POST[a7]!="" and $_POST[a8]!=""<br />
and $_POST[a9]!=""){<br />
$code = "[".stripslashes($_POST[a1])." ".stripslashes($_POST[a2])."<br />
".stripslashes($_POST[a3]).";".stripslashes($_POST[a4])." ".stripslashes($_POST[a5])."<br />
".stripslashes($_POST[a6]).";".stripslashes($_POST[a7])." ".stripslashes($_POST[a8])."<br />
".stripslashes($_POST[a9])."]";<br />
$code1 = "output = $cal($code);\notext=string(output);\nfid = mopen('invdet3x3.txt',<br />
'w'); if $sta2==1 then \nmfprintf(fid,'%s\\n',otext);\nmclose(fid);\n elseif $sta2==2 then<br />
\nmfprintf(fid,'%s\\n',otext(1));\nmfprintf(fid,'%s\\n',otext(4));\nmfprintf(fid,'%s\\n',otext(<br />
7));\nmfprintf(fid,'%s\\n',otext(2));\nmfprintf(fid,'%s\\n<br />
',otext(5));\nmfprintf(fid,'%s\\n',otext(8));\nmfprintf(fid,'%s\\n',otext(3));\nmfprintf(fid,'%<br />
s\\n',otext(6));\nmfprintf(fid,'%s\\n',otext(9));\nmclose(fid);\n end\nexit;";<br />
file_put_contents("invdet3x3.sce", $code1); //สร้างไฟล์สคริปต์ชื ่อว่า invdet3x3.sce<br />
$path=$_SERVER["SystemRoot"]; //สร้างตัวแปรที ่อยู่ของ windows<br />
$com = "$path/scilab-4.1.2/bin/Scilex.exe -nwni -nb -f invdet3x3.sce"; //สร้างตัวแปร<br />
สั่ง Run สคริปต์<br />
exec($com); //ประมวลผลไฟล์สคริปต์<br />
$output = file_get_contents("invdet3x3.txt"); //อ่านไฟล์ผลลัพธ์<br />
list($exp1, $exp2, $exp3, $exp4, $exp5, $exp6, $exp7, $exp8, $exp9) = explode("\n",<br />
trim(file_get_contents("invdet3x3.txt")));<br />
//แยกข้อมูลลงตัวแปร 9 ตัว<br />
}<br />
?><br />
<br />
<br />
<br />
<br />
การหาดีเทอร์มิแนนต์ และอินเวอร์สของเมทริกซ์ 3 x 3<br />
157<br />
28<br />
29<br />
30<br />
31<br />
32<br />
33<br />
34<br />
35<br />
36<br />
37<br />
38<br />
39<br />
40<br />
41<br />
42<br />
43<br />
44<br />
45<br />
46<br />
47<br />
48<br />
49<br />
50<br />
51<br />
52<br />
53<br />
54<br />
55<br />
56<br />
57<br />
58<br />
<br />
<br />
<br />
<br />
เมทริกซ์ A<br />
158<br />
59<br />
60<br />
61<br />
62<br />
63<br />
64<br />
65<br />
66<br />
67<br />
68<br />
69<br />
70<br />
71<br />
72<br />
73<br />
74<br />
75<br />
159<br />
76<br />
77<br />
78<br />
79<br />
80<br />
81<br />
82<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
รูปที ่ 5.21 ตัวอย่างการหาผลลัพธ์ของอินเวอร์สเมทริกซ์ขนาด 2×2<br />
5.2.4 ทดสอบการใช้งาน<br />
ในส่วนนี้จะทดสอบการทํางานของเว็บเพจสําหรับหาดีเทอร์มิแนนต์และอินเวอร์สของเมทริกซ์ขนาด<br />
2 ×2 และ 3 ×3 ดังนี้<br />
1) ทดสอบการทํางานของโปรแกรมโดยการเปิดเบราว์เซอร์ IE จากนั้นพิมพ์ URL คือ http://<br />
127.0.0.1/phptoscilab/menuinvdet.php และป้อนข้อมูล โดยแบ่งออกเป็น 2 ตัวอย่างดังนี้<br />
2) สําหรับตัวอย่างเมทริกซ์ขนาด 2×2 เลือกขนาดของเมทริกซ์เป็น 2×2 ในรูปที ่ 5.11 ก็จะได้<br />
เว็บเพจในรูปที ่ 5.15 จากนั้นป้อนข้อมูลเมทริกซ์ A เท่ากับ [1, 2; 3, 4] และกดปุ่มหาค่า<br />
อินเวอร์สของเมทริกซ์ A ก็จะได้ผลลัพธ์ตามรูปที ่ 5.21 หรือถ้ากดปุ่มดีเทอร์มิแนนต์ก็จะได้<br />
ผลลัพธ์เท่ากับ -2
160<br />
รูปที ่ 5.22 ตัวอย่างการหาผลลัพธ์ของอินเวอร์สเมทริกซ์ขนาด 3×3<br />
3) สําหรับตัวอย่างเมทริกซ์ขนาด 3×3 เลือกขนาดของเมทริกซ์เป็น 3×3 ในรูปที ่ 5.11 ก็จะได้<br />
เว็บเพจในรูปที ่ 5.18 จากนั้นป้อนข้อมูลเมทริกซ์ A เท่ากับ [2, 2, 1; 1, 2, 4; 8, 2, 3] และ<br />
กดปุ่มหาค่าอินเวอร์สของเมทริกซ์ A จะได้ผลลัพธ์ตามรูปที ่ 5.22 หรือถ้ากดปุ่มดีเทอร์มิแนนต์ก็<br />
จะได้ผลลัพธ์เท่ากับ 40<br />
5.3 การพิสูจน์คุณสมบัติของเมทริกซ์<br />
ในส่วนนี้จะแสดงตัวอย่างการใช้โปรแกรม PHP สร้างเว็บเพจสําหรับพิสูจน์คุณสมบัติของเมทริกซ์<br />
3 แบบคือ<br />
• (kA) T = kA T<br />
• (A + B) T = A T + B T<br />
• (AB) T = B T A T<br />
เมื ่อ k คือค่าคงตัว, A และ B คือเมทริกซ์จัตุรัสขนาด 2×2, และ (⋅) T คือทรานส์โพสของเมทริกซ์<br />
ดังรายละเอียดต่อไปนี้<br />
5.3.1 การพิสูจน์คุณสมบัติ (kA) T = kA T<br />
การสร้างหน้าต่างส่วนต่อประสานเพื ่อใช้ในการพิสูจน์คุณสมบัติ (kA) T = kA T ทําได้ดังนี้<br />
1) เปิดโปรแกรม Adobe Dreamwaver CS 5.5 ออกแบบฟอร์มตามรูปที ่ 5.23 และออกแบบ<br />
รูปแบบตารางตามรูปที ่ 5.24 โดยในส่วนของ Action Form ให้ใส่ชื ่อเว็บเพจ matrix01.php<br />
ดังแสดงในรูปที ่ 5.25
161<br />
k a1 a2<br />
a3<br />
a4<br />
k1<br />
a11<br />
k2<br />
a22<br />
k11<br />
a111<br />
k11<br />
a222<br />
I<br />
k33<br />
a333<br />
k1<br />
a11<br />
k33<br />
a333<br />
k33<br />
a333<br />
II<br />
ao1<br />
ao3<br />
ao4<br />
ao2<br />
ao11<br />
ao33<br />
ao44<br />
ao22<br />
รูปที ่ 5.23 เว็บเพจของการพิสูจน์คุณสมบัติ (kA) T = kA T<br />
ตารางที ่ 5.4 การกําหนดค่าพารามิเตอร์ของ Text Filed และ Button ในส่วนของ Input ในรูปที ่ 5.23<br />
อ็อบเจกต์<br />
ชื ่อ คุณสมบัติ ค่าที ่กําหนด<br />
Text Field k Char width = 2 <br />
Text Field a1 Char width = 2 <br />
Text Field a2 Char width = 2 <br />
Text Field a3 Char width = 2 <br />
Text Field a4 Char width = 2 <br />
Button submit2 - คํานวณ<br />
2) กําหนดค่าพารามิเตอร์ของ Text Filed และ Button ในฟอร์มต่างๆ ตามตารางที ่ 5.4 – 5.6
162<br />
ตารางที ่ 5.5 การกําหนดค่าพารามิเตอร์ของ Text Filed ในส่วนของ Output I ในรูปที ่ 5.23<br />
อ็อบเจกต์<br />
ชื ่อ คุณสมบัติ ค่าที ่กําหนด<br />
Text Field k1 Char width = 2 <br />
Text Field a11 Char width = 2 <br />
Text Field k2 Char width = 2 <br />
Text Field a22 Char width = 2 <br />
Text Field k3 Char width = 2 <br />
Text Field a33 Char width = 2 <br />
Text Field k4 Char width = 2 <br />
Text Field a44 Char width = 2 <br />
Text Field k11 Char width = 2 <br />
Text Field a111 Char width = 2 <br />
Text Field k22 Char width = 2 <br />
Text Field a222 Char width = 2 <br />
Text Field k33 Char width = 2 <br />
Text Field a333 Char width = 2 <br />
Text Field k44 Char width = 2 <br />
Text Field a444 Char width = 2 <br />
ตารางที ่ 5.6 การกําหนดค่าพารามิเตอร์ของ Text Filed ในส่วนของ Output II ในรูปที ่ 5.23<br />
อ็อบเจกต์<br />
ชื ่อ คุณสมบัติ ค่าที ่กําหนด<br />
Text Field ao1 Char width = 2 <br />
Text Field ao2 Char width = 2 <br />
Text Field ao3 Char width = 2 <br />
Text Field ao4 Char width = 2 <br />
Text Field ao11 Char width = 2 <br />
Text Field ao22 Char width = 2 <br />
Text Field ao33 Char width = 2 <br />
Text Field ao44 Char width = 2
รูปที ่ 5.24 รูปแบบตารางของการพิสูจน์คุณสมบัติ (kA) T = kA T<br />
163
164<br />
รูปที ่ 5.25 การออกแบบการพิสูจน์คุณสมบัติ (kA) T = kA T<br />
3) เขียนโค้ดภาษา PHP และบันทึกไฟล์ชื ่อว่า “matrix01.php” ดังนี้<br />
โค้ดของหน้าเพจสําหรับการพิสูจน์คุณสมบัติ (kA) T = kA T<br />
1<br />
2<br />
3<br />
4<br />
165<br />
5<br />
6<br />
7<br />
8<br />
9<br />
10<br />
11<br />
12<br />
13<br />
14<br />
15<br />
16<br />
17<br />
18<br />
19<br />
20<br />
21<br />
22<br />
23<br />
24<br />
25<br />
26<br />
27<br />
28<br />
29<br />
30<br />
31<br />
$code1 = "output1 = ($k*$a)'\noutput2 = $k*$a'\noutput1 =<br />
iconvert(output1,0);\nsavematfile('output1.txt','output1');\noutput2 =<br />
iconvert(output2,0);\nsavematfile('output2.txt','output2');\nexit;";<br />
file_put_contents("matrix01.sce", $code1); //สร้างไฟล์สคริปต์ชื ่อว่า invdet2x2.sce<br />
$path=$_SERVER["SystemRoot"]; //สร้างตัวแปรที ่อยู่ของ windows<br />
$com = "$path/scilab-4.1.2/bin/Scilex.exe -f matrix01.sce"; //สร้างตัวแปรสั่ง Run<br />
สคริปต์<br />
exec($com); //ประมวลผลไฟล์สคริปต์<br />
list($out1, $out2, $out3, $out4) = explode(" ",<br />
trim(file_get_contents("output1.txt"))); //แยกข้อมูลลงตัวแปร 4 ตัว<br />
list($out11, $out22, $out33, $out44) = explode(" ",<br />
trim(file_get_contents("output2.txt"))); //แยกข้อมูลลงตัวแปร 4 ตัว<br />
}<br />
?><br />
<br />
<br />
<br />
<br />
การพิสูจน์คุณสมบัติที ่ 1<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
คุณสมบัติที ่ 1(KA)T =<br />
KAT<br />
<br />
<br />
166<br />
32<br />
33<br />
34<br />
35<br />
36<br />
37<br />
38<br />
39<br />
40<br />
41<br />
42<br />
43<br />
44<br />
45<br />
46<br />
47<br />
48<br />
49<br />
50<br />
51<br />
Input<br />
<br />
<br />
<br />
k =<br />
167<br />
63<br />
64<br />
65<br />
66<br />
67<br />
68<br />
69<br />
70<br />
71<br />
72<br />
73<br />
74<br />
75<br />
76<br />
77<br />
78<br />
79<br />
80<br />
81<br />
82<br />
83<br />
84<br />
85<br />
86<br />
87<br />
88<br />
89<br />
90<br />
91<br />
92<br />
93<br />
<br />
<br />
<br />
<br />
<br />
<br />
Output<br />
<br />
<br />
<br />
<br />
<br />
<br />
(<br />
<br />
168<br />
94<br />
95<br />
96<br />
97<br />
98<br />
99<br />
100<br />
101<br />
102<br />
103<br />
104<br />
105<br />
106<br />
107<br />
108<br />
109<br />
110<br />
111<br />
112<br />
113<br />
114<br />
115<br />
116<br />
117<br />
118<br />
119<br />
120<br />
121<br />
122<br />
123<br />
124<br />
<br />
<br />
T =<br />
<br />
<br />
<br />
169<br />
125<br />
126<br />
127<br />
128<br />
129<br />
130<br />
131<br />
132<br />
133<br />
134<br />
135<br />
136<br />
137<br />
138<br />
139<br />
140<br />
141<br />
142<br />
143<br />
144<br />
145<br />
146<br />
147<br />
148<br />
149<br />
150<br />
151<br />
<br />
C1 =<br />
<br />
<br />
[<br />
<br />
170<br />
152<br />
153<br />
154<br />
155<br />
156<br />
157<br />
158<br />
159<br />
160<br />
161<br />
162<br />
163<br />
164<br />
165<br />
166<br />
167<br />
168<br />
171<br />
รูปที ่ 5.26 เว็บเพจแสดงผลลัพธ์ของการพิสูจน์คุณสมบัติ (kA) T = kA T<br />
a1<br />
a2<br />
b1<br />
b2<br />
a3<br />
a4<br />
b3<br />
b4<br />
a11 a22<br />
b11<br />
b22<br />
a111 a222<br />
b111<br />
b222<br />
I<br />
II<br />
a33 a44<br />
ao1<br />
b33 b44<br />
ao3 ao4<br />
ao2<br />
ao11<br />
a333 a444<br />
ao33 ao44<br />
b333 b444<br />
ao22<br />
รูปที ่ 5.27 เว็บเพจของการพิสูจน์คุณสมบัติ (A+B) T = A T + B T
172<br />
รูปที ่ 5.28 รูปแบบตารางของการพิสูจน์คุณสมบัติ (A+B) T = A T + B T
173<br />
รูปที ่ 5.29 การออกแบบการพิสูจน์คุณสมบัติ (A+B) T = A T + B T<br />
ตารางที ่ 5.7 การกําหนดค่าพารามิเตอร์ของ Text Filed ในส่วนของ Input A ในรูปที ่ 5.27<br />
อ็อบเจกต์<br />
ชื ่อ คุณสมบัติ ค่าที ่กําหนด<br />
Text Field a1 Char width = 2 <br />
Text Field a2 Char width = 2 <br />
Text Field a3 Char width = 2 <br />
Text Field a4 Char width = 2
174<br />
ตารางที ่ 5.8 การกําหนดค่าพารามิเตอร์ของ Text Filed และ Button ในส่วนของ Input B ในรูปที ่ 5.27<br />
อ็อบเจกต์<br />
ชื ่อ คุณสมบัติ ค่าที ่กําหนด<br />
Text Field b1 Char width = 2 <br />
Text Field b2 Char width = 2 <br />
Text Field b3 Char width = 2 <br />
Text Field b4 Char width = 2 <br />
Button submit2 - คํานวณ<br />
ตารางที ่ 5.9 การกําหนดค่าพารามิเตอร์ของ Text Filed ในส่วนของ Output I ในรูปที ่ 5.27<br />
อ็อบเจกต์<br />
ชื ่อ คุณสมบัติ ค่าที ่กําหนด<br />
Text Field a11 Char width = 2 <br />
Text Field a22 Char width = 2 <br />
Text Field a33 Char width = 2 <br />
Text Field a44 Char width = 2 <br />
Text Field b11 Char width = 2 <br />
Text Field b22 Char width = 2 <br />
Text Field b33 Char width = 2 <br />
Text Field b44 Char width = 2 <br />
Text Field a111 Char width = 2 <br />
Text Field a222 Char width = 2 <br />
Text Field a333 Char width = 2 <br />
Text Field a444 Char width = 2 <br />
Text Field b111 Char width = 2 <br />
Text Field b222 Char width = 2 <br />
Text Field b333 Char width = 2 <br />
Text Field b444 Char width = 2
175<br />
ตารางที ่ 5.10 การกําหนดค่าพารามิเตอร์ของ Text Filed ในส่วนของ Output II ในรูปที ่ 5.27<br />
อ็อบเจกต์<br />
ชื ่อ คุณสมบัติ ค่าที ่กําหนด<br />
Text Field ao1 Char width = 2 <br />
Text Field ao2 Char width = 2 <br />
Text Field ao3 Char width = 2 <br />
Text Field ao4 Char width = 2 <br />
Text Field ao11 Char width = 2 <br />
Text Field ao22 Char width = 2 <br />
Text Field ao33 Char width = 2 <br />
Text Field ao44 Char width = 2 <br />
3) เขียนโค้ดภาษา PHP และบันทึกไฟล์ชื ่อว่า “matrix02.php” ดังนี้<br />
โค้ดของหน้าเพจสําหรับการพิสูจน์คุณสมบัติ (A+B) T = A T + B T<br />
1<br />
2<br />
3<br />
4<br />
5<br />
6<br />
7<br />
8<br />
9<br />
10<br />
11<br />
12<br />
13<br />
14<br />
15<br />
176<br />
16<br />
17<br />
18<br />
19<br />
20<br />
21<br />
22<br />
23<br />
24<br />
25<br />
26<br />
27<br />
28<br />
29<br />
30<br />
31<br />
32<br />
33<br />
34<br />
35<br />
36<br />
37<br />
38<br />
39<br />
40<br />
41<br />
42<br />
43<br />
44<br />
45<br />
46<br />
<br />
การพิสูจน์คุณสมบัติที ่ 2<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
คุณสมบัติที ่ 2 (A+B)T = AT + BT<br />
<br />
<br />
<br />
<br />
Input<br />
<br />
<br />
"center"><br />
<br />
INPUT A =<br />
177<br />
47<br />
48<br />
49<br />
50<br />
51<br />
52<br />
53<br />
54<br />
55<br />
56<br />
57<br />
58<br />
59<br />
60<br />
61<br />
62<br />
63<br />
64<br />
65<br />
66<br />
67<br />
68<br />
69<br />
70<br />
71<br />
72<br />
73<br />
74<br />
75<br />
76<br />
77<br />
78<br />
79<br />
80<br />
178<br />
81<br />
82<br />
83<br />
84<br />
85<br />
86<br />
87<br />
88<br />
89<br />
90<br />
91<br />
92<br />
93<br />
94<br />
95<br />
96<br />
97<br />
98<br />
99<br />
100<br />
101<br />
102<br />
103<br />
104<br />
105<br />
106<br />
107<br />
108<br />
109<br />
<br />
<br />
<br />
<br />
<br />
<br />
Output<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
(<br />
<br />
179<br />
110<br />
111<br />
112<br />
113<br />
114<br />
115<br />
116<br />
117<br />
118<br />
119<br />
120<br />
121<br />
122<br />
123<br />
124<br />
125<br />
126<br />
127<br />
128<br />
129<br />
130<br />
131<br />
132<br />
133<br />
134<br />
135<br />
136<br />
137<br />
180<br />
138<br />
139<br />
140<br />
141<br />
142<br />
143<br />
144<br />
145<br />
146<br />
147<br />
148<br />
149<br />
150<br />
151<br />
152<br />
153<br />
154<br />
155<br />
156<br />
157<br />
158<br />
159<br />
160<br />
161<br />
162<br />
163<br />
164<br />
165<br />
<br />
181<br />
166<br />
167<br />
168<br />
169<br />
170<br />
171<br />
172<br />
173<br />
174<br />
175<br />
176<br />
177<br />
178<br />
179<br />
180<br />
181<br />
182<br />
183<br />
184<br />
185<br />
186<br />
187<br />
188<br />
189<br />
190<br />
191<br />
192<br />
<br />
182<br />
193<br />
194<br />
195<br />
196<br />
197<br />
198<br />
199<br />
200<br />
201<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
รูปที ่ 5.30 เว็บเพจแสดงผลลัพธ์ของการพิสูจน์คุณสมบัติ (A+B) T = A T + B T<br />
4) ทดสอบการทํางานของโปรแกรมโดยการเปิดเบราว์เซอร์ IE จากนั้นพิมพ์ URL คือ 127.0.0.1/<br />
phptoscilab/matrix02.php จากนั้นป้อนข้อมูลเมทริกซ์ A เท่ากับ [2, 3; 4, 5] และเมทริกซ์<br />
A เท่ากับ [4, 5; 6, 7] และกดปุ่ม “คํานวณ” หนึ ่งครั้ง ก็จะได้ผลลัพธ์ตามรูปที ่ 5.30
183<br />
รูปที ่ 5.31 การเปลี ่ยนแถบชื ่อเรื ่องด้วยโปรแกรม Dreamweaver<br />
รูปที ่ 5.32 การเปลี ่ยนชื ่อไฟล์ของฟอร์มเว็บไซต์เป็น matrix03.php ด้วยโปรแกรม Dreamweaver<br />
5.2.3 การพิสูจน์คุณสมบัติ (AB) T = A T B T<br />
ในทํานองเดียวกันการพิสูจน์คุณสมบัติที ่สามจะออกแบบตามรูปที ่ 5.31 โดยทําตามขั้นตอนดังนี้<br />
1) เปิดโปรแกรม Adobe Dreamwaver CS 5.5 และทําการคัดลอกโค้ดหรือไฟล์ตัวอย่างการ<br />
พิสูจน์คุณสมบัติที ่ 2 โดยให้แก้ไขโค้ดบางบรรทัดและบันทึกเป็นชื ่อไฟล์ว่า “matrix03.php”<br />
ดังต่อไปนี้<br />
• บรรทัดที ่ 5 เปลี ่ยนเครื ่องหมายบวกเป็นเครื ่องหมายคูณดังนี้<br />
5 $code1 = "output1 = ($a*$b)'\noutput2 = $a'*$b'\noutput1 =<br />
iconvert(output1,0);\nsavematfile('output1.txt','output1');\noutput2 =<br />
iconvert(output2,0);\nsavematfile('output2.txt','output2');\nexit;";<br />
• บรรทัดที ่ 6 เปลี ่ยนชื ่อไฟล์เป็น matrix03.sce ดดังนี้<br />
6 file_put_contents("matrix03.sce", $code1);<br />
• บรรทัดที ่ 17 เปลี ่ยนชื ่อแถบชื ่อเรื ่องเป็น “การพิสูจน์คุณสมบัติที ่ 3” ดังนี้ (รูปที ่ 5.31)<br />
17 การพิสูจน์คุณสมบัติที ่ 3<br />
• บรรทัดที ่ 26 แก้ไขชื ่อไฟล์ของฟอร์มเว็บไซต์เป็น matrix03.php ดังนี้ (รูปที ่ 5.32)<br />
26
184<br />
รูปที ่ 5.33 การเปลี ่ยนสมการของคุณสมบัติที ่ 2 เป็นคุณสมบัติที ่ 3<br />
รูปที ่ 5.34 การเปลี ่ยนเครื ่องหมายบวกเป็นเครื ่องหมายคูณ “×”<br />
• บรรทัดที ่ 30 แก้ไขสมการของคุณสมบัติที ่ 2 เป็นคุณสมบัติที ่ 3 ดังนี้ (รูปที ่ 5.33)<br />
30 คุณสมบัติที ่ 3 (AB)T = AT<br />
BT <br />
• บรรทัดที ่ 105 และ 134 เปลี ่ยนเครื ่องหมายบวกเป็นเครื ่องหมายคูณดังนี้ (รูปที ่ 5.34)<br />
105 ×<br />
134 ×<br />
2) ทดสอบการทํางานของโปรแกรมโดยการเปิดเบราว์เซอร์ IE จากนั้นพิมพ์ URL คือ 127.0.0.1/<br />
phptoscilab/matrix03.php จากนั้นป้อนข้อมูลเมทริกซ์ A เท่ากับ [2, 3; 4, 5] และเมทริกซ์<br />
B เท่ากับ [4, 5; 6, 7] แล้วกดปุ่ม “คํานวณ” หนึ ่งครั้ง ก็จะได้ผลลัพธ์ตามรูปที ่ 5.35<br />
5.3 การหาค่าลอการิทึมฐานใดๆ<br />
ในส่วนนี้จะแสดงตัวอย่างการใช้โปรแกรม PHP สร้างเว็บเพจสําหรับหาค่าลอการิทึมฐานใดๆ ดังนี้
185<br />
รูปที ่ 5.35 เว็บเพจแสดงผลลัพธ์ของการพิสูจน์คุณสมบัติ (AB) T = A T B T<br />
รูปที ่ 5.36 ฟอร์มการหาหาค่าลอการิทึมฐานใดๆ<br />
1) เริ ่มต้นเปิดโปรแกรม Adobe Dreamwaver CS 5.5 ขึ้นมา และออกแบบฟอร์มตามรูปที ่ 5.36
186<br />
รูปที ่ 5.37 ตารางในส่วนป้อนข้อมูลของรูปที ่ 5.36<br />
รูปที ่ 5.38 ตัวอย่างการใส่สีของพื ้นตารางด้วย Tab Editor<br />
รูปที ่ 5.39 การสร้างตารางในส่วนแสดงผลลัพธ์ของรูปที ่ 5.36<br />
2) สร้างฟอร์มและออกแบบตารางในส่วนป้อนข้อมูล และใส่ Textbox ตามรูปที ่ 5.37 โดยใส่สี<br />
เส้นขอบเท่ากับ #FFCC00 และสีพื ้นเท่ากับ #FFFF99 ผ่านทาง Tab Editor ตามรูปที ่ 5.38<br />
3) ออกแบบตารางในส่วนผลลัพธ์ Textbox และปุ่มคํานวณ ตามรูปที ่ 5.39 – 5.40 และใส่สี<br />
เส้นขอบเท่ากับ #CCCC00 และสีพื ้นเท่ากับ #CCFF99 (ผ่านทาง Tab Editor)
187<br />
รูปที ่ 5.40 การสร้างปุ่มคํานวณของรูปที ่ 5.36<br />
ตารางที ่ 5.11 การกําหนดค่าพารามิเตอร์ของ Text Filed และ Button ในรูปที ่ 5.36<br />
อ็อบเจกต์<br />
ชื ่อ คุณสมบัติ ค่าที ่กําหนด<br />
Text Field x Char width = 10 <br />
Text Field base Char width = 10 <br />
Button submit2 - คํานวณ<br />
Text Field out Char width = 10 <br />
รูปที ่ 5.41 การกําหนดชื ่อเว็บเพจในฟอร์ม Action ของรูปที ่ 5.36<br />
4) กําหนดค่าพารามิเตอร์ของ Text Filed และ Button ในฟอร์มต่างๆ ตามตารางที ่ 5.11
188<br />
5) ในส่วนของฟอร์ม Action ให้ใส่ชื ่อเว็บเพจ logx.php ตามรูปที ่ 5.41<br />
6) เขียนโค้ดภาษา PHP และบันทึกไฟล์ชื ่อว่า “logx.php” ดังนี้<br />
โค้ดของหน้าเพจสําหรับการหาค่าลอการิทึมฐานใดๆ<br />
1<br />
2<br />
3<br />
4*<br />
5<br />
6<br />
7<br />
8<br />
9<br />
10<br />
11<br />
12<br />
13<br />
14<br />
15<br />
16<br />
17<br />
18<br />
19<br />
20<br />
21<br />
22<br />
23<br />
24<br />
25<br />
26<br />
27<br />
28<br />
189<br />
29<br />
30<br />
31<br />
32<br />
33<br />
34<br />
35<br />
36<br />
37<br />
38<br />
39<br />
40<br />
41<br />
42<br />
43<br />
44<br />
45<br />
46<br />
47<br />
48<br />
49<br />
50<br />
51<br />
<br />
<br />
<br />
<br />
Log xBase = <br />
190<br />
รูปที ่ 5.42 ตัวอย่างการหาค่าลอการิทึมของ 8 ฐาน 2 ซึ ่งมีค่าเท่ากับ 3 ผ่านเว็บไซต์<br />
ตารางที ่ 5.12 การกําหนดค่าพารามิเตอร์ของ Text Filed และ Button ในรูปที ่ 5.43<br />
อ็อบเจกต์<br />
ชื ่อ คุณสมบัติ ค่าที ่กําหนด<br />
Text Field p Char width = 20 <br />
Text Field q Char width = 20 <br />
Button Submit - คํานวณ<br />
OUTPUT<br />
191<br />
รูปที ่ 5.43 เว็บเพจของการบวกและลบสมการหหุนาม<br />
รูปที ่ 5.44 การสร้างตารางในส่วนป้อนข้อมูลของรูปที ่ 5.43
192<br />
193<br />
6) เขียนโค้ดภาษา PHP และบันทึกไฟล์ชื ่อว่า “polyx.php” ดังนี้<br />
โค้ดของหน้าเพจสําหรับการบวกและลบสมการพหุนาม<br />
1<br />
2<br />
3<br />
4<br />
5<br />
6*<br />
7<br />
8<br />
9<br />
10<br />
11<br />
12<br />
13<br />
14<br />
15<br />
16<br />
17<br />
18<br />
19<br />
20<br />
21<br />
22<br />
23<br />
24<br />
25<br />
194<br />
26<br />
27<br />
28<br />
29<br />
30<br />
31<br />
32<br />
33<br />
34<br />
35<br />
36<br />
37<br />
38<br />
39<br />
40<br />
41<br />
42<br />
43<br />
44<br />
45<br />
46<br />
47<br />
48<br />
49<br />
50<br />
51<br />
52<br />
53<br />
54<br />
55<br />
56<br />
57<br />
<br />
<br />
p(x) <br />
=<br />
195<br />
58<br />
59<br />
60<br />
<br />
<br />
<br />
หมายเหตุ บรรทัดที ่ 6 จะมีการเรียกฟังก์ชันที ่สร้างขึ้นใหม่จากโปรแกรม SCILAB ซึ ่งมีการ<br />
ทํางานเหมือนกับฟังก์ชัน pohtml01.sci, pohtml02.sci และ pohtml03.sci ที ่ใช้ในหัวข้อที ่<br />
3.5 โดยจะต้องเก็บไฟล์ทั้งหมดนี้ไว้ที ่สารบบ C:\AppServ\www\phptoscilab<br />
7) ทดสอบการทํางานของโปรแกรมโดยการเปิดเบราว์เซอร์ IE จากนั้นพิมพ์ URL คือ 127.0.0.1/<br />
phptoscilab/polyx.php จากนั้นป้อนข้อมูลที ่อยู่ในรูปของ LaTeX ดังนี้ p(x) เท่ากับเลข<br />
x^2 + 50 และ q(x) เท่ากับ x^2 + 25 แล้วกดปุ่ม “คํานวณ” หนึ ่งครั้งก็จะได้ผลลัพธ์ตาม<br />
รูปที ่ 5.47<br />
รูปที ่ 5.47 ตัวอย่างการการบวกและลบสมการหหุนามผ่านเว็บไซต์
196<br />
รูปที ่ 5.48 เว็บเพจของการวาดกราฟสองมิติ<br />
5.5 การวาดกราฟสองมิติ<br />
ในส่วนนี้จะแสดงตัวอย่างการใช้โปรแกรม PHP สร้างเว็บเพจสําหรับวาดกราฟสองมิติดังนี้<br />
1) เริ ่มต้นเปิดโปรแกรม Adobe Dreamwaver CS 5.5 ขึ้นมา และออกแบบฟอร์มตามรูปที ่ 5.48<br />
2) สร้างฟอร์มและออกแบบตารางในส่วนป้อนข้อมูล และใส่ Textbox และ Button ตามรูปที ่<br />
5.49 โดยสีพื ้นเท่ากับ #FFFF99 (ผ่านทาง Tab Editor)<br />
3) ออกแบบในส่วนผลลัพธ์ (แสดงผลลัพธ์เป็นรูปภาพ) โดยใช้เครื ่องมือตามรูปที ่ 5.50<br />
4) กําหนดค่าพารามิเตอร์ของ Text Filed และ Button ในฟอร์มต่างๆ ตามตารางที ่ 5.11<br />
5) ในส่วนของฟอร์ม Action ให้ใส่ชื ่อเว็บเพจ v2d.php ตามรูปที ่ 5.51
197<br />
รูปที ่ 5.49 การสร้างตารางในส่วนป้อนข้อมูลของรูปที ่ 5.48<br />
198<br />
รูปที ่ 5.51 การกําหนดชื ่อเว็บเพจในฟอร์ม Action ของรูปที ่ 5.48<br />
6) เขียนโค้ดภาษา PHP และบันทึกไฟล์ชื ่อว่า “logx.php” ดังนี้<br />
โค้ดของหน้าเพจสําหรับการวาดกราฟสองมิติ<br />
1<br />
2<br />
3<br />
4<br />
5<br />
6<br />
7<br />
8<br />
9<br />
10<br />
199<br />
11<br />
12<br />
13<br />
14<br />
15<br />
16<br />
17<br />
18<br />
19<br />
20<br />
21<br />
22<br />
23<br />
24<br />
25<br />
26<br />
27<br />
28<br />
29<br />
30<br />
31<br />
32<br />
33<br />
34<br />
35<br />
36<br />
37<br />
38<br />
39<br />
40<br />
41<br />
42<br />
?><br />
<br />
<br />
<br />
<br />
การใช้งานวาดกราฟ 2 มิติ<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
การใช้งานวาดกราฟ 2 มิติ<br />
<br />
<br />
<br />
200<br />
43<br />
44<br />
45<br />
46<br />
47<br />
48<br />
49<br />
50<br />
51<br />
52<br />
53<br />
54<br />
55<br />
56<br />
57<br />
58<br />
59<br />
60<br />
61<br />
62<br />
63<br />
64<br />
65<br />
66<br />
67<br />
68<br />
69<br />
70<br />
71<br />
72<br />
<br />
:<br />
201<br />
กราฟสองมิติ<br />
รูปที ่ 5.52 ตัวอย่างการวาดกราฟสองมิติของสมการ y = sin(2*%pi*f*x) ผ่านเว็บไซต์<br />
7) ทดสอบการทํางานของโปรแกรมโดยการเปิดเบราว์เซอร์ IE จากนั้นพิมพ์ URL คือ 127.0.0.1/<br />
phptoscilab/v2d.php จากนั้น ทําการวาดกราฟสองมิติ เช่น ถ้าต้องการวาดรูปสัญญาณ y =<br />
sin(2πfx) เมื ่อ f คือความถี ่มีหน่วยเป็นเฮิรตซ์ ก็ให้ป้อนข้อมูลของอินพุต x = 0 : 0.01 : 2,<br />
f =1 และ y = sin(2*%pi*f*x) แล้วกดปุ่ม “คํานวณ” หนึ ่งครั้งก็จะได้ผลลัพธ์ตามรูปที ่ 5.52<br />
5.6 สรุปท้ายบท<br />
บทนี้ได้นําเสนอตัวอย่างวิธีการสร้างสื ่อการสอนผ่านเว็บไซต์โดยใช้โปรแกรมภาษา PHP ร่วมกับ<br />
โปรแกรม SCILAB ซึ ่งประกอบด้วย การบวก/ลบ/คูณ/หาร ของเลขสองจํานวน การหาดีเทอร์<br />
มิแนนต์และอินเวอร์สของเมทริกซ์ การพิสูจน์คุณสมบัติของเมทริกซ์ การหาค่าลอการิทึมฐานใดๆ<br />
การบวกและลบสมการพหุนาม และการวาดกราฟสองมิติ เพื ่อเป็นแนวทางให้ผู้อ่านสามารถนําไป<br />
พัฒนาต่อยอดหรือประยุกต์ใช้งานด้านอื ่นได้
202<br />
5.7 แบบฝึกหัดท้ายบท<br />
1. จงเขียนโปรแกรมหาค่าจํานวนเฉพาะตั้งแต่ 1 ถึง N ผ่านเว็บไซต์<br />
2. จงเขียนโปรแกรมหาค่าตัวคูณร่วมน้อย (ครน.) จํานวน 3 จํานวน ผ่านเว็บไซต์<br />
3. จงสร้างโปรแกรมแก้สมการพหุนามที ่เป็นฟังก์ชันของตัวแปรเดียว ผ่านเว็บไซต์<br />
4. จงเขียนโปรแกรมวาดกราฟ 2 มิติดังรูปที ่ 1.5 (คําสั่ง polarplot) ผ่านเว็บไซต์<br />
5. จงเขียนโปรแกรมวาดกราฟ 3 มิติดังรูปที ่ 1.6 (คําสั่ง plot3d) ผ่านเว็บไซต์
203<br />
บทที ่ 6<br />
ความรู้เบื ้องต้นโปรแกรม SWISH Max<br />
ในบทนี้จะอธิบายพื ้นฐานการใช้งานโปรแกรม SWISH Max [11 – 13] ที ่ใช้สําหรับสร้างไฟล์ภาพ<br />
เคลื ่อนไหวแบบแฟลช (flash animation) โดยจะเริ ่มจากเครื ่องมือต่างๆ ของโปรแกรม SWISH Max<br />
และคําสั่งพื ้นฐานสําหรับการนําไปประยุกต์ใช้งานร่วมกับโปรแกรม SCILAB<br />
6.1 ประวัติความเป็นมาของโปรแกรม SWISH Max<br />
SWISH Max เป็นโปรแกรมที ่พัฒนาโดยบริษัท SWiSHzone.com สําหรับใช้สร้างงานทางด้าน<br />
กราฟิก เช่น โลโก้โฆษณา แถบประกาศ เมนู รวมถึงการสร้างเว็บไซต์แบบพลวัต (dynamic) ที ่<br />
สามารถโต้ตอบกับผู้ใช้ได้ นอกจากนี้ยังสามารถสร้างงานแบบภาพเคลื ่อนไหว (animation) เช่น<br />
การสร้างรูปภาพเคลื ่อนไหวที ่มีการเล่นเสียงเพลงพร้อมกันในเวลาเดียวกัน เหมือนโปรแกรมแฟลช<br />
แต่ทําได้สะดวกและรวดเร็วกว่า เพราะฉะนั้นจึงทําให้ SWISH Max เป็นโปรแกรมที ่น่าสนใจสําหรับ<br />
ผู้ที ่ต้องการสร้างงานแบบภาพเคลื ่อนไหวเพื ่อนําเสนองานผ่านทางเว็บไซต์ รวมถึงการออกแบบ<br />
และพัฒนาเว็บไซต์ให้มีรูปแบบใหม่ที ่น่าสนใจ<br />
โดยทั่วไปโปรแกรม SWISH Max มีข้อดีดังนี้<br />
• มีเครื ่องมือต่างๆ ที ่ช่วยสร้างชิ้นงานได้หลากหลาย (ทั้งการสร้างภาพนิ ่งและภาพเคลื ่อนไหว) ที ่<br />
สามารถใส่ลูกเล่น (effect) ได้มากกว่า 230 แบบ<br />
• ควบคุมการทํางานด้วยสคริปต์ (script) เพื ่อให้งานที ่สร้างขึ้นเป็นไปตามความต้องการ<br />
• แสดงผลในโปรแกรม Flash Player, Browser และ Media Player ได้โดยไม่ต้องติดตั้งโปรแกรม<br />
Macromedia Flash ในเครื ่องคอมพิวเตอร์<br />
• นําเสนองานในรูปแบบของไฟล์ Shockwave Flash (.swf) ทําให้นําไปใช้สร้างเว็บเพจได้<br />
• แปลงเป็นไฟล์ avi เพื ่อใช้ในการตัดต่อภาพยนตร์ได้<br />
โปรแกรม SWISH Max มีลิขสิทธิ์ซอฟต์แวร์ อย่างไรก็ตามหนังสือเล่มนี้จะใช้โปรแกรม<br />
SWISH Max4 เวอร์ชันทดลอง (trail version) ซึ ่งดาวน์โหลดได้ที ่เว็บไซต์ www.swishzone.com
204<br />
(ก)<br />
ยอมรับข้อตกลงการใช้งาน<br />
(ข)<br />
ติดตั้งตัวเข้ารหัส LAME<br />
ACM เพิ ่มเติม<br />
เลือกสารบบในการติดตั้งโปรแกรม<br />
(ค)<br />
(ง)<br />
ติดตั้งโปรแกรม<br />
(จ)<br />
(ฉ)<br />
รูปที ่ 6.1 ขั้นตอนการติดตั้งโปรแกรม SWISH Max4<br />
6.2 การติดตั้งโปรแกรม SWISH Max4<br />
หนังสือเล่มนี้จะกล่าวถึงโปรแกรม SWISH Max เวอร์ชันทดลอง (ใช้ได้ฟรี 15 วัน) โดยหลังจาก<br />
ทําการดาวน์โหลดไฟล์ SetupSWISH Max4.exe เสร็จแล้ว ให้ทําตามขั้นตอนดังนี้<br />
1) กดดับเบิลคลิกที ่ไฟล์นี้เพื ่อทําการติดตั้งโปรแกรม SWISH Max ตามขั้นตอนในรูปที ่ 6.1 (ก) – (ง)<br />
จากนั้นกดปุ่ม “Install” ในรูปที ่ 6.1 (จ) เพื ่อเริ ่มติดตั้งโปรแกรม
205<br />
เลือกสารบบในการติดตั้ง LameACM<br />
(ก)<br />
(ข)<br />
(ค)<br />
(ง)<br />
เปิดใช้งาน<br />
โปรแกรม Swishmax<br />
(จ)<br />
(ฉ)<br />
รูปที ่ 6.2 ขั้นตอนการติดตั้ง LameACM (ตัวเข้ารหัส MP3)<br />
2) ระหว่างการติดตั้งโปรแกรม ก็จะปรากฏหน้าต่างให้ติดตั้ง LameACM (MP3 encoder) ตาม<br />
รูปที ่ 6.1 (ฉ) ให้กดปุ่ม OK เพื ่อทําการติดตั้ง LameACM ตามขั้นตอนในรูปที ่ 6.2 (ก) – (ฉ)<br />
3) เมื ่อกดปุ่ม “Finish” ในรูปที ่ 6.2 (ฉ) ก็จะได้หน้าต่างเริ ่มต้นการใช้งานโปรแกรม SWISH Max4<br />
ตามรูปที ่ 6.3<br />
4) กดปุ่ม Try ในรูปที ่ 6.3 เพื ่อไปที ่หน้าเว็บเพจตามรูปที ่ 6.4
206<br />
ช่องใส่รหัสผ่าน<br />
รูปที ่ 6.3 หน้าต่างเริ ่มต้นการใช้งานโปรแกรม SWISH Max4<br />
รูปที ่ 6.4 เว็บเพจสําหรับการลงทะเบียนแบบชั่วคราวของโปรแกรม SWISH Max4<br />
5) ป้อนอีเมล์สําหรับการลงทะเบียนแบบชั่วคราวในรูปที ่ 6.4 จากนั้นกดปุ่ม “Go” ก็จะได้หน้าต่าง<br />
โปรแกรม SWISH Max4 ตามรูปที ่ 6.5<br />
6) เปิดอีเมล์ที ่ใช้ลงทะเบียน และเปิดอีเมล์ที ่ส่งมาจากบริษัท SWiSHzone.com จะพบรหัสผ่าน<br />
ให้นํารหัสผ่านนี้มาวางในช่องใส่รหัสผ่านในรูปที ่ 6.3 ก็จะสามารถใช้งานโปรแกรม SWISH<br />
Max4 ได้ตามปกติ
207<br />
บอกว่ารหัสผ่านได้ถูกส่งมาที ่อีเมล์ที ่ลงทะเบียนแล้ว<br />
รูปที ่ 6.5 เว็บเพจหลังจากผ่านการลงทะเบียนแบบชั่วคราว<br />
6.3 ส่วนต่อประสานกับผู้ใช้ของโปรแกรม SWISH Max4<br />
เมื ่อเปิดโปรแกรม SWISH Max4 จะได้หน้าต่างตามรูปที ่ 6.6 โดยสามารถเริ ่มต้นใช้งานได้โดยการ<br />
สร้างงานใหม่ขึ้นมา (New) ก็จะได้หน้าต่างในรูปที ่ 6.7 ซึ ่งมีส่วนต่อประสานกับผู้ใช้ดังนี้<br />
• หมายเลข 1 คือเมนูเพิ ่มสคริปต์ (script) และลูกเล่น (effect) ลงในซีน (scene)<br />
• หมายเลข 2 คือเฟรมแสดงช่วงเวลา (timeline) ของภาพเคลื ่อนไหว<br />
• หมายเลข 3 คือเครื ่องมือ (tools) หรือกล่องเครื ่องมือที ่ใช้สําหรับเครื ่องมือพื ้นฐานทั่วไป<br />
ตามที ่แสดงในตารางที ่ 6.1<br />
• หมายเลข 4 คือซีนจัดหน้า (layout scene) สําหรับแสดงรูปและตัวอักษรที ่จัดวางไว้<br />
• หมายเลข 5 คือ Properties ใช้แก้ไขค่าคุณสมบัติต่างๆ<br />
• หมายเลข 6 คือหน้าต่างแสดงอ็อบเจกต์ (object) ต่างๆ ที ่ใส่เข้ามาในซีน<br />
• หมายเลข 7 คือเมนูหลัก (main menu)<br />
• หมายเลข 8 คือแถบเครื ่องมือเล่นภาพยนตร์ (Play Movie)
208<br />
รูปที ่ 6.6 หน้าต่างโปรแกรม SWISH Max4<br />
7 8<br />
5<br />
1<br />
2<br />
3<br />
4<br />
6<br />
รูปที ่ 6.7 ส่วนต่อประสานกับผู้ใช้ของโปรแกรม SWISH Max4
209<br />
ตารางที ่ 6.1 รายละเอียดของเครื ่องมือพื ้นฐาน<br />
สัญลักษณ์ อุปกรณ์ รายละเอียด<br />
เลือก (Select)<br />
เปลี ่ยนรูปร่าง (Reshape)<br />
จัดการภาพ (Fill Transform)<br />
เคลื ่อนไหว (Motion)<br />
เส้น (Line)<br />
ดินสอ (Pencil)<br />
รูปหลายเหลี ่ยม (Bezier)<br />
ข้อความ (Text)<br />
วงกลม (Ellipse)<br />
สี ่เหลี ่ยม (Rectangle)<br />
สี ่เหลี ่ยมมน (Autoshape)<br />
เลื ่อน (Pan)<br />
ย่อ/ขยาย (Zoom)<br />
แก้ขนาด (Scale)<br />
แก้ขนาด (Resize)<br />
หมุน (Rotate)<br />
เลื ่อนจุด (Distort)<br />
เลือก และย้ายวัตถุได้ตามต้องการ<br />
เมื ่อกดคลิกขวาที ่จุดของ Shape เลือก Smooth จะ<br />
เปลี ่ยนความโค้งได้<br />
แก้ไข หรือปรับขนาดภาพที ่อยู่ใน Image เช่น ภาพถ่าย<br />
กําหนดตําแหน่งใหม่ ให้วัตถุ move ไปถึงตําแหน่งนั้น<br />
เขียนเส้นตรง ถ้ากําหนด effect เป็น move จะกําหนด<br />
properties ของ Rotate to เป็น + หรือ - ก็ได้<br />
วาดเส้นได้โดยอิสระ<br />
กําหนดจุด จนคลิกจุดเดิม หรือกดดับเบิลคลิก<br />
เขียนข้อความเป็นภาษาไทยหรือภาษาอังกฤษ<br />
วาดวงกลม หรือวงรี<br />
วาดสี ่เหลี ่ยม<br />
วาดสี ่เหลี ่ยมที ่เปลี ่ยนเป็นวงกลมหรือวงรีได้<br />
ย้ายมุมมอง<br />
การย่อและขยายมุมมอง (กด Shift จะลดขนาด)<br />
ปรับขนาด กว้าง และสูง (ไม่ทําให้ frame1 เปลี ่ยน ถ้า<br />
ปรับ frame20 ใน move)<br />
ปรับขนาด กว้าง และสูง (มีผลต่อ frame1 ถ้าปรับ<br />
frame20 ใน move)<br />
หมุนภาพตามตําแหน่ง Anchor<br />
ย้ายเฉพาะมุมใดมุมหนึ ่ง ไม่มีผลต่อมุมอื ่น<br />
นอกจากนี้แถบเมนูหลัก (หมายเลข 7) ในรูปที ่ 6.7 รวบรวมคําสั่งที ่นิยมใช้งานดังนี้<br />
เมนู File ประกอบด้วย<br />
New<br />
New Movie<br />
Open<br />
คําสั่ง รายละเอียด<br />
สร้างไฟล์ใหม่<br />
การสร้างไฟล์ใหม่สําหรับ Movie<br />
เรียกไฟล์ที ่ต้องการใช้งานโดยมีนามสกุลเป็น .swf
210<br />
Save<br />
Save as<br />
Save All<br />
Close<br />
Close<br />
New Project<br />
Open Project<br />
Samples<br />
Import to Libray<br />
Import to Stage<br />
Test<br />
Export<br />
Export Seting<br />
คําสั่ง รายละเอียด<br />
Conver Video to FLV<br />
Recent Movies<br />
Exit<br />
การบันทึกงานชิ้นงานปัจจุบันที ่ต้องการเก็บไว้<br />
การบันทึกงานชิ้นงานปัจจุบันที ่ต้องการโดยเปลี ่ยนเป็นชื ่อไฟล์อื ่น<br />
การบันทึกงานทั้งหมด<br />
ปิดชิ้นงานปัจจุบัน<br />
ปิดชิ้นงานทั้งหมด<br />
การสร้างไฟล์ใหม่สําหรับ Project<br />
เรียกไฟล์ที ่ต้องการใช้งานโดยมีนามสกุลเป็น .swp<br />
เปิดงานตัวอย่างที ่โปรแกรม SWISH Max4 มีมาให้ เพื ่อใช้ในการศึกษา<br />
การนําข้อความ ภาพนิ ่ง ภาพเคลื ่อนไหว เสียง เข้ามาใช้งาน โดยจะวางไว้ใน<br />
ไลบรารีก่อน แล้วจึงเรียกออกมาใช้งานทีหลัง<br />
การนําข้อความ ภาพนิ ่ง ภาพคลื ่อนไหว เสียง เข้ามาใช้งาน โดยวางภาพบน<br />
หน้างานทันที<br />
ทดสอบงานที ่สร้าง (ก่อน export งานไปใช้จริง) ซึ ่งสามารถทดสอบแบบ<br />
เล่นผ่านโปรแกรม SWISH Max หรือทดสอบผ่านทางเบราว์เซอร์ก็ได้<br />
การส่งออกงานที ่สร้างขึ้นเพื ่อนําไปใช้งาน (ปกติจะเป็นไฟล์นามสกุล<br />
*.swf แต่สามารถแปลงเป็น .html หรือ .avi ก็ได้)<br />
การตั้งค่าของการส่งออกงาน<br />
แปลงไฟล์วีดิโอเป็นไฟล์ FLV<br />
แสดงไฟล์งานที ่เคยเปิดมาแล้ว<br />
ออกจากโปรแกรม SWISH Max4<br />
เมนู Edit ประกอบด้วย<br />
Undo<br />
Redo<br />
Cut object<br />
Copy object<br />
Paste EMF<br />
Paste in Place<br />
Paste Special<br />
Delete Scene<br />
Select all Objects<br />
Deselect All<br />
คําสั่ง รายละเอียด<br />
ยกเลิกขั้นตอนที ่กําลังทํา ณ ขณะนั้น<br />
ยกเลิกการกระทําของ Undo<br />
ตัดอ็อบเจกต์<br />
คัดลอกอ็อบเจกต์<br />
การวางเป็นไฟล์ emf (ที ่ตัดหรือคัดลอกมา)<br />
การวางในพื ้นที ่ (ที ่ตัดหรือคัดลอกมา)<br />
การวางแบบพิเศษ (ที ่ตัดหรือคัดลอกมา)<br />
ลบอ็อบเจกต์<br />
เลือกทุกอ็อบเจกต์ในพื ้นที ่กําลังทํางาน (working space)<br />
ยกเลิกการเลือกอ็อบเจกต์ทั้งหมด
211<br />
Find<br />
Replace<br />
Properties<br />
คําสั่ง รายละเอียด<br />
การค้นหาอ็อบเจกต์<br />
การแทนที ่<br />
แสดงคุณสมบัติของอ็อบเจกต์ที ่เลือก<br />
Preference เป็นเมนูใช้ปรับทางเลือกการตั่งค่าโปรแกรมสําหรับผู้ใช้งาน<br />
เมนู View ประกอบด้วย<br />
Toolbar<br />
คําสั่ง รายละเอียด<br />
แถบเครื ่องมือ (มีเมนูย่อยให้เปิดใช้งานต่างๆ เช่น Control bar)<br />
Zoom ขยาย/ลด มุมมอง (เช่น Zoom in, Zoom out, View at 100%)<br />
Show<br />
Guides<br />
Snap to Grid<br />
แสดงไม้บรรทัดเพื ่ออํานวยความสะดวกในการกําหนดระยะ โดยจะมีเมนูย่อย เช่น<br />
Show rulers และ Show grid เป็นต้น<br />
ระบุเส้นกริดแบบแนวนอน (Horizontal) และแนวตั้ง (Vertical)<br />
ให้อ็อบเจกต์วิ ่งเข้าหาเส้นกริด (เมื ่อนําอ็อบเจกต์มาวางใกล้เส้นกริด) เพื ่อทําให้ง่าย<br />
ต่อการวางอ็อบเจกต์ให้อยู่ในแนวเดียวกัน<br />
เมนู Insert ประกอบด้วย<br />
Scene<br />
Button<br />
Movie clip<br />
External media<br />
Import Sound<br />
Import Video<br />
Import Image<br />
Import Animation<br />
Import Vector<br />
Import Text<br />
Effect<br />
Script<br />
Insert Frame<br />
Delete Frame<br />
Insert Second<br />
คําสั่ง รายละเอียด<br />
การแทรกซีน (ภายในชิ้นงาน)<br />
การแทรกปุ่ม (ภายในชิ้นงาน)<br />
การแทรกคลิปวิดิโอ (ภายในชิ้นงาน)<br />
การแทรกสื ่อมีเดียภายนอก (ภายในชิ้นงาน)<br />
การแทรกเสียง (ภายนอกชิ้นงาน)<br />
การแทรกไฟล์วิดิโอ (ภายนอกชิ้นงาน)<br />
การแทรกภาพ โดยทั่วไปเป็นภาพนิ ่ง แต่สามารถแทรกภาพเคลื ่อนไหว<br />
ประเภท gif ได้ (ภายนอกชิ้นงาน)<br />
การแทรกภาพเคลื ่อนไหวประเภท swf, exe หรือ gif (ภายนอกชิ้นงาน)<br />
การแทรกภาพนิ ่งประเภท vector เช่นไฟล์ wmf (ภายนอกชิ้นงาน)<br />
การแทรกข้อความ (ปรับแต่งคุณสมบัติต่างๆ ของข้อความได้ที ่ Properties)<br />
การแทรกลูกเล่น (effect) ให้กับอ็อบเจกต์มีให้เลือกมากกว่า 230 แบบ<br />
การแทรกสคริปต์<br />
การแทรกเฟม 1 ครั้ง (F5)<br />
การลบเฟม 1 ครั้ง (Shift+F5)<br />
การแทรกจํานวนวินาทีของลูกเล่นครั้งที ่ 2 (Ctrl+F5)
212<br />
Delete Second<br />
คําสั่ง รายละเอียด<br />
การแทรกจํานวนวินาทีของลูกเล่นครั้งที ่ 2 (Ctrl+Shift+F5)<br />
เมนู Modify ประกอบด้วย<br />
Movie<br />
Scenes<br />
Convert<br />
คําสั่ง รายละเอียด<br />
เปลี ่ยน Properties ของ Movie (Ctrl+J)<br />
แบ่งซีนออกเป็นซีนเล็กๆ<br />
เปลี ่ยน Object ที ่เลือกเป็นรูปแบบอื ่นๆ เช่นเป็นปุ่ม (button) เป็น<br />
ภาพเคลื ่อนไหว (Sprite) หรือเป็นรูปทรง (Shape) เป็นต้น<br />
เมนู Control ประกอบด้วย<br />
Play movie<br />
Play Timeline<br />
Play effect<br />
Preview Frame<br />
Stop<br />
Step forward<br />
Step back<br />
Cue to End<br />
Rewind to start<br />
คําสั่ง รายละเอียด<br />
แสดงภาพเคลื ่อนไหวทั้งไฟล์ โดยจะเริ ่มจากซีนแรกไปจนถึงซีนสุดท้าย<br />
(ที ่ได้กําหนดไว้ในโปรแกรม)<br />
การแสดงผลของงานของลูกเล่นใน Timeline<br />
ทดสอบการแสดงผลของลูกเล่น<br />
ดูการแสดงผลในเฟรม<br />
หยุดการแสดงผลของภาพเคลื ่อนไหว<br />
แสดงผลของเฟรมต่อไป<br />
ย้อนกลับไปดูการแสดงผลของเฟรมก่อนหน้านี้ 1 เฟรม<br />
ดูเฟรมสุดท้ายของซีน<br />
ดูเฟรมแรกสุดของซีน<br />
เมนู Tools ประกอบด้วย<br />
Update Content<br />
FTP<br />
คําสั่ง รายละเอียด<br />
ปรับปรุงเนื ้อหา เช่น Project Movie เป็นต้น<br />
ปรับแต่งการ upload ไฟล์ชิ้นงานขึ้น webserver<br />
Preference ปรับทางเลือกสําหรับผู้ใช้<br />
Customize ปรับแต่งโปรแกรมให้เหมาะกับความต้องการผู้ใช้<br />
Keyboard map<br />
แสดงคีย์ลัด<br />
เมนู Window ประกอบเมนูที ่แสดง Panel ของโปรแกรม SWISH Max4 ทั้งหมด<br />
เมนู Help ประกอบด้วยคู่มือและตัวอย่างการใช้งานโปรแกรม SWISH Max4 ทั้งหมด
213<br />
รูปที ่ 6.8 หน้าต่าง “New Movie or Project” ของโปรแกรม SWISH Max4<br />
รูปที ่ 6.9 แสดงการตั้งค่าคุณสมบัติของภาพยนตร์ (Movie Properties)<br />
6.4 การสร้างชิ้นงานด้วยโปรแกรม SWISH Max4<br />
ในที ่นี้จะแสดงตัวอย่างการสร้างชิ้นงานด้วยโปรแกรม SWISH Max4 ดังนี้<br />
1) เปิดโปรแกรม SWISH Max4 ขึ้นมา จะได้หน้าต่าง “New Movie or Project” ตามรูปที ่ 6.8<br />
2) เลือก default และกดปุ่ม OK ในรูปที ่ 6.8 จะได้หน้าต่างในรูปที ่ 6.9 จากนั้นคลิกที ่ปุ่ม Movie<br />
properties (หมายเลข 5 ในรูปที ่ 6.7) และกําหนดขนาดความกว้างเท่ากับ 500 pixels, ความสูง<br />
เท่ากับ 400 pixels, และ Frame Rate เท่ากับ 25 ก็จะได้หน้าต่างตามรูปที ่ 6.10
214<br />
รูปที ่ 6.10 หน้าต่างพื ้นที ่ใช้งานที ่ได้กําหนดตามรูปที ่ 6.9<br />
รูปที ่ 6.11 การเลือกเมนูย่อยแทรกไฟล์เสียง (Import Sound), แทรกไฟล์วีดีโอ (Import Video), แทรกไฟล์<br />
รูปภาพ (Import Image), และแทรกข้อความ (Import Text) ในเมนู Insert<br />
6.4.1 การแทรกไฟล์รูปภาพ<br />
เมื ่อได้หน้าต่างพื ้นที ่ใช้งานตามรูปที ่ 6.10 ถ้าต้องการแทรกไฟล์รูปภาพเข้าไปในพื ้นที ่ใช้งานก็ทําได้<br />
ดังนี้ ให้เลือกที ่เมนู Insert → Import Image ตามรูปที ่ 6.11 จากนั้นเลือกรูปในสารบบที ่ต้องการ<br />
แล้วกดปุ่ม “Open” ในรูปที ่ 6.12 ก็จะได้รูปนั้นมาปรากฏบนพื ้นที ่ใช้งานดังรูปที ่ 6.13
215<br />
รูปที ่ 6.12 การเลือกไฟล์รูปภาพในเมนูย่อย Import Image<br />
รูปภาพที่แทรกเข้ามา<br />
รูปที ่ 6.13 สัญรูปและรูปภาพที ่แทรกเข้ามา
216<br />
รูปที ่ 6.14 การเลือกไฟล์เสียงในเมนูย่อย Import Sound<br />
รูปที ่ 6.15 สัญรูปของไฟล์เสียงและไฟล์รูปภาพในหน้าต่างแสดงอ็อบเจกต์<br />
รูปที ่ 6.16 การกดปุ่ม Play Movie<br />
6.4.2 การแทรกไฟล์เสียง<br />
ในทํานองเดียวกันถ้าต้องการแทรกไฟล์เสียงเข้าไปในพื ้นที ่ใช้งานในรูปที ่ 6.10 ก็ทําได้ดังนี้ ให้ไปที ่<br />
เมนู Insert → Import Sound ตามรูปที ่ 6.11 จากนั้นเลือกไฟล์เสียงในสารบบที ่ต้องการ แล้วกด<br />
ปุ่ม “Open” ในรูปที ่ 6.14 จะได้สัญรูปของไฟล์เสียงปรากฏในหน้าต่างแสดงอ็อบเจกต์ (หมายเลข 6<br />
ในรูปที ่ 6.7) ตามรูปที ่ 6.15 จากนั้นทดสอบฟังเสียงโดยการคลิกที ่ปุ่ม Play Movie (Ctrl+Enter)<br />
ตามรูปที ่ 6.16 จะได้ยินเสียงเพลงที ่ได้แทรกเข้ามา
217<br />
รูปที ่ 6.17 การเลือกไฟล์วีดีโอในเมนูย่อย Import Video<br />
รูปที ่ 6.18 หน้าต่าง Import Video<br />
6.4.3 การแทรกไฟล์วีดีโอ<br />
ในทํานองเดียวกันถ้าต้องการแทรกไฟล์วีดีโอเข้าไปในพื ้นที ่ใช้งานในรูปที ่ 6.10 ก็ทําได้ดังนี้ ไปที ่<br />
เมนู Insert → Import Video ตามรูปที ่ 6.11 จากนั้นเลือกไฟล์วีดีโอในสารบบที ่ต้องการ แล้วกด<br />
ปุ่ม “Open” ในรูปที ่ 6.17 ก็จะแสดงหน้าต่าง Import Video ในรูปที ่ 6.18 ให้เลือกช่อง Import
218<br />
วีดีโอที่แทรกเข้ามา<br />
รูปที ่ 6.19 สัญรูปและวีดิโอที ่แทรกเข้ามา<br />
As เป็น Embedded Video (ฝังไฟล์วีดีโอเข้าไปในไฟล์แฟลช) และคลิกที ่ปุ่ม Import จากนั้นทดสอบ<br />
การใช้งานโดยการกดปุ่ม Play Movie (Ctrl+Enter) ตามรูปที ่ 6.16 จะเล่นไฟล์ Video ที ่นําเข้ามา<br />
จะเล่นทั้งรูปและเสียงดังรูปที ่ 6.19<br />
6.4.4 การแทรกข้อความ<br />
นอกจากนี้ถ้าต้องการแทรกข้อความเข้าไปในพื ้นที ่ใช้งานในรูปที ่ 6.10 ก็ทําได้ดังนี้ ไปที ่เมนู Insert<br />
→ Import Text ตามรูปที ่ 6.11 จากนั้นเลือกไฟล์ข้อความ (นามสกุล .txt) ในสารบบที ่ต้องการ<br />
แล้วกดปุ่ม “Open” ในรูปที ่ 6.20 ก็จะผลลัพธ์ตามรูปที ่ 6.21<br />
หมายเหตุ นอกจากนี้โปรแกรม SWISH Max ได้เตรียมหน้าต่างเครื ่องมือ (หมายเลข 3 ในรูปที ่ 6.7)<br />
สําหรับใช้สร้างข้อความโดยตรงดังแสดงในรูปที ่ 6.22 กล่าวคือถ้าต้องการเขียนข้อความลงในพื ้นที ่<br />
ใช้งาน (หมายเลข 4 ในรูปที ่ 6.7) ก็ให้กดเลือกที ่สัญรูป<br />
ข้อความ “มหาวิทยาลัยราชภัฏนครปฐม” ก็จะได้ผลลัพธ์ตามรูปที ่ 6.21 เช่นกัน<br />
และคลิกที ่พื ้นที ่ใช้งาน จากนั้นพิมพ์
219<br />
รูปที ่ 6.20 การเลือกไฟล์ข้อความในเมนูย่อย Import Text<br />
ข้อความที่แทรกเข้ามา<br />
รูปที ่ 6.21 สัญรูปและข้อความที ่แทรกเข้ามา
220<br />
รูปที ่ 6.22 หน้าต่างเครื ่องมือ (หมายเลข 3 ในรูปที ่ 6.6)<br />
รูปที ่ 6.23 การเปลี ่ยน (ซ้าย) ขนาดของเส้น และ (ขวา) สีเส้น ในเมนู Properties<br />
6.4.5 การวาดเส้นและวาดรูป<br />
การวาดเส้นลงในชิ้นงานสามารถทําได้โดยใช้เครื ่องมือ สําหรับวาดเส้นตรง (อยู่ในหน้าต่าง<br />
เครื ่องมือในรูปที ่ 6.22) หรือใช้เครื ่องมือ สําหรับวาดเส้นโค้ง โดยผู้ใช้สามารถเปลี ่ยนลักษณะ<br />
ของเส้น (เช่น ความหนา หรือสี) ในเมนู Properties ตัวอย่างเช่น กําหนดค่าความหนา (Thickness)<br />
เพื ่อเปลี ่ยนขนาดของเส้นตามรูปที ่ 6.23 (ซ้าย) หรือกําหนดสีของเส้นตามรูปที ่ 6.23 (ขวา)<br />
นอกจากนี้โปรแกรม SWISH Max ยังมีเครื ่องมือสร้างรูปที ่ชื ่อว่า Autoshape เมื ่อกดเลือก<br />
ที ่สัญรูป จะแสดงเมนู 3 รายการคือ 2D, 3D และ Frames ถ้าสมมุติว่าต้องการสร้างรูปดาว<br />
แบบสองมิติ ก็ให้เลือกที ่รายการ 2D → Star ตามรูปที ่ 6.24 (ซ้าย) แล้วนํามาวาดที่พื ้นที่ใช้งาน<br />
ก็จะได้รูปดาวตามรูปที ่ 6.24 (ขวา)
221<br />
รูปที ่ 6.24 (ซ้าย) การเลือกรูปดาวในสัญรูป Autoshape และ (ขวา) รูปดาวในพื ้นที ่ใช้งาน<br />
6.4.6 การบันทึกชิ้นงาน<br />
เมื ่อสร้างชิ้นงานเสร็จแล้ว ถ้าต้องการบันทึกชิ้นงานที ่สร้างขึ้น ก็ทําได้โดยการคลิกเลือกที ่เมนู File<br />
→ Save และตั้งชื ่อไฟล์ตามต้องการ แล้วกดปุ่ม Save สังเกตว่าเครื ่องหมาย * ตรงแถบชื ่อเรื ่อง<br />
(Title bar) จะหายไป<br />
6.4.7 การส่งออกชิ้นงาน<br />
โปรแกรม SWISH Max สามารถส่งออก (export) ชิ้นงานจากไฟล์นามสกุล .swi (นามสกุลของไฟล์<br />
ในโปรแกรม SWISH Max) ไปเป็นไฟล์นามสกุล .swf, .html, .exe หรือ .avi และสามารถนําไปใช้<br />
นําเสนอชิ้นงานในเว็บไซต์ วีดีโอ หรือสื ่ออื ่นๆ ได้ โดยการคลิกเลือกที ่เมนู File → Export และเลือก<br />
ชนิดของไฟล์ที ่ต้องการเปลี ่ยน เช่น swf และเลือกสารบบที ่ต้องเก็บไฟล์ที ่ส่งมาไว้ และกดปุ่ม save<br />
6.5 การใส่ลูกเล่น<br />
โปรแกรม SWISH Max สามารถใส่ลูกเล่น (Effect) เพื ่อทําให้อ็อบเจกต์สามารถแสดงผลในรูปของ<br />
ภาพเคลื ่อนไหวได้หลากหลาย ในที ่นี้จะขอยกตัวอย่างลูกเล่นที ่น่าสนใจดังนี้<br />
• Fade in ใช้สําหรับแสดงอ็อบเจกต์ขึ้นมาอย่างช้าๆ ในตําแหน่งที ่ต้องการ<br />
• Fade out ใช้สําหรับแสดงอ็อบเจกต์ให้หายไปอย่างช้าๆ ในตําแหน่งที ่ต้องการ<br />
• Zoom in ใช้สําหรับแสดงการขยายอ็อบเจกต์ (เหมือนมองอ็อบเจกต์ในระยะใกล้)<br />
• Zoom out ใช้สําหรับแสดงการย่ออ็อบเจกต์ (เหมือนมองอ็อบเจกต์ในระยะไกล)
222<br />
1<br />
2<br />
3 4<br />
รูปที ่ 6.25 ขั้นตอนการใส่ลูกเล่นลงในอ็อบเจกต์ที ่ต้องการ<br />
• Slide in ใช้สําหรับแสดงการเคลื ่อนที ่ของอ็อบเจกต์เป็นเส้นตรง จากภายนอกหน้าจอเข้ามาสู่<br />
ภายในจอ โดยจะมีคําสั่งย่อยให้เลือกว่าต้องการให้เคลื ่อนที ่มาจากทิศทางใด<br />
• Slide out ใช้สําหรับแสดงการเคลื ่อนที่ของอ็อบเจกต์เป็นเส้นตรง จากภายในหน้าจอไปสู่<br />
ภายนอกจอ โดยจะมีคําสั่งย่อยให้เลือกว่าต้องการให้เคลื ่อนที ่ออกไปในทิศทางใด<br />
• Blur ใช้สําหรับแสดงผลอ็อบเจกต์อย่างช้าๆ โดยเริ ่มจากภาพที ่ไม่ชัดจนเปลี ่ยนมาเป็นภาพที ่ชัด<br />
• Appear into position ใช้สําหรับแสดงอ็อบเจกต์ให้ปรากฏขึ้นมาอย่างช้าๆ โดยจะมีลูกเล่น<br />
ย่อยให้เลือกอีกว่าต้องการให้หายหรือปรากฏในรูปแบบใด<br />
• Disappear from position ใช้สําหรับแสดงอ็อบเจกต์ในหายไปอย่างช้าๆ โดยจะมีลูกเล่นย่อย<br />
ให้เลือกอีกว่าต้องการให้หายไปในรูปแบบใด<br />
• Looping continuously ใช้สําหรับแสดงอ็อบเจกต์ในลักษณะทําซํ้าแบบต่อเนื ่องไปเรื ่อยๆ<br />
โดยจะมีลูกเล่นย่อยให้เลือกอีกว่าต้องการแสดงซํ้าในรูปแบบใด<br />
• One off ใช้สําหรับแสดงอ๊อบเจกต์โดยไม่แสดง frame แรกโดยจะมีลูกเล่นย่อยให้เลือกอีก<br />
ว่าต้องการแสดงแบบใด<br />
• Return to start ใช้สําหรับแสดงผลอ็อบเจกต์ในลักษณะการกลับสู่จุดเริ ่มต้นโดยจะมีลูกเล่น<br />
ย่อยให้เลือกอีกว่าต้องการให้กลับสู่จุดเริ ่มต้นในรูปแบบใด<br />
6.5.1 ตัวอย่างการใส่ลูกเล่นให้กับชิ้นงาน<br />
การใส่ Effect ให้กับชิ้นงาน ทําได้โดยกดเลือกอ็อบเจกต์ที ่ต้องการใส่ลูกเล่น (เช่น รูปดาว) ตาม<br />
รูปที ่ 6.25 (หมายเลข 1) จากนั้นกดปุ่ม Add Effect (หมายเลข 2) และเลือกลูกเล่นที ่ต้องการ<br />
เช่น ถ้าเลือกลูกเล่นแบบจางเข้ามา ก็ให้กดเลือกที ่ Fade → Fade In (หมายเลข 3 – 4)
223<br />
ใส่ค่า 20<br />
รูปที ่ 6.26 การปรับแต่งลูกเล่นของ Fade In<br />
(ก) เฟรมที ่ 1<br />
(ข) เฟรมที ่ 10<br />
(ค) เฟรมที ่ 20<br />
รูปที ่ 6.27 ผลลัพธ์ที ่ได้จากการใช้ลูกเล่น Fade In ณ เฟรมต่างๆ<br />
นอกจากนี้ยังสามารถปรับแต่งลูกเล่นได้โดยกดเลือกที ่เมนู Effect ในหน้าต่างแสดงอ็อบ<br />
เจกต์ (หมายเลข 6 ในรูปที ่ 6.7) ซึ ่งจะแสดงคุณสมบัติของลูกเล่นที ่ใช้อยู่ปรากฏขึ้นมา โดยในที ่นี้<br />
จะปรากฏ Fade In ตามรูปที ่ 6.26 จากนั้นจึงสามารถปรับแต่งค่าตามต้องการได้ เช่น สมมุติว่า<br />
เปลี ่ยนการแสดงผลหน่วยเวลาจาก 10 เป็น 20 ตามรูปที ่ 6.26 จากนั้นทดสอบโดยการกดปุ่ม Play<br />
Movie (หมายเลข 8 ในรูปที ่ 6.7) ก็จะได้ผลลัพธ์ ณ ตําแหน่งของเฟรมที ่ 1, 10 และ 20<br />
ดังแสดงในรูปที ่ 6.27<br />
6.6 การใส่สคริปต์เบื ้องต้น<br />
โปรแกรม SWISH Max มีสคริปต์เตรียมไว้ให้มากมาย ในที ่นี้จะกล่าวถึงสคริปต์ที ่นิยมใช้งานดังนี้<br />
6.6.1 การใส่สคริปต์เกี ่ยวกับการควบคุมการแสดงผล<br />
การใส่สคริปต์เพื ่อควบคุมเฟรมมีหลายรูปแบบ ในที ่นี้จะยกตัวอย่างการกระโดดไปยังเฟรมที ่ต้องการ<br />
โดยเลือกที ่เมนู Add Script → Movie Control → Goto and stop → gotoAndStop(FRAME)
224<br />
1<br />
2<br />
3<br />
4<br />
รูปที ่ 6.28 ขั้นตอนการใส่สคริปต์สําหรับการกระโดดไปยังเฟรมที ่ต้องการ (gotoAndPlay)<br />
รูปที ่ 6.29 การแก้ไขสคริปต์ในคําสั่ง gotoAndPlay(FRAME)<br />
ตารางที ่ 6.2 สคริปต์อื ่นๆ ที ่เกี ่ยวข้องกับควบคุมการแสดงผล<br />
สคริปต์<br />
Movie Control>gotoAndPlay>gotoAndPlay(FRAME)<br />
Movie Control>gotoAndPlay>nextFrameAndPlay()<br />
Movie Control>gotoAndPlay>prevFrameAndPlay()<br />
Movie Control>gotoAndPlay>nextSceneAndPlay()<br />
Movie Control>gotoAndPlay>prevSceneAndPlay()<br />
รายละเอียด<br />
แสดงเฟรมที ่ต้องการ<br />
แสดงเฟรมถัดไป<br />
แสดงเฟรมก่อนหน้า<br />
แสดงซีน (Scene) ถัดไป<br />
แสดงซีน (Scene) ก่อนหน้า<br />
ตามรูปที ่ 6.28 ก็จะปรากฏหน้าต่างสคริปต์ในรูปที ่ 6.29 จากนั้นให้ทดลองแก้ไขสคริปต์โดยเปลี ่ยน<br />
ค่า onFrame จาก 1 เป็น 20 และค่า GotoAndPlay จาก 1 เป็น 10 ตามรูปที่ 6.28 ซึ ่งในการ<br />
ทํางาน เมื ่อเล่นไปถึงเฟรมที ่ 20 แล้วจะกระโดดกลับมาที ่เล่นเฟรมที ่ 10 (ซํ้าไปเรื ่อยๆ) ตารางที ่ 6.2<br />
แสดงตัวอย่างสคริปต์อื ่นๆ ที ่เกี ่ยวข้องกับควบคุมการแสดงผล
225<br />
1<br />
2 3<br />
รูปที ่ 6.30 ขั้นตอนการใส่สคริปต์เพื ่อเชื ่อมโยงไปยังภายนอก (getURL)<br />
รูปที ่ 6.31 การแก้ไขสคริปต์ในคําสั่ง getURL<br />
6.6.2 การใส่สคริปต์เพื ่อสร้างการเชื ่อมโยง<br />
การใส่สคริปต์เพื ่อเชื ่อมโยงไปยังภายนอก เช่น มหาวิทยาลัยราชภัฏนครปฐม (www.npru.ac.th)<br />
ทําได้โดยการเลือกชิ้นงานหรืออ็อบเจกต์ที ่ต้องการ และกดเลือกที ่เมนู Add Script → Browser/<br />
Network → getURL ตามรูปที ่ 6.30 จากนั้นใส่ชื ่อเว็บไซต์ http://www.npru.ac.th ในช่อง URL<br />
และเลือก _blank ในช่อง Window (นั่นคือการสร้างหน้าเพจขึ้นมาใหม่) ดังแสดงในรูปที ่ 6.31<br />
แล้วทําการ Export ไฟล์ออกมาเป็นโดยการเลือกที ่เมนู File → Export → HTML+SWF... ก็จะ<br />
ได้ไฟล์ Movie1.html และ Movie1.swf โดยจะต้องนําไปวางในสารบบ www เพื ่อทดสอบการ<br />
ทํางาน ซึ ่งทําได้โดยการเปิดเบราว์เซอร์ขึ้นมาและใส่ชื ่อ URL เป็น 127.0.0.1/Movie1.html ก็จะ<br />
ปรากฏหน้าเว็บตามรูปที ่ 6.32<br />
มหาวิทยาลัยราชภัฏนครปฐม<br />
จากนั้นให้กดคลิกที ่รูปดาว ก็จะได้หน้าต่างใหม่เป็นหน้าเว็บของ
226<br />
คลิกที ่รูปดาว<br />
รูปที ่ 6.32 การทดสอบการทํางานของสคริปต์ getURL<br />
รูปที ่ 6.33 ขั้นตอนการใส่สคริปต์เกี ่ยวกับเสียง<br />
6.6.3 การใส่สคริปต์เกี ่ยวกับเสียง<br />
การใส่สคริปต์เกี ่ยวกับเสียงทําได้โดยการเลือกเฟรมหรือซีนที ่ต้องการใส่เสียง ตัวอย่างเช่น สมมุติว่า<br />
เลือก Scene_1 และเลือกวินาทีแรกตามรูปที ่ 6.33 ให้กดเลือกที ่เมนู Add Script → Sound →<br />
playSound(…) และกดปุ่ม Import ตามรูปที ่ 6.34 จากนั้นเลือกไฟล์เสียงที ่ต้องการและคลิกที ่ปุ่ม<br />
Open (เช่นเดียวกับรูปที ่ 6.14) ก็จะแสดงสัญรูปเพลงปรากฏอยู่ในรายการตามรูปที ่ 6.35 และใน<br />
ส่วนของหน้าต่างสคริปต์ ให้ใส่ชื ่อไฟล์เสียงที ่จะแทรกอยู่ในสคริปต์ ในทํานองเดียวกันถ้าต้องการ<br />
ทดสอบการทํางานก็ให้กดปุ่ม Play Movie (ตามรูปที ่ 6.16)<br />
6.7 สรุปท้ายบท<br />
บทนี้ได้อธิบายพื ้นฐานการใช้งานโปรแกรม SWISH Max ที่ใช้สําหรับสร้างไฟล์ภาพเคลื ่อนไหว<br />
แบบแฟลช โดยเริ ่มจากวิธีการติดตั้งโปรแกรม SWISH Max การใช้เมนูและเครื ่องมือต่างๆ ของ<br />
โปรแกรม SWISH Max รวมทั้งคําสั่งพื ้นฐานที่จําเป็นสําหรับการนําไปประยุกต์ใช้งานร่วมกับ<br />
โปรแกรม SCILAB เพื ่อสร้างสื ่อการเรียนการสอน ซึ ่งจะอธิบายในบทต่อไป
227<br />
รูปที ่ 6.34 ขั้นตอนการใส่ สคริปต์ เกี ่ยวกับเสียง (ต่อ)<br />
รูปที ่ 6.35 การใส่ไฟล์เสียงเข้าไปในเฟรมที ่ต้องการ<br />
6.8 แบบฝึกหัดท้ายบท<br />
1. จงอธิบายประวัติความเป็นมาของโปรแกรม SWISH Max พอสังเขป<br />
2. จงอธิบายการใช้งาน Import to Libray และ Import to Stage ว่าแตกต่างกันอย่างไร<br />
3. จงยกตัวอย่างลูกเล่น (effect) ที ่ใช้ได้ในโปรแกรม SWISH Max มา 5 ลูกเล่น<br />
4. ถ้าต้องการแสดงผลอ็อบเจกต์ (object) โดยเริ ่มจากภาพที ่ไม่ชัดให้เปลี ่ยนมาเป็นภาพที ่ชัด ควรใช้<br />
ลูกเล่น (effect) ใด
228<br />
5. ถ้าต้องการสร้างวัตถุเพื ่อเชื ่อมโยงเว็บไซต์ Google ควรใช้สคริปต์อะไร<br />
6. จงสร้างชิ้นงานเพื ่อนําเสนอรูปตัวเอง ใส่เสียงเพลง และลูกเล่นไม่น้อยกว่า 20 วินาที
229<br />
บทที ่ 7<br />
การสร้างสื ่อการสอนด้วยโปรแกรม<br />
SWISH Max และ SCILAB<br />
ในบทนี้จะกล่าวถึงการเขียนแอคชันสคริปต์ (AS: action script) ของโปรแกรม SWISH Max เพื ่อ<br />
นํามาประยุกต์ใช้สร้างสื ่อการสอนร่วมกับโปรแกรม SCILAB โดยเริ ่มจากประวัติความเป็นมาของ<br />
แอคชันสคริปต์ การส่งหรือโหลดข้อมูลระหว่างไฟล์ภาพเคลื ่อนไหวแบบแฟลช (flash animation)<br />
กับไฟล์ PHP และแสดงตัวอย่างการสร้างสื ่อการสอนผ่านเว็บไซต์ที ่มีภาพเคลื ่อนไหวแบบแฟลช<br />
ร่วมกับโปรแกรม SCIlAB ซึ ่งประกอบด้วย การหากระแสภายในวงจรไฟฟ้ า การหาตัว<br />
คูณร่วมน้อย และการวาดกราฟสองมิติ<br />
7.1 ประวัติความเป็นมาของแอคชันสคริปต์<br />
แอคชันสคริปต์ (หรือเรียกสั้นๆ ว่า AS) เป็นภาษาที ่ใช้งานกับไฟล์แฟลชเป็นหลัก โดยสามารถ<br />
เขียนได้จากโปรแกรมอื ่นๆ เช่น AIR (Adobe integrated runtime) [14], FlexBuilder [15] หรือ<br />
FlashDevelop [16] โดยประโยชน์ของ AS คือช่วยให้ผู้ที ่ใช้งานแฟลชสามารถโต้ตอบกับอ็อบเจกต์<br />
ต่างๆ ได้ นอกจากนี้เมื ่อ AS พัฒนาไปมากขึ้น การเชื ่อมต่อกับแหล่งข้อมูลอื ่นๆ ก็ทําได้มากขึ้น<br />
รวมถึงบางสิ ่งที ่แฟลชต้องอาศัยภาษาอื ่นช่วยในอดีต ก็สามารถทําได้ด้วยตนเองในปั จจุบัน<br />
เพราะฉะนั้นนักพัฒนา (developer) จึงจําเป็นต้องติดตามการพัฒนาเหล่านี้อยู่สมํ่าเสมอ<br />
7.2 ขั้นตอนการเขียนสคริปต์โปรแกรม SWISH Max ร่วมกับ<br />
SCILAB<br />
การเขียนสคริปต์โปรแกรม SWISH Max ร่วมกับ SCILAB สามารถอธิบายได้ตามแผนภาพ<br />
บล็อกตามรูปที ่ 7.1
230<br />
Flash Animation (.swf)<br />
โปรแกรม SWISH Max<br />
ไฟล์ PHP<br />
โปรแกรม Dreamweaver<br />
SCILAB<br />
โปรแกรม SCILAB<br />
รูปที ่ 7.1 แผนภาพบล็อกแสดงการเขียนสคริปต์โปรแกรม SWISH Max ร่วมกับโปรแกรม SCILAB<br />
7.2.1 การส่งหรือโหลดข้อมูลระหว่างไฟล์ภาพเคลื ่อนไหวแบบแฟลชกับไฟล์ PHP<br />
การเขียนแอคชันสคริปต์ในโปรแกรม SWISH Max เพื ่อส่งหรือโหลดข้อมูลระหว่างไฟล์ภาพ<br />
เคลื ่อนไหวแบบแฟลช (.swf) กับไฟล์ PHP มีสคริปต์ที ่ใช้งานหลักดังนี้<br />
สคริปต์การส่งข้อมูลไปยังไฟล์ PHP<br />
1 sendAndLoad(url, target, method);<br />
เมื ่อ url คือชื ่อไฟล์ที ่รับส่งข้อมูล (เช่น test.php), target คือตัวแปรอ็อบเจกต์ที ่เป็น LoadVars หรือ<br />
XML, และ method คือวิธีการส่งข้อมูล (เช่น POST, GET เป็นต้น)<br />
สคริปต์การโหลดข้อมูลมายังไฟล์ภาพเคลื ่อนไหวแบบแฟลช<br />
1<br />
2<br />
3<br />
target.onLoad = function(){<br />
}<br />
Parmeter1 = Parmeter2;<br />
เมื ่อ target คือตัวแปรอ็อบเจกต์ที ่เป็น LoadVars หรือ XML, Parameter1 คือตัวแปรรับข้อมูลใน<br />
สคริปต์ของโปรแกรม SWISH Max, และ Parameter2 คือตัวแปรส่งข้อมูลจากไฟล์ PHP<br />
7.2.2 ตัวอย่างการสร้างเว็บไซต์ที ่มีภาพเคลื ่อนไหวแบบแฟลชร่วมกับ SCILAB<br />
ในหัวข้อนี้จะแสดงตัวอย่างการสร้างสื ่อการสอนผ่านเว็บไซต์ที ่มีภาพเคลื ่อนไหวแบบแฟลชร่วมกับ<br />
โปรแกรม SCIlAB ทั้งสามแบบดังนี้
231<br />
7.2.2.1 การคํานวณหากระแสไฟฟ้าแบบภาพเคลื ่อนไหว<br />
จากกฎของโอห์ม (Ohm’s law) กระแสไฟฟ้า (I) ภายในวงจรไฟฟ้าหาได้จาก<br />
V<br />
I = (แอมแปร์)<br />
R<br />
โดยที ่ V คือแรงดันไฟฟ้ามีหน่วยเป็นโวลต์ และ R คือตัวความต้านทานมีหน่วยเป็นโอห์ม (ohm)<br />
ดังนั้นการสร้างสื ่อการสอนผ่านเว็บไซต์เพื ่อใช้คํานวณหากระแสไฟฟ้าในวงจรไฟฟ้าทําได้ดังนี้<br />
1) เปิดโปรแกรม Adobe Dreamweaver CS 5.5 ขึ้นมา และให้ตั้งชื ่อไฟล์ว่า test.php เก็บไว้ใน<br />
สารบบ C:\AppServ\www\Flashtoscilab โดยให้พิมพ์โค้ดในไฟล์ดังนี้<br />
โค้ดภายในไฟล์ test.php<br />
1<br />
2<br />
3<br />
4<br />
5<br />
6<br />
7<br />
8<br />
9<br />
10<br />
11<br />
12<br />
13<br />
232<br />
รูปที ่ 7.2 การกําหนดคุณสมบัติของตัวแปร R, V, total_a และ total_b<br />
รูปที ่ 7.3 คุณสมบัติสําหรับความสว่างของหลอดไฟ (Light)<br />
3) ในที ่นี้ภาพเคลื ่อนไหวจะเป็นแสงสว่างของหลอดไฟที ่มีขนาดเล็กหรือขนาดใหญ่ โดยถ้า R มีค่า<br />
มาก หลอดไฟก็จะสว่างน้อย แต่ถ้า R มีค่าน้อย หลอดไฟก็จะสว่างมาก โดยในที ่นี้จะมีการใช้<br />
Shape ซึ ่งกําหนดค่าเริ ่มต้นความกว้างเท่ากับ 0 และความยาวเท่ากับ 0 และตั้งชื ่อว่า Light<br />
ดังแสดงในรูปที ่ 7.3 - 7.4
233<br />
R<br />
V<br />
button<br />
รูปที ่ 7.4 การออกแบบส่วนต่อประสาน และการตั้งชื ่อ Shape เท่ากับ Light<br />
4) จากนั้นคลิกปุ่ม “คํานวณ” (ที ่สร้างขึ้นจาก Shape และตั้งชื ่อว่า button) และคลิกที ่ Tab สคริปต์<br />
และพิมพ์สคริปต์ดังต่อไปนี้<br />
สคริปต์<br />
1<br />
2<br />
3<br />
4<br />
5<br />
6<br />
7<br />
8<br />
9<br />
10<br />
11<br />
12<br />
on (release){<br />
if (R.text >= 100){ //ตรวจสอบค่า R ว่ามีขนาดเท่าใด<br />
Light._xscale = 0;<br />
Light._yscale = 0;<br />
}else if(R.text >= 90){<br />
Light._xscale = 10;<br />
Light._yscale = 10;<br />
}else if(R.text >= 80){<br />
Light._xscale = 20;<br />
Light._yscale = 20;<br />
}else if(R.text >= 70){<br />
Light._xscale = 30;
234<br />
13<br />
14<br />
15<br />
16<br />
17<br />
18<br />
19<br />
20<br />
21<br />
22<br />
23<br />
24<br />
25<br />
26<br />
27<br />
28<br />
29<br />
30<br />
31<br />
32<br />
33<br />
34<br />
35<br />
36<br />
37<br />
38<br />
39<br />
40<br />
41<br />
42<br />
43<br />
44<br />
45<br />
46<br />
47<br />
Light._yscale = 30;<br />
}else if(R.text >= 60){<br />
Light._xscale = 40;<br />
Light._yscale = 40;<br />
}else if(R.text >= 50){<br />
Light._xscale = 50;<br />
Light._yscale = 50;<br />
}else if(R.text >= 40){<br />
Light._xscale = 60;<br />
Light._yscale = 60;<br />
}else if(R.text >= 30){<br />
Light._xscale = 70;<br />
Light._yscale = 70;<br />
}else if(R.text >= 20){<br />
Light._xscale = 80;<br />
Light._yscale = 80;<br />
}else if(R.text >= 10){<br />
Light._xscale = 90;<br />
Light._yscale = 90;<br />
}else if(R.text >= 5){<br />
Light._xscale = 100;<br />
Light._yscale = 100;<br />
}else if(R.text >= 1){<br />
}<br />
Light._xscale = 120;<br />
Light._yscale = 120;<br />
var lv = new LoadVars(); //สร้างตัวแปรอ็อบเจกต์ชื ่อว่า lv<br />
lv.V = V.text;<br />
lv.R = R.text;<br />
//ส่งค่าตัวแปร V.text ให้กับ lv.V<br />
//ส่งค่าตัวแปร R.text ให้กับ lv.R<br />
lv.sendAndLoad("test.php",lv, "POST"); //ส่งค่า V, R ไปยัง test.php ในรูปแบบ POST<br />
lv.onLoad = function(){<br />
}<br />
}<br />
//โหลดผลลัพธ์จาก php มายังตัวแปรในแฟลช<br />
total_a.text = this.total; //รับค่าตัวแปร total มายังตัวแปร total_a.text (ภายในแฟลช)<br />
total_b.text = this.code; //รับค่าตัวแปร code มายังตัวแปร total_b.text (ภายในแฟลช)
235<br />
รูปที ่ 7.5 ขั้นตอนการ Export ไฟล์งาน<br />
5) ทําการ Export ไฟล์ออกมา โดยเลือกที ่ File → Export → HTML + SWF หรือกด Ctrl + P<br />
ดังรูปที ่ 7.5 จากนั้นเลือกสารบบที ่ C:\AppServ\www\flashtoscilab และตั้งชื ่อว่า electric.html<br />
คลิกปุ่ม save<br />
6) ทดสอบการทํางานโดยการเปิดโปรแกรม Google Chrome และพิมพ์ URL คือ 127.0.0.1/<br />
flashtoscilab/electric.html ตามรูปที ่ 7.6<br />
7) ทดลองป้อนค่า V = 5 และใส่ค่า R = 70 จากนั้นกดปุ่มคํานวณ 1 ครั้ง ซึ ่งจะพบว่าหลอดไฟ<br />
มีความสว่างน้อย แต่ถ้าใส่ค่า R = 1 จะพบว่าหลอดไฟมีความสว่างมาก ตามรูปที ่ 7.7
236<br />
รูปที ่ 7.6 ผลลัพธ์ของเว็บไซต์ electic.html<br />
R = 1<br />
รูปที ่ 7.7 ผลลัพธ์การป้อนข้อมูลเว็บไซต์ electic.html
237<br />
7.2.2.2 การหาตัวคูณร่วมน้อยแบบภาพเคลื ่อนไหว<br />
การสร้างสื ่อการสอนผ่านเว็บไซต์เพื ่อใช้คํานวณหาตัวคูณร่วมน้อย (ครน.) แบบภาพเคลื ่อนไหว<br />
ทําได้ดังนี้<br />
1) เปิดโปรแกรม Adobe Dreamweaver CS 5.5 ขึ้นมา และให้ตั้งชื ่อไฟล์ว่า lcm.php เก็บไว้ใน<br />
สารบบ C:\AppServ\www\Flashtoscilab โดยให้พิมพ์โค้ดในไฟล์ดังนี้<br />
โค้ดภายในไฟล์ lcm.php<br />
1<br />
2<br />
3<br />
4<br />
5<br />
6<br />
7<br />
8<br />
9<br />
10<br />
11<br />
12<br />
13<br />
238<br />
bginput<br />
input1 input2 input3<br />
bgoutput<br />
output<br />
button<br />
รูปที ่ 7.8 การออกแบบส่วนต่อประสานการหาตัวคูณร่วมน้อย (ครน.)<br />
รูปที ่ 7.9 การกําหนดคุณสมบัติของตัวแปร input1, input2, input3 และ output<br />
3) ในที ่นี้จะใช้ลูกเล่นที ่มีชื ่อว่า “Squeeze and cascade in” สําหรับแสดงภาพเคลื ่อนไหว โดยให้<br />
Duration เท่ากับ 20 สําหรับ bginput และ bgoutput แสดงดังในรูปที ่ 7.10
239<br />
รูปที ่ 7.10 แสดง Time line ที ่แทรกลูกเล่นไว้เรียบร้อยแล้ว<br />
4) จากนั้นคลิกปุ่ม “คํานวณ” (ที ่สร้างขึ้นจาก Shape และตั้งชื ่อว่า button) และคลิกที ่ Tab สคริปต์<br />
และพิมพ์สคริปต์ดังต่อไปนี้<br />
สคริปต์<br />
1<br />
2<br />
3<br />
4<br />
5<br />
6<br />
7<br />
8<br />
9<br />
10<br />
on (release){<br />
var lv = new LoadVars();<br />
lv.input1 = input1.text;<br />
lv.input2 = input2.text;<br />
lv.input3 = input3.text;<br />
//สร้างตัวแปรอ็อบเจกต์ชื ่อว่า lv<br />
//ส่งค่าตัวแปร input1.text ให้กับ lv.input1<br />
//ส่งค่าตัวแปร input2.text ให้กับ lv.input2<br />
//ส่งค่าตัวแปร input3.text ให้กับ lv.input3<br />
lv.sendAndLoad("lcm.php",lv, "POST"); //ส่งค่า input1, input2 และ input3 ไปยัง<br />
lcm.php ในรูปแบบ POST<br />
lv.onLoad = function(){<br />
}<br />
}<br />
output.text = this.output; //รับค่าตัวแปร code มายังตัวแปร total_b.text (ภายในแฟลช)<br />
5) ทําการ Export ไฟล์ออกมา โดยเลือกที ่ File → Export → HTML + SWF หรือกด Ctrl + P<br />
จากนั้นเลือกสารบบที ่ C:\AppServ\www\flashtoscilab และตั้งชื ่อว่า lcm.html คลิกปุ่ม save<br />
6) ทดสอบการทํางานโดยการเปิดโปรแกรม Google Chrome และพิมพ์ URL คือ 127.0.0.1/<br />
flashtoscilab/lcm.html ตามรูปที ่ 7.11
240<br />
รูปที ่ 7.11 ผลลัพธ์เว็บไซต์ lcm.html<br />
รูปที ่ 7.12 ผลลัพธ์ที ่ได้จากการป้อนข้อมูลผ่านเว็บไซต์ lcm.html<br />
7) ทดลองป้อนค่าตัวเลขสามจํานวนคือ 12, 15 และ 30 จากนั้นกดปุ่มคํานวณก็จะได้ผลลัพธ์เป็น<br />
ค่าตัวคูณร่วมน้อยของเลขสามจํานวนนี้เท่ากับ 60 และแสดงเปลี ่ยนสีสลับไปมาตามรูปที ่ 7.12<br />
7.2.2.3 การวาดกราฟสองมิติแบบภาพเคลื ่อนไหว<br />
การสร้างสื ่อการสอนผ่านเว็บไซต์เพื ่อใช้การวาดกราฟสองมิติแบบภาพเคลื ่อนไหวทําได้ดังนี้<br />
1) เปิดโปรแกรม Adobe Dreamweaver CS 5.5 ขึ้นมา และให้ตั้งชื ่อไฟล์ว่า 2d.php เก็บไว้ใน<br />
สารบบ C:\AppServ\www\Flashtoscilab โดยให้พิมพ์โค้ดในไฟล์ดังนี้
241<br />
โค้ดภายในไฟล์ 2d.php<br />
1<br />
2<br />
3<br />
4<br />
5<br />
6<br />
7<br />
8<br />
9<br />
10<br />
11<br />
12<br />
242<br />
x1 x2 x3<br />
f<br />
y<br />
รูปที ่ 7.13 การออกแบบส่วนต่อประสานการวาดกราฟสองมิติแบบภาพเคลื ่อนไหว<br />
รูปที ่ 7.14 การกําหนดคุณสมบัติของตัวแปร x1, x2, x3, f และ y
243<br />
2<br />
1<br />
4<br />
3<br />
รูปที ่ 7.15 ขั้นตอนการเปลี ่ยน Shape เป็นรูปแบบ Movie Clip<br />
3) ในที ่นี้จะใช้ Shape สีฟ้าค่อยๆ จางออก และแสดงกราฟที ่สร้างขึ้นจากสมการเพื ่อแสดงภาพ<br />
เคลื ่อนไหว โดยการวาด Shape ที ่มีขนาด 610×461 pixels และตั้งชื ่อว่า pic จากนั้นกดคลิก<br />
ขวา และเลือก Convert → Convert to Movie Clip ตามที ่แสดงในรูปที ่ 7.15<br />
4) จากนั้นสร้าง Shape สีฟ้าขนาด 550×512 pixels ปิดทับ pic และใช้ลูกเล่นโดยการกดคลิกขวา<br />
ที ่ Time Line และเลือก Fade → Fade out ตามรูปที ่ 7.16 และ 7.17
244<br />
5<br />
6<br />
7<br />
รูปที ่ 7.16 ขั้นตอนใส่ลูกเล่น Fade Out<br />
รูปที ่ 7.17 แสดง Time line ที ่ใส่ลูกเล่น Fade Out<br />
5) สร้างปุ่มคํานวณโดยใช้เครื ่องมือ Rectangle tool วาดรูปสี ่เหลี ่ยมจํานวน 1 อัน และใช้เครื ่องมือ<br />
Text tool พิมพ์ข้อความ “คํานวณ” ตามรูปที ่ 7.18
245<br />
รูปที ่ 7.18 การสร้างปุ่ม “คํานวณ”<br />
6) จากนั้นคลิกปุ่ม “คํานวณ” (ที ่สร้างขึ้นจาก Shape ชื ่อว่า button) และคลิกที ่ Tab สคริปต์ และ<br />
พิมพ์สคริปต์ดังต่อไปนี้<br />
สคริปต์<br />
1<br />
2<br />
3<br />
4<br />
5<br />
6<br />
7<br />
8<br />
9<br />
10<br />
11<br />
12<br />
13<br />
14<br />
15<br />
16<br />
17<br />
on (press) {<br />
var lv = new LoadVars();<br />
lv.x1 = x1.text;<br />
lv.x2 = x2.text;<br />
lv.x3 = x3.text;<br />
lv.f = f.text;<br />
lv.y = y.text;<br />
//สร้างตัวแปรอ็อบเจกต์ชื ่อว่า lv<br />
//ส่งค่าตัวแปร x1.text ให้กับ lv.x1<br />
//ส่งค่าตัวแปร x2.text ให้กับ lv.x2<br />
//ส่งค่าตัวแปร x3.text ให้กับ lv.x3<br />
//ส่งค่าตัวแปร f.text ให้กับ lv.f<br />
//ส่งค่าตัวแปร y.text ให้กับ lv.y<br />
lv.sendAndLoad("2d.php", lv, "POST"); //ส่งค่า x1, x2, x3, f และ y ไปยัง 2d.php ใน<br />
รูปแบบ POST<br />
lv.onLoad = function(){<br />
d = new Date();<br />
kill = d.getTime();<br />
//สร้างตัวแปรอ็อบเจกต์ชื ่อว่า d<br />
//สร้างตัวแปร kill ให้มีค่าเท่ากับเวลาปัจจุบัน<br />
pic.loadMovie("test.gif"+"?kill="+kill); //โหลดไฟล์รูปกราฟ (test.gif) เข้ามาโดยสร้าง<br />
ตัวแปรชื ่อว่า kill เพื ่อระบุรูปกราฟล่าสุดในขณะนั้น (ถ้าไม่ใส่จะไม่เปลียนรูปกราฟ)<br />
gotoAndPlay(1);<br />
play();<br />
pic._x = -30;<br />
pic._y = 0;<br />
pic._xscale = 100;
246<br />
18<br />
19<br />
20<br />
}<br />
pic._yscale = 100;<br />
}<br />
รูปที ่ 7.19 ผลลัพธ์ของเว็บไซต์ f2d.html<br />
7) ทําการ Export ไฟล์ออกมา โดยเลือกที ่ File → Export → HTML + SWF หรือกด Ctrl + P<br />
จากนั้นเลือกสารบบที ่ C:\AppServ\www\flashtoscilab และตั้งชื ่อว่า f2d.html คลิกปุ่ม save<br />
8) ทดสอบการทํางานโดยการเปิดโปรแกรม Google Chrome และพิมพ์ URL คือ 127.0.0.1/<br />
flashtoscilab/f2d.html ตามรูปที ่ 7.19<br />
9) ทดลองป้อนค่า x = 0 : 0.01 : 2, f = 1, และ y = sin(2*%pi*x*f) จากนั้นกดปุ่ม “คํานวณ”<br />
ก็จะพบว่ามีการ Fade Out ของ Shape สีฟ้า 1 ครั้ง แล้วจึงเปลี ่ยนเป็นรูปกราฟที ่โปรแกรม<br />
SCILAB วาดขึ้นมา ดังรูปที ่ 7.20
247<br />
รูปที ่ 7.20 ผลลัพธ์ที ่ได้จากการทดลองวาดกราฟ y = sin(2*%pi*x*f)<br />
7.3 สรุปท้ายบท<br />
บทนี้สรุปขั้นตอนการเขียนแอคชันสคริปต์ของโปรแกรม SWISH Max เพื ่อนํามาประยุกต์ใช้สร้าง<br />
สื ่อการสอนร่วมกับโปรแกรม SCILAB โดยเริ ่มจากประวัติความเป็นมาของแอคชันสคริปต์ การส่ง<br />
หรือโหลดข้อมูลระหว่างไฟล์ภาพเคลื ่อนไหวแบบแฟลชกับไฟล์ PHP และแสดงตัวอย่างการสร้าง<br />
สื ่อการสอนผ่านเว็บไซต์ที ่มีภาพเคลื ่อนไหวแบบแฟลชร่วมกับโปรแกรม SCIlAB นอกจากนี้ผู้เขียน<br />
ได้พัฒนาตัวอย่างสื ่อการสอนแบบภาพเคลื ่อนไหวเรื ่อง “เมทริกซ์” เพื ่อให้ผู้อ่านได้ทดลองใช้งาน<br />
ซึ ่งสามารถดูศึกษาได้ที ่เว็บไซต์ http://scilab.npru.ac.th/matrix/index.php
248<br />
7.4 แบบฝึกหัดท้ายบท<br />
1. จงเขียนโปรแกรมการบวกเมทริกซ์สองเมทริกซ์แบบภาพเคลื ่อนไหว<br />
2. จงเขียนโปรแกรมการหาค่าดีเทอร์มิแนนท์ (Determinant) ของเมทริกซ์แบบภาพเคลื ่อนไหว<br />
3. จงสร้างโปรแกรมการหาไมเนอร์ (Minor) ของเมทริกซ์แบบภาพเคลื ่อนไหว<br />
4. จงเขียนโปรแกรมวาดกราฟ 2 มิติโดยใส่ลูกเล่น 1 วิธี ตามรูปที ่ 1.5 (คําสั่ง polarplot)<br />
5. จงเขียนโปรแกรมวาดกราฟ 3 มิติโดยใส่ลูกเล่น 1 วิธี ตามรูปที ่ 1.6 (คําสั่ง plot3d)
249<br />
บรรณานุกรม<br />
[1] SCILAB [online], Available http://www.scilab.org [Access: October 17, 2012]<br />
[2] CeCILL [online], Available http://www.cecill.info/index.en.html [Access: October<br />
17, 2012]<br />
[3] MATWORKS [online], Available http://www.mathworks.com [Access: October 17,<br />
2012]<br />
[4] ปิยะ โควินท์ทวีวัฒน์, คู่มือโปรแกรมภาษา SCILAB สําหรับผู้เริ ่มต้น (ฉบับปรับปรุงใหม่),<br />
เพชรเกษมการพิมพ์, 2551<br />
[5] Visual Basic [online], Available http://msdn.microsoft.com/en-us/library/vstudio/<br />
2x7h1hfk.aspx [Access: April 13, 2013].<br />
[6] พร้อมเลิศ หล่อวิจิตร, คู่มือเรียน Visual Basic 2010, ซีเอ็ดยูเคชั่น, มีนาคม 2554.<br />
[7] PHP [online], Available http://php.net/ [Access: April 14, 2013]<br />
[8] ภาษาพีเอชพี [online], Available http://th.wikipedia.org/wiki/ภาษาพีเอชพี [Access:<br />
April 14, 2013]<br />
[9] PHP Tutorial [online], Available http://www.w3schools.com/php/ [Access: April<br />
14, 2013]<br />
[10] PHP [online], Available http://www.thaicreate.com/php.html [Access: April 14,<br />
2013]<br />
[11] Swishmax [online], Available http://www.swishzone.com [Access: April 14, 2013]<br />
[12] bmk2 [online], Available http://www.bmk2.net/study/swishmax.doc [Access: April<br />
14, 2013]<br />
[13] thaiall [online], Available http://www.thaiall.com/swishmax/indexo.html [Access:<br />
April 14, 2013]
250<br />
[14] Adobe AIR [online], Available http://www.adobe.com/products/air.html [Access:<br />
April 14, 2013]<br />
[15] Google Developer [online], Available https://developers.google.com/maps/<br />
documentation/flash/tutorial-flexbuilder [Access: April 14, 2013]<br />
[16] FlashDevelop [online], Available http://www.flashdevelop.org/ [Access: April 14,<br />
2013]