return, return-from এবং catch-throw

Control Flow Statements (নিয়ন্ত্রণ প্রবাহ স্টেটমেন্টস) - লিস্প (LISP) - Computer Programming

280

LISP প্রোগ্রামিং ভাষায় return, return-from, এবং catch-throw হল নিয়ন্ত্রণ ফ্লো এবং ফাংশন থেকে মান ফেরত দেওয়ার জন্য ব্যবহৃত কনস্ট্রাক্ট। এগুলি ফাংশন বা প্রোগ্রামের নির্দিষ্ট অংশে কার্যক্রম নিয়ন্ত্রণ এবং ফলাফল ফেরত দেওয়ার জন্য অত্যন্ত গুরুত্বপূর্ণ। এখানে আমরা প্রতিটি কনস্ট্রাক্টের বিস্তারিত ব্যবহার এবং পার্থক্য আলোচনা করব।


১. return (ফাংশন থেকে ফলাফল ফেরত)

return সাধারণত একটি নির্দিষ্ট মান একটি ফাংশন থেকে ফেরত দেওয়ার জন্য ব্যবহৃত হয়। এটি শুধুমাত্র block ফাংশন বা tagbody ব্লকের মধ্যে কাজ করে। return ব্যবহৃত হলে, এটি প্রোগ্রামের নির্দিষ্ট অংশে execution বন্ধ করে এবং মান ফেরত পাঠায়।

ব্যবহারের ধরন:

(return value)

উদাহরণ:

(defun test-return ()
  (return 10))

এখানে:

  • test-return ফাংশনটি যখন কল করা হবে, তখন এটি ১০ ফেরত দেবে এবং এর execution শেষ হবে।

বিভিন্ন ক্ষেত্রে return ব্যবহার:

  • এটি সাধারণত block বা tagbody এর মধ্যে ব্যবহার করা হয়।

২. return-from (নির্দিষ্ট ফাংশন থেকে ফলাফল ফেরত)

return-from একটি নির্দিষ্ট ফাংশন থেকে মান ফেরত দেয়। এটি ফাংশনটির নামের পর ব্যবহার করা হয় এবং আপনি যেই ফাংশন থেকে মান ফেরত দিতে চান সেটির নাম উল্লেখ করতে হয়। এর সাহায্যে আপনি যেকোনো ফাংশন থেকে সহজেই এক্সিট করতে পারেন এবং একটি নির্দিষ্ট মান ফেরত দিতে পারেন।

ব্যবহারের ধরন:

(return-from function-name value)

উদাহরণ:

(defun my-function ()
  (return-from my-function 42))

এখানে:

  • return-from my-function থেকে ৪২ ফেরত দেবে এবং এর execution শেষ হবে।

ফাংশন থেকে সরাসরি ফলাফল ফেরত দেওয়ার জন্য return-from খুবই কার্যকরী।


৩. catch এবং throw (এক্সেপশন হ্যান্ডলিং)

catch এবং throw LISP-এ এক্সেপশন হ্যান্ডলিং বা নিয়ন্ত্রণ প্রবাহ পরিচালনার জন্য ব্যবহৃত হয়। catch একটি নির্দিষ্ট পয়েন্ট তৈরি করে, যেখানে throw দ্বারা নিয়ন্ত্রিত প্রবাহ ফিরে যেতে পারে। এই কনস্ট্রাক্টগুলো প্রোগ্রামের নিয়ন্ত্রণ বা execution প্রবাহকে এক জায়গা থেকে অন্য জায়গায় স্থানান্তরিত করতে সাহায্য করে, যা বিশেষ পরিস্থিতিতে কার্যকরী।

  • catch একটি ব্লক তৈরি করে, যেখানে আপনি throw দিয়ে ডেটা পাঠাতে পারেন।
  • throw একটি বিশেষ মান একটি নির্দিষ্ট পয়েন্টে (যেখানে catch আছে) পাঠায় এবং execution বন্ধ করে।

ব্যবহারের ধরন:

(catch tag
  ;; Some code
  (throw tag value))

উদাহরণ:

(defun test-catch-throw ()
  (catch 'my-tag
    (throw 'my-tag "Hello, World!")))

এখানে:

  • catch একটি my-tag তৈরি করছে।
  • throw my-tag কে ফেরত পাঠাচ্ছে এবং "Hello, World!" মানটি catch ব্লকে পৌঁছাবে।

catch এবং throw ব্যবহারের মূল উদ্দেশ্য:

  • আপনি যখন একটি নির্দিষ্ট কন্ডিশনে throw করেন, তখন তা কেবলমাত্র catch এর মাধ্যমে পাওয়া যাবে।
  • এটি এক্সেপশন হ্যান্ডলিংয়ের মতো কাজ করে, তবে এটি সাধারণত বিশেষ কার্যক্রম বা ভিন্ন প্রবাহে যাওয়ার জন্য ব্যবহৃত হয়।

পার্থক্য

কনস্ট্রাক্টব্যবহারের ধরনমন্তব্য
returnসাধারণত block বা tagbody এর মধ্যে ব্যবহৃত হয়। ফাংশন থেকে মান ফেরত দেয়।return সাধারণত block বা tagbody এর মধ্যে কাজ করে।
return-fromএকটি নির্দিষ্ট ফাংশন থেকে মান ফেরত দেয়। ফাংশনের নাম স্পেসিফাই করতে হয়।এটি একটি নির্দিষ্ট ফাংশন থেকে ফলাফল ফেরত দেয়।
catchএকটি নির্দিষ্ট পয়েন্ট তৈরি করে, যেখানে throw এর মাধ্যমে মান পাঠানো যায়।এটি একটি ব্লক তৈরি করে, যেখানে throw মান পাঠায়।
throwcatch দ্বারা পরিচালিত ব্লকে মান পাঠায় এবং প্রোগ্রামের নিয়ন্ত্রণ ফিরিয়ে আনে।এটি কার্যক্রমের প্রবাহ পরিবর্তন করে এবং নির্দিষ্ট পয়েন্টে ফিরিয়ে দেয়।

সারসংক্ষেপ

  • return একটি ফাংশন বা ব্লক থেকে মান ফেরত দিতে ব্যবহৃত হয়।
  • return-from একটি নির্দিষ্ট ফাংশন থেকে মান ফেরত দেয়।
  • catch এবং throw ব্যবহৃত হয় এক্সেপশন হ্যান্ডলিংয়ের মতো এবং প্রোগ্রামের নিয়ন্ত্রণ প্রবাহকে এক পয়েন্ট থেকে অন্য পয়েন্টে স্থানান্তরিত করতে ব্যবহৃত হয়।

এই কনস্ট্রাক্টগুলি LISP এ কোডের নিয়ন্ত্রণ, প্রবাহ এবং ফাংশনাল কার্যকারিতা পরিচালনার জন্য অত্যন্ত গুরুত্বপূর্ণ।

Content added By
Promotion

Are you sure to start over?

Loading...