
ทฤษฎีบทพีทาโกรัส (การเขียนโปรแกรม)

อัปเกรดสำหรับเนื้อหาเพิ่มเติม
What is pseudocode?
มีใครรู้เรื่องทฤษฎีบทของพีธากอรัสไหม นั่นจะทำให้เรารู้วิธีการคำนวณ ความยาวด้านข้างของรูปสามเหลี่ยมมุมฉาก แต่ต้องใช้การคำนวณมากทีเดียว และบางทีก็ต้องทำขั้นตอนเหล่านี้ ซ้ำแล้วซ้ำเล่าด้วย ลองนึกภาพโปรแกรมที่สามารถป้อนข้อมูล ทั้งสองด้านสั้นๆ นี้เข้าไปได้นะ - นี่คือขา และมันจะรู้ด้านยาวของสามเหลี่ยม คือด้านตรงข้ามมุมฉากได้ทันที ตอนนี้เรากำลังจะเขียนโปรแกรม แบบนี้ขึ้นมานะ เมื่อเราเขียนโปรแกรม สิ่งแรกที่ต้องทำคือแยกปัญหา ออกมาเป็นขั้นตอนย่อยๆ แต่ละขั้นตอนจะต้องมีความเฉพาะ เจาะจงในแบบของมัน เราสามารถใช้มันเป็นคำสั่งกับหุ่นยนต์ ที่ไม่รู้เรื่องอะไรเลยสักอย่าง และหุ่นยนต์สามารถทำตาม คำสั่งนั้นได้อย่างถูกต้อง ดังนั้นเราจะอธิบายกับหุ่นยนต์ได้อย่างไร ทำอย่างไรจึงจะคำนวณความยาว ของด้านตรงข้ามมุมฉากได้ โดยใช้ความยาวของขาทั้งสองขา? ในการคำนวณนั้น หุ่นยนต์ ต้องใช้ข้อมูลบางอย่าง ดังนั้นเราจึงเขียนว่า "บันทึก ขาที่ 1 บันทึก ขาที่ 2" ตอนนี้หุ่นยนต์ก็มีข้อมูลที่จำเป็นแล้ว แล้วจะทำยังไงต่อดีล่ะ ลองเขียนคำสั่งเพิ่มด้วยตัวเองสิ บางทีเราอาจจะเขียนอะไรแบบนี้ ขึ้นมาก็ได้? โอเค, มันดูดีนะ แต่หุ่นยนต์อาจต้องการคำสั่ง ที่ชัดเจนกว่านี้ สำหรับการคำนวณพวกนี้น่ะเหรอ งั้นขออธิบายหน่อยนะ ลองนึกภาพการสั่งหุ่นยนต์ให้ ใช้เครื่องคิดเลขแทนเราดูสิ แบบนี้ต้องสั่งมันยังไง ณ จุดนี้ ตอนนี้คำสั่งเป็นสิ่งที่จะเข้าใจ ผิดไม่ได้แล้ว ใช่ไหมล่ะ? สิ่งที่เราเขียนไว้ตรงนี้เกือบจะเป็นรหัส แต่ก็ไม่ใช่รหัสโปรแกรมเสียทีเดียวหรอก มันคือรหัสเทียมในโปรแกรมของเรา รหัสเทียม (Pseudocode) ก็ไม่ต่างกับอัลกอริทึม ที่ใช้แก้ทฤษฎีบทของพีธากอรัส แต่ก็ไม่ได้เป็นแบบนั้นจริงๆ หรอก นี่เป็นส่วนหนึ่งของรหัส ซึ่งสามารถ แก้ไขงานด้วยตัวมันเอง นี่คืออัลกอริทึม เราอาจเคยชินกับการเห็นมันมาแล้ว มากกว่านี้ใช่หรือเปล่า แล้วรหัสส่วนที่เหลือมีหน้าที่อะไรล่ะ มันก็เป็นรูปแบบของอัลกอริทึมนั่นแหละ แต่ว่ามันคำนวณอะไรด้วยตัวเองไม่ได้นะ สิ่งที่มันทำ คือการรับค่า ของความยาวของขาสามเหลี่ยม แล้วจากนั้นก็ส่งผลลัพธ์ออกมา แถวพวกที่อยู่ตรงกลาง ซี่ง คอยแก้ปัญหาทุกอย่างเอง เราสามารถใช้แถวที่ว่านี้ได้ ในหลายสถานการณ์ เพื่อคำนวณด้านตรงข้ามมุมฉาก ของสามเหลี่ยมมุมฉากใดก็ได้ นั่น เรามีทุกอย่างที่จำเป็นครบแล้ว ถึงเวลาเอาเครื่องมือเขียนโปรแกรม ออกมาแล้ว ลงมือเขียนมัน แล้วดูว่ามันใช้งานได้ไหม มันดูจะยากเกินไปหรือเปล่า? เราสามารถทำให้มันชัดเจนขึ้นอีกนิด ด้วยการวาดแผนผังงาน หนึ่งกล่องที่เราวาดนี้ จะแทนงานหนึ่งขั้นตอน จากนั้นก็สร้างตัวแปรที่เรียกว่า 'a' ขึ้นมา และตั้งค่าให้กับขาแรก จากนั้นก็ทำแบบเดียวกันกับขาอีกข้าง ตั้งชื่อให้ตัวแปรนี้ว่า 'b' คำนวณค่ากำลังสองของ a และให้ค่านั้นกับตัวแปรใหม่ที่เรียกว่า a2 ทำแบบเดียวกันกับ b และใส่ค่านั้นในตัวแปรที่ตั้งชื่อว่า b2 สร้างตัวแปร c2 ขึ้นมา และให้ค่า a2 บวก b2 สุดท้ายสร้างตัวแปร c และให้ค่ามันคือรากที่สอง (sqaure root) ของ c2 แสดงผล ผลลัพธ์ที่โปรแกรมแสดงออกมา ก็คือค่าของตัวแปร c ซึ่งเท่ากับความยาวของด้านตรงข้ามมุมฉาก ตอนนี้ก็ได้เวลาที่คุณจะเริ่ม เขียนโปรแกรมแล้วล่ะ