Листинг 2.4. Вычисление квадратного корня числа с помощью итерационной формулы Герона.

Лабораторная работа 3. Использование циклических операторов при создании Java-программ.

Цель работы.Использование циклов в приложении Java.

Форма предоставления отчета:демонстрация результатов выполнения работы и защита подготовленного отчета согласно представленному варианту индивидуального задания.

Краткая теория по теме.

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

Основной оператор цикла выглядит следующим образом:

while (логВыр) оператор

Вначале вычисляется логическое выражение логВыр, если его значение true, то выполняется оператор, образующий цикл. Затем снова вычисляется логВыр и действует оператор, и так до тех пор, пока не получится значение false. Если логВыр изначально равняется false, то оператор не будет выполнен ни разу. Предварительная проверка обеспечивает безопасность выполнения цикла, позволяет избежать переполнения, деления на нуль и др. Поэтому оператор while является основным.

Если в цикл надо включить несколько операторов, то следует образовать блок операторов {}.

Второй оператор цикла – оператор do-while – имеет вид

do оператор while (логВыр)

Здесь сначала выполняется оператор, а потом происходит вычисление логического выражения логВыр. Цикл выполняется, пока логВыр остается равным true.

Существенное отличие между этими двумя операторами цикла только в том, что в цикле do-while оператор обязательно выполнится хотя бы один раз.

Рассмотрим на примере вычисление квадратного корня числа с помощью итерационной формулы Герона.

Листинг 2.4. Вычисление квадратного корня числа с помощью итерационной формулы Герона.

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

.

Для этого используем цикл while с предусловием ((b*b>a)&&(i<200)).

В строке 2 объявляем новый метод sqrt() с одним параметром a типа long. В объявлении переменной b типа double присваиваем ей начальное значение (b=a, инициализация переменной b в строке 3). В переменной b будем хранить промежуточные значения корня, вычисляемые в цикле по формуле Герона b=(b+a/b)/2. Далее объявляем переменную i типа int и инициализируем ее значением 0. Данная переменная понадобится в качестве счетчика цикла.

В строках 5-8 реализован цикл While с предусловием ((b*b>a)&&(i<200)). Данное условие состоит из двух условий: квадрат b должен быть больше начального значения a и значение счетчика не должно превышать 200, то есть всего производится не более 200 итераций. В данном цикле в строке 6, производится вычисление очередного значения Xn, которое хранится в переменной b. Переменная b на каждом шаге цикла изменяется, причем новое значение данной переменной зависит от предыдущего значения. В конце цикла (строка 7) увеличиваем счетчик i на 1.

В конце метода выводим полученное значение b в консольное окно.

В методе main() вызывается метод sqrt(45). В качестве параметра можно взять произвольное целое число (45), которое будет присвоено переменной a. (Помните, вызов каких-либо методов напрямую из метода, имеющего модификатор static, возможен только при условии, что вызываемый метод тоже является статическим).

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

Цикл for – распространенная конструкция для выполнения повторений, количество которых контролируется счетчиком, обновляемым на каждой итерации.

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

 

Первый элемент оператора for обычно выполняет инициализацию счетчика, второй формулирует условие выполнения тела цикла, а третий определяет способ обновления счетчика.

for (int i = 10; i > 0; - i){ System.out.println(“Обратный отсчет …” + i); }

 

Синтаксис вызова оператора следующий:

for (списокВыр1; логВыр; списокВыр2)

команды

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

Затем вычисляется логическое выражение логВыр. Если оно истинно, true, то действует оператор, потом вычисляются слева направо выражения из списка выражений списокВыр2. Далее снова проверяется логВыр. Если оно истинно, то выполняется оператор и списокВыр2 и т.д. Как только логВыр станет равным false, выполнение цикла заканчивается.

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