คานา
การจดการเรยนการสอนในประเทศไทยปจจบนนจะเนนใหผเรยนเปนศนยกลางสาหรบ
การศกษาคนควาขอมลดวยตวเอง ซงไดมการนาอปกรณคอมพวเตอรและซอฟตแวรตางๆ มาใช
ชวยในการเรยนการสอนและทางานวจยในหลายสาขาวชา โดยมการนาเสนอในรปบทเรยนอเลก
ทรอนกส เชน ซด สอการเรยนการสอนผานทางโทรทศนและเครอขายดาวเทยม สอการเรยนการ
สอนผานทางเครอขายอนเทอรเนต (E-leaning) เปนตน
โปรแกรม SCILAB เปนโปรแกรมภาษาขนสงทถกพฒนาขนโดยความรวมมอกนระหวาง
นกวจยจากสถาบน Institut National De Recherche En Informatique Et En Automatique
(INRIA) และ École nationale des ponts et chausses (ENPC) ประเทศฝรงเศส ตงแต ค.ศ.
1990 โดยมจดมงหมายเพอใชในการคานวณเชงตวเลขและแสดงผลกราฟกทซบซอนตางๆ ได ดงนน
โปรแกรม SCILAB จงเหมาะกบการใชงานทางดานวศวกรรมและวทยาศาสตร นอกจากนโปรแกรม
SCILAB ยงเปนโปรแกรมทใหฟร (freeware) อนญาตใหผใชสามารถนาไปพฒนาตอได และม
ความสามารถในการทางานทใกลเคยงกบโปรแกรม MATLAB ซงเปนโปรแกรมทนยมใชงานมาก
ทางดานวศวกรรมและวทยาศาสตร แตคาลขสทธซอฟตแวรของ MATLAB มราคาแพงมาก
หนงสอ “การพฒนาสอการสอนโดยใชโปรแกรม SCILAB รวมกบ Visual Basic /
PHP / Flash Animation” มจดมงหมายเพออธบายตงแตพนฐานการใชงานโปรแกรม SCILAB
การนาโปรแกรม SCILAB มาประยกตใชงานรวมกบโปรแกรม Visual Basic, PHP และ Flash
Animation เพอสรางบทเรยนชวยสอนบนอนเทอรเนตทางดานวศวกรรมและวทยาศาสตรทสามารถ
โตตอบกบผเรยนได นอกจากนยงชวยใหนกศกษาเขาใจทฤษฏในบทเรยนงายขน รวมทงสนกกบ
บทเรยนตางๆ ทมภาพเคลอนไหวประกอบคาบรรยาย
หนงสอเลมนจะเรมตนอธบายจาก ความรทวไปเกยวกบโปรแกรม SCILAB เชน ประวต
ความเปนมาของโปรแกรม SCILAB และการใชงานคาสงพนฐานทวไป บทท 2 จะอธบายเครองมอ
ตางๆ ของโปรแกรม Visual Basic และขนตอนการเขยนโปรแกรมตดตอกบโปรแกรม SCILAB
บทท 3 ยกตวอยางการพฒนาสอการเรยนการสอนดวยโปรแกรม Visual Basic รวมกบ SCILAB
เชน การบวก/ลบ/คณ/หาร ของเลขสองจานวน การบวกและลบสมการพหนาม และการวาดกราฟ
สองมต บทท 4 อธบายพนฐานการใชงานโปรแกรมภาษา PHP รวมถงการนาไปประยกตใชงาน
รวมกบโปรแกรม SCILAB บทท 5 ยกตวอยางการพฒนาสอการเรยนการสอนผานเวบไซตหลายๆ
แบบโดยใชโปรแกรมภาษา PHP รวมกบโปรแกรม SCILAB บทท 6 อธบายความรเบองตนเกยวกบ
การใชงานโปรแกรม SWISH Max ทใชสรางไฟลภาพเคลอนไหวแบบแฟลช (Flash Animation)
เพอนาไปประยกตใชงานรวมกบโปรแกรม SCILAB สดทายบทท 7 ยกตวอยางการสรางสอการสอน
ดวยโปรแกรม SWISH Max และ SCILAB โดยโคดตนฉบบทงหมดของทกตวอยางในหนงสอ
เลมนสามารถดาวนโหลดไดท http://home.npru.ac.th/piya/webscilab/book2
หนงสอเลมนจะไมสามารถทาใหสาเรจขนมาได ถาหากขาดบคคลตางๆ ทคอยใหความ
ชวยเหลอและเปนกาลงใจใหขาพเจาตลอดมา ดงนนขาพเจาขอกราบขอบพระคณอาจารยทกทานท
ใหความรและคาปรกษาตลอดระยะเวลาการศกษา รวมทงคณเกยรต โควนททววฒน, คณพรรณ
โควนททววฒน, คณรชนศ โรจนกจ, คณอนทศน โรจนกจ, คณฉตรชย โควนททววฒน, คณกตต
ศกด โควนททววฒน, พ.ญ.ศรสดา โสมนส, ดร.พชรศกด อาลย, รอยตารวจตรบญหลง บฮวดใช,
จาสบตารวจพงษพนธ บฮวดใช, นางอาพร บฮวดใช (จนทรอาพร), และเจาหนาทสถาบนวจยและ
พฒนาทกทาน นอกจากนขาพเจาขอขอบคณมหาวทยาลยราชภฏนครปฐมทใหการสนบสนนและ
ใหความสะดวกแกขาพเจาตลอดระยะเวลาในการเขยนหนงสอเลมน
ทายสดนขาพเจาพยายามอยางยงในการทจะทาใหหนงสอเลมนงายตอการเรยนร เพอให
ผอานสามารถทาความเขาใจไดดวยตนเองอยางรวดเรวและมประสทธผล ดงนนหากมขอบกพรอง
ประการใด ขาพเจามความยนดและจกขอบพระคณยง ถาทานผใชหนงสอเลมนจะสงขอคดเหนและ
คาแนะนาทเปนประโยชนสาหรบการปรบปรงหนงสอเลมนมาทอเมล [email protected] หรอ
[email protected] เพอทขาพเจาจะไดดาเนนการปรบปรงและแกไขในการพมพครงตอไป
รศ.ดร.ปยะ โควนททววฒน
จรนดร บอวดใช
มหาวทยาลยราชภฏนครปฐม
มถนายน พ.ศ. 2556
สารบญ
บทท 1 พนฐานการใชงานโปรแกรม SCILAB ......................................................... 1
1.1 ประวตความเปนมาของโปรแกรม SCILAB .................................................................... 1
1.2 การตดตงโปรแกรม SCILAB ........................................................................................ 3
1.3 การสรางสเกลาร เวกเตอร และเมทรกซ ......................................................................... 3
1.3.1 การหาทรานสโพส ดเทอรมแนนต อนเวอรสการคณ ของเมทรกซ ...................... 7
1.3.2 การแกระบบสมการเชงเสน ................................................................................. 8
1.4 พหนาม ........................................................................................................................ 9
1.5 การดาเนนการทางคณตศาสตร .................................................................................... 11
1.6 การดาเนนการทางคณตศาสตร .................................................................................... 13
1.6.1 ฟงกชนพนฐานทเกยวกบตวเลข ........................................................................ 13
1.6.2 ฟงกชนตรโกณมต ........................................................................................... 15
1.6.3 ฟงกชนพนฐานทางสถต ................................................................................... 16
1.7 เมทรกซพเศษ ............................................................................................................ 17
1.7.1 เมทรกซสม ..................................................................................................... 18
1.8 การเขยนโปรแกรมดวย SCILAB ................................................................................ 19
1.8.1 คาสงวนซา ...................................................................................................... 19
1.8.2 คาสงทดสอบเงอนไข ........................................................................................ 21
1.8.3 การเขยนฟงกชนแบบอนไลน............................................................................ 22
1.9 การวาดกราฟสองมต ................................................................................................... 23
1.9.1 กราฟเชงขว ...................................................................................................... 24
1.10 การวาดกราฟสามมต ................................................................................................. 26
1.11 สรปทายบท .............................................................................................................. 29
1.12 แบบฝกหดทายบท .................................................................................................... 29
บทท 2 การใชงานโปรแกรม VISUAL BASIC รวมกบ SCILAB ....................... 31
2.1 ประวตความเปนมาของโปรแกรม VISUAL BASIC ......................................................... 31
2.2 โปรแกรม VISUAL BASIC 2010 EXPRESS ................................................................... 32
2.2.1 แถบเมน .......................................................................................................... 32
2.2.2 แถบเครองมอมาตราฐาน .................................................................................. 32
2.2.3 หนาตางโซลชน ................................................................................................ 33
2.2.4 หนาตางคณสมบต ........................................................................................... 34
2.2.5 หนาตางกลองเครองมอ .................................................................................... 35
2.2.6 ประเภทขอมลพนฐาน ...................................................................................... 35
2.3 การใชงานโปรแกรม VISUAL BASIC รวมกบ SCILAB................................................. 35
2.3.1 ขนตอนการเรยกใชงานไลบราร Microsoft Scripting Runtime ........................ 38
2.3.2 รปแบบการใชงาน FileSystemObject ............................................................... 39
2.3.3 ฟงกชนทเกยวของโปรแกรม Visual Basic 2010 ............................................. 41
2.4 ฟงกชนทเกยวของของโปรแกรม SCILAB ................................................................... 45
2.4.1 คาสง file ........................................................................................................ 45
2.4.2 คาสง fprintf ................................................................................................... 46
2.4.3 คาสง exec ...................................................................................................... 47
2.4.4 คาสง savematfile ........................................................................................... 48
2.4.5 คาสง xs2gif .................................................................................................... 48
2.5 การเขยนโปรแกรม VISUAL BASIC ตดตอกบ SCILAB ............................................... 49
2.5.1 การสรางไฟลสครปต ........................................................................................ 50
2.5.2 การเขยนไฟลสครปต ........................................................................................ 52
2.5.3 การประมวลผลไฟลสครปต .............................................................................. 53
2.5.4 การบนทกผลลพธลงไฟลขอมล ......................................................................... 55
2.5.5 การแสดงผลลพธ ............................................................................................. 58
2.6 สรปทายบท ................................................................................................................ 60
2.7 แบบฝกหดทายบท ...................................................................................................... 60
บทท 3 การสรางสอการสอนดวยโปรแกรม VISUAL BASIC รวมกบ SCILAB .... 61
3.1 การบวก/ลบ/คณ/หาร ของเลขสองจานวน .................................................................... 61
3.2 การหาดเทอรมแนนตและอนเวอรสของเมทรกซ ........................................................... 64
3.2.1 ฟอรมกาหนดขนาดของเมทรกซ ....................................................................... 65
3.2.2 ฟอรมสาหรบหาดเทอรมแนนตและอนเวอรสของเมทรกซขนาด 2×2 ................. 66
3.2.3 ฟอรมสาหรบหาดเทอรมแนนตและอนเวอรสของเมทรกซขนาด 3×3 ................. 72
3.2.4 ทดสอบการใชงาน ............................................................................................ 77
3.3 การพสจนคณสมบตของเมทรกซ ................................................................................. 80
3.3.1 การพสจนคณสมบต (kA)T = kAT ................................................................... 80
3.3.2 การพสจนคณสมบต (A + B)T = AT + BT ................................................... 88
3.3.3 การพสจนคณสมบต (AB)T = BTAT ................................................................ 94
3.4 การหาคาลอการทมฐานใดๆ ....................................................................................... 100
3.5 การบวกและลบสมการพหนาม .................................................................................. 103
3.6 การวาดกราฟสองมต ................................................................................................. 107
3.7 สรปทายบท .............................................................................................................. 110
3.8 แบบฝกหดทายบท .................................................................................................... 110
บทท 4 ความรเบองตนเกยวกบภาษา PHP .......................................................... 111
4.1 ประวตความเปนมาของ PHP ..................................................................................... 111
4.2 การเตรยมตวกอนเขยนเวบไซตดวยภาษา PHP .......................................................... 111
4.2.1 การตดตงโปรแกรม AppServ ......................................................................... 111
4.2.2 การตดตงโปรแกรม Adobe Dreamweaver CS5.5 ......................................... 113
4.2.3 แนวทางการเขยนโปรแกรมเวบไซตภาษา PHP รวมกบ SCILAB .................... 115
4.3 เรมตนกบการเขยนภาษา PHP .................................................................................. 116
4.3.1 การแสดงผล .................................................................................................. 116
4.3.2 การเขยนคอมเมนต ........................................................................................ 116
4.3.3 การกาหนดตวแปร ......................................................................................... 117
4.3.4 การใชเครองหมายอญประกาศเดยวและเครองหมายอญประกาศ ...................... 117
4.3.5 การนยามตวแปรลวงหนา ............................................................................... 118
4.3.6 แบบชนดขอมล .............................................................................................. 119
4.3.7 ตวดาเนนการเลขคณต .................................................................................... 119
4.3.8 ตวดาเนนการเพม/ลดคา ................................................................................. 119
4.3.9 ตวดาเนนการเปรยบเทยบ ............................................................................... 120
4.3.10 ตวดาเนนการทางตรรกะ ............................................................................... 121
4.3.11 การทดสอบเงอนไข ...................................................................................... 121
4.3.12 การทาซา ..................................................................................................... 125
4.4 ฟงกชนและการใชงาน ............................................................................................... 127
4.4.1 การสรางฟงกชน ............................................................................................ 129
4.4.2 ฟงกชนทเกยวกบสายอกขระ .......................................................................... 130
4.4.3 ฟงกชนทเกยวกบตวเลข ................................................................................. 134
4.5 การจดการไฟล .......................................................................................................... 135
4.5.1 การสรางไฟล ................................................................................................. 135
4.5.2 การอานไฟล .................................................................................................. 135
4.5.3 การลบไฟล .................................................................................................... 136
4.5.4 การใชงานโปรแกรมภายนอก .......................................................................... 136
4.6 สรปทายบท .............................................................................................................. 137
4.7 แบบฝกหดทายบท .................................................................................................... 137
บทท 5 การสรางสอการสอนผานเวบไซต .............................................................. 139
5.1 การบวก/ลบ/คณ/หาร ของเลขสองจานวน .................................................................. 139
5.2 การหาดเทอรมแนนตและอนเวอรสของเมทรกซ ......................................................... 145
5.2.1 หนาเพจกาหนดขนาดของเมทรกซ .................................................................. 145
5.2.2 หนาเพจสาหรบหาดเทอรมแนนตและอนเวอรสของเมทรกซขนาด 2×2 ............ 149
5.2.3 หนาเพจสาหรบหาดเทอรมแนนตและอนเวอรสของเมทรกซขนาด 3×3 ............ 153
5.2.4 ทดสอบการใชงาน .......................................................................................... 159
5.3 การพสจนคณสมบตของเมทรกซ ............................................................................... 160
5.3.1 การพสจนคณสมบต (kA)T = kAT ................................................................. 160
5.2.2 การพสจนคณสมบต (A+B)T = AT + BT ..................................................... 170
5.2.3 การพสจนคณสมบต (AB)T = ATBT .............................................................. 183
5.3 การหาคาลอการทมฐานใดๆ ....................................................................................... 184
5.4 การบวกและลบของสมการพหนาม ............................................................................ 190
5.5 การวาดกราฟสองมต ................................................................................................. 196
5.6 สรปทายบท .............................................................................................................. 201
5.7 แบบฝกหดทายบท .................................................................................................... 202
บทท 6 ความรเบองตนโปรแกรม SWISH MAX ................................................ 203
6.1 ประวตความเปนมาของโปรแกรม SWISH MAX ........................................................ 203
6.2 การตดตงโปรแกรม SWISH MAX4 .......................................................................... 204
6.3 สวนตอประสานกบผใชของโปรแกรม SWISH MAX4 ................................................ 207
6.4 การสรางชนงานดวยโปรแกรม SWISH MAX4 .......................................................... 213
6.4.1 การแทรกไฟลรปภาพ ..................................................................................... 214
6.4.2 การแทรกไฟลเสยง ......................................................................................... 216
6.4.3 การแทรกไฟลวดโอ ........................................................................................ 217
6.4.4 การแทรกขอความ .......................................................................................... 218
6.4.5 การวาดเสนและวาดรป ................................................................................... 220
6.4.6 การบนทกชนงาน .......................................................................................... 221
6.4.7 การสงออกชนงาน ......................................................................................... 221
6.5 การใสลกเลน ............................................................................................................ 221
6.5.1 ตวอยางการใสลกเลนใหกบชนงาน ................................................................. 222
6.6 การใสสครปตเบองตน............................................................................................... 223
6.6.1 การใสสครปตเกยวกบการควบคมการแสดงผล ................................................ 223
6.6.2 การใสสครปตเพอสรางการเชอมโยง ................................................................ 225
6.6.3 การใสสครปตเกยวกบเสยง ............................................................................ 226
6.7 สรปทายบท .............................................................................................................. 226
6.8 แบบฝกหดทายบท .................................................................................................... 227
บทท 7 การสรางสอการสอนดวยโปรแกรม SWISH MAX และ SCILAB ........... 229
7.1 ประวตความเปนมาของแอคชนสครปต ....................................................................... 229
7.2 ขนตอนการเขยนสครปตโปรแกรม SWISH MAX รวมกบ SCILAB .............................. 229
7.2.1 การสงหรอโหลดขอมลระหวางไฟลภาพเคลอนไหวแบบแฟลชกบไฟล PHP ........ 230
7.2.2 ตวอยางการสรางเวบไซตทมภาพเคลอนไหวแบบแฟลชรวมกบ SCILAB ........... 230
7.3 สรปทายบท .............................................................................................................. 247
7.4 แบบฝกหดทายบท .................................................................................................... 248
บรรณานกรม ....................................................................................................... 249
1
บทท 1 พนฐานการใชงานโปรแกรม SCILAB
บทนจะสรปพนฐานการใชงานโปรแกรม SCILAB ทจาเปนสาหรบการนาไปใชงานรวมกบโปรแกรม
ตางๆ เพอสรางสอการเรยนการสอนในบทตอไป โดยบทนจะเรมตนกลาวถงประวตความเปนมาของ
โปรแกรม SCILAB จากนนจะอธบายการสรางตวแปรสเกลาร เวกเตอร เมทรกซ และพหนาม
การใชตวดาเนนการทางคณตศาสตรแบบตางๆ รวมถงวธการเขยนโปรแกรม และการวาดกราฟสอง
มตและสามมตดวยโปรแกรม SCILAB
1.1 ประวตความเปนมาของโปรแกรม SCILAB
SCILAB เปนโปรแกรมภาษาขนสงทถกพฒนาขนโดยความรวมมอกนระหวางนกวจยจากสถาบน
Institut National De Recherche En Informatique Et En Automatique (INRIA) และ École
nationale des ponts et chausses (ENPC) ประเทศฝรงเศส ตงแต ค.ศ. 1989 [1] โดยมจดมงหมาย
เพอใชในการคานวณเชงตวเลขและแสดงผลกราฟกทซบซอน ดงนนโปรแกรม SCILAB จงเหมาะ
สาหรบการใชงานทางดานวทยาศาสตรและวศวกรรมศาสตร นอกจากนโปรแกรม SCILAB ยงเปน
โปรแกรมทใหฟร1 และอนญาตใหผใชสามารถนาไปพฒนาตอยอดได ผสนใจสามารถดาวนโหลด
ไฟลโปรแกรม SCILAB และขอมลทเกยวของตางๆ ไดจากเวบไซต http://www.scilab.org หรอท
http://home.npru.ac.th/piya/webscilab
สงทสาคญอกประการหนงของโปรแกรม SCILAB2 คอความสามารถในการทางานทใกล
เคยงกบโปรแกรม MATLAB [3] ซงเปนโปรแกรมทนยมมากสาหรบผใชงานทางดานวทยาศาสตร
และวศวกรรมศาสตร แตคาลขสทธซอฟตแวรของโปรแกรม MATLAB นนมราคาแพงมาก
1 ไมตองเสยเงนคาลขสทธซอฟตแวร แตการใชงานตองอยภายใตเงอนไขของใบอนญาต CeCILL [2] 2 นอกจากนยงมโปรแกรมอนๆ อกทใหฟร (freeware) และทางานคลายกบโปรแกรม SCILAB เชน โปรแกรม Octave
(http://www.octave.org) อยางไรกตามจากการทดลองใชงานพบวาโปรแกรม SCILAB สามารถทางานไดเปนอยางด
รวมทงไดรบการพฒนาอยางตอเนองตลอดเวลา
2
เพราะฉะนนในปจจบนนหลายๆ หนวยงานทงภาคอตสาหกรรมและภาคการศกษาทงในและนอก
ประเทศไดเรมนาโปรแกรม SCILAB มาชวยในการทางาน การเรยนการสอน และการทาวจย
ทงนเปนเพราะวาโปรแกรม SCILAB สามารถทางานไดอยางมประสทธภาพ และไมตองเสยเงน
คาลขสทธซอฟตแวร
โดยทวไปโปรแกรม SCILAB มขอดสรปไดดงน
มความงายตอการเรยนรและทาความเขาใจ
มขนตอนการเขยนโปรแกรมไมยงยาก
มฟงกชน (function) สาหรบการคานวณทางคณตศาสตรจานวนมากพรอมใชงาน
มกลองเครองมอ (toolbox) จานวนมากทประกอบดวยฟงกชนตางๆ ทจาเปนสาหรบการแกไข
ปญหาทางดานวทยาศาสตรและวศวกรรมศาสตร เชน กลองเครองมอดานการควบคมทนทาน
(robust control), กลองเครองมอดานการประมวลผลสญญาณ (signal processing), และ
กลองเครองมอดานการหาคาเหมาะทสด (optimization) เปนตน
ประมวลผลขอมลทอยในรปของเมทรกซ (matrix) และในรปเชงสญลกษณ (symbolic) ได
อยางรวดเรวและมประสทธภาพ
สามารถพฒนาฟงกชนใหมๆ ขนมาใชงานรวมกบโปรแกรม SCILAB ไดโดยงาย
ใชงานรวมกบโปรแกรมภาษาฟอรแทรน (FORTRAN), ภาษาซ (C) และ MATLAB ได
ใชงานรวมกบโปรแกรม LabVIEW เพอทาการเชอมตอกบอปกรณฮารดแวรได
สรางโปรแกรมสาเรจรปสาหรบการจาลองระบบ (system simulation) ไดโดยใชเครองมอของ
โปรแกรม SCILAB ทเรยกวา “Xcos”
พฒนาตอยอดไดเนองจากมรหสตนฉบบ (source code) และคมอการใชงานให ซงสามารถ
ดาวนโหลดไดจากเวบไซต http://www.scilab.org
จากทกลาวมาขางตนจะเหนไดวาโปรแกรม SCILAB ทางานไดหลากหลาย อยางไรกตาม
บทนจะสรปเฉพาะพนฐานการใชงานโปรแกรม SCILAB เพอใหผอานสามารถนาไปใชงานไดอยาง
ถกตองและรวดเรว สาหรบผสนใจรายละเอยดของพนฐานการใชงานโปรแกรม SCILAB สามารถ
ศกษาไดจาก [4] นอกจากนโปรแกรม SCILAB ยงสามารถใชงานไดในหลายระบบปฏบตการ เชน
ระบบปฏบตการวนโดวส (Windows XP, Vista, 7), ระบบปฏบตการลนกซ (Linux), และระบบ
ปฏบตการ Mac OS X โดยหนงสอเลมนจะอางองถงโปรแกรม SCILAB เวอรชน 4.1.23 ททางาน
บนระบบปฏบตการวนโดวสเทานน
3 ดาวนโหลดไดท http://home.npru.ac.th/piya/webscilab/download.php ขนาด 15.3 เมกะไบต
3
รปท 1.1 การเลอกสารบบทตองการตดตงโปรแกรม SCILAB
1.2 การตดตงโปรแกรม SCILAB
ไฟลตดตงโปรแกรม SCILAB เวอรชน 4.1.2 นนคอ “scilab-4.1.2.exe” (15.3 MB) สามารถ
ดาวนโหลดไดทเวบไซต home.npru.ac.th/piya/webscilab/download.php หรอ www.scilab.org
และเมอไดไฟล scilab-4.1.2.exe มาแลว กใหทาการดบเบลคลกทชอไฟลนเพอตดตงโปรแกรม
SCILAB โดยจะตองตดตงโปรแกรมนไวทสารบบ C:\WINDOWS ตามรปท 1.1 จงจะสามารถ
นามาประยกตใชงานรวมกบโปรแกรมอนๆ เพอสรางสอการเรยนการสอนทอธบายในบทตอไปได
จากนนกดปม Next ไปเรอยๆ จนกระทงตดตงโปรแกรม SCILAB เสรจ
1.3 การสรางสเกลาร เวกเตอร และเมทรกซ
คาสเกลาร (scalar) สามารถกาหนดลงในตวแปรไดทนท เชน ถาตองการกาหนดใหตวแปร a มคา
เทากบเลขเชงซอน 2 + 3i และตวแปร b มคาเทากบ 5 กทาไดดงน
-->a = 2 + 3*%i //กาหนดให a = 2 + 3i
a
2. + 3.i
-->b = 5; //กาหนดให b = 5
-->
4
เมอ %i คอคาคงทพเศษทใชในการแสดงตวเลขเชงซอน โดยมคาเทากบหนวยจนตภาพ (imagi-
nary unit) นนคอ 1= −i สวนเครองหมายเครองหมายอฒภาค (semicolon) “ ; ” ทใชปด
ทายคาสงทสองเปนการบอกใหโปรแกรมไมตองแสดงผลลพธออกทางหนาตางคาสง ในขณะท
เครองหมายทบสองอน (double slash) “ // ” หรอเครองหมายคอมเมนต (comment) จะบอกให
โปรแกรม SCILAB ไมทาการประมวลผลตอคาสงหรอขอความทอยหลงเครองหมายคอมเมนตน
ในการใชงานโปรแกรม SCILAB เครองหมายขนบรรทดใหม “ ... ” ซงมลกษณะเปน
จดทเรยงตอกนสามจด จะมประโยชนมากในการเขยนโปรแกรมโดยเฉพาะอยางยงเมอคาสงทใชม
ความยาวมาก เครองหมายนเอาไวใชตอทายคาสงเพอบอกวาคาสงในบรรทดนนยงไมสนสด ดงนน
ถงแมวาจะกดปม Enter หลงเครองหมายขนบรรทดใหมน โปรแกรม SCILAB กยงไมนาคาสงนน
ไปประมวลผล แตจะรอรบขอมลสวนทเหลอทจะเขยนตอไปในบรรทดใหมจนกระทงหมดคาสงแลว
กดปม Enter อกครง จากนนโปรแกรม SCILAB จงนาขอความทงหมดมารวมกนเปนประโยค
คาสงเดยว แลวจงนาไปประมวลผล ตวอยางเชน
-->x = 5; y = 3;
-->z = x + y //หาผลบวกของตวแปร x กบตวแปร y แลวนาผลลพธทได
z = //ไปบรรจไวในตวแปร z
8.
-->z = x + ... //หมายถงยงไมสนสดคาสง โปรแกรม SCILAB ยงไมนาขอมลนไปประมวลผล
-->y //เมอกดปม Enter กถอวาเปนการสนสดคาสงทปอนจากบรรทดกอนหนาน
z = //โปรแกรม SCILAB จงนาคาสงทงหมดคอ z = x + y ไปประมวลผล
8. //ผลลพธทไดมคาเทากน
นอกจากนโปรแกรม SCILAB ไดเตรยมคาคงทพเศษอนๆ เพอรองรบการคานวณทาง
คณตศาสตร ไดแก
%pi คอคาอตราสวนระหวางความยาวเสนรอบวงกบเสนผานศนยกลางของวงกลม มคาเทากบ
3.1415927
%e คอคาคงทตรโกณมต (trigonometric constant) มคาเทากบ 2.7182818
%inf ใชแทนตวเลขทมคาเปนอนนต (infinity) นนคอ %inf = ∞ เชน คา 1/0
%eps มาจากคาวา “epsilon” คอคาหนวยยอยขนาดเลกสด (≈ 2.22×10-16) ทโปรแกรม
SCILAB รองรบได กลาวคอตวเลขทมคานอยกวาคา %eps โปรแกรม SCILAB ถอวามคา
เทากบ 0
5
%nan ใชแทนคาทไมสามารถแสดงใหอยในรปของตวเลขได (มาจากคาวา Not-A-Number)
เชน คา 0/0
ans คอตวแปรชวคราว (temporary variable) ทเกบคาของผลลพธทไดจากการคานวณของ
คาสง ซงจะถกนามาใชโดยอตโนมต ในกรณทไมมการระบตวแปรมารบคาของผลลพธ
%t หรอ %T คาคงตวบลน (Boolean constant) ทแสดงวาเปนจรง (True)
%f หรอ %F คาคงตวบลนทแสดงวาเปนเทจ (False)
เวกเตอร (vector) คอเมทรกซ (matrix) ขนาดหนงแถว หรอเมทรกซขนาดหนงแนวตง
เวกเตอรแถว (row vector) สามารถสรางไดโดยการใชเครองหมายจลภาค (comma) “ , ” หรอ
ชองวาง (space) เปนตวแยกสมาชกแตละสมาชกในเวกเตอรแถว ตวอยางเชน
-->v = [1, 2, -3]
v =
1. 2. - 3.
-->v = [1 2 -3]
v =
1. 2. - 3.
ถาตองการทราบวาเวกเตอร v มความยาวเทาใดหรอมจานวนสมาชกทงหมดเทาใด กทาไดโดยการ
ใชคาสง length ดงน
-->length(v)
ans =
3. //หมายความวาเวกเตอร v มสมาชกสามตว
ในขณะทเวกเตอรแนวตง (column vector) สรางไดโดยการทรานสโพส (transpose)
เวกเตอรแถวซงใชเครองหมายอะพอสทรอฟ (apostrophe) “ ' ” ตามหลงตวแปรเวกเตอรแถว หรอสามารถสรางเวกเตอรแนวตงขนมาไดโดยตรง โดยใชเครองหมายอฒภาค “ ; ” เปนตวแยก
สมาชกแตละสมาชกในเวกเตอรแนวตง เชน
-->v = [1 2 3]; //สรางเวกเตอรแถว v
-->v' //ใชทรานสโพสกบเวกเตอรแถวเพอใหไดเปนเวกเตอรแนวตง
ans =
1.
6
2.
3.
-->w = [1; 2; -3] //สรางเวกเตอรแนวตงขนมาโดยใชเครองหมายเซมโคลอน
w =
1.
2.
- 3.
นอกจากการกาหนดคาโดยตรงใหกบเวกเตอรแลว ผใชยงสามารถกาหนดคาของเวกเตอร
ใหมคาเพมขนหรอลดลงแบบอตโนมตได โดยการใชเครองหมายทวภาค (colon) “ : ” ซงมรปแบบการใชงานดงน
ชอตวแปร = คาเรมตน : คาทเพมขน (หรอคาทลดลง) : คาสดทาย
ในกรณทไมมการกาหนดคาทเพมขน (หรอคาทลดลง) โปรแกรม SCILAB จะกาหนดใหเปนคาท
เพมขนเทากบ +1 โดยอตโนมต (คาโดยปรยาย) ตวอยางเชน
-->z = 1:2:10 //เรมตนทคา 1 แลวเพมขนทละ +2 จนกระทงถงคาทมากสดทไมเกน 10
z =
1. 3. 5. 7. 9.
-->z = 0:5 //เรมตนทคา 0 แลวเพมขนทละ +1 จนกระทงถง 5
z =
0. 1. 2. 3. 4. 5.
-->z = 5:0 //คาเรมตนท 5 ไมสามารถเพมขนทละ +1 จนถง 0 ได ดงนนผลลพธทได
z = //จงมคาเทากบเมทรกซวาง (empty matrix) นนคอมจานวนแถวกบจานวน
[] //แนวตงเทากบศนย
เมทรกซขนาด m×n คอเมทรกซทมจานวน m แถว และ n แนวตง เชน ถาตองการสราง
เมทรกซขนาด 2×3 กสรางได เชน
-->A = [1 2 3; 4 5 6]
A =
7
1. 2. 3.
4. 5. 6.
และหากตองการทราบวาเมทรกซ A มขนาดเทาใด กทาไดโดยใชคาสง size ดงน
-->size(A)
ans =
2. 3. //บอกวาเมทรกซ A มขนาด 2×3 (หรอ 2 แถว และ 3 แนวตง)
นอกจากนผใชยงสามารถอางถงสมาชกแตละตวในเมทรกซไดโดยตรงตามรปแบบการใช
งานดงน
-->b = A(2, 3)
b =
6.
คาสงนเปนการบอกโปรแกรม SCILAB ใหนาคาของสมาชกในแถวทสองและแนวตงทสามของ
เมทรกซ A ไปบรรจไวในตวแปร b ในทานองเดยวกนผใชยงสามารถกาหนดคาใหแกสมาชกแตละ
ตวในเมทรกซไดโดยตรง เชน
-->A(2, 3) = 10
A =
1. 2. 3.
4. 5. 10.
ซงเปนการกาหนดใหคาของสมาชกในแถวทสองและแนวตงทสามของเมทรกซ A มคาเทากบ 10
ดงนนเมทรกซ A จงมผลลพธตามทแสดงไวขางตน
1.3.1 การหาทรานสโพส ดเทอรมแนนต อนเวอรสการคณ ของเมทรกซ
ทรานสโพสเมทรกซ (matrix transpose) เปนการเปลยนแนวตงใหเปนแถว หรอการเปลยนแถว
ใหเปนแนวตง โปรแกรม SCILAB สามารถทาการทรานสโพสเมทรกซได 2 รปแบบ คอ
1) ทรานสโพสแบบสงยค (conjugate transpose) จะใชเครองหมาย “ ' ” เปนตวดาเนนการ
โดยทาหนาทสรางทรานสโพสเมทรกซ พรอมทงทาการสงยคของตวเลขเชงซอนดวย
2) ทรานสโพสแบบธรรมดา (transpose) จะใชเครองหมาย “ .' ” เปนตวดาเนนการ โดยจะสราง
เฉพาะทรานสโพสเมทรกซเทานน
8
ตวอยางการใชงานเชน
-->A = [1 + 2*%i; 3; 2 - %i];
-->A' //ใชทรานสโพสแบบสงยค
ans =
1. - 2.i 3. 2. + i //ทาการสงยคของตวเลขเชงซอนดวย
-->A.' //ใชทรานสโพสแบบธรรมดา
ans =
1. + 2.i 3. 2. - i
สาหรบการหาดเทอรมแนนต (determinant) และอนเวอรสการคณของเมทรกซ A ทาได
โดยการใชคาสง det(A) และ inv(A) ตามลาดบ เชน
-->A = [1 2; 3 4]; //สรางเมทรกซ A
-->det(A) //หาดเทอรมแนนต ของเมทรกซ A
ans =
- 2.
-->inv(A) //หาอนเวอรสการคณของเมทรกซ A
ans =
- 2. 1.
1.5 - 0.5
1.3.2 การแกระบบสมการเชงเสน
โปรแกรม SCILAB สามารถนามาใชแกไขปญหาระบบสมการเชงเสน (linear equation system)
ไดโดยงาย ตวอยางเชน ถาตองการแกสมการสองตวแปรเพอหาคาของตวแปร x1 และ x2 จาก
2x1 + x2 = 3 (1.1)
x1 – x2 = 3 (1.2)
9
ถาใชหลกการแกสมการสองตวแปรทวไปเพอแกสมการท (1.1) และ (1.2) จะไดผลลพธคอ x1 = 2
และ x2 = -1 เชนเดยวกนผใชสามารถแกสมการทงสองนไดโดยใชหลกการของเมทรกซดงน
สมการท (1.1) และ (1.2) สามารถเขยนใหอยในรปของเมทรกซไดคอ
⎡ ⎤⎡ ⎤ ⎡ ⎤⎢ ⎥⎢ ⎥ ⎢ ⎥⎣ ⎦ ⎣ ⎦⎣ ⎦
1
2
bxA
x2 1 3
x1 -1 3= (1.3)
หรอ Ax = b ผลเฉลยของสมการ (1.3) หาไดโดยการนา A-1 (อนเวอสการคณของเมทรกซ A)
มาคณทงสองขางของสมการ (.3) กจะไดผลลพธเปน -1 -1A Ax = A b นนคอ -1
x = A b ดงนน
คาตอบของสมการท (1.1) และ (1.2) หาไดจากการใชชดคาสงดงน
-->A = [2 1; 1 -1]; //เมทรกซขนาด 2×2
-->b = [3; 3]; //เวกเตอรแนวตงขนาด 2×1
-->x = inv(A)*b //คาตอบของสมการสองตวแปรเปนเวกเตอรแนวตงขนาด 2×1
x =
2.
- 1.
ผลลพธทไดคอ x1 = 2 และ x2 = -1
1.4 พหนาม
พหนาม (polynomial) คอผลรวมของจานวนทเขยนในรปการคณของคาคงตวกบตวแปรตงแต 1
ตวขนไป โดยเลขชกาลงของตวแปรแตละตวมคาเปนศนยหรอจานวนเตมบวก อยางไรกตามในทน
จะพจารณาเฉพาะกรณทพหนามเปนฟงกชนของตวแปรเพยงตวเดยวเทานน กลาวคอโปรแกรม
SCILAB จะรองรบพหนามทมรปแบบดงน
2 n0 1 2 ny = a +a x+a x + +a x…
เมอ a = [a0 a1 a2 ... an] คอเวกเตอรทมสมาชกแตละตวเปนคาสมประสทธของพหนาม, x
คอตวแปรพหนาม, n คอดกร (degree) ของพหนาม, และ y คอสมการพหนาม ในโปรแกรม
SCILAB สมการพหนามสรางไดโดยใชคาสง poly ดงน
10
y = poly(a, "x", [flag])
ซงมรปแบบการใชงานอย 2 แบบ คอ
1) ถาพารามเตอร a เปนเวกเตอร ผลลพธทไดคอสมการพหนาม y ทถกกาหนดโดยพารามเตอร
x และ flag เมอ x คอตวแปรพหนาม และ flag เปนตวเลอก (option) ทมการเรยกใช
งานดงน
flag = "coeff" สรางสมการพหนามจากคาสมประสทธทกาหนดโดยเวกเตอร a
flag = "roots" (คาโดยปรยาย) สรางสมการพหนามจากคาตอบของสมการพหนามท
กาหนดโดยเวกเตอร a
ตวอยางเชน
-->q = poly([1 2 3], "x", "coeff") //สรางสมการพหนามจากคาสมประสทธ
q =
2 1 + 2x + 3x
-->p = poly([1 2], "s") //สรางสมการพหนามจากคาตอบของสมการพหนาม
p = 2
2 - 3s + s //นนคอ s = 1 และ s = 2 เปนคาตอบของ s2 – 3s + 2 = 0
-->roots(p) //คาสงทใชหาคาตอบของสมการพหนาม p
ans =
1.
2.
2) ถาพารามเตอร a เปนเมทรกซ ผลลพธทไดคอสมการลกษณะเฉพาะ (characteristic equa-
tion) ของเมทรกซ a ซงในทางคณตศาสตรสมการลกษณะเฉพาะของเมทรกซ A หาไดจาก
การการแกสมการ det(A – λI) = 0 โดย λ คอคาคงตวใดๆ และ I คอเมทรกซเอกลกษณ
ทมขนาดกบเมทรกซ A เชน ถาใหเมทรกซ ⎡ ⎤⎢ ⎥⎣ ⎦1 23 4
A = จะไดวาสมการลกษณะเฉพาะของ
เมทรกซ A คอสมการ λ λ2-5 -2 = 0 โปรแกรม SCILAB สามารถหาสมการลกษณะเฉพาะ
ของเมทรกซ A ไดโดยใชคาสง poly ดงน
11
-->A = [1 2; 3 4];
-->y = poly(A, "x") y = 2
- 2 - 5x + x //ผลลพธเทากนกบสมการ λ λ2-5 -2 = 0 เมอแทนคา x = λ
1.5 การดาเนนการทางคณตศาสตร
การคานวณทางคณตศาสตรระหวางคาสเกลารกบคาสเกลาร เครองหมายทใชในการคานวณกบ
เครองหมายทใชในโปรแกรม SCILAB จะแตกตางกนเลกนอยตามตารางท 1.1 ตวอยางเชน
-->a = 3;
-->b = 2;
-->M = [a + b, a - b, a * b; a \b, a /b, a^b] M =
5. 1. 6.
0.6666667 1.5 9.
ในขณะทตวดาเนนการทใชในการคานวณทางคณตศาสตรสาหรบเมทรกซ แสดงในตาราง
ท 1.2 ตวอยางเชน
-->A = [1 2 3; 4 5 6];
-->B = [1 1 1; -1 -1 -1];
-->A + B
ans =
2. 3. 4.
3. 4. 5.
-->A – B
ans =
0. 1. 2.
5. 6. 7.
12
ตารางท 1.1 การดาเนนการทใชในการคานวณทางคณตศาสตรของคาสเกลาร
การดาเนนการ รปแบบพชคณต รปแบบของ SCILAB
การบวก (addition) a + b a + b
การลบ (subtraction) a – b a – b
การคณ (multiplication) a × b a * b
การหารซาย (left division) b
aa \ b
การหารขวา (right division) a
ba / b
การยกกาลง (exponentiation) ab a^b หรอ a**b
ตารางท 1.2 ตวดาเนนการทใชในการคานวณทางคณตศาสตรของเมทรกซ
ตวดาเนนการ คาอธบาย
+ การบวก (addition)
– การลบ (subtraction)
* การคณ (multiplication)
.* การคณในระดบสมาชก (element-wise multiplication)
.*. การคณแบบโครเนคเกอร (Kronecker product)
\ การหารซาย (left division)
.\ การหารซายในระดบสมาชก (element-wise left division)
.\. การหารซายแบบโครเนคเกอร (Kronecker left division)
/ การหารขวา (right division)
./ การหารขวาในระดบสมาชก (element-wise right division)
./. การหารขวาแบบโครเนคเกอร (Kronecker right division)
^ หรอ ** การยกกาลง (exponentiation)
.^ การยกกาลงในระดบสมาชก (element-wise exponentiation)
-->A * B //จานวนแนวตงของตวตงไมเทากบจานวนแถวของตวคณ
!--error 10
Inconsistent multiplication.
13
-->A * B'
ans =
6. - 6.
15. - 15.
-->A .* B //การคณในระดบสมาชก
ans =
1. 2. 3.
– 4. – 5. – 6.
-->A .\ B //การหารซายในระดบสมาชก
ans =
1. 0.5 0.3333333
- 0.25 - 0.2 - 0.1666667
-->A .^ B //การยกกาลงในระดบสมาชก
ans =
1. 2. 3.
0.25 0.2 0.1666667
จะเหนไดวาการดาเนนการในระดบสมาชกเกดขนได กตอเมอเมทรกซทงสองมขนาดเทากน
1.6 การดาเนนการทางคณตศาสตร
โปรแกรม SCILAB มฟงกชนทใชในการคานวณทางคณตศาสตรจานวนมากพรอมเรยกใชงาน เชน
ฟงกชนพนฐานทเกยวกบตวเลข ฟงกชนตรโกณมต และฟงกชนพนฐานทางสถต เปนตน โดยม
รายละเอยดดงตอไปน
1.6.1 ฟงกชนพนฐานทเกยวกบตวเลข
ตารางท 1.3 แสดงฟงกชนพนฐานทเกยวกบตวเลข ซงมตวอยางการใชงานเชน
-->abs([1, %i, -2, -2*%i, 3 + 4*%i])
ans =
1. 1. 2. 2. 5.
14
ตารางท 1.3 ตวอยางฟงกชนพนฐานทเกยวกบตวเลข
ฟงกชน คาอธบาย
abs(x) หาคาสมบรณ (absolute value) ของตวแปร x
sqrt(x) หาคารากทสอง (square root) ของตวแปร x
modulo(m,n) หาคาเศษทเหลอการหารตวแปร n ดวย m
ceil(x) หาคาจานวนเตมทมคาใกลกบคา x ไปทางคา ∞ มากทสด
floor(x) หาคาจานวนเตมทมคาใกลกบคา x ไปทางคา -∞ มากทสด
sign(x) หาคาเครองหมายของตวแปร x
roots(p) หาคารากหรอคาตอบของสมการพหนาม p
real(x) หาคาจานวนจรงของตวแปร x
imag(x) หาคาจานวนจนตภาพของตวแปร x
conj(x) หาคาสงยคของจานวนจานวนเชงซอนของตวแปร x
exp(x) หาคา ex ของตวแปร x
log(x) หาคา log ฐาน e ของตวแปร x
log2(x) หาคา log ฐาน 2 ของตวแปร x
log10(x) หาคา log ฐาน 10 ของตวแปร x
-->sqrt([2, 4, -1, -4])
ans =
1.4142136 2. i 2.i
-->real([0.1, %i, -1.5 + 2*%i, 2 - %i]) ans =
0.1 0. - 1.5 2.
-->imag([0.1, %i, -1.5 + 2*%i, 2 - %i]) ans =
0. 1. 2. - 1.
-->log([1, %e, 10, 20, 100])
ans =
0. 1. 2.3025851 2.9957323 4.6051702
15
ตารางท 1.4 ฟงกชนตรโกณมตและฟงกชนตรโกณมตผกผน
ฟงกชน คาอธบาย
sin(x) หาคา sine ของตวแปร x
cos(x) หาคา cosine ของตวแปร x
tan(x) หาคา tangent ของตวแปร x
asin(y) หาคา sine inverse ของตวแปร y
acos(y) หาคา cosine inverse ของตวแปร y
atan(y) หาคา tangent inverse ของตวแปร y
-->log10([1, 2, 10, 20, 100])
ans =
0. 0.30103 1. 1.30103 2.
1.6.2 ฟงกชนตรโกณมต
โปรแกรม SCILAB ไดเตรยมคาสงพนฐานสาหรบฟงกชนตรโกณมตและฟงกชนตรโกณมตผกผน
ไวตามตารางท 1.4 โดยคามมทใชหรอทไดรบจากฟงกชนทางตรโกณมตจะตองมหนวยเปนเรเดยน
(radian) ตวอยางเชน
-->y = sin([0, 1, %pi/2, -%pi/2])
y =
0. 0.8414710 1. - 1.
-->x = asin(y)
x =
0. 1. 1.5707963 - 1.570796 //มหนวยเปนเรเดยน -->y = tan([0, %pi/6, %pi/4, %pi/3])
y =
0. 0.5773503 1. 1.7320508
-->x = atan(y)
x =
0. 0.5235988 0.7853982 1.0471976 //มหนวยเปนเรเดยน
16
ตารางท 1.5 ตวอยางฟงกชนพนฐานทางสถต
ฟงกชน คาอธบาย
min(x) หาคาตาสด (minimum) ของตวเลขทงหมดในตวแปร x
max(x) หาคาสงสด (maximum) ของตวเลขทงหมดในตวแปร x
mean(x) หาคาเฉลย (mean) ของตวเลขทงหมดในตวแปร x
median(x) หาคามธยฐาน (median) ของตวเลขทงหมดในตวแปร x
variance(x) หาคาความแปรปรวน (variance) ของตวเลขทงหมดในตวแปร x
sum(x) หาคาผลบวกของตวเลขทงหมดในตวแปร x
cumsum(x) หาคาผลบวกสะสม (cumulative sum) ของตวเลขทงหมดในตวแปร x
prod(x) หาคาผลคณของตวเลขทงหมดในตวแปร x
cumprod(x) หาคาผลคณสะสม (cumulative product) ของตวเลขทงหมดในตวแปร x
sort(x) เรยงลาดบตวเลขทงหมดในตวแปร x จากคามากไปหาคานอย
histplot(n,x) วาดรปฮสโตแกรม (histogram) ของคาทงหมดในเวกเตอร x เปน
จานวน n ชวงระหวางคาตาสดและคาสงสดของเวกเตอร x
1.6.3 ฟงกชนพนฐานทางสถต
โปรแกรม SCILAB ไดเตรยมฟงกชนสาหรบการใชงานทางดานสถต ตามทแสดงในตารางท 1.5
ตวอยางเชน
-->x = [3 1 4 9 2 5 7 8 6];
-->[min(x), max(x), mean(x), median(x), sum(x)]
ans =
1. 9. 5. 5. 45.
-->sort(x)
ans =
9. 8. 7. 6. 5. 4. 3. 2. 1.
ในการใชงานทางดานสถต คาสงทนยมใชคอคาสง histplot(n,x) ซงเปนคาสงท
ใชวาดรปฮสโตแกรม (histogram) ของคาทงหมดในเวกเตอร x เปนจานวน n ชวงระหวางคาตาสด
และคาสงสดของเวกเตอร x ตวอยางเชน
17
รปท 1.2 ตวอยางรปฮสโตแกรม
-->d = rand(1, 10000, 'normal'); //สรางตวแปรสมจานวน 10000 ตว
-->subplot(1,2,1);
-->histplot(10, d, normalization = %F); //รปท 1.2 ดานซาย
-->subplot(1,2,2);
-->histplot(20, d, normalization = %F); //รปท 1.2 ดานขวา
คาสงแรกจะทาการสรางจานวนสม (random number) จานวน 10000 ตว (บรรจไวในเวกเตอร
ขนาด 1×10000) โดยมลกษณะการแจกแจงปรกต (normal distribution) หรอการแจกแจงแบบ
เกาสเซยน (Gaussian) นนคอมคาเฉลย (mean) เทากบคา 0 และมคาความแปรปรวน (variance)
เทากบคา 1 จากนนทาการวาดรปฮสโตแกรมของจานวนสมทงหมดโดยแบงขอมลเปน 10 ชวง
(รปท 1.2 ดานซาย) และแบงขอมลเปน 20 ชวง (รปท 1.2 ดานขวา)
1.7 เมทรกซพเศษ
ในการประยกตใชงานเมทรกซ บางครงมความจาเปนตองสรางเมทรกซทมรปแบบเฉพาะ เชน ถา
ตองการสรางเมทรกซทมคาเปน 1 ทงหมดขนาด m×n เมอ m และ n มคามาก โดยการพมพคา
แตละคาเขาไปอาจจะทาใหเสยเวลามากและอาจเกดขอผดพลาดไดงาย ดงนนโปรแกรม SCILAB
จงไดเตรยมฟงกชนพนฐานสาหรบสรางเมทรกซพเศษหลายรปแบบขนมาไวใชงานตามตารางท 1.6
ตวอยางเชน
18
ตารางท 1.6 ตวอยางเมทรกซพเศษในโปรแกรม SCILAB
คาสง คาอธบาย
eye เมทรกซเอกลกษณ (identity matrix)
ones เมทรกซคาหนง (one matrix)
zeros เมทรกซคาศนย (zero matrix)
rand เมทรกซสม (random matrix)
diag เมทรกซทแยงมม (diagonal matrix)
tril เมทรกซสามเหลยมดานลาง (lower triangular matrix)
triu เมทรกซสามเหลยมดานบน (upper triangular matrix)
toeplitz เมทรกซ Toeplitz (toeplitz matrix)
-->A = eye(3,3) //สรางเมทรกซเอกลกษณทมขนาด 3×3
A =
1. 0. 0.
0. 1. 0.
0. 0. 1.
-->diag([1 2 3]) //คา 1, 2, และ 3 อย ณ เสนทแยงมมหลก
ans =
1. 0. 0.
0. 2. 0.
0. 0. 3.
1.7.1 เมทรกซสม
เมทรกซสม (random matrix) เปนเมทรกซทมสมาชกเปนจานวนสม โปรแกรม SCILAB สราง
เมทรกซสมไดโดยใชคาสง rand ซงมลกษณะการเรยกใชงานดงน
rand(m1, m2, [key])
โดย
19
m1, m2 คอเลขจานวนเตมบวกทใชกาหนดขนาดของเมทรกซสมทสรางขนมา เชน คาสง
rand(m1,m2) จะสรางเมทรกซสมขนาด m1 แนวนอน และ m2 แนวตง
key เปนตวเลอกทกาหนดลกษณะการแจกแจง (distribution) ของจานวนสมทสราง
กลาวคอถา
o key = "uniform" จานวนสมทสรางขนมาจะมลกษณะการแจกแจงเอกรปมคาอย
ระหวาง 0 ถง 1 (เปนคาโดยปรยาย)
o key = "normal" จานวนสมทสรางขนมาจะมลกษณะการแจกแจงปรกต (หรอแบบ
เกาสเซยน) ทมคาเฉลยเทากบ 0 และมคาความแปรปรวน (varaince) เทากบ 1
ตวอยางการใชงานของคาสงน เชน
-->X = rand(2, 4, 'uniform') //สรางเมทรกซสมขนาด 2×4
X =
0.3095371 0.9706916 0.0204748 0.3490364
0.6762972 0.5441797 0.8941365 0.1105365
-->W = rand(1, 100000, 'normal');
-->[mean(W), variance(W)] //คาเฉลยและคาความแปรปรวนสอดคลองกบ
ans = //ลกษณะการแจกแจงปรกต
0.0048048 0.9988003
1.8 การเขยนโปรแกรมดวย SCILAB
ในสวนนจะอธบายวธการใชงานคาสงวนซาและคาสงทดสอบเงอนไข เพอใหผอานสามารถเขยน
โปรแกรมอยางงายขนมาใชงานไดอยางรวดเรวและมประสทธผล
1.8.1 คาสงวนซา
ในการเขยนโปรแกรม บางครงมความจาเปนตองคานวณชดคาสงบางชดซาหลายครง ซงในกรณน
การใชคาสงวนซาจงมความจาเปนมาก โปรแกรม SCILAB ไดเตรยมคาสงสาหรบการวนซาไวสอง
รปแบบคอ คาสง for และคาสง while ซงมหลกการใชงานดงน
20
1.8.1.1 คาสง for คาสง for เหมาะสาหรบการใชงานทตองการใหโปรแกรมทาซาชดคาสงเดมทอยภายในลป (loop)
เปนจานวนรอบตามทกาหนดไวในนพจน (expression) ซงมรปแบบการใชงานดงน
กลาวคอโปรแกรมจะทาซาคาสง (instruction) ทงหมดภายในลปเปนจานวนรอบตามทกาหนดโดย
ตวแปรทเปนไปตามเงอนไขของนพจน ตวอยางการใชงานคาสง for เชน
-->L = 5;
-->x = [];
-->for i = 1:L
--> x(i) = i;
-->end
ชดคาสงนหมายความวาเมอเรมตนใชงานตวแปร L มคาเทากบ 5 และกาหนดให x เปนเมทรกซ
วาง (empty matrix) จากนนทาการวนซาโดยใชตวแปร i เปนตวนบจานวนครง นนคอตวแปร i
จะเรมจากคา 1 แลวเพมขนทละ +1 จนถงคา 5 โดยคาของตวแปร i แตละคาจะถกบรรจไวใน
สมาชกลาดบท i ของเวกเตอร x ผลลพธของการประมวลผลชดคาสงนคอ
-->x'
ans =
1. 2. 3. 4. 5.
1.8.1.2 คาสง while คาสง while มลกษณะการทางานคลายกบคาสง for เพยงแตคาสง while จะมการทดสอบ
เงอนไขทผเขยนโปรแกรมกาหนดไวในนพจนทกรอบของการวนซา กลาวคอถาผลการทดสอบให
คาตรรกะเปนคา 1 (เปนจรง) โปรแกรมกจะทาซาชดคาสงภายในลปนนตออกหนงรอบ แตถาผล
การทดสอบใหคาตรรกะเปนคา 0 (เปนเทจ) โปรแกรมกจะยกเลกการทางานชดคาสงภายในลปนน
ทนท คาสง while มรปแบบการใชงานดงน
for variable = expression instruction_1;
instruction_n;
end
21
ตวอยางเชน
-->L = 5; x = []; -->i = 1;
-->while i <= L --> x(i) = i; --> i = i + 1; -->end
ชดคาสงนใหผลลพธเหมอนกบตวอยางของการใชคาสง for เพยงแตการใชคาสง while ตอง
กาหนดคาเรมตนของตวแปร i กอนนาคา i ไปทาการเปรยบเทยบกบคา L ตามเงอนไขทกาหนด
1.8.2 คาสงทดสอบเงอนไข
คาสงทดสอบเงอนไขมความจาเปนมากสาหรบการเขยนโปรแกรมคอมพวเตอรทซบซอน โดยทวไป
คาสงทดสอบเงอนไขทนยมใชคอ คาสง if ซงมหลกการใชงานดงน
กลาวคอถาผลการทดสอบเงอนไขในนพจนเปนจรง โปรแกรม SCILAB กจะทาคาสงทงหมดทอย
ระหวางคาวา then และ end แตถาผลการทดสอบเปนเทจ โปรแกรม SCILAB จะไมทาคาสง
ทงหมดทอยระหวางคาวา then และ end
นอกจากนคาสง if ยงสามารถนาไปใชงานกบการตดสนใจทซบซอนมากขนไดโดยการ
ใชงานรวมกบ else ซงมรปแบบการใชงานคอ
if expression then
instruction_1;
instruction_n;
end
while expression
instruction_1;
instruction_n;
end
22
กลาวคอถาผลการทดสอบเงอนไขในนพจนเปนจรง โปรแกรม SCILAB จะทาคาสงทงหมดทอย
ระหวางคาวา then และ else แตถาผลการทดสอบเปนเทจ โปรแกรม SCILAB จะทาคาสง
ทงหมดทอยระหวางคาวา else และ end
ในการใชงานทมการตดสนใจทซบซอนมากยงขน ผใชกยงคงสามารถใชงานคาสง if
รวมกบ elseif ได โดยมรปแบบการใชงานดงน
นนคอถาผลการทดสอบเงอนไขในนพจน expression_1 เปนจรง โปรแกรม SCILAB จะทา
ชดคาสง instructions_set1 แตถาผลการทดสอบเปนเทจ โปรแกรม SCILAB กจะทา
การทดสอบเงอนไขในนพจน expression_2 ตอไปทนท โดยทถาผลการทดสอบในนพจน
expression_2 เปนจรง โปรแกรม SCILAB กจะทาชดคาสง instructions_set2 แต
ถาผลการทดสอบเปนเทจ กจะทาชดคาสง instructions_set3
1.8.3 การเขยนฟงกชนแบบอนไลน
โปรแกรม SCILAB อนญาตใหผใชสรางฟงกชนใหมๆ ขนมาใชงานรวมกบโปรแกรม SCILAB ได
ในทนจะอธบายเฉพาะการเขยนฟงกชนแบบอนไลน (in-line function) ซงมลกษณะการใชงานดงน
function [เอาตพต] = function_name(อนพต), ชดคาสง, endfunction
if expression_1 then
instructions_set1;
elseif expression_2 then
instructions_set2;
else
instructions_set3;
end
if expression then
instructions_set1;
else
instructions_set2;
end
23
นนคอจะตองเรมตนดวยคาวา function และปดทายดวยคาวา endfunction โดยทภายใน
ฟงกชนจะมคาสงแตละคาสงจะตองคนดวยเครองหมายจลภาค ตวอยางเชนถาตองการสรางฟงกชน
แบบอนไลนทชอ MyMax เพอใชหาคาสงสดของเลขจานวนจรงสองจานวน กทาไดดงน
-->function [y] = MyMax(x1, x2), if x1 >= x2 then y = x1, ... -->else y = x2; end; endfunction;
-->y = MyMax(1, 5) //เรยกฟงกชน MyMax ขนมาใชงาน
y =
5.
นอกจากนยงสามารถใชคาสง deff ในการสรางฟงกชนแบบอนไลนไดเชนกน โดยมรปแบบการ
ใชงานคอ
deff('[เอาตพต] = function_name(อนพต)', 'ชดคาสง')
ตวอยางเชน
-->deff('y = MyMax(x1, x2)', 'if x1 > x2 then y = x1; ... -->else y = x2; end');
-->y = MyMax(1,5) y =
5.
ซงใหผลลพธเทากน
1.9 การวาดกราฟสองมต
คาสงพนฐานสาหรบการวาดกราฟสองมตบนระบบพกดฉาก x-y คอคาสง plot ซงมรปแบบการ
เรยกใชงานดงน
plot(x, y)
24
เมอเวกเตอร x เปนตวแปรอสระทกาหนดคาในเสนแกน x และเวกเตอร y ซงเปนตวแปรตามท
กาหนดคาในเสนแกน y (โดยเวกเตอร y ตองมขนาดเทากบเวกเตอร x เสมอ) นอกจากนคาสง
plot ยงสามารถเรยกใชงานไดในอกรปแบบหนงคอ
plot(y)
ซงในกรณนโปรแกรม SCILAB จะสมมตวาพารามเตอร x มคาเทากบคา 1 ถงจานวนสมาชก
ทงหมดของเวกเตอร y นนคอ x = 1:length(y) โดยอตโนมต
ตวอยางท 1.1 จงวาดกราฟของรปสญญาณไซนซอยด (sinusoid waveform) ตามสมการ y =
sin(2πft) สาหรบเวลาท t = 0 ถง 2 วนาท ถากาหนดใหความถ f = 1 เฮตรซ (Hertz)
วธทา จากโจทยสามารถเขยนเปนชดคาสงของโปรแกรม SCILAB ไดดงน
-->t = 0:0.01:2;
-->f = 1;
-->y = sin(2*%pi*f*t);
-->plot(t, y)
-->xtitle('A sinusoidal wave','Time (t)','Amplitude')
คาสงแรกเปนการกาหนดใหตวแปร t ใหมคาอยระหวาง 0 ถง 2 โดยสมาชกแตละตวทอยตดกน
จะมคาหางกนเทากบ 0.01 (ขนาดของตวแปร t คอ 1×201) จากนนกาหนดใหความถ f = 1
แลวกหาคาของสญญาณ y โดยคา y ทหามาไดจะมขนาดเทากบตวแปร t จากนนกสงใหวาดกราฟ
ขนมา ซงผลลพธทไดจะเปนกราฟตามรปท 1.3 สวนคาสง xtitle เปนคาสงทใชในการกาหนด
ชอของกราฟ ชอของเสนแกน x และชอของเสนแกน y
1.9.1 กราฟเชงขว
โดยทวไปจดพกด (x, y) ทแสดงถงตาแหนง (location) บนรปกราฟในระบบพกดฉากสามารถเปลยน
ใหอยในรปของจดพกด (r, θ) ในระบบพกดเชงขวได เมอ r คอขนาด และ θ คอมมเรเดยน (เทยบ
กบแกน x ในทศทวนเขมนาฬกา) โดยอาศยกฎของตรโกณมต ดงนนจากรปท 1.4 จะไดวา
2 2r x y= + และ 1 yθ tan x− ⎛ ⎞
⎜ ⎟⎝ ⎠
=
25
รปท 1.3 สญญาณไซนซอยด y = sin(2πft)
x
y
( )yx,
r
θ
รปท 1.4 ความสมพนธระหวางจด (x, y) ในระบบพกดฉาก และจด (r, θ) ในระบบพกดเชงขว
ในทานองเดยวกนจดพกด (r, θ) ในระบบพกดเชงขวกสามารถแปลงกลบไปเปนจดพกด (x, y)
ในระบบพกดฉากไดจากความสมพนธดงน
( )θx r cos= และ ( )θy r sin=
การวาดกราฟเชงขวในโปรแกรม SCILAB ทาไดโดยการใชคาสง
polarplot(theta, r)
เมอพารามเตอร theta คอคามม θ (มหนวยเปนเรเดยน) และพารามเตอร r คอคาความยาวของ
รศม ตวอยางเชน
26
รปท 1.5 ตวอยางรปกราฟแสดงผลลพธจากการใชคาสง polarplot
-->t = 0:0.01:2*%pi;
-->polarplot(sin(7*t), cos(8*t))
ผลลพธแสดงในรปท 1.5
หมายเหต นอกจากนโปรแกรม SCILAB ยงไดเตรยมคาสงสาหรบการวาดกราฟสองมตแบบอนๆ
ไวใชงานเฉพาะดานมากมายดงแสดงในตารางท 1.7
1.10 การวาดกราฟสามมต
สมการคณตศาสตรแบบสามตวแปรใดๆ สามารถแสดงใหอยในรปของกราฟสามมตได เพอใชแสดง
ความสมพนธของตวแปรทงสาม การใชงานคาสงวาดกราฟสามมตนนไมยากเพยงแตตองเขาใจถง
รปแบบของขอมลทจะปอนใหกบคาสงเหลาน การวาดกราฟสามมตใชขอมลทงหมดสามชดสาหรบ
เสนแกน x, เสนแกน y, และเสนแกน z ทอยในพกดคารทเซยน (Cartesian coordinate) x-y-z
โดยเวกเตอร x จะเปนตวกาหนดคาในเสนแกน x, เวกเตอร y จะเปนตวกาหนดคาในเสนแกน y,
และตวแปรตามทมคาเปลยนแปลงไปตามคา x และ y ซงกคอขนาดของคาบนเสนแกน z นนเอง
ดงนนตวแปรตาม z นจะตองมจานวนเทากบผลคณของจานวนขอมลในเวกเตอร x กบจานวน
ขอมลในเวกเตอร y
คาสงพนฐานสาหรบวาดกราฟแบบสามมตในโปรแกรม SCILAB มรปแบบดงน
27
ตารางท 1.7 ตวอยางคาสงในการวาดกราฟสองมตสาหรบการใชงานเฉพาะดาน
คาสง คาอธบาย
contour2d วาดกราฟคอนทวร (contour surface) จากรปกราฟสองมต
champ วาดกราฟสนามเวกเตอรแบบสองมต (2-D vector field)
fchamp วาดกราฟสนามเวกเตอรแบบสองมต ทกาหนดโดยสมการอนพนธอนดบหนง
(first-order ordinary differential equation)
bode วาดกราฟของโบดไดอะแกรม (Bode diagram) ทงกราฟแสดงขนาด (magnitude
plot) และกราฟแสดงมม (phase plot) ซงมประโยชนมากทางดานวศวกรรม
gainplot วาดกราฟแสดงขนาดของโบดไดอะแกรม
nyquist วาดกราฟไนควตซ (Nyquist plot)
evans วาดกราฟอแวนรทโลคส (Evans root locus)
plzr วาดกราฟโพล-ซโร (pole-zero plot)
plot3d(x, y, z)
เมอพารามเตอร x และ y คอเวกเตอรทมขนาดเทากน และพารามเตอร z คอตวแปรตามทขนกบ
คาของ x และ y ซงมจานวนสมาชกเทากบผลคณของจานวนสมาชกในเวกเตอร x กบจานวน
สมาชกในเวกเตอร y
ตวอยางท 1.2 กาหนดใหตวแปร x และ y มคาระหวาง 0 ถง 1 จงวาดกราฟสามมตจากสมการ
( ) ( )2xπ 2yπz 0.5 cos cos=
วธทา จากโจทยสามารถวาดกราฟสามมตไดโดยใชชดคาสงของโปรแกรม SCILAB ดงน
-->x = linspace(0, 1, 21);
-->y = linspace(0, 1, 21);
-->z = abs(0.5 * cos(2*%pi*x)' * cos(2*%pi*y));
-->plot3d(x, y, z);
ผลลพธทไดจากชดคาสงเหลานแสดงในรปท 1.6
28
รปท 1.6 ตวอยางรปกราฟแสดงผลลพธจากการใชคาสง plot3d
ถาตองการใหมการไลโทนสตามขนาดของคาในแกน z กสามารถทาไดโดยการใชคาสง
plot3d1 และถาตองการทราบความสมพนธระหวางสกบขนาดของคาในแกน z กสามารถทาไดโดย
ใชคาสง colorbar ซงมรปแบบการใชงานคอ
colorbar(umin, umax, [colminmax])
โดยพารามเตอร umin เปนเลขจานวนจรงของคาตาสดของขนาดของคาในแกน z, umax เปนเลข
จานวนจรงของคาสงสดของขนาดของคาในแกน z, และ colminmax เปนตวเลอกทมรปแบบ
การใชงานคอ colminmax = [1 nb_colors] เปนเวกเตอรขนาด 1×2 เมอ nb_colors คอจานวนสทใชในรปกราฟ ตวอยางการใชงานคาสงน เชน (ตอเนองจากรปท 1.6)
-->clf; zmin = min(z);
-->zmax = max(z);
-->colorbar(zmin, zmax, [1 30]);
-->plot3d1(x, y, z);
ผลลพธทไดแสดงในรปท 1.7 ซงมแถบสแสดงความสมพนธระหวางสและขนาดของคาในเสนแกน z
หมายเหต จากทกลาวมาทงหมดนเปนเพยงพนฐานการใชงานโปรแกรม SCILAB สาหรบผทสนใจ
วธการใชงานโปรแกรม SCILAB เพมเตมสามารถศกษารายละเอยดไดจาก [4]
29
รปท 1.7 ตวอยางรปกราฟแสดงผลลพธจากการใชคาสง colorbar รวมกบ plot3d1
1.11 สรปทายบท
บทนไดสรปพนฐานการใชงานโปรแกรม SCILAB ทจาเปนตางๆ (เชน การสรางสเกลาร เวกเตอร
เมทรกซ และพหนาม ตวดาเนนการทางคณตศาสตร ฟงกชนพนฐานทางคณตศาสตร รวมทงอธบาย
หลกการการเขยนโปรแกรมดวย SCILAB และการวาดกราฟสองมตและสามมต) เพอเปนแนวทาง
ในการนาไปใชงานรวมกบโปรแกรมตางๆ เพอสรางสอการเรยนการสอนทจะอธบายในบทตอไป
1.12 แบบฝกหดทายบท
1. จงคานวณหาคาของฟงกชนตอไปน เมอ x มคาเทากบ −2, 0, 2, −2i และ 2i
1.1) ( )xf 2x 5= − 1.2) ( ) ( )310xf x 2x log 3x 5−= + −
2. กาหนดให
5 8 7A 4 2 6
9 8 9=⎡ ⎤⎢ ⎥⎢ ⎥⎣ ⎦
, 1 2 3
B 2 4 52 3 1
− −= −⎡ ⎤⎢ ⎥⎢ ⎥⎣ ⎦
, 3 1 2
C 1 2 12 1 1
= −− −
⎡ ⎤⎢ ⎥⎢ ⎥⎣ ⎦
และ 2
E 02
−=⎡ ⎤⎢ ⎥⎢ ⎥⎣ ⎦
จงหาคาตอไปน
2.1) AB + BC 2.2) (A + B)/C
2.3) (A + B)C 2.4) AE + CE
30
3. จงหาคาตอบของสมการลกษณะเฉพาะของเมทรกซตอไปน
3.1) 2 3
A4 5
=⎡ ⎤⎢ ⎥⎣ ⎦
3.2) B = 1 52 3
−−⎡ ⎤⎢ ⎥⎣ ⎦
4. จงแกสมการเพอหาคาของตวแปรทงหมดในระบบสมการเชงเสนตอไปน
4.1) 2x – 3y = 5 4.2) x + y + z = 6
−6x + 9y = −12 x – 2y + z = 0
3x + y – 2z = −1
5. จงหารากหรอคาตอบของสมการตอไปน
5.1) x2 – 2x + 5 = 0 5.2) x3 – 6x2 + 11x – 6 = 0
5.3) x4 – 14x3 + 49x2 – 36x = 0 5.4) x7 + 3x5 – 2x3 + 5x2 – 10x = 0
6. กาหนดใหตวแปร N เปนเลขจานวนเตมบวกใดๆ จงเขยนโปรแกรมโดยใชคาสง for เพอหา
คาตอไปน
6.1) N
i 1i 1 2 3 N
== + + + +∑ … 6.2)
N2 2 2 2 2
i 1i 1 2 3 N
== + + + +∑ …
7. จงเขยนไฟลฟงกชนทมรปแบบการเรยกใชงานคอ
[a, b, c, d] = MoneyExchange(m)
เพอเปลยนจานวนเงน m บาท ใหเปนธนบตรใบละ 100 บาท จานวน a ใบ, ธนบตรใบละ 20
บาท จานวน b ใบ, เหรยญสบบาท จานวน c เหรยญ และเหรยญหนงบาท จานวน d เหรยญ
8. กาหนดให y = (ex − e-x)/2 โดยท −10 ≤ x ≤ 10
8.1) วาดกราฟเชงเสน
8.2) วาดกราฟลอการทมทงในแนวแกน x และแกน y
9. กาหนดให 0 ≤ x ≤ 1 และ 0 ≤ y ≤ 1 จงวาดกราฟสามมตของฟงกชนตอไปน
9.1) ( ) ( )z sin 2πx cos 3πy= 9.2) ( ) ( )z cos 2πx sin 2πy=
31
บทท 2 การใชงานโปรแกรม Visual Basic
รวมกบ SCILAB
ในบทนจะกลาวถงพนฐานการใชงานโปรแกรม Visual Basic เพอตดตอกบโปรแกรม SCILAB
โดยจะเรมจากประวตความเปนมาของโปรแกรม Visual Basic จากนนจะอธบายหลกการใชงาน
โปรแกรม Visual Basic 2010 Express4 รวมทงการเชอมตอกบโปรแกรม SCILAB สาหรบใช
สรางสอการเรยนการสอน
2.1 ประวตความเปนมาของโปรแกรม Visual Basic
Visual Basic [5, 6] เปนภาษาคอมพวเตอรทพฒนาโดยบรษทไมโครซอฟต (Microsoft) ซงเปน
บรษททสรางระบบปฏบตการวนโดวส (Windows) โดยภาษานมรากฐานมาจากภาษา Basic [7]
ยอมาจาก “Beginner’s All Purpose Symbolic Instruction” ซงแปลวา ชดคาสงหรอภาษา
คอมพวเตอรสาหรบผเรมตน โดยทวไปภาษา Basic มจดเดนคอผใชสามารถเรยนรและนาไปใชงาน
ไดอยางรวดเรวโดยไมจาเปนตองมพนฐานเรองการเขยนโปรแกรม (เมอเทยบกบการเรยนภาษา
คอมพวเตอรอน)
บรษทไมโครซอฟตไดพฒนาโปรแกรมภาษา Basic มาหลายสบป ตงแตภาษา MBASIC
(Microsoft Basic), BASICA (Basic Advanced), GWBASIC และ QBASIC (QuickBasic)
ซงไดตดตงมาพรอมกบระบบปฏบตการ MSDOS โดยแตละเวอรชนทออกมา ไดมการพฒนาและ
เพมเตมคาสงใหมๆ เขาไป ในอดตโปรแกรมภาษาเหลานจะทางานในโหมดตวอกษร (text mode)
นนคอไมมรปกราฟกสวยงามแบบระบบวนโดวสทใชในปจจบน จนกระทงเมอระบบปฏบตการ
วนโดวสไดเขามาแทนทระบบปฏบตการ MSDOS บรษทไมโครซอฟตจงไดปรบปรงโปรแกรมภาษา
4 โปรแกรม Visual Basic 2010 Express ซงเปนฟรแวร (freeware) ทใชในบทน
32
รปท 2.1 แถบเมนของโปรแกรม Visual Basic 2010 Express
Basic ใหรองรบการทางานในระบบปฏบตการวนโดวส จงทาใหเกดเปนโปรแกรม Visual Basic
ตงแตนนเปนตนมา ในบทนจะพจารณาเฉพาะโปรแกรม Visual Basic 20105 ซงออกวางตลาด
ใน ค.ศ. 2010 พรอมกบ Microsoft .NET Framework 4 เพอเพมความสามารถในการเขยน
โปรแกรมตดตอกบเครอขายอนเทอรเนตและการเชอมตอกบระบบฐานขอมล รวมทงปรบปรง
เครองมอสาหรบการเขยนโปรแกรมเชงวตถ (object oriented programming) ใหใชงานไดงายขน
2.2 โปรแกรม Visual Basic 2010 Express
ในสวนนจะแสดงเมนตางๆ ทจาเปนสาหรบการใชงานโปรแกรม Visual Basic 2010 Express ดงน
2.2.1 แถบเมน
เมอเรยกใชงานโปรแกรม Visual Basic 2010 Express กจะพบวาแถบเมนหลก (menu bar)
ตามรปท 2.1 ซงเปนแถบเมนทรวบรวมคาสงควบคมการทางานของโปรแกรม โดยเมนทนยมใชม
ดงน
Project ประกอบดวยคาสงทใชจดการกบโปรเจค (project) ทกาลงทาอย
Build เปนคาสงทใชคอมไพล (compile) โปรเจค
Debug เปนคาสงทชวยในการตรวจสอบหาขอผดพลาดของโปรแกรม
Data เปนคาสงทใชตดตอกบฐานขอมล
Format เปนคาสงทใชจดตาแหนงใหกบออบเจกต (object) ตางๆ บนฟอรม (Form)
2.2.2 แถบเครองมอมาตราฐาน
แถบเครองมอมาตราฐาน (standard toolbar) เปนแถบเครองมอทสามารถเลอกใชงานไดทนท
เพออานวยความสะดวกและความรวดเรวในการดาเนนการคาสงทนยมใชงานตามทแสดงในรปท
2.2 โดยแถบเครองมอทควรทราบแสดงในตารางท 2.1
5 โปรแกรม Visual Basic 2010 นสนบสนนระบบปฏบตการ Windows 7 ซงสามารถดาวนโหลดเวอรชน Express ฟร
ไดทเวบไซต http://www.microsoft.com/express/downloads/
33
รปท 2.2 แถบเครองมอมาตราฐานของโปรแกรม Visual Basic 2010 Express
ตารางท 2.1 แถบเครองมอมาตราฐานทนยมใช
ใชสรางโปรเจคใหม หรอกดปม Ctrl + N (NEW)
ใชเปดไฟล (Open File)
ใชเพมไอเทม (Item) หรอกดปม Ctrl + Shift + A (Add New Item)
ใชบนทกโปรเจค หรอกดปม Ctrl + S (Save)
ใชประมวลผลโปรแกรม หรอกดปม F5 (Run)
ใชหยดโปรแกรมชวคราว (Stop)
ใชเรยกหนาตางโซลชน (Solution Explorer)
ใชเรยกหนาตางคณสมบต (Properties)
ใชเรยกหนาตางกลองเครองมอ (toolbox)
รปท 2.3 หนาตางโซลชนของโปรแกรม Visual Basic 2010 Express
2.2.3 หนาตางโซลชน
หนาตางโซลชน (Solution Explorer) จะแสดงรายชอไอเทมทเปนสวนประกอบของโปรเจคและไฟล
ตางๆ ทเกยวของกบการแกไขโปรเจคทใชงานในปจจบน โดยมแถบเครองมอตามตารางท 2.2
แถบเครองมอ
34
ตารางท 2.2 แถบเครองมอในหนาตางโซลชน
เรยกหนาตางคณสมบต (Properties) หรอกดปม Alt + Enter
แสดงไฟลทงหมด (Show All File)
ฟนฟไอเทม (Refresh)
เรยกหนาตางการเขยนโคด (View Code)
เรยกหนาตางฟอรม (View Designer)
รปท 2.4 หนาตางคณสมบตของโปรแกรม Visual Basic 2010 Express
2.2.4 หนาตางคณสมบต
หนาตางคณสมบต (Properties) นยมใชในการเปลยนแปลงคณสมบตตางๆ ของออบเจกตระหวาง
การออกแบบฟอรม โดยเมอทาการเลอกออบเจกตในฟอรม หนาตางคณสมบตกจะแสดงคณสมบต
ของออบเจกตนน ซงถาตองการเปลยนแปลงคณสมบตของออบเจกต กทาไดโดยการเลอกท
คณสมบตนนและปอนคาใหมลงไป
35
รปท 2.5 หนาตางกลองเครองมอของโปรแกรม Visual Basic 2010 Express
2.2.5 หนาตางกลองเครองมอ
หนาตางกลองเครองมอ (toolbox) เปนสวนทบรรจตวควบคมตางๆ เพอใชออกแบบหนาจอของ
โปรแกรม (นนคอหนาตางการออกแบบ ดรปท 2.10) ตามทแสดงในรปท 2.5 โดยทวไปหนาตาง
กลองเครองมออาจถกซอนไว ซงจะอยทางดานซายมอของโปรแกรมคอนโทรลใน toolbox
2.2.6 ประเภทขอมลพนฐาน
ประเภทขอมล (data type) ทใชงานไดในโปรแกรม Visual Basic 2010 Express แสดงใน
ตารางท 2.3
2.3 การใชงานโปรแกรม Visual Basic รวมกบ SCILAB
การใชงานโปรแกรม Visual Basic รวมกบ SCILAB จะมลกษณะเปนการรบสงขอมลผานไฟล
ชวคราว (temporary file) โดยจะใชโปรแกรม Visual Basic สรางหนาตางสาหรบสวนตอประสาน
(interface) ไดแก สวนรบขอมล (Textbox) และปมควบคม (Button) เพอเขยนขอมลลงในไฟล
สครปต (script file) ในขณะทโปรแกรม SCILAB ทาหนาทประมวลผลลพธไฟลสครปต จากนน
นาผลลพธทไดเกบในไฟลขอมล (text file) และสงมาแสดงผลทโปรแกรม Visual Basic ดงรปท
2.6 แสดงแนวคด6 ในการใชงานรวมกนระหวางโปรแกรม Visual Basic และ SCILAB
6 โดยทวไปการสงขอมลจากโปรแกรมหนงไปยงอกโปรแกรมหนงทาไดไมยาก (ขนอยกบขอกาหนดของแตละโปรแกรม)
ดงนนโปรแกรม SCILAB จงสามารถนามาประยกตใชงานรวมกบโปรแกรมภาษาอนๆ ไดอกดวย เชน ภาษาซ
36
ตารางท 2.3 ประเภทขอมลทใชในโปรแกรม Visual Basic 2010 Express
ประเภทขอมล ประเภท ขนาด การเกบขอมลหรอชวงขอมล
Integer จานวนเตม 2 ไบต –32,768 ถง 32,767
Long จานวนเตม 4 ไบต –2,147,483,648 ถง 2,147,483,647
Boolean จานวนเตม 2 ไบต เกบคา 0 และ 1 ซงแทน False หรอ True
Byte จานวนเตม 1 ไบต เกบคาในชวง 0 ถง 255
Single จานวนทศนยม 4 ไบต คาลบ –3.402823E38 ถง –1.401298E-45
คาบวก 1.401298E-45 ถง 3.402823E38
Double จานวนทศนยม 8 ไบต คาลบ –1.79769313486232E308 ถง
-4.94065645841247E-324
คาบวก 4.94065645841247E-324 ถง
1.79769313486232E308
Currency จานวนทศนยม 8 ไบต เกบตวเลขจานวนจรงทมคาระหวาง
-922,337,203,685,477.5808 ถง
922,337,203,685,477.5807 เหมาะสาหรบเกบตวเลข
ทางการเงน เพราะมความละเอยดสง
String ขอความ 1 ไบต ใชเกบตวอกษร หรอขอความ
Date วนท/เวลา 8 ไบต เกบคาระหวาง 1 มกราคม ค.ศ. 100 ถง 31 ธนวาคม
ค.ศ. 9999 และเวลาใดๆ โดยสวนจานวนเตมเปนขอมล
ของวน และสวนทศนยมเปนขอมลของเวลา
Variant Variant 16 ไบต ตวแปรทสามารถแทนตวแปรชนดอนๆ ไดทกตวแปร
แตจะใชพนทเกบขอมลมากสด
Object ออบเจกต 4 ไบต เกบการอางองสาหรบแทนวตถ (หรอออบเจกต) ท
Visual Basic สนบสนน
การเขยนโปรแกรม Visual Basic จะมชดออบเจกตทเกยวของคอ FileSystemObject ซง
ใชจดการกบระบบไฟลของวนโดวส โดย FileSystemObject มโครงสรางตามรปท 2.7 ซงประกอบ
ดวยออบเจกตยอยอก 4 ตว ทเปนตวแทนของไดรฟ (Drive), โฟลเดอร (Folder), ไฟล (File),
และไฟลขอมล (Text Stream) ดงน
FileSystemObject เปนออบเจกตหลกทใชสรางหรอลบขอมล และจดการการทางานของ
ไดรฟ โฟลเดอร ไฟล และไฟลขอมล ไดโดยตรง
37
VISUAL BASIC
SCILAB
Script TEXT
Temporary File
รปท 2.6 แนวคดในการใชงานรวมกนระหวางโปรแกรม Visual Basic และ SCILAB
รปท 2.7 โครงสรางของชดออบเจกต FileSystemObject
Drive เปนออบเจกตทใหขอมลเกยวกบไดรฟทงหมดของระบบคอมพวเตอรทกาลงทางานอย
Folder เปนออบเจกตทรวบรวมวธการตางๆ ทเรยกใช เพอใหขอมลและจดการกบโฟลเดอร
File เปนออบเจกตทรวบรวมวธการตางๆ ทเรยกใช เพอใหขอมลและจดการกบไฟล
Text Stream เปนออบเจกตทใชในการอานและเขยนไฟลขอมล
ในทางปฏบตการใชงานออบเจกต FileSystemObject จะตองมการเรยกไลบรารทชอวา
Microsoft Scripting Runtime ขนมากอน จงจะสามารถใชงานออบเจกตอนๆ ได
38
รปท 2.8 การสรางโปรเจคใหม (New Project)
รปท 2.9 ขนตอนการสราง Window Forms Application ในหนาตางโปรเจคใหม
โดยในทนจะอธบายเฉพาะออบเจกต Text Stream เทานน เพราะเปนสวนทใชในการอานและเขยน
ไฟลเพอตดตอกบโปรแกรม SCILAB สาหรบสรางสอการเรยนการสอน
2.3.1 ขนตอนการเรยกใชงานไลบราร Microsoft Scripting Runtime
การเรยกใชงานไลบรารในโปรแกรม Visual Basic 2010 ทาไดโดยใหพจารณาวาออบเจกตนนคอ
ตวแปรหนงตวซงมประเภทเปน “ออบเจกต” ดงนนขนตอนการเรยกใชงานไลบราร Microsoft
Scripting Runtime มดงน
1) เปดโปรแกรม Visual Basic 2010 Express แลวสรางโปรเจคใหมขนมาใชงาน โดยเลอกท
New Project… ตามรปท 2.8 กจะไดหนาตางตามรปท 2.9
คลกเลอก New Project…
39
รปท 2.10 หนาตาง Window Forms Application
2) จากนนเลอก Visual Basic → Windows Forms Application และกดปม OK เพอสราง
ฟอรม (Form) ขนมาใชงาน กจะไดหนาตางตามรปท 2.10
3) การเรยก FileSystemObject มาใชงาน ตองบอกใหโปรแกรม Visual Basic 2010 ใหทราบ
กอน โดยการเลอกเมน Project Add Reference… ตามรปท 2.11 กจะไดหนาตาง Add
Reference ตามรปท 2.12
4) ทหนาตาง Add Reference ในรปท 2.12 ใหไปทแถบ COM และเลอก Microsoft Scripting
Runtime และคลกปม OK กถอวาเสรจขนตอนการเรยกใชงาน Microsoft Scripting Runtime
2.3.2 รปแบบการใชงาน FileSystemObject
วธการใชงานของ FileSystemObject จะมรปแบบทเกยวกบออบเจกต Drive, Folder, File และ
Text Stream โดยในทนจะกลาวถงวธการใชงานของออบเจกต File และ Text Stream เทานน
เพราะจะนามาใชในการแลกเปลยนขอมลกบโปรแกรม SCILAB โดยวธการใชงานมรปแบบดงน
รปแบบการประกาศตวแปรแบบ FileSystemObject แสดงในรปท 2.13
รปแบบการเรยกใชงาน FileSystemObject แสดงในรปท 2.14
หนาตางการออกแบบ (Design)
40
รปท 2.11 การเลอกหนาตาง Add Reference
รปท 2.12 หนาตาง Add Reference
รปท 2.13 การประกาศตวแปรแบบ FileSystemObject
1
2
1
2
3
ชอตวแปรทตงขน ออบเจกตทตองการ เครองหมายจด
Public fso As New Scripting . FileSystemObject
41
รปท 2.14 การเรยกใชงาน FileSystemObject
หมายเหต โปรแกรม Visual Basic 2010 Express มตวชวยเหลอในการเขยนโปรแกรมคอ เมอใส
เครองหมายจด “ . ” ตอทายคาสง กจะแสดงตวชวยทชอวา Auto List Members ซงจะมรายการ
คณสมบตและฟงกชนตางๆ ทเกยวของกบออบเจกต File และ Text Stream ตามรายละเอยดดงน
2.3.3 ฟงกชนทเกยวของโปรแกรม Visual Basic 2010
2.3.3.1 คาสงทเกยวของกบ FileSystemOject
FileSystemObject เปนการประกาศตวแปรทใชอางอง FileSystemObject มรปแบบการ
เรยกใชงานดงน
Public fso As New Scripting.FileSystemObject
ซงเปนการกาหนดให fso เปนออบเจกต FileSystemObject โดยจะตองมการใสพารามเตอร
New เขาไปในคาสงดวย (ตวแปรทเปนออบเจกตของ FileSystemObject ตองใสนพจน New
เสมอ)
CreateTextFile ใชสรางไฟลในระบบปฏบตการวนโดวส ซงมรปแบบการเรยกใชงานดงน
oFileSysObj.CreateTextFile (Filename [, Overwrite[, Unicode]])
โดย oFileSysObj คอออบเจกตทเรยกใชงาน, Filename คอชอไฟลทมประเภทขอมลเปนแบบ
String, Overwrite คอตวเลอกทบอกวาสามารถเขยนทบไฟลทมชอซากนไดโดยมประเภทขอมล
เปนแบบบลน (Boolean: True หรอ False), และ Unicode คอตวเลอกทบอกวาไฟลทสราง
จะเกบขอมลแบบ Unicode หรอ ASCII โดยมประเภทขอมลแบบบลน
DeleteFile ใชลบไฟลขอมล โดยมรปแบบการเรยกใชงานดงน
ชอออบเจกต
วธ
เครองหมายจด
oFileSysObj . Method
42
oFileSysObj.DeleteFile( FileSpec [, Force])
เมอ oFileSysObj คอออบเจกตทเรยกใชงาน, FileSpec คอชอและทอยของไฟลทตองการลบ
ซงมประเภทขอมลเปนแบบ String, และ Force คอตวเลอกสาหรบการลบซงมประเภทขอมล
เปนแบบบลน (โดยไมสนใจวาไฟลนนเปนแบบไฟลทอานอยางเดยวหรอไม)
FileExists ใชตรวจสอบวาไฟลทกาหนดมอยจรงหรอไม โดยมรปแบบการเรยกใชงานดงน
oFileSysObj.FileExists(FileSpec)
เมอ oFileSysObj คอออบเจกตทเรยกใชงาน และ FileSpec คอชอและทอยของไฟลทตองการ
ตรวจสอบซงมประเภทขอมลเปนแบบ String
GetFile ใชรบคาจากไฟลขอมล โดยมรปแบบการเรยกใชงานดงน
oFileSysObj.GetFile(FilePath)
เมอ oFileSysObj คอออบเจกตทเรยกใชงาน และ FilePath คอชอและทอยของไฟลทมประเภท
ขอมลเปนแบบ String
GetFileName ใชรบคากลบมาเปนชอไฟลในตาแหนงทระบไว มรปแบบการเรยกใชงานคอ
oFileSysObj.GetFileName(Path)
เมอ oFileSysObj คอออบเจกตทเรยกใชงาน และ FilePath คอทอยของไฟลทมประเภทขอมล
เปนแบบ String และแสดงอยภายในเครองหมาย “….”
2.3.3.2 คาสงทเกยวของกบ TextStream
TextStream เปนการประกาศตวแปรทใชอางอง TextStream มรปแบบการเรยกใชงานดงน
Public w_file As Scripting.TextStream
ซงเปนการกาหนดให w_file เปนออบเจกต TextStream
43
Close ใชยกเลกการเชอมตอกบออบเจกต TextStream มรปแบบการเรยกใชงานดงน
oTextStreamObj.Close
เมอ oTextStreamObj คอออบเจกต TextStream ทตองการยกเลกการเชอมตอ
Read ใชอานขอมลตามจานวนทกาหนดจากไฟลขอมล มรปแบบการเรยกใชงานดงน
oTextStreamObj.Close
เมอ oTextStreamObj คอออบเจกต TextStream ทตองการอานขอมล และ Character คอ
สายอกขระหรอจานวนของอกษร (alphabet) ทตองการอานจากไฟลขอมล โดยมประเภทขอมล
เปนแบบ Long (ดตารางท 2.3)
ReadAll ใชอานขอมลทงหมดจากไฟลขอมล มรปแบบการเรยกใชงานดงน
oTextStreamObj.ReadAll
เมอ oTextStreamObj คอออบเจกต TextStream ทตองการอานขอมลทงหมด
ReadLine ใชอานขอมลทละหนงบรรทดจากไฟลขอมล มรปแบบการเรยกใชงานคอ
oTextStreamObj.ReadLine
เมอ oTextStreamObj คอออบเจกต TextStream ทตองการอานอานขอมลทละหนงบรรทด
Skip ใชกระโดดขามขอมลจากไฟลขอมลทกาหนด มรปแบบการเรยกใชงานคอ
oTextStreamObj.Skip(Characters)
เมอ oTextStreamObj คอออบเจกต TextStream ทเรยกใชงาน และ Characters คอสาย
อกษระทไมสนใจทจะอาน (มประเภทขอมลเปนแบบ Long)
SkipLine ใชกระโดดขามขอมลจากไฟลขอมลทละหนงบรรทด มรปแบบการเรยกใชงานคอ
44
oTextStreamObj.SkipLine
เมอ oTextStreamObj คอออบเจกต TextStream ทเรยกใชงาน
Write ใชเขยนขอมลเกบไวในไฟลทกาหนด (เมอเขยนจบ จะไมขนบรรทดใหม) โดยมรปแบบ
การเรยกใชงานดงน
oTextStreamObj.Write(Text)
เมอ oTextStreamObj คอออบเจกต TextStream ทเรยกใชงาน และ Text คอขอความท
ตองการเขยนลงไปเกบไวในไฟล โดยขอความนตองอยภายในเครองหมาย “….”
WriteLine ใชเขยนขอมลลงไฟลขอมลทละหนงบรรทด (เมอเขยนจบ จะขนบรรทดใหมให)
มรปแบบการเรยกใชงานดงน
oTextStreamObj.WriteLine(String)
เมอ oTextStreamObj คอออบเจกต TextStream ทเรยกใชงาน และ String คอขอความแตละ
บรรทดทตองการเขยนลงในไฟล โดยขอความนตองอยภายในเครองหมาย “….”
WriteBlankLines ใชเขยนไฟลแลวเวนบรรทดตามทกาหนด มรปแบบการเรยกใชงานคอ
oTextStreamObj.WriteBlankLines(Lines)
เมอ oTextStreamObj คอออบเจกต TextStream ทเรยกใชงาน และ Lines คอจานวนตวอกษร
หรออกขระทตองการเพมลงในบรรทดนน โดยมประเภทขอมลเปนแบบ Long
2.3.3.3 คาสงอนทนาสนใจ
Shell เปนฟงกชนทใชเรยกโปรแกรมประยกตขนมาทางาน มรปแบบการเรยกใชงานคอ
Shell(PathName, [Window Style])
45
โดย PathName คอทอยของโปรแกรมประยกตทตองการ และ Window Style คอคาสถานะ
ในการเรยกโปรแกรมนน
Msgbox เปนฟงกชนทใชโตตอบระหวางโปรแกรมกบผใช โดยจะแสดงขอมลเพยงอยางเดยว
แลวใหผใชกดปมเลอก (ในกรณทตองการใหผใชเลอกตอบ) มรปแบบการเรยกใชงานคอ
MsgBox Prompt[,Buttons][,Title]
เมอ Prompt คอขอความทตองการแสดงในกลองขอความ (message box) ในกรณทตองการ
แสดงขอมลหลายบรรทด ทาไดโดยนาขอมลในแตละบรรทดมาเชอมดวยวา “+chr(13)+”,
Buttons คอสวนทใชกาหนดการแสดงปมและกาหนดสญรป (icon) ในกลองขอความ, และ
Title คอขอความทตองการแสดงบนแถบดานบนของกลองขอความ
Application.StartupPath เปนฟงกชนทใชตงคาโฟลเดอรปจจบนใหตรงกบโปรแกรมประยกต
โดยถาโปรแกรมประยกตทางานเรมจากเครองแมขาย คณสมบตของ App.Path จะสงออกคา
เปนชอแบบ UNC (Universal Naming Convention) เชน \ชอเครองแมขาย\ชอโฟลเดอร\…
ซงวธการเรยกใชงานคอ
Application.StartupPath
2.4 ฟงกชนทเกยวของของโปรแกรม SCILAB ในหวขอนจะอธบายฟงกชนตางๆ ของโปรแกรม SCILAB ทจาเปนสาหรบการนามาใชงานรวมกบ
โปรแกรม Visual Basic เพอสรางสอการเรยนการสอน ดงตอไปน
2.4.1 คาสง file
เปนคาสงทใชเปดหรอปดแฟมขอมลหรอไฟล โดยมรปแบบการใชงานทวไปดงน
unit = file('open', filename, [status])
เมอ 'open' เปนการบอกโปรแกรมใหเปดไฟล filename ขนมาใชงาน, filename คอชอ
ไฟลขอมลทตองการเรยกใชงาน, status เปนการกาหนดสถานะของไฟลทเปดขนมาใชงานซงม
อย 4 รปแบบคอ
46
ตารางท 2.4 รหสรปแบบในโปรแกรม SCILAB
รหสรปแบบ คาอธบาย
%d แสดงผลเปนเลขจานวนเตมฐานสบแบบมเครองหมาย (signed integer)
%u แสดงผลเปนเลขจานวนเตมฐานสบแบบไมมเครองหมาย (unsigned integer)
%x หรอ %X แสดงผลเปนเลขจานวนเตมฐานสบหกแบบไมมเครองหมาย
%f แสดงผลเปนเลขจานวนจรง
%e แสดงผลเปนเลขจานวนจรงในรปของเลขยกกาลง
%c แสดงผลตวอกขระ
%s แสดงผลสายอกขระ
"new" หมายถงไฟลทเปดขนมาตองไมเคยมอยในสารบบทางาน (คาโดยปรยาย)
"old" หมายถงไฟลทเปดขนมาตองมอยแลวในสารบบทางาน
"unknown" หมายถงไฟลทเปดขนมาจะมอยหรอไมมอยในสารบบทางานกได
"scratch" หมายถงไฟลทเปดขนมาจะถกลบทงหลงจากเสรจสนการทางาน
และ unit เปนเลขจานวนเตมทโปรแกรมใชอางถงชอไฟล filename นน โดยหลงจากใชงาน
ไฟลทเปดขนมาเสรจแลว ผใชจะตองปดการทางานของไฟลนนเสมอดวยคาสง
file('close', unit)
2.4.2 คาสง fprintf
เปนคาสงททาหนาทพมพคาของตวแปรลงไปเกบไวในไฟล แทนทจะแสดงผลลพธออกมาทหนาตาง
คาสง รปแบบการใชงานของคาสงนคอ
fprintf(fd, format, value_1, ..., value_n)
โดย fd คอชอของไฟลทตองการเกบคาของตวแปร value_i, format คอรหสควบคมการพมพ
(ตามตารางท 2.4 และ 2.5), และ value_i เปนตวกาหนดวาจะใหขอมลใดแสดงผลออกมาท
หนาตางคาสง ตวอยางการใชงาน เชน
-->fd = file('open', 'results.txt', 'unknown');
47
ตารางท 2.5 รหสบงคบการพมพในโปรแกรม SCILAB
รหสบงคบการพมพ คาอธบาย
\n ขนบรรทดใหม
\t แทป (tab) ในแนวนอน
\v แทปในแนวตง
\b เลอนเคอรเซอรไปลบตวอกขระทางซายมอหนงตวอกขระ
\r เครองหมาย return เหมอนกบการกดปม Enter
\f ขนหนาใหม
\a สงเสยงดงออกลาโพงหนงครง
\\ เครองหมาย \ (backslash)
\’ เครองหมาย ' (single quote)
\” เครองหมาย " (double quote)
\? เครองหมาย ? (question mark)
\ooo พมพตวอกขระทมเลขฐานแปดตรงกบคา ooo
\xhh พมพตวอกขระทมเลขฐานสบหกตรงกบคา hh
-->for t = 0:%pi/10:%pi
--> fprintf(fd, 'time = %6.3f value = %6.3f\n', t, cos(t));
-->end
-->file('close', fd);
ผลลพธทไดคอโปรแกรม SCILAB จะสรางไฟลทชอวา results.txt ในสารบบทกาลงทางาน
อยซงจะบนทกขอมลทกาหนดดวยคาสง fprintf ปรากฏอย (นนคอคาของสญญาณโคไซน ณ
เวลา t) โดยถาลองเปดไฟล results.txt ดวยโปรแกรมเอดเตอร (เชน Notepad) กจะพบ
ขอมลตามทกาหนดไวดงแสดงในรปท 2.15
2.4.3 คาสง exec
เปนคาสงทใชโหลดฟงกชนเขามาประมวลผลในโปรแกรม SCILAB โดยมลกษณะการใชงานดงน
exec(filename)
เมอ filename คอชอและทอย (path) ของไฟล ซงตองเขยนภายในเครองหมาย "…"
48
รปท 2.15 ขอมลภายในไฟล results.txt โดยใชโปรแกรม Notepad
2.4.4 คาสง savematfile
เปนคาสงทใชบนทกขอมลใหอยในรปไบนาร (binary) หรอแอสก (ASCII) โดยมรปแบบการเรยก
ใชงานดงน
savematfile('filename', 'var1')
เมอ filename คอชอและทอยของไฟล ซงตองเขยนภายในเครองหมาย "…" และ var1 คอชอตวแปรทตองการเขยนลงในไฟล เชน คาสง savematfile('Test1.txt','x') จะ
เปนการนาคาของตวแปร x ไปเกบไวในไฟล Test1.txt
2.4.5 คาสง xs2gif
เปนคาสงทใชบนทกรปกราฟทวาดขนดวยโปรแกรม SCILAB ใหเปนไฟลรปภาพทมนามสกลเปน
แบบ .gif โดยมรปแบบการเรยกใชงานดงน
49
รปท 2.16 แผนภาพบลอกแสดงการเขยนโปรแกรม Visual Basic เพอตดตอกบ SCILAB
xs2gif(win_num, filename)
เมอ win_num คอตวเลขจานวนเตมบวกทใชอางถงหมายเลขของหนาตางกราฟ และ filename
คอชอไฟล (ทมนามสกล .gif) ทตองการบนทกรปกราฟทปรากฏในหนาตางกราฟหมายเลข
win_num ตวอยางเชน คาสง xs2gif(1,'F1.gif') จะบนทกรปกราฟในหนาตางกราฟ
หมายเลข 1 เปนไฟลชอ F1.gif
2.5 การเขยนโปรแกรม Visual Basic ตดตอกบ SCILAB ในสวนนจะแสดงตวอยางการเขยนโปรแกรม Visual Basic ตดตอกบ SCILAB ซงมการขนตอน
การทางานตามแผนภาพบลอกในรปท 2.16 โดยซอฟตแวรทใชประกอบดวย
โปรแกรม Microsoft Visual Basic 2010 Express
โปรแกรม SCILAB เวอรชน 4.1.2
ระบบปฏบตการ Window XP
เรมตน
สรางไฟลสครปต
ประมวลผลไฟลสครปต
บนทกผลลพธลงไฟลขอมล
แสดงผลลพธ
จบ
เขยนขอมลไฟลสครปต
50
รปท 2.17 ฟอรมทดสอบการสรางไฟลสครปต
และฮารดแวรทใชมคณลกษณะดงน CPU แบบ Core2Duo 2.4 GHz, RAM ขนาด 1 GB, ฮารด
ดสกไดรฟขนาด 160 GB, และการดจอ VGA แบบ 128 MB
ในทนจะยกตวอยางการหาคาลอการทมฐานสอง7 ของเลขจานวนเตม โดยจะใชโปรแกรม
Visual Basic สรางหนาตางสวนตอประสาน (interface) เพอรบคาตวเลขทผใชปอนเขาไป จากนน
เมอกดปมคานวณ โปรแกรม Visual Basic กจะนาตวเลขนมาเขยนเปนไฟลสครปต แลวสงไปให
โปรแกรม SCILAB คานวณโดยใชฟงกชน log2(x) เพอหาคาลอการทมฐานสองของตวแปร x
แลวสงผลลพธทไดไปแสดงผลทหนาตางสวนตอประสาน โดยขนตอนการทางานสรปไดดงน
2.5.1 การสรางไฟลสครปต
หวขอนจะแสดงวธการสรางไฟลสครปตจากหนาตางสวนตอประสานของโปรแกรม Visual Basic
2010 Express ดงตอไปน
1) ใหเปดโปรแกรม Visual Basic 2010 Express แลวสรางโปรเจกตแบบ Windows Forms
Application จากนนทาการออกแบบหนาฟอรมโดยนาปม Button มาวางไวใน Form หนงปม
แลวเปลยนชอปมเปน “ทดสอบการสรางไฟลสครปต” ตามรปท 2.17
2) กาหนดคาคณสมบตของฟอรมตามตารางท 2.6
3) เรยกฟงกชน FileSystemObject มาใชงาน โดยเลอกทเมน Project → Add Reference…
→ Microsoft Scripting Runtime และกดปม OK (ตามรปท 2.11 และ 2.12)
4) ดบเบลคลกทปม Button หรอกดปม View Code ทหนาตางโซลชน (Solution Explorer)
แลวเขยนโคดโปรแกรมดงน
7 ลอการทม (logarithm) เปนฟงกชนผกผนของฟงกชนเอกซโพเนนเชยล กลาวคอลอการทมฐาน b ของคา x กคอคา n
ททาใหสมการ x = bn หรอเขยนไดเปน logb(x) = n เปนจรง เชน log2(128) = 7
51
ตารางท 2.6 การกาหนดคาคณสมบตของฟอรมทใชในรปท 2.17
ออบเจกต / คอนโทรล คณสมบต คาทกาหนด
Form Text ทดสอบการสรางไฟลสครปต
CommandButton Name Button1
Text ทดสอบการสรางไฟลสครปต
รปท 2.18 ผลลพธทไดจากฟงกชน CreateTextFile
1
2
3
4
5
6
Public Class Form1
Public fso As New Scripting.FileSystemObject
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles Button1.Click
w_file = fso.CreateTextFile("D:\test.sce") 'สรางไฟลสครปต
End Sub
End Class
5) ทดสอบการทางานของโปรแกรม โดยการคลกทปม หรอกดปม <F5> ทคยบอรด จากนน
ทดสอบโปรแกรมโดยกดปม “ทดสอบการสรางไฟลสครปต” ในรปท 2.17 กจะไดไฟลสครปต
ทมชอวา test.sce ปรากฏอยในสารบบ D:\ ดงแสดงในรปท 2.18
หมายเหต ฟงกชน CreateTextFile ในบรรทดท 4 จะสรางไฟลสครปตของโปรแกรม SCILAB
ทชอวา test.sce เพอทาหนาทเปนไฟลชวคราวสาหรบสงขอมลตางๆ ไปประมวลผลท
โปรแกรม SCILAB
52
รปท 2.19 ฟอรมแสดงการเขยนขอมลลงไฟลสครปต
ตารางท 2.7 การกาหนดคาคณสมบตของฟอรมทใชในรปท 2.19
ออบเจกต / คอนโทรล คณสมบต คาทกาหนด
Form Text ทดสอบการเขยนขอมลลงไฟลสครปต
CommandButton Name Button1
Text ทดสอบการเขยนขอมลลงไฟลสครปต
TextBox1 Text N/A
2.5.2 การเขยนไฟลสครปต
ในทนจะแสดงวธการนาขอมลทปอนผานหนาตางสวนตอประสานของโปรแกรม Visual Basic 2010
Express ไปเกบไวในไฟลสครปตดงน
1) เปดโปรแกรม Visual Basic 2010 Express แลวสรางโปรเจกตแบบ Windows Forms
Application จากนนทาการออกแบบหนาฟอรมโดยนาปม Button มาวาง 1 ตว (เปลยนชอเปน
“ทดสอบการเขยนไฟลสครปต”) และนา Textbox1 มาวาง 1 ตว (เปลยนชอเปน “Input”)
ตามรปท 2.19
2) กาหนดคาคณสมบตของฟอรมตามตารางท 2.7
3) เรยกฟงกชน FileSystemObject มาใชงานโดยเลอกทเมน Project → Add Reference…
→ Microsoft Scripting Runtime และกดปม OK (ตามรปท 2.11 และ 2.12)
4) ดบเบลคลกทปม Button หรอคลกทปม View Code ทหนาตางโซลชน แลวเขยนโคด
โปรแกรมดงน
5) ทดสอบการทางานของโปรแกรม โดยการกดปม หรอกดปม <F5> ทคยบอรด จากนน
ทาการทดสอบโปรแกรมโดยการปอนตวเลขเขาไป (เชน เลข 5) และกดปม “ทดสอบการเขยน
ไฟลสครปต” หนงครง กจะไดผลลพธตามรปท 2.20
53
รปท 2.20 ขอมลทเขยนลงไฟลสครปต test.sce
1
2
3
4
5
6
7
8
Public Class Form1
Public fso As New Scripting.FileSystemObject
Public w_file As Scripting.TextStream
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles Button1.Click
w_file = fso.CreateTextFile("D:\test.sce") 'สรางไฟลสครปต
w_file.WriteLine("X=" & TextBox1.Text & ";") 'เขยนไฟลสครปต
End Sub
End Class
หมายเหต ฟงกชน WriteLine ในบรรทดท 6 เปนการเขยนขอมลลงในไฟลสครปตทสรางขน
เพอนาขอมลไปประมวลผลทโปรแกรม SCILAB ซงเมอปอนคาทตองการ (เชน เลข 5) ลงไป
ในชอง Input แลวกดปม “ทดสอบการเขยนขอมลลงไฟลสครปต” กจะทาการสรางไฟลสครปต
test.sce ในสารบบ D:\ และเขยนขอมล X=5 ลงในไฟล (ตามทกาหนดในบรรทดท 6)
2.5.3 การประมวลผลไฟลสครปต
ในทนจะแสดงวธการนาขอมลทปอนผานหนาตางสวนตอประสานของโปรแกรม Visual Basic 2010
Express ไปเกบไวในไฟลสครปต แลวสงไฟลสครปตไปประมวลผลทโปรแกรม SCILAB ดงน
1) เปดโปรแกรม Visual Basic 2010 Express แลวสรางโปรเจกตแบบ Windows Forms
Application จากนนทาการออกแบบหนาฟอรมโดยนาปม Button มาวาง 1 ตว (เปลยนชอ
เปน “ทดสอบการประมวลผลไฟลสครปต”) และนา Textbox1 มาวาง 1 ตว (เปลยนชอเปน
“Input”) และ Label มาวาง 1 ตว ตามรปท 2.21
2) กาหนดคาคณสมบตของฟอรมตามตารางท 2.8
54
รปท 2.21 ฟอรมทดสอบการประมวลผลไฟลสครปต
ตารางท 2.8 การกาหนดคาคณสมบตของฟอรมทใชในรปท 2.21
ออบเจกต / คอนโทรล คณสมบต คาทกาหนด
Form Text ทดสอบการประมวลผลไฟลสครปต
CommandButton Name Button1
Text ทดสอบการประมวลผลไฟลสครปต
TextBox1 Text N/A
3) เรยกฟงกชน FileSystemObject มาใชงานโดยเลอกทเมน Project → Add Reference…
→ Microsoft Scripting Runtime และกดปม OK (ตามรปท 2.11 และ 2.12)
4) ดบเบลคลกทปม Button หรอคลกทปม View Code ทหนาตางโซลชน แลวเขยนโคด
โปรแกรมดงน
1
2
3
4
5
6
7
8
9
Public Class Form1
Public fso As New Scripting.FileSystemObject
Public w_file As Scripting.TextStream
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles Button1.Click
w_file = fso.CreateTextFile("D:\test.sce") 'สรางไฟลสครปต
w_file.WriteLine("X=" & TextBox1.Text & ";") 'เขยนไฟลสครปต
Shell("C:\WINDOWS\scilab-4.1.2\bin\Scilex.exe -f D:\test.sce", vbHide)
'ประมวลผล
End Sub
End Class
55
รปท 2.22 ฟอรมทดสอบการบนทกผลลพธลงไฟลขอมล
5) ทดสอบการทางานของโปรแกรม โดยการกดปม หรอกดปม <F5> ทคยบอรด จากนน
ทดสอบการทางานของโปรแกรมโดยการปอนตวเลข (เชน เลข 5) ลงไป และกดปม “ทดสอบ
การเขยนไฟลสครปต” หนงครง กจะไดไฟลสครปต test.sce ในสารบบ D:\ ทมขอมล
X=5 จากนนไฟลสครปตนจะถกนาไปประมวลผลในโปรแกรม SCILAB8 ผานทางคาสง Shell
ตามบรรทดท 7 โดยการประมวลผลไฟลสครปตจะถกซอนดวยคาสง vbHide (ในทนจงทาให
ไมมการแสดงผลลพธใดๆ เกดขน)
2.5.4 การบนทกผลลพธลงไฟลขอมล
ในทนจะแสดงวธการนาขอมลทปอนผานหนาตางสวนตอประสานของโปรแกรม Visual Basic 2010
Express ไปเกบไวในไฟลสครปตแลวสงไฟลนไปประมวลผล จากนนนาผลลพธทไดมาบนทกเกบ
ไวในไฟลขอมล ดงแสดงตอไปน
1) เปดโปรแกรม Visual Basic 2010 Express แลวสรางโปรเจกตแบบ Windows Forms
Application จากนนทาการออกแบบหนาฟอรมโดยนาปม Button มาวาง 1 ตว (เปลยนชอเปน
“ทดสอบการบนทกผลลพธลงเทกซไฟล”) และนา Textbox1 มาวาง 1 ตว (เปลยนชอเปน
“Input”) และ Label มาวาง 1 ตว ตามรปท 2.22
2) กาหนดคาคณสมบตของฟอรมตามตารางท 2.9
3) เรยกฟงกชน FileSystemObject มาใชงานโดยเลอกทเมน Project → Add Reference…
→ Microsoft Scripting Runtime และกดปม OK (ตามรปท 2.11 และ 2.12)
4) ดบเบลคลกทปม Button หรอคลกทปม View Code ทหนาตางโซลชน แลวเขยนโคด
โปรแกรมดงน 8 ไฟลทใชประมวลผลของโปรแกรม SCILAB เวอรชน 4.1.2 คอไฟล Scilex.exe
56
ตารางท 2.9 การกาหนดคาคณสมบตของฟอรมทใชในรปท 2.22
ออบเจกต / คอนโทรล คณสมบต คาทกาหนด
Form Text ทดสอบการบนทกผลลพธลงไฟลขอมล
CommandButton Name Button1
Text ทดสอบการบนทกผลลพธลงไฟลขอมล
TextBox1 Text N\A
1
2
3
4
5
6
7
8
9
10
11
12
13
Public Class Form1
Public fso As New Scripting.FileSystemObject
Public w_file As Scripting.TextStream
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles Button1.Click
w_file = fso.CreateTextFile("D:\test.sce") 'สรางไฟลสครปต
w_file.WriteLine("X=" & TextBox1.Text & ";") 'เขยนไฟลสครปต
w_file.WriteLine("output=log2(X);") 'เขยนไฟลสครปต
w_file.WriteLine("savematfile('D:\001.txt', 'output')") 'บนทกผลลพธ
w_file.WriteLine("exit();") 'ออกจากโปรแกรม SCILAB
w_file.Close() 'ออกจากการเขยนไฟลสครปต
Shell("C:\WINDOWS\scilab-4.1.2\bin\Scilex.exe -f D:\test.sce", vbHide)
'ประมวลผล
End Sub
End Class
5) ทดสอบการทางานของโปรแกรม โดยการกดปม หรอกดปม <F5> ทคยบอรด จากนน
ทาการทดสอบโปรแกรมโดยการปอนตวเลข (เชน เลข 8) ลงไปตามรปท 2.22 และกดปม
“ทดสอบการบนทกผลลพธลงเทกซไฟล” หนงครง กจะไดผลลพธดงรปท 2.23
หมายเหต การบนทกผลลพธลงในไฟลขอมลจะตองเขยนโคดลงในไฟลสครปตไวกอน
(บรรทดท 8) โดยใชคาสง savematfile จากนนออกจากการโปรแกรม SCILAB โดยใช
คาสง exit (บรรทดท 9) และสนสดการเขยนขอมล (บรรทดท 10) หลงจากนนเมอปอน
ขอมลลงไปและกดปม “ทดสอบการบนทกผลลพธลงไฟลขอมล” กจะไดไฟลสครปตทชอวา
test.sce ปรากฏอยในสารบบ D:\ และบนทกผลลพธทไดจากการประมวลผลเขาไปเกบ
ในไฟลขอมลทชอวา 001.txt ซงเมอเปดไฟลขอมล 001.txt เพอดผลลพธกจะไดตาม
รปท 2.24
57
รปท 2.23 การบนทกผลลพธลงไฟลขอมล 001.txt
รปท 2.24 ผลลพธทไดในไฟล 001.txt แสดงดวยโปรแกรม NotePad
รปท 2.25 ฟอรมการแสดงผลลพธของ Log ฐาน 2
58
ตารางท 2.10 การกาหนดคาคณสมบตของฟอรมทใชในรปท 2.25
ออบเจกต / คอนโทรล คณสมบต คาทกาหนด
Form Text การแสดงผลลพธของ Log ฐาน 2
CommandButton Name Button1
Text ประมวลผลลพธ Log ฐาน 2
Textbox1 Text N\A
Textbox2 Text N\A
Timer1 Interval 1000
Enabled False
2.5.5 การแสดงผลลพธ
ในทนจะแสดงวธการนาขอมลทปอนผานหนาตางสวนตอประสานของโปรแกรม Visual Basic 2010
Express ไปเกบไวในไฟลสครปตแลวสงไฟลนไปประมวลผล จากนนนาผลลพธทไดมาบนทกเกบ
ไวในไฟลขอมลแลวสงกลบมาแสดงผลทหนาตางสวนตอประสานของโปรแกรม Visual Basic 2010
Express ดงแสดงตอไปน
1) เปดโปรแกรม Visual Basic 2010 Express แลวสรางโปรเจกตแบบ Windows Forms
Application จากนนทาการออกแบบหนาฟอรมโดยนาปม Button มาวาง 1 ตว (เปลยนชอ
เปน “ประมวลผลลพธ Log ฐาน 2”), Textbox1 มาวาง 2 ตว (เปลยนชอเปน “Input” และ
“Output”), Label มาวาง 2 ตว, และ Timer1 มาวางไวนอกฟอรมอก 1 ตว ตามรปท 2.25
2) กาหนดคาคณสมบตของฟอรมตามตารางท 2.10
3) เรยกฟงกชน FileSystemObject มาใชงานโดยเลอกทเมน Project → Add Reference…
→ Microsoft Scripting Runtime และกดปม OK (ตามรปท 2.11 และ 2.12)
4) ดบเบลคลกทปม Button หรอคลกทปม View Code ทหนาตางโซลชน แลวเขยนโคด
โปรแกรมดงน
1
2
3
4
5
Public Class Form1
Public fso As New Scripting.FileSystemObject
Public w_file As Scripting.TextStream
Public r_file As Scripting.TextStream
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles Button1.Click
59
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
w_file = fso.CreateTextFile("D:\test.sce") 'สรางไฟลสครปต
w_file.WriteLine("X=" & TextBox1.Text & ";") 'เขยนไฟลสครปต
w_file.WriteLine("output=log2(X);") 'เขยนไฟลสครปต
w_file.WriteLine("savematfile('D:\001.txt','output')") 'บนทกผลลพธ
w_file.WriteLine("exit();") 'ออกจากโปรแกรม SCILAB
w_file.Close() 'ออกจากการเขยนไฟลสครปต
Shell("C:\WINDOWS\scilab-4.1.2\bin\Scilex.exe -f D:\test.sce", vbHide)
Timer1.Enabled = True 'เรมการทางานของ Timer1
End Sub
Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles Timer1.Tick
If Timer1.Interval = 1000 Then 'หนวยเวลาเพอรอประมวลผล
r_file = fso.OpenTextFile("D:\001.txt") 'เปดไฟลขอมล
Do Until r_file.AtEndOfStream 'อานขอมลจากไฟลขอมลจนจบ
TextBox2.Text = Val(r_file.ReadLine) 'แสดงขอมล Textbox2
Loop
End If
Timer1.Enabled = False 'จบการทางานของ Timer1
End Sub
End Class
รปท 2.26 ผลลพธของ Log ของเลข 256 ฐาน 2 (8 = log2(256))
5) ทดสอบการทางานของโปรแกรม โดยการกดปม หรอกดปม <F5> ทคยบอรด จากนน
ทาการทดสอบโปรแกรมโดยการปอนตวเลข (เชน เลข 256) และกดปม “ประมวลผลลพธ Log
ฐาน 2” หนงครง กจะไดผลลพธดงรปท 2.26
60
รปท 2.27 ตวอยางโปรแกรมเขาสระบบ
2.6 สรปทายบท บทนไดสรปพนฐานการใชงานโปรแกรม Visual Basic เพอตดตอกบโปรแกรม SCILAB โดยเรม
จากประวตความเปนมาของโปรแกรม Visual Basic จากนนอธบายหลกการใชงานของโปรแกรม
Visual Basic 2010 Express รวมทงการเชอมตอกบโปรแกรม SCILAB เพอเปนแนวทางใชการ
สรางสอการเรยนการสอนทจะอธบายในบทตอไป
2.7 แบบฝกหดทายบท 1. จงอธบายเมนหลก (menu bar) ทนยมใชงานของโปรแกรม Visual Basic 2010 Express
2. การใชงานออบเจกต FileSystemObject จะตองมการเรยกไลบรารทชอวาอะไร
3. จงอธบายความหมายและรปแบบการใชงานของฟงกชน Shell
4. ฟงกชน savematfile ของโปรแกรม SCILAB มรปแบบการใชงานอยางไร
5. จงออกแบบโปรแกรมเขาสระบบ โดยเมอปอนชอลงใน Textbox และคลกทปม “เขาสระบบ”
จะแสดงขอความยนดตอบรบและชอผใชงาน ดงตวอยางในรปท 2.27
61
บทท 3 การสรางสอการสอนดวยโปรแกรม Visual
Basic รวมกบ SCILAB
ในบทนจะแสดงตวอยางขนตอนการสรางสอการสอนดวยโปรแกรม Visual Basic (VB) รวมกบ
SCILAB ซงประกอบดวยการบวก/ลบ/คณ/หาร ของเลขสองจานวน การหาดเทอรมแนนตและ
อนเวอรสของเมทรกซ การพสจนคณสมบตของเมทรกซ การหาคาลอการทมฐานใดๆ การบวกและ
ลบสมการพหนาม และการวาดกราฟสองมต เพอเปนแนวทางใหผอานสามารถนาไปพฒนาตอยอด
หรอประยกตใชงานดานอนได
3.1 การบวก/ลบ/คณ/หาร ของเลขสองจานวน
ในสวนนจะแสดงการใชโปรแกรม VB 2010 Express เพอสรางหนาตางสวนตอประสาน (interface)
เพอใชสาหรบการบวก ลบ คณ และหาร ของเลขสองจานวน ดงตอไปน
1) เปดโปรแกรม VB 2010 Express แลวสรางโปรเจกตแบบ Windows Forms Application
จากนนออกแบบหนาฟอรมตามรปท 3.1
2) กาหนดคาคณสมบตของฟอรมในรปท 3.1 ตามตารางท 3.1
3) เรยกฟงกชน FileSystemObject มาใชงานโดยเลอกทเมน Project → Add Reference…
→ Microsoft Scripting Runtime และกดปม OK (ตามรปท 2.11 และ 2.12)
4) ดบเบลคลกทฟอรมหรอคลกทปม View Code ทหนาตางโซลชน (solution explorer)
แลวเขยนโคดโปรแกรมดงน
62
รปท 3.1 ฟอรมสาหรบทาหนาทการบวก ลบ คณ และหาร ของเลขสองจานวน
ตารางท 3.1 คาคณสมบตของฟอรมในรปท 3.1
ออบเจกต / คอนโทรล คณสมบต คาทกาหนด
Form Text การบวก/ลบ/คณ/หาร ดวย SCILAB
CommandButton1 Name Button1
Text + (บวก)
CommandButton2 Name Button2
Text - (ลบ)
CommandButton3 Name Button3
Text X (คณ)
CommandButton4 Name Button4
Text / (หาร)
Textbox1 (A) Text N/A
Textbox2 (B) Text N/A
Textbox3 (C) Text N/A
Timer1 Enabled False
Interval 1000
โคดของฟอรมในรปท 3.1
1
2
Public Class Form1
Public fso As New Scripting.FileSystemObject
63
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
Public w_file As Scripting.TextStream
Public r_file As Scripting.TextStream
Public oparation As String
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles Button1.Click
oparation = "+" 'การบวก
F_scilab() 'เรยกใชฟงกชน F_scilab
End Sub
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles Button2.Click
oparation = "-" 'การลบ
F_scilab() 'เรยกใชฟงกชน F_scilab
End Sub
Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles Button4.Click
oparation = "*" 'การคณ
F_scilab() 'เรยกใชฟงกชน F_scilab
End Sub
Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles Button3.Click
oparation = "/" 'การหาร
F_scilab() 'เรยกใชฟงกชน F_scilab
End Sub
Private Sub F_scilab() 'รายละเอยดของฟงกชน F_scilab
TextBox3.Text = "" 'ลบขอมลใน textbox3
w_file = fso.CreateTextFile("D:\temp.sce") 'สรางไฟลสครปตชอ temp.sce
w_file.WriteLine("A=" & TextBox1.Text & ";") 'ใหตวแปร A = Textbox1.Text
w_file.WriteLine("B=" & TextBox2.Text & ";") 'ใหตวแปร B = Textbox2.Text
w_file.WriteLine("C=A" & oparation & "B;") 'ใหตวแปร C มคาเทากบ A ตามดวย
ตวดาเนนการและ B
w_file.WriteLine("otext=string(C);") 'แปลงขอมล C เปนสายอกขระเกบไวทตวแปร otext
w_file.WriteLine("fid = mopen('D:\001.txt', 'w');") 'สรางไฟลผลลพธ 001.txt
w_file.WriteLine("mfprintf(fid,'%s\n', otext);") 'เขยนขอมล otext ลงในไฟล 001.txt
w_file.WriteLine("mclose(fid);") 'จบการเขยนขอมลลงไฟล 001.txt
w_file.WriteLine("exit") 'ออกจากโปรแกรม SCILAB
w_file.Close() 'จบการเขยนขอมลลงไฟลสครปต
Shell("C:\WINDOWS\scilab-4.1.2\bin\Scilex.exe -f D:\temp.sce", vbHide) 'ประมวลผล
64
35
36
37
38
39
40
41
42
43
44
45
46
47
Timer1.Enabled = True 'เปดการทางาน Timer1
End Sub
Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles Timer1.Tick
If fso.FileExists("D:\001.txt") = True And Timer1.Interval = 1000 Then
'ตรวจสอบเงอนไขไฟล 001.txt มอยจรงหรอไมและหนวงเวลาเทากบ 1 วนาท
r_file = fso.OpenTextFile("D:\001.txt") 'เปดไฟล 001.txt
Do Until r_file.AtEndOfStream 'ตรวจสอบเงอนไข อานขอมลจาก 001.txt จบหรอไม
TextBox3.Text = Val(r_file.ReadLine) 'นาขอมลทอานไดใสลง textbox3.text
Loop 'วนลปไปตรวจสอบเงอนไข
r_file.Close() 'จบการอานขอมล
Timer1.Enabled = False 'ปดการทางาน Timer1
End If 'จบทางานเงอนไข
End Sub
End Class
รปท 3.2 ทดสอบการบวกเลขสองจานวน
5) ทดสอบการทางานของโปรแกรมโดยการกดปม หรอกดปม <F5> ทคยบอรด จากนน
ปอนขอมลดงน A มคาเทากบ 5 และ B มคาเทากบ 5 และกดปม “+ (บวก)” หนงครง
กจะไดผลลพธตามรปท 3.2 แตถากดปม “× (คณ)” หนงครง กจะไดผลลพธตามรปท 3.3
3.2 การหาดเทอรมแนนตและอนเวอรสของเมทรกซ
ในทนจะแสดงการหาดเทอรมแนนต (determinant) และอนเวอรส (inverse) ของเมทรกซขนาด
2×2 และ 3×3 โดยจะสรางฟอรมทงหมด 3 หนาตาง ดงรายละเอยดตอไปน
กดปมบวก
65
รปท 3.3 ทดสอบการคณเลขสองจานวน
รปท 3.4 ฟอรมเลอกขนาดเมทรกซ 2×2 หรอ 3×3 (Form1)
Form1 คอฟอรมกาหนดขนาดของเมทรกซทจะใชงาน
Form2 คอฟอรมสาหรบการหาดเทอรมแนนตและอนเวอรสของเมทรกซขนาด 2×2
Form3 คอฟอรมสาหรบการหาดเทอรมแนนตและอนเวอรสของเมทรกซขนาด 3×3
3.2.1 ฟอรมกาหนดขนาดของเมทรกซ
การสรางฟอรมกาหนดขนาดของเมทรกซ (Form1) ทาไดดงน
1) เปดโปรแกรม VB 2010 Express แลวสรางโปรเจกตแบบ Windows Forms Application
โดยหนาตางนจะใหผใชงานเลอกขนาดของเมทรกซทตองการ โดยจะมปมเลอกเมทรกซขนาด
2×2 และ 3×3 ดงแสดงในรปท 3.4
2) กาหนดคาคณสมบตของฟอรมในรปท 3.4 ตามตารางท 3.2
กดปมคณ
66
ตารางท 3.2 คาคณสมบตของฟอรมในรปท 3.4
ออบเจกต / คอนโทรล คณสมบต คาทกาหนด
Form Text เมทรกซ
StartPosition CenterScreen
CommandButton1 Name Button1
Text 2 x 2
CommandButton2 Name Button2
Text 3 x 3
3) เรยกฟงกชน FileSystemObject มาใชงานโดยเลอกทเมน Project → Add Reference…
→ Microsoft Scripting Runtime และกดปม OK (ตามรปท 2.11 และ 2.12)
4) ดบเบลคลกทฟอรมหรอคลกทปม View Code ทหนาตางโซลชน แลวเขยนโคดโปรแกรม
ดงน
โคดของฟอรม Form1 ในรปท 3.4
1
2
3
4
5
6
7
8
9
10
Public Class Form1
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles Button1.Click
Hide() 'ซอนฟอรมทใชงานอย (Form1)
Form2.Show() 'แสดง Form2
End Sub
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles Button2.Click
Hide() 'ซอนฟอรมทใชงานอย (Form1)
Form3.Show() 'แสดง Form3
End Sub
End Class
3.2.2 ฟอรมสาหรบหาดเทอรมแนนตและอนเวอรสของเมทรกซขนาด 2×2
การสรางฟอรมสาหรบการหาดเทอรมแนนตและอนเวอรสของเมทรกซขนาด 2 ×2 (Form2) ทาได
ดงน
67
รปท 3.5 ฟอรมสาหรบการหาดเทอรมแนนตและอนเวอรสของเมทรกซขนาด 2×2 (Form2)
รปท 3.6 เครองมอ Panel ทใชในการออกแบบผลลพธของ Form2
1) เปดโปรแกรม VB 2010 Express แลวสรางโปรเจกตแบบ Windows Forms Application
โดยหนาตางนจะใชสาหรบหาดเทอรมแนนตและอนเวอรสของเมทรกซขนาด 2×2 ซงตองมปม
สาหรบคานวณ 2 ปม โดยการหาดเทอรมแนนตจะแสดง Textbox จานวน 1 ชอง เปน Panel
ทหนง และการหาอนเวอรสจะแสดง Textbox จานวน 4 ชอง เปน Panel ทสอง ดงแสดงใน
รปท 3.5
หมายเหต การออกแบบฟอรมผลลพธนนจะใชเครองมอ (Toolbox) ทมชอวา Panel ตามรปท
3.6 ซงจะตองสราง Panel สองอนซอนกน ณ ตาแหนงทแสดงผลลพธ โดย Panel ทหนงใช
แสดงผลลพธของการหาดเทอรมแนนต และ Panel ทสองใชแสดงผลลพธของการหาอนเวอรส
นอกจากนจะตองทาการซอน Panel ทงสองไวกอน โดยการกาหนดคา Visible เทากบ False
ตามรปท 3.7
ดเทอรมแนนต
อนเวอรส
68
รปท 3.7 การตงคาการซอน Panel
รปท 3.8 ตวอยางรหสทใชกาหนด Textbox (XY)
2) กาหนดคาคณสมบตของฟอรมในรปท 3.5 ตามตารางท 3.3
หมายเหต รหสทใชในการตงชอ Textbox (XY) หมายถง Textbox แถวท X และแนวตงท
Y เชน ถากาหนดให Textbox (12) จะหมายถง Textbox แถวท 1 และแนวตงท 2 ตามท
แสดงในรปท 3.8
3) เรยกฟงกชน FileSystemObject มาใชงานโดยเลอกทเมน Project → Add Reference…
→ Microsoft Scripting Runtime และกดปม OK (ตามรปท 2.11 และ 2.12)
4) ดบเบลคลกทฟอรมหรอคลกทปม View Code ทหนาตางโซลชนแลวเขยนโคดโปรแกรม
ดงน
แถวท 1 แนวตงท 2
69
ตารางท 3.3 คาคณสมบตของฟอรมในรปท 3.5
ออบเจกต / คอนโทรล คณสมบต คาทกาหนด
Form Text เมทรกซขนาด 2 × 2
StartPosition CenterScreen
CommandButton1 Name Button1
Text ดเทอรมแนนต
CommandButton2 Name Button2
Text อนเวอรส
CommandButton3 Name Button3
Text ยอนกลบ
Textbox (A11) Name a0
Text N/A
Textbox (A12) Name a1
Text N/A
Textbox (A21) Name a2
Text N/A
Textbox (A22) Name a3
Text N/A
Textbox (1) Panel1 Name da
Text N/A
Textbox (11) Panel2 Name inva0
Text N/A
Textbox (12) Panel2 Name inva1
Text N/A
Textbox (21) Panel2 Name inva2
Text N/A
Textbox (22) Panel2 Name inva3
Text N/A
Timer1 Enabled False
Interval 1000
70
โคดของฟอรม Form2 ในรปท 3.5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
Public Class Form2
Public fso As New Scripting.FileSystemObject
Public w_file As Scripting.TextStream
Public r_file As Scripting.TextStream
Public codeline As String
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles Button1.Click
da.Text = "" 'ลบขอมลใน da.Text
w_file = fso.CreateTextFile("D:\temp.sce") 'สรางไฟลสครปตชอวา temp.sce
w_file.WriteLine("A=[" & a0.Text & " " & a1.Text & ";" & a2.Text & " " & a3.Text
& "];") 'สรางตวแปรเมทรกซ A เทากบ a0.text - a3.text ตามลาดบ
w_file.WriteLine("output=det(A);") 'หาดเทอรมแนนตของเมทรกซ A
w_file.WriteLine("otext=string(output);") 'แปลงขอมล output เปนสายอกขระเกบไวท
ตวแปร otext
w_file.WriteLine("fid = mopen('D:\001.txt', 'w');") 'สรางไฟลผลลพธ 001.txt
w_file.WriteLine("mfprintf(fid,'%s\n',otext);") 'นาขอมล output เขยนลงในไฟล 001.txt
w_file.WriteLine("mclose(fid);") 'จบการเขยนขอมลลงไฟล 001.txt
w_file.WriteLine("exit") 'ออกจากโปรแกรม SCILAB
w_file.Close() 'จบการเขยนขอมลลงไฟลสครปต
Shell("C:\WINDOWS\scilab-4.1.2\bin\Scilex.exe -f D:\temp.sce", vbHide)
Timer1.Enabled = True 'เปดการทางาน Timer1
End Sub
Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles Timer1.Tick
If fso.FileExists("D:\001.txt") = True And Timer1.Interval = 1000 Then 'ตรวจสอบ
เงอนไขไฟล 001.txt มอยจรงหรอไมและหนวงเวลาเทากบ 1 วนาท
r_file = fso.OpenTextFile("D:\001.txt") 'เปดไฟล 001.txt
Do Until r_file.AtEndOfStream 'ตรวจสอบเงอนไข อานขอมลจาก 001.txt จบหรอไม
da.Text = r_file.ReadLine 'นาขอมลทอานไดใสลง da.text
Loop 'วนลปไปตรวจสอบเงอนไข
r_file.Close() 'จบการอานขอมล
Panel2.Visible = False 'ปด Panel2
Panel1.Visible = True 'เปด Panel1
Timer1.Enabled = False 'ปดการทางาน Timer1
End If 'จบทางานเงอนไข
End Sub
71
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles Button2.Click
inva0.Text = "" 'ลบขอมลใน inva0.text
inva1.Text = "" 'ลบขอมลใน inva1.text
inva2.Text = "" 'ลบขอมลใน inva2.text
inva3.Text = "" 'ลบขอมลใน inva3.text
w_file = fso.CreateTextFile("D:\temp.sce") 'สรางไฟลสครปตชอวา temp.sce
w_file.WriteLine("A=[" & a0.Text & " " & a1.Text & ";" & a2.Text & " " & a3.Text
& "];") 'สรางตวแปรเมทรกซ A เทากบ a0.text - a3.text ตามลาดบ
w_file.WriteLine("output=inv(A);") 'หาอนเวอรสของเมทรกซ A
w_file.WriteLine("otext=string(output);") 'แปลงขอมล output เปนสายอกขระเกบไวท
ตวแปร otext
w_file.WriteLine("fid = mopen('D:\001.txt', 'w');") 'สรางไฟลผลลพธ 001.txt
w_file.WriteLine("mfprintf(fid,'%s\n',otext(1));") 'นาขอมล otext(1) เขยนลงใน 001.txt
w_file.WriteLine("mfprintf(fid,'%s\n',otext(3));") 'นาขอมล otext(3) เขยนลงใน 001.txt
w_file.WriteLine("mfprintf(fid,'%s\n',otext(2));") 'นาขอมล otext(2) เขยนลงใน 001.txt
w_file.WriteLine("mfprintf(fid,'%s\n',otext(4));") 'นาขอมล otext(4) เขยนลงใน 001.txt
w_file.WriteLine("mclose(fid);") 'จบการเขยนขอมลลงไฟล 001.txt
w_file.WriteLine("exit") 'ออกจากโปรแกรม SCILAB
w_file.Close() 'จบการเขยนขอมลลงไฟลสครปต
Shell("C:\WINDOWS\scilab-4.1.2\bin\Scilex.exe -f D:\temp.sce", vbHide)
Timer2.Enabled = True 'เปดการทางาน Timer2
End Sub
Private Sub Timer2_Tick(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles Timer2.Tick
If fso.FileExists("D:\001.txt") = True And Timer2.Interval = 1000 Then 'ตรวจสอบ
เงอนไขไฟล 001.txt มอยจรงหรอไมและหนวงเวลาเทากบ 1 วนาท
r_file = fso.OpenTextFile("D:\001.txt") 'เปดไฟล 001.txt
Do Until r_file.AtEndOfStream 'ตรวจสอบเงอนไข อานขอมลจาก 001.txt จบหรอไม
inva0.Text = r_file.ReadLine 'นาขอมลทอานไดใสลง inva0.text
inva1.Text = r_file.ReadLine 'นาขอมลทอานไดใสลง inva1.text
inva2.Text = r_file.ReadLine 'นาขอมลทอานไดใสลง inva2.text
inva3.Text = r_file.ReadLine 'นาขอมลทอานไดใสลง inva3.text
Loop 'วนลปไปตรวจสอบเงอนไข
r_file.Close() 'จบการอานขอมล
Panel1.Visible = False 'ปด Panel1
Panel2.Visible = True 'เปด Panel2
72
64
65
66
67
68
69
70
71
Timer2.Enabled = False 'ปดการทางาน Timer2
End If 'จบทางานเงอนไข
End Sub
Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles Button3.Click
Hide() 'ซอนฟอรมทใชงานอย (Form2)
Form1.Show() 'แสดง Form1
End Sub
End Class
รปท 3.9 ฟอรมสาหรบการหาดเทอรมแนนตและอนเวอรสของเมทรกซขนาด 3×3 (Form3)
3.2.3 ฟอรมสาหรบหาดเทอรมแนนตและอนเวอรสของเมทรกซขนาด 3×3
การสรางฟอรมสาหรบหาดเทอรมแนนตและอนเวอรสของเมทรกซขนาด 3 ×3 (Form3) ทาไดดงน
1) เปดโปรแกรม VB 2010 Express แลวสรางโปรเจกตแบบ Windows Forms Application
โดยหนาตางนจะใชสาหรบหาดเทอรมแนนตและอนเวอรสของเมทรกซขนาด 3×3 โดยการ
ออกแบบในสวนแสดงผลลพธจะมลกษณะเหมอนกบแบบฟอรมท 2 (Form2) โดยจะใช Panel
ซอนผลลพธไวตามทกาหนดในรปท 3.6 และ 3.7 แตจะมขนาดของเมทรกซเปน 3×3 ตาม
รปท 3.9
2) กาหนดคาคณสมบตของฟอรมในรปท 3.9 ตามตารางท 3.4
อนเวอรส
ดเทอรมแนนต
73
ตารางท 3.4 คาคณสมบตของฟอรมในรปท 3.9
ออบเจกต / คอนโทรล คณสมบต คาทกาหนด
Form Text เมทรกซขนาด 3 × 3
StartPosition CenterScreen
CommandButton1 Name Button1
Text ดเทอรมแนนต
CommandButton2 Name Button2
Text อนเวอรส
CommandButton3 Name Button3
Text ยอนกลบ
Textbox (A11) Name a0
Text N/A
Textbox (A12) Name a1
Text N/A
Textbox (A13) Name a2
Text N/A
Textbox (A21) Name a3
Text N/A
Textbox (A22) Name a4
Text N/A
Textbox (A23) Name a5
Text N/A
Textbox (A31) Name a6
Text N/A
Textbox (A32) Name a7
Text N/A
Textbox (A33) Name a8
Text N/A
Textbox (1) Panel1 Name da
Text N/A
74
ออบเจกต / คอนโทรล คณสมบต คาทกาหนด
Textbox (11) Panel2 Name inva0
Text N/A
Textbox (12) Panel2 Name inva1
Text N/A
Textbox (13) Panel2 Name inva2
Text N/A
Textbox (21) Panel2 Name inva3
Text N/A
Textbox (22) Panel2 Name inva4
Text N/A
Textbox (23) Panel2 Name inva5
Text N/A
Textbox (31) Panel2 Name inva6
Text N/A
Textbox (32) Panel2 Name inva7
Text N/A
Textbox (33) Panel2 Name inva8
Text N/A
Timer1 Enabled False
Interval 1000
หมายเหต การเรยงรหส Textbox (XY) ในตารางท 3.4 จะเหมอนกบ Form2 ทแสดงในตารางท
3.3 เพยงแตขนาดเมทรกซจะเปน 3×3
3) เรยกฟงกชน FileSystemObject มาใชงานโดยเลอกทเมน Project → Add Reference…
→ Microsoft Scripting Runtime และกดปม OK (ตามรปท 2.11 และ 2.12)
4) ดบเบลคลกทฟอรมหรอคลกทปม View Code ทหนาตางโซลชน แลวเขยนโคดโปรแกรม
ดงน
75
โคดของฟอรม Form3 ในรปท 3.9
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
Public Class Form3
Public fso As New Scripting.FileSystemObject
Public w_file As Scripting.TextStream
Public r_file As Scripting.TextStream
Public codeline As String
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles Button1.Click
da.Text = "" 'ลบขอมลใน da.text
w_file = fso.CreateTextFile("D:\temp.sce") 'สรางไฟลสครปตชอวา temp.sce
w_file.WriteLine("A=[" & a0.Text & " " & a1.Text & " " & a2.Text & ";" & a3.Text
& " " & a4.Text & " " & a5.Text & ";" & a6.Text & " " & a7.Text & " " & _ a8.Text &
"];") 'สรางตวแปรเมทรกซ A เทากบ a0.text - a8.text ตามลาดบ
w_file.WriteLine("output=det(A);") 'หาดเทอรมแนนตของเมทรกซ A
w_file.WriteLine("otext=string(output);") 'แปลงขอมล output เปนสายอกขระเกบไวท
ตวแปร otext
w_file.WriteLine("fid = mopen('D:\001.txt', 'w');") 'สรางไฟลผลลพธ 001.txt
w_file.WriteLine("mfprintf(fid,'%s\n',otext);") 'นาขอมล otext เขยนลงใน 001.txt
w_file.WriteLine("mclose(fid);") 'จบการเขยนขอมลลงไฟล 001.txt
w_file.WriteLine("exit") 'ออกจากโปรแกรม SCILAB
w_file.Close() 'จบการเขยนขอมลลงไฟลสครปต
Shell("C:\WINDOWS\scilab-4.1.2\bin\Scilex.exe -f D:\temp.sce", vbHide)
Timer1.Enabled = True 'เปดการทางาน Timer1
End Sub
Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles Timer1.Tick
If fso.FileExists("D:\001.txt") = True And Timer1.Interval = 1000 Then
r_file = fso.OpenTextFile("D:\001.txt") 'เปดไฟล 001.txt
Do Until r_file.AtEndOfStream 'ตรวจสอบเงอนไข อานขอมลจาก 001.txt จบหรอไม
da.Text = r_file.ReadLine 'นาขอมลทอานไดใสลง da.text
Loop 'วนลปไปตรวจสอบเงอนไข
r_file.Close() 'จบการอานขอมล
Panel2.Visible = False 'ปด Panel2
Panel1.Visible = True 'เปด Panel1
Timer1.Enabled = False 'ปดการทางาน Timer1
76
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
End If 'จบทางานเงอนไข
End Sub
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles Button2.Click
inva0.Text = "" 'ลบขอมลใน inva0.text
inva1.Text = "" 'ลบขอมลใน inva1.text
inva2.Text = "" 'ลบขอมลใน inva2.text
inva3.Text = "" 'ลบขอมลใน inva3.text
inva4.Text = "" 'ลบขอมลใน inva4.text
inva5.Text = "" 'ลบขอมลใน inva5.text
inva6.Text = "" 'ลบขอมลใน inva6.text
inva7.Text = "" 'ลบขอมลใน inva7.text
inva8.Text = "" 'ลบขอมลใน inva8.text
w_file = fso.CreateTextFile("D:\temp.sce") 'สรางไฟลสครปตชอวา temp.sce
w_file.WriteLine("A=[" & a0.Text & " " & a1.Text & " " & a2.Text & ";" & a3.Text
& " " & a4.Text & " " & a5.Text & ";" & a6.Text & " " & a7.Text & " " & _ a8.Text &
"];") 'สรางตวแปรเมทรกซ A เทากบ a0.text - a8.text ตามลาดบ
w_file.WriteLine("output=inv(A);") 'หาอนเวอรสของเมทรกซ A
w_file.WriteLine("otext=string(output);")
w_file.WriteLine("fid = mopen('D:\001.txt', 'w');") 'สรางไฟลผลลพธ 001.txt
w_file.WriteLine("mfprintf(fid,'%s\n',otext(1));") 'นาขอมล otext(1) เขยนลงใน 001.txt
w_file.WriteLine("mfprintf(fid,'%s\n',otext(4));") 'นาขอมล otext(4) เขยนลงใน 001.txt
w_file.WriteLine("mfprintf(fid,'%s\n',otext(7));") 'นาขอมล otext(7) เขยนลงใน 001.txt
w_file.WriteLine("mfprintf(fid,'%s\n',otext(2));") 'นาขอมล otext(2) เขยนลงใน 001.txt
w_file.WriteLine("mfprintf(fid,'%s\n',otext(5));") 'นาขอมล otext(5) เขยนลงใน 001.txt
w_file.WriteLine("mfprintf(fid,'%s\n',otext(8));") 'นาขอมล otext(8) เขยนลงใน 001.txt
w_file.WriteLine("mfprintf(fid,'%s\n',otext(3));") 'นาขอมล otext(3) เขยนลงใน 001.txt
w_file.WriteLine("mfprintf(fid,'%s\n',otext(6));") 'นาขอมล otext(6) เขยนลงใน 001.txt
w_file.WriteLine("mfprintf(fid,'%s\n',otext(9));") 'นาขอมล otext(9) เขยนลงใน 001.txt
w_file.WriteLine("mclose(fid);") 'จบการเขยนขอมลลงไฟล 001.txt
w_file.WriteLine("exit") 'ออกจากโปรแกรม SCILAB
w_file.Close() 'จบการเขยนขอมลลงไฟลสครปต
Shell("C:\WINDOWS\scilab-4.1.2\bin\Scilex.exe -f D:\temp.sce", vbHide)
Timer2.Enabled = True 'เปดการทางาน Timer2
End Sub
77
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
Private Sub Timer2_Tick(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles Timer2.Tick
If fso.FileExists("D:\001.txt") = True And Timer2.Interval = 1000 Then
r_file = fso.OpenTextFile("D:\001.txt") 'เปดไฟล 001.txt
Do Until r_file.AtEndOfStream 'ตรวจสอบเงอนไข อานขอมลจาก 001.txt จบหรอไม
inva0.Text = r_file.ReadLine 'นาขอมลใสลง inva0.text
inva1.Text = r_file.ReadLine 'นาขอมลใสลง inva1.text
inva2.Text = r_file.ReadLine 'นาขอมลใสลง inva2.text
inva3.Text = r_file.ReadLine 'นาขอมลใสลง inva3.text
inva4.Text = r_file.ReadLine 'นาขอมลใสลง inva4.text
inva5.Text = r_file.ReadLine 'นาขอมลใสลง inva5.text
inva6.Text = r_file.ReadLine 'นาขอมลใสลง inva6.text
inva7.Text = r_file.ReadLine 'นาขอมลใสลง inva7.text
inva8.Text = r_file.ReadLine 'นาขอมลใสลง inva8.text
Loop 'วนลปไปตรวจสอบเงอนไข
r_file.Close() 'จบการอานขอมล
Panel1.Visible = False 'ปด Panel1
Panel2.Visible = True 'เปด Panel2
Timer2.Enabled = False 'ปดการทางาน Timer2
End If 'จบการทางานของเงอนไข
End Sub
Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles Button3.Click
Hide() 'ซอนฟอรมทใชงานอย (Form3)
Form1.Show() 'แสดง Form1
End Sub
End Class
3.2.4 ทดสอบการใชงาน
ในสวนนจะทดสอบการทางานของโปรแกรมการหาดเทอรมแนนตและอนเวอรสของเมทรกซขนาด
2 ×2 และ 3 ×3 ดงน
78
รปท 3.10 ตวอยางการหาผลลพธของดเทอรมแนนตของเมทรกซขนาด 2×2
รปท 3.11 ตวอยางการหาผลลพธของอนเวอรสเมทรกซขนาด 2×2
1) ทดสอบการทางานของโปรแกรมโดยการกดปม หรอกดปม <F5> ทคยบอรด จากนน
ทาการปอนขอมลโดยแบงออกเปน 2 ตวอยางตอไปน
2) สาหรบตวอยางเมทรกซขนาด 2×2 ใหกดเลอกขนาดของเมทรกซเปน 2×2 ในรปท 3.4 กจะได
หนาตาง “เมทรกซขนาด 2×2” ตามรปท 3.10
• ปอนขอมลใหเมทรกซ A มคาเทากบ [1, 2; 3, 4] ตามรปท 3.10 โดยถาตองการหาคา
ดเทอรมแนนตของเมทรกซ A ใหกดปมดเทอรมแนนตในรปท 3.10 กจะไดผลลพธเทากบ
-2 ตามทตองการ ในทานองเดยวกนถาตองการหาคาดเทอรมแนนตของเมทรกซ A ใหกด
ปมอนเวอรสในรปท 3.11 กจะไดผลลพธเทากบ [-2, 1; 1.5, -0.5] ตามทตองการ
79
รปท 3.12 ตวอยางการหาผลลพธของดเทอรมแนนตของเมทรกซขนาด 3×3
รปท 3.13 ตวอยางการหาผลลพธของอนเวอรสเมทรกซขนาด 3×3
3) สาหรบตวอยางเมทรกซขนาด 3×3 ใหกดเลอกขนาดของเมทรกซเปน 3×3 ในรปท 3.4 กจะได
หนาตาง “เมทรกซขนาด 3×3” ตามรปท 3.12
• ปอนขอมลใหเมทรกซ A มคาเทากบ [2, 2, 1; 1, 2, 4; 8, 2, 3] ตามรปท 3.12 โดยถา
ตองการหาคาดเทอรมแนนตของเมทรกซ A ใหกดปมดเทอรมแนนตของเมทรกซ A ให
กดปมดเทอรมแนนตในรปท 3.12 กจะไดผลลพธเทากบ 40 ในทานองเดยวกนถาตองการ
หาคาดเทอรมแนนตของเมทรกซ A ใหกดปมอนเวอรสในรปท 3.13 กจะไดผลลพธเทากบ
[-0.05, -0.1, 0.15; 0.725, -0.05, -0.175; -0.35, 0.3, 0.05] ตามตองการ
80
รปท 3.14 เครองมอ TabControl ในกลองเครองมอ
3.3 การพสจนคณสมบตของเมทรกซ
ในสวนนจะแสดงตวอยางการใชโปรแกรม VB 2010 Express สรางหนาตางสวนตอประสานเพอ
ใชในการพสจนคณสมบต (property) ของเมทรกซ 3 แบบคอ
(kA)T = kAT
(A + B)T = AT + BT
(AB)T = BTAT
เมอ k คอคาคงตว, A และ B คอเมทรกซจตรสขนาด 2×2, และ (⋅)T คอทรานสโพสของเมทรกซ
ดงรายละเอยดตอไปน
3.3.1 การพสจนคณสมบต (kA)T = kAT
การสรางหนาตางสวนตอประสานเพอใชในการพสจนคณสมบต (kA)T = kAT ทาไดดงน
1) เปดโปรแกรม VB 2010 Express แลวสรางโปรเจกตแบบ Windows Forms Application
จากนนทาการออกแบบหนาฟอรมสาหรบการเขยนโปรแกรมพสจนคณสมบตของเมทรกซโดย
ในทนจะใชเครองมอทเรยกวา TabControl ตามรปท 3.14 เพอออกแบบการพสจนคณสมบต
ทง 3 แบบลงในฟอรมเดยวกน รปท 3.15 และ 3.16 แสดงตวอยางการออกแบบฟอรมตาม
Tab ทหนง
81
รปท 3.15 การกาหนดชอ Tab ทงสามแบบ
2) กาหนดคาคณสมบตของฟอรมสาหรบ Tab ทหนงในรปท 3.16 ตามตารางท 3.5
หมายเหต การเรยงรหสเลข Textbox (XX) จะเหมอนกบทใชในตารางท 3.4 ตวอยางเชน
สวนแสดงผลลพธในชอง Output ตามรปท 3.17 ในทนจะไดวา Textbox (21) หมายถง
Textbox แถวท 2 และแนวตงท 1 ในขณะท Textbox (25) หมายถง Textbox แถวท 2
และแนวตงท 5
คลกเลอกพนท (กรอบเสนปะ)
คลกท Tab ทตองการ
82
รปท 3.16 ฟอรมของ Tab ทหนง สาหรบการพสจน (kA)T = kAT
รปท 3.17 ตวอยางรหสทใชกาหนด Textbox (Output)
แถวท 2 แนวตงท 5 แถวท 2 แนวตงท 1
83
ตารางท 3.5 คาคณสมบตของฟอรมสาหรบ Tab ทหนงในรปท 3.16
ออบเจกต / คอนโทรล คณสมบต คาทกาหนด
Form Text เมทรกซขนาด 2 × 2 พสจนคณสมบต
StartPosition CenterScreen
CommandButton1 Name Button1
Text คานวณ
Textbox (K) Input Name K
Text N/A
Textbox (A11) Input Name a0
Text N/A
Textbox (A12) Input Name a1
Text N/A
Textbox (A21) Input Name a2
Text N/A
Textbox (A22) Input Name a3
Text N/A
Textbox (11) output Name ako
Text N/A
Textbox (12) output Name aa0
Text N/A
Textbox (13) output Name ak1
Text N/A
Textbox (14) output Name aa1
Text N/A
Textbox (15) output Name bk0
Text N/A
Textbox (16) output Name ba0
Text N/A
Textbox (17) output Name bk1
Text N/A
84
ออบเจกต / คอนโทรล คณสมบต คาทกาหนด
Textbox (18) output Name ba1
Text N/A
Textbox (21) output Name ak2
Text N/A
Textbox (22) output Name aa2
Text N/A
Textbox (23) output Name ak3
Text N/A
Textbox (24) output Name aa3
Text N/A
Textbox (25) output Name bk2
Text N/A
Textbox (26) output Name ba2
Text N/A
Textbox (27) output Name bk3
Text N/A
Textbox (28) output Name ba3
Text N/A
Textbox C1(11) Output Name ac0
Text N/A
Textbox C1(12) Output Name ac1
Text N/A
Textbox C1(13) Output Name ac2
Text N/A
Textbox C1(14) Output Name ac3
Text N/A
Textbox C2(11) Output Name bc0
Text N/A
Textbox C2(12) Output Name bc1
85
ออบเจกต / คอนโทรล คณสมบต คาทกาหนด
Text N/A
Textbox C2(13) Output Name bc2
Text N/A
Textbox C2(14) Output Name bc3
Text N/A
Timer1 Enabled False
Interval 1000
3) เรยกฟงกชน FileSystemObject มาใชงานโดยเลอกทเมน Project → Add Reference…
→ Microsoft Scripting Runtime และกดปม OK (ตามรปท 2.11 และ 2.12)
4) ดบเบลคลกทฟอรมหรอคลกทปม View Code ทหนาตางโซลชน แลวเขยนโคดโปรแกรม
ดงน
โคดของฟอรมสาหรบ Tab ทหนงในรปท 3.16
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
Public Class Form1
Public fso As New Scripting.FileSystemObject
Public w_file As Scripting.TextStream
Public r_file As Scripting.TextStream
Public i As Integer
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles Button1.Click
w_file = fso.CreateTextFile("D:\temp.sce") 'สรางไฟลสครปตชอวา temp.sce
w_file.WriteLine("A=[" & a0.Text & " " & a1.Text & ";" & a2.Text & " " & a3.Text
& "];") 'สรางตวแปรเมทรกซ A เทากบ a0.text - a3.text ตามลาดบ
w_file.WriteLine("k=[" & k.Text & "];") 'สรางตวแปร k เทากบ k.text
w_file.WriteLine("output1=(k*A)';") 'ให output1 มคาเทากบทรานสโพสของ k×A
w_file.WriteLine("output2=k*A';") 'ให output2 มคาเทากบ k คณทรานสโพสของ A
w_file.WriteLine("otext1=string(output1);") 'แปลงคา output1 เปนขอความ
w_file.WriteLine("otext2=string(output2);") 'แปลงคา output2 เปนขอความ
w_file.WriteLine("fid = mopen('D:\001.txt', 'w');") 'สรางไฟลผลลพธ 001.txt
w_file.WriteLine("mfprintf(fid,'%s\n',otext1(1));") 'นาขอมล output1(1) เขยนลง 001.txt
w_file.WriteLine("mfprintf(fid,'%s\n',otext1(3));") 'นาขอมล output1(3) เขยนลง 001.txt
w_file.WriteLine("mfprintf(fid,'%s\n',otext1(2));") 'นาขอมล output1(2) เขยนลง 001.txt
86
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
w_file.WriteLine("mfprintf(fid,'%s\n',otext1(4));") 'นาขอมล output1(4) เขยนลง 001.txt
w_file.WriteLine("mfprintf(fid,'%s\n',otext2(1));") 'นาขอมล output2(1) เขยนลง 001.txt
w_file.WriteLine("mfprintf(fid,'%s\n',otext2(3));") 'นาขอมล output2(3) เขยนลง 001.txt
w_file.WriteLine("mfprintf(fid,'%s\n',otext2(2));") 'นาขอมล output2(2) เขยนลง 001.txt
w_file.WriteLine("mfprintf(fid,'%s\n',otext2(4));") 'นาขอมล output2(4) เขยนลง 001.txt
w_file.WriteLine("mclose(fid);") 'จบการเขยนขอมลลงไฟล 001.txt
w_file.WriteLine("exit") 'ออกจากโปรแกรม SCILAB
w_file.Close() 'จบการเขยนขอมลลงไฟลสครปต
Shell("C:\WINDOWS\scilab-4.1.2\bin\Scilex.exe -f D:\temp.sce", vbHide)
Timer1.Enabled = True 'เปดการทางาน Timer1
End Sub
Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles Timer1.Tick
If fso.FileExists("D:\001.txt") = True And Timer1.Interval = 1000 Then
r_file = fso.OpenTextFile("D:\001.txt") 'เปดไฟล 001.txt
Do Until r_file.AtEndOfStream 'ตรวจสอบเงอนไข อานขอมลจาก 001.txt จบหรอไม
ac0.Text = r_file.ReadLine 'นาขอมลทอานไดใสลง ac0.text
ac1.Text = r_file.ReadLine 'นาขอมลทอานไดใสลง ac1.text
ac2.Text = r_file.ReadLine 'นาขอมลทอานไดใสลง ac2.text
ac3.Text = r_file.ReadLine 'นาขอมลทอานไดใสลง ac3.text
bc0.Text = r_file.ReadLine 'นาขอมลทอานไดใสลง bc0.text
bc1.Text = r_file.ReadLine 'นาขอมลทอานไดใสลง bc1.text
bc2.Text = r_file.ReadLine 'นาขอมลทอานไดใสลง bc2.text
bc3.Text = r_file.ReadLine 'นาขอมลทอานไดใสลง bc3.text
Loop 'วนลปไปตรวจสอบเงอนไข
r_file.Close() 'จบการอานขอมล
Dim con0() As TextBox = {a0, a1, a2, a3} 'ประกาศตวแปร con0 มขอมล
array เทากบ a0 - a3
Dim con1() As TextBox = {ak0, ak1, ak2, ak3} 'ประกาศตวแปร con1 มขอมล
array เทากบ ak0 - ak3
Dim con2() As TextBox = {bk0, bk1, bk2, bk3} 'ประกาศตวแปร con2 มขอมล
array เทากบ bk0 - bk3
Dim con3() As TextBox = {aa0, aa1, aa2, aa3} 'ประกาศตวแปร con3 มขอมล
array เทากบ aa0 - aa3
Dim con4() As TextBox = {ba0, ba1, ba2, ba3} 'ประกาศตวแปร con4 มขอมล
array เทากบ ba0 - ba3
For Me.i = 0 To 3 'ลป i = 0 จนถง i = 3
87
49
50
51
52
53
54
55
56
57
con1(i).Text = k.Text 'นาขอมล k.text สงใหกบ con1(i)
con2(i).Text = k.Text 'นาขอมล k.text สงใหกบ con2(i)
con3(i).Text = con0(i).Text 'นาขอมล con0(i) สงใหกบ con3(i)
con4(i).Text = con0(i).Text 'นาขอมล con0(i) สงใหกบ con4(i)
Next 'วนลปทไปท for จนสนสดเงอนไข
Timer1.Enabled = False 'ปดการทางาน Timer1
End If 'จบการทางานของเงอนไข
End Sub
End Class 'จบการทางานของ Class เพอทดสอบการทางานของ Tab ทหนง
รปท 3.18 ตวอยางการคานวณเพอพสจนคณสมบต (kA)T = kAT
5) ทดสอบการทางานของโปรแกรมโดยการกดปม หรอกดปม <F5> ทคยบอรด จากนน
ทาการปอนขอมล k = 2 และเมทรกซ A เทากบ [1, 2; 3, 4] ตามรปท 3.18
88
รปท 3.19 ฟอรมของ Tab ทสอง สาหรบการพสจน (A+B)T = AT + BT
3.3.2 การพสจนคณสมบต (A + B)T = AT + BT
การพสจนคณสมบตทสองนจะทาการออกแบบภายในฟอรมเดยวกน แตเปลยนเปนการใช Tab ท
สอง (แบบท 2) จากนนทาการออกแบบฟอรมภายใน Tab ทสองตามรปท 3.19 จากนนทาตาม
ขนตอนดงน
1) กาหนดคาคณสมบตของฟอรมสาหรบ Tab ทสองในรปท 3.19 ตามตารางท 3.6
2) เนองจากการเขยนโปรแกรม Tab ทหนง (หวขอท 3.3.1) ไดเรยกฟงกชน FileSystemObject
มาใชงานแลว ดงนนจงไมจาเปนตองเรยกฟงกชนนซาอกครง
89
ตารางท 3.6 คาคณสมบตของฟอรมสาหรบ Tab ทสองในรปท 3.19
ออบเจกต / คอนโทรล คณสมบต คาทกาหนด
Form Text เมทรกซขนาด 2 × 2 พสจนคณสมบต
StartPosition CenterScreen
CommandButton2 Name Button2
Text คานวณ
Textbox (A11) Input Name at0
Text N/A
Textbox (A12) Input Name at1
Text N/A
Textbox (A21) Input Name at2
Text N/A
Textbox (A22) Input Name at3
Text N/A
Textbox (B11) Input Name bt0
Text N/A
Textbox B12) Input Name bt1
Text N/A
Textbox (B21) Input Name bt2
Text N/A
Textbox (B22) Input Name bt3
Text N/A
Textbox (11) Output Name ata0
Text N/A
Textbox (12) Output Name ata1
Text N/A
Textbox (13) Output Name bta0
Text N/A
Textbox (14) Output Name bta1
Text N/A
90
ออบเจกต / คอนโทรล คณสมบต คาทกาหนด
Textbox (15) Output Name atb0
Text N/A
Textbox (16) Output Name atb1
Text N/A
Textbox (17) Output Name btb0
Text N/A
Textbox (18) Output Name btb1
Text N/A
Textbox (21) Output Name ata2
Text N/A
Textbox (22) Output Name ata3
Text N/A
Textbox (23) Output Name bta2
Text N/A
Textbox (24) Output Name bta3
Text N/A
Textbox (25) Output Name atb2
Text N/A
Textbox (26) Output Name atb3
Text N/A
Textbox (27) Output Name btb2
Text N/A
Textbox (28) Output Name btb3
Text N/A
Textbox C1(11) Output Name tac0
Text N/A
Textbox C1(12) Output Name tac1
Text N/A
Textbox C1(13) Output Name tac2
91
ออบเจกต / คอนโทรล คณสมบต คาทกาหนด
Text N/A
Textbox C1(14) Output Name tac3
Text N/A
Textbox C2(11) Output Name tbc0
Text N/A
Textbox C2(12) Output Name tbc1
Text N/A
Textbox C2(13) Output Name tbc2
Text N/A
Textbox C2(14) Output Name tbc3
Text N/A
Timer2 Enabled False
Interval 1000
3) ดบเบลคลกทฟอรมหรอคลกทปม View Code ทหนาตางโซลชน แลวเขยนโคดโปรแกรม
โดยเขยนตอจากบรรทดท 569 (จากโคดของฟอรมสาหรบ Tab ทหนงในรปท 3.16) ดงน
โคดของฟอรมสาหรบ Tab ทสองในรปท 3.19
57
58
59
60
61
62
63
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
Handles Button2.Click
w_file = fso.CreateTextFile("D:\temp2.sce") 'สรางไฟลสครปตชอวา temp2.sce
w_file.WriteLine("A=[" & at0.Text & " " & at1.Text & ";" & at2.Text & " " &
at3.Text & "];") 'สรางตวแปรเมทรกซ A เทากบ at0.text - at3.text ตามลาดบ
w_file.WriteLine("B=[" & bt0.Text & " " & bt1.Text & ";" & bt2.Text & " " &
bt3.Text & "];") 'สรางตวแปรเมทรกซ B เทากบ bt0.text - bt3.text ตามลาดบ
w_file.WriteLine("output1=(A+B)';") 'ให output1 มคาเทากบทรานสโพสของ (A+B)
w_file.WriteLine("output2=A'+B';") 'ให output2 มคาเทากบทรานสโพสของ A บวก
กบทรานสโพสของ B
w_file.WriteLine("otext1=string(output1);") 'แปลง output1 เปนสายอกขระเกบใน otext1
9 คาสง End Class ทใชในบรรทดท 57 ตองตดทงกอน เพอใสโคดของฟอรมสาหรบ Tab ทสอง ในทางปฏบตฟอรมหนง
ฟอรมจะตองม Public Class และ End Class เพยงคเดยวเทานน
92
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
w_file.WriteLine("otext2=string(output2);") 'แปลง output2 เปนสายอกขระเกบใน otext2
w_file.WriteLine("fid = mopen('D:\002.txt', 'w');") 'สรางไฟลผลลพธ 002.txt
w_file.WriteLine("mfprintf(fid,'%s\n',otext1(1));") 'นาขอมล output1(1) เขยนลง 002.txt
w_file.WriteLine("mfprintf(fid,'%s\n',otext1(3));") 'นาขอมล output1(3) เขยนลง 002.txt
w_file.WriteLine("mfprintf(fid,'%s\n',otext1(2));") 'นาขอมล output1(2) เขยนลง 002.txt
w_file.WriteLine("mfprintf(fid,'%s\n',otext1(4));") 'นาขอมล output1(4) เขยนลง 002.txt
w_file.WriteLine("mfprintf(fid,'%s\n',otext2(1));") 'นาขอมล output2(1) เขยนลง 002.txt
w_file.WriteLine("mfprintf(fid,'%s\n',otext2(3));") 'นาขอมล output2(3) เขยนลง 002.txt
w_file.WriteLine("mfprintf(fid,'%s\n',otext2(2));") 'นาขอมล output2(2) เขยนลง 002.txt
w_file.WriteLine("mfprintf(fid,'%s\n',otext2(4));") 'นาขอมล output2(4) เขยนลง 002.txt
w_file.WriteLine("mclose(fid);") 'จบการเขยนขอมลลงไฟล 002.txt
w_file.WriteLine("exit") 'ออกจากโปรแกรม SCILAB
w_file.Close() 'จบการเขยนขอมลลงไฟลสครปต
Shell("C:\WINDOWS\scilab-4.1.2\bin\Scilex.exe -f D:\temp2.sce", vbHide)
Timer2.Enabled = True 'เปดการทางาน Timer2
End Sub
Private Sub Timer2_Tick(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles Timer2.Tick
If fso.FileExists("D:\002.txt") = True And Timer2.Interval = 1000 Then
r_file = fso.OpenTextFile("D:\002.txt") 'เปดไฟล 002.txt
Do Until r_file.AtEndOfStream 'ตรวจสอบเงอนไข อานขอมลจาก 002.txt จบหรอไม
tac0.Text = r_file.ReadLine 'นาขอมลทอานไดใสลง tac0.text
tac1.Text = r_file.ReadLine 'นาขอมลทอานไดใสลง tac1.text
tac2.Text = r_file.ReadLine 'นาขอมลทอานไดใสลง tac2.text
tac3.Text = r_file.ReadLine 'นาขอมลทอานไดใสลง tac3.text
tbc0.Text = r_file.ReadLine 'นาขอมลทอานไดใสลง tbc0.text
tbc1.Text = r_file.ReadLine 'นาขอมลทอานไดใสลง tbc1.text
tbc2.Text = r_file.ReadLine 'นาขอมลทอานไดใสลง tbc2.text
tbc3.Text = r_file.ReadLine 'นาขอมลทอานไดใสลง tbc3.text
Loop 'วนลปไปตรวจสอบเงอนไข
r_file.Close() 'จบการอานขอมล
Dim con0() As TextBox = {at0, at1, at2, at3}
Dim con1() As TextBox = {bt0, bt1, bt2, bt3}
Dim con2() As TextBox = {ata0, ata1, ata2, ata3}
Dim con3() As TextBox = {atb0, atb1, atb2, atb3}
Dim con4() As TextBox = {bta0, bta1, bta2, bta3}
Dim con5() As TextBox = {btb0, btb1, btb2, btb3}
93
100
101
102
103
104
105
106
107
108
109
For Me.i = 0 To 3 'ลป i = 0 จนถง i = 3
con2(i).Text = con0(i).Text 'นาขอมล con0(i) สงใหกบ con2(i)
con3(i).Text = con0(i).Text 'นาขอมล con0(i) สงใหกบ con3(i)
con4(i).Text = con1(i).Text 'นาขอมล con1(i) สงใหกบ con4(i)
con5(i).Text = con1(i).Text 'นาขอมล con1(i) สงใหกบ con5(i)
Next 'วนลปทไปท for จนสนสดเงอนไข
Timer2.Enabled = False 'ปดการทางาน Timer2
End If 'จบทางานเงอนไข
End Sub
End Class 'จบการทางานของ Class เพอทดสอบการทางานของ Tab ทหนงและสอง
รปท 3.20 ตวอยางการคานวณเพอพสจนคณสมบต (A + B)T = AT + BT
4) ทดสอบการทางานของโปรแกรมโดยการกดปม หรอกดปม <F5> ทคยบอรด จากนน
ปอนคาเมทรกซ A เทากบ [1, 2; 3, 4] และเมทรกซ B เทากบ [5, 6; 7, 8] และกดทปม
คานวณกจะไดผลลพธตามรปท 3.20
94
รปท 3.21 ฟอรมของ Tab ทสาม สาหรบการพสจน (AB)T = BTAT
3.3.3 การพสจนคณสมบต (AB)T = BTAT
ในทานองเดยวกนการพสจนคณสมบตทสามจะออกแบบภายในฟอรมเดยวกน แตเปลยนเปนการ
ใช Tab ทสาม (แบบท 3) จากนนทาการออกแบบฟอรมภายใน Tab ทสามตามรปท 3.21
จากนนทาตามขนตอนดงน
1) กาหนดคาคณสมบตของฟอรมสาหรบ Tab ทสามในรปท 3.21 ตามตารางท 3.7
2) เชนเดยวกน เนองจากการเขยนโปรแกรม Tab ทหนง (หวขอท 3.3.1) ไดเรยกใชงานฟงกชน
FileSystemObject แลว ดงนนจงไมจาเปนตองเรยกฟงกชนนซาอกครง
95
ตารางท 3.7 คาคณสมบตของฟอรมสาหรบ Tab ทสามในรปท 3.21
ออบเจกต / คอนโทรล คณสมบต คาทกาหนด
Form Text เมทรกซขนาด 2 × 2 พสจนคณสมบต
StartPosition CenterScreen
CommandButton3 Name Button3
Text คานวณ
Textbox (A11) Input Name au0
Text N/A
Textbox (A12) Input Name au1
Text N/A
Textbox (A21) Input Name au2
Text N/A
Textbox (A22) Input Name au3
Text N/A
Textbox (B11) Input Name bu0
Text N/A
Textbox B12) Input Name bu1
Text N/A
Textbox (B21) Input Name bu2
Text N/A
Textbox (B22) Input Name bu3
Text N/A
Textbox (11) Output Name aua0
Text N/A
Textbox (12) Output Name aua1
Text N/A
Textbox (13) Output Name bta0
Text N/A
Textbox (14) Output Name bua1
Text N/A
96
ออบเจกต / คอนโทรล คณสมบต คาทกาหนด
Textbox (15) Output Name aub0
Text N/A
Textbox (16) Output Name aub1
Text N/A
Textbox (17) Output Name bub0
Text N/A
Textbox (18) Output Name bub1
Text N/A
Textbox (21) Output Name aua2
Text N/A
Textbox (22) Output Name aua3
Text N/A
Textbox (23) Output Name bua2
Text N/A
Textbox (24) Output Name bua3
Text N/A
Textbox (25) Output Name aub2
Text N/A
Textbox (26) Output Name aub3
Text N/A
Textbox (27) Output Name bub2
Text N/A
Textbox (28) Output Name bub3
Text N/A
Textbox C1(11) Output Name uac0
Text N/A
Textbox C1(12) Output Name uac1
Text N/A
Textbox C1(13) Output Name uac2
97
ออบเจกต / คอนโทรล คณสมบต คาทกาหนด
Text N/A
Textbox C1(14) Output Name uac3
Text N/A
Textbox C2(11) Output Name ubc0
Text N/A
Textbox C2(12) Output Name ubc1
Text N/A
Textbox C2(13) Output Name ubc2
Text N/A
Textbox C2(14) Output Name ubc3
Text N/A
Timer2 Enabled False
Interval 1000
3) ดบเบลคลกทฟอรมหรอคลกทปม View Code ทหนาตางโซลชน แลวเขยนโคดโปรแกรม
โดยเขยนตอจากบรรทดท 10810 จากโคดของฟอรมสาหรบ Tab ทสองในรปท 3.19 ดงน
โคดของฟอรมสาหรบ Tab ทสามในรปท 3.21
109
110
111
112
113
114
115
116
Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
Handles Button3.Click
w_file = fso.CreateTextFile("D:\temp3.sce") 'สรางไฟลสครปตชอวา temp3.sce
w_file.WriteLine("A=[" & au0.Text & " " & au1.Text & ";" & au2.Text & " " &
au3.Text & "];") 'สรางตวแปรเมทรกซ A เทากบ au0.text - au3.text ตามลาดบ
w_file.WriteLine("B=[" & bu0.Text & " " & bu1.Text & ";" & bu2.Text & " " &
bu3.Text & "];") 'สรางตวแปรเมทรกซ B เทากบ bu0.text - bu3.text ตามลาดบ
w_file.WriteLine("output1=(A*B)';") 'ให output1 เทากบ A คณ B
w_file.WriteLine("output2=B'*A';") 'ให output1 เทากบทรานสโพสของ A คณ
กบทรานสโพสของ B
w_file.WriteLine("otext1=string(output1);") 'แปลง output1 เปนสายอกขระเกบใน otext1
w_file.WriteLine("otext2=string(output2);") 'แปลง output2 เปนสายอกขระเกบใน otext2
10 ตองตดคาสง End Class ทใชในบรรทดท 109 ออกกอน เพอใหฟอรมทสรางขนมาสามารถใชงาน Tab ทงสาม Tab ได
98
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
w_file.WriteLine("fid = mopen('D:\003.txt', 'w');") 'สรางไฟลผลลพธ 003.txt
w_file.WriteLine("mfprintf(fid,'%s\n',otext1(1));") 'นาขอมล output1(1) เขยนลง 003.txt
w_file.WriteLine("mfprintf(fid,'%s\n',otext1(3));") 'นาขอมล output1(3) เขยนลง 003.txt
w_file.WriteLine("mfprintf(fid,'%s\n',otext1(2));") 'นาขอมล output1(2) เขยนลง 003.txt
w_file.WriteLine("mfprintf(fid,'%s\n',otext1(4));") 'นาขอมล output1(4) เขยนลง 003.txt
w_file.WriteLine("mfprintf(fid,'%s\n',otext2(1));") 'นาขอมล output2(1) เขยนลง 003.txt
w_file.WriteLine("mfprintf(fid,'%s\n',otext2(3));") 'นาขอมล output2(3) เขยนลง 003.txt
w_file.WriteLine("mfprintf(fid,'%s\n',otext2(2));") 'นาขอมล output2(2) เขยนลง 003.txt
w_file.WriteLine("mfprintf(fid,'%s\n',otext2(4));") 'นาขอมล output2(4) เขยนลง 003.txt
w_file.WriteLine("mclose(fid);") 'จบการเขยนขอมลลงไฟล 003.txt
w_file.WriteLine("exit") 'ออกจากโปรแกรม SCILAB
w_file.Close() 'จบการเขยนขอมลลงไฟลสครปต
Shell("C:\WINDOWS\scilab-4.1.2\bin\Scilex.exe -f D:\temp3.sce", vbHide)
Timer3.Enabled = True 'เปดการทางาน Timer3
End Sub
Private Sub Timer3_Tick(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles Timer3.Tick
If fso.FileExists("D:\003.txt") = True And Timer3.Interval = 1000 Then 'ตรวจสอบ
เงอนไขไฟล 003.txt มอยจรงหรอไมและหนวงเวลาเทากบ 1 วนาท
r_file = fso.OpenTextFile("D:\003.txt") 'เปดไฟล 003.txt
Do Until r_file.AtEndOfStream 'ตรวจสอบเงอนไข อานขอมลจาก 003.txt จบหรอไม
uac0.Text = r_file.ReadLine 'นาขอมลทอานไดใสลง uac0.text
uac1.Text = r_file.ReadLine 'นาขอมลทอานไดใสลง uac1.text
uac2.Text = r_file.ReadLine 'นาขอมลทอานไดใสลง uac2.text
uac3.Text = r_file.ReadLine 'นาขอมลทอานไดใสลง uac3.text
ubc0.Text = r_file.ReadLine 'นาขอมลทอานไดใสลง ubc0.text
ubc1.Text = r_file.ReadLine 'นาขอมลทอานไดใสลง ubc1.text
ubc2.Text = r_file.ReadLine 'นาขอมลทอานไดใสลง ubc2.text
ubc3.Text = r_file.ReadLine 'นาขอมลทอานไดใสลง ubc3.text
Loop 'วนลปไปตรวจสอบเงอนไข
r_file.Close() 'จบการอานขอมล
Dim con0() As TextBox = {au0, au1, au2, au3}
Dim con1() As TextBox = {bu0, bu1, bu2, bu3}
Dim con2() As TextBox = {aua0, aua1, aua2, aua3}
Dim con3() As TextBox = {aub0, aub1, aub2, aub3}
Dim con4() As TextBox = {bua0, bua1, bua2, bua3}
Dim con5() As TextBox = {bub0, bub1, bub2, bub3}
99
152
153
154
155
156
157
158
159
160
161
For Me.i = 0 To 3 'ลป i = 0 จนถง i = 3
con2(i).Text = con0(i).Text 'นาขอมล con0(i) สงใหกบ con2(i)
con3(i).Text = con0(i).Text 'นาขอมล con0(i) สงใหกบ con3(i)
con4(i).Text = con1(i).Text 'นาขอมล con1(i) สงใหกบ con4(i)
con5(i).Text = con1(i).Text 'นาขอมล con1(i) สงใหกบ con5(i)
Next 'วนลปทไปท for จนสนสดเงอนไข
Timer3.Enabled = False 'ปดการทางาน Timer3
End If 'จบทางานเงอนไข
End Sub
End Class 'จบการทางานของ Class เพอทดสอบการทางานของ Tab ทงสาม Tab
รปท 3.22 ตวอยางการคานวณเพอพสจนคณสมบต (AB)T = BTAT
100
รปท 3.23 ฟอรมสาหรบหาคาลอการทมของ X ฐาน Base นนคอหาคา logBase(X)
4) ทดสอบการทางานของโปรแกรมโดยการกดปม หรอกดปม <F5> ทคยบอรด จากนนปอน
คาเมทรกซ A เทากบ [1, 2; 3, 4] และเมทรกซ B เทากบ [5, 6; 7, 8] และกดทปมคานวณ
กจะไดผลลพธตามรปท 3.22
3.4 การหาคาลอการทมฐานใดๆ
ในสวนนจะแสดงการใชโปรแกรม VB 2010 Express เพอสรางหนาตางสวนตอประสานสาหรบ
ใชหาคาลอการทมฐานใดๆ ดงตอไปน
1) เปดโปรแกรม VB 2010 Express แลวสรางโปรเจกตแบบ Windows Forms Application
จากนนออกแบบหนาฟอรมตามรปท 3.23
2) กาหนดคาคณสมบตของฟอรมในรปท 3.23 ตามตารางท 3.8
3) เรยกฟงกชน FileSystemObject มาใชงานโดยเลอกทเมน Project → Add Reference…
→ Microsoft Scripting Runtime และกดปม OK (ตามรปท 2.11 และ 2.12)
4) ดบเบลคลกทฟอรมหรอคลกทปม View Code ทหนาตางโซลชน แลวเขยนโคดโปรแกรม
ดงน
101
ตารางท 3.8 คาคณสมบตของฟอรมในรปท 3.23
ออบเจกต / คอนโทรล คณสมบต คาทกาหนด
Form Text การหาผลลพธของ Log ฐานใด ๆ
StartPosition CenterScreen
CommandButton1 Name Button1
Text คานวณ
Textbox (X) Input Name TextBox1
Text N/A
Textbox (Base) Input Name TextBox2
Text N/A
Textbox (log) output Name TextBox3
Text N/A
Timer1 Enabled False
Interval 1000
โคดของฟอรมในรปท 3.23
1
2
3
4
5
6
7
8
9
10*
11
12
13
14
15
16
17
18
19
Public Class Form1
Public fso As New Scripting.FileSystemObject
Public w_file As Scripting.TextStream
Public r_file As Scripting.TextStream
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles Button1.Click
TextBox3.Text = "" 'ลบขอมลใน textbox3.text
w_file = fso.CreateTextFile("D:\temp.sce") 'สรางไฟลสครปตชอวา temp.sce
w_file.WriteLine("x=" & TextBox1.Text & ";") 'สรางตวแปร x เทากบ Textbox1.text
w_file.WriteLine("Base=" & TextBox2.Text & ";")
w_file.WriteLine("exec('D:\logXN.sci');") 'เรยกใชงานฟงกชน logXN.sci
w_file.WriteLine("output=logXN(x, Base);") 'หาคา Log(X) ฐาน Base
w_file.WriteLine("otext=string(output);") 'แปลง output เปนสายอกขระเกบใน otext
w_file.WriteLine("fid = mopen('D:\001.txt', 'w');") 'สรางไฟลผลลพธ 001.txt
w_file.WriteLine("mfprintf(fid,'%s\n',otext);") 'นาขอมล otext เขยนลงในไฟล 001.txt
w_file.WriteLine("mclose(fid);") 'จบการเขยนขอมลลงไฟล 001.txt
w_file.WriteLine("exit") 'ออกจากโปรแกรม SCILAB
w_file.Close() 'จบการเขยนขอมลลงไฟลสครปต
Shell("C:\WINDOWS\scilab-4.1.2\bin\Scilex.exe -f D:\temp.sce", vbHide)
Timer1.Enabled = True 'เปดการทางาน Timer1
102
20
21
22
23
24
25
26
27
28
29
30
31
End Sub
Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles Timer1.Tick
If fso.FileExists("D:\001.txt") = True And Timer1.Interval = 1000 Then
r_file = fso.OpenTextFile("D:\001.txt") 'เปดไฟล 001.txt
Do Until r_file.AtEndOfStream 'ตรวจสอบเงอนไข อานขอมลจาก 001.txt จบหรอไม
TextBox3.Text = Val(r_file.ReadLine) 'นาขอมลทอานไดใสลง textbox3.text
Loop 'วนลปไปตรวจสอบเงอนไข
r_file.Close() 'จบการอานขอมล
Timer1.Enabled = False 'ปดการทางาน Timer1
End If 'จบทางานเงอนไข
End Sub
End Class
รปท 3.24 ตวอยางการหาคาลอการทมของ 8 ฐาน 2 ซงมคาเทากบ 3 นนคอ log2(8) = 3
หมายเหต ในบรรทดท 10 จะเปนการเรยกฟงกชน logXN.sci ในสารบบ D:\ ทผใชสราง
ขนมาตามขอกาหนดของโปรแกรม SCILAB ดงน
1
2
3
function y = logXN(x, N)
y = log(x)/log(N);
endfunction
5) ทดสอบการทางานของโปรแกรมโดยการกดปม หรอกดปม <F5> ทคยบอรด จากนน
ปอนขอมลดงน ให X มคาเทากบ 8 และ Base มคาเทากบ 2 แลวกดปม “คานวณ” หนง
ครงกจะไดผลลพธตามรปท 3.24
103
รปท 3.25 ฟอรมสาหรบการบวกและลบสมการหหนาม
3.5 การบวกและลบสมการพหนาม
ในสวนนจะแสดงการใชโปรแกรม VB 2010 Express เพอสรางหนาตางสวนตอประสานสาหรบ
ใชบวกและลบสมการพหนาม ดงตอไปน
1) เปดโปรแกรม VB 2010 Express แลวสรางโปรเจกตแบบ Windows Forms Application
จากนนออกแบบหนาฟอรมตามรปท 3.25
2) กาหนดคาคณสมบตของฟอรมในรปท 3.25 ตามตารางท 3.9
3) เรยกฟงกชน FileSystemObject มาใชงานโดยเลอกทเมน Project → Add Reference…
→ Microsoft Scripting Runtime และกดปม OK (ตามรปท 2.11 และ 2.12)
4) ดบเบลคลกทฟอรมหรอคลกทปม View Code ทหนาตางโซลชน แลวเขยนโคดโปรแกรม
ดงน
104
ตารางท 3.9 คาคณสมบตของฟอรมในรปท 3.25
ออบเจกต / คอนโทรล คณสมบต คาทกาหนด
Form Text การบวก ลบสมการหหนามดวย SCILAB
StartPosition CenterScreen
CommandButton1 Name Button1
Text คานวณ
Textbox p(x) Input Name TextBox1
Text N/A
Textbox q(x) Input Name TextBox2
Text N/A
WebBrowser1 output Name WebBrowser1
ScrollBarsEnabled False
Timer1 Enabled False
Interval 1000
โคดของฟอรมในรปท 3.25
1
2
3
4
5
6
7
8
9
10
11*
12*
13*
14
15
16
17
Public Class Form1
Public fso As New Scripting.FileSystemObject
Public w_file As Scripting.TextStream
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles Button1.Click
w_file = fso.CreateTextFile("D:\temp.sce") 'สรางไฟลสครปตชอวา temp.sce
w_file.WriteLine("x=poly(0,'x');") 'สรางตวแปร x เปนตวแปรพหนาม
w_file.WriteLine("p=" & TextBox1.Text & ";") 'สรางตวแปร p เทากบ TextBox1.text
w_file.WriteLine("q=" & TextBox2.Text & ";") 'สรางตวแปร q เทากบ TextBox2.text
w_file.WriteLine("pq1=p+q;") 'ให pq1 มคาเทากบ p บวก q
w_file.WriteLine("pq2=p-q;") 'ให pq2 มคาเทากบ p ลบ q
w_file.WriteLine("exec('D:\pohtml01.sci',-1);") 'เรยกใชฟงกชน pohtml01.sci
w_file.WriteLine("exec('D:\pohtml02.sci',-1);") 'เรยกใชฟงกชน pohtml02.sci
w_file.WriteLine("exec('D:\pohtml03.sci',-1);") 'เรยกใชฟงกชน pohtml03.sci
w_file.WriteLine("p1 = pol2tex(p)") 'แปลงขอมล p เปน LaTeX และใหเทากบ p1
w_file.WriteLine("q1 = pol2tex(q)") 'แปลงขอมล p เปน LaTeX และใหเทากบ q1
w_file.WriteLine("pl1 = pol2tex(pq1)") 'แปลงขอมล pq1 เปน LaTeX และใหเทากบ pl1
w_file.WriteLine("pl2 = pol2tex(pq2)") 'แปลงขอมล pq2 เปน LaTeX และใหเทากบ p12
105
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
w_file.WriteLine("pohtml01('D:\001.html');") 'กาหนดชอไฟล D:\001.html ดวยฟงกชน
pohtml01
w_file.WriteLine("pohtml02('D:\001.html',pl1,'p + q');") 'กาหนดเขยน p + q = pl1
ดวยฟงกชน pohtml02
w_file.WriteLine("pohtml02('D:\001.html',pl2,'p - q');") 'กาหนดเขยน p - q = pl2
ดวยฟงกชน pohtml02
w_file.WriteLine("pohtml03('D:\001.html');") 'จบไฟล D:\001.html ดวยฟงกชน
pohtml03
w_file.WriteLine("exit") 'ออกจากโปรแกรม SCILAB
w_file.Close() 'จบการเขยนขอมลลงไฟลสครปต
Shell("C:\WINDOWS\scilab-4.1.2\bin\Scilex.exe -f D:\temp.sce", vbHide)
Timer1.Enabled = True 'เปดการทางาน Timer1
End Sub
Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles Timer1.Tick
If fso.FileExists("D:\001.html") = True And Timer1.Interval = 1000 Then
WebBrowser1.Navigate("D:\001.html") 'อานไฟล 001.html
Timer1.Enabled = False 'ปดการทางาน Timer1
End If 'จบทางานของเงอนไข
End Sub
End Class
หมายเหต ในบรรทดท 11 – 13 มการเรยกฟงกชน pohtml01.sci, pohtml02.sci
และ pohtml03.sci ในสารบบ D:\ ทผใชสรางขนมาตามขอกาหนดของโปรแกรม SCILAB
ดงน
1
2
3
4
5
6
7
8
9
10
function [] = pohtml01(ftext)
fid = mopen(ftext, 'w');
mfprintf(fid, "<html>\n<head>\n");
mfprintf(fid, "<meta http-equiv=Content-Type ...
content=text/html; charset=windows-874>\n");
mfprintf(fid, "</head>\n");
mfprintf(fid, "<style type=text/css>\n");
mfprintf(fid, "body {\n");
mfprintf(fid, "margin-left: 0px;\n");
mfprintf(fid, "margin-top: 0px;\n");
106
11
12
13
14
15
16
17
mfprintf(fid, "margin-right: 0px;\n");
mfprintf(fid, "margin-bottom: 0px;\n");
mfprintf(fid, "}\n");
mfprintf(fid, "</style>\n");
mfprintf(fid, "<body>\n");
mclose(fid);
endfunction
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
function [] = pohtml02(ftext,stext,stype)
fid = mopen(ftext, 'a');
mfprintf(fid," %s = ",stype);
mfprintf(fid," ");
Lstext = length(stext);
for i = 1:Lstext
L2stext = part(stext,i)
if L2stext =="^" then
elseif L2stext =="{" then
mfprintf(fid,"<sup>");
elseif L2stext =="}" then
mfprintf(fid,"</sup>");
elseif L2stext <> "\" & L2stext <> "*" then
mfprintf(fid,"%s",L2stext);
end
end
mfprintf(fid,"<br><br>\n");
mclose(fid);
endfunction
1
2
3
4
5
function [] = pohtml03(ftext)
fid = mopen(ftext, 'a');
mfprintf(fid,"</body>\n");
mfprintf(fid,"</html>\n");
mclose(fid);
endfunction
107
รปท 3.26 ตวอยางการบวกและลบสมการหหนาม
5) ทดสอบการทางานของโปรแกรมโดยการกดปม หรอกดปม <F5> ทคยบอรด จากนนปอน
ขอมลทอยในรปของ LaTeX ดงน p(x) เทากบเลข x^2 + 50 และ q(x) เทากบ x^2 + 25
แลวกดปม “คานวณ” หนงครงกจะไดผลลพธตามรปท 3.26
3.6 การวาดกราฟสองมต
ในสวนนจะแสดงการใชโปรแกรม VB 2010 Express เพอสรางหนาตางสวนตอประสานสาหรบ
ใชวาดกราฟสองมตของสมการ y(x) นนคอสมการ y ทเปนฟงกชนของตวแปร x ดงน
1) เปดโปรแกรม VB 2010 Express แลวสรางโปรเจกตแบบ Windows Forms Application
จากนนออกแบบหนาฟอรมตามรปท 3.27
2) กาหนดคาคณสมบตของฟอรมในรปท 3.27 ตามตารางท 3.10
3) เรยกฟงกชน FileSystemObject มาใชงานโดยเลอกทเมน Project → Add Reference…
→ Microsoft Scripting Runtime และกดปม OK (ตามรปท 2.11 และ 2.12)
4) ดบเบลคลกทฟอรมหรอคลกทปม View Code ทหนาตางโซลชน แลวเขยนโคดโปรแกรม
ดงน
108
รปท 3.27 ฟอรมสาหรบวาดกราฟสองมต
ตารางท 3.10 คาคณสมบตของฟอรมในรปท 3.27
ออบเจกต / คอนโทรล คณสมบต คาทกาหนด
Form
Text การวาดกราฟ 2 มต
StartPosition CenterScreen
TopMost True
WindowState Maximized
CommandButton1 Name Button1
Text คานวณ
Textbox1(x) คาเรมตน Name TextBox1
Text N/A
Textbox2 (x) คาระหวางขน Name TextBox2
Text N/A
Textbox3(x) คาสดทาย Name TextBox3
Text N/A
Textbox4 (y) Name TextBox4
Text N/A
PictureBox1 output
Name PictureBox1
BoderStyle FixedSingle
Size 610, 461
Timer1 Enabled False
Interval 1000
สวนทเปนเอาตพต (แสดงกราฟ) สวนทเปนอนพต (ปอนสมการ y
และชวงของคา x ทตองการวาดกราฟ)
109
โคดของฟอรมในรปท 3.27
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
Public Class Form1
Public fso As New Scripting.FileSystemObject
Public w_file As Scripting.TextStream
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles Button1.Click
PictureBox1.Refresh() 'รเฟรช PictureBox1
w_file = fso.CreateTextFile("D:\temp.sce") 'สรางไฟลสครปตชอวา temp.sce
w_file.WriteLine("x=" & TextBox1.Text & ":" & TextBox2.Text & ":" & TextBox3.Text
& ";") 'สรางตวแปร x มคาเทากบคาระหวาง TextBox1 ถง TexBox3 โดยมคาระยะหางคงท
เทากบ TextBox2
w_file.WriteLine("y=" & TextBox4.Text & ";") 'สรางตวแปร y เทากบ TextBox4
w_file.WriteLine("plot(x,y)" & ";") 'วาดกราฟ 2 มตจากคา X และ y
w_file.WriteLine("xs2gif(0,'D:\001.gif');") 'บนทกกราฟเปนรปรปเกบไวท D:\001.gif
w_file.WriteLine("exit") 'ออกจากโปรแกรม SCILAB
w_file.Close() 'จบการเขยนขอมลลงไฟลสครปต
Shell("C:\WINDOWS\scilab-4.1.2\bin\Scilex.exe -f D:\temp.sce", vbHide)
Timer1.Enabled = True 'เปดการทางาน Timer1
End Sub
Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles Timer1.Tick
If fso.FileExists("D:\001.gif") = True And Timer1.Interval = 1000 Then
PictureBox1.ImageLocation = "D:\001.gif" 'อานไฟล 001.gif แสดง PictureBox1
Timer1.Enabled = False 'ปดการทางาน Timer1
End If 'จบการทางานของเงอนไข
End Sub
End Class
6) ทดสอบการทางานของโปรแกรมโดยการกดปม หรอกดปม <F5> ทคยบอรด จากนน
ทาการวาดกราฟสองมต เชน ถาตองการวาดรปสญญาณ y = sin(2πfx) เมอความถ f = 1
เฮรตซ กใหปอนขอมลของอนพต x = 0 : 0.01 : 2 และ y = sin(2*%pi*1*x) ตามรปท
3.28 (เมอ %pi ≈ 22/7 คอคา π) แลวกดปม “คานวณ” หนงครง จะไดผลลพธตามรปท 3.28
110
รปท 3.28 ตวอยางการวาดกราฟสองมตของสมการ y = sin(2*%pi*1*x)
3.7 สรปทายบท บทนไดยกตวอยางการสรางสอการสอนดวยโปรแกรม Visual Basic รวมกบ SCILAB เพอเปน
แนวทางใหผอานสามารถนาไปพฒนาตอยอดหรอประยกตใชงานในดานอนๆ ได ซงประกอบดวย
การบวก/ลบ/คณ/หาร ของเลขสองจานวน การหาดเทอรมแนนตและอนเวอรสของเมทรกซ การ
พสจนคณสมบตของเมทรกซ การหาคาลอการทมฐานใดๆ การบวกและลบสมการพหนาม และ
การวาดกราฟสองมต
3.8 แบบฝกหดทายบท 1. จงเขยนโปรแกรมหาคาตวคณรวมนอย (ครน.) จานวน 3 คา
2. จงเขยนโปรแกรมแกสมการพหนามทเปนฟงกชนของตวแปรเดยว
3. จงเขยนโปรแกรมสาหรบวาดกราฟ 2 มต ดงรปท 1.5 (คาสง polarplot)
4. จงเขยนโปรแกรมสาหรบวาดกราฟ 3 มต ดงรปท 1.6 (คาสง plot3d)
อนพต
เอาตพต
111
บทท 4 ความรเบองตนเกยวกบภาษา PHP
บทนจะกลาวถงประวตความเปนมาของภาษา PHP [8 – 10] โครงสรางทวไป คาสงพนฐานของ
ภาษา PHP และการจดการไฟล สาหรบการนาไปประยกตใชงานรวมกบโปรแกรม SCILAB
4.1 ประวตความเปนมาของ PHP
PHP ยอมาจาก “PHP Hypertext Preprocessor” (เดมยอมาจาก Personal Home Page) โดย
คาสงของ PHP จะอยในไฟลทเรยกวาสครปต (script) ในทางปฏบต PHP ถอเปนภาษาสครปต
ฝงแมขาย (server-side scripting language) ซงหมายถงการประมวลผลจะเกดขนบนเครองแมขาย
(server) แลวสงผลลพธทไดมายงเครองลกขาย (client) โดยทวไปการเขยน PHP จะแทรกอยใน
เอกสาร HTML (HyperText Markup Language) ดวยการเปดปายระบ (tag) <?php และปด
ดวย ?> หรอใชปายระบ <?...?> กไดเชนกน ดงนนภาษา PHP จงเปนทนยมนามาใชเขยน
เวบแอพลเคชน (web application) ทสามารถทางานโตตอบกบผใชงานได และเปนโอเพนซอรส
(open source) ซงผใชสามารถนามาใชงานไดฟร เพราะฉะนนภาษา PHP จงไดรบการพฒนาไป
อยางรวดเรวและเปนทนยมใชงานอยางแพรหลาย
4.2 การเตรยมตวกอนเขยนเวบไซตดวยภาษา PHP
ในสวนนจะอธบายการตดตงโปรแกรม AppServ และ Adobe Dreamweaver CS5.5 ทจาเปน
สาหรบการเขยนโปรแกรมเวบไซตภาษา PHP รวมกบ SCILAB
4.2.1 การตดตงโปรแกรม AppServ
หนงสอเลมนจะใชโปรแกรม AppServ ซงเปนชดตดตงทรวมซอฟตแวรฟรหลายๆ อยางมารวมกน
โดยมโปรแกรมสาเรจ (package) คอ Apache, PHP, MySQL และ phpMyAdmin ผใชสามารถ
112
รปท 4.1 ตวอยางการตดตงโปรแกรม AppServ 2.5.10
รปท 4.2 การจดเกบไฟลและสารบบของโปรแกรม AppServ
ดาวนโหลดไดทเวบไซต www.appservnetwork.com โดยหนงสอเลมนไดใช AppServ เวอรชน
2.5.10 ตามรปท 4.1 ซงสามารถตดตงโปรแกรมไดตามปกต (ผสนใจศกษารายละเอยดการตดตง
โปรแกรมเพมเตมไดจากเวบไซต www.appservnetwork.com)
113
นอกจากนการจดเกบไฟล PHP จะตองจดเกบไวใน Document Root ทผใชกาหนดดง
แสดงในรปท 4.2 สาหรบคาโดยปรยาย (default) ของ AppServ คอ C:\AppServ\www\ ซงเปน
สงสาคญมากและมผลตอการประมวลผลไฟล PHP ถาไมจดเกบไฟลไวใน Document Root กจะ
ไมสามารถประมวลผลไฟล PHP ได เนองจาก PHP จะประมวลผลบนเครองแมขายเทานน ดงนน
ในการเขยนโปรแกรม PHP รวมกบโปรแกรม SCILAB ไฟลตางๆ ทพฒนาขนมาจะตองเกบไวท
สารบบ www นเทานน
หมายเหต สาหรบการเขยนภาษา PHP ไฟลทไดจะถกเกบไวในเครองแมขายจาลองดวยโปรแกรม
AppServ น การตงหนาเรมตนจะตองตงชอไฟลวา index.php (หรอ index.html) เพอทจะชไปยง
หนาแรกของเวบไซตไดอยางถกตอง
4.2.2 การตดตงโปรแกรม Adobe Dreamweaver CS5.5
หนงสอเลมนจะใชโปรแกรม Adobe Dreamweaver CS5.5 เพอชวยในการออกแบบและเขยนหนา
เวบเพจ (web page) ซงเปนโปรแกรมทมลขสทธซอฟตแวร อยางไรกตามในทนจะยกตวอยางการ
ตดตงโปรแกรม Adobe Dreamweaver CS5.5 แบบ 30 วน (เวอรชนทดลองใชงาน) ซงสามารถ
ดาวนโหลดมาทดลองใชงานไดฟร (trail version) โดยมขนตอนดงน
1) ดาวนโหลดโปรแกรมไดทเวบไซต http://home.npru.ac.th/piya/webscilab/book2/program/DreamweaverCS5.5.exe.rar
หมายเหต ผใชสามารถเขาไปดาวนโหลดโปรแกรม Adobe Dreamweaver เวอรชนใหม ไดท
เวบไซด http://www.adobe.com/sea/downloads/
2) ทาการ Extract ไฟลโปรแกรม Adobe Dreamweaver CS5.5 และคลกทปม Next ตามรปท
4.3(ก) กจะไดหนาตางในรปท 4.3(ข) จากนนกดปม ACCEPT เพอยอมรบเงอนไขลขสทธ
ของโปรแกรม กจะไดหนาตางในรปท 4.3 (ค)
3) เลอกรายการ “Install this product as a trial.” ตามรปท 4.3 (ค) เพอใชงานแบบ 30 วน
และกดปม Next กจะไดหนาตางในรปท 4.3 (ง) เพอทาการเลอกทอยสาหรบตดตงโปรแกรม
และกดปม INSTALL ตามรปท 4.3 (ง) เพอเรมตดตงโปรแกรม
4) เมอระบบตดตงโปรแกรมเสรจ กจะแสดงหนาตาง “Thank You” ตามรปท 4.3 (จ) จากนน
ใหกดปม DONE กจะไดหนาตางในรปท 4.3 (ฉ) ซงเตอนวาสามารถใชงานไดอยางถกตอง
ภายใน 30 วน
5) กดปม START TRIAL ในรปท 4.3 (ฉ) เพอทดสอบการใชงานโปรแกรม Adobe Dreamweaver
CS5.5 กจะไดหนาตางเรมตนใชงานโปรแกรมนตามรปท 4.4
114
(ก) (ข)
(ค) (ง)
(จ) (ฉ)
รปท 4.3 ขนตอนการตดตงโปรแกรม Adobe Dreamweaver CS5.5
115
รปท 4.4 หนาตางเรมตนใชงานโปรแกรม Adobe Dreamweaver CS5.5
4.2.3 แนวทางการเขยนโปรแกรมเวบไซตภาษา PHP รวมกบ SCILAB
การสรางเวบไซตโดยใชภาษา PHP รวมกบโปรแกรม SCILAB จะตองตดตงโปรแกรม SCILAB
ไวท C:\WINDOWS จงสามารถเรยนใชงานโปรแกรม SCILAB ผานบรรทดคาสง (command
line) ของดอส (DOS) ได ซงเปนหวใจสาคญททาใหสามารถใชฟงกชน exec ของภาษา PHP ได
โดยผเขยนสรปโคดไดดงน
1 $path=$_SERVER["SystemRoot"];
2 $com = SCILAB -nwni -nb -f Parameter
3 exec($com);
เมอ $path หมายถงทอยของสารบบหลกคอ “C:\WINDOWS”, $com คอตวแปรสาหรบบนทก
คาโคดประมวลผลคาสง (command), SCILAB หมายถงทอยของโปรแกรม Scilex.exe, -nwni
หมายถงไมตองแสดงหนาตางของโปรแกรม SCILAB, -nb หมายถงไมแสดงขอความตอนรบ, -f
หมายถงสงใหโปรแกรม SCILAB ประมวลผลไฟลสครปต, Parameter หมายถงไฟลสครปตท
สงใหโปรแกรม SCILAB ประมวลผล, และ exec หมายถงคาสงประมวลผลโคดผานบรรทดคาสง
116
4.3 เรมตนกบการเขยนภาษา PHP
4.3.1 การแสดงผล
คาสงทนยมใชการแสดงผลลพธของ PHP คอคาสง print และ echo ซงมรายละเอยดดงน
ฟงกชน print
ฟงกชน print มรปแบบการใชงานคอ
print(ผลลพธ); หรอ print ผลลพธ;
กจะแสดงคาวา “ผลลพธ” ออกหนาจอ เชน ถาใชคาสง
print("SCILAB");
print "SCILAB";
จะไดคาวา SCILAB ปรากฏทหนาจอ
ฟงกชน echo
ฟงกชน echo นยมนามาใชมากสด เพราะทางานไดรวดเรวกวาฟงกชน print เนองจากคาสงน
ไมมการตรวจสอบขอผดพลาดใดๆ รปแบบการใชงานคาสง echo มดงน
echo("ผลลพธ"); หรอ echo "ผลลพธ";
กจะแสดงคาวา “ผลลพธ” ออกหนาจอ เหมอนกบฟงกชน print
4.3.2 การเขยนคอมเมนต
การคอมเมนต (comment) หรอการเขยนคาอธบาย คอการแทรกขอความเขาไปในตวโปรแกรม
(เพอใชอธบายตวโปรแกรมซงทาใหงายตอการทาความเขาใจและแกไขโปรแกรมในภายหลง) แตจะ
ไมถกนาไปประมวลผล การเขยนคอมเมนตในภาษา PHP จะมลกษณะเดยวกบภาษาจาวาสครปต
(JavaScript) ซงม 2 รปแบบคอ
117
การเขยนคอมเมนตแบบหนงบรรทดจะใชเครองหมายทบสองอน (double slash) “ // ” นาหนา
ขอความทตองการคอมเมนตทละบรรทด เชน //Comment PHP
การเขยนคอมเมนตแบบหลายบรรทดจะใชเครองหมาย /* เปนจดเรมตน และเครองหมาย */
เปนจดสนสด ของการคอมเมนต กลาวคอขอความทงหมด (หลายบรรทดกได) ทอยภายใน
เครองหมาย /* และ */ จะไมถกนาไปประมวลผล ตวอยางเชน
/* This is a comment for PHP.
This is the multiple-line comment. */
4.3.3 การกาหนดตวแปร
การเขยนโปรแกรม PHP จะเหมอนกบการเขยนโปรแกรมดวยภาษาอนๆ ซงจะตองมการกาหนด
ตวแปรเพอจองพนทในหนวยความจาสาหรบเกบขอมล ในทางปฏบตการกาหนดตวแปรทใชใน PHP
มขอกาหนดดงน
ตวแปรทกตวตองขนตนดวยเครองหมาย “$” และตามดวยตวอกษร (หามขนตนดวยตวเลข)
หรอเครองหมายสญประกาศ (underscores) “ _ ” (สญลกษณอนหามใช) เชน $name,
$data และ $_file เปนตน
ตวแปรใน PHP ไมจาเปนตองระบแบบชนดขอมล (data type) เพราะตวแปรแตละตวสามารถ
เกบขอมลชนดใดกได
โปรแกรม PHP จะพจารณาถงความแตกตางของตวอกษรตวพมพใหญกบอกษรตวพมพเลก
ดงนนตวแปรทมชอเหมอนกนแตใชตวอกษรตางกนจะถอวาเปนตวแปรคนละตวกน เชน $abc $ABC และ $aBC ถอเปนคนละตวกน
หมายเหต การกาหนดคาใหกบตวแปรชนดสายอกขระ (string) ตองกาหนดใหอยภายในเครองหมาย
อญประกาศเดยว “ '...' ” หรอเครองหมายอญประกาศ “ "..." ” เชน $name = "SCILAB"
ในขณะทการกาหนดคาใหกบตวแปรทเปนตวเลข สามารถระบคาเขาไปไดโดยไมตองใสเครองหมาย
อญประกาศเดยว (หรอเครองหมายอญประกาศ) เชน $number = 12
4.3.4 การใชเครองหมายอญประกาศเดยวและเครองหมายอญประกาศ
การกาหนดคาใหกบตวแปรชนดสายอกขระใน PHP สามารถใชไดทงเครองหมายอญประกาศเดยว
“ '...' ” หรอเครองหมายอญประกาศ “ "..." ” อยางไรกตามเครองหมายทงสองนมขอแตกตาง
เลกนอยในเรองของการแสดงผล กลาวคอถาตองการแสดงคาของตวแปรออกหนาจอผานทางคาสง
118
print หรอ echo จะตองใชรวมกบเครองหมายอญประกาศ ถาใชกบเครองหมายอญประกาศเดยว
จะไมสามารถแสดงคาของตวแปรได แตจะแสดงชอของตวแปรแทน ใหพจารณาชดคาสงตอไปน
<?php
$sin = "SingleQuote";
$dou = "DoubleQuote";
echo 'This test is $sin และ $dou';
echo "This test is $sin และ $dou"; ?>
ผลลพธทไดคอ
This test is $sin และ $dou This test is SingleQuote และ DoubleQuote
ซงจะเหนไดวาคาของตวแปรจะถกแสดงผลออกมา กตอเมอคาสง echo ใชรวมกบเครองหมาย
อญประกาศเทานน
4.3.5 การนยามตวแปรลวงหนา
ตวแปรทถกนยามลวงหนา (predefined variable) คอตวแปรทโปรแกรม PHP ไดสรางไวลวงหนา
เพอความสะดวกและเปนคาพนฐานสาหรบการใชงาน โดยทวไปตวแปรเหลานจะเกบขอมลสาคญ
บางอยางไวและมลกษณะเปนอารเรย (array) ในทนจะกลาวถงตวแปรทถกนยามลวงหนาทจาเปน
ตอการใชงานเพอตดตอกบโปรแกรม SCILAB เทานน ผสนใจศกษารายละเอยดเพมเตมไดทไฟล
phpinfo.php ไปทหวขอ PHP Variables (อยในสารบบชอ C:\AppServ\www)
$_SERVER
ตวแปร $_SERVER ทใชเกบขอมลทเกยวของกบการเชอมตอระหวางลกขาย (client) และเครอง
แมขาย (server) เชน ชอโฮสต (host), เสนทาง (path) ในการเกบขอมล, และวธ (method) ใน
การสงขอมล ตวแปร $_SERVER เรมใชงานตงแต PHP 4.1.0 เปนตนมา (เวอรชนกอนหนาน
จะใชชอตวแปรนวา $HTTP_SERVER_VARS) การอางถงขอมลในตวแปร $_SERVER จะใช
รปแบบคอ
$_SERVER[‘variable_name’]
119
เมอ variable_name คอขอมลทผใชตองการทราบ ซงการใชงาน PHP เพอตดตอกบโปรแกรม
SCILAB จะมการใชงานฟงกชนตอไปน
$_SERVER[‘SystemRoot’] เกบชอสารบบทเกบไฟลของระบบปฏบตการ
$_SERVER[‘DOCUMENT_ROOT’] เกบสารบบสทเดม (home directory) ซงคอสารบบ
ทเกบไฟลเวบไซตทผใชสรางขนทงหมด
4.3.6 แบบชนดขอมล
แบบชนดขอมล (data type) พนฐานในโปรแกรม PHP มดงน
แบบชนดขอมล คาอธบาย
ตรรกศาสตร คาทางตรรกะ มคาเปนจรง (True) หรอ เทจ (False)
เลขจานวนเตม เลขจานวนเตมบวก จานวนเตมลบ หรอศนย
จานวนจรง (float หรอ double) เลขทศนยม
สายอกขระ (string) ตวอกษรทงหมด
4.3.7 ตวดาเนนการเลขคณต
ตวดาเนนการเลขคณต (arithmetic operator) พนฐานในโปรแกรม PHP มดงน
ตวดาเนนการ ความหมาย ตวอยาง ($a=20 และ $b=3)
+ การบวก (addition) $a + $b = 23
- การลบ (subtraction) $a - $b = 17
* การคณ (multiplication) $a * $b = 60
/ การหาร (division) $a / $b = 6.66
% มอดลส (modulus) เปนการหาเศษทไดจากหาร $a % $b = 2
4.3.8 ตวดาเนนการเพม/ลดคา
ตวดาเนนการเพม/ลดคา (incrementing/decrementing operator) หมายถงตวดาเนนการ ++ หรอ -- ซงตองการตวถกดาเนนการเพยงตวเดยวและตองเปนตวแปรเทานน โดยจะเพมคาของตวแปร
หนงคาหรอลดคาของตวแปรหนงคา ตามลาดบ การใชงานมทงระบไวหนาตวแปรหรอหลงตวแปร
ซงจะมความหมายตางกน (เหมอนกบวธการใชในภาษาซ) ดงรายละเอยดในตอไปน
120
ตวอยางการใชงาน ผลลพธ
++$a คาสงนจะทาการเพมคาของตวแปร $a ขน 1 คากอน นนคอ $a = $a + 1
แลวจงนาตวแปร $a ไปประมวลผลในชดคาสง
$a++ คาสงนจะนาตวแปร $a ไปประมวลผลในชดคาสงใหเรยบรอยกอน แลวจงเพม
คาของตวแปร $a ขน 1 คา
--$a คาสงนจะทาการลดคาของตวแปร $a ขน 1 คากอน นนคอ $a = $a - 1
แลวจงนาตวแปร $a ไปประมวลผลในชดคาสง
$a-- คาสงนจะนาตวแปร $a ไปประมวลผลในชดคาสงใหเรยบรอยกอน แลวจงลด
คาของตวแปร $a ขน 1 คา
4.3.9 ตวดาเนนการเปรยบเทยบ
ตวดาเนนการเปรยบเทยบ (comparison operator) เปนตวดาเนนการทใชในการตรวจสอบความ
สมพนธระหวางคาของตวแปร โดย
ถาความสมพนธเปนจรง ผลลพธทไดมคาเทากบ True (เปนจรง) หรอมคาทางตรรกะเทากบ 1
ถาความสมพนธเปนเทจ ผลลพธทไดมคาเทากบ False (เปนเทจ) หรอมคาทางตรรกะเทากบ 0
(แตจะไมแสดงผลลพธใดๆ ออกหนาจอ)
ตวดาเนนการ ชอ ตวอยาง คาอธบาย
== เทากบ (equal) $a == $b ใหคา True เมอ $a มคาเทากบ $b
=== เหมอนกบ
(identical) $a === $b
ใหคา True เมอ $a มคาเทากบ $b และตอง
เปนขอมลชนดเดยวกน
!= หรอ <> ไมเทากบ $a != $b ใหคา True เมอ $a มคาไมเทากบ $b
!== ไมเหมอนกบ $a !=== $b ใหคา True เมอ $a มคาไมเทากบ $b หรอเมอ
เปนขอมลคนละชนดกน
< นอยกวา $a < $b ใหคา True เมอ $a มคานอยกวา $b
> มากกวา $a > $b ใหคา True เมอ $a มคามากกวา $b
<= นอยกวา
หรอเทากบ $a <= $b ใหคา True เมอ $a มคามากกวาหรอเทากบ $b
>= มากกวา
หรอเทากบ $a >= $b ใหคา True เมอ $a มคานอยกวาหรอเทากบ
$b
121
4.3.10 ตวดาเนนการทางตรรกะ
ตวดาเนนการตรรกะ (logical operator) เปนตวดาเนนการทใชเชอมความสมพนธระหวางคาของ
ตวแปรทเกดขนจากตวดาเนนการสมพนธ โดย
ถาความสมพนธสอดคลองกนผลลพธทได จะมคาเทากบ True หรอมคาทางตรรกะเทากบ 1
ถาความสมพนธไมสอดคลองกนผลลพธทได จะมคาเทากบ False หรอมคาทางตรรกะเทากบ 0
ตวดาเนนการตรรกะทใชในโปรแกรม PHP มดงน
ตวดาเนนการ ชอ ตวอยาง คาอธบาย
&& หรอ and และ $a && $b ใหคา True กตอเมอ $a และ $b เปนจรงทงค
(และในทางตรงกนขาม)
|| หรอ or หรอ $a || $b
ใหคา True เมอ $a หรอ $b ตวใดตวหนงเปนจรง
หรอเปนจรงทงสองตว มฉะนนจะใหคา False
(และในทางตรงกนขาม)
xor exclusive
or $a xor $b
ใหคา True เมอ $a หรอ $b ตวใดตวหนงเปนจรง
เทานน แตจะใหคา False เมอทงสองตวเปนจรง
หรอเทจ เหมอนกน
! นเสธ !$a ใหคาตรงกนขามกบ $a ถา $a เปนจรงจะไดคา
False แตถา $a เปนเทจจะไดคา True
4.3.11 การทดสอบเงอนไข
การทดสอบเงอนไขมความจาเปนมากสาหรบการเขยนโปรแกรมคอมพวเตอรทซบซอน เพอให
โปรแกรมทเขยนขนมาสามารถทางานไดถกตองตรงตามความตองการ หนงสอเลมนจะอธบาย
คาสงทดสอบเงอนไข 2 คาสงคอ คาสง if และ switch ซงมหลกการใชงานดงน
คาสง if
คาสง if จะทาการทดสอบเงอนไขความสมพนธวาเปนจรงหรอเทจ โดยมรปแบบการใชงานคอ
if (expression) { instruction_1;
instruction_n;
}
122
กลาวคอถาผลการทดสอบเงอนไขในนพจนเปนจรง โปรแกรม PHP จะทาคาสงทงหมดทอยระหวาง
เครองหมายปกกาเปด { และเครองหมายปกกาปด } แตถาผลการทดสอบเปนเทจ โปรแกรม PHP
จะไมทาคาสงทงหมดทอยระหวางเครองหมายปกกา { ... } ตวอยางเชน
<?php
$a=200;
if ($a) {
echo 'คาของ $a คอ : ' .$a; }
?>
ซงใหผลลพธเปน
คาของ $a คอ : 200
คาสง if ยงสามารถนาไปใชในการตดสนใจทซบซอนมากขนได โดยการใชงานรวมกบ
คาสง else ซงมรปแบบการใชงานดงน
กลาวคอโปรแกรม PHP จะทาชดคาสง instructions_set1 เมอผลการทดสอบเงอนไขใน
นพจนเปนจรง แตจะทาชดคาสง instructions_set2 ถาผลการทดสอบเปนเทจ ตวอยางเชน
<?php
$a = 200; $b = 100; if($a < $b){
echo "คาของ $a < $b ";
if expression {
instructions_set1;
}
else {
instructions_set2;
}
123
}else{
echo "คาของ $a > $b "; } ?>
ซงใหผลลพธเปน
คาของ 200 > 100
นอกจากนในการใชงานทมการตดสนใจทซบซอนมากยงขน ผใชกสามารถใชงานคาสง if
รวมกบ elseif ได โดยมรปแบบการใชงานดงน
กลาวคอถาผลการทดสอบเงอนไขในนพจน expression_1 เปนจรง โปรแกรม PHP จะทา
ชดคาสง instructions_set1 แตถาผลการทดสอบเปนเทจ โปรแกรม SCILAB กจะทา
การทดสอบเงอนไขในนพจน expression_2 ตอไปทนท โดยถาผลการทดสอบในนพจน
expression_2 เปนจรง โปรแกรม PHP กจะทาชดคาสง instructions_set2 แตถา
ผลการทดสอบเปนเทจ กจะทาชดคาสง instructions_set3
คาสง switch
คาสง switch เปนการตดสนใจแบบหลายทางเลอก โดยจะตรวจสอบเงอนไขตางๆ ตามทกาหนด
ถาเงอนไขใดเปนจรงกจะทาชดคาสงทอยภายในเงอนไขนน แลวจงออกจากคาสง switch รปแบบการใชงานคาสง switch มดงน
if expression_1 {
instructions_set1;
}
elseif expression_2 {
instructions_set2;
}
else {
instructions_set3;
}
124
นนคอเรมตนคาสง switch จะตรวจสอบเงอนไขวาตวแปร var มคาเทากบเทาใด (ตามทกาหนด
ใน case) เชน ถา var = value1 โปรแกรม PHP จะทาชดคาสง instructions_set1
และถา var = value2 กจะทาชดคาสง instructions_set2 แตถา var มคาไมเทากบ
คาใดๆ ใน case โปรแกรม PHP จะทาชดคาสง instructions_set3 ตวอยางเชน <?php
$num = 100;
switch ( $num )
{
case 100 :
echo "Number1 = $num";
break;
case 50 :
echo "Number2 = $num";
break;
default :
echo "Number3 = $num";
break;
}
?>
ซงใหผลลพธคอ
Number1 = 100
switch (var) {
case value1:
instructions_set1;
break;
case value2:
instructions_set2;
break;
default:
instructions_set3;
break;
}
125
4.3.12 การทาซา
บางครงในการเขยนโปรแกรมมความจาเปนตองคานวณชดคาสงบางอยางซาเปนจานวนหลายรอบ
ตามทกาหนด ซงในกรณนการใชคาสงวนซาจงมความจาเปนมาก โดยโปรแกรม PHP ไดเตรยม
คาสงสาหรบการวนซาไวอย 3 คาสงคอ คาสง for, while และ do-while ซงมหลกการใช
งานดงน
คาสง for
คาสง for เหมาะสาหรบการใชงานทตองการใหโปรแกรมทาซาชดคาสงเดมทอยภายในลป (loop)
เปนจานวนรอบตามทกาหนดไวในนพจน (expression) โดยมรปแบบการใชงานดงน
กลาวคอโปรแกรมจะทาซาคาสง (instruction) ทงหมดภายในลปเปนจานวนรอบตามทกาหนดโดย
ตวแปรทเปนไปตามเงอนไขของนพจน ตวอยางการใชงานเชน
<?php
for($i=1; $i<=5; $i++) {
echo "Hello! ".$i."<br>"; //การเชอมขอความกบตวแปรจะใชเครองหมายจด .
}
?>
ชดคาสงนหมายความวาเมอเรมตนใชงาน ตวแปร $i จะมคาเทากบ 1 แลวพมพผลออกหนาจอ
เปนคาวา “Hello! 1” และทาการขนบรรทดใหมดวยคาสง <br> จากนนทาการวนซาโดยใชตว
แปร $i เปนตวนบจานวนซาจากคา 1 เพมขนทละ +1 จนถงคา 5 ซงผลลพธของการประมวลผล
ชดคาสงนคอ
for (คาเรมตน; คาสนสด; คาสะสม) {
instruction_1;
instruction_n;
}
126
Hello! 1
Hello! 2
Hello! 3
Hello! 4
Hello! 5
คาสง while คาสง while มลกษณะการทางานคลายกบคาสง for เพยงแตคาสง while จะมการทดสอบ
เงอนไขตามทกาหนดในนพจนทกรอบของการวนซา กลาวคอถาผลการทดสอบใหคาตรรกะเปนจรง
โปรแกรมจะทาซาชดคาสงภายในลปนนตออกหนงรอบ แตถาผลการทดสอบใหคาตรรกะเปนเทจ
โปรแกรมจะยกเลกการทางานชดคาสงภายในลปนนทนท คาสง while มรปแบบการใชงานดงน
ตวอยางเชน
<?php
$i = 1; while ($i <= 5) { echo "Hello! ".$i ."<br>";
$i++;
} ?>
ชดคาสงนใหผลลพธเทากบตวอยางของการใชคาสง for เพยงแตการใชคาสง while ตองกาหนด
คาเรมตนของตวแปร $i กอน เพอจะไดนาคา $i มาเปรยบเทยบกบคา 5 ตามเงอนไขทกาหนด
ดงนนสรปไดวาคาสง while และ for มลกษณะการทางานคลายกนมาก เพยงแตคาสง while
จะมการทดสอบเงอนไขกอนตดสนใจวาจะสงใหโปรแกรมทางานชดคาสงภายในลปหรอไม
while (expression) {
instruction_1;
instruction_n;
}
127
คาสง do-while
คาสง do-while มลกษณะการทางานเหมอนกบคาสง while เพยงแตคาสง do-while จะทา
ชดคาสงทกาหนดกอน แลวจงทาการตรวจสอบเงอนไขทหลง ถาเงอนไขเปนจรงกจะกลบมาทางาน
ในชดคาสงเดมอกครง ทาเชนนไปเรอยๆ จนกระทงเงอนไขจะเปนเทจ รปแบบการใชงานคอ
ตวอยางเชน
<?php
$i = 1; do { echo "Hello! ".$i ."<br>"; $i++; } while ($i <= 5)
?>
ซงจะใหผลลพธดงนเทากบตวอยางของการใชคาสง for และ while
4.4 ฟงกชนและการใชงาน
ฟงกชน (function) คอกลมคาสงทถกรวบรวมไวดวยกนเพอใหการทางานตามทกาหนดหรอสราง
เปนคาสงใหมขนมาใชงานเพอความสะดวกและลดความซาซอนของโปรแกรมหลก โดยทวไป PHP
มฟงกชนสองแบบคอ ฟงกชนในตว (built-in function) ซงเปนฟงกชนทสามารถเรยกใชไดทนท
(เชน echo, fgets, fopen และ date) และฟงกชนทผใชสรางขนมา (user-defined function)
ในบทนจะอธบายวธการสรางฟงกชนใหมขนมาใชงาน การเรยกใชฟงกชน และฟงกชน
สาเรจรปทนยมใชงาน ใหพจารณาตวอยางตอไปนสาหรบการเขยนโปรแกรมแบบสรางฟงกชน
ขนมาใชงาน
do {
instruction_1;
instruction_n;
} while (expression);
128
<?php
hello("Hello", 2);
hello("Project", 3);
function hello($txt, $n) { for($i=1; $i<=$n; $i++) { echo "$txt $i <br>";
} } ?>
โปรแกรมนจะมการสรางฟงกชน hello ขนมา ซงจะแสดงผลขอความ $txt เปนจานวน $n
ครงออกหนาจอ ซงผลลพธของโปรแกรมนคอ
Hello! 1
Hello! 2
Project! 1
Project! 2
Project! 3
จะเหนไดวาการสรางฟงกชนขนมาใชงานทาใหสามารถแสดงผลซากนไดดวยคาสงเพยง
คาสงเดยว เชน ตองการใหแสดงคาวา Hello จานวน 2 ครง และ Project จานวน 3 ครง
กใชเพยงคาสง hello("Hello", 2) และ hello("Project", 3) มฉะนนจะตองเขยนคาสงแสดงผลลพธซาหลายๆ ครง ดงน
<?php
echo "Hello 1"; echo "Hello 2"; echo "Project 1"; echo "Project 2"; echo "Project 3"; ?>
129
4.4.1 การสรางฟงกชน
ถาตองการสรางฟงกชนใหมขนมาใชงานในโปรแกรม PHP โดยมลกษณะการทางานเหมอนกบ
ฟงกชนในตว กลาวคอมการสงผานคาของตวแปรตางๆ ไปใหกบฟงกชน จากนนฟงกชนกจะนาคา
ของตวแปรเหลานมาประมวลผลตามคาสงทมอยภายในตวฟงกชน แลวกสงผลลพธทไดออกมาจาก
ตวฟงกชน ขอดของการสรางฟงกชนใหมคอ ชวยทาใหการดแลแกไขโปรแกรมทาไดงายขน (เชน
เมอตองการแกไขชดคาสงบางอยางในโปรแกรม ถาสรางเปนฟงกชนกสามารถแกไขไดโดยงายเพยง
จดเดยว แตถาไมมการสรางฟงกชนกตองแกไขใหครบทกจดทมการใชงานชดคาสงนน ซงอาจเกด
ขอผดพลาดไดงาย) ดงนนในสวนนจะอธบายการสรางฟงกชนลกษณะตางๆ ดงน
ฟงกชนทไมมการรบคาอนพต
ฟงกชนทไมมการรบคาอนพตจะมรปแบบคอ
function FuncName() { instruction_set;
}
ตวอยางเชน พจารณาโปรแกรมคานวณพนทสเหลยมผนผา (แบบไมรบคาอนพต) ดงน
<?php
area();
function area() {
$a=3; $b=5;
echo $a * $b;
}
?>
ซงจะพบวาฟงกชน area ไมมการรบคาอนพต แตจะกาหนดคาใหกบตวแปรอยภายในฟงกชน
เพราะฉะนนฟงกชนแบบนจะเปนฟงกชนทไมยดหยนในการใชงาน
ฟงกชนทมการรบคาอนพต
ฟงกชนทมการรบคาอนพตจะมรปแบบคอ
130
function FuncName(input1, ..., inputN) { instruction_set;
}
จะเหนไดวาฟงกชนแบบนมการรบคาตวแปรอนพต input1 ถง inputN เขาไปประมวลผลใน
ชดคาสง instruction_set ตวอยางเชน พจารณาโปรแกรมคานวณพนทสเหลยมผนผา
(แบบรบคาอนพต) ดงน
<?php
echo area(5, 10);
function area($a, $b) { return $a * $b; } ?>
ในทนฟงกชน area จะรบคาตวแปรอนพต $a และ $b เขาไปคานวณหาคาพนทสเหลยมและ
สงผลลพธทไดกลบดวยคาสง return นอกจากนการแสดงผลลพธของฟงกชนสามารถใชคาสง
แสดงผล (echo หรอ print) ตามดวยชอฟงกชนทระบคาอารกวเมนตไดเลย
4.4.2 ฟงกชนทเกยวกบสายอกขระ
โดยทวไปการสรางเวบไซตเพอตดตอกบ SCILAB จะใชฟงกชนทเกยวของกบการจดการสายอกขระ
จานวนมาก เนองจากการแสดงผลลพธทสงมาจากโปรแกรม SCILAB จะมรปแบบไมคงทและไม
สามารถนามาแสดงผลบนเวบเพจไดทนท จาเปนตองมการจดรปแบบใหเหมาะสมกอน ในทนจะ
อธบายเฉพาะฟงกชนทนาสนใจและเกยวของกบการใชงานรวมกบ SCILAB ดงน
ฟงกชน strlen
ฟงกชน strlen ใชหาความยาวของสายอกขระ (string) หรอนบจานวนตวอกษรในสายอกขระ
(นบชองวางเปน 1 ตวอกษรดวย) โดยรปแบบการใชเรยกงานคอ
strlen("สายอกขระ")
131
ตวอยางเชน
<?php
echo strlen("Hello world!");
?>
จะใหผลลพธเทากบ 12 (นนคอมตวอกษรทงหมด 12 ตว)
ฟงกชน explode
ฟงกชน explode ใชแยกสายอกขระออกเปนสายอกขระยอยๆ ดวยการกาหนดสายอกขระหรอ
สญลกษณทจะใชแยก ผลลพธทไดจะถกเกบอยในรปแบบของอารเรย รปแบบการใชเรยกงานคอ
explode("สญลกษณทใชแยก", "สายอกขระ")
ตวอยางเชน
<?php
$str = "Hello world.";
print (explode(" ", $str));
?>
ในทนจะใชชองวาง (space) ในการแบงแยกสายอกขระ ซงผลลพธทไดคอ อารเรย[0] จะเกบคา
เทากบ "Hello" และอารเรย[1] จะเกบคาเทากบ "world."
ฟงกชน implode หรอ join
ฟงกชนนจะทางานตรงกนขามกบฟงกชน explode กลาวคอเปนการนาสายอกขระยอยมารวมกน
เปนสายอกขระเดยว ตามสญลกษณทใชรวม รปแบบการใชเรยกงานคอ
implode("สญลกษณทใชรวม", "อารเรยของสายอกขระ")
ตวอยางเชน
132
<?php
$arr = array('Hello', 'World!', 'SCILAB', '&', 'PHP!');
echo implode(" ", $arr);
?>
ในทนจะใชชองวางในการรวมสายอกขระแตละตวทอยในอารเรย ซงจะใหผลลพธคอ
Hello World! SCILAB& PHP!
ฟงกชน strstr
ฟงกชน strstr ใชตดเอาเฉพาะสายอกขระทเรมตนดวยสายอกขระยอยทกาหนดจนถงตวอกษร
สดทายของสายอกขระตนฉบบ รปแบบการใชเรยกงานคอ
strstr("สายอกขระยอย", "สายอกขระตนฉบบ")
ตวอยางเชน
<?php
echo strstr("Hello world!", "w"); ?>
ชดคาสงนจะตดเอาสายอกขระทเรมตนดวยตวอกษร "w" จนถงตวอกษรสดทายของคาวา "Hello
world!" เพราะฉะนนในทนจะไดผลลพธคอ world!
ฟงกชน substr
ฟงกชน substr ใชตดสายอกขระเหมอนกบฟงกชน strstr แตสามารถกาหนดความยาวของ
สายอกขระทตองการได โดยมรปแบบการใชเรยกงานคอ
substr("สายอกขระตนฉบบ", ตาแหนงเรมตน, จานวนตวอกษรทตองการ)
133
ตวอยางเชน
<?php
echo substr("Hello world!", 6, 5); ?>
ชดคาสงนจะตดเอาตวอกษรลาดบท 6 จนถงลาดบท 11 (รวม 5 ตวอกษร) จากคาวา "Hello
world!" ดงนนในทนจะไดผลลพธคอ world
ฟงกชน ltrim, rtrim และ trim
ฟงกชนนใชสาหรบการตดชองวางทอยดานซาย ดานขวา และทงสองขางของสายอกขระออกทงหมด
มรปแบบการเรยกใชงานคอ
ltrim("สายอกขระ") rtrim("สายอกขระ") trim("สายอกขระ")
ตวอยางเชน
<?php
$str = " Hello ";
echo ltrim($str)."<br>";
echo rtrim($str)."<br>";
echo trim($str)."<br>";
?>
ซงจะใหผลลพธคอ
"Hello "
" Hello"
" Hello "
134
ฟงกชน stripslashes
ในการสงขอมลผานทางฟอรมภาษา PHP หรอเพมขอมลลงในฐานขอมล ตวอกษรบางประเภท เชน
เครองหมายอญประกาศ ("..."), อญประกาศเดยว ('...') และคา NULL จะถกใสดวยเครองหมาย
ทบกลบ (backslash) เพอใหระบความหมายในการเกบขอมล ดงนนในการนาขอมลเหลานมาใช
งาน จงจาเปนตองตดเครองหมายทบกลบออกจากขอมลกอน โดยใชฟงกชน stripslashes
ดงน
stripslashes("สายอกขระ")
ตวอยางเชน
echo stripslashes('H\xa0ello');
ฟงกชนนจะทาการตดเครองหมายทบกลบออก และแสดงขอความ “Hxa0ello” เทานน
4.4.3 ฟงกชนทเกยวกบตวเลข
ในทางปฏบตผลลพธทไดจากการคานวณดวยโปรแกรม SCILAB บางครงไมสามารถนาไปใชได
ทนท เพราะอาจอยในรปแบบของรหสไบนารหรอแอสก ดงนนจงจาเปนตองจดรปแบบของผลลพธ
ทเปนตวเลขเหลานกอนทจะนาไปแสดงผล ใน PHP มฟงกชนทใชในการจดรปแบบของตวเลขม
หลายฟงกชน ซงในทนจะกลาวเฉพาะฟงกชนสาคญๆ ทใชในการทางานรวมกบโปรแกรม SCILAB
เทานน
ฟงกชน number_format
ฟงกชน number_format มรปแบบการเรยกใชงานดงน
number_format(Fnum [, Dum ])
หรอ
number_format(Fnum, Dnum, Dpoint, Ssep)
135
เมอ Fnum คอเลขจานวนจรง, Dnum คอเลขจานวนเตมทใชกาหนดจานวนตวเลขหลงจดทศนยม,
Dpoint คอเครองหมายทแทนจดทศนยม, และ Ssep คอเครองหมายทใชแยกหลกพน เชน
<?php
$num = 2553.500; echo number_format($num, 2, ".", "," ); ?>
จะใหผลลพธเทากบ 2,553.50 (มเลขหลงจดทศนยมเพยงสองตาแหนง)
4.5 การจดการไฟล
ในสวนนจะอธบายการสรางไฟล การอานไฟล การลบไฟล และการใชงานโปรแกรมภายนอก ดงน
4.5.1 การสรางไฟล
การสรางไฟลสาหรบเขยนไฟลสครปตของโปรแกรม SCILAB ทาไดโดยอาศยฟงกชน file_ put_contents ซงมรปแบบการใชงานดงน
file_put_contents(filename, data)
โดย filename คอชอไฟลทตองการสราง (ระบทอยของไฟลดวย) และ data คอขอมลสาย
อกขระทตองการเขยนลงในไฟล ตวอยางเชน
echo file_put_contents("test.txt", "This is test file");
จะใหผลลพธเปนไฟล test.txt ในสารบบทกาลงใชงาน โดยมขอความ This is test
file ปรากฏอยในไฟล test.txt
4.5.2 การอานไฟล
การอานไฟลออกมาเปนสายอกขระเพอนาคามาแสดงในฟอรมหรอหนาเวบไซตนน สามารถทาได
โดยใชฟงกชน file_get_contents ซงมรปแบบการใชงานคอ
136
file_get_contents(filename)
เมอ filename คอชอไฟลทตองอานขอมล ตวอยางเชน
echo file_get_contents("test.txt");
จะใหผลลพธเปนขอมลทอยในไฟล test.txt ในสารบบทกาลงใชงาน
4.5.3 การลบไฟล
การลบไฟลใน PHP จะใชฟงกชน unlink ซงมรปแบบการใชงานคอ
unlink(filename)
โดยถาการลบไฟลสาเรจจะใหผลลพธเปนคาบลน True แตถาไมสาเรจกจะใหผลลพธเปน False
4.5.4 การใชงานโปรแกรมภายนอก
การเรยกใช (หรอสงประมวลผล) โปรแกรมภายนอกทาไดดวยการใชฟงกชน exec, system
หรอ shell_exec ซงมลกษณะการทางานคลายกน แตจะใชงานแตกตางกนเพอความสะดวก
ในการใชงานและตรงตามรปแบบของผลลพธทตองการ ในทนจะอธบายเพยงฟงกชน exec เทานน
ซงมรปแบบการใชงานคอ
exec($command [, array & $output [, int & $return_var]] );
เมอ $command คอคาสงทตองการใชงาน, $output คอตวแปรทใชเกบคาของผลลพธทไดจากคาสง $command, และ return_var คอคาทคาสง $command ใหคนกลบมา ตวอยางเชน <?php
exec(test.sci, $output);
print_r($output); //การแสดงคาทเปน array ตองใชคาสง print_r แทน echo
?>
137
ชดคาสงนจะประมวลผลไฟลของโปรแกรม SCILAB ทชอวา test.sci แลวนาผลลพธทอยใน
รปของอารเรยไปเกบไวในตวแปร output จากนนจงนามาแสดงผลดวยคาสง print_r
4.6 สรปทายบท บทนไดสรปประวตความเปนมาของภาษา PHP โครงสรางทวไป คาสงพนฐานของภาษา PHP
และการจดการไฟล ซงจะเปนแนวทางในการนาไปประยกตใชงานรวมกบโปรแกรม SCILAB
สาหรบใชสรางสอการเรยนการสอนทจะอธบายในบทตอไป
4.7 แบบฝกหดทายบท 1. จงอธบายการใชงานคาสง stripslashes มาพอสงเขป
2. จงอธบายการใชงานคาสง file_put_contents(), file_get_contents() และ unlink()มาพอสงเขป
3. จงเขยนโปรแกรมบวกเลข 1 ถง 100 โดยใชคาสง for
4. จงเขยนโปรแกรมตดเกรดจานวน 4 เกรด คอ A, B, C และ D
138
139
บทท 5 การสรางสอการสอนผานเวบไซต
ในบทนจะแสดงตวอยางวธการสรางสอการสอนผานเวบไซตโดยใชโปรแกรมภาษา PHP รวมกบ
โปรแกรม SCILAB ซงประกอบดวยการบวก/ลบ/คณ/หาร ของเลขสองจานวน การหาดเทอร
มแนนตและอนเวอรสของเมทรกซ การพสจนสมบตของเมทรกซ การหาคาลอการทมฐานใดๆ
การบวกและลบสมการพหนาม และการวาดกราฟสองมต เพอเปนแนวทางใหผอานสามารถนาไป
พฒนาตอยอดหรอประยกตใชงานดานอนได
กอนการเขยนโปรแกรม PHP เพอตดตอกบโปรแกรม SCILAB ผใชจะตองตดตง
โปรแกรม SCILAB ทสารบบ C:\Windows\ และสรางโฟลเดอรชอวา phptoscilab ไวในสารบบ
C:\AppServ\www เพอเกบไฟลตวอยาง PHP นอกจากนการเขยนโปรแกรมดวยภาษา PHP ใน
บางตวอยางอาจมรปแบบทซบซอน ดงนนในทนจะใชโปรแกรมสาเรจรป Adobe Dreamwaver มา
ชวยในการออกแบบฟอรมตางๆ เพอความสะดวกและรวดเรวมากขน
5.1 การบวก/ลบ/คณ/หาร ของเลขสองจานวน
ในสวนนจะแสดงการสรางสอการสอนผานเวบไซต เพอใชสาหรบการบวก ลบ คณ และหาร ของ
เลขสองจานวน ดงตอไปน
1) เปดโปรแกรม Adobe Dreamweaver CS 5.5 และออกแบบหนาเวบไซตตามรปท 5.1
2) ไปทเมน Create New เพอสรางไฟล PHP ขนมา ตามรปท 5.2
3) กดเลอกทกลองเมน INSERT → Forms ตามรปท 5.3
4) กดเลอกทเครองมอ Forms และใสชอเวบเพจ calculator.php ทตองการสงขอมล (ในทนคอ
เวบเพจของตนเอง) ซงรปแบบการสงขอมลมอย 2 รปแบบคอ
140
รปท 5.1 ฟอรม (หนาเวบไซต) สาหรบการบวก ลบ คณ และหาร ของเลขสองจานวน
รปท 5.2 การสรางไฟล PHP
รปท 5.3 การเลอกเครองมอทเกยวกบฟอรม (Forms)
POST คอรปแบบการสงขอมลของฟอรมแบบไมมขอจากดขนาดของขอมล ซงจะไมแสดง
ขอมลใหเหน เหมาะกบขอมลทตองการความปลอดภย โดยจะใชควบคกบคาสง $_POST
141
รปท 5.4 การใสชอเวบเพจ calculator.php ในฟอรมสาหรบรปท 5.1
รปท 5.5 การเลอกเครองมอสาหรบสรางตาราง (Table)
GET คอรปแบบการสงขอมลของฟอรมแบบผานทาง URL ทาใหผใชสามารถมองเหน
ขอมลทสงไปได เหมาะกบขอมลทเปน keyword ในการคนหา
อยางไรกตามบทนจะใชเฉพาะวธ POST ตามทแสดงในรปท 5.4
5) เรมสรางตารางโดยการกดเลอกทกลองเมน INSERT → Common และเลอกเครองมอ
Table ตามรปท 5.5
142
รปท 5.6 การตงคาตารางสาหรบรปท 5.1
รปท 5.7 การเลอกเครองมอ Text Field และ Button
6) กาหนดคาพารามเตอรตางๆ ของตารางดงน (แสดงผลลพธดงรปท 5.6)
Rows เทากบ 1
Columns เทากบ 4
Table width เทากบ 31 percent
Border thickness เทากบ 0 pixels
Cell padding เทากบ 4
Cell spacting เทากบ 4
7) กดทกลองเมน INSERT → Forms ในรปท 5.3 และเลอกเครองมอ Text Field และ Button
ตามรปท 5.7
143
ตารางท 5.1 การกาหนดคาพารามเตอรของ Text Filed และ Button ในรปท 5.8
ออบเจกต ชอ คณสมบต คาทกาหนด
Text Field a1 Char width = 2 <? echo $a1; ?>
Text Field b1 Char width = 2 <? echo $b1; ?>
Button submit - + (บวก) Button submit - - (ลบ) Button submit - × (คณ) Button submit - / (หาร) Table สเหลอง = #FFFF00 ,สเขยว = #00CC66, สนาตาลออน = #FF9966
รปท 5.8 การใสรายละเอยดเวบเพจทสมบรณ
รปท 5.9 การเลอกเมน Code
8) กาหนดคาพารามเตอรของ Text Filed, Button และใสสตางๆ ตามตารางท 5.1 จะไดผลลพธ
ตามรปท 5.8
9) กดเลอกในสวนของเมน Code เพอทาการเขยนโปรแกรมภาษา PHP ตามรปท 5.9 ทาการ
บนทกโปรแกรมในชอไฟล “calculator.php” ไวในสารบบ C:\AppServ\www\phptoscilab
144
โคดของการบวก/ลบ/คณ/หาร ของเลขสองจานวน
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<?php
if($_POST["submit"]=="+ (บวก)") { //ตรวจสอบคาของ submit
$cal = "+";
}
elseif ($_POST["submit"]=="- (ลบ) ") {
$cal = "-";
}
elseif ($_POST["submit"]=="x (คณ) ") {
$cal = "*";
}
elseif($_POST["submit"]=="/ (หาร) ") {
$cal = "/";
}
if($_POST[a1]!="" and $_POST[b1]!="") {
$code = "int16([".stripslashes($_POST[a1])."$cal".stripslashes($_POST[b1])."])";
$code1 = "output = $code;\noutput = iconvert(output,0);
\nsavematfile('cal.txt','output');\nexit;";
file_put_contents("cal.sce", $code1); //สรางไฟลชอ cal.sce
$path=$_SERVER["SystemRoot"]; //สรางตวแปรทอยของวนโดวส
$com = "$path/scilab-4.1.2/bin/Scilex.exe -nwni -nb -f cal.sce"; //สรางตวแปร
สาหรบสงประมวลผลไฟลสครปต
exec($com); //ประมวลผลไฟลสครปต
$output = number_format(file_get_contents("cal.txt")); //อานไฟลผลลพธ
}
?>
หมายเหต โคคทงหมดนจะเขยนอยบนสดของโคดภาษา HTML
10) ทดสอบการทางานของโปรแกรมโดยการเปดโปรแกรมคนดหรอเบราวเซอร (browser) เชน
internet explorer (IE) จากนนพมพ URL คอ http://127.0.0.1/phptoscilab/calculator.php
และทาการปอนขอมลดงน A เทากบ 5 และ B เทากบ 5 และกดปม + (บวก) 1 ครง กจะได
ผลลพธตามรปท 5.10 ในทานองเดยวกนถากดปม “× (คณ)” หนงครง กจะไดผลลพธ
เทากบ 25
145
รปท 5.10 ทดสอบการบวกเลขสองจานวน
5.2 การหาดเทอรมแนนตและอนเวอรสของเมทรกซ
ในทนจะแสดงการหาดเทอรมแนนตและอนเวอรสของเมทรกซขนาด 2×2 และ 3×3 โดยจะสราง
หนาเพจเปน 3 หนาดงน
หนาเพจกาหนดขนาดของเมทรกซ
หนาเพจสาหรบหาดเทอรมแนนตและอนเวอรสของเมทรกซขนาด 2×2
หนาเพจสาหรบหาดเทอรมแนนตและอนเวอรสของเมทรกซขนาด 3×3
5.2.1 หนาเพจกาหนดขนาดของเมทรกซ
การสรางหนาเพจกาหนดขนาดของเมทรกซทาไดดงน
1) เปดโปรแกรม Adobe Dreamweaver CS 5.5 และออกแบบหนาเวบไซตตามรปท 5.11
2) ไปทเมน Create New เพอสรางไฟล PHP ขนมา (ตามรปท 5.2)
3) กดเลอกทกลองเมน INSERT → Forms (ตามรปท 5.3)
4) กดเลอกทเครองมอ Forms และใสชอเวบเพจ menuinvdet.php ทตองการสงขอมล (ในทน
คอเวบเพจของตนเอง) ตามทแสดงในรปท 5.12
5) เรมสรางตารางโดยการกดเลอกทกลองเมน INSERT → Common และเลอกเครองมอ
Table (ตามรปท 5.5)
146
รปท 5.11 หนาเพจเลอกขนาดเมทรกซ 2×2 หรอ 3×3
รปท 5.12 การใสชอเวบเพจ menuinvdet.php ในฟอรมสาหรบรปท 5.11
6) กาหนดคาพารามเตอรตางๆ ของตารางดงน (แสดงผลลพธดงรปท 5.13)
Rows: เทากบ 1
Columns: เทากบ 1
Table width: 34 percent
Border thickness: 1 pixels
147
รปท 5.13 การตงคาตารางสาหรบรปท 5.11
รปท 5.14 การใชเครองมอ Button สรางปม
Cell padding = 4
Cell spacting = 4
Height = 116
bgcolor = "#CCCCCC"
bordercolor = "#333333"
7) กดทกลองเมน INSERT → Forms (ตามรปท 5.3) และเลอกเครองมอ Button เพอสราง
ปม 2×2 และปม 3×3 ดงแสดงในรปท 5.14
8) กดเลอกในสวนของเมน Code เพอทาการเขยนโปรแกรมภาษา PHP เพอเชอมโยงไปยงหนา
เพจการหาดเทอรมแนนตและอนเวอรสของเมทรกซขนาด 2×2 และ 3×3 (ตามรปท 5.9)
และบนทกโปรแกรมในชอ “menuinvdet.php” ไวในสารบบ C:\AppServ\www\phptoscilab
148
โคดของหนาเพจกาหนดขนาดของเมทรกซ
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
<?php //โคดในสวนของภาษา PHP ททางานรวมกบโปรแกรม SCILAB
ob_start();
if($_POST["submit"]==" 2x2 ") { //ตรวจสอบคาของ submit
header('location:invdet2x2.php'); //ขามไปหนา invdet2x2.php
}elseif($_POST["submit"]==" 3x3 ") {
header('location:invdet3x3.php'); //ขามไปหนา invdet3x3.php
}
?>
<html> <!--โคดในสวนของภาษา HTML-->
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-874" />
<title>การหาดเทอรมแนนตและอนเวอรสของเมทรกซขนาด 2×2 และ 3×3</title>
</head>
<body>
<form id="form1" name="form1" method="post" action="menuinvdet.php">
<table width="34%" border="1" cellpadding="4" cellspacing="4" bordercolor=
"#333333" bgcolor="#CCCCCC">
<tr>
<td width="20%" height="116" valign="middle">
<div align="center">เมทรกซขนาด<br><br>
<input name="submit" type="submit" id="Submit" value=" 2×2 " />
<input name="submit" type="submit" id="Submit" value=" 3×3 " />
<br>
<br>
</div></td>
</tr>
</table>
</form>
</body>
</html>
149
รปท 5.15 หนาเพจของการหาดเทอรมแนนตและอนเวอรสของเมทรกซขนาด 2×2
รปท 5.16 รปแบบตารางของเมทรกซขนาด 2×2 ทใชในรปท 5.15
5.2.2 หนาเพจสาหรบหาดเทอรมแนนตและอนเวอรสของเมทรกซขนาด 2×2
การสรางหนาเพจสาหรบการหาดเทอรมแนนตและอนเวอรสของเมทรกซขนาด 2 ×2 ทาไดดงน
1) หนาเพจสาหรบหาดเทอรมแนนตและอนเวอรสของเมทรกซขนาด 2×2 จะถกออกแบบตาม
รปท 5.15 และการออกแบบตารางตามรปท 5.16 โดยในสวนของ Action Form ใหใสชอ
เวบเพจ invdet2x2.php ทตองการสงขอมล (ในทนคอเวบเพจของตนเอง) ตามรปท 5.17
ดเทอรมแนนต อนเวอรส
a2
a4
a1
a3
output out1 out3
out2 out4
150
รปท 5.17 หนาเพจของการหาดเทอรมแนนตและอนเวอรสของเมทรกซขนาด 2×2 (ตอ)
ตารางท 5.2 การกาหนดคาพารามเตอรของ Text Filed และ Button ในรปท 5.15
ออบเจกต ชอ คณสมบต คาทกาหนด
Text Field a1 Char width = 2 <? echo $a1; ?>
Text Field a2 Char width = 2 <? echo $a2; ?>
Text Field a3 Char width = 2 <? echo $a3; ?>
Text Field a4 Char width = 2 <? echo $a4; ?>
Text Field output Char width = 5 <? echo $output; ?>
Text Field out1 Char width = 5 <? echo number_format($exp1,2,'.',''); ?>
Text Field out2 Char width = 5 <? echo number_format($exp2,2,'.',''); ?>
Text Field out3 Char width = 5 <? echo number_format($exp3,2,'.',''); ?>
Text Field out4 Char width = 5 <? echo number_format($exp4,2,'.',''); ?>
Button submit - ดเทอรมแนนต
Button submit - อนเวอรส
Title bar - - การหาดเทอรมแนนตและอนเวอรสของเมทรกซ 2×2
2) กาหนดคาพารามเตอรของ Text Filed, Button และรายละเอยดสตางๆ ตามตารางท 5.2
กจะไดผลลพธตามรปท 5.15
151
หมายเหต การซอนผลลพธ อธบายโดยถาตวแปร $sta เทากบ on1 จรงใหแสดงผลลพธของดเทอรมแนนต
ในบรรทดท 45 แตถาตวแปรมคาเทากบ on2 ใหแสดงผลลพธของอนเวอรสในบรรทดท 46 - 52
3) เขยนโคดภาษา PHP และบนทกไฟลชอวา “invdet2x2.php” ดงน
โคดของหนาเพจสาหรบหาดเทอรมแนนตและอนเวอรสของเมทรกซขนาด 2×2
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
<?php //โคดในสวนของภาษา PHP ททางานรวมกบโปรแกรม SCILAB
if($_POST["submit"]=="ดเทอรมแนนต") { //ตรวจสอบคาของ submit
$cal = "det";
$sta = "on1";
}elseif($_POST["submit"]==" อนเวอรส ") {
$cal = "inv";
$sta = "on2";
}
if($_POST[a1]!="" and $_POST[a2]!="" and $_POST[a3]!="" and $_POST[a4]!="")
{ //ตรวจสอบคาวางของตวแปร
$code = "[".stripslashes($_POST[a1])." ".stripslashes($_POST[a2]).";".stripslashes
($_POST[a3])." ".stripslashes($_POST[a4])."]";
$code1 = "output = $cal($code);\noutput = iconvert(output,0);\nsavematfile
('invdet2x2.txt','output');\nexit;";
file_put_contents("invdet2x2.sce", $code1); //สรางไฟลสครปต
$path=$_SERVER["SystemRoot"]; //สรางตวแปรทอยของวนโดวส
$com = "$path/scilab-4.1.2/bin/Scilex.exe -nwni -nb -f invdet2x2.sce"; //สราง
ตวแปรสาหรบสงประมวลผลไฟลสครปต
exec($com); //ประมวลผลไฟลสครปต
$output = number_format(file_get_contents("invdet2x2.txt")); //อานไฟลผลลพธ
list($exp1, $exp2, $exp3, $exp4) = explode(" ", trim(file_get_contents
("invdet2x2.txt"))); //แยกขอมลลงตวแปร 4 ตว
}
?>
<html> <!--โคดในสวนของภาษา HTML-->
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-874" />
<title>การหาดเทอรมแนนตและอนเวอรสของเมทรกซ 2×2</title>
</head>
<body>
152
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
<form id="form1" name="form1" method="post" action="invdet2x2.php">
<table width="42%" border="0" cellpadding="4" cellspacing="4" bgcolor="#CCCCCC">
<tr>
<td width="38%" height="78" valign="top" bgcolor="#FFFF00"><div align=
"center">เมทรกซ A<br>
<input name="a1" type="text" size="2" value="<? echo $a1; ?>" />
<input name="a2" type="text" size="2" value="<? echo $a2; ?>" />
<br>
<input name="a3" type="text" id="a3" value="<? echo $a3; ?>" size="2" />
<input name="a4" type="text" id="a4" value="<? echo $a4; ?>" size="2" />
</div></td>
<td width="20%" valign="middle">
<div align="center">
<input name="submit" type="submit" id="Submit" value="ดเทอรมแนนต" />
<input name="submit" type="submit" id="Submit" value=" อนเวอรส " />
</div></td>
<td width="42%" valign="top" bgcolor="#FF9966"><div align="center">
<p>ผลลพธ<br>
<input name="output" type="text" id="output" value="<? echo $output; ?>" size="5"
<? if($sta=="on1"){echo "style='display:;'";}else{echo "style='display:none;'";}?>
/><br>
<input name="out1" type="text" id="out1" value="<? echo
number_format($exp1,2,'.',''); ?>"<? if($sta=="on2"){echo
"style='display:;'";}else{echo "style='display:none;'";} ?> size="5" />
<input name="out2" type="text" id="out2" value="<? echo
number_format($exp2,2,'.',''); ?>"<? if($sta=="on2"){echo
"style='display:;'";}else{echo "style='display:none;'";}?> size="5" />
<br>
<input name="out3" type="text" id="out3" value="<? echo
number_format($exp3,2,'.',''); ?>"<? if($sta=="on2"){echo
"style='display:;'";}else{echo "style='display:none;'";}?> size="5" />
153
52
53
54
55
56
57
58
59
<input name="out4" type="text" id="out4" value="<? echo
number_format($exp4,2,'.',''); ?>"<? if($sta=="on2"){echo
"style='display:;'";}else{echo "style='display:none;'";}?> size="5" />
</p>
</div></td>
</tr>
</table>
</form>
</body>
</html>
รปท 5.18 หนาเพจของการหาดเทอรมแนนตและอนเวอรสของเมทรกซขนาด 3×3
5.2.3 หนาเพจสาหรบหาดเทอรมแนนตและอนเวอรสของเมทรกซขนาด 3×3
การสรางหนาเพจสาหรบการหาดเทอรมแนนตและอนเวอรสของเมทรกซขนาด 3 ×3 ทาไดดงน
1) หนาเพจสาหรบหาดเทอรมแนนตและอนเวอรสของเมทรกซขนาด 3×3 จะถกออกแบบตาม
รปท 5.18 และการออกแบบตารางตามรปท 5.19 โดยในสวนของ Action Form ใหใสชอ
เวบเพจ invdet3x3.php ทตองการสงขอมล (ในทนคอเวบเพจของตนเอง) ตามรปท 5.20
ดเทอรมแนนต อนเวอรส
a3 a6
a1
a4
output out1 out4
a7
a2
a8
a9a5
out7
out3 out6 out9
out2
out8
out5
154
รปท 5.19 รปแบบตารางของเมทรกซขนาด 3×3 ทใชในรปท 5.18
รปท 5.20 หนาเพจของการหาดเทอรมแนนตและอนเวอรสของเมทรกซขนาด 3×3 (ตอ)
2) กาหนดคาพารามเตอรของ Text Filed และ Button ตามตารางท 5.3 กจะไดผลลพธตามรป
ท 5.18
155
ตารางท 5.3 การกาหนดคาพารามเตอรของ Text Filed และ Button ในรปท 5.18
ออบเจกต ชอ คณสมบต คาทกาหนด
Text Field a1 Char width = 2 <? echo $a1; ?>
Text Field a2 Char width = 2 <? echo $a2; ?>
Text Field a3 Char width = 2 <? echo $a3; ?>
Text Field a4 Char width = 2 <? echo $a4; ?>
Text Field a5 Char width = 2 <? echo $a5; ?>
Text Field a6 Char width = 2 <? echo $a6; ?>
Text Field a7 Char width = 2 <? echo $a7; ?>
Text Field a8 Char width = 2 <? echo $a8; ?>
Text Field a9 Char width = 2 <? echo $a9; ?>
Text Field output Char width = 5 <? echo $output; ?>
Text Field out1 Char width = 5 <? echo number_format($exp1,2,'.',''); ?>
Text Field out2 Char width = 5 <? echo number_format($exp2,2,'.',''); ?>
Text Field out3 Char width = 5 <? echo number_format($exp3,2,'.',''); ?>
Text Field out4 Char width = 5 <? echo number_format($exp4,2,'.',''); ?>
Text Field out5 Char width = 5 <? echo number_format($exp5,2,'.',''); ?>
Text Field out6 Char width = 5 <? echo number_format($exp6,2,'.',''); ?>
Text Field out7 Char width = 5 <? echo number_format($exp7,2,'.',''); ?>
Text Field out8 Char width = 5 <? echo number_format($exp8,2,'.',''); ?>
Text Field out9 Char width = 5 <? echo number_format($exp9,2,'.',''); ?>
Button submit - ดเทอรมแนนต
Button submit - อนเวอรส
Title bar - - การหาดเทอรมแนนตและอนเวอรสของเมทรกซ 3×3
หมายเหต การซอนผลลพธ อธบายโดยถาตวแปร $sta เทากบ on1 จรงใหแสดงผลลพธของดเทอรมแนนต
ในบรรทดท 58 แตถาตวแปรมคาเทากบ on2 ใหแสดงผลลพธของอนเวอรสในบรรทดท 59 - 75
3) เขยนโคดภาษา PHP และบนทกไฟลชอวา “invdet3x3.php” ดงน
โคดของหนาเพจสาหรบหาดเทอรมแนนตและอนเวอรสของเมทรกซขนาด 3×3
1
2
3
4
<?php //โคดในสวนของภาษา PHP รวมกบโปรแกรม SCILAB
if($_POST["submit"]=="ดเทอรมแนนต") { //ตรวจสอบคาของ Submit
$cal = "det";
$sta = "on1";
156
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
$sta2 = 1;
}elseif($_POST["submit"]==" อนเวอรส ") {
$cal = "inv";
$sta = "on2";
$sta2 = 2;
$enter="\n";
}
if($_POST[a1]!="" and $_POST[a2]!="" and $_POST[a3]!="" and $_POST[a4]!=""
and $_POST[a5]!="" and $_POST[a6]!="" and $_POST[a7]!="" and $_POST[a8]!=""
and $_POST[a9]!=""){
$code = "[".stripslashes($_POST[a1])." ".stripslashes($_POST[a2])."
".stripslashes($_POST[a3]).";".stripslashes($_POST[a4])." ".stripslashes($_POST[a5])."
".stripslashes($_POST[a6]).";".stripslashes($_POST[a7])." ".stripslashes($_POST[a8])."
".stripslashes($_POST[a9])."]";
$code1 = "output = $cal($code);\notext=string(output);\nfid = mopen('invdet3x3.txt',
'w'); if $sta2==1 then \nmfprintf(fid,'%s\\n',otext);\nmclose(fid);\n elseif $sta2==2 then
\nmfprintf(fid,'%s\\n',otext(1));\nmfprintf(fid,'%s\\n',otext(4));\nmfprintf(fid,'%s\\n',otext(
7));\nmfprintf(fid,'%s\\n',otext(2));\nmfprintf(fid,'%s\\n
',otext(5));\nmfprintf(fid,'%s\\n',otext(8));\nmfprintf(fid,'%s\\n',otext(3));\nmfprintf(fid,'%
s\\n',otext(6));\nmfprintf(fid,'%s\\n',otext(9));\nmclose(fid);\n end\nexit;";
file_put_contents("invdet3x3.sce", $code1); //สรางไฟลสครปตชอวา invdet3x3.sce
$path=$_SERVER["SystemRoot"]; //สรางตวแปรทอยของ windows
$com = "$path/scilab-4.1.2/bin/Scilex.exe -nwni -nb -f invdet3x3.sce"; //สรางตวแปร
สง Run สครปต
exec($com); //ประมวลผลไฟลสครปต
$output = file_get_contents("invdet3x3.txt"); //อานไฟลผลลพธ
list($exp1, $exp2, $exp3, $exp4, $exp5, $exp6, $exp7, $exp8, $exp9) = explode("\n",
trim(file_get_contents("invdet3x3.txt"))); //แยกขอมลลงตวแปร 9 ตว
}
?>
<html> <!--โคดในสวนของภาษา HTML-->
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-874" />
<title>การหาดเทอรมแนนต และอนเวอรสของเมทรกซ 3 x 3</title>
</head>
157
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
<body>
<form id="form1" name="form1" method="post" action="invdet3x3.php">
<table width="73%" border="0" cellpadding="4" cellspacing="4"
bgcolor="#CCCCCC">
<tr>
<td width="38%" height="166" valign="top" bgcolor="#FFFF00"><div
align="center">เมทรกซ A<br>
<input name="a1" type="text" size="2" value="<? echo $a1; ?>" />
<input name="a2" type="text" size="2" value="<? echo $a2; ?>" />
<input name="a3" type="text" id="a3" value="<? echo $a3; ?>" size="2" />
<br>
<input name="a4" type="text" id="a4" value="<? echo $a4; ?>" size="2" />
<input name="a5" type="text" id="a5" value="<? echo $a5; ?>" size="2" />
<input name="a6" type="text" id="a6" value="<? echo $a6; ?>" size="2" />
<br>
<input name="a7" type="text" id="a7" value="<? echo $a7; ?>" size="2" />
<input name="a8" type="text" id="a8" value="<? echo $a8; ?>" size="2" />
<input name="a9" type="text" id="a9" value="<? echo $a9; ?>" size="2" />
</div></td>
<td width="18%" valign="middle">
<div align="center">
<input name="submit" type="submit" id="Submit" value="ดเทอรมแนนต" />
<input name="submit" type="submit" id="Submit" value=" อนเวอรส " />
</div></td>
<td width="44%" valign="top" bgcolor="#FF9966"><div align="center">
<p>ผลลพธ<br>
<input name="output" type="text" id="output" value="<? echo $output; ?>" size="10"
<? if($sta=="on1"){echo "style='display:;'";}else{echo "style='display:none;'";}?>
/><br>
158
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
<input name="out1" type="text" id="out1" value="<? echo $exp1; ?>"<?
if($sta=="on2"){echo "style='display:;'";}else{echo "style='display:none;'";}?> size="10"
/>
<input name="out2" type="text" id="out2" value="<? echo $exp2; ?>"<?
if($sta=="on2"){echo "style='display:;'";}else{echo "style='display:none;'";}?> size="10"
/>
<input name="out3" type="text" id="out3" value="<? echo $exp3; ?>"<?
if($sta=="on2"){echo "style='display:;'";}else{echo "style='display:none;'";}?> size="10"
/>
<br>
<input name="out4" type="text" id="out4" value="<? echo $exp4; ?>"<?
if($sta=="on2"){echo "style='display:;'";}else{echo "style='display:none;'";}?> size="10"
/>
<input name="out5" type="text" id="out5" value="<? echo $exp5; ?>"<?
if($sta=="on2"){echo "style='display:;'";}else{echo "style='display:none;'";}?> size="10"
/>
<input name="out6" type="text" id="out6" value="<? echo $exp6; ?>"<?
if($sta=="on2"){echo "style='display:;'";}else{echo "style='display:none;'";}?> size="10"
/>
<br>
<input name="out7" type="text" id="out7" value="<? echo $exp7; ?>"<?
if($sta=="on2"){echo "style='display:;'";}else{echo "style='display:none;'";}?> size="10"
/>
<input name="out8" type="text" id="out8" value="<? echo $exp8; ?>"<?
if($sta=="on2"){echo "style='display:;'";}else{echo "style='display:none;'";}?> size="10"
/>
<input name="out9" type="text" id="out9" value="<? echo $exp9; ?>"<?
if($sta=="on2"){echo "style='display:;'";}else{echo "style='display:none;'";}?> size="10"
/>
159
76
77
78
79
80
81
82
</p>
</div></td>
</tr>
</table>
</form>
</body>
</html>
รปท 5.21 ตวอยางการหาผลลพธของอนเวอรสเมทรกซขนาด 2×2
5.2.4 ทดสอบการใชงาน
ในสวนนจะทดสอบการทางานของเวบเพจสาหรบหาดเทอรมแนนตและอนเวอรสของเมทรกซขนาด
2 ×2 และ 3 ×3 ดงน
1) ทดสอบการทางานของโปรแกรมโดยการเปดเบราวเซอร IE จากนนพมพ URL คอ http://
127.0.0.1/phptoscilab/menuinvdet.php และปอนขอมล โดยแบงออกเปน 2 ตวอยางดงน
2) สาหรบตวอยางเมทรกซขนาด 2×2 เลอกขนาดของเมทรกซเปน 2×2 ในรปท 5.11 กจะได
เวบเพจในรปท 5.15 จากนนปอนขอมลเมทรกซ A เทากบ [1, 2; 3, 4] และกดปมหาคา
อนเวอรสของเมทรกซ A กจะไดผลลพธตามรปท 5.21 หรอถากดปมดเทอรมแนนตกจะได
ผลลพธเทากบ -2
160
รปท 5.22 ตวอยางการหาผลลพธของอนเวอรสเมทรกซขนาด 3×3
3) สาหรบตวอยางเมทรกซขนาด 3×3 เลอกขนาดของเมทรกซเปน 3×3 ในรปท 5.11 กจะได
เวบเพจในรปท 5.18 จากนนปอนขอมลเมทรกซ A เทากบ [2, 2, 1; 1, 2, 4; 8, 2, 3] และ
กดปมหาคาอนเวอรสของเมทรกซ A จะไดผลลพธตามรปท 5.22 หรอถากดปมดเทอรมแนนตก
จะไดผลลพธเทากบ 40
5.3 การพสจนคณสมบตของเมทรกซ
ในสวนนจะแสดงตวอยางการใชโปรแกรม PHP สรางเวบเพจสาหรบพสจนคณสมบตของเมทรกซ
3 แบบคอ
(kA)T = kAT
(A + B)T = AT + BT
(AB)T = BTAT
เมอ k คอคาคงตว, A และ B คอเมทรกซจตรสขนาด 2×2, และ (⋅)T คอทรานสโพสของเมทรกซ
ดงรายละเอยดตอไปน
5.3.1 การพสจนคณสมบต (kA)T = kAT
การสรางหนาตางสวนตอประสานเพอใชในการพสจนคณสมบต (kA)T = kAT ทาไดดงน
1) เปดโปรแกรม Adobe Dreamwaver CS 5.5 ออกแบบฟอรมตามรปท 5.23 และออกแบบ
รปแบบตารางตามรปท 5.24 โดยในสวนของ Action Form ใหใสชอเวบเพจ matrix01.php
ดงแสดงในรปท 5.25
161
รปท 5.23 เวบเพจของการพสจนคณสมบต (kA)T = kAT
ตารางท 5.4 การกาหนดคาพารามเตอรของ Text Filed และ Button ในสวนของ Input ในรปท 5.23
ออบเจกต ชอ คณสมบต คาทกาหนด
Text Field k Char width = 2 <? echo $k; ?>
Text Field a1 Char width = 2 <? echo $a1; ?>
Text Field a2 Char width = 2 <? echo $a2; ?>
Text Field a3 Char width = 2 <? echo $a3; ?>
Text Field a4 Char width = 2 <? echo $a4; ?>
Button submit2 - คานวณ
2) กาหนดคาพารามเตอรของ Text Filed และ Button ในฟอรมตางๆ ตามตารางท 5.4 – 5.6
k a1 a2
a3 a4
k11 a111
k33 a333
k11 a222
k33 a333
k1 a11
k33 a333
k2 a22
ao2
k1 a11
ao3 ao4 ao1 ao22
ao33 ao44ao11
I
II
162
ตารางท 5.5 การกาหนดคาพารามเตอรของ Text Filed ในสวนของ Output I ในรปท 5.23
ออบเจกต ชอ คณสมบต คาทกาหนด
Text Field k1 Char width = 2 <? echo $k; ?>
Text Field a11 Char width = 2 <? echo $a1; ?>
Text Field k2 Char width = 2 <? echo $k; ?>
Text Field a22 Char width = 2 <? echo $a2; ?>
Text Field k3 Char width = 2 <? echo $k; ?>
Text Field a33 Char width = 2 <? echo $a3; ?>
Text Field k4 Char width = 2 <? echo $k; ?>
Text Field a44 Char width = 2 <? echo $a4; ?>
Text Field k11 Char width = 2 <? echo $k; ?>
Text Field a111 Char width = 2 <? echo $a1; ?>
Text Field k22 Char width = 2 <? echo $k; ?>
Text Field a222 Char width = 2 <? echo $a2; ?>
Text Field k33 Char width = 2 <? echo $k; ?>
Text Field a333 Char width = 2 <? echo $a3; ?>
Text Field k44 Char width = 2 <? echo $k; ?>
Text Field a444 Char width = 2 <? echo $a4; ?>
ตารางท 5.6 การกาหนดคาพารามเตอรของ Text Filed ในสวนของ Output II ในรปท 5.23
ออบเจกต ชอ คณสมบต คาทกาหนด
Text Field ao1 Char width = 2 <? echo number_format($out1,2,'.',''); ?>
Text Field ao2 Char width = 2 <? echo number_format($out2,2,'.','');; ?>
Text Field ao3 Char width = 2 <? echo number_format($out3,2,'.','');; ?>
Text Field ao4 Char width = 2 <? echo number_format($out4,2,'.','');; ?>
Text Field ao11 Char width = 2 <? echo number_format($out11,2,'.',''); ?>
Text Field ao22 Char width = 2 <? echo number_format($out22,2,'.',''); ?>
Text Field ao33 Char width = 2 <? echo number_format($out33,2,'.',''); ?>
Text Field ao44 Char width = 2 <? echo number_format($out44,2,'.',''); ?>
163
รปท 5.24 รปแบบตารางของการพสจนคณสมบต (kA)T = kAT
164
รปท 5.25 การออกแบบการพสจนคณสมบต (kA)T = kAT
3) เขยนโคดภาษา PHP และบนทกไฟลชอวา “matrix01.php” ดงน
โคดของหนาเพจสาหรบการพสจนคณสมบต (kA)T = kAT
1
2
3
4
<?php //โคดในสวนของภาษา PHP รวมกบโปรแกรม SCILAB
if($_POST[a1]!="" and $_POST[a2]!="" and $_POST[a3]!="" and $_POST[a4]!=""
and $_POST[k]!=""){
$a = "[".stripslashes($_POST[a1])."
".stripslashes($_POST[a2]).";".stripslashes($_POST[a3])."
".stripslashes($_POST[a4])."]";
$k = stripslashes($_POST[k]);
165
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
$code1 = "output1 = ($k*$a)'\noutput2 = $k*$a'\noutput1 =
iconvert(output1,0);\nsavematfile('output1.txt','output1');\noutput2 =
iconvert(output2,0);\nsavematfile('output2.txt','output2');\nexit;";
file_put_contents("matrix01.sce", $code1); //สรางไฟลสครปตชอวา invdet2x2.sce
$path=$_SERVER["SystemRoot"]; //สรางตวแปรทอยของ windows
$com = "$path/scilab-4.1.2/bin/Scilex.exe -f matrix01.sce"; //สรางตวแปรสง Run
สครปต
exec($com); //ประมวลผลไฟลสครปต
list($out1, $out2, $out3, $out4) = explode(" ",
trim(file_get_contents("output1.txt"))); //แยกขอมลลงตวแปร 4 ตว
list($out11, $out22, $out33, $out44) = explode(" ",
trim(file_get_contents("output2.txt"))); //แยกขอมลลงตวแปร 4 ตว
}
?>
<html> <!--โคดในสวนของภาษา HTML-->
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-874" />
<title>การพสจนคณสมบตท 1</title>
<style type="text/css">
<!--
.style4 {font-size: 60px}
-->
</style>
</head>
<body>
<form id="form1" name="form1" method="post" action="matrix01.php">
<table width="66%" border="0" cellpadding="4" cellspacing="4"
bgcolor="#CCCCCC">
<tr>
<td width="100%" height="32" valign="top" bgcolor="#FFFFFF"><div
align="center"><strong>คณสมบตท 1(KA)<sup>T</sup> =
KA<sup>T</sup></strong></div></td>
</tr>
</table>
<br>
166
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
Input<br>
<table width="66%" border="0" cellpadding="4" cellspacing="4"
bgcolor="#CCCCCC">
<tr>
<td width="37%" height="107" valign="top" bgcolor="#FFFF99"><div
align="center"><br>
k =
<input name="k" type="text" id="k" value="<? echo $k; ?>" size="2" />
</div></td>
<td width="63%" valign="top" bgcolor="#FFFF99"><div align="center">
<table width="100%" border="0" cellpadding="0" cellspacing="0">
<tr>
<td width="41%" align="center" valign="middle">เมทรกซ A =</td>
<td width="59%"><table width="100%" border="0" cellspacing="0"
cellpadding="0">
<tr>
<td width="17%" valign="top"><span class="style4">[</span></td>
<td width="45%" valign="middle"><br>
<input name="a1" type="text" id="a1" value="<? echo $a1; ?>" size="2" />
<input name="a2" type="text" id="a2" value="<? echo $a2; ?>" size="2" />
<br>
<input name="a3" type="text" id="a3" value="<? echo $a3; ?>" size="2" />
<input name="a4" type="text" id="a4" value="<? echo $a4; ?>" size="2" /></td>
<td width="38%" valign="top"><span class="style4">]</span></td>
</tr>
</table>
</td>
</tr>
</table>
</div></td>
</tr>
<tr>
167
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
<td height="44" colspan="2" valign="middle" bgcolor="#FFFFFF"><div
align="center">
<input name="submit2" type="submit" id="submit" value=" คานวณ " />
</div></td>
</tr>
</table>
<br>
Output<br>
<table width="66%" border="0" cellpadding="4" cellspacing="4"
bgcolor="#CCCCCC">
<tr>
<td height="66" valign="top" bgcolor="#99FF99"><table width="100%"
border="0" cellspacing="0" cellpadding="0">
<tr>
<td width="47%"><table width="100%" border="0" cellspacing="0"
cellpadding="0">
<tr>
<td width="8%" valign="middle"><span class="style4">(</span></td>
<td width="82%" valign="middle"><br>
<input name="k1" type="text" id="k1" value="<? echo $k; ?>" size="2" />
x
<input name="a11" type="text" id="a11" value="<? echo $a1; ?>" size="2" />
<input name="k2" type="text" id="k2" value="<? echo $k; ?>" size="2" />
x
<input name="a22" type="text" id="a22" value="<? echo $a2; ?>" size="2" />
<br>
<input name="k3" type="text" id="k3" value="<? echo $k; ?>" size="2" />
x
<input name="a33" type="text" id="a33" value="<? echo $a3; ?>" size="2" />
<input name="k4" type="text" id="k4" value="<? echo $k; ?>" size="2" />
x
<input name="a44" type="text" id="a44" value="<? echo $a4; ?>" size="2" /></td>
<td width="10%" valign="middle"><span class="style4">)</span></td>
168
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
</tr>
</table></td>
<td width="9%"><span class="style4"><sup>T </sup>=</span></td>
<td width="37%"><table width="96%" border="0" align="center"
cellpadding="0" cellspacing="0">
<tr>
<td valign="top"><br>
<input name="k11" type="text" id="k11" value="<? echo $k; ?>" size="2" />
x
<input name="a111" type="text" id="a111" value="<? echo $a1; ?>" size="2" />
<input name="k22" type="text" id="k22" value="<? echo $k; ?>" size="2" />
x
<input name="a222" type="text" id="a222" value="<? echo $a2; ?>" size="2" />
<br>
<input name="k33" type="text" id="k33" value="<? echo $k; ?>" size="2" />
x
<input name="a333" type="text" id="a333" value="<? echo $a3; ?>" size="2" />
<input name="k44" type="text" id="k44" value="<? echo $k; ?>" size="2" />
x
<input name="a444" type="text" id="a444" value="<? echo $a4; ?>" size="2"
/></td>
</tr>
</table></td>
<td width="7%"><span class="style4"><sup>T</sup></span></td>
</tr>
</table></td>
</tr>
<tr>
<td height="95" valign="top" bgcolor="#FFCCCC"><table width="100%"
border="0" cellspacing="0" cellpadding="0">
<tr>
<td width="51%" align="center"><table width="62%" border="0"
cellpadding="0" cellspacing="0">
169
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
<tr>
<td width="22%" align="center" valign="middle">C1 =</td>
<td width="78%"><table width="100%" border="0" cellspacing="0"
cellpadding="0">
<tr>
<td width="18%" valign="top"><span class="style4">[</span></td>
<td width="62%" valign="middle"><br>
<input name="ao1" type="text" id="ao1" value="<? echo
number_format($out1,2,'.',''); ?>" size="2" />
<input name="ao2" type="text" id="ao2" value="<? echo
number_format($out2,2,'.','');; ?>" size="2" />
<br>
<input name="ao3" type="text" id="ao3" value="<? echo
number_format($out3,2,'.','');; ?>" size="2" />
<input name="ao4" type="text" id="ao4" value="<? echo
number_format($out4,2,'.','');; ?>" size="2" /></td>
<td width="20%" valign="top"><span class="style4">]</span></td>
</tr>
</table></td>
</tr>
</table></td>
<td width="49%"><table width="62%" border="0" cellpadding="0"
cellspacing="0">
<tr>
<td width="22%" align="center" valign="middle">C2 =</td>
<td width="78%"><table width="100%" border="0" cellspacing="0"
cellpadding="0">
<tr>
<td width="18%" valign="top"><span class="style4">[</span></td>
<td width="70%" valign="middle"><br>
<input name="ao11" type="text" id="ao11" value="<? echo
number_format($out11,2,'.',''); ?>" size="2" />
170
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
<input name="ao22" type="text" id="ao22" value="<? echo
number_format($out22,2,'.',''); ?>" size="2" />
<br>
<input name="ao33" type="text" id="ao33" value="<? echo
number_format($out33,2,'.',''); ?>" size="2" />
<input name="ao44" type="text" id="ao44" value="<? echo
number_format($out44,2,'.',''); ?>" size="2" /></td>
<td width="12%" valign="top"><span class="style4">]</span></td>
</tr>
</table></td>
</tr>
</table></td>
</tr>
</table></td>
</tr>
</table>
</form>
</body>
</html>
4) ทดสอบการทางานของโปรแกรมโดยการเปดเบราวเซอร IE จากนนพมพ URL คอ 127.0.0.1/
phptoscilab/matrix01.php จากนนปอนขอมล k เทากบ 2 และเมทรกซ A เทากบ [1, 2; 3,
4] แลวกดปม “คานวณ” หนงครง กจะไดผลลพธตามรปท 5.26
5.2.2 การพสจนคณสมบต (A+B)T = AT + BT
การพสจนคณสมบตทสองนจะทาการออกแบบตามรปท 5.27 โดยทาตามขนตอนดงน
1) เปดโปรแกรม Adobe Dreamwaver CS 5.5 ออกแบบฟอรมตามรปท 5.27 และออกแบบ
รปแบบตารางตามรปท 5.28 โดยในสวนของ Action Form ใหใสชอเวบเพจ matrix02.php
ดงแสดงในรปท 5.29
2) กาหนดคาพารามเตอรของ Text Filed และ Button ในฟอรมตางๆ ตามตารางท 5.7 – 5.10
171
รปท 5.26 เวบเพจแสดงผลลพธของการพสจนคณสมบต (kA)T = kAT
รปท 5.27 เวบเพจของการพสจนคณสมบต (A+B)T = AT + BT
b1 b2
b3 b4
a11 a22
a33 a44
ao2ao3 ao4
ao1
a1 a2
a3 a4
b11
b33 b44
b22 a111 a222
a333 a444
b111
b333 b444
b222
ao22 ao33 ao44
ao11
I
II
172
รปท 5.28 รปแบบตารางของการพสจนคณสมบต (A+B)T = AT + BT
173
รปท 5.29 การออกแบบการพสจนคณสมบต (A+B)T = AT + BT
ตารางท 5.7 การกาหนดคาพารามเตอรของ Text Filed ในสวนของ Input A ในรปท 5.27
ออบเจกต ชอ คณสมบต คาทกาหนด
Text Field a1 Char width = 2 <? echo $a1; ?>
Text Field a2 Char width = 2 <? echo $a2; ?>
Text Field a3 Char width = 2 <? echo $a3; ?>
Text Field a4 Char width = 2 <? echo $a4; ?>
174
ตารางท 5.8 การกาหนดคาพารามเตอรของ Text Filed และ Button ในสวนของ Input B ในรปท 5.27
ออบเจกต ชอ คณสมบต คาทกาหนด
Text Field b1 Char width = 2 <? echo $b1; ?>
Text Field b2 Char width = 2 <? echo $b2; ?>
Text Field b3 Char width = 2 <? echo $b3; ?>
Text Field b4 Char width = 2 <? echo $b4; ?>
Button submit2 - คานวณ
ตารางท 5.9 การกาหนดคาพารามเตอรของ Text Filed ในสวนของ Output I ในรปท 5.27
ออบเจกต ชอ คณสมบต คาทกาหนด
Text Field a11 Char width = 2 <? echo $a1; ?>
Text Field a22 Char width = 2 <? echo $a2; ?>
Text Field a33 Char width = 2 <? echo $a3; ?>
Text Field a44 Char width = 2 <? echo $a4; ?>
Text Field b11 Char width = 2 <? echo $b1; ?>
Text Field b22 Char width = 2 <? echo $b2; ?>
Text Field b33 Char width = 2 <? echo $b3; ?>
Text Field b44 Char width = 2 <? echo $b4; ?>
Text Field a111 Char width = 2 <? echo $a1; ?>
Text Field a222 Char width = 2 <? echo $a2; ?>
Text Field a333 Char width = 2 <? echo $a3; ?>
Text Field a444 Char width = 2 <? echo $a4; ?>
Text Field b111 Char width = 2 <? echo $b1; ?>
Text Field b222 Char width = 2 <? echo $b2; ?>
Text Field b333 Char width = 2 <? echo $b3; ?>
Text Field b444 Char width = 2 <? echo $b4; ?>
175
ตารางท 5.10 การกาหนดคาพารามเตอรของ Text Filed ในสวนของ Output II ในรปท 5.27
ออบเจกต ชอ คณสมบต คาทกาหนด
Text Field ao1 Char width = 2 <? echo number_format($out1,2,'.',''); ?>
Text Field ao2 Char width = 2 <? echo number_format($out2,2,'.','');; ?>
Text Field ao3 Char width = 2 <? echo number_format($out3,2,'.','');; ?>
Text Field ao4 Char width = 2 <? echo number_format($out4,2,'.','');; ?>
Text Field ao11 Char width = 2 <? echo number_format($out11,2,'.',''); ?>
Text Field ao22 Char width = 2 <? echo number_format($out22,2,'.',''); ?>
Text Field ao33 Char width = 2 <? echo number_format($out33,2,'.',''); ?>
Text Field ao44 Char width = 2 <? echo number_format($out44,2,'.',''); ?>
3) เขยนโคดภาษา PHP และบนทกไฟลชอวา “matrix02.php” ดงน
โคดของหนาเพจสาหรบการพสจนคณสมบต (A+B)T = AT + BT
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?php //โคดในสวนของภาษา PHP รวมกบโปรแกรม SCILAB
if($_POST[a1]!="" and $_POST[a2]!="" and $_POST[a3]!="" and $_POST[a4]!=""
and $_POST[b1]!="" and $_POST[b2]!="" and $_POST[b3]!="" and $_POST[b4]!="") {
$a = "[".stripslashes($_POST[a1])." ".stripslashes($_POST[a2]).";".
stripslashes($_POST[a3])." ".stripslashes($_POST[a4])."]";
$b = "[".stripslashes($_POST[b1])." ".stripslashes($_POST[b2]).";".
stripslashes($_POST[b3])." ".stripslashes($_POST[b4])."]";
$code1 = "output1 = ($a+$b)'\noutput2 = $a'+$b'\noutput1 = iconvert(output1,0);
\nsavematfile('output1.txt','output1');\noutput2 = iconvert(output2,0);\nsavematfile
('output2.txt','output2');\nexit;";
file_put_contents("matrix02.sce", $code1); //สรางไฟลสครปตชอวา matrix02.sce
$path=$_SERVER["SystemRoot"]; //สรางตวแปรทอยของวนโดวส
$com = "$path/scilab-4.1.2/bin/Scilex.exe -nwni -nb -f matrix02.sce";
exec($com); //ประมวลผลไฟลสครปต
list($out1, $out2, $out3, $out4) = explode(" ", trim(file_get_contents("output1.txt")));
list($out11, $out22, $out33, $out44) = explode(" ",trim(file_get_contents("output2.txt")));
}
?>
<html> <!--โคดในสวนของภาษา HTML-->
<head>
176
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
<meta http-equiv="Content-Type" content="text/html; charset=windows-874" />
<title>การพสจนคณสมบตท 2</title>
<style type="text/css">
<!--
.style4 {font-size: 60px}
.style6 {font-size: 36px}
-->
</style>
</head>
<body>
<form id="form1" name="form1" method="post" action="matrix02.php">
<div align="center">
<table width="66%" border="0" cellpadding="4" cellspacing="4" bgcolor="#CCCCCC">
<tr>
<td width="100%" height="32" valign="top" bgcolor="#FFFFFF"><div align=
"center"><strong>คณสมบตท 2 (A+B)<sup>T</sup> = A<sup>T</sup> + B<sup>T
</sup> </strong></div></td>
</tr>
</table>
<br>
Input<br>
<table width="66%" border="0" cellpadding="4" cellspacing="4" bgcolor="#CCCCCC">
<tr>
<td width="51%" height="107" valign="top" bgcolor="#FFFF99"><div align=
"center">
<table width="100%" border="0" cellpadding="0" cellspacing="0">
<tr>
<td width="28%" align="center" valign="middle">INPUT A =</td>
<td width="72%"><table width="100%" border="0" cellspacing="0"
cellpadding="0">
<tr>
<td width="17%" valign="top"><span class="style4">[</span></td>
<td width="45%" valign="middle"><br>
<input name="a1" type="text" id="a1" value="<? echo $a1; ?>" size="2" />
177
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
<input name="a2" type="text" id="a2" value="<? echo $a2; ?>" size="2" />
<br>
<input name="a3" type="text" id="a3" value="<? echo $a3; ?>" size="2" />
<input name="a4" type="text" id="a4" value="<? echo $a4; ?>" size="2" /></td>
<td width="38%" valign="top"><span class="style4">]</span></td>
</tr>
</table></td>
</tr>
</table>
</div></td>
<td width="49%" valign="top" bgcolor="#FFFF99"><div align="center">
<table width="100%" border="0" cellpadding="0" cellspacing="0">
<tr>
<td width="28%" align="center" valign="middle">INPUT B =</td>
<td width="72%"><table width="100%" border="0" cellspacing="0"
cellpadding="0">
<tr>
<td width="17%" valign="top"><span class="style4">[</span></td>
<td width="48%" valign="middle"><br>
<input name="b1" type="text" id="b1" value="<? echo $b1; ?>" size="2" />
<input name="b2" type="text" id="b2" value="<? echo $b2; ?>" size="2" />
<br>
<input name="b3" type="text" id="b3" value="<? echo $b3; ?>" size="2" />
<input name="b4" type="text" id="b4" value="<? echo $b4; ?>" size="2" /></td>
<td width="35%" valign="top"><span class="style4">]</span></td>
</tr>
</table></td>
</tr>
</table>
</div></td>
</tr>
<tr>
178
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
<td height="44" colspan="2" valign="middle" bgcolor="#FFFFFF"><div align=
"center">
<input name="submit2" type="submit" id="submit" value=" คานวณ " />
</div></td>
</tr>
</table>
<br>
Output<br>
<table width="75%" border="0" cellpadding="4" cellspacing="4" bgcolor="#CCCCCC">
<tr>
<td height="66" valign="top" bgcolor="#99FF99"><table width="100%"
border="0" cellspacing="0" cellpadding="0">
<tr>
<td width="40%" valign="top"><table width="100%" border="0" cellspacing="0"
cellpadding="0">
<tr>
<td width="42%"><table width="100%" border="0" cellspacing="0"
cellpadding="0">
<tr>
<td width="12%" valign="middle"><span class="style4">(</span></td>
<td valign="middle"><br>
<input name="a11" type="text" id="a11" value="<? echo $a1; ?>" size="2" />
<input name="a22" type="text" id="a22" value="<? echo $a2; ?>" size="2" />
<br>
<input name="a33" type="text" id="a33" value="<? echo $a3; ?>" size="2" />
<input name="a44" type="text" id="a44" value="<? echo $a4; ?>" size="2"
/></td>
</tr>
</table></td>
<td width="15%" align="left"><span class="style6">+</span></td>
<td width="43%"><table width="92%" border="0" cellspacing="0"
cellpadding="0">
<tr>
<td width="79%" valign="middle"><br>
<input name="b11" type="text" id="b11" value="<? echo $b1; ?>" size="2" />
179
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
<input name="b22" type="text" id="b22" value="<? echo $b2; ?>" size="2" />
<br>
<input name="b33" type="text" id="b33" value="<? echo $b3; ?>" size="2" />
<input name="b44" type="text" id="b44" value="<? echo $b4; ?>" size="2"
/></td>
<td width="21%" valign="middle"><span class="style4">)</span></td>
</tr>
</table></td>
</tr>
</table></td>
<td width="11%" align="left" valign="top"><span class="style4"><span
class="style6"><sup>T</sup></span>=</span></td>
<td width="49%"><table width="100%" border="0" cellspacing="0"
cellpadding="0">
<tr>
<td width="48%"><table width="100%" border="0" cellspacing="0"
cellpadding="0">
<tr>
<td width="10%" valign="middle"><span class="style4">(</span></td>
<td width="57%" valign="middle"><br>
<input name="a111" type="text" id="a111" value="<? echo $a1; ?>" size="2" />
<input name="a222" type="text" id="a222" value="<? echo $a2; ?>" size="2" />
<br>
<input name="a333" type="text" id="a333" value="<? echo $a3; ?>" size="2" />
<input name="a444" type="text" id="a444" value="<? echo $a4; ?>" size="2"
/></td>
<td width="33%" valign="middle"><span class="style4">)<span
class="style6"><sup>T</sup></span></span></td>
</tr>
</table></td>
<td width="6%"><span class="style6">+</span></td>
<td width="46%"><table width="100%" border="0" cellspacing="0"
cellpadding="0">
<tr>
<td width="9%" valign="middle"><span class="style4">(</span></td>
180
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
<td width="57%" valign="middle"><br>
<input name="b111" type="text" id="b111" value="<? echo $b1; ?>" size="2" />
<input name="b222" type="text" id="b222" value="<? echo $b2; ?>" size="2" />
<br>
<input name="b333" type="text" id="b333" value="<? echo $b3; ?>" size="2" />
<input name="b444" type="text" id="b444" value="<? echo $b4; ?>" size="2"
/></td>
<td width="34%" valign="middle"><span class="style4">)<span
class="style6"><sup>T</sup></span></span></td>
</tr>
</table></td>
</tr>
</table></td>
</tr>
</table>
<br></td>
</tr>
<tr>
<td height="95" valign="top" bgcolor="#FFCCCC"><table width="100%"
border="0" cellspacing="0" cellpadding="0">
<tr>
<td width="51%" align="center"><table width="62%" border="0"
cellpadding="0" cellspacing="0">
<tr>
<td width="22%" align="center" valign="middle">C1 =</td>
<td width="78%"><table width="100%" border="0" cellspacing="0"
cellpadding="0">
<tr>
<td width="18%" valign="top"><span class="style4">[</span></td>
<td width="62%" valign="middle"><br>
<input name="ao1" type="text" id="ao1" value="<? echo
number_format($out1,2,'.',''); ?>" size="2" />
<input name="ao2" type="text" id="ao2" value="<? echo
number_format($out2,2,'.','');; ?>" size="2" />
181
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
<br>
<input name="ao3" type="text" id="ao3" value="<? echo
number_format($out3,2,'.','');; ?>" size="2" />
<input name="ao4" type="text" id="ao4" value="<? echo
number_format($out4,2,'.','');; ?>" size="2" /></td>
<td width="20%" valign="top"><span class="style4">]</span></td>
</tr>
</table></td>
</tr>
</table></td>
<td width="49%"><table width="62%" border="0" cellpadding="0"
cellspacing="0">
<tr>
<td width="22%" align="center" valign="middle">C2 =</td>
<td width="78%"><table width="100%" border="0" cellspacing="0"
cellpadding="0">
<tr>
<td width="18%" valign="top"><span class="style4">[</span></td>
<td width="70%" valign="middle"><br>
<input name="ao11" type="text" id="ao11" value="<? echo
number_format($out11,2,'.',''); ?>" size="2" />
<input name="ao22" type="text" id="ao22" value="<? echo
number_format($out22,2,'.',''); ?>" size="2" />
<br>
<input name="ao33" type="text" id="ao33" value="<? echo
number_format($out33,2,'.',''); ?>" size="2" />
<input name="ao44" type="text" id="ao44" value="<? echo
number_format($out44,2,'.',''); ?>" size="2" /></td>
<td width="12%" valign="top"><span class="style4">]</span></td>
</tr>
</table></td>
</tr>
182
193
194
195
196
197
198
199
200
201
</table></td>
</tr>
</table></td>
</tr>
</table>
</div>
</form>
</body>
</html>
รปท 5.30 เวบเพจแสดงผลลพธของการพสจนคณสมบต (A+B)T = AT + BT
4) ทดสอบการทางานของโปรแกรมโดยการเปดเบราวเซอร IE จากนนพมพ URL คอ 127.0.0.1/
phptoscilab/matrix02.php จากนนปอนขอมลเมทรกซ A เทากบ [2, 3; 4, 5] และเมทรกซ
A เทากบ [4, 5; 6, 7] และกดปม “คานวณ” หนงครง กจะไดผลลพธตามรปท 5.30
183
รปท 5.31 การเปลยนแถบชอเรองดวยโปรแกรม Dreamweaver
รปท 5.32 การเปลยนชอไฟลของฟอรมเวบไซตเปน matrix03.php ดวยโปรแกรม Dreamweaver
5.2.3 การพสจนคณสมบต (AB)T = ATBT
ในทานองเดยวกนการพสจนคณสมบตทสามจะออกแบบตามรปท 5.31 โดยทาตามขนตอนดงน
1) เปดโปรแกรม Adobe Dreamwaver CS 5.5 และทาการคดลอกโคดหรอไฟลตวอยางการ
พสจนคณสมบตท 2 โดยใหแกไขโคดบางบรรทดและบนทกเปนชอไฟลวา “matrix03.php”
ดงตอไปน
บรรทดท 5 เปลยนเครองหมายบวกเปนเครองหมายคณดงน
5
$code1 = "output1 = ($a*$b)'\noutput2 = $a'*$b'\noutput1 =
iconvert(output1,0);\nsavematfile('output1.txt','output1');\noutput2 =
iconvert(output2,0);\nsavematfile('output2.txt','output2');\nexit;";
บรรทดท 6 เปลยนชอไฟลเปน matrix03.sce ดดงน
6 file_put_contents("matrix03.sce", $code1);
บรรทดท 17 เปลยนชอแถบชอเรองเปน “การพสจนคณสมบตท 3” ดงน (รปท 5.31)
17 <title>การพสจนคณสมบตท 3</title>
บรรทดท 26 แกไขชอไฟลของฟอรมเวบไซตเปน matrix03.php ดงน (รปท 5.32)
26 <form id="form1" name="form1" method="post" action="matrix03.php">
184
รปท 5.33 การเปลยนสมการของคณสมบตท 2 เปนคณสมบตท 3
รปท 5.34 การเปลยนเครองหมายบวกเปนเครองหมายคณ “×”
บรรทดท 30 แกไขสมการของคณสมบตท 2 เปนคณสมบตท 3 ดงน (รปท 5.33)
30 <td width="100%" height="32" valign="top" bgcolor="#FFFFFF"><div align=
"center"><strong>คณสมบตท 3 (AB)<sup>T</sup> = A<sup>T</sup>
B<sup>T</sup> </strong></div></td>
บรรทดท 105 และ 134 เปลยนเครองหมายบวกเปนเครองหมายคณดงน (รปท 5.34)
105 <td width="15%" align="left"><span class="style6">×</span></td>
134 <td width="6%"><span class="style6">×</span></td>
2) ทดสอบการทางานของโปรแกรมโดยการเปดเบราวเซอร IE จากนนพมพ URL คอ 127.0.0.1/
phptoscilab/matrix03.php จากนนปอนขอมลเมทรกซ A เทากบ [2, 3; 4, 5] และเมทรกซ
B เทากบ [4, 5; 6, 7] แลวกดปม “คานวณ” หนงครง กจะไดผลลพธตามรปท 5.35
5.3 การหาคาลอการทมฐานใดๆ
ในสวนนจะแสดงตวอยางการใชโปรแกรม PHP สรางเวบเพจสาหรบหาคาลอการทมฐานใดๆ ดงน
185
รปท 5.35 เวบเพจแสดงผลลพธของการพสจนคณสมบต (AB)T = ATBT
รปท 5.36 ฟอรมการหาหาคาลอการทมฐานใดๆ
1) เรมตนเปดโปรแกรม Adobe Dreamwaver CS 5.5 ขนมา และออกแบบฟอรมตามรปท 5.36
186
รปท 5.37 ตารางในสวนปอนขอมลของรปท 5.36
รปท 5.38 ตวอยางการใสสของพนตารางดวย Tab Editor
รปท 5.39 การสรางตารางในสวนแสดงผลลพธของรปท 5.36
2) สรางฟอรมและออกแบบตารางในสวนปอนขอมล และใส Textbox ตามรปท 5.37 โดยใสส
เสนขอบเทากบ #FFCC00 และสพนเทากบ #FFFF99 ผานทาง Tab Editor ตามรปท 5.38
3) ออกแบบตารางในสวนผลลพธ Textbox และปมคานวณ ตามรปท 5.39 – 5.40 และใสส
เสนขอบเทากบ #CCCC00 และสพนเทากบ #CCFF99 (ผานทาง Tab Editor)
187
รปท 5.40 การสรางปมคานวณของรปท 5.36
ตารางท 5.11 การกาหนดคาพารามเตอรของ Text Filed และ Button ในรปท 5.36
ออบเจกต ชอ คณสมบต คาทกาหนด
Text Field x Char width = 10 <? echo $x; ?>
Text Field base Char width = 10 <? echo $base; ?>
Button submit2 - คานวณ
Text Field out Char width = 10 <? echo $out; ?>
รปท 5.41 การกาหนดชอเวบเพจในฟอรม Action ของรปท 5.36
4) กาหนดคาพารามเตอรของ Text Filed และ Button ในฟอรมตางๆ ตามตารางท 5.11
188
5) ในสวนของฟอรม Action ใหใสชอเวบเพจ logx.php ตามรปท 5.41
6) เขยนโคดภาษา PHP และบนทกไฟลชอวา “logx.php” ดงน
โคดของหนาเพจสาหรบการหาคาลอการทมฐานใดๆ
1
2
3
4*
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
<?php //โคดในสวนของภาษา PHP รวมกบโปรแกรม SCILAB
if($_POST[x]!="" and $_POST[base]!="") {
$path1=$_SERVER["DOCUMENT_ROOT"]; //สรางตวแปรทอยของไฟล www
$code1 = "exec('$path1/phptoscilab/logXN.sci');\noutput=logXN($x, $base);
\nsavematfile('logx.txt','output');\nexit;"; //เขยนโคด SCILAB
file_put_contents("logx.sce", $code1); //สรางไฟลสครปตชอวา logx.sce
$path2=$_SERVER["SystemRoot"]; //สรางตวแปรทอยของ windows
$com = "$path2/scilab-4.1.2/bin/Scilex.exe -nwni -nb -f logx.sce";
exec($com); //ประมวลผลไฟลสครปต
$out = number_format(file_get_contents("logx.txt"));
}
?>
<html> <!--โคดในสวนของภาษา HTML-->
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-874" />
<title>การหาผลลพธ Log ฐานใดๆ ดวย SCILAB </title>
</head>
<body>
<form id="form1" name="form1" method="post" action="logx.php">
<p>การหาผลลพธ Log ฐานใดๆ<br>
<br>
ปอนขอมล</p>
<table width="34%" border="1" cellpadding="0" cellspacing="0" bordercolor=
"#FFCC00" bgcolor="#FFFF99">
<tr>
<td height="51"><div align="center">x =
<input name="x" type="text" id="x" value="<? echo $x; ?>" size="10" />
Base =
<input name="base" type="text" id="base" value="<? echo $base; ?>" size="10" />
</div></td>
</tr>
189
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
</table>
<br>
<table width="34%" border="1" cellpadding="0" cellspacing="0" bordercolor=
"#CCCC00" bgcolor="#CCFF99">
<tr>
<td height="51"><div align="center">Log x<sub>Base</sub> =
<input name="out" type="text" id="out" value="<? echo $out; ?>" size="10" />
<br>
</div></td>
</tr>
</table>
<br>
<table width="34%" cellpadding="0" cellspacing="0">
<tr>
<td height="51"><div align="center">
<input type="submit" name="Submit" value=" คานวณ " />
<br>
</div></td>
</tr>
</table>
<p> </p>
</form>
</body>
</html>
หมายเหต บรรทดท 4 จะเรยกฟงกชนทสรางขนใหมจากโปรแกรม SCILAB ซงมการทางาน
เหมอนกบฟงกชน logXN.sci ทใชในหวขอท 3.4 โดยจะตองเกบไฟลนไวทสารบบ C:\
AppServ\www\phptoscilab
7) ทดสอบการทางานของโปรแกรมโดยการเปดเบราวเซอร IE จากนนพมพ URL คอ
127.0.0.1/phptoscilab/logx.php จากนนปอนขอมลดงน ให X มคาเทากบ 8 และ Base ม
คาเทากบ 2 แลวกดปม “คานวณ” หนงครง กจะไดผลลพธตามรปท 5.42
190
รปท 5.42 ตวอยางการหาคาลอการทมของ 8 ฐาน 2 ซงมคาเทากบ 3 ผานเวบไซต
ตารางท 5.12 การกาหนดคาพารามเตอรของ Text Filed และ Button ในรปท 5.43
ออบเจกต ชอ คณสมบต คาทกาหนด
Text Field p Char width = 20 <? echo $p; ?>
Text Field q Char width = 20 <? echo $q; ?>
Button Submit - คานวณ
OUTPUT <iframe src="<? echo $url; rand(1,3000); ?>" frameborder="0" height="100"></iframe>
5.4 การบวกและลบของสมการพหนาม
ในสวนนจะแสดงตวอยางการใชโปรแกรม PHP สรางเวบเพจสาหรบบวกและลบสมการพหนามดงน
1) เรมตนเปดโปรแกรม Adobe Dreamwaver CS 5.5 ขนมา และออกแบบฟอรมตามรปท 5.43
2) สรางฟอรมและออกแบบตารางในสวนปอนขอมล และใส Textbox ตามรปท 5.44 โดยใสส
เสนขอบเทากบ #FFCC00 และสพนเทากบ #FFFF99 (ผานทาง Tab Editor)
3) ออกแบบตารางในสวนผลลพธ Textbox และปมคานวณ ตามรปท 5.45 และใสสเสนขอบ
เทากบ #CCCC00 และสพนเทากบ #CCFF99 (ผานทาง Tab Editor)
4) กาหนดคาพารามเตอรของ Text Filed และ Button ในฟอรมตางๆ ตามตารางท 5.12
191
รปท 5.43 เวบเพจของการบวกและลบสมการหหนาม
รปท 5.44 การสรางตารางในสวนปอนขอมลของรปท 5.43
192
รปท 5.45 การสรางตารางในสวนแสดงผลลพธ
รปท 5.46 การกาหนดชอเวบเพจในฟอรม Action ของรปท 5.43
5) ในสวนของฟอรม Action ใหใสชอเวบเพจ polyx.php ตามรปท 5.46
<iframe src="<? echo $url; rand(1,3000); ?>"
frameborder="0" height="100"></iframe>
193
6) เขยนโคดภาษา PHP และบนทกไฟลชอวา “polyx.php” ดงน
โคดของหนาเพจสาหรบการบวกและลบสมการพหนาม
1
2
3
4
5
6*
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
<?php //โคดในสวนของภาษา PHP รวมกบโปรแกรม SCILAB
$url = ""; //สรางตวแปร url เทากบคาวาง
if($_POST[p]!="" and $_POST[q]!="") {
$path1=$_SERVER["DOCUMENT_ROOT"]; //สรางตวแปรทอยของไฟล www
$url = "001.html"; //สรางตวแปร url เทากบไฟล 001.html
$code1 = "x=poly(0,'x');\np=$p;\nq=$q;\npq1=p+q;\npq2=p-q;\n
exec('$path1/phptoscilab/pohtml01.sci',-1);\nexec('$path1/phptoscilab/pohtml02.sci',-
1);\nexec('$path1/phptoscilab/pohtml03.sci',-1);\np1= pol2tex(p);\nq1= pol2tex(q);\n
pl1= pol2tex(pq1);\npl2= pol2tex(pq2);\npohtml01('$path1/phptoscilab/001.html');\n
pohtml02('$path1/phptoscilab/001.html',pl1,'p + q ');\n
pohtml02('$path1/phptoscilab/001.html',pl2,'p - q ');\n
pohtml03('$path1/phptoscilab/001.html');\nexit;"; //เขยนโคด SCILAB
file_put_contents("polyx.sce", $code1); //สรางไฟลสครปตชอวา polyx.sce
$path2=$_SERVER["SystemRoot"]; //สรางตวแปรทอยของวนโดวส
$com = "$path2/scilab-4.1.2/bin/Scilex.exe -nwni -nb -f polyx.sce";
exec($com); //ประมวลผลไฟลสครปต
}
?>
<html> <!--โคดในสวนของภาษา HTML-->
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-874" />
<title>การบวกและลบสมการพหนาม</title>
</head>
<body>
<form id="form1" name="form1" method="post" action="polyx.php">
<p>การบวกและลบสมการพหนาม<br>
<br>
ปอนขอมล</p>
<table width="34%" border="1" cellpadding="0" cellspacing="0" bordercolor=
"#009933" bgcolor="#CCFFCC">
<tr>
<td height="76"><div align="center">
194
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
<table width="100%" border="0" align="center" cellpadding="0"
cellspacing="0">
<tr>
<td width="23%"><div align="center">p(x) </div></td>
<td width="77%">=
<input name="p" type="text" id="p" value="<? echo $p; ?>" size="20" /></td>
</tr>
<tr>
<td><div align="center">q(x)</div></td>
<td>=
<input name="q" type="text" id="q" value="<? echo $q; ?>" size="20" /></td>
</tr>
</table>
</div></td>
</tr>
</table>
<br>
<table width="34%" border="1" cellpadding="0" cellspacing="0" bordercolor=
"#FF3399" bgcolor="#FF99FF">
<tr>
<td height="82" align="center" valign="middle"><br>
<iframe src="<? echo $url; rand(1,3000); ?>" frameborder="0" height="100"></iframe>
</td>
</tr>
</table>
<br>
<table width="34%" cellpadding="0" cellspacing="0">
<tr>
<td height="51"><div align="center">
<input type="submit" name="Submit" value=" คานวณ " />
<br>
</div></td>
</tr>
</table>
<p> </p>
195
58
59
60
</form>
</body>
</html>
หมายเหต บรรทดท 6 จะมการเรยกฟงกชนทสรางขนใหมจากโปรแกรม SCILAB ซงมการ
ทางานเหมอนกบฟงกชน pohtml01.sci, pohtml02.sci และ pohtml03.sci ทใชในหวขอท
3.5 โดยจะตองเกบไฟลทงหมดนไวทสารบบ C:\AppServ\www\phptoscilab
7) ทดสอบการทางานของโปรแกรมโดยการเปดเบราวเซอร IE จากนนพมพ URL คอ 127.0.0.1/
phptoscilab/polyx.php จากนนปอนขอมลทอยในรปของ LaTeX ดงน p(x) เทากบเลข
x^2 + 50 และ q(x) เทากบ x^2 + 25 แลวกดปม “คานวณ” หนงครงกจะไดผลลพธตาม
รปท 5.47
รปท 5.47 ตวอยางการการบวกและลบสมการหหนามผานเวบไซต
196
รปท 5.48 เวบเพจของการวาดกราฟสองมต
5.5 การวาดกราฟสองมต
ในสวนนจะแสดงตวอยางการใชโปรแกรม PHP สรางเวบเพจสาหรบวาดกราฟสองมตดงน
1) เรมตนเปดโปรแกรม Adobe Dreamwaver CS 5.5 ขนมา และออกแบบฟอรมตามรปท 5.48
2) สรางฟอรมและออกแบบตารางในสวนปอนขอมล และใส Textbox และ Button ตามรปท
5.49 โดยสพนเทากบ #FFFF99 (ผานทาง Tab Editor)
3) ออกแบบในสวนผลลพธ (แสดงผลลพธเปนรปภาพ) โดยใชเครองมอตามรปท 5.50
4) กาหนดคาพารามเตอรของ Text Filed และ Button ในฟอรมตางๆ ตามตารางท 5.11
5) ในสวนของฟอรม Action ใหใสชอเวบเพจ v2d.php ตามรปท 5.51
197
รปท 5.49 การสรางตารางในสวนปอนขอมลของรปท 5.48
รปท 5.50 การออกแบบสวนแสดงผลลพธของรปท 5.48
ตารางท 5.13 การกาหนดคาพารามเตอรของ Text Filed และ Button ในรปท 5.48
ออบเจกต ชอ คณสมบต คาทกาหนด
Text Field x1 Char width = 4, Max chars = 2 <? echo $x1; ?>
Text Field x2 Char width = 4, Max chars = 4 <? echo $x2; ?>
Text Field x3 Char width = 4, Max chars = 2 <? echo $x3; ?>
Text Field f1 Char width = 4, Max chars = 2 <? echo $f1; ?>
Text Field y1 Char width = 30, Max chars = 30 <? echo $y1; ?>
Button Submit - คานวณ
OUTPUT <img src="test.gif?<?=rand(1,3000); ?>" width="610" height="461" border="1" >
<img src="test.gif?<?=rand(1,3000); ?>"
width="610" height="461" border="1" >
198
รปท 5.51 การกาหนดชอเวบเพจในฟอรม Action ของรปท 5.48
6) เขยนโคดภาษา PHP และบนทกไฟลชอวา “logx.php” ดงน
โคดของหนาเพจสาหรบการวาดกราฟสองมต
1
2
3
4
5
6
7
8
9
10
<?php //โคดในสวนของภาษา PHP รวมกบโปรแกรม SCILAB
if($_POST[x1]!="" and $_POST[x2]!="" and $_POST[x3]!="" and $_POST[f1]!=""
and $_POST[y1]!="") {
$y1 = stripslashes($_POST[y1]);
$path1=$_SERVER["DOCUMENT_ROOT"]; //สรางตวแปรทอยของไฟล www
$path2=$_SERVER["SystemRoot"]; //สรางตวแปรทอยวนโดวส
$code1 = "x = $_POST[x1]:$_POST[x2]:$_POST[x3];\n f = $_POST[f1];\n y =
$y1;\n plot(x, y);\nxs2gif(0,'$path1/phptoscilab/test.gif');exit();";
file_put_contents("v2d.sce", $code1); //สรางไฟลสครปตชอ v2d.sce
$com = "$path2/scilab-4.1.2/bin/Scilex.exe -nwni -nb -f v2d.sce";
exec($com); //ประมวลผลไฟลสครปต
}
199
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
?>
<html> <!--โคดในสวนของภาษา HTML-->
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-874">
<title>การใชงานวาดกราฟ 2 มต</title>
<style type="text/css">
<!--
.style1 {font-size: 12px}
-->
</style>
</head>
<body>
<form id="form1" name="form1" method="post" action="v2d.php">
<div align="center">การใชงานวาดกราฟ 2 มต<br>
<br>
</div>
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td width="64%"><img src="test.gif?<?=rand(1,3000); ?>" width="610" height="461"
border="1" ></td>
<td width="36%" align="center" valign="top"><table border="0" cellpadding="4"
cellspacing="4" bgcolor="#FFFF99">
<tr>
<td width="24" height="40">x =</td>
<td width="46"><div align="center"><span class="style1">คาเรมตน</span><br>
</div>
<div align="center">
<input name="x1" type="text" size="4" maxlength="2" value="<? echo $x1; ?>" />
</div></td>
<td width="65"><div align="center"><span class="style1">คาระหวางขน
</span><br>
:
<input name="x2" type="text" size="4" maxlength="4" value="<? echo $x2; ?>" />
</div></td>
<td width="61"><div align="center"><span class="style1">คาสดทาย
200
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
</span><br>
:
<input name="x3" type="text" size="4" maxlength="2" value="<? echo $x3; ?>" />
</div></td>
</tr>
<tr>
<td>f = </td>
<td><div align="center">
<input name="f1" type="text" size="4" maxlength="2" value="<? echo $f1; ?>" />
</div></td>
<td><div align="center"></div></td>
<td><div align="center"></div></td>
</tr>
<tr>
<td>y = </td>
<td colspan="3"><div align="center">
<input name="y1" type="text" size="30" maxlength="30" value="<? echo $y1; ?>"
/>
</div></td>
</tr>
<tr>
<td colspan="4" bgcolor="#FFFFFF"><div align="center">
<input type="submit" name="Submit" value=" คานวณ " />
</div></td>
</tr>
</table></td>
</tr>
</table>
<br>
</form>
</body>
</html>
201
รปท 5.52 ตวอยางการวาดกราฟสองมตของสมการ y = sin(2*%pi*f*x) ผานเวบไซต
7) ทดสอบการทางานของโปรแกรมโดยการเปดเบราวเซอร IE จากนนพมพ URL คอ 127.0.0.1/
phptoscilab/v2d.php จากนน ทาการวาดกราฟสองมต เชน ถาตองการวาดรปสญญาณ y =
sin(2πfx) เมอ f คอความถมหนวยเปนเฮรตซ กใหปอนขอมลของอนพต x = 0 : 0.01 : 2,
f =1 และ y = sin(2*%pi*f*x) แลวกดปม “คานวณ” หนงครงกจะไดผลลพธตามรปท 5.52
5.6 สรปทายบท บทนไดนาเสนอตวอยางวธการสรางสอการสอนผานเวบไซตโดยใชโปรแกรมภาษา PHP รวมกบ
โปรแกรม SCILAB ซงประกอบดวย การบวก/ลบ/คณ/หาร ของเลขสองจานวน การหาดเทอร
มแนนตและอนเวอรสของเมทรกซ การพสจนคณสมบตของเมทรกซ การหาคาลอการทมฐานใดๆ
การบวกและลบสมการพหนาม และการวาดกราฟสองมต เพอเปนแนวทางใหผอานสามารถนาไป
พฒนาตอยอดหรอประยกตใชงานดานอนได
กราฟสองมต
202
5.7 แบบฝกหดทายบท 1. จงเขยนโปรแกรมหาคาจานวนเฉพาะตงแต 1 ถง N ผานเวบไซต
2. จงเขยนโปรแกรมหาคาตวคณรวมนอย (ครน.) จานวน 3 จานวน ผานเวบไซต
3. จงสรางโปรแกรมแกสมการพหนามทเปนฟงกชนของตวแปรเดยว ผานเวบไซต
4. จงเขยนโปรแกรมวาดกราฟ 2 มตดงรปท 1.5 (คาสง polarplot) ผานเวบไซต
5. จงเขยนโปรแกรมวาดกราฟ 3 มตดงรปท 1.6 (คาสง plot3d) ผานเวบไซต
203
บทท 6 ความรเบองตนโปรแกรม SWISH Max
ในบทนจะอธบายพนฐานการใชงานโปรแกรม SWISH Max [11 – 13] ทใชสาหรบสรางไฟลภาพ
เคลอนไหวแบบแฟลช (flash animation) โดยจะเรมจากเครองมอตางๆ ของโปรแกรม SWISH Max
และคาสงพนฐานสาหรบการนาไปประยกตใชงานรวมกบโปรแกรม SCILAB
6.1 ประวตความเปนมาของโปรแกรม SWISH Max
SWISH Max เปนโปรแกรมทพฒนาโดยบรษท SWiSHzone.com สาหรบใชสรางงานทางดาน
กราฟก เชน โลโกโฆษณา แถบประกาศ เมน รวมถงการสรางเวบไซตแบบพลวต (dynamic) ท
สามารถโตตอบกบผใชได นอกจากนยงสามารถสรางงานแบบภาพเคลอนไหว (animation) เชน
การสรางรปภาพเคลอนไหวทมการเลนเสยงเพลงพรอมกนในเวลาเดยวกน เหมอนโปรแกรมแฟลช
แตทาไดสะดวกและรวดเรวกวา เพราะฉะนนจงทาให SWISH Max เปนโปรแกรมทนาสนใจสาหรบ
ผทตองการสรางงานแบบภาพเคลอนไหวเพอนาเสนองานผานทางเวบไซต รวมถงการออกแบบ
และพฒนาเวบไซตใหมรปแบบใหมทนาสนใจ
โดยทวไปโปรแกรม SWISH Max มขอดดงน
มเครองมอตางๆ ทชวยสรางชนงานไดหลากหลาย (ทงการสรางภาพนงและภาพเคลอนไหว) ท
สามารถใสลกเลน (effect) ไดมากกวา 230 แบบ
ควบคมการทางานดวยสครปต (script) เพอใหงานทสรางขนเปนไปตามความตองการ
แสดงผลในโปรแกรม Flash Player, Browser และ Media Player ไดโดยไมตองตดตงโปรแกรม
Macromedia Flash ในเครองคอมพวเตอร
นาเสนองานในรปแบบของไฟล Shockwave Flash (.swf) ทาใหนาไปใชสรางเวบเพจได
แปลงเปนไฟล avi เพอใชในการตดตอภาพยนตรได
โปรแกรม SWISH Max มลขสทธซอฟตแวร อยางไรกตามหนงสอเลมนจะใชโปรแกรม
SWISH Max4 เวอรชนทดลอง (trail version) ซงดาวนโหลดไดทเวบไซต www.swishzone.com
204
รปท 6.1 ขนตอนการตดตงโปรแกรม SWISH Max4
6.2 การตดตงโปรแกรม SWISH Max4
หนงสอเลมนจะกลาวถงโปรแกรม SWISH Max เวอรชนทดลอง (ใชไดฟร 15 วน) โดยหลงจาก
ทาการดาวนโหลดไฟล SetupSWISH Max4.exe เสรจแลว ใหทาตามขนตอนดงน
1) กดดบเบลคลกทไฟลนเพอทาการตดตงโปรแกรม SWISH Max ตามขนตอนในรปท 6.1 (ก) – (ง)
จากนนกดปม “Install” ในรปท 6.1 (จ) เพอเรมตดตงโปรแกรม
(ค) (ง)
(ก) (ข)
(จ)
ตดตงตวเขารหส LAME
ACM เพมเตม
ยอมรบขอตกลงการใชงาน
เลอกสารบบในการตดตงโปรแกรม
ตดตงโปรแกรม
(ฉ)
205
รปท 6.2 ขนตอนการตดตง LameACM (ตวเขารหส MP3)
2) ระหวางการตดตงโปรแกรม กจะปรากฏหนาตางใหตดตง LameACM (MP3 encoder) ตาม
รปท 6.1 (ฉ) ใหกดปม OK เพอทาการตดตง LameACM ตามขนตอนในรปท 6.2 (ก) – (ฉ)
3) เมอกดปม “Finish” ในรปท 6.2 (ฉ) กจะไดหนาตางเรมตนการใชงานโปรแกรม SWISH Max4
ตามรปท 6.3
4) กดปม Try ในรปท 6.3 เพอไปทหนาเวบเพจตามรปท 6.4
(ก) (ข)
(ค) (ง)
(จ) (ฉ)
เลอกสารบบในการตดตง LameACM
เปดใชงาน
โปรแกรม Swishmax
206
รปท 6.3 หนาตางเรมตนการใชงานโปรแกรม SWISH Max4
รปท 6.4 เวบเพจสาหรบการลงทะเบยนแบบชวคราวของโปรแกรม SWISH Max4
5) ปอนอเมลสาหรบการลงทะเบยนแบบชวคราวในรปท 6.4 จากนนกดปม “Go” กจะไดหนาตาง
โปรแกรม SWISH Max4 ตามรปท 6.5
6) เปดอเมลทใชลงทะเบยน และเปดอเมลทสงมาจากบรษท SWiSHzone.com จะพบรหสผาน
ใหนารหสผานนมาวางในชองใสรหสผานในรปท 6.3 กจะสามารถใชงานโปรแกรม SWISH
Max4 ไดตามปกต
ชองใสรหสผาน
207
รปท 6.5 เวบเพจหลงจากผานการลงทะเบยนแบบชวคราว
6.3 สวนตอประสานกบผใชของโปรแกรม SWISH Max4
เมอเปดโปรแกรม SWISH Max4 จะไดหนาตางตามรปท 6.6 โดยสามารถเรมตนใชงานไดโดยการ
สรางงานใหมขนมา (New) กจะไดหนาตางในรปท 6.7 ซงมสวนตอประสานกบผใชดงน
หมายเลข 1 คอเมนเพมสครปต (script) และลกเลน (effect) ลงในซน (scene)
หมายเลข 2 คอเฟรมแสดงชวงเวลา (timeline) ของภาพเคลอนไหว
หมายเลข 3 คอเครองมอ (tools) หรอกลองเครองมอทใชสาหรบเครองมอพนฐานทวไป
ตามทแสดงในตารางท 6.1
หมายเลข 4 คอซนจดหนา (layout scene) สาหรบแสดงรปและตวอกษรทจดวางไว
หมายเลข 5 คอ Properties ใชแกไขคาคณสมบตตางๆ
หมายเลข 6 คอหนาตางแสดงออบเจกต (object) ตางๆ ทใสเขามาในซน
หมายเลข 7 คอเมนหลก (main menu)
หมายเลข 8 คอแถบเครองมอเลนภาพยนตร (Play Movie)
บอกวารหสผานไดถกสงมาทอเมลทลงทะเบยนแลว
208
รปท 6.6 หนาตางโปรแกรม SWISH Max4
รปท 6.7 สวนตอประสานกบผใชของโปรแกรม SWISH Max4
1
3
4
5
2
6
7 8
209
ตารางท 6.1 รายละเอยดของเครองมอพนฐาน
สญลกษณ อปกรณ รายละเอยด
เลอก (Select) เลอก และยายวตถไดตามตองการ
เปลยนรปราง (Reshape) เมอกดคลกขวาทจดของ Shape เลอก Smooth จะ
เปลยนความโคงได
จดการภาพ (Fill Transform) แกไข หรอปรบขนาดภาพทอยใน Image เชน ภาพถาย
เคลอนไหว (Motion) กาหนดตาแหนงใหม ใหวตถ move ไปถงตาแหนงนน
เสน (Line) เขยนเสนตรง ถากาหนด effect เปน move จะกาหนด
properties ของ Rotate to เปน + หรอ - กได
ดนสอ (Pencil) วาดเสนไดโดยอสระ
รปหลายเหลยม (Bezier) กาหนดจด จนคลกจดเดม หรอกดดบเบลคลก
ขอความ (Text) เขยนขอความเปนภาษาไทยหรอภาษาองกฤษ
วงกลม (Ellipse) วาดวงกลม หรอวงร
สเหลยม (Rectangle) วาดสเหลยม
สเหลยมมน (Autoshape) วาดสเหลยมทเปลยนเปนวงกลมหรอวงรได
เลอน (Pan) ยายมมมอง
ยอ/ขยาย (Zoom) การยอและขยายมมมอง (กด Shift จะลดขนาด)
แกขนาด (Scale) ปรบขนาด กวาง และสง (ไมทาให frame1 เปลยน ถา
ปรบ frame20 ใน move)
แกขนาด (Resize) ปรบขนาด กวาง และสง (มผลตอ frame1 ถาปรบ
frame20 ใน move)
หมน (Rotate) หมนภาพตามตาแหนง Anchor
เลอนจด (Distort) ยายเฉพาะมมใดมมหนง ไมมผลตอมมอน
นอกจากนแถบเมนหลก (หมายเลข 7) ในรปท 6.7 รวบรวมคาสงทนยมใชงานดงน
เมน File ประกอบดวย
คาสง รายละเอยด
New สรางไฟลใหม
New Movie การสรางไฟลใหมสาหรบ Movie
Open เรยกไฟลทตองการใชงานโดยมนามสกลเปน .swf
210
คาสง รายละเอยด
Save การบนทกงานชนงานปจจบนทตองการเกบไว
Save as การบนทกงานชนงานปจจบนทตองการโดยเปลยนเปนชอไฟลอน
Save All การบนทกงานทงหมด
Close ปดชนงานปจจบน
Close ปดชนงานทงหมด
New Project การสรางไฟลใหมสาหรบ Project
Open Project เรยกไฟลทตองการใชงานโดยมนามสกลเปน .swp
Samples เปดงานตวอยางทโปรแกรม SWISH Max4 มมาให เพอใชในการศกษา
Import to Libray การนาขอความ ภาพนง ภาพเคลอนไหว เสยง เขามาใชงาน โดยจะวางไวใน
ไลบรารกอน แลวจงเรยกออกมาใชงานทหลง
Import to Stage การนาขอความ ภาพนง ภาพคลอนไหว เสยง เขามาใชงาน โดยวางภาพบน
หนางานทนท
Test ทดสอบงานทสราง (กอน export งานไปใชจรง) ซงสามารถทดสอบแบบ
เลนผานโปรแกรม SWISH Max หรอทดสอบผานทางเบราวเซอรกได
Export การสงออกงานทสรางขนเพอนาไปใชงาน (ปกตจะเปนไฟลนามสกล
*.swf แตสามารถแปลงเปน .html หรอ .avi กได)
Export Seting การตงคาของการสงออกงาน
Conver Video to FLV แปลงไฟลวดโอเปนไฟล FLV
Recent Movies แสดงไฟลงานทเคยเปดมาแลว
Exit ออกจากโปรแกรม SWISH Max4
เมน Edit ประกอบดวย
คาสง รายละเอยด
Undo ยกเลกขนตอนทกาลงทา ณ ขณะนน
Redo ยกเลกการกระทาของ Undo
Cut object ตดออบเจกต
Copy object คดลอกออบเจกต
Paste EMF การวางเปนไฟล emf (ทตดหรอคดลอกมา)
Paste in Place การวางในพนท (ทตดหรอคดลอกมา)
Paste Special การวางแบบพเศษ (ทตดหรอคดลอกมา)
Delete Scene ลบออบเจกต
Select all Objects เลอกทกออบเจกตในพนทกาลงทางาน (working space)
Deselect All ยกเลกการเลอกออบเจกตทงหมด
211
คาสง รายละเอยด
Find การคนหาออบเจกต
Replace การแทนท
Properties แสดงคณสมบตของออบเจกตทเลอก
Preference เปนเมนใชปรบทางเลอกการตงคาโปรแกรมสาหรบผใชงาน
เมน View ประกอบดวย
คาสง รายละเอยด
Toolbar แถบเครองมอ (มเมนยอยใหเปดใชงานตางๆ เชน Control bar)
Zoom ขยาย/ลด มมมอง (เชน Zoom in, Zoom out, View at 100%)
Show แสดงไมบรรทดเพออานวยความสะดวกในการกาหนดระยะ โดยจะมเมนยอย เชน
Show rulers และ Show grid เปนตน
Guides ระบเสนกรดแบบแนวนอน (Horizontal) และแนวตง (Vertical)
Snap to Grid ใหออบเจกตวงเขาหาเสนกรด (เมอนาออบเจกตมาวางใกลเสนกรด) เพอทาใหงาย
ตอการวางออบเจกตใหอยในแนวเดยวกน
เมน Insert ประกอบดวย
คาสง รายละเอยด
Scene การแทรกซน (ภายในชนงาน)
Button การแทรกปม (ภายในชนงาน)
Movie clip การแทรกคลปวดโอ (ภายในชนงาน)
External media การแทรกสอมเดยภายนอก (ภายในชนงาน)
Import Sound การแทรกเสยง (ภายนอกชนงาน)
Import Video การแทรกไฟลวดโอ (ภายนอกชนงาน)
Import Image การแทรกภาพ โดยทวไปเปนภาพนง แตสามารถแทรกภาพเคลอนไหว
ประเภท gif ได (ภายนอกชนงาน)
Import Animation การแทรกภาพเคลอนไหวประเภท swf, exe หรอ gif (ภายนอกชนงาน)
Import Vector การแทรกภาพนงประเภท vector เชนไฟล wmf (ภายนอกชนงาน)
Import Text การแทรกขอความ (ปรบแตงคณสมบตตางๆ ของขอความไดท Properties)
Effect การแทรกลกเลน (effect) ใหกบออบเจกตมใหเลอกมากกวา 230 แบบ
Script การแทรกสครปต
Insert Frame การแทรกเฟม 1 ครง (F5)
Delete Frame การลบเฟม 1 ครง (Shift+F5)
Insert Second การแทรกจานวนวนาทของลกเลนครงท 2 (Ctrl+F5)
212
คาสง รายละเอยด
Delete Second การแทรกจานวนวนาทของลกเลนครงท 2 (Ctrl+Shift+F5)
เมน Modify ประกอบดวย
คาสง รายละเอยด
Movie เปลยน Properties ของ Movie (Ctrl+J)
Scenes แบงซนออกเปนซนเลกๆ
Convert เปลยน Object ทเลอกเปนรปแบบอนๆ เชนเปนปม (button) เปน
ภาพเคลอนไหว (Sprite) หรอเปนรปทรง (Shape) เปนตน
เมน Control ประกอบดวย
คาสง รายละเอยด
Play movie แสดงภาพเคลอนไหวทงไฟล โดยจะเรมจากซนแรกไปจนถงซนสดทาย
(ทไดกาหนดไวในโปรแกรม)
Play Timeline การแสดงผลของงานของลกเลนใน Timeline
Play effect ทดสอบการแสดงผลของลกเลน
Preview Frame ดการแสดงผลในเฟรม
Stop หยดการแสดงผลของภาพเคลอนไหว
Step forward แสดงผลของเฟรมตอไป
Step back ยอนกลบไปดการแสดงผลของเฟรมกอนหนาน 1 เฟรม
Cue to End ดเฟรมสดทายของซน
Rewind to start ดเฟรมแรกสดของซน
เมน Tools ประกอบดวย
คาสง รายละเอยด
Update Content ปรบปรงเนอหา เชน Project Movie เปนตน
FTP ปรบแตงการ upload ไฟลชนงานขน webserver
Preference ปรบทางเลอกสาหรบผใช
Customize ปรบแตงโปรแกรมใหเหมาะกบความตองการผใช
Keyboard map แสดงคยลด
เมน Window ประกอบเมนทแสดง Panel ของโปรแกรม SWISH Max4 ทงหมด
เมน Help ประกอบดวยคมอและตวอยางการใชงานโปรแกรม SWISH Max4 ทงหมด
213
รปท 6.8 หนาตาง “New Movie or Project” ของโปรแกรม SWISH Max4
รปท 6.9 แสดงการตงคาคณสมบตของภาพยนตร (Movie Properties)
6.4 การสรางชนงานดวยโปรแกรม SWISH Max4
ในทนจะแสดงตวอยางการสรางชนงานดวยโปรแกรม SWISH Max4 ดงน
1) เปดโปรแกรม SWISH Max4 ขนมา จะไดหนาตาง “New Movie or Project” ตามรปท 6.8
2) เลอก default และกดปม OK ในรปท 6.8 จะไดหนาตางในรปท 6.9 จากนนคลกทปม Movie
properties (หมายเลข 5 ในรปท 6.7) และกาหนดขนาดความกวางเทากบ 500 pixels, ความสง
เทากบ 400 pixels, และ Frame Rate เทากบ 25 กจะไดหนาตางตามรปท 6.10
214
รปท 6.10 หนาตางพนทใชงานทไดกาหนดตามรปท 6.9
รปท 6.11 การเลอกเมนยอยแทรกไฟลเสยง (Import Sound), แทรกไฟลวดโอ (Import Video), แทรกไฟล
รปภาพ (Import Image), และแทรกขอความ (Import Text) ในเมน Insert
6.4.1 การแทรกไฟลรปภาพ
เมอไดหนาตางพนทใชงานตามรปท 6.10 ถาตองการแทรกไฟลรปภาพเขาไปในพนทใชงานกทาได
ดงน ใหเลอกทเมน Insert → Import Image ตามรปท 6.11 จากนนเลอกรปในสารบบทตองการ
แลวกดปม “Open” ในรปท 6.12 กจะไดรปนนมาปรากฏบนพนทใชงานดงรปท 6.13
215
รปท 6.12 การเลอกไฟลรปภาพในเมนยอย Import Image
รปท 6.13 สญรปและรปภาพทแทรกเขามา
รปภาพทแทรกเขามา
216
รปท 6.14 การเลอกไฟลเสยงในเมนยอย Import Sound
รปท 6.15 สญรปของไฟลเสยงและไฟลรปภาพในหนาตางแสดงออบเจกต
รปท 6.16 การกดปม Play Movie
6.4.2 การแทรกไฟลเสยง
ในทานองเดยวกนถาตองการแทรกไฟลเสยงเขาไปในพนทใชงานในรปท 6.10 กทาไดดงน ใหไปท
เมน Insert → Import Sound ตามรปท 6.11 จากนนเลอกไฟลเสยงในสารบบทตองการ แลวกด
ปม “Open” ในรปท 6.14 จะไดสญรปของไฟลเสยงปรากฏในหนาตางแสดงออบเจกต (หมายเลข 6
ในรปท 6.7) ตามรปท 6.15 จากนนทดสอบฟงเสยงโดยการคลกทปม Play Movie (Ctrl+Enter)
ตามรปท 6.16 จะไดยนเสยงเพลงทไดแทรกเขามา
217
รปท 6.17 การเลอกไฟลวดโอในเมนยอย Import Video
รปท 6.18 หนาตาง Import Video
6.4.3 การแทรกไฟลวดโอ
ในทานองเดยวกนถาตองการแทรกไฟลวดโอเขาไปในพนทใชงานในรปท 6.10 กทาไดดงน ไปท
เมน Insert → Import Video ตามรปท 6.11 จากนนเลอกไฟลวดโอในสารบบทตองการ แลวกด
ปม “Open” ในรปท 6.17 กจะแสดงหนาตาง Import Video ในรปท 6.18 ใหเลอกชอง Import
218
รปท 6.19 สญรปและวดโอทแทรกเขามา
As เปน Embedded Video (ฝงไฟลวดโอเขาไปในไฟลแฟลช) และคลกทปม Import จากนนทดสอบ
การใชงานโดยการกดปม Play Movie (Ctrl+Enter) ตามรปท 6.16 จะเลนไฟล Video ทนาเขามา
จะเลนทงรปและเสยงดงรปท 6.19
6.4.4 การแทรกขอความ
นอกจากนถาตองการแทรกขอความเขาไปในพนทใชงานในรปท 6.10 กทาไดดงน ไปทเมน Insert
→ Import Text ตามรปท 6.11 จากนนเลอกไฟลขอความ (นามสกล .txt) ในสารบบทตองการ
แลวกดปม “Open” ในรปท 6.20 กจะผลลพธตามรปท 6.21
หมายเหต นอกจากนโปรแกรม SWISH Max ไดเตรยมหนาตางเครองมอ (หมายเลข 3 ในรปท 6.7)
สาหรบใชสรางขอความโดยตรงดงแสดงในรปท 6.22 กลาวคอถาตองการเขยนขอความลงในพนท
ใชงาน (หมายเลข 4 ในรปท 6.7) กใหกดเลอกทสญรป และคลกทพนทใชงาน จากนนพมพ
ขอความ “มหาวทยาลยราชภฏนครปฐม” กจะไดผลลพธตามรปท 6.21 เชนกน
วดโอทแทรกเขามา
219
รปท 6.20 การเลอกไฟลขอความในเมนยอย Import Text
รปท 6.21 สญรปและขอความทแทรกเขามา
ขอความทแทรกเขามา
220
รปท 6.22 หนาตางเครองมอ (หมายเลข 3 ในรปท 6.6)
รปท 6.23 การเปลยน (ซาย) ขนาดของเสน และ (ขวา) สเสน ในเมน Properties
6.4.5 การวาดเสนและวาดรป
การวาดเสนลงในชนงานสามารถทาไดโดยใชเครองมอ สาหรบวาดเสนตรง (อยในหนาตาง
เครองมอในรปท 6.22) หรอใชเครองมอ สาหรบวาดเสนโคง โดยผใชสามารถเปลยนลกษณะ
ของเสน (เชน ความหนา หรอส) ในเมน Properties ตวอยางเชน กาหนดคาความหนา (Thick-
ness) เพอเปลยนขนาดของเสนตามรปท 6.23 (ซาย) หรอกาหนดสของเสนตามรปท 6.23 (ขวา)
นอกจากนโปรแกรม SWISH Max ยงมเครองมอสรางรปทชอวา Autoshape เมอกดเลอก
ทสญรป จะแสดงเมน 3 รายการคอ 2D, 3D และ Frames ถาสมมตวาตองการสรางรปดาว
แบบสองมต กใหเลอกทรายการ 2D → Star ตามรปท 6.24 (ซาย) แลวนามาวาดทพนทใชงาน
กจะไดรปดาวตามรปท 6.24 (ขวา)
221
รปท 6.24 (ซาย) การเลอกรปดาวในสญรป Autoshape และ (ขวา) รปดาวในพนทใชงาน
6.4.6 การบนทกชนงาน
เมอสรางชนงานเสรจแลว ถาตองการบนทกชนงานทสรางขน กทาไดโดยการคลกเลอกทเมน File
→ Save และตงชอไฟลตามตองการ แลวกดปม Save สงเกตวาเครองหมาย * ตรงแถบชอเรอง
(Title bar) จะหายไป
6.4.7 การสงออกชนงาน
โปรแกรม SWISH Max สามารถสงออก (export) ชนงานจากไฟลนามสกล .swi (นามสกลของไฟล
ในโปรแกรม SWISH Max) ไปเปนไฟลนามสกล .swf, .html, .exe หรอ .avi และสามารถนาไปใช
นาเสนอชนงานในเวบไซต วดโอ หรอสออนๆ ได โดยการคลกเลอกทเมน File → Export และเลอก
ชนดของไฟลทตองการเปลยน เชน swf และเลอกสารบบทตองเกบไฟลทสงมาไว และกดปม save
6.5 การใสลกเลน โปรแกรม SWISH Max สามารถใสลกเลน (Effect) เพอทาใหออบเจกตสามารถแสดงผลในรปของ
ภาพเคลอนไหวไดหลากหลาย ในทนจะขอยกตวอยางลกเลนทนาสนใจดงน
Fade in ใชสาหรบแสดงออบเจกตขนมาอยางชาๆ ในตาแหนงทตองการ
Fade out ใชสาหรบแสดงออบเจกตใหหายไปอยางชาๆ ในตาแหนงทตองการ
Zoom in ใชสาหรบแสดงการขยายออบเจกต (เหมอนมองออบเจกตในระยะใกล)
Zoom out ใชสาหรบแสดงการยอออบเจกต (เหมอนมองออบเจกตในระยะไกล)
222
รปท 6.25 ขนตอนการใสลกเลนลงในออบเจกตทตองการ
Slide in ใชสาหรบแสดงการเคลอนทของออบเจกตเปนเสนตรง จากภายนอกหนาจอเขามาส
ภายในจอ โดยจะมคาสงยอยใหเลอกวาตองการใหเคลอนทมาจากทศทางใด
Slide out ใชสาหรบแสดงการเคลอนทของออบเจกตเปนเสนตรง จากภายในหนาจอไปส
ภายนอกจอ โดยจะมคาสงยอยใหเลอกวาตองการใหเคลอนทออกไปในทศทางใด
Blur ใชสาหรบแสดงผลออบเจกตอยางชาๆ โดยเรมจากภาพทไมชดจนเปลยนมาเปนภาพทชด
Appear into position ใชสาหรบแสดงออบเจกตใหปรากฏขนมาอยางชาๆ โดยจะมลกเลน
ยอยใหเลอกอกวาตองการใหหายหรอปรากฏในรปแบบใด
Disappear from position ใชสาหรบแสดงออบเจกตในหายไปอยางชาๆ โดยจะมลกเลนยอย
ใหเลอกอกวาตองการใหหายไปในรปแบบใด
Looping continuously ใชสาหรบแสดงออบเจกตในลกษณะทาซาแบบตอเนองไปเรอยๆ
โดยจะมลกเลนยอยใหเลอกอกวาตองการแสดงซาในรปแบบใด
One off ใชสาหรบแสดงออบเจกตโดยไมแสดง frame แรกโดยจะมลกเลนยอยใหเลอกอก
วาตองการแสดงแบบใด
Return to start ใชสาหรบแสดงผลออบเจกตในลกษณะการกลบสจดเรมตนโดยจะมลกเลน
ยอยใหเลอกอกวาตองการใหกลบสจดเรมตนในรปแบบใด
6.5.1 ตวอยางการใสลกเลนใหกบชนงาน
การใส Effect ใหกบชนงาน ทาไดโดยกดเลอกออบเจกตทตองการใสลกเลน (เชน รปดาว) ตาม
รปท 6.25 (หมายเลข 1) จากนนกดปม Add Effect (หมายเลข 2) และเลอกลกเลนทตองการ
เชน ถาเลอกลกเลนแบบจางเขามา กใหกดเลอกท Fade → Fade In (หมายเลข 3 – 4)
2
3 4
1
223
รปท 6.26 การปรบแตงลกเลนของ Fade In
(ก) เฟรมท 1 (ข) เฟรมท 10 (ค) เฟรมท 20
รปท 6.27 ผลลพธทไดจากการใชลกเลน Fade In ณ เฟรมตางๆ
นอกจากนยงสามารถปรบแตงลกเลนไดโดยกดเลอกทเมน Effect ในหนาตางแสดงออบ
เจกต (หมายเลข 6 ในรปท 6.7) ซงจะแสดงคณสมบตของลกเลนทใชอยปรากฏขนมา โดยในทน
จะปรากฏ Fade In ตามรปท 6.26 จากนนจงสามารถปรบแตงคาตามตองการได เชน สมมตวา
เปลยนการแสดงผลหนวยเวลาจาก 10 เปน 20 ตามรปท 6.26 จากนนทดสอบโดยการกดปม Play
Movie (หมายเลข 8 ในรปท 6.7) กจะไดผลลพธ ณ ตาแหนงของเฟรมท 1, 10 และ 20
ดงแสดงในรปท 6.27
6.6 การใสสครปตเบองตน โปรแกรม SWISH Max มสครปตเตรยมไวใหมากมาย ในทนจะกลาวถงสครปตทนยมใชงานดงน
6.6.1 การใสสครปตเกยวกบการควบคมการแสดงผล
การใสสครปตเพอควบคมเฟรมมหลายรปแบบ ในทนจะยกตวอยางการกระโดดไปยงเฟรมทตองการ
โดยเลอกทเมน Add Script → Movie Control → Goto and stop → gotoAndStop(FRAME)
ใสคา 20
224
รปท 6.28 ขนตอนการใสสครปตสาหรบการกระโดดไปยงเฟรมทตองการ (gotoAndPlay)
รปท 6.29 การแกไขสครปตในคาสง gotoAndPlay(FRAME)
ตารางท 6.2 สครปตอนๆ ทเกยวของกบควบคมการแสดงผล
สครปต รายละเอยด
Movie Control>gotoAndPlay>gotoAndPlay(FRAME) แสดงเฟรมทตองการ
Movie Control>gotoAndPlay>nextFrameAndPlay() แสดงเฟรมถดไป
Movie Control>gotoAndPlay>prevFrameAndPlay() แสดงเฟรมกอนหนา
Movie Control>gotoAndPlay>nextSceneAndPlay() แสดงซน (Scene) ถดไป
Movie Control>gotoAndPlay>prevSceneAndPlay() แสดงซน (Scene) กอนหนา
ตามรปท 6.28 กจะปรากฏหนาตางสครปตในรปท 6.29 จากนนใหทดลองแกไขสครปตโดยเปลยน
คา onFrame จาก 1 เปน 20 และคา GotoAndPlay จาก 1 เปน 10 ตามรปท 6.28 ซงในการ
ทางาน เมอเลนไปถงเฟรมท 20 แลวจะกระโดดกลบมาทเลนเฟรมท 10 (ซาไปเรอยๆ) ตารางท 6.2
แสดงตวอยางสครปตอนๆ ทเกยวของกบควบคมการแสดงผล
1
23
4
225
รปท 6.30 ขนตอนการใสสครปตเพอเชอมโยงไปยงภายนอก (getURL)
รปท 6.31 การแกไขสครปตในคาสง getURL
6.6.2 การใสสครปตเพอสรางการเชอมโยง
การใสสครปตเพอเชอมโยงไปยงภายนอก เชน มหาวทยาลยราชภฏนครปฐม (www.npru.ac.th)
ทาไดโดยการเลอกชนงานหรอออบเจกตทตองการ และกดเลอกทเมน Add Script → Browser/
Network → getURL ตามรปท 6.30 จากนนใสชอเวบไซต http://www.npru.ac.th ในชอง URL
และเลอก _blank ในชอง Window (นนคอการสรางหนาเพจขนมาใหม) ดงแสดงในรปท 6.31
แลวทาการ Export ไฟลออกมาเปนโดยการเลอกทเมน File → Export → HTML+SWF... กจะ
ไดไฟล Movie1.html และ Movie1.swf โดยจะตองนาไปวางในสารบบ www เพอทดสอบการ
ทางาน ซงทาไดโดยการเปดเบราวเซอรขนมาและใสชอ URL เปน 127.0.0.1/Movie1.html กจะ
ปรากฏหนาเวบตามรปท 6.32 จากนนใหกดคลกทรปดาว กจะไดหนาตางใหมเปนหนาเวบของ
มหาวทยาลยราชภฏนครปฐม
1
2 3
226
รปท 6.32 การทดสอบการทางานของสครปต getURL
รปท 6.33 ขนตอนการใสสครปตเกยวกบเสยง
6.6.3 การใสสครปตเกยวกบเสยง
การใสสครปตเกยวกบเสยงทาไดโดยการเลอกเฟรมหรอซนทตองการใสเสยง ตวอยางเชน สมมตวา
เลอก Scene_1 และเลอกวนาทแรกตามรปท 6.33 ใหกดเลอกทเมน Add Script → Sound →
playSound(…) และกดปม Import ตามรปท 6.34 จากนนเลอกไฟลเสยงทตองการและคลกทปม
Open (เชนเดยวกบรปท 6.14) กจะแสดงสญรปเพลงปรากฏอยในรายการตามรปท 6.35 และใน
สวนของหนาตางสครปต ใหใสชอไฟลเสยงทจะแทรกอยในสครปต ในทานองเดยวกนถาตองการ
ทดสอบการทางานกใหกดปม Play Movie (ตามรปท 6.16)
6.7 สรปทายบท
บทนไดอธบายพนฐานการใชงานโปรแกรม SWISH Max ทใชสาหรบสรางไฟลภาพเคลอนไหว
แบบแฟลช โดยเรมจากวธการตดตงโปรแกรม SWISH Max การใชเมนและเครองมอตางๆ ของ
โปรแกรม SWISH Max รวมทงคาสงพนฐานทจาเปนสาหรบการนาไปประยกตใชงานรวมกบ
โปรแกรม SCILAB เพอสรางสอการเรยนการสอน ซงจะอธบายในบทตอไป
คลกทรปดาว
227
รปท 6.34 ขนตอนการใส สครปต เกยวกบเสยง (ตอ)
รปท 6.35 การใสไฟลเสยงเขาไปในเฟรมทตองการ
6.8 แบบฝกหดทายบท
1. จงอธบายประวตความเปนมาของโปรแกรม SWISH Max พอสงเขป
2. จงอธบายการใชงาน Import to Libray และ Import to Stage วาแตกตางกนอยางไร
3. จงยกตวอยางลกเลน (effect) ทใชไดในโปรแกรม SWISH Max มา 5 ลกเลน
4. ถาตองการแสดงผลออบเจกต (object) โดยเรมจากภาพทไมชดใหเปลยนมาเปนภาพทชด ควรใช
ลกเลน (effect) ใด
228
5. ถาตองการสรางวตถเพอเชอมโยงเวบไซต Google ควรใชสครปตอะไร
6. จงสรางชนงานเพอนาเสนอรปตวเอง ใสเสยงเพลง และลกเลนไมนอยกวา 20 วนาท
229
บทท 7 การสรางสอการสอนดวยโปรแกรม
SWISH Max และ SCILAB
ในบทนจะกลาวถงการเขยนแอคชนสครปต (AS: action script) ของโปรแกรม SWISH Max เพอ
นามาประยกตใชสรางสอการสอนรวมกบโปรแกรม SCILAB โดยเรมจากประวตความเปนมาของ
แอคชนสครปต การสงหรอโหลดขอมลระหวางไฟลภาพเคลอนไหวแบบแฟลช (flash animation)
กบไฟล PHP และแสดงตวอยางการสรางสอการสอนผานเวบไซตทมภาพเคลอนไหวแบบแฟลช
รวมกบโปรแกรม SCIlAB ซ งประกอบดวย การหากระแสภายในวงจรไฟฟา การหาตว
คณรวมนอย และการวาดกราฟสองมต
7.1 ประวตความเปนมาของแอคชนสครปต
แอคชนสครปต (หรอเรยกสนๆ วา AS) เปนภาษาทใชงานกบไฟลแฟลชเปนหลก โดยสามารถ
เขยนไดจากโปรแกรมอนๆ เชน AIR (Adobe integrated runtime) [14], FlexBuilder [15] หรอ
FlashDevelop [16] โดยประโยชนของ AS คอชวยใหผทใชงานแฟลชสามารถโตตอบกบออบเจกต
ตางๆ ได นอกจากนเมอ AS พฒนาไปมากขน การเชอมตอกบแหลงขอมลอนๆ กทาไดมากขน
รวมถงบางสงทแฟลชตองอาศยภาษาอนชวยในอดต กสามารถทาไดดวยตนเองในปจจบน
เพราะฉะนนนกพฒนา (developer) จงจาเปนตองตดตามการพฒนาเหลานอยสมาเสมอ
7.2 ขนตอนการเขยนสครปตโปรแกรม SWISH Max รวมกบ
SCILAB
การเขยนสครปตโปรแกรม SWISH Max รวมกบ SCILAB สามารถอธบายไดตามแผนภาพ
บลอกตามรปท 7.1
230
รปท 7.1 แผนภาพบลอกแสดงการเขยนสครปตโปรแกรม SWISH Max รวมกบโปรแกรม SCILAB
7.2.1 การสงหรอโหลดขอมลระหวางไฟลภาพเคลอนไหวแบบแฟลชกบไฟล PHP
การเขยนแอคชนสครปตในโปรแกรม SWISH Max เพอสงหรอโหลดขอมลระหวางไฟลภาพ
เคลอนไหวแบบแฟลช (.swf) กบไฟล PHP มสครปตทใชงานหลกดงน
สครปตการสงขอมลไปยงไฟล PHP
1 sendAndLoad(url, target, method);
เมอ url คอชอไฟลทรบสงขอมล (เชน test.php), target คอตวแปรออบเจกตทเปน LoadVars หรอ
XML, และ method คอวธการสงขอมล (เชน POST, GET เปนตน)
สครปตการโหลดขอมลมายงไฟลภาพเคลอนไหวแบบแฟลช
1
2
3
target.onLoad = function(){
Parmeter1 = Parmeter2;
}
เมอ target คอตวแปรออบเจกตทเปน LoadVars หรอ XML, Parameter1 คอตวแปรรบขอมลใน
สครปตของโปรแกรม SWISH Max, และ Parameter2 คอตวแปรสงขอมลจากไฟล PHP
7.2.2 ตวอยางการสรางเวบไซตทมภาพเคลอนไหวแบบแฟลชรวมกบ SCILAB
ในหวขอนจะแสดงตวอยางการสรางสอการสอนผานเวบไซตทมภาพเคลอนไหวแบบแฟลชรวมกบ
โปรแกรม SCIlAB ทงสามแบบดงน
Flash Animation (.swf)
ไฟล PHP
SCILAB
โปรแกรม SWISH Max
โปรแกรม Dreamweaver
โปรแกรม SCILAB
231
7.2.2.1 การคานวณหากระแสไฟฟาแบบภาพเคลอนไหว
จากกฎของโอหม (Ohm’s law) กระแสไฟฟา (I) ภายในวงจรไฟฟาหาไดจาก
R
V I = (แอมแปร)
โดยท V คอแรงดนไฟฟามหนวยเปนโวลต และ R คอตวความตานทานมหนวยเปนโอหม (ohm)
ดงนนการสรางสอการสอนผานเวบไซตเพอใชคานวณหากระแสไฟฟาในวงจรไฟฟาทาไดดงน
1) เปดโปรแกรม Adobe Dreamweaver CS 5.5 ขนมา และใหตงชอไฟลวา test.php เกบไวใน
สารบบ C:\AppServ\www\Flashtoscilab โดยใหพมพโคดในไฟลดงน
โคดภายในไฟล test.php
1
2
3
4
5
6
7
8
9
10
11
12
13
<?php
$V = stripslashes($_POST['V']); //รบขอมลจากแฟลชให $V
$R = stripslashes($_POST['R']); //รบขอมลจากแฟลชให $R
$output = ""; //เรมตนตวแปร
$code1 = "result = $V/$R;\nsavematfile('elec.txt','result');\nexit;"; //เขยนโคดลงใน
ตวแปรชอวา $code1
file_put_contents("elec.sce", $code1); //สรางไฟลชอ elec.sce
$path=$_SERVER["SystemRoot"];
$com = "$path/scilab-4.1.2/bin/Scilex.exe -nwni -nb -f elec.sce";
exec($com); //ประมวลผลไฟลสครปต
$output = number_format(file_get_contents("elec.txt"));
echo ("&total=$output"); //สงผลลพธ (total) ไปยงไฟลแฟลช
echo ("&code=$code1"); //สงผลลพธ (code) ไปยงไฟลแฟลช
?>
2) เปดโปรแกรม SWISH Max ขนมา และออกแบบฟอรมของภาพเคลอนไหวแบบแฟลช โดยม
การกาหนด Textbox ทสาคญดงน (ตามรปท 7.2)
Textbox รายละเอยด คณสมบต
V ใชรบขอมล V แรงดนไฟฟา Input
R ใชรบขอมล R ตวตานทาน Input
total_a แสดงคา I (กระแส) Dynamic
total_b แสดงโคดจากโปรแกรม SCILAB Dynamic
232
รปท 7.2 การกาหนดคณสมบตของตวแปร R, V, total_a และ total_b
รปท 7.3 คณสมบตสาหรบความสวางของหลอดไฟ (Light)
3) ในทนภาพเคลอนไหวจะเปนแสงสวางของหลอดไฟทมขนาดเลกหรอขนาดใหญ โดยถา R มคา
มาก หลอดไฟกจะสวางนอย แตถา R มคานอย หลอดไฟกจะสวางมาก โดยในทนจะมการใช
Shape ซงกาหนดคาเรมตนความกวางเทากบ 0 และความยาวเทากบ 0 และตงชอวา Light
ดงแสดงในรปท 7.3 - 7.4
233
รปท 7.4 การออกแบบสวนตอประสาน และการตงชอ Shape เทากบ Light
4) จากนนคลกปม “คานวณ” (ทสรางขนจาก Shape และตงชอวา button) และคลกท Tab สครปต
และพมพสครปตดงตอไปน
สครปต
1
2
3
4
5
6
7
8
9
10
11
12
on (release){
if (R.text >= 100){ //ตรวจสอบคา R วามขนาดเทาใด
Light._xscale = 0;
Light._yscale = 0;
}else if(R.text >= 90){
Light._xscale = 10;
Light._yscale = 10;
}else if(R.text >= 80){
Light._xscale = 20;
Light._yscale = 20;
}else if(R.text >= 70){
Light._xscale = 30;
R
Vbutton
234
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
Light._yscale = 30;
}else if(R.text >= 60){
Light._xscale = 40;
Light._yscale = 40;
}else if(R.text >= 50){
Light._xscale = 50;
Light._yscale = 50;
}else if(R.text >= 40){
Light._xscale = 60;
Light._yscale = 60;
}else if(R.text >= 30){
Light._xscale = 70;
Light._yscale = 70;
}else if(R.text >= 20){
Light._xscale = 80;
Light._yscale = 80;
}else if(R.text >= 10){
Light._xscale = 90;
Light._yscale = 90;
}else if(R.text >= 5){
Light._xscale = 100;
Light._yscale = 100;
}else if(R.text >= 1){
Light._xscale = 120;
Light._yscale = 120;
}
var lv = new LoadVars(); //สรางตวแปรออบเจกตชอวา lv
lv.V = V.text; //สงคาตวแปร V.text ใหกบ lv.V
lv.R = R.text; //สงคาตวแปร R.text ใหกบ lv.R
lv.sendAndLoad("test.php",lv, "POST"); //สงคา V, R ไปยง test.php ในรปแบบ POST
lv.onLoad = function(){ //โหลดผลลพธจาก php มายงตวแปรในแฟลช
total_a.text = this.total; //รบคาตวแปร total มายงตวแปร total_a.text (ภายในแฟลช)
total_b.text = this.code; //รบคาตวแปร code มายงตวแปร total_b.text (ภายในแฟลช)
}
}
235
รปท 7.5 ขนตอนการ Export ไฟลงาน
5) ทาการ Export ไฟลออกมา โดยเลอกท File → Export → HTML + SWF หรอกด Ctrl + P
ดงรปท 7.5 จากนนเลอกสารบบท C:\AppServ\www\flashtoscilab และตงชอวา electric.html
คลกปม save
6) ทดสอบการทางานโดยการเปดโปรแกรม Google Chrome และพมพ URL คอ 127.0.0.1/
flashtoscilab/electric.html ตามรปท 7.6
7) ทดลองปอนคา V = 5 และใสคา R = 70 จากนนกดปมคานวณ 1 ครง ซงจะพบวาหลอดไฟ
มความสวางนอย แตถาใสคา R = 1 จะพบวาหลอดไฟมความสวางมาก ตามรปท 7.7
236
รปท 7.6 ผลลพธของเวบไซต electic.html
รปท 7.7 ผลลพธการปอนขอมลเวบไซต electic.html
R = 1
237
7.2.2.2 การหาตวคณรวมนอยแบบภาพเคลอนไหว
การสรางสอการสอนผานเวบไซตเพอใชคานวณหาตวคณรวมนอย (ครน.) แบบภาพเคลอนไหว
ทาไดดงน
1) เปดโปรแกรม Adobe Dreamweaver CS 5.5 ขนมา และใหตงชอไฟลวา lcm.php เกบไวใน
สารบบ C:\AppServ\www\Flashtoscilab โดยใหพมพโคดในไฟลดงน
โคดภายในไฟล lcm.php
1
2
3
4
5
6
7
8
9
10
11
12
13
<?php
$input1 = stripslashes($_POST['input1']); //รบขอมลจากแฟลชให $input1
$input2 = stripslashes($_POST['input2']); //รบขอมลจากแฟลชให $input2
$input3 = stripslashes($_POST['input3']); //รบขอมลจากแฟลชให $input3
$output = "";
$code1 = "result = lcm(int16([$input1 $input2 $input3]));\noutput =
iconvert(result,0);\nsavematfile('lcm.txt','output');\nexit;"; //เขยนโคดลงในตวแปร
ชอวา $code1
file_put_contents("lcm.sce", $code1); //สรางไฟลชอ lcm.sce
$path=$_SERVER["SystemRoot"];
$com = "$path/scilab-4.1.2/bin/Scilex.exe -nwni -nb -f lcm.sce";
exec($com); //ประมวลผลไฟลสครปต
$output = number_format(file_get_contents("lcm.txt"));
echo ("&output=$output"); //สงผลลพธ (output) ไปยงไฟลแฟลช
?>
2) เปดโปรแกรม SWISH Max ขนมา และออกแบบฟอรมของภาพเคลอนไหวแบบแฟลชตาม
รปท 7.8 โดยมการกาหนด Textbox ทสาคญดงน (ตามรปท 7.9)
Textbox รายละเอยด คณสมบต
input1 กลองขอความสาหรบคาอนพตตวท 1 Input
input2 กลองขอความสาหรบคาอนพตตวท 2 Input
input3 กลองขอความสาหรบคาอนพตตวท 3 Input
output กลองขอความสาหรบแสดงผลลพธ Dynamic
238
รปท 7.8 การออกแบบสวนตอประสานการหาตวคณรวมนอย (ครน.)
รปท 7.9 การกาหนดคณสมบตของตวแปร input1, input2, input3 และ output
3) ในทนจะใชลกเลนทมชอวา “Squeeze and cascade in” สาหรบแสดงภาพเคลอนไหว โดยให
Duration เทากบ 20 สาหรบ bginput และ bgoutput แสดงดงในรปท 7.10
bginput
bgoutput
input1 input2 input3
output
button
239
รปท 7.10 แสดง Time line ทแทรกลกเลนไวเรยบรอยแลว
4) จากนนคลกปม “คานวณ” (ทสรางขนจาก Shape และตงชอวา button) และคลกท Tab สครปต
และพมพสครปตดงตอไปน
สครปต
1
2
3
4
5
6
7
8
9
10
on (release){
var lv = new LoadVars(); //สรางตวแปรออบเจกตชอวา lv
lv.input1 = input1.text; //สงคาตวแปร input1.text ใหกบ lv.input1
lv.input2 = input2.text; //สงคาตวแปร input2.text ใหกบ lv.input2
lv.input3 = input3.text; //สงคาตวแปร input3.text ใหกบ lv.input3
lv.sendAndLoad("lcm.php",lv, "POST"); //สงคา input1, input2 และ input3 ไปยง
lcm.php ในรปแบบ POST
lv.onLoad = function(){
output.text = this.output; //รบคาตวแปร code มายงตวแปร total_b.text (ภายในแฟลช)
}
}
5) ทาการ Export ไฟลออกมา โดยเลอกท File → Export → HTML + SWF หรอกด Ctrl + P
จากนนเลอกสารบบท C:\AppServ\www\flashtoscilab และตงชอวา lcm.html คลกปม save
6) ทดสอบการทางานโดยการเปดโปรแกรม Google Chrome และพมพ URL คอ 127.0.0.1/
flashtoscilab/lcm.html ตามรปท 7.11
240
รปท 7.11 ผลลพธเวบไซต lcm.html
รปท 7.12 ผลลพธทไดจากการปอนขอมลผานเวบไซต lcm.html
7) ทดลองปอนคาตวเลขสามจานวนคอ 12, 15 และ 30 จากนนกดปมคานวณกจะไดผลลพธเปน
คาตวคณรวมนอยของเลขสามจานวนนเทากบ 60 และแสดงเปลยนสสลบไปมาตามรปท 7.12
7.2.2.3 การวาดกราฟสองมตแบบภาพเคลอนไหว
การสรางสอการสอนผานเวบไซตเพอใชการวาดกราฟสองมตแบบภาพเคลอนไหวทาไดดงน
1) เปดโปรแกรม Adobe Dreamweaver CS 5.5 ขนมา และใหตงชอไฟลวา 2d.php เกบไวใน
สารบบ C:\AppServ\www\Flashtoscilab โดยใหพมพโคดในไฟลดงน
241
โคดภายในไฟล 2d.php
1
2
3
4
5
6
7
8
9
10
11
12
<?php
$x1 = stripslashes($_POST['x1']); //รบขอมลจากแฟลชให $x1
$x2 = stripslashes($_POST['x2']); //รบขอมลจากแฟลชให $x2
$x3 = stripslashes($_POST['x3']); //รบขอมลจากแฟลชให $x3
$f = stripslashes($_POST['f']); //รบขอมลจากแฟลชให $f
$y = stripslashes($_POST['y']); //รบขอมลจากแฟลชให $y
$code1 = "x = $x1:$x2:$x3;\n f = $f;\n y = $y;\n plot(x, y);\n
xs2gif(0,'test.gif');exit();"; //เขยนโคดลงในตวแปรชอวา $code1
file_put_contents("f2d.sce", $code1); //สรางไฟลชอ f2d.sce
$path=$_SERVER["SystemRoot"];
$com = "$path/scilab-4.1.2/bin/Scilex.exe -nwni -nb -f f2d.sce";
exec($com); //ประมวลผลไฟลสครปต
?>
2) เปดโปรแกรม SWISH Max ขนมา และออกแบบฟอรมของภาพเคลอนไหวแบบแฟลชตามรป
ท 7.13 โดยมการกาหนด Textbox ทสาคญดงน (ตามรปท 7.14)
Textbox รายละเอยด คณสมบต
x1 สาหรบตวแปร x1 คาเรมตน Input
x2 สาหรบตวแปร x2 คาระหวางขน Input
x3 สาหรบตวแปร x3 คาสดทาย Input
f สาหรบตวแปร f คาความถ Input
Y สาหรบตวแปร y คาสมการ Input
242
รปท 7.13 การออกแบบสวนตอประสานการวาดกราฟสองมตแบบภาพเคลอนไหว
รปท 7.14 การกาหนดคณสมบตของตวแปร x1, x2, x3, f และ y
x1 x2 x3
yf
243
รปท 7.15 ขนตอนการเปลยน Shape เปนรปแบบ Movie Clip
3) ในทนจะใช Shape สฟาคอยๆ จางออก และแสดงกราฟทสรางขนจากสมการเพอแสดงภาพ
เคลอนไหว โดยการวาด Shape ทมขนาด 610×461 pixels และตงชอวา pic จากนนกดคลก
ขวา และเลอก Convert → Convert to Movie Clip ตามทแสดงในรปท 7.15
4) จากนนสราง Shape สฟาขนาด 550×512 pixels ปดทบ pic และใชลกเลนโดยการกดคลกขวา
ท Time Line และเลอก Fade → Fade out ตามรปท 7.16 และ 7.17
1
34
2
244
รปท 7.16 ขนตอนใสลกเลน Fade Out
รปท 7.17 แสดง Time line ทใสลกเลน Fade Out
5) สรางปมคานวณโดยใชเครองมอ Rectangle tool วาดรปสเหลยมจานวน 1 อน และใชเครองมอ
Text tool พมพขอความ “คานวณ” ตามรปท 7.18
5
67
245
รปท 7.18 การสรางปม “คานวณ”
6) จากนนคลกปม “คานวณ” (ทสรางขนจาก Shape ชอวา button) และคลกท Tab สครปต และ
พมพสครปตดงตอไปน
สครปต
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
on (press) {
var lv = new LoadVars(); //สรางตวแปรออบเจกตชอวา lv
lv.x1 = x1.text; //สงคาตวแปร x1.text ใหกบ lv.x1
lv.x2 = x2.text; //สงคาตวแปร x2.text ใหกบ lv.x2
lv.x3 = x3.text; //สงคาตวแปร x3.text ใหกบ lv.x3
lv.f = f.text; //สงคาตวแปร f.text ใหกบ lv.f
lv.y = y.text; //สงคาตวแปร y.text ใหกบ lv.y
lv.sendAndLoad("2d.php", lv, "POST"); //สงคา x1, x2, x3, f และ y ไปยง 2d.php ใน
รปแบบ POST
lv.onLoad = function(){
d = new Date(); //สรางตวแปรออบเจกตชอวา d
kill = d.getTime(); //สรางตวแปร kill ใหมคาเทากบเวลาปจจบน
pic.loadMovie("test.gif"+"?kill="+kill); //โหลดไฟลรปกราฟ (test.gif) เขามาโดยสราง
ตวแปรชอวา kill เพอระบรปกราฟลาสดในขณะนน (ถาไมใสจะไมเปลยนรปกราฟ)
gotoAndPlay(1);
play();
pic._x = -30;
pic._y = 0;
pic._xscale = 100;
246
18
19
20
pic._yscale = 100;
}
}
รปท 7.19 ผลลพธของเวบไซต f2d.html
7) ทาการ Export ไฟลออกมา โดยเลอกท File → Export → HTML + SWF หรอกด Ctrl + P
จากนนเลอกสารบบท C:\AppServ\www\flashtoscilab และตงชอวา f2d.html คลกปม save
8) ทดสอบการทางานโดยการเปดโปรแกรม Google Chrome และพมพ URL คอ 127.0.0.1/
flashtoscilab/f2d.html ตามรปท 7.19
9) ทดลองปอนคา x = 0 : 0.01 : 2, f = 1, และ y = sin(2*%pi*x*f) จากนนกดปม “คานวณ”
กจะพบวามการ Fade Out ของ Shape สฟา 1 ครง แลวจงเปลยนเปนรปกราฟทโปรแกรม
SCILAB วาดขนมา ดงรปท 7.20
247
รปท 7.20 ผลลพธทไดจากการทดลองวาดกราฟ y = sin(2*%pi*x*f)
7.3 สรปทายบท
บทนสรปขนตอนการเขยนแอคชนสครปตของโปรแกรม SWISH Max เพอนามาประยกตใชสราง
สอการสอนรวมกบโปรแกรม SCILAB โดยเรมจากประวตความเปนมาของแอคชนสครปต การสง
หรอโหลดขอมลระหวางไฟลภาพเคลอนไหวแบบแฟลชกบไฟล PHP และแสดงตวอยางการสราง
สอการสอนผานเวบไซตทมภาพเคลอนไหวแบบแฟลชรวมกบโปรแกรม SCIlAB นอกจากนผเขยน
ไดพฒนาตวอยางสอการสอนแบบภาพเคลอนไหวเรอง “เมทรกซ” เพอใหผอานไดทดลองใชงาน
ซงสามารถดศกษาไดทเวบไซต http://scilab.npru.ac.th/matrix/index.php
248
7.4 แบบฝกหดทายบท
1. จงเขยนโปรแกรมการบวกเมทรกซสองเมทรกซแบบภาพเคลอนไหว
2. จงเขยนโปรแกรมการหาคาดเทอรมแนนท (Determinant) ของเมทรกซแบบภาพเคลอนไหว
3. จงสรางโปรแกรมการหาไมเนอร (Minor) ของเมทรกซแบบภาพเคลอนไหว
4. จงเขยนโปรแกรมวาดกราฟ 2 มตโดยใสลกเลน 1 วธ ตามรปท 1.5 (คาสง polarplot)
5. จงเขยนโปรแกรมวาดกราฟ 3 มตโดยใสลกเลน 1 วธ ตามรปท 1.6 (คาสง plot3d)
249
บรรณานกรม
[1] SCILAB [online], Available http://www.scilab.org [Access: October 17, 2012]
[2] CeCILL [online], Available http://www.cecill.info/index.en.html [Access: October
17, 2012]
[3] MATWORKS [online], Available http://www.mathworks.com [Access: October 17,
2012]
[4] ปยะ โควนททววฒน, คมอโปรแกรมภาษา SCILAB สาหรบผเรมตน (ฉบบปรบปรงใหม),
เพชรเกษมการพมพ, 2551
[5] Visual Basic [online], Available http://msdn.microsoft.com/en-us/library/vstudio/
2x7h1hfk.aspx [Access: April 13, 2013].
[6] พรอมเลศ หลอวจตร, คมอเรยน Visual Basic 2010, ซเอดยเคชน, มนาคม 2554.
[7] PHP [online], Available http://php.net/ [Access: April 14, 2013]
[8] ภาษาพเอชพ [online], Available http://th.wikipedia.org/wiki/ภาษาพเอชพ [Access:
April 14, 2013]
[9] PHP Tutorial [online], Available http://www.w3schools.com/php/ [Access: April
14, 2013]
[10] PHP [online], Available http://www.thaicreate.com/php.html [Access: April 14,
2013]
[11] Swishmax [online], Available http://www.swishzone.com [Access: April 14, 2013]
[12] bmk2 [online], Available http://www.bmk2.net/study/swishmax.doc [Access: April
14, 2013]
[13] thaiall [online], Available http://www.thaiall.com/swishmax/indexo.html [Access:
April 14, 2013]
250
[14] Adobe AIR [online], Available http://www.adobe.com/products/air.html [Access:
April 14, 2013]
[15] Google Developer [online], Available https://developers.google.com/maps/
documentation/flash/tutorial-flexbuilder [Access: April 14, 2013]
[16] FlashDevelop [online], Available http://www.flashdevelop.org/ [Access: April 14,
2013]