Archive

Posts Tagged ‘educational programming’

ฝึกการเขียนโปรแกรม ด้วย Robo MIND

สำหรับผู้ที่อยู่ในแวดวงการศึกษา บรรดาครูอาจารย์ทั้งหลาย ผู้ที่ต้องสอนการเขียนโปรแกรมให้กับ เด็ก ๆ ในระดับชั้นปฐม ถึง มัธยม หากต้องการหาเครื่องมือดี ๆ สำหรับช่วยสอนและสร้าง วิธีคิดในการเขียนโปรแกรม ลองมาดูโปรแกรมช่วยฝึกหัดวิธีการคิด และพัฒนาทักษะในการเขียนโปรแกรมที่ชื่อ Robo MIND กันสักนิด

สำหรับผมเองบางทีก็ได้มีโอกาส รับเชิญให้ไปสอนการเขียนโปรแกรมให้กับ เด็ก ๆ ซึ่งก็ได้ประสบการณ์ในการสอนเด็ก ๆ มากพอที่จะทราบว่าการสอนเด็ก ๆ นั้น ไม่ใช่เรื่องง่ายเลย โดยเฉพาะสอนการเขียนโปรแกรมด้วยแล้ว คงไม่ต้องบรรยาย

มีสิ่งหนึ่งที่ผมพอสังเกตได้ก็คือ หากเรื่องหรือเนื้อหาที่เรา จัดมาสอนนั้นสนุกสนาน น่าสนใจแล้วละก็จัดการกับ เจ้าพวกลิงได้ชงัดนัก ฉะนั้นแล้ว ครูอาจารย์ทั้งหลาย ทางเลือกหนึ่งที่ท่านสามารถทำได้ และนำไปใช้ได้ ที่ผมมองเห็นก็เจ้า Robo MIND นี่แหละครับ

pictures from http://www.robomind.net

สำหรับเจ้า RoboMind นี้ เป็นโปรแกรมช่วยฝึกการเขียนโปรแกรมแบบ ง่าย ครับเหมาะสำหรับเด็กที่เริ่มฝึกเขียนโปรแกรม ในระดับชั้นปฐมถึงมัธยม นะครับ ก่อนที่เด็กเหล่านี้จะก้าว ไปเขียน programming language อย่างเช่น c หรือ pascal ต่อไป ในระดับที่สูงขึ้น

ลักษณะของโปรแกรมนั้น จะมี Robot ให้เราควบคุมการทำงานมันด้วย การพิมพ์คำสั่ง ทีละคำสั่งต่อเนื่องกันไป เพื่อให้ Robot น้อยเคลื่อนที่ ไปตามทิศทางที่ต้องการ และทำงาน ต่าง ๆ ตามชุดคำสั่งที่มีให้ ครับ  นอกจากนี้ยังมี คำสั่ง ให้ทำซ้ำ  และทดสอบเงื่อนไข เพื่อการเขียนมีความซับซ้อนเพิ่มขึ้นได้อีก

ผมกล่าวมาแค่นี้ ท่านที่กำลังอ่านอยู่ก็คงจะ Bingo แล้วใช่ไหมครับ มันยอดมากจริง ๆเอาละครับ ลองมาดูรายละเอียดกันหน่อย ครับว่าในบทความนี้จะมีอะไรกันบ้าง

  • เรื่องของ หน้าตา และเครื่องมือสำหรับการใช้งาน (development environments )
  • คำสั่งพื้นฐาน  (Basic instructions)
  • โครงสร้างของโปรแกรม (Programming structures)
  • ตัวอย่างโปรแกรม ครับ

หน้าตา และเครื่องมือสำหรับการใช้งาน (development environments )

โปรแกรม RoboMind นั้นสิ่งสำคัญก็คือ การเขียนคำสั่งและ ประมวลผลคำสั่ง ที่จะสั่งการ เจ้าหุ่ยน้อย หรือ เจ้า ROBO   หน้าตาโปรแกรมก็ง่ายๆ ครับ

หน้าจอด้านซ้าย จะเป็นหน้าต่างสำหรับการ เขียน code และหน้าจออีกด้านหนึ่งจะแสดงการทำงานของเจ้า ROBO ครับ เมื่อสั่งให้ run โดยการคลิกปุ่ม play โปรแกรมจะตรวจสอบ code ว่าถูกต้องหรือไม่ก่อน แล้วจึงทำงานให้

หน้าจอด้านซ้ายสำหรับการเขียน code นั้นเราเรียกว่า  Text Editor สว่นหน้าจอด้านขวาที่ใช้แสดงการทำงานนั้นเราเรียกมันว่า  Monitor

Text Editor นั้นมีฟังก็ชั้นการทำงานเพิ่มเติมเช่น

  • แสดง line number
  • แสดง ข้อความ error ที่เกิดขึ้นได้
  • สามารถทำ undo change ได้ไม่จำกัด
  • มี function ในการค้นหาและ แทนที่ได้ (สามารถใช้ regular expressions ได้ด้วย)
  • ในขณะทำงาน จะแสดงหัวลูกสอนที่บรรทัดที่กำลังทำงานอยู่ได้อีกด้วย

Monitor

  • เป็นหน้าจอสำหรับ แสดง การทำงานของเจ้า ROBO และ โลกของมัน
  • สามารถ pan และ zoom ได้ และยังสามารถทำ screen shot เก็บไว้ได้ด้วย

การ Execute โปรแกรม

ไม่ต้องทำอะไร มากครับ สามารถสั่งให้ code ที่ถูกต้องแล้ว ทำงานได้ด้วย คลิกเดียวครับ

เราแค่จัดการให้ code คำสั่ง ถูกต้อง ถูกลำดับการทำงานที่ ออกแบบไว้ หากมี error ใด โปรแกรมจะแจ้งให้ทราบและสามารถแก้ไขให้ถูกต้องก่อน ที่จำทำงานจริงทั้งหมด

คำสั่งพื้นฐาน Basic instructions

ประกอบด้วยคำสั่งดังนี้ แยกตามกลุ่มคำสั่ง

  • คำสั่งเคลื่อนที่ Move
    • forward(n) เคลื่อนที่ไปข้างหน้า n steps
    • backward(n) ถอยหลังไป n steps
    • left() หมุนซ้าย 90 องศา
    • right() หมุนขวา 90 องศา
    • north(n) หันหัวไปด้านบน ของหน้าจอ และ เคลื่อนที่ไปข้างหน้า n steps
    • south(n) หันหัวลงล่าง ของหน้าจอ และ เคลื่อนที่ไปข้างหน้า n steps
    • east(n) หันหัวไปข้างขวา ของหน้าจอและ เคลื่อนที่ไปข้างหน้า n steps
    • west(n) หันหัวไปข้างซ้าย ของหน้าจอ และเคลื่อนที่ไปข้างหน้า n steps
  • คำสั่งระบายสี Paint
    • paintWhite() ลากแปรงสีขาว ไปบนพื้น
    • paintBlack() ลากแปรงสีดำ ไปบนพื้น
    • stopPainting() หยุดลากแปลง และเก็บแปรงสี
  • คำสั่งหยิบ Grab
    • pickUp()  หยิบ สิงของที่อยู่ด้านหน้า
    • putDown() วางสิ่งของที่ถือไว้ลง
  • คำสั่งโยนเหรียญ เพื่อเสี่ยงทาย Flop coin
    • coinflip() โดยเหรียญเพื่อ เลือกตัวเลือก
  • คำสั่งตรวจสอบ หรือ ตรวจการ See
    • leftIsObstacle() , frontIsobtacle(), rightIsObstracle()
    • leftIsClear(), frontIsClear(), rightIsClear()
    • leftIsBeacon(), frontIsBeacon(), rightIsBecan()
    • leftIswhite(), frontIsWhite() , rightIsWhite()
    • leftIsBlack(), frontIsBlack(), rightIsBlack()

โอโห้ น่าสนใจเป็นอย่างยิ่ง คงจะไม่สามารถ อดใจที่จะลงมือเขียน กันแล้วใช่ใหม่หล่ะเด็ก ๆ ทั้งหลาย เอาเป็น ต่อภาคสองก็แล้วกันนะครับ เพราะมันยาวเกินไปแล้วครับ สำหรับ ภาคดแรกนี้ ไปดู คลิป กระตุ้น อีกนิดนะครับ  ไปตาม link นี้เลยครับ

http://www.robomind.net/en/demo.html

ตอนต่อไป เราจะไป load โปรแกรมแล้วลองมาเขียนเล่นกันนะครับ

s_teerapong2000@yahoo.com