About

หลักสูตรพื้นฐานการเขียนโปรแกรม

CAMP 1 : BASIC PROGRAMMING (30 ชั่วโมง) =( 3ชั่วโมง x 10 สัปดาห์)

เพื่อคัดกรองผู้เรียน จากพื้นฐานความรู้คณิตศาสตร์ระดับดี (6 ชั่วโมงแรก)

  1. เรียนรู้ ฝึกฝนปฏิบัติ ขั้นตอนการจัดเตรียม คอมไพเลอร์ ผ่านวิดีโอบันทึกการสอนโดยละเอียด และสามารถติดตั้งใช้งาน EDITPLUS และ C/C++ COMPILER ได้เป็นอย่างดี
  2. เรียนรู้การทำงานของตัวแปรภาษา และคำสั่งโปรแกรมพื้นฐานเบื้องต้น สามารถทำให้ code ที่ได้จัดเตรียมเอาไว้ สามารถทำงานให้ได้ผลลัพธ์ตามต้องการ ทั้ง input ตามที่โจทย์กำหนด และบันทึก output เพื่อส่งงาน
  3. สามารถดัดแปลงคำสั่งโปรแกรมเดิม ให้ทำงานได้ตามที่โจทย์ต้องการ
  4. แก้ไขคำสั่ง หาจุดผิดพลาดของคำสั่งใน source code โดยเปรียบเทียบจาก code ที่ถูกต้อง
  5. สามารถวิเคราะห์โจทย์คณิตศาสตร์ เพื่อสร้างอัลกอริทึ่ม ลำดับการทำงานของคำสั่ง และเขียน Flowchart ได้
  6. สามารถเขียนโปรแกรมคำสั่งได้ด้วยตนเอง จากโจทย์คณิตศาสตร์ง่ายๆ และให้รับค่าข้อมูลตามที่โจทย์กำหนด


กลุ่มเป้าหมาย :

  • กลุ่มนักเรียนมัธยมต้นและมัธยมปลาย ที่สนใจเตรียมตัวสอบแข่งขันระหว่างประเทศ, ในประเทศ,สสวท,สอวน
  • นิสิต นักศึกษา ระดับอุดมศึกษา ทั้งภาครัฐและเอกชน สาชาวิชา วิศวกรรมศาสตร์ วิทยาศาสตร์ ไอทีสารสนเทศ
  • นิสิต นักศึกษา ระดับปริญญาโท ที่ต้องการทบทวนความรู้พื้นฐานการเขียนโปรแกรม ก่อนต่อยอดไปศึกษาในวิชาการเขียนโปรแกรมชั้นสูง เช่น Visual Basic, OOP, JAVA, JavaScript, Android Application, Web Programming,

เรียนพื้นฐานแนวคิดการเขียนโปรแกรมคอมพิวเตอร์การทำงานของตัวแปรภาษา C/C++ Programmingจัดเตรียมคอมไพเลอร์ เริ่มต้นตั้งแต่พื้นฐานวิธีคิด อัลกอริทึ่ม คำสั่งภาษาซี และ ซีพลัสพลัส ไวยากรณ์ภาษาโปรแกรม การอินพุทข้อมูล(input) การแสดงผลเอาท์พุท (output) การเลือกใช้คำสั่งเงื่อนไขต่างๆ การตรวสอบเงื่อนไขตรรกะ คำสั่งวนลูป การกำหนดตัวแปร การเลือกใช้ library การแก้ไขคำสั่งเมื่อพบความผิดพลาด เป็นต้น

  1. รู้จักกับภาษา C และ C++, การจัดเตรียมคอมไพเลอร์,การคอมไฟล์, ขั้นตอนการทำงานของโปรแกรมภาษา C, ข้อมูลและตัวแปรในภาษา C, ชนิดของข้อมูล, ชนิดของตัวแปร, รูปแบบการประกาศตัวแปร, หลักการตั้งชื่อตัวแปร, ตัวแปรชนิดข้อมูล ชนิดข้อความ, แบบฝึกหัด
  2. เครื่องหมายและการดำเนินการในภาษา, การคำนวณทางคณิตศาสตร์, การเปรียบเทียบ, ตรรกศาสตร์ , การเขียนนิพจน์, การเปลี่ยนชนิดของตัวแปร, การแสดงผลและการรับข้อมูล, การจัดรูปแบบการแสดงผลทางหน้าจอ, การแสดงผลทีละอักขระ, การแสดงผลเป็นข้อความ, การรับข้อมูลด้วยคำสั่งลักษณะต่างๆจากคีย์บอร์ด, แบบฝึกหัด
  3. การควบคุมทิศทางการทำงานของโปรแกรม (if, if-else, if-else if, if ซ้อน if, switch), การใช้ฟรีโปรเซสเวอรืไดเร็คทีฟ, การควบคุมทิสทางแบบวนรอบ(while, do-while, for), คำสั่งประกอบการควบคุมทิศทางแบบต่างๆ(break,continue,exit()),แบบฝึกหัด
  4. ตัวแปรอาร์เรย์, การประกาศตัวแปรอาร์เรย์หลายมิติ, ตัวแปรพอยน์เตอร์, แบบฝึกหัด
  5. ฟังก์ชันในภาษา C , ตรวจสอบการทำงานของโปรแกรม, แบบฝึกหัด
  6. โครงสร้างข้อมูล, การประกาศตัวแปรชนิดโครงสร้าง, แบบฝึกหัด
  7. การติดต่อการไฟล์, text file, binary file, การเปิดไฟล์, การปิดไฟล์, การอ่านข้อมูลจากไฟล์, เขียนข้อมูลลงไฟล์, การจัดการกับตัวชี้ตำแหน่งไฟล์, การลบไฟล์, เปลี่ยนชื่อไฟล์, แบบฝึกหัด
  8. การจัดสรรหน่วยความจำแบบไดนามิก, การเรียงลำดับข้อมูลในอัลกอริทึ่มแบบต่างๆ, แบบฝึกหัด

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

http://cprogrammingcamp.wordpress.com/2010/11/17/โจทย์ programming

Asia-Pacific Informatics Olympiad

http://cprogrammingcamp.wordpress.com/2010/11/19/informatics-olympiad

Indian Computing Olympiad

http://www.iarcs.org.in/inoi/2002/

IEEE - IEEEXtreme 24-Hour Programming Competition

IEEEXtreme 24-Hour Programming Competition  IEEEXtreme is a global challenge in which teams of IEEE student members – supported by an IEEE Student Branch 
http://www.ieee.org/xtreme

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

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

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

  1. ของเล่นสองชิ้นใดๆ จะอยู่ที่ระดับเดียวกัน (เชื่อมจากเพดานที่จำนวนของแกนเท่ากัน) หรือต่างกันได้ไม่เกินหนึ่งระดับ
  2. สำหรับของเล่นที่ต่างกันหนึ่งระดับนี้ของเล่นที่อยู่ทางด้านซ้ายจะอยู่ต่ำกว่าของเล่นที่อยู่ทางด้านขวา

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

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

ในตัวอย่างรูปด้านบน ไอค์ ไม่ชอบ โมบายแบบนี้ แม้ว่ามันจะสอดคล้องเงื่อนไขที่ 1 แต่ไม่เข้าเงื่อนไขข้อที่ 2 เนื่องจากของเล่นที่ปลายด้านซ้ายสุดอยู่สูงกว่าของเล่นที่อยู่ทางด้านขวามือ

อย่างไรก็ตาม โมบายนี้สามารถปรับเปลี่ยนให้เป็นแบบที่ ไอค์ ชอบได้ โดยการสลับที่เป็นไปตาม

  1. ขั้นแรก ปลายทางด้านซ้ายและขวาของแกนสลับที่กันซึ่งเป็นผลให้แกนหมายเลข 2 และแกนหมายเลข 3 เปลี่ยนที่กันดังแสดงไว้ในรูปที่ ๒
  1. ขั้นที่สองและเป็นขั้นสุดท้ายปลายทางซ้ายและขวาของแกนที่ 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 เป็นต้น

โดยผู้เรียนสามารถเลือกเรียนการเขียนโปรแกรมในภาษาต่างๆดังนี้

หมายเหตุ : เอกสารประกอบการเรียน วิดีโอ และ ซอฟต์แวร์ที่เกี่ยวข้อง จะบันทึกลงซีดีรอมพร้อมไฟล์ PDFแบบฝึกหัด,การติดตามผลการเรียน และ

การตรวจงาน HOME WORK จะทำผ่าน www.facebook.com/programmingcamp

โดยจะเข้าไปตอบข้อสงสัย ประกาศคะแนนการบ้านและประชาสัมพันธ์โครงการ www.facebook.com/ศูนย์การศึกษาต่อเนื่องจุฬาลงกรณ์มหาวิทยาลัย


ผู้บริหารโครงการ

นาย ณัฏฐพัชร์ สกุลกาญจนวดี

Email : nobela@gmail.com

085-148-8785

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s