องค์ประกอบของโปรแกรมภาษา

โปรแกรมภาษาไม่ได้เป็นเพียงแค่วิธีการเขียนคำสั่ง เพื่อสร้างโปรแกรมมาใช้งาน แต่ยังเป็นเครื่องมือสำหรับจัดการแนวความคิดของเรา แปลงไปสู่โปรแกรมที่ต้องการได้ โดยเริ่มจากแนวคิดง่ายๆ รวมเข้าด้วยกันจนได้แนวคิดที่สลับซับซ้อน โปรแกรมภาษาที่จะทำอย่างนั้นได้ 1. ต้องมีองค์ประกอบพื้นฐาน (primitive expression) ในรูปแบบง่ายที่สุด 2. มีวิธีการประกอบสิ่งใหม่ (means of combination) จากองค์ประกอบพื้นฐานมาสู่สิ่งที่ซับซ้อนขึ้น และ 3. มีวิธีในการนิยามแนวคิดใหม่ (means of abstraction) โดยการให้ชื่อกับสิ่งที่ประกอบขึ้นมาใหม่ และใช้ชื่อแทนสิ่งนั้น ลองมาดูตัวอย่างโปรแกรมภาษาที่สนับสนุน องค์ประกอบสำคัญในโปรแกรม ซึ่งมีอยู่สองอย่างคือ ข้อมูล กับ การทำงาน (กับข้อมูล) สำหรับข้อมูลพื้นฐาน เช่น ตัวเลข และ ตัวอักษร สามารถนำมาประกอบเป็นข้อมูลชนิดใหม่ได้เช่น ข้อมูลปฏิทิน 7/25/2011 หรือ 25 ก.ค. 2554 แต่ที่สำคัญ ถ้าไม่บอกก่อนว่าข้อมูลที่เห็นนี้คือปฏิทิน เราอาจไม่รู้ว่ามันคืออะไร แต่แนวคิดในการเอาข้อมูล วัน เดือน ปี มาประกอบกันขึ้น และให้ชื่อใหม่ว่า ปฏิทิน  แล้วทำให้ทุกคนเข้าใจแนวคิดของปฏิทินตรงกัน เมื่อเห็นหรือพูดถึงข้อมูลเหล่านี้ก็จะรู้ได้ทันทีว่า นี้คือข้อมูลปฏิทิน สำหรับการทำงาน …

Advertisements

คอมพิวเตอร์โอลิมปิก IOI 2011

การแข่งขันคอมพิวเตอร์โอลิมปิกปีนี้ (IOI 2011) จัดที่ประเทศไทยเมืองพัทยา วันนี้เป็นวันแรกของการแข่งขัน ถ้าใครอยากลองเขียนโปรแกรมเหมือนในการแข่งขันนี้ สามารถดูได้ที่นี้ ข้อสอบ ส่วนผลการแข่งขันวันแรกดูที่รูปด้านล่างนี้ ส่วนรายละเอียดดูได้ที่ score

ครูกับการสอน Origami

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

ทำ PowerPoint ด้วย Scratch

PowerPoint เป็นการนำเสนอที่นิยมใช้ทั่วไป แต่อาจยากเกินไปสำหรับเด็กๆ Scratch ส่งเสริมให้เด็กแสดงออกทางความคิดได้หลากหลายรูปแบบ รวมทั้งสามารถทำ PowerPoint แบบง่ายๆ แต่ยังคงหลักการของการนำเสนอได้ โปรเจก Scratch4Kid แนะนำ Scratch ในรูปแบบ PowerPoint ที่สร้างด้วย Scratch พร้อมกับแอนิเมชั่นสั้นๆ เพิ่มสีสรรให้กับการนำเสนอด้วย โปรเจกนี้มีตัวละคร 2 ตัวเป็นปุ่มลูกศรซ้ายขวา คลิกปุ่มขวาเพื่อเลื่อนสไลด์ไปข้างหน้า คลิกปุ่มซ้ายเพื่อเลื่อนสไลด์ถอยหลัง นอกจากนั้นยังใช้การกดคีย์ลูกศรซ้ายขวาบนคีย์บอร์ด ให้ทำงานเหมือนกับการคลิกปุ่มบนเวทีได้ด้วย ก่อนจะเปลื่ยนสไลด์ไม่ว่าด้วยวิธีใด ปุ่มลูกศรบนเวทีจะแสดงแอนิเมชั่นสั้นๆ ส่วนตัวสไลด์เป็นภาพฉากหลังของเวที เมื่อเวทีได้รับรหัส "next page" ก็จะเปลี่ยนฉากหลังถัดไป ถ้ารับรหัส "previous page" ก็จะเปลี่ยนฉากหลังก่อนหน้านี้

อัลกอริธึม (algorithm)

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