Студопедия — Операторы цикла
Студопедия Главная Случайная страница Обратная связь

Разделы: Автомобили Астрономия Биология География Дом и сад Другие языки Другое Информатика История Культура Литература Логика Математика Медицина Металлургия Механика Образование Охрана труда Педагогика Политика Право Психология Религия Риторика Социология Спорт Строительство Технология Туризм Физика Философия Финансы Химия Черчение Экология Экономика Электроника

Операторы цикла






Лабораторная работа №5. Операторы цикла и перехода

 

 

Необходимые сведения из теории.

 

Операторы цикла

 

Операторы цикла Java — это for, while и do while. Цикл повторно выполняет один и тот же набор команд, пока не выполнится условие завершения.

 

1.1 Оператор цикла while

 

Цикл while —повторя­ет оператор или блок операторов, пока его управляющее выражение имеет значение true. Вот его общая форма:

 

while(condition) {

statement ; // тело цикла

}

 

Здесь condition может быть любым булевским выражением. Тело цикла бу­дет выполняться до тех пор, пока условное выражение имеет значение true. Когда condition становится false, управление передается строке програм­мы, следующей непосредственно за циклом. Фигурные скобки не нужны, если повторяется одиночный оператор.

 

Пример 1. Вычисление 10!

 

int i=2, s=1;

while(i <= 10) { s = s * i;

i++;

}

 

Контрольный вопрос 1. Что делает следующий кусок кода?

 

int x=10;

int s=1;

while(x > 1) { s = s * x;

x = x - 1;

}

 

Так как цикл while оценивает условное выражение в самом начале своей работы, тело цикла не будет выполняться ни одного раза, если условие сразу же имеет значение false.

 

Пример 2. В следующем фрагменте обращение к println () никогда не выполняется:

 

int а = 10, b = 20;

while(а > Ь){

System.out.printin("Эта строка никогда не выведется");

}

 

Пример 3. В следующем фрагменте получим бесконечный цикл:

 

int number = 2;

while (true) {

System.out.print(number + “ “);

number += 2; //number = number + 2

}

 

Пример 4. В следующем куске кода выводятся на консоль четные числа от 2 до 20:

2 4 6 8 10 …20

 

int number = 2;

while (number <= 20) {

System.out.print(number + “ “);

number += 2;

}

 

Контрольный вопрос 2. Написать фрагмент кода, в котором находится сумма всех четных чисел меньших или равных 100.

 

Тело цикла while (или любого другого цикла Java) может быть пустым. Это потому, что в Java синтаксически допустим пустой (null) оператор (который состоит только из точки с запятой).

 

Пример 5. Рассмотрим следующую программу:

 

int i=100, j=200;

while(++i < --j); // в этом цикле нет тела

System.out.printin("i равно " + i);

 

Контрольный вопрос 3. Какой вывод генерирует программа из примера 5.

 

 

Пример 6. В следующей программе вычисляется сумма целых чисел вводимых пользователем с клавиатуры. Выход из программы происходит, как только пользователь введет не целое число.

 

import java.util.Scanner;

public class While {

 

public static void main(String args[]) {

int sum = 0;

Scanner input=new Scanner(System.in);

System.out.println("Enter an integer");

 

while (input.hasNextInt()) {

sum += input.nextInt();

System.out.println("Enter next integer");

}

 

System.out.println("sum=" +sum);

}

}

1.2. Оператор цикла do while

 

Если условное выражение, управляющее циклом while, первоначально имеет значение false, то тело цикла не будет выпол­няться вообще. Однако иногда желательно выполнить тело while-цикла по крайней мере один раз, даже если условное выражение сначала имеет зна­чение false.

В Java имеется цикл do while, который делает именно это. Цикл do while всегда выполняет свое тело, по крайней мере один раз, потому что его ус­ловное выражение размещается в конце цикла. Общая форма цикла:

 

do {

statement ; // тело цикла

} while (condition);

 

Каждая итерация цикла do while сначала выполняет тело цикла, а затем оценивает условное выражение. Если это выражение — true, цикл повто­рится. Иначе, цикл заканчивается. Как и у всех Java-циклов, condition должно быть булевским выражением.

Пример 7. В следующем фрагменте кода печатаются все целые числа от 0 до 9:

int count = 0;do { System.out.println(count); count++;} while(count < 10);

Контрольный вопрос 4. Написать фрагмент кода, выводящий на консоль четные числа от 2 до 100 с использованием цикла do-while:

Цикл do-while часто используют для получения ввода пользователя.

 

1.3. Оператор цикла for

 

Общая форма оператора for:

 

for (initialization;condition;iteration) {

// тело цикла

}

 

Если повторяется только один оператор, фигурные скобки не нужны.

Цикл for работает следующим образом. В начале работы цикла выполняется выражение initialization. В общем случае это выражение устанавливает значение переменной управления циклом, которая действует как счетчик. Важ­но понять, что выражение инициализации выполняется только один раз. Затем оценивается condition. Оно должно быть булевским выражением и обычно сравнивает переменную управления циклом с некоторым гранич­ным значением. Если это выражение — true, то отрабатывают операторы из тела цикла, если — false, цикл заканчивается. Далее выполняется часть цикла iteration. Обычно это выражение, которое осуществляет инкрементные или декрементные операции с переменной управления циклом. Затем цикл реализовывает итерации. В каждом проходе цикла — сначала оценива­ется условное выражение, потом выполняется тело цикла и затем — выра­жение iteration. Этот процесс повторяется до тех пор, пока управляющее выражение не станет false.

 

Пример 8. В следующем фрагменте кода распечатываются целые числа 0…9 int count;for(count = 0; count < 10; count++) System.out.println(count);

Объявление переменных управления внутри цикла for

 

Часто переменная, которая управляет циклом for, необходима только для целей цикла и не используется в другом месте. Когда дело обстоит так, можно объявить переменную внутри инициализационной части for.

for(int count = 0; count < 10; count++) System.out.println(count);

 

Когда переменная объявляется внутри заголовка for-цикла, важно помнить, что область ее действия заканчивается там же, где и у for-оператора (т. е. область действия переменной ограничена циклом for). Вне цикла for пере­менная прекратит существование.

 

 

Контрольный вопрос 5. Что напечатает следующая программа:

 

public class CountToTenError {

public static void main(String[] args) {

for (int i = 1; i <=10; i++)

System.out.println(i);

System.out.println(“The final value of i is “ + i);

}

}

 

Синтаксис цикла for позволяет использовать несколько переменных при инициализации и итерации. Например:

for(int i = 0, j = 10; i < 10; i++, j--) sum += i * j; Замечание. Выражения initialization,condition,iteration для цикла for являются вообще говоря не обязательными, например, допустим следующий оператор for(;;). Если condition пропущен, предполагается, что он имеет значение true.

 

Java допускает вложение циклов. То есть один цикл может быть внутри другого.

 

Пример 9.

 

int i, j;

for(i=0; i<10; i++) {

for(j=i; j<10; j++)

System.out.print(".”);

System.out.println();

}

}

 

 

Вывод этой программы:

..........

.........

........

.

 

Контрольный вопрос 5. Что делает следующий фрагмент кода.

 

int sum = 0;

for (int number = 2; number <= 100; number += 2)

sum += number;

System.out.println("The sum is " + sum);

 

 

Контрольный вопрос 6. Что напечатает следующая программа:

 

public class CountToTenErrorFixed {

public static void main(String[] args) {

int i;

for (i = 1; i <=10; i++)

System.out.println(i);

System.out.println(“The final value of i is “ + i);

}

}

 

Нигде не сказано, что итератор должен увеличиваться, он может и уменьшаться.

 

Контрольный вопрос 7. Что напечатает следующая программа:

 

 

public class CountDown {

public static void main(String[] args) {

for (int count = 10; count >= 1; count--) {

System.out.print(count+” “);

}

}

}

 

Контрольный вопрос 8. Будет ли работать следующий код?

 

public class TerseCoder {

public static void main(String[] args) {

for (int i = 1; i <=10; System.out.println(i++));

}

}

 

Инициализационная и итерационная части цикла for могут состоять из нескольких выражений, разделенных запятыми.

 

Пример 10.

 

int a, b;

for (a = 1, b = 10; a <= 10; a++, b--)

System.out.println(a + “ “ + b);

output:

 

1 10

2 9

3 8

4 7

5 6

6 5

7 4

8 3

9 2

10 1

 

Любопытно, что все три части цикла for необязательны.

 







Дата добавления: 2015-08-12; просмотров: 682. Нарушение авторских прав; Мы поможем в написании вашей работы!



Кардиналистский и ординалистский подходы Кардиналистский (количественный подход) к анализу полезности основан на представлении о возможности измерения различных благ в условных единицах полезности...

Обзор компонентов Multisim Компоненты – это основа любой схемы, это все элементы, из которых она состоит. Multisim оперирует с двумя категориями...

Композиция из абстрактных геометрических фигур Данная композиция состоит из линий, штриховки, абстрактных геометрических форм...

Важнейшие способы обработки и анализа рядов динамики Не во всех случаях эмпирические данные рядов динамики позволяют определить тенденцию изменения явления во времени...

Стресс-лимитирующие факторы Поскольку в каждом реализующем факторе общего адаптацион­ного синдрома при бесконтрольном его развитии заложена потенци­альная опасность появления патогенных преобразований...

ТЕОРИЯ ЗАЩИТНЫХ МЕХАНИЗМОВ ЛИЧНОСТИ В современной психологической литературе встречаются различные термины, касающиеся феноменов защиты...

Этические проблемы проведения экспериментов на человеке и животных В настоящее время четко определены новые подходы и требования к биомедицинским исследованиям...

Закон Гука при растяжении и сжатии   Напряжения и деформации при растяжении и сжатии связаны между собой зависимостью, которая называется законом Гука, по имени установившего этот закон английского физика Роберта Гука в 1678 году...

Характерные черты официально-делового стиля Наиболее характерными чертами официально-делового стиля являются: • лаконичность...

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

Studopedia.info - Студопедия - 2014-2024 год . (0.011 сек.) русская версия | украинская версия