[ [[tutorial-ru-001 | Введение]] | [[tutorial-ru-002 | Основы]] | [[tutorial-ru-003 | if/else]] | [[tutorial-ru-004 | Циклы]] | [[tutorial-ru-005 | Массивы]] | [[tutorial-ru-006 | Графика]] | [[tutorial-ru-007 | Анимация]] | [[tutorial-ru-008 | Мышь]] | [[tutorial-ru-009 | Клавиатура]] | [[tutorial-ru-010 | Математика]] | [[tutorial-ru-011 | Методы]] | [[tutorial-ru-012 | Текст]] | [[tutorial-ru-013 | Задачи]] ] ---- == Java для школьников: урок 4 == ====== Цикл while ====== Попробуйте этот код: void main() { // 1. Объявляем и инициализируем переменные int counter = 1; // 2. Запускаем цикл while while (counter < 5) { printLine("Счетчик равен " + counter); // 3. Прибавляем 1 к значению счетчика counter = counter + 1; } // 4. Цикл while закончился, программа продолжается дальше printLine("Чао"); } Что будет напечатано? Счетчик равен 1 Счетчик равен 2 Счетчик равен 3 Счетчик равен 4 Чао Заметки по приведённому коду: * Устанавливаем начальное значение счетчика равным 1. * Цикл while (инструкции внутри фигурных скобок после while) будут повторяться пока выражение в круглых скобках истинно. Если выражение ложно (счетчик = 5 или больше), то цикл завершается. * Счетчик увеличивается на единицу. Каждый раз, проходя по циклу, к счетчику прибавляется единица, до момента когда условие (счетчик < 5) станет ложным. То есть счетчик будет равен 5. * Программа продолжается со следующей строки, выдает "Чао" и завершается. Циклы - это повторяющиеся наборы инструкций. В случае цикла while схема выполнения следующая: while (это выражение истинно) { // выполняются инструкции в этих фигурных скобках, // обычно прибавляется 1 к счетчику цикла } // когда выражение внутри while становится ложным, то // выполнение продолжается на последующих строках {{while.gif}} ** Упражнения: ** * Попробуйте в приведенном выше примере закомментировать строку "counter = counter + 1;". То есть добавьте в начало строки символы "//". Что получается? Почему? * Что выдаст следующий код: void main() { int counter = 10; while (counter > 1) { printLine(" " + counter + " green bottles hanging on the wall"); printLine(" " + counter + " green bottles hanging on the wall"); printLine("And if one green bottle should accidently fall, "); counter = counter - 1; printLine("There'd be " + counter + " green bottles hanging on the wall"); } } * Напечатайте четные числа от 20 до 30. * Напечатайте таблицу умножения: от 2 до 9 по горизонтали и от 2 до 9 по вертикали. * Напечатайте все простые числа от 200 до 300. ---- ====== Цикл do...while ====== Цикл do...while похож на цикл while, но условие проверяется после выполнения инструкций в теле тела. Общая схема цикла do...while выглядит так: do { // выполняются инструкции в этих фигурных скобках, } while (пока это выражение истинно); Заметьте, что тело цикла всегда выполняется хотя бы один раз, поскольку проверка делается позже. В большинстве случаев лучше применять обычный цикл while, в котором условие проверяется до выполнения цикла. Пример: int y = 10; printLine("Обратный отсчет..."); do { printLine("..." + y); y = y - 1; } while (y > 1); printLine("Поехали!"); Попробуйте запустить этот код. Что у Вас получилось? {{do-while.gif}} ** Упражнения ** * Какой цикл всегда выполняется хотя бы однажды? * В какой момент в цикле do...while проверяется логическое условие? ---- ====== Цикл for ====== Цикл for - это сокращенная запись следующих действий: * установка счетчика, * проверка условия, * приращение счетчика. Все в одной инструкции. Но сначала надо изучить операцию инкремента. ===== Операция инкремента ++ ===== Операция X++ увеличивает значение переменной X на 1. То есть x++; это тоже самое, что и x = x + 1; ===== Операция декремента -- ===== Операция Y-- -- уменьшает значение переменной Y на 1. Фактически y--; это тоже самое, что и y = y - 1; Итак, вернемся к циклу for. В цикле for все три действия - установка, проверка и приращение - перечисляются в скобках после слова "for". Разделять их надо точкой с запятой. **Пример А**. for (int x = 0; x < 10; x++) { printLine("x = " + x); } Общая схема цикла for такая: for (УСТАНОВКА счетчика; ПРОВЕРКА условия; ПРИРАЩЕНИЕ счетчика) { // инструкции для выполнения в цикле } Приращение счетчика часто содержит инкремент (x++) или декремент (y-- --). В примере А выше, установка счетчика есть "int x = 0;". Эта инструкция объявляет x как целую переменную и инициализирует её значением 0. Проверка условия есть "x < 10;". Эта инструкция проверяет значение x, и если выражение верно (истинно), то цикл выполняется. Если выражение ложно, (x == 10 или x > 10), то цикл пропускается и выполнение продолжается с инструкции, следующей за закрывающей фигурной скобкой }. **Пример Б**. Обратный отсчет от 10 до 1: for (int x = 10; x > 0; x--) { printLine(x); } {{for.gif}} ** Упражнения: ** * Напечатайте таблицу умножения, используя циклы for. * Напечатайте все трехзначные числа, сумма цифр которых равна заданному числу. * Подсчитайте, сколько существует трехзначных чисел, все цифры которых различны. ---- [[tutorial-ru-005 | Перейдем к следующему уроку]].