ในโลกของการเขียนโปรแกรม การหาค่ามากที่สุดและน้อยที่สุดในชุดข้อมูลหนึ่งๆ เป็นหนึ่งในภารกิจพื้นฐานที่โปรแกรมเมอร์ทุกคนควรจะทำได้ ในภาษา COBOL ซึ่งเป็นภาษาโปรแกรมมิ่งที่สืบทอดมายาวนานและยังคงใช้งานอยู่ในระบบองค์กรขนาดใหญ่ การใช้งาน loop ในการค้นหาค่าเหล่านี้ไม่ได้แตกต่างกันมากนักจากภาษาโปรแกรมมิ่งอื่นๆ
ก่อนเริ่มต้น มารู้จักกับ COBOL กันก่อนว่ามันคืออะไร COBOL ย่อมาจาก Common Business-Oriented Language หรือ ภาษาที่พัฒนาขึ้นเพื่อการจัดการทางธุรกิจโดยเฉพาะ ถึงแม้ในสมัยปัจจุบันนี้ ภาษาการเขียนโปรแกรมได้เปลี่ยนแปลงไปมาก แต่ COBOL ยังคงมีความสำคัญในองค์กรต่างๆ ที่มีระบบธุรกิจที่เก่าแก่ และต้องการความมั่นคง และเชื่อถือได้
เมื่อเข้าใจประเภทของ COBOL แล้ว เรามาดูวิธีการหาค่ามากสุดและน้อยสุดด้วยการใช้ loop กันเลยดีกว่า
ก่อนอื่น เราต้องสร้างตัวแปรสำหรับเก็บค่าสูงสุด และตั้งค่าเริ่มต้นให้เป็นค่าที่ต่ำที่สุดที่เป็นไปได้ เมื่อใช้ลูปในการวนซ้ำผ่านชุดข้อมูล เราจะเปรียบเทียบค่าปัจจุบันกับค่าสูงสุดที่เก็บไว้ หากค่าปัจจุบันมากกว่า ก็จะเปลี่ยนค่าที่เก็บไว้เป็นค่าปัจจุบัน
ต่อไปนี้คือตัวอย่างโค้ดในภาษา COBOL:
IDENTIFICATION DIVISION.
PROGRAM-ID. FINDMAX.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 NUMBERS.
05 NUMBER OCCURS 5 TIMES PIC 9(4) VALUE ZEROES.
01 MAX-VAL PIC 9(4) VALUE ZERO.
PROCEDURE DIVISION.
A000-INITIALIZE.
PERFORM VARYING I FROM 1 BY 1 UNTIL I > 5
DISPLAY "ENTER NUMBER (", I, "): "
ACCEPT NUMBER(I)
END-PERFORM.
A100-FIND-MAX.
MOVE ZERO TO MAX-VAL
PERFORM VARYING I FROM 1 BY 1 UNTIL I > 5
IF NUMBER(I) > MAX-VAL THEN
MOVE NUMBER(I) TO MAX-VAL
END-IF
END-PERFORM
DISPLAY "THE MAXIMUM VALUE IS: " MAX-VAL.
STOP RUN.
ในตัวอย่างนี้ ได้มีการรับค่าตัวเลขจำนวน 5 ตัวจากผู้ใช้ โดยมีการใช้ loop `PERFORM VARYING` ในเพื่อรับข้อมูลเข้ามา และ loop เดียวกันอีกอันในการค้นหาค่าสูงสุด
การหาค่าต่ำสุดจะเหมือนกับการหาค่าสูงสุด แต่เราจะเริ่มต้นด้วยค่าที่สูงที่สุดที่เป็นไปได้ และเปรียบเทียบในทางตรงกันข้าม
IDENTIFICATION DIVISION.
PROGRAM-ID. FINDMIN.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 NUMBERS.
05 NUMBER OCCURS 5 TIMES PIC 9(4) VALUE ZEROES.
01 MIN-VAL PIC 9(4) VALUE 9999.
PROCEDURE DIVISION.
A000-INITIALIZE.
PERFORM VARYING I FROM 1 BY 1 UNTIL I > 5
DISPLAY "ENTER NUMBER (", I, "): "
ACCEPT NUMBER(I)
END-PERFORM.
A100-FIND-MIN.
MOVE 9999 TO MIN-VAL
PERFORM VARYING I FROM 1 BY 1 UNTIL I > 5
IF NUMBER(I) < MIN-VAL THEN
MOVE NUMBER(I) TO MIN-VAL
END-IF
END-PERFORM
DISPLAY "THE MINIMUM VALUE IS: " MIN-VAL.
STOP RUN.
ในโค้ดข้างต้น ได้มีการตั้งค่าเริ่มต้นของ `MIN-VAL` เป็น 9999 ซึ่งเป็นค่าที่สูงเพื่อให้มั่นใจว่าทุกค่าในชุดข้อมูลจะน้อยกว่าค่านี้ ในการวนลูป เราตรวจสอบว่าค่าปัจจุบันน้อยกว่า `MIN-VAL` หรือไม่ และถ้าใช่ เราจะเปลี่ยนค่านั้น
IDENTIFICATION DIVISION.
PROGRAM-ID. FINDMINMAX.
หมายเหตุ: ข้อมูลในบทความนี้อาจจะผิด โปรดตรวจสอบความถูกต้องของบทความอีกครั้งหนึ่ง บทความนี้ไม่สามารถนำไปใช้อ้างอิงใด ๆ ได้ ทาง EPT ไม่ขอยืนยันความถูกต้อง และไม่ขอรับผิดชอบต่อความเสียหายใดที่เกิดจากบทความชุดนี้ทั้งทางทรัพย์สิน ร่างกาย หรือจิตใจของผู้อ่านและผู้เกี่ยวข้อง
Tag ที่น่าสนใจ: cobol loop maximum_value minimum_value programming_language business-oriented_language data_manipulation code_example usecase real-world_example
หากมีข้อผิดพลาด/ต้องการพูดคุยเพิ่มเติมเกี่ยวกับบทความนี้ กรุณาแจ้งที่ http://m.me/Expert.Programming.Tutor
085-350-7540 (DTAC)
084-88-00-255 (AIS)
026-111-618
หรือทาง EMAIL: NTPRINTF@GMAIL.COM