Conditional
শর্তমূলক স্টেটমেন্ট
শর্তমূলক স্টেটমেন্ট (Conditional Statement)
১. ভূমিকা — বৃষ্টি হলে ছাতা নাও!
তুমি সকালে উঠে বাইরে তাকাও।
- বৃষ্টি হচ্ছে? → ছাতা নাও
- রোদ আছে? → স্বাভাবিকভাবে বেরিয়ে যাও
এই সিদ্ধান্ত নেওয়ার ক্ষমতাই প্রোগ্রামে যোগ করে Conditional Statement (শর্তমূলক স্টেটমেন্ট)।
প্রোগ্রাম শুধু ক্যালকুলেশন করে না — সিদ্ধান্তও নিতে পারে!
২. সমস্যা — প্রোগ্রাম কি সিদ্ধান্ত নিতে পারে?
ধরো তুমি একটি পরীক্ষার ফলাফল প্রোগ্রাম বানাচ্ছো:
printf("পাস"); // সবসময় পাস দেখাবে — ভুল!
তোমার দরকার:
- যদি নম্বর ৩৩ বা বেশি → "পাস"
- না হলে → "ফেল"
Conditional Statement ছাড়া এটা সম্ভব নয়।
৩. চিত্রের মাধ্যমে বোঝো
Conditional Statement-এর রাস্তা:
একটি রাস্তা → শর্ত পরীক্ষা → দুটি পথ
│
┌────┴────┐
│ সত্য? │
└────┬────┘
হ্যাঁ ↓ ↓ না
[A করো] [B করো]
↓ ↓
└───┬───┘
[চলো]
৪. বাস্তব জীবনের সাথে মিল
দারোয়ানের মতো ভাবো:
একটি ভবনের দারোয়ান:
- পরিচয়পত্র আছে? → ভেতরে যাও
- নেই? → থামো
if-else ঠিক এই কাজ করে। প্রতিটি সিদ্ধান্তে একটি শর্ত পরীক্ষা করে এবং দুটি পথের যেকোনো একটিতে যায়।
Module 1: সংজ্ঞা ও ধারণা
if Statement:
if (শর্ত) {
// শর্ত সত্য হলে চলবে
}
if-else Statement:
if (শর্ত) {
// সত্য হলে
} else {
// মিথ্যা হলে
}
if-else if-else (Ladder):
if (শর্ত১) {
// শর্ত১ সত্য
} else if (শর্ত২) {
// শর্ত২ সত্য
} else if (শর্ত৩) {
// শর্ত৩ সত্য
} else {
// কোনোটাই না
}
switch Statement:
switch (variable) {
case মান১:
// কোড
break;
case মান২:
// কোড
break;
default:
// অন্য সব মানের জন্য
}
Module 2: কীভাবে কাজ করে
if (marks >= 33)
ধাপ ১: marks-এর মান পড়ো (ধরো 75)
ধাপ ২: 75 >= 33 → true (1)
ধাপ ৩: শর্ত true → if block চালাও
if (marks >= 33)
ধাপ ১: marks-এর মান পড়ো (ধরো 20)
ধাপ ২: 20 >= 33 → false (0)
ধাপ ৩: শর্ত false → else block চালাও
Module 3: প্যাটার্ন ও উদাহরণ
প্যাটার্ন ১: Simple if
উদাহরণ ১.১: বৃষ্টি হলে ছাতা নাও
#include <stdio.h>
int main() {
int isRaining = 1; // 1 = বৃষ্টি, 0 = নেই
if (isRaining == 1) {
printf("ছাতা নিয়ে বেরিয়ে যাও!\n");
}
printf("ভালো থেকো।\n");
return 0;
}
আউটপুট:
ছাতা নিয়ে বেরিয়ে যাও!
ভালো থেকো।
উদাহরণ ১.২: বয়স যাচাই
#include <stdio.h>
int main() {
int age;
printf("বয়স: ");
scanf("%d", &age);
if (age >= 18) {
printf("ভোট দিতে পারবে।\n");
}
return 0;
}
উদাহরণ ১.৩: ধনাত্মক সংখ্যা
#include <stdio.h>
int main() {
int n;
printf("সংখ্যা দাও: ");
scanf("%d", &n);
if (n > 0) {
printf("%d ধনাত্মক সংখ্যা।\n", n);
}
return 0;
}
প্যাটার্ন ২: if-else
উদাহরণ ২.১: পাস/ফেল
#include <stdio.h>
int main() {
int marks;
printf("নম্বর দাও: ");
scanf("%d", &marks);
if (marks >= 33) {
printf("অভিনন্দন! তুমি পাস করেছো।\n");
} else {
printf("দুঃখিত, ফেল হয়েছো। আরও পড়ো।\n");
}
return 0;
}
উদাহরণ ২.২: জোড় না বিজোড়
#include <stdio.h>
int main() {
int n;
printf("সংখ্যা দাও: ");
scanf("%d", &n);
if (n % 2 == 0) {
printf("%d জোড় সংখ্যা।\n", n);
} else {
printf("%d বিজোড় সংখ্যা।\n", n);
}
return 0;
}
উদাহরণ ২.৩: বড় সংখ্যা
#include <stdio.h>
int main() {
int a, b;
printf("দুটি সংখ্যা দাও: ");
scanf("%d %d", &a, &b);
if (a > b) {
printf("%d বড়।\n", a);
} else {
printf("%d বড়।\n", b);
}
return 0;
}
প্যাটার্ন ৩: if-else if-else (Ladder)
উদাহরণ ৩.১: গ্রেড নির্ধারণ (HSC গ্রেডিং)
#include <stdio.h>
int main() {
int marks;
printf("নম্বর দাও (০-১০০): ");
scanf("%d", &marks);
if (marks >= 80) {
printf("গ্রেড: A+\n");
} else if (marks >= 70) {
printf("গ্রেড: A\n");
} else if (marks >= 60) {
printf("গ্রেড: A-\n");
} else if (marks >= 50) {
printf("গ্রেড: B\n");
} else if (marks >= 40) {
printf("গ্রেড: C\n");
} else if (marks >= 33) {
printf("গ্রেড: D\n");
} else {
printf("গ্রেড: F (ফেল)\n");
}
return 0;
}
উদাহরণ ৩.২: তিনটি সংখ্যার মধ্যে সর্বোচ্চ
#include <stdio.h>
int main() {
int a, b, c;
printf("তিনটি সংখ্যা দাও: ");
scanf("%d %d %d", &a, &b, &c);
if (a >= b && a >= c) {
printf("সর্বোচ্চ: %d\n", a);
} else if (b >= c) {
printf("সর্বোচ্চ: %d\n", b);
} else {
printf("সর্বোচ্চ: %d\n", c);
}
return 0;
}
উদাহরণ ৩.৩: বিএমআই (BMI) ক্যালকুলেটর
#include <stdio.h>
int main() {
float weight, height, bmi;
printf("ওজন (কেজি): ");
scanf("%f", &weight);
printf("উচ্চতা (মিটার): ");
scanf("%f", &height);
bmi = weight / (height * height);
printf("BMI: %.2f\n", bmi);
if (bmi < 18.5) {
printf("স্বাস্থ্য: কম ওজন\n");
} else if (bmi < 25.0) {
printf("স্বাস্থ্য: স্বাভাবিক ✓\n");
} else if (bmi < 30.0) {
printf("স্বাস্থ্য: অতিরিক্ত ওজন\n");
} else {
printf("স্বাস্থ্য: স্থূলতা\n");
}
return 0;
}
প্যাটার্ন ৪: Nested if (ভেতরে if)
উদাহরণ ৪.১: লিপ ইয়ার পরীক্ষা
#include <stdio.h>
int main() {
int year;
printf("বছর দাও: ");
scanf("%d", &year);
if (year % 4 == 0) {
if (year % 100 == 0) {
if (year % 400 == 0) {
printf("%d লিপ ইয়ার।\n", year);
} else {
printf("%d লিপ ইয়ার নয়।\n", year);
}
} else {
printf("%d লিপ ইয়ার।\n", year);
}
} else {
printf("%d লিপ ইয়ার নয়।\n", year);
}
return 0;
}
উদাহরণ ৪.২: বৃত্তিপাত্র যাচাই
#include <stdio.h>
int main() {
int marks;
int attendance; // শতকরা
printf("নম্বর: ");
scanf("%d", &marks);
printf("উপস্থিতি (%%): ");
scanf("%d", &attendance);
if (marks >= 80) {
if (attendance >= 75) {
printf("বৃত্তি পাবে!\n");
} else {
printf("নম্বর আছে কিন্তু উপস্থিতি কম।\n");
}
} else {
printf("নম্বর কম, বৃত্তি পাবে না।\n");
}
return 0;
}
প্যাটার্ন ৫: switch Statement
উদাহরণ ৫.১: বার নির্ণয়
#include <stdio.h>
int main() {
int day;
printf("বার নম্বর দাও (1-7): ");
scanf("%d", &day);
switch (day) {
case 1:
printf("রবিবার\n");
break;
case 2:
printf("সোমবার\n");
break;
case 3:
printf("মঙ্গলবার\n");
break;
case 4:
printf("বুধবার\n");
break;
case 5:
printf("বৃহস্পতিবার\n");
break;
case 6:
printf("শুক্রবার\n");
break;
case 7:
printf("শনিবার\n");
break;
default:
printf("ভুল নম্বর!\n");
}
return 0;
}
উদাহরণ ৫.২: ক্যালকুলেটর (switch দিয়ে)
#include <stdio.h>
int main() {
float a, b;
char op;
printf("হিসাব লেখো (যেমন: 5 + 3): ");
scanf("%f %c %f", &a, &op, &b);
switch (op) {
case '+':
printf("= %.2f\n", a + b);
break;
case '-':
printf("= %.2f\n", a - b);
break;
case '*':
printf("= %.2f\n", a * b);
break;
case '/':
if (b != 0)
printf("= %.2f\n", a / b);
else
printf("শূন্য দিয়ে ভাগ করা যায় না!\n");
break;
default:
printf("অজানা অপারেটর!\n");
}
return 0;
}
উদাহরণ ৫.৩: মাসের দিন সংখ্যা
#include <stdio.h>
int main() {
int month;
printf("মাস নম্বর (1-12): ");
scanf("%d", &month);
switch (month) {
case 2:
printf("ফেব্রুয়ারি: ২৮/২৯ দিন\n");
break;
case 4:
case 6:
case 9:
case 11:
printf("এই মাসে ৩০ দিন\n");
break;
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
printf("এই মাসে ৩১ দিন\n");
break;
default:
printf("ভুল মাস!\n");
}
return 0;
}
Module 4: বাস্তব প্রয়োগ
| পরিস্থিতি | Conditional |
|---|---|
| লগইন যাচাই | if (password == correct) |
| ATM PIN | if (pin == stored) |
| পরীক্ষার ফলাফল | if-else if ladder |
| ট্রাফিক সিগন্যাল | switch (signal_color) |
| বয়স যাচাই | if (age >= 18) |
| বৃষ্টির সতর্কতা | if (rainfall > 100) |
Module 5: সাধারণ ভুল ও সতর্কতা
ভুল ১: = এবং == গুলিয়ে ফেলা
❌ ভুল:
if (x = 5) // x-এ 5 রাখছে, সবসময় true!
✅ সঠিক:
if (x == 5) // x কি 5 সমান?
ভুল ২: switch-এ break ভুলে যাওয়া
❌ ভুল:
switch (day) {
case 1:
printf("রবিবার\n");
// break নেই! পরের case-এও চলবে
case 2:
printf("সোমবার\n");
}
✅ সঠিক:
case 1:
printf("রবিবার\n");
break; // অবশ্যই দাও
ভুল ৩: Semicolon if-এর পরে
❌ ভুল:
if (x > 0); // Semicolon! if body খালি হয়ে গেছে
{
printf("ধনাত্মক\n"); // এটা সবসময় চলবে!
}
✅ সঠিক:
if (x > 0) {
printf("ধনাত্মক\n");
}
ভুল ৪: float তুলনায় সমস্যা
❌ ভুল:
float f = 0.1 + 0.2;
if (f == 0.3) // false! floating point error
✅ সঠিক:
if (f - 0.3 < 0.0001) // পার্থক্য যথেষ্ট ছোট কিনা
Module 6: সুবিধা-অসুবিধা
| Statement | কখন ব্যবহার করবে | কখন নয় |
|---|---|---|
if | একটি শর্ত | — |
if-else | দুটি পথ | তিনের বেশি শর্তে অপঠনযোগ্য |
if-else if | অনেক শর্ত | switch সম্ভব হলে switch ভালো |
switch | নির্দিষ্ট মান তুলনা | range বা float-এ কাজ করে না |
🔁 নিজে পরীক্ষা করো
MCQ:
১. if (x = 5) — এটা কোন ধরনের সমস্যা?
- ক) Syntax Error
- খ) Logic Error (Assignment, comparison নয়) ✓
- গ) Runtime Error
- ঘ) কোনো সমস্যা নেই
২. switch-এ break না দিলে কী হয়?
- ক) Error আসে
- খ) পরের case-ও চলতে থাকে (fall-through) ✓
- গ) প্রোগ্রাম বন্ধ হয়
- ঘ) কিছুই হয় না
৩. if-else if-else Ladder-এ সর্বোচ্চ কয়টি শর্ত রাখা যায়?
- ক) ২
- খ) ৫
- গ) ১০
- ঘ) সীমা নেই ✓
৪. switch statement-এ কোন ডেটা টাইপ ব্যবহার করা যায় না?
- ক) int
- খ) char
- গ) float ✓
- ঘ) long
৫. Nested if মানে কী?
- ক) পাশাপাশি if
- খ) if-এর ভেতরে আরেকটি if ✓
- গ) if ছাড়া else
- ঘ) বহু else if
সংক্ষিপ্ত প্রশ্ন:
৬. if-else এবং switch-এর পার্থক্য উদাহরণসহ লেখো।
৭. HSC গ্রেডিং সিস্টেম অনুযায়ী গ্রেড বের করার প্রোগ্রাম লেখো।
📝 HSC পরীক্ষার প্রস্তুতি
১. switch এবং if-else if — একই কাজ করে, তাহলে দুটি আলাদা কেন? কোনটি কখন সুবিধাজনক?
২. Nested if-এর গভীরতা কতটা হওয়া উচিত? বেশি Nested হলে কী সমস্যা?
৩. তুমি যদি একটি ATM প্রোগ্রাম লেখো, কোন কোন জায়গায় Conditional Statement দরকার হবে?
🎯 অনুশীলন প্রশ্ন
সহজ: একটি সংখ্যা ইনপুট নাও। সে ধনাত্মক, ঋণাত্মক নাকি শূন্য — তা নির্ণয় করো।
মাঝারি: তিনটি সংখ্যা ইনপুট নাও এবং সর্বোচ্চ সংখ্যাটি বের করো। (if-else if ব্যবহার করো)
কঠিন: একটি পরীক্ষার ফলাফল প্রোগ্রাম লেখো যা:
- ৫টি বিষয়ের নম্বর নেবে
- মোট ও গড় নম্বর বের করবে
- HSC গ্রেডিং অনুযায়ী গ্রেড দেখাবে
- পাস/ফেল নির্ধারণ করবে
✅ সারাংশ
🎯 মনে রেখো:
- Conditional Statement = প্রোগ্রামে সিদ্ধান্ত নেওয়ার ক্ষমতা
- ৪ ধরন:
if→ একটি শর্তif-else→ দুটি পথif-else if-else→ অনেক শর্তswitch→ নির্দিষ্ট মানের জন্য
=(assignment) আর==(comparison) — কখনো গুলাবে না!- switch-এ প্রতিটি case-এর পর
breakদাও - if-এর পর Semicolon দিও না
- switch-এ float ব্যবহার করা যায় না
💡 পরীক্ষার টিপস: HSC-তে গ্রেড নির্ণয় এবং সর্বোচ্চ/সর্বনিম্ন সংখ্যা খোঁজার প্রোগ্রাম প্রায়ই আসে। if-else if ladder ভালো করে অনুশীলন করো।