โครงสร้างการทำงานของคำสั่ง Nested statement
โครงสร้างการทำงานของคำสั่ง ประกอบด้วย รูปแบบคำสั่งและการทำงาน โจทย์ตัวอย่างและผังงาน และชุดคำสั่งโปรแกรม มีรายละเอียดดังต่อไปนี้
1.1 รูปแบบคำสั่ง โครงสร้างการทำงานแบบ Nested statement มีรูปแบบคำสั่ง ดังนี้
if <condition1> :
if <condition2>:
<statement1>
else:
<statement2>
else:
if <conditon3> :
<statement3>
else:
<statement4>
1.2 การทำงานของคำสั่ง เป็นคำสั่งเปรียบเทียบเงื่อนไขนิพจน์ทางตรรกะ โดยที่เงื่อนไขซ้อนเงื่อนไขเช่นในกรณีเปรียบเทียบเงื่อนไขแรก (condition1) แล้วปรากฏว่าเป็นจริง โปรแกรมจะเลือกทำคำสั่งหลังอักขระ : แต่หลังอักขระ : มีเงื่อนไขที่สอง (condition2) ที่ต้องตรวจสอบ เช่นเดียวกันถ้าเงื่อนไขตัวแรกเปรียบเทียบกันแล้วปรากฏว่าได้ผลลัพธ์ออกมาเป็นเท็จ โปรแกรมจะเลือกทำคำสั่งหลัง else : แต่ต้องไปพบกับเงื่อนไขที่สาม (condition3) ที่ซ้อนอยู่อีกเช่นกัน หลักการประมวลผลคำสั่งประเภทนี้มีหลักการง่าย ๆ ที่ผู้เขียนโปรแกรมควรทำความเข้าใจให้ชัดแจ้ง คือ ในกรณีที่ตรวจสอบเงื่อนไขแล้วเป็นจริง โปรแกรมจะดำเนินการทำงานในส่วนที่เป็น statement หลังเครื่องหมาย : เสมอ จะมีจำนวนคำสั่งหลาย statement ก็ได้ ซึ่ง statement ที่มีมากกว่าหนึ่งจะจัดย่อหน้าให้ตรงกันเสมอ ในทางตรงกันข้ามถ้าหากเมื่อตรวจเงื่อนไขแล้วเป็นเท็จ โปรแกรมจะประมวลผลหลัง else : เสมอ และจะประมวลผลทุก statement ที่อยู่ในย่อหน้าเดียวกัน เพราะฉะนั้นเมื่อมีเงื่อนไขภายในย่อยไปอีก จึงใช้หลักการนี้พิจารณาได้ต่อไปเรื่อย ๆ
1.3 โจทย์ตัวอย่าง จงเขียนโปรแกรมรับตัวเลขจำนวนเต็ม 3 จำนวนจากแป้นพิมพ์ แล้วให้แสดงว่าจำนวนตัวเลขใดมีค่ามากที่สุด
1.4 ผังงาน จากตัวอย่างที่ 4.5 สามารถเขียนเป็นผังงานได้ดังภาพที่ 4.17
ภาพที่ 4.17 แสดงผังงานการแก้ปัญหาโจทย์
ภาพที่ 4.18 แสดงชุดคำสั่งของโปรแกรม
บรรทัดที่ 2-4 เป็นคำสั่งแสดงข้อความ และรับตัวเลขจำนวนเต็มจากแป้นพิมพ์มาเก็บไว้ที่ตัวแปร A B และ C
บรรทัดที่ 5 เป็นคำสั่งเปรียบเทียบตัวแปร A >= B หรือไม่ ถ้าใช่ให้ประมวลผลที่บรรทัดที่ 6 ต่อไป ถ้าไม่ใช่ให้ข้ามไปประมวลผลบรรทัดที่ 10
บรรทัดที่ 6 เป็นคำสั่งเปรียบเทียบตัวแปร A >= C หรือไม่ ถ้าใช่ให้ประมวลผลบรรทัดที่ 7 ต่อไป ถ้าไม่ใช่ให้ประมวลผลบรรทัดที่ 8
บรรทัดที่ 7 เป็นคำสั่งที่ให้แสดงผลข้อความ “Max 1 = A” และค่าตัวเลขที่เก็บในตัวแปร A
บรรทัดที่ 8 เป็นคำสั่งที่จะประมวลผลเมื่อเงื่อนไขจาก บรรทัดที่ 6 เป็นเท็จ
บรรทัดที่ 9 เป็นคำสั่งที่ให้แสดงผลข้อความ “Max 3 = C” และค่าตัวเลขที่เก็บในตัวแปร C
บรรทัดที่ 10 เป็นคำสั่งที่จะประมวลผลเมื่อเงื่อนไขจาก บรรทัดที่ 5 เป็นเท็จ
บรรทัดที่ 11 เป็นคำสั่งเปรียบเทียบตัวแปร B >= C หรือไม่ ถ้าเป็นจริงให้ประมวลผลบรรทัดที่ 12 ต่อไป ถ้าเป็นเท็จให้ประมวลผลบรรทัดที่ 13
บรรทัดที่ 12 เป็นคำสั่งที่ให้แสดงผลข้อความ “Max 2 = B” และค่าตัวเลขที่เก็บในตัวแปร B
บรรทัดที่ 13 เป็นคำสั่งที่จะให้ประมวลผลเมื่อเงื่อนไขจาก บรรทัดที่ 11 เป็นเท็จ
บรรทัดที่ 14 เป็นคำสั่งที่ให้แสดงผลข้อความ “Max 3 = C” และค่าตัวเลขที่เก็บในตัวแปร C
1.7 ผลลัพธ์ของโปรแกรม ผลลัพธ์ที่ได้จากการสั่งประมวลผลโปรแกรมจากภาพที่ 4.18 ได้ผลลัพธ์ดังภาพที่ 4.19
การเขียนคำสั่งเพื่อควบคุมการทำงานด้วยการใช้เงื่อนไขนั้น ทุก ๆ โปรแกรมจำเป็นต้องใช้ ซึ่งถือได้ว่าเป็นหัวใจสำคัญของการเขียนโปรแกรมในทุก ๆ ภาษา ดังนั้นถ้าหากมีประสบการณ์จากภาษาอื่น ๆ มาบ้างแล้วจะทำให้เข้าใจได้ง่ายยิ่งขึ้น หลักการเขียนโปรแกรมแบบนี้จะมีลักษณะคล้ายคลึงกับภาษาอื่น ๆ ได้แก่ การใช้โครงสร้าง if สำหรับตรวจสอบตามเงื่อนไข ซึ่งมีผลลัพธ์เป็นจริงกับเท็จ กรณีนี้จะเขียนคำสั่งให้กระทำในกรณีที่เป็นจริงเท่านั้น การใช้โครงสร้าง if…else…สำหรับให้ทำงานทั้งกรณีที่เงื่อนไขเป็นจริงและเป็นเท็จ ดังนั้นการเขียนคำสั่งจะต้องเกิดขึ้นทั้งกรณีเป็นจริงและเป็นเท็จ และโครงสร้าง elif ใช้สำหรับสร้างมีเงื่อนไขย่อย ๆ ต่อไปอีกเรื่อย ๆ ถ้าในกรณีที่เป็นเท็จ จนหมดเงื่อนไข และโครงสร้างสุดท้ายได้แก่ nested statement เป็นการสร้างเงื่อนไขย่อย ๆ ทั้งด้านที่เป็นจริงและสร้างเงื่อนไขด้านที่เป็นเท็จ ภาษาไพธอนจะแตกต่างกับภาษาอื่น ๆ ในด้านการวางตำแหน่งและรายละเอียดเล็ก ๆ น้อย ๆ ในบทนี้จึงได้นำเอาผังงานซึ่งเป็นมาตรฐานในการเขียนคำสั่งมาประกอบการอธิบาย เพื่อให้ผู้ที่เริ่มเรียนภาษาไพธอนเป็นภาษาแรกได้มีความเข้าใจ และได้มีคำอธิบายแต่ละคำสั่งเป็นรายบรรทัด เพื่อเพิ่มความเข้าใจให้แก่ผู้อ่านมากยิ่งขึ้น