Kirish
Bizning birinchi dasturlarimiz ketma-ket bajariladigan buyruqlar ketma-ketligi edi. Vilkalar yo'q. Bu konsolga salomlashish iborasi va arifmetik hisoblarni chiqaradigan HelloWorld. Birinchi dasturlardan so'ng biz tarmoqlanishni o'rgandik, ya'ni dastur shartlarga qarab ma'lum harakatlarni amalga oshirdi. Konditsionerni isitish va sovutish uchun yoqish uchun qanday kodlash mumkin:if (tempRoom>tempComfort)
airConditionerOn();
if (tempRoom<tempComfort
heaterOn();
Keling, keyingi qadamga o'taylik. Kundalik hayotda biz ko'pincha monoton, takroriy harakatlar qilamiz, masalan, pirog uchun olma tozalaymiz. Ushbu qiziqarli jarayonni quyidagicha ta'riflash mumkin:
-
Agar havzada olma bo'lsa, 1.1 dan 1.4 gacha bo'lgan bosqichlarni bajaring:
- 1.1. Olma oling
- 1.2. Uni tozalang va tilimga kesib oling
- 1.3. Qovurilgan idishdagi qandolat pirogining asosiga qo'ying
- 1.4. Keling, 1-bosqichga qaytaylik.
- Keling, olmalar soniga o'zimizni bog'laymiz, lekin agar bizda ularning soni kam bo'lsa, ba'zi buyruqlar "foydali" bo'lmasdan behuda bajariladi (va, ehtimol, biz mavjud bo'lmagan olmani tozalaganda o'zimizni kesib tashlardik).
- Agar bizning qayta ishlash guruhlarimizdan ko'proq olma bo'lsa, ba'zi mahsulotlar qayta ishlanmagan bo'lar edi.
- Bunday "kod" ni o'qish qiyin, ko'p takrorlashlarni o'z ichiga oladi va o'zgartirish qiyin.
Looplar amallarni bir necha marta bajarish uchun operatorlardir.
Java while tsikli (yomon halqa) bizning holatlarimizda yaxshi ishlaydi. Ushbu dizayn bir nechta harakatlarni qisqacha va tushunarli tuzilishga tashkil qiladi. Java-da pirog uchun olma kesish algoritmi bir muncha vaqt o'xshash bo'lishi mumkin:while(числоЯблокВТазике>0) {
яблоко = тазик.взятьОчередноеЯблоко();
положитьВПирог(яблоко.чистить().нарезать());
числоЯблокВТазике--;//-- this is a decrement, reduces the number of apples by one
}
System.out.println('Apples for the pie are processed.');
Buyruqlar sintaksisi
while iborasini tasvirlashning birinchi usuli quyidagicha:while(Логическое выражение) {
// Loop body - periodically executed statement(s)
}
Bu quyidagicha amalga oshiriladi (bosqichma-bosqich):
- Qavslar ichidagi vaqtdan keyingi mantiqiy shartni baholaymiz.
- Agar mantiqiy shart rost bo'lsa, sikl tanasidagi gaplar bajariladi, sikl tanasidagi oxirgi gap bajarilgandan so'ng 1-bosqichga o'ting.
- Agar mantiqiy shart noto'g'ri bo'lsa, while siklidan tashqaridagi birinchi iboraga o'ting.
Old shart bilan halqa
Ilovaning tanasini bajarishdan oldin biz doimo mantiqiy ifodani (siklga kirish sharti) oldindan hisoblab chiqamiz, chunki bu turdagi while ko'pincha old shartli tsikl deb ataladi. Birinchi o'nta butun son, musbat darajalar jadvalini tuzamiz: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++;
}
}
Konsol chiqishi natijasi:
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
Postshart bilan tsikl
Ikkinchi turdagi tsikl:do {
// Loop body - periodically executed statement(s)
}while (Логическое выражение);
Quyidagi tarzda amalga oshiriladi (qadamlar):
- Loopning tanasi bajariladi (do kalit so'zidan keyin darhol).
- Qavslar ichidagi vaqtdan keyingi mantiqiy shartni baholaymiz.
- Agar mantiqiy shart rost bo'lsa, 1-bosqichga o'ting
- Agar mantiqiy shart noto'g'ri bo'lsa, while siklidan tashqaridagi birinchi iboraga o'ting.
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
Konsol chiqishi natijasi:
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
Koddagi o'zgarishlarga e'tibor bering, uni oldingi shart bilan halqa versiyasi bilan taqqoslang.
Looplar bilan ishlash haqida qiziqarli ma'lumotlar
Loop tanasidagi boshqaruv buyruqlari
Loopning borishiga ta'sir qiluvchi ikkita buyruq mavjud: break, uning xususiyatlarini keyingi bobda ko'rsatamiz va- davom - joriy sikl tanasining bajarilishini to'xtatadi va while operatorining mantiqiy ifodasiga o'tadi. Agar hisoblangan ifoda rost bo'lsa, tsiklning bajarilishi davom etadi.
- break - joriy tsiklning bajarilishini darhol to'xtatadi va undan tashqaridagi birinchi buyruqqa o'tadi. Shunday qilib, joriy tsiklning bajarilishi to'xtatiladi. Buni keyingi mavzuda batafsil ko'rib chiqamiz.
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
}
положитьВПирог(яблоко.чистить().нарезать());
}
Konstruktsiya
continue
ko'pincha halqa tanasida ma'lum bir holat yuzaga kelganda buyruqlarni bajarish kerak bo'lganda ishlatiladi, masalan, uskunadagi sensor ishga tushganda harakatlarni bajarish (aks holda uning ko'rsatkichlarini o'qish tsiklini davom ettirish) yoki ifodani faqat tsiklning ma'lum bosqichlarida hisoblash uchun. Oxirgi holatga misol qilib, kvadrati ularning sonidan kichik bo'lgan natural sonlar kublari yig'indisini while siklida hisoblash mumkin:
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
}
Cheksiz tsikl
Ushbu boshqaruv buyruqlari ko'pincha cheksiz tsiklda qo'llaniladi. Mantiqiy chiqish sharti hech qachon qondirilmagani uchun shunday deb ataladi. Kodda u shunday ko'rinadi:while(true) {
// Loop body
}
break
Bunday holda, undan chiqishni tashkil qilish uchun buyruqdan foydalanish foydali bo'ladi . Ushbu turdagi halqa halqa tanasining mantig'idan tashqarida hosil bo'lgan tashqi sharoitlarni kutishda sodir bo'ladi. Misol uchun, qahramon atrofidagi virtual dunyoni taqlid qiladigan o'yinlarda (loopdan chiqish = o'yindan chiqish), operatsion tizimlar. Yoki algoritmlardan foydalanganda, ehtimol, tsikldagi har bir keyingi qo'ng'iroq bilan natijani yaxshilash, lekin ularni vaqt yoki tashqi hodisa (shashka, shaxmat yoki ob-havo prognozi) bilan cheklash. Shuni esda tutish kerakki, oddiy sharoitlarda cheksiz tsikllar dasturning beqarorligi muammolaridan biridir. Ko'rsatish uchun, keling, raqamlarning kuchlariga qaytaylik:
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
}
}
Konsol chiqishi natijasi:
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
O'rnatilgan halqalar
Mana biz tsikllarimiz haqidagi yakuniy mavzuga keldik. Keling, olma pirogi (umid qilamanki, siz hozir och emassiz) va bizning "loopimiz" haqida o'ylab ko'raylik:-
Agar havzada olma bo'lsa, 1.1 dan 1.4 gacha bo'lgan amallarni bajaring:
- 1.1. Olma oling
- 1.2. Uni tozalang va tilimga kesib oling
- 1.3. Qovurilgan idishdagi qandolat pirogining asosiga qo'ying
- 1.4. Keling, 1-bosqichga qaytaylik.
- Bo'laklar soni = 0
-
Bo'laklar soni < 12 bo'lsa-da, 2.1 dan 2.3 gacha bo'lgan bosqichlarni bajaring
- 2.1. Olmadan yana bir bo'lakni kesib oling
- 2.2. Bo'laklar soni ++
- 2.3. 2-bosqichga qayting
-
Agar havzada olma bo'lsa, 1.1 dan 1.6 gacha bo'lgan bosqichlarni bajaring:
- 1.1. Olma oling
- 1.2. Uni tozalang
- 1.3. Bo'laklar soni = 0
- 1.4. Пока число долек < 12, выполнить шаги с 1.4.1 по 1.4.3
- 1.4.1. Отрезать очередную дольку от яблока
- 1.4.2. Кол-во долек ++ 1.4.3. Возвращаемся на шаг 1.4
- 1.5. Помещаем дольки на тестовое основание пирога из теста на сковороде
- 1.6. Возвращаемся на шаг 1.
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, вы изучите все их разнообразие, разберёте тонкости функционирования и получите практические навыки их применения.
GO TO FULL VERSION