Пример с циклом с предусловием



 

Задача: ввести число. Найти сумму его цифр.

 

Код решения этой задачи выглядит так:

 

importjava.io.BufferedReader;

import java.io.IOException;

import java.io.InputStreamReader;

 

publicclass Test_while {

 

publicstaticvoid main(String[] args) {

     intnumber;// здесь будет оригинальное число

 

     System.out.print("Введите number (>0): ");

     try {

          BufferedReader br = new BufferedReader(new

                    InputStreamReader(System.in));

          String s = br.readLine();

          number = Integer.parseInt(s);

     } catch (IOException e) {

          System.out.println("IOException: "

               + e.getMessage());

          return;

     } catch (NumberFormatException e) {

          System.out.println("NumberFormatException: "

               +e.getMessage());

          return;

     }

     // Вычисляемсуммуцифр

     ints = 0;

 

     while (number> 0) {

     // остатокотделенияна 10это последняя

     // цифра числа. Например: 129% 10 = 9

          intdigit = number % 10;

 

     //к сумме добавляем только что полученную цифру  

          s = s + digit;

 

     // отбрасываемпоследнююцифручисла

     // Например: 129 / 10 = 12

          number = number / 10;

     }        

     System.out.println("Суммацифр: " + s);

}

}

 

 

Блок-схема для этого кода:

 

 

Рис. 4.8. Блок-схема программы подсчета суммы

Вложенные циклы

 

Очень часто алгоритмы состоят из нескольких циклов, которые вложены друг в друга. В реальной жизни это может быть, например, рецепт блюда, для приготовления которого нужно почистить несколько разных видов овощей (например, картофель, свеклу иморковь), причем нужно почистить несколько плодов каждого вида. Тогда для описания этого алгоритма мы будем использовать 2 цикла. Во внешнем цикле мы будем перебирать разные виды овощей, а во внутреннем цикле будем перебирать конкретные плоды.

Вкладывать друг в друга можно любые циклы (dowhile, while, for). Рассмотрим вложенные циклы на примере while.

Напишем код, формирующий такой узор из чисел:

 

5

4 5

3 4 5

2 3 4 5

1 2 3 4 5

 

Код:

 

inti = 5;

// внешний цикл – формирует 5 строк

while (i >= 1) {

int j = i;

// внутренний цикл – формирует строку из чисел

while (j <= 5) {

System.out.print(j + " ");

     j++;

}

System.out.println();

i--;

}

 

 


 

Блок-схема для этого кода выглядит так:

 


Рис. 4.9. Блок-схема программы, рисующей узор

 

Цикл for

 

Мы рассмотрели уже много циклических задач, и Вы заметили, что каждому циклу в коде предшествовало описание переменной – счетчика цикла, и ее инициализация (присваивание начального значения).В цикле эта переменная изменялась (очень часто +1 или –1 на каждом шаге), и условие цикла включало в себя проверку нахождения этой переменной в каких-то пределах (например, j<= 5).

Часть кода, взятая из предыдущего примера, демонстрирует это:

 

intj = i; // инициализация счетчика цикла

while (j<= 5) { // условие продолжения цикла

System.out.print(j + " ");

j++; // изменение счетчика цикла

}


 

Блок-схема для этого кода представлена на рис.4.10:

 


Рис. 4.10. Структура цикла for

 

Если Вы имеете дело с циклом с предусловием, и в нем используется счетчик цикла, то в подавляющем большинстве случае вместо while можно использовать for, который записывается компактнее:

 

for (int j = i; j <= 5; j++) {

System.out.print(j + " ");

}

 

При этом блок-схема, описывающая код, будет иметь тот же самый вид, что и для цикла while:

 

 


Рис. 4.11. Соответствие элементов циклаforэлементам блок-схемы

Заметьте, что в цикле for счетчик цикла можно (и нужно!) объявлять прямо внутри конструкции for! В этом случае счетчик будет существовать ТОЛЬКО внутри цикла, и будет недоступен после его окончания. Такой подход к созданию переменных упрощает создание больших программ, где очень много переменных.

 


Дата добавления: 2018-04-04; просмотров: 778; Мы поможем в написании вашей работы!






Мы поможем в написании ваших работ!