JavaRush /جاوا بلاگ /Random-UR /جبکہ جاوا میں لوپ

جبکہ جاوا میں لوپ

گروپ میں شائع ہوا۔

تعارف

ہمارے پہلے پروگرام ہدایات کا ایک سلسلہ تھا جو یکے بعد دیگرے نافذ کیا گیا۔ کوئی کانٹے نہیں۔ یہ HelloWorld ہے، جو کنسول میں ایک مبارک فقرہ اور ریاضی کے حساب کتاب کرتا ہے۔ پہلے پروگراموں کے بعد، ہم نے برانچ کرنا سیکھا، یعنی پروگرام نے حالات کے لحاظ سے کچھ اعمال انجام دیے۔ گرم اور ٹھنڈا کرنے کے لیے آپ ایئر کنڈیشنر کو آن کرنے کا طریقہ یہ ہے:
if (tempRoom>tempComfort)
    airConditionerOn();
if (tempRoom<tempComfort
    heaterOn();
آئیے اگلا قدم اٹھاتے ہیں۔ روزمرہ کی زندگی میں، ہم اکثر نیرس، بار بار کام کرتے ہیں، مثال کے طور پر، ایک پائی کے لئے سیب چھیلنا. اس دلچسپ عمل کو اس طرح بیان کیا جا سکتا ہے:
  1. اگر بیسن میں سیب ہیں، تو 1.1 سے 1.4 تک کے مراحل پر عمل کریں:

    1. 1.1 ایک سیب لیں۔
    2. 1.2 اسے صاف کر کے ٹکڑوں میں کاٹ لیں۔
    3. 1.3 ایک کڑاہی میں پیسٹری پائی کی بنیاد پر رکھیں
    4. 1.4 آئیے قدم 1 پر واپس چلتے ہیں۔
آپریٹر جبکہ - 2
فرض کریں کہ آپ کے پاس 10 سیب، 2 ہاتھ اور ایک چاقو ہے۔ زندگی میں، آپ ایک ہی الگورتھم کی رہنمائی میں پورے دس کو مسلسل صاف کرتے ہیں۔ آپ پروگرام کو ہر ایک سیب کے ساتھ دہرانے والا عمل کیسے کر سکتے ہیں؟
  • آئیے ہم اپنے آپ کو سیبوں کی تعداد کا پابند کریں، لیکن اگر ہمارے پاس ان میں سے کچھ ہیں، تو کچھ حکموں کو بغیر کسی "پے لوڈ" کے بجا لایا جائے گا (اور، شاید، ہم ایک غیر موجود سیب کو چھیلتے ہوئے خود کو کاٹ لیں گے)۔
  • اگر ہماری پروسیسنگ ٹیموں سے زیادہ سیب ہیں، تو کچھ پروڈکٹس غیر پروسیس ہو جائیں گے۔
  • اس طرح کے "کوڈ" کو پڑھنا مشکل ہے، اس میں بہت ساری تکرار ہوتی ہے، اور اس میں ترمیم کرنا مشکل ہے۔

لوپس متعدد بار کارروائیاں کرنے کے لیے آپریٹرز ہیں۔

جاوا جبکہ لوپ (وائل لوپ) ہمارے معاملے میں اچھا کام کرتا ہے۔ یہ ڈیزائن متعدد اعمال کو ایک جامع اور قابل فہم ڈھانچے میں ترتیب دیتا ہے۔ جاوا میں پائی کے لیے سیب کے ٹکڑے کرنے کا الگورتھم کچھ اس طرح نظر آ سکتا ہے:
while(числоЯблокВТазике>0) {
    яблоко = тазик.взятьОчередноеЯблоко();
    положитьВПирог(яблоко.чистить().нарезать());
    числоЯблокВТазике--;//-- this is a decrement, reduces the number of apples by one
}
System.out.println('Apples for the pie are processed.');

کمانڈ سنٹیکس

دوران بیان بیان کرنے کا پہلا طریقہ یہ ہے:
while(Логическое выражение) {
	// Loop body - periodically executed statement(s)
}
یہ اس طرح کیا جاتا ہے (مرحلہ بہ قدم):
  1. ہم بولین کی حالت کا جائزہ لیتے ہیں جو قوسین میں رہتے ہوئے اس کی پیروی کرتی ہے۔
  2. اگر منطقی حالت درست ہے، تو لوپ باڈی میں بیانات کو عمل میں لایا جاتا ہے، لوپ باڈی میں آخری بیان کو انجام دینے کے بعد، مرحلہ 1 پر جائیں۔
  3. اگر منطقی حالت غلط ہے، تو while لوپ کے باہر پہلے بیان پر جائیں۔

پیشگی شرط کے ساتھ لوپ

چونکہ لوپ کی باڈی پر عمل کرنے سے پہلے، ہم ہمیشہ ایک منطقی اظہار (لوپ میں داخل ہونے کی شرط) کا پہلے سے حساب لگاتے ہیں، اس قسم کے دورانیے کو اکثر شرط کے ساتھ لوپ کہا جاتا ہے۔ آئیے پہلے دس عدد کی ایک جدول بنائیں، عدد کی مثبت طاقتیں:
public static void main(String[] args) {
    int number = 3; // Number to be raised to a power
    int result = 1; // Result of exponentiation
    int power = 1; // Initial exponent
    while(power <= 10) { // loop entry condition
        result = result * number;
        System.out.println(number + "to the extent" + power + " = " + result);
        power++;
    }
}
کنسول آؤٹ پٹ نتیجہ:
3 в степени 1 = 3
3 в степени 2 = 9
3 в степени 3 = 27
3 в степени 4 = 81
3 в степени 5 = 243
3 в степени 6 = 729
3 в степени 7 = 2187
3 в степени 8 = 6561
3 в степени 9 = 19683
3 в степени 10 = 59049
Process finished with exit code 0

پوسٹ کنڈیشن کے ساتھ لوپ

سائیکل کی دوسری قسم:
do {
    // Loop body - periodically executed statement(s)
}while (Логическое выражение);
مندرجہ ذیل کے طور پر انجام دیا (مرحلہ):
  1. لوپ کی باڈی کو عمل میں لایا جاتا ہے (ڈو کی ورڈ کے فوراً بعد)۔
  2. ہم بولین کی حالت کا جائزہ لیتے ہیں جو قوسین میں رہتے ہوئے اس کی پیروی کرتی ہے۔
  3. اگر منطقی حالت درست ہے، تو مرحلہ 1 پر جائیں۔
  4. اگر منطقی حالت غلط ہے، تو while لوپ کے باہر پہلے بیان پر جائیں۔
پچھلی قسم کے لوپ سے دو اہم فرق: لوپ کی باڈی کو کم از کم ایک بار عمل میں لایا جاتا ہے اور لوپ کی باڈی کے عمل کے بعد منطقی حالت کی جانچ کی جاتی ہے۔ لہذا، اس قسم کے دوران لوپ کو پوسٹ کنڈیشن لوپ کہا جاتا ہے۔ اس بار ہم 10000 سے زیادہ نہ ہونے والے نمبر کی طاقتوں کا ایک جدول دکھائیں گے۔
public static void main(String[] args) {
    int number = 3;// Number to be raised to a power
    int result = number;// Result of exponentiation
    int power = 1;// Initial exponent
    do {
        System.out.println(number + "to the extent" + power + " = " + result);
        power++;
        result = result * number;
    }while (result < 10000); // loop exit condition
کنسول آؤٹ پٹ نتیجہ:
3 в степени 1 = 3
3 в степени 2 = 9
3 в степени 3 = 27
3 в степени 4 = 81
3 в степени 5 = 243
3 в степени 6 = 729
3 в степени 7 = 2187
3 в степени 8 = 6561
Process finished with exit code 0
کوڈ میں تبدیلیوں پر توجہ دیں، اس کا موازنہ لوپ کے ورژن سے پیشگی شرط کے ساتھ کریں۔

لوپس کے ساتھ کام کرنے کے بارے میں دلچسپ حقائق

لوپ کے باڈی میں کنٹرول کمانڈز

دو کمانڈز ہیں جو لوپ کی ترقی کو متاثر کرتی ہیں: بریک، جن کی خصوصیات ہم اگلے باب میں دکھائیں گے، اور جاری رہے.
  • جاری رکھیں - موجودہ لوپ کے باڈی پر عمل درآمد کو روکتا ہے اور جب آپریٹر کے منطقی اظہار کی طرف جاتا ہے۔ اگر حساب شدہ اظہار درست ہے تو، لوپ کا عمل جاری رہے گا۔
  • بریک - موجودہ لوپ پر عمل درآمد کو فوری طور پر روکتا ہے اور اس سے باہر پہلی کمانڈ پر چھلانگ لگا دیتا ہے۔ اس طرح، موجودہ لوپ کے عمل میں رکاوٹ ہے. ہم اگلے عنوان میں اس پر مزید تفصیل سے غور کریں گے۔
آئیے اپنے پھل کی مثال کو یاد رکھیں۔ اگر ہمیں پیش کردہ سیب کے معیار کے بارے میں یقین نہیں ہے، تو ہم کمانڈ کا استعمال کرتے ہوئے کوڈ کو تبدیل کر سکتے ہیں continue:
while(числоЯблокВТазике>0) {
    яблоко = тазик.взятьОчередноеЯблоко();
    числоЯблокВТазике--;//-- this is a decrement, reduces the number of apples by one
    if (яблоко.плохое()) {  // method will return true for rotten, etc. apples
        яблоко.выкинутьВМусор();
        continue; // continue the loop, go to the condition number ofApplesIn the Basin>0
    }
    положитьВПирог(яблоко.чистить().нарезать());
}
تعمیر کا continueاستعمال اکثر اس وقت کیا جاتا ہے جب لوپ کے باڈی میں کسی خاص حالت کے پیش آنے پر کمانڈز پر عمل درآمد کرنا ضروری ہوتا ہے، مثال کے طور پر، آلات میں سینسر کے متحرک ہونے پر عمل کرنا (بصورت دیگر صرف اس کے اشارے پڑھنے کا چکر جاری رکھیں) یا صرف سائیکل کے مخصوص مراحل پر ایک اظہار کا حساب لگانا۔ آخری کیس کی ایک مثال قدرتی اعداد کے کیوبز کے مجموعے کا تھوڑی دیر میں کیلکولیشن ہے جن کا مربع ان کی تعداد سے کم ہے:
public static void main(String[] args) {
    int sum = 0;    // total amount
    int i = 0;      // starting number of the row
    int count = 20; // amount of numbers
    while(i<=count) {
        i++;        // take the next number, i++ is equivalent to i=i+1
        if (i*i<=count)  // if the square of the number is less
            continue;   // number of numbers - do not count the sum
                        // move on to the next number in the loop
        sum += i*i*i; // otherwise, we calculate the sum of cubes of numbers
    } // sum += i*i*i - notation similar to sum = sum + i*i*i
    System.out.println(sum);// print result
}

لامتناہی سائیکل

یہ کنٹرول کمانڈز اکثر لامحدود لوپ میں استعمال ہوتے ہیں۔ اسے اس لیے کہا جاتا ہے کیونکہ منطقی اخراج کی شرط کبھی مطمئن نہیں ہوتی۔ کوڈ میں یہ کچھ ایسا لگتا ہے:
while(true) {
    // Loop body
}
breakاس صورت میں، اس سے باہر نکلنے کو منظم کرنے کے لیے کمانڈ کا استعمال مفید ہوگا ۔ اس قسم کا لوپ اس وقت ہوتا ہے جب بیرونی حالات کا انتظار کیا جاتا ہے جو لوپ باڈی کی منطق سے باہر بنتے ہیں۔ مثال کے طور پر، گیمز میں جو ہیرو کے ارد گرد ورچوئل دنیا کی تقلید کرتے ہیں (لوپ سے باہر نکلنا = گیم سے باہر نکلنا)، آپریٹنگ سسٹم۔ یا الگورتھم کا استعمال کرتے ہوئے، شاید لوپ میں آنے والی ہر کال کے ساتھ نتیجہ کو بہتر بنانا، لیکن انہیں وقت یا کسی بیرونی واقعے (چیکرز، شطرنج یا موسم کی پیشن گوئی) کی موجودگی کے لحاظ سے محدود کرنا۔ یاد رہے کہ عام حالات میں لامتناہی لوپس پروگرام کے عدم استحکام کے مسائل میں سے ایک ہیں۔ ظاہر کرنے کے لیے، آئیے اعداد کی طاقتوں پر واپس آتے ہیں:
public static void main(String[] args) {
    int number = 3; // Number to be raised to a power
    int result = 1; // Result of exponentiation
    int power = 1; // Initial exponent
    while(true) {
        result = result * number;
        System.out.println(number + "to the extent" + power + " = " + result);
        power++;
        if (power>10)
            break; // exit from the loop
    }
}
کنسول آؤٹ پٹ نتیجہ:
3 в степени 1 = 3
3 в степени 2 = 9
3 в степени 3 = 27
3 в степени 4 = 81
3 в степени 5 = 243
3 в степени 6 = 729
3 в степени 7 = 2187
3 в степени 8 = 6561
3 в степени 9 = 19683
3 в степени 10 = 59049
Process finished with exit code 0

نیسٹڈ لوپس

یہاں ہم اپنے سائیکلوں کے بارے میں آخری موضوع کی طرف آتے ہیں۔ آئیے ایپل پائی (امید ہے کہ آپ اس وقت بھوکے نہیں ہوں گے) اور ہمارے "لوپ" کے بارے میں سوچتے ہیں:
  1. اگر بیسن میں سیب ہیں تو 1.1 سے 1.4 تک کے مراحل پر عمل کریں:

    1. 1.1 ایک سیب لیں۔
    2. 1.2 اسے صاف کر کے ٹکڑوں میں کاٹ لیں۔
    3. 1.3 ایک کڑاہی میں پیسٹری پائی کی بنیاد پر رکھیں
    4. 1.4 آئیے قدم 1 پر واپس چلتے ہیں۔
آئیے مزید تفصیل سے ٹکڑوں میں کاٹنے کے عمل کو بیان کرتے ہیں:
  1. سلائسز کی تعداد = 0
  2. جب کہ ٹکڑوں کی تعداد <12 ہے، 2.1 سے 2.3 تک کے مراحل پر عمل کریں۔

    1. 2.1 ایک سیب سے دوسرا ٹکڑا کاٹ لیں۔
    2. 2.2 سلائسز کی تعداد ++
    3. 2.3 مرحلہ 2 پر واپس جائیں۔
اور اسے ہمارے کنفیکشنری الگورتھم میں داخل کریں:
  1. اگر بیسن میں سیب ہیں، تو 1.1 سے 1.6 تک کے مراحل پر عمل کریں:

    1. 1.1 ایک سیب لیں۔
    2. 1.2 اسے چھیل دو
    3. 1.3 سلائسز کی تعداد = 0
    4. 1.4. Пока число долек < 12, выполнить шаги с 1.4.1 по 1.4.3
      1. 1.4.1. Отрезать очередную дольку от яблока
      2. 1.4.2. Кол-во долек ++
      3. 1.4.3. Возвращаемся на шаг 1.4
    5. 1.5. Помещаем дольки на тестовое основание пирога из теста на сковороде
    6. 1.6. Возвращаемся на шаг 1.
Получor цикл в цикле. Подобные конструкции весьма частые. Для завершающего примера построим таблицу умножения, которые школьники 90-х видели на обложках тетрадей в младших классах.
آپریٹر جبکہ - 3
public static void main(String[] args) {
    // Display the values ​​of the second multiplier in the line
    System.out.println("    2  3  4  5  6  7  8  9");
    int i = 2;      // first multiplier, assign starting value
    while(i<10) {   // First loop, execute while the first multiplier is less than 10
        System.out.print(i + " | ");// Display the first multiplier at the beginning of the string
        int j = 2;                  // second multiplier, starting value
        while (j<10) { // Second loop, execute while the second multiplier is less than 10
            int mul=i*j; // Calculate the product of factors
            if (mul<10)  // If it contains one digit, print two spaces after it
                System.out.print(mul + "  ");
            else   // otherwise output the product and after it - one space
                System.out.print(mul + " ");
            j++;     // Increase the second multiplier by one,
        }            // Go to the beginning of the second loop (while (j<10 ).... )
        System.out.println(); // Move to the next line of output
        i++;                  // Increase the first multiplier by one,
    }                         // Go to the beginning of the first loop (while ( i<10 ) ....
}
Результат вывода на консоль:
2  3  4  5  6  7  8  9
2 | 4 6 8 10 12 14 16 18
3 | 6 9 12 15 18 21 24 27
4 | 8 12 16 20 24 28 32 36
5 | 10 15 20 25 30 35 40 45
6 | 12 18 24 30 36 42 48 54
7 | 14 21 28 35 42 49 56 63
8 | 16 24 32 40 48 56 64 72
9 | 18 27 36 45 54 63 72 81
Process finished with exit code 0
Циклы (в частности, оператор while) – один из фундаментальных кирпичиков построения программ. Решая задачи на JavaRush, вы изучите все их разнообразие, разберёте тонкости функционирования и получите практические навыки их применения.
تبصرے
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION