Variable
ভেরিয়েবল
ভেরিয়েবল (Variable)
১. ভূমিকা — টিফিন বক্সের মতো তথ্য রাখো
ধরো তোমার একটি টিফিন বক্স আছে। আজকে তাতে ভাত আছে, কাল থাকবে রুটি, পরশু থাকবে নুডলস।
বক্সটা একই — কিন্তু ভেতরে কী আছে, সেটা বদলায়।
প্রোগ্রামিং-এ Variable (ভেরিয়েবল) ঠিক এই রকম — একটি নামের বাক্স, যার ভেতরে তথ্য রাখা যায় এবং সেই তথ্য বদলানো যায়।
২. সমস্যা — একই মান বারবার পরিবর্তন করতে হলে?
ধরো তুমি একটি প্রোগ্রাম লিখছো:
printf("5 + 3 = %d\n", 8);
printf("5 - 3 = %d\n", 2);
printf("5 × 3 = %d\n", 15);
এখন যদি ৫ পরিবর্তন করে ১০ করতে চাও — তিন জায়গায় পরিবর্তন করতে হবে!
Variable ব্যবহার করলে:
int a = 5, b = 3;
printf("যোগ = %d\n", a + b);
printf("বিয়োগ = %d\n", a - b);
printf("গুণ = %d\n", a * b);
এখন শুধু a = 10 করলেই সব বদলে যাবে! এটাই Variable-এর শক্তি।
৩. চিত্রের মাধ্যমে বোঝো
Computer Memory (RAM)
┌────────────────────────────────────┐
│ │
│ ┌──────────┐ ┌──────────┐ │
│ │ age │ │ score │ │
│ │ 17 │ │ 95 │ │
│ │ (int) │ │ (int) │ │
│ └──────────┘ └──────────┘ │
│ │
│ ┌──────────┐ ┌──────────┐ │
│ │ gpa │ │ grade │ │
│ │ 4.50 │ │ 'A' │ │
│ │ (float) │ │ (char) │ │
│ └──────────┘ └──────────┘ │
│ │
└────────────────────────────────────┘
প্রতিটি বক্সের একটি নাম আছে (যেমন: age, score)। প্রতিটি বক্সে একটি মান আছে (যেমন: 17, 95)। প্রতিটি বক্সের একটি ধরন আছে (যেমন: int, float)।
৪. বাস্তব জীবনের সাথে মিল
স্কুলের লকার ভাবো:
লকার নম্বর → Variable-এর নাম
লকারের ভেতর → Variable-এর মান
লকারের আকার → Data Type (কী ধরনের তথ্য রাখা যাবে)
int age→ ছোট লকার, শুধু পূর্ণসংখ্যা রাখা যায়float price→ মাঝারি লকার, দশমিক সংখ্যাও রাখা যায়char grade→ ছোট লকার, একটি অক্ষর রাখা যায়
Module 1: সংজ্ঞা ও ধারণা
Variable কী?
Variable (ভেরিয়েবল) হলো কম্পিউটারের Memory-তে একটি নামযুক্ত স্থান (Named Memory Location), যেখানে তথ্য (Data) সাময়িকভাবে রাখা যায় এবং পরিবর্তন করা যায়।
Variable Declaration (ঘোষণা):
data_type variable_name;
উদাহরণ:
int age; // পূর্ণসংখ্যা
float gpa; // দশমিক সংখ্যা
char grade; // একটি অক্ষর
Variable Initialization (মান দেওয়া):
data_type variable_name = value;
উদাহরণ:
int age = 17;
float gpa = 4.50;
char grade = 'A';
Variable-এর নামকরণের নিয়ম:
| নিয়ম | উদাহরণ |
|---|---|
অক্ষর বা _ দিয়ে শুরু | age, _count ✅ |
| সংখ্যা দিয়ে শুরু নয় | 2age ❌ |
| স্পেস নেই | my age ❌, my_age ✅ |
| Reserved word নয় | int, for, if ❌ |
| Case sensitive | Age ≠ age |
Module 2: কীভাবে কাজ করে
int age = 17;
এই একটি লাইনে কী হয়?
১. Compiler দেখে: int age
→ RAM-এ 4 bytes জায়গা বরাদ্দ করো
→ সেই জায়গার নাম দাও "age"
২. Compiler দেখে: = 17
→ সেই জায়গায় মান 17 রাখো
RAM:
Address 1000: [17] ← এটাই "age"
যখন তুমি পরে age = 18; লেখো:
RAM:
Address 1000: [18] ← পুরনো 17 মুছে নতুন 18 রাখা হলো
নামটা একই থাকে, মান বদলায় — তাই নাম Variable (পরিবর্তনশীল)।
Module 3: প্যাটার্ন ও উদাহরণ
প্যাটার্ন ১: Declaration (শুধু ঘোষণা)
Variable ঘোষণা করা হয় কিন্তু মান দেওয়া হয় না।
উদাহরণ ১.১: একটি Variable
#include <stdio.h>
int main() {
int age; // ঘোষণা
age = 17; // মান দেওয়া
printf("বয়স: %d\n", age);
return 0;
}
উদাহরণ ১.২: একাধিক Variable
#include <stdio.h>
int main() {
int a, b, sum; // তিনটি Variable একসাথে ঘোষণা
a = 10;
b = 20;
sum = a + b;
printf("যোগফল: %d\n", sum);
return 0;
}
উদাহরণ ১.৩: বিভিন্ন ধরনের Variable
#include <stdio.h>
int main() {
int age;
float height;
char gender;
age = 17;
height = 5.6;
gender = 'M';
printf("বয়স: %d\n", age);
printf("উচ্চতা: %.1f\n", height);
printf("লিঙ্গ: %c\n", gender);
return 0;
}
প্যাটার্ন ২: Initialization (ঘোষণার সাথে মান)
উদাহরণ ২.১: স্কুলের তথ্য
#include <stdio.h>
int main() {
int rollNumber = 15;
float cgpa = 4.75;
char section = 'A';
printf("রোল নম্বর: %d\n", rollNumber);
printf("CGPA: %.2f\n", cgpa);
printf("সেকশন: %c\n", section);
return 0;
}
আউটপুট:
রোল নম্বর: 15
CGPA: 4.75
সেকশন: A
উদাহরণ ২.২: পণ্যের তথ্য
#include <stdio.h>
int main() {
int quantity = 5;
float price = 120.50;
float total = quantity * price;
printf("পরিমাণ: %d\n", quantity);
printf("একক মূল্য: %.2f টাকা\n", price);
printf("মোট মূল্য: %.2f টাকা\n", total);
return 0;
}
আউটপুট:
পরিমাণ: 5
একক মূল্য: 120.50 টাকা
মোট মূল্য: 602.50 টাকা
উদাহরণ ২.৩: তাপমাত্রা রূপান্তর
#include <stdio.h>
int main() {
float celsius = 37.0;
float fahrenheit = (celsius * 9.0 / 5.0) + 32;
printf("সেলসিয়াস: %.1f°C\n", celsius);
printf("ফারেনহাইট: %.1f°F\n", fahrenheit);
return 0;
}
আউটপুট:
সেলসিয়াস: 37.0°C
ফারেনহাইট: 98.6°F
প্যাটার্ন ৩: Assignment (মান পরিবর্তন)
উদাহরণ ৩.১: Variable-এর মান বদলানো
#include <stdio.h>
int main() {
int score = 80;
printf("প্রথম স্কোর: %d\n", score);
score = 95; // মান পরিবর্তন
printf("দ্বিতীয় স্কোর: %d\n", score);
score = score + 5; // নিজের মান ব্যবহার করে পরিবর্তন
printf("বোনাস সহ: %d\n", score);
return 0;
}
আউটপুট:
প্রথম স্কোর: 80
দ্বিতীয় স্কোর: 95
বোনাস সহ: 100
উদাহরণ ৩.২: দুটি Variable-এর মান অদলবদল (Swap)
#include <stdio.h>
int main() {
int a = 10, b = 20, temp;
printf("আগে: a = %d, b = %d\n", a, b);
temp = a; // temp-এ a রাখো
a = b; // a-তে b দাও
b = temp; // b-তে temp (আগের a) দাও
printf("পরে: a = %d, b = %d\n", a, b);
return 0;
}
আউটপুট:
আগে: a = 10, b = 20
পরে: a = 20, b = 10
উদাহরণ ৩.৩: Counter Variable
#include <stdio.h>
int main() {
int count = 0;
count = count + 1; // count++
count = count + 1;
count = count + 1;
printf("গণনা: %d\n", count);
return 0;
}
আউটপুট:
গণনা: 3
প্যাটার্ন ৪: ইনপুট দিয়ে Variable ভরা
উদাহরণ ৪.১: বয়স ইনপুট
#include <stdio.h>
int main() {
int age;
printf("তোমার বয়স কত? ");
scanf("%d", &age);
printf("তোমার বয়স %d বছর।\n", age);
return 0;
}
উদাহরণ ৪.২: দুটি সংখ্যা ইনপুট করে গুণফল
#include <stdio.h>
int main() {
int a, b;
printf("প্রথম সংখ্যা: ");
scanf("%d", &a);
printf("দ্বিতীয় সংখ্যা: ");
scanf("%d", &b);
printf("গুণফল = %d\n", a * b);
return 0;
}
উদাহরণ ৪.৩: শিক্ষার্থীর তথ্য
#include <stdio.h>
int main() {
int roll, marks;
float gpa;
char section;
printf("রোল নম্বর: ");
scanf("%d", &roll);
printf("মোট নম্বর: ");
scanf("%d", &marks);
printf("GPA: ");
scanf("%f", &gpa);
printf("সেকশন (A/B/C): ");
scanf(" %c", §ion);
printf("\n--- শিক্ষার্থীর তথ্য ---\n");
printf("রোল: %d\n", roll);
printf("নম্বর: %d\n", marks);
printf("GPA: %.2f\n", gpa);
printf("সেকশন: %c\n", section);
return 0;
}
Module 4: বাস্তব প্রয়োগ
| বাস্তব পরিস্থিতি | Variable-এর ব্যবহার |
|---|---|
| Facebook-এ লাইক গণনা | int likeCount = 0; |
| ব্যাংকে ব্যালেন্স | float balance = 5000.00; |
| গেমে স্কোর | int score = 0; |
| তাপমাত্রা মনিটর | float temp = 36.5; |
| ছাত্রের উপস্থিতি | int attendance = 0; |
| বাজারে পণ্যের দাম | float price = 45.50; |
Module 5: সাধারণ ভুল ও সতর্কতা
ভুল ১: সংখ্যা দিয়ে নাম শুরু করা
❌ ভুল:
int 2score = 100; // Error!
✅ সঠিক:
int score2 = 100;
ভুল ২: স্পেস দিয়ে নাম লেখা
❌ ভুল:
int my score = 100; // Error!
✅ সঠিক:
int myScore = 100; // camelCase
int my_score = 100; // snake_case
ভুল ৩: মান না দিয়ে ব্যবহার করা
❌ ভুল:
int sum;
printf("%d\n", sum); // sum-এ কোনো মান নেই, garbage value আসবে!
✅ সঠিক:
int sum = 0;
printf("%d\n", sum);
ভুল ৪: scanf-এ & ভুলে যাওয়া
❌ ভুল:
int age;
scanf("%d", age); // & ছাড়া — প্রোগ্রাম crash করতে পারে!
✅ সঠিক:
int age;
scanf("%d", &age); // & দিয়ে address পাস করো
ভুল ৫: Reserved word ব্যবহার করা
❌ ভুল:
int int = 5; // 'int' হলো keyword!
int for = 10; // 'for' হলো keyword!
✅ সঠিক:
int number = 5;
int counter = 10;
Module 6: সুবিধা-অসুবিধা
| Variable-এর ধরন | সুবিধা | অসুবিধা |
|---|---|---|
| Local Variable | নিরাপদ, ফাংশনের মধ্যে সীমাবদ্ধ | অন্য ফাংশন থেকে ব্যবহার করা যায় না |
| Global Variable | সবখানে ব্যবহার করা যায় | বড় প্রোগ্রামে সমস্যা তৈরি করতে পারে |
| Initialized Variable | নিরাপদ | একটু বেশি কোড লিখতে হয় |
| Uninitialized | কম কোড | Garbage value-এর ঝুঁকি |
🔁 নিজে পরীক্ষা করো
MCQ:
১. C-তে Variable-এর নাম কোনটি দিয়ে শুরু হতে পারে?
- ক) সংখ্যা
- খ) অক্ষর বা underscore ✓
- গ) বিশেষ চিহ্ন
- ঘ) যেকোনো কিছু
২. int score = 85; — এখানে int কী?
- ক) Variable-এর নাম
- খ) Data Type ✓
- গ) Variable-এর মান
- ঘ) Keyword নয়
৩. scanf("%d", &age); — এখানে & কী বোঝায়?
- ক) এবং (And)
- খ) age Variable-এর Memory Address ✓
- গ) বিটওয়াইজ AND
- ঘ) কিছুই না
৪. নিচের কোন Variable নামটি সঠিক?
- ক)
2name - খ)
my name - গ)
my_name✓ - ঘ)
int
৫. Variable-এর মান পরিবর্তন করলে কী হয়?
- ক) নতুন Variable তৈরি হয়
- খ) পুরনো মান মুছে নতুন মান রাখা হয় ✓
- গ) Error আসে
- ঘ) দুটি মান একসাথে থাকে
সংক্ষিপ্ত প্রশ্ন:
৬. Variable Declaration ও Initialization-এর পার্থক্য উদাহরণসহ ব্যাখ্যা করো।
৭. দুটি Variable-এর মান অদলবদল (Swap) করার C প্রোগ্রাম লেখো।
📝 HSC পরীক্ষার প্রস্তুতি
১. Variable-কে কেন "পরিবর্তনশীল" বলা হয়? যদি মান না বদলাতে চাই, তাহলে কী ব্যবহার করবো?
২. int আর float Variable-এ কী পার্থক্য? int age = 17.5; লিখলে কী হবে?
৩. প্রোগ্রামে Variable না থাকলে কী সমস্যা হতো? একটি বাস্তব উদাহরণ দিয়ে ব্যাখ্যা করো।
🎯 অনুশীলন প্রশ্ন
সহজ: একটি C প্রোগ্রাম লেখো যা ৩টি Variable ব্যবহার করে একটি ত্রিভুজের তিনটি বাহুর দৈর্ঘ্য রাখবে এবং পরিসীমা (Perimeter) বের করবে।
মাঝারি: দুটি সংখ্যা ইনপুট নাও। তাদের মান অদলবদল (Swap) করো এবং অদলবদলের আগে ও পরের মান দেখাও।
কঠিন: একটি শিক্ষার্থীর নাম, রোল, পাঁচটি বিষয়ের নম্বর ইনপুট নাও। মোট নম্বর, গড় নম্বর এবং সর্বোচ্চ নম্বর বের করে দেখাও।
✅ সারাংশ
🎯 মনে রেখো:
- Variable = Memory-তে নামযুক্ত তথ্য রাখার জায়গা
- Declaration:
int age;— জায়গা বরাদ্দ, মান নেই - Initialization:
int age = 17;— জায়গা বরাদ্দ + মান - Assignment:
age = 18;— মান পরিবর্তন - নামকরণের নিয়ম:
- অক্ষর বা
_দিয়ে শুরু ✅ - সংখ্যা বা বিশেষ চিহ্ন দিয়ে শুরু ❌
- স্পেস নেই ❌
- Reserved word নয় ❌
- অক্ষর বা
scanf-এ Variable-এর আগে&দিতে হবে!- মান না দিলে Garbage Value আসে — বিপদ!
💡 পরীক্ষার টিপস: Variable নামকরণের নিয়ম এবং Declaration/Initialization-এর পার্থক্য HSC-তে প্রায়ই আসে।