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

ไฟล์สคริปซ์และฟังก์ชัน ติวเตอร์เรียล 10

Tutorial 10 – Script Files and Function Files


ไฟล์สคริปซ์ประกอบด้วยประโยคคำสั่งไซแลบและฟังก์ชันที่ใช้งานได้ ไฟล์สคริปซ์สามารถเขียนผนึกรวมอยู่ในเอดิเตอร์สำหรับโค๊ดไซแลบ เรียกว่า SciPad. Scipad ถูกเรียกใช้จากเมนูหลักของไซแลบ ผ่านทางเมนู application แล้วเลือกไป Editor. เมื่อไฟล์สคริปซ์สามารถที่จะโหลดเข้าไปในพื้นที่ทำงานไซแลบ (Scilab workspace) จากเมนูหลักของ SciPad  ที่ Execute เลือกไปที่ Load into Scilab (ทางลัด keyboard  Ctrl + L). โค๊ดจาก SciPad สามารถโหลดเข้ามาในพื้นที่ทำงานไซแลบด้วยคำสั่ง exec('filename.sci'), ได้จัดให้ไฟล์ filename.sci ถูกกำหนดเข้ามาในไดเรคทอรีทำงานล่าสุด   เพื่อที่จะโหลดไฟล์ฟังก์ชันในไดเรคทอรีอื่นนอกจากไดเรคทอรีทำงานปัจจุบัน  ให้ระบุเส้นทางทั้งหมดให้ไฟล์


          รูปที่10.1 ไฟล์สคริปซ์ใน SciPad ถูกโหลดเข้ามาในพื้นที่ทำงานไซแลบ

ก่อนที่ถูกโหลดเข้ามาในพื้นที่ทำงานไซแลบ ไฟล์นั้นจะถูกตรวจสอบไวยากรณ์(syntax) ถ้าโค๊ดมีที่ผิดหลักไวยากรณ์ จะไม่ถูกโหลดเข้าไปในพื้นที่ทำงานไซแลบ แต่จะแสดงข้อความที่ผิดพลาดในหน้าต่างไซแลบ  ถ้าไม่มีข้อผิดพลาดใดๆ โค๊ดจะถูกคอมไพล์และโหลดเข้าไปในพื้นที่ทำงานไซแลบ และพร้อมที่จะให้ใช้งานได้  ถ้ามีการเปลี่ยนแปลงโค๊ดใน SciPad,  กระบวนการของ Execute แล้วเลือก Load into Scilab จะต้องทำงานซ้ำแบบเดิม เมื่อโค๊ดที่ปรับเปลี่ยนเข้าไปแทนที่โค๊ดที่ผ่านการคอมไพล์มาแล้ว  ไซแลบจะแจ้งคำเตือนที่บ่งชี้ให้เห็นว่าฟังก์ชันหนึ่งได้ถูกปรับเปลี่ยนแล้ว

ข้อแตกต่างระหว่างไฟล์สคริปซ์และไฟล์ฟังก์ชัน กล่าวคือไฟล์สคริปซ์ไม่มีส่วนการนิยามฟังก์ชันใดๆ จะมีเฉพาะประโยคคำสั่งไซแลบเป็นหลักสำหรับการนำเข้าข้อมูล การคำนวณ และ เอ้าพุต   ผลลัพธ์ของการสั่งปฏิบัติงานไฟล์สคริปซ์จะถูกโหลดเข้ามาในพื้นที่ทำงานไซแลบ และจากนี้เป็นขอบข่ายในภาพรวม(global scope)  นั่นคือตัวแปรทั้งหมดที่ได้โหลดเข้ามาจากไฟล์สคริปซ์เป็นตัวแปรโกรบอล และนำมาใช้ได้จากพื้นที่ทำงานไซแลบ  ในอีกทางหนึ่งไฟล์ฟังก์ชันหนึ่งๆปกติแล้วประกอบขึ้นด้วยการนิยามฟังก์ชันเท่านั้น และไม่มีประโยคคำสั่งไซแลบที่สามารถสั่งปฏิบัติงานได้โดยตรง  เมื่อโหลดเข้าไปในพื้นที่ทำงานไซแลบ เฉพาะโค๊ดที่ถูกโหลดเข้าไป การดำเนินการฟังก์ชันอยู่ในรูปโมดูล ในนั้นมีการแลกเปลี่ยนตัวแปรกับพื้นที่ทำงานไซแลบ หรือฟังก์ชันอื่นเฉพาะเมื่อผ่านทางอาร์กูเมนต์อืนพุตและเอ้าพุต  และไม่เข้าใช้พื้นที่ทำงานไซแลบโดยตรง  ตัวแปรภายใต้ฟังก์ชัน  ตัวแปรภายในฟังก์ชันเป็นแบบโลคอลให้กับฟังก์ชันนอกจากว่า เป็นตัวแปรอืนพุตหรือเอ้าพุต

  ที่ไม่เหมือน Matlab หรือ Octave, ไฟล์ฟังก์ชันเดียวอาจประกอบด้วยการนิยามมากกว่าฟังชันเดียว และไม่มีการกำหนดหลักอันเป็นเงื่อนไขในการให้ชื่อไฟล์นอกจากว่าต้องมีส่วนขยายไฟล์เป็น .sci หรือ.sce. ไฟล์ฟังก์ชัน สามารถเขียนโดยใช้เท็กเอดิเตอร์ใดๆเช่น โน้ตแพด และไม่จำเป็นเฉพาะกับ SciPad. แต่ที่ไม่เหมือน SciPad, เอดิเตอร์อื่นๆไม่สามารถโหลดโค๊ดนั้นเข้าไปในพื้นที่ทำงานไซแลบ และจำต้องโหลดเข้ามาด้วยคำสั่ง exec()  Matlab และ Octave กำหนดเงื่อนไขให้ชื่อของไฟล์จะต้องเหมือนกับชื่อของฟังก์ชันที่ไฟล์มี ด้วยส่วนขยาย  
.m  เป็นผลให้แต่ละไฟล์ฟังก์ชันสามารถมีเฉพาะฟังก์ชันเดียว  แต่ฟังก์ชันสามารถถูกโหลดเข้ามาโดยอัตโนมัติเข้ามาในพื้นที่ทำงาน เป็นเหมือนเมื่อต้องการแทนที่จะเป็นที่ต้องการให้ถูกโหลดเข้ามาในพื้นที่ทำงานอย่างชัดแจ้ง โดยผู้ใช้   นี่ยอมให้แยกแยะได้ด้วย ถ้าซอร์ทโค๊ดได้รับการปรับเปลี่ยน และคอมไพล์ใหม่ และโหลดฟังก์ชันเข้าไปในพื้นที่ทำงาน ได้ทันที่ (on the fly)เมื่อต้องการ  ไฟล์ฟังก์ชันที่จัดระเบียบในโฟลเดอร์ และสามารถบอกได้ว่าโฟลเดอร์ใดที่จะมองหาเมื่อค้นหาสำหรับไฟล์ฟังก์ชันที่ต้องการ ไฟล์สคริปซ์เป็นวิธีการที่ง่ายของการโหลดข้อมูลเข้าไปยังพื้นที่ทำงานไซแลบ และโดยวิธีนี้เป็นเลี่ยงการดำเนินการอ่านไฟล์  นี่เป็นเพราะไฟล์สคริปซ์เข้าไปใช้พื้นที่ทำงานไซแลบโดยตรง และสามารถอ่านข้อมูล และเขียนข้อมูลไปยังพื้นที่ทำงานไซแลบ   ขณะที่เป็นเรื่องง่ายที่จะเข้าใจและใช้งาน สามารถที่จะนำไปสู่ข้อผิดพลาดในกรณีที่เป็นชุดข้อมูลและโค๊ดขนาดใหญ่และซับซ้อน ไฟล์ฟังก์ชันไม่ได้เข้าใช้พื้นที่ทำงานไซแลบโดยตรง และดังนั้นการแลกเปลี่ยนข้อมูลผ่านทางพารามีเตอร์อินพุต และเอ้าพุต  แนวทางนี้ซับซ็อนกว่าและเป็นโมดูล  โดยหลักแล้ว เรายกเลิกความง่ายไปเพื่อแลกกับความเป็นโมดูล  ไฟล์ฟังก์ชันมีข้อดีของการแยกจากข้อมูลในพื้นที่ทำงานแบบโกรบอล จากข้อมูลที่ภายในตัวของฟังก์ชัน  การทำแบบนี้ช่วยหลีกเลี่ยงข้อผิดพลาดได้  โดยเพิ่มระดับชั้นของความซับซ้อนสำหรับโปรแกรมเมอร์ เนื่องจากข้อจำกัดต่างๆและวิธีการที่กำหนดไว้อย่างดีเป็นวิธีการแลกเปลี่ยนข้อมูล  ฟังก์ชันเป็นโมดูลและเซ็ตของการดำเนินการที่ซับซ็อนทำให้เป็นนามธรรมจัดให้เป็นการเรียกใช้ฟังก์ชันเดียว  ฟังก์ชันต่างๆ เป็นที่จำเป็นเมื่อเราประสงค์ที่จะสร้างโปรแกรมขนาดใหญ่และซับซ้อน


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

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