স্কিপ করে মূল কন্টেন্ট এ যান

ফাংশন এবং ভ্যারিয়েবল

পরিচিতি

Wave প্রোগ্রামিং ভাষার মূল নকশার চারিত্র্য হল নিম্নমোখী পারফরম্যান্স এবং উচ্চমুখী বিমূর্ততার মাঝে সামঞ্জস্য রেখে কার্যকারী এবং নমনীয় সফটওয়্যার উন্মোচন পরিবেশ প্রদান করা। এই বিভাগে, সবচেয়ে মূল Wave প্রোগ্রাম গঠনের উপাদানসহ ফাংশন এবং ভেরিয়েবলের পরিচিতি দেওয়া হয়েছে।

ফাংশন হল কার্যকলাপ ও প্রোগ্রামের যুক্তি গঠনের প্রয়োজনীয় একক, আর ভেরিয়েবল প্রয়োজনীয় তথ্য সংরক্ষণ এবং নিয়ন্ত্রণ করার কার্য সম্পন্ন করে। ফাংশন ও ভেরিয়েবলে রহিত করার পদ্ধতি এবং ব্যবহার সঠিকভাবে বুঝলে, Wave ভাষার রচনা এবং নকশার অভিপ্রায় আরও গভীরভাবে ব্যবহার করা যায়।


ফাংশন

Wave-এ ফাংশন এমন পুনঃব্যবহারযোগ্য কোড ব্লক যা স্বাধীনভাবে চালানো যায়। নির্দিষ্ট কাজ বা গণনা একেক এককে জিষ্টিয়ে প্রকাশ করা যায়, এবং প্রোগ্রামের ভেতর প্রয়োজনমতো ডাকা যায়।

ফাংশন ব্যবহারে পুনরাবৃত্ত কোড কমানো যায়, এবং প্রোগ্রামকে আরও যুক্তিসঙ্গতভাবে পৃথক করে গৌণতা ও রক্ষণাবেক্ষণতা বাড়ানো যায়। আবার, গণনা ক্রিয়া, ইনপুট-আউটপুট ব্যবস্থাপনা, বিরোধের বিভাজন সহ বিভিন্ন উদ্দেশ্যের জন্য ব্যবহার করা যেতে পারে।

Wave-এ ফাংশন fun কীওয়ার্ড দিয়ে ঘোষিত হয় এবং ফাংশনের নাম, প্যারামিটার তালিকা এবং মধ্যম বন্ধন {} দিয়ে পরিবৃত ফাংশনের দেহ দিয়ে গঠিত হয়।

ফাংশন সংজ্ঞায়িত করা

Wave-এ ফাংশনের সবচেয়ে মৌলিক নির্ধারণী আকার নিম্নরূপ।

fun main() {
// এখানে আপনার কোড লিখুন
}

main ফাংশন হল প্রোগ্রামের এক্সিকিউশনের পয়েন্ট অফ এন্ট্রি এবং Wave প্রোগ্রামে অবশ্যই একটি main ফাংশন থাকতে হবে। প্রোগ্রাম এই ফাংশনের মাধ্যমে এক্সিকিউশন আরম্ভ করে।

ফাংশন প্রয়োজনের কারণে প্যারামিটার থাকতে পারে এবং ডাকের মাধ্যমে গণনা ফলাফল অথবা মান ফিরে পাঠাতে পারে। ফাংশন থেকে কোনো ভ্যালু রিটার্ন হলে, সংশ্লিষ্ট ডিক্লেয়ারেশন ব্লকে ভ্যালু টাইপ নির্দিষ্ট করতে হয়।

উদাহরণ: সহজ ফাংশন

নিচের উদাহরণে, দুইটি পূর্ণসংখ্যা গ্রহণ করে ও তাদের যোগফল ফেরত দেয় এমন একটি সাধারণ ফাংশন দেওয়া হয়েছে।

fun add(a :i32, b :i32) -> i32 {
return a + b;
}

fun main() {
var result = add(5, 7); // ফাংশন কল যোগ করুন
println(result); // আউটপুট: 12
}

এই উদাহরণে add ফাংশন দুটি পূর্ণসংখ্যা প্যারামিটার ab গ্রহণ করে যোগফল রিটার্ন করে। main ফাংশনে add ফাংশন কল করা হয়। রিটার্ন ভ্যালু ভ্যারিয়েবলে সংরক্ষিত হয় ও আউটপুট প্রদর্শন হয়।

এইভাবে, ফাংশন বিশেষ ক্রিয়াগুলোকে ক্যাপসুলেট করে এবং প্রোগ্রামের অনেক অংশে পুনঃব্যবহারের সুবিধা দেয়।

চলক

চলকগুলি প্রোগ্রামের মধ্যে ডেটা সংরক্ষণ ও পরিচালনা করতে ব্যবহৃত হয়। Wave-এ ভ্যারিয়েবল ডিক্লেয়ারেশনের সময় পরিবর্তনশীল ও অপরিবর্তনশীল পরিবর্তনশীলগুলোকে স্পষ্টভাবে বিভাজন করে, যাতে কোড স্তরে কোনো তথ্য পরিবর্তনের অভিপ্রায় প্রকাশ করা যায়।

এটি প্রোগ্রামের অবস্থান পরিবর্তনকে আরও স্পষ্ট করে, এবং অনিচ্ছাকৃত মান পরিবর্তনের কারণে ত্রুটি কমাতে পারে।

পরিবর্তনশীল চলক

Wave-এ ভ্যারিয়েবলগুলি সাধারণভাবে পরিবর্তনশীল হয়। অর্থাৎ, প্রোগ্রাম চালু থাকা অবস্থাতেও একবার ঘোষিত ভ্যালু পরিবর্তন করা যাবে।

পরিবর্তনশীল ভ্যারিয়েবলগুলো var কীওয়ার্ড ব্যবহার করে ডিক্লেয়ার করা হয়ে থাকে।

var x :i32 = 10;
x = 20;

এই কোডে, x প্রাথমিক মান হিসেবে 10 ধারণ করে এবং পরবর্তীতে 20 এ মান পরিবর্তন করা যেতে পারে। এমন ডেটার জন্য যেগুলির অবস্থা পরিবর্তিত হওয়া প্রয়োজন, পরিবর্তনশীল ভ্যারিয়েবল ব্যবহার করা হয়।

অপরিবর্তনীয় চলক

একটি ভ্যারিয়েবলকে অপরিবর্তনীয় (immutable) হিসেবে ঘোষণা করলে, প্রাথমিক মান বরাদ্দ করার পর তা পরিবর্তন করা যাবে না। অপরিবর্তনীয় ভ্যারিয়েবল let কীওয়ার্ড ব্যবহার করে ঘোষণা করা হয়।

let y :i32 = 5;
// y = 10; // ত্রুটি: অপরিবর্তনীয় ভেরিয়েবল তাদের মান পরিবর্তন করতে পারে না।

অপরিবর্তনীয় ভ্যারিয়েবল মানের অ-বদল নিশ্চিত করে, এটি প্রোগ্রামের স্থিতিশীলতা এবং পূর্বানুমান যোগ্যতা উন্নত করতে সহায়ক হয়। যে ধ্রুবক ডেটার মানের কোনো পরিবর্তন প্রয়োজন হয় না তাতে অপরিবর্তনীয় ভ্যারিয়েবল ব্যবহার করার জন্য সুপারিশ করা হয়।

Wave-এ, let কীওয়ার্ডের সাথে mut ব্যবহারের মাধ্যমে, যেভাবে পরিবর্তনশীলতা স্পষ্টভাবে অনুমোদিত হতে পারে।

let mut y :i32 = 5;
y = 10;

ভ্যারিয়েবল let দ্বারা ঘোষণা করা হয়েছে তবে, mut কীওয়ার্ডের মাধ্যমে মান পরিবর্তন অনুমোদিত হয়ে থাকে।

চলক ঘোষণা উদাহরণ

বিভিন্ন প্রকারের পরিবর্তনশীল এবং অপরিবর্তনীয় ভ্যারিয়েবলের ঘোষণার একটি উদাহরণ নীচে দেওয়া হল।

var x :i32 = 10;
let y :f64 = 3.14159;
var name :str = "Wave";
let is_active :bool = true;

এই উদাহরণে, x এবং name পরিবর্তনশীল ভ্যারিয়েবল এবং yis_active অপরিবর্তনীয় ভ্যারিয়েবল। Wave-এ, var এবং let স্পষ্টভাবে পার্থক্য নিশ্চিত করে, কোড স্তরে ডেটা পরিবর্তনযোগ্যতার প্রকাশ করে।

যথাযথভাবে পরিবর্তনশীল এবং অপরিবর্তনীয় ভ্যারিয়েবলকে পৃথক করে ব্যবহার করলে, ডেটার সামঞ্জস্য বজায় রাখা যায় এবং আরো স্থিতিশীল ও পূর্বানুমাণযোগ্য প্রোগ্রাম তৈরি করা সম্ভব হয়।