Giriş
Ilkinji programmalarymyz birin-birin ýerine ýetirilýän görkezmeleriň yzygiderliligi boldy. Çeňňek ýok. Bu “SalamWorld”, konsola gutlag sözüni we arifmetiki hasaplamalary çykarýar. Ilkinji programmalardan soň, filial etmegi öwrendik, ýagny programma şertlere baglylykda belli bir hereketleri etdi. Heatingyladyş we sowatmak üçin kondisioneri nädip kodlap bilersiňiz:if (tempRoom>tempComfort)
airConditionerOn();
if (tempRoom<tempComfort
heaterOn();
Indiki ädim äteliň. Gündelik durmuşda köplenç monoton, gaýtalanýan hereketleri ýerine ýetirýäris, mysal üçin, alma pirogy üçin gabyk. Bu haýran galdyryjy prosesi şeýle düşündirip bolar:
-
Basseýnde alma bar bolsa, 1.1-den 1.4-nji ädimlere eýeriň:
- 1.1. Alma al
- 1.2. Arassalaň we dilimlere bölüň
- 1.3. Konditer pirogynyň düýbüne gowurmaly
- 1.4. 1-nji ädime gaýdyp geleliň.
- Alma sanyna özümizi baglalyň, ýöne olardan az bolsa, käbir buýruklar “ýük götermezden” biderek ýerine ýetirilerdi (we, belki, ýok bolan almany gabykda keseris).
- Gaýtadan işleýän toparlarymyzdan has köp alma bar bolsa, käbir önümler gaýtadan işlenmezdi.
- Şeýle “kod” okamak kyn, köp gaýtalanmalary öz içine alýar we üýtgetmek kyn.
Aýlawlar birnäçe gezek amallary ýerine ýetirmek üçin operatorlardyr.
“Java” aýlaw (vile loop) biziň ýagdaýymyzda gowy işleýär. Bu dizaýn, gysga we düşnükli gurluşa birnäçe hereketi guraýar. Java-da tort üçin alma dilimlemek üçin birneme algoritm şeýle bolup biler:while(числоЯблокВТазике>0) {
яблоко = тазик.взятьОчередноеЯблоко();
положитьВПирог(яблоко.чистить().нарезать());
числоЯблокВТазике--;//-- this is a decrement, reduces the number of apples by one
}
System.out.println('Apples for the pie are processed.');
Buýruk sintaksis
Wagtlaýyn beýany beýan etmegiň ilkinji usuly aşakdakylardyr:while(Логическое выражение) {
// Loop body - periodically executed statement(s)
}
Bu aşakdaky ýaly edilýär (ädimme-ädim):
- Gaplaňdaky wagtyň yzyndaky Boolean ýagdaýyna baha berýäris.
- Logiki ýagdaý dogry bolsa, aýlaw korpusynda jümleler ýerine ýetirilýär, aýlaw jisimindäki iň soňky jümläni ýerine ýetireniňizden soň, 1-nji ädime geçiň.
- Logiki ýagdaý ýalňyş bolsa, wagt aýlawynyň daşyndaky birinji jümle geçýäris.
Öňünden şert
Aýlawyň göwresini ýerine ýetirmezden ozal, elmydama logiki aňlatmany (aýlawyň içine girmegiň şerti) öňünden hasaplaýarys, bu görnüşe köplenç şert bilen aýlaw diýilýär. Geliň, ilkinji on sany bitewi, sanyň oňyn güýji bolan tablisany guralyň: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 çykyş netijesi:
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
Poçta şerti bilen aýlaw
Ikinji aýlaw:do {
// Loop body - periodically executed statement(s)
}while (Логическое выражение);
Aşakdaky ýaly ýerine ýetirildi (ädimler):
- Aýlawyň göwresi ýerine ýetirilýär (açar sözden soň derrew).
- Gaplaňdaky wagtyň yzyndaky Boolean ýagdaýyna baha berýäris.
- Logiki ýagdaý dogry bolsa, 1-nji ädime geçiň
- Logiki ýagdaý ýalňyş bolsa, wagt aýlawynyň daşyndaky birinji jümle geçýäris.
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 çykyş netijesi:
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
Koddaky üýtgeşmelere üns beriň, ony deslapky şert bilen aýlawyň wersiýasy bilen deňeşdiriň.
Aýlawlar bilen işlemek hakda gyzykly maglumatlar
Aýlawyň göwresindäki dolandyryş buýruklary
Aýlawyň gidişine täsir edýän iki buýruk bar: arakesme, indiki bapda görkezjek aýratynlyklarymyz we- dowam et - häzirki aýlawyň korpusynyň ýerine ýetirilmegini togtadýar we şol wagt operatoryň logiki aňlatmasyna geçýär. Hasaplanan aňlatma dogry bolsa, aýlawyň ýerine ýetirilmegi dowam eder.
- break - häzirki aýlawyň ýerine ýetirilişini derrew togtadýar we daşyndaky birinji buýruga geçýär. Şeýlelik bilen, häzirki aýlawyň ýerine ýetirilmegi kesilýär. Indiki mowzukda has jikme-jik serederis.
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
}
положитьВПирог(яблоко.чистить().нарезать());
}
Gurluşyk
continue
köplenç aýlawyň göwresinde belli bir ýagdaý ýüze çykanda buýruklary ýerine ýetirmek zerur bolanda ulanylýar, mysal üçin, enjamdaky datçik işledilende hereketleri ýerine ýetirmek zerur (ýa-da diňe görkezijilerini okamagyň dowamyny dowam etdiriň) ýa-da aňlatmany diňe sikliň belli ädimlerinde hasaplamak. Iň soňky mysal üçin mysal, kwadraty olaryň sanyndan az bolan tebigy sanlaryň kublarynyň jemini wagtlaýyn hasaplamakdyr:
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
}
Tükeniksiz aýlaw
Bu dolandyryş buýruklary köplenç çäksiz aýlawda ulanylýar. Muňa şeýle diýilýär, sebäbi logiki çykyş şerti hiç wagt kanagatlandyrylmaýar. Kodda bir zat görünýär:while(true) {
// Loop body
}
break
Bu ýagdaýda, çykyşy guramak üçin buýruk ulanmak peýdaly bolar . Bu aýlaw halkanyň logikasynyň daşynda emele gelýän daşarky şertlere garaşanda ýüze çykýar. Mysal üçin, gahrymanyň töweregindäki wirtual dünýäni emele getirýän oýunlarda (aýlawdan çykmak = oýundan çykmak) operasiýa ulgamlary. Ora-da algoritmleri ulananyňyzda, belki, aýlawdaky her bir jaň bilen netijäni gowulaşdyryp bilersiňiz, ýöne wagt ýa-da daşarky hadysanyň ýüze çykmagy bilen çäklenýär (şaşka, küşt ýa-da howa maglumaty). Adaty şertlerde tükeniksiz aýlawlar programmanyň durnuksyzlygynyň meselelerinden biridir. Görkezmek üçin, sanlaryň güýjüne gaýdyp geleliň:
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 çykyş netijesi:
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
Öýlenen aýlawlar
Ynha, aýlawlarymyz barada soňky mowzuga gelýäris. Alma pirogy (şu wagt aç dälsiňiz) we "aýlawymyz" hakda pikir edeliň:-
Basseýnde alma bar bolsa, 1.1-den 1.4-nji ädimlere eýeriň:
- 1.1. Alma al
- 1.2. Arassalaň we dilimlere bölüň
- 1.3. Konditer pirogynyň düýbüne gowurmaly
- 1.4. 1-nji ädime gaýdyp geleliň.
- Dilimleriň sany = 0
-
Dilimleriň sany <12 bolsa-da, 2.1-den 2.3-nji ädimlere eýeriň
- 2.1. Alma başga bir dilim kesiň
- 2.2. Dilimleriň sany ++
- 2.3. 2-nji ädime dolan
-
Basseýnde alma bar bolsa, onda 1.1-den 1.6-a çenli ädimleri ýerine ýetiriň:
- 1.1. Alma al
- 1.2. Sowuň
- 1.3. Dilimleriň sany = 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