24326

Исследование циклических конструкций Java

Практическая работа

Исторические личности и представители мировой культуры

Оператор цикла for(цикл со счетчиком). Оператор цикла while (цикл с предусловием). Оператор цикла do...while (цикл с постусловием). Конструкции перехода (прерывания)

Русский

2014-10-12

183 KB

5 чел.

ПЗ-6-2

Исследование циклических конструкций Java

   Подготовка к занятию

1. Оператор цикла for(цикл со счетчиком)

2. Оператор цикла while (цикл с предусловием)

3. Оператор цикла do...while (цикл с постусловием)

4. Конструкции перехода (прерывания)

 

На занятии рассматривается порядок применения циклических конструкций языка Java при разработке приложений для Java SE в IDE NetBeans.

Для выполнения заданий этого занятия требуются программное обеспечение и ресурсы, перечисленные ниже:

Программное обеспечение

Ресурс для загрузки

Комплект для разработчика на языке Java (JDK) с IDE NetBeans

JDK 7u7 with NetBeans 7.2

http://www.oracle.com/technetwork/java/javase/downloads/jdk-7-netbeans-download-432126.html

Тестовый редактор TextPad 6

http://www.textpad.com/download/

Перед началом работы создайте на личном флеш-диске каталоги типа:

E:\NBprojectsFIO\pz62_FIOдля записи результатов работы – проектов NetBeans IDE.

E:\JavaFIO\pz62_FIO –- для записи результатов работы, полученных в TextPad.

Примечание: FIO – аббревиатура от фамилии, имени, отчества студента. Например, для Павленко Сергея Леонидовича FIO = PSL.

Подготовка к занятию

П1. Создание и настройка проекта

Используя методку, рассмотренную на  пз2, создайте и настройте в NetBeans IDE проект с именем MyApp62_FIO.

П.2. Добавление кода к автоматически созданному исходному файлу

К коду главного класса добавьте вывод сообщения "Исследование циклических конструкций Java" путем замены строки

           // TODO code application logic here

строкой 

           System.out.println("Исследование циклических конструкций Java");

       

Сохраните изменения путем выбора команды "Файл" > "Сохранить".

П3. Компиляция и выполнение проекта

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

Выберите команду "Выполнить" > "Запустить главный проект" (F6).

На экране окно NetBeans IDE должно принять вид, подобный приведенному на рис.1.

Рис. 1

Если все получилось – то Вы готовы к выполнению заданий занятия.

Циклические конструкции

В языке Java есть три цикклические конструкции:

  •  оператор цикла for (цикл со счетчиком)
  •  оператор цикла while (цикл с предусловием)
  •  оператор цикла do...while (цикл с постусловием)

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

Оператор "++" называется инкрементным ("увеличивающим"), а "--" декрементным ("уменьшающим"). У этих операторов имеются две формы, постфиксная (наиболее распространенная, когда оператор ставится после операнда) и префиксная (используется очень редко, в ней оператор ставится перед операндом).

Для любой числовой величины x выражение x++ или ++x означает увеличение x на 1, а выражение x-- или --x означает уменьшение x на 1.

Различие двух форм связано с тем, когда происходит изменение величины – после вычисления выражения, в котором используется оператор, для постфиксной формы, или до этого вычисления – для префиксной.

Например, присваивания j=i++ и j=++i дадут разные результаты. Если первоначально i=0, то первое присваивание даст 0, так как i увеличится на 1 после выполнения присваивания. А второе даст 1, так как сначала выполнится инкремент, и только потом будет вычисляться выражение и выполняться присваивание. При этом в обоих случаях после выполнения присваивания i станет равно 1.

1. Оператор цикла for(цикл со счетчиком)

1.1. Справочная информация

for(блок инициализации; условие выполнения тела цикла;

   блок изменения счетчиков)

оператор;

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

В блоке условия продолжения цикла проверяется выполнение условия, и если оно выполняется, идет выполнение тела цикла, в качестве которого выступает оператор. Если же не выполняется – цикл прекращается, и идет переход к оператору программы, следующему за оператором for.

После каждого выполнения тела цикла (очередного шага цикла) выполняются операторы блока изменения счетчиков. Они должны разделяться запятыми.

Пример:

for(int i=1,j=5; i+j<100; i++,j=i+2*j){

 ...

};

Каждый из блоков оператора for является необязательным, но при этом разделительные ";" требуется писать.

Наиболее употребительное использование оператора for – для перебора значений некоторой переменной, увеличивающихся или уменьшающихся на 1, и выполнения последовательности операторов, использующих эти значения. Переменная называется счетчиком цикла, а последовательности операторов – телом цикла.

1.2. Задание для практической работы

а). Дополните код главного класса проекта строками,  выполнение которых в приложении  позволит пояснить особенности работы с оператором цикла for.

(Это может быть код, решающий следующие задачи: вычисление суммы последовательных чисел,

вычисление суммы четных чисел – последовательных и в интервале, вычисление суммы нечетных чисел – последовательных и в интервале, вычисление факториала и т.п.)

б). Дополните строки программы, введенные согласно п.1.2а, строчными комментариями.

в). Для каждого примера получите скрины окон кода и вывода по образцу рис.2 и рис.3(см. пз-4).

г). Разместите строки кода, введенные согласно п.1.2а и п.1.2б,  в блочном комментарии.

Примечание:

Выполнение заданий по п.1.2а и п.1.2б для очередного примера осуществляйте после выполнения задания по п.1.2г для предыдущего.


2. Оператор цикла while (цикл с предусловием)

2.1. Справочная информация

while(условие)

   оператор;

Пока условие сохраняет значение true — в цикле выполняется оператор, иначе — действие цикла прекращается. Если условие с самого начала false, цикл прекращается, и тело цикла не выполнится ни разу.

Цикл while обычно применяют вместо цикла for в том случае, если условия продолжения достаточно сложные. В отличие от цикла for в этом случае нет формально заданного счетчика цикла, и не производится его автоматического изменения. За это отвечает программист. Хотя вполне возможно использование как цикла for вместо while, так и наоборот. Многие программисты предпочитают пользоваться только циклом for как наиболее универсальным.

Пример:

i=1;

x=0;

while(i<=n){

 x+=i;//эквивалентно x=x+i;

 i*=2;//эквивалентно i=2*i;

};

В операторе while очень часто совершают ошибки, приводящие к неустойчивости алгоритмов из-за сравнения чисел с плавающей точкой на неравенство. Как мы знаем, сравнивать их на равенство в подавляющем большинстве случаев некорректно из-за ошибок представления таких чисел в компьютере. Но большинство программистов почему-то считает, что при сравнении на неравенство проблем не возникает, хотя это не так. Например, если организовать с помощью оператора while цикл с вещественным счетчиком, аналогичный разобранному в разделе, посвященному циклу for. Пример типичной ошибки в организации такого цикла приведен ниже:

double a=…;

double b=…;

double dx=…;

double x=a;

while(x<=b){

 …

 x=x+dx;

};

Как мы уже знаем, данный цикл будет обладать неустойчивостью в случае, когда на интервале от a до b укладывается целое число шагов. Например, при a=0, b=10, dx=0.1 тело цикла будет выполняться при x=0, x=0.1, …, x=9.9. А вот при x=10 тело цикла может либо выполниться, либо не выполниться – как повезет! Причина связана с конечной точностью выполнения операций с числами в формате с плавающей точкой. Величина шага dx в двоичном представлении чуть-чуть отличается от значения 0.1, и при каждом цикле систематическая погрешность в значении x накапливается. Поэтому точное значение x=10 достигнуто не будет, величина x будет либо чуть-чуть меньше, либо чуть-чуть больше. В первом случае тело цикла выполнится, во втором – нет. То есть пройдет либо 100, либо 101 итерация (число выполнений тела цикла).

2.2. Задание для практической работы

а). Дополните код главного класса проекта строками,  выполнение которых в приложении  позволит пояснить особенности работы с оператором цикла while.

(Это может быть код, решающий следующие задачи: вычисление суммы последовательных чисел,

вычисление суммы четных чисел – последовательных и в интервале, вычисление суммы нечетных чисел – последовательных и в интервале, вычисление факториала и т.п.)

б). Дополните строки программы, введенные согласно п.2.2а, строчными комментариями.

в). Для каждого примера получите скрины окон кода и вывода по образцу рис.2 и рис.3(см. пз-4).

г). Разместите строки кода, введенные согласно п.2.2а и п.2.2б,  в блочном комментарии.

Примечание:

Выполнение заданий по п.2.2а и п.2.2б для очередного примера осуществляйте после выполнения задания по п.2.2г для предыдущего.

3. Оператор цикла do...while (цикл с постусловием)

3.1. Справочная информация

do

 оператор;

while(условие);

Если условие принимает значение false, цикл прекращается. Тело цикла выполняется до проверки условия, поэтому оно всегда выполнится хотя бы один раз.

Пример:

int i=0;

double x=1;

do{

 i++; // i=i+1;

 x*=i; // x=x*i;

}

while(i<n);

Если с помощью оператора do…while организуется цикл с вещественным счетчиком или другой проверкой на равенство или неравенство чисел типа float или double, у него возникают точно такие же проблемы, как описанные для циклов for и while.

При необходимости организовать бесконечный цикл (с выходом изнутри тела цикла с помощью оператора прерывания) часто используют следующий вариант:

do{

 …

}

while(true);

3.2. Задание для практической работы

а). Дополните код главного класса проекта строками,  выполнение которых в приложении  позволит пояснить особенности работы с оператором цикла do … while.

(Это может быть код, решающий следующие задачи: вычисление суммы последовательных чисел,

вычисление суммы четных чисел – последовательных и в интервале, вычисление суммы нечетных чисел – последовательных и в интервале, вычисление факториала и т.п.)

б). Дополните строки программы, введенные согласно п.3.2а, строчными комментариями.

в). Для каждого примера получите скрины окон кода и вывода по образцу рис.2 и рис.3(см. пз-4).

г). Разместите строки кода, введенные согласно п.3.2а и п.3.2б,  в блочном комментарии.

Примечание:

Выполнение заданий по п.3.2а и п.3.2б для очередного логического оператора осуществляйте после выполнения задания по п.3.2г для предыдущего.


4
. Конструкции перехода (прерывания)

4.1. Справочная информация

Довольно часто требуется при выполнении какого-либо условия прервать цикл и перейти к выполнению другого алгоритма или очередной итерации цикла. В Java имеются гибкие и структурные средства для решения этих проблем - операторы continue и break:

Операторы continue и break используются в двух вариантах – без меток для выхода из текущего (самого внутреннего по вложенности) цикла, и с меткой - для выхода из помеченного ей цикла. Меткой является идентификатор, после которого стоит двоеточие. Метку можно ставить непосредственно перед ключевым словом, начинающим задание цикла ( for, while, do ).

  •  continue; – прерывание выполнения тела цикла и переход к следующей итерации (проверке условия) текущего цикла;
  •  continue имя метки; – прерывание выполнения тела цикла и переход к следующей итерации (проверке условия) цикла, помеченного меткой ( label );
  •  break; – выход из текущего цикла;
  •  break имя метки; – выход из цикла, помеченного меткой;

4.2. Задание для практической работы

а). Дополните код главного класса проекта строками,  выполнение которых в приложении  позволит пояснить особенности работы операторов continue и break.

б). Дополните строки программы, введенные согласно п.4.2а, строчными комментариями.

в). Для каждого побитового оператора получите скрины окон кода и вывода по примеру рис.2 и рис.3(см. пз-4).

г). Разместите строки кода, введенные согласно п.4.2а и п.4.2б,  в блочном комментарии.

Примечание:

Выполнение заданий по п.4.2а и п.4.2б для очередного побитового оператора осуществляйте после выполнения задания по п.4.2г для предыдущего.


4.
Отчет о занятии

Полученные в ходе занятия результаты оформить в виде отчета средствами MS Word и записать в файл pz62_FIO.doc. Отчет должен содержать:

1. Тему занятия и учебные вопросы.

2. Скрины с ответами и результатами выполнения всех действий по учебным вопросам занятия – для личных проектов NetBeans IDE.

3. Выводы с анализом полученных результатов – лучше отдельно по вопросам занятия.

4. Фамилию, имя и отчество студента, представляющего отчет.

По итогам занятия создать папку pz62-Фамилия, в которой разместить:

- файл отчета pz6_FIO.doc

- папку pz62_FIO с папкой проекта  MyApp62_FIO

Папку pz62-Фамилия поместить в архив (rar, zipбез пароля!!!) и отослать преподавателю по e-mail.


7


 

А также другие работы, которые могут Вас заинтересовать

48824. Повышение эффективности транспортного обслуживания процессов ремонта магистральных нефтепроводов методом вырезки дефектного участка путем снижения суммарных затрат 27.71 MB
  Данные, полученные на основании контрольных измерений, испытаний и профилактических осмотров, систематизируют и используют в качестве основы для планирования и проведения ремонтных работ, в том числе и ремонтных работ связанных с вырезкой «катушки». На проведении ремонтов методом вырезки дефекта задействована спецтехника и оборудование.
48825. Проектирование общественного здания в РБ, г. Давлеканово 560.5 KB
  Проектируемое здание расположено на участке со спокойным рельефом с небольшим уклоном в северо-восточную сторону. Проектируемое здание расположено с отступом от красной линии. Главный фасад расположен на северо-восток. На участке расположены: жилой дом №1, жилой дом №2, больница, здание банка, парк, дом быта, кинотеатр, автомобильная стоянка.
48826. Кольца, полукольца, мера на полукольце 409 KB
  Кольцо множеств есть система множеств, замкнутая по отношению к взятию суммы и пересечения, вычитанию и образованию симметрической разности. Любое кольцо содержит пустое множество Ø, так как всегда А\A=Ø. Система, состоящая только из пустого множества, представляет собой наименьшее возможное кольцо множеств.
48828. ОРГАНІЗАЦІЯ ДОСЛІДНОЇ ДІЛЬНИЦІ ВИРОБНИЦТВА ОКТАН-КОРЕКТОРА 578.5 KB
  У цій частині курсового проекту розраховуємо дослідну дільницю виробництва Октан - коректора. Вихідними даними для розрахунку будуть: Програма випуску – 100 штук за 1 день. Режим роботи дільниці, що проектується, – одна зміна тривалістю 8 годин. Планово-операційна карта виготовлення виробу.
48829. ОРГАНІЗАЦІЯ ДОСЛІДНОЇ ДІЛЬНИЦІ ВИРОБНИЦТВА «ПІДСИЛЮВАЧ НЧ» 555.5 KB
  Розрахунок необхідної кількості робітників по професіям і розрядам проводиться на основі планово-операційної карти шляхом ділення об’єму роботи по кожній професії і розряду на дійсний фонд часу роботи одного робітника.
48830. Разработка одиночного стрелочного перевода 1.99 MB
  Расчет угла и марки крестовины Марка крестовины зависит от угла между рабочими гранями сердечника крестовины. Угол крестовины определяют из уравнения проекции расчетного контура стрелочного перевода на вертикальную ось.16 где конструктивные размеры обеспечивающие сборку переднего стыка крестовины мм; длина накладки равная 820 мм для рельсов типа Р50; постоянный запас мм; показатель марки.18 Полученную таким путем показатель крестовины округляют в большую стороны.
48832. Расчёт абсорбера сырого газа 412.5 KB
  Насадочные колонны являются наиболее распространенным типом абсорбционного аппарата. Это объясняется простотой их устройства, удовлетворительной работой и возможностью применения для агрессивных сред.