11012376_1574506132808020_840155862517749497_n

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

จากข้อสังเกตของโจทย์ข้อนี้เราจะเห็นว่า บรรทัดแรกสุดช่องว่างที่อยู่ทางด้านซ้ายและด้านขวาของตัวเลข เท่ากับ 8 บรรทัดที่สอง ช่องว่างที่อยู่ทางด้านซ้ายและด้านขวาของตัวเลข เท่ากับ 7 บรรทัดที่สาม ช่องว่างที่อยู่ทางด้านซ้ายและด้านขวาของตัวเลข เท่ากับ 6

เราจะเห็นได้ว่าแต่ละบรรทัด ช่องว่างจะลดลงทีละ 1 นี่คือข้อสังเกต และข้อสังเกตอีกข้อหนึ่งก็คือ ถ้าเอาจำนวนช่องว่างทางด้านซ้าย มาบวกกับตัวเลขที่อยู่ตรงกลาง จะได้ค่าเท่ากับ 9 เสมอ

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

หาข้อสังเกตให้เจอครับ

อันนี้เป็นโค้ดที่เขียนขึ้นมาแบบ ง่ายที่สุด

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

Loop แรกเราก็ให้เริ่มจาก 8 ลดลงไปเรื่อยๆจนถึง 0  หนึ่ง Loop จะปริ้นต์ตัวเลขออกมาทางหน้าจอหนึ่งบรรทัด  ตัวเลขของ Loop เราเอาไปใช้กำหนดช่องว่างได้ ทีนี้เราจะรู้ได้ไงว่าแต่ละบรรทัดจะพิมพ์ตัวอักษรเริ่มต้นยังไง  สังเกตตัวเลขตรงกลาง  ตัวเลขนั้นมันจะบวกกับตัวเลข Loop ได้เท่ากับ 9  หรือหากเราต้องการทราบว่าในแต่ละบรรทัดตัวเลขตรงกลางเป็นเลขอะไร เราก็เอา 9 มาลบตัวเลข Loop เราก็จะได้ตัวเลขที่อยู่ตรงกลาง

ในแต่ละบรรทัด ตัวเลขจะเพิ่มขึ้นเรื่อยๆ จนได้ค่าตัวเลขที่อยู่ตรงกลาง จากนั้นมันก็ลดลงไปเรื่อยๆ จนถึง 1

เมื่อเราได้ข้อสังเกตอย่างนี้แล้วเราก็เอามันมาแปลงเป็นโค้ด