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

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

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






Лабораторная работа №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; просмотров: 678. Нарушение авторских прав; Мы поможем в написании вашей работы!



Функция спроса населения на данный товар Функция спроса населения на данный товар: Qd=7-Р. Функция предложения: Qs= -5+2Р,где...

Аальтернативная стоимость. Кривая производственных возможностей В экономике Буридании есть 100 ед. труда с производительностью 4 м ткани или 2 кг мяса...

Вычисление основной дактилоскопической формулы Вычислением основной дактоформулы обычно занимается следователь. Для этого все десять пальцев разбиваются на пять пар...

Расчетные и графические задания Равновесный объем - это объем, определяемый равенством спроса и предложения...

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

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

Тема: Кинематика поступательного и вращательного движения. 1. Твердое тело начинает вращаться вокруг оси Z с угловой скоростью, проекция которой изменяется со временем 1. Твердое тело начинает вращаться вокруг оси Z с угловой скоростью...

Способы тактических действий при проведении специальных операций Специальные операции проводятся с применением следующих основных тактических способов действий: охрана...

Искусство подбора персонала. Как оценить человека за час Искусство подбора персонала. Как оценить человека за час...

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

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