শিক্ষামূলক প্ল্যাটফর্ম

DYNAMIC CAREER IT & EDUCATION CARE

শিক্ষা, পরীক্ষা প্রস্তুতি ও বিষয়ভিত্তিক পাঠের নির্ভরযোগ্য প্ল্যাটফর্ম
আবেদন ফর্ম
80পাঠক 7মিনিট HSC ICT

সর্বশেষ পোস্ট

20টি
বর্তমান

C প্রোগ্রামিংয়ে Variable কি? সহজ বাংলায় C Variable শেখার সম্পূর্ণ গাইড

HSC 7মিনিট পড়া
C প্রোগ্রামিংয়ে Variable কি? সহজ বাংলায় C Variable শেখার সম্পূর্ণ গাইড

C PROGRAMMING LANGUAGE LECTURE SHEET

লেকচার ০০২: ভেরিয়েবল (Variable) ও মেমোরি ধারণা

বিষয়: কম্পিউটার প্রোগ্রামিং | কোর্স: C Programming for Beginners | লেভেল: মৌলিক থেকে উচ্চতর

১. Variable বা চলক কী? (Concept of Variable)

C প্রোগ্রামিংয়ে Variable (ভেরিয়েবল) হলো কম্পিউটারের র‍্যামে (RAM - Random Access Memory) তথ্য বা ডেটা জমা রাখার জন্য বরাদ্দকৃত একটি নির্দিষ্ট মেমোরি লোকেশনের নাম। সহজ কথায়, এটি একটি পাত্র বা কন্টেইনারের মতো কাজ করে, যেখানে নির্দিষ্ট টাইপের তথ্য সংরক্ষণ করে রাখা যায় এবং প্রয়োজনে সেই মান পরিবর্তনও করা যায়।

বাস্তব জীবনের রূপক (Real-life Metaphor):

মনে করুন, আপনার কাছে কয়েকটি আলাদা কাজের বাক্স আছে। একটি বাক্সে আপনি বই রাখলেন এবং বাক্সের গায়ে লিখে দিলেন 'Books'। অন্য একটি বাক্সে জামাকাপড় রেখে লিখলেন 'Clothes'। এখানে বাক্সগুলো হলো কম্পিউটারের মেমোরি, 'Books' বা 'Clothes' নামগুলো হলো Variable, আর বাক্সের ভেতরের জিনিসগুলো হলো Data/Value।

📌 ভেরিয়েবলের মূল উপাদানসমূহ (Key Components)

একটি ভেরিয়েবলের প্রধানত তিনটি অংশ থাকে:
১. Variable Name (নাম): মেমোরি লোকেশনকে ডাকার নাম (যেমন: age)
২. Memory Address (ঠিকানা): মেমোরিতে স্থানটির Hexadecimal ঠিকানা (যেমন: 0x7ffd51)
৩. Stored Value (মান): ভেরিয়েবলে সংরক্ষিত তথ্য (যেমন: 25)

২. Variable ডিক্লেয়ার (Declare) এবং ইনিশিয়ালাইজ (Initialize) করা

C প্রোগ্রামিংয়ে যেকোনো ভেরিয়েবল ব্যবহার করার আগে তাকে অবশ্যই ডিক্লেয়ার (Declare) করতে হয়। ডিক্লেয়ারেশনের মাধ্যমে কম্পাইলার জানতে পারে যে মেমোরিতে কতটুকু জায়গা ফাঁকা করতে হবে এবং সেখানে কী ধরনের ডেটা থাকবে।

সিনট্যাক্স (Syntax):

💻 ভেরিয়েবল ডিক্লেয়ারেশন ও ইনিশিয়ালাইজেশনের নিয়ম

data_type variable_name; // Declaration

variable_name = value; // Assignment

data_type variable_name = value; // Declaration + Initialization

ধাপে ধাপে ব্যাখ্যা:

  • Data Type (ডেটা টাইপ): কম্পাইলারকে ভেরিয়েবলের ধরন জানাতে ব্যবহৃত হয় (যেমন: int, float, char)।
  • Variable Name: মেমোরি লোকেশনের জন্য আপনার দেওয়া নাম।
  • Initialization: ডিক্লেয়ার করা ভেরিয়েবলে প্রথমবার মান নির্ধারণ করে দেওয়াকে Initialization বলে।

উদাহরণ সহ কোড স্নিপেট:

💻 C ভাষায় বিভিন্ন ভেরিয়েবল ডিক্লেয়ার করার উদাহরণ

int age; // 'age' নামে একটি পূর্ণসংখ্যার ভেরিয়েবল ডিক্লেয়ার করা হলো

age = 22; // age-এর মান 22 নির্ধারণ (Assign) করা হলো

float salary = 45000.50; // ডিক্লেয়ার ও ইনিশিয়ালাইজেশন একসাথে করা হলো

char grade = 'A'; // একটি ক্যারেক্টার ভেরিয়েবল

double pi = 3.14159265; // উচ্চ নিখুঁত দশমিক সংখ্যার ভেরিয়েবল

⚠️ সতর্কবার্তা: Garbage Value (গার্বেজ ভ্যালু)

যদি আপনি কোনো ভেরিয়েবল ডিক্লেয়ার করার পর তাতে কোনো মান নির্ধারণ না করেই তা প্রিন্ট বা ব্যবহার করেন, তবে C কম্পাইলার ওই ভেরিয়েবলে মেমোরির পূর্ববর্তী যেকোনো এলোমেলো মান (Garbage Value) দেখাতে পারে। তাই ভেরিয়েবল ব্যবহারের পূর্বে ইনিশিয়ালাইজ করা উত্তম চর্চা।

৩. Variable নামকরণের সুনির্দিষ্ট নিয়মাবলি (Naming Rules)

C প্রোগ্রামিংয়ে ভেরিয়েবলের নাম দেওয়ার সময় কম্পাইলারের কিছু কঠোর নিয়ম মেনে চলতে হয়। এই নিয়মগুলো ভঙ্গ করলে প্রোগ্রামটি কম্পাইল হবে না এবং Syntax Error দেখাবে।

  • ১. অনুমোদিত অক্ষর:ভেরিয়েবলের নামে কেবল ইংরেজি বর্ণ (A-Z, a-z), সংখ্যা (0-9) এবং আন্ডারস্কোর (_) ব্যবহার করা যাবে।
  • ২. সূচনা অক্ষর:ভেরিয়েবলের প্রথম অক্ষর অবশ্যই একটি বর্ণ বা আন্ডারস্কোর হতে হবে। কোনো সংখ্যা দিয়ে নাম শুরু করা যাবে না।
  • ৩. স্পেস ও স্পেশাল চিহ্ন:ভেরিয়েবলের নামের মাঝে কোনো খালি জায়গা (Space) বা স্পেশাল ক্যারেক্টার (!, @, #, $, %, ^, &, *) ব্যবহার করা নিষিদ্ধ।
  • ৪. কেস-সেনসিটিভিটি:C একটি Case-Sensitive ভাষা। তাই age, Age, এবং AGE তিনটি সম্পূর্ণ ভিন্ন ভেরিয়েবল হিসেবে গণ্য হবে।
  • ৫. কীওয়ার্ড নিষেধাজ্ঞা:C ভাষার সংরক্ষিত ৩২টি Keyword (যেমন: int, float, return, if, while, break ইত্যাদি) নাম হিসেবে ব্যবহার করা যাবে না।

বৈধ এবং অবৈধ ভেরিয়েবল নামের তালিকা (Valid vs Invalid Names):

ক্রম

ভেরিয়েবলের নাম

অবস্থা (Status)

কারণ / ব্যাখ্যা

student_age

✅ বৈধ (Valid)

বর্ণ ও আন্ডারস্কোরের সংমিশ্রণ সঠিক।

1stPosition

❌ অবৈধ (Invalid)

নামের শুরুতে সংখ্যা (1) ব্যবহার করা হয়েছে।

_totalScore

✅ বৈধ (Valid)

আন্ডারস্কোর দিয়ে শুরু করা সম্পূর্ণ বৈধ।

total marks

❌ অবৈধ (Invalid)

নামের মাঝে ফাঁকা জায়গা (Space) রাখা হয়েছে।

user@email

❌ অবৈধ (Invalid)

বিশেষ চিহ্ন (@) ব্যবহার করা হয়েছে।

float

❌ অবৈধ (Invalid)

C ভাষার সংরক্ষিত Keyword ব্যবহার করা হয়েছে।

average2num

✅ বৈধ (Valid)

মাঝে বা শেষে সংখ্যা ব্যবহার করা যাবে।

৪. Variable-এর প্রকারভেদ (Types of Variables in C)

মেমোরিতে অবস্থান, স্থায়িত্ব (Lifetime) এবং ব্যবহারের ব্যাপ্তি (Scope)-এর ওপর ভিত্তি করে C প্রোগ্রামিংয়ে ভেরিয়েবলকে প্রধানত ৫টি ভাগে ভাগ করা যায়:

১. Local Variable (লোকাল ভেরিয়েবল)

যে সকল ভেরিয়েবল কোনো নির্দিষ্ট ফাংশন বা ব্লকের ({}) ভেতরে ডিক্লেয়ার করা হয়, সেগুলোকে Local Variable বলে। এরা কেবল ওই ফাংশনের ভেতরেই সক্রিয় থাকে এবং ফাংশনের বাইরে এদের কোনো অস্তিত্ব থাকে না।

💻 Local Variable-এর উদাহরণ

void show() {

int num = 10; // Local Variable

printf("%d", num);

}

// এখানে num-কে অন্য ফাংশন থেকে অ্যাক্সেস করা যাবে না।

২. Global Variable (গ্লোবাল ভেরিয়েবল)

যে ভেরিয়েবল সকল ফাংশনের বাইরে (সাধারণত প্রোগ্রামের শীর্ষে) ডিক্লেয়ার করা হয়, তাকে Global Variable বলে। প্রোগ্রামের যেকোনো ফাংশন থেকে একে অ্যাক্সেস ও পরিবর্তন করা যায়।

💻 Global Variable-এর উদাহরণ

int globalCount = 100; // Global Variable

void display() {

printf("%d", globalCount);

}

int main() {

display();

return 0;

}

৩. Static Variable (স্ট্যাটিক ভেরিয়েবল)

`static` কিওয়ার্ড ব্যবহার করে ডিক্লেয়ার করা ভেরিয়েবলকে Static Variable বলা হয়। ফাংশনের এক্সিকিউশন শেষ হয়ে গেলেও এটি মেমোরিতে তার শেষ মানটি (State) ধরে রাখতে পারে।

💻 Static Variable-এর উদাহরণ

void counter() {

static int count = 0; // Static Variable

count++;

printf("%d ", count);

}

// প্রতিবার counter() কল করলে count-এর মান যথাক্রমে 1, 2, 3 হবে।

৪. Automatic Variable (অটোমেটিক ভেরিয়েবল)

C ভাষায় ব্লকের ভেতরে ঘোষিত সমস্ত লোকাল ভেরিয়েবল ডিফল্টভাবে Automatic Variable। এদের সামনে `auto` কিওয়ার্ড লেখা বাধ্যতামূলক নয়।

৫. External Variable (এক্সটার্নাল ভেরিয়েবল)

যখন একটি বড় প্রজেক্ট একাধিক ফাইল জুড়ে বিস্তৃত থাকে, তখন এক ফাইলের গ্লোবাল ভেরিয়েবল অন্য ফাইলে ব্যবহার করার জন্য `extern` কিওয়ার্ড ব্যবহার করে External Variable ঘোষণা করা হয়।

Local vs Global Variable-এর তুলনামূলক পার্থক্য:

বৈশিষ্ট্য

Local Variable

Global Variable

ঘোষণাস্থল

ফাংশন বা ব্লকের ভেতরে।

সব ফাংশনের বাইরে (প্রোগ্রামের শুরুতে)।

অ্যাক্সেস ব্যাপ্তি (Scope)

কেবল নিজস্ব ফাংশনের ভেতরে দৃশ্যমান।

সম্পূর্ণ প্রোগ্রামের যেকোনো স্থান থেকে দৃশ্যমান।

জীবনকাল (Lifetime)

ফাংশন শেষ হলেই মেমোরি থেকে মুছে যায়।

প্রোগ্রাম চালু থাকা পর্যন্ত মেমোরিতে থাকে।

ডিফল্ট মান

Garbage Value (এলোমেলো মান)।

Zero (0)।

মেমোরি অবস্থান

Stack মেমোরিতে জমা হয়।

Data Segment মেমোরিতে জমা হয়।

৫. সম্পূর্ণ ব্যবহারিক প্রোগ্রাম (Complete C Program)

নিচে একটি পূর্ণাঙ্গ C প্রোগ্রাম দেওয়া হলো, যেখানে Local, Global, এবং Static ভেরিয়েবলের বাস্তব প্রয়োগ একসাথে দেখানো হয়েছে:

💻 প্র্যাকটিক্যাল সি প্রোগ্রাম: Local, Global & Static Variable Demo

#include <stdio.h>

// Global Variable (সব ফাংশন থেকে অ্যাক্সেসযোগ্য)

int global_score = 100;

void playRound() {

// Local Variable

int round_points = 10;

// Static Variable (ফাংশন কলের পরেও মান বজায় রাখে)

static int total_rounds = 0;

total_rounds++;

global_score += round_points;

printf("Round %d: Points Earned = %d | Updated Global Score = %d\n",

total_rounds, round_points, global_score);

}

int main() {

printf("--- Game Started ---\n");

printf("Initial Global Score: %d\n\n", global_score);

// ফাংশন ৩ বার কল করা হচ্ছে

playRound();

playRound();

playRound();

printf("\n--- Game Ended ---\n");

printf("Final Score from main(): %d\n", global_score);

return 0;

}

📟 Output / আউটপুট:

--- Game Started ---

Initial Global Score: 100

Round 1: Points Earned = 10 | Updated Global Score = 110

Round 2: Points Earned = 10 | Updated Global Score = 120

Round 3: Points Earned = 10 | Updated Global Score = 130

--- Game Ended ---

Final Score from main(): 130

কোড বিশ্লেষণ (Code Analysis):

  • global_score:ভেরিয়েবলটি প্রোগ্রামের শুরুতে থাকায় `main()` এবং `playRound()` উভয় ফাংশনই এটি ব্যবহার ও পরিবর্তন করতে পেরেছে।
  • round_points:ভেরিয়েবলটি `playRound()`-এর নিজস্ব সম্পত্তি, তাই এটি বাইরের কোনো ফাংশন থেকে সরাসরি দেখা যাবে না।
  • total_rounds:ভেরিয়েবলটি ৩ বার ফাংশন কলের সময় প্রতিবার তার মান ১ করে বাড়াতে সক্ষম হয়েছে, কারণ `static` হওয়ার কারণে এটি মান ধরে রাখতে পারে।

৬. এক নজরে সারসংক্ষেপ (Quick Revision Checklist)

  • ভেরিয়েবল হলো কম্পিউটারের মেমোরিতে তথ্য রাখার জন্য একটি নামযুক্ত স্থান।
  • ভেরিয়েবল ব্যবহারের আগে তার টাইপসহ ডিক্লেয়ার করা আবশ্যক (যেমন: int x;)।
  • ভেরিয়েবলের নাম সংখ্যা দিয়ে শুরু করা যাবে না এবং কোনো ফাঁকা স্থান (Space) থাকা যাবে না।
  • C একটি কেস-সেনসিটিভি ভাষা, তাই `x` এবং `X` দুটি সম্পূর্ণ ভিন্ন ভেরিয়েবল।
  • Local Variable কেবল নিজের ফাংশনে কাজ করে, কিন্তু Global Variable পুরো প্রোগ্রামে কাজ করে।
  • Static Variable ফাংশন শেষ হওয়ার পরও মান ধরে রাখে।

৭. অনুশীলনমূলক প্রশ্ন ও অ্যাসাইনমেন্ট (Exercises & Assignments)

ক) সংক্ষিপ্ত প্রশ্নাবলী (Short Questions):

  • Variable কাকে বলে? C প্রোগ্রামিংয়ে ভেরিয়েবল ডিক্লেয়ার করা কেন প্রয়োজন?
  • Local Variable এবং Global Variable-এর মধ্যে প্রধান ৩টি পার্থক্য লিখুন।
  • Static Variable কীভাবে মেমোরিতে তার মান বজায় রাখে? ব্যাখ্যা করুন।

খ) আউটপুট নির্ণয় করুন (Find Output):

💻 অনুশীলনী প্রশ্ন ২: নিচের কোডটির আউটপুট কী হবে?

#include <stdio.h>

void func() {

static int x = 5;

int y = 5;

x += 2;

y += 2;

printf("x=%d, y=%d\n", x, y);

}

int main() {

func();

func();

return 0;

}

গ) কোডিং চ্যালেঞ্জ (Coding Challenge):

💻 অ্যাসাইনমেন্ট প্রবলেম

একটি C প্রোগ্রাম লিখুন যেখানে একজন শিক্ষার্থীর ৩টি বিষয়ের নম্বর (Physics, Chemistry, Math) ৩টি আলাদা ভেরিয়েবলে সংরক্ষণ করা হবে। একটি গ্লোবাল ভেরিয়েবলে সর্বমোট নম্বর হিসেব করে প্রিন্ট করুন এবং গড় নম্বর বের করুন।