หลักสูตรพื้นฐานการเขียนโปรแกรม
CAMP 1 : BASIC PROGRAMMING (30 ชั่วโมง) =( 3ชั่วโมง x 10 สัปดาห์)
เพื่อคัดกรองผู้เรียน จากพื้นฐานความรู้คณิตศาสตร์ระดับดี (6 ชั่วโมงแรก)
- เรียนรู้ ฝึกฝนปฏิบัติ ขั้นตอนการจัดเตรียม คอมไพเลอร์ ผ่านวิดีโอบันทึกการสอนโดยละเอียด และสามารถติดตั้งใช้งาน EDITPLUS และ C/C++ COMPILER ได้เป็นอย่างดี
- เรียนรู้การทำงานของตัวแปรภาษา และคำสั่งโปรแกรมพื้นฐานเบื้องต้น สามารถทำให้ code ที่ได้จัดเตรียมเอาไว้ สามารถทำงานให้ได้ผลลัพธ์ตามต้องการ ทั้ง input ตามที่โจทย์กำหนด และบันทึก output เพื่อส่งงาน
- สามารถดัดแปลงคำสั่งโปรแกรมเดิม ให้ทำงานได้ตามที่โจทย์ต้องการ
- แก้ไขคำสั่ง หาจุดผิดพลาดของคำสั่งใน source code โดยเปรียบเทียบจาก code ที่ถูกต้อง
- สามารถวิเคราะห์โจทย์คณิตศาสตร์ เพื่อสร้างอัลกอริทึ่ม ลำดับการทำงานของคำสั่ง และเขียน Flowchart ได้
- สามารถเขียนโปรแกรมคำสั่งได้ด้วยตนเอง จากโจทย์คณิตศาสตร์ง่ายๆ และให้รับค่าข้อมูลตามที่โจทย์กำหนด
กลุ่มเป้าหมาย :
- กลุ่มนักเรียนมัธยมต้นและมัธยมปลาย ที่สนใจเตรียมตัวสอบแข่งขันระหว่างประเทศ, ในประเทศ,สสวท,สอวน
- นิสิต นักศึกษา ระดับอุดมศึกษา ทั้งภาครัฐและเอกชน สาชาวิชา วิศวกรรมศาสตร์ วิทยาศาสตร์ ไอทีสารสนเทศ
- นิสิต นักศึกษา ระดับปริญญาโท ที่ต้องการทบทวนความรู้พื้นฐานการเขียนโปรแกรม ก่อนต่อยอดไปศึกษาในวิชาการเขียนโปรแกรมชั้นสูง เช่น Visual Basic, OOP, JAVA, JavaScript, Android Application, Web Programming,
เรียนพื้นฐานแนวคิดการเขียนโปรแกรมคอมพิวเตอร์การทำงานของตัวแปรภาษา C/C++ Programmingจัดเตรียมคอมไพเลอร์ เริ่มต้นตั้งแต่พื้นฐานวิธีคิด อัลกอริทึ่ม คำสั่งภาษาซี และ ซีพลัสพลัส ไวยากรณ์ภาษาโปรแกรม การอินพุทข้อมูล(input) การแสดงผลเอาท์พุท (output) การเลือกใช้คำสั่งเงื่อนไขต่างๆ การตรวสอบเงื่อนไขตรรกะ คำสั่งวนลูป การกำหนดตัวแปร การเลือกใช้ library การแก้ไขคำสั่งเมื่อพบความผิดพลาด เป็นต้น
- รู้จักกับภาษา C และ C++, การจัดเตรียมคอมไพเลอร์,การคอมไฟล์, ขั้นตอนการทำงานของโปรแกรมภาษา C, ข้อมูลและตัวแปรในภาษา C, ชนิดของข้อมูล, ชนิดของตัวแปร, รูปแบบการประกาศตัวแปร, หลักการตั้งชื่อตัวแปร, ตัวแปรชนิดข้อมูล ชนิดข้อความ, แบบฝึกหัด
- เครื่องหมายและการดำเนินการในภาษา, การคำนวณทางคณิตศาสตร์, การเปรียบเทียบ, ตรรกศาสตร์ , การเขียนนิพจน์, การเปลี่ยนชนิดของตัวแปร, การแสดงผลและการรับข้อมูล, การจัดรูปแบบการแสดงผลทางหน้าจอ, การแสดงผลทีละอักขระ, การแสดงผลเป็นข้อความ, การรับข้อมูลด้วยคำสั่งลักษณะต่างๆจากคีย์บอร์ด, แบบฝึกหัด
- การควบคุมทิศทางการทำงานของโปรแกรม (if, if-else, if-else if, if ซ้อน if, switch), การใช้ฟรีโปรเซสเวอรืไดเร็คทีฟ, การควบคุมทิสทางแบบวนรอบ(while, do-while, for), คำสั่งประกอบการควบคุมทิศทางแบบต่างๆ(break,continue,exit()),แบบฝึกหัด
- ตัวแปรอาร์เรย์, การประกาศตัวแปรอาร์เรย์หลายมิติ, ตัวแปรพอยน์เตอร์, แบบฝึกหัด
- ฟังก์ชันในภาษา C , ตรวจสอบการทำงานของโปรแกรม, แบบฝึกหัด
- โครงสร้างข้อมูล, การประกาศตัวแปรชนิดโครงสร้าง, แบบฝึกหัด
- การติดต่อการไฟล์, text file, binary file, การเปิดไฟล์, การปิดไฟล์, การอ่านข้อมูลจากไฟล์, เขียนข้อมูลลงไฟล์, การจัดการกับตัวชี้ตำแหน่งไฟล์, การลบไฟล์, เปลี่ยนชื่อไฟล์, แบบฝึกหัด
- การจัดสรรหน่วยความจำแบบไดนามิก, การเรียงลำดับข้อมูลในอัลกอริทึ่มแบบต่างๆ, แบบฝึกหัด
CAMP 2 : INTERMEDAITE PROGRAMMING (30 ชั่วโมง) =( 3ชั่วโมง x 10 สัปดาห์)
กลุ่มเป้าหมาย : ผู้ที่มีพื้นฐานความรู้ความเข้าใจการคิดวิเคราะห์โจทย์สร้างอัลกอริทึ่มก่อนการเขียนโปรแกรมมาบ้างแล้ว
เข้าใจหลักการใช้ไวยากรณ์ภาษาการเขียนโปรแกรมเป็นอย่างดี สนใจฝึกฝนกับคลังโจทย์จากต่างประเทศ แนวคิด วิธีการที่แตกต่างออกไป ฝึกฝนเพื่อเพิ่มความชำนาญประยุกต์โจทย์วิเคราะห์เชิงคณิตศาสตร์ ให้สามารถประมวลผลด้วยการเขียนโปรแกรม เพื่อทำเวลาสำหรับการแข่งขัน เพื่อสอบ เป็นต้น
มีตัวอย่างโจทย์สำหรับฝึกฝน คิดอัลกอริทึ่มและเขียนคำสั่งโปรแกรม ประมาณ 100 ข้อ
- Zoo
- Miners
- Pairs
- Training
- Debug
- Writing
- เครื่องพิมพ์เรียงพิมพ์
- Islands
- Fish
- Linear Garden
- Teleporters
- Pyramid Base
- Flood
- Sails
- สายพันธุกรรม (DNA)
- Jez
- Skakavac
- Krtica
- ปริศนา 15 (fifteen)
- Digging for Oil
- The Siruseri Convention Centre
- The Great ATM Robbery
- พิสัยพิเศษ (range)
รวมโจทย์การแข่งขันจาก IPST
https://cprogrammingcamp.wordpress.com/2010/11/17/โจทย์ programming
Asia-Pacific Informatics Olympiad
https://cprogrammingcamp.wordpress.com/2010/11/19/informatics-olympiad
Indian Computing Olympiad
http://www.iarcs.org.in/inoi/2002/
IEEE – IEEEXtreme 24-Hour Programming Competition
http://www.ieee.org/xtreme
ตัวอย่างโจย์ : Mobiles
คุณถูกขอร้องให้ซื้อของขวัญให้กับลูกของพี่ชายชื่อ ไอค์ อย่างไรก็ตามคุณสังเกตเห็นว่า ไอค์มีรสนิยมเฉพาะในเรื่องของขวัญกล่าวคือไอค์ชอบเฉพาะทุกๆอย่างที่ไอค์สามารถจัดเรียงลำดับได้
คุณพบร้านขายของแห่งหนึ่งซึ่งขายโมบาย ซึ่งเป็นการตกแต่งคล้ายกับปลาตะเพียนแขวนของไทยที่เป็นชั้นๆ แขวนจากเพดานลงมา โมบายแต่ละชุดประกอบด้วยแกนแนวนอนหลายๆแกนโดยที่ปลายทั้งสองด้านของแกนมีเส้นลวดผูกแนวดิ่งอยู่ติดกับแกนหรือติดกับของเล่น ตัวอย่างของโมบายแสดงไว้ดังรูปด้านล่างนี้
เพื่อให้พี่ชายของคุณพอใจ คุณจำเป็นที่ต้องหาโมบาย ที่สามารถปรับเปลี่ยนรูปแบบได้เพื่อที่จะให้
- ของเล่นสองชิ้นใดๆ จะอยู่ที่ระดับเดียวกัน (เชื่อมจากเพดานที่จำนวนของแกนเท่ากัน) หรือต่างกันได้ไม่เกินหนึ่งระดับ
- สำหรับของเล่นที่ต่างกันหนึ่งระดับนี้ของเล่นที่อยู่ทางด้านซ้ายจะอยู่ต่ำกว่าของเล่นที่อยู่ทางด้านขวา
โมบายที่สามารถปรับเปลี่ยนได้ตามนี้ โมบายทุกอันอนุญาตให้ที่ปลายของแกนสลับกันได้ซึ่งทำได้ โดยปลดอะไรก็แล้วแต่ที่แขวนอยู่ใต้ปลายของแกนทางซ้ายและขวา แล้วทำการติดสิ่งนั้นกลับเข้าไปใหม่โดยสลับด้านกัน การทำแบบนี้ไม่ได้เปลี่ยนแปลงลำดับของแกนหรือของเล่นที่อยู่ต่ำลงไป
ในขณะที่คุณกำลังฝึกฝนสำหรับการแข่งขันคอมพิวเตอร์โอลิมปิก คุณตัดสินใจที่จะฝึกทักษะโดยออกแบบ ขั้นตอนวิธี ในการทดสอบว่าจากโมบาย ที่ให้ไปนั้นสามารถปรับเปลี่ยนเป็นของขวัญที่ไอค์ ชอบได้
ในตัวอย่างรูปด้านบน ไอค์ ไม่ชอบ โมบายแบบนี้ แม้ว่ามันจะสอดคล้องเงื่อนไขที่ 1 แต่ไม่เข้าเงื่อนไขข้อที่ 2 เนื่องจากของเล่นที่ปลายด้านซ้ายสุดอยู่สูงกว่าของเล่นที่อยู่ทางด้านขวามือ
อย่างไรก็ตาม โมบายนี้สามารถปรับเปลี่ยนให้เป็นแบบที่ ไอค์ ชอบได้ โดยการสลับที่เป็นไปตาม
- ขั้นแรก ปลายทางด้านซ้ายและขวาของแกนสลับที่กันซึ่งเป็นผลให้แกนหมายเลข 2 และแกนหมายเลข 3 เปลี่ยนที่กันดังแสดงไว้ในรูปที่ ๒
- ขั้นที่สองและเป็นขั้นสุดท้ายปลายทางซ้ายและขวาของแกนที่ 2 สลับที่กันและของเล่นจะอยู่ที่ปลายด้านขวาของแกนที่ 2 ดังแสดงไว้ในรูปที่ ๓
รูปที่ ๓ อาจมองได้ว่าเป็นรูปแบบ โมบายที่เป็นไปตามความต้องการของไอค์ ของเล่นที่ติดอยู่ทุกชิ้นต้องมีความแตกต่างของชั้นไม่เกินหนึ่งระดับ ของเล่นที่อยู่ในระดับที่ต่ำกว่าจะอยู่ไปทางซ้ายของของเล่นที่อยู่ระดับที่สูงกว่า
งานของคุณคือจากข้อมูลของ โมบายที่ได้ให้หาจำนวนครั้งที่น้อยที่สุดในการสลับที่กันของแกนที่ทำให้ได้รูปแบบที่ ไอค์ พึงพอใจ (ถ้ามีรูปแบบนั้นอยู่) คุณยังมั่นใจได้ด้วยว่าของเล่นสองข้างของแกนจะไม่มีการสลับที่กันเอง
ข้อมูลนำเข้า
บรรทัดแรก เป็นตัวเลขจำนวนเต็ม n มีค่าอยู่ระหว่าง (1 ≤ n ≤ 100 000) ซึ่งแสดงถึงจำนวนแกนใน โมบายแกนจะถูกกำหนดตัวเลขตั้งแต่ 1,2,…,n
บรรทัดต่อมาอีก n บรรทัด เป็นการบรรยายถึงการเชื่อมต่อกันของแกนแต่ละอัน เช่น บรรทัดที่ i ของกลุ่มบรรทัดในส่วนนี้แสดงถึงแกนหมายเลข i แต่ละบรรทัดจะมีตัวเลขจำนวนเต็ม 2 ตัว l และ r แยกกันด้วยช่องว่างหนึ่งช่อง ซึ่งจะเป็นตัวที่บอกว่ามีอะไรแขวนอยู่ทางด้านซ้ายและด้านขวาของแกนนั้น ถ้ามีของเล่นแขวนอยู่ภายใต้แกนนี้ค่าของ l และ r จะมีค่าเป็น -1 ถ้าไม่เช่นนั้นค่าตัวเลข l และ r จะหมายถึงแกนที่แขวนอยู่ภายใต้แกนนั้น
ถ้ามีแกนใดที่อยู่ใต้แกน i, แกนเหล่านั้นจะต้องมีหมายเลขแกนมากกว่า i เสมอ และแกนหมายเลข 1 เป็นแกนเดียวที่อยู่บนสุดของโมบาย
ข้อมูลส่งออก
ข้อมูลส่งออกประกอบด้วยตัวเลขจำนวนเต็มหนึ่งตัวในบรรทัดเดียวที่ให้จำนวนครั้งที่น้อยที่สุดในการสลับที่กันของแกนที่ปรับเปลี่ยน โมบายให้ได้รูปแบบตามเงื่อนไขของไอค์ ถ้าไม่มีรูปแบบดังกล่าวข้อมูลส่งออกจะมีค่าเป็นจำนวนเต็ม -1
ที่มา: Asia-Pacific Informatics Olympiad 2007
ตัวอย่างข้อมูลนำเข้า | ตัวอย่างข้อมูลส่งออก |
6 2 3 -1 4 5 6 -1 -1 -1 -1 -1 -1 |
2 |
CAMP 3 : ADVANCED PROGRAMMING (30 ชั่วโมง) =( 3ชั่วโมง x 10 สัปดาห์)
ฝึกฝนกับโจทย์ application สามารถนำไปประยุกต์ใช้กับงานประเภทอื่นๆ นำไปใช้สร้าง application เพื่อควบคุม hardware, robot, windows application เป็นต้น
โดยผู้เรียนสามารถเลือกเรียนการเขียนโปรแกรมในภาษาต่างๆดังนี้
- C/C++ Windows Application
- JAVA
- ANDROID Mobile Application
- IPHONE Mobile Application
- HTML & JavaScript & AJAX
- PHP & MySQL
- OPENSOURCE : WORDPRESS, SMF, JOOMLA, Gallery
- e-learning : MOODLE
- ROBOT CONTROL by C Programming
- 2D GAME Flash Actionscript
- 2D Game Maker
- 3D Game Programming Blender in Python
หมายเหตุ : เอกสารประกอบการเรียน วิดีโอ และ ซอฟต์แวร์ที่เกี่ยวข้อง จะบันทึกลงซีดีรอมพร้อมไฟล์ PDFแบบฝึกหัด,การติดตามผลการเรียน และ
การตรวจงาน HOME WORK จะทำผ่าน www.facebook.com/programmingcamp
โดยจะเข้าไปตอบข้อสงสัย ประกาศคะแนนการบ้านและประชาสัมพันธ์โครงการ www.facebook.com/ศูนย์การศึกษาต่อเนื่องจุฬาลงกรณ์มหาวิทยาลัย
ผู้บริหารโครงการ
นาย ณัฏฐพัชร์ สกุลกาญจนวดี
Email : nobela@gmail.com
085-148-8785