วันเสาร์ที่ 30 พฤษภาคม พ.ศ. 2563

ซับเมทริกซ์ ติวเตอร์เรียล 2

ไซแลบติวเตอร์เรียล 2 พื้นที่ทำงานและไดเร็คทอรีทำงาน 
(The Workspace and Working Directory)

            ขณะที่สิ่งแวดล้อมของ Scilab เป็นด้านที่มองเห็นได้ของ Scilab, ยังมีด้านอื่นที่ไม่สามารถที่มองเห็นได้ นั่นก็คือเนื้อที่ความจำที่ตัวแปรทั้งหมดและฟังก์ชันถูกเก็บไว้  และเรียกบริเวณนี้ว่าพื้นที่ทำงาน (Workspace) มีหลายครั้งที่จำเป็นต้องตรวจสอบเนื้อที่เก็บ เพื่อที่จะตรวจสอบดู่ว่าเป็นตัวแปรหนึ่ง หรือฟังก์ชันหนึ่งได้กำหนดไว้หรือไม่ คำสั่งต่อไปนี้ช่วยให้ผู้ใช้ตรวจสอบเนื้อที่ความจำ ได้แก่  who whos และ who_user() ให้ใช้ความช่วยเหลือออนไลน์เพื่อเรียนรู้มากขึ้นเกี่ยวกับคำสั่งเหล่านี้
            คำสั่ง who แสดงรายการชื่อของตัวแปรในบริเวณทำงาน Scilab   ให้สังเกตว่าชื่อตัวแปรที่นำหน้าด้วย “%”  มีตัวแปรเฉพาะหลายตัวที่ใช้เป็นประจำและดังนั้นได้กำหนดไว้ก่อนใน Scilab.   รวมทั้ง
%pi(π  ), %e ( ), %i (✓-1  ), %inf ( ∞ ), %nan (NaN)  และอื่นๆ

       คำสั่ง whos  แสดงรายการตัวแปร ตามด้วยจำนวนความจำที่ใช้ในบริเวณทำงาน  ตัวแปรที่แสดงรายการสามารถเลือกบนฐานชนิด หรือชื่อ  ดังบางตัวอย่างดังนี้
-->whos()                                 แสดงเนื้อหาทั้งหมดของพื้นที่ทำงาน รวมทั้งฟังก์ชัน ไลบรารี และตัวคงที่

-->whos -type constants          แสดงเฉพาะตัวแปรที่สามารถเก็บตัวคงที่จำนวนจริงและเชิงซ้อน ชนิดอื่น       เป็นบูลีน สตริง ฟังก์ชัน ไลบรารี โพลีโนเมียลและอื่นๆ  สำหรับรายการที่               สมบูรณ์ใช้คำสั่ง -->help typeof.

-->whos -name nam                แสดงรายการตัวแปรทั้งหมด ซึ่งชื่อขึ้นต้นด้วยตัวอักขระ nam
              
           เพื่อที่จะเข้าใจว่า Scilab จัดการอย่างไรกับตัวเลข  ให้ทดลองคำสั่งต่อไปนี้ และตามด้วยการใช้คำสั่ง whos  ดังต่อไปนี้
-->a1=5;                         กำหนดตัวแปรจำนวนจริงด้วยชื่อ 'a1'
-->a2=sqrt(-4)               กำหนดตัวแปรตัวเลขเชิงซ้อนด้วยชื่อ 'a2'
-->a3=[1, 2; 3, 4]           กำหนดเมทริกซ์  2x2  ด้วยชื่อ 'a3'
-->whos -name a           แสดงรายการตัวแปรที่ชื่อขึ้นต้นด้วยตัวอักษร 'a'

Name   Type                 Size     Bytes
a3         constant           2 by 2   48
a2         constant           1 by 1   32
a1         constant           1 by 1   24

ต่อไปให้ทดลองคำสั่งต่อไปนี้:
-->a1=sqrt(-9)               แปลง 'a1'ให้เป็นเลขเชิงซ้อน to a complex number
-->whos -name a           สังเกตว่าตอนนี้t 'a'เป็นตัวเลขเชิงซ้อน
-->a1=a3                        แปลง 'a1ไปเป็นเมทริกซ์
-->whos -name a           สังเกตว่า 'a' ตอนนี้เป็นเมทริกซ์
-->save('ex01.dat')        บันทึกตัวแปรทั้งหมดในพื้นที่ทำงานไปยังไฟล์ในดิสค์ชื่อ ex01.dat
-->load('ex01.dat')        โหลดหรือเรียกตัวแปรทุกตัวจากไฟล์ในดิสค์ex01.dat มายังพื้นที่ทำงาน
ให้สังเกตจุดสำคัญต่อไปนี้
 Scilab จัดให้ตัวเลขสเกลล่าเป็เมทริกซ์ขนาด 1x1 (และไม่เป็นเหมือนตัวเลขธรรมดา)
เพราะว่าชนิดข้อมูลพื้นฐานใน Scilab เป็นเมทริกซ์อย่างหนึ่ง
 Scilab แปลงชนิดของตัวแปรโดยอัตโนมัติตามความต้องการตามสถานะการณ์  จึงไม่จำเป็นต้องมีการกำหนดชนิดของตัวแปร

แบบฝึกหัด 2  พื้นที่ทำงานและไดเร็คทอรีทำงาน                                                                                       
1. ชนิดข้อมูลที่ใช้ได้ในไซน์แลบมีอะไรบ้าง ?
 (ตอบให้พิมพ์คำสั่ง help type ก็จะแสดงรายการชนิดข้อมูลที่มีใช้)2. คำสั่งอะไรที่แสดงรายการตัวแปรทั้งหมดที่มีอยู่ในพื้นที่ทำงานไซแลบที่ขึ้นต้นด้วยอักขระ”sa”?
(ตอบ: whos –name sa)
3. ใช้คำสั่งใดแสดงรายการตัวแปรทั้งหมดในพื้นที่ทำงานไซแลบที่มีชนิดข้อมูลเป็นบูลีน
(ตอบ
: whos –type Boolean)
4. ตัวคงที่ piในไซแลบหาค่าได้อย่างไร ?
(ตอบ 
%pi)
5. คำสั่งใดที่ใช้หาว่าไดเรคทอรีทำงานล่าสุดเป็นอะไรอยู่ที่ไหน?
(ตอบ
: pwd )
6. ที่ใดที่สามารถหาไดเรคทอรีทำงานปัจจุบันล่าสุดได้?
(ตอบ
จากไฟล์เมนู  disp Current Directory)
7. เปลี่ยนไดเรคทอรีทำงานปัจจุบัน/ล่าสุดไปเป็นตำแหน่งที่แตกต่างออกไปได้อย่างไร?
(ตอบ: cd (“chane directory”) หรือไปที่เมนูไฟล์  Change Directory และเลือกไดเรคทอรีที่จะไป ในไดอะล็อกบ็อก)8. ทำไมจึงเป็นเรื่องสำคัญการที่รู้ไดเร็คทอรีทำงานปัจจุบันล่าสุด?
(ตอบ เพราะว่าเป็นตำแหน่งโดยปริยายที่ไซแลบบันทึกไฟล์ทั้งหมดไว้ นอกจากว่าได้ระบุตำแหน่งเส้นทางเต็มในการเข้าถึงไว้อย่างชัดเจน)9. ไซแลบเป็นภาษาที่เน้นการใช้ชนิดข้อมูลหรือไม่
(ตอบ สำหรับภาษาที่เน้นชนิดข้อมูลนั้น แต่ละตัวแปรและชนิดข้อมูลของตัวแปรจะต้องกำหนดก่อนเป็นสิ่งแรก ก่อนที่จะนำไปใช้  ยิ่งกว่านั้น ทันทีที่กำหนดชนิดแล้วมักจะไม่สามารถเปลี่ยนชนิด  ให้ดูในวิกิพีเดียสำหรับนิยามของ การเน้นชนิดข้อมูล (
strongly Typed)  เหมือนกับที่ได้เขียนไว้ หรือไม่ และอะไรคือ static typing และ type safety?)







ไม่มีความคิดเห็น:

แสดงความคิดเห็น