Студопедия КАТЕГОРИИ: АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция |
Трассировка цикла в Eclipse
Рассмотрим трассировку цикла в Eclipse на примере факториала. Точку прерывания поставим настроку9. ВExpressions добавим все переменные (n, f, i) и условие продолжения цикла (i<=n). Логично, что тело цикла будет выполняться до тех пор, пока условие i<=n будет равно true.
Рис. 4.3.Трассировка цикла
Поскольку n = 4, iпоследовательно получит значения 1, 2, 3, 4. Fбудет вычислено последовательно f = 1, затем f = 1 * 1 = 1, f = 1*2 = 2, f = 2 * 3 = 6, f = 6 * 4 = 24. В итоге i станет равным 5, и только в этот момент условие продолжения станет равным false. В этот момент f = 24. Этот момент отображен на рис. 4.4. ниже:
Рис.4.4.Трассировка цикла
После этого программа выйдет из цикла и перейдет к выводу результата:
Рис. 4.5.Вывод результата вычисления факториала
Пример решения задачи B
Рассмотрим реализацию задачи B.0 с помощью цикла dowhile.
ЗадачаB.0: Население города увеличивается на 3% каждый год. В 2013 году население города составляло 650000 человек. Напишите программу, которая выведет на экран предсказываемую численность населения города в каждом году, вплоть до 2040.
Кодпрограммы:
publicclass B_0 { publicstaticvoid main(String[] args) { int year = 2014; int population = 650000; do { System.out.println("В " + year + " годувгородеживет " + population); population = (population * 103) / 100; year++; } while (year<= 2040); } }
Блок-схема для этого кода выглядит так:
Рис. 4.6. Блок-схема программы подсчета населения Цикл с предусловием while
Код цикла с предусловием в Java выглядит так:
while (условное_выражение) { Действие; }
Блок-схема цикла с предусловием выглядит так:
Рис. 4.7. Структура цикла с предусловием while
Пример с циклом с предусловием
Задача: ввести число. Найти сумму его цифр.
Код решения этой задачи выглядит так:
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-12; просмотров: 644. stydopedya.ru не претендует на авторское право материалов, которые вылажены, но предоставляет бесплатный доступ к ним. В случае нарушения авторского права или персональных данных напишите сюда... |