การจัดการข้อมูลเป็นหนึ่งในการใช้งานที่สำคัญของภาษาการเขียนโปรแกรมซึ่ง COBOL (Common Business-Oriented Language) ก็เป็นหนึ่งในภาษาที่ถูกออกแบบมาเพื่อการประมวลผลข้อมูลทางธุรกิจเป็นหลัก การใช้โครงสร้างข้อมูลแบบ Stack ใน COBOL อาจไม่เป็นที่นิยมเหมือนกับในภาษาโปรแกรมร่วมสมัยอื่นๆ แต่ก็สามารถทำได้ด้วยการใช้ Array หรือ Table ในการจำลองการทำงานของ Stack ซึ่งในแง่ของการเขียนโค้ดทางวิชาการ เราจะมาดูที่เทคนิคที่เกี่ยวข้องกับการ insert, update, find และ delete โดยใช้โครงสร้างข้อมูลแบบ Stack ใน COBOL นี้เอง
โค้ดตัวอย่างสำหรับการ Insert (PUSH) บน Stack:
IDENTIFICATION DIVISION.
PROGRAM-ID. STACKEXAMPLE.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 STACKPTR PIC 9(03) VALUE ZERO.
01 STACKSIZE PIC 9(03) VALUE 100.
01 STACKTABLE.
05 STACKENTRIES OCCURS 100 TIMES INDEXED BY X.
10 STACKENTRY PIC X(10).
PROCEDURE DIVISION.
PUSH-STACK SECTION.
ADD 1 TO STACKPTR.
IF STACKPTR > STACKSIZE
DISPLAY 'STACK OVERFLOW'
ELSE
MOVE ITEM-TO-INSERT TO STACKENTRY (STACKPTR)
END-IF.
END-PUSH-STACK SECTION.
ในตัวอย่างข้างต้น เราเริ่มต้นด้วยการประกาศตัวแปรที่จำเป็น ได้แก่ pointer สำหรับ Stack (STACKPTR), ขนาดของ Stack (STACKSIZE) และตัวแปรที่จะเก็บข้อมูลของ Stack คือ STACKTABLE การเพิ่มข้อมูล (PUSH) ไปที่ Stack นั้น เราจะทำการเพิ่มค่า pointer และตรวจสอบว่า Stack นั้นเต็มหรือยัง (STACK OVERFLOW) หากยังไม่เต็ม เราจะทำการเพิ่มข้อมูล (ITEM-TO-INSERT) เข้าไปที่ตำแหน่งที่ pointer ชี้อยู่
การ Update ข้อมูลบน Stack:
การ Update ใน Stack ไม่เป็นที่นิยมเพราะโครงสร้างข้อมูล Stack ออกแบบมาเพื่อการเข้าถึงข้อมูลแบบ LIFO (Last-In, First-Out) เท่านั้น หากต้องการ Update ข้อมูล จะต้อง Pop ข้อมูลออกจนถึงข้อมูลที่ต้องการ update และ Push ข้อมูลกลับเข้าไปใหม่
การ Find (Peek) ข้อมูลใน Stack:
PEEK-STACK SECTION.
MOVE ITEM-TO-FIND TO TEMP-ITEM.
SET X TO STACKPTR.
PERFORM UNTIL X = 0 OR STACKENTRY(X) = TEMP-ITEM
SUBTRACT 1 FROM X
END-PERFORM.
IF X = 0
DISPLAY 'ITEM NOT FOUND'
ELSE
DISPLAY 'ITEM FOUND AT POSITION ' X
END-IF.
END-PEEK-STACK SECTION.
ในการค้นหา (PEEK) บน Stack เราสามารถเริ่มจากตำแหน่งที่ pointer อยู่และวนลูปไปจนกว่าจะพบข้อมูลหรือจนถึงตำแหน่งที่ 1 หากพบข้อมูลก็แสดงตำแหน่ง หากไม่ เราจะแสดงข้อความว่าไม่พบข้อมูล
การ Delete (POP) ข้อมูลจาก Stack:
POP-STACK SECTION.
IF STACKPTR = ZERO
DISPLAY 'STACK UNDERFLOW'
ELSE
MOVE STACKENTRY (STACKPTR) TO ITEM-TO-DELETE
SUBTRACT 1 FROM STACKPTR
END-IF.
END-POP-STACK SECTION.
การลบข้อมูล (POP) บน Stack จริงๆ แล้วเท่ากับการเคลื่อน pointer กลับมา 1 ตำแหน่ง เพื่อ "ลืม" ข้อมูลที่อยู่ที่ตำแหน่งสูงสุดของ Stack โดยการตรวจสอบว่า Stack นั้นว่างหรือไม่ (STACK UNDERFLOW) จากนั้นจะทำการย้ายข้อมูลที่ pointer ชี้อยู่ในปัจจุบันไปยังตัวแปร ITEM-TO-DELETE และในที่สุดก็ลดค่า STACKPTR ทำให้ตำแหน่งสูงสุดใหม่ของ Stack ว่าง
ข้อดีของการใช้ Stack ใน COBOL:
1. ช่วยให้การจัดการข้อมูลที่ต้องการจะมีคำสั่ง LIFO เป็นเรื่องง่ายและชัดเจน
2. ความซับซ้อนในการเขียนโค้ดน้อย เพราะ stack มี operations หลักๆ เพียงไม่กี่อย่างเท่านั้น
ข้อเสียของการใช้ Stack ใน COBOL:
1. ไม่สามารถอ้างถึงข้อมูลที่อยู่ลึกเข้าไปใน Stack ได้อย่างง่ายดาย
2. ไม่เหมาะกับการเก็บข้อมูลที่มีการเข้าถึงแบบสุ่ม (Random access)
การเรียนรู้เทคนิคการจัดการข้อมูลและการใช้ภาษา COBOL สื่อถึงความรอบคอบและความเข้าใจในแนวคิดพื้นฐานของการโปรแกรม ที่ EPT เราให้ความสำคัญกับการเรียนรู้ทั้งเชิงทฤษฎีและการปฏิบัติ เพื่อให้ผู้เรียนเข้าใจในหลักการสำคัญๆ ตลอดจนการประยุกต์ใช้ในสถานการณ์จริง ไม่ว่าคุณจะเป็นนักเรียน นักพัฒนา หรือวิศวกรที่มีประสบการณ์ การฝึกภาษาการโปรแกรมอย่าง COBOL ก็ยังเป็นสิ่งที่มีค่าและสามารถนำไปใช้ได้จริงในหลากหลายธุรกิจ
หากความสนใจในการใช้ภาษาโปรแกรม COBOL และโครงสร้างข้อมูลแบบ Stack กระตุ้นให้คุณอยากเรียนรู้และพัฒนาทักษะการเขียนโค้ด เชิญเข้าร่วมคลาสเรียนที่ EPT ที่นี่เรามีผู้เชี่ยวชาญที่พร้อมจะแบ่งปันความรู้และประสบการณ์ให้กับคุณ ไม่ว่าจะเป็นการเรียนรู้พื้นฐาน ไปจนถึงการใช้งานภาษา COBOL ในระดับสูง เรามุ่งมั่นที่จะทำให้การเรียนรู้เป็นประสบการณ์ที่สนุกสนานและตอบสนองต่อความต้องการของตลาดงานในอนาคต ร่วมสร้างก้าวต่อไปในการเป็นผู้เชี่ยวชาญด้านการเขียนโค้ดกับเราที่ EPT ได้เลยครับ!
หมายเหตุ: ข้อมูลในบทความนี้อาจจะผิด โปรดตรวจสอบความถูกต้องของบทความอีกครั้งหนึ่ง บทความนี้ไม่สามารถนำไปใช้อ้างอิงใด ๆ ได้ ทาง EPT ไม่ขอยืนยันความถูกต้อง และไม่ขอรับผิดชอบต่อความเสียหายใดที่เกิดจากบทความชุดนี้ทั้งทางทรัพย์สิน ร่างกาย หรือจิตใจของผู้อ่านและผู้เกี่ยวข้อง
Tag ที่น่าสนใจ: cobol stack programming data_management insert update find delete lifo stack_overflow stack_underflow coding_techniques business-oriented_language data_structure common_business-oriented_language
หากมีข้อผิดพลาด/ต้องการพูดคุยเพิ่มเติมเกี่ยวกับบทความนี้ กรุณาแจ้งที่ http://m.me/Expert.Programming.Tutor
085-350-7540 (DTAC)
084-88-00-255 (AIS)
026-111-618
หรือทาง EMAIL: NTPRINTF@GMAIL.COM