microBlock IDE ไม่ได้มีดีเฉพาะลากบล็อก การเขียนโค้ดฝั่ง microPython ก็ดีไม่แพ้กัน
เปลี่ยนโหมด Block/Code
สามารถดูโค้ดที่เขียนในรูปแบบภาษา Python ได้ แต่ถ้าต้องการแก้ไขจะมีข้อความแจ้งเตือนว่าบล็อกเดิมจะสูญหาย
ให้ตอบ Yes แล้วเปลี่ยนโค้ด ในบรรทัดที่ 5 จาก display.scroll (‘world’) เป็น display.scroll(‘KidBright’)
ถ้าการเขียนโค้ดไม่มีข้อผิดพลาด สามารถกดปุ่ม Upload เพื่อดูผลโค้ดที่เปลี่ยนไปได้เลย
หมายเหตุ เมื่อแก้ไขโค้ดแล้วย้อนกลับมาที่หน้าต่าง Block โค้ดทั้งหมดจะถูกยุบรวมเป็นบล็อกเดียวดังรูป
ในกรณีที่โค้ดยาวมาก ไม่ควรเปลี่ยนกลับมาโหมด Block อีก เพราะโปรแกรมจะใช้เวลานานมากเพื่อเปลี่ยนโค้ดให้กลายเป็นบล็อก
หน้าต่าง Terminal
ก่อนเขียนโค้ดจริงจังดัวย microPython ซ้อมมือกันก่อนที่หน้าต่าง Terminal นอกจากจะทำหน้าที่รับค่าข้อมูลมาแสดงผลแล้วยังมีโหมด REPL เพื่อทดสอบการพิมพ์โค้ดแบบทีละบรรทัดได้ด้วย
REPL คืออะไร
REPL ย่อมาจาก READ-EVAL-PRINT LOOP
เป็นสภาพแวดล้อมในการเขียนโปรแกรมแบบ Interactive ที่สามารถแสดงผลลัพธ์ได้ทันทีโดยไม่ต้องมีการคอมไพล์ ใช้กับซอฟต์แวร์ที่เป็นลักษณะ Interpreter แบบภาษา Python ได้เลย โดยผู้ใช้งานสามารถทดสอบพิมพ์คำสั่งเพื่อทดสอบการทำงานได้ เช่นคำสั่ง
>>> print (5+6)
11
โดย
Read = การอ่านข้อมูลอินพุตจากผู้ใช้
Eval = มาจาก Evaluate คือการแปลและประมวลผลข้อมูลอินพุตอันนั้น
Print = การแสดงผลที่ประมวลได้
Loop = วนกลับไปรอรับข้อมูลอินพุตใหม่
โดยการทดสอบแบบนี้จะต้องเชื่อมต่อบอร์ด KidBright32iP เข้ากับคอมพิวเตอร์ตลอดเวลาใช้งาน
ทดสอบคำสั่งคณิตศาสตร์ในโหมด REPL
หมายเหตุ ในกรณีที่บอร์ด KidBright32iP กำลังทำงานอยู่ ไม่สามารถเข้าสู่โหมด REPL ได้จะต้องกดคีย์ลัดดังนี้
CTRL+C หยุดการทำงานของโปรแกรมหลักเพื่อเข้าโหมด REPL
CTRL+D รีเซตการทำงานของ KidBright32iP
ทดสอบคำสั่ง print ในโหมด REPL
คำสั่ง print ใช้เพื่อนำค่าต่างๆ แสดงผลที่หน้าต่าง Terminal สามารถแสดงข้อความ (ในเครื่องหมาย ‘ ‘ หรือ ” ” ) ค่าตัวเลขหรือค่าตัวแปร นอกจากนี้ยังมีอักขระพิเศษ ที่ปกติพิมพ์ออกมาไม่ได้จะต้องขึ้นต้นด้วยเครื่องหมาย \
ตัวแปรใน microPython
microPython ใช้วิธีการง่ายๆ ในการสร้างตัวแปร เช่น
>>> X = 400 ### X จะเป็นตัวแปรแบบ Integer :int หรือจำนวนเต็ม
>>> Y = 4.5 ### Y จะเป็นตัวแปรแบบ Float :float หรือตัวเลขทศนิยม
>>> Z = True ### Z จะเป็นตัวแปรแบบ Boolean : bool ให้ผลจริงกับเท็จ
>>> S = ‘inex’ ### S จะเป็นตัวแปรแบบ String :str หรือข้อความ
สำหรับการตรวจสอบชนิดของตัวแปรที่สร้างขึ้นให้พิมพ์ type (var) โดย var คือชื่อตัวแปรที่ต้องการตรวจสอบ
ตัวแปร list
list ใช้เก็บข้อมูลหลายชุดและหลายประเภท และชี้ข้อมูลด้วย index ใช้เหมือนกับ Array ในภาษาอื่น แต่ข้อมูลหลายประเภทอยู่ในตัวแปรเดียวกันได้ ข้อมูลจะอยู่ภายในเครื่องหมาย [] คั่นสมาชิกแต่ละตัวด้วยเครื่องหมาย ,
นอกจากนี้ list ยังมีฟังก์ชั่นพิเศษเพื่อจัดการข้อมูลที่อยู่ภายในหลายตัวดังนี้
ตัวแปร tuple
tuple มีลักษณะคล้าย list แต่เปลี่ยนค่าไม่ได้ ประกาศโดยให้สมาชิกอยู่ในเครื่องหมาย () และคั่นด้วยเครื่องหมาย ,
การเข้าถึงสมาชิกภายใน tuple
ใช้ตัวชี้แบบเดียวกับ list โดยใช้เครื่องหมาย [] แต่อ่านกลับได้อย่างเดียว ไม่สามารถเขียนค่าลงไปได้
การกำหนดค่าตัวแปร
- ขึ้นต้นด้วยตัวอักษร
- อักขระพิเศษเช่น -,/,#,@ ใช้ไม่ได้
- ชื่อตัวแปรเว้นวรรคไม่ได้ใช้ ‘_’ แทน
- ห้ามใช้คำสงวนเช่น print
คำสั่งเกี่ยวกับตัวแปรที่ใช้บ่อย
การตรวจสอบเงื่อนไข if
จากบล็อก if เมื่อนำมาเขียนเป็น microPython จะมีรูปแบบไวยกรณ์ดังนี้
การตรวจสอบเงื่อนไข while
การเปรียบเทียบ
ใช้งานได้เหมือนกับแบบบล็อกดังนี้
ตัวอย่าง
การสร้างฟังก์ชั่น
เพื่อรวมคำสั่งหลายๆ คำสั่งไว้ในที่เดียวกันแล้วเรียกใช้ในชื่อเดียว
ตัวอย่าง
ตัวแปรกับฟังก์ชั่น
ตัวแปรที่อยู่ในฟังก์ชั่นจะถูกเรียกและใช้งานภายในฟังก์ชั่นเท่านั้น ถ้าต้องการให้ใช้งานภายนอกได้ด้วย จะต้องประกาศตัวแปรให้เป็นแบบ Global ก่อน
คำสั่งพิเศษอื่นๆ ที่ใช้งานบ่อย
ตัวอย่างที่ 13-1 การนับค่าเพิ่มทุกๆ 0.5 วินาที
เป็นการเขียนโค้ดเต็มๆ ด้วย microPython โดยให้พิมพ์โค้ดทั้งหมด จากนั้น upload โค้ดไปยังบอร์ด kidBright32iP และดูผลการทำงานที่หน้าต่าง Terminal
การทำงาน
บรรทัด 1 ถ้ามีการใช้คำสั่งหน่วงเวลา sleep จะต้องเพิ่มโมดูล time เข้ามาในโปรแกรมด้วยคำสั่ง import
บรรทัด 2 กำหนดตัวแปรสำหรับการนับ x ให้เท่ากับ 0
บรรทัด 3 วนลูปไปเรื่อยๆ (เทียบเท่าคำสั่ง forever ในแบบบล็อก)
บรรทัด 4 ส่งค่า x ไปแสดงที่หน้าต่าง terminal
บรรทัด 5 หน่วงเวลา 0.5 วินาที
บรรทัด 6 เพิ่มค่า x ขึ้น 1 ค่า
ผลลัพธ์
โปรแกรมจะวนส่งค่าตัวเลขไปแสดงที่หน้าต่าง terminal ไปเรื่อยๆ
ถ้าสนใจการเขียนโค้ดด้วย microPython ลองศึกษาข้อมูลจากภายนอกเพิ่มเติมนะครับ
แล้วเอามาประยุกต์กับบอร์ด kidBright32iP และ microBlock IDE กันนะครับ คอยติดตามตามต่อไปครับ