COBOL এ লুপিং এবং ইটারেশন (Looping and Iteration in COBOL)
COBOL এ লুপিং এবং ইটারেশন খুবই গুরুত্বপূর্ণ, কারণ এগুলোর মাধ্যমে একটি কোডের অংশ একাধিকবার পুনরাবৃত্তি করা যায়। COBOL এ বিভিন্ন ধরনের লুপিং কৌশল ব্যবহার করা যায়, যেমন PERFORM, WITH TEST AFTER, WITH TEST BEFORE, এবং VARYING। এইসব কৌশল ব্যবহৃত হয় যখন কোনো নির্দিষ্ট শর্ত পূর্ণ হলে বা নির্দিষ্ট সময় পর্যন্ত একটি কোড ব্লক বারবার এক্সিকিউট করতে হয়।
১. PERFORM স্টেটমেন্ট (PERFORM Statement)
PERFORM স্টেটমেন্ট COBOL এর একটি সাধারণ লুপিং কৌশল, যা একটি নির্দিষ্ট প্রক্রিয়া বা সাবরুটিন একাধিকবার কার্যকর করতে ব্যবহৃত হয়।
সিনট্যাক্স:
PERFORM statement-name {UNTIL condition}.উদাহরণ:
PERFORM DisplayMessage UNTIL Counter = 5.
DisplayMessage.
DISPLAY 'This is message number: ' Counter.
ADD 1 TO Counter.
END-PERFORM.এখানে, PERFORM স্টেটমেন্টটি DisplayMessage সাবরুটিনটি ৫ বার কার্যকর করবে যতক্ষণ না Counter এর মান ৫ হবে। প্রতিটি পুনরাবৃত্তির পরে Counter এর মান ১ বাড়ানো হবে এবং মেসেজ প্রদর্শিত হবে।
২. PERFORM VARYING (Varying Loop)
COBOL এ PERFORM VARYING স্টেটমেন্টটি ব্যবহার করা হয় একটি ভেরিয়েবল মান পরিবর্তন (varying) করে লুপ চালানোর জন্য। এটি সাধারণত ইনডেক্স বা কাউন্টার ভেরিয়েবল ব্যবহারের জন্য ব্যবহৃত হয়।
সিনট্যাক্স:
PERFORM VARYING index-variable FROM start-value BY increment UNTIL end-condition
statement(s)
END-PERFORM.উদাহরণ:
PERFORM VARYING Counter FROM 1 BY 1 UNTIL Counter > 5
DISPLAY 'This is message number: ' Counter
END-PERFORM.এখানে Counter ভেরিয়েবলটি ১ থেকে শুরু হয়ে ৫ পর্যন্ত প্রতি পুনরাবৃত্তিতে ১ করে বাড়বে, এবং প্রতিটি বার DISPLAY স্টেটমেন্টটি কার্যকর হবে।
৩. WITH TEST AFTER এবং WITH TEST BEFORE
COBOL এ WITH TEST AFTER এবং WITH TEST BEFORE ব্যবহার করা হয় লুপের শর্ত পরীক্ষা করার জন্য। এই দুটি কৌশলের মধ্যে পার্থক্য হল যে WITH TEST AFTER লুপের শর্ত পরীক্ষা করার আগে কোড ব্লকটি অন্তত একবার কার্যকর হয়, তবে WITH TEST BEFORE কোড ব্লকটি কার্যকর করার আগে শর্ত পরীক্ষা করে।
১. WITH TEST AFTER
- কোড ব্লক প্রথমে এক্সিকিউট হবে এবং তারপর শর্ত পরীক্ষা করা হবে।
সিনট্যাক্স:
PERFORM UNTIL condition WITH TEST AFTER
statement(s)
END-PERFORM.উদাহরণ:
PERFORM UNTIL Counter > 5 WITH TEST AFTER
DISPLAY 'Counter value is: ' Counter
ADD 1 TO Counter
END-PERFORM.এখানে প্রথমে Counter এর মান প্রদর্শিত হবে, তারপর Counter এর মান ১ বাড়ানো হবে, এবং পরবর্তী চক্রে শর্ত পরীক্ষা করা হবে।
২. WITH TEST BEFORE
- শর্ত প্রথমে পরীক্ষা করা হয় এবং তারপর কোড ব্লকটি এক্সিকিউট হয় যদি শর্ত সঠিক হয়।
সিনট্যাক্স:
PERFORM UNTIL condition WITH TEST BEFORE
statement(s)
END-PERFORM.উদাহরণ:
PERFORM UNTIL Counter > 5 WITH TEST BEFORE
ADD 1 TO Counter
DISPLAY 'Counter value is: ' Counter
END-PERFORM.এখানে প্রথমে শর্ত পরীক্ষা করা হবে, তারপর Counter এর মান ১ বাড়ানো হবে এবং তারপরে মান প্রদর্শিত হবে।
৪. EXIT WHEN (Breaking out of the loop)
EXIT WHEN স্টেটমেন্টটি লুপের মধ্যে কোনো শর্ত পূর্ণ হলে লুপটি থেকে বের হয়ে যেতে ব্যবহৃত হয়। এটি PERFORM স্টেটমেন্টের ভিতর ব্যবহার করা হয় লুপ শেষ করার জন্য।
সিনট্যাক্স:
PERFORM
statement(s)
EXIT WHEN condition
END-PERFORM.উদাহরণ:
PERFORM UNTIL Counter > 5
DISPLAY 'Counter value is: ' Counter
ADD 1 TO Counter
EXIT WHEN Counter = 3
END-PERFORM.এখানে, লুপটি Counter এর মান ৩ হওয়ার পরেই থেমে যাবে, এবং EXIT WHEN শর্তটি পূর্ণ হলে লুপটি বন্ধ হয়ে যাবে।
সারসংক্ষেপ
COBOL এ লুপিং এবং ইটারেশন প্রোগ্রামকে আরও শক্তিশালী এবং কার্যকর করে তোলে। PERFORM, PERFORM VARYING, WITH TEST AFTER, WITH TEST BEFORE, এবং EXIT WHEN স্টেটমেন্টগুলো ব্যবহার করে আপনি কোডের পুনরাবৃত্তি কার্যকরভাবে করতে পারেন। এইসব স্টেটমেন্টের মাধ্যমে একটি নির্দিষ্ট শর্ত পূর্ণ হওয়া পর্যন্ত প্রোগ্রামের একটি অংশ একাধিকবার কার্যকর করা সম্ভব হয়, যা ডেটা প্রক্রিয়া এবং অন্যান্য অপারেশনগুলি সহজ ও দ্রুত করতে সহায়তা করে।
PERFORM স্টেটমেন্ট এর ব্যবহার
COBOL প্রোগ্রামিং ভাষায় PERFORM স্টেটমেন্ট একটি শক্তিশালী এবং গুরুত্বপূর্ণ নির্দেশনা, যা কোডের পুনঃব্যবহারযোগ্য অংশগুলো একসাথে গ্রুপ করতে সাহায্য করে। PERFORM স্টেটমেন্ট ব্যবহার করে একাধিক প্রোগ্রাম স্টেটমেন্ট বা একটি সেকশন বা প্যারাগ্রাফকে কার্যকর করা যায়। এটি কোডের কার্যকারিতা সংক্ষেপে এবং আরও সংগঠিতভাবে তৈরি করতে সহায়ক।
PERFORM স্টেটমেন্ট দুটি প্রধানভাবে ব্যবহৃত হয়:
- Inline Perform: যেখানে একটি নির্দিষ্ট কোড স্নিপেট একাধিকবার কার্যকর করা হয়।
- Paragraph Perform: যেখানে এক বা একাধিক প্যারাগ্রাফ বা সেকশন কার্যকর করা হয়।
PERFORM স্টেটমেন্টের সাধারণ গঠন
Sintax:
PERFORM [paragraph-name] [times].- paragraph-name: এটি সেই প্যারাগ্রাফের নাম যা কার্যকর হবে।
- times: এটি ঐ প্যারাগ্রাফ বা কোড স্নিপেটটি কতবার কার্যকর হবে, সেটি নির্ধারণ করে।
উদাহরণ:
PERFORM ADDITION.এখানে ADDITION হলো একটি প্যারাগ্রাফের নাম, যা COBOL প্রোগ্রামে অন্য কোথাও সংজ্ঞায়িত থাকবে।
1. Inline Perform (এক লাইন কোড)
Inline Perform-এ কোডের মধ্যে সোজাসুজি PERFORM স্টেটমেন্ট ব্যবহার করা হয়, যেখানে নির্দিষ্ট একটি কাজ একাধিকবার বা এককভাবে করা হয়।
উদাহরণ:
PERFORM VARYING I FROM 1 BY 1 UNTIL I > 10
DISPLAY 'Number: ' I
END-PERFORM.এখানে, PERFORM VARYING স্টেটমেন্টটি I নামক ভেরিয়েবলটি ১ থেকে ১০ পর্যন্ত বৃদ্ধি পায় এবং প্রতি বার I এর মান স্ক্রীনে প্রদর্শিত হয়।
ব্যাখ্যা:
- VARYING: এটি ইন্ডেক্স ভেরিয়েবল বা কাউন্টারকে বৃদ্ধি বা হ্রাস করার জন্য ব্যবহৃত হয়।
- FROM: শুরু করার মান।
- BY: প্রতিটি প্যারাগ্রাফের এক্সিকিউশনের পরে যে পরিমাণ বৃদ্ধি পাবে।
- UNTIL: শর্ত যা নিশ্চিত করবে যে লুপটি কত বার চলবে।
2. Paragraph Perform (প্যারাগ্রাফ Perform)
Paragraph Perform স্টেটমেন্টে, একটি নির্দিষ্ট প্যারাগ্রাফকে কার্যকর করা হয়। এর মাধ্যমে বড় প্রোগ্রামগুলিতে কোডকে মডুলারভাবে সাজানো যায়, ফলে কোড পুনরায় ব্যবহারযোগ্য হয়ে ওঠে এবং উন্নত রক্ষণাবেক্ষণ সহজ হয়।
উদাহরণ:
PERFORM PRINT-REPORT.
...
PRINT-REPORT.
DISPLAY 'Report printed.'
DISPLAY '====================='.এখানে, PERFORM PRINT-REPORT স্টেটমেন্ট PRINT-REPORT প্যারাগ্রাফটিকে কার্যকর করবে। PRINT-REPORT প্যারাগ্রাফটি একটি নির্দিষ্ট আউটপুট প্রদর্শন করার কাজ করবে।
3. Conditional Perform (শর্তাধীন Perform)
কোনো কোড ব্লক শর্তসাপেক্ষে কার্যকর করতে PERFORM স্টেটমেন্ট ব্যবহৃত হয়। এটি মূলত কোনো শর্ত পূর্ণ হলে নির্দিষ্ট প্যারাগ্রাফ বা কোড এক্সিকিউট করতে ব্যবহৃত হয়।
উদাহরণ:
IF AGE >= 18
PERFORM PRINT-ADULT.
ELSE
PERFORM PRINT-MINOR.
END-IF.
PRINT-ADULT.
DISPLAY 'You are an adult.'
PRINT-MINOR.
DISPLAY 'You are a minor.'এখানে, PERFORM PRINT-ADULT এবং PERFORM PRINT-MINOR স্টেটমেন্ট দুটি শর্তসাপেক্ষে কার্যকর করা হচ্ছে। যদি AGE ১৮ বা তার বেশি হয়, তবে PRINT-ADULT প্যারাগ্রাফটি কার্যকর হবে, অন্যথায় PRINT-MINOR প্যারাগ্রাফটি কার্যকর হবে।
4. PERFORM WITH TIMES (একাধিক বার Perform)
কোনো কোড ব্লক বা প্যারাগ্রাফকে নির্দিষ্ট সংখ্যক বার চালানোর জন্য PERFORM WITH TIMES স্টেটমেন্ট ব্যবহৃত হয়।
উদাহরণ:
PERFORM PRINT-NAME 5 TIMES.
...
PRINT-NAME.
DISPLAY 'Hello, User!'এখানে, PRINT-NAME প্যারাগ্রাফটি ৫ বার কার্যকর হবে এবং প্রতিবার "Hello, User!" স্ক্রীনে প্রদর্শিত হবে।
5. PERFORM UNTIL (শর্তসাপেক্ষ Perform)
PERFORM UNTIL স্টেটমেন্টটি শর্ত পূর্ণ না হওয়া পর্যন্ত একটি কোড স্নিপেট বা প্যারাগ্রাফ একাধিক বার কার্যকর করতে ব্যবহৃত হয়।
উদাহরণ:
PERFORM UNTIL TOTAL > 100
ADD 10 TO TOTAL
END-PERFORM.এখানে, TOTAL এর মান ১০০ এর বেশি না হওয়া পর্যন্ত PERFORM UNTIL ব্লকটি চালানো হবে এবং TOTAL এর মান ১০ প্রতি বার বাড়ানো হবে।
সারসংক্ষেপ
PERFORM স্টেটমেন্ট COBOL প্রোগ্রামিংয়ে কোডের পুনঃব্যবহারযোগ্যতা এবং সংগঠন বৃদ্ধি করতে সাহায্য করে। এটি কোডের কার্যকারিতা সংক্ষেপে এবং আরও মডুলারভাবে তৈরি করতে সহায়ক, যা বড় প্রোগ্রামগুলির রক্ষণাবেক্ষণ এবং উন্নতির ক্ষেত্রে গুরুত্বপূর্ণ। PERFORM স্টেটমেন্ট বিভিন্ন ধরনের শর্ত, ইনলাইন কোড, প্যারাগ্রাফ কল, বা বার বার কোড চালানোর জন্য ব্যবহৃত হতে পারে।
COBOL-এ PERFORM UNTIL এবং PERFORM TIMES এর ব্যবহার
COBOL ভাষায় PERFORM UNTIL এবং PERFORM TIMES হল দুটি গুরুত্বপূর্ণ লুপিং স্টেটমেন্ট যা নির্দিষ্ট শর্ত পূর্ণ না হওয়া বা নির্দিষ্ট সংখ্যক বার একটি ব্লক কোড রান করানোর জন্য ব্যবহৃত হয়। এই দুটি স্টেটমেন্টের মধ্যে প্রধান পার্থক্য হল, একটিতে শর্তের উপর ভিত্তি করে লুপ চালানো হয় এবং অন্যটিতে নির্দিষ্ট সংখ্যক বার লুপ চালানো হয়।
১. PERFORM UNTIL (শর্ত অনুযায়ী লুপ)
PERFORM UNTIL একটি লুপ স্টেটমেন্ট যা তখন পর্যন্ত চলতে থাকে যতক্ষণ না নির্দিষ্ট শর্ত পূর্ণ হয়। এটি মূলত ব্যবহার করা হয় যখন লুপের জন্য একটি শর্ত থাকতে হয়, যা লুপ বন্ধ করার জন্য সত্য (True) হতে হবে।
Syntax:
PERFORM statement UNTIL conditionstatement: যেকোনো COBOL কমান্ড বা ব্লক।condition: সেই শর্ত যা পূর্ণ না হওয়া পর্যন্ত লুপ চলতে থাকবে।
উদাহরণ:
01 COUNTER PIC 99 VALUE 1.
PROCEDURE DIVISION.
PERFORM UNTIL COUNTER > 5
DISPLAY 'Counter value: ' COUNTER
ADD 1 TO COUNTER
END-PERFORM.
STOP RUN.ব্যাখ্যা:
- এই উদাহরণে
COUNTERএর মান ১ থেকে শুরু হয়ে ৫ পর্যন্ত বৃদ্ধি পাবে এবং প্রতি লুপে তার মান প্রদর্শন হবে। PERFORM UNTIL COUNTER > 5এর মানে হলো, যতক্ষণ নাCOUNTERএর মান ৫ এর বেশি হয়, ততক্ষণ লুপ চলতে থাকবে।- লুপ চলাকালীন প্রতি চক্রে
COUNTERএর মান ১ করে বাড়ানো হবে।
২. PERFORM TIMES (নির্দিষ্ট সংখ্যক বার লুপ)
PERFORM TIMES একটি লুপ স্টেটমেন্ট যা নির্দিষ্ট সংখ্যক বার একটি কোড ব্লক চালানোর জন্য ব্যবহৃত হয়। এটি সাধারণত সেই পরিস্থিতিতে ব্যবহৃত হয় যখন আপনাকে একটি নির্দিষ্ট সংখ্যা জানিয়ে লুপ চালাতে হয়।
Syntax:
PERFORM statement TIMES numberstatement: যেকোনো COBOL কমান্ড বা ব্লক।number: লুপ কতবার চলবে তার সংখ্যা।
উদাহরণ:
01 COUNTER PIC 99 VALUE 1.
PROCEDURE DIVISION.
PERFORM 5 TIMES
DISPLAY 'Counter value: ' COUNTER
ADD 1 TO COUNTER
END-PERFORM.
STOP RUN.ব্যাখ্যা:
- এই উদাহরণে
COUNTER৫ বার প্রদর্শিত হবে, এবং প্রতি বার লুপে তার মান ১ করে বাড়ানো হবে। PERFORM 5 TIMESএর মানে হলো, কোডটি ৫ বার চলবে।
৩. PERFORM UNTIL এবং PERFORM TIMES এর মধ্যে পার্থক্য
| বৈশিষ্ট্য | PERFORM UNTIL | PERFORM TIMES |
|---|---|---|
| ব্যবহার | শর্ত অনুযায়ী লুপ চালানো | নির্দিষ্ট সংখ্যক বার লুপ চালানো |
| শর্ত | লুপ চলতে থাকবে যতক্ষণ না শর্ত পূর্ণ হয় | লুপ নির্দিষ্ট সংখ্যক বার চলবে |
| শেষ হওয়া | যখন শর্ত পূর্ণ হয় তখন লুপ বন্ধ হবে | নির্দিষ্ট সংখ্যক বার লুপ চলবে, তারপর বন্ধ হবে |
| প্রধান উদাহরণ | PERFORM UNTIL COUNTER > 5 | PERFORM 5 TIMES |
৪. PERFORM UNTIL এবং PERFORM TIMES এর আরও উদাহরণ
PERFORM UNTIL উদাহরণ:
01 NUMBER PIC 99 VALUE 0.
PROCEDURE DIVISION.
PERFORM UNTIL NUMBER = 10
ADD 1 TO NUMBER
DISPLAY 'Number is: ' NUMBER
END-PERFORM.
STOP RUN.ব্যাখ্যা:
- এই উদাহরণে,
NUMBER১০ এর সমান হওয়া পর্যন্ত লুপ চলবে এবং প্রতি বার ১ করে বাড়ানো হবে। একবারNUMBER১০ এ পৌঁছালে লুপ বন্ধ হবে।
PERFORM TIMES উদাহরণ:
01 VALUE PIC 99 VALUE 1.
PROCEDURE DIVISION.
PERFORM 3 TIMES
DISPLAY 'Value is: ' VALUE
ADD 2 TO VALUE
END-PERFORM.
STOP RUN.ব্যাখ্যা:
- এখানে,
VALUE৩ বার প্রদর্শিত হবে এবং প্রতি বারVALUEএর মান ২ করে বাড়ানো হবে।
সারসংক্ষেপ
PERFORM UNTIL: শর্ত অনুযায়ী লুপ চালাতে ব্যবহার করা হয়। শর্তটি পূর্ণ না হওয়া পর্যন্ত লুপ চালাতে থাকে।PERFORM TIMES: নির্দিষ্ট সংখ্যক বার লুপ চালাতে ব্যবহার করা হয়।
এই দুটি কমান্ড লুপিং লজিককে আরও উন্নত এবং নমনীয় করতে সাহায্য করে, যা কোডের কার্যকারিতা বাড়ায়।
Nested Loops এবং Iteration Techniques
Nested loops এবং Iteration techniques প্রোগ্রামিং ভাষায় একটি বা একাধিক লুপের ভিতরে আরেকটি লুপ ব্যবহার করার জন্য ব্যবহৃত হয়। এটি প্রোগ্রামে একাধিক পদক্ষেপ বা কার্যাবলি একে অপরের সাথে সম্পর্কিত হওয়ার জন্য উপকারী হয়। COBOL প্রোগ্রামিং ভাষায় nested loops এবং iteration techniques কোডের কার্যকারিতা এবং পুনরাবৃত্তি (repetition) কাজ সহজ করে তোলে।
১. Nested Loops
Nested loops হল এমন লুপ যেখানে এক লুপের ভিতরে অন্য একটি লুপ থাকে। এতে, বাইরের লুপ একবার রান হওয়ার পর ভিতরের লুপ পুনরায় তার সমস্ত ইটারেশন (iteration) সম্পন্ন করে। এই ধরনের লুপ প্রয়োজনীয় যখন আপনার একাধিক ভিন্ন শর্ত বা সেগমেন্টের উপর একাধিক বার কাজ করতে হয়।
১.১ Nested Loops এর গঠন
PERFORM VARYING index1 FROM 1 BY 1 UNTIL index1 > 5
PERFORM VARYING index2 FROM 1 BY 1 UNTIL index2 > 3
DISPLAY "index1 = " index1 " , index2 = " index2
END-PERFORM
END-PERFORMএখানে, বাইরের লুপ index1 এর মান ১ থেকে ৫ পর্যন্ত বাড়াচ্ছে এবং ভিতরের লুপ index2 এর মান ১ থেকে ৩ পর্যন্ত বাড়াচ্ছে। ভিতরের লুপ প্রতিবার বাইরের লুপের এক ইটারেশন সম্পন্ন হওয়ার পরে শুরু হবে। এই ধরনের লুপ ব্যবহার করা হয় যখন বিভিন্ন শর্তের উপর একাধিক বার কাজ করতে হয়।
১.২ Nested Loops এর উদাহরণ
ধরা যাক, একটি ম্যাট্রিক্সের সব এলিমেন্ট প্রিন্ট করতে চাই:
01 matrix.
05 row OCCURS 5 TIMES.
10 column OCCURS 3 TIMES PIC 9(3).
MOVE 1 TO matrix (1, 1)
MOVE 2 TO matrix (1, 2)
MOVE 3 TO matrix (1, 3)
MOVE 4 TO matrix (2, 1)
MOVE 5 TO matrix (2, 2)
MOVE 6 TO matrix (2, 3)
PERFORM VARYING i FROM 1 BY 1 UNTIL i > 5
PERFORM VARYING j FROM 1 BY 1 UNTIL j > 3
DISPLAY "matrix (" i "," j ") = " matrix (i, j)
END-PERFORM
END-PERFORMএখানে, ৫টি সারি এবং ৩টি কলামের ম্যাট্রিক্স তৈরি করা হয়েছে এবং প্রতিটি এলিমেন্টকে প্রিন্ট করা হচ্ছে। বাইরের লুপ সারির উপর কাজ করে, এবং ভিতরের লুপ কলামের উপর কাজ করে।
২. Iteration Techniques
Iteration techniques হল সেই কৌশল যা একটি নির্দিষ্ট কাজ পুনরায় একাধিক বার সম্পাদন করতে ব্যবহৃত হয়। কোডে বার বার একই কাজ করার জন্য loops (যেমন: FOR, WHILE, DO WHILE) ব্যবহার করা হয়। COBOL-এ বিভিন্ন ধরনের iteration techniques ব্যবহার করা যায়, যেমন:
২.১ VARYING Statement ব্যবহার করা
COBOL এ VARYING স্টেটমেন্ট লুপের পরিবর্তনশীল ইনডেক্স চালানোর জন্য ব্যবহৃত হয়। এটি প্রোগ্রামের একটি বা একাধিক মান পরিবর্তন করার জন্য সহায়ক।
PERFORM VARYING index FROM 1 BY 1 UNTIL index > 5
DISPLAY "Index = " index
END-PERFORMএটি ১ থেকে ৫ পর্যন্ত index এর মান পরিবর্তন করে এবং প্রতি পদক্ষেপে প্রদর্শন করে।
২.২ PERFORM Statement ব্যবহার করা
COBOL এ PERFORM স্টেটমেন্ট দিয়ে কোনও একাধিক কাজ পুনরায় চালানো যায়। এটি একটি বিশেষভাবে নির্ধারিত কাজের পুনরাবৃত্তি করার জন্য ব্যবহৃত হয়।
PERFORM TASK-1
PERFORM TASK-2
PERFORM TASK-3এখানে, TASK-1, TASK-2, এবং TASK-3 নামে তিনটি পৃথক কাজ একে একে সম্পন্ন হবে।
২.৩ WHILE Loop
WHILE লুপ ব্যবহৃত হয় যখন শর্ত মেটানো না হওয়া পর্যন্ত কোড চলতে থাকে। COBOL-এ PERFORM UNTIL এর মাধ্যমে একটি WHILE লুপের মতো কাজ করা সম্ভব।
PERFORM UNTIL counter > 5
DISPLAY "Counter = " counter
ADD 1 TO counter
END-PERFORMএখানে, counter এর মান ৫ এর বেশি না হওয়া পর্যন্ত PERFORM লুপ চলতে থাকবে এবং প্রতি ইটারেশনে counter এর মান বাড়ানো হবে।
৩. Iteration Techniques এর সুবিধা
- কোডের পুনরাবৃত্তি: একাধিক কাজ বা শর্তের উপর একাধিক বার কোড চালানো সহজ হয়।
- কোডের পাঠযোগ্যতা: Nested loops এবং iteration techniques কোডের পাঠযোগ্যতা এবং পরিষ্কারতা বৃদ্ধি করে।
- বড় ডেটা প্রক্রিয়াকরণ: বড় ডেটাসেট বা ম্যাট্রিক্সের উপরে কাজ করার জন্য এটি অত্যন্ত কার্যকরী।
সারসংক্ষেপ
Nested Loops এবং Iteration Techniques COBOL প্রোগ্রামিং ভাষায় গুরুত্বপূর্ণ কন্ট্রোল স্ট্রাকচার যা প্রোগ্রামের কার্যকরিতা বৃদ্ধি করে এবং একাধিক শর্তের উপর কাজ করার সুবিধা দেয়। Nested loops বিভিন্ন লুপের মধ্যে একাধিক ইটারেশন সম্পাদন করতে ব্যবহৃত হয়, এবং iteration techniques লুপের মাধ্যমে কোডের পুনরাবৃত্তি সক্ষম করে। এই কৌশলগুলি বড় এবং জটিল প্রোগ্রামে কার্যকারিতা এবং দক্ষতা বাড়ানোর জন্য অপরিহার্য।
COBOL এ Recursion এর ব্যবহার
Recursion হল একটি প্রোগ্রামিং কৌশল যেখানে একটি ফাংশন বা সাবরুটিন নিজেকে পুনরায় কল করে নির্দিষ্ট শর্তে পৌঁছানো পর্যন্ত। যদিও COBOL একটি পদ্ধতিগত ভাষা এবং সাধারণত পুনরাবৃত্তি (iteration) ব্যবহার করে থাকে, তবে recursion কিছু বিশেষ ক্ষেত্রে ব্যবহার করা যায়। COBOL এ recursion ব্যবহার করার জন্য বিশেষ কিছু কৌশল রয়েছে, যেগুলি মূলত PERFORM এবং CALL স্টেটমেন্টের মাধ্যমে প্রয়োগ করা হয়।
COBOL ভাষায় recursion ব্যবহারের জন্য কোনও সরাসরি ভাষাগত সমর্থন নেই, তবে নির্দিষ্ট লজিকের মাধ্যমে এটি অর্জন করা সম্ভব। সাধারণত PERFORM স্টেটমেন্টের মাধ্যমে নিজেকে পুনরায় কল করা হয়।
COBOL এ Recursion এর উদাহরণ
একটি সাধারণ উদাহরণ দেয়া হলো যেখানে ফ্যাক্টরিয়াল (Factorial) গণনা করতে recursion ব্যবহার করা হয়েছে।
উদাহরণ: ফ্যাক্টরিয়াল গণনা
ফ্যাক্টরিয়াল গণনা করার জন্য Recursion ব্যবহার করা হয়েছে, যেখানে একটি সংখ্যা (N) এর জন্য N! = N * (N-1) * (N-2) * ... * 1।
IDENTIFICATION DIVISION.
PROGRAM-ID. FactorialRecursion.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 NUM PIC 9(3) VALUE 5.
01 RESULT PIC 9(18) VALUE 1.
PROCEDURE DIVISION.
CALL 'Factorial' USING NUM RESULT.
DISPLAY 'Factorial of ' NUM ' is ' RESULT.
STOP RUN.
FACTORIAL SECTION.
PROCEDURE DIVISION.
FACTORIAL.
IF NUM = 1
EXIT
END-IF
MULTIPLY NUM BY RESULT GIVING RESULT.
SUBTRACT 1 FROM NUM GIVING NUM.
CALL 'Factorial' USING NUM RESULT.
EXIT.ব্যাখ্যা:
- DATA DIVISION: এখানে
NUMএবংRESULTনামক দুইটি ডেটা আইটেম ডিফাইন করা হয়েছে।- NUM: এটি মূল ইনপুট, যার ফ্যাক্টরিয়াল আমরা গণনা করতে চাই।
- RESULT: এটি ফ্যাক্টরিয়ালের মান ধারণ করে।
- CALL:
Factorialনামে একটি সাবরুটিন কল করা হয়েছে। এখানে ফ্যাক্টরিয়াল গণনা করতে NUM এবং RESULT প্যারামিটার হিসেবে পাঠানো হচ্ছে। - FACTORIAL SECTION: এখানে ফ্যাক্টরিয়াল গণনা করার জন্য একটি
FACTORIALসাবরুটিন তৈরি করা হয়েছে, যা নিজেকে পুনরায় কল করে কাজটি সম্পন্ন করে।
COBOL এ Recursion ব্যবহারের সীমাবদ্ধতা
COBOL-এর Recursion বেশ সীমিত এবং এটি কিছু সমস্যা সৃষ্টি করতে পারে:
- Stack Overflow: COBOL-এ recursion অত্যধিকভাবে ব্যবহৃত হলে স্ট্যাকওভারফ্লো সমস্যা দেখা দিতে পারে, কারণ COBOL এ স্ট্যাক সীমাবদ্ধ।
- Performance: Recursion অধিক ব্যবহারে কার্যকর না হতে পারে, কারণ COBOL সাধারণত লুপিং বা পুনরাবৃত্তি ব্যবহারে আরও দক্ষ।
- Complexity: Recursion অনেক সময় প্রোগ্রামের জটিলতা বাড়াতে পারে, যা উন্নত ডিবাগিং এবং মেইনটেনেন্সে সমস্যা সৃষ্টি করতে পারে।
Recursion এর বিকল্প (Iteration)
COBOL এ Recursion সাধারণত PERFORM স্টেটমেন্টের মাধ্যমে iteration এর মতো কাজ করতে পারে, এবং এটি প্রোগ্রামের কার্যকারিতা ও স্ট্যাক ব্যবহারের দিক থেকে আরও নিরাপদ। অনেক সময় recursion এর পরিবর্তে PERFORM UNTIL বা PERFORM VARYING ব্যবহার করে পুনরাবৃত্তি করা হয়।
উদাহরণ: ফ্যাক্টরিয়াল গণনা (Iteration)
IDENTIFICATION DIVISION.
PROGRAM-ID. FactorialIteration.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 NUM PIC 9(3) VALUE 5.
01 RESULT PIC 9(18) VALUE 1.
01 I PIC 9(3) VALUE 1.
PROCEDURE DIVISION.
PERFORM VARYING I FROM 1 BY 1 UNTIL I > NUM
MULTIPLY RESULT BY I GIVING RESULT
END-PERFORM.
DISPLAY 'Factorial of ' NUM ' is ' RESULT.
STOP RUN.ব্যাখ্যা:
- এখানে PERFORM VARYING ব্যবহার করা হয়েছে, যা I নামক ভেরিয়েবলের মাধ্যমে পুনরাবৃত্তি (iteration) করে ফ্যাক্টরিয়াল গণনা করবে। NUM এর মান অনুযায়ী I একে একে গুণ করে RESULT এ সংযুক্ত করবে।
সারসংক্ষেপ
COBOL ভাষায় Recursion সাধারণত কিছু নির্দিষ্ট পরিস্থিতিতে এবং PERFORM স্টেটমেন্টের মাধ্যমে প্রয়োগ করা যেতে পারে, তবে এটি খুব বেশি ব্যবহৃত হয় না। COBOL প্রোগ্রামিংয়ে সাধারণত iteration বা looping কৌশলগুলো বেশি কার্যকরী এবং নিরাপদ। Recursion ব্যবহারের ক্ষেত্রে সতর্ক থাকা উচিত, কারণ এটি স্ট্যাক ব্যবহারের সমস্যা এবং পারফরম্যান্সে নেতিবাচক প্রভাব ফেলতে পারে।
Read more