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


 

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

26514. Основные этапы социально-экономического и политического развития Индии в 1950 – 2000 гг. 55 KB
  Существенным элементом внешней политики ИНК стали неприсоединение к военным блокам и стремление к консолидации молодых независимых государств. Критике подверглась позиция ИНК в социальных вопросах. В ИНК существовали различные группировки отражавшие несовпадающие интересы социальных слоев связанных с этой партией от крупных капиталистов и землевладельцев до интеллигенции мелкой буржуазии города и деревни трудящихся масс. В этом многообразии коренились и сила общенациональный авторитет ИНК и его внутренняя слабость.
26515. Валютный рынок Украины 34.05 KB
  В сфере валютной политики Национальный банк ставит задачу иметь реальный курс украинской гривны относительно свободно конвертируемых валют на уровне сбалансированности спроса и предложения. Для решения этой задачи и упорядочения ситуации на валютном рынке
26516. Основные направления отечественной и зарубежной историографии 43.5 KB
  Барг, Лавровский: уникальная особенность Англии в том, что она является ед. в Европе страной где развитие буржуазных отношений происходило одновременно в городе и деревне. Именно в деревне кап. Отношения развились более глубоко, именно из деревни шел импульс. Центр тяжести АБР лежал в деревне.
26517. Аграрный вопрос в Великой английской и Великой французской революциях 38.5 KB
  До революции в английской деревни было 2 формы собственности: крестьянская копигольд и буржуазнодворянская рыцарское держание. Революции лекция феодализма ко времени ВФР уже не было. Эта идея поддержана целым течением яркий представитель Фюре феодализм как таковой во Франции исчез до революции. необходимости в революции не было.
26518. Основные проблемы и особенности войны северо-американских колоний Англии за независимость и образование США 45.5 KB
  Северовосточные колонии новая Англия территории с ранним развитием ремесел мануфактуры судостроение и судоходство рыболовство. Это колонии которые пошли по буржуазному пути. Среднеатлантические колонии. Южные колонии плантации основанные на труде рабов.
26519. Дискуссии в отечественной и зарубежной историографии о периодизации ВФ буржуазной революции, ее характере, движущих силах и итогах 44 KB
  Ленин развил мысли Маркса и Энгельса; показал решающую роль крестьянства и плебейского элемента городов в победе революции высоко оценил роль якобинцев и диктатуры. революции роль перешла к историкам радикального направления. атлантической революции.
26520. Проблемы якобинской диктатуры в историографии 34 KB
  Якобинцы: Террор декрет о подозрительных каждый кто своими делами помыслами мешает революции подлежит суду в лице революционного трибунала Якобинцам нужно накормить город установить республику Закон о реквизициях обещали в будущем заплатить оставляли только семейный запас. принудительный займ у богачей в 1млрд франков Вся нация мобилизовалась до полной победы революции Попытка ввести новую религию. Революции восходящей линии см. 20 века стали задаваться вопросом о классовой природе революции чьи интересы она...
26521. Внутренняя и внешняя политика Фр. в период консульства и 1-й империи Наполеона. Наполеоновская эпоха в исторической науке 38.5 KB
  давно мечтал о власти; Манфред: чтобы не проиграть. Для закрепления своей власти Н. оставалась республикой но власть в руках 1го консула главнокомандующий армией назначал членов всех органов законодательной власти выбирал их из кандидатов которые избирались гражданами на 5 лет он назначал перфекты заменивших местное самоуправление назначал министров которые ему непосредственно подчинялись. начались 100 дней период кратковременного возвращения Бонапарта к власти.
26522. Революции 1848-1849 гг. в Европе. Общие черты и особенности 74.5 KB
  Австрийская монархия: препятствием для развития был национальный гнет т. было насильственно объединены разные национальности т. задачей революции являлось создание независимых национальных государств. Германия: нац объединение освобождение крестьян уничтожение феодализма.