Algorithm (2) – อัลกอริทึมในมุมมองของคอมพิวเตอร์

รับสอนการเขียนโปรแกรม และ วิชาวิทยาการคอมพิวเตอร์อื่นๆ ดูรายละเอียดได้ที่นี่

คอมพิวเตอร์ไม่มีสมอง!

แม้ว่าเราอาจจะเคยใช้โปรแกรมฉลาดๆ เช่น เสิร์จ Google แล้วมันแสดงผลลัพธ์การค้นหาที่ตรงกับที่เราต้องการได้พอดี หรือ คลิปแนะนำใน Youtube ที่ตรงกับเรื่องที่เราอยากดูได้พอดี แต่เบื้องหลังความฉลาดพวกนี้ไม่ได้มาจากตัวคอมพิวเตอร์เอง

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

 

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

ต้องจำไว้ว่าคอมพิวเตอร์จะทำงานด้วยหลักการ

InputProcessOutput

ไม่ว่าปัญหาที่เราจะต้องแก้จะเป็นอะไร จะต้องเริ่มด้วยการขอ input จากผู้ใช้งาน เอาไปคำนวณ แล้วแสดงผลออกมา

มาดูตัวอย่างกัน

Ex. โปรแกรมสำหรับหาผลบวกของเลข 2 จำนวน

เวลาเราเขียนโปรแกรม เราจะต้องคิดว่าเรากำลังทำตัวเป็นคอมพิวเตอร์ และคอมพิวเตอร์ทำงานตามคำสั่งเป๊ะๆ

เอาล่ะ! มาลองคิดในมุมของคอมพิวเตอร์กัน

1. จะให้บวกเลข 2 ตัว → แต่เลขสองตัวนั้นคืออะไร? ฉันยังไม่รู้เลย
2. งั้นก็ต้องถาม User ไง → ให้เขาใส่เลขมา 2 ตัวก่อน ขอเรียกว่าเลขตัวแรกว่า X กับตัวที่สองว่า Y ละกันนะ
3. ได้เลขมาแล้ว ก็เอา X กับ Y มาบวกกัน → คำตอบที่ได้ขอเรียกว่า Z ละกัน
4. สุดท้ายฉันถือคำตอบอยู่ แต่ User ยังไม่เห็นคำตอบนี้ → ก็ต้องแสดงคำตอบออกไปให้เขาเห็นด้วย
5. มีไรให้ทำอีกมั้ย? ไม่มีแล้วเนอะ → งั้นจบ! ง่าย เย่!

จากสเต็ปการคิดแบบนี้เราเลยจะเขียนโฟลชาร์ตออกมาได้แบบนี้ (เลือกชนิดของกล่องให้ถูกต้องด้วยล่ะ)

แต่ขออธิบายเพิ่มเติมนิดนึง…

เท่าที่สอนมา จะมีบางคนสงสัยในสเต็ปนี้ คืองงว่า read X พวกนี้หมายถึงอะไร / การที่คอมพิวเตอร์ถาม User ออกมานี่มันเป็นยังไงกัน?

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

แล้วเมื่อผู้ใช้ใส่ค่า value ลงไปแล้วกดตกลงเรียบร้อย ก็หมายความว่าคอมพิวเตอร์ได้รับค่าพวกนี้เข้าไปแล้ว เป็นอันเสร็จสเต็ปการ read (หรือ Input นั่นเอง)

 

หลังจากนั้นก็จะเข้าสู่ขั้นตอนที่คอมพิวเตอร์จะ Process หรือ Calculate คำนวณค่าเพื่อหาคำตอบออกมา ในสเต็ปนี้ เราจะไม่เห็นการทำงานภายในคอมพิวเตอร์ (แต่ส่วนใหญ่จะไม่มีผลอะไร เพราะคอมพิวเตอร์คิดเร็วมาก)

แล้วพอคอมพิวเตอร์ได้คำตอบแล้ว (ได้คำตอบแล้วก็จริง แต่ User ยังไม่เห็นคำตอบนั้นเลย) ก็เลยต้องแสดงคำตอบให้ผู้ใช้เห็นทางจอภาพหรืออุปกรณ์ output อื่นๆ นั่นเอง

 

แล้วจะเกิดอะไรขึ้น ถ้าเราเขียนไม่ครบ?

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

ถ้าไม่มี Input

ถ้าเราไม่ได้เขียนในส่วนของ Input ลองคิดดูว่าโปรแกรมนั้นจะไม่มีการถามค่าอะไร หรือไม่เปิดโอกาสอะไรให้ผู้ใช้สั่งการอะไรทั้งสิ้น

เปิดโปรแกรมมา คอมพิวเตอร์ก็คำนวณค่าอะไรสักอย่างด้วยตัวเอง แล้วแสดงผลออกมาเลย โดยที่ผู้ใช้งานควบคุมอะไรไม่ได้เลย

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

ถ้าไม่มี Process

อันนี้น่าจะหนักสุด คือคอมพิวเตอร์เป็นเครื่องคำนวณ ถ้าไม่มีการ Calculate อะไรเลย คงไม่มีการสร้างโปรแกรมนั้นๆ ขึ้นมา (ในที่นี้หมายถึงโปรแกรมที่ใช้งานได้จริง ไม่นับโปรแกรมที่เขียนเพื่อเรียนรู้เช่น Hello World! นะ)

ถ้าไม่มี Output

ไม่มีส่วนนี้ แน่นอนว่าคำตอบน่ะ อาจจะคำนวณเสร็จแล้วทุกอย่าง แต่คำตอบยังอยู่เก็บอยู่ในหน่วยความจำ หรือ RAM ซึ่งเป็นอยู่ในรูปแบบของไฟฟ้า มนุษย์มองไม่เห็นกระแสไฟฟ้าเนอะ ดังนั้นขั้นตอนนี้เลยเป็นการแสดงผลออกมาให้เราเห็นได้ ถ้าลืมเขียน สิ่งที่คำนวณไปทั้งหมดก็เสียเปล่านะ

549 Total Views 6 Views Today
Ta

Ta

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

You may also like...

1 Response

  1. 21 กันยายน 2018

    […] หลักการเขียนโปรแกรมที่เราเคยพูดถึงในบท อัลกอริทึมในมุมมองของคอมพิวเตอร์ ประกอบด้วย 3 ขั้นตอนคือ […]

ใส่ความเห็น

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