لوپس — دہرانا
کیوں دہرائیں؟
اگر آپ 1 سے 100 تک گنتی لکھنا چاہتے ہیں، تو 100 لائنیں لکھنے کی ضرورت نہیں۔ لوپ خود کرے گا — ایک ہی بلاک کوڈ کو کمپیوٹر بار بار دہرا دیتا ہے، جب تک ایک شرط پوری ہوتی رہے۔
جبتک (while loop)
رکھو گنتی؛1 =
جبتک) گنتی} (5 =>
لکھو)گنتی؛(
گنتی = گنتی؛1 +
{
آؤٹ پٹ:
1
2
3
4
5
جبتک (چوتھا کلیدی لفظ) تب تک چلتا ہے جب تک شرط سچ ہو۔ ہر حصے کا کام:
جبتک) گنتی(5 =>— ہر بار لوپ دہرانے سے پہلے یہ شرط دوبارہ چیک ہوتی ہے۔ سبق 3 سے یاد کریں:>=مطلب "چھوٹا یا برابر" — یعنی "جب تک گنتی، 5 سے چھوٹی یا برابر ہے"۔ جیسے ہی یہ جھوٹ نکلے، لوپ رک جاتا ہے۔} {— اندر کی لائنیں وہ کام ہیں جو ہر بار دہرائے جاتے ہیں (بالکلاگرکے بلاک کی طرح، بس یہاں ایک ہی دفعہ نہیں چلتا)۔گنتی = گنتی؛1 +— یہ سب سے اہم لائن ہے۔ یہگنتیکو ہر بار 1 سے بڑھاتی ہے (اسے اضافہ/increment کہتے ہیں)۔=یہاں دوبارہ "میں رکھو" ہے (سبق 2 سے) — دائیں طرف (گنتی1 +) پہلے حساب ہوتا ہے، پھر نتیجہ بائیں طرف کے ڈبے میں واپس رکھا جاتا ہے۔ اس لائن کے بغیرگنتیکبھی نہیں بدلے گی، شرط ہمیشہ سچ رہے گی، اور لوپ کبھی نہیں رکے گا۔
جبتک لوپ استعمال کرتے ہوئے 1 سے 3 تک گنتی پرنٹ کریں (ہر نمبر اپنی لائن میں)۔
دائیں طرف اڈا میں کوڈ لکھ کر چلائیں
لوپ کیسے کام کرتا ہے؟
اوپر والا جبتک لوپ اندر سے یوں سوچتا ہے — ہر قدم پر پہلے گنتی کی موجودہ قیمت دیکھیں، پھر شرط چیک کریں، پھر فیصلہ کریں کہ چلانا ہے یا رکنا ہے:
1. گنتی = 1 ← شرط: 1 <= 5 ✓ → چلاؤ
2. گنتی = 2 ← شرط: 2 <= 5 ✓ → چلاؤ
3. گنتی = 3 ← شرط: 3 <= 5 ✓ → چلاؤ
4. گنتی = 4 ← شرط: 4 <= 5 ✓ → چلاؤ
5. گنتی = 5 ← شرط: 5 <= 5 ✓ → چلاؤ
6. گنتی = 6 ← شرط: 6 <= 5 ✗ → رکو
(اوپر کے خاکے میں شرط کو عام "چھوٹا یا برابر" کے مطلب سے لکھا گیا ہے، تاکہ سمجھنا آسان ہو — سورس کوڈ میں یہی >= سے لکھا جاتا ہے۔)
ابھی آزمائیں
رکھو گنتی؛1 =
جبتک) گنتی} (10 =>
لکھو)گنتی؛(
گنتی = گنتی؛1 +
{
پہلے پچھلا چیک پوائنٹ مکمل کریں
جمع کرنا
رکھو جمع؛0 =
رکھو گنتی؛1 =
جبتک) گنتی} (10 =>
جمع = جمع + گنتی؛
گنتی = گنتی؛1 +
{
لکھو 1")سے 10 تک جمع + " :جمع؛(
یہاں دو متغیر مل کر کام کر رہے ہیں: گنتی گنتی کرتا ہے (1، 2، 3...)، اور جمع ہر قدم پر گنتی کی موجودہ قیمت اپنے اندر جمع کرتا رہتا ہے۔ یہ پیٹرن — ایک متغیر لوپ چلاتا ہے، دوسرا نتیجہ اکٹھا کرتا ہے — آگے بہت سی جگہ استعمال ہوگا۔
پہلے پچھلا چیک پوائنٹ مکمل کریں
محتاط رہیں: لامتناہی لوپ
اگر شرط کبھی جھوٹ نہ ہو — لوپ رکے گا نہیں:
# یہ مت چلائیں!
رکھو گنتی؛1 =
جبتک) گنتی} (0 <
لکھو)گنتی؛(
# گنتی بڑھی نہیں — لوپ نہیں رکے گا
{
یاد رکھیں < کا مطلب "بڑا" ہے، تو یہ شرط "جب تک گنتی صفر سے بڑی ہے" ہے — اور گنتی کبھی نہیں بدلتی، تو یہ ہمیشہ سچ رہے گی۔ نقطہ ایک حفاظتی حد (safety limit) رکھتا ہے جو ایسے لوپ کو ایک وقت کے بعد خود روک دیتی ہے، لیکن بہتر ہے کہ لامتناہی لوپ کبھی لکھیں ہی نہ — ہر بار جو متغیر جبتک کی شرط میں استعمال ہو، اسے بلاک کے اندر کہیں نہ کہیں بدلنا نہ بھولیں۔
پہلے پچھلا چیک پوائنٹ مکمل کریں
مشق 1
1 سے 20 تک صرف جفت نمبر پرنٹ کریں۔
مشق 2
1 سے 100 تک تمام نمبروں کا ضرب (factorial نہیں، صرف ضرب) پرنٹ کریں۔
پہلے پچھلا چیک پوائنٹ مکمل کریں
چیلنج (طالب علم کا کام)
ایک پروگرام لکھیں جو:
- 1 سے 50 تک گنے
- ہر نمبر جو 3 پر تقسیم ہو، اس کے آگے "تین کا ضریب" لکھے
مثال آؤٹ پٹ:
1
2
3 تین کا ضریب
4
5
6 تین کا ضریب
...
آگے کیا؟
اگلے سبق میں: فنکشن — کام کو نام دینا اور بار بار استعمال کرنا۔