Punjab Board · New syllabus 2026

10th Class Computer Chapter 4 Notes

Control Structures in Python · in Urdu

Definition

کنٹرول ساختیں طے کرتی ہیں کہ پروگرام کے بیانات اصل میں کس ترتیب میں عمل درآمد ہوں — کوڈ کے ہمیشہ سختی سے اوپر سے نیچے چلنے کی بجائے، کنٹرول ساختیں پروگرام کو فیصلے کرنے دیتی ہیں (شرط کے مطابق مختلف کوڈ چلانا) اور اعمال دہرانے دیتی ہیں (وہی کوڈ کئی بار چلانا)، جو ایسے پروگرام لکھنے کے لیے ضروری ہے جو مختلف حالات پر ذہانت سے ردعمل دیں بجائے ہمیشہ بالکل وہی مقررہ ترتیب کے مراحل کرنے کے۔

Definition

`if` کوڈ کا بلاک صرف تب چلاتا ہے جب اس کی شرط `True` ہو۔


`else` وہ بیان ہے جو شرط جھوٹی ہونے پر کوڈ چلانے کے لیے استعمال ہوتا ہے — یہ اپنا بلاک صرف تب چلاتا ہے جب پچھلی `if` (یا `elif`) شرط `False` تھی۔


`elif` (else-if) پروگرام کو ترتیب میں کئی شرائط چیک کرنے دیتا ہے: پائتھون پہلے `if` شرط چیک کرتا ہے، پھر ہر `elif` شرط ترتیب میں (صرف اگر پچھلی سب `False` تھیں)، اور آخر میں `else` پر واپس جاتا ہے اگر ان میں سے کوئی `True` نہ ہو — یہ پروگرام کو صرف دو کی بجائے زیادہ نتائج میں سے چننے دیتا ہے۔

Definition

`range()` فنکشن اعداد کا ایک سلسلہ پیدا کرتا ہے، عموماً یہ کنٹرول کرنے کے لیے استعمال ہوتا ہے کہ `for` لوپ کتنی بار دہرائے۔


`range()` کے تین پیرامیٹرز start، stop، اور step ہیں — مثلاً `range(1, 10, 2)` سے شروع ہوتا، سے پہلے رکتا، اور ہر بار بڑھتا ہے (`1, 3, 5, 7, 9` دیتا ہے)۔ اگر صرف ایک دلیل دی جائے (مثلاً `range(5)`)، start طے شدہ طور پر اور step طے شدہ طور پر ہوتا ہے۔


`while` لوپ اپنا بلاک اس وقت تک دہراتا ہے جب تک دی گئی شرط `True` رہے، ہر تکرار سے پہلے شرط چیک کرتا ہے — یہ ایسی صورتوں کے لیے موزوں ہے جہاں آپ پہلے سے نہیں جانتے کہ بالکل کتنی بار دہرانا ہے۔ `for` لوپ، اس کے برعکس، معلوم، مقررہ تعداد میں تکرار کرنے کے لیے موزوں ہے (یا کسی معلوم سلسلے پر، جیسے فہرست)، کیونکہ یہ کھلی شرط کی بجائے `range()` یا کسی مجموعے کے گرد بنایا گیا ہے۔

مثال 1 — نیسٹڈ لوپ گنتی

آؤٹ پٹ کیا ہے: `count = 0`، پھر `for i in range(2):` کے اندر `for j in range(3): count += 1`، پھر `print(count)`؟

  1. بیرونی لوپ بار چلتا ہے (`i = 0, 1`)۔
  2. ہر ایک کے لیے، اندرونی لوپ بار چلتا ہے (`j = 0, 1, 2`)، ہر بار `count` میں جمع کرتا ہے۔
  3. کل اضافے ۔

Answer:

Definition

نیسٹڈ لوپ دوسرے لوپ کے اندر رکھا گیا لوپ ہے — اندرونی لوپ بیرونی لوپ کی ہر ایک تکرار کے لیے اپنی تمام تکراریں مکمل کرتا ہے۔ یہ استعمال ہوتا ہے، مثلاً، گرڈ یا جدول جیسی ساخت (قطاریں اور کالم) کے ساتھ کام کرتے وقت، جہاں بیرونی لوپ قطاریں سنبھالتا ہے اور اندرونی لوپ ہر قطار کے اندر کالم سنبھالتا ہے۔

مثال 2 — ایک مستطیل ستارہ پیٹرن

نیسٹڈ لوپس استعمال کرتے ہوئے تین قطاروں اور پانچ کالموں کے ساتھ ستارے (Asterisk) پرنٹ کرنے کا کوڈ لکھیے۔

  1. بیرونی لوپ فی قطار ایک بار دہراتا ہے (3 بار)۔
  2. اندرونی لوپ، ہر قطار کے لیے، اسی لائن پر 5 ستارے پرنٹ کرتا ہے، پھر اندرونی لوپ ختم ہونے کے بعد نئی لائن پرنٹ ہوتی ہے۔

Answer: for i in range(3): for j in range(5): print("*", end="") print() # Output: # ***** # ***** # *****

مثال 3 — نیسٹڈ لوپس کے ساتھ ضرب کا جدول

اس کوڈ کا آؤٹ پٹ معلوم کیجیے: `for i in range(2, 4):` ` for j in range(1, 11):` ` print(f"{i} x {j} = {i*j:2d}", end=" ")` ` print()`

  1. بیرونی لوپ `i = 2, 3` کے لیے چلتا ہے (range(2, 4) 4 سے پہلے رکتا ہے)۔
  2. `i = 2` کے لیے، اندرونی لوپ `2 x 1 = 2` سے `2 x 10 = 20` تک، سب ایک لائن پر پرنٹ کرتا ہے (چونکہ `end=" "` ہر بار کے بعد نئی لائن روکتا ہے)، پھر `print()` نئی لائن شروع کرتا ہے۔
  3. `i = 3` کے لیے، اندرونی لوپ اسی طرح `3 x 1 = 3` سے `3 x 10 = 30` تک اگلی لائن پر پرنٹ کرتا ہے۔

Answer: قطار 1: 2 x 1 = 2 2 x 2 = 4 ... 2 x 10 = 20 قطار 2: 3 x 1 = 3 3 x 2 = 6 ... 3 x 10 = 30 (2 اور 3 کے ضرب کے جدول)

Definition

`print()` عام طور پر اپنے آؤٹ پٹ کے بعد خودکار طور پر نئی لائن شامل کرتا ہے؛ اسے `end` پیرامیٹر استعمال کر کے روکا (یا بدلا) جاتا ہے — مثلاً `print("Hi", end="")` `Hi` پرنٹ کرتا ہے بغیر بعد میں نئی لائن پر جائے، اگلے `print()` کو اسی لائن پر جاری رکھنے دیتا ہے۔ `end` پیرامیٹر کا مقصد بالکل یہی ہے: طے شدہ نئی لائن کی بجائے دیے گئے متن کے بعد کیا پرنٹ ہو یہ کنٹرول کرنا۔

Definition

پائتھون میں، فہرست کی انڈیکسنگ سے شروع ہوتی ہے — لہٰذا پہلا عنصر انڈیکس پر ہے، دوسرا انڈیکس پر، وغیرہ۔ کسی عنصر تک رسائی فہرست کا نام لکھ کر مربع قوسین میں انڈیکس کے ساتھ حاصل کی جاتی ہے، مثلاً `my_list[2]` تیسرے عنصر (انڈیکس ) تک رسائی حاصل کرتا ہے۔


تین فہرست میتھڈز اور ان کے مقاصد: `append()` فہرست کے آخر میں ایک آئٹم شامل کرتا ہے؛ `remove()` فہرست سے کسی مخصوص قدر کا پہلا میل کھاتا واقعہ حذف کرتا ہے؛ `sort()` فہرست کے عناصر کو صعودی ترتیب میں ترتیب دیتا ہے۔


`append` اور `remove` کا فرق: `append()` فہرست میں نیا آئٹم شامل کرتا ہے (اسے ایک سے بڑھاتا ہے)، جبکہ `remove()` فہرست سے موجود آئٹم حذف کرتا ہے (اسے ایک سے کم کرتا ہے) — وہ متضاد کام کرتے ہیں۔

Definition

`list.append()` موجودہ فہرست کے آخر میں ایک واحد آئٹم شامل کرتا ہے، مثلاً `my_list.append(10)` `10` کو نئے آخری عنصر کے طور پر شامل کرتا ہے۔


موجودہ فہرست آئٹم اس کے انڈیکس کو براہ راست نئی قدر تفویض کر کے بدلا جاتا ہے، مثلاً `my_list[1] = 99` دوسرے عنصر کو `99` میں بدلتا ہے۔


`reverse()` میتھڈ کسی فہرست کے عناصر کی ترتیب کو جگہ پر ہی الٹ دیتا ہے — مثلاً اگر `my_list = [1, 2, 3]`، تو `my_list.reverse()` اسے `[3, 2, 1]` میں بدل دیتا ہے۔

مثال 4 — فہرست کے ساتھ کام کرنا

دکھائیے کہ فہرست کیسے بنائی جائے، آئٹم کیسے شامل کیا جائے، آئٹم کیسے حذف کیا جائے، اور عنصر تک رسائی کیسے حاصل کی جائے۔

  1. بنائیں: `fruits = ["apple", "banana", "cherry"]`۔
  2. آئٹم شامل کریں: `fruits.append("mango")` — فہرست `["apple", "banana", "cherry", "mango"]` بن جاتی ہے۔
  3. آئٹم حذف کریں: `fruits.remove("banana")` — فہرست `["apple", "cherry", "mango"]` بن جاتی ہے۔
  4. عنصر تک رسائی: `fruits[0]` `"apple"` دیتا ہے (پہلا عنصر، انڈیکس پر)۔

Answer: fruits = ["apple", "banana", "cherry"] fruits.append("mango") fruits.remove("banana") print(fruits[0]) # apple

Definition

پائتھون لائبریریز عام کاموں کے لیے پہلے سے لکھا، ٹیسٹ شدہ کوڈ فراہم کر کے پروگرامنگ کی مؤثریت بڑھاتی ہیں، پروگرامر کو وہ فعالیت شروع سے لکھنے (اور ڈی بگ کرنے) سے بچاتی ہیں — مثلاً `random` لائبریری بے ترتیب اعداد پیدا کرنے کے تیار افعال فراہم کرتی ہے، جسے ورنہ خود کافی پیچیدہ بے ترتیب-عدد ایلگورتھم لکھنا پڑتا۔


کوئی لائبریری `import` بیان استعمال کر کے پائتھون پروگرام میں امپورٹ کی جاتی ہے، مثلاً `import random` `random` لائبریری کے افعال اس پروگرام میں استعمال کے لیے دستیاب بناتا ہے۔

Definition

ڈی بگنگ کسی پروگرام کے کوڈ میں خرابیاں (بگز) تلاش اور ٹھیک کرنے کا عمل ہے۔


ایک ڈی بگنگ تکنیک کوڈ کے مختلف نقاط پر آؤٹ پٹ بیانات (جیسے اضافی `print()` کالز) شامل کرنے میں شامل ہے، متغیرات کی موجودہ قدر دکھانے اور یہ چیک کرنے کے لیے کہ پروگرام ہر مرحلے پر توقع کے مطابق برتاؤ کر رہا ہے یا نہیں — بالکل یہ تلاش کرنے میں مدد دیتی ہے کہ کچھ غلط کہاں ہو رہا ہے۔


ایک ڈی بگنگ ٹول جو پروگرامر کو کوڈ لائن بہ لائن چلنے اور متغیرات دیکھنے دیتا ہے وہ ایک ڈی بگر ہے (ایک تعامل پذیر ڈی بگنگ ٹول، جیسے پائتھون کا بلٹ ان `pdb` یا کسی IDE میں شامل ڈی بگر)۔

Definition

یونٹ ٹیسٹنگ کوڈ کے سب سے چھوٹے انفرادی حصوں (یونٹس) کو ٹیسٹ کرتی ہے، جیسے ایک واحد فنکشن، الگ تھلگ — یہ اہم ہے کیونکہ یہ خرابیاں جلدی پکڑتی ہے، کوڈ کے ایک چھوٹے، مخصوص حصے میں، اس سے پہلے کہ وہ خرابی پھیل کر بڑے پروگرام میں کہیں اور زیادہ مشکل سے تشخیص ہونے والے مسائل پیدا کرے۔


انٹیگریشن ٹیسٹنگ چیک کرتی ہے کہ کوڈ کے مختلف حصے (یونٹس) ملنے کے بعد اکٹھے کیسے کام کرتے ہیں، کیونکہ کوڈ جو الگ تھلگ صحیح کام کرتا ہے وہ بھی دیگر حصوں کے ساتھ تعامل کرنے پر ناکام ہو سکتا ہے۔


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


ریگریشن ٹیسٹنگ کوڈ میں تبدیلیاں کرنے کے بعد موجودہ ٹیسٹ دوبارہ چلاتی ہے، یہ چیک کرنے کے لیے کہ ان تبدیلیوں نے حادثاتی طور پر کچھ ایسا نہیں توڑا جو پہلے صحیح کام کرتا تھا — یہ اہم ہے کیونکہ ایک بگ ٹھیک کرنا یا ایک خصوصیت شامل کرنا بعض اوقات غیرارادی طور پر کہیں اور نئی بگ لا سکتا ہے۔

خلاصہ (Quick Recap)

  • ●کنٹرول ساختیں پروگرام کو فیصلے کرنے اور اعمال دہرانے دیتی ہیں، ہمیشہ اوپر سے نیچے چلنے کی بجائے
  • ●if / elif / else: شرائط ترتیب میں چیک کرتا ہے، عین ایک میل کھاتا بلاک چلاتا ہے (یا کوئی نہیں، بغیر else کے)
  • ●for لوپ (مقررہ/معلوم تکرار، اکثر `range(start, stop, step)` کے ساتھ) بمقابلہ while لوپ (شرط سچ رہنے تک دہراتا ہے)
  • ●نیسٹڈ لوپس: اندرونی لوپ بیرونی لوپ کی ہر تکرار کے لیے مکمل ہوتا ہے — گرڈز/جدولوں کے لیے استعمال؛ `end=` پیرامیٹر طے کرتا ہے `print()` کے آؤٹ پٹ کے بعد کیا آئے
  • ●فہرستیں: -انڈیکسڈ؛ `append()` شامل کرتا، `remove()` قدر حذف کرتا، `sort()` صعودی ترتیب دیتا، `reverse()` ترتیب الٹ دیتا ہے؛ `list[index]` سے رسائی/تبدیلی
  • ●لائبریریز (`import`) تیار کوڈ فراہم کرتی ہیں (مثلاً `random`)، محنت بچاتی اور بگز کم کرتی ہیں
  • ●ڈی بگنگ: پرنٹ بیانات یا ڈی بگر (لائن بہ لائن چلنا، متغیرات دیکھنا)
  • ●ٹیسٹنگ: یونٹ (ایک حصہ) انٹیگریشن (حصے اکٹھے) فنکشنل (ضروریات پوری کرتا) ریگریشن (تبدیلی کے بعد کچھ نہیں ٹوٹا)

Keep going

More 10th Class Computer notes

All 10th Class Computer chapters