فیصلہ سازی۔۔ اگر ایسا ہو تو۔۔ (حصہ پنجم)

فیصلہ سازی۔۔ اگر ایسا ہو تو۔۔

تحریر: سید محسن کریم

جیسا کہ ہم نے پچھلے قسط میں کمپرژن آپریٹر کو سمجھنے کی کوشش کی تھی۔

اسے ایک مثال سے سمجھنے کی کوشش کرتے ہیں، اگر میرا نام محسن ہے تو یہ مجھے ویلکم کرے ورنہ کہہ دے کہ میں آپ کو نہیں جانتا۔

سب سے پہلے نام کا ان پٹ ایک متغیر میں محفوظ کرلیتے ہیں۔

name = input("Enter your Name: ")

اب ایک کنڈیشن لیتے ہیں جو کہ نام تقابل پر ٹرو یا فالس ریٹرن کرے۔ یہاں ہم یہ ویلیو ویری ایبل میں محفوظ کررہے ہیں۔ جو کہ ان پٹ لیتے ہی فوری ردعمل دیکھائے گا

check = name == "Mohsin"

اب ہم اس کے ٹرو ہونے پر کوئی رد و عمل ظاہر کرینگے


if check:
     print("Hello " + name)

یہاں آپ نے کچھ چیزیں نوٹ کی ہوں گی.

  • پہلا if جو کہ ایک کی ورڈ ہے جو کہ ٹرو کنڈیشن پر ردعمل دکھاتا ہے۔
  • پھر فوراَ بعد ہم نے کنڈیشن کا رد و عمل ویری ایبل کی صورت میں لکھا جو کہ ٹرو یا فالس میں سے کچھ بھی ہوسکتا ہے۔
  • پھر ہم نے کولن : کا نشان فوراََ بعد استعمال کیا ہے، پائیتھن میں اسکا مطلب بلاک کے آغاز کی صورت میں لیا جاتا ہے۔
  • پھر ہم اگلی سطر میں چلے گئے اور شاید آپ یہاں حیران ہو کہ ہم نے پرنٹ سے قبل کچھ جگہ چھوڑی ہے۔
  • ایسا دراصل اس لیے کیا کہ ہم یہ بتانا چاہتے ہیں کہ اسے کے بعد والی لائین تب ہی رد عمل کرے جب فلاں کنڈیش میچ کرجائے۔ یہ کانسپٹ آپ کو وقت کے ساتھ سمجھ آنے لگے گا۔ اور کولن کا مقصد بھی یہی بتانا ہے۔

لیکن یہ کوڈ غلط ہونے پر کوئی رد عمل نہیں کرے گا اس کیلئے ہم else کی ورڈ کا استعمال کرینگے۔ ایسے

if check:
     print("Hello " + name)
else:
     print("Not Match")

یہاں آپ نے اسپیسیس کا خاص خیال رکھنا ہے بہتر ہے اسپیس کی جگہ tab کا استعمال کیا جائے۔

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

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

پھر else کے بعد ہم صرف کولن لکھیں گے جو کہ else کا اندرونی بلاک بنائے گا

اور پھر اوپر کی طرح ہی، اس طرح فاصلہ چھوڑے گے کہ نیچے والی لائین if کے اندر والی لائین سے میچ میں رہے۔

اب ہم چاہتے ہیں کہ یہ "محسن" نام کہ علاوہ "علی" نام پر بھی ری ایکٹ کرے۔ اس کیلئے ہم elif کا کیورڈ استعمال کرینگے۔

if check:
     print("Hello " + name)
elif name == "Ali":
     print("Hello" + name)
else:
     print("Not Match")

یہاں ہم نے elif میں بنا ویری ایبل بنائے کنڈیشن دی ہے جو کہ وہی کام کرے گی جو کہ ویری ایبل کی صورت میں ہو باقی اگر چاہے تو آپ اس کو بھی ویری ایبل میں محفوظ کرکے استعمال کرسکتے ہیں۔ تاکہ اسٹیپ بائے اسٹیپ پروسیس کو سمجھا جاسکے۔

check_1 = name == "Ali"
if check:
     print("Hello " + name)
elif check_1:
     print("Hello" + name)
else:
     print("Not Match")

باقی elif کا قاعدہ بھی وہی ہے جو کہ if یا else کا ہے۔

نوٹ: elif کا بلاک ہمیشہ if کے بعد اور else پہلے استعمال کیا جاتا ہے یعنی درمیان میں۔

ہم اسے or کی کنڈیش کے ساتھ بھی لکھ سکتے ہیں۔ جو کہ کسی ایک کنڈیشن پر چلے گا۔ اس طرح

if name == "Mohsin" or name == "Ali":
      print("Hello" + name)
else:
     print("Not Match")

اب ہم ایک پروگرام بناتے ہیں جو کہ طاق(odd) اور جفت (even) کی تفریق کرسکے۔ مشورہ یہی ہے کہ پہلے خود اسکی مشق کرے اور پھر درج ذیل کوڈ کا مشاہدہ کیجئے۔

Example Program:

num = int(input("Enter any number"))
even = num % 2 == 0
odd = num % 2 == 1 # صرف کانسپٹ کو سمجھانے کیلئے

if even:
      print(f"it's even number")
else:
      print(f"it's odd number")

یہاں کیا ہوا سطر بہ سطر سمجھنے کی کوشش کرتے ہیں

  • اول تو آپ یہاں کنفیوژ ہوسکتے ہیں۔ لیکن یہاں اس بات کی وضاحت ضروری بھی ہے۔ یہاں اصل میں کچھ یوں ہوا ہے:
  • num = input("Enter any number")
    num = int(num)
  • چونکہ ہم پہلے ان پٹ اسٹرنگ کو num کے ویری ایبل میں لکھ رہے ہیں اور وہی متغیر انٹ میں واپس لکھ رہے تو ہم نے اس اضافی کام کو مختصر کرکے ڈائرکٹ input ہی پاس کردیا۔
  • دوسری اور تیسری سطر میں ہم نے طاق اور جفت نمبر کی شناخت کی کنڈیش لکھی ہے۔ اصل میں بغور جائزہ لیا جائے تو جفت نمبر وہ نمبر کہلاتے ہیں جو 2 سے مکمل تقسیم ہوجائے اور اس صورت میں ہمارے پاس کوئی ریمائنڈر نہیں بچتا۔
  • جیسے اگر 10 کو دو سے تقسیم کرے تو یہ مکمل تقسیم ہوجائے گا اور پیچھے کوئی نمبر نہیں بچے گا لیکن اگر ہم کسی طاق نمبر یعنی 9 کو 2 سے تقسیم کرے تو ہمارے پاس اضافی 1 بچے گا۔ اور انہی اضافی نمبر کا سہارا ہم نے طاق اور جفت کی شناخت کیلئے کیا ہے۔
  • پھر ہم نے if کنڈیشن کا استعمال کیا ہے اگر تو یہ جفت کی ٹرو ویلیو یعنی اگر ریمائنڈر زیرو کے برابر ہو تو ہمیں یہ بتائے گا کہ دیا گیا نمبر جفت ہے اور فالس کی صورت میں یہ else پر چلا جائے گا اور چونکہ طاق اور جفت کا ریمائنڈر محض صفر اور ایک ہی آتا ہے تو ہمیں دوسری کنڈیشن دینے کی ضرورت نہیں کیونکہ فالس کی صورت میں یہ 1 ماننا جائے گا اور else کا بلاک چل جائے گا۔ ہم اسے ایسے بھی لکھ سکتے ہیں۔
if even:
      print(f"it's even number")
elif odd:
      print(f"it's odd number")

لیکن اوپر والی صورت زیادہ پریسائز ہے بنسبت اس کے۔

ایک سوال:

میں چاہتا ہوں کہ میں پانچ پھلوں کے نام لکھوں، طریقہ تو یہی ہے کہ میں تمام پھلوں کو الگ الگ ویری ایبل میں محفوظ کروں اس طرح

fruit_0 = "Banana"
fruit_1 = "Orange"
fruit_2 = "Mango"
fruit_3 = "Grapes"
fruit_4 = "Apple"

اور پھر انکی پرنٹنگ بھی انھی ویری ایبل سے کی جائے۔ لیکن ہمیں انکے درمیان آراء یا طویل راستے کی ضرورت نہیں۔ اس کیلئے بہتر طریقہ ہے کہ ہم ان پھلوں کو ایک ہی جگہ محفوظ کریں، جیسے

fruits = ["Banana", "Orange", "Mango", "Grapes", "Apple"]

اب اگر مجھے ان پھلوں کے نام ایک ایک کرکے پرنٹ کرنے ہیں تو میں وہ یوں کرسکتا ہوں

for fruit in fruits:
    print(fruit)

لیکن اس کے ساتھ ساتھ آپ کو بریک کے بارے میں بھی جاننا ہوگا، جب آپ کسی پروگرام کو مکمل طور پر روکنا چاہتے ہیں یا مکمل بلاک ختم کرنا چاہتے ہیں تو اس میں بریک یا continue کا استعمال بھی کیا جاتا ہے۔

نتیجہ:

پروگرامنگ کی مشق کا بنیادی مقصد یہ ہے کہ آپ اس میں بہترین تسلسل بنا پائیں اور اسے عمل میں لائیں۔ ان سادہ مثالوں سے ہمیں اچھے پروگرامینگ کوڈ کی بناوٹ پر توجہ دینی چاہیے، جو کہ مستقبل میں آپ کے کام آ سکتے ہیں۔

ایک تبصرہ شائع کریں

Please Select Embedded Mode To Show The Comment System.*

جدید تر اس سے پرانی