Муқаддима
Барномаҳои аввалини мо як қатор дастурҳо буданд, ки паси дигар иҷро мешуданд. Не чангак. Ин HelloWorld аст, ки ибораи табрикотӣ ва ҳисобҳои арифметикиро ба консол мебарорад. Пас аз барномањои аввал мо шохањоро ёд гирифтем, яъне барнома вобаста ба шароит амалњои муайянеро иљро мекард. Ин аст, ки чӣ тавр шумо метавонед кондитсионерро барои гармкунӣ ва хунуккунӣ фаъол созед:if (tempRoom>tempComfort)
airConditionerOn();
if (tempRoom<tempComfort
heaterOn();
Биёед қадами ояндаро гузорем. Дар ҳаёти ҳаррӯза мо аксар вақт амалҳои якрангу такроршавандаро иҷро мекунем, масалан, пӯсти себ барои пирог. Ин раванди ҷолибро метавон чунин тавсиф кард:
-
Агар дар ҳавза себ мавҷуд бошад, пас қадамҳои 1.1 то 1.4-ро иҷро кунед:
- 1.1. Себ гиред
- 1.2. Онро тоза ва бурида ба бурида
- 1.3. Дар асоси пирожни қаннодӣ дар як табақи frying ҷойгир кунед
- 1.4. Биёед ба қадами 1 баргардем.
- Худро ба микдори себ мебандем, вале агар кам дошта бошем, баъзе фармонхо бе «бор» ичро мешуданд (ва эхтимол, хангоми пуст кардани себи нонашуда худамонро бурида мебурдем).
- Агар аз коллективхои коркарди мо себ зиёд бошад, як кисми махсулот коркарднашуда мемонд.
- Чунин «code»-ро хондан душвор аст, такрори зиёд дорад ва тагйир додан душвор аст.
Доираҳо операторҳо барои чанд маротиба иҷро кардани амалҳо мебошанд.
Давраи Java while (халқи бад) дар ҳолати мо хуб кор мекунад. Ин тарҳ амалҳои сершуморро ба сохтори мухтасар ва фаҳмо ташкил мекунад. Дар ҳоле ки алгоритми буридани себ барои пирог дар Java метавонад чунин бошад:while(числоЯблокВТазике>0) {
яблоко = тазик.взятьОчередноеЯблоко();
положитьВПирог(яблоко.чистить().нарезать());
числоЯблокВТазике--;//-- this is a decrement, reduces the number of apples by one
}
System.out.println('Apples for the pie are processed.');
Синтаксиси фармон
Роҳи якуми тавсифи баёнияи while ин аст:while(Логическое выражение) {
// Loop body - periodically executed statement(s)
}
Ин ба таври зерин анҷом дода мешавад (қадам ба қадам):
- Мо шарти мантиқиро, ки дар қавс пас аз вақт меояд, арзёбӣ мекунем.
- Агар шарти мантиқӣ дуруст бошад, он гоҳ изҳорот дар бадани давр иҷро мешаванд, пас аз иҷрои оператори охирин дар бадани давр ба қадами 1 гузаред.
- Агар шарти мантиқӣ нодуруст бошад, пас ба изҳороти аввал берун аз даври while гузаред.
Давра бо шарти пешакӣ
Азбаски мо пеш аз иҷрои қисми сикли мо ҳамеша як ифодаи мантиқиро (шарти ворид шудан ба давра) пешакӣ ҳисоб мекунем, ин навъи 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 (Логическое выражение);
Ба таври зерин иҷро карда мешавад (қадамҳо):
- Ҷисми цикл иҷро мешавад (дарҳол пас аз калимаи калидии do).
- Мо шарти мантиқиро, ки дар қавс пас аз вақт меояд, арзёбӣ мекунем.
- Агар шарти мантиқӣ дуруст бошад, пас ба қадами 1 гузаред
- Агар шарти мантиқӣ нодуруст бошад, пас ба изҳороти аввал берун аз даври while гузаред.
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
Ба тағирот дар code диққат диҳед, онро бо versionи ҳалқа бо шарти пешакӣ муқоиса кунед.
Далелҳои ҷолиб дар бораи кор бо ҳалқаҳо
Фармонҳои идоракунӣ дар бадани давр
Ду фармоне вуҷуд дорад, ки ба пешрафти гардиш таъсир мерасонанд: break, ки хусусиятҳои онҳоро мо дар боби оянда нишон медиҳем ва- идома - иҷрои ҷасади даври ҷорӣро қатъ мекунад ва ба ифодаи мантиқии оператори while мегузарад. Агар ифодаи ҳисобшуда дуруст бошад, иҷрои давра идома меёбад.
- танаффус - фавран иҷроиши даври ҷорӣро қатъ мекунад ва ба фармони аввал берун аз он мегузарад. Ҳамин тариқ, иҷрои ҳалқаи ҷорӣ қатъ мешавад. Мо онро дар мавзӯи оянда муфассалтар дида мебароем.
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
аксар вақт истифода мешавад, вақте ки дар бадани ҳалқа ҳангоми ба амал омадани ҳолати муайян иҷро кардани фармонҳо лозим аст, масалан, барои иҷрои амалҳо ҳангоми ба кор андохтани сенсор дар таҷҳизот (дар акси ҳол танҳо цикли хондани нишондиҳандаҳои онро идома диҳед) ё барои ҳисоб кардани ифода танҳо дар марҳилаҳои муайяни давра. Намунаи ҳолати охирин ин ҳисоб кардани маҷмӯи мукаабҳои ададҳои натуралӣ дар даври while мебошад, ки квадраташон аз шумораи онҳо камтар аст:
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
}
Давраи беохир
Ин фармонҳои идоракунӣ бештар дар як ҳалқаи беохир истифода мешаванд. Ин чунин ном дорад, зеро шарти баромади мантиқӣ ҳеҷ гоҳ қонеъ карда намешавад. Дар code он чизе монанди:while(true) {
// Loop body
}
break
Дар ин ҳолат, истифодаи фармон барои ташкor баромадан аз он муфид хоҳад буд . Ин намуди ҳалқа ҳангоми интизории шароитҳои беруна, ки берун аз мантиқи ҷисми ҳалқа ташкил мешаванд, ба амал меояд. Масалан, дар бозиҳое, ки ба ҷаҳони маҷозӣ дар атрофи қаҳрамон тақлид мекунанд (баромадан аз ҳалқа = баромадан аз бозӣ), системаҳои оператсионӣ. Ё ҳангоми истифодаи алгоритмҳо, эҳтимолан беҳтар кардани натиҷа бо ҳар як занги минбаъда дар давр, вале маҳдуд кардани онҳо аз рӯи вақт ё рух додани ҳодисаи беруна (шашка, шоҳмот ё пешгӯии обу ҳаво). Дар хотир бояд дошт, ки дар шароити муқаррарӣ ҳалқаҳои беохир яке аз мушкилоти ноустувории барнома мебошанд. Барои нишон додан, биёед ба қудрати рақамҳо баргардем:
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.4-ро иҷро кунед:
- 1.1. Себ гиред
- 1.2. Чистим и нарезаем его дольками
- 1.3. Помещаем на основание пирога из теста на сковороде
- 1.4. Возвращаемся на шаг 1.
- Число долек = 0
-
Пока число долек < 12, выполнить шаги с 2.1 по 2.3
- 2.1. Отрезать очередную дольку от яблока
- 2.2. Кол-во долек ++
- 2.3. Возвращаемся на шаг 2
-
Если в тазике есть яблоки, то выполняем шаги с 1.1 по 1.6:
- 1.1. Берем яблоко
- 1.2. Очищаем его от кожуры
- 1.3. Число долек = 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