11. Switch / Case — منتخب / صورت
Difficulty: Beginner — مبتدی
Time: ~15 minutes
What is Switch? — منتخب کیا ہے؟
منتخب is a cleaner way to write many ورنہ_اگر checks against a single value. Instead of:
You write:
اردو:
منتخبایک قدر کو کئی ممکنہ قدروں سے موازنہ کرتا ہے۔اگر/ورنہ_اگرکی لمبی زنجیر کی بجائے یہ زیادہ صاف لکھائی دیتا ہے۔
Basic Switch — بنیادی منتخب
متغیر دن = 3;
منتخب (دن) {
صورت 1:
لکھو("پیر");
ٹوٹنا;
صورت 2:
لکھو("منگل");
ٹوٹنا;
صورت 3:
لکھو("بدھ");
ٹوٹنا;
صورت 4:
لکھو("جمعرات");
ٹوٹنا;
صورت 5:
لکھو("جمعہ");
ٹوٹنا;
بصورت_دیگر:
لکھو("ہفتہ/اتوار");
}
Output: بدھ
Pattern:
اردو:
صورتکے بعد وہ قدر لکھیں جس سے موازنہ کرنا ہے۔ٹوٹنالگانا ضروری ہے ورنہ اگلیصورتبھی چل جائے گی۔بصورت_دیگروہ کوڈ ہے جو کوئی صورت نہ ملنے پر چلتا ہے۔
Switch with Strings — متن کے ساتھ منتخب
متغیر رنگ = "سبز";
منتخب (رنگ) {
صورت "سرخ":
لکھو("خطرہ — رکو!");
ٹوٹنا;
صورت "پیلا":
لکھو("احتیاط — آہستہ چلیں");
ٹوٹنا;
صورت "سبز":
لکھو("جائیں");
ٹوٹنا;
بصورت_دیگر:
لکھو("نامعلوم رنگ");
}
Output: جائیں
اردو:
منتخباعداد اور متن دونوں کے ساتھ کام کرتا ہے۔
Fallthrough — گرنا (بغیر ٹوٹنا)
When two cases should do the same thing, omit ٹوٹنا from the first:
متغیر درجہ = "B";
منتخب (درجہ) {
صورت "A":
صورت "B":
لکھو("اچھا نتیجہ"); // runs for both A and B
ٹوٹنا;
صورت "C":
لکھو("ٹھیک ہے");
ٹوٹنا;
بصورت_دیگر:
لکھو("بہتری کی ضرورت");
}
Output: اچھا نتیجہ
اردو: اگر
صورت A:کے بعدٹوٹنانہ ہو تو وہ اگلیصورت B:میں گر جاتا ہے — دونوں کا ایک ہی کوڈ چلانے کا آسان طریقہ۔
The Missing ٹوٹنا Bug — غلطی جب ٹوٹنا نہ ہو
Be careful: forgetting ٹوٹنا causes all subsequent cases to run:
متغیر دن = 1;
منتخب (دن) {
صورت 1:
لکھو("پیر");
// ← no ٹوٹنا here!
صورت 2:
لکھو("منگل");
ٹوٹنا;
صورت 3:
لکھو("بدھ");
ٹوٹنا;
}
// Output:
// پیر
// منگل ← also printed! (fallthrough bug)
اردو: ہر
صورتکے آخر میںٹوٹنالگانا نہ بھولیں — وگرنہ اگلی صورتیں بھی چل جاتی ہیں۔
Switch vs If/Else — فرق
Use منتخب when:
- You're comparing one variable against many possible exact values
- The cases are clean and distinct
Use اگر/ورنہ_اگر when:
- Conditions involve ranges (ن > 10)
- Conditions mix multiple variables
- Conditions use اور/یا
// Switch is cleaner for exact values:
منتخب (کمانڈ) {
صورت "شروع": ...
صورت "بند": ...
صورت "مدد": ...
}
// اگر is better for ranges:
اگر (نمبر >= 90) { ... }
ورنہ_اگر (نمبر >= 75) { ... }
Practical Example: Calculator Menu — عملی مثال: کیلکولیٹر مینو
فنکشن حساب(الف, ب, آپریٹر) {
منتخب (آپریٹر) {
صورت "+":
واپس الف + ب;
صورت "-":
واپس الف - ب;
صورت "*":
واپس الف * ب;
صورت "/":
اگر (ب == 0) { واپس "خطا: صفر سے تقسیم"; }
واپس الف / ب;
بصورت_دیگر:
واپس "نامعلوم آپریٹر";
}
}
لکھو(حساب(10, 5, "+")); // 15
لکھو(حساب(10, 5, "-")); // 5
لکھو(حساب(10, 5, "*")); // 50
لکھو(حساب(10, 5, "/")); // 2.0
لکھو(حساب(10, 0, "/")); // خطا: صفر سے تقسیم
لکھو(حساب(10, 5, "^")); // نامعلوم آپریٹر
اردو:
منتخبآپریٹر کے مطابق مختلف کام کرتا ہے — یہ مینو سسٹم بنانے کا عام طریقہ ہے۔
Key Points — اہم نکات
منتخب (قدر) { ... }compares one value against many casesصورت X:— run this block if value equals Xٹوٹنا;— stop after this case (required to avoid fallthrough)بصورت_دیگر:— run if no case matched (optional)- Omitting
ٹوٹناcauses fallthrough to next case
اردو:
منتخبایک قدر،صورتممکنہ قدر،ٹوٹنالازمی ہے،بصورت_دیگراختیاری ہے۔