11 ม.ค. 2020 เวลา 11:09 • วิทยาศาสตร์ & เทคโนโลยี
เคล็ดลับการ Coding ตอนที่ 1 [Coding กับ ปัญหา]
บทความนี้เราจะอธิบายเกี่ยวกับปัญหาแบบไหนที่สามารถสร้าง Code เพื่อแก้ปัญหาได้ ลองอ่านกันดูครับ🤔
กลุ่มปัญหา
ก่อนอื่นขอออกตัวก่อนว่าเราจะเล่าปัญหาไม่ได้เน้นการเล่าตามทฤษฎีเป๊ะๆ แต่เน้นให้มองภาพออกมากกว่า
ปัญหาแบบไหนที่สามารถสร้าง Code แก้ปัญหาได้
แน่นอนว่าเราพูดถึงปัญหาทีไร เราจะมองมันในแง่ลบเสมอ เช่น ปัญหาเศรษฐกิจ สังคม เป็นต้น แต่ถ้าเรามองอีกมุมหนึ่ง โดยเรามองปัญหา คือคำถามที่ต้องการคำตอบ มันก็จะดูดีขึ้นทันที อย่างเช่น เราถามเพื่อนว่า วันนี้กินอะไรดี เราจะเดินทางไปเชียงใหม่ทางไหนสะดวกที่สุด เป็นต้น
ดังนั้น ปัญหาในบทความของเรา เราจะพูดถึงปัญหาที่เป็นคำถามที่ต้องการคำตอบเท่านั้น โดยเราจะแบ่งปัญหาออกเป็นสองกลุ่ม ประกอบด้วยปัญหาทั่วไป และปัญหาทางการคำนวณ
ปัญหาทั่วไป
ปัญหาทั่วไป คือ คำถามทั่วไปที่มักจะเกิดขึ้นกับชีวิตประจำวันอย่างเช่น วันนี้กินอะไรดี ไปดูหนังเรื่องอะไรดี วันนี้ทำไมคุณมาสาย หรือ ซื้อชุดที่ไหนทำไมสวยจัง แน่นอนว่าแต่ละวันจะมีคำถามมากมายที่เราต้องตอบ บางครั้งเราตอบได้ และตอบไม่ได้ และบางครั้งเราอาจเจอคำถามแบบมีเงื่อนไขหรือตัวเลือกให้เราเลือก เช่น ถ้าบ้านเรามีรถยนต์และมอเตอร์ไซค์อย่างละหนึ่งคัน แล้วแฟนเราถามว่า เอารถอะไรไปทำงานดี แสดงว่าเราจะตอบได้แค่ ไม่รถยนต์ก็มอเตอร์ไซค์เท่านั้น เป็นต้น
เมื่อเราพอมองภาพออกว่าปัญหาคือ คำถามที่ต้องการคำตอบ แล้วปัญหาแบบไหนถึงจะเหมาะกับการเขียน Code เพื่อแก้ปัญหานั้น ๆ ก่อนจะบอกลักษณะปัญหาที่เหมาะกับการสร้าง Code ต้องย้อนกลับไปที่วัตถุประสงค์ของการสร้าง Code คืออะไร วัตถุประสงค์ของการสร้าง Code คือ เพื่อแก้ปัญหาด้วยคอมพิวเตอร์ เนื่องจากเราขี้เกียจแก้ปัญหาเดิมซ้ำ ๆ ซึ่งการที่คอมพิวเตอร์จะทำงานได้จะต้องทำการรับข้อมูลเข้าคอมพิวเตอร์ คำนวณอะไรบางอย่าง และแสดงผลลัพธ์ออกมา(อ่านเพิ่มเติมในบทความ เคล็ดลับ Coding ตอนที่ 0) การคำนวณอะไรบางอย่างนี้ก็คือการแก้ปัญหานั่นเอง และในที่นี้เราต้องการเขียน Code เพื่อแก้ปัญหา ดังนั้น ปัญหาที่เหมาะกับการสร้าง Code คือ ปัญหาที่มีข้อมูลเข้าที่ชัดเจน (มีข้อมูลเข้าที่จำกัด) โดยชื่ออย่างเป็นทางการของปัญหาลักษณะนี้คือปัญหาการคำนวณ (Computational Problems)
ปัญหาการคำนวณ คือ ปัญหาที่มีการระบุข้อมูลเข้าที่ชัดเจนและจำกัด และมีคำถามหรือเป้าหมายก็ได้
การสร้าง Code เพื่อแก้ปัญหานี้มีเงื่อนไขก็คือว่าต้องใช้ข้อมูลเข้าทั้งหมดเพื่อแก้ปัญหาหรือสร้างคำตอบ
ขอยกตัวอย่างปัญหาง่าย ๆ ปัญหาหนึ่งเพื่อให้มองเห็นภาพ คือปัญหาทอดไข่ดาว ถ้าสมมติว่า มีคนบอกคุณว่าทอดไข่ดาวให้หน่อย ดังนั้นปัญหาของเรา คือเราสามารถได้มาซึ่งไข่ดาวได้หรือไม่ ถ้าเป็นปัญหาทั่วไป คุณจะต้องคิดอะไรเยอะมาก เช่น เอ่อ...มีไข่ไหม มีกระทะไหม มี…ไอ้โน้น ไอ้นี่…ไหม ทีนี้เอาใหม่ สมมติว่ามี (ข้อมูลเข้า) คือ กระทะ น้ำมัน เตาแก๊ส ตะหลิว ไข่ และ จาน คำถามคือ ทำไข่ดาวได้ไหม? จะเห็นว่าเรามีสิ่งที่ต้องคิดน้อยลงเยอะ และถ้ามีสิ่งจำเป็นทุกอย่างพร้อม เราจะสามารถสร้างไข่ดาวออกมาได้ ต่อไปลองนึก Code ในการสร้างไข่ดาวกัน สมมติว่าคอมพิวเตอร์เป็นเด็กอายุ 7 ขวบแล้วกัน เราจะสั่งเขายังไงให้เด็กคนนี้ทำไข่ดาวให้ ถ้าห้องครัวมีทุกอย่างวางไว้พร้อมแล้ว ลองคิดเล่นๆ ดูก่อนครับก่อนไปดู วิธีสั่งในส่วนถัดไป
ลองดูว่าเราจะสั่งเด็กทีละขั้นตอนตามนี้ไหม อย่าลืมว่าต้องสั่งทีละคำสั่ง(Coding ควรเป็นคำสั่งที่ชัดเจน 1 คำสั่งต่อ 1 บรรทัด)
1)เอากระทะวางบนเตาแก๊ส
2)จุดไฟเตาแก๊ส
3)เทน้ำมันลงบนกระทะ
4)รอให้น้ำมันร้อน
5)ตอกไข่ใส่ตรงกลางกระทะ
6)รอให้ไข่ขาวสุกเป็นแผ่น
7)ใช้ตะหลิวตักไข่ขึ้นพ้นจากน้ำมัน
8)รอน้ำมันไหลออกจากไข่สักระยะ
9)เอาไข่ไปวางไว้บนจาน
10)ปิดเตาแก๊ส
ถ้าเราเอาขั้นตอนที่ 1 ถึง 10 ไปอธิบายให้คนอื่นฟังทุกคนจะพอทำตามได้ แต่คุณภาพอาจจะไม่ดีเท่ากันหมดทุกคน ซึ่งนี่แหละเราทำ Code สำเร็จแล้ว และถ้าสั่งคอมพิวเตอร์ทำงานตามขั้นตอนนี้ได้ คุณภาพของไข่ดาวจะใกล้เคียงกันด้วย
ทีนี้ลองพิจารณาใหม่ว่าถ้าข้อมูลเข้าไม่เป็นไปตามที่ระบุไว้ตั้งแต่แรกเราจะทำตาม Code ของเราได้หรือไม่ เช่น ถ้าตะหลิวหายและไม่มีอุปกรณ์ใดสามารถใช้แทนได้เลย จะเห็นว่า Code ของเราที่สร้างไว้จะทำงานไม่ได้เลย ดังนั้นเราจะต้องสร้าง Code ใหม่ โดยต้องเอา Code เดิมมาแก้ไข โดยแก้การตักไข่ด้วยตะหลิวด้วยการค่อย ๆ เทน้ำมันออกพร้อมกับพยายามให้ไข่ยังอยู่ในกระทะแทน หรือถ้าเราไม่มีไข่ และน้ำมัน เราก็จะไม่สามารถทำไข่ดาวได้
ต่อไปนี้เราจะเข้าใกล้การแก้ปัญหาด้วยคอมพิวเตอร์มากขึ้นอีกนิด เราจะแสดงให้เห็นว่าถ้าเราสร้าง Code ได้ดีเราจะแปลง Code เป็นคำสั่งของคอมพิวเตอร์ได้ทันที เช่นตัวอย่างปัญหาต่อไปนี้
ให้ ตัวเลขอะไรก็ได้ 2 ตัว เราต้องการหาผลคูณของตัวเลขสองจำนวนนี้
เราจะแทนตัวเลขสองตัวนี้ด้วยตัวแปร a และ b ทีนี้เราจะเขียนขั้นตอนหรือ Code ยังไงให้ได้ผลคูณของ a และ b โดย ตัวแปรทั้งสองตัวเปลี่ยนเป็นตัวเลขอะไรก็ได้ ลองคิดดูก่อนที่จะไปดูส่วนถัดไป
การคิด Code เราลองคิดดูว่าถ้ามีคนถามผลคูณของตัวเลขสองจำนวนเราจะทำอะไรบ้าง แน่นอนว่าเราจะเริ่มจากถามว่า บอกเลขมาซิ เช่น 2 และ 3 เราจะเอา 2 คูณ 3 ในใจ และตอบออกมาว่า 6 นี่แหละคือ Coding ของเราแต่เราแค่ไม่รู้ตัวว่าเราสร้าง Code เพราะมันเกิดขึ้นเร็วมาก ดังนั้นขั้นตอนการหาผลคูณมีดังนี้
1)ถาม(รับ)ตัวเลขแรก (ใน Coding เรามักพูดว่า “รับ” แทนคำว่า “ถาม”)
2)ถาม(รับ)ตัวเลขที่สอง
3)คิด ผลคูณคือ ตัวเลขแรก คูณ ตัวเลขที่สอง
4)บอก(แสดง)ผลคูณออกมา (ใน Coding เรามักพูดว่า “แสดง” แทนคำว่า “บอก”)
ต่อไปเราจะลองเปลี่ยนเป็นภาษาคอมพิวเตอร์แบบตรง ๆ ทีละคำสั่งให้ดูในภาพด้านล่าง เพื่อชี้ให้เห็นว่าปลายทางของ Coding ก็คือการเขียนโปรแกรมคอมพิวเตอร์และมันไม่ได้ยากอย่างที่คิด
แสดงโปรแกรมเขียนด้วย C++ ตามผลลัพธ์ของ Coding
คำอธิบาย รับค่าใช้คำสั่ง "cin >> ตัวแปร" และ แสดงผลใช้คำสั่ง "cout<< ตัวแปร"
ขอบคุณที่ติดตามอ่านครับ ในบทความถัดไปเราจะพูดถึงปัญหาและ Code ที่ค่อยๆเพิ่มความซับซ้อนขึ้นทีละนิดๆ ไปเรื่อยๆแบบไม่เร่งรีบ หวังลึกๆว่าจะตามอ่านกันนะครับ สุดท้ายฝากติชมกันด้วยครับ
โฆษณา