الوحدة 3 · الدرس 2 من 26/10 في الدورة~15 min
دروس الوحدة (2/2)
الحلقات والتكرارات
لا يتم تعريف الحلقات والبنيات التكرارية في COBOL بواسطة كلمات رئيسية مثل for أو while، ولكن بدلاً من ذلك استخدم الاختلافات النحوية لنفس العبارة PERFORM.
الحلقات الرقمية الثابتة (أوقات الأداء)
إذا كنا بحاجة إلى تكرار تنفيذ فقرة عدد محدد من المرات، فيمكننا إضافة المعدل TIMES إلى الأمر PERFORM.
COBOL
PERFORM PROCESS-LINE 10 TIMES.في هذه الحالة، سيقوم المترجم بتنفيذ الفقرة PROCESS-LINE بالضبط 10 مرات، ثم يستأنف التنفيذ الخطي للتعليمة البرمجية.
الحلقات الشرطية (الأداء حتى)
للتكرار حتى يصبح شرط معين صحيحًا (أي ما يعادل حلقة while المعكوسة)، نستخدم عبارة PERFORM ... UNTIL.
COBOL
PERFORM INCR-COUNTER UNTIL WS-COUNTER > 5.COBOL
PROCEDURE DIVISION.
MAIN-PROCEDURE.
PERFORM PROCESS-ITEM UNTIL WS-COUNTER > 3.
STOP RUN.
PROCESS-ITEM.
DISPLAY "Counter: " WS-COUNTER.
ADD 1 TO WS-COUNTER.
---
## Try it yourself
<CobolExercise
id="cobol.m3.l2.e1"
prompt="Write a statement inside MAIN-PROCEDURE to execute the PROCESS-ITEM paragraph exactly 10 times."
starter={` PROCEDURE DIVISION.\n MAIN-PROCEDURE.\n * WRITE CODE HERE\n STOP RUN.\n`}
solution={` PROCEDURE DIVISION.\n MAIN-PROCEDURE.\n PERFORM PROCESS-ITEM 10 TIMES.\n STOP RUN.\n`}
rules={{
requiredKeywords: ['PERFORM PROCESS-ITEM', '10', 'TIMES.', 'STOP RUN.'],
}}
hint="Use the syntax: PERFORM PROCESS-ITEM 10 TIMES."
/>
<CobolExercise
id="cobol.m3.l2.e2"
prompt="Repeatedly execute the PROCESS-STEP paragraph until the WS-COUNTER variable becomes greater than 5."
starter={` PROCEDURE DIVISION.\n MAIN-PROCEDURE.\n * WRITE CODE HERE\n STOP RUN.\n`}
solution={` PROCEDURE DIVISION.\n MAIN-PROCEDURE.\n PERFORM PROCESS-STEP UNTIL WS-COUNTER > 5.\n STOP RUN.\n`}
rules={{
requiredKeywords: ['PERFORM PROCESS-STEP', 'UNTIL', 'WS-COUNTER', '>', '5', 'STOP RUN.'],
}}
hint="Use the syntax: PERFORM PROCESS-STEP UNTIL WS-COUNTER > 5."
/>