Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Краткий справочник по JAVA.docx
Скачиваний:
14
Добавлен:
11.03.2016
Размер:
1.08 Mб
Скачать

3.Типовые конструкции с оператором циклаfor

Спецификация for:

for (<initialize index>; <boolean expression>; <increment index>)

{

<statements> - тело цикла

}

Как работает for:

Выполнить инструкцию инициализации индекса цикла.

Вычислить boolean выражение.

Если оно true, выполняет инструкции «тела цикла» иначе – выходит из цикла (за закрывающую }).

Затем выполнить инкрементное выражение (т.е. инкрементное выражение срабатывает в конце тела цикла!)

Повторить (repeat)

Замечание: Можно преобразовать цикл while в цикл for:

<initialize index>;

while (<boolean expression>)

{

<statements>

<increment index>;

}

ПРИМЕРЫ:

Лр5. Псевдокод. Множественный выбор. Другие конструкции циклов.

Лабораторная работа посвящена операторам Java, которые встречаются гораздо реже, чем операторы if, while и for , но помогают сделать код более коротким, более быстрым или более понятным.

Сначала рассмотрим пример использование псевдокода для задач с нетривиальной логикой.

  1. Псевдокод

Если логика задачи не очень простая, то полезно сначала записать решение на псевдокоде, т.е. представить каждый шаг решения задачи с помощью фраз обычного языка и упрощенных конструкций языка программирования. Когда логика программы полностью представлена псевдокодом, псевдокод преобразуют в код, заменяя фразы обычного языка на комментарии, а упрощенные конструкции языка программирования – на инструкции ЯП.

Пример псевдокода.

Задача «3N+1»: Для заданного положительного целого числа N построить последовательность целых чисел, используя правила:

  1. Положить первое число последовательности равным N.

  2. Если N – четное, то вычислить следующий элемент последовательности как N/2.

  3. Если N – четное, то вычислить следующий элемент последовательности как 3 N + 1.

  4. Если полученный новый элемент последовательности равен 1, то завершить построение. Иначе перейти на 2).

Результат решения задачи печатать в виде: столбца элементов. После последнего элемента печатать число всех полученных элементов.

Псевдокод:

Запросить у пользователя ввод положительного числа;

Пусть N – введенное пользователем число;

while N <= 0 :

печатать сообщение объекта ошибке;

читать другое значение для N;

Зададим счетчик counter = 0;

while N не равно 1 {

if N – четное

вычислить N = N/2;

else вычислить N = N*3 + 1;

Печатать N;

Увеличить счетчик на 1;

}

Печатать значение счетчика.

Код программы:

public class ThreeN1 {

public static void main(String[] args) {

int N; // для вычисления элементов последовательности

int counter; // для подсчета числа элементов

System.out.print("Введите целое положительное число ");

while (N <= 0) {

System.out.print(«Введено не положительное число. Попробуйте еще раз»)

N = StdIn.readInt();

}

// В этой точке программы мы знаем, что N > 0

counter = 0;

while (N != 1) {

if (N % 2 == 0)

N = N / 2;

else

N = 3 * N + 1;

System.out.println(N);

counter = counter + 1;

}

System.out.println();

System.out.print("Всего ");

System.out.print(counter);

System.out.println(" элементов последовательности.");

} // end of main()

} // end of class ThreeN1

  1. Оператор switch делает код короче и понятнее

Операторы условного перехода if и if-else применяются для выбора одной или двух альтернатив в выборе следующей инструкции в ходе исполнения кода. Иногда в решаемой задаче нужно выбрать более двух взаимно исключаемых альтернатив. Можно использовать для этого цепочку из нескольких if-else, но Java предлагает инструкцию switch для прямого выбора альтернатив.

Пример: Как по номеру дня недели напечатать название дня недели?

Решение

Int day = 2;

switch (day)

{

case 1: System.out.println("Пон"); break;

case 2: System.out.println("Вт"); break;

case 3: System.out.println("Ср"); break;

case 4: System.out.println("Чтв"); break;

case 5: System.out.println("Птн"); break;

case 6: System.out.println("Сб"); break;

case 7: System.out.println("Вск"); break;

default: System.out.println("Введено число не из отрезка [1,7]"); break // рекомендуется исп-ть

}