Skip to content

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:

اگر (دن == 1) { ... }
ورنہ_اگر (دن == 2) { ... }
ورنہ_اگر (دن == 3) { ... }

You write:

منتخب (دن) {
    صورت 1: ...
    صورت 2: ...
    صورت 3: ...
}

اردو: منتخب ایک قدر کو کئی ممکنہ قدروں سے موازنہ کرتا ہے۔ اگر/ورنہ_اگر کی لمبی زنجیر کی بجائے یہ زیادہ صاف لکھائی دیتا ہے۔


Basic Switch — بنیادی منتخب

متغیر دن = 3;

منتخب (دن) {
    صورت 1:
        لکھو("پیر");
        ٹوٹنا;
    صورت 2:
        لکھو("منگل");
        ٹوٹنا;
    صورت 3:
        لکھو("بدھ");
        ٹوٹنا;
    صورت 4:
        لکھو("جمعرات");
        ٹوٹنا;
    صورت 5:
        لکھو("جمعہ");
        ٹوٹنا;
    بصورت_دیگر:
        لکھو("ہفتہ/اتوار");
}

Output: بدھ

Pattern:

منتخب (قدر) {
    صورت X:
        // code
        ٹوٹنا;
    بصورت_دیگر:
        // code when nothing matched
}

اردو: صورت کے بعد وہ قدر لکھیں جس سے موازنہ کرنا ہے۔ ٹوٹنا لگانا ضروری ہے ورنہ اگلی صورت بھی چل جائے گی۔ بصورت_دیگر وہ کوڈ ہے جو کوئی صورت نہ ملنے پر چلتا ہے۔


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

اردو: منتخب ایک قدر، صورت ممکنہ قدر، ٹوٹنا لازمی ہے، بصورت_دیگر اختیاری ہے۔


← Previous: If / Else | Next: While Loop →