โครงสร้างของ Zahn
โครงสร้างของ Zahnในวิทยาการคอมพิวเตอร์หรือที่รู้จักกันในชื่อ "คำสั่งกรณีสถานการณ์" เป็นโครงสร้างที่เสนอสำหรับการควบคุมการไหล แบบมีโครงสร้าง ในภาษาการเขียนโปรแกรมคอมพิวเตอร์ ซึ่งอธิบายครั้งแรกโดยCharles T. Zahnในปี 1974 [ 1 ]โครงสร้างนี้อธิบายโดยหลักๆ แล้วในแง่ของการขยายโครงสร้างการวนซ้ำเพื่อรับรู้ถึงวิธีการหลายวิธีที่การวนซ้ำสามารถสิ้นสุดได้ตัวอย่างเช่น การวนซ้ำการค้นหาอาจสิ้นสุดก่อนกำหนด เมื่อพบเป้าหมาย หรืออาจสิ้นสุดหลังจากการค้นหาไม่สำเร็จ โครงสร้างของ Zahn สามารถใช้เพื่อหลีกเลี่ยงGO TOคำสั่งเมื่อพิจารณาว่าพบกรณีใด Zahn ทำเช่นนี้โดยการแนะนำตัวแปรชนิดใหม่ที่เรียกว่าตัวบ่งชี้สถานการณ์ใน โครงสร้างคล้าย CASEที่ล้อมรอบการวนซ้ำ
Donald Knuthในบทความของเขาเรื่อง "การเขียนโปรแกรมเชิงโครงสร้างด้วยคำสั่ง Go To" [ 2 ]อธิบายโครงสร้างของ Zahn สองรูปแบบดังนี้:
วนลูปจนกว่าจะถึง <สถานการณ์ที่ 1> หรือ ... หรือ <สถานการณ์ที่ n>: <รายการคำสั่ง 0> ทำซ้ำ; จากนั้น <สถานการณ์ที่ 1> => <รายการคำสั่งที่ 1>; ... <สถานการณ์ n> => <รายการข้อความ n>; ไฟ
และ:
เริ่มจนถึง <สถานการณ์ที่ 1> หรือ ... หรือ <สถานการณ์ที่ n>: <รายการคำสั่ง 0>; จบ; จากนั้น <สถานการณ์ที่ 1> => <รายการคำสั่งที่ 1>; ... <สถานการณ์ n> => <รายการข้อความ n>; ไฟ
นอกจากนี้ยังต้องมีข้อความที่ระบุตัวบ่งชี้สถานการณ์เฉพาะและออกจากส่วนของโครงสร้างนั้นด้วย
ตัวอย่างง่ายๆ ต่อไปนี้เป็นการค้นหารายการเฉพาะในตารางสองมิติ
ออกเมื่อพบหรือขาดหายไป; สำหรับ I := 1 ถึง N ทำซ้ำสำหรับ J := 1 ถึง M ทำซ้ำถ้าตาราง[I,J] = เป้าหมายแสดงว่าพบแล้ว; หายไป; ทางออก พบ: พิมพ์ ("รายการอยู่ในตาราง"); ขาดหายไป: พิมพ์ ("รายการไม่อยู่ในตาราง"); ออกจากระบบ ;บล็อก try-catchที่ใช้ในภาษาโปรแกรมสมัยใหม่สำหรับการจัดการข้อยกเว้นนั้นเป็นส่วนขยายที่สำคัญของโครงสร้างของ Zahn ความแตกต่างหลักคือ ขอบเขตของข้อเสนอของ Zahn นั้นจำกัดอยู่เฉพาะลูปแต่ละลูปภายในโปรแกรม ในขณะที่ความสามารถในการจัดการข้อยกเว้นมักอนุญาตให้ "โยน" ข้อยกเว้นจากส่วนลึกภายในสแต็กการเรียกและ "ดักจับ" ข้อยกเว้น ณ จุดที่สูงขึ้นในสแต็ก เนื่องจากโครงสร้างของ Zahn นั้นเป็นแบบเฉพาะที่ภายในรูทีน จึงสามารถนำไปใช้งานได้อย่างมีประสิทธิภาพมาก โดยไม่จำเป็นต้อง "คลาย" สแต็กการเรียก
Zahn ได้นำคำสั่งกรณีสถานการณ์ของเขาไปใช้ในภาษา SKOL SKOL ถูกพัฒนาขึ้นในรูปแบบของชุดมาโครสำหรับตัวประมวลผลล่วงหน้าMORTRAN ของภาษา Fortran
ลิงก์ภายนอก
- Zahn, CT การควบคุมโครงสร้างในภาษาโปรแกรมSLAC Pub-1530 มกราคม 1975
- โครงสร้างควบคุมที่เก็บถาวรไว้เมื่อวันที่ 8 มิถุนายน 2011 ในWayback Machineถูกกำหนดโดยใช้Schemeโดยโครงสร้างของ Zahn เป็นโครงสร้างสุดท้ายในรายการ
- โครงสร้างของ Zahn ที่เก็บถาวรไว้เมื่อวันที่ 23 กันยายน 2006 ในWayback Machineกำหนดโดยใช้คำสั่ง GOTO ในภาษา Forth
- คู่มืออ้างอิงภาษาการเขียนโปรแกรม SKOL