Saturday, August 4, 2012

Logic & Algorithm

Logic & Algorithm


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


Logic & Algorithm (ลอจิก & อัลกอริทึ่ม)

Algorithm
มันคืออะไร??? ทำไมต้องรู้ คำตอบก็คือ มันคือกระบวนการทางความคิด และความคิดที่ให้เหตุให้ผล
อย่างเช่น
1 + 1 = 2 เราจะแยกได้ว่า ผลลัพท์ของการบวกนั้นก็คือ 2 และกระบวนการคิดคือ บวก(เพิ่มจำนวน) โดยมี เลข 1 เป็นตัวตั้ง และ 1 อีกตัวเป็นตัวที่เพิ่มขึ้น ผลลัพท์จึงได้ 2 มา
อ่ะ แล้วถ้าเราลองเปลี่ยนมาเป็น 5 + 3 ก็จะ เท่ากับ 8 นั่นเอง

สิ่งที่เป็นกระบวนการคิดนั่นก็คือ วิธีการเพิ่มค่า หรือการบวกนั่นเอง!
อีกตัวอย่างที่อยู่ภายในชีวิตประจำวัน อีกตัวอย่าง เช่น การเดินทางไปโรงเรียน

อย่างแรกที่เราจะต้องคิดกระบวนการหรือกรรมวิธี ที่จะได้ผลลัพท์ มีสิ่งที่เราต้องเข้าใจกันก่อนดังนี้

1. ผลลัพท์ที่ต้องการ
2. สิ่งแวดล้อมที่เรามี
3. สิ่งที่เราต้องการเพื่อแก้ไขปัญหา
4. กระบวนการในการทำ
5. เหตุผลในการตัดสินใจ

พอเรามี 5 สิ่งที่เราเข้าใจกันแล้วเรามาลองจำแนกก่อนที่จะคิดกระบวนการคิดกันดีกว่า

1. ผลลัพท์ที่เราต้องการ [ไปถึงโรงเรียน]
2. สิ่งแวดล้อมที่เรามี [เส้นทาง]
3. สิ่งที่เราต้องการเพื่อแก้ไขปัญหา [รถ,เงิน,การตัดสินใจ,ปัจจัยอื่น ๆ สำหรับเดินทาง]
4. กระบวนการในการทำ [วิธีการเดินทาง เลี้ยวซ้าย ขวา หน้า หลัง ฯลฯ]
5. เหตุผลการตัดสินใจ [เลือกวิธีการ เลือกเส้นทาง]

เราได้ 5 สิ่งครบแล้ว เอาหล่ะ เราจะมาคิดกระบวนการคิดเพื่อที่ว่าเราจะไปโรงเรียนกันอย่างไร

1. เดินออกจากบ้าน
2. รอรถเพื่อไปโรงเรียน
2.1 ถ้ามีเงินเยอะ ขึ้นรถมอเตอร์ไซค์รับจ้าง
2.2 ถ้ามีเงินน้อย
2.2.1 ถ้ารถสาย 95 ผ่านมา ถ้าขึ้นรถไปแล้วถึงโรงเรียน ขึ้น
2.3.1 ถ้ารถสาย 26 ผ่านมา ถ้าขึ้นรถไปแล้วไม่ถึงโรงเรียน ไม่ขึ้น
3. รอถึงที่ ถ้าหากถึงที่แล้ว ก็ลงจากรถ
4. เข้าโรงเรียน

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

Entry ต่อไป จะพูดถึงเรื่องการเขียนแผนผังรูป เพื่อให้มองง่าย ๆ ชัดเจน เพื่อนำไปประกอบกับการเขียนโปรแกรมครับ

No comments:

Post a Comment