1 شرائطی بیانات کا جائزہ

شرائطی بیانات پروگرامنگ میں منطقی دھارا کو کنٹرول کرنے کے اہم آلات ہیں۔ Golang میں، شرائطی بیانات دوسری پروگرامنگ زبانوں کی طرح ہیں لیکن ان کی اپنی خصوصیات ہیں۔ یہ ہمیں فیصلہ کرنے کی اجازت دیتے ہیں کہ کون سا کوڈ صحیح یا غلط حالت پر اجرا کرنا ہے، جس سے کوڈ کی استقامت اور نگرانی بڑھتی ہے۔ ‍

2 'اگر' بیان

2.1 'اگر' بیان کا بنیادی استعمال

if بیان جو Golang کی عام شرائطی بیان ہے۔ اس کی سنٹیکس مندرجہ ذیل ہے:

if شرط {
    // جب شرط صحیح ہوتی ہے تو ان کو چلایا جانے والا کوڈ
}

یہاں ایک سادہ مثال ہے:

package main

import "fmt"

func main() {
    x := 10
    if x > 5 {
        fmt.Println("x 5 سے زیادہ ہے")
    }
}

اس کوڈ میں چیک کیا جائے گا کہ کیا x 5 سے زیادہ ہے، اور اگر ہے تو یہ پرنٹ عمل کو انجام دے گا۔

2.2 شرائطی اظہارات

شرائطی اظہارات موازنہ کارکردگی آپریٹرز (مثلاً ==, !=, <, >, <=, >=) اور منطقی آپریٹرز (مثلاً && (AND)، || (OR)، ! (NOT)) سے مشتمل ہوتے ہیں۔

مثلاً، کسی متغیر کو ایک مخصوص رینج میں چیک کرنے کے لئے:

y := 20
if y >= 10 && y <= 30 {
    fmt.Println("y 10 اور 30 کے درمیان ہے")
}

مندرجہ بالا شرائطی اظہار میں، منطقی آپریٹر && استعمال ہوتا ہے تاکہ y کی قیمت 10 اور 30 کے درمیان ہو۔

2.3 اگر...ورنہ اور اگر ورنہ کی ساخت

'اگر' کی شرط پوری نہ ہونے کی صورت میں، ہم 'ورنہ' استعمال کر کے دوسرے کوڈ بلاک کو اجرا کر سکتے ہیں۔ 'ورنہ اگر' ہمیں مختلف شرائط دیکھنے کی اجازت دیتا ہے۔ یہاں ایک مثال ہے:

score := 88

if score >= 90 {
    fmt.Println("شاندار")
} else if score >= 80 {
    fmt.Println("اچھا")
} else if score >= 70 {
    fmt.Println("اوسط")
} else {
    fmt.Println("نیچے اوسط")
}

یہ کوڈ score کی قیمت کے مطابق مختلف تشخیصات پرنٹ کرے گا۔

3 انتخابی بیان

3.1 انتخابی بیان کی بنیادی سنٹیکس

switch بیان ایک مختصر شرائطی برانچ بیان ہے، خاص طور پر ان صورتوں کے لئے جہاں متعدد قیمتوں کا جائزہ لینا لازم ہوتا ہے۔ switch بیان کی بنیادی سنٹیکس مندرجہ ذیل ہوتی ہے:

switch آئیکسپریشن {
case قیمت1:
    // جب قیمت1 میں موزوں ہوتا ہے تو ان کو چلایا جانے والا کوڈ
case قیمت2:
    // جب قیمت2 میں موزوں ہوتا ہے تو ان کو چلایا جانے والا کوڈ
default:
    // ان کو چلایا جانے والا کوڈ ڈیفالٹ
}

اگر آئیکسپریشن کی قیمت case کے بعد کی قیمت سے موزوں ہوتی ہے تو متناظر کوڈ بلاک کو اجرا کیا جائے گا۔

3.2 انتخابی بیان فالتثرو

Golang کے switch بیان میں، ہر برانچ بطور ڈیفالٹ فال نہیں گرتا ہے مگر جب تک fallthrough کا استعمال نہ کیا جائے۔

switch num {
case 1:
    fmt.Println("ایک")
    fallthrough
case 2:
    fmt.Println("دو")
default:
    fmt.Println("نہ تو ایک ہے اور نہ ہی دو")
}

مندرجہ بالا کوڈ میں، اگر num 1 ہو تو، مساوی case 1 کے باوجود، fallthrough کے وجہ سے پروگرام case 2 میں چل کر "دو" چھاپے گا۔

3.3 قسم کی برانچ اور اپنی مرضی کی برانچ

switch بیان علاوہً متغیر کی قسم کی برانچنگ کو بھی دعم دیتا ہے، جسے قسم کی برانچنگ کہا جاتا ہے۔ علاوہ ازیں، ہم ضرورت کے مطابق مزید پیچیدہ اختیارات کی شرائط کے بنیاد پر بھی برانچ بنا سکتے ہیں۔

قسم کی برانچنگ کا مثال:

var i interface{} = 1

switch i.(type) {
case int:
    fmt.Println("i ایک مکمل عدد ہے")
case float64:
    fmt.Println("i ایک فلوٹ64 ہے")
default:
    fmt.Println("i کسی دوسری قسم کا ہے")
}

ضرورت کے مطابق مزید پیچیدہ شرائط کی شخصی برانچنگ کو لکھ کر تیار کیا جا سکتا ہے۔

4 عملی مشق

اس حصے میں، ہم شرائطی بیانات کو واقعی مثالوں کے ذریعے استعمال و فہم میں مزید توسیع دیں گے۔ عملی پروگرامنگ چیلنجز کے ذریعے، آپ کو 'اگر' اور 'انتخابی' بیانات کو استعمال کر کے حقیقی دنیا کے مسائل حل کرنے میں مہارت حاصل ہوگا۔

گریڈ کیلکولیٹر

چلو، ہم ایک سادہ گریڈ کیلکولیٹر لکھتے ہیں۔ یہ پروگرام صارف کی درج کردہ اسکور پر مبنی گریڈ تعین کرے گا اور اسے آؤٹ پٹ کرے گا۔ گریڈنگ کی معیار یہ ہیں:

  • 90 یا اس سے زیادہ کے نمبروں کے لئے A
  • 80 تا 89 کے نمبروں کے لئے B
  • 70 تا 79 کے نمبروں کے لئے C
  • 60 تا 69 کے نمبروں کے لئے D
  • 60 سے کم نمبروں کے لئے F

ہم اس فعالیت کو پورا کرنے کے لئے if یا switch اسٹیٹمنٹ استعمال کرسکتے ہیں۔ پہلے، ہم ایک if اسٹیٹمنٹ کا استعمال کرتے ہوئے ایک مثال دیکھتے ہیں:

package main

import (
	"fmt"
)

func main() {
	var score int
	fmt.Print("براہ کرم نمبر درج کریں: ")
	fmt.Scan(&score)

	if score >= 90 {
		fmt.Println("گریڈ: A")
	} else if score >= 80 {
		fmt.Println("گریڈ: B")
	} else if score >= 70 {
		fmt.Println("گریڈ: C")
	} else if score >= 60 {
		fmt.Println("گریڈ: D")
	} else {
		fmt.Println("گریڈ: F")
	}
}

اس کوڈ میں ہم پہلے score متغیر کا اعلان کرتے ہیں تاکہ صارف کا درج کردہ اسکور رکھا جا سکے۔ ہم صارف کی ان پٹ حاصل کرنے کیلئے fmt.Scan فنکشن استعمال کرتے ہیں۔ پھر ہم کئی if اور else if اسٹیٹمنٹس استعمال کرتے ہیں تاکہ نمبر کے لئے مطابقتی گریڈ تعین ہو۔

اب، ہم یک مثال دیکھتے ہیں جو switch اسٹیٹمنٹ کا استعمال کرتی ہے:

package main

import (
	"fmt"
)

func main() {
	var score int
	fmt.Print("براہ کرم نمبر درج کریں: ")
	fmt.Scan(&score)

	switch {
	case score >= 90:
		fmt.Println("گریڈ: A")
	case score >= 80:
		fmt.Println("گریڈ: B")
	case score >= 70:
		fmt.Println("گریڈ: C")
	case score >= 60:
		fmt.Println("گریڈ: D")
	default:
		fmt.Println("گریڈ: F")
	}
}

switch اسٹیٹمنٹ استعمال کرنے والے مثال میں، کوڈ کا ساخت ساکٹ اور صاف ہے۔ ہمیں بہت سارے متواتر if اور else if اسٹیٹمنٹس کا استعمال نہیں کرنا پڑتا؛ بلکہ ہم ہر case کے بعد کنڈیشن کو سیدھے پانچی کرتے ہیں۔ اگر پچھلے case کی کنڈیشن سے میل نہ کھاتا ہے تو وہ خود بخود اگلے case پر چلا جائے گا جب تک کے وہ مناسب شرط کو میچ نہیں کرلیتا ہے یا پھر default کیس تک پہنچتا ہے، جو F گریڈ پر اٹھا کر دیتا ہے۔

اب جب آپ نے بھی سکھ لیا ہے کہ آپ if اور switch کا استعمال کر کے کنڈیشنل اسٹیٹمنٹس کو استعمال کرسکتے ہیں، ہم آپ کو آپ کی اپنی پروگرام لکھنے کی مشق اور مزید فہم حاصل کرنے کی تجاویز دیتے ہیں۔

اگلے حصے میں، ہم آپ کو عملی مشکلات کو مضبوط کرنے کے لئے مزید پرنکشش کرنے کے لئے دوسرے مسائل پیش کریں گے۔

براہ کرم نوٹ کریں کہ اوپر دیا گیا کوڈ تعلیمی مقاصد کے لئے ہے۔ واقعی استعمال میں، صارف کے تعامل اور خطا سہارا کے عوامل کو مد نظر رکھنا چاہیے تاکہ یہ مضبوط ہو۔