02.04.2015 Views

Scilab_Book2

Scilab_Book2

Scilab_Book2

SHOW MORE
SHOW LESS

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,"&nbsp;&nbsp;%s = ",stype);<br />

mfprintf(fid,"&nbsp;&nbsp;");<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 />

&nbsp;&nbsp;<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&nbsp;=<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 =&nbsp;<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)&nbsp;<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]

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!