LISP প্রোগ্রামিং ভাষায় looping constructs (লুপিং কনস্ট্রাক্টস) বা লুপিং পদ্ধতিগুলি কোডের পুনরাবৃত্তি কার্য সম্পাদনের জন্য ব্যবহৃত হয়। লুপিং প্রোগ্রামিংয়ের একটি গুরুত্বপূর্ণ দিক যা একটি নির্দিষ্ট শর্ত পূর্ণ না হওয়া পর্যন্ত একাধিক বার একটি কোড এক্সপ্রেশন সম্পাদন করে। LISP এ কয়েকটি ভিন্ন ধরনের লুপিং কনস্ট্রাক্ট রয়েছে: loop, do, dolist, এবং dotimes। এই কনস্ট্রাক্টগুলো বিভিন্ন পরিস্থিতিতে ব্যবহার করা যায় এবং এগুলির মধ্যে কিছু মৌলিক পার্থক্য রয়েছে।
১. loop
LISP এর loop কনস্ট্রাক্ট একটি শক্তিশালী এবং বহুমুখী লুপিং কনস্ট্রাক্ট যা অনেক ধরনের পুনরাবৃত্তিমূলক কার্য সম্পাদন করতে পারে। এটি LISP Common Lisp তে একটি বিশেষ বৈশিষ্ট্য এবং একটি কাস্টমাইজেবল লুপ কনস্ট্রাক্ট।
উদাহরণ:
(loop for i from 1 to 5 do (print i))এটি ১ থেকে ৫ পর্যন্ত সংখ্যা প্রিন্ট করবে।
বৈশিষ্ট্য:
- কাস্টমাইজেবল শর্ত: আপনি
loopকনস্ট্রাক্টের ভিতরে বিভিন্ন শর্ত সেট করতে পারেন, যেমন সংখ্যা প্রক্রিয়া, আউটপুট রিটার্ন করা, ইত্যাদি। সংগ্রহযোগ্য ফলাফল:
loopবিভিন্ন ধরনের ফলাফলও রিটার্ন করতে পারে। উদাহরণস্বরূপ, একটি লিস্ট তৈরি করা:(loop for i from 1 to 5 collect (* i i)) ; আউটপুট: (1 4 9 16 25)Multiple actions: একাধিক অ্যাকশন একসাথে করা যায়, যেমন:
(loop for i from 1 to 5 do (print i) (if (evenp i) (print "Even")) (if (oddp i) (print "Odd")))
২. do
LISP এর do কনস্ট্রাক্ট একটি সাধারণ লুপিং কনস্ট্রাক্ট, যা একটি নির্দিষ্ট শর্ত পূর্ণ না হওয়া পর্যন্ত কোড এক্সিকিউট করে। এটি সাধারণত ব্যবহার করা হয় যখন আপনার লুপের ভেরিয়েবলগুলির মান আপডেট করতে চান বা একাধিক শর্ত/এক্সপ্রেশন পরিচালনা করতে চান।
উদাহরণ:
(do ((i 1 (+ i 1))) ; i এর মান শুরু হবে 1 থেকে, প্রতিবার 1 করে বাড়বে
((> i 5)) ; শর্ত, যখন i 5 এর বেশি হবে, লুপ বন্ধ হবে
(print i)) ; প্রতি ইটারেশনেই i প্রিন্ট হবেএটি ১ থেকে ৫ পর্যন্ত সংখ্যাগুলি প্রিন্ট করবে।
বৈশিষ্ট্য:
Multiple variable bindings:
doকনস্ট্রাক্টের ভিতরে একাধিক ভেরিয়েবলও প্রক্রিয়া করা যেতে পারে।(do ((x 0 (+ x 1)) (y 0 (+ y 2))) ; দুটি ভেরিয়েবল x এবং y ((> x 5)) ; শর্ত (print (list x y))) ; x এবং y এর মান প্রিন্ট করা- Exit condition:
doকনস্ট্রাক্টে শর্ত দিয়েই লুপটি শেষ করা যায়, যেমন((> i 5))।
৩. dolist
LISP এর dolist কনস্ট্রাক্ট সাধারণত একটি লিস্টের উপর লুপ চালানোর জন্য ব্যবহৃত হয়। এটি খুবই সহজ এবং সোজা, যেখানে আপনি একটি লিস্টের প্রতিটি উপাদান নিয়ে কাজ করতে পারেন।
উদাহরণ:
(dolist (item '(1 2 3 4 5)) ; একটি লিস্ট থেকে প্রতিটি উপাদান
(print item)) ; প্রতি উপাদান প্রিন্ট করা হবেএটি ১, ২, ৩, ৪, ৫ একে একে প্রিন্ট করবে।
বৈশিষ্ট্য:
- List iteration:
dolistশুধুমাত্র লিস্টের উপর কাজ করে। - Implicit loop termination: এটি স্বয়ংক্রিয়ভাবে লুপটির শেষ হয়ে যায় যখন লিস্টের সমস্ত উপাদান প্রক্রিয়া হয়ে যায়।
৪. dotimes
LISP এর dotimes কনস্ট্রাক্ট একটি নির্দিষ্ট সংখ্যক পুনরাবৃত্তি করতে ব্যবহৃত হয়, যেহেতু এটি নির্দিষ্ট সংখ্যক বার লুপ চালায়। এটি সাধারণত সংখ্যা ভিত্তিক পুনরাবৃত্তি ক্ষেত্রে ব্যবহৃত হয়, যেখানে আপনি একটি লুপ একটি নির্দিষ্ট সংখ্যা পর্যন্ত চালাতে চান।
উদাহরণ:
(dotimes (i 5) ; i ৫ বার ইটারেট করবে
(print i)) ; প্রতি ইটারেশনে i প্রিন্ট হবেএটি ০ থেকে ৪ পর্যন্ত সংখ্যা প্রিন্ট করবে।
বৈশিষ্ট্য:
- Fixed iterations:
dotimesএকটি নির্দিষ্ট সংখ্যক পুনরাবৃত্তি করার জন্য ব্যবহৃত হয়, যা লুপটি কতবার চলবে তা নির্ধারণ করে।
সারসংক্ষেপ
| কনস্ট্রাক্ট | বৈশিষ্ট্য | উদাহরণ |
|---|---|---|
| loop | বহুমুখী, শর্ত কাস্টমাইজেবল, ফলাফল সংগ্রহ করা যায় | (loop for i from 1 to 5 do (print i)) |
| do | নির্দিষ্ট শর্ত পূর্ণ না হওয়া পর্যন্ত চলতে থাকে, একাধিক ভেরিয়েবল | (do ((i 1 (+ i 1))) ((> i 5)) (print i)) |
| dolist | লিস্টের উপর লুপ চালানোর জন্য ব্যবহৃত | (dolist (item '(1 2 3)) (print item)) |
| dotimes | নির্দিষ্ট সংখ্যক বার লুপ চালানোর জন্য ব্যবহৃত | (dotimes (i 5) (print i)) |
লুপিং কনস্ট্রাক্টগুলো LISP এর ভিতরে বিভিন্ন কাজের জন্য উপযোগী এবং একেকটি কনস্ট্রাক্ট একেক ধরনের লজিকাল কাজের জন্য সবচেয়ে বেশি কার্যকরী।
Read more