Главная страница
Навигация по странице:

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

  • Оператор цикла do

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

  • Операторы перехода

  • 2.1. Использование оператора break

  • Использование break

  • 2.2 оператор continue

  • Оператор return

  • Операторы цикла. Лабораторная работа 5 Операторы цикла. Лабораторная работа 5. Операторы цикла и перехода Необходимые сведения из теории. Операторы цикла


    Скачать 94.5 Kb.
    НазваниеЛабораторная работа 5. Операторы цикла и перехода Необходимые сведения из теории. Операторы цикла
    АнкорОператоры цикла
    Дата11.03.2022
    Размер94.5 Kb.
    Формат файлаdoc
    Имя файлаЛабораторная работа 5 Операторы цикла.doc
    ТипЛабораторная работа
    #392620

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

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


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


    Операторы цикла 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. Оператор цикла dowhile


    Если условное выражение, управляющее циклом 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. Оператор цикла 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 необязательны.
    Вложенные циклы.
    Пример 11.
    public class NestedLoop {

    public static void main(String[] args) {

    for(int x = 1; x < 10; x++) {

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

    System.out.print(x + “-” + y + “ “);

    System.out.println();

    }

    }

    }

    output:
    1-1 1-2 1-3 1-4 1-5 1-6 1-7 1-8 1-9

    2-1 2-2 2-3 2-4 2-5 2-6 2-7 2-8 2-9

    3-1 3-2 3-3 3-4 3-5 3-6 3-7 3-8 3-9

    4-1 4-2 4-3 4-4 4-5 4-6 4-7 4-8 4-9

    5-1 5-2 5-3 5-4 5-5 5-6 5-7 5-8 5-9

    6-1 6-2 6-3 6-4 6-5 6-6 6-7 6-8 6-9

    7-1 7-2 7-3 7-4 7-5 7-6 7-7 7-8 7-9

    8-1 8-2 8-3 8-4 8-5 8-6 8-7 8-8 8-9

    9-1 9-2 9-3 9-4 9-5 9-6 9-7 9-8 9-9


    1. Операторы перехода


    Java поддерживает три оператора перехода — break, continue и return. Они передают управление в другую часть вашей программы. Рассмотрим каждый из операторов подробно.
    2.1. Использование оператора break
    Оператор break в Java используется в трех случаях. Во-первых, он заканчивает последовательность операторов в ветвях оператора switch. Во-вторых, его можно использовать для выхода из цикла.
    Использование break для выхода из цикла
    Используя break, вы можете форсировать немедленное завершение цикла, обходя условное выражение и любой остающийся код в теле цикла. Когда оператор break встречается внутри цикла, второй заканчивается и про­граммное управление передается оператору, следующему за ним.
    Пример 12:
    for(int i=0; i<100;i++) (

    if(i==10) break; // завершить цикл, если i = 10

    System.out.println("i: " + i);

    }

    System.out.println("Цикл завершен.");
    Эта программа генерирует следующий вывод:
    0 1 2 3 4 5 6 7 8 9

    Цикл завершен.
    Хотя цикл for разработан здесь для выполнения своих операторов от 0 до 99 раз, оператор break заставляет его завершиться раньше, когда i равно 10.
    Оператор break может использоваться с любым из циклов Java, включая преднамеренно бесконечные циклы.
    При использовании внутри набора вложенных циклов оператор break будет выходить только из самого внутреннего цикла.
    Пример 13.
    for(int i=0; i<3; i++) {

    System.out.print("Итерация "+i+":");

    for(int j=0; j<100; j++) {

    if(j==10) break; // закончить цикл, если j=10

    System.out.print(j +" ");

    }

    System.out.println();

    }

    System.out.println("Цикл завершен.");
    Эта программа генерирует следующий вывод:

    Итерация 0: 0 1 2 3 4 5 6 7 8 9

    Итерация 1: 0 1 2 3 4 5 6 7 8 9

    Итерация 2: 0 1 2 3 4 5 6 7 8 9

    Цикл завершен.
    Как вы видите, оператор break во внутреннем цикле вызывает завершение только этого цикла. Внешний цикл не затрагивается.

    Break не проектировался в качестве нормального средства завершения цикла. Эту цель обслуживает условное выражение заголовка цикла. Оператор break следует использовать для прерывания цикла только тогда, когда возникают не­которые специальные ситуации.

    2.2 оператор continue
    Используется когда нужно начать очередную итерацию цикла пораньше. То есть нуж­но продолжить выполнение цикла, но прекратить обработку остатка кода в его теле для данной частной итерации.

    В циклах while и do while оператор continue вызывает передачу управления непосредственно условному выражению, ко­торое управляет циклом. В цикле for управление переходит сначала к ите­рационной части оператора for и затем к условному выражению. Для всех трех циклов любой промежуточный код обходится.
    Пример 14:
    for(int i=0; i<10; i++) {

    System.out.print(i + " ");

    if(i%2 == 0) continue;

    System.out.println("");

    }

    .

    Этот код использует операцию % (остаток по модулю), чтобы проверять, яв­ляется ли i четным. Если это так, цикл продолжается без печати символа новой строки (newline). Вывод программы:
    0 1

    2 3

    4 5

    б 7

    8 9
    В использовании continue полезен крайне редко. Одна из причин этого за­ключается в том, что Java обеспечивает богатый набор операторов цикла, которые устраивают большинство приложений.
    Оператор return
    Последний оператор управления — return. Он используется для явного воз­врата из метода, т. е. передает программное управление обратно в вызы­вающую программу.

    Оператор return немедленно заканчивает выполнение метода, в котором он находится. О нем мы будем говорить при изучении методов.
    Вариант 1
    1. Запросить имя пользователя и напечатать "Привет, Вася!" 10 раз, если Вася – имя пользователя.

    2. Написать программу, находящую сумму квадратов вводимых пользователем чисел.

    3. Составить программу, печатающую все делители целого числа n в порядке возрастания.

    4. Числа Фибоначчи f(n) определяются формулами:

    f(0) = f(1) = 1; f(n) = f(n-1) + f(n-2) при n = 2, 3, ...

    Составить программу поиска первого числа Фибоначчи, большего m (m>1).


    Вариант 2
    1. Написать программу, находящую сумму вводимых пользователем чисел и их среднее арифметическое.

    Примечание. Средним арифметическим чисел называется сумма этих чисел, деленная на их количество.

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

    3. Запросите у пользователя 6 чисел. Определите сколько среди них неотрицательных чисел.

    4. Числа Фибоначчи f(n) определяются формулами:

    f(0) = f(1) = 1; f(n) = f(n-1) + f(n-2) при n = 2, 3, ...

    Составить программу, выводящую на экран 40 первых членов последовательности Фибоначчи.

    Вариант 3
    1. Написать программу, выводящую таблицу умножения на число n , которое она запрашивает у пользователя.

    2. Написать программу, определяющую число четных чисел среди вводимых пользователем целых чисел.

    3. Составить программу нахождения суммы чётных чисел, находящихся в промежутке от 26 до 88.

    4. Числа Фибоначчи f(n) определяются формулами:

    f(0) = f(1) = 1; f(n) = f(n-1) + f(n-2) при n = 2, 3, ...

    Составить программу вычисления S - суммы всех чисел Фибоначчи, которые не превосходят 1000.

    Вариант 4
    1. Написать программу, находящую сумму n членов ряда:

    1 + (1/2)2 + (1/3)3 + (1/4)4 + …+(1/n)n

    2. Запросите у пользователя положительное число А и найдите сумму всех натуральных чисел из промежутка [1, А].

    3. Найти наименьшее общее кратное двух натуральных чисел a и b.

    4. Составить программу запроса пароля, пока не будет введен пароль верно или пользователь не исчерпает три попытки. (В программе предусмотреть счетчик неправильных вводов пароля.) Для сравнения строк использовать метод класса String equals. Например, если заданы строки s1 и s2:

    String s1,s2;

    то

    s1.equals(s2);

    возвратит true, если строки равны и false в противном случае.

    Вариант 5
    1. Написать программу, находящую сумму n членов ряда:

    (1/2) + (1/4) + (1/6) + …+(1/2n)

    2. Написать программу, выводящую все четные числа, расположенные между числами M и N. Числа M и N задает пользователь..

    2. Запросите 10 чисел и выведите на экран для каждого, делится ли оно нацело на 11.

    3. Определить, является ли введенное число простым.

    4. Вывести на печать все трёхзначные натуральные числа, сумма цифр которых равна заданному числу N.

    Вариант 6

    1. Вывести на экран числа, кратные К из промежутка [А,В]. Числа А, В, К задает пользователь.

    Примечание. Простым называется число, которое не имеет делителей кроме 1 и самого себя.

    2. Найдите все натуральные числа от 1 до 1000, кратные 3.

    3. Запросите у пользователя 5 чисел. Определите сколько среди них положительных чисел.

    4. Числа Фибоначчи f(n) определяются формулами:

    f(0) = f(1) = 1; f(n) = f(n-1) + f(n-2) при n = 2, 3, ...

    Составить программу поиска суммы первых 10 чисел Фибоначчи.


    написать администратору сайта