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

อัปเกรดสำหรับเนื้อหาเพิ่มเติม
True or false? A triangle is right-angled if there is a 90-degree angle.
นี่คือรูปสามเหลี่ยม แล้วเราจะรู้ได้ยังไงว่ามัน เป็นสามเหลี่ยมมุมฉาก เราสามารถตรวจสอบได้ว่า มันมีมุม 90 องศา หรือไม่ โดยใช้ทฤษฎีบทของพีธากอรัส ความสัมพันธ์นี้จะอยู่ในรูปสามเหลี่ยม มุมฉากเท่านั้น c² = a² + b² ในการทดสอบ เราจะใส่ความยาว ของด้านข้างลงในสมการ และดูว่ามันเป็นจริงไหม - ดูว่าด้านซ้ายเท่ากับด้านขวาหรือเปล่า ตอนนี้เรากำลังจะสร้างโปรแกรม ที่จะมาทดสอบว่าสามเหลี่ยมใด มีมุมฉากหรือว่าไม่มี เพื่อให้การคำนวณเสร็จสมบูรณ์ เราต้องการความยาวของ สามเหลี่ยมทั้งสามด้าน ดังนั้นสามคำสั่งแรกในโปรแกรมจะเป็น บันทึกด้านที่ 1 บันทึกด้านที่ 2 บันทึกด้านที่ 3 แล้วโปรแกรมควรทำอะไรต่อไปอีก? ในการใช้ทฤษฎีบทของพีธากอรัส เราต้องดูว่าด้านไหนยาวที่สุด เราเรียกมันว่า c ส่วนอีกสองด้านจะกลายเป็น a และ b ถ้า: c² = a² + b² ดังนั้น: ก็หมายความว่า มันเป็นรูปสามเหลี่ยมมุมฉาก นอกเหนือจากนี้: แปลว่าไม่ใช่ แต่อันนี้ล่ะ การหาว่าด้านใดยาวที่สุด เราจะทำแบบนั้นได้ยังไง? เราสามารถใช้คำสั่ง if ได้สามแบบดังนี้ ตรวจดูแถวเหล่านี้ว่าด้าน 1 ยาวที่สุดหรือไม่ จากนั้นเราจึงสร้างตัวแปร c แล้วกำหนดค่าความยาวของด้าน 1 ในแถวพวกนี้เราจะทำโดยใช้ วิธีเดียวกันกับด้าน 2 และเราจะทดสอบด้าน 3 ในแถวเหล่านี้ด้วย ตอนนี้โปรแกรมได้คำว่า 'ไม่' เป็นคำตอบ ของทั้งสามคำสั่ง if ดังนั้นจึงไม่มีด้านใด ยาวกว่าอีกสองด้านเลย และสามเหลี่ยมนี้ก็ไม่ได้เป็นมุมฉากด้วย ดังนั้นเราจึงแสดงผลออกมาได้ว่า มันไม่ใช่สามเหลี่ยมมุมฉาก และโปรแกรมก็จะสิ้นสุดลง ถ้าเรารู้ว่าตัวแปร c เป็นด้านที่ยาว ที่สุดของสามเหลี่ยม ทั้งสองด้านที่สั้นกว่าก็ต้องเป็น : ตัวแปร a และตัวแปร b พวกด้านที่เป็นด้านสั้น ไม่สำคัญว่าด้านไหนจะเป็นตัวแปร a หรือตัวแปร b เพราะจริงๆแล้ว a² + b² มีค่าเท่ากับ b² + a² รหัสเทียมของเราพร้อมแล้วใช่ไหม? ก็ไม่เชิงหรอก เพื่อทำให้ชัดเจนว่ารหัสส่วนใด ขึ้นอยู่กับรหัสส่วนอื่น เราก็มักจะเชื่อมแถวต่างๆ ที่เป็นพวกเดียวกัน แถวที่ 5 ถึง 7 อยู่ตรงนั่น เพราะพวกมันเชื่อมโยงกับคำสั่ง if ในแถวที่ 4 แถวพวกนี้จึงมีบทบาทเท่านั้น เมื่อคำสั่ง if ในแถวที่ 4 เป็นจริง เช่นเดียวกันกับแถวที่ 9 ถึง 11 และแถวที่ 13 ถึง 15 และแถวที่ 20 แถว 17, 18 และ 22 ก็จะถูกเชื่อมกับคำสั่ง else ดูนี่นะ นี่เป็นส่วนหนึ่งของรหัส ที่แก้ไขหน้าที่ด้วยตัวเอง มันคืออัลกอริทึม ถ้า c² = a² + b² แผนผังลำดับงานอาจเป็นประโยชน์ ในการดูภาพรวมของโปรแกรม หนึ่งกล่องที่เราวาดนั้นจะ แทนแต่ละขั้นตอน เราสร้างและกำหนดค่าให้กับตัวแปร s1, s2 และ s3 ถ้า s1 ใหญ่ที่สุด จงสร้างตัวแปร c และกำหนดค่าจาก s1 ตัวแปร a ได้ค่าจาก s2 และตัวแปร b ได้ค่าจาก s3 ให้ทำแบบเดียวกันกับ s2 และ s3 ด้วย ถ้า ไม่มีด้านใดยาวกว่าอีกสองด้าน นั้น:แสดงว่ามันไม่ใช่รูปสามเหลี่ยมมุมฉาก และโปรแกรมนี้จะสิ้นสุดลง ตอนนี้เรารู้แล้วว่าด้านไหนยาวที่สุด และมันเรียกว่า c ตัวแปร a2 ได้ค่า a คูณ a ตัวแปร b2 ได้รับค่า b คูณ b ตัวแปร c2 ได้รับค่า c คูณ c สุดท้าย เราสามารถทดสอบได้ว่า c2 = a2 + b2 ถ้า นั่นเป็นจริง ดังนั้น โปรแกรมจะแสดงผลลัพธ์ว่า 'yes' นอกเหนือจากนี้ โปรแกรมจะแสดงผล ว่า 'no' ตอนนี้ถึงตาเราแล้วที่จะเขียน โปรแกรมขึ้นมาอีก