প্রোগ্রামিংয়ের মৌলিক ধারণা/কল বাই ভ্যালু বনাম কল বাই রেফারেন্স
সংক্ষিপ্ত বিবরণ
[সম্পাদনা]কল বাই ভ্যালুতে, একটি প্যারামিটার ফাংশনের মধ্যে একটি নতুন স্থানীয় চলক হিসেবে কাজ করে যা আর্গুমেন্টের মানের (আর্গুমেন্টের একটি স্থানীয় (বিচ্ছিন্ন) অনুলিপি) সাথে শুরু হয়। কল বাই রেফারেন্সে, কলার দ্বারা সরবরাহ করা আর্গুমেন্ট চলকটি কল করা ফাংশনের মধ্যে ক্রিয়া দ্বারা প্রভাবিত হতে পারে।[১]
আলোচনা
[সম্পাদনা]কল বাই ভ্যালু
[সম্পাদনা]বেশিরভাগ বর্তমান প্রোগ্রামিং ভাষার মধ্যে, প্যারামিটারগুলি ডিফল্টরূপে মান দ্বারা পাস করা হয়, আর্গুমেন্টটি কলিং মানের একটি অনুলিপি হিসাবে থাকে। আর্গুমেন্টগুলি বিচ্ছিন্ন করা হয়, এবং ফাংশনগুলি কলিং ফাংশনের উপর কোনও প্রভাবের ঝুঁকি ছাড়াই প্যারামিটার মানগুলিতে পরিবর্তন করতে স্বাধীন। নিম্নলিখিত pseudocode বিবেচনা করুন:
ফাংশন প্রধান রিয়েল ফারেনহাইট ঘোষণা করুন
ফারেনহাইট বরাদ্দ করুন = 100 আউটপুট "প্রধান ফারেনহাইট = " & ফারেনহাইট কল চেঞ্জ ফারেনহাইট(ফারেনহাইট) আউটপুট "প্রধান ফারেনহাইট = " & ফারেনহাইট শেষ
ফাংশন পরিবর্তন ফারেনহাইট (আসল ফারেনহাইট) আউটপুট "পরিবর্তন ফারেনহাইট ফারেনহাইট = " & ফারেনহাইট ফারেনহাইট বরাদ্দ করুন = 0 আউটপুট "পরিবর্তন ফারেনহাইট ফারেনহাইট = " & ফারেনহাইট শেষ
আউটপুট
[সম্পাদনা]প্রধান ফারেনহাইট = 100 ফারেনহাইট ফারেনহাইট পরিবর্তন করুন = 100 ফারেনহাইট ফারেনহাইট পরিবর্তন করুন = 0 প্রধান ফারেনহাইট = 100
ইংরেজিতে, প্রধান ফাংশনটি 100 মান নির্ধারণ করে ফারেনহাইট ভেরিয়েবলে, সেই মানটি প্রদর্শন করে, এবং তারপর ChangeFahrenheit কল করে সেই মানের একটি কপি পাস করে। কল করা ফাংশনটি আর্গুমেন্ট প্রদর্শন করে, এটি পরিবর্তন করে এবং আবার প্রদর্শন করে। এক্সিকিউশন কলিং ফাংশনে ফিরে আসে এবং Main মূল ভেরিয়েবলের মান প্রদর্শন করে। কল বাই ভ্যালুর মাধ্যমে, কলিং ফাংশনে ভেরিয়েবল ফারেনহাইট এবং কল করা ফাংশনে প্যারামিটার ফারেনহাইট বিভিন্ন মেমোরি অ্যাড্রেসকে নির্দেশ করে এবং কল করা ফাংশনটি কলিং ফাংশনে ভেরিয়েবলের মান পরিবর্তন করতে পারে না।
রেফারেন্স অনুসারে কল
[সম্পাদনা]যদি কোন প্রোগ্রামিং ভাষা রেফারেন্স অনুসারে কল ব্যবহার করে বা সমর্থন করে, তাহলে কলিং ফাংশনের ভেরিয়েবল এবং কল করা ফাংশনের প্যারামিটার একই মেমোরি অ্যাড্রেসকে নির্দেশ করে এবং কল করা ফাংশনটি কলিং ফাংশনের ভেরিয়েবলের মান পরিবর্তন করতে পারে। উপরের কোড উদাহরণ ব্যবহার করে, কল বাই রেফারেন্স আউটপুট নিম্নলিখিতভাবে পরিবর্তিত হবে:
প্রধান ফারেনহাইট = ১০০ পরিবর্তন ফারেনহাইট ফারেনহাইট = ১০০ পরিবর্তন ফারেনহাইট ফারেনহাইট = ০ প্রধান ফারেনহাইট = ০
প্রোগ্রামিং ভাষাগুলি কল বাই ভ্যালু এবং কল বাই রেফারেন্স উভয়কেই সমর্থন করে, কোন প্যারামিটার পাসিং পদ্ধতি ব্যবহার করা হচ্ছে তা নির্দেশ করার জন্য কিছু ধরণের কীওয়ার্ড বা প্রতীক ব্যবহার করে।
| Language | Call By Value | Call By Reference |
|---|---|---|
| C++ | default | called function-এ ¶meter ব্যবহার করুন
|
| C# | default | calling and called function-এ ref parameter ব্যবহার করুন
|
| Java | default | array and object-এ প্রযোজ্য |
| JavaScript | default | array and object-এ প্রযোজ্য |
| Python | default | array (তালিকা) এবং পরিবর্তনযোগ্য বস্তুর ক্ষেত্রে প্রযোজ্য |
Array এবং object-এর পরবর্তী অধ্যায়গুলিতে আলোচনা করা হয়েছে।
মূল শর্তাবলী
[সম্পাদনা]- call by reference
- calling functions দ্বারা পাস করা প্যারামিটার called functions দ্বারা পরিবর্তন করা যেতে পারে।
- call by value
- calling functions দ্বারা পাস করা প্যারামিটার called functions দ্বারা পরিবর্তন করা যাবে না।
