14 ม.ค. 2020 เวลา 16:28 • วิทยาศาสตร์ & เทคโนโลยี
เคล็ดลับการ Coding ตอนที่ 2 Coding เริ่มยังไง? หลายคนอาจจะสงสัยว่าจะเริ่มสร้าง Code เพื่อแก้ปัญหาสักปัญหาจะเริ่มยังไงดี ในบทความนี้มีคำตอบครับ🤔🤔
ก่อนที่จะเข้าเนื้อเรื่องขอย้อนกลับไปปัญหาการคำนวณเพื่อเป็นการทบทวนเล็กน้อย ปัญหาการคำนวณคือปัญหาที่มีการบอกข้อมูลเข้า แล้วก็ถามสิ่งที่อยากได้ ปัญหาการคำนวณมีสองประเภทคือ คำถามที่ตอบได้สองอย่างเท่านั้นคือใช่ กับ ไม่ใช่ และปัญหาการหาค่าที่ดีที่สุด (รายละเอียดเพิ่มเติมในบทความ เคล็ดลับ Coding ตอนที่ 1)
ตัวอย่างปัญหา เช่น ปัญหาการถามว่ามีคนชื่อนี้หรือไม่
สิ่งที่ให้ ชื่อเล่นของเพื่อนนักเรียนในห้องทั้งหมด และ ชื่อคนที่ต้องการตามหา
คำถาม มีนักเรียนที่มีชื่อตรงกับชื่อคนที่ต้องการตามหาหรือไม่?
สมมติว่ามีชื่อนักเรียนทั้งหมดคือ {ทีเจ ไอคิว อิคิว ต้นหนาว} และ คนที่ต้องการตามหาคือ มูมู่ เราจะตอบปัญหานี้ว่าไม่มี (ไม่ใช่) แต่ถ้าเปลี่ยน คนที่ต้องการตามหา คือ ทีเจ เราจะตอบปัญหานี้ว่ามี (ใช่)
อีกตัวอย่างหนึ่งก็คือปัญหาการหาค่าสูงสุด เช่นถามว่าพนักงานคนไหนรวยที่สุด
สมมติว่าให้ มูลค่าทรัพย์สินของพนักงานโดยเรียงตามลำดับรหัสพนักงาน
คำถาม พนักงานลำดับที่เท่าไหร่รวยที่สุด
ตัวอย่างเช่น {20000, 300000, 500, -400000, 7000000000} เราจะตอบคำถามนี้ว่าพนักงานลำดับที่ 5 รวยที่สุด
ทีนี้ถามว่าแล้วคอมพิวเตอร์มันทำงานยังไง คำตอบคือคอมพิวเตอร์ต้องการข้อมูลเข้า (Input) และต้องการกระบวนการคำนวณ (Process) เพื่อให้ได้ผลลัพธ์ (Output) ที่ต้องการ (รายละเอียดเพิ่มเติม เคล็ดลับ Coding ตอนที่ 0)
เราลองหาความสัมพันธ์ระหว่างการทำงานของคอมพิวเตอร์ และ ปัญหาการคำนวณ เราจะพบว่ามันมีความเกี่ยวข้องกันอยู่ สิ่งเหล่านั้นนั้นก็คือ ข้อมูลเข้าของคำถาม คือข้อมูลเข้าของการทำงานของคอมพิวเตอร์ และการตั้งคำถามสามารถเปลี่ยนมาเป็นผลลัพธ์ที่ต้องการในการทำงานของคอมพิวเตอร์ได้
ดังนั้นการเริ่มต้น Coding คือการกำหนดข้อมูลเข้า และผลลัพธ์ที่ต้องการก่อนซึ่งตามหลักเราจะต้องแปลงมาจากคำถาม แต่ถ้าทำแบบไม่เป็นทางการเราก็กำหนดข้อมูลเข้า และผลลัพธ์ ไปเลยก็ได้ไม่ต้องตั้งคำถามก่อน
มาถึงตรงนี้แล้วมีใครสงสัยหรือไม่ว่า แล้วกระบวนการทำงาน (process) เทียบได้กับอะไร คำตอบก็คือ Code ที่เราสร้างขึ้นเพื่อแก้ปัญหาการคำนวณนั่นเอง
ความสัมพันธ์ระหว่าง ปัญหาการคำนวณ การทำงานของคอมพิวเตอร์ และ Coding
ต่อไปเราจะยกตัวอย่างปัญหาการพื้นที่วงกลมเพื่อเขียน Code กัน ก่อนอื่นให้ลองคิดว่ามีข้อมูลเข้าคืออะไร และผลลัพธ์ที่ต้องการคืออะไร
ข้อมูลเข้า คือ รัศมี
ผลลัพธ์ที่ต้องการ พื้นที่วงกลม
การแก้ปัญหา หรือ Code ของเราจะมีขั้นตอนดังนี้
1) รับรัศมี r
2) คำนวณพื้นที่วงกลม
3) แสดงพื้นที่วงกลม
ทีนี้มันยังไม่ชัดเจนตรงที่ว่าคำนวณพื้นที่วงกลมคำนวณยังไง เราโชคดีที่เราจำสูตรได้ก็คือ πr^2 และเรารู้ว่า π=22/7 เราจึงต้องเขียนอธิบาย Code เพิ่มเติมเพื่อให้ทุกคนเอาไปใช้แล้วได้คำตอบเดียวกัน
ข้อมูลเข้า คือ รัศมี r
ผลลัพธ์ที่ต้องการ พื้นที่วงกลม a
การแก้ปัญหา หรือ Code ของเราจะมีขั้นตอนดังนี้
1) รับรัศมี r
2) คำนวณพื้นที่วงกลม a=22/7*r*r
3) แสดงพื้นที่วงกลม a
จาก Code ลองแทนค่ารัศมีด้วยเลขที่เราต้องการดู แล้วลองตรวจสอบดูว่าได้คำตอบที่เราต้องการหรือไม่
ปัญหาสลากกินแบ่งรัฐบาล เราถูกเลขท้ายสองตัวหรือไม่? เราลองมาสร้าง Code เพื่อแก้ปัญหานี้กัน ก่อนอื่นต้องสมมติว่ามีเลขท้ายสองตัวในระบบอยู่แล้ว ทีนี้ข้อมูลเข้ามีอะไรบ้าง แน่นอนมีอย่างเดียวคือเลขท้ายสองตัวของสลากกินแบ่งรัฐบาลที่เราซื้อมา
อย่าลืมระบุข้อมูลเข้าและผลลัพธ์ที่ต้องการก่อนสร้าง Code
ข้อมูลเข้า เลขท้ายสองตัวของสลากกินแบ่งรัฐบาลที่เราซื้อมา t
ผลลัพธ์ ผลการถูกรางวัลเลขท้ายสองตัว (ถูก/ไม่ถูก)
ทีนี้มาดู Code ที่ใช้ตอบปัญหานี้กัน ก่อนอื่นสมมติว่าเลขท้ายสองตัวที่ถูกรางวัลอยู่ในระบบอยู่แล้วโดยใช้ p แทนเลขที่ถูกรางวัล
1) รับเลขท้ายสองตัวของเรา t
2) ตรวจสอบว่าเลขท้ายสองตัวของเรา t ตรงกับเลขที่ถูกรางวัล p หรือไม่
2.1) ถ้าเท่ากัน แสดงคำว่า “คุณถูกรางวัล”
2.2) กรณีอื่น (หรือเข้าใจง่ายๆ ว่ามันไม่เท่ากัน) แสดงคำว่า “คุณไม่ถูกรางวัล”
ทีนี้ให้ทดลอง แทนค่า เลขท้ายสองตัวของเรา และเลขที่ถูกรางวัลด้วยตัวเลขที่ต้องการดูกันว่า Code ของเราตอบคำถามถูกต้องหรือไม่
ดังนั้น Coding เริ่มจากการกำหนดข้อมูลเข้า และผลลัพธ์ จากนั้นทำการสร้างขั้นตอนการสร้างผลลัพธ์ที่ต้องการจากข้อมูลเข้านั้นเอง ซึ่งอาจมีหลายขั้นตอนถ้านึกภาพไม่ออกให้ลองนึกถึงการคิดเลขแบบแสดงวิธีทำส่งครูครับ การเขียนขั้นตอนที่ดีควรเขียนที่ละขั้นตอน และมีการทำงานหรือการคำนวณแค่หนึ่งอย่างต่อหนึ่งขั้นตอนเท่านั้น
ผู้เขียนขอขอบคุณผู้อ่าน หวังว่าบทความนี้จะช่วยให้ผู้อ่านเข้าใจ Coding มากขึ้น และสามารถนำไปใช้ประโยชน์ได้ในวันข้างหน้า ถ้ายังไงฝากติชมกันด้วยนะครับเพื่อที่ผมจะได้นำคำแนะนำไปปรับปรุงในบทความถัดๆไปครับ
โฆษณา